/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * @see https://www.w3.org/WAI/WCAG21/Techniques/css/C40 for reference
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
html {
  box-sizing: border-box;
  font-size: 62.5%;
  background: #fff;
  overflow-x: hidden;
  height: -webkit-fill-available;
}

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

body {
  font-family: "proxima-nova", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Oxygen, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  -webkit-overflow-scrolling: touch;
  margin: 0;
  font-size: 1.4rem;
  min-height: 100vh;
  min-height: -webkit-fill-available;
}

._keyfocus *:focus {
  outline: 2px solid #f9f9f9;
  outline-offset: 0;
  box-shadow: 0 0 0 4px #193146;
}

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

/* Hide HTML5 Up and Down arrows. */
input[type=number] {
  -webkit-appearance: textfield;
     -moz-appearance: textfield;
          appearance: textfield;
}
input[type=number]::-webkit-outer-spin-button, input[type=number]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* Hide HTML5 'X' in search input */
input[type=search] {
  /* Clears the 'X' from Internet Explorer */
  /* Clears the 'X' from Chrome */
}
input[type=search]::-ms-clear, input[type=search]::-ms-reveal {
  display: none;
  width: 0;
  height: 0;
}
input[type=search]::-webkit-search-decoration, input[type=search]::-webkit-search-cancel-button, input[type=search]::-webkit-search-results-button, input[type=search]::-webkit-search-results-decoration {
  display: none;
}

.loading-mask[data-role=main-css-loader] {
  display: none !important;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Mixins for flexible containers declaration.
 */
/**
 * Defines page container. This mixin makes sure that the content has always equal padding
 * for mobile screens on both size of the device.
 */
/**
 * Negates parent container's padding and sets it own.
 * Somethimes this has to be done to make background even to other containers' content.
 */
/**
 * Defines container wrapper that makes sure contnet doesn't extend above certain width and is always centered.
 */
.cs-container {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
  margin: 0 auto;
  width: 100%;
  box-sizing: border-box;
}
.cs-container__inner {
  max-width: 180rem;
  width: 100%;
  margin: 0 auto;
  position: relative;
}
.cs-container__inner:before, .cs-container__inner:after {
  content: "";
  display: table;
  clear: both;
}
.cs-container__aside {
  width: 100%;
}
@media (min-width: 48em) {
  .cs-container__aside {
    width: 40%;
  }
}
@media (min-width: 64em) {
  .cs-container__aside {
    width: 32%;
  }
}
@media (min-width: 90em) {
  .cs-container__aside {
    width: 30%;
  }
}
.cs-container__main-column {
  width: 56%;
  position: relative;
}
@media (min-width: 64em) {
  .cs-container__main-column {
    width: 65%;
  }
}
@media (min-width: 90em) {
  .cs-container__main-column {
    width: 67%;
  }
}
@media (max-width: 47.99em) {
  .cs-container__main-column {
    max-width: 100% !important;
    width: 100% !important;
  }
}
@media (min-width: 64em) {
  .cs-container__main-column--space-top {
    padding-top: 3rem;
  }
}
.cs-container--contrast {
  background-color: #f4f4f4;
}
@media (min-width: 64em) {
  .cs-container--contrast {
    background-image: url("../images/background.png");
    background-size: cover;
    background-repeat: no-repeat;
  }
}
.cs-container--spacious {
  padding-top: 2rem;
  padding-bottom: 2rem;
}
@media (min-width: 64em) {
  .cs-container--spacious {
    padding-top: 3rem;
    padding-bottom: 3rem;
  }
}
.cs-container--noscroll {
  overflow: hidden;
}
.cs-container--ontop {
  z-index: 301;
}
.cs-container--viewport-width {
  max-width: none;
}
.cs-container--no-padding {
  padding-left: 0;
  padding-right: 0;
}
.cs-container--use-whole-screen .cs-container__inner {
  max-width: 100%;
}

.cms-page-view.page-layout-1column #maincontent {
  max-width: 180rem;
  margin: 0 auto;
}

/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
body,
html {
  height: 100%;
  max-width: 100vw;
}

.no-scroll {
  position: fixed;
  width: 100vw;
  height: 100vh;
}

.no-scroll-child {
  overflow-y: hidden !important;
}

#maincontent {
  flex: 1 0 auto;
}

.page-wrapper {
  display: block !important;
  min-height: 100%;
}
@media (min-width: 48em) {
  .page-wrapper {
    display: flex !important;
    flex-direction: column !important;
  }
}

.columns .column.main {
  width: auto;
  padding: 4rem 0 0;
  max-width: 100%;
  min-height: 10rem;
}
@media (min-width: 48em) {
  .columns .column.main {
    padding: 4rem 0 0;
  }
}

.cms-home .columns .column.main {
  padding: 0;
}
@media (min-width: 48em) {
  .cms-home .columns .column.main {
    padding: 0;
  }
}

.page-layout-1column .product-info-wrapper {
  width: 100%;
}
@media (min-width: 48em) {
  .page-layout-1column .product-info-wrapper {
    position: absolute;
    right: 0;
    height: 100%;
    width: 40%;
  }
}
@media (min-width: 64em) {
  .page-layout-1column .product-info-wrapper {
    width: 30%;
  }
}

@media (min-width: 48em) {
  .page-layout-2columns-left .sidebar-main,
.page-layout-2columns-left .sidebar-additional {
    width: 22.5%;
    padding-right: 40px;
    border-right: 1px solid #f4f4f4;
  }
  .page-layout-2columns-left .columns {
    display: block;
  }
  .page-layout-2columns-left .column.main {
    float: right;
  }
  .page-layout-2columns-left .sidebar-main {
    float: left;
  }
}
a, a:visited {
  color: #000000;
  text-decoration: none;
}
a:hover, a:focus, a:active, a:visited:hover, a:visited:focus {
  color: #666;
  text-decoration: none;
}

.gift-options-cart-item {
  display: none;
}

@media (min-width: 48em) {
  .paypal-express-review .page-title-wrapper {
    padding: 0 1.5rem;
  }
}

@media (max-width: 63.99em) {
  .paypal-review.view .cs-cart-item__price {
    padding-left: 0 !important;
  }
  .paypal-review.view .cs-cart-item__subtotal {
    padding-right: 0 !important;
  }
}
@media (min-width: 48em) {
  .paypal-review.view {
    padding: 0 1.5rem;
  }
}

.paypal-express-in-context-mini-cart-container {
  margin-top: 1rem;
}

.paypal-review-discount {
  border-bottom: none;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-slider-navigation {
  display: none;
}
@media (hover: hover) and (pointer: fine) {
  .cs-slider-navigation {
    position: absolute;
    z-index: 11;
    top: 50%;
    transform: translate3d(0, -50%, 0);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 4.4rem;
    height: 5.2rem;
    border: 0;
    border-radius: 0px;
    background: #fff;
    box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, 0.25);
    padding: 0;
    color: #000000;
    cursor: pointer;
    transition: all 0.3s;
  }
  .cs-slider-navigation--prev {
    left: 1.5rem;
  }
  .cs-slider-navigation--next {
    right: 1.5rem;
  }
  .cs-slider-navigation[disabled] {
    opacity: 0.25;
    cursor: not-allowed;
  }
  .cs-slider-navigation[disabled] svg {
    filter: grayscale(1);
  }
  .cs-slider-navigation:not([disabled]):hover {
    box-shadow: 1px 1px 10px 0 rgba(0, 0, 0, 0.25);
  }
  .cs-slider-navigation__icon {
    width: 1.4rem;
    height: 2.7rem;
    fill: currentColor;
  }
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-slider-pagination {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 0.8rem;
  min-height: 3rem;
}
.cs-slider-pagination--fraction {
  gap: 0;
  white-space: pre-wrap;
  color: inherit;
  font-weight: 600;
}
.cs-slider-pagination--fraction span {
  color: #000;
}
.cs-slider-pagination__bullet {
  position: relative;
  border-radius: 2px;
  background: #f4f4f4;
  border: 0;
  inline-size: 2.2rem;
  block-size: 0.9rem;
  transition: all 0.15s;
  overflow: hidden;
  text-indent: -99rem;
}
.cs-slider-pagination__bullet.current {
  background-color: #000;
}
.cs-slider-pagination__bullet:only-child {
  display: none;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Mixins for flexible containers declaration.
 */
/**
 * Defines page container. This mixin makes sure that the content has always equal padding
 * for mobile screens on both size of the device.
 */
/**
 * Negates parent container's padding and sets it own.
 * Somethimes this has to be done to make background even to other containers' content.
 */
/**
 * Defines container wrapper that makes sure contnet doesn't extend above certain width and is always centered.
 */
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-addtocart {
  /* stylelint-disable */
  /* stylelint-enable */
}
.cs-addtocart__wrapper {
  overflow: hidden;
}
.page-product-downloadable .update .cs-addtocart__wrapper {
  display: none;
}
.cs-addtocart__button {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
}
.cs-addtocart__button:hover, .cs-addtocart__button:focus, .cs-addtocart__button:active {
  background-color: #000000 !important;
}
.cs-addtocart__button:before, .cs-addtocart__button:after {
  content: "";
  position: absolute;
  top: -1px;
  bottom: -1px;
  right: -1px;
}
.cs-addtocart__button:before {
  width: 3.4em;
  border-radius: 0 0px 0px 0;
  z-index: -1;
  background: linear-gradient(0deg, transparent 0%, transparent 0%, #666 0%, #666 100%);
}
.cs-addtocart__button:after {
  width: 3em;
  min-width: auto;
  background-color: #666;
  transition: width 0.25s linear;
  z-index: -2;
  border-radius: 0px;
}
.cs-addtocart__button:hover:after {
  width: calc(100% + 2px);
}
.cs-addtocart__button::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
.cs-addtocart__button, .cs-addtocart__button:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #000000;
}
.cs-addtocart__button *, .cs-addtocart__button:visited * {
  color: #fff;
  fill: #fff;
}
.cs-addtocart__button:hover:not([disabled]), .cs-addtocart__button:focus:not([disabled]), .cs-addtocart__button:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #666;
}
.cs-addtocart__button:hover:not([disabled]) *, .cs-addtocart__button:focus:not([disabled]) *, .cs-addtocart__button:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
.cs-addtocart__button[disabled] {
  opacity: 0.65;
  cursor: auto;
}
.cs-addtocart__button[disabled] {
  /*
   * ATC btn. in buybox uses deferATCClick()
   * as part of the `Faster Add To Cart` enahncement
   * therefore it's appearance is set to normal all the time.
   */
}
.cs-buybox .cs-addtocart__button[disabled] {
  opacity: 1;
}
.cs-addtocart__button .cs-addtocart__success-label, .cs-addtocart__button:hover .cs-addtocart__success-label, .cs-addtocart__button:focus .cs-addtocart__success-label, .cs-addtocart__button:active .cs-addtocart__success-label {
  color: #fff;
}
.cs-addtocart__button .cs-addtocart__success-icon *, .cs-addtocart__button:hover .cs-addtocart__success-icon *, .cs-addtocart__button:focus .cs-addtocart__success-icon *, .cs-addtocart__button:active .cs-addtocart__success-icon * {
  fill: #fff;
}
.cs-addtocart__button .cs-addtocart__fail-label, .cs-addtocart__button:hover .cs-addtocart__fail-label, .cs-addtocart__button:focus .cs-addtocart__fail-label, .cs-addtocart__button:active .cs-addtocart__fail-label {
  color: #fff;
}
.cs-addtocart__button .cs-addtocart__fail-icon *, .cs-addtocart__button:hover .cs-addtocart__fail-icon *, .cs-addtocart__button:focus .cs-addtocart__fail-icon *, .cs-addtocart__button:active .cs-addtocart__fail-icon * {
  fill: #fff;
}
.cs-addtocart__button-label, .cs-addtocart__success-label, .cs-addtocart__fail-label {
  margin-top: 0;
  z-index: 1;
  font-weight: 700;
  vertical-align: baseline;
  display: inline-block;
  line-height: 1.275em;
  letter-spacing: normal;
  padding-left: 0;
  padding-right: 3.75em;
  white-space: nowrap;
}
.cs-addtocart__configure-icon, .cs-addtocart__button-icon, .cs-addtocart__success-icon, .cs-addtocart__fail-icon {
  max-width: 1em;
  max-height: 1.4rem;
  z-index: 2;
  height: auto;
  width: 100%;
  position: absolute;
  top: 50%;
  transform: translate3d(0, -50%, 0);
  margin-right: 0;
  right: 0.75em;
  max-width: none;
  max-height: none;
  width: 2.2rem;
  height: 2.2rem;
  /* stylelint-disable */
  right: 0.8em;
  /* stylelint-enable */
}
.cs-addtocart__fail-icon {
  transition: none;
}
.cs-addtocart__button-label, .cs-addtocart__success-label {
  transition: opacity 0.15s linear, transform 1s cubic-bezier(0, 0.77, 0.18, 1);
}
.cs-addtocart__button-label {
  display: inline-block;
  transform: translate3d(0, 0, 0);
}
.cs-addtocart__loading {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: scale(0) translate3d(-50%, -50%, 0);
  width: 40px;
  height: 10px;
  opacity: 0;
  transition: opacity 0.15s linear, transform 1s cubic-bezier(0, 0.77, 0.18, 1);
  transition-delay: 0.2s;
}
.cs-addtocart__loading-ball {
  position: absolute;
  display: block;
  width: 10px;
  height: 10px;
  bottom: 0;
  background: #fff;
  border-radius: 50%;
}
.cs-addtocart__loading-ball--1 {
  left: 0;
}
.cs-addtocart__loading-ball--2 {
  left: 15px;
  animation-delay: 0.15s !important;
}
.cs-addtocart__loading-ball--3 {
  left: 30px;
  animation-delay: 0.3s !important;
}
.cs-addtocart__feedback-bg {
  position: absolute;
  left: -1em;
  top: -1px;
  bottom: -1px;
  width: calc(100% + 2.5em);
  transform: translate3d(-100%, 0, 0);
  transform-origin: 0 0;
  transition: transform 0.45s cubic-bezier(0.01, 0.65, 0.38, 1);
  background: #31a43a;
}
.cs-addtocart--no-transitions .cs-addtocart__feedback-bg {
  transition: none;
}
.cs-addtocart--fail .cs-addtocart__feedback-bg {
  background: #cc1c10;
}
.cs-addtocart__success-label, .cs-addtocart__success-icon, .cs-addtocart__fail-label, .cs-addtocart__fail-icon {
  opacity: 0;
}
.cs-addtocart__success-icon, .cs-addtocart__fail-icon {
  height: 1.725em;
  transition-delay: 0.2s;
}
.cs-addtocart__success-label, .cs-addtocart__fail-label {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate3d(-50%, -50%, 0) translateX(-2em);
  transition-delay: 0.2s;
  white-space: nowrap;
  padding-right: 3.5rem;
}
.cs-addtocart__minicart {
  width: 100%;
  text-align: center;
}
.cs-addtocart__minicart--sticky, .cs-addtocart__minicart--unstick {
  max-width: 180rem;
  width: 100%;
  margin: 0 auto;
  width: 100%;
  position: fixed;
  top: 0;
  left: 50%;
  transform: translate3d(-50%, 0, 0);
  z-index: 400;
  padding: 0;
  text-align: right;
  display: flex;
  justify-content: flex-end;
}
.cs-addtocart__minicart--sticky .ui-dialog, .cs-addtocart__minicart--unstick .ui-dialog {
  right: 0 !important;
}
.cs-addtocart__minicart--sticky .block-minicart:after, .cs-addtocart__minicart--unstick .block-minicart:after {
  right: 3.2rem !important;
}
.cs-addtocart__minicart--sticky .cs-addtocart__minicart-link, .cs-addtocart__minicart--unstick .cs-addtocart__minicart-link {
  text-align: center;
  padding: 2.5rem 1rem;
  background: #fff;
  box-shadow: 1px 3px 4.5rem 0 rgba(30, 48, 67, 0.34);
  animation: minicart-in 1s cubic-bezier(0, 0.77, 0.18, 1);
  position: relative;
}
.cs-addtocart__minicart--unstick .cs-addtocart__minicart-link {
  animation: minicart-out 0.5s cubic-bezier(0.55, 0.2, 0.89, 0.45);
}
.cs-addtocart__minicart-link:before {
  content: none !important;
}
.cs-addtocart__minicart-qty-badge-wrapper {
  position: absolute;
  opacity: 0;
  z-index: 600;
  transition: top 0.9s cubic-bezier(0.42, 0.31, 0.34, 0.93), left 0.9s cubic-bezier(0.42, 0.31, 0.34, 0.93);
  pointer-events: none;
}
.cs-addtocart__minicart-qty-badge-wrapper--animating {
  animation: move-qty-badge 1.2s cubic-bezier(0.42, 0.31, 0.34, 0.93);
  position: fixed;
  top: 0.5rem;
}
@media (min-width: 48em) {
  .cs-addtocart__minicart-qty-badge-wrapper--animating {
    top: 1.3rem;
  }
}
@media (min-width: 64em) {
  .cs-addtocart__minicart-qty-badge-wrapper--animating {
    position: absolute;
    top: 5.3rem;
  }
}
.cs-addtocart__minicart-qty-badge-wrapper--animating.cs-addtocart__minicart-qty-badge-wrapper--minicart-sticky {
  position: fixed;
  top: 1.8rem;
}
.cs-addtocart__minicart-qty-badge-wrapper .cs-addtocart__minicart-qty-badge {
  position: static;
  visibility: visible;
}
.cs-addtocart--loading .cs-addtocart__button-label, .cs-addtocart--done .cs-addtocart__button-label {
  opacity: 0;
  transform: translate3d(2em, 0, 0);
}
.cs-addtocart--loading .cs-addtocart__loading {
  opacity: 1;
  transform: scale(1) translate3d(-50%, -50%, 0) translateX(-1.25em);
}
.cs-addtocart--loading .cs-addtocart__loading-ball {
  animation: ball-in 1s infinite;
}
.cs-addtocart--done .cs-addtocart__button-icon {
  opacity: 0;
}
.cs-addtocart--done .cs-addtocart__feedback-bg {
  transform: translate3d(0, 0, 0);
}
.cs-addtocart--done .cs-addtocart__feedback-bg:after {
  transform: translate3d(-5.3rem, 0, 0);
}
.cs-addtocart--success .cs-addtocart__success-icon {
  opacity: 1;
}
.cs-addtocart--success .cs-addtocart__success-label {
  opacity: 1;
  transform: translate3d(-50%, -50%, 0);
}
.cs-addtocart--fail .cs-addtocart__fail-icon {
  opacity: 1;
}
.cs-addtocart--fail .cs-addtocart__fail-label {
  opacity: 1;
  transform: translate3d(-50%, -50%, 0);
}
.cs-addtocart--animation-done .cs-addtocart__button-label,
.cs-addtocart--animation-done .cs-addtocart__button-icon {
  transition-delay: 0.5s;
}
.cs-addtocart--animation-done .cs-addtocart__feedback-bg {
  transition-delay: 0.2s;
}
.cs-addtocart--animation-done .cs-addtocart__feedback-bg, .cs-addtocart--animation-done .cs-addtocart__feedback-bg:after {
  transition: transform 0.4s cubic-bezier(0.86, 0.01, 0.83, 0.51);
}
.cs-addtocart--animation-done .cs-addtocart__feedback-bg:after {
  transition-delay: 0;
}
.cs-addtocart--animation-done .cs-addtocart__success-label,
.cs-addtocart--animation-done .cs-addtocart__fail-icon {
  transition: opacity 0.6s linear, transform 0.6s cubic-bezier(0.86, 0.01, 0.83, 0.51);
  transition-delay: 0;
}
.cs-addtocart--animation-done .cs-addtocart__success-icon,
.cs-addtocart--animation-done .cs-addtocart__fail-icon {
  transition-delay: 0;
}
@keyframes ball-in {
  0% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}
@keyframes minicart-in {
  0% {
    transform: translate3d(0, -100%, 0);
  }
  100% {
    transform: translate3d(0, 0, 0);
  }
}
@keyframes minicart-out {
  0% {
    transform: translate3d(0, 0, 0);
  }
  100% {
    transform: translate3d(0, -100%, 0);
  }
}
@keyframes move-qty-badge {
  0% {
    opacity: 1;
  }
  15% {
    transform: scale(1);
  }
  80% {
    opacity: 1;
    transform: scale(1.5);
  }
  100% {
    opacity: 0;
    transform: scale(1);
  }
}
.cs-addtocart .block-minicart {
  margin-bottom: 0;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-authorization-link {
  display: flex;
  align-items: center;
  position: relative;
  margin-left: 0.9rem;
  padding: 0 0 0 0.3rem;
}
@media (min-width: 64em) {
  .cs-authorization-link {
    padding: 0 0 0 1.3rem;
    margin-left: 1.7rem;
  }
}
.cs-authorization-link:before {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  content: "";
  border-left: 0.2rem solid #fff;
}
.cs-authorization-link__link {
  display: flex;
  align-items: center;
}
.cs-authorization-link__link, .cs-authorization-link__link:visited {
  color: #000000;
  text-decoration: none;
}
.cs-authorization-link__link:hover, .cs-authorization-link__link:focus, .cs-authorization-link__link:active, .cs-authorization-link__link:visited:hover, .cs-authorization-link__link:visited:focus {
  color: #666;
  text-decoration: none;
}
.cs-authorization-link__link:hover .cs-authorization-link__icon path {
  fill: #888;
}
.cs-authorization-link__icon {
  width: 1.8rem;
  height: 1rem;
  padding-right: 0.5rem;
}
.cs-authorization-link__icon path {
  fill: #888;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/*
 * Because price-box is used in multiple components like tile, buybox etc,
 * we need to move variables to separate file to have possibility to include them
 * in each component without generate price-box component styles multiple times
*/
.cs-autocomplete {
  width: 100%;
  top: 100%;
  left: 0;
  box-sizing: border-box;
  background-color: #fff;
  border-radius: 3px;
  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.17);
  z-index: 200;
  margin-top: -1px;
}
.cs-autocomplete .autocomplete-list dd, .cs-autocomplete__item {
  background: #fff;
  padding: 0.5rem 1rem;
  margin: 0;
  border-bottom: 1px solid #dcdcdc;
  display: flex;
  align-items: center;
  transition: background-color 0.15s linear;
  font-size: 1.29rem;
}
@media (min-width: 48em) and (max-width: 63.99em) {
  .cs-autocomplete .autocomplete-list dd, .cs-autocomplete__item {
    padding: 1rem;
  }
}
.cs-autocomplete .autocomplete-list dd:hover, .cs-autocomplete .autocomplete-list dd.selected, .cs-autocomplete__item:hover, .cs-autocomplete__item.selected {
  background-color: #f4f4f4;
  cursor: pointer;
}
.cs-autocomplete .autocomplete-list dd:last-child, .cs-autocomplete__item:last-child {
  border-bottom: none;
}
.cs-autocomplete .autocomplete-list dd-image-container, .cs-autocomplete__item-image-container {
  padding: 0;
  margin-right: 1rem;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.cs-autocomplete .autocomplete-list dd-image, .cs-autocomplete__item-image {
  width: 3.6rem;
  height: 4.5rem;
}
.cs-autocomplete .autocomplete-list dd-details, .cs-autocomplete__item-details {
  flex: 1 1 100%;
  margin: 0;
}
.cs-autocomplete .autocomplete-list dd-details .f-fix, .cs-autocomplete__item-details .f-fix {
  height: 5.8rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.cs-autocomplete .autocomplete-list dd-details img, .cs-autocomplete__item-details img {
  display: block;
}
.cs-autocomplete .autocomplete-list dd-brand, .cs-autocomplete__item-brand {
  font-size: 1.2rem;
  color: #888;
}
.cs-autocomplete .autocomplete-list dd-name, .cs-autocomplete__item-name {
  font-size: 1.29rem;
  color: #000;
  font-weight: 700;
}
.cs-autocomplete .autocomplete-list dd-price, .cs-autocomplete__item-price {
  margin: 0.3rem 0 0;
}
.cs-autocomplete .price-box {
  display: flex;
}
.cs-autocomplete .price-box > .price {
  color: #000;
  font-size: 1.5rem;
  font-weight: 700;
  margin-right: 0;
}
.cs-autocomplete .price-box .old-price > .price {
  text-decoration: line-through;
  color: #696969;
  font-size: 1.5rem;
  font-weight: 700;
}
.cs-autocomplete .price-box .special-price > .price {
  color: #000000;
  font-size: 1.5rem;
  font-weight: 700;
}
.cs-autocomplete .price-box .minimal-price-link {
  display: none;
}
.cs-autocomplete .price-box .old-price {
  order: -1;
}
.cs-autocomplete .price-box .old-price .price {
  margin-right: 1rem;
}
.cs-autocomplete__badges {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-end;
  margin-left: 1rem;
}
.cs-autocomplete__badge {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  position: relative;
  background-color: #000000;
  color: #fff;
  border: 0;
  border-radius: 0px;
  padding: 0 0.7rem;
  font-size: 1.1rem;
  font-weight: 700;
  min-height: 2em;
  text-transform: uppercase;
}
.cs-autocomplete__badge + .cs-autocomplete__badge {
  margin-top: 0.5rem;
}
.cs-autocomplete__badge--popular {
  background-color: #e41f12;
  color: #fff;
}
.cs-autocomplete__badge--popular .cs-autocomplete__badge-text {
  line-height: normal;
}
.cs-autocomplete__badge--popular .cs-autocomplete__badge-text + .cs-autocomplete__badge--popular .cs-autocomplete__badge-text {
  margin-left: 0.5rem;
}
.cs-autocomplete__badge--free-shipping {
  background-color: #37b841;
  color: #fff;
}
.cs-autocomplete__badge--free-shipping .cs-autocomplete__badge-text {
  line-height: normal;
}
.cs-autocomplete__badge--free-shipping .cs-autocomplete__badge-text + .cs-autocomplete__badge--free-shipping .cs-autocomplete__badge-text {
  margin-left: 0.5rem;
}
.cs-autocomplete__badge-text {
  line-height: normal;
}
.cs-autocomplete__badge-text + .cs-autocomplete__badge-text {
  margin-left: 0.5rem;
}
@media (min-width: 23.125em) {
  .cs-autocomplete__badge-text {
    white-space: nowrap;
  }
}

.autocomplete-list {
  margin: -1px 0 1rem;
  border-top: 1px solid #dcdcdc;
}
.autocomplete-list:first-child {
  border-top: 0;
}
.autocomplete-list:last-child {
  margin-bottom: 0;
}
.autocomplete-list .amount {
  color: #888;
  font-size: 1.29rem;
  font-weight: 700;
  margin-left: 0.5rem;
}
.autocomplete-list .amount:not(:empty):after {
  content: ")";
}
.autocomplete-list .amount:not(:empty):before {
  content: "(";
}

.autocomplete-list-title {
  padding: 1.2rem 3rem 1rem 1rem;
  border-bottom: none;
  color: #888;
  font-weight: 700;
  text-transform: uppercase;
  font-size: 1.29rem;
  letter-spacing: 1px;
  margin: 0;
}
.autocomplete-list-title:hover, .autocomplete-list-title.selected {
  background-color: transparent;
}
.autocomplete-list-title:not(:empty):first-child {
  border-top: transparent;
}

@media (hover: none) {
  html.autocomplete-dropdown-visible {
    overflow-y: hidden;
  }
}
@media (hover: none) {
  html.autocomplete-dropdown-visible body {
    overflow-y: hidden;
  }
}
@charset "UTF-8";
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Remove browser's margins, paddings and list style rules
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
.cs-breadcrumbs {
  padding-top: 1.3rem;
  padding-bottom: 1.3rem;
  font-weight: 400;
}
.cs-breadcrumbs__list {
  margin: 0;
  padding: 0;
  list-style: none;
}
.cs-breadcrumbs__item {
  position: relative;
  display: inline-block;
  margin: 0;
  padding: 0 1.95em 0 0;
  cursor: pointer;
  font-size: 1.2rem;
}
.cs-breadcrumbs__item:last-child {
  padding: 0;
  color: #888;
  cursor: default;
}
.cs-breadcrumbs__item:not(:last-child):after {
  position: absolute;
  top: 50%;
  right: 0.8em;
  content: "⁄";
  transform: translateY(-50%);
  line-height: 1;
  color: #b0b0b0;
}
.cs-breadcrumbs__link {
  position: relative;
  display: inline-block;
  color: #b0b0b0;
}
.cs-breadcrumbs__link:visited {
  color: #b0b0b0;
}
.cs-breadcrumbs__link:hover {
  text-decoration: none;
  color: #212121;
}
.cs-breadcrumbs__separator-icon {
  position: absolute;
  top: 50%;
  right: 0.5em;
  transform: translateY(-50%);
  width: 0.8em;
  height: 0.8em;
  fill: #b0b0b0;
}

.cs-container--breadcrumbs {
  max-width: none;
  display: none;
}
@media (min-width: 48em) {
  .cs-container--breadcrumbs {
    display: block;
  }
}

.catalog-category-view .cs-breadcrumbs {
  order: -2;
  margin: 0 auto 3rem auto;
  padding: 0;
}
.catalog-category-view .cs-page-category__cc-top {
  order: -2;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
.cs-button {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
}
.cs-button:hover, .cs-button:focus, .cs-button:active {
  background-color: #000000 !important;
}
.cs-button:before, .cs-button:after {
  content: "";
  position: absolute;
  top: -1px;
  bottom: -1px;
  right: -1px;
}
.cs-button:before {
  width: 3.4em;
  border-radius: 0 0px 0px 0;
  z-index: -1;
  background: linear-gradient(0deg, transparent 0%, transparent 0%, #666 0%, #666 100%);
}
.cs-button:after {
  width: 3em;
  min-width: auto;
  background-color: #666;
  transition: width 0.25s linear;
  z-index: -2;
  border-radius: 0px;
}
.cs-button:hover:after {
  width: calc(100% + 2px);
}
.cs-button::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
.cs-button, .cs-button:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #000000;
}
.cs-button *, .cs-button:visited * {
  color: #fff;
  fill: #fff;
}
.cs-button:hover:not([disabled]), .cs-button:focus:not([disabled]), .cs-button:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #666;
}
.cs-button:hover:not([disabled]) *, .cs-button:focus:not([disabled]) *, .cs-button:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
.cs-button[disabled] {
  opacity: 0.65;
  cursor: auto;
}
.cs-button__span {
  margin-top: 0;
  z-index: 1;
  font-weight: 700;
  vertical-align: baseline;
  display: inline-block;
  line-height: 1.275em;
  letter-spacing: normal;
  padding-left: 0;
  padding-right: 3.75em;
}
.cs-button__icon {
  max-width: 1em;
  max-height: 1.4rem;
  z-index: 2;
  height: auto;
  width: 100%;
  position: absolute;
  top: 50%;
  transform: translate3d(0, -50%, 0);
  margin-right: 0;
  right: 0.75em;
}

.cs-button-component {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
  margin: 0 0 3rem;
  position: relative;
  left: 50%;
  transform: translateX(-50%);
}
.cs-button-component:hover, .cs-button-component:focus, .cs-button-component:active {
  background-color: #000000 !important;
}
.cs-button-component:before, .cs-button-component:after {
  content: "";
  position: absolute;
  top: -1px;
  bottom: -1px;
  right: -1px;
}
.cs-button-component:before {
  width: 3.4em;
  border-radius: 0 0px 0px 0;
  z-index: -1;
  background: linear-gradient(0deg, transparent 0%, transparent 0%, #666 0%, #666 100%);
}
.cs-button-component:after {
  width: 3em;
  min-width: auto;
  background-color: #666;
  transition: width 0.25s linear;
  z-index: -2;
  border-radius: 0px;
}
.cs-button-component:hover:after {
  width: calc(100% + 2px);
}
.cs-button-component::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
.cs-button-component, .cs-button-component:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #000000;
}
.cs-button-component *, .cs-button-component:visited * {
  color: #fff;
  fill: #fff;
}
.cs-button-component:hover:not([disabled]), .cs-button-component:focus:not([disabled]), .cs-button-component:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #666;
}
.cs-button-component:hover:not([disabled]) *, .cs-button-component:focus:not([disabled]) *, .cs-button-component:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
.cs-button-component[disabled] {
  opacity: 0.65;
  cursor: auto;
}
@media (min-width: 48em) {
  .cs-button-component {
    margin: 0 0 4rem;
  }
}
.cs-button-component--skip-spacing {
  margin: 0;
}
.cs-button-component__span {
  margin-top: 0;
  z-index: 1;
  font-weight: 700;
  vertical-align: baseline;
  display: inline-block;
  line-height: 1.275em;
  letter-spacing: normal;
  padding-left: 0;
  padding-right: 3.75em;
}
.cs-button-component__icon {
  max-width: 1em;
  max-height: 1.4rem;
  z-index: 2;
  height: auto;
  width: 100%;
  position: absolute;
  top: 50%;
  transform: translate3d(0, -50%, 0);
  margin-right: 0;
  right: 0.75em;
}
.cs-button-component__amount:before {
  content: "(";
}
.cs-button-component__amount:after {
  content: ")";
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Mixins for flexible containers declaration.
 */
/**
 * Defines page container. This mixin makes sure that the content has always equal padding
 * for mobile screens on both size of the device.
 */
/**
 * Negates parent container's padding and sets it own.
 * Somethimes this has to be done to make background even to other containers' content.
 */
/**
 * Defines container wrapper that makes sure contnet doesn't extend above certain width and is always centered.
 */
.cs-container {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
  margin: 0 auto;
  width: 100%;
  box-sizing: border-box;
}
.cs-container__inner {
  max-width: 180rem;
  width: 100%;
  margin: 0 auto;
  position: relative;
}
.cs-container__inner:before, .cs-container__inner:after {
  content: "";
  display: table;
  clear: both;
}
.cs-container__aside {
  width: 100%;
}
@media (min-width: 48em) {
  .cs-container__aside {
    width: 40%;
  }
}
@media (min-width: 64em) {
  .cs-container__aside {
    width: 32%;
  }
}
@media (min-width: 90em) {
  .cs-container__aside {
    width: 30%;
  }
}
.cs-container__main-column {
  width: 56%;
  position: relative;
}
@media (min-width: 64em) {
  .cs-container__main-column {
    width: 65%;
  }
}
@media (min-width: 90em) {
  .cs-container__main-column {
    width: 67%;
  }
}
@media (max-width: 47.99em) {
  .cs-container__main-column {
    max-width: 100% !important;
    width: 100% !important;
  }
}
@media (min-width: 64em) {
  .cs-container__main-column--space-top {
    padding-top: 3rem;
  }
}
.cs-container--contrast {
  background-color: #f4f4f4;
}
@media (min-width: 64em) {
  .cs-container--contrast {
    background-image: url("../images/background.png");
    background-size: cover;
    background-repeat: no-repeat;
  }
}
.cs-container--spacious {
  padding-top: 2rem;
  padding-bottom: 2rem;
}
@media (min-width: 64em) {
  .cs-container--spacious {
    padding-top: 3rem;
    padding-bottom: 3rem;
  }
}
.cs-container--noscroll {
  overflow: hidden;
}
.cs-container--ontop {
  z-index: 301;
}
.cs-container--viewport-width {
  max-width: none;
}
.cs-container--no-padding {
  padding-left: 0;
  padding-right: 0;
}
.cs-container--use-whole-screen .cs-container__inner {
  max-width: 100%;
}

.cms-page-view.page-layout-1column #maincontent {
  max-width: 180rem;
  margin: 0 auto;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-cookie-message {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  margin: 0 auto;
  box-sizing: border-box;
  padding: 1.2rem;
  background-color: #fff;
  color: #000;
  box-shadow: 0 -0.3rem 0.5rem 0 rgba(0, 0, 0, 0.15);
  font-size: 85%;
  z-index: 98;
  transform: translate3d(0, 110%, 0);
  opacity: 0;
  transition: transform 0.25s ease-out, opacity 0.18s linear;
  display: flex;
  justify-content: center;
  align-items: center;
}
.cs-cookie-message--shown {
  display: none;
  opacity: 1;
  z-index: 202;
}
.cs-cookie-message__inner {
  display: flex;
  justify-content: center;
  flex-direction: column;
  align-items: center;
  position: relative;
  padding-left: 8rem;
}
@media (min-width: 48em) {
  .cs-cookie-message__inner {
    flex-direction: row;
  }
}
.cs-cookie-message__button-wrapper {
  align-self: flex-start;
}
@media (min-width: 48em) {
  .cs-cookie-message__button-wrapper {
    align-self: unset;
  }
}
.cs-cookie-message__text {
  position: relative;
  margin: 0;
}
.cs-cookie-message__text .block-cms-link.widget,
.cs-cookie-message__text p {
  margin: 0;
  display: inline;
}
.cs-cookie-message__text a, .cs-cookie-message__text a:visited {
  color: #000000;
  text-decoration: none;
}
.cs-cookie-message__text a:hover, .cs-cookie-message__text a:focus, .cs-cookie-message__text a:active, .cs-cookie-message__text a:visited:hover, .cs-cookie-message__text a:visited:focus {
  color: #666;
  text-decoration: none;
}
.cs-cookie-message__icon {
  position: absolute;
  left: 0.5rem;
  width: 5.5rem;
  height: 5.5rem;
  top: 50%;
  transform: translateY(-50%);
}
@media (min-width: 48em) {
  .cs-cookie-message__icon {
    top: -3.5rem;
    transform: translateY(0);
  }
}
.cs-cookie-message__button {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
  white-space: nowrap;
  margin-top: 1.2rem;
}
.cs-cookie-message__button:hover, .cs-cookie-message__button:focus, .cs-cookie-message__button:active {
  background-color: #000000 !important;
}
.cs-cookie-message__button:before, .cs-cookie-message__button:after {
  content: "";
  position: absolute;
  top: -1px;
  bottom: -1px;
  right: -1px;
}
.cs-cookie-message__button:before {
  width: 3.4em;
  border-radius: 0 0px 0px 0;
  z-index: -1;
  background: linear-gradient(0deg, transparent 0%, transparent 0%, #666 0%, #666 100%);
}
.cs-cookie-message__button:after {
  width: 3em;
  min-width: auto;
  background-color: #666;
  transition: width 0.25s linear;
  z-index: -2;
  border-radius: 0px;
}
.cs-cookie-message__button:hover:after {
  width: calc(100% + 2px);
}
.cs-cookie-message__button::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
.cs-cookie-message__button, .cs-cookie-message__button:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #000000;
}
.cs-cookie-message__button *, .cs-cookie-message__button:visited * {
  color: #fff;
  fill: #fff;
}
.cs-cookie-message__button:hover:not([disabled]), .cs-cookie-message__button:focus:not([disabled]), .cs-cookie-message__button:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #666;
}
.cs-cookie-message__button:hover:not([disabled]) *, .cs-cookie-message__button:focus:not([disabled]) *, .cs-cookie-message__button:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
.cs-cookie-message__button[disabled] {
  opacity: 0.65;
  cursor: auto;
}
@media (min-width: 48em) {
  .cs-cookie-message__button {
    margin-top: 0;
    margin-left: 1.2rem;
  }
}
.cs-cookie-message__button-span {
  margin-top: 0;
  z-index: 1;
  font-weight: 700;
  vertical-align: baseline;
  display: inline-block;
  line-height: 1.275em;
  letter-spacing: normal;
  padding-left: 0;
  padding-right: 3.75em;
}
.cs-cookie-message__button-icon {
  max-width: 1em;
  max-height: 1.4rem;
  z-index: 2;
  height: auto;
  width: 100%;
  position: absolute;
  top: 50%;
  transform: translate3d(0, -50%, 0);
  margin-right: 0;
  right: 0.75em;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-dailydeal {
  display: none;
}
.cs-dailydeal__header {
  display: flex;
  width: 100%;
  margin: 0 0 0.5rem;
  font-size: 1.2rem;
  justify-content: space-between;
  align-items: flex-start;
}
.cs-dailydeal__title {
  margin: 0;
  text-transform: uppercase;
  font-weight: 600;
}
.cs-dailydeal__items-amount {
  font-weight: 600;
}
.cs-dailydeal__countdown {
  display: flex;
  margin: 0;
  justify-content: stretch;
  align-items: stretch;
}
.cs-dailydeal__countdown-element {
  position: relative;
  z-index: 3;
  width: 100%;
  padding: 0.3rem 0.5rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  line-height: 1;
  background: none;
  border-radius: 0px;
}
.cs-dailydeal__countdown-element--special {
  width: 50%;
  background: #e41f12;
  z-index: 5;
}
.cs-dailydeal--teaser .cs-dailydeal__countdown-element {
  min-height: 4rem;
}
.cs-dailydeal__countdown-icon {
  width: 1.9rem;
  height: 2.4rem;
  fill: #fff;
}
.cs-dailydeal__countdown-value {
  display: block;
  font-size: 1.5rem;
  font-weight: 600;
  color: #e41f12;
  padding: 2px 0 0;
}
.cs-dailydeal__countdown-label {
  display: block;
  font-size: 1.1rem;
  font-weight: inherit;
  color: #888;
  padding: 2px 0 0;
}
.cs-dailydeal--tile {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  z-index: 3;
}
.cs-dailydeal--tile .cs-dailydeal__availability {
  position: relative;
  background: #888;
  font-size: 1rem;
  color: #fff;
  padding: 2px 4px;
  z-index: 4;
  font-weight: 300;
  border-radius: 0px;
}
@media (max-width: 599px) {
  .cs-dailydeal--tile .cs-dailydeal__countdown-element {
    margin-left: 0;
    margin-right: 0;
  }
  .cs-dailydeal--tile .cs-dailydeal__countdown-element:last-child:not(:only-child) {
    margin-left: 0;
  }
  .cs-dailydeal--tile .cs-dailydeal__countdown-element:last-child .cs-dailydeal__countdown-value:after {
    content: none;
  }
  .cs-dailydeal--tile .cs-dailydeal__countdown-element--special {
    width: auto;
  }
  .cs-dailydeal--tile .cs-dailydeal__countdown-element:not(.cs-dailydeal__countdown-element--special) {
    border-radius: 0;
    width: auto;
    padding: 0;
  }
  .cs-dailydeal--tile .cs-dailydeal__countdown-element:not(.cs-dailydeal__countdown-element--special):before {
    transform: none;
  }
  .cs-dailydeal--tile .cs-dailydeal__countdown-element:not(.cs-dailydeal__countdown-element--special):nth-child(2) {
    padding-left: 1.8rem;
    margin-left: -1rem !important;
  }
  .cs-dailydeal--tile .cs-dailydeal__countdown-element:not(.cs-dailydeal__countdown-element--special):last-child {
    padding-right: 0.8rem;
    border-radius: 0 0px 0px 0;
  }
  .cs-dailydeal--tile .cs-dailydeal__countdown-value {
    font-size: 1.3rem;
  }
  .cs-dailydeal--tile .cs-dailydeal__countdown-value:after {
    content: ":";
  }
  .cs-dailydeal--tile .cs-dailydeal__countdown-label {
    display: none;
  }
}
.cs-dailydeal__badge-pdp-icon {
  width: 1.5rem;
  height: 1.5rem;
  z-index: 10;
  fill: #fff;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
@media (max-width: 47.99em) {
  .cs-display-controller--hidden-mobile {
    display: none;
  }
}
@media (min-width: 48em) {
  .cs-display-controller--hidden-desktop {
    display: none;
  }
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Remove browser's margins, paddings and list style rules
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
.cs-dropdown-switcher {
  white-space: nowrap;
  cursor: pointer;
  width: 100%;
}
@media (min-width: 64em) {
  .cs-dropdown-switcher {
    position: relative;
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
  }
  .cs-dropdown-switcher:before {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 1.3rem;
    content: "";
    border-left: 0.2rem solid #fff;
    display: block;
  }
}
@media (min-width: 64em) {
  .cs-dropdown-switcher--stores:before {
    display: none;
  }
}
.cs-dropdown-switcher__option-icon {
  min-width: 1.5rem;
  height: 1.5rem;
  margin-right: 0.6rem;
  margin-bottom: 0.2rem;
  display: inline-block;
}
@media (min-width: 64em) {
  .cs-dropdown-switcher--language .cs-dropdown-switcher__option-icon {
    width: 1.5rem;
  }
}
@media (min-width: 64em) {
  .cs-dropdown-switcher .switcher-options {
    display: flex;
  }
}
.cs-dropdown-switcher__trigger {
  padding: 2.4rem 2rem;
  font-size: 1.4rem;
  font-weight: 700;
  border-bottom: 1px #dcdcdc solid;
  position: relative;
  position: relative;
}
.cs-dropdown-switcher__trigger:before, .cs-dropdown-switcher__trigger:after {
  content: "";
  position: absolute;
  top: 50%;
  width: 0.7rem;
  height: 0.1rem;
  left: auto;
  background-color: #000000;
  transition: transform 0.15s linear, right 0.15s linear, background-color 0.15s linear;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
}
.cs-dropdown-switcher__trigger:before {
  transform: rotate(45deg) translate3d(0, 0, 0);
  right: 3rem;
}
.cs-dropdown-switcher__trigger:after {
  transform: rotate(-45deg) translate3d(0, 0, 0);
  right: 2.5rem;
}
.cs-dropdown-switcher__trigger.active:before {
  transform: rotate(-45deg);
}
.cs-dropdown-switcher__trigger.active:after {
  transform: rotate(45deg);
}
@media (min-width: 64em) {
  .cs-dropdown-switcher__trigger {
    height: 100%;
    display: inline-flex;
    align-items: center;
    margin-left: 2rem;
    font-size: 1.1rem;
    font-weight: 400;
    padding: 0 1.5rem 0 0;
    border-bottom: none;
    position: relative;
  }
  .cs-dropdown-switcher__trigger:before, .cs-dropdown-switcher__trigger:after {
    content: "";
    position: absolute;
    top: 50%;
    width: 0.7rem;
    height: 0.1rem;
    left: auto;
    background-color: #000;
    transition: transform 0.15s linear, right 0.15s linear, background-color 0.15s linear;
    -webkit-backface-visibility: hidden;
            backface-visibility: hidden;
  }
  .cs-dropdown-switcher__trigger:before {
    transform: rotate(45deg) translate3d(0, 0, 0);
    right: 0.5rem;
  }
  .cs-dropdown-switcher__trigger:after {
    transform: rotate(-45deg) translate3d(0, 0, 0);
    right: 0;
  }
  .cs-dropdown-switcher__trigger.active:before {
    transform: rotate(-45deg);
  }
  .cs-dropdown-switcher__trigger.active:after {
    transform: rotate(45deg);
  }
}
.active .cs-dropdown-switcher__trigger {
  background: transparent;
  border-top-left-radius: 3px;
  border-top-right-radius: 3px;
  border: none;
  position: relative;
  width: 100%;
}
@media (max-width: 63.99em) {
  .active .cs-dropdown-switcher__trigger {
    padding: 2.4rem 2rem;
    border-style: none;
  }
}
.cs-dropdown-switcher__trigger-span {
  display: flex;
  align-items: center;
}
.cs-dropdown-switcher__list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: none;
  list-style: none;
  font-size: 1.1rem;
  border-bottom-left-radius: 3px;
  border-bottom-right-radius: 3px;
  border-color: #f4f4f4;
  border-style: solid;
  border-width: 0 1px 1px;
  width: 100%;
}
@media (min-width: 64em) {
  .cs-dropdown-switcher__list {
    background: #fff;
    min-width: 100%;
    position: absolute;
    top: 100%;
    right: -1rem;
    left: 1rem;
  }
}
.cs-dropdown-switcher__list .cs-dropdown-switcher--currency {
  right: -1rem;
}
.active .cs-dropdown-switcher__list {
  display: block;
}
.cs-dropdown-switcher__list-item {
  margin: 0;
  white-space: nowrap;
}
.cs-dropdown-switcher__list-item-link {
  width: 100%;
  color: #212121 !important;
  display: flex;
  align-items: center;
}
.cs-dropdown-switcher__list-item-link:hover {
  background-color: #f4f4f4;
  text-decoration: none;
}
@media (max-width: 63.99em) {
  .cs-dropdown-switcher__list-item-link {
    padding: 1.4rem 2rem;
    font-size: 1.4rem;
  }
}
@media (min-width: 64em) {
  .cs-dropdown-switcher__list-item-link {
    padding: 0.6rem 1.8rem;
    font-size: 1.1rem;
  }
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/* Radio and checkbox styling */
/* stylelint-disable no-descending-specificity */
.cs-field,
.cs-input {
  font-size: 1.4rem;
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  align-items: center;
  border: 0;
  padding: 0;
  margin: 0;
  width: 100%;
}
.cs-field__control,
.cs-input__control {
  width: 100%;
}
.cs-field__label,
.cs-input__label {
  font-weight: 700;
  font-size: 0.85em;
  width: 100%;
  text-transform: none;
  color: inherit;
}
.required .cs-field__label:after,
.required .cs-input__label:after {
  content: " *";
  color: #e41f12;
}
.cs-field__input, .cs-field__textarea,
.cs-input__input,
.cs-input__textarea {
  font-size: 1em;
  line-height: 1.275em;
  padding: 0.75em 1em;
  color: #212121;
  background: #fff;
  border-radius: 0px;
  border: 1px solid #dcdcdc;
  box-shadow: none;
  transition: border-color 0.5s;
  margin: 0px;
  width: 100%;
  background-clip: padding-box;
  font-family: inherit;
}
.cs-field__input:hover:not([disabled]), .cs-field__input:focus:not([disabled]), .cs-field__textarea:hover:not([disabled]), .cs-field__textarea:focus:not([disabled]),
.cs-input__input:hover:not([disabled]),
.cs-input__input:focus:not([disabled]),
.cs-input__textarea:hover:not([disabled]),
.cs-input__textarea:focus:not([disabled]) {
  border: 1px solid #000000;
  box-shadow: none;
}
.cs-field__input::-moz-placeholder, .cs-field__textarea::-moz-placeholder, .cs-input__input::-moz-placeholder, .cs-input__textarea::-moz-placeholder {
  opacity: 1;
  color: #888;
}
.cs-field__input::placeholder, .cs-field__textarea::placeholder,
.cs-input__input::placeholder,
.cs-input__textarea::placeholder {
  opacity: 1;
  color: #888;
}
.cs-field__input[disabled], .cs-field__textarea[disabled],
.cs-input__input[disabled],
.cs-input__textarea[disabled] {
  opacity: 0.65;
}
.cs-field__input.mage-error, .cs-field__input.mage-error:hover:not(:focus), .cs-field__textarea.mage-error, .cs-field__textarea.mage-error:hover:not(:focus),
.cs-input__input.mage-error,
.cs-input__input.mage-error:hover:not(:focus),
.cs-input__textarea.mage-error,
.cs-input__textarea.mage-error:hover:not(:focus) {
  border: 1px solid #e41f12;
}
.cs-field__select,
.cs-input__select {
  display: block;
  font-size: 1em;
  line-height: 1.275em;
  padding: 0.75em 1em;
  padding-right: 2.3em;
  color: #212121;
  border-radius: 0px;
  border: 1px solid #dcdcdc;
  box-shadow: none;
  width: 100%;
  max-width: 100%;
  margin: 0 0 0.2em;
  outline: 0;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  background-color: #fff;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 9' fill='%23dcdcdc'%3e%3cpath d='M0 1.2C0 .5.6 0 1.2 0c.3 0 .6.1.8.3l6 5.9 6-5.9c.5-.4 1.2-.3 1.7.1.4.4.4 1.1 0 1.5L8.9 8.7c-.5.4-1.2.4-1.7 0L.4 2a.9.9 0 0 1-.4-.8z'/%3e%3c/svg%3e"), linear-gradient(0deg, transparent 0%, transparent 100%);
  background-repeat: no-repeat, repeat;
  background-position: right 0.8em top 52%, 0 0;
  background-size: 0.7em auto, 100%;
  transition: border-color 0.5s;
}
.cs-field__select:-moz-focusring, .cs-field__select::-moz-focus-inner,
.cs-input__select:-moz-focusring,
.cs-input__select::-moz-focus-inner {
  color: transparent !important;
  text-shadow: 0 0 0 #000 !important;
}
.cs-field__select:hover:not([disabled]), .cs-field__select:focus:not([disabled]),
.cs-input__select:hover:not([disabled]),
.cs-input__select:focus:not([disabled]) {
  border: 1px solid #000000;
  box-shadow: none;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 9' fill='%23000000'%3e%3cpath d='M0 1.2C0 .5.6 0 1.2 0c.3 0 .6.1.8.3l6 5.9 6-5.9c.5-.4 1.2-.3 1.7.1.4.4.4 1.1 0 1.5L8.9 8.7c-.5.4-1.2.4-1.7 0L.4 2a.9.9 0 0 1-.4-.8z'/%3e%3c/svg%3e"), linear-gradient(0deg, transparent 0%, transparent 100%);
}
.cs-field__select[disabled],
.cs-input__select[disabled] {
  opacity: 0.65;
}
.cs-field__select option,
.cs-input__select option {
  font-weight: 500;
  padding: 0;
  color: initial;
}
.cs-field__radio,
.cs-input__radio {
  display: inline-block;
  height: 1em;
  width: 1em;
  margin: -0.0625em calc(0.5em + 1px) 0 0;
  font-size: 1em;
  overflow: hidden;
  vertical-align: middle;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  flex: 0 0 auto;
  cursor: pointer;
  border: 1px solid #dcdcdc;
  box-shadow: none;
  background-color: transparent;
  background-repeat: no-repeat;
  background-position: 50% 50%;
  background-size: 1em 1em;
  outline: 0;
  border-radius: 50%;
  transition: background-color 0.5s, border-color 0.5s;
}
.cs-field__radio::-moz-focus-inner, .cs-field__radio:-moz-focusring,
.cs-input__radio::-moz-focus-inner,
.cs-input__radio:-moz-focusring {
  color: transparent !important;
  text-shadow: 0 0 0 #000 !important;
}
.cs-field__radio:hover:not([disabled]), .cs-field__radio:focus:not([disabled]),
.cs-input__radio:hover:not([disabled]),
.cs-input__radio:focus:not([disabled]) {
  border: 1px solid #666;
  box-shadow: none;
  background-color: transparent;
}
.cs-field__radio:checked,
.cs-input__radio:checked {
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg width='14' height='14' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='%23000000' r='4' cy='7' cx='7'/%3e%3c/svg%3e");
}
.cs-field__radio:checked, .cs-field__radio:checked:hover, .cs-field__radio:checked:focus,
.cs-input__radio:checked,
.cs-input__radio:checked:hover,
.cs-input__radio:checked:focus {
  border: 1px solid #000000;
  background-color: transparent;
  box-shadow: none;
}
.cs-field__radio[disabled], .cs-field__radio[disabled] + .label, .cs-field__radio[disabled] + .cs-input__label,
.cs-input__radio[disabled],
.cs-input__radio[disabled] + .label,
.cs-input__radio[disabled] + .cs-input__label {
  opacity: 0.65;
}
.cs-field__checkbox,
.cs-input__checkbox {
  display: inline-block;
  height: 1em;
  width: 1em;
  margin: -0.0625em calc(0.5em + 1px) 0 0;
  font-size: 1em;
  overflow: hidden;
  vertical-align: middle;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  flex: 0 0 auto;
  cursor: pointer;
  border: 1px solid #dcdcdc;
  box-shadow: none;
  background-color: transparent;
  background-repeat: no-repeat;
  background-position: 50% 50%;
  background-size: 1em 1em;
  outline: 0;
  border-radius: 50%;
  transition: background-color 0.5s, border-color 0.5s;
  border-radius: 0px;
  background-size: 1em 1em;
}
.cs-field__checkbox::-moz-focus-inner, .cs-field__checkbox:-moz-focusring,
.cs-input__checkbox::-moz-focus-inner,
.cs-input__checkbox:-moz-focusring {
  color: transparent !important;
  text-shadow: 0 0 0 #000 !important;
}
.cs-field__checkbox:hover:not([disabled]), .cs-field__checkbox:focus:not([disabled]),
.cs-input__checkbox:hover:not([disabled]),
.cs-input__checkbox:focus:not([disabled]) {
  border: 1px solid #666;
  box-shadow: none;
  background-color: transparent;
}
.cs-field__checkbox:checked,
.cs-input__checkbox:checked {
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg width='14' height='14' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='%23000000' r='4' cy='7' cx='7'/%3e%3c/svg%3e");
}
.cs-field__checkbox:checked, .cs-field__checkbox:checked:hover, .cs-field__checkbox:checked:focus,
.cs-input__checkbox:checked,
.cs-input__checkbox:checked:hover,
.cs-input__checkbox:checked:focus {
  border: 1px solid #000000;
  background-color: transparent;
  box-shadow: none;
}
.cs-field__checkbox[disabled], .cs-field__checkbox[disabled] + .label, .cs-field__checkbox[disabled] + .cs-input__label,
.cs-input__checkbox[disabled],
.cs-input__checkbox[disabled] + .label,
.cs-input__checkbox[disabled] + .cs-input__label {
  opacity: 0.65;
}
.cs-field__checkbox:checked,
.cs-input__checkbox:checked {
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg width='14' height='14' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='%23000000' d='M5.313 10.108H5.24a1.064 1.005 0 0 1-.75-.41l-1.947-2.55a1.064 1.005 0 0 1 1.723-1.175L5.463 7.56 9.06 4.19a1.064 1.005 0 0 1 .75-.297h.846a1.064 1.005 0 0 1 0 2.004h-.45L6.064 9.81a1.064 1.005 0 0 1-.75.298z'/%3e%3c/svg%3e");
}
.cs-field__checkbox.mage-error, .cs-field__checkbox.mage-error:hover:not(:focus),
.cs-input__checkbox.mage-error,
.cs-input__checkbox.mage-error:hover:not(:focus) {
  border: 1px solid #e41f12;
}
.cs-field__icon,
.cs-input__icon {
  position: absolute;
  width: 1.3em;
  height: 1.3em;
  right: 0.8em;
  top: 0.8em;
  display: none;
}
.cs-field__note,
.cs-input__note {
  display: block;
  font-size: 0.85em;
  padding: 0.3em 0 0;
  color: #696969;
}
.cs-field__error,
.cs-input__error {
  display: block;
  font-size: 0.85em;
  padding: 0.3em 0 0;
  color: #696969;
  color: #e41f12;
}

.field {
  font-size: 1.4rem;
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  align-items: center;
  border: 0;
  padding: 0;
  margin: 0;
  width: 100%;
}
.field._success:not(._warn) .control {
  position: relative;
}
.field._success:not(._warn) .control:after {
  position: absolute;
  width: 1.3em;
  height: 1.3em;
  right: 0.8em;
  top: 0.8em;
  display: none;
  background: url("../images/check-green.svg") no-repeat center center/contain;
  content: "";
}
.field .control {
  width: 100%;
}
.field .control > textarea {
  font-size: 1em;
  line-height: 1.275em;
  padding: 0.75em 1em;
  color: #212121;
  background: #fff;
  border-radius: 0px;
  border: 1px solid #dcdcdc;
  box-shadow: none;
  transition: border-color 0.5s;
  margin: 0px;
  width: 100%;
  background-clip: padding-box;
  font-family: inherit;
}
.field .control > textarea:hover:not([disabled]), .field .control > textarea:focus:not([disabled]) {
  border: 1px solid #000000;
  box-shadow: none;
}
.field .control > textarea::-moz-placeholder {
  opacity: 1;
  color: #888;
}
.field .control > textarea::placeholder {
  opacity: 1;
  color: #888;
}
.field .control > textarea[disabled] {
  opacity: 0.65;
}
.field .label {
  font-weight: 700;
  font-size: 0.85em;
  width: 100%;
  text-transform: none;
  color: inherit;
}
.field.choice label.label {
  width: auto;
  margin-bottom: 0;
}
.field.required > .label:after, .field._required > .label:after {
  content: " *";
  color: #e41f12;
}
.field.required ._required > .label:after {
  display: none;
}
.field .input-text {
  font-size: 1em;
  line-height: 1.275em;
  padding: 0.75em 1em;
  color: #212121;
  background: #fff;
  border-radius: 0px;
  border: 1px solid #dcdcdc;
  box-shadow: none;
  transition: border-color 0.5s;
  margin: 0px;
  width: 100%;
  background-clip: padding-box;
  font-family: inherit;
}
.field .input-text:hover:not([disabled]), .field .input-text:focus:not([disabled]) {
  border: 1px solid #000000;
  box-shadow: none;
}
.field .input-text::-moz-placeholder {
  opacity: 1;
  color: #888;
}
.field .input-text::placeholder {
  opacity: 1;
  color: #888;
}
.field .input-text[disabled] {
  opacity: 0.65;
}
.field .input-text.mage-error, .field .input-text.mage-error:hover:not(:focus) {
  border: 1px solid #e41f12;
}
.field .input-text.required-entry {
  margin-bottom: 1rem;
}
.field .select {
  display: block;
  font-size: 1em;
  line-height: 1.275em;
  padding: 0.75em 1em;
  padding-right: 2.3em;
  color: #212121;
  border-radius: 0px;
  border: 1px solid #dcdcdc;
  box-shadow: none;
  width: 100%;
  max-width: 100%;
  margin: 0 0 0.2em;
  outline: 0;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  background-color: #fff;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 9' fill='%23dcdcdc'%3e%3cpath d='M0 1.2C0 .5.6 0 1.2 0c.3 0 .6.1.8.3l6 5.9 6-5.9c.5-.4 1.2-.3 1.7.1.4.4.4 1.1 0 1.5L8.9 8.7c-.5.4-1.2.4-1.7 0L.4 2a.9.9 0 0 1-.4-.8z'/%3e%3c/svg%3e"), linear-gradient(0deg, transparent 0%, transparent 100%);
  background-repeat: no-repeat, repeat;
  background-position: right 0.8em top 52%, 0 0;
  background-size: 0.7em auto, 100%;
  transition: border-color 0.5s;
}
.field .select:-moz-focusring, .field .select::-moz-focus-inner {
  color: transparent !important;
  text-shadow: 0 0 0 #000 !important;
}
.field .select:hover:not([disabled]), .field .select:focus:not([disabled]) {
  border: 1px solid #000000;
  box-shadow: none;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 9' fill='%23000000'%3e%3cpath d='M0 1.2C0 .5.6 0 1.2 0c.3 0 .6.1.8.3l6 5.9 6-5.9c.5-.4 1.2-.3 1.7.1.4.4.4 1.1 0 1.5L8.9 8.7c-.5.4-1.2.4-1.7 0L.4 2a.9.9 0 0 1-.4-.8z'/%3e%3c/svg%3e"), linear-gradient(0deg, transparent 0%, transparent 100%);
}
.field .select[disabled] {
  opacity: 0.65;
}
.field .select option {
  font-weight: 500;
  padding: 0;
  color: initial;
}
.field .checkbox {
  display: inline-block;
  height: 1em;
  width: 1em;
  margin: -0.0625em calc(0.5em + 1px) 0 0;
  font-size: 1em;
  overflow: hidden;
  vertical-align: middle;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  flex: 0 0 auto;
  cursor: pointer;
  border: 1px solid #dcdcdc;
  box-shadow: none;
  background-color: transparent;
  background-repeat: no-repeat;
  background-position: 50% 50%;
  background-size: 1em 1em;
  outline: 0;
  border-radius: 50%;
  transition: background-color 0.5s, border-color 0.5s;
  border-radius: 0px;
  background-size: 1em 1em;
}
.field .checkbox::-moz-focus-inner, .field .checkbox:-moz-focusring {
  color: transparent !important;
  text-shadow: 0 0 0 #000 !important;
}
.field .checkbox:hover:not([disabled]), .field .checkbox:focus:not([disabled]) {
  border: 1px solid #666;
  box-shadow: none;
  background-color: transparent;
}
.field .checkbox:checked {
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg width='14' height='14' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='%23000000' r='4' cy='7' cx='7'/%3e%3c/svg%3e");
}
.field .checkbox:checked, .field .checkbox:checked:hover, .field .checkbox:checked:focus {
  border: 1px solid #000000;
  background-color: transparent;
  box-shadow: none;
}
.field .checkbox[disabled], .field .checkbox[disabled] + .label, .field .checkbox[disabled] + .cs-input__label {
  opacity: 0.65;
}
.field .checkbox:checked {
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg width='14' height='14' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='%23000000' d='M5.313 10.108H5.24a1.064 1.005 0 0 1-.75-.41l-1.947-2.55a1.064 1.005 0 0 1 1.723-1.175L5.463 7.56 9.06 4.19a1.064 1.005 0 0 1 .75-.297h.846a1.064 1.005 0 0 1 0 2.004h-.45L6.064 9.81a1.064 1.005 0 0 1-.75.298z'/%3e%3c/svg%3e");
}
.field .checkbox.mage-error, .field .checkbox.mage-error:hover:not(:focus) {
  border: 1px solid #e41f12;
}
.field .radio {
  display: inline-block;
  height: 1em;
  width: 1em;
  margin: -0.0625em calc(0.5em + 1px) 0 0;
  font-size: 1em;
  overflow: hidden;
  vertical-align: middle;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  flex: 0 0 auto;
  cursor: pointer;
  border: 1px solid #dcdcdc;
  box-shadow: none;
  background-color: transparent;
  background-repeat: no-repeat;
  background-position: 50% 50%;
  background-size: 1em 1em;
  outline: 0;
  border-radius: 50%;
  transition: background-color 0.5s, border-color 0.5s;
}
.field .radio::-moz-focus-inner, .field .radio:-moz-focusring {
  color: transparent !important;
  text-shadow: 0 0 0 #000 !important;
}
.field .radio:hover:not([disabled]), .field .radio:focus:not([disabled]) {
  border: 1px solid #666;
  box-shadow: none;
  background-color: transparent;
}
.field .radio:checked {
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg width='14' height='14' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='%23000000' r='4' cy='7' cx='7'/%3e%3c/svg%3e");
}
.field .radio:checked, .field .radio:checked:hover, .field .radio:checked:focus {
  border: 1px solid #000000;
  background-color: transparent;
  box-shadow: none;
}
.field .radio[disabled], .field .radio[disabled] + .label, .field .radio[disabled] + .cs-input__label {
  opacity: 0.65;
}
.field.customer-name-prefix select {
  display: block;
  font-size: 1em;
  line-height: 1.275em;
  padding: 0.75em 1em;
  padding-right: 2.3em;
  color: #212121;
  border-radius: 0px;
  border: 1px solid #dcdcdc;
  box-shadow: none;
  width: 100%;
  max-width: 100%;
  margin: 0 0 0.2em;
  outline: 0;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  background-color: #fff;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 9' fill='%23dcdcdc'%3e%3cpath d='M0 1.2C0 .5.6 0 1.2 0c.3 0 .6.1.8.3l6 5.9 6-5.9c.5-.4 1.2-.3 1.7.1.4.4.4 1.1 0 1.5L8.9 8.7c-.5.4-1.2.4-1.7 0L.4 2a.9.9 0 0 1-.4-.8z'/%3e%3c/svg%3e"), linear-gradient(0deg, transparent 0%, transparent 100%);
  background-repeat: no-repeat, repeat;
  background-position: right 0.8em top 52%, 0 0;
  background-size: 0.7em auto, 100%;
  transition: border-color 0.5s;
}
.field.customer-name-prefix select:-moz-focusring, .field.customer-name-prefix select::-moz-focus-inner {
  color: transparent !important;
  text-shadow: 0 0 0 #000 !important;
}
.field.customer-name-prefix select:hover:not([disabled]), .field.customer-name-prefix select:focus:not([disabled]) {
  border: 1px solid #000000;
  box-shadow: none;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 9' fill='%23000000'%3e%3cpath d='M0 1.2C0 .5.6 0 1.2 0c.3 0 .6.1.8.3l6 5.9 6-5.9c.5-.4 1.2-.3 1.7.1.4.4.4 1.1 0 1.5L8.9 8.7c-.5.4-1.2.4-1.7 0L.4 2a.9.9 0 0 1-.4-.8z'/%3e%3c/svg%3e"), linear-gradient(0deg, transparent 0%, transparent 100%);
}
.field.customer-name-prefix select[disabled] {
  opacity: 0.65;
}
.field.customer-name-prefix select option {
  font-weight: 500;
  padding: 0;
  color: initial;
}
.field.field-dob input {
  font-size: 1em;
  line-height: 1.275em;
  padding: 0.75em 1em;
  color: #212121;
  background: #fff;
  border-radius: 0px;
  border: 1px solid #dcdcdc;
  box-shadow: none;
  transition: border-color 0.5s;
  margin: 0px;
  width: 100%;
  background-clip: padding-box;
  font-family: inherit;
}
.field.field-dob input:hover:not([disabled]), .field.field-dob input:focus:not([disabled]) {
  border: 1px solid #000000;
  box-shadow: none;
}
.field.field-dob input::-moz-placeholder {
  opacity: 1;
  color: #888;
}
.field.field-dob input::placeholder {
  opacity: 1;
  color: #888;
}
.field.field-dob input[disabled] {
  opacity: 0.65;
}
.field.field-dob input.mage-error, .field.field-dob input.mage-error:hover:not(:focus) {
  border: 1px solid #e41f12;
}
.field.field-dob button {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
}
.field.field-dob button::before, .field.field-dob button::after {
  content: none;
}
.field.field-dob button::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
.field.field-dob button, .field.field-dob button:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid #000000;
  color: #000000;
  background-color: #fff;
}
.field.field-dob button *, .field.field-dob button:visited * {
  color: #000000;
  fill: #000000;
}
.field.field-dob button:hover:not([disabled]), .field.field-dob button:focus:not([disabled]), .field.field-dob button:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid #666;
  color: #fff;
  background-color: #666;
}
.field.field-dob button:hover:not([disabled]) *, .field.field-dob button:focus:not([disabled]) *, .field.field-dob button:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
.field.field-dob button[disabled] {
  opacity: 0.65;
  cursor: auto;
}
.field.field-dob button span {
  margin-top: 0;
  z-index: 1;
  font-weight: 700;
  vertical-align: baseline;
  display: inline-block;
  line-height: 1.275em;
  letter-spacing: normal;
  padding-left: 0;
  padding-right: 3.75em;
}
.field._error .input-text, .field._error .input-text:hover:not(:focus),
.field._error .checkbox,
.field._error .checkbox:hover:not(:focus) {
  border: 1px solid #e41f12;
}
.field .control._with-tooltip input {
  width: 100%;
  margin-right: 0;
}
.field .field-tooltip {
  position: static;
}
.field .field-tooltip .label,
.field .field-tooltip .field-tooltip-action {
  display: none;
}
.field .field-tooltip .field-tooltip-content {
  position: static;
  background: none;
  border: none;
  display: block;
  font-size: 0.85em;
  padding: 0.3em 0 0;
  color: #696969;
}
.field .field-tooltip .field-tooltip-content:before, .field .field-tooltip .field-tooltip-content:after {
  display: none;
}
.field .note {
  display: block;
  font-size: 0.85em;
  padding: 0.3em 0 0;
  color: #696969;
}

div.mage-error,
div.field-error {
  display: block;
  font-size: 0.85em;
  padding: 0.3em 0 0;
  color: #696969;
  color: #e41f12;
}

/* stylelint-enable */
/**
 * Footer component customization.
 * @see /Magento_Theme/templates/footer/columns.phtml for templates.
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-footer {
  font-size: 1rem;
  color: #484848;
  background: #f4f4f4;
  overflow: hidden;
  padding: 0 0 2rem;
  margin-top: 4rem;
}
@media (min-width: 48em) {
  .cs-footer {
    padding: 0 1.5rem;
  }
}
.cs-footer__content {
  padding: 0;
}
@media (min-width: 48em) {
  .cs-footer__content {
    display: flex;
    flex-wrap: wrap;
    flex-direction: column;
    padding-top: 4rem;
    padding-bottom: 2.5rem;
  }
}
@media (min-width: 64em) {
  .cs-footer__content {
    flex-wrap: nowrap;
  }
}
@media (max-width: 47.99em) {
  .cs-footer__item--promo {
    display: none;
  }
}
@media (max-width: 63.99em) {
  .cs-footer__item--promo {
    margin-bottom: 1.5rem;
  }
}
@media (min-width: 48em) {
  .cs-footer__item--links {
    display: flex;
    margin-top: 2em;
  }
}
@media (min-width: 48em) {
  .cs-footer__item--links {
    margin-top: 0;
  }
}
@media (min-width: 64em) {
  .cs-footer__item--extras {
    display: block;
  }
}
@media (min-width: 64em) {
  .cs-footer__section--socials {
    margin-top: 4rem;
  }
}
@media (min-width: 64em) {
  .cs-footer__section--stores-switcher {
    margin-top: 4rem;
    max-width: 20rem;
  }
}
.cs-footer__section-title,
.cs-footer [data-role=title] {
  font-family: "proxima-nova", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Oxygen, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  font-size: 1.5rem;
  line-height: 1.1;
  color: #212121;
  font-weight: 700;
  text-transform: uppercase;
  margin: 1rem 0 2rem;
  position: relative;
  margin: 0;
  border-top: 1px solid #888;
  padding: 2rem;
  color: #888;
  font-size: 1.2em;
  font-weight: 400;
  text-transform: uppercase;
}
@media (max-width: 47.99em) {
  .cs-footer__section--collapsible .cs-footer__section-title,
.cs-footer__section--collapsible .cs-footer [data-role=title] {
    cursor: pointer;
    position: relative;
  }
  .cs-footer__section--collapsible .cs-footer__section-title:before, .cs-footer__section--collapsible .cs-footer__section-title:after,
.cs-footer__section--collapsible .cs-footer [data-role=title]:before,
.cs-footer__section--collapsible .cs-footer [data-role=title]:after {
    content: "";
    position: absolute;
    top: 50%;
    width: 1.2rem;
    height: 0.2rem;
    left: auto;
    background-color: #888;
    transition: transform 0.3s ease-out, opacity 0.15s ease-out, background-color 0.15s linear;
    -webkit-backface-visibility: hidden;
            backface-visibility: hidden;
  }
  .cs-footer__section--collapsible .cs-footer__section-title:before, .cs-footer__section--collapsible .cs-footer__section-title:after,
.cs-footer__section--collapsible .cs-footer [data-role=title]:before,
.cs-footer__section--collapsible .cs-footer [data-role=title]:after {
    right: 1.5rem;
    transform: translate3d(0, -50%, 0) !important;
  }
  .cs-footer__section--collapsible .cs-footer__section-title:after,
.cs-footer__section--collapsible .cs-footer [data-role=title]:after {
    transform: translate3d(0, -50%, 0) rotate(90deg) !important;
  }
  .cs-footer__section--collapsible .cs-footer__section-title[aria-expanded=true]:before,
.cs-footer__section--collapsible .cs-footer [data-role=title][aria-expanded=true]:before {
    transform: translate3d(0, -50%, 0) rotate(-90deg) !important;
    opacity: 0;
  }
  .cs-footer__section--collapsible .cs-footer__section-title[aria-expanded=true]:after,
.cs-footer__section--collapsible .cs-footer [data-role=title][aria-expanded=true]:after {
    transform: translate3d(0, -50%, 0) rotate(0) !important;
  }
  .cs-footer__section--socials .cs-footer__section-title,
.cs-footer__section--socials .cs-footer [data-role=title] {
    border: 0;
    clip: rect(0 0 0 0);
    -webkit-clip-path: inset(50%);
            clip-path: inset(50%);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    width: 1px;
    white-space: nowrap;
    /* 1 */
  }
}
@media (min-width: 48em) {
  .cs-footer__section-title,
.cs-footer [data-role=title] {
    border-top: none;
    padding-left: 0;
  }
}
@media (min-width: 64em) {
  .cs-footer__section-title,
.cs-footer [data-role=title] {
    padding-top: 0;
    padding-right: 0;
  }
}
.cs-footer__section-content,
.cs-footer [data-role=content] {
  padding: 0 1.5rem 1.5rem;
  font-size: 1.2em;
}
@media (max-width: 47.99em) {
  .cs-footer__section--collapsible .cs-footer__section-content,
.cs-footer__section--collapsible .cs-footer [data-role=content] {
    display: none;
  }
}
@media (min-width: 48em) {
  .cs-footer__section-content,
.cs-footer [data-role=content] {
    padding-left: 0;
  }
}
@media (min-width: 64em) {
  .cs-footer__section-content,
.cs-footer [data-role=content] {
    padding-right: 0;
    padding-bottom: 0;
  }
}
.cs-footer__shop-logo {
  display: block;
  width: 13.5em;
  height: 2.3em;
  min-width: 13.5em;
  max-width: 100%;
  max-height: 100%;
}

.cs-container--footer {
  max-width: none;
}
.cs-container--footer-usps .cs-image-teaser__content {
  margin: 0 !important;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Remove browser's margins, paddings and list style rules
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-footer-links {
  margin: 0;
  padding: 0;
  list-style: none;
}
.cs-footer-links__item {
  margin: 0 0 0.3em;
}
.cs-footer-links a, .cs-footer-links a:visited {
  color: #484848;
  text-decoration: none;
}
.cs-footer-links a:hover, .cs-footer-links a:focus, .cs-footer-links a:active, .cs-footer-links a:visited:hover, .cs-footer-links a:visited:focus {
  color: #484848;
  text-decoration: underline;
}
.cs-footer-links a, .cs-footer-links a:visited {
  display: block;
  padding: 0.5em 0;
  font-size: inherit;
}
@media (min-width: 48em) {
  .cs-footer-links a, .cs-footer-links a:visited {
    padding: 0.35em 0;
    display: inline-block;
  }
}

.cs-footer__item.cs-footer__item--links {
  width: 100%;
}
.cs-footer__item.cs-footer__item--links .cs-footer__section-title {
  font-family: linotype-didot-headline, serif;
  font-style: normal;
  font-size: 2rem;
  text-transform: uppercase;
  padding-bottom: 2rem;
}
.cs-footer__item.cs-footer__item--links .cs-footer__section-title .news {
  color: pink;
  text-transform: lowercase;
}
.cs-footer__item.cs-footer__item--links .cs-footer-links .nav-link {
  font-size: 1.4rem;
}
.cs-footer__item.cs-footer__item--links .footer__delivery_method,
.cs-footer__item.cs-footer__item--links .footer__payment_method {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
}
.cs-footer__item.cs-footer__item--links .footer__delivery_method .footer__delivery_method_item,
.cs-footer__item.cs-footer__item--links .footer__delivery_method .footer__payment_method_item,
.cs-footer__item.cs-footer__item--links .footer__payment_method .footer__delivery_method_item,
.cs-footer__item.cs-footer__item--links .footer__payment_method .footer__payment_method_item {
  margin-right: 1rem;
}
.cs-footer__item.cs-footer__item--links .cs-footer__section.social .cs-footer__section-content {
  display: flex;
}
.cs-footer__item.cs-footer__item--links .cs-footer__section.social .cs-footer__section-content .footer-social-inner {
  filter: grayscale(1);
  margin-right: 1rem;
}
.cs-footer__item.cs-footer__item--links .cs-footer__section.social .cs-footer__section-content h3 {
  padding-left: 0px;
  font-family: linotype-didot-headline, serif;
  font-style: normal;
  font-size: 2rem;
  text-transform: uppercase;
  padding-bottom: 2rem;
}
@media (min-width: 48em) {
  .cs-footer__item.cs-footer__item--links {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: repeat(2, 1fr);
    grid-column-gap: 1rem;
    grid-row-gap: 0px;
  }
  .cs-footer__item.cs-footer__item--links .cs-footer__section--collapsible:nth-child(1) {
    grid-area: 1/1/2/2;
  }
  .cs-footer__item.cs-footer__item--links .cs-footer__section--collapsible:nth-child(2) {
    grid-area: 2/1/3/2;
  }
  .cs-footer__item.cs-footer__item--links .cs-footer__section--collapsible:nth-child(3) {
    grid-area: 1/2/3/3;
  }
  .cs-footer__item.cs-footer__item--links .cs-footer__section--collapsible:nth-child(4) {
    grid-area: 1/3/2/4;
  }
  .cs-footer__item.cs-footer__item--links .cs-footer__section--collapsible:nth-child(5) {
    grid-area: 2/3/3/4;
  }
  .cs-footer__item.cs-footer__item--links .cs-footer__section--collapsible:nth-child(6) {
    grid-area: 1/4/3/5;
  }
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-google-recaptcha {
  margin: 1rem 0;
}
.cs-google-recaptcha__badge--invisible .grecaptcha-badge {
  visibility: hidden;
  height: 0 !important;
  width: 0 !important;
  overflow: hidden;
}
.cs-google-recaptcha__note {
  display: inline-block;
  margin: 0;
  font-size: 1.2rem;
  color: #696969;
}
.cs-google-recaptcha__note a, .cs-google-recaptcha__note a:visited {
  color: #000000;
  text-decoration: none;
}
.cs-google-recaptcha__note a:hover, .cs-google-recaptcha__note a:focus, .cs-google-recaptcha__note a:active, .cs-google-recaptcha__note a:visited:hover, .cs-google-recaptcha__note a:visited:focus {
  color: #666;
  text-decoration: none;
}
.cs-google-recaptcha--newsletter {
  display: none;
  margin: 1rem 0;
}
.cs-google-recaptcha--newsletter .cs-google-recaptcha__note {
  margin: 0;
  font-size: 1.2rem;
  color: #fff;
}
.cs-google-recaptcha--newsletter .cs-google-recaptcha__note a, .cs-google-recaptcha--newsletter .cs-google-recaptcha__note a:visited {
  color: #fff;
  text-decoration: none;
}
.cs-google-recaptcha--newsletter .cs-google-recaptcha__note a:hover, .cs-google-recaptcha--newsletter .cs-google-recaptcha__note a:focus, .cs-google-recaptcha--newsletter .cs-google-recaptcha__note a:active, .cs-google-recaptcha--newsletter .cs-google-recaptcha__note a:visited:hover, .cs-google-recaptcha--newsletter .cs-google-recaptcha__note a:visited:focus {
  color: #fff;
  text-decoration: underline;
}
.cs-google-recaptcha--customer_create {
  margin-top: -2rem;
}
.cs-google-recaptcha--customer_login .g-recaptcha {
  margin-bottom: 0 !important;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Mixins for flexible containers declaration.
 */
/**
 * Defines page container. This mixin makes sure that the content has always equal padding
 * for mobile screens on both size of the device.
 */
/**
 * Negates parent container's padding and sets it own.
 * Somethimes this has to be done to make background even to other containers' content.
 */
/**
 * Defines container wrapper that makes sure contnet doesn't extend above certain width and is always centered.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
 * Variables related to sticky header and topbar on mobile devices.
 * to prevent page jumping when offacnvas (fixed positioned) is opened
 * If you have more elements on top, you have to include their height.
 */
@media (max-width: 63.99em) {
  .cs-container--header {
    padding-left: 0;
    padding-right: 0;
  }
}

/**
 * Styles related to sticky header and topbar on mobile devices.
 * to prevent page jumping when offacnvas (fixed positioned) is opened
 */
@media (max-width: 63.99em) {
  .navigation-offcanvas-open .page-wrapper.no-scroll-child {
    padding-top: 8.3rem;
  }
}
@media (max-width: 47.99em) {
  .navigation-offcanvas-open .page-wrapper.no-scroll-child {
    padding-top: 5rem;
  }
}

@media (max-width: 63.99em) {
  .cs-container--header {
    position: sticky;
    z-index: 800;
    top: 0;
    /**
     * Fixed positioning required to work with offcanvas elements.
     * Also, as a fallback for IE which does not support sticky.
     */
  }
  .navigation-offcanvas-open.no-scroll .cs-container--header,
.cs-container--header .ie11 {
    position: fixed;
  }
}
@media (max-width: 47.99em) {
  .cs-container--header {
    top: 0;
  }
}

.cs-header {
  font-size: 1rem;
  height: 5rem;
}
@media (min-width: 48em) {
  .cs-header {
    height: 8.3rem;
  }
}
@media (min-width: 80em) {
  .cs-header {
    height: 11rem;
  }
}
.cs-header__content {
  height: 5rem;
  z-index: 300;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  background-color: #fff;
  position: relative;
  max-width: 100vw;
}
@media (min-width: 48em) {
  .cs-header__content {
    height: 8.3rem;
  }
}
@media (min-width: 64em) {
  .cs-header__content {
    border-bottom: 1px solid #f4f4f4;
    flex-wrap: nowrap;
  }
}
@media (min-width: 80em) {
  .cs-header__content {
    height: 11rem;
  }
}
.cs-header__offcanvas-toggle {
  height: 100%;
  flex: 0 1 4rem;
}
@media (min-width: 64em) {
  .cs-header__offcanvas-toggle {
    display: none;
  }
}
.cs-header__logo {
  display: flex;
  flex: 1 1;
  margin-bottom: 0;
  height: 100%;
  padding: 0.7rem 0 0.7rem 0.7rem;
}
@media (min-width: 23.125em) {
  .cs-header__logo {
    padding: 0.7rem 0 0.7rem 1.5rem;
  }
}
@media (min-width: 48em) {
  .cs-header__logo {
    flex: 0 1 auto;
    padding: 0;
  }
}
.page-print .cs-header__logo {
  max-width: 180rem;
  width: 100%;
  margin: 0 auto;
  position: relative;
  height: auto;
  padding: 2rem 0;
}
.page-print .cs-header__logo:after {
  content: "";
  display: table;
  clear: both;
}
.cs-header__search {
  display: none;
  width: 100%;
  background-color: #fff;
  padding: 1rem;
  position: absolute;
  left: 0;
  right: 0;
  z-index: 300;
  top: 100%;
}
@media (min-width: 64em) {
  .cs-header__search {
    flex-grow: 1;
    width: auto;
    padding: 0;
    position: initial;
    justify-content: center;
  }
}
.cs-header__search--active {
  display: flex;
}
.cs-header__user-nav {
  display: flex;
  justify-content: flex-end;
  flex: 0 1 30%;
}
.cs-header__back-button {
  border-right: 1px solid #dcdcdc;
  height: 100%;
  display: flex;
  padding: 0 1rem;
  align-items: center;
  justify-content: center;
  min-width: 4rem;
}
@media (min-width: 23.125em) {
  .cs-header__back-button {
    padding: 0 1.5rem;
  }
}
@media (min-width: 48em) {
  .cs-header__back-button {
    display: none;
  }
}
.cs-header__back-button-icon {
  fill: #888;
  height: 2.5rem;
}
@media (max-width: 23.115em) {
  .cs-header__back-button-icon {
    height: 2rem;
  }
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/* Radio and checkbox styling */
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
.cs-header-search {
  width: 100%;
}
@media (min-width: 64em) {
  .cs-header-search {
    width: 100%;
  }
}
.cs-header-search--in-offcanvas {
  position: relative;
}
.cs-header-search__label {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
.cs-header-search__field {
  position: relative;
}
.cs-header-search__field:before, .cs-header-search__field:after {
  content: "";
  position: absolute;
  opacity: 0;
  transition: opacity 0.3s;
  left: -0.5rem;
  right: -0.5rem;
  background: #fff;
}
.cs-header-search__field:before {
  content: "";
  position: absolute;
  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.17);
  top: -0.5rem;
  bottom: -0.5rem;
  border-radius: 5px 5px 0 0;
}
.cs-header-search__field:after {
  content: "";
  position: absolute;
  bottom: -1rem;
  top: 100%;
  z-index: 209;
}
.active-popup .cs-header-search__field:before, .active-popup .cs-header-search__field:after {
  opacity: 1;
}
.cs-header-search__input {
  font-size: 1em;
  line-height: 1.275em;
  padding: 0.75em 1em;
  color: #212121;
  background: #fff;
  border-radius: 0px;
  border: 1px solid #dcdcdc;
  box-shadow: none;
  transition: border-color 0.5s;
  margin: 0px;
  width: 100%;
  background-clip: padding-box;
  font-family: inherit;
  font-size: 1.6rem;
  position: relative;
  z-index: 210;
  margin: 0;
  -webkit-appearance: none;
}
.cs-header-search__input:hover:not([disabled]), .cs-header-search__input:focus:not([disabled]) {
  border: 1px solid #000000;
  box-shadow: none;
}
.cs-header-search__input::-moz-placeholder {
  opacity: 1;
  color: #888;
}
.cs-header-search__input::placeholder {
  opacity: 1;
  color: #888;
}
.cs-header-search__input[disabled] {
  opacity: 0.65;
}
@media (min-width: 30em) {
  .cs-header-search__input {
    font-size: 1.4rem;
  }
}
.ajax-loading .cs-header-search__input:focus + .cs-header-search__action .cs-header-search__button-container--search {
  transform: translateX(100%);
  opacity: 0;
}
.ajax-loading .cs-header-search__input:focus + .cs-header-search__action .cs-header-search__button-container--loader {
  transform: translateX(0);
  opacity: 1;
}
.cs-header-search__action {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 220;
  overflow: hidden;
  display: flex;
  justify-content: space-between;
  align-items: center;
  border-top-right-radius: 0px;
  border-bottom-right-radius: 0px;
}
.cs-header-search__close-icon {
  width: 1.5rem;
  height: 1.5rem;
  margin-right: 1rem;
  display: block;
  opacity: 0.6;
  transition: opacity 0.3s linear;
}
.cs-header-search__close-icon:hover {
  cursor: pointer;
  opacity: 1;
}
.cs-header-search__close-icon path {
  fill: #888;
}
.cs-header-search__close-label {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
.cs-header-search__button-container {
  position: absolute;
  top: 0;
  left: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
  transition: transform 0.5s cubic-bezier(0, 0.66, 0.32, 0.99), opacity 0.15s linear;
}
.cs-header-search__button-container--search {
  transform: translateX(0);
}
.cs-header-search__button-container--loader {
  transform: translateX(100%);
}
.cs-header-search__button {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
  width: 5rem;
  height: 100%;
  overflow: hidden;
  position: relative;
  border-radius: 0 !important;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  transform: translateX(0.7rem);
}
.cs-header-search__button::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
.cs-header-search__button, .cs-header-search__button:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #000000;
}
.cs-header-search__button *, .cs-header-search__button:visited * {
  color: #fff;
  fill: #fff;
}
.cs-header-search__button:hover:not([disabled]), .cs-header-search__button:focus:not([disabled]), .cs-header-search__button:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #666;
}
.cs-header-search__button:hover:not([disabled]) *, .cs-header-search__button:focus:not([disabled]) *, .cs-header-search__button:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
.cs-header-search__button[disabled] {
  opacity: 0.65;
  cursor: auto;
}
.cs-header-search__button[disabled] {
  opacity: 1;
}
.cs-header-search__button-icon {
  transform: translateX(-0.3rem);
}
.cs-header-search__button-icon--search {
  width: 2rem;
  height: 2rem;
}
.cs-header-search__button-icon--search path {
  fill: #fff;
}
.cs-header-search__button-icon--loader {
  stroke: #fff;
  width: 3.2rem;
  height: 3.2rem;
}
.cs-header-search__button-label {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
.cs-header-search__autocomplete {
  width: calc(100% - 1rem);
  left: 0.5rem;
  right: 0.5rem;
}
@media (max-width: 47.99em) {
  .cs-header-search__autocomplete {
    max-height: calc(100vh - 5rem - 1.275em - 7rem);
    overflow-y: auto;
  }
}
@media (min-width: 64em) {
  .cs-header-search__autocomplete {
    margin-top: 0.5rem;
    left: 50%;
    transform: translateX(-50%);
    box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.17);
    border: 0;
    width: 100%;
  }
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
.cs-header-user-nav {
  list-style: none;
  margin: 0;
  padding: 0 1rem;
  height: 100%;
}
@media (max-width: 23.115em) {
  .cs-header-user-nav {
    padding: 0 0.7rem;
  }
}
.cs-header-user-nav__item {
  margin-bottom: 0;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  flex: 1 1 25%;
}
.cs-header-user-nav__link {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  flex-direction: column;
  position: relative;
  width: 100%;
  padding: 1rem;
}
@media (max-width: 48em) {
  .cs-header-user-nav__link {
    align-items: center;
  }
}
.cs-header-user-nav__link:hover {
  text-decoration: none;
}
.cs-header-user-nav__link:hover .cs-header-user-nav__icon path {
  fill: #000000;
}
.cs-header-user-nav__link:hover .cs-header-user-nav__label {
  color: #696969;
}
.cs-header-user-nav__link--search:hover {
  cursor: pointer;
}
.cs-header-user-nav__icon-wrapper {
  position: relative;
}
.cs-header-user-nav__icon {
  width: 1.6rem;
  height: 1.6rem;
  display: block;
  margin: 0 auto;
}
.cs-header-user-nav__icon path {
  fill: #484848;
}
.cs-header-user-nav__label {
  text-transform: uppercase;
  font-size: 1rem;
  font-weight: 300;
  margin-top: 0.3rem;
  color: #696969;
  text-decoration: none;
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
@media (min-width: 48em) {
  .cs-header-user-nav__label {
    clip: auto;
    -webkit-clip-path: none;
            clip-path: none;
    height: auto;
    margin: 0;
    overflow: visible;
    padding: 0;
    position: static;
    width: auto;
    white-space: normal;
  }
}
.cs-header-user-nav__qty-counter {
  display: inline-flex;
  background-color: #000000;
  color: #fff;
  border: 0;
  border-radius: 0.2rem;
  padding: 0 0.6rem;
  position: relative;
  justify-content: center;
  align-items: center;
  font-size: 1rem;
  line-height: 100%;
  font-weight: 700;
  height: 1.8em;
  background-clip: padding-box;
  position: absolute;
  right: -0.5rem;
  top: -0.5rem;
  transition: opacity 0.3s;
}
@media (min-width: 48em) {
  .cs-header-user-nav__qty-counter {
    right: -1rem;
  }
}
.cs-header-user-nav__qty-counter--wishlist {
  background-color: #000;
  color: #000;
  transition: top 0.9s cubic-bezier(0.42, 0.31, 0.34, 0.93), left 0.9s cubic-bezier(0.42, 0.31, 0.34, 0.93);
}
.cs-header-user-nav__qty-counter--minicart {
  background-color: #e41f12;
  color: #fff;
  border-radius: 50% !important;
}
.cs-header-user-nav__qty-counter--compare {
  background-color: #000;
  color: #000;
}
.cs-header-user-nav__qty-counter--have-items {
  opacity: 1;
}
.cs-header-user-nav__qty-counter--wishlist-cloned {
  position: fixed;
  z-index: 1200;
  right: auto;
  opacity: 1;
  transition: top 1.2s cubic-bezier(0.42, 0.31, 0.34, 0.93), left 1.2s cubic-bezier(0.42, 0.31, 0.34, 0.93);
}
.cs-header-user-nav__qty-counter--wishlist-animating {
  animation: move-qty-badge 1.2s cubic-bezier(0.42, 0.31, 0.34, 0.93);
  top: 0.5rem;
}
@media (min-width: 48em) {
  .cs-header-user-nav__qty-counter--wishlist-animating {
    top: 1.3rem;
  }
}
@media (min-width: 64em) {
  .cs-header-user-nav__qty-counter--wishlist-animating {
    top: 3.5rem;
  }
}
@keyframes move-qty-badge {
  0% {
    opacity: 1;
  }
  15% {
    transform: scale(1);
  }
  85% {
    opacity: 1;
    transform: scale(1.5);
  }
  95% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: scale(1);
  }
}
.cs-header-user-nav__qty-counter-span {
  min-width: 1ch;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
.cs-headline {
  font-size: 1rem;
  clear: both;
  padding: 2em 0;
  margin: 2em 0;
  margin: 0;
  padding: 0;
  margin: 0 0 3rem;
}
@media (min-width: 48em) {
  .cs-headline {
    margin: 0 0 4rem;
  }
}
.cs-headline--skip-spacing {
  margin: 0;
}
.cs-headline__title {
  display: block;
  text-align: center;
  align-items: center;
  margin: 0;
  font-size: 2.6em;
  font-weight: 700;
  color: #212121;
  text-transform: uppercase;
  font-family: linotype-didot-headline, serif;
  font-style: normal;
}
@media (min-width: 48em) {
  .cs-headline__title {
    display: flex;
  }
}
.cs-headline__title:before, .cs-headline__title:after {
  content: "";
  display: none;
  height: 1px;
  flex-grow: 1;
  background-color: #dcdcdc;
}
@media (min-width: 48em) {
  .cs-headline__title:before, .cs-headline__title:after {
    display: flex;
  }
}
.cs-headline__title:before {
  margin-right: 0.6em;
}
.cs-headline__title:after {
  margin-left: 0.6em;
}
.cs-headline__subtitle {
  color: #888;
  font-size: 1.3em;
  font-weight: 400;
  text-transform: none;
  margin: 0;
  display: none;
  text-align: center;
}
@media (min-width: 48em) {
  .cs-headline__subtitle {
    display: block;
  }
}
.lazyload,
.lazyloading,
.swiper-lazy {
  opacity: 0.001;
}

.lazyload[data-bg] {
  opacity: 1;
}

.lazyloaded,
.swiper-lazy-loaded {
  opacity: 1;
  transition: opacity 0.2s;
}

.cs-image-teaser__image.lazyload:not(.lazyloaded) {
  height: 1px;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-links-block-addto {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  width: 100%;
}
.page-product-bundle .cs-links-block-addto {
  margin-top: 1rem;
}
.cs-product-tile__addon .cs-links-block-addto {
  padding-top: 0;
}
.cs-links-block-addto--centered {
  justify-content: center;
}
.cs-links-block-addto__item {
  margin: 0;
}
.cs-links-block-addto__item + .cs-links-block-addto__item {
  margin-left: 0.5rem;
}
.cs-product-tile--list .cs-links-block-addto__item + .cs-links-block-addto__item {
  margin-left: 0;
  margin-top: 0.5rem;
}
.cs-links-block-addto__link {
  display: flex;
  align-items: center;
  font-size: 1.2rem;
  color: #666;
  transition: color 0.15s linear;
}
.cs-links-block-addto__link:hover {
  color: #666;
  text-decoration: none;
}
.cs-links-block-addto__icon {
  width: 1.375em;
  height: 1.375em;
  margin-right: 0.4rem;
}
.cs-links-block-addto__icon path {
  fill: #888;
}
.cs-links-block-addto__icon--wishlist path {
  fill: #e41f12;
}
.cs-links-block-addto__icon--compare path {
  fill: #000000;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
.cs-logo {
  height: 100%;
}
.cs-logo__image {
  height: 100%;
}
.cs-logo__image--desktop {
  display: none;
}
.checkout-index-index .cs-logo__image--desktop {
  display: block;
}
@media (min-width: 48em) {
  .cs-logo__image--desktop {
    display: block;
  }
}
.cs-logo__image--mobile {
  display: block;
}
@media (min-width: 48em) {
  .cs-logo__image--mobile {
    display: none;
  }
}
.checkout-index-index .cs-logo__image--mobile {
  display: none;
}
.cs-logo__text {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
.messages {
  max-width: 180rem;
  margin: 0 auto;
}

.cs-messages__message,
.message {
  margin: 1rem 0;
  padding: 1.2rem 1rem 1rem;
  border-radius: 0px;
  background-repeat: no-repeat;
  background-position: 1.2rem center;
  background-size: 2rem 2rem;
  padding-left: 4.3rem;
}

.cs-messages__message--success,
.message.success {
  background-color: #d5efd7;
  background-image: url("../images/icons/messages/icon-success.svg");
  border: none;
}

.cs-messages__message--notice,
.message.warning {
  background-color: #fdf4ca;
  background-image: url("../images/icons/messages/icon-warning.svg");
  border: none;
}

.cs-messages__message--info,
.message.info,
.message.notice {
  background-color: #fdf4ca;
  background-image: url("../images/icons/messages/icon-info.svg");
  border: none;
}

.cs-messages__message--error,
.message.error {
  background-color: #f8d0ce;
  background-image: url("../images/icons/messages/icon-error.svg");
  border: none;
}

.cs-messages__text,
.message span {
  color: #696969;
  font-size: 1.4rem;
}

.cs-messages--space-top {
  margin-top: 1.5rem;
}
.page.messages .cs-messages {
  position: fixed;
  bottom: 1rem;
  left: 2rem;
  width: 0;
  max-width: min(calc(100vw - 4rem), 50rem);
  z-index: -4;
  opacity: 0;
  overflow: hidden;
}
.cs-messages--active, .cs-messages[data-role=checkout-messages] {
  opacity: 1 !important;
  width: 100% !important;
  z-index: 700 !important;
  overflow: visible !important;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/* Radio and checkbox styling */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
.cs-minicart-product {
  display: flex;
}
.cs-minicart-product__image-container {
  flex-shrink: 0;
  margin-right: 1rem;
}
.cs-minicart-product__image-container .product-image-wrapper {
  z-index: auto;
}
.cs-minicart-product__image {
  max-height: 100%;
  width: auto;
}
.cs-minicart-product__overview {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: baseline;
}
.cs-minicart-product__details {
  width: 100%;
}
.cs-minicart-product__brand-wrapper {
  text-align: left;
}
.cs-minicart-product__brand {
  font-size: 1.2rem;
  color: #888;
}
.cs-minicart-product__name-wrapper {
  flex-basis: 55%;
  padding-bottom: 1.2rem;
  text-align: left;
  font-size: 1.3rem;
  flex-basis: 100% !important;
}
@media (min-width: 30em) {
  .cs-minicart-product__name-wrapper {
    flex-basis: 70%;
  }
}
.cs-minicart-product__name {
  width: 100%;
  padding: 0;
  margin-top: 0;
  font-size: inherit;
  text-decoration: none;
  color: #212121;
  font-weight: 600;
  font-weight: 700;
  font-size: 1.4rem;
}
.cs-minicart-product__name:visited, .cs-minicart-product__name:hover {
  text-decoration: none;
  color: #212121;
}
.cs-minicart-product__item-pricing {
  order: 3;
}
.cs-minicart-product__item-pricing--with-special {
  text-align: left;
}
.cs-minicart-product__item-pricing--with-special .old-price .price {
  font-size: 1.3rem;
  color: #696969;
}
.cs-minicart-product__item-pricing--with-special .cs-minicart-product__price .price {
  color: #000000;
}
.cs-minicart-product__price .price {
  font-size: 1.3rem;
  font-weight: 700;
  color: #212121;
}
.cs-minicart-product__price .price-including-tax,
.cs-minicart-product__price .price-excluding-tax {
  font-size: 1.3rem;
}
.cs-minicart-product__price .price {
  font-weight: 400;
}
.cs-minicart-product__price-label, .cs-minicart-product__options-subtitle {
  display: none;
}
.cs-minicart-product__options-title {
  font-size: 1.2rem;
  color: #484848;
  cursor: pointer;
  font-size: 1.3rem;
  color: #212121;
}
.cs-minicart-product__options-title[aria-expanded=true] > .cs-minicart-product__options-title-svg {
  transform: rotate(180deg);
  vertical-align: initial;
}
.cs-minicart-product__options-title-svg {
  width: 1rem;
  height: 1rem;
  margin-left: 0.5rem;
  transition: transform 0.3s cubic-bezier(0, 0.66, 0.32, 0.99);
  vertical-align: middle;
}
.cs-minicart-product__options-wrapper {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  text-align: left;
  margin-top: -0.4rem;
  flex-basis: 100%;
  padding-bottom: 1.2rem;
}
.cs-minicart-product__options-group {
  margin: 0;
  width: 100%;
  display: flex;
  align-items: center;
}
.cs-minicart-product__options-group--qty {
  margin-top: 0.5rem;
}
.cs-minicart-product__options-wrapper + .cs-minicart-product__options-group--qty {
  margin-top: 1.5rem;
}
.cs-minicart-product__options-content {
  width: 100%;
  padding-top: 0.5rem;
}
.cs-minicart-product__options-label {
  font-size: 1.2rem;
  color: #888;
  font-weight: 400;
  margin-bottom: 0;
  text-align: left;
  padding-right: 0.5rem;
  font-size: 1.1rem;
  font-weight: 700;
  color: #212121;
  text-transform: uppercase;
}
.cs-minicart-product__options-label:after {
  content: ":";
}
.cs-minicart-product__options-value {
  font-size: 1.2rem;
  color: #888;
  margin-bottom: 0;
  width: 100%;
}
.cs-minicart-product__options-value__value {
  display: flex;
  justify-content: space-between;
  width: 100%;
}
.cs-minicart-product__options-value__value .price {
  color: #212121;
}
.cs-minicart-product__actions {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  padding-top: 1.2rem;
}
.cs-minicart-product__action-wrapper {
  margin-left: 1rem;
}
.cs-minicart-product__qty,
.cs-minicart-product .cs-qty-increment {
  display: flex;
  flex: 1 0 9rem;
  flex-wrap: nowrap;
}
.cs-minicart-product__qty-label {
  display: none;
}
.cs-minicart-product__qty-input {
  font-size: 1em;
  line-height: 1.275em;
  padding: 0.75em 1em;
  color: #212121;
  background: #fff;
  border-radius: 0px;
  border: 1px solid #dcdcdc;
  box-shadow: none;
  transition: border-color 0.5s;
  margin: 0px;
  width: 100%;
  background-clip: padding-box;
  font-family: inherit;
  padding: 0;
  text-align: center;
  box-sizing: border-box;
  margin-bottom: 0;
  height: 3rem;
  width: 4rem;
  max-width: 4rem;
  font-size: 1.2rem;
}
.cs-minicart-product__qty-input:hover:not([disabled]), .cs-minicart-product__qty-input:focus:not([disabled]) {
  border: 1px solid #000000;
  box-shadow: none;
}
.cs-minicart-product__qty-input::-moz-placeholder {
  opacity: 1;
  color: #888;
}
.cs-minicart-product__qty-input::placeholder {
  opacity: 1;
  color: #888;
}
.cs-minicart-product__qty-input[disabled] {
  opacity: 0.65;
}
.cs-minicart-product__qty-button {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
  padding: 0;
  width: 3rem;
  height: 3rem;
  margin-left: 0.5rem;
}
.cs-minicart-product__qty-button::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
.cs-minicart-product__qty-button, .cs-minicart-product__qty-button:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #000000;
}
.cs-minicart-product__qty-button *, .cs-minicart-product__qty-button:visited * {
  color: #fff;
  fill: #fff;
}
.cs-minicart-product__qty-button:hover:not([disabled]), .cs-minicart-product__qty-button:focus:not([disabled]), .cs-minicart-product__qty-button:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #666;
}
.cs-minicart-product__qty-button:hover:not([disabled]) *, .cs-minicart-product__qty-button:focus:not([disabled]) *, .cs-minicart-product__qty-button:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
.cs-minicart-product__qty-button[disabled] {
  opacity: 0.65;
  cursor: auto;
}
.cs-minicart-product__qty-button-span {
  margin-top: 0;
  z-index: 1;
  font-weight: 700;
  vertical-align: baseline;
  display: inline-block;
  line-height: 1.275em;
  letter-spacing: normal;
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
.cs-minicart-product__qty-button-icon {
  max-width: 1em;
  max-height: 1.4rem;
  z-index: 2;
  height: auto;
  width: 100%;
  position: relative;
  top: 0.1em;
}
.cs-minicart-product__action:hover .cs-minicart-product__options-title-svg *,
.cs-minicart-product__action:hover .cs-minicart-product__action-icon *, .cs-minicart-product__options-title:hover .cs-minicart-product__options-title-svg *,
.cs-minicart-product__options-title:hover .cs-minicart-product__action-icon * {
  fill: #666;
}
.cs-minicart-product__action-icon {
  width: 1.6rem;
  height: 1.6rem;
  width: 2rem;
  height: 2rem;
}
.cs-minicart-product__action-icon *, .cs-minicart-product__options-title-svg * {
  fill: #000000;
}
.cs-minicart-product__action-label {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
.cs-minicart-product__options-title:hover .cs-minicart-product__options-title-svg * {
  fill: #212121;
}
.cs-minicart-product__options-title-svg * {
  fill: #212121;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Remove browser's margins, paddings and list style rules
 */
/***
 * Hide native browser's scrollbar
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* prettier-ignore */
.cs-minicart {
  display: flex;
  flex-flow: column;
  height: 100%;
  justify-content: space-between;
}
.cs-minicart__wrapper {
  display: flex;
  flex: 1 1;
  flex-direction: column;
  min-height: 0;
}
.cs-minicart__content-wrapper {
  max-height: calc(100% - 5.1rem);
  overflow-y: auto;
  overflow-x: hidden;
}
.cs-minicart__close {
  display: inline-block;
  background: none;
  box-sizing: content-box;
  border: 0;
  box-shadow: none;
  line-height: inherit;
  margin: 0;
  padding: 0;
  text-decoration: none;
  text-shadow: none;
  font-weight: 400;
  position: absolute;
  right: -1.5rem;
  width: 5rem;
  height: 5rem;
  top: 50%;
  transform: translateY(-50%);
  cursor: pointer;
  right: 0.5rem;
}
.cs-minicart__close:focus, .cs-minicart__close:active, .cs-minicart__close:hover {
  background: transparent;
  border: none;
  color: inherit;
}
.cs-minicart__close-icon {
  position: relative;
  transform: rotate(45deg);
  width: 100%;
  height: 100%;
  display: inline-block;
}
.cs-minicart__close-icon:before, .cs-minicart__close-icon:after {
  content: "";
  position: absolute;
  top: 50%;
  width: 2rem;
  height: 0.2rem;
  left: auto;
  background-color: #484848;
  transition: transform 0.3s ease-out, opacity 0.15s ease-out, background-color 0.15s linear;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
}
.cs-minicart__close-icon:hover:before, .cs-minicart__close-icon:hover:after {
  background-color: #696969;
}
.cs-minicart__close-icon[aria-expanded=true]:before, .cs-minicart__close-icon[aria-expanded=true]:after {
  background-color: #888;
}
.cs-minicart__close-icon:before, .cs-minicart__close-icon:after {
  right: 1.5rem;
  transform: translate3d(0, -50%, 0) !important;
}
.cs-minicart__close-icon:after {
  transform: translate3d(0, -50%, 0) rotate(90deg) !important;
}
.cs-minicart__close-icon[aria-expanded=true]:before {
  transform: translate3d(0, -50%, 0) rotate(-90deg) !important;
  opacity: 0;
}
.cs-minicart__close-icon[aria-expanded=true]:after {
  transform: translate3d(0, -50%, 0) rotate(0) !important;
}
.cs-minicart__close-text {
  border: 0;
  clip: rect(0, 0, 0, 0);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
}
.cs-minicart__title-wrapper {
  position: relative;
  height: 5.1rem;
  padding: 2rem 0;
  display: flex;
  color: #212121;
  font-weight: 700;
  font-size: 1.8rem;
  margin: 0;
  padding: 1rem 2rem;
  font-size: 2.1rem;
  text-transform: uppercase;
  border-bottom: 1px solid #dcdcdc;
}
.cs-minicart__items-total {
  margin-left: 0.5rem;
  color: #696969;
  font-weight: 400;
}
.cs-minicart__items-total:not(.cs-minicart__items-total--empty):before {
  content: "(";
}
.cs-minicart__items-total:not(.cs-minicart__items-total--empty):after {
  content: ")";
}
.cs-minicart__items-total--empty .count {
  display: none;
}
.cs-minicart__edit-link {
  font-weight: 700;
}
.cs-minicart__edit-link .cs-link__icon {
  padding: 0 0 0 1rem;
}
.cs-minicart__content {
  height: auto !important;
  background-color: #fff;
  position: relative;
}
.cs-minicart__content .load.indicator:before {
  height: unset;
}
.cs-minicart__list {
  padding: 0;
  list-style: none;
  margin-bottom: 0;
}
.cs-minicart__list--scroll {
  height: auto !important;
  max-height: none;
  overflow-y: hidden;
}
.cs-minicart__list-item {
  padding: 1.5rem;
  border-bottom: 1px solid #dcdcdc;
  margin-bottom: 0;
  padding: 1.5rem 2rem;
}
.cs-minicart__list-item:last-child {
  border-bottom: none;
}
.cs-minicart__actions-wrapper {
  padding: 2rem 0;
  position: relative;
  padding: 1.5rem 2rem;
  box-shadow: 0 -5px 5px -5px rgba(0, 0, 0, 0.27);
  min-height: 16.4rem;
  position: static;
  z-index: 1;
}
.cs-minicart__actions-wrapper:has(.cs-minicart__empty) {
  box-shadow: none;
}
.cs-minicart__actions {
  margin-top: 1rem;
}
.cs-minicart__actions:first-child {
  margin-top: 0;
}
.cs-minicart__empty {
  padding: 2rem 0;
  display: inline-block;
  font-size: 1.4rem;
  text-align: center;
  position: absolute;
  width: 100%;
  top: 5.1rem;
  left: 0;
}
.cs-minicart__subtotal {
  font-weight: 700;
  font-size: 1.5rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 1.2rem;
}
.cs-minicart__subtotal-price .price {
  font-weight: 700;
  font-size: 1.5rem !important;
  font-size: 2.1rem !important;
}
.cs-minicart__button-checkout {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
  width: 100%;
}
.cs-minicart__button-checkout:hover, .cs-minicart__button-checkout:focus, .cs-minicart__button-checkout:active {
  background-color: #000000 !important;
}
.cs-minicart__button-checkout:before, .cs-minicart__button-checkout:after {
  content: "";
  position: absolute;
  top: -1px;
  bottom: -1px;
  right: -1px;
}
.cs-minicart__button-checkout:before {
  width: 3.4em;
  border-radius: 0 0px 0px 0;
  z-index: -1;
  background: linear-gradient(0deg, transparent 0%, transparent 0%, #666 0%, #666 100%);
}
.cs-minicart__button-checkout:after {
  width: 3em;
  min-width: auto;
  background-color: #666;
  transition: width 0.25s linear;
  z-index: -2;
  border-radius: 0px;
}
.cs-minicart__button-checkout:hover:after {
  width: calc(100% + 2px);
}
.cs-minicart__button-checkout::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
.cs-minicart__button-checkout, .cs-minicart__button-checkout:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #000000;
}
.cs-minicart__button-checkout *, .cs-minicart__button-checkout:visited * {
  color: #fff;
  fill: #fff;
}
.cs-minicart__button-checkout:hover:not([disabled]), .cs-minicart__button-checkout:focus:not([disabled]), .cs-minicart__button-checkout:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #666;
}
.cs-minicart__button-checkout:hover:not([disabled]) *, .cs-minicart__button-checkout:focus:not([disabled]) *, .cs-minicart__button-checkout:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
.cs-minicart__button-checkout[disabled] {
  opacity: 0.65;
  cursor: auto;
}
.cs-minicart__button-checkout-span {
  margin-top: 0;
  z-index: 1;
  font-weight: 700;
  vertical-align: baseline;
  display: inline-block;
  line-height: 1.275em;
  letter-spacing: normal;
  padding-left: 0;
  padding-right: 3.75em;
  /* stylelint-disable-next-line */
}
.cs-minicart__button-checkout-icon {
  max-width: 1em;
  max-height: 1.4rem;
  z-index: 2;
  height: auto;
  width: 100%;
  position: absolute;
  top: 50%;
  transform: translate3d(0, -50%, 0);
  margin-right: 0;
  right: 0.75em;
  /* stylelint-disable-next-line */
}
.cs-minicart__button-viewcart {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
  width: 100%;
}
.cs-minicart__button-viewcart::before, .cs-minicart__button-viewcart::after {
  content: none;
}
.cs-minicart__button-viewcart::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
.cs-minicart__button-viewcart, .cs-minicart__button-viewcart:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid #000000;
  color: #000000;
  background-color: #fff;
}
.cs-minicart__button-viewcart *, .cs-minicart__button-viewcart:visited * {
  color: #000000;
  fill: #000000;
}
.cs-minicart__button-viewcart:hover:not([disabled]), .cs-minicart__button-viewcart:focus:not([disabled]), .cs-minicart__button-viewcart:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid #666;
  color: #fff;
  background-color: #666;
}
.cs-minicart__button-viewcart:hover:not([disabled]) *, .cs-minicart__button-viewcart:focus:not([disabled]) *, .cs-minicart__button-viewcart:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
.cs-minicart__button-viewcart[disabled] {
  opacity: 0.65;
  cursor: auto;
}
.cs-minicart__button-viewcart-span {
  margin-top: 0;
  z-index: 1;
  font-weight: 700;
  vertical-align: baseline;
  display: inline-block;
  line-height: 1.275em;
  letter-spacing: normal;
  padding-left: 0;
  padding-right: 3.75em;
  /* stylelint-disable-next-line */
}
.cs-minicart__button-viewcart-icon {
  max-width: 1em;
  max-height: 1.4rem;
  z-index: 2;
  height: auto;
  width: 100%;
  position: absolute;
  top: 50%;
  transform: translate3d(0, -50%, 0);
  margin-right: 0;
  right: 0.75em;
  /* stylelint-disable-next-line */
}
.cs-minicart__button-carousel {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
}
.cs-minicart__button-carousel-wrapper {
  display: flex;
  justify-content: center;
  padding-top: 3rem;
  margin: 3rem 0;
  border-top: 1px solid #dcdcdc;
}
.cs-minicart__button-carousel::before, .cs-minicart__button-carousel::after {
  content: none;
}
.cs-minicart__button-carousel::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
.cs-minicart__button-carousel, .cs-minicart__button-carousel:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid #000000;
  color: #000000;
  background-color: #fff;
}
.cs-minicart__button-carousel *, .cs-minicart__button-carousel:visited * {
  color: #000000;
  fill: #000000;
}
.cs-minicart__button-carousel:hover:not([disabled]), .cs-minicart__button-carousel:focus:not([disabled]), .cs-minicart__button-carousel:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid #666;
  color: #fff;
  background-color: #666;
}
.cs-minicart__button-carousel:hover:not([disabled]) *, .cs-minicart__button-carousel:focus:not([disabled]) *, .cs-minicart__button-carousel:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
.cs-minicart__button-carousel[disabled] {
  opacity: 0.65;
  cursor: auto;
}
.cs-minicart__button-carousel-span {
  margin-top: 0;
  z-index: 1;
  font-weight: 700;
  vertical-align: baseline;
  display: inline-block;
  line-height: 1.275em;
  letter-spacing: normal;
  padding-left: 0;
  padding-right: 3.75em;
  /* stylelint-disable-next-line */
}
.cs-minicart__button-carousel-icon {
  max-width: 1em;
  max-height: 1.4rem;
  z-index: 2;
  height: auto;
  width: 100%;
  position: absolute;
  top: 50%;
  transform: translate3d(0, -50%, 0);
  margin-right: 0;
  right: 0.75em;
  /* stylelint-disable-next-line */
}
.cs-minicart__messages {
  padding: 0 2rem;
}
.cs-minicart-offcanvas__wrapper {
  padding: 0;
  height: 100%;
}

/* prettier-ignore */
.cs-minicart__carousel {
  position: relative;
  z-index: 10;
}
@media screen and (max-width: 79.99em) and (max-height: 900px) {
  .cs-minicart__carousel {
    max-width: 60rem;
    margin: 0 auto;
  }
}
.cs-minicart__carousel-container {
  opacity: 0;
  transition: opacity 0.3s ease-in;
  background: #fff;
}
.cs-minicart__carousel-wrapper--ready .cs-minicart__carousel-container {
  opacity: 1;
}
.cs-minicart__carousel-wrapper {
  display: none;
  visibility: hidden;
  pointer-events: none;
  top: 50%;
  right: calc(40rem + 2rem);
  transform: translateY(-50%);
  width: calc(100vw - (40rem + (2 * 2rem)));
  max-width: 120rem;
  padding: 0;
  margin: 0;
  background: transparent;
}
.cs-minicart__carousel-wrapper--loading, .cs-minicart__carousel-wrapper--ready {
  visibility: visible;
  pointer-events: auto;
}
.drawer--visible .cs-minicart__carousel-wrapper {
  position: absolute;
}

@media (min-width: 64em) {
  .minicart-offcanvas-open .cs-minicart__carousel-wrapper {
    display: block;
  }
}
@media (min-width: 80em) {
  .cs-minicart__carousel-wrapper {
    right: calc(40rem + (2 * 2rem));
    width: calc(100vw - (40rem + (4 * 2rem)));
  }
}
.cs-minicart__carousel-wrapper .cs-headline {
  margin: 0 0 2rem;
  padding: 2rem 0 0;
}
.cs-minicart__carousel-wrapper .cs-headline__title {
  font-family: "proxima-nova", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Oxygen, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  font-size: 1.8rem;
  line-height: 1.1;
  color: #212121;
  font-weight: 700;
  text-transform: uppercase;
  margin: 1rem 0 2rem;
}
.cs-minicart__carousel-spinner {
  opacity: 0;
  position: absolute;
  top: 50%;
  left: 50%;
  width: 11rem;
  height: 11rem;
  padding: 2rem 0;
  transform: translate3d(-50%, -50%, 0);
  transition: opacity 0.3s ease-in;
}
.cs-minicart__carousel-wrapper--loading .cs-minicart__carousel-spinner {
  opacity: 1;
  z-index: 10;
}
.cs-minicart__carousel .cs-products-carousel {
  --gap: 0.8rem;
  --base-size: calc(100% - 0.8rem);
  --size: var(--base-size);
  /**
   * class-based columns config relates to classnames, like '--items-in-row-4'
   * which are added to elements, depending on the CC Components configuration.
   */
  --size: calc(
      var(--base-size) /
          2 -
          1 *
          var(--gap) /
          2
  );
  /*  container padding fix  */
  margin: 0;
  background: #fff;
}
@media (min-width: 114.375em) {
  .cs-minicart__carousel .cs-products-carousel.cs-minicart__carousel .cs-products-carousel--container-width {
    --base-size: calc(180rem - 0.8rem);
  }
  .cs-minicart__carousel .cs-products-carousel.cs-minicart__carousel .cs-products-carousel--use-whole-screen:not(.cs-minicart__carousel .cs-products-carousel--full-width-slider) {
    --base-size: 100%;
    max-width: 100%;
  }
  .cs-minicart__carousel .cs-products-carousel.cs-minicart__carousel .cs-products-carousel--use-whole-screen:not(.cs-minicart__carousel .cs-products-carousel--full-width-slider) .cs-minicart__carousel .cs-products-carousel__slides {
    scroll-snap-type: x proximity;
    padding-left: calc((100% - 180rem) / 2);
    padding-right: calc((100% - 180rem) / 2);
    scroll-padding-left: calc((100% - 180rem) / 2);
    scroll-padding-right: calc((100% - 180rem) / 2);
    scroll-margin-left: calc((100vw - 180rem) / 2);
    scroll-margin-right: calc((100vw - 180rem) / 2);
  }
}
@media (hover: hover) and (pointer: fine) and (min-width: 114.375em) {
  .cs-minicart__carousel .cs-products-carousel.cs-minicart__carousel .cs-products-carousel--container-width {
    --base-size: 180rem;
  }
}
@media (min-width: 48em) {
  .cs-minicart__carousel .cs-products-carousel {
    --gap: 0.8rem;
  }
}
@media (min-width: 23.125em) {
  .cs-minicart__carousel .cs-products-carousel {
    --size: calc(
        var(--base-size) / 2 - ((
                        1 * var(--gap)
                    ) / 2)
    );
  }
}
@media (min-width: 30em) {
  .cs-minicart__carousel .cs-products-carousel {
    --size: calc(
        var(--base-size) / 2 - ((
                        1 * var(--gap)
                    ) / 2)
    );
  }
}
@media (min-width: 48em) {
  .cs-minicart__carousel .cs-products-carousel {
    --size: calc(
        var(--base-size) / 2 - ((
                        1 * var(--gap)
                    ) / 2)
    );
  }
}
@media (min-width: 64em) {
  .cs-minicart__carousel .cs-products-carousel {
    --size: calc(
        var(--base-size) / 3 - ((
                        2 * var(--gap)
                    ) / 3)
    );
  }
}
@media (min-width: 80em) {
  .cs-minicart__carousel .cs-products-carousel {
    --size: calc(
        var(--base-size) / 3 - ((
                        2 * var(--gap)
                    ) / 3)
    );
  }
}
@media (min-width: 90em) {
  .cs-minicart__carousel .cs-products-carousel {
    --size: calc(
        var(--base-size) / 4 - ((
                        3 * var(--gap)
                    ) / 4)
    );
  }
}
@media (min-width: 120em) {
  .cs-minicart__carousel .cs-products-carousel {
    --size: calc(
        var(--base-size) / 4 - ((
                        3 * var(--gap)
                    ) / 4)
    );
  }
}
@media (max-width: 114.3125em) {
  .cs-minicart__carousel .cs-products-carousel.cs-minicart__carousel .cs-products-carousel--container-width .cs-minicart__carousel .cs-products-carousel__slides {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    scroll-padding-left: 1.5rem;
    scroll-padding-right: 1.5rem;
  }
}
@media (prefers-reduced-motion: no-preference) {
  .cs-minicart__carousel .cs-products-carousel .cs-minicart__carousel .cs-products-carousel__slides {
    scroll-behavior: smooth;
  }
}
.cs-minicart__carousel .cs-products-carousel .cs-minicart__carousel .cs-products-carousel__slides-wrapper {
  position: relative;
}
.cs-minicart__carousel .cs-products-carousel .cs-minicart__carousel .cs-products-carousel__slides {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex: 0 0 100%;
  gap: 0;
  flex-wrap: nowrap;
  padding: var(--gap) 0;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-width: thin;
}
@supports (scroll-behavior: smooth) {
  .cs-minicart__carousel .cs-products-carousel .cs-minicart__carousel .cs-products-carousel__slides {
    scroll-snap-type: x mandatory;
  }
}
@media (min-width: 48em) {
  .cs-minicart__carousel .cs-products-carousel .cs-minicart__carousel .cs-products-carousel__slides {
    overflow: -moz-scrollbars-none;
    scrollbar-width: none;
  }
  .cs-minicart__carousel .cs-products-carousel .cs-minicart__carousel .cs-products-carousel__slides::-webkit-scrollbar {
    display: none;
    width: 0;
    height: 0;
    background: transparent;
  }
  .cs-minicart__carousel .cs-products-carousel .cs-minicart__carousel .cs-products-carousel__slides::-webkit-scrollbar-thumb {
    background: transparent;
    width: 0;
    height: 0;
  }
}
.cs-minicart__carousel .cs-products-carousel .cs-minicart__carousel .cs-products-carousel__slide {
  margin: 0;
  padding: 0;
  list-style: none;
  display: inline-block;
  flex: 0 0 var(--size);
  margin-right: var(--gap);
  scroll-snap-align: start;
  min-width: 0;
}
.cs-minicart__carousel .cs-products-carousel .cs-minicart__carousel .cs-products-carousel__slide:last-of-type {
  margin-right: 0;
}
.cs-minicart__carousel .cs-products-carousel .cs-minicart__carousel .cs-products-carousel__image {
  display: block;
}

.minicart-wrapper .ui-dialog {
  display: block !important;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable no-descending-specificity */
.modal-slide.confirm .modal-inner-wrap,
.modal-popup.confirm .modal-inner-wrap,
.modal-custom.confirm .modal-inner-wrap {
  max-width: 50rem;
}
.modal-slide .modal-inner-wrap,
.modal-popup .modal-inner-wrap,
.modal-custom .modal-inner-wrap {
  background: #fff;
  box-shadow: 1px 3px 3rem 0 rgba(33, 33, 33, 0.28);
  border-radius: 0;
  border: none;
}
.modal-slide .modal-content,
.modal-popup .modal-content,
.modal-custom .modal-content {
  padding-top: 2rem;
  padding-bottom: 2rem;
  font-size: 1.4rem;
}
.modal-slide .modal-header,
.modal-popup .modal-header,
.modal-custom .modal-header {
  padding: 0;
  margin: 0;
}
.modal-slide .action-close,
.modal-popup .action-close,
.modal-custom .action-close {
  background: none;
  border: none;
  position: absolute;
  right: 0;
  top: 0;
  margin: 1.5rem;
  background-image: url("../images/icons/close.svg");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 1rem 1rem;
  width: 3rem;
  height: 3rem;
  z-index: 1;
}
.modal-slide .action-close span,
.modal-popup .action-close span,
.modal-custom .action-close span {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
.modal-slide .action-close:before,
.modal-popup .action-close:before,
.modal-custom .action-close:before {
  content: none;
}
.modal-slide .modal-footer,
.modal-popup .modal-footer,
.modal-custom .modal-footer {
  padding: 2rem;
  border-top: 1px solid #dcdcdc;
  display: flex;
  justify-content: space-between;
}
@media (max-width: 29.99em) {
  .modal-slide .modal-footer,
.modal-popup .modal-footer,
.modal-custom .modal-footer {
    flex-wrap: wrap;
  }
}
.modal-slide .modal-footer .action-primary,
.modal-slide .modal-footer .primary,
.modal-popup .modal-footer .action-primary,
.modal-popup .modal-footer .primary,
.modal-custom .modal-footer .action-primary,
.modal-custom .modal-footer .primary {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
  min-width: 12rem;
}
.modal-slide .modal-footer .action-primary::-moz-focus-inner,
.modal-slide .modal-footer .primary::-moz-focus-inner,
.modal-popup .modal-footer .action-primary::-moz-focus-inner,
.modal-popup .modal-footer .primary::-moz-focus-inner,
.modal-custom .modal-footer .action-primary::-moz-focus-inner,
.modal-custom .modal-footer .primary::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
.modal-slide .modal-footer .action-primary, .modal-slide .modal-footer .action-primary:visited,
.modal-slide .modal-footer .primary,
.modal-slide .modal-footer .primary:visited,
.modal-popup .modal-footer .action-primary,
.modal-popup .modal-footer .action-primary:visited,
.modal-popup .modal-footer .primary,
.modal-popup .modal-footer .primary:visited,
.modal-custom .modal-footer .action-primary,
.modal-custom .modal-footer .action-primary:visited,
.modal-custom .modal-footer .primary,
.modal-custom .modal-footer .primary:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #000000;
}
.modal-slide .modal-footer .action-primary *, .modal-slide .modal-footer .action-primary:visited *,
.modal-slide .modal-footer .primary *,
.modal-slide .modal-footer .primary:visited *,
.modal-popup .modal-footer .action-primary *,
.modal-popup .modal-footer .action-primary:visited *,
.modal-popup .modal-footer .primary *,
.modal-popup .modal-footer .primary:visited *,
.modal-custom .modal-footer .action-primary *,
.modal-custom .modal-footer .action-primary:visited *,
.modal-custom .modal-footer .primary *,
.modal-custom .modal-footer .primary:visited * {
  color: #fff;
  fill: #fff;
}
.modal-slide .modal-footer .action-primary:hover:not([disabled]), .modal-slide .modal-footer .action-primary:focus:not([disabled]), .modal-slide .modal-footer .action-primary:active:not([disabled]),
.modal-slide .modal-footer .primary:hover:not([disabled]),
.modal-slide .modal-footer .primary:focus:not([disabled]),
.modal-slide .modal-footer .primary:active:not([disabled]),
.modal-popup .modal-footer .action-primary:hover:not([disabled]),
.modal-popup .modal-footer .action-primary:focus:not([disabled]),
.modal-popup .modal-footer .action-primary:active:not([disabled]),
.modal-popup .modal-footer .primary:hover:not([disabled]),
.modal-popup .modal-footer .primary:focus:not([disabled]),
.modal-popup .modal-footer .primary:active:not([disabled]),
.modal-custom .modal-footer .action-primary:hover:not([disabled]),
.modal-custom .modal-footer .action-primary:focus:not([disabled]),
.modal-custom .modal-footer .action-primary:active:not([disabled]),
.modal-custom .modal-footer .primary:hover:not([disabled]),
.modal-custom .modal-footer .primary:focus:not([disabled]),
.modal-custom .modal-footer .primary:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #666;
}
.modal-slide .modal-footer .action-primary:hover:not([disabled]) *, .modal-slide .modal-footer .action-primary:focus:not([disabled]) *, .modal-slide .modal-footer .action-primary:active:not([disabled]) *,
.modal-slide .modal-footer .primary:hover:not([disabled]) *,
.modal-slide .modal-footer .primary:focus:not([disabled]) *,
.modal-slide .modal-footer .primary:active:not([disabled]) *,
.modal-popup .modal-footer .action-primary:hover:not([disabled]) *,
.modal-popup .modal-footer .action-primary:focus:not([disabled]) *,
.modal-popup .modal-footer .action-primary:active:not([disabled]) *,
.modal-popup .modal-footer .primary:hover:not([disabled]) *,
.modal-popup .modal-footer .primary:focus:not([disabled]) *,
.modal-popup .modal-footer .primary:active:not([disabled]) *,
.modal-custom .modal-footer .action-primary:hover:not([disabled]) *,
.modal-custom .modal-footer .action-primary:focus:not([disabled]) *,
.modal-custom .modal-footer .action-primary:active:not([disabled]) *,
.modal-custom .modal-footer .primary:hover:not([disabled]) *,
.modal-custom .modal-footer .primary:focus:not([disabled]) *,
.modal-custom .modal-footer .primary:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
.modal-slide .modal-footer .action-primary[disabled],
.modal-slide .modal-footer .primary[disabled],
.modal-popup .modal-footer .action-primary[disabled],
.modal-popup .modal-footer .primary[disabled],
.modal-custom .modal-footer .action-primary[disabled],
.modal-custom .modal-footer .primary[disabled] {
  opacity: 0.65;
  cursor: auto;
}
@media (max-width: 29.99em) {
  .modal-slide .modal-footer .action-primary,
.modal-slide .modal-footer .primary,
.modal-popup .modal-footer .action-primary,
.modal-popup .modal-footer .primary,
.modal-custom .modal-footer .action-primary,
.modal-custom .modal-footer .primary {
    width: 100%;
  }
}
.modal-slide .modal-footer .action-primary span,
.modal-slide .modal-footer .primary span,
.modal-popup .modal-footer .action-primary span,
.modal-popup .modal-footer .primary span,
.modal-custom .modal-footer .action-primary span,
.modal-custom .modal-footer .primary span {
  margin-top: 0;
  z-index: 1;
  font-weight: 700;
  vertical-align: baseline;
  display: inline-block;
  line-height: 1.275em;
  letter-spacing: normal;
}
.modal-slide .modal-footer .action-secondary,
.modal-slide .modal-footer .secondary,
.modal-popup .modal-footer .action-secondary,
.modal-popup .modal-footer .secondary,
.modal-custom .modal-footer .action-secondary,
.modal-custom .modal-footer .secondary {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
  min-width: 12rem;
}
.modal-slide .modal-footer .action-secondary::-moz-focus-inner,
.modal-slide .modal-footer .secondary::-moz-focus-inner,
.modal-popup .modal-footer .action-secondary::-moz-focus-inner,
.modal-popup .modal-footer .secondary::-moz-focus-inner,
.modal-custom .modal-footer .action-secondary::-moz-focus-inner,
.modal-custom .modal-footer .secondary::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
.modal-slide .modal-footer .action-secondary, .modal-slide .modal-footer .action-secondary:visited,
.modal-slide .modal-footer .secondary,
.modal-slide .modal-footer .secondary:visited,
.modal-popup .modal-footer .action-secondary,
.modal-popup .modal-footer .action-secondary:visited,
.modal-popup .modal-footer .secondary,
.modal-popup .modal-footer .secondary:visited,
.modal-custom .modal-footer .action-secondary,
.modal-custom .modal-footer .action-secondary:visited,
.modal-custom .modal-footer .secondary,
.modal-custom .modal-footer .secondary:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid #000000;
  color: #000000;
  background-color: #fff;
}
.modal-slide .modal-footer .action-secondary *, .modal-slide .modal-footer .action-secondary:visited *,
.modal-slide .modal-footer .secondary *,
.modal-slide .modal-footer .secondary:visited *,
.modal-popup .modal-footer .action-secondary *,
.modal-popup .modal-footer .action-secondary:visited *,
.modal-popup .modal-footer .secondary *,
.modal-popup .modal-footer .secondary:visited *,
.modal-custom .modal-footer .action-secondary *,
.modal-custom .modal-footer .action-secondary:visited *,
.modal-custom .modal-footer .secondary *,
.modal-custom .modal-footer .secondary:visited * {
  color: #000000;
  fill: #000000;
}
.modal-slide .modal-footer .action-secondary:hover:not([disabled]), .modal-slide .modal-footer .action-secondary:focus:not([disabled]), .modal-slide .modal-footer .action-secondary:active:not([disabled]),
.modal-slide .modal-footer .secondary:hover:not([disabled]),
.modal-slide .modal-footer .secondary:focus:not([disabled]),
.modal-slide .modal-footer .secondary:active:not([disabled]),
.modal-popup .modal-footer .action-secondary:hover:not([disabled]),
.modal-popup .modal-footer .action-secondary:focus:not([disabled]),
.modal-popup .modal-footer .action-secondary:active:not([disabled]),
.modal-popup .modal-footer .secondary:hover:not([disabled]),
.modal-popup .modal-footer .secondary:focus:not([disabled]),
.modal-popup .modal-footer .secondary:active:not([disabled]),
.modal-custom .modal-footer .action-secondary:hover:not([disabled]),
.modal-custom .modal-footer .action-secondary:focus:not([disabled]),
.modal-custom .modal-footer .action-secondary:active:not([disabled]),
.modal-custom .modal-footer .secondary:hover:not([disabled]),
.modal-custom .modal-footer .secondary:focus:not([disabled]),
.modal-custom .modal-footer .secondary:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid #666;
  color: #fff;
  background-color: #666;
}
.modal-slide .modal-footer .action-secondary:hover:not([disabled]) *, .modal-slide .modal-footer .action-secondary:focus:not([disabled]) *, .modal-slide .modal-footer .action-secondary:active:not([disabled]) *,
.modal-slide .modal-footer .secondary:hover:not([disabled]) *,
.modal-slide .modal-footer .secondary:focus:not([disabled]) *,
.modal-slide .modal-footer .secondary:active:not([disabled]) *,
.modal-popup .modal-footer .action-secondary:hover:not([disabled]) *,
.modal-popup .modal-footer .action-secondary:focus:not([disabled]) *,
.modal-popup .modal-footer .action-secondary:active:not([disabled]) *,
.modal-popup .modal-footer .secondary:hover:not([disabled]) *,
.modal-popup .modal-footer .secondary:focus:not([disabled]) *,
.modal-popup .modal-footer .secondary:active:not([disabled]) *,
.modal-custom .modal-footer .action-secondary:hover:not([disabled]) *,
.modal-custom .modal-footer .action-secondary:focus:not([disabled]) *,
.modal-custom .modal-footer .action-secondary:active:not([disabled]) *,
.modal-custom .modal-footer .secondary:hover:not([disabled]) *,
.modal-custom .modal-footer .secondary:focus:not([disabled]) *,
.modal-custom .modal-footer .secondary:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
.modal-slide .modal-footer .action-secondary[disabled],
.modal-slide .modal-footer .secondary[disabled],
.modal-popup .modal-footer .action-secondary[disabled],
.modal-popup .modal-footer .secondary[disabled],
.modal-custom .modal-footer .action-secondary[disabled],
.modal-custom .modal-footer .secondary[disabled] {
  opacity: 0.65;
  cursor: auto;
}
@media (max-width: 29.99em) {
  .modal-slide .modal-footer .action-secondary,
.modal-slide .modal-footer .secondary,
.modal-popup .modal-footer .action-secondary,
.modal-popup .modal-footer .secondary,
.modal-custom .modal-footer .action-secondary,
.modal-custom .modal-footer .secondary {
    width: 100%;
    margin-bottom: 1.5rem !important;
  }
}
.modal-slide .modal-footer .action-secondary span,
.modal-slide .modal-footer .secondary span,
.modal-popup .modal-footer .action-secondary span,
.modal-popup .modal-footer .secondary span,
.modal-custom .modal-footer .action-secondary span,
.modal-custom .modal-footer .secondary span {
  margin-top: 0;
  z-index: 1;
  font-weight: 700;
  vertical-align: baseline;
  display: inline-block;
  line-height: 1.275em;
  letter-spacing: normal;
}
body.checkout-index-index .modal-slide .modal-footer .action-secondary,
body.checkout-index-index .modal-slide .modal-footer .secondary,
body.checkout-index-index .modal-popup .modal-footer .action-secondary,
body.checkout-index-index .modal-popup .modal-footer .secondary,
body.checkout-index-index .modal-custom .modal-footer .action-secondary,
body.checkout-index-index .modal-custom .modal-footer .secondary {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
  min-width: 12rem;
}
body.checkout-index-index .modal-slide .modal-footer .action-secondary::-moz-focus-inner,
body.checkout-index-index .modal-slide .modal-footer .secondary::-moz-focus-inner,
body.checkout-index-index .modal-popup .modal-footer .action-secondary::-moz-focus-inner,
body.checkout-index-index .modal-popup .modal-footer .secondary::-moz-focus-inner,
body.checkout-index-index .modal-custom .modal-footer .action-secondary::-moz-focus-inner,
body.checkout-index-index .modal-custom .modal-footer .secondary::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
body.checkout-index-index .modal-slide .modal-footer .action-secondary, body.checkout-index-index .modal-slide .modal-footer .action-secondary:visited,
body.checkout-index-index .modal-slide .modal-footer .secondary,
body.checkout-index-index .modal-slide .modal-footer .secondary:visited,
body.checkout-index-index .modal-popup .modal-footer .action-secondary,
body.checkout-index-index .modal-popup .modal-footer .action-secondary:visited,
body.checkout-index-index .modal-popup .modal-footer .secondary,
body.checkout-index-index .modal-popup .modal-footer .secondary:visited,
body.checkout-index-index .modal-custom .modal-footer .action-secondary,
body.checkout-index-index .modal-custom .modal-footer .action-secondary:visited,
body.checkout-index-index .modal-custom .modal-footer .secondary,
body.checkout-index-index .modal-custom .modal-footer .secondary:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid #000000;
  color: #000000;
  background-color: #fff;
}
body.checkout-index-index .modal-slide .modal-footer .action-secondary *, body.checkout-index-index .modal-slide .modal-footer .action-secondary:visited *,
body.checkout-index-index .modal-slide .modal-footer .secondary *,
body.checkout-index-index .modal-slide .modal-footer .secondary:visited *,
body.checkout-index-index .modal-popup .modal-footer .action-secondary *,
body.checkout-index-index .modal-popup .modal-footer .action-secondary:visited *,
body.checkout-index-index .modal-popup .modal-footer .secondary *,
body.checkout-index-index .modal-popup .modal-footer .secondary:visited *,
body.checkout-index-index .modal-custom .modal-footer .action-secondary *,
body.checkout-index-index .modal-custom .modal-footer .action-secondary:visited *,
body.checkout-index-index .modal-custom .modal-footer .secondary *,
body.checkout-index-index .modal-custom .modal-footer .secondary:visited * {
  color: #000000;
  fill: #000000;
}
body.checkout-index-index .modal-slide .modal-footer .action-secondary:hover:not([disabled]), body.checkout-index-index .modal-slide .modal-footer .action-secondary:focus:not([disabled]), body.checkout-index-index .modal-slide .modal-footer .action-secondary:active:not([disabled]),
body.checkout-index-index .modal-slide .modal-footer .secondary:hover:not([disabled]),
body.checkout-index-index .modal-slide .modal-footer .secondary:focus:not([disabled]),
body.checkout-index-index .modal-slide .modal-footer .secondary:active:not([disabled]),
body.checkout-index-index .modal-popup .modal-footer .action-secondary:hover:not([disabled]),
body.checkout-index-index .modal-popup .modal-footer .action-secondary:focus:not([disabled]),
body.checkout-index-index .modal-popup .modal-footer .action-secondary:active:not([disabled]),
body.checkout-index-index .modal-popup .modal-footer .secondary:hover:not([disabled]),
body.checkout-index-index .modal-popup .modal-footer .secondary:focus:not([disabled]),
body.checkout-index-index .modal-popup .modal-footer .secondary:active:not([disabled]),
body.checkout-index-index .modal-custom .modal-footer .action-secondary:hover:not([disabled]),
body.checkout-index-index .modal-custom .modal-footer .action-secondary:focus:not([disabled]),
body.checkout-index-index .modal-custom .modal-footer .action-secondary:active:not([disabled]),
body.checkout-index-index .modal-custom .modal-footer .secondary:hover:not([disabled]),
body.checkout-index-index .modal-custom .modal-footer .secondary:focus:not([disabled]),
body.checkout-index-index .modal-custom .modal-footer .secondary:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid #666;
  color: #fff;
  background-color: #666;
}
body.checkout-index-index .modal-slide .modal-footer .action-secondary:hover:not([disabled]) *, body.checkout-index-index .modal-slide .modal-footer .action-secondary:focus:not([disabled]) *, body.checkout-index-index .modal-slide .modal-footer .action-secondary:active:not([disabled]) *,
body.checkout-index-index .modal-slide .modal-footer .secondary:hover:not([disabled]) *,
body.checkout-index-index .modal-slide .modal-footer .secondary:focus:not([disabled]) *,
body.checkout-index-index .modal-slide .modal-footer .secondary:active:not([disabled]) *,
body.checkout-index-index .modal-popup .modal-footer .action-secondary:hover:not([disabled]) *,
body.checkout-index-index .modal-popup .modal-footer .action-secondary:focus:not([disabled]) *,
body.checkout-index-index .modal-popup .modal-footer .action-secondary:active:not([disabled]) *,
body.checkout-index-index .modal-popup .modal-footer .secondary:hover:not([disabled]) *,
body.checkout-index-index .modal-popup .modal-footer .secondary:focus:not([disabled]) *,
body.checkout-index-index .modal-popup .modal-footer .secondary:active:not([disabled]) *,
body.checkout-index-index .modal-custom .modal-footer .action-secondary:hover:not([disabled]) *,
body.checkout-index-index .modal-custom .modal-footer .action-secondary:focus:not([disabled]) *,
body.checkout-index-index .modal-custom .modal-footer .action-secondary:active:not([disabled]) *,
body.checkout-index-index .modal-custom .modal-footer .secondary:hover:not([disabled]) *,
body.checkout-index-index .modal-custom .modal-footer .secondary:focus:not([disabled]) *,
body.checkout-index-index .modal-custom .modal-footer .secondary:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
body.checkout-index-index .modal-slide .modal-footer .action-secondary[disabled],
body.checkout-index-index .modal-slide .modal-footer .secondary[disabled],
body.checkout-index-index .modal-popup .modal-footer .action-secondary[disabled],
body.checkout-index-index .modal-popup .modal-footer .secondary[disabled],
body.checkout-index-index .modal-custom .modal-footer .action-secondary[disabled],
body.checkout-index-index .modal-custom .modal-footer .secondary[disabled] {
  opacity: 0.65;
  cursor: auto;
}
body.checkout-index-index .modal-slide .modal-footer .action-secondary span,
body.checkout-index-index .modal-slide .modal-footer .secondary span,
body.checkout-index-index .modal-popup .modal-footer .action-secondary span,
body.checkout-index-index .modal-popup .modal-footer .secondary span,
body.checkout-index-index .modal-custom .modal-footer .action-secondary span,
body.checkout-index-index .modal-custom .modal-footer .secondary span {
  margin-top: 0;
  z-index: 1;
  font-weight: 700;
  vertical-align: baseline;
  display: inline-block;
  line-height: 1.275em;
  letter-spacing: normal;
}
.modal-slide .modal-footer button:only-child,
.modal-popup .modal-footer button:only-child,
.modal-custom .modal-footer button:only-child {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
  min-width: 12rem;
}
.modal-slide .modal-footer button:only-child::-moz-focus-inner,
.modal-popup .modal-footer button:only-child::-moz-focus-inner,
.modal-custom .modal-footer button:only-child::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
.modal-slide .modal-footer button:only-child, .modal-slide .modal-footer button:only-child:visited,
.modal-popup .modal-footer button:only-child,
.modal-popup .modal-footer button:only-child:visited,
.modal-custom .modal-footer button:only-child,
.modal-custom .modal-footer button:only-child:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #000000;
}
.modal-slide .modal-footer button:only-child *, .modal-slide .modal-footer button:only-child:visited *,
.modal-popup .modal-footer button:only-child *,
.modal-popup .modal-footer button:only-child:visited *,
.modal-custom .modal-footer button:only-child *,
.modal-custom .modal-footer button:only-child:visited * {
  color: #fff;
  fill: #fff;
}
.modal-slide .modal-footer button:only-child:hover:not([disabled]), .modal-slide .modal-footer button:only-child:focus:not([disabled]), .modal-slide .modal-footer button:only-child:active:not([disabled]),
.modal-popup .modal-footer button:only-child:hover:not([disabled]),
.modal-popup .modal-footer button:only-child:focus:not([disabled]),
.modal-popup .modal-footer button:only-child:active:not([disabled]),
.modal-custom .modal-footer button:only-child:hover:not([disabled]),
.modal-custom .modal-footer button:only-child:focus:not([disabled]),
.modal-custom .modal-footer button:only-child:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #666;
}
.modal-slide .modal-footer button:only-child:hover:not([disabled]) *, .modal-slide .modal-footer button:only-child:focus:not([disabled]) *, .modal-slide .modal-footer button:only-child:active:not([disabled]) *,
.modal-popup .modal-footer button:only-child:hover:not([disabled]) *,
.modal-popup .modal-footer button:only-child:focus:not([disabled]) *,
.modal-popup .modal-footer button:only-child:active:not([disabled]) *,
.modal-custom .modal-footer button:only-child:hover:not([disabled]) *,
.modal-custom .modal-footer button:only-child:focus:not([disabled]) *,
.modal-custom .modal-footer button:only-child:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
.modal-slide .modal-footer button:only-child[disabled],
.modal-popup .modal-footer button:only-child[disabled],
.modal-custom .modal-footer button:only-child[disabled] {
  opacity: 0.65;
  cursor: auto;
}
.modal-slide .modal-footer button:only-child span,
.modal-popup .modal-footer button:only-child span,
.modal-custom .modal-footer button:only-child span {
  margin-top: 0;
  z-index: 1;
  font-weight: 700;
  vertical-align: baseline;
  display: inline-block;
  line-height: 1.275em;
  letter-spacing: normal;
}
.modal-slide .modal-title,
.modal-popup .modal-title,
.modal-custom .modal-title {
  font-family: "proxima-nova", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Oxygen, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  font-size: 1.8rem;
  line-height: 1.1;
  color: #212121;
  font-weight: 700;
  text-transform: uppercase;
  margin: 1rem 0 2rem;
  padding: 2rem;
  border-bottom: 1px solid #dcdcdc;
  margin: 0;
}

@media (max-width: 48em) {
  .modal-popup.modal-slide .modal-inner-wrap[class] {
    background-color: #fff;
  }
}

@media (max-width: 29.99em) {
  .modal-slide .modal-footer {
    flex-wrap: wrap;
  }
}
@media (max-width: 29.99em) {
  .modal-slide .modal-footer .action-primary,
.modal-slide .modal-footer .primary {
    width: 100%;
  }
}
@media (max-width: 29.99em) {
  .modal-slide .modal-footer .action-secondary,
.modal-slide .modal-footer .secondary {
    width: 100%;
    margin-bottom: 1.5rem !important;
  }
}

.modal-popup {
  pointer-events: none;
  touch-action: none;
}
.modal-popup.agreements-modal .modal-title {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
.modal-popup.minicart-remove-item .modal-title {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}

.modal-custom.cart-items .modal-title {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}

.page-layout-checkout .modal-popup:not(._inner-scroll) {
  pointer-events: auto;
}
@media (min-width: 48.01em) {
  .page-layout-checkout .modal-slide {
    width: 80%;
    max-width: 65rem;
    left: 50%;
    transform: translateX(-50%);
  }
}

.modals-overlay {
  background-color: rgba(0, 0, 0, 0.7);
}

body._has-modal.modal-no-scroll {
  position: fixed;
  width: 100vw;
  height: 100vh;
  overflow: initial;
}

/* stylelint-enable */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Using psuedo elements to maintain an elements aspect ratio, even as it scales
 * It's using only for IE11 and Edge (version which doesn't support native CSS grid) browsers
 * For browsers which support native CSS grid, we are using mixins contain `reset` in mixin name
 * to override default mixins (progressive enhancement)
 * https://css-tricks.com/snippets/sass/maintain-aspect-ratio-mixin/
 * @param {number} $width: width of the element;
 * @param {number} $height: height of the element;
 * @param {string} $contentClass: class of the direct child element to be positioned absolutely;
 * @param {boolean} $autoposition: tells if item shall take 100% of parent size or if it can be wider/higher if needed;
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-navigation {
  box-sizing: border-box;
  font-size: 1rem;
}
.cs-navigation__list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.cs-navigation__list--main {
  position: relative;
  display: flex;
  flex-wrap: nowrap;
  justify-content: flex-start;
  padding: 0 2rem;
}
.cs-navigation__list--all-categories {
  width: 100%;
  -moz-columns: auto 1;
       columns: auto 1;
  -moz-column-gap: 0;
       column-gap: 0;
  flex: 1 0 auto;
}
.cs-navigation__list--level_1 {
  width: 100%;
  -moz-columns: auto 1;
       columns: auto 1;
  -moz-column-gap: 0;
       column-gap: 0;
  flex: 1 0 auto;
}
.cs-navigation__list--level_2 {
  flex-wrap: wrap;
}
.cs-navigation__list--hidden {
  display: none;
}
.cs-navigation__list--hidden + .cs-navigation__extras {
  display: none;
}
.cs-navigation__list .cs-navigation__item--no-children:nth-child(2) {
  padding-top: 1rem;
}
.cs-navigation__list .cs-navigation__item--no-children:last-of-type {
  padding-bottom: 1rem;
}
.cs-navigation__item {
  font-size: 0.9em;
  margin: 0;
  width: 100%;
}
.cs-navigation__item--active:not([data-category-identifier=all-categories]) > .cs-navigation__link, .cs-navigation__item.active:not([data-category-identifier=all-categories]) > .cs-navigation__link, .cs-navigation__item:hover:not([data-category-identifier=all-categories]) > .cs-navigation__link {
  color: #212121;
}
.cs-navigation__item--main {
  width: auto;
  font-size: 1.4rem;
}
.cs-navigation__item--main:first-of-type > .cs-navigation__link:not(.cs-navigation__link--with-icon) {
  padding-left: 0;
}
.cs-navigation__item--main:last-of-type > .cs-navigation__link {
  padding-right: 0;
}
.cs-navigation__item--all-categories {
  padding: 1rem;
  page-break-inside: avoid;
  /* Theoretically FF 20+ */
  -moz-column-break-inside: avoid;
       break-inside: avoid-column;
  /* IE 11 */
  display: table;
}
.cs-navigation__item--level_1 {
  padding: 1rem;
  page-break-inside: avoid;
  /* Theoretically FF 20+ */
  -moz-column-break-inside: avoid;
       break-inside: avoid-column;
  /* IE 11 */
  display: table;
}
.cs-navigation__item--hidden {
  display: none;
}
.cs-navigation__link {
  display: block;
  text-transform: uppercase !important;
  padding: 0.9em 1.05em;
  width: 100%;
}
.cs-navigation__link, .cs-navigation__link:visited {
  color: #484848;
}
.cs-navigation__link:hover {
  text-decoration: none;
  color: #212121;
}
.cs-navigation__link:hover .cs-navigation__link-icon--svg path {
  fill: #000000;
}
.cs-navigation__link--main {
  font-weight: 600;
  display: inline-block;
  position: relative;
}
.cs-navigation__link--main::after {
  content: "";
  position: absolute;
  width: auto;
  transform: scaleX(0);
  height: 1px;
  bottom: 10px;
  left: 0.9em;
  right: 0.9em;
  background-color: #000000;
  transform-origin: bottom right;
  transition: transform 0.25s ease-out;
}
.cs-navigation__link--main::after:last-child {
  right: 0;
}
.cs-navigation__link--main:hover::after {
  transform: scaleX(1);
  transform-origin: bottom left;
}
.cs-navigation__link--all-categories {
  font-weight: 400;
  margin: 0;
  border-bottom: 1px solid #dcdcdc;
  padding-bottom: 1.6em;
}
.cs-navigation__link--level_1 {
  font-weight: 400;
  margin: 0;
  border-bottom: 1px solid #dcdcdc;
  padding-bottom: 1.6em;
}
.cs-navigation__link--level_2 {
  text-transform: none;
  font-size: 1.4em;
}
.cs-navigation__link--with-icon {
  position: relative;
  padding-left: 3rem;
}
.cs-navigation__link-icon-wrapper {
  position: absolute;
  width: 2rem;
  height: 2rem;
  top: 0;
  left: 0;
  margin-top: 0.8em;
}
.cs-navigation__link-icon {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate3d(-50%, -50%, 0);
  height: 2rem;
  width: 2rem;
}
.cs-navigation__link--category .cs-navigation__link-icon {
  margin-top: -0.5rem;
}
.cs-navigation__link-icon--svg path {
  fill: #484848;
}
.cs-navigation__link-products-qty:before {
  content: "(";
}
.cs-navigation__link-products-qty:after {
  content: ")";
}
.cs-navigation .cs-navigation__item:first-child .cs-navigation__link--main::after {
  left: 0;
}
.cs-navigation .cs-navigation__item:last-child .cs-navigation__link--main::after {
  right: 0;
}
.cs-navigation .cs-navigation__item--no-children {
  padding: 0;
}
.cs-navigation .cs-navigation__item--no-children > .cs-navigation__link--level_1 {
  font-size: 1.12em;
  font-weight: 400;
  padding: 0.9em 1.5em;
  border: none;
  color: #484848;
}
.cs-navigation__flyout {
  position: absolute;
  display: none;
  background: #fff;
  left: 0;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  z-index: 1001;
  box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.15);
  margin-top: -1px;
}
.cs-navigation__flyout--visible {
  display: flex;
}
.cs-navigation__flyout svg {
  pointer-events: none;
}
@supports (-ms-ime-align: auto) {
  .cs-navigation__flyout li {
    list-style: none;
    list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=);
    list-style-type: none;
  }
}
.cs-navigation__extras {
  margin: 0;
}
.cs-navigation__teaser {
  max-height: 100%;
  padding: 1em 0;
  margin-bottom: 0 !important;
}
.cs-navigation__teaser--hidden {
  display: none;
}
.cs-navigation__products {
  padding: 0.5em 1em;
  min-width: 24rem;
}
.cs-navigation__products-header {
  display: block;
  color: #484848;
  text-transform: uppercase;
  width: 100%;
  font-weight: 400;
  margin: 0;
  border-bottom: 1px solid #dcdcdc;
  padding: 1.1em 1.05em 1.55em;
  font-size: 0.9em;
}
.cs-navigation__products-list {
  margin: 0;
  padding: 0;
  list-style: none;
}
.cs-navigation__product {
  position: relative;
}
.cs-navigation__product:before {
  display: block;
  content: "";
  width: 100%;
  padding-top: 166.6666666667%;
}
.cs-navigation__product .cs-product-tile {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}
.cs-navigation__overlay {
  display: none;
  position: absolute;
  z-index: 1000;
  background-color: #000;
  opacity: 0;
  left: 0;
  width: 100%;
  height: 0;
  transform: translate3d(0, 3rem, 0);
  transition: opacity 0.15s linear, transform 0.2s cubic-bezier(0, 0.97, 0.05, 0.99);
}
.cs-navigation__overlay--visible {
  opacity: 0.8;
  transform: translate3d(0, 0, 0);
}
.page-print .cs-navigation {
  display: none;
}
@supports (display: grid) and (grid-auto-flow: row) {
  .cs-navigation__product {
    position: relative;
  }
  .cs-navigation__product:before {
    content: none;
  }
  .cs-navigation__product .cs-product-tile {
    position: relative;
    top: auto;
    left: auto;
    right: auto;
    bottom: auto;
  }
}

.cs-container--navigation {
  display: none;
}
@media (min-width: 64em) {
  .cs-container--navigation {
    display: block;
  }
}

.cs-navigation__item.cs-navigation__item--main.active .cs-navigation__link--main::after {
  transform: scaleX(1);
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/* Radio and checkbox styling */
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
.cs-newsletter {
  margin: 0;
  width: 100%;
}
@media (max-width: 47.99em) {
  .cs-newsletter {
    padding: 0 1.5rem;
  }
}
.cs-newsletter__form {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  overflow: hidden;
}
@media (min-width: 48em) {
  .cs-newsletter__form {
    max-width: 34rem;
  }
}
@media (min-width: 64em) {
  .cs-newsletter__form {
    max-width: 100%;
  }
}
.cs-newsletter__form-wrapper {
  display: flex;
  flex-basis: 100%;
}
.cs-newsletter__field {
  flex-basis: 100%;
}
.cs-newsletter__input {
  margin-top: 0 !important;
  border-top-right-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
}
.cs-newsletter__label {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
.cs-newsletter__actions {
  display: flex;
  align-items: stretch;
  height: 4rem;
}
.cs-newsletter__button {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
  border-top-left-radius: 0 !important;
  border-bottom-left-radius: 0 !important;
}
.cs-newsletter__button::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
.cs-newsletter__button, .cs-newsletter__button:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #000000;
}
.cs-newsletter__button *, .cs-newsletter__button:visited * {
  color: #fff;
  fill: #fff;
}
.cs-newsletter__button:hover:not([disabled]), .cs-newsletter__button:focus:not([disabled]), .cs-newsletter__button:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #666;
}
.cs-newsletter__button:hover:not([disabled]) *, .cs-newsletter__button:focus:not([disabled]) *, .cs-newsletter__button:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
.cs-newsletter__button[disabled] {
  opacity: 0.65;
  cursor: auto;
}
.cs-newsletter__button-icon {
  max-width: 1em;
  max-height: 1.4rem;
  z-index: 2;
  height: auto;
  width: 100%;
  position: relative;
  top: 0.1em;
  width: 0.8em;
  height: 0.8em;
  margin-right: 0;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
.cs-offcanvas-navigation {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: #fff;
}
.cs-offcanvas-navigation__list {
  z-index: 1;
  width: 100%;
  min-width: 100%;
  list-style: none;
  padding: 0;
  margin: 0;
  background-color: #fff;
  overflow-y: hidden;
  overflow-x: hidden;
  height: 100%;
  -webkit-overflow-scrolling: touch;
  display: none;
}
.cs-offcanvas-navigation__list--level_0, .cs-offcanvas-navigation__list--current, .cs-offcanvas-navigation__list--active {
  display: block;
}
.cs-offcanvas-navigation__list--level_0, .cs-offcanvas-navigation__list--current {
  overflow-y: auto;
}
.cs-offcanvas-navigation__list--current > .cs-offcanvas-navigation__item > .cs-offcanvas-navigation__list {
  display: block;
}
.cs-offcanvas-navigation__list .cs-offcanvas-navigation__list {
  position: absolute;
  left: 105%;
  height: 100%;
  top: 0;
  transition: transform 0.3s;
}
.cs-offcanvas-navigation__list .cs-offcanvas-navigation__list--active {
  transform: translateX(-105%);
  transform: translate3d(-105%, 0, 0);
}
.cs-offcanvas-navigation__item {
  width: 100%;
  display: flex;
  overflow: hidden;
  margin: 0;
  border-bottom: 1px #dcdcdc solid;
}
.cs-offcanvas-navigation__item--with-icon .cs-offcanvas-navigation__text {
  position: relative;
  padding-left: 2.4rem;
}
.cs-offcanvas-navigation__link {
  min-width: 100%;
  width: 100%;
  display: flex;
  padding: 2.4rem 2rem;
  font-size: 1.4rem;
  align-items: center;
  text-transform: uppercase;
  font-weight: 700;
  position: relative;
}
.cs-offcanvas-navigation__link, .cs-offcanvas-navigation__link:visited {
  color: #212121;
}
.cs-offcanvas-navigation__link:hover {
  color: #212121;
}
.cs-offcanvas-navigation__link--sign-in, .cs-offcanvas-navigation__link--sign-out {
  padding-right: 5rem;
}
.cs-offcanvas-navigation__link--sign-in, .cs-offcanvas-navigation__link--sign-in:visited, .cs-offcanvas-navigation__link--sign-out, .cs-offcanvas-navigation__link--sign-out:visited {
  color: #000000;
}
.cs-offcanvas-navigation__link--sign-in:hover, .cs-offcanvas-navigation__link--sign-out:hover {
  color: #000000;
}
.cs-offcanvas-navigation__link--sign-in:hover .cs-offcanvas-navigation__icon path, .cs-offcanvas-navigation__link--sign-out:hover .cs-offcanvas-navigation__icon path {
  fill: #000000;
}
.cs-offcanvas-navigation__link--sign-in .cs-offcanvas-navigation__icon, .cs-offcanvas-navigation__link--sign-out .cs-offcanvas-navigation__icon {
  width: 2.3rem;
  height: 2.7rem;
  right: 2.4rem;
}
.cs-offcanvas-navigation__link--sign-in .cs-offcanvas-navigation__icon path, .cs-offcanvas-navigation__link--sign-out .cs-offcanvas-navigation__icon path {
  fill: #000000;
}
.cs-offcanvas-navigation__link--parent .cs-offcanvas-navigation__icon, .cs-offcanvas-navigation__link--return .cs-offcanvas-navigation__icon {
  width: 0.7rem;
  height: 0.1rem;
}
.cs-offcanvas-navigation__link--parent {
  padding-right: 5rem;
}
.cs-offcanvas-navigation__link--parent .cs-offcanvas-navigation__icon {
  right: 2.4rem;
}
.cs-offcanvas-navigation__link--return {
  padding-left: 5rem;
}
.cs-offcanvas-navigation__link--return .cs-offcanvas-navigation__icon {
  left: 2.4rem;
}
.cs-offcanvas-navigation__link--next {
  position: relative;
}
.cs-offcanvas-navigation__link--next:before, .cs-offcanvas-navigation__link--next:after {
  content: "";
  position: absolute;
  top: 50%;
  width: 0.7rem;
  height: 0.1rem;
  left: auto;
  background-color: #000000;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
}
.cs-offcanvas-navigation__link--next[aria-expanded=true]:before, .cs-offcanvas-navigation__link--next[aria-expanded=true]:after {
  background-color: #888;
}
.cs-offcanvas-navigation__link--next:before {
  transform: rotate(135deg) translate3d(50%, 0, 0);
  right: 2.4rem;
}
.cs-offcanvas-navigation__link--next:after {
  right: 2.4rem;
  transform: rotate(-135deg) translate3d(50%, 0, 0);
}
.cs-offcanvas-navigation__link--next[aria-expanded=true]:before {
  transform: rotate(225deg) translate3d(0, 0, 0);
  right: 0;
}
.cs-offcanvas-navigation__link--next[aria-expanded=true]:after {
  transform: rotate(-45deg) translate3d(0, 0, 0);
  right: 2.4rem;
}
.cs-offcanvas-navigation__link--prev {
  position: relative;
}
.cs-offcanvas-navigation__link--prev:before, .cs-offcanvas-navigation__link--prev:after {
  content: "";
  position: absolute;
  top: 50%;
  width: 0.7rem;
  height: 0.1rem;
  left: auto;
  background-color: #000000;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
}
.cs-offcanvas-navigation__link--prev[aria-expanded=true]:before, .cs-offcanvas-navigation__link--prev[aria-expanded=true]:after {
  background-color: #888;
}
.cs-offcanvas-navigation__link--prev:before {
  transform: rotate(45deg) translate3d(50%, -50%, 0);
  right: 0;
}
.cs-offcanvas-navigation__link--prev:after {
  right: 0;
  transform: rotate(-45deg) translate3d(50%, 50%, 0);
}
.cs-offcanvas-navigation__link--prev[aria-expanded=true]:before {
  transform: rotate(-45deg) translate3d(0, 0, 0);
  right: auto;
}
.cs-offcanvas-navigation__link--prev[aria-expanded=true]:after {
  transform: rotate(-135deg) translate3d(0, 0, 0);
  right: 0;
}
.cs-offcanvas-navigation__link--prev:before, .cs-offcanvas-navigation__link--prev:after {
  left: 2.4rem;
}
.cs-offcanvas-navigation .active > .cs-offcanvas-navigation__link {
  color: #000000;
}
.cs-offcanvas-navigation__icon {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}
.cs-offcanvas-navigation__icon path {
  fill: #000000;
}
.cs-offcanvas-navigation__category-icon-wrapper {
  position: relative;
  width: 2rem;
  margin-right: 1rem;
}
.cs-offcanvas-navigation__category-icon {
  position: absolute;
  top: 50%;
  left: 0;
  transform: translate3d(0, -50%, 0);
  max-height: 2rem;
}
.cs-offcanvas-navigation__text-parent {
  display: inline-block;
  padding-right: 1rem;
  font-size: 1rem;
  color: #888;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
.cs-header-user-nav {
  list-style: none;
  margin: 0;
  padding: 0 1rem;
  height: 100%;
}
@media (max-width: 23.115em) {
  .cs-header-user-nav {
    padding: 0 0.7rem;
  }
}
.cs-header-user-nav__item {
  margin-bottom: 0;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  flex: 1 1 25%;
}
.cs-header-user-nav__link {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  flex-direction: column;
  position: relative;
  width: 100%;
  padding: 1rem;
}
@media (max-width: 48em) {
  .cs-header-user-nav__link {
    align-items: center;
  }
}
.cs-header-user-nav__link:hover {
  text-decoration: none;
}
.cs-header-user-nav__link:hover .cs-header-user-nav__icon path {
  fill: #000000;
}
.cs-header-user-nav__link:hover .cs-header-user-nav__label {
  color: #696969;
}
.cs-header-user-nav__link--search:hover {
  cursor: pointer;
}
.cs-header-user-nav__icon-wrapper {
  position: relative;
}
.cs-header-user-nav__icon {
  width: 1.6rem;
  height: 1.6rem;
  display: block;
  margin: 0 auto;
}
.cs-header-user-nav__icon path {
  fill: #484848;
}
.cs-header-user-nav__label {
  text-transform: uppercase;
  font-size: 1rem;
  font-weight: 300;
  margin-top: 0.3rem;
  color: #696969;
  text-decoration: none;
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
@media (min-width: 48em) {
  .cs-header-user-nav__label {
    clip: auto;
    -webkit-clip-path: none;
            clip-path: none;
    height: auto;
    margin: 0;
    overflow: visible;
    padding: 0;
    position: static;
    width: auto;
    white-space: normal;
  }
}
.cs-header-user-nav__qty-counter {
  display: inline-flex;
  background-color: #000000;
  color: #fff;
  border: 0;
  border-radius: 0.2rem;
  padding: 0 0.6rem;
  position: relative;
  justify-content: center;
  align-items: center;
  font-size: 1rem;
  line-height: 100%;
  font-weight: 700;
  height: 1.8em;
  background-clip: padding-box;
  position: absolute;
  right: -0.5rem;
  top: -0.5rem;
  transition: opacity 0.3s;
}
@media (min-width: 48em) {
  .cs-header-user-nav__qty-counter {
    right: -1rem;
  }
}
.cs-header-user-nav__qty-counter--wishlist {
  background-color: #000;
  color: #000;
  transition: top 0.9s cubic-bezier(0.42, 0.31, 0.34, 0.93), left 0.9s cubic-bezier(0.42, 0.31, 0.34, 0.93);
}
.cs-header-user-nav__qty-counter--minicart {
  background-color: #e41f12;
  color: #fff;
  border-radius: 50% !important;
}
.cs-header-user-nav__qty-counter--compare {
  background-color: #000;
  color: #000;
}
.cs-header-user-nav__qty-counter--have-items {
  opacity: 1;
}
.cs-header-user-nav__qty-counter--wishlist-cloned {
  position: fixed;
  z-index: 1200;
  right: auto;
  opacity: 1;
  transition: top 1.2s cubic-bezier(0.42, 0.31, 0.34, 0.93), left 1.2s cubic-bezier(0.42, 0.31, 0.34, 0.93);
}
.cs-header-user-nav__qty-counter--wishlist-animating {
  animation: move-qty-badge 1.2s cubic-bezier(0.42, 0.31, 0.34, 0.93);
  top: 0.5rem;
}
@media (min-width: 48em) {
  .cs-header-user-nav__qty-counter--wishlist-animating {
    top: 1.3rem;
  }
}
@media (min-width: 64em) {
  .cs-header-user-nav__qty-counter--wishlist-animating {
    top: 3.5rem;
  }
}
@keyframes move-qty-badge {
  0% {
    opacity: 1;
  }
  15% {
    transform: scale(1);
  }
  85% {
    opacity: 1;
    transform: scale(1.5);
  }
  95% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: scale(1);
  }
}
.cs-header-user-nav__qty-counter-span {
  min-width: 1ch;
}

.cs-offcanvas-toggle {
  position: relative;
  display: flex;
  border: 0;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  align-self: stretch;
  height: 100%;
  width: 100%;
}
.cs-offcanvas-toggle, .cs-offcanvas-toggle:active, .cs-offcanvas-toggle:focus, .cs-offcanvas-toggle:hover {
  border: 0;
  background: transparent;
  box-shadow: none;
  border-radius: 0;
}
.cs-offcanvas-toggle:after {
  content: "";
  position: absolute;
  height: 2px;
  width: 100%;
  transform: scale(0);
  background: #000000;
  transition: transform 0.3s;
  bottom: 0;
  left: 0;
  transform-origin: left;
}
.cs-offcanvas-toggle--active, .cs-offcanvas-toggle--active:active, .cs-offcanvas-toggle--active:focus, .cs-offcanvas-toggle--active:hover {
  background: #000000;
}
.cs-offcanvas-toggle--active:after {
  transform: scale(1);
}
.cs-offcanvas-toggle--active .cs-offcanvas-toggle__icon {
  transform: rotate(-45deg);
}
.cs-offcanvas-toggle--active .cs-offcanvas-toggle__icon, .cs-offcanvas-toggle--active .cs-offcanvas-toggle__icon:before, .cs-offcanvas-toggle--active .cs-offcanvas-toggle__icon:after {
  background: #fff;
}
.cs-offcanvas-toggle--active .cs-offcanvas-toggle__icon:before, .cs-offcanvas-toggle--active .cs-offcanvas-toggle__icon:after {
  transform: rotate(90deg);
}
.cs-offcanvas-toggle__icon {
  padding: 0;
  margin: 0;
  position: relative;
}
.cs-offcanvas-toggle__icon, .cs-offcanvas-toggle__icon:before, .cs-offcanvas-toggle__icon:after {
  width: 1.8rem;
  height: 0.2rem;
  background: #000000;
  transition: background-color 0.3s, transform 0.3s;
}
.cs-offcanvas-toggle__icon:before, .cs-offcanvas-toggle__icon:after {
  content: "";
  display: block;
  position: absolute;
}
.cs-offcanvas-toggle__icon:before {
  transform: translateY(-250%);
  transform: translate3d(0, -250%, 0);
}
.cs-offcanvas-toggle__icon:after {
  transform: translateY(250%);
  transform: translate3d(0, 250%, 0);
}
.cs-offcanvas-toggle__text {
  position: absolute;
  bottom: 0.5rem;
  left: 0;
  width: 100%;
  text-align: center;
  font-size: 0.8rem;
  color: #212121;
  text-transform: uppercase;
  transition: color 0.3s;
}
.cs-offcanvas-toggle--active .cs-offcanvas-toggle__text {
  color: #fff;
}
@media (min-width: 48em) {
  .cs-offcanvas-toggle__text {
    bottom: 2rem;
  }
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-offcanvas {
  position: relative;
  z-index: 300;
}
.cs-offcanvas__drawer, .cs-offcanvas__overlay {
  position: fixed;
  left: 0;
  top: 0;
  bottom: 0;
  top: 5rem;
}
@media (min-width: 48em) {
  .cs-offcanvas__drawer, .cs-offcanvas__overlay {
    top: 8.3rem;
    bottom: 0;
  }
}
@media (min-width: 64em) {
  .cs-offcanvas__drawer, .cs-offcanvas__overlay {
    display: none;
  }
}
.cs-offcanvas--mini-cart .cs-offcanvas__drawer, .cs-offcanvas--mini-cart .cs-offcanvas__overlay {
  display: block;
  top: 0;
}
.cs-offcanvas__overlay {
  width: 100%;
  height: calc(100% - 5rem);
  background-color: transparent;
  transition: background-color 0.3s, transform 1ms 0.3s;
  transform: scale(0);
  cursor: pointer;
}
@media (min-width: 48em) {
  .cs-offcanvas__overlay {
    height: 100%;
  }
}
.cs-offcanvas--mini-cart .cs-offcanvas__overlay {
  height: 100%;
}
.cs-offcanvas .overlay--visible {
  transform: scale(1);
  background: rgba(0, 0, 0, 0.7);
  transition: background-color 0.3s;
}
.cs-offcanvas__drawer {
  position: fixed;
  background: #fff;
  transition: transform 0.3s;
  width: 90%;
  max-width: 40rem;
}
.cs-offcanvas--side_left .cs-offcanvas__drawer {
  left: 0;
  right: auto;
  transform: translate3d(-105%, 0, 0);
}
.cs-offcanvas--side_right .cs-offcanvas__drawer {
  left: auto;
  right: 0;
  transform: translate3d(105%, 0, 0);
}
.cs-offcanvas__drawer--navigation {
  left: 0;
  right: auto;
  transform: translate3d(-105%, 0, 0);
}
.cs-offcanvas .drawer--visible {
  transform: translate3d(0, 0, 0) !important;
}
.cs-offcanvas__spinner {
  position: absolute;
  width: 6rem;
  height: 6rem;
  left: 50%;
  top: 20%;
  margin-left: -3rem;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-page-bottom {
  padding: 1.5rem 0;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}
@media (min-width: 48em) {
  .cs-page-bottom {
    flex-wrap: wrap;
    justify-content: flex-start;
  }
}
@media (min-width: 64em) {
  .cs-page-bottom {
    flex-wrap: nowrap;
    justify-content: space-between;
  }
}
.page-print .cs-page-bottom {
  display: none;
}
.cs-page-bottom__image {
  height: 3rem;
  width: auto;
}
.cs-page-bottom__image--circle {
  width: 4.7rem;
  height: 4.7rem;
  min-width: 4.7rem;
  min-height: 4.7rem;
  margin-right: 1rem;
}
.cs-page-bottom__text {
  font-size: 1.2rem;
  color: #696969;
  margin-bottom: 0;
  margin-right: 0.6rem;
}
.cs-page-bottom__text--small {
  font-size: 1rem;
}
.cs-page-bottom__group {
  display: flex;
  align-items: center;
  flex-grow: 1;
  flex-shrink: 1;
  justify-content: space-between;
}
@media (min-width: 48em) {
  .cs-page-bottom__group {
    width: 100%;
    padding: 1rem 0;
  }
}
@media (min-width: 64em) {
  .cs-page-bottom__group {
    width: auto;
    padding: 0;
  }
}
.cs-page-bottom__group--info {
  display: none;
  flex-direction: row-reverse;
}
@media (min-width: 48em) {
  .cs-page-bottom__group--info {
    display: flex;
    flex-basis: 40%;
    justify-content: flex-end;
    padding-right: 1.5rem;
  }
  .cs-page-bottom__group--info .cs-page-bottom__text {
    max-width: 20rem;
  }
}
@media (min-width: 64em) {
  .cs-page-bottom__group--info {
    flex-basis: 17%;
    padding-right: 0;
  }
  .cs-page-bottom__group--info .cs-page-bottom__text {
    max-width: 100%;
  }
}
.cs-page-bottom__group--shipping {
  display: none;
}
@media (min-width: 48em) {
  .cs-page-bottom__group--shipping {
    display: flex;
    flex-basis: 55%;
    padding-left: 1.5rem;
  }
}
@media (min-width: 64em) {
  .cs-page-bottom__group--shipping {
    flex-basis: 33%;
    padding-left: 4rem;
  }
}
.cs-page-bottom__group--payment {
  flex-basis: 50%;
}
@media (max-width: 47.99em) {
  .cs-page-bottom__group--payment .cs-page-bottom__text {
    display: none;
  }
}
@media (min-width: 48em) and (max-width: 63.99em) {
  .cs-page-bottom__group--payment {
    flex-basis: 100%;
  }
}
@media (min-width: 64em) {
  .cs-page-bottom__group--payment {
    padding-left: 4rem;
  }
}
@media (min-width: 64em) {
  .cs-page-bottom__group--shipping, .cs-page-bottom__group--payment {
    position: relative;
  }
  .cs-page-bottom__group--shipping:before, .cs-page-bottom__group--payment:before {
    margin: 0 1rem;
    content: "";
    position: absolute;
    left: 1rem;
    top: 50%;
    width: 0.2rem;
    height: 2rem;
    background: #dcdcdc;
    transform: translateY(-50%);
  }
}
.cs-page-bottom__logo {
  display: flex;
  flex-shrink: 1;
  height: 2rem;
}
@media (max-width: 63.99em) {
  .cs-page-bottom__logo {
    width: auto;
  }
}
.cs-page-bottom__logo--hermes {
  width: 12.2rem;
}
.cs-page-bottom__logo--dhl {
  height: auto;
  max-height: 2rem;
  min-width: 8.6rem;
  padding-left: 10px;
}
.cs-page-bottom__logo--paypal {
  width: 6.2rem;
}
.cs-page-bottom__logo--visa {
  height: auto;
  max-height: 2rem;
  min-width: 5.5rem;
}
.cs-page-bottom__logo--mastercard {
  width: 3.3rem;
}
.cs-page-bottom__logo--klarna-sofort {
  height: auto;
  max-height: 2.5rem;
  min-height: 2.5rem;
}
.cs-page-bottom__logo--klarna {
  width: 7rem;
}
.cs-page-bottom__logo--gls {
  width: 5rem;
}
.cs-page-bottom__logo--giropay {
  width: 4.8rem;
}
.cs-page-bottom__logo--ec {
  width: 1.8rem;
}
.cs-page-bottom__logo--paydirekt {
  width: 6rem;
}
.cs-page-bottom__logo--lastschrift {
  width: 6.15rem;
}
.cs-page-bottom__logo--vorkasse {
  width: 8.3rem;
}
.cs-page-bottom__logo--rechnung {
  width: 6.15rem;
}
.cs-page-bottom__logo:not(:last-child) {
  margin-right: 0.5rem;
}

.cs-container--page-bottom {
  max-width: none;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.page-title {
  font-family: "proxima-nova", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Oxygen, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  font-size: 2.6rem;
  line-height: 1.1;
  color: #212121;
  font-weight: 700;
  text-transform: uppercase;
  margin: 1rem 0 2rem;
  padding-bottom: 1rem;
  text-transform: none;
  font-weight: 600;
}
.page-title__headline {
  margin: 0;
  padding: 0;
  font-size: inherit;
  font-weight: inherit;
  font-family: inherit;
  display: inline;
}
.page-title__span {
  color: #696969;
  font-weight: 300;
  padding: 0;
}

.catalog-category-view .page-title-wrapper .page-title {
  font-family: linotype-didot-headline, serif;
  font-style: normal;
  padding-bottom: 0;
  margin: 1rem 0;
  text-align: center;
  font-size: 9rem;
  font-weight: 400;
}
@media (max-width: 48em) {
  .catalog-category-view .page-title-wrapper .page-title {
    font-size: 3.5rem;
  }
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/*
 * Because price-box is used in multiple components like tile, buybox etc,
 * we need to move variables to separate file to have possibility to include them
 * in each component without generate price-box component styles multiple times
*/
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
.price-box {
  display: inline-block;
}
.price-box .price {
  font-weight: 700;
  white-space: nowrap;
}
.price-box .price-label {
  display: none;
}
.price-box .old-price .price {
  font-size: 0.65rem;
  text-decoration: line-through;
}
.price-box .old-price.no-display {
  display: none;
}
.price-box .special-price .price {
  padding-left: 0.4em;
}
.price-box .price {
  color: #000;
  font-size: 1.5rem;
  font-weight: 700;
  margin: 0;
}
.price-box .price-label {
  color: #000;
  display: none;
  font-size: 1.1rem;
  font-weight: 700;
  text-transform: uppercase;
  margin: 0 0.3rem 0.3rem 0;
}
.price-box .price-label:after {
  content: ":";
}
body:not(.page-product-bundle, .page-product-grouped) p:not(.price-from, .price-to) .price-box .price-label {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
.price-box .price-wrapper {
  display: flex;
}
.price-box .price-from,
.price-box .price-to {
  display: inline-block;
  margin: 0;
  padding: 0;
}
.price-box .price-from > .price-container,
.price-box .price-to > .price-container {
  font-size: 1.1rem;
}
.price-box .price-from .price-label,
.price-box .price-to .price-label {
  display: inline-block;
  padding: 0;
}
.price-box .old-price .price {
  text-decoration: line-through;
  color: #696969;
  font-size: 1.5rem;
  font-weight: 700;
}
.price-box .special-price .price {
  padding-left: 0;
  color: #000000;
  font-size: 1.5rem;
  font-weight: 700;
}
.price-box .special-price.active .price {
  color: #000000;
}
.price-box .price-from {
  margin-right: 1rem;
}
.cs-price--pdp_dailydeal-countdown .price-box:not(.price-final_price_without_daily_deal) {
  display: none;
}
.price-box .price-container.price-final_price:not(:only-child) .price {
  color: #000000;
}

.cs-bundle-box__add .price-as-configured {
  margin: 1rem 0 0;
}

.minimal-price-link {
  margin-top: 0 !important;
  margin-right: 1.5rem;
  position: relative;
}
.minimal-price-link:after {
  color: #000;
  display: block;
  content: "-";
  right: -1rem;
  top: 0;
  position: absolute;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/*
 * Because price-box is used in multiple components like tile, buybox etc,
 * we need to move variables to separate file to have possibility to include them
 * in each component without generate price-box component styles multiple times
*/
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
 * String to number converter
 * https://www.sassmeister.com/gist/9fa19d254864f33d4a80
 * @author Hugo Giraudel
 * @param {String | Number} $value - Value to be parsed
 * @return {Number}
 */
/***
 * Remove browser's margins, paddings and list style rules
 */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
.cs-product-tile {
  width: 100%;
  height: 100%;
  position: relative;
  border-radius: 0px;
  background-color: #fff;
  transition: border-color 0.3s;
}
.cs-product-tile--clickable:hover {
  cursor: pointer;
}
.cs-product-tile--hidden .cs-product-tile__main {
  visibility: hidden !important;
}
.cs-product-tile__container {
  height: auto;
  width: 100%;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  position: relative;
  padding: 1.5rem;
}
.cs-product-tile__link {
  display: block;
  height: 100%;
}
.cs-product-tile__thumbnail {
  padding: 0;
  min-height: 0;
}
.cs-product-tile__thumbnail-link {
  display: block;
  position: relative;
  overflow: hidden;
  width: 100%;
  height: 100%;
}
.cs-product-tile__thumbnail-link:hover, .cs-product-tile__thumbnail-link:visited {
  color: inherit;
  text-decoration: inherit;
}
.cs-product-tile__figure {
  margin: 0;
  padding: 0;
  height: 100%;
  width: 100%;
  text-align: center;
  max-width: 90rem;
  max-height: 120rem;
  margin: 0 auto;
}
.cs-product-tile__image {
  width: 100%;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  margin: auto;
}
.cs-product-tile__img {
  width: 100%;
  height: auto;
  max-width: 100%;
  max-height: 100%;
}
.cs-product-tile__img[src*=placeholder] {
  min-width: 70%;
  margin-top: 2rem;
}
.cs-product-tile__content {
  width: 100%;
  background-color: rgba(255, 255, 255, 0.8);
}
.cs-product-tile__main {
  height: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 8rem;
  grid-template-areas: "badges addto" "swatches swatches" "name name" "description description" "collection-sku collection-sku" "price price" "review  addtocart" "stock addtocart" "wishlist-icons wishlist-icons";
}
.cs-product-tile__swatches {
  grid-area: swatches;
  display: flex;
  margin: 1rem 0 1rem;
  min-height: 2.6rem;
}
.cs-product-tile__swatches,
.cs-product-tile__swatches .swatch-attribute-options {
  justify-content: center;
}
@media (max-width: 47.99em) {
  .cs-product-tile__swatches,
.cs-product-tile__swatches .swatch-attribute-options {
    justify-content: flex-start;
  }
}
.cs-product-tile__brand {
  grid-area: brand;
  height: 2rem;
  margin-top: 1.5rem;
  text-align: center;
}
.cs-product-tile__brand--empty {
  height: 0;
}
.cs-product-tile__brand-text {
  font-size: 1.2rem;
  color: #888;
}
.cs-product-tile__name {
  text-transform: uppercase;
  grid-area: name;
  line-height: 1.8rem;
  font-weight: 400;
  font-size: 1.4rem;
  overflow: hidden;
  width: 100%;
  height: 2rem;
  margin: 0px;
  text-align: left;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.cs-product-tile__name a:hover {
  color: #212121 !important;
}
.cs-product-tile__name a:visited {
  color: #212121 !important;
}
.cs-product-tile__name-link {
  color: #212121;
  /* disabled because autoprefixer can't build this */
  /* stylelint-disable value-no-vendor-prefix */
  /* stylelint-disable property-no-vendor-prefix */
  /* stylelint-enable value-no-vendor-prefix */
  /* stylelint-enable property-no-vendor-prefix */
}
.cs-product-tile__name-link:visited {
  color: #212121;
}
.cs-product-tile__name-link:hover {
  color: #212121;
  text-decoration: underline;
}
.cs-product-tile__colection-sku-wrapper .cs-product-tile__collection,
.cs-product-tile__colection-sku-wrapper .cs-product-tile__sku {
  cursor: default;
  line-height: 1.8rem;
  font-weight: 400;
  font-size: 1.2rem;
  text-transform: uppercase;
  color: #484848;
  overflow: hidden;
  height: 2rem;
  margin: 0;
  text-align: left;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.cs-product-tile__colection-sku-wrapper {
  grid-area: collection-sku;
  text-transform: uppercase;
  display: flex;
  gap: 0.5rem;
}
.cs-product-tile__price {
  grid-area: price;
  line-height: 1.2;
}
.cs-product-tile__price .price-box {
  display: flex;
  margin: 0;
  align-items: center;
  justify-content: flex-start;
}
.cs-product-tile__price .price-box .price {
  font-size: 1.5rem;
  font-weight: 700;
  color: #000;
}
.cs-product-tile__price .price-box .old-price .price {
  font-size: 1.5rem;
  font-weight: 700;
  color: #696969;
  text-decoration: line-through;
}
.cs-product-tile__price .price-box .special-price .price {
  font-size: 1.5rem;
  font-weight: 700;
  color: #000000;
}
.cs-product-tile__price .price-box .minimal-price {
  margin: 0;
  display: flex;
}
.cs-product-tile__price .price-box .old-price {
  order: -1;
}
.cs-product-tile__price .price-box .minimal-price {
  align-items: center;
}
.cs-product-tile__price .price-box .old-price .price {
  margin-right: 1rem;
}
.cs-product-tile__price--dailydeal-countdown .price-box:not(.price-final_price_without_daily_deal) {
  display: none;
}
.cs-product-tile__price--dailydeal-countdown .price-box.price-box--visible {
  display: flex;
}
.cs-product-tile__review {
  grid-area: review;
  margin: 0.5rem 0 0;
}
.cs-product-tile__review:empty {
  margin: 0 !important;
}
.cs-product-tile__stock {
  grid-area: stock;
  display: inline-block;
  white-space: nowrap;
  font-size: 1.3rem;
  margin: 0;
  padding-bottom: 1.1rem;
  text-align: left;
}
.cs-product-tile__stock--in {
  color: #37b841;
}
.cs-product-tile__stock--out {
  color: #e41f12;
}
.cs-product-tile__addtocart {
  grid-area: addtocart;
  margin: 0 0 0;
}
@media (hover: hover) and (pointer: fine) {
  .cs-product-tile__addtocart {
    opacity: 0;
    transition: opacity 0.3s;
  }
  .cs-product-tile:hover .cs-product-tile__addtocart {
    opacity: 1;
  }
}
.cs-product-tile:not(.cs-product-tile--list) .cs-product-tile__addtocart .cs-addtocart__button {
  min-height: 4rem;
}
.cs-product-tile:not(.cs-product-tile--list) .cs-product-tile__addtocart .cs-addtocart__button::before, .cs-product-tile:not(.cs-product-tile--list) .cs-product-tile__addtocart .cs-addtocart__button::after {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
.cs-product-tile:not(.cs-product-tile--list) .cs-product-tile__addtocart .cs-addtocart__button-label, .cs-product-tile:not(.cs-product-tile--list) .cs-product-tile__addtocart .cs-addtocart__success-label, .cs-product-tile:not(.cs-product-tile--list) .cs-product-tile__addtocart .cs-addtocart__fail-label {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
.cs-product-tile:not(.cs-product-tile--list) .cs-product-tile__addtocart .cs-addtocart__button-icon, .cs-product-tile:not(.cs-product-tile--list) .cs-product-tile__addtocart .cs-addtocart__configure-icon {
  right: auto;
  left: 50%;
  transform: translate3d(-50%, -50%, 0);
}
.cs-product-tile:not(.cs-product-tile--list) .cs-product-tile__addtocart.cs-addtocart--loading .cs-addtocart__loading {
  transform: scale(1) translate3d(-50%, -50%, 0);
}
.cs-product-tile:not(.cs-product-tile--list) .cs-product-tile__addtocart.cs-addtocart--loading .cs-addtocart__button-icon,
.cs-product-tile:not(.cs-product-tile--list) .cs-product-tile__addtocart.cs-addtocart--loading .cs-addtocart__configure-icon {
  display: none;
}
.cs-product-tile__addtocart-button {
  width: 8rem;
}
.cs-product-tile__addto {
  grid-area: addto;
  width: auto;
  margin: 0.5rem 0 0;
  position: absolute;
  top: 1.5rem;
  right: 1.5rem;
}
.cs-product-tile__addto .cs-links-block-addto__link {
  font-size: 1.3rem;
}
.cs-dashboard__bottom-wishlist .cs-product-tile__addto, .cs-dashboard__wishlist-products-grid .cs-product-tile__addto {
  display: none;
}
.cs-product-tile__addto:empty {
  margin: 0 !important;
}
.cs-product-tile__addto .cs-links-block-addto__link-label {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
.cs-product-tile__badges {
  margin: 0;
  padding: 0;
  list-style: none;
  grid-area: badges;
  display: flex;
  flex-wrap: wrap;
  position: absolute;
  z-index: 2;
  top: 1rem;
  left: 1rem;
  flex-direction: column;
}
.cs-product-tile__badge {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  position: relative;
  background-color: #000000;
  color: #fff;
  border: 0;
  border-radius: 0px;
  padding: 0 0.7rem;
  font-size: 1.1rem;
  font-weight: 700;
  min-height: 2em;
  text-transform: uppercase;
  grid-area: badge;
}
@media (min-width: 23.125em) and (max-width: 29.99em) {
  .cs-product-tile__badge {
    font-size: 0.9rem;
  }
}
.cs-product-tile__badge--discount {
  background-color: #e41f12;
  color: #fff;
}
.cs-product-tile__badge--discount .cs-product-tile__badge-text {
  line-height: normal;
}
.cs-product-tile__badge--discount .cs-product-tile__badge-text + .cs-product-tile__badge--discount .cs-product-tile__badge-text {
  margin-left: 0.5rem;
}
.cs-product-tile__badge--new {
  background-color: #000;
  color: #000;
}
.cs-product-tile__badge--new .cs-product-tile__badge-text {
  line-height: normal;
}
.cs-product-tile__badge--new .cs-product-tile__badge-text + .cs-product-tile__badge--new .cs-product-tile__badge-text {
  margin-left: 0.5rem;
}
.cs-product-tile__badge--free-shipping {
  background-color: #37b841;
  color: #fff;
}
.cs-product-tile__badge--free-shipping .cs-product-tile__badge-text {
  line-height: normal;
}
.cs-product-tile__badge--free-shipping .cs-product-tile__badge-text + .cs-product-tile__badge--free-shipping .cs-product-tile__badge-text {
  margin-left: 0.5rem;
}
.cs-product-tile__badge--popular {
  background-color: #e41f12;
  color: #fff;
}
.cs-product-tile__badge--popular .cs-product-tile__badge-text {
  line-height: normal;
}
.cs-product-tile__badge--popular .cs-product-tile__badge-text + .cs-product-tile__badge--popular .cs-product-tile__badge-text {
  margin-left: 0.5rem;
}
.cs-product-tile__badge--dailydeal {
  background-color: #e41f12;
  color: #fff;
}
.cs-product-tile__badge--dailydeal .cs-product-tile__badge-text {
  line-height: normal;
}
.cs-product-tile__badge--dailydeal .cs-product-tile__badge-text + .cs-product-tile__badge--dailydeal .cs-product-tile__badge-text {
  margin-left: 0.5rem;
}
.cs-product-tile__badge-item {
  display: flex;
}
.cs-product-tile--grid .cs-product-tile__badge-item {
  margin: 0 0 0.25rem;
  width: 100%;
}
.cs-product-tile__badge-item:empty {
  display: none;
}
.cs-product-tile__badge-text {
  line-height: normal;
}
.cs-product-tile__badge-text + .cs-product-tile__badge-text {
  margin-left: 0.5rem;
}
.cs-product-tile__dailydeal {
  grid-area: dailydeal;
  margin: 0;
}
.cs-product-tile__qty {
  grid-area: qty;
  margin-bottom: 1rem;
  width: 11rem;
  margin-left: auto;
}
.cs-product-tile__description {
  grid-area: description;
  font-size: 1.3rem;
  font-weight: 400;
  line-height: 1.4;
  color: #696969;
  margin: 0 0 0.5rem;
}
.cs-product-tile__wishlist-remove-icon {
  position: absolute;
  top: 0;
  right: 0;
  background: #fff;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 1.5rem;
}
@media (pointer: fine) {
  .cs-product-tile__wishlist-remove-icon {
    display: none;
  }
}
.cs-product-tile__wishlist-remove-icon-image {
  width: 1.2rem;
  height: 1.2rem;
  fill: #888;
}
.cs-product-tile__wishlist-comment {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
.cs-product-tile__wishlist-actions {
  grid-area: wishlist-icons;
  margin: 0.5rem 0 0;
  display: flex;
  justify-content: space-between;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Remove browser's margins, paddings and list style rules
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-products-list {
  margin: 0;
  padding: 0;
  list-style: none;
}
.cs-products-list__item {
  margin: 0;
}
.cs-products-list:not(.cs-products-list--carousel) .cs-products-list__item {
  border-bottom: 1px solid #f4f4f4;
  padding: 0;
}
.cs-products-list:not(.cs-products-list--carousel) .cs-products-list__item:last-child {
  border-bottom: 0;
}
@media (min-width: 48em) {
  .cs-products-list--carousel .cs-products-list__item {
    border-bottom: 1px solid #f4f4f4;
    padding: 0;
  }
  .cs-products-list--carousel .cs-products-list__item:last-child {
    border-bottom: 0;
  }
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/* Radio and checkbox styling */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
.cs-qty-increment {
  position: relative;
  display: flex;
  flex-wrap: wrap;
}
.cs-qty-increment--wishlist {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
.cs-qty-increment__label {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}
.cs-qty-increment__input {
  font-size: 1em;
  line-height: 1.275em;
  padding: 0.75em 1em;
  color: #212121;
  background: #fff;
  border-radius: 0px;
  border: 1px solid #dcdcdc;
  box-shadow: none;
  transition: border-color 0.5s;
  margin: 0px;
  width: 100%;
  background-clip: padding-box;
  font-family: inherit;
  font-size: inherit;
  text-align: center;
  margin: 0;
  padding-left: 0.5em;
  padding-right: 0.5em;
  border-radius: 0;
  width: 0;
  min-width: 2ch;
  flex: 1 1;
  order: 2;
}
.cs-qty-increment__input:hover:not([disabled]), .cs-qty-increment__input:focus:not([disabled]) {
  border: 1px solid #000000;
  box-shadow: none;
}
.cs-qty-increment__input::-moz-placeholder {
  opacity: 1;
  color: #888;
}
.cs-qty-increment__input::placeholder {
  opacity: 1;
  color: #888;
}
.cs-qty-increment__input[disabled] {
  opacity: 0.65;
}
.cs-qty-increment__input, .cs-qty-increment__input:hover:not([disabled]), .cs-qty-increment__input:focus:not([disabled]) {
  border-left-width: 0;
  border-right-width: 0;
  border-color: #dcdcdc;
}
.cs-qty-increment__input.mage-error {
  border-color: #e41f12 !important;
}
.cs-qty-increment__input.mage-error ~ .cs-qty-increment__button {
  border-color: #e41f12 !important;
}
.cs-qty-increment__input + .mage-error {
  order: 3;
  width: 100%;
}
.cs-qty-increment__button {
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s;
  max-width: 3rem;
  background-color: transparent;
  flex: 1 1 2rem;
  position: relative;
  padding-left: 0.5em;
  padding-right: 0.5em;
  border-radius: 0px;
}
.cs-qty-increment__button, .cs-qty-increment__button:visited, .cs-qty-increment__button:focus {
  background-color: transparent;
  border: 1px solid #dcdcdc;
}
.cs-qty-increment__button *, .cs-qty-increment__button:visited *, .cs-qty-increment__button:focus * {
  fill: #000000;
}
.cs-qty-increment__button:hover, .cs-qty-increment__button:active {
  background-color: #000000;
  border: 1px solid #000000;
  cursor: pointer;
}
.cs-qty-increment__button:hover *, .cs-qty-increment__button:active * {
  fill: #fff;
}
.cs-qty-increment__button--decrement {
  order: 1;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.cs-qty-increment__button--increment {
  order: 2;
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}
.cs-qty-increment__button--disabled {
  opacity: 1;
}
.cs-qty-increment__button--disabled, .cs-qty-increment__button--disabled:hover, .cs-qty-increment__button--disabled:visited, .cs-qty-increment__button--disabled:focus {
  background-color: transparent;
  border: 1px solid #dcdcdc;
  cursor: not-allowed;
}
.cs-qty-increment__button--disabled *, .cs-qty-increment__button--disabled:hover *, .cs-qty-increment__button--disabled:visited *, .cs-qty-increment__button--disabled:focus * {
  fill: #dcdcdc;
}
.cs-qty-increment__icon {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
.cs-qty-increment__icon--decrement {
  width: 1.2rem;
  height: 0.3rem;
}
.cs-qty-increment__icon--increment {
  width: 1.2rem;
  height: 1.2rem;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
.cs-skip-links__links {
  background-color: #000000;
  display: flex;
  justify-content: center;
}
.cs-skip-links__links:not(:focus):not(:focus-within) {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
  clip: auto;
  -webkit-clip-path: none;
          clip-path: none;
}
.cs-skip-links__links:focus, .cs-skip-links__links:focus-within {
  clip: auto;
  -webkit-clip-path: none;
          clip-path: none;
  height: auto;
  margin: 0;
  overflow: visible;
  padding: 0;
  position: static;
  width: auto;
  white-space: normal;
  padding: 0.5rem 0;
  width: 100%;
  position: static;
}
.cs-skip-links a.cs-skip-links__link {
  color: #fff;
  padding: 0.5rem 1rem;
  font-size: 1.6rem;
  border: none;
  margin: 0.5rem;
  font-weight: 700;
  text-decoration: underline;
}
.cs-skip-links a.cs-skip-links__link:nth-of-type(n + 2) {
  display: none;
}
@media (min-width: 48em) {
  .cs-skip-links a.cs-skip-links__link:nth-of-type(n + 2) {
    display: block;
  }
  .cs-skip-links a.cs-skip-links__link:nth-of-type(n + 3) {
    display: none;
  }
}
@media (min-width: 64em) {
  .cs-skip-links a.cs-skip-links__link:nth-of-type(n + 2), .cs-skip-links a.cs-skip-links__link:nth-of-type(n + 3) {
    display: block;
  }
}
.cs-skip-links a.cs-skip-links__link:hover, .cs-skip-links a.cs-skip-links__link:focus, .cs-skip-links a.cs-skip-links__link:visited {
  cursor: pointer;
  color: #fff;
  text-decoration: underline;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Remove browser's margins, paddings and list style rules
 */
.cs-social-media-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  padding: 1.5rem 0 1.5rem;
  justify-content: center;
  align-items: center;
}
@media (min-width: 48em) {
  .cs-social-media-list {
    justify-content: flex-start;
  }
}
@media (min-width: 48em) {
  .cs-social-media-list {
    padding-bottom: 0;
    padding-top: 0;
  }
}
.cs-social-media-list__item {
  margin: 0 0.4em;
  padding: 0;
}
.cs-social-media-list__link {
  display: flex;
  position: relative;
  height: 3.5em;
  min-width: 4em;
  background: #212121;
  color: inherit;
  border-radius: 0px;
  transition: background-color 0.15s linear;
}
.cs-social-media-list__link:hover {
  background: #666;
}
.cs-social-media-list__icon {
  position: absolute;
  transform: translate3d(-55%, -55%, 0);
  top: 50%;
  left: 55%;
}
.cs-social-media-list__item--fb .cs-social-media-list__icon {
  width: 0.9em;
  height: 1.8em;
}
.cs-social-media-list__item--tw .cs-social-media-list__icon {
  width: 2.5em;
  height: 2em;
}
.cs-social-media-list__item--yt .cs-social-media-list__icon {
  width: 1.8em;
  height: 2.1em;
}
.cs-social-media-list__item--gp .cs-social-media-list__icon {
  width: 2em;
  height: 2em;
  margin-top: 0.1em;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
.cs-star-rating {
  display: flex;
  align-items: center;
}
.cs-star-rating__stars {
  display: inline-flex;
  padding: 0;
  width: 7.2rem;
  justify-content: space-between;
}
.cs-star-rating--summary .cs-star-rating__stars {
  width: 10rem;
  padding: 0;
}
.cs-star-rating--review .cs-star-rating__stars {
  width: 7.2rem;
  padding: 0;
}
.cs-star-rating__star {
  width: 1.5rem;
  display: flex;
  height: 100%;
  fill: #888;
}
.cs-star-rating__star--active {
  fill: #fcb739;
}
.cs-star-rating__star--half-active .star-left {
  fill: #fcb739;
}
.cs-star-rating__star--half-active .star-right {
  fill: #888;
}
.cs-star-rating--summary .cs-star-rating__star {
  width: 2rem;
}
.cs-star-rating--review .cs-star-rating__star {
  width: 1.5rem;
}
.cs-star-rating__star path {
  fill-opacity: 1;
  fill: inherit;
}
.cs-star-rating img {
  width: 1.5rem;
  height: 100%;
}
.cs-star-rating__form-stars {
  display: inline-flex;
  padding: 0;
}
.cs-star-rating__form-star {
  opacity: 1;
  fill: #888;
  width: 100%;
}
.cs-star-rating__form-star--active {
  fill: #fcb739;
}
.cs-star-rating__form-star path {
  fill-opacity: 1;
  fill: inherit;
}
.cs-star-rating__form-star:nth-last-of-type() {
  padding-right: 0;
}
.cs-star-rating__form-stars:hover .cs-star-rating__form-star {
  fill: #fcb739;
}
.cs-star-rating__form-stars label:hover ~ label .cs-star-rating__form-star {
  fill: #888;
}
.cs-star-rating__text {
  display: inline-block;
  color: #696969;
  padding-left: 0.5em;
  line-height: 1;
  padding-top: calc(1.5rem * 0.1);
}
.cs-star-rating__text--count:before {
  content: "(";
}
.cs-star-rating__text--count:after {
  content: ")";
}
.cs-star-rating__text--empty {
  padding-left: 0;
}
.cs-star-rating__text-annotation {
  display: inline;
  line-height: 1;
}
.cs-product-tile .cs-star-rating__text-annotation {
  display: none;
}
.cs-star-rating__label {
  color: #212121;
  font-size: 0.75em;
  font-weight: 700;
  text-transform: uppercase;
  padding-top: calc(1.5rem * 0.2);
}

.review-control-vote {
  overflow: hidden;
}
.review-control-vote .rating-1 {
  z-index: 1;
}
.review-control-vote .rating-1:before {
  content: none;
}
.review-control-vote .rating-2 {
  z-index: 2;
}
.review-control-vote .rating-2:before {
  content: none;
}
.review-control-vote .rating-3 {
  z-index: 3;
}
.review-control-vote .rating-3:before {
  content: none;
}
.review-control-vote .rating-4 {
  z-index: 4;
}
.review-control-vote .rating-4:before {
  content: none;
}
.review-control-vote .rating-5 {
  z-index: 5;
}
.review-control-vote .rating-5:before {
  content: none;
}
.review-control-vote:before {
  content: none;
}
.review-control-vote label {
  position: static;
  cursor: pointer;
  display: block;
  width: 3rem;
  padding-right: 1rem;
  line-height: 0;
}
@media (min-width: 48em) {
  .review-control-vote label {
    width: 2.6rem;
    padding-right: 0.6rem;
  }
}
.review-control-vote label:last-child {
  width: 2rem;
  padding-right: 0;
}
.review-control-vote label span {
  clip: auto;
  -webkit-clip-path: none;
          clip-path: none;
  height: auto;
  margin: 0;
  overflow: visible;
  padding: 0;
  position: static;
  width: auto;
  white-space: normal;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
.swatch-attribute {
  display: flex;
  width: 100%;
  overflow: hidden;
  flex-direction: column;
  flex-wrap: wrap;
}
.swatch-attribute.swatch-layered {
  font-size: 0.8em;
}
.swatch-attribute + .swatch-attribute {
  margin-top: 0.8em;
}

.swatch-attribute-label {
  order: 1;
  text-transform: uppercase;
  line-height: calc(3.2em - 6px + 0.1em );
  font-weight: 700;
  font-size: 1.1em;
  width: 10rem;
  margin-right: 1.5rem;
}
@media (min-width: 64em) {
  .swatch-attribute-label {
    width: 11rem;
  }
}
.swatch-attribute-label:after {
  content: ": ";
  line-height: calc(3.2em - 6px + 0.1em);
}

.swatch-attribute-selected-option {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}

.swatch-attribute-options {
  order: 3;
  display: flex;
  flex-wrap: wrap;
  margin-left: -0.2em;
  margin-bottom: -0.4em;
  min-width: 100%;
  justify-content: center;
}
.swatch-attribute-options:focus {
  box-shadow: none;
}
.swatch-opt .swatch-attribute-options {
  min-width: 0;
  justify-content: flex-start;
}
.mage-error {
  order: 2;
}

.swatch-option-link-layered {
  font-size: 1em;
}
.swatch-option-link-layered:hover {
  text-decoration: none;
}

.swatch-option {
  font-weight: 700;
  position: relative;
  min-width: 3.2em;
  height: 3.2em;
  padding: 0;
  margin: 6px;
  border-radius: 50px;
  background-color: #f4f4f4;
  border: 2px solid #dcdcdc;
  color: #000;
  cursor: pointer;
  line-height: calc(3.2em - 6px + 0.1em);
  text-align: center;
  transition: background-color 0.3s, border-color 0.3s, opacity 0.3s, color 0.3s;
}
.swatch-option:before {
  content: "";
  position: absolute;
  top: -4px;
  left: -4px;
  right: -4px;
  bottom: -4px;
  border: unset;
  border-radius: 50px;
  transition: border-color 0.3s;
}
.swatch-option:after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  border-radius: 50%;
  background: linear-gradient(to left top, #ffffff 0%, #ffffff 42%, #ffffff 43%, #ffffff 46%, #BCBBBC 47%, #BCBBBC 53%, #ffffff 54%, #ffffff 57%, #ffffff 58%, #ffffff 100%);
  width: 3.9rem;
  height: 3.9rem;
  background-size: 3.8rem;
  transition: opacity 0.3s;
  opacity: 0;
  border: 2px solid #bcbbbc;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
.swatch-option.selected, .swatch-option.bis-selected {
  border: 2px solid #000000;
  background: #fff;
  font-weight: 700;
}
.swatch-option.selected:before, .swatch-option.bis-selected:before {
  border: unset;
}
.swatch-option.disabled:not(.back-in-stock-alert), .swatch-option[disabled]:not(.back-in-stock-alert) {
  cursor: not-allowed;
}
.swatch-option.disabled:not(.back-in-stock-alert).text, .swatch-option[disabled]:not(.back-in-stock-alert).text {
  opacity: 50%;
  color: #b0b0b0;
  background: #fff;
}
.swatch-option.disabled:not(.back-in-stock-alert).text:before, .swatch-option[disabled]:not(.back-in-stock-alert).text:before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  border-radius: 50%;
  background: linear-gradient(to left top, #ffffff00 0%, #ffffff00 42%, #ffffff00 43%, #ffffff00 46%, #BCBBBC 47%, #BCBBBC 53%, #ffffff00 54%, #ffffff00 57%, #ffffff00 58%, #ffffff00 100%);
  width: 3.9rem;
  height: 3.9rem;
  background-size: 3.8rem;
  transition: opacity 0.3s;
  border: 2px solid #bcbbbc;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
.swatch-option.disabled:not(.back-in-stock-alert).image:after, .swatch-option.disabled:not(.back-in-stock-alert).color:after, .swatch-option[disabled]:not(.back-in-stock-alert).image:after, .swatch-option[disabled]:not(.back-in-stock-alert).color:after {
  opacity: 1;
}
.swatch-option:not(.disabled):not(.selected):not([disabled]):hover, .swatch-option.back-in-stock-alert:hover {
  border: 2px solid #000000;
  background: #fff;
}
.swatch-option:not(.disabled):not(.selected):not([disabled]):hover:before, .swatch-option.back-in-stock-alert:hover:before {
  border: unset;
}

.modal-content .swatch-option:after,
.modal-content .swatch-option:before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  border-radius: 50%;
  background: linear-gradient(to left top, #ffffff 0%, #ffffff 42%, #ffffff 43%, #ffffff 46%, #BCBBBC 47%, #BCBBBC 53%, #ffffff 54%, #ffffff 57%, #ffffff 58%, #ffffff 100%);
  width: 4.6rem;
  height: 4.6rem;
  background-size: 4.6rem;
  transition: opacity 0.3s;
  opacity: 0;
  border: 2px solid #bcbbbc;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.modal-content .swatch-option.disabled:before {
  opacity: 1;
  width: 4.6rem !important;
  height: 4.6rem !important;
}

.atalog-product-view .swatch-option.image {
  background-size: 4rem;
}

.products-grid .swatch-option.image {
  background-size: contain !important;
}

.swatch-input {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
  left: -1000px;
  position: absolute;
  visibility: hidden;
}

.swatch-more {
  font-size: 1.2rem;
  display: flex;
  align-items: center;
  color: #484848;
}
.swatch-more:hover {
  text-decoration: underline;
}

.swatch-option-tooltip,
.swatch-option-tooltip-layered {
  display: none;
  position: absolute;
  margin: 0;
  z-index: 999;
  background: #fff;
  border-radius: 0.5rem;
  color: #888;
  font-size: 1.3rem;
  font-weight: 400;
  padding: 0.5rem;
  text-align: center;
  min-width: 2rem;
  border: 0.1rem solid #dcdcdc;
}
.swatch-option-tooltip .image,
.swatch-option-tooltip-layered .image {
  display: block;
  margin: 0 auto;
  width: 110px;
  height: 110px;
}
.swatch-option-tooltip .corner:after,
.swatch-option-tooltip-layered .corner:after {
  content: "";
  position: absolute;
  top: 100%;
  display: block;
  width: 1rem;
  height: 1rem;
  background-color: #fff;
  left: 50%;
  transform: translateX(-50%) rotate(45deg);
  border-bottom: 0.1rem solid #dcdcdc;
  border-right: 0.1rem solid #dcdcdc;
  margin-top: calc(-0.5rem + 0.1rem);
}

.swatch-option-tooltip {
  pointer-events: none;
}

.missing-swatches-modal {
  max-width: 40rem;
  margin-left: auto;
}
.missing-swatches-modal .mage-error {
  padding-top: 0.8rem;
}
.missing-swatches-modal .swatch-attribute + .swatch-attribute {
  margin-top: 2rem;
}

@media (hover: none) {
  .missing-swatches-modal-visible .swatch-option-tooltip {
    display: none !important;
  }
}

.swatch-opt {
  font-size: 1.1em;
}
.swatch-opt .swatch-option.back-in-stock-alert:after {
  background: rgba(220, 220, 220, 0.55) url(../images/icons/notification-panel/icon_notification-outline.svg) center/64% no-repeat;
  opacity: 1;
}
.swatch-opt .swatch-option.back-in-stock-alert.text {
  padding-right: 2em;
}
.swatch-opt .swatch-option.back-in-stock-alert.text:after {
  left: auto;
  right: 0;
  background-color: transparent;
  transform: translateY(-50%);
}
.swatch-opt .mage-error {
  font-size: 1em;
  width: 100%;
  margin-left: 0;
}

[class^=swatch-opt-] {
  font-size: 0.45em;
  min-height: calc(1 * (3.2em + 8px));
  opacity: 1;
  transition: opacity 0.3s;
  pointer-events: none;
}
@media (min-width: 48.01em) {
  [class^=swatch-opt-] {
    pointer-events: auto;
  }
}
[class^=swatch-opt-] .swatch-option.disabled.back-in-stock-alert, [class^=swatch-opt-] .swatch-option[disabled].back-in-stock-alert {
  cursor: not-allowed;
}
[class^=swatch-opt-] .swatch-option.disabled.back-in-stock-alert.text, [class^=swatch-opt-] .swatch-option[disabled].back-in-stock-alert.text {
  opacity: 0.65;
  color: #000;
  background: #fff;
}
[class^=swatch-opt-] .swatch-option.disabled.back-in-stock-alert.text:before, [class^=swatch-opt-] .swatch-option[disabled].back-in-stock-alert.text:before {
  border: 2px solid #dcdcdc;
}
[class^=swatch-opt-] .swatch-option.disabled.back-in-stock-alert.image:after, [class^=swatch-opt-] .swatch-option.disabled.back-in-stock-alert.color:after, [class^=swatch-opt-] .swatch-option[disabled].back-in-stock-alert.image:after, [class^=swatch-opt-] .swatch-option[disabled].back-in-stock-alert.color:after {
  opacity: 1;
}
[class^=swatch-opt-]:empty {
  opacity: 0;
}

.cs-product-tile__container .swatch-attribute.color .swatch-option {
  transition: all 0.2s ease-in-out;
  scale: 1;
}
.cs-product-tile__container .swatch-attribute.color .swatch-option:hover {
  scale: 1.3;
}
.cs-product-tile__container .swatch-attribute.color .swatch-option.selected,
.cs-product-tile__container .swatch-attribute.color .swatch-option.bis-selected {
  scale: 1.3;
}

.catalog-product-view .swatch-option.image {
  background-size: contain;
}
.catalog-product-view .swatch-option.image:hover {
  background-size: contain !important;
}

.block.products-related .cs-products-carousel__product-tile .swatch-option.image {
  background-size: contain !important;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Remove browser's margins, paddings and list style rules
 */
.cs-topbar {
  background: transparent;
  display: none;
  width: 100%;
  font-size: 1.1rem;
}
@media (min-width: 64em) {
  .cs-topbar {
    display: flex;
    z-index: 302;
  }
}
.cs-topbar__wrapper {
  display: flex;
  flex-wrap: wrap;
  flex-grow: 1;
  align-items: center;
  height: 2.7rem;
}
@media (min-width: 64em) {
  .cs-topbar__wrapper {
    flex-wrap: nowrap;
  }
}
.cs-topbar__item {
  color: #212121;
  display: flex;
  flex: 0 0 auto;
  white-space: nowrap;
  height: 100%;
}
.cs-topbar__item--usps {
  margin-right: auto;
  display: none;
}
@media (min-width: 80em) {
  .cs-topbar__item--usps {
    display: flex;
  }
}
.cs-topbar__item--hotline {
  align-items: center;
  flex: 1 1;
  justify-content: flex-end;
}
.cs-topbar__item--language {
  height: 100%;
}
.cs-topbar__list, .cs-topbar__item > ul {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
}
.cs-topbar__list-item {
  margin-bottom: 0;
  height: 2.7rem;
  display: flex;
  align-items: center;
  position: relative;
}
.cs-topbar__list-item:not(:last-child) {
  padding-right: 1.3rem;
}
.cs-topbar__list-item:not(:last-child) {
  margin-right: 1.3rem;
}
.cs-topbar__list-item:not(:last-child):before {
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  content: "";
  border-right: 0.2rem solid #fff;
}
.cs-topbar__text {
  color: #212121;
}
.cs-topbar__link {
  margin-right: 0.9rem;
}
.cs-topbar__link, .cs-topbar__link:visited {
  color: #000000;
  text-decoration: none;
}
.cs-topbar__link:hover, .cs-topbar__link:focus, .cs-topbar__link:active, .cs-topbar__link:visited:hover, .cs-topbar__link:visited:focus {
  color: #666;
  text-decoration: none;
}
.cs-topbar__hotline {
  display: flex;
  align-items: center;
}
.cs-topbar__phone-number {
  font-weight: 700;
  margin-right: 0.9rem;
}
.cs-topbar__phone-number, .cs-topbar__phone-number:visited {
  color: #000;
  text-decoration: none;
}
.cs-topbar__phone-number:hover, .cs-topbar__phone-number:focus, .cs-topbar__phone-number:active, .cs-topbar__phone-number:visited:hover, .cs-topbar__phone-number:visited:focus {
  color: #000;
  text-decoration: none;
}

.cs-container--top-bar {
  background-color: #f4f4f4;
  max-width: none;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
h1 {
  font-family: "proxima-nova", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Oxygen, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  font-size: 2.6rem;
  line-height: 1.1;
  color: #212121;
  font-weight: 700;
  text-transform: uppercase;
  margin: 1rem 0 2rem;
}

h2 {
  font-family: "proxima-nova", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Oxygen, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  font-size: 2.6rem;
  line-height: 1.1;
  color: #212121;
  font-weight: 700;
  text-transform: uppercase;
  margin: 1rem 0 2rem;
}

h3 {
  font-family: "proxima-nova", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Oxygen, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  font-size: 1.8rem;
  line-height: 1.1;
  color: #212121;
  font-weight: 700;
  text-transform: uppercase;
  margin: 1rem 0 2rem;
}

h4 {
  font-family: "proxima-nova", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Oxygen, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  font-size: 1.5rem;
  line-height: 1.1;
  color: #212121;
  font-weight: 700;
  text-transform: uppercase;
  margin: 1rem 0 2rem;
}

h5 {
  font-family: "proxima-nova", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Oxygen, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  font-size: 1.1rem;
  line-height: 1.1;
  color: #212121;
  font-weight: 700;
  text-transform: uppercase;
  margin: 1rem 0 2rem;
}

h6 {
  font-family: "proxima-nova", system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Oxygen, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  font-size: 1rem;
  line-height: 1.1;
  color: #212121;
  font-weight: 700;
  text-transform: uppercase;
  margin: 1rem 0 2rem;
}

a, a:visited {
  color: #000000;
  text-decoration: none;
}
a:hover, a:focus, a:active, a:visited:hover, a:visited:focus {
  color: #666;
  text-decoration: none;
}

ul,
ol {
  margin: 0 0 2.5rem;
  padding: 0 0 0 4rem;
}
ul > li,
ol > li {
  margin: 0 0 1rem;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-image-teaser__slide--has-video-teaser .cs-image-teaser__picture {
  position: relative;
}
.cs-image-teaser__slide--has-video-teaser .cs-image-teaser__content,
.cs-image-teaser__slide--has-video-teaser .cs-image-teaser__overlay,
.cs-image-teaser__slide--has-video-teaser .cs-image-teaser__gradient,
.cs-image-teaser__slide--has-video-teaser .cs-image-teaser__optimizer-container {
  z-index: 1;
}
.cs-image-teaser [data-video-teaser] {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  z-index: 1;
}
.cs-image-teaser [data-video-teaser]:empty {
  display: none;
}
.cs-image-teaser [id^=video-teaser] {
  width: 100%;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  pointer-events: none;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-visually-hidden {
  border: 0;
  clip: rect(0 0 0 0);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  white-space: nowrap;
  /* 1 */
}

.links.cs-header__user-nav.cs-header-user-nav .cs-header-user-nav__label {
  display: none;
}

.catalog-product-view .column.main {
  padding: 0rem;
}

@media (min-width: 48em) {
  .cs-container--page-pdp-details-nav {
    display: none;
  }
}
.product-info-main.cs-buybox .cs-buybox__section--product-form .product-options-bottom .cs-buybox__qty-wrapper {
  display: none;
}

.cs-product-details {
  max-width: 180rem;
  margin: 0 auto;
}
.cs-product-details .cs-product-details__item--main .cs-product-details__content .cs-product-details-main {
  flex-direction: column;
}
.cs-product-details .cs-product-details__item--reviews .cs-product-details__content {
  flex-direction: column;
}
.cs-product-details .cs-product-details__item--reviews .cs-product-details__content .cs-reviews-summary {
  border-right: none;
  padding-right: unset;
  margin-right: unset;
}

.cs-page-category {
  padding-bottom: 0 !important;
}
.cs-page-category .category-image {
  max-width: 180rem;
  margin: 0 auto;
  line-height: 0px;
}

#product-attribute-specs-table tr {
  display: flex;
}
#product-attribute-specs-table tr td {
  border-bottom: unset;
}

#fundacja-zdrowy-biust {
  border: 2px solid #ffd9dd;
  background-color: #fff5f6;
  padding: 10px;
}
#fundacja-zdrowy-biust a {
  display: flex;
  flex-direction: column;
  align-items: center;
  font-size: 13px;
  color: #ec6ea5;
}

.product-aditional-modals {
  display: flex;
  flex-wrap: wrap;
}
.product-aditional-modals #product-size-modal,
.product-aditional-modals #product-delivery-modal {
  width: 50%;
  display: flex;
  justify-content: center;
}
.product-aditional-modals #product-size-modal .custom-modal-open,
.product-aditional-modals #product-delivery-modal .custom-modal-open {
  background: transparent;
  color: #484848;
  font-weight: 400;
}
.product-aditional-modals #product-foundation-modal {
  width: 100%;
}

.checkout-index-index .cs-progress-bar__item._active .cs-progress-bar__indicator:before {
  color: white;
}

.eu-delivery-wrapper {
  background: #fc0;
  border: 2px solid #fc0;
  padding: 5px 10px;
  display: flex;
  flex-direction: row;
  width: -moz-fit-content;
  width: fit-content;
}

.eu-delivery-wrapper .eu-delivery-text {
  text-transform: uppercase;
  font-weight: 700;
  margin-right: 16px;
  text-align: center;
}

.eu-delivery-wrapper:hover {
  color: initial;
}

.eu-delivery-wrapper:hover {
  border-color: #f3c202;
}

.eu-delivery-wrapper img {
  width: 50px;
}

.cs-product-tile__main.product-item-details > .cs-product-tile__colection-sku-wrapper {
  align-items: center;
}

.cs-product-tile__main.product-item-details > .cs-product-tile__colection-sku-wrapper > .cs-product-tile__collection {
  line-height: 21px;
}

.cs-product-tile__main.product-item-details > .cs-product-tile__colection-sku-wrapper > .cs-product-tile__sku {
  line-height: 21px;
}

.cms-firma-corin p {
  margin: 2rem;
}

.cs-dashboard .form.create.account .choice {
  display: block;
}
.cs-dashboard .form.create.account .choice .field-tooltip-content {
  margin-top: 1rem;
}

.form .field + .field button {
  margin-top: 1rem;
}

.cs-checkout__sidebar .table-caption {
  margin-top: 2rem;
}

.product-info-main .cs-buybox__section.cs-buybox__section--product-form {
  display: flex;
  flex-direction: column-reverse;
}
.product-info-main .cs-buybox__section.cs-buybox__section--product-form #product_addtocart_form {
  order: 1;
}
.product-info-main .cs-buybox__section.cs-buybox__section--product-form .cs-indicator-fast-shipping {
  cursor: default;
}
.product-info-main .cs-buybox__section.cs-buybox__section--product-form .product-info-form-after {
  display: flex;
  flex-direction: row-reverse;
  justify-content: flex-end;
  align-items: center;
  margin: 0 0 1rem;
  cursor: default;
}
.product-info-main .cs-buybox__section.cs-buybox__section--product-form .product-info-form-after #product-delivery-modal {
  cursor: pointer;
}
.product-info-main .cs-buybox__section.cs-buybox__section--product-form .product-info-form-after #product-delivery-modal .custom-modal-open {
  background: transparent;
  color: #37b841;
  padding: 0px;
  margin: 0px;
  margin-left: 6px;
  text-transform: uppercase;
  font-weight: 700;
  font-size: 1.2rem;
}
.product-info-main .cs-buybox__section.cs-buybox__section--product-form .product-info-form-after #product-delivery-modal .custom-modal-open span {
  text-decoration: underline;
}
.product-info-main .cs-buybox__section.cs-buybox__section--product-form .product-info-form-after .stock.cs-buybox__stock {
  margin: 0px;
}
.product-info-main .cs-buybox__section.cs-buybox__section--product-form .product-info-form-after .stock.cs-buybox__stock .cs-buybox__stock-icon.cs-buybox__stock-icon--available {
  width: 2.4em;
  height: 2.4em;
}

.product-info-main .product-aditional-modals #product-gpsr-modal {
  width: 50%;
  display: flex;
  justify-content: center;
}
.product-info-main .product-aditional-modals #product-gpsr-modal .custom-modal-open {
  background: white;
  color: #484848;
  font-weight: 400;
}

@media (max-width: 48em) {
  .product-info-main .product-aditional-modals #product-size-modal .custom-modal-open {
    margin: 0;
  }
  .product-info-main .product-aditional-modals #product-gpsr-modal .custom-modal-open {
    margin: 0;
  }
}
.cs-page-product__buybox .product-info-main.cs-buybox {
  width: -webkit-fill-available;
}

.product-info-sklad-konserwacja {
  display: flex;
  flex-direction: row;
}
.product-info-sklad-konserwacja .product-info-sklad {
  width: 50%;
}
.product-info-sklad-konserwacja .product-info-konserwacja {
  width: 50%;
}
.product-info-sklad-konserwacja .product-info-konserwacja .konserwacja.wrapper {
  row-gap: 0.5rem;
  display: flex;
  flex-direction: column;
}
.product-info-sklad-konserwacja .product-info-konserwacja .konserwacja-item {
  display: flex;
  align-items: center;
  gap: 15px;
}

@media (max-width: 48em) {
  .product-info-sklad-konserwacja {
    display: flex;
    flex-direction: column;
  }
  .product-info-sklad-konserwacja .product-info-sklad {
    width: 100%;
  }
  .product-info-sklad-konserwacja .product-info-konserwacja {
    width: 100%;
  }
}
.cs-product-details-main__item--description .cs-product-details-main__content {
  display: flex;
  flex-direction: column;
}
.cs-product-details-main__item--description .cs-product-details-main__content .product.attribute.description {
  order: 1;
}
.cs-product-details-main__item--description .cs-product-details-main__content .product-info-sklad-konserwacja {
  order: 2;
}
.cs-product-details-main__item--description .cs-product-details-main__content .product-info-trusted-reviews-section {
  order: 3;
  margin-top: 2rem;
}

.section-wrapper.section-6.row.home-section-6 .section-caption {
  text-align: center;
}
.section-wrapper.section-6.row.home-section-6 .slider-items-wraper .block {
  padding-left: 10px;
  padding-right: 10px;
}
.fotorama__stage__frame.fotorama-video-container .product-video {
  aspect-ratio: 3/4.5;
  height: 100%;
  width: auto;
}
.fotorama__stage__frame.fotorama-video-container .product-video .ytp-gradient-top {
  display: none;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.blog-page #maincontent,
.blog-post-view #maincontent {
  max-width: 1140px;
}
.blog-page .column.main,
.blog-post-view .column.main {
  padding: 2rem 0 0;
}
.blog-page .page-title-wrapper .page-title,
.blog-post-view .page-title-wrapper .page-title {
  font-family: linotype-didot-headline, serif;
  font-style: normal;
  text-align: center;
  font-size: 3.2rem;
  font-weight: 400;
  text-transform: uppercase;
  margin: 8rem 0 1rem;
  padding: 0px;
}
@media (max-width: 48em) {
  .blog-page .page-title-wrapper .page-title,
.blog-post-view .page-title-wrapper .page-title {
    margin: 2rem 0 1rem;
  }
}
.blog-page .cs-breadcrumbs,
.blog-post-view .cs-breadcrumbs {
  display: flex;
  align-items: center;
  flex-direction: row;
  justify-content: center;
  padding-top: 0px;
  margin-bottom: 4rem;
}
@media (max-width: 48em) {
  .blog-page .cs-breadcrumbs,
.blog-post-view .cs-breadcrumbs {
    margin-bottom: 0;
  }
}
.blog-page .widget.block.block-categories .block-title,
.blog-post-view .widget.block.block-categories .block-title {
  display: none;
}
.blog-page .widget.block.block-categories .accordion,
.blog-post-view .widget.block.block-categories .accordion {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  border-bottom: 1px solid #f4f4f4;
  margin-bottom: 4rem;
}
@media (max-width: 48em) {
  .blog-page .widget.block.block-categories .accordion,
.blog-post-view .widget.block.block-categories .accordion {
    margin-bottom: 1em;
  }
}
.blog-page .widget.block.block-categories .accordion .item,
.blog-post-view .widget.block.block-categories .accordion .item {
  padding: 1rem;
  margin: 0 0.5rem;
  text-transform: uppercase;
  position: relative;
}
.blog-page .widget.block.block-categories .accordion .item a,
.blog-post-view .widget.block.block-categories .accordion .item a {
  color: #484848;
}
.blog-page .widget.block.block-categories .accordion .item a:hover,
.blog-post-view .widget.block.block-categories .accordion .item a:hover {
  color: #484848;
  text-decoration: none;
}
.blog-page .widget.block.block-categories .accordion .item::after,
.blog-post-view .widget.block.block-categories .accordion .item::after {
  content: "";
  position: absolute;
  width: auto;
  transform: scaleX(0);
  height: 1px;
  bottom: 10px;
  left: 0.7em;
  right: 0.7em;
  background-color: #000000;
  transform-origin: bottom right;
  transition: transform 0.25s ease-out;
}
.blog-page .widget.block.block-categories .accordion .item:hover::after,
.blog-post-view .widget.block.block-categories .accordion .item:hover::after {
  transform: scaleX(1);
  transform-origin: bottom left;
}
@media (min-width: 48em) {
  .blog-page div.post-list-wrapper .post-list-item.col-md-12:first-child .post-content,
.blog-post-view div.post-list-wrapper .post-list-item.col-md-12:first-child .post-content {
    display: flex;
    align-items: center;
  }
  .blog-page div.post-list-wrapper .post-list-item.col-md-12:first-child .post-content .post-ftimg-hld,
.blog-post-view div.post-list-wrapper .post-list-item.col-md-12:first-child .post-content .post-ftimg-hld {
    width: 66%;
  }
  .blog-page div.post-list-wrapper .post-list-item.col-md-12:first-child .post-content .post-description,
.blog-post-view div.post-list-wrapper .post-list-item.col-md-12:first-child .post-content .post-description {
    width: 33%;
    padding: 10px 15px;
  }
}
.blog-page div.post-list-wrapper .post-list-item .post-holder,
.blog-post-view div.post-list-wrapper .post-list-item .post-holder {
  height: calc(100% - 40px);
}
.blog-page h2.post-title,
.blog-post-view h2.post-title {
  text-transform: none;
  font-size: 2.8rem;
  font-weight: 700;
}
.blog-page h2.post-title a,
.blog-post-view h2.post-title a {
  text-decoration: underline !important;
  color: #212121;
}
.blog-page .block-tagclaud .block-title,
.blog-post-view .block-tagclaud .block-title {
  display: none;
}
.blog-page .block-tagclaud .tagclaud-hld,
.blog-post-view .block-tagclaud .tagclaud-hld {
  display: flex;
  flex-wrap: wrap;
  margin: 2rem;
  justify-content: center;
  align-items: center;
}
.blog-page .block-tagclaud .tagclaud-hld span,
.blog-post-view .block-tagclaud .tagclaud-hld span {
  border: 1px solid #000000;
  padding: 1rem;
  margin: 1rem;
}
.blog-page #post-comments .c-replyform textarea,
.blog-post-view #post-comments .c-replyform textarea {
  width: 100%;
  min-height: 150px;
}
.blog-page #post-comments .c-replyform textarea,
.blog-page #post-comments .c-replyform input,
.blog-post-view #post-comments .c-replyform textarea,
.blog-post-view #post-comments .c-replyform input {
  border: 1px solid #dcdcdc;
}
.blog-page #post-comments .c-replyform button,
.blog-post-view #post-comments .c-replyform button {
  background-color: #000000;
}

.toolbar.toolbar-blog-posts .cs-pagination__content {
  display: flex;
  justify-content: center;
  margin: 1rem 0;
}
.toolbar.toolbar-blog-posts .cs-pagination__content .pages-label {
  margin: 0;
}
.toolbar.toolbar-blog-posts .cs-pagination__content .pages-item-previous,
.toolbar.toolbar-blog-posts .cs-pagination__content .pages-item-next {
  margin: 0 1rem;
}
.toolbar.toolbar-blog-posts .cs-pagination__content svg {
  height: 15px;
}
.toolbar.toolbar-blog-posts .items.pages-items {
  display: flex;
}
.toolbar.toolbar-blog-posts .items.pages-items .item {
  margin: 0 1rem;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.custom-modal-open {
  background-color: pink;
  padding: 1rem;
  margin-top: 1rem;
  border: none;
  width: -moz-fit-content;
  width: fit-content;
  color: white;
  font-size: 1.7rem;
  font-weight: 700;
  text-transform: uppercase;
  cursor: pointer;
  display: flex;
  align-items: center;
}
@media (max-width: 48em) {
  .custom-modal-open {
    margin-left: 1.5rem;
  }
}
.custom-modal-open .present {
  margin-right: 1rem;
  animation: tilt-shaking 1s;
  animation-iteration-count: infinite;
}
@keyframes tilt-shaking {
  0% {
    transform: rotate(0deg);
  }
  10% {
    transform: rotate(8deg);
  }
  20% {
    transform: rotate(0deg);
  }
  30% {
    transform: rotate(-8deg);
  }
  40% {
    transform: rotate(0deg);
    transform: translateY(-5px);
  }
}
.custom-modal-open .rozmiar,
.custom-modal-open .dostawa {
  margin-right: 1rem;
}

.custom-modal {
  display: none;
  z-index: -1;
  opacity: 0;
  height: 0px;
  width: 0px;
}
.custom-modal .content {
  z-index: -1;
}
.custom-modal .custom-modal-close {
  background-color: black;
  padding: 1rem;
  margin: 1rem;
  border: none;
  width: -moz-fit-content;
  width: fit-content;
  color: white;
  font-size: 1.7rem;
  font-weight: 700;
  text-transform: uppercase;
  margin: 1rem auto;
  cursor: pointer;
}

.custom-modal.open {
  z-index: 997;
  opacity: 1;
  position: fixed;
  left: 0;
  top: 0;
  width: 100vw;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}
.custom-modal.open .content {
  padding: 2rem;
  z-index: 999;
  max-width: 95vw;
  max-height: 95vh;
  min-width: 300px;
  min-height: 300px;
  overflow: scroll;
  background-color: white;
  margin: 0 auto;
  width: 800px;
  height: -moz-fit-content;
  height: fit-content;
}
.custom-modal.open .overlay {
  z-index: 998;
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  bottom: 0;
  background-color: #000000b3;
}

#modal-rozmiarowka .table-responsive-s {
  overflow: scroll;
}
#modal-rozmiarowka .table-responsive-s .table {
  width: 1200px;
  max-width: 1200px;
}
#modal-rozmiarowka .table-responsive-s .sticky {
  position: sticky;
  left: 0;
  background: white;
}

#modal-dostawa .table {
  width: 1200px;
  max-width: 1200px;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-header__search.cs-header__search--active {
  position: fixed;
  top: 0;
  left: 0;
  height: 100vh;
}
.cs-header__search.cs-header__search--active .cs-header-search {
  position: block;
  background: white;
  margin: 0 auto;
  max-width: 180rem;
  width: 100%;
}
@media (min-width: 48em) {
  .cs-header__search.cs-header__search--active .cs-header-search {
    padding: 2rem;
  }
}
.cs-header__search.cs-header__search--active #search_autocomplete {
  transform: none;
  display: block !important;
  position: relative !important;
  height: calc(100% - 60px);
  top: 0;
  left: 0;
  box-shadow: unset;
  overflow: scroll;
  min-width: 100% !important;
  width: 100%;
  max-width: 180rem;
  max-height: unset;
}
.cs-header__search.cs-header__search--active #search_autocomplete dl {
  border-top: unset;
}
.cs-header__search.cs-header__search--active #search_autocomplete dd {
  border-bottom: unset;
}
.cs-header__search.cs-header__search--active .cs-header-search__field::before {
  display: none;
}
.cs-header__search.cs-header__search--active .cs-header-search__field::after {
  display: none;
}
.cs-header__search.cs-header__search--active .cs-header-search__field .cs-header-search__input {
  font-size: 2.5rem;
  padding: 0.75rem 1rem;
  border: none;
  border-bottom: 1px solid #888888;
}
@media (min-width: 48em) {
  .cs-header__search.cs-header__search--active .cs-header-search__field .cs-header-search__input {
    font-size: 3.5rem;
  }
}
.cs-header__search.cs-header__search--active .cs-header-search__field .cs-header-search__action .cs-header-search__button {
  display: none;
}
.cs-header__search.cs-header__search--active .cs-header-search__field .cs-header-search__action .cs-header-search__close svg {
  width: 4rem;
  height: 4rem;
}
@media (min-width: 48em) {
  .cs-header__search.cs-header__search--active .smile-elasticsuite-autocomplete-result {
    display: grid;
    grid-template-columns: 1fr 3fr;
    grid-template-rows: repeat(3, 1fr);
    grid-column-gap: 0px;
    grid-row-gap: 0px;
    height: inherit;
  }
  .cs-header__search.cs-header__search--active .smile-elasticsuite-autocomplete-result .term {
    grid-area: 1/1/2/2;
  }
  .cs-header__search.cs-header__search--active .smile-elasticsuite-autocomplete-result .product {
    grid-area: 1/2/4/3;
  }
  .cs-header__search.cs-header__search--active .smile-elasticsuite-autocomplete-result .product_attribute {
    grid-area: 2/1/3/2;
  }
  .cs-header__search.cs-header__search--active .smile-elasticsuite-autocomplete-result .category {
    grid-area: 3/1/4/2;
    padding-bottom: 0 !important;
  }
}
.cs-header__search.cs-header__search--active .smile-elasticsuite-autocomplete-result .category {
  padding-bottom: 3rem;
}
.cs-header__search.cs-header__search--active .smile-elasticsuite-autocomplete-result .autocomplete-list.product {
  display: flex;
  flex-wrap: wrap;
}
.cs-header__search.cs-header__search--active .smile-elasticsuite-autocomplete-result .autocomplete-list.product .autocomplete-list-title {
  width: 100%;
}
.cs-header__search.cs-header__search--active .smile-elasticsuite-autocomplete-result .autocomplete-list.product .product-item {
  display: flex;
  flex-direction: column;
  width: 50%;
  height: -moz-fit-content;
  height: fit-content;
}
@media (min-width: 48em) {
  .cs-header__search.cs-header__search--active .smile-elasticsuite-autocomplete-result .autocomplete-list.product .product-item {
    width: 25%;
  }
}
.cs-header__search.cs-header__search--active .smile-elasticsuite-autocomplete-result .autocomplete-list.product .product-item:hover {
  background: white;
}
.cs-header__search.cs-header__search--active .smile-elasticsuite-autocomplete-result .autocomplete-list.product .product-item .product-image-box {
  width: 100%;
  margin-right: 0px;
}
.cs-header__search.cs-header__search--active .smile-elasticsuite-autocomplete-result .autocomplete-list.product .product-item .product-image-box img {
  max-width: 300px;
  max-height: 400px;
  width: 100%;
  height: 100%;
}
.cs-header__search.cs-header__search--active .smile-elasticsuite-autocomplete-result .autocomplete-list.product .product-item .cs-autocomplete__item-details {
  width: 100%;
  flex: unset;
  max-width: 300px;
  margin: 0 auto;
}
.cs-header__search.cs-header__search--active .smile-elasticsuite-autocomplete-result .autocomplete-list.product .product-item .cs-autocomplete__item-details .cs-autocomplete__item-name {
  color: #333333;
  font-weight: 400;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cms-home .page-title {
  width: 100%;
  text-align: center;
  margin: 0;
  padding: 0;
  background-color: #d5868e;
}
.cms-home .page-title h1 {
  font-family: linotype-didot-headline, serif;
  font-style: normal;
  font-size: 4rem;
  font-weight: 400;
  margin: 0;
  padding: 2rem;
  color: white;
  text-transform: unset;
}
@media (max-width: 63.99em) {
  .cms-home .page-title h1 {
    font-size: 3rem;
  }
}
@media (max-width: 47.99em) {
  .cms-home .page-title h1 {
    font-size: 2.5rem;
  }
}
.cms-home .column.main .cs-container.cs-container--static-block:nth-child(3) {
  background-color: #FEF5FB;
}
.cms-home .column.main .cs-container.cs-container--static-block:nth-child(7) {
  background-color: #FEF5FB;
}
.cms-home .column.main .section-wrapper.section-1 {
  margin: 3rem 0 !important;
}
.cms-home .column.main .section-wrapper.section-7,
.cms-home .column.main .section-wrapper.section-3,
.cms-home .column.main .section-wrapper.section-4,
.cms-home .column.main .section-wrapper.section-5,
.cms-home .column.main .section-wrapper.section-6 {
  margin: 4rem auto !important;
}
@media (max-width: 48em) {
  .cms-home .column.main .section-wrapper.section-7,
.cms-home .column.main .section-wrapper.section-3,
.cms-home .column.main .section-wrapper.section-4,
.cms-home .column.main .section-wrapper.section-5,
.cms-home .column.main .section-wrapper.section-6 {
    margin: 2rem auto !important;
  }
}
.cms-home .column.main .section-wrapper {
  margin: 0;
}
.cms-home .slick-track {
  display: flex;
}
.cms-home .section-wrapper.section-1 .col-md-6 {
  padding: 0px;
  position: relative;
  display: flex;
  justify-content: center;
}
.cms-home .section-wrapper.section-1 .col-md-6 a {
  display: flex;
  justify-content: center;
}
.cms-home .section-wrapper.section-1 .col-md-6 .content {
  position: absolute;
  bottom: 0;
  color: white;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 2rem;
  margin: 2rem;
  background-color: #00000066;
  max-width: 355px;
  width: 100%;
}
.cms-home .section-wrapper.section-1 .col-md-6 .content h2 {
  text-transform: uppercase;
  color: white;
  margin: 1rem 0;
  font-size: 3rem;
  font-family: linotype-didot-headline, serif;
  font-style: normal;
  font-weight: 400;
}
.cms-home .section-wrapper.section-1 .col-md-6 .content span {
  font-size: 1.5rem;
}
@media (min-width: 48em) {
  .cms-home .section-wrapper.section-1 .col-md-6 .content {
    padding: 3rem 3rem;
    margin: 3rem;
    max-width: 375px;
  }
  .cms-home .section-wrapper.section-1 .col-md-6 .content h2 {
    font-size: 3rem;
  }
  .cms-home .section-wrapper.section-1 .col-md-6 .content span {
    font-size: 1.7rem;
  }
}
@media (min-width: 64em) {
  .cms-home .section-wrapper.section-1 .col-md-6 .content {
    padding: 4rem 7rem;
    margin: 4rem;
    max-width: 505px;
  }
}
.cms-home .section-wrapper.section-1 .col-md-6.col-md-6:last-child {
  margin-top: 10px;
}
@media (min-width: 48em) {
  .cms-home .section-wrapper.section-1 .col-md-6.col-md-6:first-child {
    padding-right: 5px;
  }
  .cms-home .section-wrapper.section-1 .col-md-6.col-md-6:last-child {
    padding-left: 5px;
    margin-top: 0px;
  }
}
.cms-home .section-wrapper.section-2 {
  padding-bottom: 3rem;
}
.cms-home .section-wrapper.section-2 .title {
  display: flex;
  justify-content: center;
  text-align: center;
  padding: 2rem;
}
@media (min-width: 48em) {
  .cms-home .section-wrapper.section-2 .title {
    padding: 3rem;
  }
}
.cms-home .section-wrapper.section-2 .title h2 {
  text-transform: uppercase;
  font-size: 1.8rem;
  color: #7A2B77;
  font-family: linotype-didot-headline, serif;
  font-style: normal;
  font-weight: 400;
  margin: 0px;
}
@media (min-width: 48em) {
  .cms-home .section-wrapper.section-2 .title h2 {
    font-size: 3rem;
  }
}
.cms-home .section-wrapper.section-2 .slick-list.draggable {
  overflow: hidden;
}
.cms-home .section-wrapper.section-2 .product-item-details {
  display: flex;
  flex-direction: column;
}
.cms-home .section-wrapper.section-2 .product-item-info {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.cms-home .section-wrapper.section-2 .product-item-name {
  max-width: 240px;
  text-align: left;
}
.cms-home .section-wrapper.section-2 .product-item-name a {
  color: #7A2B77;
  line-height: 1.8rem;
  font-weight: 400;
  font-size: 1.4rem;
}
.cms-home .section-wrapper.section-2 .price-wrapper {
  justify-content: center;
}
.cms-home .section-wrapper.section-2 .price-wrapper .price {
  color: #7A2B77;
  font-weight: 400;
}
.cms-home .section-wrapper.section-3 {
  max-width: 1200px;
  overflow: hidden;
}
.cms-home .section-wrapper.section-3 .container {
  padding: 0;
}
.cms-home .section-wrapper.section-3 .container video {
  position: relative;
  width: 100%;
}
@media (min-width: 48em) {
  .cms-home .section-wrapper.section-3 .container video {
    position: absolute;
  }
}
.cms-home .section-wrapper.section-3 .img-wrappper {
  background-color: white;
}
@media (max-width: 48em) {
  .cms-home .section-wrapper.section-3 .img-wrappper {
    margin-bottom: 2rem;
  }
}
.cms-home .section-wrapper.section-3 .img-wrappper .row {
  background-color: white;
  margin: 0;
}
@media (min-width: 48em) {
  .cms-home .section-wrapper.section-3 .img-wrappper .row {
    flex-direction: row;
  }
}
.cms-home .section-wrapper.section-3 .img-wrappper h3 {
  color: #484848;
  font-size: 3rem;
  text-transform: uppercase;
  font-family: linotype-didot-headline, serif;
  font-style: normal;
  font-weight: 400;
  margin: 0;
}
.cms-home .section-wrapper.section-3 .img-wrappper p {
  color: #484848;
  font-size: 1.5rem;
  font-weight: 400;
  text-transform: unset;
  padding-bottom: 1rem;
  margin: 1rem 0 1rem;
}
.cms-home .section-wrapper.section-3 .img-wrappper a {
  display: block;
  width: -moz-fit-content;
  width: fit-content;
  color: #484848;
  background: white;
  padding: 1rem 4rem;
  border: 1px solid #484848;
  font-weight: 700;
}
@media (max-width: 48em) {
  .cms-home .section-wrapper.section-3 .img-wrappper a {
    width: 100%;
    text-align: center;
  }
}
.cms-home .section-wrapper.section-4 .title {
  display: flex;
  justify-content: center;
  text-align: center;
}
@media (min-width: 48em) {
  .cms-home .section-wrapper.section-4 .title {
    padding: 3rem;
  }
}
.cms-home .section-wrapper.section-4 .title h2 {
  text-transform: uppercase;
  color: #57565A;
  font-family: linotype-didot-headline, serif;
  font-style: normal;
  font-weight: 400;
  margin: 0px;
  font-size: 2rem;
}
@media (min-width: 48em) {
  .cms-home .section-wrapper.section-4 .title h2 {
    font-size: 3rem;
  }
}
.cms-home .section-wrapper.section-4 .popular-categories-wraper {
  justify-content: center;
  overflow: hidden;
}
.cms-home .section-wrapper.section-4 .popular-categories-wraper .block {
  text-align: center;
  padding: 1rem;
}
.cms-home .section-wrapper.section-4 .popular-categories-wraper .block h3 {
  color: #57565A;
  font-weight: 400;
  font-size: 1.7rem;
}
@media (min-width: 48em) {
  .cms-home .section-wrapper.section-4 .popular-categories-wraper .block h3 {
    font-size: 2rem;
  }
}
.cms-home .section-wrapper.section-5 .title {
  text-align: center;
  flex-direction: column;
  align-items: center;
}
.cms-home .section-wrapper.section-5 .title h2 {
  color: #c09197;
  font-size: 3rem;
  text-transform: uppercase;
  font-family: linotype-didot-headline, serif;
  font-style: normal;
  font-weight: 400;
}
.cms-home .section-wrapper.section-5 .title span {
  color: #c09197;
  font-size: 2rem;
}
.cms-home .section-wrapper.section-5 .title .stars {
  display: flex;
  justify-content: center;
  margin: 2rem 0;
}
.cms-home .section-wrapper.section-5 .title .stars .star::before {
  content: url("../images/icons/star.svg");
  width: 40px;
  height: 40px;
  display: block;
}
.cms-home .section-wrapper.section-5 .content {
  display: flex;
}
.cms-home .section-wrapper.section-5 .content .left {
  width: 20%;
  align-items: flex-end;
}
.cms-home .section-wrapper.section-5 .content .left .top {
  margin-top: 30px;
}
@media (max-width: 1250px) {
  .cms-home .section-wrapper.section-5 .content .left .top {
    margin-top: 0px;
  }
}
.cms-home .section-wrapper.section-5 .content .left .bottom {
  margin-left: 30px;
}
@media (max-width: 1250px) {
  .cms-home .section-wrapper.section-5 .content .left .bottom {
    margin-left: 0px;
  }
}
.cms-home .section-wrapper.section-5 .content .center {
  width: 60%;
  display: flex;
  flex-direction: column;
  align-items: center;
  position: relative;
}
.cms-home .section-wrapper.section-5 .content .center a {
  padding: 1rem 2rem;
  margin: 2rem;
  background: #f2cad4;
  color: white;
  text-transform: uppercase;
  font-weight: 300;
  font-size: 2rem;
}
.cms-home .section-wrapper.section-5 .content .center .arrow::before {
  content: url("../images/icons/written-arrow.svg");
  width: 250px;
  position: absolute;
}
.cms-home .section-wrapper.section-5 .content .center .arrow-top-left::before {
  left: 0;
  top: 50px;
}
.cms-home .section-wrapper.section-5 .content .center .arrow-top-right::before {
  right: 0;
  top: 50px;
  transform: scaleX(-1);
}
.cms-home .section-wrapper.section-5 .content .center .arrow-bottom-right::before {
  right: 25px;
  width: 230px;
  bottom: 100px;
  transform: rotate(172deg);
}
.cms-home .section-wrapper.section-5 .content .center .arrow-bottom-left::before {
  left: 0;
  bottom: 90px;
  width: 270px;
  transform: scaleX(-1) rotate(175deg);
}
@media (max-width: 1700px) {
  .cms-home .section-wrapper.section-5 .content .center .arrow::before {
    width: 220px;
  }
}
@media (max-width: 1500px) {
  .cms-home .section-wrapper.section-5 .content .center .arrow::before {
    width: 200px;
  }
}
@media (max-width: 1350px) {
  .cms-home .section-wrapper.section-5 .content .center .arrow::before {
    width: 180px;
  }
}
@media (max-width: 1250px) {
  .cms-home .section-wrapper.section-5 .content .center .arrow::before {
    display: none;
  }
}
.cms-home .section-wrapper.section-5 .content .right {
  width: 20%;
}
.cms-home .section-wrapper.section-5 .content .right .top {
  margin-left: 30px;
}
@media (max-width: 1250px) {
  .cms-home .section-wrapper.section-5 .content .right .top {
    margin-left: 0px;
  }
}
.cms-home .section-wrapper.section-5 .content .left,
.cms-home .section-wrapper.section-5 .content .right {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.cms-home .section-wrapper.section-5 .content .left img,
.cms-home .section-wrapper.section-5 .content .right img {
  width: 150px;
  height: 150px;
  border: 4px solid #c09197;
  border-radius: 50%;
}
.cms-home .section-wrapper.section-5 .content .left p,
.cms-home .section-wrapper.section-5 .content .right p {
  color: #c09197;
  font-size: 1.7rem;
}
.cms-home .section-wrapper.section-6 {
  align-items: center;
}
.cms-home .section-wrapper.section-6 .image {
  padding: 0;
  overflow: hidden;
}
@media (max-width: 48em) {
  .cms-home .section-wrapper.section-6 .image {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-bottom: 2rem;
  }
}
.cms-home .section-wrapper.section-6 .products {
  padding: 0;
}
@media (min-width: 48em) {
  .cms-home .section-wrapper.section-6 .products {
    padding-right: 15px;
    padding-left: 15px;
  }
}
@media (max-width: 48em) {
  .cms-home .section-wrapper.section-6 .products {
    max-width: 600px;
    margin: 0 auto;
  }
}
.cms-home .section-wrapper.section-6 .products > h3 {
  font-size: 2rem;
  margin: 0;
  text-transform: uppercase;
  color: #484848;
  font-family: linotype-didot-headline, serif;
  font-style: normal;
  font-weight: 400;
}
@media (min-width: 48em) {
  .cms-home .section-wrapper.section-6 .products > h3 {
    font-size: 3rem;
  }
}
.cms-home .section-wrapper.section-6 .products > p {
  font-size: 1.7rem;
  margin-bottom: 3rem;
  color: #484848;
}
.cms-home .section-wrapper.section-6 .block-products-list {
  overflow: hidden;
}
.cms-home .section-wrapper.section-6 .block-products-list .product-item {
  display: flex;
  flex-direction: column;
  align-items: center;
}
@media (max-width: 48em) {
  .cms-home .section-wrapper.section-6 .block-products-list .product-item .product-item-info {
    display: flex;
    flex-direction: column;
    align-items: center;
  }
}
.cms-home .section-wrapper.section-6 .block-products-list .product-item .product-item-details {
  max-width: 240px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.cms-home .section-wrapper.section-6 .block-products-list .product-item .product-item-details .product-item-name a {
  color: #484848;
  line-height: 1.8rem;
  font-weight: 400;
  font-size: 1.4rem;
}
.cms-home .section-wrapper.section-6 .block-products-list .product-item .product-item-details .price {
  color: #484848;
  font-weight: 400;
}
.cms-home .section-wrapper.section-7 {
  max-width: 1200px;
  justify-content: center;
}
.cms-home .section-wrapper.section-7 .item {
  max-width: 750px;
}
@media (max-width: 48em) {
  .cms-home .section-wrapper.section-7 .item {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}
.cms-home .section-wrapper.section-7 .item .content {
  margin-bottom: 2rem;
}
@media (max-width: 48em) {
  .cms-home .section-wrapper.section-7 .item .content {
    padding: 1rem;
  }
}
.cms-home .section-wrapper.section-7 .item .content .headline {
  font-size: 3rem;
  margin: 0;
  text-transform: uppercase;
  color: #484848;
  font-family: linotype-didot-headline, serif;
  font-style: normal;
  font-weight: 400;
}
.cms-home .section-wrapper.section-7 .item .content .sub-headline {
  color: #484848;
  font-weight: 400;
  text-transform: unset;
  padding-bottom: 1rem;
}
.cms-home .section-wrapper.section-7 .item .content .button {
  color: #484848;
  padding: 1rem 4rem;
  border: 1px solid #484848;
  font-weight: 700;
}
@media (max-width: 48em) {
  .cms-home .section-wrapper.section-7 .item .content .button {
    display: block;
    text-align: center;
  }
}
@media (max-width: 48em) {
  .cms-home .section-wrapper.section-7 .item:nth-child(1) {
    display: flex;
    flex-direction: column-reverse;
    margin-bottom: 2rem;
  }
}
.cms-home .section-wrapper.section-newsletter.row .newsletter-wrapper {
  position: relative;
  width: 100%;
  max-width: 1170px;
  margin: 2rem auto;
  background: white;
  padding: 10px;
}
@media (min-width: 960px) {
  .cms-home .section-wrapper.section-newsletter.row .newsletter-wrapper {
    padding-left: 54px;
    padding-top: 45px;
    padding-bottom: 54px;
    padding-right: 0px;
  }
}
.cms-home .section-wrapper.section-newsletter.row .newsletter-wrapper .newsletter-title {
  font-family: linotype-didot-headline, serif;
  font-style: normal;
  font-size: 4rem;
  font-weight: 400;
  margin-bottom: 0px;
}
.cms-home .section-wrapper.section-newsletter.row .newsletter-wrapper .newsletter-subtitle {
  font-size: 23px;
  font-weight: 500;
}
.cms-home .section-wrapper.section-newsletter.row .newsletter-wrapper .cta {
  display: block;
  font-size: 16px;
  padding: 7px 27px;
  letter-spacing: 1px;
  text-transform: uppercase;
  background: #f1b6d3;
  width: -moz-fit-content;
  width: fit-content;
  margin-top: 28px;
}
.cms-home .section-wrapper.section-newsletter.row .newsletter-wrapper .newsletter-img {
  position: absolute;
  top: 9px;
  right: 61px;
  width: 257px;
  height: auto;
  display: none;
}
@media (min-width: 960px) {
  .cms-home .section-wrapper.section-newsletter.row .newsletter-wrapper .newsletter-img {
    display: block;
  }
}
.cms-home .section-wrapper.section-newsletter.row .newsletter-wrapper .content-wrapper {
  background-color: #f1b6d3;
  width: 100%;
  margin-top: 11px;
  padding-left: 16px;
  font-size: large;
}
.cms-home .section-wrapper.section-newsletter.row .newsletter-wrapper .content-wrapper .content-list {
  display: flex;
  flex-direction: column;
  padding: 12px;
  gap: 3px;
}
@media (min-width: 960px) {
  .cms-home .section-wrapper.section-newsletter.row .newsletter-wrapper .content-wrapper .content-list {
    max-width: 70%;
    min-height: 278px;
    line-height: 2;
  }
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.normal-price.extra {
  display: flex;
  align-items: center;
  padding: 1rem 0;
}
.normal-price.extra .normal-price-text {
  padding-right: 1rem;
  color: #cc1c10 !important;
}
.normal-price.extra .price {
  color: #cc1c10 !important;
}

.old-price {
  display: flex;
  align-items: center;
  border-top: solid 1px #dcdcdc;
  padding-top: 1rem;
}
.old-price .old-price-text {
  padding-right: 1rem;
}
.old-price .price {
  color: #696969 !important;
  font-size: 1.3rem !important;
  font-weight: 700 !important;
  text-decoration: line-through !important;
}

.catalog-category-view .cs-product-tile__price .price-box, .brands-index-index .cs-product-tile__price .price-box {
  display: block;
  align-items: flex-start !important;
  justify-content: flex-start !important;
  flex-direction: column !important;
}
.catalog-category-view .cs-product-tile__price .price-box .omnibus-price, .brands-index-index .cs-product-tile__price .price-box .omnibus-price {
  color: #696969;
  order: 1;
  display: block !important;
  padding-bottom: 0;
  border-bottom: unset;
}

.omnibus-price {
  color: #696969;
  order: -1;
  display: block;
  padding-bottom: 1rem;
  border-bottom: solid 1px #dcdcdc;
}

.cs-product-tile__content .omnibus-price,
.cs-autocomplete__item .omnibus-price,
.slick-slider .omnibus-price {
  display: none;
}

.cs-product-tile__content .old-price,
.cs-autocomplete__item .old-price,
.slick-slider .old-price {
  border: none;
  padding-top: 0;
}
.cs-product-tile__content .old-price .old-price-text,
.cs-autocomplete__item .old-price .old-price-text,
.slick-slider .old-price .old-price-text {
  display: none;
}

.cs-product-tile__content .normal-price,
.cs-autocomplete__item .normal-price,
.slick-slider .normal-price {
  border: none;
  padding-bottom: 0;
}
.cs-product-tile__content .normal-price .normal-price-text,
.cs-autocomplete__item .normal-price .normal-price-text,
.slick-slider .normal-price .normal-price-text {
  display: none;
}

.cs-product-tile__content .normal-price.extra,
.cs-autocomplete__item .normal-price.extra,
.slick-slider .normal-price.extra {
  padding: 0;
}
.mp-reward-cart {
  display: none;
}

.mp-reward-points.mp-product {
  display: none;
}

.col {
  width: auto;
}

.account.customer-referral-index #maincontent,
.account.customer-rewards-index #maincontent,
.account.customer-rewards-transaction #maincontent {
  max-width: 1280px;
}

#maincontent .block.block-collapsible-nav,
.account.customer-rewards-transaction #maincontent .block.block-collapsible-nav,
.block.block-collapsible-nav .account.customer-referral-index #maincontent .block.block-collapsible-nav {
  margin-top: 4rem;
  padding-right: 0;
}

.account.customer-referral-index #maincontent .block.block-collapsible-nav,
.account.customer-rewards-index #maincontent .block.block-collapsible-nav,
.account.customer-rewards-transaction #maincontent .block.block-collapsible-nav {
  width: calc(100% / 4);
  box-shadow: 1px 3px 3rem 0 rgba(33, 33, 33, 0.28);
  float: left;
}

@media (max-width: 47.99em) {
  .account.customer-referral-index #maincontent .block.block-collapsible-nav,
.account.customer-rewards-index #maincontent .block.block-collapsible-nav,
.account.customer-rewards-transaction #maincontent .block.block-collapsible-nav {
    width: 100%;
  }
}
.account.customer-referral-index #maincontent .block.block-collapsible-nav,
.account.customer-rewards-index #maincontent .block.block-collapsible-nav,
.account.customer-rewards-transaction #maincontent .block.block-collapsible-nav {
  padding-top: 2rem;
  padding-bottom: 2rem;
}

.account.customer-referral-index #maincontent .block.block-collapsible-nav .title.block-collapsible-nav-title,
.account.customer-rewards-index #maincontent .block.block-collapsible-nav .title.block-collapsible-nav-title,
.account.customer-rewards-transaction #maincontent .block.block-collapsible-nav .title.block-collapsible-nav-title {
  padding-bottom: 1rem;
  border-bottom: 1px solid #dcdcdc;
  padding-left: 2rem;
}

.account.customer-referral-index #maincontent .block.block-collapsible-nav .nav.items,
.account.customer-rewards-index #maincontent .block.block-collapsible-nav .nav.items,
.account.customer-rewards-transaction #maincontent .block.block-collapsible-nav .nav.items {
  padding-top: 2rem;
}

.account.customer-referral-index #maincontent .block.block-collapsible-nav .nav.item.current,
.account.customer-rewards-index #maincontent .block.block-collapsible-nav .nav.item.current,
.account.customer-rewards-transaction #maincontent .block.block-collapsible-nav .nav.item.current {
  border-left: 3px solid black;
}

.account.customer-referral-index #maincontent .block.block-collapsible-nav .nav.item,
.account.customer-rewards-index #maincontent .block.block-collapsible-nav .nav.item,
.account.customer-rewards-transaction #maincontent .block.block-collapsible-nav .nav.item {
  padding-left: 2rem;
  padding-right: 2rem;
}

.account.customer-referral-index #maincontent .block.block-collapsible-nav .nav.item a,
.account.customer-rewards-index #maincontent .block.block-collapsible-nav .nav.item a,
.account.customer-rewards-transaction #maincontent .block.block-collapsible-nav .nav.item a {
  color: #696969;
}

.account.customer-referral-index #maincontent .column.main,
.account.customer-rewards-index #maincontent .column.main,
.account.customer-rewards-transaction #maincontent .column.main {
  padding-left: 3.5rem;
  width: calc(100% - (100% / 4));
}

@media (max-width: 47.99em) {
  .account.customer-referral-index #maincontent .column.main,
.account.customer-rewards-index #maincontent .column.main,
.account.customer-rewards-transaction #maincontent .column.main {
    width: calc(100% - (100% / 3));
  }
}
.cs-select {
  display: block;
  font-size: 1em;
  line-height: 1.275em;
  padding: 0.75em 2.3em 0.75em 1em;
  color: #212121;
  border-radius: 0;
  border: 1px solid #dcdcdc;
  box-shadow: none;
  width: 100%;
  max-width: 100%;
  margin: 0 0 0.2em;
  outline: 0;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-color: #fff;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 9' fill='%23dcdcdc'%3e%3cpath d='M0 1.2C0 .5.6 0 1.2 0c.3 0 .6.1.8.3l6 5.9 6-5.9c.5-.4 1.2-.3 1.7.1.4.4.4 1.1 0 1.5L8.9 8.7c-.5.4-1.2.4-1.7 0L.4 2a.9.9 0 0 1-.4-.8z'/%3e%3c/svg%3e"), linear-gradient(0deg, transparent 0%, transparent 100%);
  background-repeat: no-repeat, repeat;
  background-position: right 0.8em top 52%, 0 0;
  background-size: 0.7em auto, 100%;
  transition: border-color 0.5s;
}

.block-reward-dashboard {
  color: #333333;
}

.form.form-rewards-setting .legend span {
  font-size: 26px;
}

.fieldset .email-notification span {
  font-size: 26px;
}

input#notification-expire,
input#notification-update {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  width: 20px;
  height: 20px;
  background-color: white;
  cursor: pointer;
  border-width: 2px;
  border-style: solid;
  border-color: #cccccc;
  -o-border-image: initial;
     border-image: initial;
  border-radius: 4px;
  transition: 0.3s;
}

input#notification-expire:checked,
input#notification-update:checked {
  background-color: #ffffff;
  border-color: #333333;
  background-size: 14px 14px;
  background-repeat: no-repeat;
  background-position: center;
}

.block-reward-dashboard .email-notification span {
  font-weight: 500;
}

.block-reward-dashboard .primary {
  text-align: center;
  margin-top: 15px;
}

.block-reward-dashboard .action.save.primary,
.box-content .action.primary button {
  background: #ffb3bb;
  border: none;
  border-radius: 8px;
  color: #ffffff;
  padding: 12px 40px;
  font-size: 16px;
  font-weight: bold;
  cursor: pointer;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  box-shadow: 0 8px 15px rgba(0, 0, 0, 0.1);
}

.block-reward-dashboard .action.save.primary:hover,
.box-content .action.primary button:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 20px rgba(0, 0, 0, 0.15);
}

.block-reward-dashboard .action.save.primary:active,
.box-content .action.primary button:active {
  transform: translateY(1px);
  box-shadow: 0 6px 10px rgba(0, 0, 0, 0.15);
}

.url_and_code .copy {
  color: white;
  background: #ffb3bb;
  text-align: center;
  line-height: 30px;
  cursor: pointer;
  display: inline-block;
  width: 55px;
  height: 30px;
  text-transform: uppercase;
  position: inherit;
}

.mp_input {
  height: 30px;
  align-content: center;
}

input.mp-input {
  width: 80%;
  background-color: #f9f9f9;
  border: 2px solid #ccc;
  padding: 6px 3px;
  font-size: 13px;
  color: #333;
}

.invite-friend textarea {
  height: 127px;
  width: 100%;
  resize: none;
}

.mp-title {
  margin-top: 0;
}

.send-from {
  height: 23px;
  margin-top: 10px;
}

.action.primary.bt-send {
  text-align: center;
}

@media (max-width: 47.99em) {
  .account.customer-referral-index #maincontent .column.main,
.account.customer-rewards-index #maincontent .column.main,
.account.customer-rewards-transaction #maincontent .column.main {
    padding-left: 0;
  }
}
#send-by,
.invite-friend textarea {
  background-color: #f9f9f9;
  border: 2px solid #ccc;
  padding: 5px 15px;
  font-size: 16px;
  color: #333;
  cursor: pointer;
  transition: all 0.3s ease;
  width: 100%;
}

.invite-message textarea {
  background-color: #f9f9f9;
  border: 2px solid #ccc;
  padding: 5px 15px;
  font-size: 16px;
  color: #333;
  cursor: pointer;
  transition: all 0.3s ease;
  height: 200px;
  width: 100%;
  resize: none;
}

#send-by:hover,
.invite-friend textarea:hover,
.invite-message textarea:hover,
input.mp-input:hover {
  border-color: #888;
}

#send-by:focus,
.invite-friend textarea:focus,
.invite-message textarea:focus,
input.mp-input:focus {
  outline: none;
  box-shadow: none;
}

.invite-friend .comment {
  padding: 10px;
}

.item-balance .available {
  background: #6bc772;
}

.item-balance .earned {
  background: #ffb3bb;
}

.item-balance .paid {
  background: #dbc183;
}

#mp_reward_referral .box-content,
.table-wrapper.additional-addresses,
.table-wrapper.reviews,
.table-wrapper.transactions-recent {
  overflow-x: auto;
}

#mp_reward_referral .box-content::-webkit-scrollbar,
.table-wrapper.additional-addresses::-webkit-scrollbar,
.table-wrapper.orders-history::-webkit-scrollbar,
.table-wrapper.orders-recent::-webkit-scrollbar,
.table-wrapper.reviews::-webkit-scrollbar,
.table-wrapper.transactions-recent::-webkit-scrollbar {
  height: 8px !important;
}

#mp_reward_referral .box-content::-webkit-scrollbar-thumb,
.table-wrapper.additional-addresses::-webkit-scrollbar-thumb,
.table-wrapper.orders-history::-webkit-scrollbar-thumb,
.table-wrapper.orders-recent::-webkit-scrollbar-thumb,
.table-wrapper.reviews::-webkit-scrollbar-thumb,
.table-wrapper.transactions-recent::-webkit-scrollbar-thumb {
  background: #b6b6b6;
  border-radius: 10px;
}

#mp_reward_referral .box-content::-webkit-scrollbar-thumb:hover,
.table-wrapper.additional-addresses::-webkit-scrollbar-thumb:hover,
.table-wrapper.orders-history::-webkit-scrollbar-thumb:hover,
.table-wrapper.orders-recent::-webkit-scrollbar-thumb:hover,
.table-wrapper.reviews::-webkit-scrollbar-thumb:hover,
.table-wrapper.transactions-recent::-webkit-scrollbar-thumb:hover {
  background: #9a9a9a;
}

table#additional-addresses-table,
table#my-reviews-table,
table#rewards-transaction-table,
table#transactions-history {
  word-break: normal;
  margin-top: 30px;
  margin-bottom: 30px;
  width: 110%;
}

table#rewards-transaction-table thead,
table#transactions-history thead {
  border-bottom: 2px solid #dcdcdc;
}

.block-reward-dashboard .col,
.block-reward-dashboard-transaction .col,
.block.block-addresses-list .col,
.table-wrapper.reviews .col,
table#transactions-history .col {
  white-space: nowrap;
  padding-left: 14px;
  padding-right: 14px;
}

.block-reward-dashboard .field.choice,
.block-reward-dashboard-transaction .field.choice,
.block.block-addresses-list .field.choice,
.table-wrapper.reviews .field.choice,
table#transactions-history .field.choice {
  margin: 5px 0;
}

@media (min-width: 48em) {
  .cs-dashboard__sidebar {
    width: calc(100% / 3);
  }
}
@media (min-width: 64em) {
  .cs-dashboard__sidebar {
    width: calc(100% / 4);
  }
}
@media (min-width: 80em) {
  .cs-dashboard__sidebar {
    width: calc(100% / 4);
  }
}
@media (min-width: 90em) {
  .cs-dashboard__sidebar {
    width: calc(100% / 4);
  }
}
.reward-transactions-toolbar.toolbar.bottom .cs-pagination__content {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
}

.reward-transactions-toolbar.toolbar.bottom li.item.cs-pagination__item,
.reward-transactions-toolbar.toolbar.bottom li.item.current.cs-pagination__item.cs-pagination__item--current {
  display: inline-block;
  margin: 0;
}

.reward-transactions-toolbar.toolbar.bottom .item.cs-pagination__item a,
.reward-transactions-toolbar.toolbar.bottom span.cs-pagination__number.cs-pagination__number--current {
  width: 30px;
  height: 30px;
  border: 2px solid #8b7033;
  align-content: center;
  text-align: center;
  margin-left: 5px;
  margin-right: 5px;
  font-size: 20px;
  display: block;
}

.reward-transactions-toolbar.toolbar.bottom li.item.cs-pagination__item a,
.reward-transactions-toolbar.toolbar.bottom li.item.cs-pagination__item span,
.reward-transactions-toolbar.toolbar.bottom li.item.current.cs-pagination__item.cs-pagination__item--current a,
.reward-transactions-toolbar.toolbar.bottom li.item.current.cs-pagination__item.cs-pagination__item--current span {
  color: #8b7033;
}

.reward-transactions-toolbar.toolbar.bottom p.label.pages-label.cs-pagination__prefix-label {
  padding-right: 15px;
  margin-bottom: 0;
}

.reward-transactions-toolbar.toolbar.bottom .pages.cs-pagination {
  display: inline-block;
}

.reward-transactions-toolbar.toolbar.bottom .cs-toolbar__item.cs-toolbar__item--amount {
  display: inline-block;
}

.reward-transactions-toolbar.toolbar.bottom .cs-toolbar__item.cs-toolbar__item--amount p {
  margin-bottom: 0;
}

.reward-transactions-toolbar.toolbar.bottom .cs-toolbar__item.cs-toolbar__item--amount span.toolbar-number {
  padding: 0 2px;
}

.reward-transactions-toolbar.toolbar.bottom .cs-toolbar__item.cs-toolbar__item--limiter {
  display: inline-block;
}

.reward-transactions-toolbar.toolbar.bottom {
  display: flex;
  justify-content: space-between;
  margin-top: 20px;
  align-items: center;
}

#my-orders-table th.col {
  word-break: normal;
}

table#my-orders-table {
  overflow-y: auto;
  width: 110%;
  max-width: none;
}

.block.refer-via-social .social-buttons {
  margin-top: 10px;
}

.block.refer-via-social .social-buttons a {
  color: #ffb3bb;
  font-size: 35px;
  padding: 0 10px;
}

.block.refer-via-social {
  margin-top: 25px;
  margin-bottom: 25px;
}

table.data.table {
  word-break: normal;
}

td.cs-cart-table__col.cs-cart-item__qty.col.qty {
  padding: 0 20px !important;
}

.table-checkout-shipping-method td.col.col-method {
  align-content: center;
  text-align: center;
}

@media (max-width: 1023px) {
  .table-wrapper.transactions-recent .table thead {
    display: none;
  }

  .table-wrapper.transactions-recent .table tbody td:before {
    padding-right: 10px;
    content: attr(data-th) ": ";
    display: inline-block;
    color: #212121;
    font-weight: 700;
    vertical-align: top;
  }

  .table-wrapper.transactions-recent .table tbody td {
    border: none;
    display: block;
    font-size: 1.4rem;
    padding: 0.2rem;
  }

  .table-wrapper.transactions-recent .table tbody td.col.comment,
table#transactions-history tbody td.col.comment {
    text-wrap: auto;
  }

  .table-wrapper.transactions-recent .table tbody tr {
    border-bottom: 1px solid #9c9c9c;
    padding-bottom: 10px;
    padding-top: 20px;
    display: block;
  }

  .reward-transactions-toolbar.toolbar.bottom .pages.cs-pagination {
    display: flex;
    justify-content: center;
    margin-top: 25px;
    margin-bottom: 40px;
  }

  .reward-transactions-toolbar.toolbar.bottom .cs-toolbar__item.cs-toolbar__item--amount {
    display: block;
  }

  .reward-transactions-toolbar.toolbar.bottom .cs-toolbar__item.cs-toolbar__item--limiter {
    display: block;
  }

  .reward-transactions-toolbar.toolbar.bottom {
    display: block;
    text-align: center;
    margin-top: -10px;
  }
}
.cms-warunki-dostaw .columns.column.main {
  padding: 4rem 2rem 0;
}

.bf-text {
  font-size: 9rem;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.checkout-index-index .mp_reward_messages {
  max-width: 93rem;
}
.checkout-index-index .mp_reward_messages .messages {
  padding-bottom: 90px;
}

.mp_reward_messages.messages {
  padding-bottom: 90px !important;
}
@media (max-width: 48em) {
  .mp_reward_messages.messages {
    padding-bottom: 0px !important;
  }
}

.payment-method-przelewy24__method--promoted {
  display: none;
}

.payment-method.payment-method-przelewy24._active {
  max-width: 470px;
}
.cms-black-friday-html .columns, .cms-newsletter-landing-page-html .columns {
  max-width: 980px;
}
.cms-black-friday-html .bf-text, .cms-newsletter-landing-page-html .bf-text {
  font-size: 5.5rem;
  font-weight: 900;
  line-height: normal;
}
.cms-black-friday-html .bf-row, .cms-newsletter-landing-page-html .bf-row {
  margin: 0 auto;
}
/* plumrocket rma extension custom styles */
.sales-guest-view table#my-orders-table,
.sales-guest-invoice table#my-orders-table,
.sales-guest-shipment table#my-orders-table {
  width: 100%;
}
.sales-guest-view .page-title-wrapper,
.sales-guest-invoice .page-title-wrapper,
.sales-guest-shipment .page-title-wrapper {
  border: none;
  margin: 0;
  padding: 0;
}
.sales-guest-view .page-title-wrapper .order-status,
.sales-guest-invoice .page-title-wrapper .order-status,
.sales-guest-shipment .page-title-wrapper .order-status {
  margin-top: 6px;
  padding: 5px 10px;
  border: 2px solid #cccccc;
  border-radius: 3px;
  display: inline-block;
  margin: 3px 0 0;
  padding: 2px 10px;
  text-transform: uppercase;
  vertical-align: top;
}
.sales-guest-view h1.page-title,
.sales-guest-invoice h1.page-title,
.sales-guest-shipment h1.page-title {
  margin-right: 25px;
  display: inline-block;
  font-size: 40px;
  margin-bottom: 40px;
  font-weight: 300;
  line-height: 1.1;
}
.sales-guest-view .actions-toolbar.order-actions-toolbar,
.sales-guest-invoice .actions-toolbar.order-actions-toolbar,
.sales-guest-shipment .actions-toolbar.order-actions-toolbar {
  float: none;
  text-align: left;
  margin-bottom: 25px;
}
.sales-guest-view .actions-toolbar.order-actions-toolbar .actions,
.sales-guest-invoice .actions-toolbar.order-actions-toolbar .actions,
.sales-guest-shipment .actions-toolbar.order-actions-toolbar .actions {
  text-align: left;
  padding: 3px 0px;
}
.sales-guest-view .actions-toolbar.order-actions-toolbar .actions a,
.sales-guest-invoice .actions-toolbar.order-actions-toolbar .actions a,
.sales-guest-shipment .actions-toolbar.order-actions-toolbar .actions a {
  margin-right: 30px;
  background: #efefef;
  padding: 3px 8px;
}
.sales-guest-view .actions-toolbar.order-actions-toolbar .actions a.returns,
.sales-guest-invoice .actions-toolbar.order-actions-toolbar .actions a.returns,
.sales-guest-shipment .actions-toolbar.order-actions-toolbar .actions a.returns {
  background: #000000;
  color: #fff;
}
.sales-guest-view .actions-toolbar.order-actions-toolbar .action,
.sales-guest-invoice .actions-toolbar.order-actions-toolbar .action,
.sales-guest-shipment .actions-toolbar.order-actions-toolbar .action {
  margin-right: 30px;
}
.sales-guest-view .actions-toolbar.order-actions-toolbar .action.print,
.sales-guest-invoice .actions-toolbar.order-actions-toolbar .action.print,
.sales-guest-shipment .actions-toolbar.order-actions-toolbar .action.print {
  display: block;
  float: right;
  text-decoration: none;
}
.sales-guest-view .order-details-items.ordered,
.sales-guest-invoice .order-details-items.ordered,
.sales-guest-shipment .order-details-items.ordered {
  padding: 25px;
  border: 1px solid #cccccc;
  margin-bottom: 40px;
}
.sales-guest-view .table tfoot,
.sales-guest-invoice .table tfoot,
.sales-guest-shipment .table tfoot {
  background: #f5f5f5;
}
.sales-guest-view .table tfoot tr > th,
.sales-guest-view .table tfoot tr > td,
.sales-guest-invoice .table tfoot tr > th,
.sales-guest-invoice .table tfoot tr > td,
.sales-guest-shipment .table tfoot tr > th,
.sales-guest-shipment .table tfoot tr > td {
  text-align: right;
}
.sales-guest-view .col.qty .items-qty,
.sales-guest-invoice .col.qty .items-qty,
.sales-guest-shipment .col.qty .items-qty {
  display: block;
  list-style: none;
  margin: 0;
  padding: 0;
}
.sales-guest-view .block.block-order-details-view,
.sales-guest-invoice .block.block-order-details-view,
.sales-guest-shipment .block.block-order-details-view {
  margin-bottom: 50px;
}
.sales-guest-view .block.block-order-details-view .block-title,
.sales-guest-invoice .block.block-order-details-view .block-title,
.sales-guest-shipment .block.block-order-details-view .block-title {
  border-bottom: 1px solid #c6c6c6;
  margin-bottom: 25px;
  padding-bottom: 10px;
}
.sales-guest-view .block.block-order-details-view .block-title strong,
.sales-guest-invoice .block.block-order-details-view .block-title strong,
.sales-guest-shipment .block.block-order-details-view .block-title strong {
  font-size: 2.2rem;
  font-weight: 300;
}
.sales-guest-view .block.block-order-details-view .block-content > .box,
.sales-guest-invoice .block.block-order-details-view .block-content > .box,
.sales-guest-shipment .block.block-order-details-view .block-content > .box {
  clear: none;
  float: left;
  width: 25%;
  margin-bottom: 30px;
}
.sales-guest-view .block.block-order-details-view .block-title,
.sales-guest-invoice .block.block-order-details-view .block-title,
.sales-guest-shipment .block.block-order-details-view .block-title {
  border-bottom: 1px solid #c6c6c6;
  margin-bottom: 25px;
  padding-bottom: 10px;
}
.sales-guest-view .block.block-order-details-view .block-title span,
.sales-guest-invoice .block.block-order-details-view .block-title span,
.sales-guest-shipment .block.block-order-details-view .block-title span {
  font-size: 2.2rem;
  font-weight: 300;
}
.sales-guest-view .column.main .order-details-items .table-wrapper .data.table > thead > tr > th,
.sales-guest-invoice .column.main .order-details-items .table-wrapper .data.table > thead > tr > th,
.sales-guest-shipment .column.main .order-details-items .table-wrapper .data.table > thead > tr > th {
  border-bottom: 1px solid #cccccc;
}
.sales-guest-view .order-items.table-wrapper .col.price,
.sales-guest-invoice .order-items.table-wrapper .col.price,
.sales-guest-shipment .order-items.table-wrapper .col.price {
  text-align: right;
}
.sales-guest-view .order-items.table-wrapper .col.qty,
.sales-guest-invoice .order-items.table-wrapper .col.qty,
.sales-guest-shipment .order-items.table-wrapper .col.qty {
  text-align: right;
}
.sales-guest-view .order-items.table-wrapper .col.subtotal,
.sales-guest-invoice .order-items.table-wrapper .col.subtotal,
.sales-guest-shipment .order-items.table-wrapper .col.subtotal {
  text-align: right;
}

.account.prrma-returns-create .cs-dashboard__columns > .cs-dashboard__main,
.account.prrma_returns_address .cs-dashboard__columns > .cs-dashboard__main,
.account.prrma-returns-view .cs-dashboard__columns > .cs-dashboard__main,
.account.prrma_returns_guest .cs-dashboard__columns > .cs-dashboard__main,
.account.prrma_returns_history .cs-dashboard__columns > .cs-dashboard__main,
.account.prrma-returns-order_history .cs-dashboard__columns > .cs-dashboard__main,
.account.prrma_returns_print .cs-dashboard__columns > .cs-dashboard__main,
.account.prrma_returns_success .cs-dashboard__columns > .cs-dashboard__main,
.account.prrma_returns_view .cs-dashboard__columns > .cs-dashboard__main {
  width: 100%;
}

.sales-guest-form .form.form-orders-search {
  max-width: 968px;
  margin: 0 auto;
}
.sales-guest-form .form.form-orders-search .actions-toolbar {
  margin: 2rem 0;
  display: flex;
  flex-direction: row-reverse;
}
.sales-guest-form .form.form-orders-search .actions-toolbar .primary > .submit {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #000000;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  padding: 0.75em 1em;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Redirect progress bar shown with JS on the onbeforeunload event.
 * It is animated in 4 steps:
 * 1. From 0% to 50% width within first 300ms
 * 2. From 50% to 90% width within next 1500ms with logarithmic easing
 * 3. From 90% to 100% width within next 18000ms with linear easing
 * 4. At the end - blinking "error" animation to indicate loading issue
 */
.cs-redirect-progress-bar {
  display: none;
}
@media (min-width: 64em) {
  .cs-redirect-progress-bar {
    display: block;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    font-size: 0;
    height: 6px;
    background-color: #37b841;
    box-shadow: inset -80px 0px 38px -70px #fff;
    animation: redirectProgressAnimationStep1 300ms linear forwards, redirectProgressAnimationStep2 1500ms cubic-bezier(0.8, 1, 1, 1) 300ms forwards, redirectProgressAnimationStep3 18000ms linear 1800ms forwards, redirectProgressAnimationStep4 1000ms ease-in-out 19800ms infinite;
    z-index: 9999999;
    transform: scaleX(0);
    transform-origin: left;
  }
}

@keyframes redirectProgressAnimationStep1 {
  0% {
    transform: scaleX(0);
  }
  100% {
    transform: scaleX(0.5);
  }
}
@keyframes redirectProgressAnimationStep2 {
  0% {
    transform: scaleX(0.5);
  }
  100% {
    transform: scaleX(0.9);
  }
}
@keyframes redirectProgressAnimationStep3 {
  0% {
    transform: scaleX(0.9);
  }
  100% {
    transform: scaleX(1);
  }
}
@keyframes redirectProgressAnimationStep4 {
  0% {
    background-color: #e41f12;
    opacity: 1;
  }
  50% {
    opacity: 0.4;
  }
  100% {
    background-color: #e41f12;
    opacity: 1;
  }
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Remove browser's margins, paddings and list style rules
 */
/***
 * Hide native browser's scrollbar
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-slider-navigation {
  display: none;
}
@media (hover: hover) and (pointer: fine) {
  .cs-slider-navigation {
    position: absolute;
    z-index: 11;
    top: 50%;
    transform: translate3d(0, -50%, 0);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 4.4rem;
    height: 5.2rem;
    border: 0;
    border-radius: 0px;
    background: #fff;
    box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, 0.25);
    padding: 0;
    color: #000000;
    cursor: pointer;
    transition: all 0.3s;
  }
  .cs-slider-navigation--prev {
    left: 1.5rem;
  }
  .cs-slider-navigation--next {
    right: 1.5rem;
  }
  .cs-slider-navigation[disabled] {
    opacity: 0.25;
    cursor: not-allowed;
  }
  .cs-slider-navigation[disabled] svg {
    filter: grayscale(1);
  }
  .cs-slider-navigation:not([disabled]):hover {
    box-shadow: 1px 1px 10px 0 rgba(0, 0, 0, 0.25);
  }
  .cs-slider-navigation__icon {
    width: 1.4rem;
    height: 2.7rem;
    fill: currentColor;
  }
}

/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-slider-pagination {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 0.8rem;
  min-height: 3rem;
}
.cs-slider-pagination--fraction {
  gap: 0;
  white-space: pre-wrap;
  color: inherit;
  font-weight: 600;
}
.cs-slider-pagination--fraction span {
  color: #000;
}
.cs-slider-pagination__bullet {
  position: relative;
  border-radius: 2px;
  background: #f4f4f4;
  border: 0;
  inline-size: 2.2rem;
  block-size: 0.9rem;
  transition: all 0.15s;
  overflow: hidden;
  text-indent: -99rem;
}
.cs-slider-pagination__bullet.current {
  background-color: #000;
}
.cs-slider-pagination__bullet:only-child {
  display: none;
}

/*
 * Function to get value from a list of values, based on side
 * @param {string} $variable: variable with a list of values (like paddings, margins etc.);
 * @param {string} $side: side (up / right / down / left) for which we want to get value
 * Example:
 * $component_padding: 1rem 2rem 3rem;
 * get-value-from-list($component_padding, 'right') // 2rem
 * get-value-from-list($component_padding, 'bottom') // 3rem
 */
/* stylelint-disable block-no-empty */
/* stylelint-enable */
/***
 * Hide only visually, but have it available for screen readers:
 * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 *
 * 1. For long content, line feeds are not interpreted as spaces and small width
 *    causes content to wrap 1 word per line:
 *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
 *
 * @see https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css#L130
 */
/**
 * This components is sort of unique because it's items-per-row configuration is only available for tablet+
 * This map adds possibility to 'force' provied columns configuration up to laptop resolutions.
 */
.cs-image-teaser {
  --slogan-font-size: 3.8rem;
  --description-font-size: 1.5rem;
  --gap: 0.8rem;
  /*
   * Keep CTA separated from text-content for all scenarios
   * "!important" added due to fallback from --scheme-* with button() mixin that resets margins
   */
  /**
   * Contrast Optimizers
   */
}
.cs-image-teaser:not(.cs-container--use-whole-width) .cs-image-teaser.cs-image-teaser--container-width .cs-image-teaser__slides-wrapper {
  max-width: 180rem;
  margin-left: auto;
  margin-right: auto;
}
.cs-image-teaser__slides {
  --columns: 1;
  display: grid;
  gap: var(--gap);
  grid-template-columns: repeat(var(--columns), minmax(0, 1fr));
  margin: 0;
  padding: 0;
}
.cs-image-teaser--items-in-row-mobile-2 .cs-image-teaser__slides {
  --columns: 2;
}
.cs-image-teaser__slide {
  display: inline-block;
  margin: 0;
}
.cs-image-teaser__link {
  outline-offset: calc(var(--gap) / 2 + 2);
}
.cs-image-teaser__link:focus {
  outline-offset: 0.4rem;
}
@media (prefers-reduced-motion: no-preference) {
  .cs-image-teaser__link {
    transition: outline-offset 0.25s ease;
  }
}
.cs-image-teaser__picture {
  display: block;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  overflow: hidden;
  width: 100%;
  height: auto;
  /* stylelint-disable -- stylelint doesn't know this media query yet. */
  /* stylelint-enable */
}
@media (prefers-reduced-data: reduce) {
  .cs-image-teaser__picture {
    display: none;
  }
}
.cs-image-teaser__image {
  display: block;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  background-color: #f4f4f4;
}
@media (min-width: 48em) {
  .cs-image-teaser {
    --gap: 0.8rem;
  }
  .cs-image-teaser--items-in-row-2 .cs-image-teaser__slides {
    --columns: 2;
  }
  .cs-image-teaser--items-in-row-3 .cs-image-teaser__slides {
    --columns: 3;
  }
  .cs-image-teaser--items-in-row-4 .cs-image-teaser__slides {
    --columns: 4;
  }
  .cs-image-teaser--items-in-row-5 .cs-image-teaser__slides {
    --columns: 5;
  }
  .cs-image-teaser--items-in-row-6 .cs-image-teaser__slides {
    --columns: 6;
  }
  .cs-image-teaser--items-in-row-7 .cs-image-teaser__slides {
    --columns: 7;
  }
  .cs-image-teaser--items-in-row-8 .cs-image-teaser__slides {
    --columns: 8;
  }
}
@media (min-width: 48em) and (max-width: 63.99em) {
  .cs-image-teaser--items-in-row-4:not(.cs-image-teaser--icon) .cs-image-teaser__slides {
    --columns: 2;
  }
}
.cs-image-teaser--slider {
  --gap: 0.8rem;
  --base-size: calc(100% - 0px);
  --size: var(--base-size);
  /**
   * class-based columns config relates to classnames, like '--items-in-row-4'
   * which are added to elements, depending on the CC Components configuration.
   */
  /*  container padding fix  */
}
@media (min-width: 114.375em) {
  .cs-image-teaser--slider.cs-image-teaser--container-width {
    --base-size: calc(180rem - 0px);
  }
  .cs-image-teaser--slider.cs-image-teaser--use-whole-screen:not(.cs-image-teaser--full-width-slider) {
    --base-size: 100%;
    max-width: 100%;
  }
  .cs-image-teaser--slider.cs-image-teaser--use-whole-screen:not(.cs-image-teaser--full-width-slider) .cs-image-teaser__slides {
    scroll-snap-type: x proximity;
    padding-left: calc((100% - 180rem) / 2);
    padding-right: calc((100% - 180rem) / 2);
    scroll-padding-left: calc((100% - 180rem) / 2);
    scroll-padding-right: calc((100% - 180rem) / 2);
    scroll-margin-left: calc((100vw - 180rem) / 2);
    scroll-margin-right: calc((100vw - 180rem) / 2);
  }
}
@media (hover: hover) and (pointer: fine) and (min-width: 114.375em) {
  .cs-image-teaser--slider.cs-image-teaser--container-width {
    --base-size: 180rem;
  }
}
@media (min-width: 48em) {
  .cs-image-teaser--slider {
    --gap: 0.8rem;
  }
}
@media (min-width: 48em) {
  .cs-image-teaser--slider.cs-image-teaser--items-in-row-2 {
    --size: calc(
        var(--base-size) /
            2 -
            ((1 * var(--gap)) / 2)
    );
  }
  .cs-image-teaser--slider.cs-image-teaser--items-in-row-3 {
    --size: calc(
        var(--base-size) /
            3 -
            ((2 * var(--gap)) / 3)
    );
  }
  .cs-image-teaser--slider.cs-image-teaser--items-in-row-4 {
    --size: calc(
        var(--base-size) /
            4 -
            ((3 * var(--gap)) / 4)
    );
  }
  .cs-image-teaser--slider.cs-image-teaser--items-in-row-5 {
    --size: calc(
        var(--base-size) /
            5 -
            ((4 * var(--gap)) / 5)
    );
  }
  .cs-image-teaser--slider.cs-image-teaser--items-in-row-6 {
    --size: calc(
        var(--base-size) /
            6 -
            ((5 * var(--gap)) / 6)
    );
  }
  .cs-image-teaser--slider.cs-image-teaser--items-in-row-7 {
    --size: calc(
        var(--base-size) /
            7 -
            ((6 * var(--gap)) / 7)
    );
  }
  .cs-image-teaser--slider.cs-image-teaser--items-in-row-8 {
    --size: calc(
        var(--base-size) /
            8 -
            ((7 * var(--gap)) / 8)
    );
  }
}
@media (min-width: 48em) and (max-width: 63.99em) {
  .cs-image-teaser--slider.cs-image-teaser--items-in-row-4:not(.cs-image-teaser--icon) {
    --size: calc(var(--base-size) / 2 - (1 * var(--gap) / 2));
  }
}
@media (max-width: 114.3125em) {
  .cs-image-teaser--slider.cs-image-teaser--container-width .cs-image-teaser__slides {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    scroll-padding-left: 1.5rem;
    scroll-padding-right: 1.5rem;
  }
}
@media (prefers-reduced-motion: no-preference) {
  .cs-image-teaser--slider .cs-image-teaser__slides {
    scroll-behavior: smooth;
  }
}
.cs-image-teaser--slider .cs-image-teaser__slides-wrapper {
  position: relative;
}
.cs-image-teaser--slider .cs-image-teaser__slides {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex: 0 0 100%;
  gap: 0;
  flex-wrap: nowrap;
  padding: var(--gap) 0;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-width: thin;
}
@supports (scroll-behavior: smooth) {
  .cs-image-teaser--slider .cs-image-teaser__slides {
    scroll-snap-type: x mandatory;
  }
}
@media (min-width: 48em) {
  .cs-image-teaser--slider .cs-image-teaser__slides {
    overflow: -moz-scrollbars-none;
    scrollbar-width: none;
  }
  .cs-image-teaser--slider .cs-image-teaser__slides::-webkit-scrollbar {
    display: none;
    width: 0;
    height: 0;
    background: transparent;
  }
  .cs-image-teaser--slider .cs-image-teaser__slides::-webkit-scrollbar-thumb {
    background: transparent;
    width: 0;
    height: 0;
  }
}
.cs-image-teaser--slider .cs-image-teaser__slide {
  margin: 0;
  padding: 0;
  list-style: none;
  display: inline-block;
  flex: 0 0 var(--size);
  margin-right: var(--gap);
  scroll-snap-align: start;
  min-width: 0;
}
.cs-image-teaser--slider .cs-image-teaser__slide:last-of-type {
  margin-right: 0;
}
.cs-image-teaser--slider .cs-image-teaser__image {
  display: block;
}
@media (max-width: 47.99em) {
  .cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider) {
    --gap: 0.8rem;
    --base-size: calc(100% - 0px);
    --size: var(--base-size);
  }
  .cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider).cs-image-teaser--container-width {
    margin-left: -1.5rem;
    margin-right: -1.5rem;
  }
  .cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider).cs-image-teaser--container-width .cs-image-teaser__slides {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    scroll-padding-left: 1.5rem;
    scroll-padding-right: 1.5rem;
  }
}
@media (max-width: 47.99em) and (prefers-reduced-motion: no-preference) {
  .cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider) .cs-image-teaser__slides {
    scroll-behavior: smooth;
  }
}
@media (max-width: 47.99em) {
  .cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider) .cs-image-teaser__slides-wrapper {
    position: relative;
  }
}
@media (max-width: 47.99em) {
  .cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider) .cs-image-teaser__slides {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex: 0 0 100%;
    gap: 0;
    flex-wrap: nowrap;
    padding: var(--gap) 0;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scrollbar-width: thin;
  }
  @supports (scroll-behavior: smooth) {
    .cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider) .cs-image-teaser__slides {
      scroll-snap-type: x mandatory;
    }
  }
}
@media (max-width: 47.99em) and (min-width: 48em) {
  .cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider) .cs-image-teaser__slides {
    overflow: -moz-scrollbars-none;
    scrollbar-width: none;
  }
  .cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider) .cs-image-teaser__slides::-webkit-scrollbar {
    display: none;
    width: 0;
    height: 0;
    background: transparent;
  }
  .cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider) .cs-image-teaser__slides::-webkit-scrollbar-thumb {
    background: transparent;
    width: 0;
    height: 0;
  }
}
@media (max-width: 47.99em) {
  .cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider) .cs-image-teaser__slide {
    margin: 0;
    padding: 0;
    list-style: none;
    display: inline-block;
    flex: 0 0 var(--size);
    margin-right: var(--gap);
    scroll-snap-align: start;
    min-width: 0;
  }
  .cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider) .cs-image-teaser__slide:last-of-type {
    margin-right: 0;
  }
}
@media (max-width: 47.99em) {
  .cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider) .cs-image-teaser__image {
    display: block;
  }
}
@media (min-width: 48em) {
  .cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider) .cs-image-teaser__nav,
.cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider) .cs-image-teaser__pagination {
    display: none;
  }
}
.cs-image-teaser__slide--scheme-light {
  --scheme-color: #fff;
  --scheme-background: #212121;
}
.cs-image-teaser__slide--scheme-dark {
  --scheme-color: #212121;
  --scheme-background: #fff;
}
.cs-image-teaser__slide:not(.cs-image-teaser__slide--image-uploaded) {
  background: var(--scheme-background);
}
@media (max-width: 47.99em) {
  .cs-image-teaser__slides--mobile_text-image .cs-image-teaser__slide--image-uploaded {
    order: 1;
  }
  .cs-image-teaser__slides--mobile_image-text .cs-image-teaser__slide--image-uploaded {
    order: -1;
  }
}
@media (max-width: 47.99em) {
  .cs-image-teaser--as-list-mobile .cs-image-teaser__slides {
    flex-wrap: wrap;
  }
  .cs-image-teaser--as-list-mobile .cs-image-teaser__slide {
    margin: 0 0 0.8rem;
  }
  .cs-image-teaser--as-list-mobile .cs-image-teaser__pagination,
.cs-image-teaser--as-list-mobile .cs-image-teaser__nav {
    display: none;
  }
}
.cs-image-teaser__link {
  display: block;
  height: 100%;
}
.cs-image-teaser__link, .cs-image-teaser__link:hover, .cs-image-teaser__link:visited, .cs-image-teaser__link:active, .cs-image-teaser__link:focus {
  text-decoration: none;
}
.cs-image-teaser__figure {
  height: 100%;
  position: relative;
}
.cs-image-teaser__content-wrapper {
  color: var(--scheme-color);
}
.cs-image-teaser__content-wrapper--under {
  position: relative;
  z-index: 1;
  margin: -2rem 2rem 0;
  padding: 2rem;
  background-color: var(--scheme-background);
  text-align: center;
}
.cs-image-teaser__content-wrapper--over {
  width: 100%;
  height: 100%;
  display: flex;
  padding: 2rem;
  overflow: hidden;
  align-items: flex-start;
}
.cs-image-teaser__picture + .cs-image-teaser__content-wrapper--over, .cs-image-teaser--teaser-and-text .cs-image-teaser__slide--image-uploaded .cs-image-teaser__content-wrapper--over {
  position: absolute;
  top: 0;
  left: 0;
}
.cs-image-teaser__content-wrapper--content-align-x-2 {
  justify-content: center;
  text-align: center;
}
.cs-image-teaser__content-wrapper--content-align-x-3 {
  justify-content: flex-end;
  text-align: right;
}
.cs-image-teaser__content-wrapper--content-align-y-2 {
  align-items: center;
}
.cs-image-teaser__content-wrapper--content-align-y-3 {
  align-items: flex-end;
}
.cs-image-teaser__content {
  position: relative;
}
.cs-image-teaser__text-content + .cs-image-teaser__cta {
  margin-top: 1em !important;
}
.cs-image-teaser__slogan {
  margin: 0;
  line-height: 1.1;
  font-size: var(--slogan-font-size);
  font-weight: 900;
  overflow-wrap: break-word;
  word-wrap: break-word;
  word-break: break-word;
  -webkit-hyphens: auto;
          hyphens: auto;
}
.cs-image-teaser__description {
  margin: 1em 0 0;
  line-height: 1.1;
  font-size: var(--description-font-size);
}
.cs-image-teaser__cta {
  display: none;
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta:hover, .cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta:focus, .cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta:active {
  background-color: #000000 !important;
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta:before, .cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta:after {
  content: "";
  position: absolute;
  top: -1px;
  bottom: -1px;
  right: -1px;
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta:before {
  width: 3.4em;
  border-radius: 0 0px 0px 0;
  z-index: -1;
  background: linear-gradient(0deg, transparent 0%, transparent 0%, #666 0%, #666 100%);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta:after {
  width: 3em;
  min-width: auto;
  background-color: #666;
  transition: width 0.25s linear;
  z-index: -2;
  border-radius: 0px;
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta:hover:after {
  width: calc(100% + 2px);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta, .cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #000000;
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta *, .cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta:visited * {
  color: #fff;
  fill: #fff;
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta:hover:not([disabled]), .cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta:focus:not([disabled]), .cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid transparent;
  color: #fff;
  background-color: #666;
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta:hover:not([disabled]) *, .cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta:focus:not([disabled]) *, .cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta[disabled] {
  opacity: 0.65;
  cursor: auto;
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__cta {
  display: inline-block;
  font-size: 1.4rem;
  font-weight: 700;
  text-align: center;
  position: relative;
  line-height: 1.275em;
  margin: 0;
  text-transform: none;
  padding: 0.75em 1em;
  box-sizing: border-box;
  transition: background-color 0.5s, border-color 0.5s, fill 0.5s, color 0.5s;
  vertical-align: middle;
  z-index: 5;
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__cta::before, .cs-image-teaser__slide--scheme-light .cs-image-teaser__cta::after {
  content: none;
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__cta::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__cta, .cs-image-teaser__slide--scheme-light .cs-image-teaser__cta:visited {
  cursor: pointer;
  border-radius: 0px;
  outline-offset: 1px;
  text-decoration: none;
  box-shadow: none;
  border: 1px solid #000000;
  color: #000000;
  background-color: #fff;
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__cta *, .cs-image-teaser__slide--scheme-light .cs-image-teaser__cta:visited * {
  color: #000000;
  fill: #000000;
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__cta:hover:not([disabled]), .cs-image-teaser__slide--scheme-light .cs-image-teaser__cta:focus:not([disabled]), .cs-image-teaser__slide--scheme-light .cs-image-teaser__cta:active:not([disabled]) {
  box-shadow: none;
  outline: none;
  text-decoration: none;
  border: 1px solid #666;
  color: #fff;
  background-color: #666;
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__cta:hover:not([disabled]) *, .cs-image-teaser__slide--scheme-light .cs-image-teaser__cta:focus:not([disabled]) *, .cs-image-teaser__slide--scheme-light .cs-image-teaser__cta:active:not([disabled]) * {
  color: #fff;
  fill: #fff;
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__cta[disabled] {
  opacity: 0.65;
  cursor: auto;
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta-span {
  margin-top: 0;
  z-index: 1;
  font-weight: 700;
  vertical-align: baseline;
  display: inline-block;
  line-height: 1.275em;
  letter-spacing: normal;
  padding-left: 0;
  padding-right: 3.75em;
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__cta-span {
  margin-top: 0;
  z-index: 1;
  font-weight: 700;
  vertical-align: baseline;
  display: inline-block;
  line-height: 1.275em;
  letter-spacing: normal;
  padding-left: 0;
  padding-right: 3.75em;
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__cta-icon {
  max-width: 1em;
  max-height: 1.4rem;
  z-index: 2;
  height: auto;
  width: 100%;
  position: absolute;
  top: 50%;
  transform: translate3d(0, -50%, 0);
  margin-right: 0;
  right: 0.75em;
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__cta-icon {
  max-width: 1em;
  max-height: 1.4rem;
  z-index: 2;
  height: auto;
  width: 100%;
  position: absolute;
  top: 50%;
  transform: translate3d(0, -50%, 0);
  margin-right: 0;
  right: 0.75em;
}
@media (min-width: 30em) {
  .cs-image-teaser__cta {
    display: inline-flex;
    z-index: 1;
    margin: 1.2em 0 0;
    align-items: center;
    font-size: 1.2rem;
  }
  .cs-image-teaser__cta-icon {
    width: 1.2rem;
    height: 1.4rem;
  }
}
.cs-image-teaser__overlay, .cs-image-teaser__gradient {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__overlay, .cs-image-teaser__slide--scheme-light .cs-image-teaser__optimizer-container {
  background-color: #212121;
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__overlay, .cs-image-teaser__slide--scheme-dark .cs-image-teaser__optimizer-container {
  background-color: #fff;
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__gradient--direction-x-1.cs-image-teaser__gradient--direction-y-1 {
  background: linear-gradient(135deg, #212121 0%, rgba(33, 33, 33, 0) 85%);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__gradient--direction-x-1.cs-image-teaser__gradient--direction-y-1 {
  background: linear-gradient(135deg, #fff 0%, rgba(255, 255, 255, 0) 85%);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__gradient--direction-x-1.cs-image-teaser__gradient--direction-y-2 {
  background: linear-gradient(90deg, #212121 0%, rgba(33, 33, 33, 0) 85%);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__gradient--direction-x-1.cs-image-teaser__gradient--direction-y-2 {
  background: linear-gradient(90deg, #fff 0%, rgba(255, 255, 255, 0) 85%);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__gradient--direction-x-1.cs-image-teaser__gradient--direction-y-3 {
  background: linear-gradient(45deg, #212121 0%, rgba(33, 33, 33, 0) 85%);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__gradient--direction-x-1.cs-image-teaser__gradient--direction-y-3 {
  background: linear-gradient(45deg, #fff 0%, rgba(255, 255, 255, 0) 85%);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__gradient--direction-x-2.cs-image-teaser__gradient--direction-y-1 {
  background: linear-gradient(180deg, #212121 0%, rgba(33, 33, 33, 0) 85%);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__gradient--direction-x-2.cs-image-teaser__gradient--direction-y-1 {
  background: linear-gradient(180deg, #fff 0%, rgba(255, 255, 255, 0) 85%);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__gradient--direction-x-2.cs-image-teaser__gradient--direction-y-2 {
  background: linear-gradient(90deg, #212121 0%, rgba(33, 33, 33, 0) 85%);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__gradient--direction-x-2.cs-image-teaser__gradient--direction-y-2 {
  background: linear-gradient(90deg, #fff 0%, rgba(255, 255, 255, 0) 85%);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__gradient--direction-x-2.cs-image-teaser__gradient--direction-y-3 {
  background: linear-gradient(0deg, #212121 0%, rgba(33, 33, 33, 0) 85%);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__gradient--direction-x-2.cs-image-teaser__gradient--direction-y-3 {
  background: linear-gradient(0deg, #fff 0%, rgba(255, 255, 255, 0) 85%);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__gradient--direction-x-3.cs-image-teaser__gradient--direction-y-1 {
  background: linear-gradient(-135deg, #212121 0%, rgba(33, 33, 33, 0) 85%);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__gradient--direction-x-3.cs-image-teaser__gradient--direction-y-1 {
  background: linear-gradient(-135deg, #fff 0%, rgba(255, 255, 255, 0) 85%);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__gradient--direction-x-3.cs-image-teaser__gradient--direction-y-2 {
  background: linear-gradient(-90deg, #212121 0%, rgba(33, 33, 33, 0) 85%);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__gradient--direction-x-3.cs-image-teaser__gradient--direction-y-2 {
  background: linear-gradient(-90deg, #fff 0%, rgba(255, 255, 255, 0) 85%);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__gradient--direction-x-3.cs-image-teaser__gradient--direction-y-3 {
  background: linear-gradient(-45deg, #212121 0%, rgba(33, 33, 33, 0) 85%);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__gradient--direction-x-3.cs-image-teaser__gradient--direction-y-3 {
  background: linear-gradient(-45deg, #fff 0%, rgba(255, 255, 255, 0) 85%);
}
.cs-image-teaser__image--mirror {
  transform: scaleX(-1);
}
.cs-image-teaser__content--container {
  position: relative;
  z-index: 1;
  padding: 2em;
}
.cs-image-teaser__optimizer-container {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-0 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-5 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.05);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-10 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.1);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-15 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.15);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-20 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.2);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-25 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.25);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-30 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.3);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-35 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.35);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-40 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.4);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-45 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.45);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-50 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.5);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-55 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.55);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-60 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.6);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-65 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.65);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-70 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.7);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-75 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.75);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-80 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.8);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-85 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.85);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-90 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.9);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-95 {
  text-shadow: 0 0 2.5rem rgba(255, 255, 255, 0.95);
}
.cs-image-teaser__slide--scheme-dark .cs-image-teaser__text-content--text-shadow-100 {
  text-shadow: 0 0 2.5rem white;
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-0 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-5 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.05);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-10 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.1);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-15 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.15);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-20 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.2);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-25 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.25);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-30 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.3);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-35 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.35);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-40 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.4);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-45 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.45);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-50 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.5);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-55 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.55);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-60 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.6);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-65 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.65);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-70 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.7);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-75 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.75);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-80 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.8);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-85 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.85);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-90 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.9);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-95 {
  text-shadow: 0 0 2.5rem rgba(33, 33, 33, 0.95);
}
.cs-image-teaser__slide--scheme-light .cs-image-teaser__text-content--text-shadow-100 {
  text-shadow: 0 0 2.5rem #212121;
}
@media (min-width: 48em) and (max-width: 63.99em) {
  .cs-image-teaser--icon {
    --gap: 0.8rem;
    --base-size: calc(100% - 0px);
    --size: var(--base-size);
  }
  .cs-image-teaser--icon.cs-image-teaser--container-width {
    margin-left: -1.5rem;
    margin-right: -1.5rem;
  }
  .cs-image-teaser--icon.cs-image-teaser--container-width .cs-image-teaser__slides {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    scroll-padding-left: 1.5rem;
    scroll-padding-right: 1.5rem;
  }
}
@media (min-width: 48em) and (max-width: 63.99em) and (prefers-reduced-motion: no-preference) {
  .cs-image-teaser--icon .cs-image-teaser__slides {
    scroll-behavior: smooth;
  }
}
@media (min-width: 48em) and (max-width: 63.99em) {
  .cs-image-teaser--icon .cs-image-teaser__slides-wrapper {
    position: relative;
  }
}
@media (min-width: 48em) and (max-width: 63.99em) {
  .cs-image-teaser--icon .cs-image-teaser__slides {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex: 0 0 100%;
    gap: 0;
    flex-wrap: nowrap;
    padding: var(--gap) 0;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scrollbar-width: thin;
  }
  @supports (scroll-behavior: smooth) {
    .cs-image-teaser--icon .cs-image-teaser__slides {
      scroll-snap-type: x mandatory;
    }
  }
}
@media (min-width: 48em) and (max-width: 63.99em) and (min-width: 48em) {
  .cs-image-teaser--icon .cs-image-teaser__slides {
    overflow: -moz-scrollbars-none;
    scrollbar-width: none;
  }
  .cs-image-teaser--icon .cs-image-teaser__slides::-webkit-scrollbar {
    display: none;
    width: 0;
    height: 0;
    background: transparent;
  }
  .cs-image-teaser--icon .cs-image-teaser__slides::-webkit-scrollbar-thumb {
    background: transparent;
    width: 0;
    height: 0;
  }
}
@media (min-width: 48em) and (max-width: 63.99em) {
  .cs-image-teaser--icon .cs-image-teaser__slide {
    margin: 0;
    padding: 0;
    list-style: none;
    display: inline-block;
    flex: 0 0 var(--size);
    margin-right: var(--gap);
    scroll-snap-align: start;
    min-width: 0;
  }
  .cs-image-teaser--icon .cs-image-teaser__slide:last-of-type {
    margin-right: 0;
  }
}
@media (min-width: 48em) and (max-width: 63.99em) {
  .cs-image-teaser--icon .cs-image-teaser__image {
    display: block;
  }
}
@media (min-width: 0px) and (max-width: 63.99em) {
  .cs-image-teaser--icon {
    --size: calc(
        var(--base-size) / 2 - ((
                        1 * var(--gap)
                    ) / 2)
    ) !important;
  }
}
@media (min-width: 23.125em) and (max-width: 63.99em) {
  .cs-image-teaser--icon {
    --size: calc(
        var(--base-size) / 2 - ((
                        1 * var(--gap)
                    ) / 2)
    ) !important;
  }
}
@media (min-width: 30em) and (max-width: 63.99em) {
  .cs-image-teaser--icon {
    --size: calc(
        var(--base-size) / 3 - ((
                        2 * var(--gap)
                    ) / 3)
    ) !important;
  }
}
@media (min-width: 48em) and (max-width: 63.99em) {
  .cs-image-teaser--icon {
    --size: calc(
        var(--base-size) / 5 - ((
                        4 * var(--gap)
                    ) / 5)
    ) !important;
  }
}
@media (min-width: 48em) and (max-width: 63.99em) and (hover: hover) and (pointer: fine) {
  .cs-image-teaser--icon.cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider) .cs-image-teaser__nav {
    display: block;
  }
}
@media (min-width: 48em) and (max-width: 63.99em) {
  .cs-image-teaser--icon.cs-image-teaser--slider-mobile:not(.cs-image-teaser--slider) .cs-image-teaser__pagination {
    display: flex;
  }
}
.cs-image-teaser--icon .cs-image-teaser__slogan {
  --slogan-font-size: 1.6rem;
}
.cs-image-teaser--icon .cs-image-teaser__description {
  margin-top: 0.5em;
}
.cs-image-teaser--icon .cs-image-teaser__cta {
  display: none;
}
.cs-image-teaser--icon .cs-image-teaser__content-wrapper--under {
  margin-top: 0;
  padding: 1rem;
}
.cs-image-teaser--icon .cs-image-teaser__content-wrapper--cta-only {
  display: none;
}
@media (min-width: 48em) {
  .cs-image-teaser--mosaic .cs-image-teaser__slides--mosaic-scenario-1 {
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
  }
  .cs-image-teaser--mosaic .cs-image-teaser__slides--mosaic-scenario-2 {
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
  }
}
@media (max-width: 47.99em) {
  .cs-image-teaser--teaser-and-text .cs-image-teaser__slides {
    display: flex;
    flex-wrap: wrap;
  }
  .cs-image-teaser--teaser-and-text .cs-image-teaser__slide {
    flex: 0 0 100%;
  }
}
.cs-image-teaser--instagram-feed .cs-image-teaser__picture {
  height: 100%;
}
.cs-image-teaser--instagram-feed .cs-image-teaser__image {
  -o-object-fit: contain;
     object-fit: contain;
  background-color: #f4f4f4;
}

.cs-container--image-teaser {
  margin: 0 0 3rem;
}
@media (min-width: 48em) {
  .cs-container--image-teaser {
    margin: 0 0 4rem;
  }
}
.cs-container--image-teaser--skip-spacing {
  margin: 0;
}

.cs-container--grid-teaser {
  margin: 0;
}

.cs-container--image-teaser-window-width {
  padding-left: 0;
  padding-right: 0;
}
.cs-container--image-teaser-window-width .cs-container__inner {
  max-width: 100%;
}

.cs-container--image-teaser-slider {
  padding-left: 0;
  padding-right: 0;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/***
 * Remove browser's margins, paddings and list style rules
 */
/***
 * Hide native browser's scrollbar
 */
/**
 * It is intended, to not use the same config pattern (js/conlumnsConfig) as for other slider-based componets,
 * because Products Carousels should have the same config as product grid for consistency.
 * If custom columns config is needed, redefine it.
 */
.cs-products-carousel {
  margin: 0 0 3rem;
  --gap: 0.8rem;
  --base-size: calc(100% - 0px);
  --size: var(--base-size);
  /**
   * class-based columns config relates to classnames, like '--items-in-row-4'
   * which are added to elements, depending on the CC Components configuration.
   */
  --size: calc(
      var(--base-size) /
          1 -
          0 *
          var(--gap) /
          1
  );
  /*  container padding fix  */
}
@media (min-width: 48em) {
  .cs-products-carousel {
    margin: 0 0 4rem;
  }
}
.cs-products-carousel--skip-spacing {
  margin: 0;
}
@media (min-width: 114.375em) {
  .cs-products-carousel.cs-products-carousel--container-width {
    --base-size: calc(180rem - 0px);
  }
  .cs-products-carousel.cs-products-carousel--use-whole-screen:not(.cs-products-carousel--full-width-slider) {
    --base-size: 100%;
    max-width: 100%;
  }
  .cs-products-carousel.cs-products-carousel--use-whole-screen:not(.cs-products-carousel--full-width-slider) .cs-products-carousel__slides {
    scroll-snap-type: x proximity;
    padding-left: calc((100% - 180rem) / 2);
    padding-right: calc((100% - 180rem) / 2);
    scroll-padding-left: calc((100% - 180rem) / 2);
    scroll-padding-right: calc((100% - 180rem) / 2);
    scroll-margin-left: calc((100vw - 180rem) / 2);
    scroll-margin-right: calc((100vw - 180rem) / 2);
  }
}
@media (hover: hover) and (pointer: fine) and (min-width: 114.375em) {
  .cs-products-carousel.cs-products-carousel--container-width {
    --base-size: 180rem;
  }
}
@media (min-width: 48em) {
  .cs-products-carousel {
    --gap: 0.8rem;
  }
}
@media (min-width: 23.125em) {
  .cs-products-carousel {
    --size: calc(
        var(--base-size) / 1 - ((
                        0 * var(--gap)
                    ) / 1)
    );
  }
}
@media (min-width: 30em) {
  .cs-products-carousel {
    --size: calc(
        var(--base-size) / 2 - ((
                        1 * var(--gap)
                    ) / 2)
    );
  }
}
@media (min-width: 48em) {
  .cs-products-carousel {
    --size: calc(
        var(--base-size) / 2 - ((
                        1 * var(--gap)
                    ) / 2)
    );
  }
}
@media (min-width: 64em) {
  .cs-products-carousel {
    --size: calc(
        var(--base-size) / 2 - ((
                        1 * var(--gap)
                    ) / 2)
    );
  }
}
@media (min-width: 80em) {
  .cs-products-carousel {
    --size: calc(
        var(--base-size) / 3 - ((
                        2 * var(--gap)
                    ) / 3)
    );
  }
}
@media (min-width: 90em) {
  .cs-products-carousel {
    --size: calc(
        var(--base-size) / 3 - ((
                        2 * var(--gap)
                    ) / 3)
    );
  }
}
@media (min-width: 120em) {
  .cs-products-carousel {
    --size: calc(
        var(--base-size) / 4 - ((
                        3 * var(--gap)
                    ) / 4)
    );
  }
}
@media (max-width: 114.3125em) {
  .cs-products-carousel.cs-products-carousel--container-width .cs-products-carousel__slides {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    scroll-padding-left: 1.5rem;
    scroll-padding-right: 1.5rem;
  }
}
@media (prefers-reduced-motion: no-preference) {
  .cs-products-carousel .cs-products-carousel__slides {
    scroll-behavior: smooth;
  }
}
.cs-products-carousel .cs-products-carousel__slides-wrapper {
  position: relative;
}
.cs-products-carousel .cs-products-carousel__slides {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex: 0 0 100%;
  gap: 0;
  flex-wrap: nowrap;
  padding: var(--gap) 0;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-width: thin;
}
@supports (scroll-behavior: smooth) {
  .cs-products-carousel .cs-products-carousel__slides {
    scroll-snap-type: x mandatory;
  }
}
@media (min-width: 48em) {
  .cs-products-carousel .cs-products-carousel__slides {
    overflow: -moz-scrollbars-none;
    scrollbar-width: none;
  }
  .cs-products-carousel .cs-products-carousel__slides::-webkit-scrollbar {
    display: none;
    width: 0;
    height: 0;
    background: transparent;
  }
  .cs-products-carousel .cs-products-carousel__slides::-webkit-scrollbar-thumb {
    background: transparent;
    width: 0;
    height: 0;
  }
}
.cs-products-carousel .cs-products-carousel__slide {
  margin: 0;
  padding: 0;
  list-style: none;
  display: inline-block;
  flex: 0 0 var(--size);
  margin-right: var(--gap);
  scroll-snap-align: start;
  min-width: 0;
}
.cs-products-carousel .cs-products-carousel__slide:last-of-type {
  margin-right: 0;
}
.cs-products-carousel .cs-products-carousel__image {
  display: block;
}
.cs-products-carousel__wrapper {
  position: relative;
  z-index: 2;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Gap between columns (all CSS units allowed) [Example: 1.5rem]
 * @see https://developer.mozilla.org/en-US/docs/Web/CSS/column-gap
 */
/**
 * @see https://developer.mozilla.org/en-US/docs/Web/CSS/column-rule
 */
.cs-paragraph {
  -moz-column-gap: 6rem;
       column-gap: 6rem;
  -moz-column-rule: 1px solid #dcdcdc;
       column-rule: 1px solid #dcdcdc;
  margin: 0 0 3rem;
}
@media (min-width: 48em) {
  .cs-paragraph {
    margin: 0 0 4rem;
  }
}
.cs-paragraph--skip-spacing {
  margin: 0;
}
.cs-paragraph img {
  height: auto;
}
@media (min-width: 48em) {
  .cs-paragraph--cols-2, .cs-paragraph--cols-3, .cs-paragraph--cols-4 {
    -moz-column-count: 2;
         column-count: 2;
  }
  .cs-paragraph--cols-2 li, .cs-paragraph--cols-3 li, .cs-paragraph--cols-4 li {
    width: 100%;
  }
  .cs-paragraph--cols-2 img, .cs-paragraph--cols-3 img, .cs-paragraph--cols-4 img {
    display: block;
    max-width: 100%;
  }
}
@media (min-width: 64em) {
  .cs-paragraph--cols-3, .cs-paragraph--cols-4 {
    -moz-column-count: 3;
         column-count: 3;
  }
}
@media (min-width: 80em) {
  .cs-paragraph--cols-4 {
    -moz-column-count: 4;
         column-count: 4;
  }
}
.cs-paragraph--mode-optimal {
  max-width: 40em;
  margin-left: auto;
  margin-right: auto;
  -moz-column-count: initial;
       column-count: initial;
}
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
/**
 * Breakpoint component used by include-media vendor library.
 */
/**
 * Extracts nested keys from given map.
 * Example: deep-get($some-map, some, nested, keys);
 */
/**
* Default project breakpoints - [em]
*/
.cs-separator {
  position: relative;
  clear: both;
  border: none;
  border-top: 1px solid #dcdcdc;
  background: transparent;
  margin: 0 0 3rem;
}
@media (min-width: 48em) {
  .cs-separator {
    margin: 0 0 4rem;
  }
}
.cs-separator--skip-spacing {
  margin: 0;
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzL2Ntcy5jc3MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb25maWcvYnJlYWtwb2ludHMuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy91dGlscy9kZWVwLWdldC9kZWVwLWdldC5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL3V0aWxzL2ZvY3VzLWluZGljYXRvci5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL2NvbmZpZy9iYXNlLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvdXRpbHMvZm9udC1mYW1pbHkuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL2NvbnRhaW5lci9taXhpbi5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uL3NyYy9jb21wb25lbnRzL2NvbnRhaW5lci9jb250YWluZXIuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9NYWdlbnRvX1RoZW1lL3dlYi9jc3Mvc291cmNlL19sYXlvdXQuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvaW5jbHVkZS1tZWRpYS9kaXN0L19pbmNsdWRlLW1lZGlhLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy90eXBvZ3JhcGh5L2hvb2suc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL3R5cG9ncmFwaHkvbWl4aW4uc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL19zbGlkZXIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9fc2xpZGVyL25hdmlnYXRpb24vbWl4aW4uc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL19zbGlkZXIvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9fc2xpZGVyL3BhZ2luYXRpb24vbWl4aW4uc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy91dGlscy9nZXQtdmFsdWUtZnJvbS1saXN0LnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9idXR0b24vaG9vay5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL3V0aWxzL3Zpc3VhbGx5LWhpZGRlbi5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL2NvbXBvbmVudHMvYWRkdG9jYXJ0L2FkZHRvY2FydC5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL2NvbXBvbmVudHMvYnV0dG9uL21peGluLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9idXR0b24vYW5pbWF0aW9uLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9hdXRob3JpemF0aW9uLWxpbmsvYXV0aG9yaXphdGlvbi1saW5rLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvYmFkZ2UvaG9vay5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL2NvbXBvbmVudHMvcHJpY2UtYm94L3ZhcmlhYmxlcy5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uL3NyYy9jb21wb25lbnRzL2JhZGdlL21peGluLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvYnJlYWRjcnVtYnMvYnJlYWRjcnVtYnMuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy91dGlscy9yZXNldC1saXN0LXN0eWxlLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvdXRpbHMvY29tcG9uZW50LXNwYWNpbmcuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL2Nvb2tpZS1tZXNzYWdlL2Nvb2tpZS1tZXNzYWdlLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9kYWlseWRlYWwvZGFpbHlkZWFsLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9kaXNwbGF5LWNvbnRyb2xsZXIvZGlzcGxheS1jb250cm9sbGVyLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9wc2V1ZG9pY29uL2hvb2suc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL2Ryb3Bkb3duLXN3aXRjaGVyL2Ryb3Bkb3duLXN3aXRjaGVyLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9wc2V1ZG9pY29uL21peGluLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9maWVsZC9ob29rLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvZmllbGQvbWl4aW4uc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9maWVsZC9maWVsZC5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uL3NyYy9jb21wb25lbnRzL2Zvb3Rlci9mb290ZXIuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLWxpbmtzLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9nb29nbGUtcmVjYXB0Y2hhL2dvb2dsZS1yZWNhcHRjaGEuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvaGVhZGVyL3NlYXJjaC9zZWFyY2guc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL3F0eS1jb3VudGVyL2hvb2suc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9oZWFkZXIvdXNlci1uYXYvdXNlci1uYXYuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9xdHktY291bnRlci9taXhpbi5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL2NvbXBvbmVudHMvaGVhZGxpbmUvaG9vay5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL2NvbXBvbmVudHMvaGVhZGxpbmUvaGVhZGxpbmUuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9zcmMvY29tcG9uZW50cy9oZWFkbGluZS9taXhpbi5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL2NvbXBvbmVudHMvbGF6eWxvYWQvbGF6eWxvYWQuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL2xpbmtzLWJsb2NrLWFkZHRvL2xpbmtzLWJsb2NrLWFkZHRvLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9sb2dvL2xvZ28uc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL21lc3NhZ2VzL21lc3NhZ2VzLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9taW5pY2FydC1wcm9kdWN0L21pbmljYXJ0LXByb2R1Y3Quc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy91dGlscy9oaWRlLXNjcm9sbGJhci5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL2NvbXBvbmVudHMvbWluaWNhcnQvbWluaWNhcnQuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL19zbGlkZXIvbWl4aW4uc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL21vZGFsL21vZGFsLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvdXRpbHMvYXNwZWN0LXJhdGlvLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9uZXdzbGV0dGVyL25ld3NsZXR0ZXIuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL29mZmNhbnZhcy1uYXZpZ2F0aW9uL29mZmNhbnZhcy1uYXZpZ2F0aW9uLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9vZmZjYW52YXMtdG9nZ2xlL29mZmNhbnZhcy10b2dnbGUuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL29mZmNhbnZhcy9vZmZjYW52YXMuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL3BhZ2UtYm90dG9tL3BhZ2UtYm90dG9tLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvcGFnZS10aXRsZS9wYWdlLXRpdGxlLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvcHJpY2UtYm94L3ByaWNlLWJveC5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL2NvbXBvbmVudHMvcHJpY2UtYm94L21peGluLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvdXRpbHMvc3RyaW5nLXRvLW51bWJlci5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uL3NyYy9jb21wb25lbnRzL3Byb2R1Y3QtdGlsZS9wcm9kdWN0LXRpbGUuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL3Byb2R1Y3RzLWxpc3QvcHJvZHVjdHMtbGlzdC5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL2NvbXBvbmVudHMvcXR5LWluY3JlbWVudC9xdHktaW5jcmVtZW50LnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9za2lwLWxpbmtzL3NraXAtbGlua3Muc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL3NvY2lhbC1tZWRpYS1saXN0L3NvY2lhbC1tZWRpYS1saXN0LnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9zdGFyLXJhdGluZy9zdGFyLXJhdGluZy5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uL3NyYy9jb21wb25lbnRzL3N3YXRjaGVzL3N3YXRjaGVzLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy90b3BiYXIvdG9wYmFyLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy90eXBvZ3JhcGh5L3R5cG9ncmFwaHkuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL3ZpZGVvLXRlYXNlci92aWRlby10ZWFzZXIuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9zcmMvY29tcG9uZW50cy92aXN1YWxseS1oaWRkZW4vdmlzdWFsbHktaGlkZGVuLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvdmlzdWFsbHktaGlkZGVuL3Byb2R1Y3QtdmlkZW8uc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9zcmMvY29tcG9uZW50cy92aXN1YWxseS1oaWRkZW4vYmxvZy5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uL3NyYy9jb21wb25lbnRzL3Zpc3VhbGx5LWhpZGRlbi9jdXN0b20tbW9kYWwuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9zcmMvY29tcG9uZW50cy92aXN1YWxseS1oaWRkZW4vY3VzdG9tLXNlYXJjaC5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uL3NyYy9jb21wb25lbnRzL3Zpc3VhbGx5LWhpZGRlbi9ob21lLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvdmlzdWFsbHktaGlkZGVuL3ByaWNlLWRpc3BsYXktbW9kLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvdmlzdWFsbHktaGlkZGVuL2thc2Etd3JhY2Euc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9zcmMvY29tcG9uZW50cy92aXN1YWxseS1oaWRkZW4vY21zLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvdmlzdWFsbHktaGlkZGVuL2NoZWNrb3V0LnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vc3JjL2NvbXBvbmVudHMvdmlzdWFsbHktaGlkZGVuL2xhbmRpbmcuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9zcmMvY29tcG9uZW50cy92aXN1YWxseS1oaWRkZW4vcHJtYS5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL2NvbXBvbmVudHMvcmVkaXJlY3QtcHJvZ3Jlc3MtYmFyL3JlZGlyZWN0LXByb2dyZXNzLWJhci5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL2NvbXBvbmVudHMvaW1hZ2UtdGVhc2VyL2ltYWdlLXRlYXNlci5zY3NzIiwid2VicGFjazovL1tuYW1lXS8uLi90aGVtZS1jcmVhdGl2ZXNob3Avc3JjL2NvbXBvbmVudHMvaW1hZ2UtdGVhc2VyL21peGlucy9jb250cmFzdC1vcHRpbWl6ZXJzL2dyYWRpZW50LnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9pbWFnZS10ZWFzZXIvbWl4aW5zL2NvbnRyYXN0LW9wdGltaXplcnMvdGV4dC1zaGFkb3cuc2NzcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi4vdGhlbWUtY3JlYXRpdmVzaG9wL3NyYy9jb21wb25lbnRzL3Byb2R1Y3RzLWNhcm91c2VsL3Byb2R1Y3RzLWNhcm91c2VsLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9wYXJhZ3JhcGgvcGFyYWdyYXBoLnNjc3MiLCJ3ZWJwYWNrOi8vW25hbWVdLy4uL3RoZW1lLWNyZWF0aXZlc2hvcC9zcmMvY29tcG9uZW50cy9zZXBhcmF0b3Ivc2VwYXJhdG9yLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbkB1c2UgJ3Nhc3M6bWFwJztcbkBpbXBvcnQgJ2V0Yy92aWV3LnNjc3MnO1xuQGltcG9ydCAndXRpbHMvZGVlcC1nZXQvZGVlcC1nZXQuc2Nzcyc7XG5cbi8vIEJyZWFrcG9pbnRzIGltcG9ydCBmcm9tIHZpZXcueG1sIFtweF1cbiRicmVha3BvaW50c19weDogZGVlcC1nZXQoJHZpZXcteG1sLCB2YXJzLCBNYWdlbnRvX1RoZW1lLCBicmVha3BvaW50cyk7XG4kYnJlYWtwb2ludHNfZW06ICgpO1xuXG5AZnVuY3Rpb24gY2FsY3VsYXRlLWJyZWFrcG9pbnRzKCRicmVha3BvaW50c19lbSwgJGJyZWFrcG9pbnRzX3B4KSB7XG4gICAgJHJlc3VsdDogJGJyZWFrcG9pbnRzX2VtO1xuICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYnJlYWtwb2ludHNfcHgge1xuICAgICAgICAkcmVzdWx0OiBtYXAtbWVyZ2UoXG4gICAgICAgICAgICAkcmVzdWx0LFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIHVucXVvdGUoJGtleSk6ICR2YWx1ZSAvIDE2ICogMWVtLFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuLyoqXG4qIERlZmF1bHQgcHJvamVjdCBicmVha3BvaW50cyAtIFtlbV1cbiovXG5cbiRicmVha3BvaW50czogY2FsY3VsYXRlLWJyZWFrcG9pbnRzKCRicmVha3BvaW50c19lbSwgJGJyZWFrcG9pbnRzX3B4KSAhZGVmYXVsdDtcblxuLy8gcGhvbmU6IDIzLjEyNWVtIC0gMzcwcHhcbi8vIHBob25lTGc6IDMwZW0gLSA0ODBweCxcbi8vIHRhYmxldDogNDhlbSAtIDc2OHB4LFxuLy8gbGFwdG9wOiA2NGVtIC0gMTAyNHB4LFxuLy8gbGFwdG9wTGc6IDgwZW0gLSAxMjgwcHgsXG4vLyBkZXNrdG9wOiA5MGVtIC0gMTQ0MHB4LFxuLy8gdHY6IDEyMGVtIC0gMTkyMHB4LFxuIiwiLyoqXG4gKiBFeHRyYWN0cyBuZXN0ZWQga2V5cyBmcm9tIGdpdmVuIG1hcC5cbiAqIEV4YW1wbGU6IGRlZXAtZ2V0KCRzb21lLW1hcCwgc29tZSwgbmVzdGVkLCBrZXlzKTtcbiAqL1xuQGZ1bmN0aW9uIGRlZXAtZ2V0KCRtYXAsICRrZXlzLi4uKSB7XG4gICAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfVxuICAgIEByZXR1cm4gJG1hcDtcbn1cbiIsIi8qKlxuICogQHNlZSBodHRwczovL3d3dy53My5vcmcvV0FJL1dDQUcyMS9UZWNobmlxdWVzL2Nzcy9DNDAgZm9yIHJlZmVyZW5jZVxuICovXG4kZm9jdXMtaW5kaWNhdG9yLW91dGxpbmUtd2lkdGg6IDJweDtcbiRmb2N1cy1pbmRpY2F0b3Itb3V0bGluZS1jb2xvcjogI2Y5ZjlmOTtcbiRmb2N1cy1pbmRpY2F0b3Itb3V0bGluZS1vZmZzZXQ6IDA7XG4kZm9jdXMtaW5kaWNhdG9yLWJveC1zaGFkb3c6IDAgMCAwIDRweCAjMTkzMTQ2O1xuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBibG9jay1uby1lbXB0eSAqL1xuQG1peGluIGZvY3VzLWluZGljYXRvci1ob29rKFxuICAgICRvdXRsaW5lLXdpZHRoLFxuICAgICRvdXRsaW5lLWNvbG9yLFxuICAgICRvdXRsaW5lLW9mZnNldCxcbiAgICAkYm94LXNoYWRvd1xuKSB7XG59XG5cbkBtaXhpbiBmb2N1cy1pbmRpY2F0b3IoXG4gICAgJG91dGxpbmUtd2lkdGg6ICRmb2N1cy1pbmRpY2F0b3Itb3V0bGluZS13aWR0aCxcbiAgICAkb3V0bGluZS1jb2xvcjogJGZvY3VzLWluZGljYXRvci1vdXRsaW5lLWNvbG9yLFxuICAgICRvdXRsaW5lLW9mZnNldDogJGZvY3VzLWluZGljYXRvci1vdXRsaW5lLW9mZnNldCxcbiAgICAkYm94LXNoYWRvdzogJGZvY3VzLWluZGljYXRvci1ib3gtc2hhZG93XG4pIHtcbiAgICBvdXRsaW5lOiAkb3V0bGluZS13aWR0aCBzb2xpZCAkb3V0bGluZS1jb2xvcjtcbiAgICBvdXRsaW5lLW9mZnNldDogJG91dGxpbmUtb2Zmc2V0O1xuICAgIGJveC1zaGFkb3c6ICRib3gtc2hhZG93O1xuXG4gICAgQGluY2x1ZGUgZm9jdXMtaW5kaWNhdG9yLWhvb2soXG4gICAgICAgICRvdXRsaW5lLXdpZHRoLFxuICAgICAgICAkb3V0bGluZS1jb2xvcixcbiAgICAgICAgJG91dGxpbmUtb2Zmc2V0LFxuICAgICAgICAkYm94LXNoYWRvd1xuICAgICk7XG59XG5cbkBtaXhpbiBmb2N1cy1pbmRpY2F0b3ItcmVzZXQge1xuICAgIG91dGxpbmU6IHVuc2V0O1xuICAgIGJveC1zaGFkb3c6IHVuc2V0O1xufVxuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd1dGlscy9mb250LWZhbWlseSc7XG5AaW1wb3J0ICd1dGlscy9mb2N1cy1pbmRpY2F0b3InO1xuXG4kaW5wdXRfcmVtb3ZlLW51bWJlci1hcHBlYXJhbmNlOiB0cnVlICFkZWZhdWx0O1xuJGlucHV0X3JlbW92ZS1zZWFyY2gtYXBwZWFyYW5jZTogdHJ1ZSAhZGVmYXVsdDtcblxuaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBmb250LXNpemU6IDYyLjUlO1xuICAgIGJhY2tncm91bmQ6ICRwYWdlX2JhY2tncm91bmQ7XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuOyAvLyBoaWRlcyBob3Jpem9udGFsIHNjcm9sbGJhciBvbiBFZGdlIGFuZCBJRVxuICAgIGhlaWdodDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTtcbn1cblxuKixcbio6YmVmb3JlLFxuKjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbn1cblxuYm9keSB7XG4gICAgQGluY2x1ZGUgZm9udC1mYW1pbHkoJGZvbnRfZmFtaWx5LXByaW1hcnkpO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgbWluLWhlaWdodDogMTAwdmg7XG4gICAgbWluLWhlaWdodDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTtcbn1cblxuLl9rZXlmb2N1cyAqOmZvY3VzIHtcbiAgICBAaW5jbHVkZSBmb2N1cy1pbmRpY2F0b3IoKTtcbn1cblxuYnV0dG9uLFxuaW5wdXQsXG50ZXh0YXJlYSxcbnNlbGVjdCB7XG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG59XG5cbi8qIEhpZGUgSFRNTDUgVXAgYW5kIERvd24gYXJyb3dzLiAqL1xuQGlmICRpbnB1dF9yZW1vdmUtbnVtYmVyLWFwcGVhcmFuY2Uge1xuICAgIGlucHV0W3R5cGU9J251bWJlciddIHtcbiAgICAgICAgYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuXG4gICAgICAgICY6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sXG4gICAgICAgICY6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ge1xuICAgICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiBIaWRlIEhUTUw1ICdYJyBpbiBzZWFyY2ggaW5wdXQgKi9cbkBpZiAkaW5wdXRfcmVtb3ZlLXNlYXJjaC1hcHBlYXJhbmNlIHtcbiAgICBpbnB1dFt0eXBlPSdzZWFyY2gnXSB7XG4gICAgICAgIC8qIENsZWFycyB0aGUgJ1gnIGZyb20gSW50ZXJuZXQgRXhwbG9yZXIgKi9cbiAgICAgICAgJjo6LW1zLWNsZWFyLFxuICAgICAgICAmOjotbXMtcmV2ZWFsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIENsZWFycyB0aGUgJ1gnIGZyb20gQ2hyb21lICovXG4gICAgICAgICY6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24sXG4gICAgICAgICY6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG4gICAgICAgICY6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLFxuICAgICAgICAmOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb24ge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmxvYWRpbmctbWFzayB7XG4gICAgJltkYXRhLXJvbGU9J21haW4tY3NzLWxvYWRlciddIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuXG5AbWl4aW4gZm9udC1mYW1pbHkoJGZvbnRzLi4uKSB7XG4gICAgQGlmICRmb250cyB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZm9udHMsICRmb250LWZhbWlseS1mYWxsYmFjaztcbiAgICB9IEBlbHNlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1mYWxsYmFjaztcbiAgICB9XG59XG4iLCJAaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcblxuLyoqXG4gKiBNaXhpbnMgZm9yIGZsZXhpYmxlIGNvbnRhaW5lcnMgZGVjbGFyYXRpb24uXG4gKi9cblxuLyoqXG4gKiBEZWZpbmVzIHBhZ2UgY29udGFpbmVyLiBUaGlzIG1peGluIG1ha2VzIHN1cmUgdGhhdCB0aGUgY29udGVudCBoYXMgYWx3YXlzIGVxdWFsIHBhZGRpbmdcbiAqIGZvciBtb2JpbGUgc2NyZWVucyBvbiBib3RoIHNpemUgb2YgdGhlIGRldmljZS5cbiAqL1xuQG1peGluIGNvbnRhaW5lcigkaG9yaXpvbnRhbC1wYWRkaW5nOiAkcGFnZV9lZGdlLWd1dHRlcikge1xuICAgIHBhZGRpbmctbGVmdDogJGhvcml6b250YWwtcGFkZGluZztcbiAgICBwYWRkaW5nLXJpZ2h0OiAkaG9yaXpvbnRhbC1wYWRkaW5nO1xufVxuXG4vKipcbiAqIE5lZ2F0ZXMgcGFyZW50IGNvbnRhaW5lcidzIHBhZGRpbmcgYW5kIHNldHMgaXQgb3duLlxuICogU29tZXRoaW1lcyB0aGlzIGhhcyB0byBiZSBkb25lIHRvIG1ha2UgYmFja2dyb3VuZCBldmVuIHRvIG90aGVyIGNvbnRhaW5lcnMnIGNvbnRlbnQuXG4gKi9cbkBtaXhpbiBjb250YWluZXItbmVnYXRlZCgkaG9yaXpvbnRhbC1wYWRkaW5nOiAkcGFnZV9lZGdlLWd1dHRlcikge1xuICAgIEBpbmNsdWRlIGNvbnRhaW5lcigkaG9yaXpvbnRhbC1wYWRkaW5nKTtcbiAgICBtYXJnaW4tbGVmdDogLSRob3Jpem9udGFsLXBhZGRpbmc7XG4gICAgbWFyZ2luLXJpZ2h0OiAtJGhvcml6b250YWwtcGFkZGluZztcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGNvbnRhaW5lciB3cmFwcGVyIHRoYXQgbWFrZXMgc3VyZSBjb250bmV0IGRvZXNuJ3QgZXh0ZW5kIGFib3ZlIGNlcnRhaW4gd2lkdGggYW5kIGlzIGFsd2F5cyBjZW50ZXJlZC5cbiAqL1xuQG1peGluIGNvbnRhaW5lci13cmFwcGVyKCRtYXgtd2lkdGg6ICRwYWdlX21heC13aWR0aCkge1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW46IDAgYXV0bztcbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY29udGFpbmVyL21peGluJztcblxuLiN7JG5zfWNvbnRhaW5lciB7XG4gICAgJHJvb3Q6ICY7XG5cbiAgICBAaW5jbHVkZSBjb250YWluZXIoKTtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgJl9faW5uZXIge1xuICAgICAgICBAaW5jbHVkZSBjb250YWluZXItd3JhcHBlcigpO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgJjpiZWZvcmUsXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYXNpZGUge1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgICAgICB3aWR0aDogNDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgd2lkdGg6IDMyJTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG4gICAgICAgICAgICB3aWR0aDogMzAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fbWFpbi1jb2x1bW4ge1xuICAgICAgICB3aWR0aDogNTYlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgd2lkdGg6IDY1JTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG4gICAgICAgICAgICB3aWR0aDogNjclO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzx0YWJsZXQnKSB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLS1zcGFjZS10b3Age1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiAzcmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tY29udHJhc3Qge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JfZ2FsbGVyeTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj1sYXB0b3AnKSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltYWdlcy9iYWNrZ3JvdW5kLnBuZycpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1zcGFjaW91cyB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAycmVtO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj1sYXB0b3AnKSB7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogM3JlbTtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAzcmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tbm9zY3JvbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cblxuICAgICYtLW9udG9wIHtcbiAgICAgICAgei1pbmRleDogMzAxO1xuICAgIH1cblxuICAgICYtLXZpZXdwb3J0LXdpZHRoIHtcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgIH1cblxuICAgICYtLW5vLXBhZGRpbmcge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgfVxuXG4gICAgJi0tdXNlLXdob2xlLXNjcmVlbiB7XG4gICAgICAgICN7JHJvb3R9X19pbm5lciB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jbXMtcGFnZS12aWV3LnBhZ2UtbGF5b3V0LTFjb2x1bW4ge1xuICAgICNtYWluY29udGVudCB7XG4gICAgICAgIG1heC13aWR0aDogJHBhZ2VfbWF4LXdpZHRoO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG59IiwiLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbi8qKlxuICogRXh0cmFjdHMgbmVzdGVkIGtleXMgZnJvbSBnaXZlbiBtYXAuXG4gKiBFeGFtcGxlOiBkZWVwLWdldCgkc29tZS1tYXAsIHNvbWUsIG5lc3RlZCwga2V5cyk7XG4gKi9cbi8qKlxuKiBEZWZhdWx0IHByb2plY3QgYnJlYWtwb2ludHMgLSBbZW1dXG4qL1xuLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbi8qKlxuICogRXh0cmFjdHMgbmVzdGVkIGtleXMgZnJvbSBnaXZlbiBtYXAuXG4gKiBFeGFtcGxlOiBkZWVwLWdldCgkc29tZS1tYXAsIHNvbWUsIG5lc3RlZCwga2V5cyk7XG4gKi9cbi8qKlxuKiBEZWZhdWx0IHByb2plY3QgYnJlYWtwb2ludHMgLSBbZW1dXG4qL1xuLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbi8qKlxuICogRXh0cmFjdHMgbmVzdGVkIGtleXMgZnJvbSBnaXZlbiBtYXAuXG4gKiBFeGFtcGxlOiBkZWVwLWdldCgkc29tZS1tYXAsIHNvbWUsIG5lc3RlZCwga2V5cyk7XG4gKi9cbi8qKlxuKiBEZWZhdWx0IHByb2plY3QgYnJlYWtwb2ludHMgLSBbZW1dXG4qL1xuLyoqXG4gKiBNaXhpbnMgZm9yIGZsZXhpYmxlIGNvbnRhaW5lcnMgZGVjbGFyYXRpb24uXG4gKi9cbi8qKlxuICogRGVmaW5lcyBwYWdlIGNvbnRhaW5lci4gVGhpcyBtaXhpbiBtYWtlcyBzdXJlIHRoYXQgdGhlIGNvbnRlbnQgaGFzIGFsd2F5cyBlcXVhbCBwYWRkaW5nXG4gKiBmb3IgbW9iaWxlIHNjcmVlbnMgb24gYm90aCBzaXplIG9mIHRoZSBkZXZpY2UuXG4gKi9cbi8qKlxuICogTmVnYXRlcyBwYXJlbnQgY29udGFpbmVyJ3MgcGFkZGluZyBhbmQgc2V0cyBpdCBvd24uXG4gKiBTb21ldGhpbWVzIHRoaXMgaGFzIHRvIGJlIGRvbmUgdG8gbWFrZSBiYWNrZ3JvdW5kIGV2ZW4gdG8gb3RoZXIgY29udGFpbmVycycgY29udGVudC5cbiAqL1xuLyoqXG4gKiBEZWZpbmVzIGNvbnRhaW5lciB3cmFwcGVyIHRoYXQgbWFrZXMgc3VyZSBjb250bmV0IGRvZXNuJ3QgZXh0ZW5kIGFib3ZlIGNlcnRhaW4gd2lkdGggYW5kIGlzIGFsd2F5cyBjZW50ZXJlZC5cbiAqL1xuLmNzLWNvbnRhaW5lciB7XG4gIHBhZGRpbmctbGVmdDogMS41cmVtO1xuICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XG4gIG1hcmdpbjogMCBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5jcy1jb250YWluZXJfX2lubmVyIHtcbiAgbWF4LXdpZHRoOiAxODByZW07XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDAgYXV0bztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmNzLWNvbnRhaW5lcl9faW5uZXI6YmVmb3JlLCAuY3MtY29udGFpbmVyX19pbm5lcjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICBjbGVhcjogYm90aDtcbn1cbi5jcy1jb250YWluZXJfX2FzaWRlIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAuY3MtY29udGFpbmVyX19hc2lkZSB7XG4gICAgd2lkdGg6IDQwJTtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgLmNzLWNvbnRhaW5lcl9fYXNpZGUge1xuICAgIHdpZHRoOiAzMiU7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5MGVtKSB7XG4gIC5jcy1jb250YWluZXJfX2FzaWRlIHtcbiAgICB3aWR0aDogMzAlO1xuICB9XG59XG4uY3MtY29udGFpbmVyX19tYWluLWNvbHVtbiB7XG4gIHdpZHRoOiA1NiU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA2NGVtKSB7XG4gIC5jcy1jb250YWluZXJfX21haW4tY29sdW1uIHtcbiAgICB3aWR0aDogNjUlO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogOTBlbSkge1xuICAuY3MtY29udGFpbmVyX19tYWluLWNvbHVtbiB7XG4gICAgd2lkdGg6IDY3JTtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQ3Ljk5ZW0pIHtcbiAgLmNzLWNvbnRhaW5lcl9fbWFpbi1jb2x1bW4ge1xuICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA2NGVtKSB7XG4gIC5jcy1jb250YWluZXJfX21haW4tY29sdW1uLS1zcGFjZS10b3Age1xuICAgIHBhZGRpbmctdG9wOiAzcmVtO1xuICB9XG59XG4uY3MtY29udGFpbmVyLS1jb250cmFzdCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNGY0ZjQ7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNjRlbSkge1xuICAuY3MtY29udGFpbmVyLS1jb250cmFzdCB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1hZ2VzL2JhY2tncm91bmQucG5nXCIpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgfVxufVxuLmNzLWNvbnRhaW5lci0tc3BhY2lvdXMge1xuICBwYWRkaW5nLXRvcDogMnJlbTtcbiAgcGFkZGluZy1ib3R0b206IDJyZW07XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNjRlbSkge1xuICAuY3MtY29udGFpbmVyLS1zcGFjaW91cyB7XG4gICAgcGFkZGluZy10b3A6IDNyZW07XG4gICAgcGFkZGluZy1ib3R0b206IDNyZW07XG4gIH1cbn1cbi5jcy1jb250YWluZXItLW5vc2Nyb2xsIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5jcy1jb250YWluZXItLW9udG9wIHtcbiAgei1pbmRleDogMzAxO1xufVxuLmNzLWNvbnRhaW5lci0tdmlld3BvcnQtd2lkdGgge1xuICBtYXgtd2lkdGg6IG5vbmU7XG59XG4uY3MtY29udGFpbmVyLS1uby1wYWRkaW5nIHtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuLmNzLWNvbnRhaW5lci0tdXNlLXdob2xlLXNjcmVlbiAuY3MtY29udGFpbmVyX19pbm5lciB7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cblxuLmNtcy1wYWdlLXZpZXcucGFnZS1sYXlvdXQtMWNvbHVtbiAjbWFpbmNvbnRlbnQge1xuICBtYXgtd2lkdGg6IDE4MHJlbTtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi8qKlxuICogQnJlYWtwb2ludCBjb21wb25lbnQgdXNlZCBieSBpbmNsdWRlLW1lZGlhIHZlbmRvciBsaWJyYXJ5LlxuICovXG4vKipcbiAqIEV4dHJhY3RzIG5lc3RlZCBrZXlzIGZyb20gZ2l2ZW4gbWFwLlxuICogRXhhbXBsZTogZGVlcC1nZXQoJHNvbWUtbWFwLCBzb21lLCBuZXN0ZWQsIGtleXMpO1xuICovXG4vKipcbiogRGVmYXVsdCBwcm9qZWN0IGJyZWFrcG9pbnRzIC0gW2VtXVxuKi9cbi8qKlxuICogQnJlYWtwb2ludCBjb21wb25lbnQgdXNlZCBieSBpbmNsdWRlLW1lZGlhIHZlbmRvciBsaWJyYXJ5LlxuICovXG4vKipcbiAqIEV4dHJhY3RzIG5lc3RlZCBrZXlzIGZyb20gZ2l2ZW4gbWFwLlxuICogRXhhbXBsZTogZGVlcC1nZXQoJHNvbWUtbWFwLCBzb21lLCBuZXN0ZWQsIGtleXMpO1xuICovXG4vKipcbiogRGVmYXVsdCBwcm9qZWN0IGJyZWFrcG9pbnRzIC0gW2VtXVxuKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIGJsb2NrLW5vLWVtcHR5ICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlICovXG4vKipcbiAqIEJyZWFrcG9pbnQgY29tcG9uZW50IHVzZWQgYnkgaW5jbHVkZS1tZWRpYSB2ZW5kb3IgbGlicmFyeS5cbiAqL1xuLyoqXG4gKiBFeHRyYWN0cyBuZXN0ZWQga2V5cyBmcm9tIGdpdmVuIG1hcC5cbiAqIEV4YW1wbGU6IGRlZXAtZ2V0KCRzb21lLW1hcCwgc29tZSwgbmVzdGVkLCBrZXlzKTtcbiAqL1xuLyoqXG4qIERlZmF1bHQgcHJvamVjdCBicmVha3BvaW50cyAtIFtlbV1cbiovXG5ib2R5LFxuaHRtbCB7XG4gIGhlaWdodDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDB2dztcbn1cblxuLm5vLXNjcm9sbCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IDEwMHZoO1xufVxuXG4ubm8tc2Nyb2xsLWNoaWxkIHtcbiAgb3ZlcmZsb3cteTogaGlkZGVuICFpbXBvcnRhbnQ7XG59XG5cbiNtYWluY29udGVudCB7XG4gIGZsZXg6IDEgMCBhdXRvO1xufVxuXG4ucGFnZS13cmFwcGVyIHtcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgbWluLWhlaWdodDogMTAwJTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gIC5wYWdlLXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLmNvbHVtbnMgLmNvbHVtbi5tYWluIHtcbiAgd2lkdGg6IGF1dG87XG4gIHBhZGRpbmc6IDRyZW0gMCAwO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDEwcmVtO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgLmNvbHVtbnMgLmNvbHVtbi5tYWluIHtcbiAgICBwYWRkaW5nOiA0cmVtIDAgMDtcbiAgfVxufVxuXG4uY21zLWhvbWUgLmNvbHVtbnMgLmNvbHVtbi5tYWluIHtcbiAgcGFkZGluZzogMDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gIC5jbXMtaG9tZSAuY29sdW1ucyAuY29sdW1uLm1haW4ge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuLnBhZ2UtbGF5b3V0LTFjb2x1bW4gLnByb2R1Y3QtaW5mby13cmFwcGVyIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAucGFnZS1sYXlvdXQtMWNvbHVtbiAucHJvZHVjdC1pbmZvLXdyYXBwZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDQwJTtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgLnBhZ2UtbGF5b3V0LTFjb2x1bW4gLnByb2R1Y3QtaW5mby13cmFwcGVyIHtcbiAgICB3aWR0aDogMzAlO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gIC5wYWdlLWxheW91dC0yY29sdW1ucy1sZWZ0IC5zaWRlYmFyLW1haW4sXG4ucGFnZS1sYXlvdXQtMmNvbHVtbnMtbGVmdCAuc2lkZWJhci1hZGRpdGlvbmFsIHtcbiAgICB3aWR0aDogMjIuNSU7XG4gICAgcGFkZGluZy1yaWdodDogNDBweDtcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZjRmNGY0O1xuICB9XG4gIC5wYWdlLWxheW91dC0yY29sdW1ucy1sZWZ0IC5jb2x1bW5zIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuICAucGFnZS1sYXlvdXQtMmNvbHVtbnMtbGVmdCAuY29sdW1uLm1haW4ge1xuICAgIGZsb2F0OiByaWdodDtcbiAgfVxuICAucGFnZS1sYXlvdXQtMmNvbHVtbnMtbGVmdCAuc2lkZWJhci1tYWluIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgfVxufVxuYSwgYTp2aXNpdGVkIHtcbiAgY29sb3I6ICMwMDAwMDA7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbmE6aG92ZXIsIGE6Zm9jdXMsIGE6YWN0aXZlLCBhOnZpc2l0ZWQ6aG92ZXIsIGE6dmlzaXRlZDpmb2N1cyB7XG4gIGNvbG9yOiAjNjY2O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5naWZ0LW9wdGlvbnMtY2FydC1pdGVtIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgLnBheXBhbC1leHByZXNzLXJldmlldyAucGFnZS10aXRsZS13cmFwcGVyIHtcbiAgICBwYWRkaW5nOiAwIDEuNXJlbTtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNjMuOTllbSkge1xuICAucGF5cGFsLXJldmlldy52aWV3IC5jcy1jYXJ0LWl0ZW1fX3ByaWNlIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgfVxuICAucGF5cGFsLXJldmlldy52aWV3IC5jcy1jYXJ0LWl0ZW1fX3N1YnRvdGFsIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gIC5wYXlwYWwtcmV2aWV3LnZpZXcge1xuICAgIHBhZGRpbmc6IDAgMS41cmVtO1xuICB9XG59XG5cbi5wYXlwYWwtZXhwcmVzcy1pbi1jb250ZXh0LW1pbmktY2FydC1jb250YWluZXIge1xuICBtYXJnaW4tdG9wOiAxcmVtO1xufVxuXG4ucGF5cGFsLXJldmlldy1kaXNjb3VudCB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG59IiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLyAgICAgXyAgICAgICAgICAgIF8gICAgICAgICAgIF8gICAgICAgICAgICAgICAgICAgICAgICAgICBfIF9cbi8vICAgIChfKSAgICAgICAgICB8IHwgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAoXylcbi8vICAgICBfIF8gX18gICBfX198IHxfICAgXyAgX198IHwgX19fICAgXyBfXyBfX18gICBfX18gIF9ffCB8XyAgX18gX1xuLy8gICAgfCB8ICdfIFxcIC8gX198IHwgfCB8IHwvIF9gIHwvIF8gXFwgfCAnXyBgIF8gXFwgLyBfIFxcLyBfYCB8IHwvIF9gIHxcbi8vICAgIHwgfCB8IHwgfCAoX198IHwgfF98IHwgKF98IHwgIF9fLyB8IHwgfCB8IHwgfCAgX18vIChffCB8IHwgKF98IHxcbi8vICAgIHxffF98IHxffFxcX19ffF98XFxfXyxffFxcX18sX3xcXF9fX3wgfF98IHxffCB8X3xcXF9fX3xcXF9fLF98X3xcXF9fLF98XG4vL1xuLy8gICAgICBTaW1wbGUsIGVsZWdhbnQgYW5kIG1haW50YWluYWJsZSBtZWRpYSBxdWVyaWVzIGluIFNhc3Ncbi8vICAgICAgICAgICAgICAgICAgICAgICAgdjEuNC45XG4vL1xuLy8gICAgICAgIGh0dHBzOi8vZWR1YXJkb2JvdWNhcy5naXRodWIuaW8vaW5jbHVkZS1tZWRpYVxuLy9cbi8vICAgICAgICAgQXV0aG9yczogRWR1YXJkbyBCb3VjYXMgKEBlZHVhcmRvYm91Y2FzKVxuLy8gICAgICAgICAgICAgICAgICBLaXR0eSBHaXJhdWRlbCAoQGtpdHR5Z2lyYXVkZWwpXG4vL1xuLy8gICAgICBUaGlzIHByb2plY3QgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBNSVQgbGljZW5zZVxuLy8vL1xuLy8vIGluY2x1ZGUtbWVkaWEgbGlicmFyeSBwdWJsaWMgY29uZmlndXJhdGlvblxuLy8vIEBhdXRob3IgRWR1YXJkbyBCb3VjYXNcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vL1xuXG5cbi8vL1xuLy8vIENyZWF0ZXMgYSBsaXN0IG9mIGdsb2JhbCBicmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIENyZWF0ZXMgYSBzaW5nbGUgYnJlYWtwb2ludCB3aXRoIHRoZSBsYWJlbCBgcGhvbmVgXG4vLy8gICRicmVha3BvaW50czogKCdwaG9uZSc6IDMyMHB4KTtcbi8vL1xuJGJyZWFrcG9pbnRzOiAoXG4gICdwaG9uZSc6IDMyMHB4LFxuICAndGFibGV0JzogNzY4cHgsXG4gICdkZXNrdG9wJzogMTAyNHB4XG4pICFkZWZhdWx0O1xuXG5cbi8vL1xuLy8vIENyZWF0ZXMgYSBsaXN0IG9mIHN0YXRpYyBleHByZXNzaW9ucyBvciBtZWRpYSB0eXBlc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIENyZWF0ZXMgYSBzaW5nbGUgbWVkaWEgdHlwZSAoc2NyZWVuKVxuLy8vICAkbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJzogJ3NjcmVlbicpO1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIENyZWF0ZXMgYSBzdGF0aWMgZXhwcmVzc2lvbiB3aXRoIGxvZ2ljYWwgZGlzanVuY3Rpb24gKE9SIG9wZXJhdG9yKVxuLy8vICAkbWVkaWEtZXhwcmVzc2lvbnM6IChcbi8vLyAgICAncmV0aW5hMngnOiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSdcbi8vLyAgKTtcbi8vL1xuJG1lZGlhLWV4cHJlc3Npb25zOiAoXG4gICdzY3JlZW4nOiAnc2NyZWVuJyxcbiAgJ3ByaW50JzogJ3ByaW50JyxcbiAgJ2hhbmRoZWxkJzogJ2hhbmRoZWxkJyxcbiAgJ2xhbmRzY2FwZSc6ICcob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAncG9ydHJhaXQnOiAnKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAncmV0aW5hMngnOiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSwgKG1pbi1yZXNvbHV0aW9uOiAyZHBweCknLFxuICAncmV0aW5hM3gnOiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMyksIChtaW4tcmVzb2x1dGlvbjogMzUwZHBpKSwgKG1pbi1yZXNvbHV0aW9uOiAzZHBweCknXG4pICFkZWZhdWx0O1xuXG5cbi8vL1xuLy8vIERlZmluZXMgYSBudW1iZXIgdG8gYmUgYWRkZWQgb3Igc3VidHJhY3RlZCBmcm9tIGVhY2ggdW5pdCB3aGVuIGRlY2xhcmluZyBicmVha3BvaW50cyB3aXRoIGV4Y2x1c2l2ZSBpbnRlcnZhbHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgcGl4ZWxzIGlzIGRlZmluZWQgYXMgYDFgIGJ5IGRlZmF1bHRcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4xMjhweCcpIHt9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogMTI5cHgpIHt9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gSW50ZXJ2YWwgZm9yIGVtcyBpcyBkZWZpbmVkIGFzIGAwLjAxYCBieSBkZWZhdWx0XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+MjBlbScpIHt9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogMjAuMDFlbSkge31cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgcmVtcyBpcyBkZWZpbmVkIGFzIGAwLjFgIGJ5IGRlZmF1bHQsIHRvIGJlIHVzZWQgd2l0aCBgZm9udC1zaXplOiA2Mi41JTtgXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+Mi4wcmVtJykge31cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAyLjFyZW0pIHt9XG4vLy9cbiR1bml0LWludGVydmFsczogKFxuICAncHgnOiAxLFxuICAnZW0nOiAwLjAxLFxuICAncmVtJzogMC4xLFxuICAnJzogMFxuKSAhZGVmYXVsdDtcblxuLy8vXG4vLy8gRGVmaW5lcyB3aGV0aGVyIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXMgaXMgYXZhaWxhYmxlLCB1c2VmdWwgZm9yIGNyZWF0aW5nIHNlcGFyYXRlIHN0eWxlc2hlZXRzXG4vLy8gZm9yIGJyb3dzZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBtZWRpYSBxdWVyaWVzLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIERpc2FibGVzIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXNcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgLmZvbyB7XG4vLy8gICAgY29sb3I6IHRvbWF0bztcbi8vLyAgfVxuLy8vXG4kaW0tbWVkaWEtc3VwcG9ydDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vXG4vLy8gU2VsZWN0cyB3aGljaCBicmVha3BvaW50IHRvIGVtdWxhdGUgd2hlbiBzdXBwb3J0IGZvciBtZWRpYSBxdWVyaWVzIGlzIGRpc2FibGVkLiBNZWRpYSBxdWVyaWVzIHRoYXQgc3RhcnQgYXQgb3Jcbi8vLyBpbnRlcmNlcHQgdGhlIGJyZWFrcG9pbnQgd2lsbCBiZSBkaXNwbGF5ZWQsIGFueSBvdGhlcnMgd2lsbCBiZSBpZ25vcmVkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBzaG93IGJlY2F1c2UgaXQgaW50ZXJjZXB0cyB0aGUgc3RhdGljIGJyZWFrcG9pbnRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgLmZvbyB7XG4vLy8gICAgY29sb3I6IHRvbWF0bztcbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBOT1Qgc2hvdyBiZWNhdXNlIGl0IGRvZXMgbm90IGludGVyY2VwdCB0aGUgZGVza3RvcCBicmVha3BvaW50XG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcbi8vLyAgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICd0YWJsZXQnO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj1kZXNrdG9wJykge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgY29sb3I6IHRvbWF0bztcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vICAvKiBObyBvdXRwdXQgKi9cbi8vL1xuJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICdkZXNrdG9wJyAhZGVmYXVsdDtcblxuLy8vXG4vLy8gU2VsZWN0cyB3aGljaCBtZWRpYSBleHByZXNzaW9ucyBhcmUgYWxsb3dlZCBpbiBhbiBleHByZXNzaW9uIGZvciBpdCB0byBiZSB1c2VkIHdoZW4gbWVkaWEgcXVlcmllc1xuLy8vIGFyZSBub3Qgc3VwcG9ydGVkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBzaG93IGJlY2F1c2UgaXQgaW50ZXJjZXB0cyB0aGUgc3RhdGljIGJyZWFrcG9pbnQgYW5kIGNvbnRhaW5zIG9ubHkgYWNjZXB0ZWQgbWVkaWEgZXhwcmVzc2lvbnNcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xuLy8vICAkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJyk7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcsICdzY3JlZW4nKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gICAuZm9vIHtcbi8vLyAgICAgY29sb3I6IHRvbWF0bztcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBUaGlzIG1lZGlhIHF1ZXJ5IHdpbGwgTk9UIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludCBidXQgY29udGFpbnMgYSBtZWRpYSBleHByZXNzaW9uIHRoYXQgaXMgbm90IGFjY2VwdGVkXG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcbi8vLyAgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICdkZXNrdG9wJztcbi8vLyAgJGltLW5vLW1lZGlhLWV4cHJlc3Npb25zOiAoJ3NjcmVlbicpO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnLCAncmV0aW5hMngnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIE5vIG91dHB1dCAqL1xuLy8vXG4kaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJywgJ3BvcnRyYWl0JywgJ2xhbmRzY2FwZScpICFkZWZhdWx0O1xuXG4vLy8vXG4vLy8gQ3Jvc3MtZW5naW5lIGxvZ2dpbmcgZW5naW5lXG4vLy8gQGF1dGhvciBLaXR0eSBHaXJhdWRlbFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vL1xuXG5cbi8vL1xuLy8vIExvZyBhIG1lc3NhZ2UgZWl0aGVyIHdpdGggYEBlcnJvcmAgaWYgc3VwcG9ydGVkXG4vLy8gZWxzZSB3aXRoIGBAd2FybmAsIHVzaW5nIGBmZWF0dXJlLWV4aXN0cygnYXQtZXJyb3InKWBcbi8vLyB0byBkZXRlY3Qgc3VwcG9ydC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVzc2FnZSAtIE1lc3NhZ2UgdG8gbG9nXG4vLy9cbkBmdW5jdGlvbiBpbS1sb2coJG1lc3NhZ2UpIHtcbiAgQGlmIGZlYXR1cmUtZXhpc3RzKCdhdC1lcnJvcicpIHtcbiAgICBAZXJyb3IgJG1lc3NhZ2U7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICRtZXNzYWdlO1xuICAgICRfOiBub29wKCk7XG4gIH1cblxuICBAcmV0dXJuICRtZXNzYWdlO1xufVxuXG5cbi8vL1xuLy8vIFdyYXBwZXIgbWl4aW4gZm9yIHRoZSBsb2cgZnVuY3Rpb24gc28gaXQgY2FuIGJlIHVzZWQgd2l0aCBhIG1vcmUgZnJpZW5kbHlcbi8vLyBBUEkgdGhhbiBgQGlmIGltLWxvZygnLi4nKSB7fWAgb3IgYCRfOiBpbS1sb2coJy4uJylgLiBCYXNpY2FsbHksIHVzZSB0aGUgZnVuY3Rpb25cbi8vLyB3aXRoaW4gZnVuY3Rpb25zIGJlY2F1c2UgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbiBhIGZ1bmN0aW9uXG4vLy8gYW5kIHVzZSB0aGUgbWl4aW4gZXZlcnl3aGVyZSBlbHNlIGJlY2F1c2UgaXQncyBtdWNoIG1vcmUgZWxlZ2FudC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVzc2FnZSAtIE1lc3NhZ2UgdG8gbG9nXG4vLy9cbkBtaXhpbiBsb2coJG1lc3NhZ2UpIHtcbiAgQGlmIGltLWxvZygkbWVzc2FnZSkge31cbn1cblxuXG4vLy9cbi8vLyBGdW5jdGlvbiB3aXRoIG5vIGBAcmV0dXJuYCBjYWxsZWQgbmV4dCB0byBgQHdhcm5gIGluIFNhc3MgMy4zXG4vLy8gdG8gdHJpZ2dlciBhIGNvbXBpbGluZyBlcnJvciBhbmQgc3RvcCB0aGUgcHJvY2Vzcy5cbi8vL1xuQGZ1bmN0aW9uIG5vb3AoKSB7fVxuXG4vLy9cbi8vLyBEZXRlcm1pbmVzIHdoZXRoZXIgYSBsaXN0IG9mIGNvbmRpdGlvbnMgaXMgaW50ZXJjZXB0ZWQgYnkgdGhlIHN0YXRpYyBicmVha3BvaW50LlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAgICRjb25kaXRpb25zICAtIE1lZGlhIHF1ZXJ5IGNvbmRpdGlvbnNcbi8vL1xuLy8vIEByZXR1cm4ge0Jvb2xlYW59IC0gUmV0dXJucyB0cnVlIGlmIHRoZSBjb25kaXRpb25zIGFyZSBpbnRlcmNlcHRlZCBieSB0aGUgc3RhdGljIGJyZWFrcG9pbnRcbi8vL1xuQGZ1bmN0aW9uIGltLWludGVyY2VwdHMtc3RhdGljLWJyZWFrcG9pbnQoJGNvbmRpdGlvbnMuLi4pIHtcbiAgJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludCk7XG5cbiAgQGlmIG5vdCAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZSB7XG4gICAgQGlmIGltLWxvZygnYCN7JGltLW5vLW1lZGlhLWJyZWFrcG9pbnR9YCBpcyBub3QgYSB2YWxpZCBicmVha3BvaW50LicpIHt9XG4gIH1cblxuICBAZWFjaCAkY29uZGl0aW9uIGluICRjb25kaXRpb25zIHtcbiAgICBAaWYgbm90IG1hcC1oYXMta2V5KCRtZWRpYS1leHByZXNzaW9ucywgJGNvbmRpdGlvbikge1xuICAgICAgJG9wZXJhdG9yOiBnZXQtZXhwcmVzc2lvbi1vcGVyYXRvcigkY29uZGl0aW9uKTtcbiAgICAgICRwcmVmaXg6IGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpO1xuICAgICAgJHZhbHVlOiBnZXQtZXhwcmVzc2lvbi12YWx1ZSgkY29uZGl0aW9uLCAkb3BlcmF0b3IpO1xuXG4gICAgICBAaWYgKCRwcmVmaXggPT0gJ21heCcgYW5kICR2YWx1ZSA8PSAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZSkgb3JcbiAgICAgICAgICAoJHByZWZpeCA9PSAnbWluJyBhbmQgJHZhbHVlID4gJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUpIHtcbiAgICAgICAgQHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmIG5vdCBpbmRleCgkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnMsICRjb25kaXRpb24pIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuXG4vLy8vXG4vLy8gUGFyc2luZyBlbmdpbmVcbi8vLyBAYXV0aG9yIEtpdHR5IEdpcmF1ZGVsXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8vXG5cblxuLy8vXG4vLy8gR2V0IG9wZXJhdG9yIG9mIGFuIGV4cHJlc3Npb25cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCBvcGVyYXRvciBmcm9tXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gQW55IG9mIGA+PWAsIGA+YCwgYDw9YCwgYDxgLCBg4omlYCwgYOKJpGBcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRleHByZXNzaW9uKSB7XG4gIEBlYWNoICRvcGVyYXRvciBpbiAoJz49JywgJz4nLCAnPD0nLCAnPCcsICfiiaUnLCAn4omkJykge1xuICAgIEBpZiBzdHItaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAgICAgQHJldHVybiAkb3BlcmF0b3I7XG4gICAgfVxuICB9XG5cbiAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbnNpZGUgYSBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0b1xuICAvLyByZWx5IG9uIHRoZSBgaW0tbG9nKC4uKWAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIGBsb2coLi4pYCBtaXhpbi4gQmVjYXVzZVxuICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cbiAgLy8gYSBkdW1teSB2YXJpYWJsZSwgc3VjaCBhcyBgJF9gLiBJZiBhbnlib2R5IGV2ZXIgcmFpc2UgYSBzY29waW5nIGlzc3VlIHdpdGhcbiAgLy8gU2FzcyAzLjMsIGNoYW5nZSB0aGlzIGxpbmUgaW4gYEBpZiBpbS1sb2coLi4pIHt9YCBpbnN0ZWFkLlxuICAkXzogaW0tbG9nKCdObyBvcGVyYXRvciBmb3VuZCBpbiBgI3skZXhwcmVzc2lvbn1gLicpO1xufVxuXG5cbi8vL1xuLy8vIEdldCBkaW1lbnNpb24gb2YgYW4gZXhwcmVzc2lvbiwgYmFzZWQgb24gYSBmb3VuZCBvcGVyYXRvclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBleHRyYWN0IGRpbWVuc2lvbiBmcm9tXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yIGZyb20gYCRleHByZXNzaW9uYFxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIGB3aWR0aGAgb3IgYGhlaWdodGAgKG9yIHBvdGVudGlhbGx5IGFueXRoaW5nIGVsc2UpXG4vLy9cbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi1kaW1lbnNpb24oJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAkb3BlcmF0b3ItaW5kZXg6IHN0ci1pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHBhcnNlZC1kaW1lbnNpb246IHN0ci1zbGljZSgkZXhwcmVzc2lvbiwgMCwgJG9wZXJhdG9yLWluZGV4IC0gMSk7XG4gICRkaW1lbnNpb246ICd3aWR0aCc7XG5cbiAgQGlmIHN0ci1sZW5ndGgoJHBhcnNlZC1kaW1lbnNpb24pID4gMCB7XG4gICAgJGRpbWVuc2lvbjogJHBhcnNlZC1kaW1lbnNpb247XG4gIH1cblxuICBAcmV0dXJuICRkaW1lbnNpb247XG59XG5cblxuLy8vXG4vLy8gR2V0IGRpbWVuc2lvbiBwcmVmaXggYmFzZWQgb24gYW4gb3BlcmF0b3Jcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3BlcmF0b3IgLSBPcGVyYXRvclxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIGBtaW5gIG9yIGBtYXhgXG4vLy9cbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi1wcmVmaXgoJG9wZXJhdG9yKSB7XG4gIEByZXR1cm4gaWYoaW5kZXgoKCc8JywgJzw9JywgJ+KJpCcpLCAkb3BlcmF0b3IpLCAnbWF4JywgJ21pbicpO1xufVxuXG5cbi8vL1xuLy8vIEdldCB2YWx1ZSBvZiBhbiBleHByZXNzaW9uLCBiYXNlZCBvbiBhIGZvdW5kIG9wZXJhdG9yXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGV4cHJlc3Npb24gLSBFeHByZXNzaW9uIHRvIGV4dHJhY3QgdmFsdWUgZnJvbVxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3BlcmF0b3IgLSBPcGVyYXRvciBmcm9tIGAkZXhwcmVzc2lvbmBcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn0gLSBBIG51bWVyaWMgdmFsdWVcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLXZhbHVlKCRleHByZXNzaW9uLCAkb3BlcmF0b3IpIHtcbiAgJG9wZXJhdG9yLWluZGV4OiBzdHItaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG4gICR2YWx1ZTogc3RyLXNsaWNlKCRleHByZXNzaW9uLCAkb3BlcmF0b3ItaW5kZXggKyBzdHItbGVuZ3RoKCRvcGVyYXRvcikpO1xuXG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICR2YWx1ZSkge1xuICAgICR2YWx1ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICR2YWx1ZSk7XG4gIH0gQGVsc2Uge1xuICAgICR2YWx1ZTogdG8tbnVtYmVyKCR2YWx1ZSk7XG4gIH1cblxuICAkaW50ZXJ2YWw6IG1hcC1nZXQoJHVuaXQtaW50ZXJ2YWxzLCB1bml0KCR2YWx1ZSkpO1xuXG4gIEBpZiBub3QgJGludGVydmFsIHtcbiAgICAvLyBJdCBpcyBub3QgcG9zc2libGUgdG8gaW5jbHVkZSBhIG1peGluIGluc2lkZSBhIGZ1bmN0aW9uLCBzbyB3ZSBoYXZlIHRvXG4gICAgLy8gcmVseSBvbiB0aGUgYGltLWxvZyguLilgIGZ1bmN0aW9uIHJhdGhlciB0aGFuIHRoZSBgbG9nKC4uKWAgbWl4aW4uIEJlY2F1c2VcbiAgICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cbiAgICAvLyBhIGR1bW15IHZhcmlhYmxlLCBzdWNoIGFzIGAkX2AuIElmIGFueWJvZHkgZXZlciByYWlzZSBhIHNjb3BpbmcgaXNzdWUgd2l0aFxuICAgIC8vIFNhc3MgMy4zLCBjaGFuZ2UgdGhpcyBsaW5lIGluIGBAaWYgaW0tbG9nKC4uKSB7fWAgaW5zdGVhZC5cbiAgICAkXzogaW0tbG9nKCdVbmtub3duIHVuaXQgYCN7dW5pdCgkdmFsdWUpfWAuJyk7XG4gIH1cblxuICBAaWYgJG9wZXJhdG9yID09ICc+JyB7XG4gICAgJHZhbHVlOiAkdmFsdWUgKyAkaW50ZXJ2YWw7XG4gIH0gQGVsc2UgaWYgJG9wZXJhdG9yID09ICc8JyB7XG4gICAgJHZhbHVlOiAkdmFsdWUgLSAkaW50ZXJ2YWw7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuXG4vLy9cbi8vLyBQYXJzZSBhbiBleHByZXNzaW9uIHRvIHJldHVybiBhIHZhbGlkIG1lZGlhLXF1ZXJ5IGV4cHJlc3Npb25cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gcGFyc2Vcbi8vL1xuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBWYWxpZCBtZWRpYSBxdWVyeVxuLy8vXG5AZnVuY3Rpb24gcGFyc2UtZXhwcmVzc2lvbigkZXhwcmVzc2lvbikge1xuICAvLyBJZiBpdCBpcyBwYXJ0IG9mICRtZWRpYS1leHByZXNzaW9ucywgaXQgaGFzIG5vIG9wZXJhdG9yXG4gIC8vIHRoZW4gdGhlcmUgaXMgbm8gbmVlZCB0byBnbyBhbnkgZnVydGhlciwganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gIEBpZiBtYXAtaGFzLWtleSgkbWVkaWEtZXhwcmVzc2lvbnMsICRleHByZXNzaW9uKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRtZWRpYS1leHByZXNzaW9ucywgJGV4cHJlc3Npb24pO1xuICB9XG5cbiAgJG9wZXJhdG9yOiBnZXQtZXhwcmVzc2lvbi1vcGVyYXRvcigkZXhwcmVzc2lvbik7XG4gICRkaW1lbnNpb246IGdldC1leHByZXNzaW9uLWRpbWVuc2lvbigkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHByZWZpeDogZ2V0LWV4cHJlc3Npb24tcHJlZml4KCRvcGVyYXRvcik7XG4gICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG5cbiAgQHJldHVybiAnKCN7JHByZWZpeH0tI3skZGltZW5zaW9ufTogI3skdmFsdWV9KSc7XG59XG5cbi8vL1xuLy8vIFNsaWNlIGAkbGlzdGAgYmV0d2VlbiBgJHN0YXJ0YCBhbmQgYCRlbmRgIGluZGV4ZXNcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdCAtIExpc3QgdG8gc2xpY2Vcbi8vLyBAcGFyYW0ge051bWJlcn0gJHN0YXJ0IFsxXSAtIFN0YXJ0IGluZGV4XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRlbmQgW2xlbmd0aCgkbGlzdCldIC0gRW5kIGluZGV4XG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fSBTbGljZWQgbGlzdFxuLy8vXG5AZnVuY3Rpb24gc2xpY2UoJGxpc3QsICRzdGFydDogMSwgJGVuZDogbGVuZ3RoKCRsaXN0KSkge1xuICBAaWYgbGVuZ3RoKCRsaXN0KSA8IDEgb3IgJHN0YXJ0ID4gJGVuZCB7XG4gICAgQHJldHVybiAoKTtcbiAgfVxuXG4gICRyZXN1bHQ6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgdGhyb3VnaCAkZW5kIHtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgbnRoKCRsaXN0LCAkaSkpO1xuICB9XG5cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG4vLy8vXG4vLy8gU3RyaW5nIHRvIG51bWJlciBjb252ZXJ0ZXJcbi8vLyBAYXV0aG9yIEtpdHR5IEdpcmF1ZGVsXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8vXG5cblxuLy8vXG4vLy8gQ2FzdHMgYSBzdHJpbmcgaW50byBhIG51bWJlclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGJlIHBhcnNlZFxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfVxuLy8vXG5AZnVuY3Rpb24gdG8tbnVtYmVyKCR2YWx1ZSkge1xuICBAaWYgdHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCR2YWx1ZSkgIT0gJ3N0cmluZycge1xuICAgICRfOiBpbS1sb2coJ1ZhbHVlIGZvciBgdG8tbnVtYmVyYCBzaG91bGQgYmUgYSBudW1iZXIgb3IgYSBzdHJpbmcuJyk7XG4gIH1cblxuICAkZmlyc3QtY2hhcmFjdGVyOiBzdHItc2xpY2UoJHZhbHVlLCAxLCAxKTtcbiAgJHJlc3VsdDogMDtcbiAgJGRpZ2l0czogMDtcbiAgJG1pbnVzOiAoJGZpcnN0LWNoYXJhY3RlciA9PSAnLScpO1xuICAkbnVtYmVyczogKCcwJzogMCwgJzEnOiAxLCAnMic6IDIsICczJzogMywgJzQnOiA0LCAnNSc6IDUsICc2JzogNiwgJzcnOiA3LCAnOCc6IDgsICc5JzogOSk7XG5cbiAgLy8gUmVtb3ZlICsvLSBzaWduIGlmIHByZXNlbnQgYXQgZmlyc3QgY2hhcmFjdGVyXG4gIEBpZiAoJGZpcnN0LWNoYXJhY3RlciA9PSAnKycgb3IgJGZpcnN0LWNoYXJhY3RlciA9PSAnLScpIHtcbiAgICAkdmFsdWU6IHN0ci1zbGljZSgkdmFsdWUsIDIpO1xuICB9XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHItbGVuZ3RoKCR2YWx1ZSkge1xuICAgICRjaGFyYWN0ZXI6IHN0ci1zbGljZSgkdmFsdWUsICRpLCAkaSk7XG5cbiAgICBAaWYgbm90IChpbmRleChtYXAta2V5cygkbnVtYmVycyksICRjaGFyYWN0ZXIpIG9yICRjaGFyYWN0ZXIgPT0gJy4nKSB7XG4gICAgICBAcmV0dXJuIHRvLWxlbmd0aChpZigkbWludXMsIC0kcmVzdWx0LCAkcmVzdWx0KSwgc3RyLXNsaWNlKCR2YWx1ZSwgJGkpKVxuICAgIH1cblxuICAgIEBpZiAkY2hhcmFjdGVyID09ICcuJyB7XG4gICAgICAkZGlnaXRzOiAxO1xuICAgIH0gQGVsc2UgaWYgJGRpZ2l0cyA9PSAwIHtcbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKiAxMCArIG1hcC1nZXQoJG51bWJlcnMsICRjaGFyYWN0ZXIpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGRpZ2l0czogJGRpZ2l0cyAqIDEwO1xuICAgICAgJHJlc3VsdDogJHJlc3VsdCArIG1hcC1nZXQoJG51bWJlcnMsICRjaGFyYWN0ZXIpIC8gJGRpZ2l0cztcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGlmKCRtaW51cywgLSRyZXN1bHQsICRyZXN1bHQpO1xufVxuXG5cbi8vL1xuLy8vIEFkZCBgJHVuaXRgIHRvIGAkdmFsdWVgXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gVmFsdWUgdG8gYWRkIHVuaXQgdG9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHVuaXQgLSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHVuaXRcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn0gLSBgJHZhbHVlYCBleHByZXNzZWQgaW4gYCR1bml0YFxuLy8vXG5AZnVuY3Rpb24gdG8tbGVuZ3RoKCR2YWx1ZSwgJHVuaXQpIHtcbiAgJHVuaXRzOiAoJ3B4JzogMXB4LCAnY20nOiAxY20sICdtbSc6IDFtbSwgJyUnOiAxJSwgJ2NoJzogMWNoLCAncGMnOiAxcGMsICdpbic6IDFpbiwgJ2VtJzogMWVtLCAncmVtJzogMXJlbSwgJ3B0JzogMXB0LCAnZXgnOiAxZXgsICd2dyc6IDF2dywgJ3ZoJzogMXZoLCAndm1pbic6IDF2bWluLCAndm1heCc6IDF2bWF4KTtcblxuICBAaWYgbm90IGluZGV4KG1hcC1rZXlzKCR1bml0cyksICR1bml0KSB7XG4gICAgJF86IGltLWxvZygnSW52YWxpZCB1bml0IGAjeyR1bml0fWAuJyk7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZSAqIG1hcC1nZXQoJHVuaXRzLCAkdW5pdCk7XG59XG5cbi8vL1xuLy8vIFRoaXMgbWl4aW4gYWltcyBhdCByZWRlZmluaW5nIHRoZSBjb25maWd1cmF0aW9uIGp1c3QgZm9yIHRoZSBzY29wZSBvZlxuLy8vIHRoZSBjYWxsLiBJdCBpcyBoZWxwZnVsIHdoZW4gaGF2aW5nIGEgY29tcG9uZW50IG5lZWRpbmcgYW4gZXh0ZW5kZWRcbi8vLyBjb25maWd1cmF0aW9uIHN1Y2ggYXMgY3VzdG9tIGJyZWFrcG9pbnRzIChyZWZlcnJlZCB0byBhcyB0d2Vha3BvaW50cylcbi8vLyBmb3IgaW5zdGFuY2UuXG4vLy9cbi8vLyBAYXV0aG9yIEtpdHR5IEdpcmF1ZGVsXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJHR3ZWFrcG9pbnRzIFsoKV0gLSBNYXAgb2YgdHdlYWtwb2ludHMgdG8gYmUgbWVyZ2VkIHdpdGggYCRicmVha3BvaW50c2Bcbi8vLyBAcGFyYW0ge01hcH0gJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zIFsoKV0gLSBNYXAgb2YgdHdlYWtlZCBtZWRpYSBleHByZXNzaW9ucyB0byBiZSBtZXJnZWQgd2l0aCBgJG1lZGlhLWV4cHJlc3Npb25gXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRXh0ZW5kIHRoZSBnbG9iYWwgYnJlYWtwb2ludHMgd2l0aCBhIHR3ZWFrcG9pbnRcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgoJ2N1c3RvbSc6IDY3OHB4KSkge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJz5waG9uZScsICc8PWN1c3RvbScpIHtcbi8vLyAgICAgICAvLyAuLi5cbi8vLyAgICAgIH1cbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBFeHRlbmQgdGhlIGdsb2JhbCBtZWRpYSBleHByZXNzaW9ucyB3aXRoIGEgY3VzdG9tIG9uZVxuLy8vICBAaW5jbHVkZSBtZWRpYS1jb250ZXh0KCR0d2Vhay1tZWRpYS1leHByZXNzaW9uczogKCdhbGwnOiAnYWxsJykpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCdhbGwnLCAnPnBob25lJykge1xuLy8vICAgICAgIC8vIC4uLlxuLy8vICAgICAgfVxuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEV4dGVuZCBib3RoIGNvbmZpZ3VyYXRpb24gbWFwc1xuLy8vICBAaW5jbHVkZSBtZWRpYS1jb250ZXh0KCgnY3VzdG9tJzogNjc4cHgpLCAoJ2FsbCc6ICdhbGwnKSkge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJ2FsbCcsICc+cGhvbmUnLCAnPD1jdXN0b20nKSB7XG4vLy8gICAgICAgLy8gLi4uXG4vLy8gICAgICB9XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbkBtaXhpbiBtZWRpYS1jb250ZXh0KCR0d2Vha3BvaW50czogKCksICR0d2Vhay1tZWRpYS1leHByZXNzaW9uczogKCkpIHtcbiAgLy8gU2F2ZSBnbG9iYWwgY29uZmlndXJhdGlvblxuICAkZ2xvYmFsLWJyZWFrcG9pbnRzOiAkYnJlYWtwb2ludHM7XG4gICRnbG9iYWwtbWVkaWEtZXhwcmVzc2lvbnM6ICRtZWRpYS1leHByZXNzaW9ucztcblxuICAvLyBVcGRhdGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGJyZWFrcG9pbnRzOiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkdHdlYWtwb2ludHMpICFnbG9iYWw7XG4gICRtZWRpYS1leHByZXNzaW9uczogbWFwLW1lcmdlKCRtZWRpYS1leHByZXNzaW9ucywgJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zKSAhZ2xvYmFsO1xuXG4gIEBjb250ZW50O1xuXG4gIC8vIFJlc3RvcmUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGJyZWFrcG9pbnRzOiAkZ2xvYmFsLWJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICRtZWRpYS1leHByZXNzaW9uczogJGdsb2JhbC1tZWRpYS1leHByZXNzaW9ucyAhZ2xvYmFsO1xufVxuXG4vLy8vXG4vLy8gaW5jbHVkZS1tZWRpYSBwdWJsaWMgZXhwb3NlZCBBUElcbi8vLyBAYXV0aG9yIEVkdWFyZG8gQm91Y2FzXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLy9cblxuXG4vLy9cbi8vLyBHZW5lcmF0ZXMgYSBtZWRpYSBxdWVyeSBiYXNlZCBvbiBhIGxpc3Qgb2YgY29uZGl0aW9uc1xuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAgICRjb25kaXRpb25zICAtIE1lZGlhIHF1ZXJ5IGNvbmRpdGlvbnNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIGEgc2luZ2xlIHNldCBicmVha3BvaW50XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIHR3byBzZXQgYnJlYWtwb2ludHNcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz5waG9uZScsICc8PXRhYmxldCcpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggY3VzdG9tIHZhbHVlc1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj0zNThweCcsICc8ODUwcHgnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIHNldCBicmVha3BvaW50cyB3aXRoIGN1c3RvbSB2YWx1ZXNcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz5kZXNrdG9wJywgJzw9MTM1MHB4JykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBhIHN0YXRpYyBleHByZXNzaW9uXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCdyZXRpbmEyeCcpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIE1peGluZyBldmVyeXRoaW5nXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PTM1MHB4JywgJzx0YWJsZXQnLCAncmV0aW5hM3gnKSB7IH1cbi8vL1xuQG1peGluIG1lZGlhKCRjb25kaXRpb25zLi4uKSB7XG4gIEBpZiAoJGltLW1lZGlhLXN1cHBvcnQgYW5kIGxlbmd0aCgkY29uZGl0aW9ucykgPT0gMCkgb3JcbiAgICAgIChub3QgJGltLW1lZGlhLXN1cHBvcnQgYW5kIGltLWludGVyY2VwdHMtc3RhdGljLWJyZWFrcG9pbnQoJGNvbmRpdGlvbnMuLi4pKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2UgaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsZW5ndGgoJGNvbmRpdGlvbnMpID4gMCkge1xuICAgIEBtZWRpYSAje3VucXVvdGUocGFyc2UtZXhwcmVzc2lvbihudGgoJGNvbmRpdGlvbnMsIDEpKSl9IHtcbiAgICAgIC8vIFJlY3Vyc2l2ZSBjYWxsXG4gICAgICBAaW5jbHVkZSBtZWRpYShzbGljZSgkY29uZGl0aW9ucywgMikuLi4pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvKiBzdHlsZWxpbnQtZGlzYWJsZSBibG9jay1uby1lbXB0eSAqL1xuQG1peGluIGhlYWRsaW5lX2hvb2soJGxldmVsKSB7XG59XG5cbkBtaXhpbiBsaW5rX2hvb2soKSB7XG59XG5cbkBtaXhpbiBsaXN0X2hvb2soKSB7XG59XG5cbkBtaXhpbiBsaXN0LWl0ZW1faG9vaygpIHtcbn1cbi8qIHN0eWxlbGludC1lbmFibGUgKi9cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAnY29tcG9uZW50cy90eXBvZ3JhcGh5L2hvb2snO1xuQGltcG9ydCAndXRpbHMvZm9udC1mYW1pbHknO1xuXG4kdHlwb2dyYXBoeV9oZWFkbGluZS1mb250LWZhbWlseTogJGZvbnRfZmFtaWx5LXByaW1hcnkgIWRlZmF1bHQ7XG4kdHlwb2dyYXBoeV9oZWFkbGluZS1mb250LXdlaWdodDogNzAwICFkZWZhdWx0O1xuJHR5cG9ncmFwaHlfaGVhZGxpbmUtY29sb3I6ICRjb2xvcl90ZXh0LTgwMCAhZGVmYXVsdDtcbiR0eXBvZ3JhcGh5X2hlYWRsaW5lLXRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWRlZmF1bHQ7XG4kdHlwb2dyYXBoeV9oZWFkbGluZS1tYXJnaW5zOiAxcmVtIDAgMnJlbSAhZGVmYXVsdDtcblxuJHR5cG9ncmFwaHlfbGluay1jb2xvcjogJGxpbmstY29sb3JfYmFzZSAhZGVmYXVsdDtcbiR0eXBvZ3JhcGh5X2xpbmstLWhvdmVyLWNvbG9yOiAkbGluay1jb2xvcl9iYXNlLWhvdmVyICFkZWZhdWx0O1xuJHR5cG9ncmFwaHlfbGluay10ZXh0LWRlY29yYXRpb246IG5vbmUgIWRlZmF1bHQ7XG4kdHlwb2dyYXBoeV9saW5rLS1ob3Zlci10ZXh0LWRlY29yYXRpb246ICR0eXBvZ3JhcGh5X2xpbmstdGV4dC1kZWNvcmF0aW9uICFkZWZhdWx0O1xuXG4kdHlwb2dyYXBoeV9saXN0LW1hcmdpbjogMCAwIDIuNXJlbSAhZGVmYXVsdDtcbiR0eXBvZ3JhcGh5X2xpc3QtcGFkZGluZzogMCAwIDAgNHJlbSAhZGVmYXVsdDtcblxuJHR5cG9ncmFwaHlfbGlzdC1pdGVtLW1hcmdpbjogMCAwIDFyZW0gIWRlZmF1bHQ7XG5cbkBtaXhpbiBoZWFkbGluZSgkbGV2ZWw6ICRmb250LXNpemVfaGVhZGxpbmUtMikge1xuICAgIEBpbmNsdWRlIGZvbnQtZmFtaWx5KCR0eXBvZ3JhcGh5X2hlYWRsaW5lLWZvbnQtZmFtaWx5KTtcblxuICAgIGZvbnQtc2l6ZTogJGxldmVsO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG4gICAgY29sb3I6ICR0eXBvZ3JhcGh5X2hlYWRsaW5lLWNvbG9yO1xuICAgIGZvbnQtd2VpZ2h0OiAkdHlwb2dyYXBoeV9oZWFkbGluZS1mb250LXdlaWdodDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogJHR5cG9ncmFwaHlfaGVhZGxpbmUtdGV4dC10cmFuc2Zvcm07XG4gICAgbWFyZ2luOiAkdHlwb2dyYXBoeV9oZWFkbGluZS1tYXJnaW5zO1xuXG4gICAgQGluY2x1ZGUgaGVhZGxpbmVfaG9vaygkbGV2ZWwpO1xufVxuXG5AbWl4aW4gbGluayhcbiAgICAkY29sb3I6ICR0eXBvZ3JhcGh5X2xpbmstY29sb3IsXG4gICAgJGNvbG9yLWhvdmVyOiAkdHlwb2dyYXBoeV9saW5rLS1ob3Zlci1jb2xvcixcbiAgICAkZGVjb3JhdGlvbjogJHR5cG9ncmFwaHlfbGluay10ZXh0LWRlY29yYXRpb24sXG4gICAgJGRlY29yYXRpb24taG92ZXI6ICR0eXBvZ3JhcGh5X2xpbmstLWhvdmVyLXRleHQtZGVjb3JhdGlvblxuKSB7XG4gICAgJixcbiAgICAmOnZpc2l0ZWQge1xuICAgICAgICBjb2xvcjogJGNvbG9yO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246ICRkZWNvcmF0aW9uO1xuICAgIH1cblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyxcbiAgICAmOmFjdGl2ZSxcbiAgICAmOnZpc2l0ZWQ6aG92ZXIsXG4gICAgJjp2aXNpdGVkOmZvY3VzIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ob3ZlcjtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiAkZGVjb3JhdGlvbi1ob3ZlcjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBsaW5rX2hvb2soKTtcbn1cblxuQG1peGluIGxpc3QoKSB7XG4gICAgbWFyZ2luOiAkdHlwb2dyYXBoeV9saXN0LW1hcmdpbjtcbiAgICBwYWRkaW5nOiAkdHlwb2dyYXBoeV9saXN0LXBhZGRpbmc7XG5cbiAgICBAaW5jbHVkZSBsaXN0X2hvb2soKTtcbn1cblxuQG1peGluIGxpc3QtaXRlbSgpIHtcbiAgICBtYXJnaW46ICR0eXBvZ3JhcGh5X2xpc3QtaXRlbS1tYXJnaW47XG5cbiAgICBAaW5jbHVkZSBsaXN0LWl0ZW1faG9vaygpO1xufVxuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL19zbGlkZXIvbmF2aWdhdGlvbi9taXhpbic7XG5cbi4jeyRuc31zbGlkZXItbmF2aWdhdGlvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSBhbmQgKHBvaW50ZXI6IGZpbmUpIHtcbiAgICAgICAgQGluY2x1ZGUgc2xpZGVyLW5hdmlnYXRpb24oKTtcbiAgICB9XG59XG4iLCJAaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvX3NsaWRlci9ob29rcyc7XG5cbiR0cmlnZ2VyX3dpZHRoOiA0LjRyZW0gIWRlZmF1bHQ7XG4kdHJpZ2dlcl9oZWlnaHQ6IDUuMnJlbSAhZGVmYXVsdDtcbiR0cmlnZ2VyX2VkZ2Utb2Zmc2V0OiAxLjVyZW0gIWRlZmF1bHQ7XG4kdHJpZ2dlcl9ib3JkZXI6IDAgIWRlZmF1bHQ7XG4kdHJpZ2dlcl9yYWRpdXM6ICRib3JkZXItcmFkaXVzX2Jhc2UgIWRlZmF1bHQ7XG4kdHJpZ2dlcl9iYWNrZ3JvdW5kOiAkY29sb3JfYmFja2dyb3VuZC0yMDAgIWRlZmF1bHQ7XG4kdHJpZ2dlcl9zaGFkb3c6IDFweCAxcHggMnB4IDAgcmdiYSgkY29sb3JfYmxhY2ssIDAuMjUpICFkZWZhdWx0O1xuJHRyaWdnZXJfc2hhZG93LS1ob3ZlcjogMXB4IDFweCAxMHB4IDAgcmdiYSgkY29sb3JfYmxhY2ssIDAuMjUpICFkZWZhdWx0O1xuJHRyaWdnZXJfY29sb3I6ICRjb2xvcl9wcmltYXJ5LTUwMCAhZGVmYXVsdDsgLy8gaWNvbiBjb2xvciBpbmhlcml0c1xuJHRyaWdnZXItLWRpc2FibGVkLW9wYWNpdHk6IDAuMjUgIWRlZmF1bHQ7XG4kdHJpZ2dlci0tZGlzYWJsZWQtZ3JheW91dDogdHJ1ZSAhZGVmYXVsdDtcblxuJHRyaWdnZXItaWNvbl93aWR0aDogMS40cmVtICFkZWZhdWx0O1xuJHRyaWdnZXItaWNvbl9oZWlnaHQ6IDIuN3JlbSAhZGVmYXVsdDtcblxuQG1peGluIHNsaWRlci1uYXZpZ2F0aW9uKCkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB6LWluZGV4OiAxMTtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC01MCUsIDApO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogJHRyaWdnZXJfd2lkdGg7XG4gICAgaGVpZ2h0OiAkdHJpZ2dlcl9oZWlnaHQ7XG4gICAgYm9yZGVyOiAkdHJpZ2dlcl9ib3JkZXI7XG4gICAgYm9yZGVyLXJhZGl1czogJHRyaWdnZXJfcmFkaXVzO1xuICAgIGJhY2tncm91bmQ6ICR0cmlnZ2VyX2JhY2tncm91bmQ7XG4gICAgYm94LXNoYWRvdzogJHRyaWdnZXJfc2hhZG93O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6ICR0cmlnZ2VyX2NvbG9yO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tZGVmYXVsdC10aW1lO1xuXG4gICAgJi0tcHJldiB7XG4gICAgICAgIGxlZnQ6ICR0cmlnZ2VyX2VkZ2Utb2Zmc2V0O1xuICAgIH1cblxuICAgICYtLW5leHQge1xuICAgICAgICByaWdodDogJHRyaWdnZXJfZWRnZS1vZmZzZXQ7XG4gICAgfVxuXG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgICBvcGFjaXR5OiAkdHJpZ2dlci0tZGlzYWJsZWQtb3BhY2l0eTtcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcblxuICAgICAgICBAaWYgKCR0cmlnZ2VyLS1kaXNhYmxlZC1ncmF5b3V0ID09IHRydWUpIHtcbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgZmlsdGVyOiBncmF5c2NhbGUoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdChbZGlzYWJsZWRdKTpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6ICR0cmlnZ2VyX3NoYWRvdy0taG92ZXI7XG4gICAgfVxuXG4gICAgJl9faWNvbiB7XG4gICAgICAgIHdpZHRoOiAkdHJpZ2dlci1pY29uX3dpZHRoO1xuICAgICAgICBoZWlnaHQ6ICR0cmlnZ2VyLWljb25faGVpZ2h0O1xuICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgc2xpZGVyLW5hdmlnYXRpb24taG9vaygpO1xufVxuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL19zbGlkZXIvcGFnaW5hdGlvbi9taXhpbic7XG5cbi4jeyRuc31zbGlkZXItcGFnaW5hdGlvbiB7XG4gICAgQGluY2x1ZGUgc2xpZGVyLXBhZ2luYXRpb24oKTtcbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAnY29tcG9uZW50cy9fc2xpZGVyL2hvb2tzJztcblxuJHNsaWRlci1wYWdpbmF0aW9uX2J1bGxldHMtZ2FwOiAwLjhyZW0gIWRlZmF1bHQ7XG4kc2xpZGVyLXBhZ2luYXRpb25fYnVsbGV0LWJvcmRlcjogMCAhZGVmYXVsdDtcbiRzbGlkZXItcGFnaW5hdGlvbl9idWxsZXQtcmFkaXVzOiAycHggIWRlZmF1bHQ7XG4kc2xpZGVyLXBhZ2luYXRpb25fYnVsbGV0LWJnOiAkY29sb3JfYmFja2dyb3VuZC01MDAgIWRlZmF1bHQ7XG4kc2xpZGVyLXBhZ2luYXRpb25fYnVsbGV0LWJnLS1jdXJyZW50OiAkY29sb3Jfc2Vjb25kYXJ5LTUwMCAhZGVmYXVsdDtcblxuJHNsaWRlci1wYWdpbmF0aW9uX2J1bGxldC13aWR0aDogMi4ycmVtICFkZWZhdWx0O1xuJHNsaWRlci1wYWdpbmF0aW9uX2J1bGxldC1oZWlnaHQ6IDAuOXJlbSAhZGVmYXVsdDtcblxuJHNsaWRlci1wYWdpbmF0aW9uLS1mcmFjdGlvbl9jb2xvcjogaW5oZXJpdCAhZGVmYXVsdDtcbiRzbGlkZXItcGFnaW5hdGlvbi0tZnJhY3Rpb25fZm9udC13ZWlnaHQ6IDYwMCAhZGVmYXVsdDtcbiRzbGlkZXItcGFnaW5hdGlvbi0tZnJhY3Rpb25fY3VycmVudC1jb2xvcjogJGNvbG9yX3NlY29uZGFyeS01MDAgIWRlZmF1bHQ7XG5cbkBtaXhpbiBzbGlkZXItcGFnaW5hdGlvbigpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogJHNsaWRlci1wYWdpbmF0aW9uX2J1bGxldHMtZ2FwO1xuICAgIG1pbi1oZWlnaHQ6IDNyZW07XG5cbiAgICAmLS1mcmFjdGlvbiB7XG4gICAgICAgIGdhcDogMDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgICAgICBjb2xvcjogJHNsaWRlci1wYWdpbmF0aW9uLS1mcmFjdGlvbl9jb2xvcjtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRzbGlkZXItcGFnaW5hdGlvbi0tZnJhY3Rpb25fZm9udC13ZWlnaHQ7XG5cbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBjb2xvcjogJHNsaWRlci1wYWdpbmF0aW9uLS1mcmFjdGlvbl9jdXJyZW50LWNvbG9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYnVsbGV0IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXBhZ2luYXRpb25fYnVsbGV0LXJhZGl1cztcbiAgICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1wYWdpbmF0aW9uX2J1bGxldC1iZztcbiAgICAgICAgYm9yZGVyOiAkc2xpZGVyLXBhZ2luYXRpb25fYnVsbGV0LWJvcmRlcjtcbiAgICAgICAgaW5saW5lLXNpemU6ICRzbGlkZXItcGFnaW5hdGlvbl9idWxsZXQtd2lkdGg7XG4gICAgICAgIGJsb2NrLXNpemU6ICRzbGlkZXItcGFnaW5hdGlvbl9idWxsZXQtaGVpZ2h0O1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXM7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtaW5kZW50OiAtOTlyZW07XG5cbiAgICAgICAgJi5jdXJyZW50IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItcGFnaW5hdGlvbl9idWxsZXQtYmctLWN1cnJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmOm9ubHktY2hpbGQge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIHNsaWRlci1wYWdpbmF0aW9uLWhvb2soKTtcbn1cbiIsIi8qXG4gKiBGdW5jdGlvbiB0byBnZXQgdmFsdWUgZnJvbSBhIGxpc3Qgb2YgdmFsdWVzLCBiYXNlZCBvbiBzaWRlXG4gKiBAcGFyYW0ge3N0cmluZ30gJHZhcmlhYmxlOiB2YXJpYWJsZSB3aXRoIGEgbGlzdCBvZiB2YWx1ZXMgKGxpa2UgcGFkZGluZ3MsIG1hcmdpbnMgZXRjLik7XG4gKiBAcGFyYW0ge3N0cmluZ30gJHNpZGU6IHNpZGUgKHVwIC8gcmlnaHQgLyBkb3duIC8gbGVmdCkgZm9yIHdoaWNoIHdlIHdhbnQgdG8gZ2V0IHZhbHVlXG4gKiBFeGFtcGxlOlxuICogJGNvbXBvbmVudF9wYWRkaW5nOiAxcmVtIDJyZW0gM3JlbTtcbiAqIGdldC12YWx1ZS1mcm9tLWxpc3QoJGNvbXBvbmVudF9wYWRkaW5nLCAncmlnaHQnKSAvLyAycmVtXG4gKiBnZXQtdmFsdWUtZnJvbS1saXN0KCRjb21wb25lbnRfcGFkZGluZywgJ2JvdHRvbScpIC8vIDNyZW1cbiAqL1xuXG5AZnVuY3Rpb24gZ2V0LXZhbHVlLWZyb20tbGlzdCgkdmFyaWFibGUsICRzaWRlKSB7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2YXJpYWJsZSk7XG5cbiAgICBAaWYgKCRsZW5ndGggPT0gMSkge1xuICAgICAgICBAcmV0dXJuIG50aCgkdmFyaWFibGUsIDEpO1xuICAgIH0gQGVsc2UgaWYgKCRsZW5ndGggPT0gMikge1xuICAgICAgICBAaWYgKCRzaWRlID09ICd1cCcpIE9SICgkc2lkZSA9PSAnZG93bicpIHtcbiAgICAgICAgICAgIEByZXR1cm4gbnRoKCR2YXJpYWJsZSwgMSk7XG4gICAgICAgIH0gQGVsc2UgaWYgKCRzaWRlID09ICdsZWZ0JykgT1IgKCRzaWRlID09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIEByZXR1cm4gbnRoKCR2YXJpYWJsZSwgMik7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIGlmICgkbGVuZ3RoID09IDMpIHtcbiAgICAgICAgQGlmICgkc2lkZSA9PSAnbGVmdCcpIE9SICgkc2lkZSA9PSAncmlnaHQnKSB7XG4gICAgICAgICAgICBAcmV0dXJuIG50aCgkdmFyaWFibGUsIDIpO1xuICAgICAgICB9IEBlbHNlIGlmICgkc2lkZSA9PSAndXAnKSB7XG4gICAgICAgICAgICBAcmV0dXJuIG50aCgkdmFyaWFibGUsIDEpO1xuICAgICAgICB9IEBlbHNlIGlmICgkc2lkZSA9PSAnZG93bicpIHtcbiAgICAgICAgICAgIEByZXR1cm4gbnRoKCR2YXJpYWJsZSwgMyk7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIGlmICgkbGVuZ3RoID09IDQpIHtcbiAgICAgICAgQGlmICgkc2lkZSA9PSAndXAnKSB7XG4gICAgICAgICAgICBAcmV0dXJuIG50aCgkdmFyaWFibGUsIDEpO1xuICAgICAgICB9IEBlbHNlIGlmICgkc2lkZSA9PSAncmlnaHQnKSB7XG4gICAgICAgICAgICBAcmV0dXJuIG50aCgkdmFyaWFibGUsIDIpO1xuICAgICAgICB9IEBlbHNlIGlmICgkc2lkZSA9PSAnZG93bicpIHtcbiAgICAgICAgICAgIEByZXR1cm4gbnRoKCR2YXJpYWJsZSwgMyk7XG4gICAgICAgIH0gQGVsc2UgaWYgKCRzaWRlID09ICdsZWZ0Jykge1xuICAgICAgICAgICAgQHJldHVybiBudGgoJHZhcmlhYmxlLCA0KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qIHN0eWxlbGludC1kaXNhYmxlIGJsb2NrLW5vLWVtcHR5ICovXG5AbWl4aW4gYnV0dG9uLWhvb2soJHR5cGUsICRpY29uX3Bvcykge1xufVxuXG5AbWl4aW4gYnV0dG9uX3NwYW4taG9vaygkdHlwZSwgJGljb25fcG9zKSB7XG59XG5cbkBtaXhpbiBidXR0b25faWNvbi1ob29rKCR0eXBlLCAkaWNvbl9wb3MpIHtcbn1cbi8qIHN0eWxlbGludC1lbmFibGUgKi9cbiIsIi8qKipcbiAqIEhpZGUgb25seSB2aXN1YWxseSwgYnV0IGhhdmUgaXQgYXZhaWxhYmxlIGZvciBzY3JlZW4gcmVhZGVyczpcbiAqIGh0dHBzOi8vc25vb2suY2EvYXJjaGl2ZXMvaHRtbF9hbmRfY3NzL2hpZGluZy1jb250ZW50LWZvci1hY2Nlc3NpYmlsaXR5XG4gKlxuICogMS4gRm9yIGxvbmcgY29udGVudCwgbGluZSBmZWVkcyBhcmUgbm90IGludGVycHJldGVkIGFzIHNwYWNlcyBhbmQgc21hbGwgd2lkdGhcbiAqICAgIGNhdXNlcyBjb250ZW50IHRvIHdyYXAgMSB3b3JkIHBlciBsaW5lOlxuICogICAgaHR0cHM6Ly9tZWRpdW0uY29tL0BqZXNzZWJlYWNoL2Jld2FyZS1zbXVzaGVkLW9mZi1zY3JlZW4tYWNjZXNzaWJsZS10ZXh0LTU5NTJhNGMyY2JmZVxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvYmxvYi9tYXN0ZXIvc3JjL2Nzcy9tYWluLmNzcyNMMTMwXG4gKi9cblxuQG1peGluIHZpc3VhbGx5LWhpZGRlbiB7XG4gICAgYm9yZGVyOiAwO1xuICAgIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gICAgY2xpcC1wYXRoOiBpbnNldCg1MCUpO1xuICAgIGhlaWdodDogMXB4O1xuICAgIG1hcmdpbjogLTFweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxcHg7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgLyogMSAqL1xufVxuXG5AbWl4aW4gdmlzdWFsbHktdmlzaWJsZSB7XG4gICAgY2xpcDogYXV0bztcbiAgICBjbGlwLXBhdGg6IG5vbmU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbjogMDtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAnY29tcG9uZW50cy9jb250YWluZXIvbWl4aW4nO1xuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24vbWl4aW4nO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcblxuJGFkZHRvY2FydF9idXR0b24tdHlwZTogJGJ1dHRvbl9kZWZhdWx0LXR5cGUgIWRlZmF1bHQ7XG4kYWRkdG9jYXJ0X2J1dHRvbi1pY29uLXBvc2l0aW9uOiAkYnV0dG9uX2RlZmF1bHQtaWNvbi1wb3MgIWRlZmF1bHQ7XG5cbiRhZGR0b2NhcnRfYnV0dG9uLWljb24td2lkdGg6IDIuMnJlbSAhZGVmYXVsdDtcbiRhZGR0b2NhcnRfYnV0dG9uLWljb24taGVpZ2h0OiAkYWRkdG9jYXJ0X2J1dHRvbi1pY29uLXdpZHRoICFkZWZhdWx0O1xuJGFkZHRvY2FydF9idXR0b24taWNvbi1lZGdlLWd1dHRlcjogMC44ZW0gIWRlZmF1bHQ7XG5cbiRhZGR0b2NhcnRfYnV0dG9uLXNrZXdlZC1iYWNrZ3JvdW5kLXdpZHRoOiA1LjFyZW0gIWRlZmF1bHQ7XG4kYWRkdG9jYXJ0X2J1dHRvbi1wYWRkaW5nLWxlZnQ6IDFyZW0gIWRlZmF1bHQ7XG4kYWRkdG9jYXJ0X2J1dHRvbi1wYWRkaW5nLXJpZ2h0OiA0LjVyZW0gIWRlZmF1bHQ7XG5cbiRhZGR0b2NhcnRfbG9hZGluZy1pbmRpY2F0b3ItYmFsbC1jb2xvcjogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuJGFkZHRvY2FydF9sb2FkaW5nLWluZGljYXRvci1iYWxsLXNpemU6IDEwcHggIWRlZmF1bHQ7XG5cbiRhZGR0b2NhcnRfYWpheC1zdWNjZXNzLWJnLXByaW1hcnk6ICRjb2xvcl9zdWNjZXNzLTUwMCAhZGVmYXVsdDtcbiRhZGR0b2NhcnRfYWpheC1zdWNjZXNzLWJnLXNlY29uZGFyeTogJGNvbG9yX3N1Y2Nlc3MtNjAwICFkZWZhdWx0O1xuJGFkZHRvY2FydF9hamF4LXN1Y2Nlc3MtY29sb3I6ICRjb2xvcl93aGl0ZSAhZGVmYXVsdDtcbiRhZGR0b2NhcnRfYWpheC1zdWNjZXNzLWZpbGw6ICRhZGR0b2NhcnRfYWpheC1zdWNjZXNzLWNvbG9yICFkZWZhdWx0O1xuXG4kYWRkdG9jYXJ0X2FqYXgtZmFpbC1iZy1wcmltYXJ5OiAkY29sb3JfZXJyb3ItNTAwICFkZWZhdWx0O1xuJGFkZHRvY2FydF9hamF4LWZhaWwtYmctc2Vjb25kYXJ5OiAkY29sb3JfZXJyb3ItNjAwICFkZWZhdWx0O1xuJGFkZHRvY2FydF9hamF4LWZhaWwtY29sb3I6ICRjb2xvcl93aGl0ZSAhZGVmYXVsdDtcbiRhZGR0b2NhcnRfYWpheC1mYWlsLWZpbGw6ICRhZGR0b2NhcnRfYWpheC1mYWlsLWNvbG9yICFkZWZhdWx0O1xuXG4uI3skbnN9YWRkdG9jYXJ0IHtcbiAgICAkcm9vdDogJjtcblxuICAgICZfX3dyYXBwZXIge1xuICAgICAgICAvLyBiZWNhdXNlIGJ1dHRvbiBjYW4ndCBoYXZlIG92ZXJmbG93LCB3ZSBuZWVkIHRvIGFkZCBpdCBvbiBidXR0b24gd3JhcHBlclxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIEBpZiAoJGJ1dHRvbl9ib3JkZXItcmFkaXVzID4gMCkge1xuICAgICAgICAgICAgQHN1cHBvcnRzIChjbGlwLXBhdGg6IGluc2V0KDAgMCAwIDAgcm91bmQgJGJ1dHRvbl9ib3JkZXItcmFkaXVzKSkge1xuICAgICAgICAgICAgICAgIGNsaXAtcGF0aDogaW5zZXQoMCAwIDAgMCByb3VuZCAkYnV0dG9uX2JvcmRlci1yYWRpdXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGlkZSB1bm5lY2Vzc2FyeSBhZGQgdG8gY2FydCBidXR0b24gb24gZG93bmxvYWRhYmxlIHByb2R1Y3QgdXBkYXRlIHBkcFxuICAgICAgICAucGFnZS1wcm9kdWN0LWRvd25sb2FkYWJsZSAudXBkYXRlICYge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2J1dHRvbiB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbihcbiAgICAgICAgICAgICR0eXBlOiAkYWRkdG9jYXJ0X2J1dHRvbi10eXBlLFxuICAgICAgICAgICAgJGljb25fcG9zOiAkYWRkdG9jYXJ0X2J1dHRvbi1pY29uLXBvc2l0aW9uXG4gICAgICAgICk7XG5cbiAgICAgICAgJltkaXNhYmxlZF0ge1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAqIEFUQyBidG4uIGluIGJ1eWJveCB1c2VzIGRlZmVyQVRDQ2xpY2soKVxuICAgICAgICAgICAgICogYXMgcGFydCBvZiB0aGUgYEZhc3RlciBBZGQgVG8gQ2FydGAgZW5haG5jZW1lbnRcbiAgICAgICAgICAgICAqIHRoZXJlZm9yZSBpdCdzIGFwcGVhcmFuY2UgaXMgc2V0IHRvIG5vcm1hbCBhbGwgdGhlIHRpbWUuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIC4jeyRuc31idXlib3ggJiB7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYsXG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICY6Zm9jdXMsXG4gICAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgICAgICN7JHJvb3R9X19zdWNjZXNzLWxhYmVsIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGFkZHRvY2FydF9hamF4LXN1Y2Nlc3MtY29sb3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICN7JHJvb3R9X19zdWNjZXNzLWljb24ge1xuICAgICAgICAgICAgICAgICoge1xuICAgICAgICAgICAgICAgICAgICBmaWxsOiAkYWRkdG9jYXJ0X2FqYXgtc3VjY2Vzcy1maWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgI3skcm9vdH1fX2ZhaWwtbGFiZWwge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYWRkdG9jYXJ0X2FqYXgtZmFpbC1jb2xvcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgI3skcm9vdH1fX2ZhaWwtaWNvbiB7XG4gICAgICAgICAgICAgICAgKiB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGw6ICRhZGR0b2NhcnRfYWpheC1mYWlsLWZpbGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYnV0dG9uLWxhYmVsLFxuICAgICZfX3N1Y2Nlc3MtbGFiZWwsXG4gICAgJl9fZmFpbC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbl9zcGFuKFxuICAgICAgICAgICAgJHR5cGU6ICRhZGR0b2NhcnRfYnV0dG9uLXR5cGUsXG4gICAgICAgICAgICAkaWNvbl9wb3M6ICRhZGR0b2NhcnRfYnV0dG9uLWljb24tcG9zaXRpb25cbiAgICAgICAgKTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAmX19jb25maWd1cmUtaWNvbixcbiAgICAmX19idXR0b24taWNvbixcbiAgICAmX19zdWNjZXNzLWljb24sXG4gICAgJl9fZmFpbC1pY29uIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uX2ljb24oXG4gICAgICAgICAgICAkdHlwZTogJGFkZHRvY2FydF9idXR0b24tdHlwZSxcbiAgICAgICAgICAgICRpY29uX3BvczogJGFkZHRvY2FydF9idXR0b24taWNvbi1wb3NpdGlvblxuICAgICAgICApO1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgIG1heC1oZWlnaHQ6IG5vbmU7XG4gICAgICAgIHdpZHRoOiAkYWRkdG9jYXJ0X2J1dHRvbi1pY29uLXdpZHRoO1xuICAgICAgICBoZWlnaHQ6ICRhZGR0b2NhcnRfYnV0dG9uLWljb24taGVpZ2h0O1xuXG4gICAgICAgIC8qIHN0eWxlbGludC1kaXNhYmxlICovXG4gICAgICAgIEBpZiAoJGFkZHRvY2FydF9idXR0b24taWNvbi1wb3NpdGlvbiA9PSAncmlnaHQnKSBvciAoJGFkZHRvY2FydF9idXR0b24taWNvbi1wb3NpdGlvbiA9PSAnbGVmdCcpIHtcbiAgICAgICAgICAgICN7JGFkZHRvY2FydF9idXR0b24taWNvbi1wb3NpdGlvbn06ICRhZGR0b2NhcnRfYnV0dG9uLWljb24tZWRnZS1ndXR0ZXI7XG4gICAgICAgIH1cbiAgICAgICAgLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuICAgIH1cblxuICAgICZfX2ZhaWwtaWNvbiB7XG4gICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxuXG4gICAgJl9fYnV0dG9uLWxhYmVsLFxuICAgICZfX3N1Y2Nlc3MtbGFiZWwge1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGxpbmVhcixcbiAgICAgICAgICAgIHRyYW5zZm9ybSAxcyBjdWJpYy1iZXppZXIoMCwgMC43NywgMC4xOCwgMSk7XG4gICAgfVxuXG4gICAgJl9fYnV0dG9uLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIH1cblxuICAgICZfX2xvYWRpbmcge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCkgdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCk7XG4gICAgICAgIHdpZHRoOiAkYWRkdG9jYXJ0X2xvYWRpbmctaW5kaWNhdG9yLWJhbGwtc2l6ZSAqIDQ7XG4gICAgICAgIGhlaWdodDogJGFkZHRvY2FydF9sb2FkaW5nLWluZGljYXRvci1iYWxsLXNpemU7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgbGluZWFyLFxuICAgICAgICAgICAgdHJhbnNmb3JtIDFzIGN1YmljLWJlemllcigwLCAwLjc3LCAwLjE4LCAxKTtcbiAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMC4ycztcblxuICAgICAgICAmLWJhbGwge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogJGFkZHRvY2FydF9sb2FkaW5nLWluZGljYXRvci1iYWxsLXNpemU7XG4gICAgICAgICAgICBoZWlnaHQ6ICRhZGR0b2NhcnRfbG9hZGluZy1pbmRpY2F0b3ItYmFsbC1zaXplO1xuICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGFkZHRvY2FydF9sb2FkaW5nLWluZGljYXRvci1iYWxsLWNvbG9yO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gICAgICAgICAgICAmLS0xIHtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLS0yIHtcbiAgICAgICAgICAgICAgICBsZWZ0OiAxNXB4O1xuICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4xNXMgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi0tMyB7XG4gICAgICAgICAgICAgICAgbGVmdDogMzBweDtcbiAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuM3MgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2ZlZWRiYWNrLWJnIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiAtMWVtO1xuICAgICAgICB0b3A6IC0jeyRidXR0b25fYm9yZGVyLXNpemV9O1xuICAgICAgICBib3R0b206IC0jeyRidXR0b25fYm9yZGVyLXNpemV9O1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlICsgMi41ZW0pO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40NXMgY3ViaWMtYmV6aWVyKDAuMDEsIDAuNjUsIDAuMzgsIDEpO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYWRkdG9jYXJ0X2FqYXgtc3VjY2Vzcy1iZy1zZWNvbmRhcnk7XG5cbiAgICAgICAgI3skcm9vdH0tLW5vLXRyYW5zaXRpb25zICYge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICN7JHJvb3R9LS1mYWlsICYge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGFkZHRvY2FydF9hamF4LWZhaWwtYmctc2Vjb25kYXJ5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fc3VjY2Vzcy1sYWJlbCxcbiAgICAmX19zdWNjZXNzLWljb24sXG4gICAgJl9fZmFpbC1sYWJlbCxcbiAgICAmX19mYWlsLWljb24ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgIH1cblxuICAgICZfX3N1Y2Nlc3MtaWNvbixcbiAgICAmX19mYWlsLWljb24ge1xuICAgICAgICBoZWlnaHQ6IDEuNzI1ZW07XG4gICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuMnM7XG4gICAgfVxuXG4gICAgJl9fc3VjY2Vzcy1sYWJlbCxcbiAgICAmX19mYWlsLWxhYmVsIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHRyYW5zbGF0ZVgoLTJlbSk7IC8vIGNhbGMoKSBkb2Vzbid0IHdvcmsgaW4gSUUgc28gaSBoYWQgdG8gZHVwbGljYXRlIHRyYW5zbGF0ZVgoKSB0cmFuc2Zvcm0gdG8gYWRqdXN0IFggcG9zaXRpb25cbiAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMC4ycztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogI3skYWRkdG9jYXJ0X2J1dHRvbi1wYWRkaW5nLXJpZ2h0IC1cbiAgICAgICAgICAgICRhZGR0b2NhcnRfYnV0dG9uLXBhZGRpbmctbGVmdH07XG4gICAgfVxuXG4gICAgJl9fbWluaWNhcnQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgICYtLXN0aWNreSxcbiAgICAgICAgJi0tdW5zdGljayB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjb250YWluZXItd3JhcHBlcigpO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIDAsIDApO1xuICAgICAgICAgICAgei1pbmRleDogNDAwO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cbiAgICAgICAgICAgIC51aS1kaWFsb2cge1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5ibG9jay1taW5pY2FydCB7XG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAzLjJyZW0gIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19taW5pY2FydC1saW5rIHtcbiAgICAgICAgI3skcm9vdH1fX21pbmljYXJ0LS1zdGlja3kgJixcbiAgICAgICAgI3skcm9vdH1fX21pbmljYXJ0LS11bnN0aWNrICYge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgcGFkZGluZzogMi41cmVtIDFyZW07XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3JfYmFja2dyb3VuZC0yMDA7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAxcHggM3B4IDQuNXJlbSAwIHJnYmEoMzAsIDQ4LCA2NywgMC4zNCk7XG4gICAgICAgICAgICBhbmltYXRpb246IG1pbmljYXJ0LWluIDFzIGN1YmljLWJlemllcigwLCAwLjc3LCAwLjE4LCAxKTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgfVxuXG4gICAgICAgICN7JHJvb3R9X19taW5pY2FydC0tdW5zdGljayAmIHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogbWluaWNhcnQtb3V0IDAuNXMgY3ViaWMtYmV6aWVyKDAuNTUsIDAuMiwgMC44OSwgMC40NSk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19taW5pY2FydC1xdHktYmFkZ2Utd3JhcHBlciB7XG4gICAgICAgICRiYWRnZS13cmFwcGVyOiAmO1xuXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgei1pbmRleDogNjAwO1xuICAgICAgICB0cmFuc2l0aW9uOiB0b3AgMC45cyBjdWJpYy1iZXppZXIoMC40MiwgMC4zMSwgMC4zNCwgMC45MyksXG4gICAgICAgICAgICBsZWZ0IDAuOXMgY3ViaWMtYmV6aWVyKDAuNDIsIDAuMzEsIDAuMzQsIDAuOTMpO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgICAgICAmLS1hbmltYXRpbmcge1xuICAgICAgICAgICAgYW5pbWF0aW9uOiBtb3ZlLXF0eS1iYWRnZSAxLjJzIGN1YmljLWJlemllcigwLjQyLCAwLjMxLCAwLjM0LCAwLjkzKTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgICAgIHRvcDogMC41cmVtO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgICAgICAgICAgdG9wOiAxLjNyZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PWxhcHRvcCcpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiA1LjNyZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYjeyRiYWRnZS13cmFwcGVyfS0tbWluaWNhcnQtc3RpY2t5IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgICAgICAgICAgdG9wOiAxLjhyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAjeyRyb290fV9fbWluaWNhcnQtcXR5LWJhZGdlIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tbG9hZGluZyxcbiAgICAmLS1kb25lIHtcbiAgICAgICAgI3skcm9vdH1fX2J1dHRvbi1sYWJlbCB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyZW0sIDAsIDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tbG9hZGluZyB7XG4gICAgICAgICN7JHJvb3R9X19sb2FkaW5nIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApIHRyYW5zbGF0ZVgoLTEuMjVlbSk7IC8vIGNhbGMoKSBkb2Vzbid0IHdvcmsgaW4gSUUgc28gaSBoYWQgdG8gZHVwbGljYXRlIHRyYW5zbGF0ZVgoKSB0cmFuc2Zvcm0gdG8gYWRqdXN0IFggcG9zaXRpb25cblxuICAgICAgICAgICAgJi1iYWxsIHtcbiAgICAgICAgICAgICAgICBhbmltYXRpb246IGJhbGwtaW4gMXMgaW5maW5pdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1kb25lIHtcbiAgICAgICAgI3skcm9vdH1fX2J1dHRvbi1pY29uIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAjeyRyb290fV9fZmVlZGJhY2stYmcge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcblxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZChcbiAgICAgICAgICAgICAgICAgICAgLSN7JGFkZHRvY2FydF9idXR0b24tc2tld2VkLWJhY2tncm91bmQtd2lkdGggKyAwLjJ9LFxuICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXN1Y2Nlc3Mge1xuICAgICAgICAjeyRyb290fV9fc3VjY2Vzcy1pY29uIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAjeyRyb290fV9fc3VjY2Vzcy1sYWJlbCB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLWZhaWwge1xuICAgICAgICAjeyRyb290fV9fZmFpbC1pY29uIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAjeyRyb290fV9fZmFpbC1sYWJlbCB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLWFuaW1hdGlvbi1kb25lIHtcbiAgICAgICAgI3skcm9vdH1fX2J1dHRvbi1sYWJlbCxcbiAgICAgICAgI3skcm9vdH1fX2J1dHRvbi1pY29uIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuNXM7XG4gICAgICAgIH1cblxuICAgICAgICAjeyRyb290fV9fZmVlZGJhY2stYmcge1xuICAgICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMC4ycztcblxuICAgICAgICAgICAgJixcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGN1YmljLWJlemllcigwLjg2LCAwLjAxLCAwLjgzLCAwLjUxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICN7JHJvb3R9X19zdWNjZXNzLWxhYmVsLFxuICAgICAgICAjeyRyb290fV9fZmFpbC1pY29uIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC42cyBsaW5lYXIsXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtIDAuNnMgY3ViaWMtYmV6aWVyKDAuODYsIDAuMDEsIDAuODMsIDAuNTEpO1xuICAgICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgICN7JHJvb3R9X19zdWNjZXNzLWljb24sXG4gICAgICAgICN7JHJvb3R9X19mYWlsLWljb24ge1xuICAgICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlICovXG4gICAgQGtleWZyYW1lcyBiYWxsLWluIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIG1pbmljYXJ0LWluIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyBtaW5pY2FydC1vdXQge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgICAgICB9XG4gICAgICAgIDEwMCUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIG1vdmUtcXR5LWJhZGdlIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgICAgICAxNSUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgICA4MCUge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTtcbiAgICAgICAgfVxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qIHN0eWxlbGludC1lbmFibGUgKi9cblxuICAgIC5ibG9jay1taW5pY2FydCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuIiwiQGltcG9ydCAndXRpbHMvZ2V0LXZhbHVlLWZyb20tbGlzdCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbi9hbmltYXRpb24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24vaG9vayc7XG5AaW1wb3J0ICd1dGlscy92aXN1YWxseS1oaWRkZW4nO1xuXG4vLyBEZWZpbmUgZGVmYXVsdCB0eXBlIGZvciBidXR0b25zLiBZb3UgY2FuIG92ZXJyaWRlIGl0IGluZGl2aWR1YWxseSBwZXIgYnV0dG9uIGluIGVhY2ggY29tcG9uZW50XG4vLyBWYXJpYW50czogcHJpbWFyeSB8IHNlY29uZGFyeSB8IGxpbmsgfCBzdWNjZXNzIHwgZXJyb3JcbiRidXR0b25fZGVmYXVsdC10eXBlOiAncHJpbWFyeScgIWRlZmF1bHQ7XG5cbi8vIERlZmluZSBkZWZhdWx0IHBvc2l0aW9uIGZvciBpY29ucyBpbiBidXR0b24uIFlvdSBjYW4gb3ZlcnJpZGUgaXQgaW5kaXZpZHVhbGx5IHBlciBidXR0b24gaW4gZWFjaCBjb21wb25lbnRcbi8vIFZhcmlhbnRzOiBsZWZ0IHwgcmlnaHQgfCBuby1pY29uIHwgb25seS1pY29uXG4kYnV0dG9uX2RlZmF1bHQtaWNvbi1wb3M6ICdyaWdodCcgIWRlZmF1bHQ7XG5cbi8vIEdlbmVyYWwgc3R5bGVzIGZvciBidXR0b25zXG4kYnV0dG9uX2ZvbnQtc2l6ZTogMS40cmVtICFkZWZhdWx0O1xuJGJ1dHRvbl9mb250LXdlaWdodDogNzAwICFkZWZhdWx0O1xuJGJ1dHRvbl9ib3JkZXItc2l6ZTogMXB4ICFkZWZhdWx0O1xuJGJ1dHRvbl9wYWRkaW5nOiAwLjc1ZW0gMWVtICFkZWZhdWx0O1xuJGJ1dHRvbl9wYWRkaW5nLXdoZW4taWNvbjogM2VtICFkZWZhdWx0O1xuJGJ1dHRvbl9saW5lLWhlaWdodDogMS4yNzVlbSAhZGVmYXVsdDtcbiRidXR0b25fYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXNfYmFzZSAhZGVmYXVsdDtcbiRidXR0b25fYW5pbWF0aW9uLXRpbWU6IDAuNXMgIWRlZmF1bHQ7XG4kYnV0dG9uX2FuaW1hdGlvbi1iZWZvcmUtd2lkdGg6IDMuNGVtICFkZWZhdWx0O1xuJGJ1dHRvbl9hbmltYXRpb24tYWZ0ZXItd2lkdGg6IDNlbSAhZGVmYXVsdDtcbiRidXR0b25fdGV4dC10cmFuc2Zvcm06IG5vbmUgIWRlZmF1bHQ7XG4kYnV0dG9uX3RleHQtbGV0dGVyLXNwYWNpbmc6IG5vcm1hbCAhZGVmYXVsdDtcbiRidXR0b25fdGV4dC1hbGlnbjogY2VudGVyICFkZWZhdWx0O1xuXG4vLyBTdHlsZXMgZm9yIGBwcmltYXJ5YCBidXR0b24gdHlwZVxuJGJ1dHRvbl9wcmltYXJ5LWJvcmRlcjogJGJ1dHRvbl9ib3JkZXItc2l6ZSBzb2xpZCB0cmFuc3BhcmVudCAhZGVmYXVsdDtcbiRidXR0b25fcHJpbWFyeS0taG92ZXItYm9yZGVyOiAkYnV0dG9uX2JvcmRlci1zaXplIHNvbGlkIHRyYW5zcGFyZW50ICFkZWZhdWx0O1xuJGJ1dHRvbl9wcmltYXJ5LWJhY2tncm91bmQ6ICRjb2xvcl9wcmltYXJ5LTUwMCAhZGVmYXVsdDtcbiRidXR0b25fcHJpbWFyeS0taG92ZXItYmFja2dyb3VuZDogJGNvbG9yX3ByaW1hcnktODAwICFkZWZhdWx0O1xuJGJ1dHRvbl9wcmltYXJ5LWNvbG9yOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG4kYnV0dG9uX3ByaW1hcnktLWhvdmVyLWNvbG9yOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG4kYnV0dG9uX3ByaW1hcnktZmlsbDogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuJGJ1dHRvbl9wcmltYXJ5LS1ob3Zlci1maWxsOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG4kYnV0dG9uX3ByaW1hcnktZW5hYmxlLWFuaW1hdGlvbjogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3R5bGVzIGZvciBgc2Vjb25kYXJ5YCBidXR0b24gdHlwZVxuJGJ1dHRvbl9zZWNvbmRhcnktYm9yZGVyOiAkYnV0dG9uX2JvcmRlci1zaXplIHNvbGlkICRjb2xvcl9wcmltYXJ5LTUwMCAhZGVmYXVsdDtcbiRidXR0b25fc2Vjb25kYXJ5LS1ob3Zlci1ib3JkZXI6ICRidXR0b25fYm9yZGVyLXNpemUgc29saWQgJGNvbG9yX3ByaW1hcnktODAwICFkZWZhdWx0O1xuJGJ1dHRvbl9zZWNvbmRhcnktYmFja2dyb3VuZDogJGNvbG9yX3doaXRlICFkZWZhdWx0O1xuJGJ1dHRvbl9zZWNvbmRhcnktLWhvdmVyLWJhY2tncm91bmQ6ICRjb2xvcl9wcmltYXJ5LTgwMCAhZGVmYXVsdDtcbiRidXR0b25fc2Vjb25kYXJ5LWNvbG9yOiAkY29sb3JfcHJpbWFyeS01MDAgIWRlZmF1bHQ7XG4kYnV0dG9uX3NlY29uZGFyeS0taG92ZXItY29sb3I6ICRjb2xvcl90ZXh0LTIwMCAhZGVmYXVsdDtcbiRidXR0b25fc2Vjb25kYXJ5LWZpbGw6ICRjb2xvcl9wcmltYXJ5LTUwMCAhZGVmYXVsdDtcbiRidXR0b25fc2Vjb25kYXJ5LS1ob3Zlci1maWxsOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG4kYnV0dG9uX3NlY29uZGFyeS1lbmFibGUtYW5pbWF0aW9uOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3R5bGUgZm9yIGBsaW5rYCBidXR0b24gdHlwZVxuJGJ1dHRvbl9saW5rLWNvbG9yOiAkY29sb3JfcHJpbWFyeS01MDAgIWRlZmF1bHQ7XG4kYnV0dG9uX2xpbmstLWhvdmVyLWNvbG9yOiAkY29sb3JfcHJpbWFyeS04MDAgIWRlZmF1bHQ7XG4kYnV0dG9uX2xpbmstaWNvbi1wYWRkaW5nOiAycmVtICFkZWZhdWx0O1xuXG4vLyBTdHlsZXMgZm9yIGBzdWNjZXNzYCBidXR0b24gdHlwZVxuJGJ1dHRvbl9zdWNjZXNzLWJvcmRlcjogJGJ1dHRvbl9ib3JkZXItc2l6ZSBzb2xpZCB0cmFuc3BhcmVudCAhZGVmYXVsdDtcbiRidXR0b25fc3VjY2Vzcy0taG92ZXItYm9yZGVyOiAkYnV0dG9uX2JvcmRlci1zaXplIHNvbGlkIHRyYW5zcGFyZW50ICFkZWZhdWx0O1xuJGJ1dHRvbl9zdWNjZXNzLWJhY2tncm91bmQ6ICRjb2xvcl9zdWNjZXNzLTUwMCAhZGVmYXVsdDtcbiRidXR0b25fc3VjY2Vzcy0taG92ZXItYmFja2dyb3VuZDogJGNvbG9yX3N1Y2Nlc3MtNjAwICFkZWZhdWx0O1xuJGJ1dHRvbl9zdWNjZXNzLWNvbG9yOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG4kYnV0dG9uX3N1Y2Nlc3MtLWhvdmVyLWNvbG9yOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG4kYnV0dG9uX3N1Y2Nlc3MtZmlsbDogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuJGJ1dHRvbl9zdWNjZXNzLS1ob3Zlci1maWxsOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG4kYnV0dG9uX3N1Y2Nlc3MtZW5hYmxlLWFuaW1hdGlvbjogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN0eWxlcyBmb3IgYGVycm9yYCBidXR0b24gdHlwZVxuJGJ1dHRvbl9lcnJvci1ib3JkZXI6ICRidXR0b25fYm9yZGVyLXNpemUgc29saWQgdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG4kYnV0dG9uX2Vycm9yLS1ob3Zlci1ib3JkZXI6ICRidXR0b25fYm9yZGVyLXNpemUgc29saWQgdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG4kYnV0dG9uX2Vycm9yLWJhY2tncm91bmQ6ICRjb2xvcl9lcnJvci01MDAgIWRlZmF1bHQ7XG4kYnV0dG9uX2Vycm9yLS1ob3Zlci1iYWNrZ3JvdW5kOiAkY29sb3JfZXJyb3ItNjAwICFkZWZhdWx0O1xuJGJ1dHRvbl9lcnJvci1jb2xvcjogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuJGJ1dHRvbl9lcnJvci0taG92ZXItY29sb3I6ICRjb2xvcl90ZXh0LTIwMCAhZGVmYXVsdDtcbiRidXR0b25fZXJyb3ItZmlsbDogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuJGJ1dHRvbl9lcnJvci0taG92ZXItZmlsbDogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuJGJ1dHRvbl9lcnJvci1lbmFibGUtYW5pbWF0aW9uOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gRGVmaW5lcyBob3cgbXVjaCBidXR0b24gaWNvbiBzaG91bGQgYmUgcHVsbGVkIHZlcnRpY2FsbHkgdG8gY2VudGVyIGl0LlxuLy8gU2hvdWxkIGJlIGRlZmluZWQgaW4gZW0gdG8gbWFrZSBpdCByZWxhdGl2ZSB0byBidXR0b24ncyBmb250IHNpemUuXG4kYnV0dG9uX3NwYW4tZm9udC1vZmZzZXQ6IDAgIWRlZmF1bHQ7XG5cbi8vIERlZmluZXMgaG93IG11Y2ggYnV0dG9uIGljb24gc2hvdWxkIGJlIHB1bGxlZCB2ZXJ0aWNhbGx5IHRvIGNlbnRlciBpdCBvbiBpY29uIGJ1dHRvbi5cbi8vIFNob3VsZCBiZSBkZWZpbmVkIGluIGVtIHRvIG1ha2UgaXQgcmVsYXRpdmUgdG8gYnV0dG9uJ3MgZm9udCBzaXplLlxuJGJ1dHRvbl9pY29uLW9mZnNldDogMC4xZW0gIWRlZmF1bHQ7XG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIGZ1bmN0aW9uLWNhbGMtbm8tdW5zcGFjZWQtb3BlcmF0b3JcblxuQG1peGluIGJ1dHRvbihcbiAgICAkdHlwZTogJGJ1dHRvbl9kZWZhdWx0LXR5cGUsXG4gICAgJGljb25fcG9zOiAkYnV0dG9uX2RlZmF1bHQtaWNvbi1wb3Ncbikge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LXNpemU6ICRidXR0b25fZm9udC1zaXplO1xuICAgIGZvbnQtd2VpZ2h0OiAkYnV0dG9uX2ZvbnQtd2VpZ2h0O1xuICAgIHRleHQtYWxpZ246ICRidXR0b25fdGV4dC1hbGlnbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGluZS1oZWlnaHQ6ICRidXR0b25fbGluZS1oZWlnaHQ7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiAkYnV0dG9uX3RleHQtdHJhbnNmb3JtO1xuXG4gICAgQGlmICgkdHlwZSAhPSAnbGluaycpIHtcbiAgICAgICAgcGFkZGluZzogJGJ1dHRvbl9wYWRkaW5nO1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yICRidXR0b25fYW5pbWF0aW9uLXRpbWUsXG4gICAgICAgICAgICBib3JkZXItY29sb3IgJGJ1dHRvbl9hbmltYXRpb24tdGltZSwgZmlsbCAkYnV0dG9uX2FuaW1hdGlvbi10aW1lLFxuICAgICAgICAgICAgY29sb3IgJGJ1dHRvbl9hbmltYXRpb24tdGltZTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICB9XG5cbiAgICBAaWYgKCR0eXBlID09ICdwcmltYXJ5Jykge1xuICAgICAgICBAaWYgKCRidXR0b25fcHJpbWFyeS1lbmFibGUtYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b25fYW5pbWF0aW9uKFxuICAgICAgICAgICAgICAgICR0eXBlOiAncHJpbWFyeScsXG4gICAgICAgICAgICAgICAgJGNvbG9yX3N0YXJ0OiAkYnV0dG9uX3ByaW1hcnktYmFja2dyb3VuZCxcbiAgICAgICAgICAgICAgICAkY29sb3JfZW5kOiAkYnV0dG9uX3ByaW1hcnktLWhvdmVyLWJhY2tncm91bmQsXG4gICAgICAgICAgICAgICAgJGljb25fcG9zOiAkaWNvbl9wb3NcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGlmICgkaWNvbl9wb3MgPT0gJ3JpZ2h0Jykgb3IgKCRpY29uX3BvcyA9PSAnbGVmdCcpIHtcbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUsXG4gICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAoJHR5cGUgPT0gJ3NlY29uZGFyeScpIHtcbiAgICAgICAgQGlmICgkYnV0dG9uX3NlY29uZGFyeS1lbmFibGUtYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b25fYW5pbWF0aW9uKFxuICAgICAgICAgICAgICAgICR0eXBlOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgICAkY29sb3Jfc3RhcnQ6ICRidXR0b25fc2Vjb25kYXJ5LWJhY2tncm91bmQsXG4gICAgICAgICAgICAgICAgJGNvbG9yX2VuZDogJGJ1dHRvbl9zZWNvbmRhcnktLWhvdmVyLWJhY2tncm91bmQsXG4gICAgICAgICAgICAgICAgJGljb25fcG9zOiAkaWNvbl9wb3NcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGlmICgkaWNvbl9wb3MgPT0gJ3JpZ2h0Jykgb3IgKCRpY29uX3BvcyA9PSAnbGVmdCcpIHtcbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUsXG4gICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAoJHR5cGUgPT0gJ2xpbmsnKSB7XG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yICRidXR0b25fYW5pbWF0aW9uLXRpbWUsIGZpbGwgJGJ1dHRvbl9hbmltYXRpb24tdGltZTtcblxuICAgICAgICAqIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yICRidXR0b25fYW5pbWF0aW9uLXRpbWUsXG4gICAgICAgICAgICAgICAgZmlsbCAkYnV0dG9uX2FuaW1hdGlvbi10aW1lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGlmICgkdHlwZSA9PSAnc3VjY2VzcycpIHtcbiAgICAgICAgQGlmICgkYnV0dG9uX3N1Y2Nlc3MtZW5hYmxlLWFuaW1hdGlvbikge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uX2FuaW1hdGlvbihcbiAgICAgICAgICAgICAgICAkdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICRjb2xvcl9zdGFydDogJGJ1dHRvbl9zdWNjZXNzLWJhY2tncm91bmQsXG4gICAgICAgICAgICAgICAgJGNvbG9yX2VuZDogJGJ1dHRvbl9zdWNjZXNzLS1ob3Zlci1iYWNrZ3JvdW5kLFxuICAgICAgICAgICAgICAgICRpY29uX3BvczogJGljb25fcG9zXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGlmICgkdHlwZSA9PSAnZXJyb3InKSB7XG4gICAgICAgIEBpZiAoJGJ1dHRvbl9lcnJvci1lbmFibGUtYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b25fYW5pbWF0aW9uKFxuICAgICAgICAgICAgICAgICR0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICRjb2xvcl9zdGFydDogJGJ1dHRvbl9lcnJvci1iYWNrZ3JvdW5kLFxuICAgICAgICAgICAgICAgICRjb2xvcl9lbmQ6ICRidXR0b25fZXJyb3ItLWhvdmVyLWJhY2tncm91bmQsXG4gICAgICAgICAgICAgICAgJGljb25fcG9zOiAkaWNvbl9wb3NcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gc3R5bGVsaW50LWRpc2FibGUgbm8tZGVzY2VuZGluZy1zcGVjaWZpY2l0eVxuICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAmLFxuICAgICY6dmlzaXRlZCB7XG4gICAgICAgIEBpZiAoJHR5cGUgIT0gJ2xpbmsnKSB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkYnV0dG9uX2JvcmRlci1yYWRpdXM7XG4gICAgICAgICAgICBvdXRsaW5lLW9mZnNldDogMXB4O1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoJHR5cGUgPT0gJ3ByaW1hcnknKSB7XG4gICAgICAgICAgICBib3JkZXI6ICRidXR0b25fcHJpbWFyeS1ib3JkZXI7XG4gICAgICAgICAgICBjb2xvcjogJGJ1dHRvbl9wcmltYXJ5LWNvbG9yO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbl9wcmltYXJ5LWJhY2tncm91bmQ7XG5cbiAgICAgICAgICAgICoge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYnV0dG9uX3ByaW1hcnktY29sb3I7XG4gICAgICAgICAgICAgICAgZmlsbDogJGJ1dHRvbl9wcmltYXJ5LWZpbGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCR0eXBlID09ICdzZWNvbmRhcnknKSB7XG4gICAgICAgICAgICBib3JkZXI6ICRidXR0b25fc2Vjb25kYXJ5LWJvcmRlcjtcbiAgICAgICAgICAgIGNvbG9yOiAkYnV0dG9uX3NlY29uZGFyeS1jb2xvcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b25fc2Vjb25kYXJ5LWJhY2tncm91bmQ7XG5cbiAgICAgICAgICAgICoge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYnV0dG9uX3NlY29uZGFyeS1jb2xvcjtcbiAgICAgICAgICAgICAgICBmaWxsOiAkYnV0dG9uX3NlY29uZGFyeS1maWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkdHlwZSA9PSAnbGluaycpIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYnV0dG9uX2xpbmstY29sb3I7XG5cbiAgICAgICAgICAgICoge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYnV0dG9uX2xpbmstY29sb3I7XG4gICAgICAgICAgICAgICAgZmlsbDogJGJ1dHRvbl9saW5rLWNvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkdHlwZSA9PSAnc3VjY2VzcycpIHtcbiAgICAgICAgICAgIGJvcmRlcjogJGJ1dHRvbl9zdWNjZXNzLWJvcmRlcjtcbiAgICAgICAgICAgIGNvbG9yOiAkYnV0dG9uX3N1Y2Nlc3MtY29sb3I7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uX3N1Y2Nlc3MtYmFja2dyb3VuZDtcblxuICAgICAgICAgICAgKiB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRidXR0b25fc3VjY2Vzcy1jb2xvcjtcbiAgICAgICAgICAgICAgICBmaWxsOiAkYnV0dG9uX3N1Y2Nlc3MtZmlsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoJHR5cGUgPT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgYm9yZGVyOiAkYnV0dG9uX2Vycm9yLWJvcmRlcjtcbiAgICAgICAgICAgIGNvbG9yOiAkYnV0dG9uX2Vycm9yLWNvbG9yO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbl9lcnJvci1iYWNrZ3JvdW5kO1xuXG4gICAgICAgICAgICAqIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGJ1dHRvbl9lcnJvci1jb2xvcjtcbiAgICAgICAgICAgICAgICBmaWxsOiAkYnV0dG9uX2Vycm9yLWZpbGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gc3R5bGVsaW50LWVuYWJsZSBuby1kZXNjZW5kaW5nLXNwZWNpZmljaXR5XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMsXG4gICAgJjphY3RpdmUge1xuICAgICAgICAmOm5vdChbZGlzYWJsZWRdKSB7XG4gICAgICAgICAgICBAaWYgKCR0eXBlICE9ICdsaW5rJykge1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoJHR5cGUgPT0gJ3ByaW1hcnknKSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAkYnV0dG9uX3ByaW1hcnktLWhvdmVyLWJvcmRlcjtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGJ1dHRvbl9wcmltYXJ5LS1ob3Zlci1jb2xvcjtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uX3ByaW1hcnktLWhvdmVyLWJhY2tncm91bmQ7XG5cbiAgICAgICAgICAgICAgICAqIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRidXR0b25fcHJpbWFyeS0taG92ZXItY29sb3I7XG4gICAgICAgICAgICAgICAgICAgIGZpbGw6ICRidXR0b25fcHJpbWFyeS0taG92ZXItZmlsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoJHR5cGUgPT0gJ3NlY29uZGFyeScpIHtcbiAgICAgICAgICAgICAgICBib3JkZXI6ICRidXR0b25fc2Vjb25kYXJ5LS1ob3Zlci1ib3JkZXI7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRidXR0b25fc2Vjb25kYXJ5LS1ob3Zlci1jb2xvcjtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uX3NlY29uZGFyeS0taG92ZXItYmFja2dyb3VuZDtcblxuICAgICAgICAgICAgICAgICoge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGJ1dHRvbl9zZWNvbmRhcnktLWhvdmVyLWNvbG9yO1xuICAgICAgICAgICAgICAgICAgICBmaWxsOiAkYnV0dG9uX3NlY29uZGFyeS0taG92ZXItZmlsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoJHR5cGUgPT0gJ2xpbmsnKSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRidXR0b25fbGluay0taG92ZXItY29sb3I7XG5cbiAgICAgICAgICAgICAgICAqIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRidXR0b25fbGluay0taG92ZXItY29sb3I7XG4gICAgICAgICAgICAgICAgICAgIGZpbGw6ICRidXR0b25fbGluay0taG92ZXItY29sb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKCR0eXBlID09ICdzdWNjZXNzJykge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogJGJ1dHRvbl9zdWNjZXNzLS1ob3Zlci1ib3JkZXI7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRidXR0b25fc3VjY2Vzcy0taG92ZXItY29sb3I7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbl9zdWNjZXNzLS1ob3Zlci1iYWNrZ3JvdW5kO1xuXG4gICAgICAgICAgICAgICAgKiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkYnV0dG9uX3N1Y2Nlc3MtLWhvdmVyLWNvbG9yO1xuICAgICAgICAgICAgICAgICAgICBmaWxsOiAkYnV0dG9uX3N1Y2Nlc3MtLWhvdmVyLWZpbGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKCR0eXBlID09ICdlcnJvcicpIHtcbiAgICAgICAgICAgICAgICBib3JkZXI6ICRidXR0b25fZXJyb3ItLWhvdmVyLWJvcmRlcjtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGJ1dHRvbl9lcnJvci0taG92ZXItY29sb3I7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbl9lcnJvci0taG92ZXItYmFja2dyb3VuZDtcblxuICAgICAgICAgICAgICAgICoge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGJ1dHRvbl9lcnJvci0taG92ZXItY29sb3I7XG4gICAgICAgICAgICAgICAgICAgIGZpbGw6ICRidXR0b25fZXJyb3ItLWhvdmVyLWZpbGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgICBvcGFjaXR5OiAwLjY1O1xuICAgICAgICBjdXJzb3I6IGF1dG87XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnV0dG9uLWhvb2soJHR5cGUsICRpY29uX3Bvcyk7XG59XG5cbkBtaXhpbiBidXR0b25fc3BhbihcbiAgICAkdHlwZTogJGJ1dHRvbl9kZWZhdWx0LXR5cGUsXG4gICAgJGljb25fcG9zOiAkYnV0dG9uX2RlZmF1bHQtaWNvbi1wb3Ncbikge1xuICAgIG1hcmdpbi10b3A6ICRidXR0b25fc3Bhbi1mb250LW9mZnNldDtcbiAgICB6LWluZGV4OiAxO1xuICAgIGZvbnQtd2VpZ2h0OiAkYnV0dG9uX2ZvbnQtd2VpZ2h0O1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbGluZS1oZWlnaHQ6ICRidXR0b25fbGluZS1oZWlnaHQ7XG4gICAgbGV0dGVyLXNwYWNpbmc6ICRidXR0b25fdGV4dC1sZXR0ZXItc3BhY2luZztcblxuICAgIEBpZiAoJGljb25fcG9zID09ICdyaWdodCcpIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gICAgICAgIEBpZiAoJHR5cGUgPT0gJ2xpbmsnKSB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkYnV0dG9uX2xpbmstaWNvbi1wYWRkaW5nO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgdW5pdCgkYnV0dG9uX3BhZGRpbmctd2hlbi1pY29uKSA9PVxuICAgICAgICAgICAgICAgICAgICB1bml0KFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0LXZhbHVlLWZyb20tbGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFyaWFibGU6ICRidXR0b25fcGFkZGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2lkZTogJGljb25fcG9zXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRidXR0b25fcGFkZGluZy13aGVuLWljb24gK1xuICAgICAgICAgICAgICAgICAgICBnZXQtdmFsdWUtZnJvbS1saXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgJHZhcmlhYmxlOiAkYnV0dG9uX3BhZGRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2lkZTogJGljb25fcG9zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiBjYWxjKFxuICAgICAgICAgICAgICAgICAgICAjeyRidXR0b25fcGFkZGluZy13aGVuLWljb259ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICN7Z2V0LXZhbHVlLWZyb20tbGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFyaWFibGU6ICRidXR0b25fcGFkZGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2lkZTogJGljb25fcG9zXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIGlmICgkaWNvbl9wb3MgPT0gJ2xlZnQnKSB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG5cbiAgICAgICAgQGlmICgkdHlwZSA9PSAnbGluaycpIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJGJ1dHRvbl9saW5rLWljb24tcGFkZGluZztcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgIHVuaXQoJGJ1dHRvbl9wYWRkaW5nLXdoZW4taWNvbikgPT1cbiAgICAgICAgICAgICAgICAgICAgdW5pdChcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldC12YWx1ZS1mcm9tLWxpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhcmlhYmxlOiAkYnV0dG9uX3BhZGRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNpZGU6ICRpY29uX3Bvc1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICRidXR0b25fcGFkZGluZy13aGVuLWljb24gK1xuICAgICAgICAgICAgICAgICAgICBnZXQtdmFsdWUtZnJvbS1saXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgJHZhcmlhYmxlOiAkYnV0dG9uX3BhZGRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2lkZTogJGljb25fcG9zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IGNhbGMoXG4gICAgICAgICAgICAgICAgICAgICN7JGJ1dHRvbl9wYWRkaW5nLXdoZW4taWNvbn0gK1xuICAgICAgICAgICAgICAgICAgICAgICAgI3tnZXQtdmFsdWUtZnJvbS1saXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YXJpYWJsZTogJGJ1dHRvbl9wYWRkaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzaWRlOiAkaWNvbl9wb3NcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gQGVsc2UgaWYgKCRpY29uX3BvcyA9PSAnb25seS1pY29uJykge1xuICAgICAgICBAaW5jbHVkZSB2aXN1YWxseS1oaWRkZW4oKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBidXR0b25fc3Bhbi1ob29rKCR0eXBlLCAkaWNvbl9wb3MpO1xufVxuXG5AbWl4aW4gYnV0dG9uX2ljb24oXG4gICAgJHR5cGU6ICRidXR0b25fZGVmYXVsdC10eXBlLFxuICAgICRpY29uX3BvczogJGJ1dHRvbl9kZWZhdWx0LWljb24tcG9zXG4pIHtcbiAgICBtYXgtd2lkdGg6IDFlbTtcbiAgICBtYXgtaGVpZ2h0OiAkYnV0dG9uX2ZvbnQtc2l6ZTtcbiAgICB6LWluZGV4OiAyO1xuICAgIGhlaWdodDogYXV0bztcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIEBpZiAoJGljb25fcG9zID09ICdyaWdodCcpIG9yICgkaWNvbl9wb3MgPT0gJ2xlZnQnKSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTUwJSwgMCk7XG4gICAgfVxuXG4gICAgQGlmICgkaWNvbl9wb3MgPT0gJ29ubHktaWNvbicpIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6ICRidXR0b25faWNvbi1vZmZzZXQ7XG5cbiAgICAgICAgQGlmICgkdHlwZSA9PSAnbGluaycpIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAkYnV0dG9uX2xpbmstaWNvbi1wYWRkaW5nIC8gMjtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJGJ1dHRvbl9saW5rLWljb24tcGFkZGluZyAvIDI7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIGlmICgkaWNvbl9wb3MgPT0gJ3JpZ2h0Jykge1xuICAgICAgICBAaWYgKCR0eXBlID09ICdsaW5rJykge1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgcmlnaHQ6IGdldC12YWx1ZS1mcm9tLWxpc3QoXG4gICAgICAgICAgICAgICAgJHZhcmlhYmxlOiAkYnV0dG9uX3BhZGRpbmcsXG4gICAgICAgICAgICAgICAgJHNpZGU6ICRpY29uX3Bvc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH0gQGVsc2UgaWYgKCRpY29uX3BvcyA9PSAnbGVmdCcpIHtcbiAgICAgICAgQGlmICgkdHlwZSA9PSAnbGluaycpIHtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICBsZWZ0OiBnZXQtdmFsdWUtZnJvbS1saXN0KFxuICAgICAgICAgICAgICAgICR2YXJpYWJsZTogJGJ1dHRvbl9wYWRkaW5nLFxuICAgICAgICAgICAgICAgICRzaWRlOiAkaWNvbl9wb3NcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBidXR0b25faWNvbi1ob29rKCR0eXBlLCAkaWNvbl9wb3MpO1xufVxuIiwiLy8gSW4gdGhpcyBtaXhpbiB5b3UgY2FuIGRlZmluZSB5b3VyIGN1c3RvbSBhbmltYXRpb24gZm9yIGJ1dHRvbnNcbi8vIFlvdSBjYW4gY2hlY2sgZXhhbXBsZXMgb2YgYW5pbWF0aW9ucyBpbiBodHRwOi8vaWFubHVubi5naXRodWIuaW8vSG92ZXIvIGxpYnJhcnlcblxuQG1peGluIGJ1dHRvbl9hbmltYXRpb24oXG4gICAgJHR5cGU6ICRidXR0b25fZGVmYXVsdC10eXBlLFxuICAgICRjb2xvcl9zdGFydDogJGJ1dHRvbl9wcmltYXJ5LWJhY2tncm91bmQsXG4gICAgJGNvbG9yX2VuZDogJGJ1dHRvbl9wcmltYXJ5LS1ob3Zlci1iYWNrZ3JvdW5kLFxuICAgICRpY29uX3BvczogJGJ1dHRvbl9kZWZhdWx0LWljb24tcG9zXG4pIHtcbiAgICBAaWYgKCR0eXBlID09ICdwcmltYXJ5JykgYW5kXG4gICAgICAgICgoJGljb25fcG9zID09ICdyaWdodCcpIG9yICgkaWNvbl9wb3MgPT0gJ2xlZnQnKSlcbiAgICB7XG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICY6Zm9jdXMsXG4gICAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcl9zdGFydCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjpiZWZvcmUsXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpZiAoJGljb25fcG9zID09ICdyaWdodCcpIG9yICgkaWNvbl9wb3MgPT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogLSN7JGJ1dHRvbl9ib3JkZXItc2l6ZX07XG4gICAgICAgICAgICBib3R0b206IC0jeyRidXR0b25fYm9yZGVyLXNpemV9O1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkaWNvbl9wb3MgPT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgcmlnaHQ6IC0jeyRidXR0b25fYm9yZGVyLXNpemV9O1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkaWNvbl9wb3MgPT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICBsZWZ0OiAtI3skYnV0dG9uX2JvcmRlci1zaXplfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgQGlmICgkaWNvbl9wb3MgPT0gJ3JpZ2h0Jykgb3IgKCRpY29uX3BvcyA9PSAnbGVmdCcpIHtcbiAgICAgICAgICAgIHdpZHRoOiAkYnV0dG9uX2FuaW1hdGlvbi1iZWZvcmUtd2lkdGg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwICRidXR0b25fYm9yZGVyLXJhZGl1cyAkYnV0dG9uX2JvcmRlci1yYWRpdXMgMDtcbiAgICAgICAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkaWNvbl9wb3MgPT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgICAgICAgIDBkZWcsXG4gICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMCUsXG4gICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMCUsXG4gICAgICAgICAgICAgICAgJGNvbG9yX2VuZCAwJSxcbiAgICAgICAgICAgICAgICAkY29sb3JfZW5kIDEwMCVcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCRpY29uX3BvcyA9PSAnbGVmdCcpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgICAgICAwZGVnLFxuICAgICAgICAgICAgICAgICRjb2xvcl9lbmQgMCUsXG4gICAgICAgICAgICAgICAgJGNvbG9yX2VuZCA4NSUsXG4gICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMTAwJSxcbiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCAxMDAlXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpZiAoJGljb25fcG9zID09ICdyaWdodCcpIG9yICgkaWNvbl9wb3MgPT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICB3aWR0aDogJGJ1dHRvbl9hbmltYXRpb24tYWZ0ZXItd2lkdGg7XG4gICAgICAgICAgICBtaW4td2lkdGg6IGF1dG87XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JfZW5kO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMC4yNXMgbGluZWFyO1xuICAgICAgICAgICAgei1pbmRleDogLTI7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkYnV0dG9uX2JvcmRlci1yYWRpdXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgQGlmICgkaWNvbl9wb3MgPT0gJ3JpZ2h0Jykgb3IgKCRpY29uX3BvcyA9PSAnbGVmdCcpIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIEBpZiAoJGJ1dHRvbl9ib3JkZXItc2l6ZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSArICN7MiAqICRidXR0b25fYm9yZGVyLXNpemV9KTtcbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd2ZW5kb3JzL2luY2x1ZGUtbWVkaWEnO1xuQGltcG9ydCAnY29tcG9uZW50cy90eXBvZ3JhcGh5L21peGluJztcblxuJGF1dGhvcml6YXRpb24tbGlua19pdGVtLWJvcmRlcjogMC4ycmVtIHNvbGlkICRjb2xvcl9ib3JkZXItMTAwICFkZWZhdWx0O1xuJGF1dGhvcml6YXRpb24tbGlua19jb2xvcjogJGNvbG9yX3ByaW1hcnktNTAwICFkZWZhdWx0O1xuJGF1dGhvcml6YXRpb24tbGlua19jb2xvci1ob3ZlcjogJGNvbG9yX3ByaW1hcnktODAwICFkZWZhdWx0O1xuJGF1dGhvcml6YXRpb24tbGlua19kZWNvcmF0aW9uOiBub25lICFkZWZhdWx0O1xuJGF1dGhvcml6YXRpb24tbGlua19ob3Zlci1kZWNvcmF0aW9uOiAkYXV0aG9yaXphdGlvbi1saW5rX2RlY29yYXRpb24gIWRlZmF1bHQ7XG4kYXV0aG9yaXphdGlvbi1saW5rX2ljb24tY29sb3I6ICRjb2xvcl90ZXh0LTQwMCAhZGVmYXVsdDtcbiRhdXRob3JpemF0aW9uLWxpbmtfaWNvbi1jb2xvci1ob3ZlcjogJGNvbG9yX3RleHQtNDAwICFkZWZhdWx0O1xuXG4uI3skbnN9YXV0aG9yaXphdGlvbi1saW5rIHtcbiAgICAkcm9vdDogJjtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luLWxlZnQ6IDAuOXJlbTtcbiAgICBwYWRkaW5nOiAwIDAgMCAwLjNyZW07XG5cbiAgICBAaW5jbHVkZSBtZWRpYSgnPj1sYXB0b3AnKSB7XG4gICAgICAgIHBhZGRpbmc6IDAgMCAwIDEuM3JlbTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEuN3JlbTtcbiAgICB9XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBib3JkZXItbGVmdDogJGF1dGhvcml6YXRpb24tbGlua19pdGVtLWJvcmRlcjtcbiAgICB9XG5cbiAgICAmX19saW5rIHtcbiAgICAgICAgQGluY2x1ZGUgbGluayhcbiAgICAgICAgICAgICRjb2xvcjogJGF1dGhvcml6YXRpb24tbGlua19jb2xvcixcbiAgICAgICAgICAgICRjb2xvci1ob3ZlcjogJGF1dGhvcml6YXRpb24tbGlua19jb2xvci1ob3ZlcixcbiAgICAgICAgICAgICRkZWNvcmF0aW9uOiAkYXV0aG9yaXphdGlvbi1saW5rX2RlY29yYXRpb24sXG4gICAgICAgICAgICAkZGVjb3JhdGlvbi1ob3ZlcjogJGF1dGhvcml6YXRpb24tbGlua19ob3Zlci1kZWNvcmF0aW9uXG4gICAgICAgICk7XG5cbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICN7JHJvb3R9X19pY29uIHtcbiAgICAgICAgICAgICAgICBwYXRoIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogJGF1dGhvcml6YXRpb24tbGlua19pY29uLWNvbG9yLWhvdmVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2ljb24ge1xuICAgICAgICB3aWR0aDogMS44cmVtO1xuICAgICAgICBoZWlnaHQ6IDFyZW07XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcblxuICAgICAgICBwYXRoIHtcbiAgICAgICAgICAgIGZpbGw6ICRhdXRob3JpemF0aW9uLWxpbmtfaWNvbi1jb2xvcjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qIHN0eWxlbGludC1kaXNhYmxlIGJsb2NrLW5vLWVtcHR5ICovXG5AbWl4aW4gYmFkZ2VfaG9vaygkdHlwZSkge1xufVxuXG5AbWl4aW4gYmFkZ2VfdHlwZS1ob29rKCR0eXBlKSB7XG59XG5cbkBtaXhpbiBiYWRnZV9zcGFuLWhvb2soJHR5cGUpIHtcbn1cbi8qIHN0eWxlbGludC1lbmFibGUgKi9cbiIsIi8qXG4gKiBCZWNhdXNlIHByaWNlLWJveCBpcyB1c2VkIGluIG11bHRpcGxlIGNvbXBvbmVudHMgbGlrZSB0aWxlLCBidXlib3ggZXRjLFxuICogd2UgbmVlZCB0byBtb3ZlIHZhcmlhYmxlcyB0byBzZXBhcmF0ZSBmaWxlIHRvIGhhdmUgcG9zc2liaWxpdHkgdG8gaW5jbHVkZSB0aGVtXG4gKiBpbiBlYWNoIGNvbXBvbmVudCB3aXRob3V0IGdlbmVyYXRlIHByaWNlLWJveCBjb21wb25lbnQgc3R5bGVzIG11bHRpcGxlIHRpbWVzXG4qL1xuXG4kcHJpY2UtYm94X25vcm1hbC1wcmljZS1jb2xvcjogJHByaWNlX2NvbG9yICFkZWZhdWx0O1xuJHByaWNlLWJveF9ub3JtYWwtcHJpY2UtZm9udC1zaXplOiAxLjVyZW0gIWRlZmF1bHQ7XG4kcHJpY2UtYm94X25vcm1hbC1wcmljZS1mb250LXdlaWdodDogNzAwICFkZWZhdWx0O1xuXG4kcHJpY2UtYm94X3NwZWNpYWwtcHJpY2UtY29sb3I6ICRwcmljZV9zcGVjaWFsLWNvbG9yICFkZWZhdWx0O1xuJHByaWNlLWJveF9zcGVjaWFsLXByaWNlLWZvbnQtc2l6ZTogJHByaWNlLWJveF9ub3JtYWwtcHJpY2UtZm9udC1zaXplICFkZWZhdWx0O1xuJHByaWNlLWJveF9zcGVjaWFsLXByaWNlLWZvbnQtd2VpZ2h0OiAkcHJpY2UtYm94X25vcm1hbC1wcmljZS1mb250LXdlaWdodCAhZGVmYXVsdDtcblxuJHByaWNlLWJveF9vbGQtcHJpY2UtY29sb3I6ICRwcmljZV9vbGQtY29sb3IgIWRlZmF1bHQ7XG4kcHJpY2UtYm94X29sZC1wcmljZS1mb250LXNpemU6ICRwcmljZS1ib3hfbm9ybWFsLXByaWNlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRwcmljZS1ib3hfb2xkLXByaWNlLWZvbnQtd2VpZ2h0OiAkcHJpY2UtYm94X25vcm1hbC1wcmljZS1mb250LXdlaWdodCAhZGVmYXVsdDtcbiRwcmljZS1ib3hfb2xkLXByaWNlLXRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoICFkZWZhdWx0O1xuXG4kcHJpY2UtYm94X2xhYmVsLWNvbG9yOiAkcHJpY2VfY29sb3IgIWRlZmF1bHQ7XG4kcHJpY2UtYm94X2xhYmVsLWZvbnQtc2l6ZTogMS4xcmVtICFkZWZhdWx0O1xuJHByaWNlLWJveF9sYWJlbC1mb250LXdlaWdodDogJHByaWNlLWJveF9ub3JtYWwtcHJpY2UtZm9udC13ZWlnaHQgIWRlZmF1bHQ7XG4kcHJpY2UtYm94X2xhYmVsLWRpc3BsYXktY29sb246IHRydWUgIWRlZmF1bHQ7XG4kcHJpY2UtYm94X2xhYmVsLW1hcmdpbjogMC4zcmVtICFkZWZhdWx0O1xuXG4kcHJpY2UtYm94X3NwYWNlLWJldHdlZW4tcHJpY2VzOiAxcmVtICFkZWZhdWx0O1xuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd2ZW5kb3JzL2luY2x1ZGUtbWVkaWEnO1xuXG5AaW1wb3J0ICdjb21wb25lbnRzL2JhZGdlL21peGluJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcHJpY2UtYm94L3ZhcmlhYmxlcyc7XG5cbiRhdXRvY29tcGxldGVfbGlzdC1iYWNrZ3JvdW5kOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG4kYXV0b2NvbXBsZXRlX2xpc3QtYm9yZGVyLXJhZGl1czogM3B4ICFkZWZhdWx0O1xuJGF1dG9jb21wbGV0ZV9saXN0LWJvcmRlcjogMXB4IHNvbGlkICRjb2xvcl9ib3JkZXItNTAwICFkZWZhdWx0O1xuJGF1dG9jb21wbGV0ZV9saXN0LWJveC1zaGFkb3c6IDAgMCAxMHB4IDAgcmdiYSgkY29sb3JfdGV4dC05MDAsIDAuMTcpICFkZWZhdWx0O1xuXG4kYXV0b2NvbXBsZXRlX3RpdGxlLXBhZGRpbmc6IDEuMnJlbSAzcmVtIDFyZW0gMXJlbSAhZGVmYXVsdDtcbiRhdXRvY29tcGxldGVfdGl0bGUtbWFyZ2luOiAwICFkZWZhdWx0O1xuJGF1dG9jb21wbGV0ZV90aXRsZS1ib3JkZXI6IG5vbmUgIWRlZmF1bHQ7XG4kYXV0b2NvbXBsZXRlX3RpdGxlLWNvbG9yOiAkY29sb3JfdGV4dC00MDAgIWRlZmF1bHQ7XG4kYXV0b2NvbXBsZXRlX3RpdGxlLWZvbnQtc2l6ZTogMS4yOXJlbSAhZGVmYXVsdDtcbiRhdXRvY29tcGxldGVfdGl0bGUtZm9udC13ZWlnaHQ6IDcwMCAhZGVmYXVsdDtcblxuJGF1dG9jb21wbGV0ZV9pdGVtLWhlaWdodDogNS44cmVtICFkZWZhdWx0O1xuJGF1dG9jb21wbGV0ZV9pdGVtLXBhZGRpbmc6IDAuNXJlbSAxcmVtICFkZWZhdWx0O1xuJGF1dG9jb21wbGV0ZV9pdGVtLW1hcmdpbjogMCAhZGVmYXVsdDtcbiRhdXRvY29tcGxldGVfaXRlbS1ib3JkZXI6IDFweCBzb2xpZCAkY29sb3JfYm9yZGVyLTUwMCAhZGVmYXVsdDtcbiRhdXRvY29tcGxldGVfaXRlbS1iYWNrZ3JvdW5kOiAkYXV0b2NvbXBsZXRlX2xpc3QtYmFja2dyb3VuZCAhZGVmYXVsdDtcbiRhdXRvY29tcGxldGVfaXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkY29sb3JfYmFja2dyb3VuZC01MDAgIWRlZmF1bHQ7XG4kYXV0b2NvbXBsZXRlX2l0ZW0tdGh1bWJuYWlsLXdpZHRoOiAzLjZyZW0gIWRlZmF1bHQ7XG4kYXV0b2NvbXBsZXRlX2l0ZW0tdGh1bWJuYWlsLWhlaWdodDogNC41cmVtICFkZWZhdWx0O1xuJGF1dG9jb21wbGV0ZV9pdGVtLWZvbnQtc2l6ZTogMS4yOXJlbSAhZGVmYXVsdDtcbiRhdXRvY29tcGxldGVfaXRlbS1mb250LXdlaWdodDogNzAwICFkZWZhdWx0O1xuJGF1dG9jb21wbGV0ZV9pdGVtLW5hbWUtY29sb3I6ICRjb2xvcl90ZXh0LTkwMCAhZGVmYXVsdDtcblxuJGF1dG9jb21wbGV0ZV9pdGVtX2JyYW5kLWZvbnQtc2l6ZTogMS4ycmVtICFkZWZhdWx0O1xuJGF1dG9jb21wbGV0ZV9pdGVtX2JyYW5kLWNvbG9yOiAkY29sb3JfdGV4dC00MDAgIWRlZmF1bHQ7XG5cbiRhdXRvY29tcGxldGVfaXRlbS1wcmljZS1jb2xvcjogJGNvbG9yX3ByaW1hcnktNTAwICFkZWZhdWx0O1xuJGF1dG9jb21wbGV0ZV9pdGVtLXByaWNlLWZvbnQtd2VpZ2h0OiAkYXV0b2NvbXBsZXRlX2l0ZW0tZm9udC13ZWlnaHQgIWRlZmF1bHQ7XG4kYXV0b2NvbXBsZXRlX2l0ZW0tcXVhbnRpdHktY29sb3I6ICRjb2xvcl90ZXh0LTQwMCAhZGVmYXVsdDtcblxuJGF1dG9jb21wbGV0ZV9pdGVtX2Rpc3BsYXktb2xkLXByaWNlLWZpcnN0OiB0cnVlICFkZWZhdWx0O1xuJGF1dG9jb21wbGV0ZV9pdGVtLW5vcm1hbC1wcmljZS1jb2xvcjogJHByaWNlLWJveF9ub3JtYWwtcHJpY2UtY29sb3IgIWRlZmF1bHQ7XG4kYXV0b2NvbXBsZXRlX2l0ZW0tbm9ybWFsLXByaWNlLWZvbnQtc2l6ZTogJHByaWNlLWJveF9ub3JtYWwtcHJpY2UtZm9udC1zaXplICFkZWZhdWx0O1xuJGF1dG9jb21wbGV0ZV9pdGVtLW5vcm1hbC1wcmljZS1mb250LXdlaWdodDogJHByaWNlLWJveF9ub3JtYWwtcHJpY2UtZm9udC13ZWlnaHQgIWRlZmF1bHQ7XG4kYXV0b2NvbXBsZXRlX2l0ZW0tb2xkLXByaWNlLWNvbG9yOiAkcHJpY2UtYm94X29sZC1wcmljZS1jb2xvciAhZGVmYXVsdDtcbiRhdXRvY29tcGxldGVfaXRlbS1vbGQtcHJpY2UtZm9udC1zaXplOiAkcHJpY2UtYm94X29sZC1wcmljZS1mb250LXNpemUgIWRlZmF1bHQ7XG4kYXV0b2NvbXBsZXRlX2l0ZW0tb2xkLXByaWNlLWZvbnQtd2VpZ2h0OiAkcHJpY2UtYm94X29sZC1wcmljZS1mb250LXdlaWdodCAhZGVmYXVsdDtcbiRhdXRvY29tcGxldGVfaXRlbS1vbGQtcHJpY2UtdGV4dC1kZWNvcmF0aW9uOiAkcHJpY2UtYm94X29sZC1wcmljZS10ZXh0LWRlY29yYXRpb24gIWRlZmF1bHQ7XG4kYXV0b2NvbXBsZXRlX2l0ZW0tc3BlY2lhbC1wcmljZS1jb2xvcjogJHByaWNlLWJveF9zcGVjaWFsLXByaWNlLWNvbG9yICFkZWZhdWx0O1xuJGF1dG9jb21wbGV0ZV9pdGVtLXNwZWNpYWwtcHJpY2UtZm9udC1zaXplOiAkcHJpY2UtYm94X3NwZWNpYWwtcHJpY2UtZm9udC1zaXplICFkZWZhdWx0O1xuJGF1dG9jb21wbGV0ZV9pdGVtLXNwZWNpYWwtcHJpY2UtZm9udC13ZWlnaHQ6ICRwcmljZS1ib3hfc3BlY2lhbC1wcmljZS1mb250LXdlaWdodCAhZGVmYXVsdDtcblxuLiN7JG5zfWF1dG9jb21wbGV0ZSB7XG4gICAgJHJvb3Q6ICY7XG5cbiAgICB3aWR0aDogMTAwJTtcbiAgICB0b3A6IDEwMCU7XG4gICAgbGVmdDogMDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhdXRvY29tcGxldGVfbGlzdC1iYWNrZ3JvdW5kO1xuICAgIGJvcmRlci1yYWRpdXM6ICRhdXRvY29tcGxldGVfbGlzdC1ib3JkZXItcmFkaXVzO1xuICAgIGJveC1zaGFkb3c6ICRhdXRvY29tcGxldGVfbGlzdC1ib3gtc2hhZG93O1xuICAgIHotaW5kZXg6IDIwMDtcbiAgICBtYXJnaW4tdG9wOiAtMXB4O1xuXG4gICAgQGlmICgkZ2xvYmFsX2hlYWRlci1pcy1ib3R0b20tb24tbW9iaWxlKSB7XG4gICAgICAgIEBpZiBub3QgJGdsb2JhbF9oZWFkZXItbW9iaWxlLXNlYXJjaC1pbi1vZmZjYW52YXMge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoXG4gICAgICAgICAgICAgICAgJzwjeyRnbG9iYWxfaGVhZGVyLW1vYmlsZS1zZWFyY2gtaW4tb2ZmY2FudmFzLWJyZWFrcG9pbnR9J1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdG9wOiBhdXRvO1xuICAgICAgICAgICAgICAgIGJvdHRvbTogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hdXRvY29tcGxldGUtbGlzdCBkZCxcbiAgICAmX19pdGVtIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGF1dG9jb21wbGV0ZV9pdGVtLWJhY2tncm91bmQ7XG4gICAgICAgIHBhZGRpbmc6ICRhdXRvY29tcGxldGVfaXRlbS1wYWRkaW5nO1xuICAgICAgICBtYXJnaW46ICRhdXRvY29tcGxldGVfaXRlbS1tYXJnaW47XG4gICAgICAgIGJvcmRlci1ib3R0b206ICRhdXRvY29tcGxldGVfaXRlbS1ib3JkZXI7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgbGluZWFyO1xuICAgICAgICBmb250LXNpemU6ICRhdXRvY29tcGxldGVfaXRlbS1mb250LXNpemU7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0JywgJzxsYXB0b3AnKSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlcixcbiAgICAgICAgJi5zZWxlY3RlZCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYXV0b2NvbXBsZXRlX2l0ZW0tYmFja2dyb3VuZC1ob3ZlcjtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJi1pbWFnZS1jb250YWluZXIge1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgICYtaW1hZ2Uge1xuICAgICAgICAgICAgd2lkdGg6ICRhdXRvY29tcGxldGVfaXRlbS10aHVtYm5haWwtd2lkdGg7XG4gICAgICAgICAgICBoZWlnaHQ6ICRhdXRvY29tcGxldGVfaXRlbS10aHVtYm5haWwtaGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgJi1kZXRhaWxzIHtcbiAgICAgICAgICAgIGZsZXg6IDEgMSAxMDAlO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgICAgICAuZi1maXgge1xuICAgICAgICAgICAgICAgIGhlaWdodDogJGF1dG9jb21wbGV0ZV9pdGVtLWhlaWdodDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLWJyYW5kIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGF1dG9jb21wbGV0ZV9pdGVtX2JyYW5kLWZvbnQtc2l6ZTtcbiAgICAgICAgICAgIGNvbG9yOiAkYXV0b2NvbXBsZXRlX2l0ZW1fYnJhbmQtY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAmLW5hbWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkYXV0b2NvbXBsZXRlX2l0ZW0tZm9udC1zaXplO1xuICAgICAgICAgICAgY29sb3I6ICRhdXRvY29tcGxldGVfaXRlbS1uYW1lLWNvbG9yO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6ICRhdXRvY29tcGxldGVfaXRlbS1mb250LXdlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgICYtcHJpY2Uge1xuICAgICAgICAgICAgbWFyZ2luOiAwLjNyZW0gMCAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnByaWNlLWJveCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAgICAgPiAucHJpY2Uge1xuICAgICAgICAgICAgY29sb3I6ICRhdXRvY29tcGxldGVfaXRlbS1ub3JtYWwtcHJpY2UtY29sb3I7XG4gICAgICAgICAgICBmb250LXNpemU6ICRhdXRvY29tcGxldGVfaXRlbS1ub3JtYWwtcHJpY2UtZm9udC1zaXplO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6ICRhdXRvY29tcGxldGVfaXRlbS1wcmljZS1mb250LXdlaWdodDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5vbGQtcHJpY2Uge1xuICAgICAgICAgICAgPiAucHJpY2Uge1xuICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogJGF1dG9jb21wbGV0ZV9pdGVtLW9sZC1wcmljZS10ZXh0LWRlY29yYXRpb247XG4gICAgICAgICAgICAgICAgY29sb3I6ICRhdXRvY29tcGxldGVfaXRlbS1vbGQtcHJpY2UtY29sb3I7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkYXV0b2NvbXBsZXRlX2l0ZW0tb2xkLXByaWNlLWZvbnQtc2l6ZTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogJGF1dG9jb21wbGV0ZV9pdGVtLW9sZC1wcmljZS1mb250LXdlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5zcGVjaWFsLXByaWNlIHtcbiAgICAgICAgICAgID4gLnByaWNlIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGF1dG9jb21wbGV0ZV9pdGVtLXNwZWNpYWwtcHJpY2UtY29sb3I7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkYXV0b2NvbXBsZXRlX2l0ZW0tc3BlY2lhbC1wcmljZS1mb250LXNpemU7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6ICRhdXRvY29tcGxldGVfaXRlbS1zcGVjaWFsLXByaWNlLWZvbnQtd2VpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm1pbmltYWwtcHJpY2UtbGluayB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkYXV0b2NvbXBsZXRlX2l0ZW1fZGlzcGxheS1vbGQtcHJpY2UtZmlyc3QpIHtcbiAgICAgICAgICAgIC5vbGQtcHJpY2Uge1xuICAgICAgICAgICAgICAgIG9yZGVyOiAtMTtcblxuICAgICAgICAgICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHByaWNlLWJveF9zcGFjZS1iZXR3ZWVuLXByaWNlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgLnNwZWNpYWwtcHJpY2Uge1xuICAgICAgICAgICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHByaWNlLWJveF9zcGFjZS1iZXR3ZWVuLXByaWNlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19iYWRnZXMge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgICBtYXJnaW4tbGVmdDogMXJlbTtcbiAgICB9XG5cbiAgICAmX19iYWRnZSB7XG4gICAgICAgIEBpbmNsdWRlIGJhZGdlKCk7XG5cbiAgICAgICAgJiArICYge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tcG9wdWxhciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBiYWRnZV90eXBlKCdwb3B1bGFyJyk7XG5cbiAgICAgICAgICAgICN7JHJvb3R9X19iYWRnZS10ZXh0IHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBiYWRnZV9zcGFuKCdwb3B1bGFyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLS1mcmVlLXNoaXBwaW5nIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJhZGdlX3R5cGUoJ2ZyZWUtc2hpcHBpbmcnKTtcblxuICAgICAgICAgICAgI3skcm9vdH1fX2JhZGdlLXRleHQge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJhZGdlX3NwYW4oJ2ZyZWUtc2hpcHBpbmcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2JhZGdlLXRleHQge1xuICAgICAgICBAaW5jbHVkZSBiYWRnZV9zcGFuKCk7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49cGhvbmUnKSB7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYXV0b2NvbXBsZXRlLWxpc3Qge1xuICAgIG1hcmdpbjogLTFweCAwIDFyZW07XG4gICAgYm9yZGVyLXRvcDogJGF1dG9jb21wbGV0ZV9saXN0LWJvcmRlcjtcblxuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wOiAwO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgLmFtb3VudCB7XG4gICAgICAgIGNvbG9yOiAkYXV0b2NvbXBsZXRlX2l0ZW0tcXVhbnRpdHktY29sb3I7XG4gICAgICAgIGZvbnQtc2l6ZTogJGF1dG9jb21wbGV0ZV9pdGVtLWZvbnQtc2l6ZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRhdXRvY29tcGxldGVfaXRlbS1mb250LXdlaWdodDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcblxuICAgICAgICAmOm5vdCg6ZW1wdHkpIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcpJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcoJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmF1dG9jb21wbGV0ZS1saXN0LXRpdGxlIHtcbiAgICBwYWRkaW5nOiAkYXV0b2NvbXBsZXRlX3RpdGxlLXBhZGRpbmc7XG4gICAgYm9yZGVyLWJvdHRvbTogJGF1dG9jb21wbGV0ZV90aXRsZS1ib3JkZXI7XG4gICAgY29sb3I6ICRhdXRvY29tcGxldGVfdGl0bGUtY29sb3I7XG4gICAgZm9udC13ZWlnaHQ6ICRhdXRvY29tcGxldGVfdGl0bGUtZm9udC13ZWlnaHQ7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBmb250LXNpemU6ICRhdXRvY29tcGxldGVfdGl0bGUtZm9udC1zaXplO1xuICAgIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gICAgbWFyZ2luOiAkYXV0b2NvbXBsZXRlX3RpdGxlLW1hcmdpbjtcblxuICAgICY6aG92ZXIsXG4gICAgJi5zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgICY6bm90KDplbXB0eSkge1xuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5odG1sLmF1dG9jb21wbGV0ZS1kcm9wZG93bi12aXNpYmxlIHtcbiAgICBAbWVkaWEgKGhvdmVyOiBub25lKSB7XG4gICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICB9XG5cbiAgICBib2R5IHtcbiAgICAgICAgQG1lZGlhIChob3Zlcjogbm9uZSkge1xuICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2JhZGdlL2hvb2snO1xuXG4kYmFkZ2VfZm9udC1zaXplOiAxLjFyZW0gIWRlZmF1bHQ7XG4kYmFkZ2VfZm9udC13ZWlnaHQ6IDcwMCAhZGVmYXVsdDtcbiRiYWRnZV9oZWlnaHQ6IDJlbSAhZGVmYXVsdDtcbiRiYWRnZV9wYWRkaW5nOiAwIDAuN3JlbSAhZGVmYXVsdDtcbiRiYWRnZV9ib3JkZXI6IDAgIWRlZmF1bHQ7XG4kYmFkZ2VfYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXNfYmFzZSAhZGVmYXVsdDtcbiRiYWRnZV90ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFkZWZhdWx0O1xuXG4kYmFkZ2UtLWRlZmF1bHQtYmFja2dyb3VuZDogJGNvbG9yX3ByaW1hcnktNTAwICFkZWZhdWx0O1xuJGJhZGdlLS1kZWZhdWx0LWNvbG9yOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG5cbiRiYWRnZS0tbmV3LWJhY2tncm91bmQ6ICRjb2xvcl9zZWNvbmRhcnktNTAwICFkZWZhdWx0O1xuJGJhZGdlLS1uZXctY29sb3I6ICRjb2xvcl90ZXh0LTkwMCAhZGVmYXVsdDtcblxuJGJhZGdlLS1kaXNjb3VudC1iYWNrZ3JvdW5kOiAkY29sb3JfZXJyb3ItNTAwICFkZWZhdWx0O1xuJGJhZGdlLS1kaXNjb3VudC1jb2xvcjogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuXG4kYmFkZ2UtLWZyZWUtYmFja2dyb3VuZDogJGNvbG9yX3N1Y2Nlc3MtNTAwICFkZWZhdWx0O1xuJGJhZGdlLS1mcmVlLWNvbG9yOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG5cbiRiYWRnZS0tZnJlZS1zaGlwcGluZy1iYWNrZ3JvdW5kOiAkY29sb3Jfc3VjY2Vzcy01MDAgIWRlZmF1bHQ7XG4kYmFkZ2UtLWZyZWUtc2hpcHBpbmctY29sb3I6ICRjb2xvcl90ZXh0LTIwMCAhZGVmYXVsdDtcblxuJGJhZGdlLS1wb3B1bGFyLWJhY2tncm91bmQ6ICRjb2xvcl9jcmltc29uICFkZWZhdWx0O1xuJGJhZGdlLS1wb3B1bGFyLWNvbG9yOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG5cbiRiYWRnZS0tcmVjZW50bHktYm91Z2h0LWJhY2tncm91bmQ6ICRjb2xvcl9zdWNjZXNzLTUwMCAhZGVmYXVsdDtcbiRiYWRnZS0tcmVjZW50bHktYm91Z2h0LWNvbG9yOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG5cbiRiYWRnZS0tZGFpbHlkZWFsLWJhY2tncm91bmQ6ICRjb2xvcl9lcnJvci01MDAgIWRlZmF1bHQ7XG4kYmFkZ2UtLWRhaWx5ZGVhbC1jb2xvcjogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuXG4kYmFkZ2UtLXRvcC1iYWNrZ3JvdW5kOiAkY29sb3JfcHJpbWFyeS01MDAgIWRlZmF1bHQ7XG4kYmFkZ2UtLXRvcC1jb2xvcjogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuXG5AbWl4aW4gYmFkZ2UoJHR5cGU6ICdkZWZhdWx0Jykge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWRnZS0tZGVmYXVsdC1iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkYmFkZ2UtLWRlZmF1bHQtY29sb3I7XG4gICAgYm9yZGVyOiAkYmFkZ2VfYm9yZGVyO1xuICAgIGJvcmRlci1yYWRpdXM6ICRiYWRnZV9ib3JkZXItcmFkaXVzO1xuICAgIHBhZGRpbmc6ICRiYWRnZV9wYWRkaW5nO1xuICAgIGZvbnQtc2l6ZTogJGJhZGdlX2ZvbnQtc2l6ZTtcbiAgICBmb250LXdlaWdodDogJGJhZGdlX2ZvbnQtd2VpZ2h0O1xuICAgIG1pbi1oZWlnaHQ6ICRiYWRnZV9oZWlnaHQ7XG4gICAgdGV4dC10cmFuc2Zvcm06ICRiYWRnZV90ZXh0LXRyYW5zZm9ybTtcblxuICAgIEBpbmNsdWRlIGJhZGdlX2hvb2soJHR5cGUpO1xufVxuXG5AbWl4aW4gYmFkZ2VfdHlwZSgkdHlwZTogJ2RlZmF1bHQnKSB7XG4gICAgQGlmICgkdHlwZSA9PSAnbmV3Jykge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFkZ2UtLW5ldy1iYWNrZ3JvdW5kO1xuICAgICAgICBjb2xvcjogJGJhZGdlLS1uZXctY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdHlwZSA9PSAnZnJlZScpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhZGdlLS1mcmVlLWJhY2tncm91bmQ7XG4gICAgICAgIGNvbG9yOiAkYmFkZ2UtLWZyZWUtY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdHlwZSA9PSAnZnJlZS1zaGlwcGluZycpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhZGdlLS1mcmVlLXNoaXBwaW5nLWJhY2tncm91bmQ7XG4gICAgICAgIGNvbG9yOiAkYmFkZ2UtLWZyZWUtc2hpcHBpbmctY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdHlwZSA9PSAncG9wdWxhcicpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yX2NyaW1zb247IFxuICAgICAgICBjb2xvcjogJGJhZGdlLS1wb3B1bGFyLWNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAoJHR5cGUgPT0gJ2Rpc2NvdW50Jykge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFkZ2UtLWRpc2NvdW50LWJhY2tncm91bmQ7XG4gICAgICAgIGNvbG9yOiAkYmFkZ2UtLWRpc2NvdW50LWNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAoJHR5cGUgPT0gJ3JlY2VudGx5LWJvdWdodCcpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhZGdlLS1yZWNlbnRseS1ib3VnaHQtYmFja2dyb3VuZDtcbiAgICAgICAgY29sb3I6ICRiYWRnZS0tcmVjZW50bHktYm91Z2h0LWNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAoJHR5cGUgPT0gJ2RhaWx5ZGVhbCcpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhZGdlLS1kYWlseWRlYWwtYmFja2dyb3VuZDtcbiAgICAgICAgY29sb3I6ICRiYWRnZS0tZGFpbHlkZWFsLWNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAoJHR5cGUgPT0gJ2RhaWx5ZGVhbC1wZHAnKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWRnZS0tZGFpbHlkZWFsLWJhY2tncm91bmQ7XG4gICAgICAgIGNvbG9yOiAkYmFkZ2UtLWRhaWx5ZGVhbC1jb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgKCR0eXBlID09ICd0b3AnKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWRnZS0tdG9wLWJhY2tncm91bmQ7XG4gICAgICAgIGNvbG9yOiAkYmFkZ2UtLXRvcC1jb2xvcjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBiYWRnZV90eXBlLWhvb2soJHR5cGUpO1xufVxuXG5AbWl4aW4gYmFkZ2Vfc3BhbigkdHlwZTogJ2RlZmF1bHQnKSB7XG4gICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcblxuICAgICYgKyAmIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBiYWRnZV9zcGFuLWhvb2soJHR5cGUpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbi8qKlxuICogRXh0cmFjdHMgbmVzdGVkIGtleXMgZnJvbSBnaXZlbiBtYXAuXG4gKiBFeGFtcGxlOiBkZWVwLWdldCgkc29tZS1tYXAsIHNvbWUsIG5lc3RlZCwga2V5cyk7XG4gKi9cbi8qKlxuKiBEZWZhdWx0IHByb2plY3QgYnJlYWtwb2ludHMgLSBbZW1dXG4qL1xuLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbi8qKlxuICogRXh0cmFjdHMgbmVzdGVkIGtleXMgZnJvbSBnaXZlbiBtYXAuXG4gKiBFeGFtcGxlOiBkZWVwLWdldCgkc29tZS1tYXAsIHNvbWUsIG5lc3RlZCwga2V5cyk7XG4gKi9cbi8qKlxuKiBEZWZhdWx0IHByb2plY3QgYnJlYWtwb2ludHMgLSBbZW1dXG4qL1xuLyoqKlxuICogUmVtb3ZlIGJyb3dzZXIncyBtYXJnaW5zLCBwYWRkaW5ncyBhbmQgbGlzdCBzdHlsZSBydWxlc1xuICovXG4vKipcbiAqIEV4dHJhY3RzIG5lc3RlZCBrZXlzIGZyb20gZ2l2ZW4gbWFwLlxuICogRXhhbXBsZTogZGVlcC1nZXQoJHNvbWUtbWFwLCBzb21lLCBuZXN0ZWQsIGtleXMpO1xuICovXG4uY3MtYnJlYWRjcnVtYnMge1xuICBwYWRkaW5nLXRvcDogMS4zcmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMS4zcmVtO1xuICBmb250LXdlaWdodDogNDAwO1xufVxuLmNzLWJyZWFkY3J1bWJzX19saXN0IHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBsaXN0LXN0eWxlOiBub25lO1xufVxuLmNzLWJyZWFkY3J1bWJzX19pdGVtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMCAxLjk1ZW0gMCAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtc2l6ZTogMS4ycmVtO1xufVxuLmNzLWJyZWFkY3J1bWJzX19pdGVtOmxhc3QtY2hpbGQge1xuICBwYWRkaW5nOiAwO1xuICBjb2xvcjogIzg4ODtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuLmNzLWJyZWFkY3J1bWJzX19pdGVtOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICByaWdodDogMC44ZW07XG4gIGNvbnRlbnQ6IFwi4oGEXCI7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiAjYjBiMGIwO1xufVxuLmNzLWJyZWFkY3J1bWJzX19saW5rIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGNvbG9yOiAjYjBiMGIwO1xufVxuLmNzLWJyZWFkY3J1bWJzX19saW5rOnZpc2l0ZWQge1xuICBjb2xvcjogI2IwYjBiMDtcbn1cbi5jcy1icmVhZGNydW1ic19fbGluazpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6ICMyMTIxMjE7XG59XG4uY3MtYnJlYWRjcnVtYnNfX3NlcGFyYXRvci1pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgcmlnaHQ6IDAuNWVtO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIHdpZHRoOiAwLjhlbTtcbiAgaGVpZ2h0OiAwLjhlbTtcbiAgZmlsbDogI2IwYjBiMDtcbn1cblxuLmNzLWNvbnRhaW5lci0tYnJlYWRjcnVtYnMge1xuICBtYXgtd2lkdGg6IG5vbmU7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAuY3MtY29udGFpbmVyLS1icmVhZGNydW1icyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cblxuLmNhdGFsb2ctY2F0ZWdvcnktdmlldyAuY3MtYnJlYWRjcnVtYnMge1xuICBvcmRlcjogLTI7XG4gIG1hcmdpbjogMCBhdXRvIDNyZW0gYXV0bztcbiAgcGFkZGluZzogMDtcbn1cbi5jYXRhbG9nLWNhdGVnb3J5LXZpZXcgLmNzLXBhZ2UtY2F0ZWdvcnlfX2NjLXRvcCB7XG4gIG9yZGVyOiAtMjtcbn0iLCIvKioqXG4gKiBSZW1vdmUgYnJvd3NlcidzIG1hcmdpbnMsIHBhZGRpbmdzIGFuZCBsaXN0IHN0eWxlIHJ1bGVzXG4gKi9cblxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG4iLCJAaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcbkBpbXBvcnQgJ3V0aWxzL2NvbXBvbmVudC1zcGFjaW5nJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uL21peGluJztcblxuJGJ1dHRvbi1mYWxsYmFja190eXBlOiAkYnV0dG9uX2RlZmF1bHQtdHlwZSAhZGVmYXVsdDtcbiRidXR0b24tZmFsbGJhY2tfaWNvbi1wb3M6ICRidXR0b25fZGVmYXVsdC1pY29uLXBvcyAhZGVmYXVsdDtcblxuJGJ1dHRvbi1jb21wb25lbnRfdHlwZTogJGJ1dHRvbl9kZWZhdWx0LXR5cGUgIWRlZmF1bHQ7XG4kYnV0dG9uLWNvbXBvbmVudF9pY29uLXBvczogJGJ1dHRvbl9kZWZhdWx0LWljb24tcG9zICFkZWZhdWx0O1xuJGJ1dHRvbi1jb21wb25lbnRfaG9yaXpvbnRhbC1wb3NpdGlvbjogNTAlICFkZWZhdWx0O1xuJGJ1dHRvbi1jb21wb25lbnRfaG9yaXpvbnRhbC10cmFuc2xhdGlvbjogdHJhbnNsYXRlWCgtNTAlKSAhZGVmYXVsdDtcblxuLiN7JG5zfWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgYnV0dG9uKFxuICAgICAgICAkdHlwZTogJGJ1dHRvbi1mYWxsYmFja190eXBlLFxuICAgICAgICAkaWNvbl9wb3M6ICRidXR0b24tZmFsbGJhY2tfaWNvbi1wb3NcbiAgICApO1xuXG4gICAgJl9fc3BhbiB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbl9zcGFuKFxuICAgICAgICAgICAgJHR5cGU6ICRidXR0b24tZmFsbGJhY2tfdHlwZSxcbiAgICAgICAgICAgICRpY29uX3BvczogJGJ1dHRvbi1mYWxsYmFja19pY29uLXBvc1xuICAgICAgICApO1xuICAgIH1cblxuICAgICZfX2ljb24ge1xuICAgICAgICBAaW5jbHVkZSBidXR0b25faWNvbihcbiAgICAgICAgICAgICR0eXBlOiAkYnV0dG9uLWZhbGxiYWNrX3R5cGUsXG4gICAgICAgICAgICAkaWNvbl9wb3M6ICRidXR0b24tZmFsbGJhY2tfaWNvbi1wb3NcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbi4jeyRuc31idXR0b24tY29tcG9uZW50IHtcbiAgICBAaW5jbHVkZSBidXR0b24oXG4gICAgICAgICR0eXBlOiAkYnV0dG9uLWNvbXBvbmVudF90eXBlLFxuICAgICAgICAkaWNvbl9wb3M6ICRidXR0b24tY29tcG9uZW50X2ljb24tcG9zXG4gICAgKTtcbiAgICBAaW5jbHVkZSBjb21wb25lbnQtc3BhY2luZygpO1xuXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxlZnQ6ICRidXR0b24tY29tcG9uZW50X2hvcml6b250YWwtcG9zaXRpb247XG4gICAgdHJhbnNmb3JtOiAkYnV0dG9uLWNvbXBvbmVudF9ob3Jpem9udGFsLXRyYW5zbGF0aW9uO1xuXG4gICAgJl9fc3BhbiB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbl9zcGFuKFxuICAgICAgICAgICAgJHR5cGU6ICRidXR0b24tY29tcG9uZW50X3R5cGUsXG4gICAgICAgICAgICAkaWNvbl9wb3M6ICRidXR0b24tY29tcG9uZW50X2ljb24tcG9zXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgJl9faWNvbiB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbl9pY29uKFxuICAgICAgICAgICAgJHR5cGU6ICRidXR0b24tY29tcG9uZW50X3R5cGUsXG4gICAgICAgICAgICAkaWNvbl9wb3M6ICRidXR0b24tY29tcG9uZW50X2ljb24tcG9zXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgJl9fYW1vdW50IHtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogJygnO1xuICAgICAgICB9XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJyknO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdjb25maWcvYnJlYWtwb2ludHMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcblxuQG1peGluIGNvbXBvbmVudC1zcGFjaW5nKCRtYXJnaW5zLWNvbmZpZzogJGNvbXBvbmVudC1zcGFjaW5nLWNvbmZpZ3VyYXRpb24pIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJG1hcmdpbnMtY29uZmlnLCBkZWZhdWx0KSB7XG4gICAgICAgIG1hcmdpbjogbWFwLWdldCgkbWFyZ2lucy1jb25maWcsIGRlZmF1bHQpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgICAvLyBEZWZhdWx0IGNvbXBvbmVudCBtYXJnaW4gdmFsdWVcbiAgICAgICAgbWFyZ2luOiAwIDAgM3JlbTtcbiAgICB9XG5cbiAgICBAaWYgbWFwLWhhcy1rZXkoJG1hcmdpbnMtY29uZmlnLCByZXNwb25zaXZlKSB7XG4gICAgICAgIC8vIEFkZGluZyBtYXJnaW4gcnVsZXMgZm9yIGVhY2ggcGFzc2VkIGJyZWFrcG9pbnRcbiAgICAgICAgQGVhY2ggJGJyZWFrcG9pbnQsICRtYXJnaW4gaW4gbWFwLWdldCgkbWFyZ2lucy1jb25maWcsIHJlc3BvbnNpdmUpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCN7JGJyZWFrcG9pbnR9KSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAkbWFyZ2luO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tc2tpcC1zcGFjaW5nIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcblxuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24vbWl4aW4nO1xuQGltcG9ydCAnY29tcG9uZW50cy90eXBvZ3JhcGh5L21peGluJztcblxuJGNvb2tpZS1tZXNzYWdlX2JhY2tncm91bmQtY29sb3I6ICRjb2xvcl9iYWNrZ3JvdW5kLTIwMCAhZGVmYXVsdDtcbiRjb29raWUtbWVzc2FnZV9mb250LXNpemU6IDg1JSAhZGVmYXVsdDtcbiRjb29raWUtbWVzc2FnZV9mb250LWNvbG9yOiAkY29sb3JfdGV4dC05MDAgIWRlZmF1bHQ7XG4kY29va2llLW1lc3NhZ2VfbGluay1jb2xvcjogJGNvbG9yX3ByaW1hcnktNTAwICFkZWZhdWx0O1xuJGNvb2tpZS1tZXNzYWdlX2xpbmstY29sb3ItLWhvdmVyOiAkY29sb3JfcHJpbWFyeS04MDAgIWRlZmF1bHQ7XG5cbiRjb29raWUtbWVzc2FnZV9idXR0b24tdHlwZTogJGJ1dHRvbl9kZWZhdWx0LXR5cGUgIWRlZmF1bHQ7XG4kY29va2llLW1lc3NhZ2VfaWNvbi1wb3M6ICRidXR0b25fZGVmYXVsdC1pY29uLXBvcyAhZGVmYXVsdDtcblxuJGNvb2tpZS1tZXNzYWdlX2J1dHRvbi1wb3MtYnJlYWtwb2ludDogJ3RhYmxldCcgIWRlZmF1bHQ7XG4kY29va2llLW1lc3NhZ2VfYnV0dG9uLXBvcy1hbGlnbjogZmxleC1zdGFydCAhZGVmYXVsdDtcblxuLiN7JG5zfWNvb2tpZS1tZXNzYWdlIHtcbiAgICAkcm9vdDogJjtcblxuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHBhZGRpbmc6IDEuMnJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29va2llLW1lc3NhZ2VfYmFja2dyb3VuZC1jb2xvcjtcbiAgICBjb2xvcjogJGNvb2tpZS1tZXNzYWdlX2ZvbnQtY29sb3I7XG4gICAgYm94LXNoYWRvdzogMCAtMC4zcmVtIDAuNXJlbSAwIHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gICAgZm9udC1zaXplOiAkY29va2llLW1lc3NhZ2VfZm9udC1zaXplO1xuICAgIHotaW5kZXg6IDk4O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTEwJSwgMCk7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXMgZWFzZS1vdXQsIG9wYWNpdHkgMC4xOHMgbGluZWFyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIEBpZiAoJGdsb2JhbF9oZWFkZXItaXMtYm90dG9tLW9uLW1vYmlsZSkge1xuICAgICAgICBib3R0b206ICRnbG9iYWxfaGVhZGVyLWhlaWdodC1tb2JpbGU7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tc2hvd24ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB6LWluZGV4OiAyMDI7XG4gICAgfVxuXG4gICAgJl9faW5uZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDhyZW07XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49I3skY29va2llLW1lc3NhZ2VfYnV0dG9uLXBvcy1icmVha3BvaW50fScpIHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19idXR0b24td3JhcHBlciB7XG4gICAgICAgIGFsaWduLXNlbGY6ICRjb29raWUtbWVzc2FnZV9idXR0b24tcG9zLWFsaWduO1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PSN7JGNvb2tpZS1tZXNzYWdlX2J1dHRvbi1wb3MtYnJlYWtwb2ludH0nKSB7XG4gICAgICAgICAgICBhbGlnbi1zZWxmOiB1bnNldDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3RleHQge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbjogMDtcblxuICAgICAgICAuYmxvY2stY21zLWxpbmsud2lkZ2V0LFxuICAgICAgICBwIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGEge1xuICAgICAgICAgICAgQGluY2x1ZGUgbGluayhcbiAgICAgICAgICAgICAgICAkY29sb3I6ICRjb29raWUtbWVzc2FnZV9saW5rLWNvbG9yLFxuICAgICAgICAgICAgICAgICRjb2xvci1ob3ZlcjogJGNvb2tpZS1tZXNzYWdlX2xpbmstY29sb3ItLWhvdmVyXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9faWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogMC41cmVtO1xuICAgICAgICB3aWR0aDogNS41cmVtO1xuICAgICAgICBoZWlnaHQ6IDUuNXJlbTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj0jeyRjb29raWUtbWVzc2FnZV9idXR0b24tcG9zLWJyZWFrcG9pbnR9Jykge1xuICAgICAgICAgICAgdG9wOiAtMy41cmVtO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYnV0dG9uIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uKFxuICAgICAgICAgICAgJHR5cGU6ICRjb29raWUtbWVzc2FnZV9idXR0b24tdHlwZSxcbiAgICAgICAgICAgICRpY29uX3BvczogJGNvb2tpZS1tZXNzYWdlX2ljb24tcG9zXG4gICAgICAgICk7XG5cbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgbWFyZ2luLXRvcDogMS4ycmVtO1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PSN7JGNvb2tpZS1tZXNzYWdlX2J1dHRvbi1wb3MtYnJlYWtwb2ludH0nKSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEuMnJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2J1dHRvbi1zcGFuIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uX3NwYW4oXG4gICAgICAgICAgICAkdHlwZTogJGNvb2tpZS1tZXNzYWdlX2J1dHRvbi10eXBlLFxuICAgICAgICAgICAgJGljb25fcG9zOiAkY29va2llLW1lc3NhZ2VfaWNvbi1wb3NcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAmX19idXR0b24taWNvbiB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbl9pY29uKFxuICAgICAgICAgICAgJHR5cGU6ICRjb29raWUtbWVzc2FnZV9idXR0b24tdHlwZSxcbiAgICAgICAgICAgICRpY29uX3BvczogJGNvb2tpZS1tZXNzYWdlX2ljb24tcG9zXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdjb25maWcvYnJlYWtwb2ludHMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcblxuJGRhaWx5ZGVhbC0tdGlsZS1wb3NpdGlvbjogYWJzb2x1dGUgIWRlZmF1bHQ7XG4kZGFpbHlkZWFsLS10aWxlLWJvdHRvbTogMCAhZGVmYXVsdDtcbiRkYWlseWRlYWwtLXRpbGUtbGVmdDogMCAhZGVmYXVsdDtcblxuJGRhaWx5ZGVhbF9oZWFkZXItZGlzcGxheTogZmxleCAhZGVmYXVsdDtcbiRkYWlseWRlYWxfaGVhZGVyLWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhZGVmYXVsdDtcbiRkYWlseWRlYWxfaGVhZGVyLWFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFkZWZhdWx0O1xuJGRhaWx5ZGVhbF9oZWFkZXItZm9udC1zaXplOiAxLjJyZW0gIWRlZmF1bHQ7XG4kZGFpbHlkZWFsX2hlYWRlci1tYXJnaW46IDAgMCAwLjVyZW0gIWRlZmF1bHQ7XG5cbiRkYWlseWRlYWxfdGl0bGUtdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhZGVmYXVsdDtcbiRkYWlseWRlYWxfdGl0bGUtZm9udC13ZWlnaHQ6IDYwMCAhZGVmYXVsdDtcblxuJGRhaWx5ZGVhbC0tdGlsZS1hdmFpbGFiaWxpdHktZm9udC1zaXplOiAxcmVtICFkZWZhdWx0O1xuJGRhaWx5ZGVhbC0tdGlsZS1hdmFpbGFiaWxpdHktY29sb3I6ICRjb2xvcl93aGl0ZSAhZGVmYXVsdDtcbiRkYWlseWRlYWwtLXRpbGUtYXZhaWxhYmlsaXR5LWJhY2tncm91bmQ6ICRjb2xvcl9ncmF5ICFkZWZhdWx0O1xuJGRhaWx5ZGVhbC0tdGlsZS1hdmFpbGFiaWxpdHktcGFkZGluZzogMnB4IDRweCAhZGVmYXVsdDtcbiRkYWlseWRlYWwtLXRpbGUtYXZhaWxhYmlsaXR5LWZvbnQtd2VpZ2h0OiAzMDAgIWRlZmF1bHQ7XG4kZGFpbHlkZWFsLS10aWxlLWF2YWlsYWJpbGl0eS1ib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1c19iYXNlICFkZWZhdWx0O1xuXG4kZGFpbHlkZWFsX2l0ZW1zLWFtb3VudC1mb250LXdlaWdodDogNjAwICFkZWZhdWx0O1xuXG4kZGFpbHlkZWFsX2NvdW50ZG93bi1kaXNwbGF5OiBmbGV4ICFkZWZhdWx0O1xuJGRhaWx5ZGVhbF9jb3VudGRvd24tanVzdGlmeS1jb250ZW50OiBzdHJldGNoICFkZWZhdWx0O1xuJGRhaWx5ZGVhbF9jb3VudGRvd24tYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWRlZmF1bHQ7XG4kZGFpbHlkZWFsX2NvdW50ZG93bi1tYXJnaW46IDAgIWRlZmF1bHQ7XG5cbiRkYWlseWRlYWxfY291bnRkb3duLWVsZW1lbnQtbWFyZ2luLWZhY3RvcjogM3B4ICFkZWZhdWx0O1xuJGRhaWx5ZGVhbF9jb3VudGRvd24tZWxlbWVudC0tdGlsZS1tYXJnaW4tZmFjdG9yOiAxcHggIWRlZmF1bHQ7XG4kZGFpbHlkZWFsX2NvdW50ZG93bi1lbGVtZW50LWRpc3BsYXk6IGZsZXggIWRlZmF1bHQ7XG4kZGFpbHlkZWFsX2NvdW50ZG93bi1lbGVtZW50LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWRlZmF1bHQ7XG4kZGFpbHlkZWFsX2NvdW50ZG93bi1lbGVtZW50LXdpZHRoOiAxMDAlICFkZWZhdWx0O1xuJGRhaWx5ZGVhbF9jb3VudGRvd24tZWxlbWVudC1wYWRkaW5nOiAwLjNyZW0gMC41cmVtICFkZWZhdWx0O1xuJGRhaWx5ZGVhbF9jb3VudGRvd24tZWxlbWVudC1saW5lLWhlaWdodDogMSAhZGVmYXVsdDtcbiRkYWlseWRlYWxfY291bnRkb3duLWVsZW1lbnQtYmFja2dyb3VuZDogbm9uZSAhZGVmYXVsdDtcbiRkYWlseWRlYWxfY291bnRkb3duLWVsZW1lbnQtYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXNfYmFzZSAhZGVmYXVsdDtcbiRkYWlseWRlYWxfY291bnRkb3duLWVsZW1lbnQtLXNwZWNpYWwtd2lkdGg6IDUwJSAhZGVmYXVsdDtcbiRkYWlseWRlYWxfY291bnRkb3duLWVsZW1lbnQtLXNwZWNpYWwtYmFja2dyb3VuZDogJGNvbG9yX2NyaW1zb24gIWRlZmF1bHQ7XG5cbiRkYWlseWRlYWxfY291bnRkb3duLWljb24td2lkdGg6IDEuOXJlbSAhZGVmYXVsdDtcbiRkYWlseWRlYWxfY291bnRkb3duLWljb24taGVpZ2h0OiAyLjRyZW0gIWRlZmF1bHQ7XG4kZGFpbHlkZWFsX2NvdW50ZG93bi1pY29uLWZpbGw6ICRjb2xvcl93aGl0ZSAhZGVmYXVsdDtcblxuJGRhaWx5ZGVhbF9jb3VudGRvd24tdmFsdWUtZGlzcGxheTogYmxvY2sgIWRlZmF1bHQ7XG4kZGFpbHlkZWFsX2NvdW50ZG93bi12YWx1ZS1mb250LXNpemU6IDEuNXJlbSAhZGVmYXVsdDtcbiRkYWlseWRlYWxfY291bnRkb3duLXZhbHVlLWZvbnQtd2VpZ2h0OiA2MDAgIWRlZmF1bHQ7XG4kZGFpbHlkZWFsX2NvdW50ZG93bi12YWx1ZS1jb2xvcjogJGNvbG9yX2NyaW1zb24gIWRlZmF1bHQ7XG4kZGFpbHlkZWFsX2NvdW50ZG93bi12YWx1ZS1wYWRkaW5nOiAycHggMCAwICFkZWZhdWx0O1xuXG4kZGFpbHlkZWFsX2NvdW50ZG93bi1sYWJlbC1kaXNwbGF5OiBibG9jayAhZGVmYXVsdDtcbiRkYWlseWRlYWxfY291bnRkb3duLWxhYmVsLWZvbnQtc2l6ZTogMS4xcmVtICFkZWZhdWx0O1xuJGRhaWx5ZGVhbF9jb3VudGRvd24tbGFiZWwtZm9udC13ZWlnaHQ6IGluaGVyaXQgIWRlZmF1bHQ7XG4kZGFpbHlkZWFsX2NvdW50ZG93bi1sYWJlbC1jb2xvcjogJGNvbG9yX2dyYXkgIWRlZmF1bHQ7XG4kZGFpbHlkZWFsX2NvdW50ZG93bi1sYWJlbC1wYWRkaW5nOiAkZGFpbHlkZWFsX2NvdW50ZG93bi12YWx1ZS1wYWRkaW5nICFkZWZhdWx0O1xuXG4kZGFpbHlkZWFsX2NvdW50ZG93bi1sYWJlbC1kaXNwbGF5OiBibG9jayAhZGVmYXVsdDtcblxuJGRhaWx5LWRlYWwtdGVhc2VyX3Byb2R1Y3QtZGQtY291bnRlci1taW4taGVpZ2h0OiA0cmVtICFkZWZhdWx0O1xuXG4kZGFpbHlkZWFsX3BkcC1iYWRnZS1pY29uLXdpZHRoOiAxLjVyZW0gIWRlZmF1bHQ7XG4kZGFpbHlkZWFsX3BkcC1iYWRnZS1pY29uLWhlaWdodDogMS41cmVtICFkZWZhdWx0O1xuJGRhaWx5ZGVhbF9wZHAtYmFkZ2UtaWNvbi1maWxsLWNvbG9yOiAkY29sb3JfYmFja2dyb3VuZC0yMDAgIWRlZmF1bHQ7XG5cbi8vIEJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdoIHNwYWNlIGZvciBkaXNwbGF5IGZ1bGwgY291bnRlciBvbiBtb2JpbGUgKGRlcGVuZHMgb24gZGVzaW5nKSwgd2UgY2FuIGRpc3BsYXkgY291bnRlciBpbiBsaWdodGVyIHZlcnNpb24gKG9ubHkgb24gdGlsZSlcbi8vIFNldCBgZmFsc2VgIHRvIGlnbm9yZSBsaWdodGVyIHZlcnNpb25cbiRkYWlseWRlYWxfZnVsbC1jb3VudGVyLWxpZ2h0ZXItdmVyc2lvbi1icmVha3BvaW50OiAnPDYwMHB4JyAhZGVmYXVsdDtcblxuLiN7JG5zfWRhaWx5ZGVhbCB7XG4gICAgJHJvb3Q6ICY7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgICZfX2hlYWRlciB7XG4gICAgICAgIGRpc3BsYXk6ICRkYWlseWRlYWxfaGVhZGVyLWRpc3BsYXk7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW46ICRkYWlseWRlYWxfaGVhZGVyLW1hcmdpbjtcbiAgICAgICAgZm9udC1zaXplOiAkZGFpbHlkZWFsX2hlYWRlci1mb250LXNpemU7XG5cbiAgICAgICAgQGlmICRkYWlseWRlYWxfaGVhZGVyLWRpc3BsYXkgPT1cbiAgICAgICAgICAgIGZsZXggb3JcbiAgICAgICAgICAgICRkYWlseWRlYWxfaGVhZGVyLWRpc3BsYXkgPT1cbiAgICAgICAgICAgIGlubGluZS1mbGV4XG4gICAgICAgIHtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogJGRhaWx5ZGVhbF9oZWFkZXItanVzdGlmeS1jb250ZW50O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6ICRkYWlseWRlYWxfaGVhZGVyLWFsaWduLWl0ZW1zO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fdGl0bGUge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiAkZGFpbHlkZWFsX3RpdGxlLXRleHQtdHJhbnNmb3JtO1xuICAgICAgICBmb250LXdlaWdodDogJGRhaWx5ZGVhbF90aXRsZS1mb250LXdlaWdodDtcbiAgICB9XG5cbiAgICAmX19pdGVtcy1hbW91bnQge1xuICAgICAgICBmb250LXdlaWdodDogJGRhaWx5ZGVhbF9pdGVtcy1hbW91bnQtZm9udC13ZWlnaHQ7XG4gICAgfVxuXG4gICAgJl9fY291bnRkb3duIHtcbiAgICAgICAgZGlzcGxheTogJGRhaWx5ZGVhbF9jb3VudGRvd24tZGlzcGxheTtcbiAgICAgICAgbWFyZ2luOiAkZGFpbHlkZWFsX2NvdW50ZG93bi1tYXJnaW47XG5cbiAgICAgICAgQGlmICRkYWlseWRlYWxfY291bnRkb3duLWRpc3BsYXkgPT1cbiAgICAgICAgICAgIGZsZXggb3JcbiAgICAgICAgICAgICRkYWlseWRlYWxfY291bnRkb3duLWRpc3BsYXkgPT1cbiAgICAgICAgICAgIGlubGluZS1mbGV4XG4gICAgICAgIHtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogJGRhaWx5ZGVhbF9jb3VudGRvd24tanVzdGlmeS1jb250ZW50O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6ICRkYWlseWRlYWxfY291bnRkb3duLWFsaWduLWl0ZW1zO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fY291bnRkb3duLWVsZW1lbnQge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDM7XG4gICAgICAgIHdpZHRoOiAkZGFpbHlkZWFsX2NvdW50ZG93bi1lbGVtZW50LXdpZHRoO1xuICAgICAgICBwYWRkaW5nOiAkZGFpbHlkZWFsX2NvdW50ZG93bi1lbGVtZW50LXBhZGRpbmc7XG4gICAgICAgIGRpc3BsYXk6ICRkYWlseWRlYWxfY291bnRkb3duLWVsZW1lbnQtZGlzcGxheTtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246ICRkYWlseWRlYWxfY291bnRkb3duLWVsZW1lbnQtZmxleC1kaXJlY3Rpb247XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBsaW5lLWhlaWdodDogJGRhaWx5ZGVhbF9jb3VudGRvd24tZWxlbWVudC1saW5lLWhlaWdodDtcbiAgICAgICAgYmFja2dyb3VuZDogJGRhaWx5ZGVhbF9jb3VudGRvd24tZWxlbWVudC1iYWNrZ3JvdW5kO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkZGFpbHlkZWFsX2NvdW50ZG93bi1lbGVtZW50LWJvcmRlci1yYWRpdXM7XG5cbiAgICAgICAgJi0tc3BlY2lhbCB7XG4gICAgICAgICAgICB3aWR0aDogJGRhaWx5ZGVhbF9jb3VudGRvd24tZWxlbWVudC0tc3BlY2lhbC13aWR0aDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRkYWlseWRlYWxfY291bnRkb3duLWVsZW1lbnQtLXNwZWNpYWwtYmFja2dyb3VuZDtcbiAgICAgICAgICAgIHotaW5kZXg6IDU7XG4gICAgICAgIH1cblxuICAgICAgICAjeyRyb290fS0tdGVhc2VyICYge1xuICAgICAgICAgICAgbWluLWhlaWdodDogJGRhaWx5LWRlYWwtdGVhc2VyX3Byb2R1Y3QtZGQtY291bnRlci1taW4taGVpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fY291bnRkb3duLWljb24ge1xuICAgICAgICB3aWR0aDogJGRhaWx5ZGVhbF9jb3VudGRvd24taWNvbi13aWR0aDtcbiAgICAgICAgaGVpZ2h0OiAkZGFpbHlkZWFsX2NvdW50ZG93bi1pY29uLWhlaWdodDtcbiAgICAgICAgZmlsbDogJGRhaWx5ZGVhbF9jb3VudGRvd24taWNvbi1maWxsO1xuICAgIH1cblxuICAgICZfX2NvdW50ZG93bi12YWx1ZSB7XG4gICAgICAgIGRpc3BsYXk6ICRkYWlseWRlYWxfY291bnRkb3duLXZhbHVlLWRpc3BsYXk7XG4gICAgICAgIGZvbnQtc2l6ZTogJGRhaWx5ZGVhbF9jb3VudGRvd24tdmFsdWUtZm9udC1zaXplO1xuICAgICAgICBmb250LXdlaWdodDogJGRhaWx5ZGVhbF9jb3VudGRvd24tdmFsdWUtZm9udC13ZWlnaHQ7XG4gICAgICAgIGNvbG9yOiAkZGFpbHlkZWFsX2NvdW50ZG93bi12YWx1ZS1jb2xvcjtcbiAgICAgICAgcGFkZGluZzogJGRhaWx5ZGVhbF9jb3VudGRvd24tdmFsdWUtcGFkZGluZztcbiAgICB9XG5cbiAgICAmX19jb3VudGRvd24tbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiAkZGFpbHlkZWFsX2NvdW50ZG93bi1sYWJlbC1kaXNwbGF5O1xuICAgICAgICBmb250LXNpemU6ICRkYWlseWRlYWxfY291bnRkb3duLWxhYmVsLWZvbnQtc2l6ZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRkYWlseWRlYWxfY291bnRkb3duLWxhYmVsLWZvbnQtd2VpZ2h0O1xuICAgICAgICBjb2xvcjogJGRhaWx5ZGVhbF9jb3VudGRvd24tbGFiZWwtY29sb3I7XG4gICAgICAgIHBhZGRpbmc6ICRkYWlseWRlYWxfY291bnRkb3duLWxhYmVsLXBhZGRpbmc7XG4gICAgfVxuXG4gICAgJi0tdGlsZSB7XG4gICAgICAgIHBvc2l0aW9uOiAkZGFpbHlkZWFsLS10aWxlLXBvc2l0aW9uO1xuICAgICAgICBsZWZ0OiAkZGFpbHlkZWFsLS10aWxlLWxlZnQ7XG4gICAgICAgIGJvdHRvbTogJGRhaWx5ZGVhbC0tdGlsZS1ib3R0b207XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB6LWluZGV4OiAzO1xuXG4gICAgICAgICN7JHJvb3R9X19hdmFpbGFiaWxpdHkge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGRhaWx5ZGVhbC0tdGlsZS1hdmFpbGFiaWxpdHktYmFja2dyb3VuZDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGRhaWx5ZGVhbC0tdGlsZS1hdmFpbGFiaWxpdHktZm9udC1zaXplO1xuICAgICAgICAgICAgY29sb3I6ICRkYWlseWRlYWwtLXRpbGUtYXZhaWxhYmlsaXR5LWNvbG9yO1xuICAgICAgICAgICAgcGFkZGluZzogJGRhaWx5ZGVhbC0tdGlsZS1hdmFpbGFiaWxpdHktcGFkZGluZztcbiAgICAgICAgICAgIHotaW5kZXg6IDQ7XG4gICAgICAgICAgICBmb250LXdlaWdodDogJGRhaWx5ZGVhbC0tdGlsZS1hdmFpbGFiaWxpdHktZm9udC13ZWlnaHQ7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkZGFpbHlkZWFsLS10aWxlLWF2YWlsYWJpbGl0eS1ib3JkZXItcmFkaXVzO1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkZGFpbHlkZWFsX2Z1bGwtY291bnRlci1saWdodGVyLXZlcnNpb24tYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoXG4gICAgICAgICAgICAgICAgJGRhaWx5ZGVhbF9mdWxsLWNvdW50ZXItbGlnaHRlci12ZXJzaW9uLWJyZWFrcG9pbnQuLi5cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICN7JHJvb3R9X19jb3VudGRvd24tZWxlbWVudCB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICY6bm90KDpvbmx5LWNoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICN7JHJvb3R9X19jb3VudGRvd24tdmFsdWUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICYtLXNwZWNpYWwge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmOm5vdCguY3MtZGFpbHlkZWFsX19jb3VudGRvd24tZWxlbWVudC0tc3BlY2lhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgJjpudGgtY2hpbGQoMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMS44cmVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMXJlbSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAuOHJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYWlseWRlYWxfY291bnRkb3duLWVsZW1lbnQtYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGFpbHlkZWFsX2NvdW50ZG93bi1lbGVtZW50LWJvcmRlci1yYWRpdXMgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICN7JHJvb3R9X19jb3VudGRvd24tdmFsdWUge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTtcblxuICAgICAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICc6JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICN7JHJvb3R9X19jb3VudGRvd24tbGFiZWwge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFBEUFxuICAgICZfX2JhZGdlLXBkcC1pY29uIHtcbiAgICAgICAgd2lkdGg6ICRkYWlseWRlYWxfcGRwLWJhZGdlLWljb24td2lkdGg7XG4gICAgICAgIGhlaWdodDogJGRhaWx5ZGVhbF9wZHAtYmFkZ2UtaWNvbi1oZWlnaHQ7XG4gICAgICAgIHotaW5kZXg6IDEwO1xuICAgICAgICBmaWxsOiAkZGFpbHlkZWFsX3BkcC1iYWRnZS1pY29uLWZpbGwtY29sb3I7XG4gICAgfVxufVxuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd2ZW5kb3JzL2luY2x1ZGUtbWVkaWEnO1xuXG4uI3skbnN9ZGlzcGxheS1jb250cm9sbGVyIHtcbiAgICAmLS1oaWRkZW4tbW9iaWxlIHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzx0YWJsZXQnKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0taGlkZGVuLWRlc2t0b3Age1xuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLyogc3R5bGVsaW50LWRpc2FibGUgYmxvY2stbm8tZW1wdHkgKi9cbkBtaXhpbiBwc2V1ZG9pY29uX2JlZm9yZS1ob29rKCR0eXBlKSB7XG59XG5cbkBtaXhpbiBwc2V1ZG9pY29uX2FmdGVyLWhvb2soJHR5cGUpIHtcbn1cbi8qIHN0eWxlbGludC1lbmFibGUgKi9cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcbkBpbXBvcnQgJ3V0aWxzL3Jlc2V0LWxpc3Qtc3R5bGUnO1xuQGltcG9ydCAnY29tcG9uZW50cy9wc2V1ZG9pY29uL21peGluJztcblxuJGRyb3Bkb3duLXN3aXRjaGVyX2JhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFkZWZhdWx0O1xuXG4kZHJvcGRvd24tc3dpdGNoZXJfb2ZmY2FudmFzLWJvdHRvbS1ib3JkZXI6IDFweCAkY29sb3JfYm9yZGVyLTUwMCBzb2xpZCAhZGVmYXVsdDtcblxuLy8gT2ZmY2FudmFzIHRyaWdnZXIgb3B0aW9uc1xuJGRyb3Bkb3duLXN3aXRjaGVyX29mZmNhbnZhcy10cmlnZ2VyLWVuYWJsZWQ6IHRydWUgIWRlZmF1bHQ7XG4kZHJvcGRvd24tc3dpdGNoZXJfb2ZmY2FudmFzLXRyaWdnZXItY29sb3I6ICRjb2xvcl9wcmltYXJ5LTUwMCAhZGVmYXVsdDtcbiRkcm9wZG93bi1zd2l0Y2hlcl9vZmZjYW52YXMtdHJpZ2dlci1jb2xvci0taG92ZXI6ICRkcm9wZG93bi1zd2l0Y2hlcl9vZmZjYW52YXMtdHJpZ2dlci1jb2xvciAhZGVmYXVsdDtcbiRkcm9wZG93bi1zd2l0Y2hlcl9vZmZjYW52YXMtdHJpZ2dlci1jb2xvci0tYWN0aXZlOiAkZHJvcGRvd24tc3dpdGNoZXJfb2ZmY2FudmFzLXRyaWdnZXItY29sb3IgIWRlZmF1bHQ7XG4kZHJvcGRvd24tc3dpdGNoZXJfb2ZmY2FudmFzLXRyaWdnZXItdHlwZTogJ2Fycm93JyAhZGVmYXVsdDtcbiRkcm9wZG93bi1zd2l0Y2hlcl9vZmZjYW52YXMtdHJpZ2dlci1hcnJvdy1kZWZhdWx0OiAnZG93bicgIWRlZmF1bHQ7XG4kZHJvcGRvd24tc3dpdGNoZXJfb2ZmY2FudmFzLXRyaWdnZXItYXJyb3ctYWN0aXZlOiAndXAnICFkZWZhdWx0O1xuJGRyb3Bkb3duLXN3aXRjaGVyX29mZmNhbnZhcy10cmlnZ2VyLXdpZHRoOiAwLjdyZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24tc3dpdGNoZXJfb2ZmY2FudmFzLXRyaWdnZXItaGVpZ2h0OiAwLjFyZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24tc3dpdGNoZXJfb2ZmY2FudmFzLXRyaWdnZXItYXJyb3ctb2Zmc2V0OiAzcmVtICFkZWZhdWx0O1xuJGRyb3Bkb3duLXN3aXRjaGVyX29mZmNhbnZhcy10cmlnZ2VyLXBvc2l0aW9uLXNpZGUtb2Zmc2V0OiAyLjVyZW0gIWRlZmF1bHQ7XG5cbi8vIERyb3Bkb3duIHRyaWdnZXIgb3B0aW9uc1xuJGRyb3Bkb3duLXN3aXRjaGVyX3RyaWdnZXItZW5hYmxlZDogdHJ1ZSAhZGVmYXVsdDtcbiRkcm9wZG93bi1zd2l0Y2hlcl90cmlnZ2VyLWNvbG9yOiAkY29sb3JfYmFja2dyb3VuZC04MDAgIWRlZmF1bHQ7XG4kZHJvcGRvd24tc3dpdGNoZXJfdHJpZ2dlci1jb2xvci0taG92ZXI6ICRkcm9wZG93bi1zd2l0Y2hlcl90cmlnZ2VyLWNvbG9yICFkZWZhdWx0O1xuJGRyb3Bkb3duLXN3aXRjaGVyX3RyaWdnZXItY29sb3ItLWFjdGl2ZTogJGRyb3Bkb3duLXN3aXRjaGVyX3RyaWdnZXItY29sb3IgIWRlZmF1bHQ7XG4kZHJvcGRvd24tc3dpdGNoZXJfdHJpZ2dlci10eXBlOiAnYXJyb3cnICFkZWZhdWx0O1xuJGRyb3Bkb3duLXN3aXRjaGVyX3RyaWdnZXItYXJyb3ctZGVmYXVsdDogJ2Rvd24nICFkZWZhdWx0O1xuJGRyb3Bkb3duLXN3aXRjaGVyX3RyaWdnZXItYXJyb3ctYWN0aXZlOiAndXAnICFkZWZhdWx0O1xuJGRyb3Bkb3duLXN3aXRjaGVyX3RyaWdnZXItd2lkdGg6IDAuN3JlbSAhZGVmYXVsdDtcbiRkcm9wZG93bi1zd2l0Y2hlcl90cmlnZ2VyLWhlaWdodDogMC4xcmVtICFkZWZhdWx0O1xuJGRyb3Bkb3duLXN3aXRjaGVyX3RyaWdnZXItYXJyb3ctb2Zmc2V0OiAwLjVyZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24tc3dpdGNoZXJfdHJpZ2dlci1wb3NpdGlvbi1zaWRlLW9mZnNldDogMCAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLXN3aXRjaGVyX2xpc3QtYm9yZGVyLWNvbG9yOiAkY29sb3JfYm9yZGVyLTIwMCAhZGVmYXVsdDtcbiRkcm9wZG93bi1zd2l0Y2hlcl9saXN0LWJhY2tncm91bmQtY29sb3I6ICRjb2xvcl9iYWNrZ3JvdW5kLTIwMCAhZGVmYXVsdDtcbiRkcm9wZG93bi1zd2l0Y2hlcl9saXN0LWl0ZW0tY29sb3I6ICRjb2xvcl90ZXh0LTgwMCAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLXN3aXRjaGVyX2hvdmVyLWJhY2tncm91bmQ6ICRjb2xvcl9iYWNrZ3JvdW5kLTUwMCAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLXN3aXRjaGVyX3RvcGJhci1zZXBhcmF0b3ItYm9yZGVyOiAwLjJyZW0gc29saWQgJGNvbG9yX2JvcmRlci0xMDAgIWRlZmF1bHQ7XG5cbiRkcm9wZG93bi1zd2l0Y2hlcl9ib3JkZXItcmFkaXVzOiAzcHggIWRlZmF1bHQ7XG4kZHJvcGRvd24tc3dpdGNoZXJfbGFuZ3VhZ2UtZmxhZy13aWR0aDogMS41cmVtICFkZWZhdWx0O1xuJGRyb3Bkb3duLXN3aXRjaGVyX2xhbmd1YWdlLWZsYWctaGVpZ2h0OiAxLjVyZW0gIWRlZmF1bHQ7XG5cbiRkcm9wZG93bi1zd2l0Y2hlcl9mb250LXNpemUtcHJpbWFyeTogMS40cmVtICFkZWZhdWx0O1xuJGRyb3Bkb3duLXN3aXRjaGVyX2ZvbnQtc2l6ZS1zZWNvbmRhcnk6IDEuMXJlbSAhZGVmYXVsdDtcblxuLiN7JG5zfWRyb3Bkb3duLXN3aXRjaGVyIHtcbiAgICAkcm9vdDogJjtcblxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBmbGV4LXNocmluazogMDtcblxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICBsZWZ0OiAxLjNyZW07XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAkZHJvcGRvd24tc3dpdGNoZXJfdG9wYmFyLXNlcGFyYXRvci1ib3JkZXI7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXN0b3JlcyB7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PWxhcHRvcCcpIHtcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fb3B0aW9uIHtcbiAgICAgICAgJi1pY29uIHtcbiAgICAgICAgICAgIG1pbi13aWR0aDogJGRyb3Bkb3duLXN3aXRjaGVyX2xhbmd1YWdlLWZsYWctd2lkdGg7XG4gICAgICAgICAgICBoZWlnaHQ6ICRkcm9wZG93bi1zd2l0Y2hlcl9sYW5ndWFnZS1mbGFnLWhlaWdodDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMC42cmVtO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4ycmVtO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICAgICAgICAgICAjeyRyb290fS0tbGFuZ3VhZ2UgJiB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJGRyb3Bkb3duLXN3aXRjaGVyX2xhbmd1YWdlLWZsYWctd2lkdGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnN3aXRjaGVyLW9wdGlvbnMge1xuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj1sYXB0b3AnKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fdHJpZ2dlciB7XG4gICAgICAgIHBhZGRpbmc6IDIuNHJlbSAycmVtO1xuICAgICAgICBmb250LXNpemU6ICRkcm9wZG93bi1zd2l0Y2hlcl9mb250LXNpemUtcHJpbWFyeTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogJGRyb3Bkb3duLXN3aXRjaGVyX29mZmNhbnZhcy1ib3R0b20tYm9yZGVyO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgQGlmICRkcm9wZG93bi1zd2l0Y2hlcl9vZmZjYW52YXMtdHJpZ2dlci1lbmFibGVkIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHBzZXVkb2ljb24oXG4gICAgICAgICAgICAgICAgJHR5cGU6ICRkcm9wZG93bi1zd2l0Y2hlcl9vZmZjYW52YXMtdHJpZ2dlci10eXBlLFxuICAgICAgICAgICAgICAgICRhcnJvdy1kZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAkZHJvcGRvd24tc3dpdGNoZXJfb2ZmY2FudmFzLXRyaWdnZXItYXJyb3ctZGVmYXVsdCxcbiAgICAgICAgICAgICAgICAkYXJyb3ctYWN0aXZlOiAkZHJvcGRvd24tc3dpdGNoZXJfb2ZmY2FudmFzLXRyaWdnZXItYXJyb3ctYWN0aXZlLFxuICAgICAgICAgICAgICAgICR3aWR0aDogJGRyb3Bkb3duLXN3aXRjaGVyX29mZmNhbnZhcy10cmlnZ2VyLXdpZHRoLFxuICAgICAgICAgICAgICAgICRoZWlnaHQ6ICRkcm9wZG93bi1zd2l0Y2hlcl9vZmZjYW52YXMtdHJpZ2dlci1oZWlnaHQsXG4gICAgICAgICAgICAgICAgJGFycm93LW9mZnNldDogJGRyb3Bkb3duLXN3aXRjaGVyX29mZmNhbnZhcy10cmlnZ2VyLWFycm93LW9mZnNldCxcbiAgICAgICAgICAgICAgICAkcG9zaXRpb24tc2lkZS1vZmZzZXQ6XG4gICAgICAgICAgICAgICAgICAgICRkcm9wZG93bi1zd2l0Y2hlcl9vZmZjYW52YXMtdHJpZ2dlci1wb3NpdGlvbi1zaWRlLW9mZnNldCxcbiAgICAgICAgICAgICAgICAkY29sb3I6ICRkcm9wZG93bi1zd2l0Y2hlcl9vZmZjYW52YXMtdHJpZ2dlci1jb2xvcixcbiAgICAgICAgICAgICAgICAkY29sb3ItaG92ZXI6ICRkcm9wZG93bi1zd2l0Y2hlcl9vZmZjYW52YXMtdHJpZ2dlci1jb2xvci0taG92ZXIsXG4gICAgICAgICAgICAgICAgJGNvbG9yLWV4cGFuZGVkOlxuICAgICAgICAgICAgICAgICAgICAkZHJvcGRvd24tc3dpdGNoZXJfb2ZmY2FudmFzLXRyaWdnZXItY29sb3ItLWFjdGl2ZSxcbiAgICAgICAgICAgICAgICAkYWN0aXZlLXNlbGVjdG9yOiAnJi5hY3RpdmUnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDJyZW07XG4gICAgICAgICAgICBmb250LXNpemU6ICRkcm9wZG93bi1zd2l0Y2hlcl9mb250LXNpemUtc2Vjb25kYXJ5O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMS41cmVtIDAgMDtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG5cbiAgICAgICAgICAgIEBpZiAkZHJvcGRvd24tc3dpdGNoZXJfdHJpZ2dlci1lbmFibGVkIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBwc2V1ZG9pY29uKFxuICAgICAgICAgICAgICAgICAgICAkdHlwZTogJGRyb3Bkb3duLXN3aXRjaGVyX3RyaWdnZXItdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgJGFycm93LWRlZmF1bHQ6ICRkcm9wZG93bi1zd2l0Y2hlcl90cmlnZ2VyLWFycm93LWRlZmF1bHQsXG4gICAgICAgICAgICAgICAgICAgICRhcnJvdy1hY3RpdmU6ICRkcm9wZG93bi1zd2l0Y2hlcl90cmlnZ2VyLWFycm93LWFjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgJHdpZHRoOiAkZHJvcGRvd24tc3dpdGNoZXJfdHJpZ2dlci13aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgJGhlaWdodDogJGRyb3Bkb3duLXN3aXRjaGVyX3RyaWdnZXItaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAkYXJyb3ctb2Zmc2V0OiAkZHJvcGRvd24tc3dpdGNoZXJfdHJpZ2dlci1hcnJvdy1vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICRwb3NpdGlvbi1zaWRlLW9mZnNldDpcbiAgICAgICAgICAgICAgICAgICAgICAgICRkcm9wZG93bi1zd2l0Y2hlcl90cmlnZ2VyLXBvc2l0aW9uLXNpZGUtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAkY29sb3I6ICRkcm9wZG93bi1zd2l0Y2hlcl90cmlnZ2VyLWNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAkY29sb3ItaG92ZXI6ICRkcm9wZG93bi1zd2l0Y2hlci10cmlnZ2VyLWNvbG9yLS1ob3ZlcixcbiAgICAgICAgICAgICAgICAgICAgJGNvbG9yLWV4cGFuZGVkOiAkZHJvcGRvd24tc3dpdGNoZXJfdHJpZ2dlci1jb2xvci0tYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAkYWN0aXZlLXNlbGVjdG9yOiAnJi5hY3RpdmUnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICY6YmVmb3JlLFxuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5hY3RpdmUgJiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkZHJvcGRvd24tc3dpdGNoZXJfYmFja2dyb3VuZDtcbiAgICAgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRkcm9wZG93bi1zd2l0Y2hlcl9ib3JkZXItcmFkaXVzO1xuICAgICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRkcm9wZG93bi1zd2l0Y2hlcl9ib3JkZXItcmFkaXVzO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8bGFwdG9wJykge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDIuNHJlbSAycmVtO1xuICAgICAgICAgICAgICAgIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtc3BhbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2xpc3Qge1xuICAgICAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlKCk7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIGZvbnQtc2l6ZTogJGRyb3Bkb3duLXN3aXRjaGVyX2ZvbnQtc2l6ZS1zZWNvbmRhcnk7XG4gICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRkcm9wZG93bi1zd2l0Y2hlcl9ib3JkZXItcmFkaXVzO1xuICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJGRyb3Bkb3duLXN3aXRjaGVyX2JvcmRlci1yYWRpdXM7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGRyb3Bkb3duLXN3aXRjaGVyX2xpc3QtYm9yZGVyLWNvbG9yO1xuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgICBib3JkZXItd2lkdGg6IDAgMXB4IDFweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGRyb3Bkb3duLXN3aXRjaGVyX2xpc3QtYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgICAgIHJpZ2h0OiAtMXJlbTtcbiAgICAgICAgICAgIGxlZnQ6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAjeyRyb290fS0tY3VycmVuY3kge1xuICAgICAgICAgICAgcmlnaHQ6IC0xcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmFjdGl2ZSAmIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgJi1pdGVtIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH1cblxuICAgICAgICAmLWl0ZW0tbGluayB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGNvbG9yOiAkZHJvcGRvd24tc3dpdGNoZXJfbGlzdC1pdGVtLWNvbG9yICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGRyb3Bkb3duLXN3aXRjaGVyX2hvdmVyLWJhY2tncm91bmQ7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPGxhcHRvcCcpIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxLjRyZW0gMnJlbTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRkcm9wZG93bi1zd2l0Y2hlcl9mb250LXNpemUtcHJpbWFyeTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNnJlbSAxLjhyZW07XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZHJvcGRvd24tc3dpdGNoZXJfZm9udC1zaXplLXNlY29uZGFyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAnY29tcG9uZW50cy9wc2V1ZG9pY29uL2hvb2snO1xuXG4kcHNldWRvaWNvbi10eXBlOiAncGx1cycgIWRlZmF1bHQ7IC8vIHBsdXMgKGRlZmF1bHQpIG9yIGFycm93XG4vLyBBbmltYXRpb24gZm9yIGFycm93cyB3b3JrcyBvbmx5IGlmIGRlZmF1bHQgYW5kIGFjdGl2ZSBkaXJlY3Rpb24gYXJlIG9wcG9zaXRlXG4kcHNldWRvaWNvbi1hbmltYXRlOiB0cnVlICFkZWZhdWx0O1xuJHBzZXVkb2ljb24tYW5pbWF0aW9uLXRpbWU6IDAuMTVzICFkZWZhdWx0O1xuJHBzZXVkb2ljb24tY29sb3I6ICRjb2xvcl9ib3JkZXItNzAwICFkZWZhdWx0O1xuJHBzZXVkb2ljb24taG92ZXItY29sb3I6ICRjb2xvcl9ib3JkZXItNzAwICFkZWZhdWx0O1xuJHBzZXVkb2ljb24tZXhwYW5kZWQtY29sb3I6ICRjb2xvcl9ib3JkZXItNzAwICFkZWZhdWx0O1xuJHBzZXVkb2ljb24td2lkdGg6IDEuMnJlbSAhZGVmYXVsdDtcbiRwc2V1ZG9pY29uLWhlaWdodDogMC4ycmVtICFkZWZhdWx0O1xuJHBzZXVkb2ljb24tcG9zaXRpb24tc2lkZS1vZmZzZXQ6ICRwYWdlX2VkZ2UtZ3V0dGVyICFkZWZhdWx0O1xuXG4vLyBBZGRpdGlvbmFsIHNldHRpbmdzIGZvciBhcnJvd3NcbiRwc2V1ZG9pY29uLWFycm93LWRlZmF1bHQtZGlyZWN0aW9uOiAndXAnICFkZWZhdWx0O1xuJHBzZXVkb2ljb24tYXJyb3ctYWN0aXZlLWRpcmVjdGlvbjogJ2Rvd24nICFkZWZhdWx0O1xuLy8gSW4gc29tZSBjYXNlcyAoaXQgZGVwZW5kcyBvbiAkcHNldWRvaWNvbi13aWR0aC9oZWlnaHQgdmFsdWUpLCB3ZSBuZWVkIHRvIGZpeCBvZmZzZXQgZm9yIGxlZnQgcGFydCBvZiBpY29uXG4kcHNldWRvaWNvbi1hcnJvdy1sZWZ0LW9mZnNldDogY2FsYyhcbiAgICAjeyRwc2V1ZG9pY29uLXBvc2l0aW9uLXNpZGUtb2Zmc2V0fSArICN7JHBzZXVkb2ljb24td2lkdGh9IC0gI3syICpcbiAgICAgICAgJHBzZXVkb2ljb24taGVpZ2h0fVxuKSAhZGVmYXVsdDtcblxuJHBzZXVkb2ljb24tYWN0aXZlLXNlbGVjdG9yOiAnJlthcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXScgIWRlZmF1bHQ7XG5cbkBtaXhpbiBwc2V1ZG9pY29uKFxuICAgICR0eXBlOiAkcHNldWRvaWNvbi10eXBlLFxuICAgICRhbmltYXRlZDogJHBzZXVkb2ljb24tYW5pbWF0ZSxcbiAgICAkYW5pbWF0aW9uLXRpbWU6ICRwc2V1ZG9pY29uLWFuaW1hdGlvbi10aW1lLFxuICAgICRjb2xvcjogJHBzZXVkb2ljb24tY29sb3IsXG4gICAgJGNvbG9yLWhvdmVyOiAkcHNldWRvaWNvbi1ob3Zlci1jb2xvcixcbiAgICAkY29sb3ItZXhwYW5kZWQ6ICRwc2V1ZG9pY29uLWV4cGFuZGVkLWNvbG9yLFxuICAgICR3aWR0aDogJHBzZXVkb2ljb24td2lkdGgsXG4gICAgJGhlaWdodDogJHBzZXVkb2ljb24taGVpZ2h0LFxuICAgICRwb3NpdGlvbi1zaWRlLW9mZnNldDogJHBzZXVkb2ljb24tcG9zaXRpb24tc2lkZS1vZmZzZXQsXG4gICAgJGFycm93LWRlZmF1bHQ6ICRwc2V1ZG9pY29uLWFycm93LWRlZmF1bHQtZGlyZWN0aW9uLFxuICAgICRhcnJvdy1hY3RpdmU6ICRwc2V1ZG9pY29uLWFycm93LWFjdGl2ZS1kaXJlY3Rpb24sXG4gICAgJGFycm93LW9mZnNldDogJHBzZXVkb2ljb24tYXJyb3ctbGVmdC1vZmZzZXQsXG4gICAgJGFjdGl2ZS1zZWxlY3RvcjogJHBzZXVkb2ljb24tYWN0aXZlLXNlbGVjdG9yXG4pIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuXG4gICAgICAgIEBpZiAoJGFuaW1hdGVkKSB7XG4gICAgICAgICAgICBAaWYgKCR0eXBlID09ICdhcnJvdycpIHtcbiAgICAgICAgICAgICAgICBAaWYgKCgkYXJyb3ctZGVmYXVsdCA9PSAndXAnKSBhbmQgKCRhcnJvdy1hY3RpdmUgPT0gJ2Rvd24nKSkgb3JcbiAgICAgICAgICAgICAgICAgICAgKCgkYXJyb3ctZGVmYXVsdCA9PSAnZG93bicpIGFuZCAoJGFycm93LWFjdGl2ZSA9PSAndXAnKSkgb3JcbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgKCRhcnJvdy1kZWZhdWx0ID09ICdsZWZ0JykgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCRhcnJvdy1hY3RpdmUgPT0gJ3JpZ2h0JylcbiAgICAgICAgICAgICAgICAgICAgKSBvclxuICAgICAgICAgICAgICAgICAgICAoKCRhcnJvdy1kZWZhdWx0ID09ICdyaWdodCcpIGFuZCAoJGFycm93LWFjdGl2ZSA9PSAnbGVmdCcpKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtICRhbmltYXRpb24tdGltZSBsaW5lYXIsXG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodCAkYW5pbWF0aW9uLXRpbWUgbGluZWFyLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciAkYW5pbWF0aW9uLXRpbWUgbGluZWFyO1xuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yICRhbmltYXRpb24tdGltZSBsaW5lYXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtICgyICogJGFuaW1hdGlvbi10aW1lKSBlYXNlLW91dCxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eSAkYW5pbWF0aW9uLXRpbWUgZWFzZS1vdXQsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgJGFuaW1hdGlvbi10aW1lIGxpbmVhcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKCRjb2xvci1ob3ZlciAhPSAkY29sb3IpIHtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yICRhbmltYXRpb24tdGltZSBsaW5lYXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxuXG4gICAgQGlmICgkY29sb3ItaG92ZXIgIT0gJGNvbG9yKSB7XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgJjpiZWZvcmUsXG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItaG92ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjeyRhY3RpdmUtc2VsZWN0b3J9IHtcbiAgICAgICAgJjpiZWZvcmUsXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgQGlmICgkY29sb3ItZXhwYW5kZWQgIT0gJGNvbG9yKSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWV4cGFuZGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGlmICgkdHlwZSA9PSAnYXJyb3cnKSB7XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIEBpZiAoJGFycm93LWRlZmF1bHQgPT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDEzNWRlZykgdHJhbnNsYXRlM2QoNTAlLCAwLCAwKTtcbiAgICAgICAgICAgICAgICByaWdodDogJHBvc2l0aW9uLXNpZGUtb2Zmc2V0O1xuICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGFycm93LWRlZmF1bHQgPT0gJ2Rvd24nKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAkYXJyb3ctb2Zmc2V0O1xuICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGFycm93LWRlZmF1bHQgPT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZTNkKDUwJSwgLTUwJSwgMCk7XG4gICAgICAgICAgICAgICAgcmlnaHQ6ICRhcnJvdy1vZmZzZXQ7XG4gICAgICAgICAgICB9IEBlbHNlIGlmICgkYXJyb3ctZGVmYXVsdCA9PSAndXAnKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICAgICAgICAgICAgICByaWdodDogJGFycm93LW9mZnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgQGlmICgkYXJyb3ctZGVmYXVsdCA9PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgcmlnaHQ6ICRwb3NpdGlvbi1zaWRlLW9mZnNldDtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTM1ZGVnKSB0cmFuc2xhdGUzZCg1MCUsIDAsIDApO1xuICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGFycm93LWRlZmF1bHQgPT0gJ2Rvd24nKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICAgICAgICAgICAgICByaWdodDogJHBvc2l0aW9uLXNpZGUtb2Zmc2V0O1xuICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGFycm93LWRlZmF1bHQgPT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICAgICAgcmlnaHQ6ICRhcnJvdy1vZmZzZXQ7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSB0cmFuc2xhdGUzZCg1MCUsIDUwJSwgMCk7XG4gICAgICAgICAgICB9IEBlbHNlIGlmICgkYXJyb3ctZGVmYXVsdCA9PSAndXAnKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAkcG9zaXRpb24tc2lkZS1vZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAjeyRhY3RpdmUtc2VsZWN0b3J9IHtcbiAgICAgICAgICAgIEBpZiAoJGFycm93LWRlZmF1bHQgPT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmICgkYXJyb3ctYWN0aXZlID09ICdkb3duJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMjI1ZGVnKSB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAkYXJyb3ctb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmICgkYXJyb3ctYWN0aXZlID09ICdsZWZ0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZTNkKDUwJSwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogJGFycm93LW9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGFycm93LWFjdGl2ZSA9PSAndXAnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogJHBvc2l0aW9uLXNpZGUtb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoJGFycm93LWFjdGl2ZSA9PSAnZG93bicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZykgdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogJHBvc2l0aW9uLXNpZGUtb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmICgkYXJyb3ctYWN0aXZlID09ICdsZWZ0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSB0cmFuc2xhdGUzZCg1MCUsIDAsIDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6ICRhcnJvdy1vZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKCRhcnJvdy1hY3RpdmUgPT0gJ3VwJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTIyNWRlZykgdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogJGFycm93LW9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmICgkYXJyb3ctZGVmYXVsdCA9PSAnZG93bicpIHtcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoJGFycm93LWFjdGl2ZSA9PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpIHRyYW5zbGF0ZTNkKC01MCUsIDAsIDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6ICRwb3NpdGlvbi1zaWRlLW9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGFycm93LWFjdGl2ZSA9PSAnbGVmdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDEzNWRlZykgdHJhbnNsYXRlM2QoLTUwJSwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogJGFycm93LW9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGFycm93LWFjdGl2ZSA9PSAndXAnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoJGFycm93LWFjdGl2ZSA9PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTM1ZGVnKSB0cmFuc2xhdGUzZCg1MCUsIDAsIDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6ICRwb3NpdGlvbi1zaWRlLW9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGFycm93LWFjdGl2ZSA9PSAnbGVmdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGUzZCg1MCUsIDAsIDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6ICRhcnJvdy1vZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKCRhcnJvdy1hY3RpdmUgPT0gJ3VwJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKCRhcnJvdy1kZWZhdWx0ID09ICdsZWZ0Jykge1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmICgkYXJyb3ctYWN0aXZlID09ICdyaWdodCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDEzNWRlZykgdHJhbnNsYXRlM2QoNTAlLCAwLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAkcG9zaXRpb24tc2lkZS1vZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKCRhcnJvdy1hY3RpdmUgPT0gJ2Rvd24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpIHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6ICRwb3NpdGlvbi1zaWRlLW9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGFycm93LWFjdGl2ZSA9PSAndXAnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMzVkZWcpIHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6ICRhcnJvdy1vZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmICgkYXJyb3ctYWN0aXZlID09ICdyaWdodCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0xMzVkZWcpIHRyYW5zbGF0ZTNkKDUwJSwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogJHBvc2l0aW9uLXNpZGUtb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmICgkYXJyb3ctYWN0aXZlID09ICdkb3duJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTEzNWRlZykgdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogJGFycm93LW9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGFycm93LWFjdGl2ZSA9PSAndXAnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogJHBvc2l0aW9uLXNpZGUtb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKCRhcnJvdy1kZWZhdWx0ID09ICd1cCcpIHtcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoJGFycm93LWFjdGl2ZSA9PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlM2QoLTUwJSwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogJHBvc2l0aW9uLXNpZGUtb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmICgkYXJyb3ctYWN0aXZlID09ICdkb3duJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmICgkYXJyb3ctYWN0aXZlID09ICdsZWZ0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTEzNWRlZykgdHJhbnNsYXRlM2QoLTUwJSwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogJGFycm93LW9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKCRhcnJvdy1hY3RpdmUgPT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKSB0cmFuc2xhdGUzZCg1MCUsIDAsIDApO1xuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmICgkYXJyb3ctYWN0aXZlID09ICdkb3duJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoJGFycm93LWFjdGl2ZSA9PSAnbGVmdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZykgdHJhbnNsYXRlM2QoNTAlLCAwLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAkYXJyb3ctb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICAgICY6YmVmb3JlLFxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIHJpZ2h0OiAkcG9zaXRpb24tc2lkZS1vZmZzZXQ7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC01MCUsIDApICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTUwJSwgMCkgcm90YXRlKDkwZGVnKSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgI3skYWN0aXZlLXNlbGVjdG9yfSB7XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtNTAlLCAwKSByb3RhdGUoLTkwZGVnKSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTUwJSwgMCkgcm90YXRlKDApICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIEBpbmNsdWRlIHBzZXVkb2ljb25fYmVmb3JlLWhvb2soJHR5cGUpO1xuICAgIH1cblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBwc2V1ZG9pY29uX2FmdGVyLWhvb2soJHR5cGUpO1xuICAgIH1cbn1cbiIsIi8qIHN0eWxlbGludC1kaXNhYmxlIGJsb2NrLW5vLWVtcHR5ICovXG5AbWl4aW4gZmllbGQtaG9vaygpIHtcbn1cblxuQG1peGluIGZpZWxkLWVycm9yLWhvb2soKSB7XG59XG5cbkBtaXhpbiBmaWVsZC1sYWJlbC1ob29rKCkge1xufVxuXG5AbWl4aW4gZmllbGQtbGFiZWwtcmVxdWlyZWQtaG9vaygpIHtcbn1cblxuQG1peGluIGZpZWxkLWNvbnRyb2wtaG9vaygpIHtcbn1cblxuQG1peGluIGZpZWxkLWlucHV0LWhvb2soKSB7XG59XG5cbkBtaXhpbiBmaWVsZC1pbnB1dC1lcnJvci1ob29rKCkge1xufVxuXG5AbWl4aW4gZmllbGQtaWNvbi1ob29rKCR0eXBlOiAnJykge1xufVxuXG5AbWl4aW4gZmllbGQtbm90ZS1ob29rKCkge1xufVxuXG5AbWl4aW4gZmllbGQtZXJyb3ItaG9vaygpIHtcbn1cblxuQG1peGluIGZpZWxkLXdhcm5pbmctaG9vaygpIHtcbn1cblxuQG1peGluIGZpZWxkLXNlbGVjdC1ob29rKCkge1xufVxuXG5AbWl4aW4gZmllbGQtcmFkaW8taG9vaygpIHtcbn1cblxuQG1peGluIGZpZWxkLXJhZGlvLWxhYmVsLWhvb2soKSB7XG59XG5cbkBtaXhpbiBmaWVsZC1jaGVja2JveC1ob29rKCkge1xufVxuXG5AbWl4aW4gZmllbGQtY2hlY2tib3gtbGFiZWwtaG9vaygpIHtcbn1cblxuQG1peGluIGZpZWxkLWRvYi1ob29rKCkge1xufVxuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd1dGlscy91cmktZnJpZW5kbHktaGV4JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uL21peGluJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZmllbGQvaG9vayc7XG5cbiRmaWVsZF9mb250LXNpemU6IDEuNHJlbSAhZGVmYXVsdDtcbiRmaWVsZF90cmFuc2l0aW9uLXRpbWU6IDAuNXMgIWRlZmF1bHQ7XG5cbiRmaWVsZF9sYWJlbC1mb250LXdlaWdodDogNzAwICFkZWZhdWx0O1xuJGZpZWxkX2xhYmVsLWZvbnQtc2l6ZTogMC44NWVtICFkZWZhdWx0O1xuJGZpZWxkX2xhYmVsLWNvbG9yOiBpbmhlcml0ICFkZWZhdWx0O1xuJGZpZWxkX2xhYmVsLXRleHQtdHJhbnNmb3JtOiBub25lICFkZWZhdWx0O1xuXG4kZmllbGRfaW5wdXQtZm9udC1zaXplOiAxZW0gIWRlZmF1bHQ7XG4kZmllbGRfaW5wdXQtbGluZS1oZWlnaHQ6ICRidXR0b25fbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG4kZmllbGRfaW5wdXQtcGFkZGluZzogJGJ1dHRvbl9wYWRkaW5nICFkZWZhdWx0O1xuJGZpZWxkX2lucHV0LWNvbG9yOiAkY29sb3JfdGV4dC04MDAgIWRlZmF1bHQ7XG4kZmllbGRfaW5wdXQtYmFja2dyb3VuZDogJGNvbG9yX2JhY2tncm91bmQtMjAwICFkZWZhdWx0O1xuJGZpZWxkX2lucHV0LWJvcmRlcjogMXB4IHNvbGlkICRjb2xvcl9ib3JkZXItNTAwICFkZWZhdWx0O1xuJGZpZWxkX2lucHV0LWJvcmRlci1hY3RpdmU6IDFweCBzb2xpZCAkY29sb3ItcHJpbWFyeS01MDAgIWRlZmF1bHQ7XG4kZmllbGRfaW5wdXQtYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXNfYmFzZSAhZGVmYXVsdDtcbiRmaWVsZF9pbnB1dC1ib3gtc2hhZG93OiBub25lICFkZWZhdWx0O1xuJGZpZWxkX2lucHV0LWJveC1zaGFkb3ctYWN0aXZlOiBub25lICFkZWZhdWx0O1xuJGZpZWxkX2lucHV0LWRpc2FibGVkLW9wYWNpdHk6IDAuNjUgIWRlZmF1bHQ7XG4kZmllbGRfaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6ICRjb2xvcl90ZXh0LTQwMCAhZGVmYXVsdDtcblxuJGZpZWxkX2Vycm9yLWZvbnQtc2l6ZTogJGZpZWxkX2xhYmVsLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRmaWVsZF9lcnJvci1pbnB1dC1ib3JkZXI6IDFweCBzb2xpZCAkY29sb3JfZXJyb3ItNTAwICFkZWZhdWx0O1xuXG4kZmllbGRfbm90ZS1mb250LXNpemU6ICRmaWVsZF9sYWJlbC1mb250LXNpemUgIWRlZmF1bHQ7XG4kZmllbGRfbm90ZS1jb2xvcjogJGNvbG9yX3RleHQtNTAwICFkZWZhdWx0O1xuXG4kZmllbGRfZXJyb3ItY29sb3I6ICRjb2xvcl9lcnJvci01MDAgIWRlZmF1bHQ7XG5cbiRmaWVsZF93YXJuaW5nLWNvbG9yOiAkY29sb3Jfd2FybmluZy01MDAgIWRlZmF1bHQ7XG4vLyBCYXNlZCBvbiBodHRwczovL3d3dy5maWxhbWVudGdyb3VwLmNvbS9sYWIvc2VsZWN0LWNzcy5odG1sXG4kZmllbGRfc2VsZWN0LWZvbnQtc2l6ZTogJGZpZWxkX2lucHV0LWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRmaWVsZF9zZWxlY3QtbGluZS1oZWlnaHQ6ICRmaWVsZF9pbnB1dC1saW5lLWhlaWdodCAhZGVmYXVsdDtcbiRmaWVsZF9zZWxlY3QtcGFkZGluZzogJGZpZWxkX2lucHV0LXBhZGRpbmcgIWRlZmF1bHQ7XG4kZmllbGRfc2VsZWN0LXBhZGRpbmctcmlnaHQ6IDIuM2VtICFkZWZhdWx0O1xuJGZpZWxkX3NlbGVjdC1jb2xvcjogJGNvbG9yX3RleHQtODAwICFkZWZhdWx0O1xuXG4kZmllbGRfc2VsZWN0LWJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDAuOGVtIHRvcCA1MiUsIDAgMCAhZGVmYXVsdDtcbiRmaWVsZF9zZWxlY3QtYmFja2dyb3VuZC1zaXplOiAwLjdlbSBhdXRvLCAxMDAlICFkZWZhdWx0O1xuXG4vLyBOb3RlIHRoYXQgc2VsZWN0IGJhY2tncm91bmQgbmVlZHMgdG8gYmUgZGVmaW5lZCBhcyBiYWNrZ3JvdW5kLWltYWdlIHRvIHByZXZlbnRcbi8vIG9wdGlvbiBlbGVtZW50cyBmcm9tIGluaGVyaXRpbmcgaXQgb24gc29tZSBicm93c2Vycy5cbiRmaWVsZF9zZWxlY3QtaWNvbi1maWxsOiAkY29sb3JfYm9yZGVyLTUwMCAhZGVmYXVsdDtcbiRmaWVsZF9zZWxlY3QtaWNvbi1maWxsLWFjdGl2ZTogJGNvbG9yX3ByaW1hcnktNTAwICFkZWZhdWx0O1xuJGZpZWxkX3NlbGVjdC1iYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTYgOScgZmlsbD0nI3t1cmktZnJpZW5kbHktaGV4KCRmaWVsZF9zZWxlY3QtaWNvbi1maWxsKX0nJTNlJTNjcGF0aCBkPSdNMCAxLjJDMCAuNS42IDAgMS4yIDBjLjMgMCAuNi4xLjguM2w2IDUuOSA2LTUuOWMuNS0uNCAxLjItLjMgMS43LjEuNC40LjQgMS4xIDAgMS41TDguOSA4LjdjLS41LjQtMS4yLjQtMS43IDBMLjQgMmEuOS45IDAgMCAxLS40LS44eicvJTNlJTNjL3N2ZyUzZVwiKSxcbiAgICBsaW5lYXItZ3JhZGllbnQoMGRlZywgdHJhbnNwYXJlbnQgMCUsIHRyYW5zcGFyZW50IDEwMCUpICFkZWZhdWx0O1xuJGZpZWxkX3NlbGVjdC1iYWNrZ3JvdW5kLWFjdGl2ZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDE2IDknIGZpbGw9JyN7dXJpLWZyaWVuZGx5LWhleCgkZmllbGRfc2VsZWN0LWljb24tZmlsbC1hY3RpdmUpfSclM2UlM2NwYXRoIGQ9J00wIDEuMkMwIC41LjYgMCAxLjIgMGMuMyAwIC42LjEuOC4zbDYgNS45IDYtNS45Yy41LS40IDEuMi0uMyAxLjcuMS40LjQuNCAxLjEgMCAxLjVMOC45IDguN2MtLjUuNC0xLjIuNC0xLjcgMEwuNCAyYS45LjkgMCAwIDEtLjQtLjh6Jy8lM2UlM2Mvc3ZnJTNlXCIpLFxuICAgIGxpbmVhci1ncmFkaWVudCgwZGVnLCB0cmFuc3BhcmVudCAwJSwgdHJhbnNwYXJlbnQgMTAwJSkgIWRlZmF1bHQ7XG5cbiRmaWVsZF9zZWxlY3QtYm9yZGVyOiAxcHggc29saWQgJGNvbG9yX2JvcmRlci01MDAgIWRlZmF1bHQ7XG4kZmllbGRfc2VsZWN0LWJvcmRlci1hY3RpdmU6IDFweCBzb2xpZCAkY29sb3JfcHJpbWFyeS01MDAgIWRlZmF1bHQ7XG4kZmllbGRfc2VsZWN0LWJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzX2Jhc2UgIWRlZmF1bHQ7XG4kZmllbGRfc2VsZWN0LWJveC1zaGFkb3c6IG5vbmUgIWRlZmF1bHQ7XG4kZmllbGRfc2VsZWN0LWJveC1zaGFkb3ctYWN0aXZlOiBub25lICFkZWZhdWx0O1xuJGZpZWxkX3NlbGVjdC1iYWNrZ3JvdW5kLWNvbG9yOiAkZmllbGRfaW5wdXQtYmFja2dyb3VuZCAhZGVmYXVsdDtcbiRmaWVsZF9zZWxlY3QtZGlzYWJsZWQtb3BhY2l0eTogJGZpZWxkX2lucHV0LWRpc2FibGVkLW9wYWNpdHkgIWRlZmF1bHQ7XG5cbi8qIFJhZGlvIGFuZCBjaGVja2JveCBzdHlsaW5nICovXG4kZmllbGRfcmFkaW8tZm9udC1zaXplOiAxZW0gIWRlZmF1bHQ7XG4kZmllbGRfcmFkaW8tc2l6ZTogMWVtICFkZWZhdWx0O1xuLy8gTGV0cyB5b3UgYWRqdXN0IGJvdGggcmFkaW8gYW5kIGNoZWNrYm94IGFsaWdubWVudCBiYXNlZCBvbiBmb250IHlvdSd2ZSBjaG9zZW4uXG4kZmllbGRfcmFkaW8tb2Zmc2V0OiAtMC4wNjI1ZW0gIWRlZmF1bHQ7XG4vLyBBbGlnbmluZyBhbnl0aGluZyB0aGF0IGNvbWVzIGFmdGVyIHdpdGggaW5wdXQgcGFkZGluZ3MsIHRoaXMgMXB4IHN0YW5kcyBmb3IgaW5wdXQncyBib3JkZXIgd2lkdGguXG4kZmllbGRfcmFkaW8tbWFyZ2luOiAkZmllbGRfcmFkaW8tb2Zmc2V0XG4gICAgY2FsYygjezEuNWVtIC0gJGZpZWxkLXJhZGlvLXNpemV9ICsgMXB4KSAwIDAgIWRlZmF1bHQ7XG5cbiRmaWVsZF9yYWRpby1iYWNrZ3JvdW5kLXNpemU6IDFlbSAxZW0gIWRlZmF1bHQ7XG4kZmllbGRfcmFkaW8tYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG4kZmllbGRfcmFkaW8tYmFja2dyb3VuZC1jb2xvci1hY3RpdmU6IHRyYW5zcGFyZW50ICFkZWZhdWx0O1xuJGZpZWxkX3JhZGlvLWJhY2tncm91bmQtY29sb3ItY2hlY2tlZDogdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG4kZmllbGRfcmFkaW8taWNvbi1maWxsOiAkY29sb3JfcHJpbWFyeS01MDAgIWRlZmF1bHQ7XG4kZmllbGRfcmFkaW8tYmFja2dyb3VuZC1pbWFnZS1jaGVja2VkOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM2Nzdmcgd2lkdGg9JzE0JyBoZWlnaHQ9JzE0JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNlJTNjY2lyY2xlIGZpbGw9JyN7dXJpLWZyaWVuZGx5LWhleCgkZmllbGRfcmFkaW8taWNvbi1maWxsKX0nIHI9JzQnIGN5PSc3JyBjeD0nNycvJTNlJTNjL3N2ZyUzZVwiKSAhZGVmYXVsdDtcblxuJGZpZWxkX3JhZGlvLWJvcmRlcjogMXB4IHNvbGlkICRjb2xvcl9ib3JkZXItNTAwICFkZWZhdWx0O1xuJGZpZWxkX3JhZGlvLWJvcmRlci1hY3RpdmU6IDFweCBzb2xpZCAkY29sb3ItcHJpbWFyeS04MDAgIWRlZmF1bHQ7XG4kZmllbGRfcmFkaW8tYm9yZGVyLWNoZWNrZWQ6IDFweCBzb2xpZCAkY29sb3JfcHJpbWFyeS01MDAgIWRlZmF1bHQ7XG4kZmllbGRfcmFkaW8tYm94LXNoYWRvdzogbm9uZSAhZGVmYXVsdDtcbiRmaWVsZF9yYWRpby1ib3gtc2hhZG93LWFjdGl2ZTogbm9uZSAhZGVmYXVsdDtcbiRmaWVsZF9yYWRpby1ib3gtc2hhZG93LWNoZWNrZWQ6IG5vbmUgIWRlZmF1bHQ7XG4kZmllbGRfcmFkaW8tZGlzYWJsZWQtb3BhY2l0eTogJGZpZWxkX2lucHV0LWRpc2FibGVkLW9wYWNpdHkgIWRlZmF1bHQ7XG5cbiRmaWVsZF9jaGVja2JveC1ib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1c19iYXNlICFkZWZhdWx0O1xuJGZpZWxkX2NoZWNrYm94LWJhY2tncm91bmQtc2l6ZTogMWVtIDFlbSAhZGVmYXVsdDtcbiRmaWVsZF9jaGVja2JveC1pY29uLWZpbGw6ICRjb2xvcl9wcmltYXJ5LTUwMCAhZGVmYXVsdDtcbiRmaWVsZF9jaGVja2JveC1iYWNrZ3JvdW5kLWltYWdlLWNoZWNrZWQ6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzY3N2ZyB3aWR0aD0nMTQnIGhlaWdodD0nMTQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM2UlM2NwYXRoIGZpbGw9JyN7dXJpLWZyaWVuZGx5LWhleCgkZmllbGRfY2hlY2tib3gtaWNvbi1maWxsKX0nIGQ9J001LjMxMyAxMC4xMDhINS4yNGExLjA2NCAxLjAwNSAwIDAgMS0uNzUtLjQxbC0xLjk0Ny0yLjU1YTEuMDY0IDEuMDA1IDAgMCAxIDEuNzIzLTEuMTc1TDUuNDYzIDcuNTYgOS4wNiA0LjE5YTEuMDY0IDEuMDA1IDAgMCAxIC43NS0uMjk3aC44NDZhMS4wNjQgMS4wMDUgMCAwIDEgMCAyLjAwNGgtLjQ1TDYuMDY0IDkuODFhMS4wNjQgMS4wMDUgMCAwIDEtLjc1LjI5OHonLyUzZSUzYy9zdmclM2VcIikgIWRlZmF1bHQ7XG5cbiRmaWVsZF9pY29uLXdpZHRoOiAxLjNlbSAhZGVmYXVsdDtcbiRmaWVsZF9pY29uLWhlaWdodDogMS4zZW0gIWRlZmF1bHQ7XG4kZmllbGRfaWNvbi1zdWNjZXNzLWJhY2tncm91bmQ6IHVybCgnLi4vaW1hZ2VzL2NoZWNrLWdyZWVuLnN2ZycpIG5vLXJlcGVhdFxuICAgIGNlbnRlciBjZW50ZXIgLyBjb250YWluICFkZWZhdWx0O1xuXG4kZmllbGRfZG9iLWJ1dHRvbi10eXBlOiAnc2Vjb25kYXJ5JyAhZGVmYXVsdDtcbiRmaWVsZF9kb2ItYnV0dG9uLWljb24tcG9zOiAkYnV0dG9uX2RlZmF1bHQtaWNvbi1wb3MgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmaWVsZCgpIHtcbiAgICBmb250LXNpemU6ICRmaWVsZF9mb250LXNpemU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJvcmRlcjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIEBpbmNsdWRlIGZpZWxkLWhvb2soKTtcbn1cblxuQG1peGluIGZpZWxkLWVycm9yKCkge1xuICAgIGZvbnQtc2l6ZTogJGZpZWxkX2Vycm9yLWZvbnQtc2l6ZTtcbiAgICBjb2xvcjogJGNvbG9yX2Vycm9yLTUwMDtcbiAgICBtYXJnaW4tdG9wOiAwLjJlbTtcblxuICAgIEBpbmNsdWRlIGZpZWxkLWVycm9yLWhvb2soKTtcbn1cblxuQG1peGluIGZpZWxkLWxhYmVsKCkge1xuICAgIGZvbnQtd2VpZ2h0OiAkZmllbGRfbGFiZWwtZm9udC13ZWlnaHQ7XG4gICAgZm9udC1zaXplOiAkZmllbGRfbGFiZWwtZm9udC1zaXplO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRleHQtdHJhbnNmb3JtOiAkZmllbGRfbGFiZWwtdGV4dC10cmFuc2Zvcm07XG4gICAgY29sb3I6ICRmaWVsZF9sYWJlbC1jb2xvcjtcblxuICAgIEBpbmNsdWRlIGZpZWxkLWxhYmVsLWhvb2soKTtcbn1cblxuQG1peGluIGZpZWxkLWxhYmVsLXJlcXVpcmVkKCkge1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnIConO1xuICAgICAgICBjb2xvcjogJGNvbG9yX2Vycm9yLTUwMDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmaWVsZC1sYWJlbC1yZXF1aXJlZC1ob29rKCk7XG59XG5cbkBtaXhpbiBmaWVsZC1jb250cm9sKCkge1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgQGluY2x1ZGUgZmllbGQtY29udHJvbC1ob29rKCk7XG59XG5cbkBtaXhpbiBmaWVsZC1pbnB1dCgpIHtcbiAgICBmb250LXNpemU6ICRmaWVsZF9pbnB1dC1mb250LXNpemU7XG4gICAgbGluZS1oZWlnaHQ6ICRmaWVsZF9pbnB1dC1saW5lLWhlaWdodDtcbiAgICBwYWRkaW5nOiAkZmllbGRfaW5wdXQtcGFkZGluZztcbiAgICBjb2xvcjogJGZpZWxkX2lucHV0LWNvbG9yO1xuICAgIGJhY2tncm91bmQ6ICRmaWVsZF9pbnB1dC1iYWNrZ3JvdW5kO1xuICAgIGJvcmRlci1yYWRpdXM6ICRmaWVsZF9pbnB1dC1ib3JkZXItcmFkaXVzO1xuICAgIGJvcmRlcjogJGZpZWxkX2lucHV0LWJvcmRlcjtcbiAgICBib3gtc2hhZG93OiAkZmllbGRfaW5wdXQtYm94LXNoYWRvdztcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgJGZpZWxkX3RyYW5zaXRpb24tdGltZTtcbiAgICAvL21hcmdpbjogMCAwIDAuMmVtOyAvLyBBZGQgc3BhY2luZyB1bmRlciBsYWJlbC4gVGhpcyBjYW4ndCBiZSBhZGRlZCB0byBsYWJlbCBpdHNlbGYgYmVjYXVzZSB0aGV5IGFyZSBzb21ldGltZXMgcmVuZGVyZWQgZW1wdHkuXG4gICAgbWFyZ2luOiAwcHg7IC8vIG1hcmdpbiByZW1vdmVkIDEyLjEyLjIwMjJcbiAgICB3aWR0aDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OyAvLyBSZW1vdmVzIGRyb3Agc2hhZG93IGZyb20gaW5wdXRzIG9uIGlPUy5cbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICAgICY6bm90KFtkaXNhYmxlZF0pIHtcbiAgICAgICAgICAgIGJvcmRlcjogJGZpZWxkX2lucHV0LWJvcmRlci1hY3RpdmU7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAkZmllbGRfaW5wdXQtYm94LXNoYWRvdy1hY3RpdmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIGNvbG9yOiAkZmllbGRfaW5wdXQtcGxhY2Vob2xkZXItY29sb3I7XG4gICAgfVxuXG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgICBvcGFjaXR5OiAkZmllbGRfaW5wdXQtZGlzYWJsZWQtb3BhY2l0eTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmaWVsZC1pbnB1dC1ob29rKCk7XG59XG5cbkBtaXhpbiBmaWVsZC1pbnB1dC1lcnJvcigpIHtcbiAgICAmLFxuICAgICY6aG92ZXI6bm90KDpmb2N1cykge1xuICAgICAgICBib3JkZXI6ICRmaWVsZF9lcnJvci1pbnB1dC1ib3JkZXI7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZmllbGQtaW5wdXQtZXJyb3ItaG9vaygpO1xufVxuXG5AbWl4aW4gZmllbGQtaWNvbigkdHlwZTogJycpIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6ICRmaWVsZF9pY29uLXdpZHRoO1xuICAgIGhlaWdodDogJGZpZWxkX2ljb24taGVpZ2h0O1xuICAgIHJpZ2h0OiAwLjhlbTtcbiAgICB0b3A6IDAuOGVtO1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICBAaWYgKCR0eXBlID09ICdzdWNjZXNzJykge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkZmllbGRfaWNvbi1zdWNjZXNzLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZmllbGQtaWNvbi1ob29rKCR0eXBlKTtcbn1cblxuQG1peGluIGZpZWxkLW5vdGUoKSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiAkZmllbGRfbm90ZS1mb250LXNpemU7XG4gICAgcGFkZGluZzogMC4zZW0gMCAwO1xuICAgIGNvbG9yOiAkZmllbGRfbm90ZS1jb2xvcjtcblxuICAgIEBpbmNsdWRlIGZpZWxkLW5vdGUtaG9vaygpO1xufVxuXG5AbWl4aW4gZmllbGQtZXJyb3IoKSB7XG4gICAgQGluY2x1ZGUgZmllbGQtbm90ZSgpO1xuXG4gICAgY29sb3I6ICRmaWVsZF9lcnJvci1jb2xvcjtcblxuICAgIEBpbmNsdWRlIGZpZWxkLWVycm9yLWhvb2soKTtcbn1cblxuQG1peGluIGZpZWxkLXdhcm5pbmcoKSB7XG4gICAgQGluY2x1ZGUgZmllbGQtbm90ZSgpO1xuXG4gICAgY29sb3I6ICRmaWVsZF93YXJuaW5nLWNvbG9yO1xuXG4gICAgQGluY2x1ZGUgZmllbGQtd2FybmluZy1ob29rKCk7XG59XG5cbkBtaXhpbiBmaWVsZC1zZWxlY3QoKSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiAkZmllbGRfc2VsZWN0LWZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogJGZpZWxkX3NlbGVjdC1saW5lLWhlaWdodDtcbiAgICBwYWRkaW5nOiAkZmllbGRfc2VsZWN0LXBhZGRpbmc7XG4gICAgcGFkZGluZy1yaWdodDogJGZpZWxkX3NlbGVjdC1wYWRkaW5nLXJpZ2h0O1xuICAgIGNvbG9yOiAkZmllbGRfc2VsZWN0LWNvbG9yO1xuICAgIGJvcmRlci1yYWRpdXM6ICRmaWVsZF9zZWxlY3QtYm9yZGVyLXJhZGl1cztcbiAgICBib3JkZXI6ICRmaWVsZF9zZWxlY3QtYm9yZGVyO1xuICAgIGJveC1zaGFkb3c6ICRmaWVsZF9zZWxlY3QtYm94LXNoYWRvdztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luOiAwIDAgMC4yZW07IC8vIEFkZCBzcGFjaW5nIHVuZGVyIGxhYmVsLiBUaGlzIGNhbid0IGJlIGFkZGVkIHRvIGxhYmVsIGl0c2VsZiBiZWNhdXNlIHRoZXkgYXJlIHNvbWV0aW1lcyByZW5kZXJlZCBlbXB0eS5cbiAgICBvdXRsaW5lOiAwO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGZpZWxkX3NlbGVjdC1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRmaWVsZF9zZWxlY3QtYmFja2dyb3VuZC1pbWFnZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0LCByZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogJGZpZWxkX3NlbGVjdC1iYWNrZ3JvdW5kLXBvc2l0aW9uO1xuICAgIGJhY2tncm91bmQtc2l6ZTogJGZpZWxkX3NlbGVjdC1iYWNrZ3JvdW5kLXNpemU7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yICRmaWVsZF90cmFuc2l0aW9uLXRpbWU7XG5cbiAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZSBuby1kZXNjZW5kaW5nLXNwZWNpZmljaXR5XG4gICAgJjotbW96LWZvY3VzcmluZyxcbiAgICAmOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICAgICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgIHRleHQtc2hhZG93OiAwIDAgMCAjMDAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgJjpub3QoW2Rpc2FibGVkXSkge1xuICAgICAgICAgICAgYm9yZGVyOiAkZmllbGRfc2VsZWN0LWJvcmRlci1hY3RpdmU7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAkZmllbGRfc2VsZWN0LWJveC1zaGFkb3ctYWN0aXZlO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogJGZpZWxkX3NlbGVjdC1iYWNrZ3JvdW5kLWFjdGl2ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICAgb3BhY2l0eTogJGZpZWxkX3NlbGVjdC1kaXNhYmxlZC1vcGFjaXR5O1xuICAgIH1cblxuICAgIG9wdGlvbiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGNvbG9yOiBpbml0aWFsO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGZpZWxkLXNlbGVjdC1ob29rKCk7XG59XG5cbkBtaXhpbiBmaWVsZC1yYWRpby1sYWJlbCgpIHtcbiAgICBAaW5jbHVkZSBmaWVsZC1yYWRpby1sYWJlbC1ob29rKCk7XG59XG5cbkBtaXhpbiBmaWVsZC1yYWRpbygpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgaGVpZ2h0OiAkZmllbGRfcmFkaW8tc2l6ZTtcbiAgICB3aWR0aDogJGZpZWxkX3JhZGlvLXNpemU7XG4gICAgbWFyZ2luOiAkZmllbGRfcmFkaW8tbWFyZ2luO1xuICAgIGZvbnQtc2l6ZTogJGZpZWxkX3JhZGlvLWZvbnQtc2l6ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBmbGV4OiAwIDAgYXV0bzsgLy8gUHJldmVudCBmbGV4IHBhcmVudCBmcm9tIGJyZWFraW5nIGRpbWVuc2lvbnMuXG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgYm9yZGVyOiAkZmllbGRfcmFkaW8tYm9yZGVyO1xuICAgIGJveC1zaGFkb3c6ICRmaWVsZF9yYWRpby1ib3gtc2hhZG93O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRmaWVsZF9yYWRpby1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDUwJTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRmaWVsZF9yYWRpby1iYWNrZ3JvdW5kLXNpemU7XG4gICAgb3V0bGluZTogMDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAkZmllbGRfdHJhbnNpdGlvbi10aW1lLFxuICAgICAgICBib3JkZXItY29sb3IgJGZpZWxkX3RyYW5zaXRpb24tdGltZTtcblxuICAgICY6Oi1tb3otZm9jdXMtaW5uZXIsXG4gICAgJjotbW96LWZvY3VzcmluZyB7XG4gICAgICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgICB0ZXh0LXNoYWRvdzogMCAwIDAgIzAwMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICAgICY6bm90KFtkaXNhYmxlZF0pIHtcbiAgICAgICAgICAgIGJvcmRlcjogJGZpZWxkX3JhZGlvLWJvcmRlci1hY3RpdmU7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAkZmllbGRfcmFkaW8tYm94LXNoYWRvdy1hY3RpdmU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZmllbGRfcmFkaW8tYmFja2dyb3VuZC1jb2xvci1hY3RpdmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmNoZWNrZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiAkZmllbGRfcmFkaW8tYmFja2dyb3VuZC1pbWFnZS1jaGVja2VkO1xuXG4gICAgICAgICYsXG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyOiAkZmllbGRfcmFkaW8tYm9yZGVyLWNoZWNrZWQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZmllbGRfcmFkaW8tYmFja2dyb3VuZC1jb2xvci1jaGVja2VkO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogJGZpZWxkX3JhZGlvLWJveC1zaGFkb3ctY2hlY2tlZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZbZGlzYWJsZWRdLFxuICAgICZbZGlzYWJsZWRdICsgLmxhYmVsLFxuICAgICZbZGlzYWJsZWRdICsgLmNzLWlucHV0X19sYWJlbCB7XG4gICAgICAgIG9wYWNpdHk6ICRmaWVsZF9yYWRpby1kaXNhYmxlZC1vcGFjaXR5O1xuICAgIH1cbiAgICAvLyBzdHlsZWxpbnQtZW5hYmxlIG5vLWRlc2NlbmRpbmctc3BlY2lmaWNpdHlcblxuICAgIEBpbmNsdWRlIGZpZWxkLXJhZGlvLWhvb2soKTtcbn1cblxuQG1peGluIGZpZWxkLWNoZWNrYm94LWxhYmVsKCkge1xuICAgIEBpbmNsdWRlIGZpZWxkLWNoZWNrYm94LWxhYmVsLWhvb2soKTtcbn1cblxuQG1peGluIGZpZWxkLWNoZWNrYm94KCkge1xuICAgIEBpbmNsdWRlIGZpZWxkLXJhZGlvKCk7XG5cbiAgICBib3JkZXItcmFkaXVzOiAkZmllbGRfY2hlY2tib3gtYm9yZGVyLXJhZGl1cztcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRmaWVsZF9jaGVja2JveC1iYWNrZ3JvdW5kLXNpemU7XG5cbiAgICAmOmNoZWNrZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiAkZmllbGRfY2hlY2tib3gtYmFja2dyb3VuZC1pbWFnZS1jaGVja2VkO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGZpZWxkLWNoZWNrYm94LWhvb2soKTtcbn1cblxuQG1peGluIGZpZWxkLWRvYigpIHtcbiAgICBpbnB1dCB7XG4gICAgICAgIEBpbmNsdWRlIGZpZWxkLWlucHV0KCk7XG5cbiAgICAgICAgJi5tYWdlLWVycm9yIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZpZWxkLWlucHV0LWVycm9yKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBidXR0b24ge1xuICAgICAgICBAaW5jbHVkZSBidXR0b24oXG4gICAgICAgICAgICAkdHlwZTogJGZpZWxkX2RvYi1idXR0b24tdHlwZSxcbiAgICAgICAgICAgICRpY29uX3BvczogJGZpZWxkX2RvYi1idXR0b24taWNvbi1wb3NcbiAgICAgICAgKTtcblxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbl9zcGFuKFxuICAgICAgICAgICAgICAgICR0eXBlOiAkZmllbGRfZG9iLWJ1dHRvbi10eXBlLFxuICAgICAgICAgICAgICAgICRpY29uX3BvczogJGZpZWxkX2RvYi1idXR0b24taWNvbi1wb3NcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmaWVsZC1kb2ItaG9vaygpO1xufVxuIiwiQGltcG9ydCAnY29tcG9uZW50cy9maWVsZC9taXhpbic7XG5cbi8qIHN0eWxlbGludC1kaXNhYmxlIG5vLWRlc2NlbmRpbmctc3BlY2lmaWNpdHkgKi9cblxuLy8gT3VyIEJFTSBjb21wb25lbnQuXG4uY3MtZmllbGQsXG4vLyBMZWZ0IGZvciBub3cgZm9yIGNvbXBhdGliaWxpdHkgc2FrZS5cbi5jcy1pbnB1dCB7XG4gICAgQGluY2x1ZGUgZmllbGQoKTtcblxuICAgICZfX2NvbnRyb2wge1xuICAgICAgICBAaW5jbHVkZSBmaWVsZC1jb250cm9sKCk7XG4gICAgfVxuXG4gICAgJl9fbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBmaWVsZC1sYWJlbCgpO1xuXG4gICAgICAgIC5yZXF1aXJlZCAmIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZpZWxkLWxhYmVsLXJlcXVpcmVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19pbnB1dCxcbiAgICAmX190ZXh0YXJlYSB7XG4gICAgICAgIEBpbmNsdWRlIGZpZWxkLWlucHV0KCk7XG5cbiAgICAgICAgJi5tYWdlLWVycm9yIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZpZWxkLWlucHV0LWVycm9yKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19zZWxlY3Qge1xuICAgICAgICBAaW5jbHVkZSBmaWVsZC1zZWxlY3QoKTtcbiAgICB9XG5cbiAgICAmX19yYWRpbyB7XG4gICAgICAgIEBpbmNsdWRlIGZpZWxkLXJhZGlvKCk7XG5cbiAgICAgICAgLy8gVG8gcmV3cml0ZSB0byBwcm9wZXIgc2NzcyBzeW50YXggYWZ0ZXIgZ2V0dGluZyByaWQgb2YgLmNzLWlucHV0IGNsYXNzXG4gICAgICAgICYgKyAuY3MtaW5wdXRfX2xhYmVsLFxuICAgICAgICAmICsgLmNzLWZpZWxkX19sYWJlbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmaWVsZC1yYWRpby1sYWJlbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fY2hlY2tib3gge1xuICAgICAgICBAaW5jbHVkZSBmaWVsZC1jaGVja2JveCgpO1xuXG4gICAgICAgICYubWFnZS1lcnJvciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmaWVsZC1pbnB1dC1lcnJvcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVG8gcmV3cml0ZSB0byBwcm9wZXIgc2NzcyBzeW50YXggYWZ0ZXIgZ2V0dGluZyByaWQgb2YgLmNzLWlucHV0IGNsYXNzXG4gICAgICAgICYgKyAuY3MtaW5wdXRfX2xhYmVsLFxuICAgICAgICAmICsgLmNzLWZpZWxkX19sYWJlbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmaWVsZC1jaGVja2JveC1sYWJlbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9faWNvbiB7XG4gICAgICAgIEBpbmNsdWRlIGZpZWxkLWljb24oKTtcbiAgICB9XG5cbiAgICAmX19ub3RlIHtcbiAgICAgICAgQGluY2x1ZGUgZmllbGQtbm90ZSgpO1xuICAgIH1cblxuICAgICZfX2Vycm9yIHtcbiAgICAgICAgQGluY2x1ZGUgZmllbGQtZXJyb3IoKTtcbiAgICB9XG59XG4vLyBNYWdlbnRvIGNsYXNzZXMgdXNlZCBpbiBjaGVja291dCwgbG9naW4vcmVnaXN0ZXIgZm9ybXMgZXRjLlxuLmZpZWxkIHtcbiAgICBAaW5jbHVkZSBmaWVsZCgpO1xuXG4gICAgJi5fc3VjY2Vzczpub3QoLl93YXJuKSB7XG4gICAgICAgIC5jb250cm9sIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZmllbGQtaWNvbignc3VjY2VzcycpO1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbnRyb2wge1xuICAgICAgICBAaW5jbHVkZSBmaWVsZC1jb250cm9sKCk7XG5cbiAgICAgICAgPiB0ZXh0YXJlYSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmaWVsZC1pbnB1dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgZmllbGQtbGFiZWwoKTtcbiAgICB9XG5cbiAgICAmLmNob2ljZSBsYWJlbC5sYWJlbCB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgICYucmVxdWlyZWQsXG4gICAgJi5fcmVxdWlyZWQge1xuICAgICAgICA+IC5sYWJlbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmaWVsZC1sYWJlbC1yZXF1aXJlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5yZXF1aXJlZCB7XG4gICAgICAgIC5fcmVxdWlyZWQge1xuICAgICAgICAgICAgPiAubGFiZWwge1xuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICAvLyBIaWRlIGFzdGVyaXNrcyBmb3IgbGFiZWxzIGluc2lkZSBmaWVsZHNldHMgYXMgdGhleSBhcmUgdXN1YWxseSByZW5kZXJlZCBlbXB0eS5cbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaW5wdXQtdGV4dCB7XG4gICAgICAgIEBpbmNsdWRlIGZpZWxkLWlucHV0KCk7XG5cbiAgICAgICAgJi5tYWdlLWVycm9yIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZpZWxkLWlucHV0LWVycm9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICAmLnJlcXVpcmVkLWVudHJ5IHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VsZWN0IHtcbiAgICAgICAgQGluY2x1ZGUgZmllbGQtc2VsZWN0KCk7XG4gICAgfVxuXG4gICAgLmNoZWNrYm94IHtcbiAgICAgICAgQGluY2x1ZGUgZmllbGQtY2hlY2tib3goKTtcblxuICAgICAgICAmLm1hZ2UtZXJyb3Ige1xuICAgICAgICAgICAgQGluY2x1ZGUgZmllbGQtaW5wdXQtZXJyb3IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYgKyAubGFiZWwge1xuICAgICAgICAgICAgQGluY2x1ZGUgZmllbGQtY2hlY2tib3gtbGFiZWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5yYWRpbyB7XG4gICAgICAgIEBpbmNsdWRlIGZpZWxkLXJhZGlvKCk7XG5cbiAgICAgICAgJiArIC5sYWJlbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmaWVsZC1yYWRpby1sYWJlbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5jdXN0b21lci1uYW1lLXByZWZpeCB7XG4gICAgICAgIHNlbGVjdCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmaWVsZC1zZWxlY3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuZmllbGQtZG9iIHtcbiAgICAgICAgQGluY2x1ZGUgZmllbGQtZG9iKCk7XG4gICAgfVxuXG4gICAgJi5fZXJyb3Ige1xuICAgICAgICAuaW5wdXQtdGV4dCxcbiAgICAgICAgLmNoZWNrYm94IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZpZWxkLWlucHV0LWVycm9yKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXZlcnRpbmcgc3R5bGVzIGZvciBpbnB1dCB3aXRoIHRvb2x0aXAuXG4gICAgLmNvbnRyb2wuX3dpdGgtdG9vbHRpcCBpbnB1dCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxuICAgIC8vIFJldmVydGluZyBpbmZvIHRvb2x0aXAgc3R5bGVzIHRvIG1ha2UgaXQgYXBwZWFyIGFzIG5vdGUgYmVsb3cgdGhlIGlucHV0LlxuICAgIC5maWVsZC10b29sdGlwIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcblxuICAgICAgICAubGFiZWwsXG4gICAgICAgIC5maWVsZC10b29sdGlwLWFjdGlvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZpZWxkLXRvb2x0aXAtY29udGVudCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcblxuICAgICAgICAgICAgQGluY2x1ZGUgZmllbGQtbm90ZSgpO1xuXG4gICAgICAgICAgICAmOmJlZm9yZSxcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubm90ZSB7XG4gICAgICAgIEBpbmNsdWRlIGZpZWxkLW5vdGUoKTtcbiAgICB9XG59XG4vLyBIYXMgdG8gYmUgc2NvcGVkIHRvIGRpdiwgb3RoZXJ3aXNlIGl0IGNvbGxpZGVzIHdpdGggaW5wdXQgY2xhc3MuXG5kaXYubWFnZS1lcnJvcixcbmRpdi5maWVsZC1lcnJvciB7XG4gICAgQGluY2x1ZGUgZmllbGQtZXJyb3IoKTtcbn1cblxuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuIiwiLyoqXG4gKiBGb290ZXIgY29tcG9uZW50IGN1c3RvbWl6YXRpb24uXG4gKiBAc2VlIC9NYWdlbnRvX1RoZW1lL3RlbXBsYXRlcy9mb290ZXIvY29sdW1ucy5waHRtbCBmb3IgdGVtcGxhdGVzLlxuICovXG5AaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcbkBpbXBvcnQgJ3ZlbmRvcnMvaW5jbHVkZS1tZWRpYSc7XG5AaW1wb3J0ICd1dGlscy92aXN1YWxseS1oaWRkZW4nO1xuQGltcG9ydCAnY29tcG9uZW50cy9wc2V1ZG9pY29uL21peGluJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdHlwb2dyYXBoeS9taXhpbic7XG5cbiRmb290ZXJfdGV4dC1jb2xvcjogJGNvbG9yX3RleHQtNjAwICFkZWZhdWx0O1xuJGZvb3Rlcl9iYWNrZ3JvdW5kOiAkY29sb3JfZ2FsbGVyeSAhZGVmYXVsdDtcbiRmb290ZXJfZWRnZS1ndXR0ZXI6ICRwYWdlX2VkZ2UtZ3V0dGVyICFkZWZhdWx0O1xuXG4kZm9vdGVyX3NlY3Rpb24tZWRnZS1ndXR0ZXI6ICRwYWdlX2VkZ2UtZ3V0dGVyICFkZWZhdWx0O1xuJGZvb3Rlcl9zZWN0aW9uLXZlcnRpY2FsLW9mZnNldDogMmVtICFkZWZhdWx0O1xuXG4kZm9vdGVyX3NlY3Rpb24tc2VwYXJhdG9yLWJvcmRlcjogMXB4IHNvbGlkICRjb2xvcl9ncmF5ICFkZWZhdWx0O1xuXG4kZm9vdGVyX3NlY3Rpb24tdGl0bGUtaGVhZGxpbmUtbGV2ZWw6ICRmb250LXNpemVfaGVhZGxpbmUtNCAhZGVmYXVsdDtcbiRmb290ZXJfc2VjdGlvbi10aXRsZS1wYWRkaW5nOiAycmVtICFkZWZhdWx0O1xuJGZvb3Rlcl9zZWN0aW9uLXRpdGxlLWNvbG9yOiAkY29sb3JfZ3JheSAhZGVmYXVsdDtcbiRmb290ZXJfc2VjdGlvbi10aXRsZS1mb250LXNpemU6IDEuMmVtICFkZWZhdWx0O1xuJGZvb3Rlcl9zZWN0aW9uLXRpdGxlLXRyYW5zZm9ybTogdXBwZXJjYXNlICFkZWZhdWx0O1xuXG4kZm9vdGVyX3NlY3Rpb24tcHNldWRvaWNvbi1pbmNsdWRlOiB0cnVlICFkZWZhdWx0O1xuXG4kZm9vdGVyX3Byb21vLWRpc3BsYXktb24tbW9iaWxlOiBmYWxzZSAhZGVmYXVsdDtcbiRmb290ZXJfbG9nby1kaXNwbGF5OiBibG9jayAhZGVmYXVsdDtcbiRmb290ZXJfbG9nby13aWR0aDogMTMuNWVtICFkZWZhdWx0O1xuJGZvb3Rlcl9sb2dvLWhlaWdodDogMi4zZW0gIWRlZmF1bHQ7XG5cbi4jeyRuc31mb290ZXIge1xuICAgICRyb290OiAmO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBjb2xvcjogJGZvb3Rlcl90ZXh0LWNvbG9yO1xuICAgIGJhY2tncm91bmQ6ICRmb290ZXJfYmFja2dyb3VuZDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBhZGRpbmc6IDAgMCAycmVtO1xuICAgIG1hcmdpbi10b3A6IDRyZW07IC8vYWRkaXRpb25hbCBtYXJnaW4gb24gdG9wXG5cbiAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgIHBhZGRpbmc6IDAgJGZvb3Rlcl9lZGdlLWd1dHRlcjtcbiAgICB9XG5cbiAgICAmX19jb250ZW50IHtcbiAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiA0cmVtO1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDIuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PWxhcHRvcCcpIHtcbiAgICAgICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9faXRlbSB7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PWxhcHRvcCcpIHtcbiAgICAgICAgICAgIC8vIGZsZXg6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAmLS1wcm9tbyB7XG4gICAgICAgICAgICBAaWYgJGZvb3Rlcl9wcm9tby1kaXNwbGF5LW9uLW1vYmlsZSA9PWZhbHNlIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPHRhYmxldCcpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGZsZXgtYmFzaXM6IDEwMCU7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8bGFwdG9wJykge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgICAgIC8vIGZsZXgtYmFzaXM6IGF1dG87XG4gICAgICAgICAgICAgICAgLy8gZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0tbGlua3Mge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgLy9mbGV4LWJhc2lzOiAxMDAlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICRmb290ZXJfc2VjdGlvbi12ZXJ0aWNhbC1vZmZzZXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj1sYXB0b3AnKSB7XG4gICAgICAgICAgICAgICAgLy8gZmxleC1iYXNpczogYXV0bztcbiAgICAgICAgICAgICAgICAvLyBmbGV4LWdyb3c6IDU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLS1leHRyYXMge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgICAgIC8vIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgLy8gZmxleC1iYXNpczogMTAwJTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIC8vIGZsZXgtYmFzaXM6IDI1JTtcbiAgICAgICAgICAgICAgICAvLyBmbGV4LWdyb3c6IDI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19zZWN0aW9uIHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgLy8gZmxleDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLW5ld3NsZXR0ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgICAgIC8vIGZsZXgtZ3JvdzogMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLXNvY2lhbHMge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDRyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLS1zdG9yZXMtc3dpdGNoZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDRyZW07XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAyMHJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3NlY3Rpb24tdGl0bGUsXG4gICAgW2RhdGEtcm9sZT0ndGl0bGUnXSB7XG4gICAgICAgIEBpZiAkZm9vdGVyX3NlY3Rpb24tdGl0bGUtaGVhZGxpbmUtbGV2ZWwgIT0nbm9uZScge1xuICAgICAgICAgICAgQGluY2x1ZGUgaGVhZGxpbmUoJGxldmVsOiAkZm9vdGVyX3NlY3Rpb24tdGl0bGUtaGVhZGxpbmUtbGV2ZWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGJvcmRlci10b3A6ICRmb290ZXJfc2VjdGlvbi1zZXBhcmF0b3ItYm9yZGVyO1xuICAgICAgICBwYWRkaW5nOiAkZm9vdGVyX3NlY3Rpb24tdGl0bGUtcGFkZGluZztcbiAgICAgICAgY29sb3I6ICRmb290ZXJfc2VjdGlvbi10aXRsZS1jb2xvcjtcbiAgICAgICAgZm9udC1zaXplOiAkZm9vdGVyX3NlY3Rpb24tdGl0bGUtZm9udC1zaXplO1xuICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogJGZvb3Rlcl9zZWN0aW9uLXRpdGxlLXRyYW5zZm9ybTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPHRhYmxldCcpIHtcbiAgICAgICAgICAgICN7JHJvb3R9X19zZWN0aW9uLS1jb2xsYXBzaWJsZSAmIHtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgICAgICAgICBAaWYgJGZvb3Rlcl9zZWN0aW9uLXBzZXVkb2ljb24taW5jbHVkZSB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHBzZXVkb2ljb24oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICN7JHJvb3R9X19zZWN0aW9uLS1zb2NpYWxzICYge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHZpc3VhbGx5LWhpZGRlbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PWxhcHRvcCcpIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3NlY3Rpb24tY29udGVudCxcbiAgICBbZGF0YS1yb2xlPSdjb250ZW50J10ge1xuICAgICAgICBwYWRkaW5nOiAwICRmb290ZXJfc2VjdGlvbi1lZGdlLWd1dHRlciAkZm9vdGVyX3NlY3Rpb24tZWRnZS1ndXR0ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzx0YWJsZXQnKSB7XG4gICAgICAgICAgICAjeyRyb290fV9fc2VjdGlvbi0tY29sbGFwc2libGUgJiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PWxhcHRvcCcpIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3Nob3AtbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6ICRmb290ZXJfbG9nby1kaXNwbGF5O1xuICAgICAgICB3aWR0aDogJGZvb3Rlcl9sb2dvLXdpZHRoO1xuICAgICAgICBoZWlnaHQ6ICRmb290ZXJfbG9nby1oZWlnaHQ7XG4gICAgICAgIG1pbi13aWR0aDogJGZvb3Rlcl9sb2dvLXdpZHRoO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgfVxufVxuXG4uI3skbnN9Y29udGFpbmVyIHtcbiAgICAmLS1mb290ZXIge1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxuXG4gICAgJi0tZm9vdGVyLXVzcHMge1xuICAgICAgICAuI3skbnN9aW1hZ2UtdGVhc2VyX19jb250ZW50IHtcbiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufSIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcbkBpbXBvcnQgJ3V0aWxzL3Jlc2V0LWxpc3Qtc3R5bGUnO1xuQGltcG9ydCAnY29tcG9uZW50cy90eXBvZ3JhcGh5L21peGluJztcblxuJGZvb3Rlci1saW5rc19saXN0LWl0ZW0tbWFyZ2luOiAwIDAgMC4zZW0gIWRlZmF1bHQ7XG5cbiRmb290ZXItbGlua3NfbGluay1mb250LXNpemU6IGluaGVyaXQgIWRlZmF1bHQ7XG4kZm9vdGVyLWxpbmtzX2xpbmstY29sb3I6ICRjb2xvcl90ZXh0LTYwMCAhZGVmYXVsdDtcbiRmb290ZXItbGlua3NfbGluay1ob3Zlci1jb2xvcjogJGZvb3Rlci1saW5rc19saW5rLWNvbG9yICFkZWZhdWx0O1xuJGZvb3Rlci1saW5rc19saW5rLWRlY29yYXRpb246IG5vbmUgIWRlZmF1bHQ7XG4kZm9vdGVyLWxpbmtzX2xpbmstaG92ZXItZGVjb3JhdGlvbjogdW5kZXJsaW5lICFkZWZhdWx0O1xuJGZvb3Rlci1saW5rc19saW5rLXBhZGRpbmctbW9iaWxlOiAwLjVlbSAwICFkZWZhdWx0O1xuJGZvb3Rlci1saW5rc19saW5rLXBhZGRpbmctZGVza3RvcDogMC4zNWVtIDAgIWRlZmF1bHQ7XG5cbi4jeyRuc31mb290ZXItbGlua3Mge1xuXG4gICAgJHJvb3Q6ICY7XG5cbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlKCk7XG5cbiAgICAmX19pdGVtIHtcbiAgICAgICAgbWFyZ2luOiAkZm9vdGVyLWxpbmtzX2xpc3QtaXRlbS1tYXJnaW47XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICAgIEBpbmNsdWRlIGxpbmsoXG4gICAgICAgICAgICAkY29sb3I6ICRmb290ZXItbGlua3NfbGluay1jb2xvcixcbiAgICAgICAgICAgICRjb2xvci1ob3ZlcjogJGZvb3Rlci1saW5rc19saW5rLWhvdmVyLWNvbG9yLFxuICAgICAgICAgICAgJGRlY29yYXRpb246ICRmb290ZXItbGlua3NfbGluay1kZWNvcmF0aW9uLFxuICAgICAgICAgICAgJGRlY29yYXRpb24taG92ZXI6ICRmb290ZXItbGlua3NfbGluay1ob3Zlci1kZWNvcmF0aW9uXG4gICAgICAgICk7XG5cbiAgICAgICAgJixcbiAgICAgICAgJjp2aXNpdGVkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgcGFkZGluZzogJGZvb3Rlci1saW5rc19saW5rLXBhZGRpbmctbW9iaWxlO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9vdGVyLWxpbmtzX2xpbmstZm9udC1zaXplO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogJGZvb3Rlci1saW5rc19saW5rLXBhZGRpbmctZGVza3RvcDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuLmNzLWZvb3Rlcl9faXRlbS5jcy1mb290ZXJfX2l0ZW0tLWxpbmtze1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC5jcy1mb290ZXJfX3NlY3Rpb24tdGl0bGV7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBsaW5vdHlwZS1kaWRvdC1oZWFkbGluZSwgc2VyaWY7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcbiAgICAgICAgLm5ld3N7XG4gICAgICAgICAgICBjb2xvcjogcGluaztcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmNzLWZvb3Rlci1saW5rc3tcbiAgICAgICAgLm5hdi1saW5re1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmZvb3Rlcl9fZGVsaXZlcnlfbWV0aG9kLFxuICAgIC5mb290ZXJfX3BheW1lbnRfbWV0aG9ke1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIC5mb290ZXJfX2RlbGl2ZXJ5X21ldGhvZF9pdGVtLFxuICAgICAgICAuZm9vdGVyX19wYXltZW50X21ldGhvZF9pdGVte1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5jcy1mb290ZXJfX3NlY3Rpb24uc29jaWFse1xuICAgICAgICAuY3MtZm9vdGVyX19zZWN0aW9uLWNvbnRlbnR7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgLmZvb3Rlci1zb2NpYWwtaW5uZXJ7XG4gICAgICAgICAgICAgICAgZmlsdGVyOiBncmF5c2NhbGUoMSk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaDN7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwcHg7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IGxpbm90eXBlLWRpZG90LWhlYWRsaW5lLCBzZXJpZjtcbiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDJyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpO1xuICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCgyLCAxZnIpO1xuICAgICAgICBncmlkLWNvbHVtbi1nYXA6IDFyZW07XG4gICAgICAgIGdyaWQtcm93LWdhcDogMHB4O1xuICAgICAgICAuY3MtZm9vdGVyX19zZWN0aW9uLS1jb2xsYXBzaWJsZTpudGgtY2hpbGQoMSkge1xuICAgICAgICAgICAgZ3JpZC1hcmVhOiAxIC8gMSAvIDIgLyAyO1xuICAgICAgICB9XG4gICAgICAgIC5jcy1mb290ZXJfX3NlY3Rpb24tLWNvbGxhcHNpYmxlOm50aC1jaGlsZCgyKSB7XG4gICAgICAgICAgICBncmlkLWFyZWE6IDIgLyAxIC8gMyAvIDI7XG4gICAgICAgIH1cbiAgICAgICAgLmNzLWZvb3Rlcl9fc2VjdGlvbi0tY29sbGFwc2libGU6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogMSAvIDIgLyAzIC8gMztcbiAgICAgICAgfVxuICAgICAgICAuY3MtZm9vdGVyX19zZWN0aW9uLS1jb2xsYXBzaWJsZTpudGgtY2hpbGQoNCkge1xuICAgICAgICAgICAgZ3JpZC1hcmVhOiAxIC8gMyAvIDIgLyA0O1xuICAgICAgICB9XG4gICAgICAgIC5jcy1mb290ZXJfX3NlY3Rpb24tLWNvbGxhcHNpYmxlOm50aC1jaGlsZCg1KSB7XG4gICAgICAgICAgICBncmlkLWFyZWE6IDIgLyAzIC8gMyAvIDQ7XG4gICAgICAgIH1cbiAgICAgICAgLmNzLWZvb3Rlcl9fc2VjdGlvbi0tY29sbGFwc2libGU6bnRoLWNoaWxkKDYpIHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogMSAvIDQgLyAzIC8gNTtcbiAgICAgICAgfVxuICAgIH1cbn0iLCJAaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdHlwb2dyYXBoeS9taXhpbic7XG5cbiRnb29nbGUtcmVjYXB0Y2hhX21hcmdpbjogMXJlbSAwICFkZWZhdWx0O1xuJGdvb2dsZS1yZWNhcHRjaGFfdGV4dC1tYXJnaW46IDAgIWRlZmF1bHQ7XG4kZ29vZ2xlLXJlY2FwdGNoYV90ZXh0LWNvbG9yOiAkY29sb3JfdGV4dC01MDAgIWRlZmF1bHQ7XG4kZ29vZ2xlLXJlY2FwdGNoYV90ZXh0LWZvbnQtc2l6ZTogMS4ycmVtICFkZWZhdWx0O1xuJGdvb2dsZS1yZWNhcHRjaGFfbGluay1jb2xvcjogJGxpbmstY29sb3JfYmFzZSAhZGVmYXVsdDtcbiRnb29nbGUtcmVjYXB0Y2hhX2xpbmstY29sb3ItaG92ZXI6ICRsaW5rLWNvbG9yX2Jhc2UtaG92ZXIgIWRlZmF1bHQ7XG4kZ29vZ2xlLXJlY2FwdGNoYV9saW5rLWRlY29yYXRpb246IG5vbmUgIWRlZmF1bHQ7XG4kZ29vZ2xlLXJlY2FwdGNoYV9saW5rLWRlY29yYXRpb24taG92ZXI6IG5vbmUgIWRlZmF1bHQ7XG5cbi8vIG5ld3NsZXR0ZXJcbiRnb29nbGUtcmVjYXB0Y2hhX25ld3NsZXR0ZXItbWFyZ2luOiAxcmVtIDAgIWRlZmF1bHQ7XG4kZ29vZ2xlLXJlY2FwdGNoYV9uZXdzbGV0dGVyLXRleHQtbWFyZ2luOiAwICFkZWZhdWx0O1xuJGdvb2dsZS1yZWNhcHRjaGFfbmV3c2xldHRlci10ZXh0LWNvbG9yOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG4kZ29vZ2xlLXJlY2FwdGNoYV9uZXdzbGV0dGVyLXRleHQtZm9udC1zaXplOiAxLjJyZW0gIWRlZmF1bHQ7XG4kZ29vZ2xlLXJlY2FwdGNoYV9uZXdzbGV0dGVyLWxpbmstY29sb3I6ICRjb2xvcl93aGl0ZSAhZGVmYXVsdDtcbiRnb29nbGUtcmVjYXB0Y2hhX25ld3NsZXR0ZXItbGluay1jb2xvci1ob3ZlcjogJGNvbG9yX3doaXRlICFkZWZhdWx0O1xuJGdvb2dsZS1yZWNhcHRjaGFfbmV3c2xldHRlci1saW5rLWRlY29yYXRpb246IG5vbmUgIWRlZmF1bHQ7XG4kZ29vZ2xlLXJlY2FwdGNoYV9uZXdzbGV0dGVyLWxpbmstZGVjb3JhdGlvbi1ob3ZlcjogdW5kZXJsaW5lICFkZWZhdWx0O1xuXG4uI3skbnN9Z29vZ2xlLXJlY2FwdGNoYSB7XG4gICAgJHJvb3Q6ICY7XG5cbiAgICBtYXJnaW46ICRnb29nbGUtcmVjYXB0Y2hhX21hcmdpbjtcblxuICAgICZfX2JhZGdlIHtcbiAgICAgICAgJi0taW52aXNpYmxlIHtcbiAgICAgICAgICAgIC5ncmVjYXB0Y2hhLWJhZGdlIHtcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fbm90ZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luOiAkZ29vZ2xlLXJlY2FwdGNoYV90ZXh0LW1hcmdpbjtcbiAgICAgICAgZm9udC1zaXplOiAkZ29vZ2xlLXJlY2FwdGNoYV90ZXh0LWZvbnQtc2l6ZTtcbiAgICAgICAgY29sb3I6ICRnb29nbGUtcmVjYXB0Y2hhX3RleHQtY29sb3I7XG5cbiAgICAgICAgYSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBsaW5rKFxuICAgICAgICAgICAgICAgICRjb2xvcjogJGdvb2dsZS1yZWNhcHRjaGFfbGluay1jb2xvcixcbiAgICAgICAgICAgICAgICAkY29sb3ItaG92ZXI6ICRnb29nbGUtcmVjYXB0Y2hhX2xpbmstY29sb3ItaG92ZXIsXG4gICAgICAgICAgICAgICAgJGRlY29yYXRpb246ICRnb29nbGUtcmVjYXB0Y2hhX2xpbmstZGVjb3JhdGlvbixcbiAgICAgICAgICAgICAgICAkZGVjb3JhdGlvbi1ob3ZlcjogJGdvb2dsZS1yZWNhcHRjaGFfbGluay1kZWNvcmF0aW9uLWhvdmVyXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tbmV3c2xldHRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIG1hcmdpbjogJGdvb2dsZS1yZWNhcHRjaGFfbmV3c2xldHRlci1tYXJnaW47XG5cbiAgICAgICAgI3skcm9vdH1fX25vdGUge1xuICAgICAgICAgICAgbWFyZ2luOiAkZ29vZ2xlLXJlY2FwdGNoYV9uZXdzbGV0dGVyLXRleHQtbWFyZ2luO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZ29vZ2xlLXJlY2FwdGNoYV9uZXdzbGV0dGVyLXRleHQtZm9udC1zaXplO1xuICAgICAgICAgICAgY29sb3I6ICRnb29nbGUtcmVjYXB0Y2hhX25ld3NsZXR0ZXItdGV4dC1jb2xvcjtcblxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbGluayhcbiAgICAgICAgICAgICAgICAgICAgJGNvbG9yOiAkZ29vZ2xlLXJlY2FwdGNoYV9uZXdzbGV0dGVyLWxpbmstY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICRjb2xvci1ob3ZlcjogJGdvb2dsZS1yZWNhcHRjaGFfbmV3c2xldHRlci1saW5rLWNvbG9yLWhvdmVyLFxuICAgICAgICAgICAgICAgICAgICAkZGVjb3JhdGlvbjogJGdvb2dsZS1yZWNhcHRjaGFfbmV3c2xldHRlci1saW5rLWRlY29yYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICRkZWNvcmF0aW9uLWhvdmVyOlxuICAgICAgICAgICAgICAgICAgICAgICAgJGdvb2dsZS1yZWNhcHRjaGFfbmV3c2xldHRlci1saW5rLWRlY29yYXRpb24taG92ZXJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tY3VzdG9tZXJfY3JlYXRlIHtcbiAgICAgICAgbWFyZ2luLXRvcDogLTJyZW07XG4gICAgfVxuXG4gICAgJi0tY3VzdG9tZXJfbG9naW4ge1xuICAgICAgICAuZy1yZWNhcHRjaGEge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd2ZW5kb3JzL2luY2x1ZGUtbWVkaWEnO1xuQGltcG9ydCAnY29tcG9uZW50cy9jb250YWluZXIvbWl4aW4nO1xuQGltcG9ydCAndXRpbHMvZGVlcC1nZXQvZGVlcC1nZXQuc2Nzcyc7XG5cbiRoZWFkZXJfZm9udC1zaXplOiAxcmVtICFkZWZhdWx0O1xuJGhlYWRlcl9ib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbG9yX2JvcmRlci0yMDAgIWRlZmF1bHQ7XG5cbiRoZWFkZXJfYmFja2dyb3VuZDogJGNvbG9yX2JhY2tncm91bmQtMjAwICFkZWZhdWx0O1xuXG4vLyBIb3Jpem9udGFsIGFsaWduIG9mIHRoZSBzZWFyY2hib3ggaWYgaXQncyBkaXNwbGF5ZWQgYXMgYSBsYXllciAtIGAkZ2xvYmFsX2hlYWRlci1zZWFyY2hib3gtYXMtbGF5ZXItYnJlYWtwb2ludGBcbiRoZWFkZXJfc2VhcmNoYm94LWp1c3RpZnktY29udGVudDogY2VudGVyICFkZWZhdWx0O1xuXG4vLyBJZiB5b3Ugd2FudCB0byBjb3ZlciAnc2VhcmNoJyBpdGVtIGluIGhlYWRlciBieSBzZWFyY2hib3gsIHByb3ZpZGUgcHJvcGVyIG5lZ2F0aXZlIG1hcmdpbiBiYXNlZCBvbiB5b3VyIGRlc2lnblxuLy8gSXQgd29ya3Mgb25seSBpZiAnJGdsb2JhbF9oZWFkZXItc2VhcmNoYm94LWFzLWxheWVyLWJyZWFrcG9pbnQnIGhhcyB2YWxpZCBicmVha3BvaW50IGFuZCBgJGhlYWRlcl9zZWFyY2hib3gtanVzdGlmeS1jb250ZW50YCA9IGZsZXgtZW5kXG4kaGVhZGVyX3NlYXJjaGJveC1tYXJnaW4tdG8tY292ZXItc2VhcmNoLWl0ZW06IC02LjhyZW0gIWRlZmF1bHQ7XG5cbi8vIENoYW5nZSBpbiBldGMvdmlldy54bWwgaWYgbmVjZXNzYXJ5XG4kaGVhZGVyX2lzLXN0aWNreS1vbi1tb2JpbGU6IGRlZXAtZ2V0KFxuICAgICR2aWV3LXhtbCxcbiAgICB2YXJzLFxuICAgIE1hZ2VudG9fVGhlbWUsXG4gICAgaGVhZGVyLFxuICAgIG1vYmlsZV9pc19zdGlja3lcbikgIWRlZmF1bHQ7XG5cbiRoZWFkZXJfc3RpY2t5LXRvcC1wb3NpdGlvbi1tb2JpbGU6IDAgIWRlZmF1bHQ7XG4kaGVhZGVyX3N0aWNreS10b3AtcG9zaXRpb24tdGFibGV0OiAkaGVhZGVyX3N0aWNreS10b3AtcG9zaXRpb24tbW9iaWxlICFkZWZhdWx0O1xuXG4vKipcbiAqIFZhcmlhYmxlcyByZWxhdGVkIHRvIHN0aWNreSBoZWFkZXIgYW5kIHRvcGJhciBvbiBtb2JpbGUgZGV2aWNlcy5cbiAqIHRvIHByZXZlbnQgcGFnZSBqdW1waW5nIHdoZW4gb2ZmYWNudmFzIChmaXhlZCBwb3NpdGlvbmVkKSBpcyBvcGVuZWRcbiAqIElmIHlvdSBoYXZlIG1vcmUgZWxlbWVudHMgb24gdG9wLCB5b3UgaGF2ZSB0byBpbmNsdWRlIHRoZWlyIGhlaWdodC5cbiAqL1xuJHN0aWNreS1oZWFkZXItcGFnZS13cmFwcGVyLW9mZnNldC1tb2JpbGU6ICRnbG9iYWxfaGVhZGVyLWhlaWdodC1tb2JpbGUgIWRlZmF1bHQ7XG4kc3RpY2t5LWhlYWRlci1wYWdlLXdyYXBwZXItb2Zmc2V0LXRhYmxldDogJGdsb2JhbF9oZWFkZXItaGVpZ2h0LXRhYmxldCAhZGVmYXVsdDtcblxuLiN7JG5zfWNvbnRhaW5lciB7XG4gICAgJi0taGVhZGVyIHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzxsYXB0b3AnKSB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AaWYgKFxuICAgICRoZWFkZXJfaXMtc3RpY2t5LW9uLW1vYmlsZSBhbmQgJGdsb2JhbF9oZWFkZXItaXMtYm90dG9tLW9uLW1vYmlsZSAhPSB0cnVlXG4pIHtcbiAgICAvKipcbiAgICAgKiBTdHlsZXMgcmVsYXRlZCB0byBzdGlja3kgaGVhZGVyIGFuZCB0b3BiYXIgb24gbW9iaWxlIGRldmljZXMuXG4gICAgICogdG8gcHJldmVudCBwYWdlIGp1bXBpbmcgd2hlbiBvZmZhY252YXMgKGZpeGVkIHBvc2l0aW9uZWQpIGlzIG9wZW5lZFxuICAgICAqL1xuICAgIC5uYXZpZ2F0aW9uLW9mZmNhbnZhcy1vcGVuIC5wYWdlLXdyYXBwZXIubm8tc2Nyb2xsLWNoaWxkIHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzxsYXB0b3AnKSB7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogJHN0aWNreS1oZWFkZXItcGFnZS13cmFwcGVyLW9mZnNldC10YWJsZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPHRhYmxldCcpIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAkc3RpY2t5LWhlYWRlci1wYWdlLXdyYXBwZXItb2Zmc2V0LW1vYmlsZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC4jeyRuc31jb250YWluZXIge1xuICAgICAgICAmLS1oZWFkZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzxsYXB0b3AnKSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiA4MDA7XG4gICAgICAgICAgICAgICAgdG9wOiAkaGVhZGVyX3N0aWNreS10b3AtcG9zaXRpb24tdGFibGV0O1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRml4ZWQgcG9zaXRpb25pbmcgcmVxdWlyZWQgdG8gd29yayB3aXRoIG9mZmNhbnZhcyBlbGVtZW50cy5cbiAgICAgICAgICAgICAgICAgKiBBbHNvLCBhcyBhIGZhbGxiYWNrIGZvciBJRSB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IHN0aWNreS5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAubmF2aWdhdGlvbi1vZmZjYW52YXMtb3Blbi5uby1zY3JvbGwgJixcbiAgICAgICAgICAgICAgICAuaWUxMSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8dGFibGV0Jykge1xuICAgICAgICAgICAgICAgIHRvcDogJGhlYWRlcl9zdGlja3ktdG9wLXBvc2l0aW9uLW1vYmlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLiN7JG5zfWhlYWRlciB7XG4gICAgJHJvb3Q6ICY7XG5cbiAgICBmb250LXNpemU6ICRoZWFkZXJfZm9udC1zaXplO1xuXG4gICAgQGlmICgkaGVhZGVyX2lzLXN0aWNreS1vbi1tb2JpbGUpIHtcbiAgICAgICAgQGlmICgkZ2xvYmFsX2hlYWRlci1pcy1ib3R0b20tb24tbW9iaWxlKSB7XG4gICAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgaGVpZ2h0OiAkZ2xvYmFsX2hlYWRlci1oZWlnaHQtbW9iaWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgaGVpZ2h0OiAkZ2xvYmFsX2hlYWRlci1oZWlnaHQtdGFibGV0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wTGcnKSB7XG4gICAgICAgIGhlaWdodDogJGdsb2JhbF9oZWFkZXItaGVpZ2h0LWRlc2t0b3A7XG4gICAgfVxuXG4gICAgJl9fY29udGVudCB7XG4gICAgICAgIGhlaWdodDogJGdsb2JhbF9oZWFkZXItaGVpZ2h0LW1vYmlsZTtcbiAgICAgICAgei1pbmRleDogMzAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlcl9iYWNrZ3JvdW5kO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1heC13aWR0aDogMTAwdnc7XG5cbiAgICAgICAgQGlmICgkZ2xvYmFsX2hlYWRlci1pcy1ib3R0b20tb24tbW9iaWxlKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPHRhYmxldCcpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgICAgICBoZWlnaHQ6ICRnbG9iYWxfaGVhZGVyLWhlaWdodC10YWJsZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj1sYXB0b3AnKSB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAkaGVhZGVyX2JvcmRlci1ib3R0b207XG4gICAgICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PWxhcHRvcExnJykge1xuICAgICAgICAgICAgaGVpZ2h0OiAkZ2xvYmFsX2hlYWRlci1oZWlnaHQtZGVza3RvcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX29mZmNhbnZhcy10b2dnbGUge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGZsZXg6IDAgMSA0cmVtO1xuXG4gICAgICAgIEBpZiAoJGdsb2JhbF9oZWFkZXItbW9iaWxlLW1lbnUtaXMtcmlnaHQpIHtcbiAgICAgICAgICAgIG9yZGVyOiA0O1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2xvZ28ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4OiAxIDE7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC43cmVtIDAgMC43cmVtIDAuN3JlbTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj1waG9uZScpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuN3JlbSAwIDAuN3JlbSAxLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgICAgICBmbGV4OiAwIDEgYXV0bztcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAucGFnZS1wcmludCAmIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNvbnRhaW5lci13cmFwcGVyKCk7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICBwYWRkaW5nOiAycmVtIDA7XG5cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgICAgICAgICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fc2VhcmNoIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXJfYmFja2dyb3VuZDtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgei1pbmRleDogMzAwO1xuXG4gICAgICAgIEBpZiAoJGdsb2JhbF9oZWFkZXItaXMtYm90dG9tLW9uLW1vYmlsZSkge1xuICAgICAgICAgICAgYm90dG9tOiAkZ2xvYmFsX2hlYWRlci1oZWlnaHQtbW9iaWxlO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgICAgICAgICAgYm90dG9tOiBhdXRvO1xuICAgICAgICAgICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICB0b3A6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCRnbG9iYWxfaGVhZGVyLXNlYXJjaGJveC1hcy1sYXllci1icmVha3BvaW50KSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZ2xvYmFsX2hlYWRlci1zZWFyY2hib3gtYXMtbGF5ZXItYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgIC8vIG1hcmdpbi1sZWZ0OiAycmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiAkaGVhZGVyX3NlYXJjaGJveC1qdXN0aWZ5LWNvbnRlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wTGcnKSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMS41cmVtIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLS1hY3RpdmUge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoJGdsb2JhbF9oZWFkZXItaGlkZS1zZWFyY2gtaXRlbS10cmlnZ2VyLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIEBpZiAoJGdsb2JhbF9oZWFkZXItaGlkZS1zZWFyY2gtaXRlbS10cmlnZ2VyLWJyZWFrcG9pbnQgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYShcbiAgICAgICAgICAgICAgICAgICAgJGdsb2JhbF9oZWFkZXItaGlkZS1zZWFyY2gtaXRlbS10cmlnZ2VyLWJyZWFrcG9pbnRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBAaWYgKCRnbG9iYWxfaGVhZGVyLXNlYXJjaGJveC1hcy1sYXllci1icmVha3BvaW50KSB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKFxuICAgICAgICAgICAgICAgICAgICAgICAgJGdsb2JhbF9oZWFkZXItc2VhcmNoYm94LWFzLWxheWVyLWJyZWFrcG9pbnRcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChcbiAgICAgICAgICAgICRnbG9iYWxfaGVhZGVyLWhpZGUtc2VhcmNoLWl0ZW0tdHJpZ2dlci1icmVha3BvaW50IGFuZFxuICAgICAgICAgICAgICAgICRoZWFkZXJfc2VhcmNoYm94LWp1c3RpZnktY29udGVudCA9PVxuICAgICAgICAgICAgICAgICdmbGV4LWVuZCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBAaWYgKCRnbG9iYWxfaGVhZGVyLWhpZGUtc2VhcmNoLWl0ZW0tdHJpZ2dlci1icmVha3BvaW50ID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICRoZWFkZXJfc2VhcmNoYm94LW1hcmdpbi10by1jb3Zlci1zZWFyY2gtaXRlbTtcblxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKFxuICAgICAgICAgICAgICAgICAgICAkZ2xvYmFsX2hlYWRlci1oaWRlLXNlYXJjaC1pdGVtLXRyaWdnZXItYnJlYWtwb2ludFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBpZiAoJGhlYWRlcl9zZWFyY2hib3gtanVzdGlmeS1jb250ZW50ID09ICdmbGV4LWVuZCcpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICRoZWFkZXJfc2VhcmNoYm94LW1hcmdpbi10by1jb3Zlci1zZWFyY2gtaXRlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3VzZXItbmF2IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgZmxleDogMCAxIDMwJTtcblxuICAgICAgICBAaWYgKCRnbG9iYWxfaGVhZGVyLWhpZGUtc2VhcmNoLWl0ZW0tdHJpZ2dlci1icmVha3BvaW50KSB7XG4gICAgICAgICAgICBAaWYgKCRnbG9iYWxfaGVhZGVyLWhpZGUtc2VhcmNoLWl0ZW0tdHJpZ2dlci1icmVha3BvaW50ID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBmbGV4OiAwIDEgMjUlO1xuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoXG4gICAgICAgICAgICAgICAgICAgICRnbG9iYWxfaGVhZGVyLWhpZGUtc2VhcmNoLWl0ZW0tdHJpZ2dlci1icmVha3BvaW50XG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGZsZXg6IDAgMSAyNSU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYmFjay1idXR0b24ge1xuICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkY29sb3JfYm9yZGVyLTUwMDtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDRyZW07XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49cGhvbmUnKSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDEuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19iYWNrLWJ1dHRvbi1pY29uIHtcbiAgICAgICAgZmlsbDogJGNvbG9yX2JvcmRlci03MDA7XG4gICAgICAgIGhlaWdodDogMi41cmVtO1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8cGhvbmUnKSB7XG4gICAgICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcbkBpbXBvcnQgJ3ZlbmRvcnMvaW5jbHVkZS1tZWRpYSc7XG5AaW1wb3J0ICd1dGlscy92aXN1YWxseS1oaWRkZW4nO1xuXG5AaW1wb3J0ICdjb21wb25lbnRzL2ZpZWxkL21peGluJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uL21peGluJztcblxuJGhlYWRlci1zZWFyY2hfZm9udC1zaXplOiAxLjRyZW0gIWRlZmF1bHQ7XG4vLyBPbiBpT1MgdGhlIHNlYXJjaCBpbnB1dCBoYXMgdG8gYmUgYXQgbGVhc3QgMTZweCBsYXJnZSxcbi8vIG90aGVyd2lzZSBpdCB3aWxsIG5lZWRsZXNzbHkgdHJpZ2dlciBwYWdlIHpvb20gb25jZSB0aGUgaW5wdXQgaXMgZm9jdXNlZC5cbi8vIC0gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjk4OTI2My9kaXNhYmxlLWF1dG8tem9vbS1pbi1pbnB1dC10ZXh0LXRhZy1zYWZhcmktb24taXBob25lXG4vLyAtIGh0dHBzOi8vd3d3LndhcnJlbmNoYW5kbGVyLmNvbS8yMDE5LzA0LzAyL3N0b3AtaXBob25lcy1mcm9tLXpvb21pbmctaW4tb24tZm9ybS1maWVsZHMvXG4kaGVhZGVyLXNlYXJjaF9mb250LXNpemUtbW9iaWxlOiAxLjZyZW0gIWRlZmF1bHQ7XG5cbi8vIFdpZHRoIG9mIHRoZSBzZWFyY2ggZmllbGQuIFdvcmtzIG9ubHkgZm9yIGAkZ2xvYmFsX2hlYWRlci1zZWFyY2hib3gtYXMtbGF5ZXItYnJlYWtwb2ludGAgYnJlYWtwb2ludCwgaW4gb3RoZXIgY2FzZSBpdCdzIGFsd2F5cyAxMDAlXG4kaGVhZGVyLXNlYXJjaC13aWR0aC1hcy1sYXllcjogMTAwJSAhZGVmYXVsdDtcblxuJGhlYWRlci1zZWFyY2hfY2xvc2UtY29sb3I6ICRjb2xvcl90ZXh0LTQwMCAhZGVmYXVsdDtcblxuJGhlYWRlci1zZWFyY2hfYnV0dG9uLXR5cGU6ICRidXR0b25fZGVmYXVsdC10eXBlICFkZWZhdWx0O1xuJGhlYWRlci1zZWFyY2hfYnV0dG9uLXdpZHRoOiA1cmVtICFkZWZhdWx0O1xuJGhlYWRlci1zZWFyY2hfYnV0dG9uLWJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudCAhZGVmYXVsdDtcbiRoZWFkZXItc2VhcmNoX2J1dHRvbi10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMC43cmVtKSAhZGVmYXVsdDtcblxuJGhlYWRlci1zZWFyY2hfaWNvbi1zZWFyY2gtY29sb3I6ICRjb2xvcl90ZXh0LTIwMCAhZGVmYXVsdDtcbiRoZWFkZXItc2VhcmNoX2ljb24tc2VhcmNoLWNvbG9yLWhvdmVyOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG4kaGVhZGVyLXNlYXJjaF9pY29uLWxvYWRlci1jb2xvcjogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuJGhlYWRlci1zZWFyY2hfaWNvbi10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTAuM3JlbSkgIWRlZmF1bHQ7XG5cbiRoZWFkZXItc2VhcmNoX2J1dHRvbi1jb250YWluZXItdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNXMgJHRyYW5zaXRpb24tZWFzaW5nX3Nsb3dkb3duLTkwMCxcbiAgICBvcGFjaXR5IDAuMTVzIGxpbmVhciAhZGVmYXVsdDtcblxuJGhlYWRlci1zZWFyY2hfYXV0b2NvbXBsZXRlLWJveC1zaGFkb3c6IDAgNHB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTcpICFkZWZhdWx0O1xuJGhlYWRlci1zZWFyY2hfYXV0b2NvbXBsZXRlLWJhY2tncm91bmQ6ICRjb2xvcl9iYWNrZ3JvdW5kLTIwMCAhZGVmYXVsdDtcblxuLiN7JG5zfWhlYWRlci1zZWFyY2gge1xuICAgICRyb290OiAmO1xuXG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICBAaWYgKCRnbG9iYWxfaGVhZGVyLXNlYXJjaGJveC1hcy1sYXllci1icmVha3BvaW50KSB7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCRnbG9iYWxfaGVhZGVyLXNlYXJjaGJveC1hcy1sYXllci1icmVha3BvaW50KSB7XG4gICAgICAgICAgICB3aWR0aDogJGhlYWRlci1zZWFyY2gtd2lkdGgtYXMtbGF5ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1pbi1vZmZjYW52YXMge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuXG4gICAgJl9fbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSB2aXN1YWxseS1oaWRkZW4oKTtcbiAgICB9XG5cbiAgICAmX19maWVsZCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAmOmJlZm9yZSxcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7XG4gICAgICAgICAgICBsZWZ0OiAtMC41cmVtO1xuICAgICAgICAgICAgcmlnaHQ6IC0wLjVyZW07XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkaGVhZGVyLXNlYXJjaF9hdXRvY29tcGxldGUtYmFja2dyb3VuZDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTcpO1xuICAgICAgICAgICAgdG9wOiAtMC41cmVtO1xuICAgICAgICAgICAgYm90dG9tOiAtMC41cmVtO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4IDVweCAwIDA7XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMXJlbTtcbiAgICAgICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgICAgIHotaW5kZXg6IDIwOTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoJGdsb2JhbF9oZWFkZXItc2VhcmNoYm94LWFzLWxheWVyLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIC5hY3RpdmUtcG9wdXAgJiB7XG5cbiAgICAgICAgICAgICAgICAmOmJlZm9yZSxcbiAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19pbnB1dCB7XG4gICAgICAgIEBpbmNsdWRlIGZpZWxkLWlucHV0KCk7XG5cbiAgICAgICAgZm9udC1zaXplOiAkaGVhZGVyLXNlYXJjaF9mb250LXNpemUtbW9iaWxlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDIxMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49cGhvbmVMZycpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGhlYWRlci1zZWFyY2hfZm9udC1zaXplO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICArI3skcm9vdH1fX2FjdGlvbiB7XG4gICAgICAgICAgICAgICAgLmFqYXgtbG9hZGluZyAmIHtcbiAgICAgICAgICAgICAgICAgICAgI3skcm9vdH1fX2J1dHRvbi1jb250YWluZXItLXNlYXJjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgI3skcm9vdH1fX2J1dHRvbi1jb250YWluZXItLWxvYWRlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYWN0aW9uIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIHotaW5kZXg6IDIyMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJGJvcmRlci1yYWRpdXNfYmFzZTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRib3JkZXItcmFkaXVzX2Jhc2U7XG4gICAgfVxuXG4gICAgJl9fY2xvc2UtaWNvbiB7XG4gICAgICAgIHdpZHRoOiAxLjVyZW07XG4gICAgICAgIGhlaWdodDogMS41cmVtO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBsaW5lYXI7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkZ2xvYmFsX2hlYWRlci1oaWRlLXNlYXJjaC1pdGVtLXRyaWdnZXItYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgQGlmICgkZ2xvYmFsX2hlYWRlci1oaWRlLXNlYXJjaC1pdGVtLXRyaWdnZXItYnJlYWtwb2ludCA9PXRydWUpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGdsb2JhbF9oZWFkZXItaGlkZS1zZWFyY2gtaXRlbS10cmlnZ2VyLWJyZWFrcG9pbnQgKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcGF0aCB7XG4gICAgICAgICAgICBmaWxsOiAkaGVhZGVyLXNlYXJjaF9jbG9zZS1jb2xvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2Nsb3NlLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgdmlzdWFsbHktaGlkZGVuKCk7XG4gICAgfVxuXG4gICAgJl9fYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgdHJhbnNpdGlvbjogJGhlYWRlci1zZWFyY2hfYnV0dG9uLWNvbnRhaW5lci10cmFuc2l0aW9uO1xuXG4gICAgICAgICYtLXNlYXJjaCB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgICAgIH1cblxuICAgICAgICAmLS1sb2FkZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYnV0dG9uIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uKCR0eXBlOiAkaGVhZGVyLXNlYXJjaF9idXR0b24tdHlwZSxcbiAgICAgICAgICAgICRpY29uX3BvczogJ29ubHktaWNvbidcbiAgICAgICAgKTtcblxuICAgICAgICB3aWR0aDogJGhlYWRlci1zZWFyY2hfYnV0dG9uLXdpZHRoO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJGhlYWRlci1zZWFyY2hfYnV0dG9uLWJvcmRlci1yYWRpdXM7XG4gICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgdHJhbnNmb3JtOiAkaGVhZGVyLXNlYXJjaF9idXR0b24tdHJhbnNmb3JtO1xuXG4gICAgICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19idXR0b24taWNvbiB7XG4gICAgICAgIHRyYW5zZm9ybTogJGhlYWRlci1zZWFyY2hfaWNvbi10cmFuc2Zvcm07XG5cbiAgICAgICAgJi0tc2VhcmNoIHtcbiAgICAgICAgICAgIHdpZHRoOiAycmVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAycmVtO1xuXG4gICAgICAgICAgICBwYXRoIHtcbiAgICAgICAgICAgICAgICBmaWxsOiAkaGVhZGVyLXNlYXJjaF9pY29uLXNlYXJjaC1jb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLWxvYWRlciB7XG4gICAgICAgICAgICBzdHJva2U6ICRoZWFkZXItc2VhcmNoX2ljb24tbG9hZGVyLWNvbG9yO1xuICAgICAgICAgICAgd2lkdGg6IDMuMnJlbTtcbiAgICAgICAgICAgIGhlaWdodDogMy4ycmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYnV0dG9uLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgdmlzdWFsbHktaGlkZGVuKCk7XG4gICAgfVxuXG4gICAgJl9fYXV0b2NvbXBsZXRlIHtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDFyZW0pO1xuICAgICAgICBsZWZ0OiAwLjVyZW07XG4gICAgICAgIHJpZ2h0OiAwLjVyZW07XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzx0YWJsZXQnKSB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gI3skZ2xvYmFsX2hlYWRlci1oZWlnaHQtbW9iaWxlfSAtICN7JGZpZWxkX3NlbGVjdC1saW5lLWhlaWdodH0gLSA3cmVtKTtcbiAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCRnbG9iYWxfaGVhZGVyLXNlYXJjaGJveC1hcy1sYXllci1icmVha3BvaW50KSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZ2xvYmFsX2hlYWRlci1zZWFyY2hib3gtYXMtbGF5ZXItYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcbiAgICAgICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6ICRoZWFkZXItc2VhcmNoX2F1dG9jb21wbGV0ZS1ib3gtc2hhZG93O1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn0iLCIvKiBzdHlsZWxpbnQtZGlzYWJsZSBibG9jay1uby1lbXB0eSAqL1xuQG1peGluIHF0eS1jb3VudGVyX2hvb2soJHR5cGUpIHtcbn1cblxuQG1peGluIHF0eS1jb3VudGVyX3R5cGUtaG9vaygkdHlwZSkge1xufVxuXG5AbWl4aW4gcXR5LWNvdW50ZXJfc3Bhbi1ob29rKCR0eXBlKSB7XG59XG4vKiBzdHlsZWxpbnQtZW5hYmxlICovXG4iLCJAaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcbkBpbXBvcnQgJ3ZlbmRvcnMvaW5jbHVkZS1tZWRpYSc7XG5AaW1wb3J0ICd1dGlscy92aXN1YWxseS1oaWRkZW4nO1xuXG5AaW1wb3J0ICdjb21wb25lbnRzL3F0eS1jb3VudGVyL21peGluJztcblxuJGhlYWRlci11c2VyLW5hdl9pdGVtczogMyAhZGVmYXVsdDsgLy8gbnVtYmVyIG9mIGl0ZW1zIGluIGhlYWRlciB1c2VyIG5hdiAod2l0aG91dCBzZWFyY2ggaXRlbSlcblxuJGhlYWRlci11c2VyLW5hdl9pY29uLWNvbG9yOiAkY29sb3JfdHVuZG9yYSAhZGVmYXVsdDtcbiRoZWFkZXItdXNlci1uYXZfaWNvbi1jb2xvci1ob3ZlcjogJGNvbG9yX3ByaW1hcnktNTAwICFkZWZhdWx0O1xuJGhlYWRlci11c2VyLW5hdl9pY29uLXdpZHRoOiAxLjZyZW0gIWRlZmF1bHQ7XG4kaGVhZGVyLXVzZXItbmF2X2ljb24taGVpZ2h0OiAkaGVhZGVyLXVzZXItbmF2X2ljb24td2lkdGggIWRlZmF1bHQ7XG5cbi8vIFNldCB1cCB3aGVuIGxhYmVsIGluIGhlYWRlciB1c2VyIG5hdiBzaG91bGQgYmUgdmlzaWJsZVxuLy8gU3VwcG9ydGVkIHZhbHVlczogdHJ1ZSAoYWx3YXlzKSB8IGZhbHNlIChuZXZlcikgfCBicmVha3BvaW50XG4kaGVhZGVyLXVzZXItbmF2X2xhYmVsLXZpc2libGU6ICc+PXRhYmxldCcgIWRlZmF1bHQ7XG4kaGVhZGVyLXVzZXItbmF2X2xhYmVsLWZvbnQtc2l6ZTogMXJlbSAhZGVmYXVsdDtcbiRoZWFkZXItdXNlci1uYXZfbGFiZWwtZm9udC13ZWlnaHQ6IDMwMCAhZGVmYXVsdDtcbiRoZWFkZXItdXNlci1uYXZfbGFiZWwtdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhZGVmYXVsdDtcbiRoZWFkZXItdXNlci1uYXZfbGFiZWwtY29sb3I6ICRjb2xvcl90ZXh0LTUwMCAhZGVmYXVsdDtcbiRoZWFkZXItdXNlci1uYXZfbGFiZWwtY29sb3ItaG92ZXI6ICRjb2xvcl90ZXh0LTUwMCAhZGVmYXVsdDtcbiRoZWFkZXItdXNlci1uYXZfbGFiZWwtbWFyZ2luLXRvcDogMC4zcmVtICFkZWZhdWx0O1xuXG4kaGVhZGVyLXVzZXItbmF2X3F0eS1jb3VudGVyLWNvbXBhcmUtc2hvdy1lbXB0eTogZmFsc2UgIWRlZmF1bHQ7XG4kaGVhZGVyLXVzZXItbmF2X3F0eS1jb3VudGVyLXdpc2hsaXN0LXNob3ctZW1wdHk6IGZhbHNlICFkZWZhdWx0O1xuJGhlYWRlci11c2VyLW5hdl9xdHktY291bnRlci1taW5pY2FydC1zaG93LWVtcHR5OiBmYWxzZSAhZGVmYXVsdDtcbiRoZWFkZXItdXNlci1uYXZfcXR5LWNvdW50ZXItYW5pbWF0aW9uLXNob3c6IHRydWUgIWRlZmF1bHQ7XG4kaGVhZGVyLXVzZXItbmF2X3F0eS1jb3VudGVyLWFuaW1hdGlvbi10aW1lOiAkdHJhbnNpdGlvbi1kZWZhdWx0LXRpbWUgIWRlZmF1bHQ7XG5cbiRoZWFkZXItdXNlci1uYXZfcXR5LWNvdW50ZXItdG9wLW9mZnNldDogLTAuNXJlbSAhZGVmYXVsdDtcbiRoZWFkZXItdXNlci1uYXZfcXR5LWNvdW50ZXItcmlnaHQtb2Zmc2V0LW1vYmlsZTogLTAuNXJlbSAhZGVmYXVsdDtcbiRoZWFkZXItdXNlci1uYXZfcXR5LWNvdW50ZXItcmlnaHQtb2Zmc2V0LXRhYmxldDogLTFyZW0gIWRlZmF1bHQ7XG4kaGVhZGVyLXVzZXItbmF2X3F0eS1jb3VudGVyLXJpZ2h0LW9mZnNldC1kZXNrdG9wOiAtMXJlbSAhZGVmYXVsdDtcblxuLiN7JG5zfWhlYWRlci11c2VyLW5hdiB7XG4gICAgJHJvb3Q6ICY7XG5cbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEoJzxwaG9uZScpIHtcbiAgICAgICAgcGFkZGluZzogMCAwLjdyZW07XG4gICAgfVxuXG4gICAgJl9faXRlbSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgQGlmICgkZ2xvYmFsX2hlYWRlci1oaWRlLXNlYXJjaC1pdGVtLXRyaWdnZXItYnJlYWtwb2ludCA9PXRydWUpIHtcbiAgICAgICAgICAgIGZsZXg6IDEgMSAoMTAwJSAvICRoZWFkZXItdXNlci1uYXZfaXRlbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgQGVsc2UgaWYgKCRnbG9iYWxfaGVhZGVyLWhpZGUtc2VhcmNoLWl0ZW0tdHJpZ2dlci1icmVha3BvaW50ID09ZmFsc2UpIHtcbiAgICAgICAgICAgIGZsZXg6IDEgMSAoMTAwJSAvICgkaGVhZGVyLXVzZXItbmF2X2l0ZW1zICsgMSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICAgZmxleDogMSAxICgxMDAlIC8gKCRoZWFkZXItdXNlci1uYXZfaXRlbXMgKyAxKSk7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCN7JGdsb2JhbF9oZWFkZXItaGlkZS1zZWFyY2gtaXRlbS10cmlnZ2VyLWJyZWFrcG9pbnR9KSB7XG4gICAgICAgICAgICAgICAgZmxleDogMSAxICgxMDAlIC8gJGhlYWRlci11c2VyLW5hdl9pdGVtcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLS1zZWFyY2gge1xuICAgICAgICAgICAgQGlmICgkZ2xvYmFsX2hlYWRlci1oaWRlLXNlYXJjaC1pdGVtLXRyaWdnZXItYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgICAgIEBpZiAoJGdsb2JhbF9oZWFkZXItaGlkZS1zZWFyY2gtaXRlbS10cmlnZ2VyLWJyZWFrcG9pbnQgPT10cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgkZ2xvYmFsX2hlYWRlci1oaWRlLXNlYXJjaC1pdGVtLXRyaWdnZXItYnJlYWtwb2ludCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19saW5rIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPD10YWJsZXQnKSB7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgICAgICAgICN7JHJvb3R9X19pY29uIHtcbiAgICAgICAgICAgICAgICBwYXRoIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogJGhlYWRlci11c2VyLW5hdl9pY29uLWNvbG9yLWhvdmVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgI3skcm9vdH1fX2xhYmVsIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGhlYWRlci11c2VyLW5hdl9sYWJlbC1jb2xvci1ob3ZlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLXNlYXJjaCB7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19pY29uLXdyYXBwZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuXG4gICAgJl9faWNvbiB7XG4gICAgICAgIHdpZHRoOiAkaGVhZGVyLXVzZXItbmF2X2ljb24td2lkdGg7XG4gICAgICAgIGhlaWdodDogJGhlYWRlci11c2VyLW5hdl9pY29uLWhlaWdodDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuXG4gICAgICAgIHBhdGgge1xuICAgICAgICAgICAgZmlsbDogJGhlYWRlci11c2VyLW5hdl9pY29uLWNvbG9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fbGFiZWwge1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogJGhlYWRlci11c2VyLW5hdl9sYWJlbC10ZXh0LXRyYW5zZm9ybTtcbiAgICAgICAgZm9udC1zaXplOiAkaGVhZGVyLXVzZXItbmF2X2xhYmVsLWZvbnQtc2l6ZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRoZWFkZXItdXNlci1uYXZfbGFiZWwtZm9udC13ZWlnaHQ7XG4gICAgICAgIG1hcmdpbi10b3A6ICRoZWFkZXItdXNlci1uYXZfbGFiZWwtbWFyZ2luLXRvcDtcbiAgICAgICAgY29sb3I6ICRoZWFkZXItdXNlci1uYXZfbGFiZWwtY29sb3I7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICAgICBAaWYgKCRoZWFkZXItdXNlci1uYXZfbGFiZWwtdmlzaWJsZSA9PXRydWUpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgQGVsc2UgaWYgKCRoZWFkZXItdXNlci1uYXZfbGFiZWwtdmlzaWJsZSA9PWZhbHNlKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSB2aXN1YWxseS1oaWRkZW4oKTsgLy8gTGFiZWwgaXMgbm90IGRpc3BsYXllZCBvbiBzY3JlZW4gYnV0IGFjY2Vzc2libGUgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAgICAgIH1cblxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSB2aXN1YWxseS1oaWRkZW4oKTtcblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoI3skaGVhZGVyLXVzZXItbmF2X2xhYmVsLXZpc2libGV9KSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdmlzdWFsbHktdmlzaWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fcXR5LWNvdW50ZXIge1xuICAgICAgICBAaW5jbHVkZSBxdHktY291bnRlcigpO1xuXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6ICRoZWFkZXItdXNlci1uYXZfcXR5LWNvdW50ZXItcmlnaHQtb2Zmc2V0LW1vYmlsZTtcbiAgICAgICAgdG9wOiAkaGVhZGVyLXVzZXItbmF2X3F0eS1jb3VudGVyLXRvcC1vZmZzZXQ7XG4gICAgICAgIC8vIG9wYWNpdHk6IDA7IC8vbWFrZSByZWQgZG90IHZpc2libGUgYWx3YXlzXG5cbiAgICAgICAgQGlmICgkaGVhZGVyLXVzZXItbmF2X3F0eS1jb3VudGVyLXJpZ2h0LW9mZnNldC1tb2JpbGUgIT0kaGVhZGVyLXVzZXItbmF2X3F0eS1jb3VudGVyLXJpZ2h0LW9mZnNldC10YWJsZXQgKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgICAgICAgICAgcmlnaHQ6ICRoZWFkZXItdXNlci1uYXZfcXR5LWNvdW50ZXItcmlnaHQtb2Zmc2V0LXRhYmxldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoJGhlYWRlci11c2VyLW5hdl9xdHktY291bnRlci1yaWdodC1vZmZzZXQtdGFibGV0ICE9JGhlYWRlci11c2VyLW5hdl9xdHktY291bnRlci1yaWdodC1vZmZzZXQtZGVza3RvcCApIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PWxhcHRvcExnJykge1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAkaGVhZGVyLXVzZXItbmF2X3F0eS1jb3VudGVyLXJpZ2h0LW9mZnNldC1kZXNrdG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkaGVhZGVyLXVzZXItbmF2X3F0eS1jb3VudGVyLWFuaW1hdGlvbi1zaG93KSB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRoZWFkZXItdXNlci1uYXZfcXR5LWNvdW50ZXItYW5pbWF0aW9uLXRpbWU7XG4gICAgICAgIH1cblxuICAgICAgICAmLS13aXNobGlzdCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBxdHktY291bnRlcl90eXBlKCd3aXNobGlzdCcpO1xuXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiB0b3AgMC45cyBjdWJpYy1iZXppZXIoMC40MiwgMC4zMSwgMC4zNCwgMC45MyksXG4gICAgICAgICAgICAgICAgbGVmdCAwLjlzIGN1YmljLWJlemllcigwLjQyLCAwLjMxLCAwLjM0LCAwLjkzKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLW1pbmljYXJ0IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHF0eS1jb3VudGVyX3R5cGUoJ21pbmljYXJ0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICAmLS1jb21wYXJlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHF0eS1jb3VudGVyX3R5cGUoJ2NvbXBhcmUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWhhdmUtaXRlbXMge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWVtcHR5IHtcbiAgICAgICAgICAgICYjeyRyb290fV9fcXR5LWNvdW50ZXItLXdpc2hsaXN0IHtcbiAgICAgICAgICAgICAgICBAaWYgKCRoZWFkZXItdXNlci1uYXZfcXR5LWNvdW50ZXItd2lzaGxpc3Qtc2hvdy1lbXB0eSkge1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJiN7JHJvb3R9X19xdHktY291bnRlci0tbWluaWNhcnQge1xuICAgICAgICAgICAgICAgIEBpZiAoJGhlYWRlci11c2VyLW5hdl9xdHktY291bnRlci1taW5pY2FydC1zaG93LWVtcHR5KSB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmI3skcm9vdH1fX3F0eS1jb3VudGVyLS1jb21wYXJlIHtcbiAgICAgICAgICAgICAgICBAaWYgKCRoZWFkZXItdXNlci1uYXZfcXR5LWNvdW50ZXItY29tcGFyZS1zaG93LWVtcHR5KSB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0td2lzaGxpc3QtY2xvbmVkIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgICAgIHotaW5kZXg6IDEyMDA7XG4gICAgICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiB0b3AgMS4ycyBjdWJpYy1iZXppZXIoMC40MiwgMC4zMSwgMC4zNCwgMC45MyksXG4gICAgICAgICAgICAgICAgbGVmdCAxLjJzIGN1YmljLWJlemllcigwLjQyLCAwLjMxLCAwLjM0LCAwLjkzKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLXdpc2hsaXN0LWFuaW1hdGluZyB7XG4gICAgICAgICAgICBhbmltYXRpb246IG1vdmUtcXR5LWJhZGdlIDEuMnMgY3ViaWMtYmV6aWVyKDAuNDIsIDAuMzEsIDAuMzQsIDAuOTMpO1xuICAgICAgICAgICAgdG9wOiAwLjVyZW07XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgICAgICB0b3A6IDEuM3JlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgICAgIHRvcDogMy41cmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyBtb3ZlLXF0eS1iYWRnZSB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAxNSUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDg1JSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjUpO1xuICAgICAgICB9XG5cbiAgICAgICAgOTUlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fcXR5LWNvdW50ZXItc3BhbiB7XG4gICAgICAgIEBpbmNsdWRlIHF0eS1jb3VudGVyX3NwYW4oKTtcbiAgICB9XG59IiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3F0eS1jb3VudGVyL2hvb2snO1xuXG4kcXR5LWNvdW50ZXJfZm9udC1zaXplOiAxcmVtICFkZWZhdWx0O1xuJHF0eS1jb3VudGVyX2ZvbnQtd2VpZ2h0OiA3MDAgIWRlZmF1bHQ7XG4kcXR5LWNvdW50ZXJfaGVpZ2h0OiAxLjhlbSAhZGVmYXVsdDtcbiRxdHktY291bnRlcl9wYWRkaW5nOiAwIDAuNnJlbSAhZGVmYXVsdDtcbiRxdHktY291bnRlcl9ib3JkZXI6IDAgIWRlZmF1bHQ7XG4kcXR5LWNvdW50ZXJfYm9yZGVyLXJhZGl1czogMC4ycmVtICFkZWZhdWx0O1xuXG4kcXR5LWNvdW50ZXItLWRlZmF1bHQtYmFja2dyb3VuZDogJGNvbG9yX3ByaW1hcnktNTAwICFkZWZhdWx0O1xuJHF0eS1jb3VudGVyLS1kZWZhdWx0LWNvbG9yOiAkY29sb3JfdGV4dC0yMDAgIWRlZmF1bHQ7XG5cbiRxdHktY291bnRlci0tbWluaWNhcnQtYmFja2dyb3VuZDogJGNvbG9yX2Vycm9yLTUwMCAhZGVmYXVsdDtcbiRxdHktY291bnRlci0tbWluaWNhcnQtY29sb3I6ICRjb2xvcl90ZXh0LTIwMCAhZGVmYXVsdDtcblxuJHF0eS1jb3VudGVyLS1jb21wYXJlLWJhY2tncm91bmQ6ICRjb2xvcl9zZWNvbmRhcnktNTAwICFkZWZhdWx0O1xuJHF0eS1jb3VudGVyLS1jb21wYXJlLWNvbG9yOiAkY29sb3JfdGV4dC05MDAgIWRlZmF1bHQ7XG5cbiRxdHktY291bnRlci0td2lzaGxpc3QtYmFja2dyb3VuZDogJGNvbG9yX3NlY29uZGFyeS01MDAgIWRlZmF1bHQ7XG4kcXR5LWNvdW50ZXItLXdpc2hsaXN0LWNvbG9yOiAkY29sb3JfdGV4dC05MDAgIWRlZmF1bHQ7XG5cbkBtaXhpbiBxdHktY291bnRlcigkdHlwZTogJ2RlZmF1bHQnKSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHF0eS1jb3VudGVyLS1kZWZhdWx0LWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICRxdHktY291bnRlci0tZGVmYXVsdC1jb2xvcjtcbiAgICBib3JkZXI6ICRxdHktY291bnRlcl9ib3JkZXI7XG4gICAgYm9yZGVyLXJhZGl1czogJHF0eS1jb3VudGVyX2JvcmRlci1yYWRpdXM7XG4gICAgcGFkZGluZzogJHF0eS1jb3VudGVyX3BhZGRpbmc7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAkcXR5LWNvdW50ZXJfZm9udC1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiAxMDAlO1xuICAgIGZvbnQtd2VpZ2h0OiAkcXR5LWNvdW50ZXJfZm9udC13ZWlnaHQ7XG4gICAgaGVpZ2h0OiAkcXR5LWNvdW50ZXJfaGVpZ2h0O1xuICAgIC8vIFByZXZlbnQgSUUxMSBhbmQgRWRnZSBidWcgd2l0aCBiYWNrZ3JvdW5kIGFuZCByb3VuZCBib3JkZXJzXG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAgIEBpbmNsdWRlIHF0eS1jb3VudGVyX2hvb2soJHR5cGUpO1xufVxuXG5AbWl4aW4gcXR5LWNvdW50ZXJfdHlwZSgkdHlwZTogJ2RlZmF1bHQnKSB7XG4gICAgQGlmICgkdHlwZSA9PSAnd2lzaGxpc3QnKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRxdHktY291bnRlci0td2lzaGxpc3QtYmFja2dyb3VuZDtcbiAgICAgICAgY29sb3I6ICRxdHktY291bnRlci0td2lzaGxpc3QtY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICgkdHlwZSA9PSAnbWluaWNhcnQnKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRxdHktY291bnRlci0tbWluaWNhcnQtYmFja2dyb3VuZDtcbiAgICAgICAgY29sb3I6ICRxdHktY291bnRlci0tbWluaWNhcnQtY29sb3I7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIEBpZiAoJHR5cGUgPT0gJ2NvbXBhcmUnKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRxdHktY291bnRlci0tY29tcGFyZS1iYWNrZ3JvdW5kO1xuICAgICAgICBjb2xvcjogJHF0eS1jb3VudGVyLS1jb21wYXJlLWNvbG9yO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIHF0eS1jb3VudGVyX3R5cGUtaG9vaygkdHlwZSk7XG59XG5cbkBtaXhpbiBxdHktY291bnRlcl9zcGFuKCR0eXBlOiAnZGVmYXVsdCcpIHtcbiAgICBtaW4td2lkdGg6IDFjaDtcblxuICAgIEBpbmNsdWRlIHF0eS1jb3VudGVyX3NwYW4taG9vaygkdHlwZSk7XG59XG4iLCIvKiBzdHlsZWxpbnQtZGlzYWJsZSBibG9jay1uby1lbXB0eSAqL1xuQG1peGluIGhlYWRsaW5lLWhvb2soKSB7XG59XG5cbkBtaXhpbiBoZWFkbGluZS10aXRsZS1ob29rKCkge1xufVxuXG5AbWl4aW4gaGVhZGxpbmUtc3VidGl0bGUtaG9vaygpIHtcbn1cbi8qIHN0eWxlbGludC1lbmFibGUgKi9cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcbkBpbXBvcnQgJ3V0aWxzL2NvbXBvbmVudC1zcGFjaW5nJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvaGVhZGxpbmUvbWl4aW4nO1xuXG4uI3skbnN9aGVhZGxpbmUge1xuICAgIEBpbmNsdWRlIGhlYWRsaW5lKCk7XG5cbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcblxuICAgIEBpbmNsdWRlIGNvbXBvbmVudC1zcGFjaW5nKCk7XG5cbiAgICAmX190aXRsZSB7XG4gICAgICAgIEBpbmNsdWRlIGhlYWRsaW5lLXRpdGxlKCk7XG4gICAgfVxuXG4gICAgJl9fc3VidGl0bGUge1xuICAgICAgICBAaW5jbHVkZSBoZWFkbGluZS1zdWJ0aXRsZSgpO1xuICAgIH1cbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvaGVhZGxpbmUvaG9vayc7XG5cbiRoZWFkbGluZV90aXRsZS1jb2xvcjogJGNvbG9yX3RleHQtODAwICFkZWZhdWx0O1xuJGhlYWRsaW5lX3RpdGxlLWZvbnQtc2l6ZTogMi42ZW0gIWRlZmF1bHQ7XG4kaGVhZGxpbmVfdGl0bGUtZm9udC13ZWlnaHQ6IDcwMCAhZGVmYXVsdDtcbiRoZWFkbGluZV90aXRsZS10ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFkZWZhdWx0O1xuLy8gU2hvdyBmbGV4aWJsZSBkZWNvcmF0aW9uIGxpbmVzIGF0IHRoZSBzaWRlcyBvZiB0aGUgdGl0bGUuXG4kaGVhZGxpbmVfdGl0bGUtbGluZXMtZW5hYmxlZDogdHJ1ZSAhZGVmYXVsdDtcbiRoZWFkbGluZV90aXRsZS1saW5lcy1jb2xvcjogJGNvbG9yX2JvcmRlci01MDAgIWRlZmF1bHQ7XG5cbiRoZWFkbGluZV9zdWJ0aXRsZS1jb2xvcjogJGNvbG9yX2JvcmRlci03MDAgIWRlZmF1bHQ7XG4kaGVhZGxpbmVfc3VidGl0bGUtZm9udC1zaXplOiAxLjNlbSAhZGVmYXVsdDtcbiRoZWFkbGluZV9zdWJ0aXRsZS1mb250LXdlaWdodDogNDAwICFkZWZhdWx0O1xuJGhlYWRsaW5lX3N1YnRpdGxlLXRleHQtdHJhbnNmb3JtOiBub25lICFkZWZhdWx0O1xuJGhlYWRsaW5lX3N1YnRpdGxlLW1hcmdpbjogMCAhZGVmYXVsdDtcblxuQG1peGluIGhlYWRsaW5lIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgcGFkZGluZzogMmVtIDA7XG4gICAgbWFyZ2luOiAyZW0gMDtcblxuICAgIEBpbmNsdWRlIGhlYWRsaW5lLWhvb2soKTtcbn1cblxuQG1peGluIGhlYWRsaW5lLXRpdGxlKFxuICAgICRjb2xvcjogJGhlYWRsaW5lX3RpdGxlLWNvbG9yLFxuICAgICRmb250LXNpemU6ICRoZWFkbGluZV90aXRsZS1mb250LXNpemUsXG4gICAgJGZvbnQtd2VpZ2h0OiAkaGVhZGxpbmVfdGl0bGUtZm9udC13ZWlnaHQsXG4gICAgJHRleHQtdHJhbnNmb3JtOiAkaGVhZGxpbmVfdGl0bGUtdGV4dC10cmFuc2Zvcm0sXG4gICAgJGxpbmVzLWVuYWJsZWQ6ICRoZWFkbGluZV90aXRsZS1saW5lcy1lbmFibGVkLFxuICAgICRsaW5lcy1jb2xvcjogJGhlYWRsaW5lX3RpdGxlLWxpbmVzLWNvbG9yXG4pIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQ7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogJHRleHQtdHJhbnNmb3JtO1xuICAgIGZvbnQtZmFtaWx5OiBsaW5vdHlwZS1kaWRvdC1oZWFkbGluZSwgc2VyaWY7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIFxuICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG5cbiAgICBAaWYgJGxpbmVzLWVuYWJsZWQge1xuICAgICAgICAmOmJlZm9yZSxcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRsaW5lcy1jb2xvcjtcblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMC42ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBoZWFkbGluZS10aXRsZS1ob29rKCk7XG59XG5cbkBtaXhpbiBoZWFkbGluZS1zdWJ0aXRsZShcbiAgICAkY29sb3I6ICRoZWFkbGluZV9zdWJ0aXRsZS1jb2xvcixcbiAgICAkZm9udC1zaXplOiAkaGVhZGxpbmVfc3VidGl0bGUtZm9udC1zaXplLFxuICAgICRmb250LXdlaWdodDogJGhlYWRsaW5lX3N1YnRpdGxlLWZvbnQtd2VpZ2h0LFxuICAgICR0ZXh0LXRyYW5zZm9ybTogJGhlYWRsaW5lX3N1YnRpdGxlLXRleHQtdHJhbnNmb3JtXG4pIHtcbiAgICBjb2xvcjogJGNvbG9yO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0O1xuICAgIHRleHQtdHJhbnNmb3JtOiAkdGV4dC10cmFuc2Zvcm07XG4gICAgbWFyZ2luOiAkaGVhZGxpbmVfc3VidGl0bGUtbWFyZ2luO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBoZWFkbGluZS1zdWJ0aXRsZS1ob29rKCk7XG59XG4iLCIubGF6eWxvYWQsXG4ubGF6eWxvYWRpbmcsXG4uc3dpcGVyLWxhenkge1xuICAgIC8vIEFkZGVkIHRvIHByZXZlbnQgbGF6eVNpemVzIGZyb20gZGVsYXlpbmcgaW1hZ2VzIGxvYWQuXG4gICAgb3BhY2l0eTogMC4wMDE7XG59XG5cbi5sYXp5bG9hZFtkYXRhLWJnXSB7XG4gICAgb3BhY2l0eTogMTtcbn1cblxuLmxhenlsb2FkZWQsXG4uc3dpcGVyLWxhenktbG9hZGVkIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycztcbn1cblxuLy8gSW1hZ2UgdGVhc2VyIGltYWdlcyBnZXQgMTAwJSBldmVuIGJlZm9yZSBsb2FkaW5nLFxuLy8gd2hpY2ggcmVzdWx0cyBpbiBiaWcgcGxhY2Vob2xkZXIgaW1hZ2UgYW5kIGVtcHR5IHNwYWNlIGJlbG93IHRlYXNlclxuLy8gVG8gcHJldmVudCBiaWcgcGxhY2Vob2xkZXIgaW1hZ2VzIDFweCBoZWlnaHQgaXMgZm9yY2VkIG9uIG5vdCB5ZXN0IGxvYWRlZCBpbWFnZXNcbi5jcy1pbWFnZS10ZWFzZXJfX2ltYWdlLmxhenlsb2FkOm5vdCgubGF6eWxvYWRlZCkge1xuICAgIGhlaWdodDogMXB4O1xufVxuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5cbiRsaW5rcy1ibG9jay1hZGR0b193aXNobGlzdC1pY29uLWNvbG9yOiAkY29sb3JfZXJyb3ItNTAwICFkZWZhdWx0O1xuJGxpbmtzLWJsb2NrLWFkZHRvX2NvbXBhcmUtaWNvbi1jb2xvcjogJGxpbmstY29sb3JfYmFzZSAhZGVmYXVsdDtcbiRsaW5rcy1ibG9jay1hZGR0b19jb2xvcjogJGNvbG9yX3RleHQtNTAwICFkZWZhdWx0O1xuJGxpbmtzLWJsb2NrLWFkZHRvX2hvdmVyLWNvbG9yOiAkbGluay1jb2xvcl9iYXNlLWhvdmVyICFkZWZhdWx0O1xuJGxpbmtzLWJsb2NrLWFkZHRvX2ZvbnQtc2l6ZTogMS4ycmVtICFkZWZhdWx0O1xuJGxpbmtzLWJsb2NrLWFkZHRvX2ljb24td2lkdGg6IDEuMzc1ZW0gIWRlZmF1bHQ7XG4kbGlua3MtYmxvY2stYWRkdG9faWNvbi1oZWlnaHQ6IDEuMzc1ZW0gIWRlZmF1bHQ7XG5cbi4jeyRuc31saW5rcy1ibG9jay1hZGR0byB7XG4gICAgJHJvb3Q6ICY7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICAucGFnZS1wcm9kdWN0LWJ1bmRsZSAmIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICB9XG5cbiAgICAuI3skbnN9cHJvZHVjdC10aWxlX19hZGRvbiAmIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgfVxuXG4gICAgJi0tY2VudGVyZWQge1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAmX19pdGVtIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgICsgI3skcm9vdH1fX2l0ZW0ge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcblxuICAgICAgICAgICAgLiN7JG5zfXByb2R1Y3QtdGlsZS0tbGlzdCAmIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwLjVyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19saW5rIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAkbGlua3MtYmxvY2stYWRkdG9fZm9udC1zaXplO1xuICAgICAgICBjb2xvcjogJGxpbmtzLWJsb2NrLWFkZHRvX2hvdmVyLWNvbG9yO1xuICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjE1cyBsaW5lYXI7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogJGxpbmtzLWJsb2NrLWFkZHRvX2hvdmVyLWNvbG9yO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9faWNvbiB7XG4gICAgICAgIHdpZHRoOiAkbGlua3MtYmxvY2stYWRkdG9faWNvbi13aWR0aDtcbiAgICAgICAgaGVpZ2h0OiAkbGlua3MtYmxvY2stYWRkdG9faWNvbi1oZWlnaHQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMC40cmVtO1xuXG4gICAgICAgIHBhdGgge1xuICAgICAgICAgICAgZmlsbDogJGNvbG9yX2dyYXk7XG4gICAgICAgIH1cblxuICAgICAgICAmLS13aXNobGlzdCB7XG4gICAgICAgICAgICBwYXRoIHtcbiAgICAgICAgICAgICAgICBmaWxsOiAkbGlua3MtYmxvY2stYWRkdG9fd2lzaGxpc3QtaWNvbi1jb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLWNvbXBhcmUge1xuICAgICAgICAgICAgcGF0aCB7XG4gICAgICAgICAgICAgICAgZmlsbDogJGxpbmtzLWJsb2NrLWFkZHRvX2NvbXBhcmUtaWNvbi1jb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcbkBpbXBvcnQgJ3V0aWxzL3Zpc3VhbGx5LWhpZGRlbic7XG5cbi4jeyRuc31sb2dvIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAmX19pbWFnZSB7XG4gICAgICAgIGhlaWdodDogMTAwJTsgLy8gRml4ZXMgaGVpZ2h0OiBhdXRvIGJ1ZyBvbiBjaHJvbWUuXG5cbiAgICAgICAgJi0tZGVza3RvcCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAgICAgICAuY2hlY2tvdXQtaW5kZXgtaW5kZXggJiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLW1vYmlsZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jaGVja291dC1pbmRleC1pbmRleCAmIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fdGV4dCB7XG4gICAgICAgIEBpbmNsdWRlIHZpc3VhbGx5LWhpZGRlbigpO1xuICAgIH1cbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcbkBpbXBvcnQgJ3V0aWxzL2RlZXAtZ2V0L2RlZXAtZ2V0LnNjc3MnO1xuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24vbWl4aW4nO1xuQGltcG9ydCAndXRpbHMvdmlzdWFsbHktaGlkZGVuJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcHNldWRvaWNvbi9taXhpbic7XG5cbiRtZXNzYWdlc19zdWNjZXNzLWJhY2tncm91bmQtY29sb3I6ICRjb2xvcl9zdWNjZXNzLTIwMCAhZGVmYXVsdDtcbiRtZXNzYWdlc19pbmZvLWJhY2tncm91bmQtY29sb3I6ICRjb2xvcl93YXJuaW5nLTIwMCAhZGVmYXVsdDtcbiRtZXNzYWdlc19ub3RpY2UtYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yX3dhcm5pbmctMjAwICFkZWZhdWx0O1xuJG1lc3NhZ2VzX2Vycm9yLWJhY2tncm91bmQtY29sb3I6ICRjb2xvcl9lcnJvci0yMDAgIWRlZmF1bHQ7XG5cbiRtZXNzYWdlc19zdWNjZXNzLWJvcmRlcjogbm9uZSAhZGVmYXVsdDtcbiRtZXNzYWdlc19pbmZvLWJvcmRlcjogbm9uZSAhZGVmYXVsdDtcbiRtZXNzYWdlc19ub3RpY2UtYm9yZGVyOiBub25lICFkZWZhdWx0O1xuJG1lc3NhZ2VzX2Vycm9yLWJvcmRlcjogbm9uZSAhZGVmYXVsdDtcblxuJG1lc3NhZ2VzX2JvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzX2Jhc2UgIWRlZmF1bHQ7XG4kbWVzc2FnZXNfcGFkZGluZzogMS4ycmVtIDFyZW0gMXJlbSAhZGVmYXVsdDtcbiRtZXNzYWdlc190ZXh0LWNvbG9yOiAkY29sb3JfdGV4dC01MDAgIWRlZmF1bHQ7XG4kbWVzc2FnZV9pY29uLXdpZHRoOiAycmVtICFkZWZhdWx0O1xuJG1lc3NhZ2VfaWNvbi1oZWlnaHQ6ICRtZXNzYWdlX2ljb24td2lkdGggIWRlZmF1bHQ7XG5cbiRtZXNzYWdlX2Nsb3NlLWJ1dHRvbi13aWR0aDogMS4ycmVtICFkZWZhdWx0O1xuJG1lc3NhZ2VfY2xvc2UtYnV0dG9uLWhlaWdodDogJG1lc3NhZ2VfY2xvc2UtYnV0dG9uLXdpZHRoICFkZWZhdWx0O1xuXG4kbWVzc2FnZXNfaXMtZml4ZWQ6IGRlZXAtZ2V0KFxuICAgICR2aWV3LXhtbCxcbiAgICB2YXJzLFxuICAgIE1hZ2VudG9fVGhlbWUsXG4gICAgZ2xvYmFsX21lc3NhZ2VzLFxuICAgIGlzX2ZpeGVkXG4pICFkZWZhdWx0O1xuXG4kbWVzc2FnZXNfaGFzLWNsb3NlLWJ1dHRvbjogZGVlcC1nZXQoXG4gICAgJHZpZXcteG1sLFxuICAgIHZhcnMsXG4gICAgTWFnZW50b19UaGVtZSxcbiAgICBnbG9iYWxfbWVzc2FnZXMsXG4gICAgaGFzX2Nsb3NlX2J1dHRvblxuKSAhZGVmYXVsdDtcblxuLm1lc3NhZ2VzIHtcbiAgICBtYXgtd2lkdGg6ICRwYWdlX21heC13aWR0aDtcbiAgICBtYXJnaW46IDAgYXV0bztcbn1cblxuLiN7JG5zfW1lc3NhZ2VzX19tZXNzYWdlLFxuLm1lc3NhZ2Uge1xuICAgIG1hcmdpbjogMXJlbSAwO1xuICAgIHBhZGRpbmc6ICRtZXNzYWdlc19wYWRkaW5nO1xuICAgIGJvcmRlci1yYWRpdXM6ICRtZXNzYWdlc19ib3JkZXItcmFkaXVzO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMS4ycmVtIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRtZXNzYWdlX2ljb24td2lkdGggJG1lc3NhZ2VfaWNvbi1oZWlnaHQ7XG4gICAgcGFkZGluZy1sZWZ0OiA0LjNyZW07XG5cbiAgICBAaWYgKCRtZXNzYWdlc19oYXMtY2xvc2UtYnV0dG9uKSB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDQuNXJlbTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cbn1cblxuLiN7JG5zfW1lc3NhZ2VzX19tZXNzYWdlLS1zdWNjZXNzLFxuLm1lc3NhZ2Uuc3VjY2VzcyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG1lc3NhZ2VzX3N1Y2Nlc3MtYmFja2dyb3VuZC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltYWdlcy9pY29ucy9tZXNzYWdlcy9pY29uLXN1Y2Nlc3Muc3ZnJyk7XG4gICAgYm9yZGVyOiAkbWVzc2FnZXNfc3VjY2Vzcy1ib3JkZXI7XG59XG5cbi4jeyRuc31tZXNzYWdlc19fbWVzc2FnZS0tbm90aWNlLFxuLm1lc3NhZ2Uud2FybmluZyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG1lc3NhZ2VzX25vdGljZS1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1hZ2VzL2ljb25zL21lc3NhZ2VzL2ljb24td2FybmluZy5zdmcnKTtcbiAgICBib3JkZXI6ICRtZXNzYWdlc19ub3RpY2UtYm9yZGVyO1xufVxuXG4uI3skbnN9bWVzc2FnZXNfX21lc3NhZ2UtLWluZm8sXG4ubWVzc2FnZS5pbmZvLFxuLm1lc3NhZ2Uubm90aWNlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWVzc2FnZXNfaW5mby1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1hZ2VzL2ljb25zL21lc3NhZ2VzL2ljb24taW5mby5zdmcnKTtcbiAgICBib3JkZXI6ICRtZXNzYWdlc19pbmZvLWJvcmRlcjtcbn1cblxuLiN7JG5zfW1lc3NhZ2VzX19tZXNzYWdlLS1lcnJvcixcbi5tZXNzYWdlLmVycm9yIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWVzc2FnZXNfZXJyb3ItYmFja2dyb3VuZC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltYWdlcy9pY29ucy9tZXNzYWdlcy9pY29uLWVycm9yLnN2ZycpO1xuICAgIGJvcmRlcjogJG1lc3NhZ2VzX2Vycm9yLWJvcmRlcjtcbn1cblxuLiN7JG5zfW1lc3NhZ2VzX190ZXh0LFxuLm1lc3NhZ2Ugc3BhbiB7XG4gICAgY29sb3I6ICRtZXNzYWdlc190ZXh0LWNvbG9yO1xuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xufVxuXG4uI3skbnN9bWVzc2FnZXMge1xuICAgICRyb290OiAmO1xuXG4gICAgJi0tc3BhY2UtdG9wIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMS41cmVtO1xuICAgIH1cblxuICAgIEBpZiAoJG1lc3NhZ2VzX2lzLWZpeGVkKSB7XG4gICAgICAgIC5wYWdlLm1lc3NhZ2VzICYge1xuICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICAgICAgYm90dG9tOiAxcmVtO1xuICAgICAgICAgICAgbGVmdDogMnJlbTtcbiAgICAgICAgICAgIHdpZHRoOiAwO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiBtaW4oY2FsYygxMDB2dyAtIDRyZW0pLCA1MHJlbSk7XG4gICAgICAgICAgICB6LWluZGV4OiAtNDtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tYWN0aXZlLFxuICAgICAgICAmW2RhdGEtcm9sZT0nY2hlY2tvdXQtbWVzc2FnZXMnXSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgei1pbmRleDogNzAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGlmICgkbWVzc2FnZXNfaGFzLWNsb3NlLWJ1dHRvbikge1xuICAgICAgICAmX19jbG9zZSB7XG4gICAgICAgICAgICB3aWR0aDogJG1lc3NhZ2VfY2xvc2UtYnV0dG9uLXdpZHRoO1xuICAgICAgICAgICAgaGVpZ2h0OiAkbWVzc2FnZV9jbG9zZS1idXR0b24taGVpZ2h0O1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgcmlnaHQ6IDJyZW07XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKDkwZGVnKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnLi4vaW1hZ2VzL2ljb25zL2Nsb3NlLnN2ZycpIG5vLXJlcGVhdDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICAgICAgICYtc3BhbiB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdmlzdWFsbHktaGlkZGVuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuI3skbnN9bWVzc2FnZXMtLWFjdGl2ZSAmIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uL21peGluJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZmllbGQvbWl4aW4nO1xuQGltcG9ydCAndXRpbHMvdmlzdWFsbHktaGlkZGVuJztcbkBpbXBvcnQgJ2V0Yy92aWV3LnNjc3MnO1xuQGltcG9ydCAndXRpbHMvZGVlcC1nZXQvZGVlcC1nZXQuc2Nzcyc7XG5cbiRtaW5pY2FydC1vZmZjYW52YXM6IGRlZXAtZ2V0KFxuICAgICR2aWV3LXhtbCxcbiAgICB2YXJzLFxuICAgIE1hZ2VudG9fQ2hlY2tvdXQsXG4gICAgbWluaWNhcnRfb2ZmY2FudmFzLFxuICAgIGVuYWJsZWRcbikgIWRlZmF1bHQ7XG5cbiRtaW5pY2FydC1wcm9kdWN0X2FjdGlvbi1pY29uLWNvbG9yOiAkY29sb3JfcHJpbWFyeS01MDAgIWRlZmF1bHQ7XG4kbWluaWNhcnQtcHJvZHVjdF9hY3Rpb24taWNvbi1jb2xvci1ob3ZlcjogJGNvbG9yX3ByaW1hcnktODAwICFkZWZhdWx0O1xuXG4kbWluaWNhcnQtb2ZmY2FudmFzLXByb2R1Y3RfYWN0aW9uLWljb24tY29sb3I6ICRjb2xvcl90ZXh0LTgwMCAhZGVmYXVsdDtcbiRtaW5pY2FydC1vZmZjYW52YXMtcHJvZHVjdF9hY3Rpb24taWNvbi1jb2xvci0taG92ZXI6ICRtaW5pY2FydC1vZmZjYW52YXMtcHJvZHVjdF9hY3Rpb24taWNvbi1jb2xvciAhZGVmYXVsdDtcblxuJG1pbmljYXJ0LXByb2R1Y3RfYnJhbmQtZm9udC1zaXplOiAxLjJyZW0gIWRlZmF1bHQ7XG4kbWluaWNhcnQtcHJvZHVjdF9icmFuZC1jb2xvcjogJGNvbG9yX3RleHQtNDAwICFkZWZhdWx0O1xuJG1pbmljYXJ0LXByb2R1Y3RfYnJhbmQtYWxpZ25tZW50OiBsZWZ0ICFkZWZhdWx0O1xuXG4kbWluaWNhcnQtcHJvZHVjdF9vdmVydmlldy1mb250LXNpemU6IDEuM3JlbSAhZGVmYXVsdDtcbiRtaW5pY2FydC1wcm9kdWN0X25hbWUtY29sb3I6ICRjb2xvcl90ZXh0LTgwMCAhZGVmYXVsdDtcbiRtaW5pY2FydC1wcm9kdWN0X25hbWUtY29sb3ItaG92ZXI6ICRjb2xvcl90ZXh0LTgwMCAhZGVmYXVsdDtcbiRtaW5pY2FydC1wcm9kdWN0X25hbWUtcGFkZGluZzogMS4ycmVtICFkZWZhdWx0O1xuJG1pbmljYXJ0LXByb2R1Y3RfbmFtZS1mb250LXdlaWdodDogNjAwICFkZWZhdWx0O1xuXG4kbWluaWNhcnQtcHJvZHVjdC1vcHRpb25zLXRpdGxlLWNvbG9yOiAkY29sb3JfdGV4dC02MDAgIWRlZmF1bHQ7XG4kbWluaWNhcnQtcHJvZHVjdF9vcHRpb25zLWZvbnQtc2l6ZTogMS4ycmVtICFkZWZhdWx0O1xuJG1pbmljYXJ0LXByb2R1Y3Rfb3B0aW9ucy1sYWJlbC1jb2xvcjogJGNvbG9yX3RleHQtNDAwICFkZWZhdWx0O1xuJG1pbmljYXJ0LXByb2R1Y3Rfb3B0aW9ucy12YWx1ZS1jb2xvcjogJGNvbG9yX3RleHQtNDAwICFkZWZhdWx0O1xuJG1pbmljYXJ0LXByb2R1Y3Rfb3B0aW9uc190b2dnbGUtcGFkZGluZzogMS4ycmVtICFkZWZhdWx0O1xuJG1pbmljYXJ0LXByb2R1Y3Qtb3B0aW9uc190b2dnbGUtZGlzYWJsZTogZmFsc2UgIWRlZmF1bHQ7XG5cbiRtaW5pY2FydC1vZmZjYW52YXMtcHJvZHVjdC1vcHRpb25zLXRpdGxlLWNvbG9yOiAkY29sb3JfdGV4dC04MDAgIWRlZmF1bHQ7XG4kbWluaWNhcnQtb2ZmY2FudmFzLXByb2R1Y3Rfb3B0aW9ucy10aXRsZS1mb250LXNpemU6IDEuM3JlbSAhZGVmYXVsdDtcbiRtaW5pY2FydC1vZmZjYW52YXMtcHJvZHVjdF9vcHRpb25zLWxhYmVsLWZvbnQtc2l6ZTogMS4xcmVtICFkZWZhdWx0O1xuJG1pbmljYXJ0LW9mZmNhbnZhcy1wcm9kdWN0LW9wdGlvbnMtbGFiZWwtY29sb3I6ICRjb2xvcl90ZXh0LTgwMCAhZGVmYXVsdDtcbiRtaW5pY2FydC1vZmZjYW52YXMtcHJvZHVjdC1vcHRpb25zLWxhYmVsLWZvbnQtd2VpZ2h0OiA3MDAgIWRlZmF1bHQ7XG5cbiRtaW5pY2FydC1vZmZjYW52YXMtcHJvZHVjdF9hY3Rpb24taWNvbi1zaXplOiAycmVtICFkZWZhdWx0O1xuXG4kbWluaWNhcnQtcHJvZHVjdF9wcmljZS1jb2xvcjogJGNvbG9yX3RleHQtODAwICFkZWZhdWx0O1xuJG1pbmljYXJ0LXByb2R1Y3Rfc2hvdy1zcGVjaWFsLXByaWNlOiB0cnVlICFkZWZhdWx0O1xuXG4kbWluaWNhcnQtcHJvZHVjdF9xdHktZW5hYmxlOiB0cnVlICFkZWZhdWx0O1xuJG1pbmljYXJ0LXByb2R1Y3RfcXR5LWhlaWdodDogM3JlbSAhZGVmYXVsdDtcbiRtaW5pY2FydC1wcm9kdWN0X3F0eS1mb250LXNpemU6IDEuMnJlbSAhZGVmYXVsdDtcbiRtaW5pY2FydC1wcm9kdWN0X3F0eS1idXR0b24tdHlwZTogJGJ1dHRvbl9kZWZhdWx0LXR5cGUgIWRlZmF1bHQ7XG4kbWluaWNhcnQtcHJvZHVjdF9xdHktYnV0dG9uLWljb24tcG9zOiAnb25seS1pY29uJyAhZGVmYXVsdDtcblxuLiN7JG5zfW1pbmljYXJ0LXByb2R1Y3Qge1xuICAgICRyb290OiAmO1xuXG4gICAgZGlzcGxheTogZmxleDtcblxuICAgICZfX2ltYWdlLWNvbnRhaW5lciB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG5cbiAgICAgICAgLnByb2R1Y3QtaW1hZ2Utd3JhcHBlciB7XG4gICAgICAgICAgICB6LWluZGV4OiBhdXRvO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9faW1hZ2Uge1xuICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICB9XG5cbiAgICAmX19vdmVydmlldyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgfVxuXG4gICAgJl9fZGV0YWlscyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgICZfX2JyYW5kLXdyYXBwZXIge1xuICAgICAgICB0ZXh0LWFsaWduOiAkbWluaWNhcnQtcHJvZHVjdF9icmFuZC1hbGlnbm1lbnQ7XG4gICAgfVxuXG4gICAgJl9fYnJhbmQge1xuICAgICAgICBmb250LXNpemU6ICRtaW5pY2FydC1wcm9kdWN0X2JyYW5kLWZvbnQtc2l6ZTtcbiAgICAgICAgY29sb3I6ICRtaW5pY2FydC1wcm9kdWN0X2JyYW5kLWNvbG9yO1xuICAgIH1cblxuICAgICZfX25hbWUtd3JhcHBlciB7XG4gICAgICAgIGZsZXgtYmFzaXM6IDU1JTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRtaW5pY2FydC1wcm9kdWN0X25hbWUtcGFkZGluZztcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgZm9udC1zaXplOiAkbWluaWNhcnQtcHJvZHVjdF9vdmVydmlldy1mb250LXNpemU7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49cGhvbmVMZycpIHtcbiAgICAgICAgICAgIGZsZXgtYmFzaXM6IDcwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkbWluaWNhcnQtb2ZmY2FudmFzIHtcbiAgICAgICAgICAgIGZsZXgtYmFzaXM6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX25hbWUge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGNvbG9yOiAkbWluaWNhcnQtcHJvZHVjdF9uYW1lLWNvbG9yO1xuICAgICAgICBmb250LXdlaWdodDogJG1pbmljYXJ0LXByb2R1Y3RfbmFtZS1mb250LXdlaWdodDtcblxuICAgICAgICAmOnZpc2l0ZWQsXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgY29sb3I6ICRtaW5pY2FydC1wcm9kdWN0X25hbWUtY29sb3ItaG92ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgJG1pbmljYXJ0LW9mZmNhbnZhcyB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19pdGVtLXByaWNpbmcge1xuICAgICAgICBAaWYgJG1pbmljYXJ0LW9mZmNhbnZhcyB7XG4gICAgICAgICAgICBvcmRlcjogMztcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkbWluaWNhcnQtcHJvZHVjdF9zaG93LXNwZWNpYWwtcHJpY2Uge1xuICAgICAgICAgICAgJi0td2l0aC1zcGVjaWFsIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgICAgICAgICAgICAgLm9sZC1wcmljZSB7XG4gICAgICAgICAgICAgICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6ICRtaW5pY2FydC1wcm9kdWN0X292ZXJ2aWV3LWZvbnQtc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkcHJpY2Vfb2xkLWNvbG9yO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgI3skcm9vdH1fX3ByaWNlIHtcbiAgICAgICAgICAgICAgICAgICAgLnByaWNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkcHJpY2Vfc3BlY2lhbC1jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiBub3QgJG1pbmljYXJ0LXByb2R1Y3Rfc2hvdy1zcGVjaWFsLXByaWNlIHtcbiAgICAgICAgICAgIC5vbGQtcHJpY2Uge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19wcmljZSB7XG4gICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRtaW5pY2FydC1wcm9kdWN0X292ZXJ2aWV3LWZvbnQtc2l6ZTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBjb2xvcjogJG1pbmljYXJ0LXByb2R1Y3RfcHJpY2UtY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgJG1pbmljYXJ0LW9mZmNhbnZhcyB7XG4gICAgICAgICAgICAucHJpY2UtaW5jbHVkaW5nLXRheCxcbiAgICAgICAgICAgIC5wcmljZS1leGNsdWRpbmctdGF4IHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRtaW5pY2FydC1wcm9kdWN0X292ZXJ2aWV3LWZvbnQtc2l6ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnByaWNlIHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fcHJpY2UtbGFiZWwsXG4gICAgJl9fb3B0aW9ucy1zdWJ0aXRsZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJl9fb3B0aW9ucy10aXRsZSB7XG4gICAgICAgIEBpZiAoJG1pbmljYXJ0LXByb2R1Y3Qtb3B0aW9uc190b2dnbGUtZGlzYWJsZSkge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRtaW5pY2FydC1wcm9kdWN0X29wdGlvbnMtZm9udC1zaXplO1xuICAgICAgICAgICAgY29sb3I6ICRtaW5pY2FydC1wcm9kdWN0LW9wdGlvbnMtdGl0bGUtY29sb3I7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgICAgICZbYXJpYS1leHBhbmRlZD0ndHJ1ZSddIHtcbiAgICAgICAgICAgICAgICA+ICN7JHJvb3R9X19vcHRpb25zLXRpdGxlLXN2ZyB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkbWluaWNhcnQtb2ZmY2FudmFzIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJG1pbmljYXJ0LW9mZmNhbnZhcy1wcm9kdWN0X29wdGlvbnMtdGl0bGUtZm9udC1zaXplO1xuICAgICAgICAgICAgY29sb3I6ICRtaW5pY2FydC1vZmZjYW52YXMtcHJvZHVjdC1vcHRpb25zLXRpdGxlLWNvbG9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fb3B0aW9ucy10aXRsZS1zdmcge1xuICAgICAgICB3aWR0aDogMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBtYXJnaW4tbGVmdDogMC41cmVtO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJHRyYW5zaXRpb24tZGVmYXVsdC10aW1lXG4gICAgICAgICAgICAkdHJhbnNpdGlvbi1lYXNpbmdfc2xvd2Rvd24tOTAwO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cblxuICAgICZfX29wdGlvbnMtd3JhcHBlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBtYXJnaW4tdG9wOiAtMC40cmVtO1xuICAgICAgICBmbGV4LWJhc2lzOiAxMDAlO1xuXG4gICAgICAgIEBpZiAkbWluaWNhcnQtb2ZmY2FudmFzIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAkbWluaWNhcnQtcHJvZHVjdF9vcHRpb25zX3RvZ2dsZS1wYWRkaW5nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fb3B0aW9ucy1ncm91cCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgJi0tcXR5IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcblxuICAgICAgICAgICAgI3skcm9vdH1fX29wdGlvbnMtd3JhcHBlciArICYge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDEuNXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX29wdGlvbnMtY29udGVudCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgIEBpZiAoJG1pbmljYXJ0LXByb2R1Y3Qtb3B0aW9uc190b2dnbGUtZGlzYWJsZSkge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkbWluaWNhcnQtb2ZmY2FudmFzIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19vcHRpb25zLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAkbWluaWNhcnQtcHJvZHVjdF9vcHRpb25zLWZvbnQtc2l6ZTtcbiAgICAgICAgY29sb3I6ICRtaW5pY2FydC1wcm9kdWN0X29wdGlvbnMtbGFiZWwtY29sb3I7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICc6JztcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkbWluaWNhcnQtb2ZmY2FudmFzIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJG1pbmljYXJ0LW9mZmNhbnZhcy1wcm9kdWN0X29wdGlvbnMtbGFiZWwtZm9udC1zaXplO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6ICRtaW5pY2FydC1vZmZjYW52YXMtcHJvZHVjdC1vcHRpb25zLWxhYmVsLWZvbnQtd2VpZ2h0O1xuICAgICAgICAgICAgY29sb3I6ICRtaW5pY2FydC1vZmZjYW52YXMtcHJvZHVjdC1vcHRpb25zLWxhYmVsLWNvbG9yO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX29wdGlvbnMtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6ICRtaW5pY2FydC1wcm9kdWN0X29wdGlvbnMtZm9udC1zaXplO1xuICAgICAgICBjb2xvcjogJG1pbmljYXJ0LXByb2R1Y3Rfb3B0aW9ucy12YWx1ZS1jb2xvcjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgJl9fdmFsdWUge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAucHJpY2Uge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkbWluaWNhcnQtcHJvZHVjdF9wcmljZS1jb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nLXRvcDogJG1pbmljYXJ0LXByb2R1Y3Rfb3B0aW9uc190b2dnbGUtcGFkZGluZztcbiAgICB9XG5cbiAgICAmX19hY3Rpb24td3JhcHBlciB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xuICAgIH1cblxuICAgIEBpZiAoJG1pbmljYXJ0LXByb2R1Y3RfcXR5LWVuYWJsZSkge1xuICAgICAgICAmX19xdHksXG4gICAgICAgIC5jcy1xdHktaW5jcmVtZW50IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4OiAxIDAgOXJlbTtcbiAgICAgICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fcXR5LWxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmX19xdHktaW5wdXQge1xuICAgICAgICAgICAgQGluY2x1ZGUgZmllbGQtaW5wdXQoKTtcblxuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgaGVpZ2h0OiAkbWluaWNhcnQtcHJvZHVjdF9xdHktaGVpZ2h0O1xuICAgICAgICAgICAgd2lkdGg6IDRyZW07XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDRyZW07XG4gICAgICAgICAgICBmb250LXNpemU6ICRtaW5pY2FydC1wcm9kdWN0X3F0eS1mb250LXNpemU7XG4gICAgICAgIH1cblxuICAgICAgICAmX19xdHktYnV0dG9uIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbihcbiAgICAgICAgICAgICAgICAkdHlwZTogJG1pbmljYXJ0LXByb2R1Y3RfcXR5LWJ1dHRvbi10eXBlLFxuICAgICAgICAgICAgICAgICRpY29uX3BvczogJG1pbmljYXJ0LXByb2R1Y3RfcXR5LWJ1dHRvbi1pY29uLXBvc1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIHdpZHRoOiAzcmVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAkbWluaWNhcnQtcHJvZHVjdF9xdHktaGVpZ2h0O1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX3F0eS1idXR0b24tc3BhbiB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b25fc3BhbihcbiAgICAgICAgICAgICAgICAkdHlwZTogJG1pbmljYXJ0LXByb2R1Y3RfcXR5LWJ1dHRvbi10eXBlLFxuICAgICAgICAgICAgICAgICRpY29uX3BvczogJG1pbmljYXJ0LXByb2R1Y3RfcXR5LWJ1dHRvbi1pY29uLXBvc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX3F0eS1idXR0b24taWNvbiB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b25faWNvbihcbiAgICAgICAgICAgICAgICAkdHlwZTogJG1pbmljYXJ0LXByb2R1Y3RfcXR5LWJ1dHRvbi10eXBlLFxuICAgICAgICAgICAgICAgICRpY29uX3BvczogJG1pbmljYXJ0LXByb2R1Y3RfcXR5LWJ1dHRvbi1pY29uLXBvc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgICAmX19xdHksXG4gICAgICAgIC5jcy1xdHktaW5jcmVtZW50IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19hY3Rpb24sXG4gICAgJl9fb3B0aW9ucy10aXRsZSB7XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgI3skcm9vdH1fX29wdGlvbnMtdGl0bGUtc3ZnLFxuICAgICAgICAgICAgI3skcm9vdH1fX2FjdGlvbi1pY29uIHtcbiAgICAgICAgICAgICAgICAqIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogJG1pbmljYXJ0LXByb2R1Y3RfYWN0aW9uLWljb24tY29sb3ItaG92ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYWN0aW9uLWljb24ge1xuICAgICAgICB3aWR0aDogMS42cmVtO1xuICAgICAgICBoZWlnaHQ6IDEuNnJlbTtcblxuICAgICAgICBAaWYgJG1pbmljYXJ0LW9mZmNhbnZhcyB7XG4gICAgICAgICAgICB3aWR0aDogJG1pbmljYXJ0LW9mZmNhbnZhcy1wcm9kdWN0X2FjdGlvbi1pY29uLXNpemU7XG4gICAgICAgICAgICBoZWlnaHQ6ICRtaW5pY2FydC1vZmZjYW52YXMtcHJvZHVjdF9hY3Rpb24taWNvbi1zaXplO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYWN0aW9uLWljb24sXG4gICAgJl9fb3B0aW9ucy10aXRsZS1zdmcge1xuICAgICAgICAqIHtcbiAgICAgICAgICAgIGZpbGw6ICRtaW5pY2FydC1wcm9kdWN0X2FjdGlvbi1pY29uLWNvbG9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYWN0aW9uLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgdmlzdWFsbHktaGlkZGVuKCk7XG4gICAgfVxuXG4gICAgQGlmICRtaW5pY2FydC1vZmZjYW52YXMge1xuICAgICAgICAmX19vcHRpb25zLXRpdGxlIHtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICN7JHJvb3R9X19vcHRpb25zLXRpdGxlLXN2ZyB7XG4gICAgICAgICAgICAgICAgICAgICoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogJG1pbmljYXJ0LW9mZmNhbnZhcy1wcm9kdWN0X2FjdGlvbi1pY29uLWNvbG9yLS1ob3ZlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZfX29wdGlvbnMtdGl0bGUtc3ZnIHtcbiAgICAgICAgICAgICoge1xuICAgICAgICAgICAgICAgIGZpbGw6ICRtaW5pY2FydC1vZmZjYW52YXMtcHJvZHVjdF9hY3Rpb24taWNvbi1jb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qKipcbiAqIEhpZGUgbmF0aXZlIGJyb3dzZXIncyBzY3JvbGxiYXJcbiAqL1xuXG5AbWl4aW4gaGlkZS1zY3JvbGxiYXIge1xuICAgIG92ZXJmbG93OiAtbW96LXNjcm9sbGJhcnMtbm9uZTtcbiAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIHdpZHRoOiAwO1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHdpZHRoOiAwO1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgfVxufVxuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd2ZW5kb3JzL2luY2x1ZGUtbWVkaWEnO1xuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24vbWl4aW4nO1xuQGltcG9ydCAnZXRjL3ZpZXcuc2Nzcyc7XG5AaW1wb3J0ICd1dGlscy9kZWVwLWdldC9kZWVwLWdldC5zY3NzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcHNldWRvaWNvbi9taXhpbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL19zbGlkZXIvbWl4aW4nO1xuQGltcG9ydCAnY29tcG9uZW50cy90eXBvZ3JhcGh5L21peGluJztcblxuJG1pbmljYXJ0LW9mZmNhbnZhczogZGVlcC1nZXQoXG4gICAgJHZpZXcteG1sLFxuICAgIHZhcnMsXG4gICAgTWFnZW50b19DaGVja291dCxcbiAgICBtaW5pY2FydF9vZmZjYW52YXMsXG4gICAgZW5hYmxlZFxuKSAhZGVmYXVsdDtcblxuJG1pbmljYXJ0X29mZmNhbnZhcy13cmFwcGVyOiAwICFkZWZhdWx0O1xuJG1pbmljYXJ0X29mZmNhbnZhcy1wYWRkaW5nOiAxLjVyZW0gMnJlbSAhZGVmYXVsdDtcbiRtaW5pY2FydF9vZmZjYW52YXMtdGl0bGUtcGFkZGluZzogMXJlbSAycmVtICFkZWZhdWx0O1xuJG1pbmljYXJ0X29mZmNhbnZhcy10aXRsZS1oZWlnaHQ6IDUuMXJlbSAhZGVmYXVsdDtcbiRtaW5pY2FydF9vZmZjYW52YXMtaXRlbS1wYWRkaW5nOiAxLjVyZW0gMnJlbSAhZGVmYXVsdDtcbiRtaW5pY2FydF9vZmZjYW52YXMtZnJlZS1zaGlwcGluZy1pbmRpY2F0b3I6IGZhbHNlICFkZWZhdWx0O1xuXG4kbWluaWNhcnRfX2Nsb3NlLWluY2x1ZGUtcHNldWRvaWNvbjogdHJ1ZSAhZGVmYXVsdDtcbiRtaW5pY2FydF9fY2xvc2UtcHNldWRvaWNvbi10eXBlOiAncGx1cycgIWRlZmF1bHQ7XG4kbWluaWNhcnRfX2Nsb3NlLXdpZHRoOiAycmVtICFkZWZhdWx0O1xuJG1pbmljYXJ0X19jbG9zZS1saW5lLXdpZHRoOiAwLjJyZW0gIWRlZmF1bHQ7XG4kbWluaWNhcnRfX2Nsb3NlLWNvbG9yOiAkY29sb3JfdGV4dC02MDAgIWRlZmF1bHQ7XG4kbWluaWNhcnRfX2Nsb3NlLWNvbG9yLWhvdmVyOiAkY29sb3JfdGV4dC01MDAgIWRlZmF1bHQ7XG5cbiRtaW5pY2FydF9vZmZjYW52YXMtY2Fyb3VzZWwtYmFja2dyb3VuZDogJGNvbG9yX2JhY2tncm91bmQtMjAwICFkZWZhdWx0O1xuJG1pbmljYXJ0X29mZmNhbnZhcy1jYXJvdXNlbC1zcGFjaW5nOiAycmVtICFkZWZhdWx0O1xuJG1pbmljYXJ0X29mZmNhbnZhcy1jYXJvdXNlbC1wb3NpdGlvbjogJ2NlbnRlcicgIWRlZmF1bHQ7IC8vIERlZmF1bHQgdmFsdWU6IGNlbnRlci4gUG9zc2libGUgdmFsdWVzOiBjZW50ZXIgLyB0b3AgLyBib3R0b21cbiRtaW5pY2FydF9vZmZjYW52YXMtY2Fyb3VzZWwtcG9zaXRpb24tb2Zmc2V0OiAkbWluaWNhcnRfb2ZmY2FudmFzLWNhcm91c2VsLXNwYWNpbmcgIWRlZmF1bHQ7XG4kbWluaWNhcnRfb2ZmY2FudmFzLWNhcm91c2VsLWJ1dHRvbi1wb3NpdGlvbjogJ2NlbnRlcicgIWRlZmF1bHQ7IC8vIERlZmF1bHQgdmFsdWU6IGNlbnRlci4gUG9zc2libGUgdmFsdWVzOiBjZW50ZXIgLyBsZWZ0IC8gcmlnaHRcbiRtaW5pY2FydF9vZmZjYW52YXMtY2Fyb3VzZWwtYnV0dG9uLWJvcmRlcjogMXB4IHNvbGlkICRjb2xvcl9ib3JkZXItNTAwICFkZWZhdWx0O1xuJG1pbmljYXJ0X29mZmNhbnZhcy1jYXJvdXNlbC1idXR0b24tc3BhY2luZzogM3JlbSAhZGVmYXVsdDtcbi8qIHByZXR0aWVyLWlnbm9yZSAqL1xuJG1pbmljYXJ0X29mZmNhbnZhcy1jYXJvdXNlbC10cmFuc2l0aW9uOiBvcGFjaXR5ICR0cmFuc2l0aW9uLWRlZmF1bHQtdGltZSBlYXNlLWluICFkZWZhdWx0O1xuJG1pbmljYXJ0X29mZmNhbnZhcy1jYXJvdXNlbC1zcGlubmVyLXNpemU6IDExcmVtICFkZWZhdWx0O1xuJG1pbmljYXJ0X29mZmNhbnZhcy1jYXJvdXNlbC1zaG93LWJyZWFrcG9pbnQ6ICc+PWxhcHRvcCcgIWRlZmF1bHQ7XG5cbiRtaW5pY2FydF9wYWRkaW5nOiAycmVtIDAgIWRlZmF1bHQ7XG5cbiRtaW5pY2FydF9jbG9zZS1idXR0b24tY29sb3I6ICRjb2xvcl90ZXh0LTIwMCAhZGVmYXVsdDtcblxuJG1pbmljYXJ0X2l0ZW0tYm9yZGVyOiAxcHggc29saWQgJGNvbG9yX2JvcmRlci01MDAgIWRlZmF1bHQ7XG4kbWluaWNhcnRfaXRlbS1oZWFkbGluZS1jb2xvcjogJGNvbG9yX3RleHQtODAwICFkZWZhdWx0O1xuJG1pbmljYXJ0X2l0ZW0tcGFkZGluZzogMS41cmVtICFkZWZhdWx0O1xuXG4kbWluaWNhcnRfYmFja2dyb3VuZDogJGNvbG9yX2JhY2tncm91bmQtNTAwICFkZWZhdWx0O1xuJG1pbmljYXJ0X2JveC1zaGFkb3c6IDAgMCAyMXB4IDAgcmdiYSgkY29sb3JfYmFja2dyb3VuZC04MDAsIDAuMjcpICFkZWZhdWx0O1xuXG4kbWluaWNhcnRfd2lkdGg6IDQwcmVtICFkZWZhdWx0O1xuJG1pbmljYXJ0X2FjdGlvbnMtbWluLWhlaWdodDogMTYuNHJlbSAhZGVmYXVsdDtcblxuJG1pbmljYXJ0X2NvbnRlbnQtYmFja2dyb3VuZDogJGNvbG9yX2JhY2tncm91bmQtMjAwICFkZWZhdWx0O1xuJG1pbmljYXJ0X2FjdGlvbi13cmFwcGVyX2JveC1zaGFkb3c6IDAgLTVweCA1cHggLTVweFxuICAgIHJnYmEoJGNvbG9yX2JhY2tncm91bmQtODAwLCAwLjI3KSAhZGVmYXVsdDtcblxuJG1pbmljYXJ0LW9mZmNhbnZhcy1jYXJvdXNlbDogZGVlcC1nZXQoXG4gICAgJHZpZXcteG1sLFxuICAgIHZhcnMsXG4gICAgTWFnZW50b19DaGVja291dCxcbiAgICBtaW5pY2FydF9vZmZjYW52YXMsXG4gICAgcHJvZHVjdHNfY2Fyb3VzZWwsXG4gICAgZW5hYmxlZFxuKSAhZGVmYXVsdDtcblxuJG1pbmljYXJ0LW9mZmNhbnZhcy1jYXJvdXNlbF9pdGVtLXBlci1yb3c6IGRlZXAtZ2V0KFxuICAgICR2aWV3LXhtbCxcbiAgICB2YXJzLFxuICAgIE1hZ2VudG9fQ2hlY2tvdXQsXG4gICAgbWluaWNhcnRfb2ZmY2FudmFzLFxuICAgIHByb2R1Y3RzX2Nhcm91c2VsLFxuICAgIGpzLFxuICAgIGNvbHVtbnNDb25maWdcbikgIWRlZmF1bHQ7XG5cbiRtaW5pY2FydF9tZXNzYWdlLXR5cGU6IGRlZXAtZ2V0KFxuICAgICR2aWV3LXhtbCxcbiAgICB2YXJzLFxuICAgIE1hZ2VudG9fQ2hlY2tvdXQsXG4gICAgbWluaWNhcnRfbWVzc2FnZXNcbikgIWRlZmF1bHQ7XG5cbiRtaW5pY2FydC1vZmZjYW52YXMtY2Fyb3VzZWxfbW9iaWxlLWdhcDogMC44cmVtICFkZWZhdWx0O1xuJG1pbmljYXJ0LW9mZmNhbnZhcy1jYXJvdXNlbF9kZXNrdG9wLWdhcDogMC44cmVtICFkZWZhdWx0O1xuJG1pbmljYXJ0LW9mZmNhbnZhcy1jYXJvdXNlbF9uZXh0LXNsaWRlLXZpc2libGU6IDAuOHJlbSAhZGVmYXVsdDtcblxuJG1pbmljYXJ0X2J1dHRvbi1jaGVja291dC10eXBlOiAkYnV0dG9uX2RlZmF1bHQtdHlwZSAhZGVmYXVsdDtcbiRtaW5pY2FydF9idXR0b24tY2hlY2tvdXQtaWNvbi1wb3M6ICRidXR0b25fZGVmYXVsdC1pY29uLXBvcyAhZGVmYXVsdDtcblxuJG1pbmljYXJ0X2J1dHRvbi12aWV3Y2FydC10eXBlOiAnc2Vjb25kYXJ5JyAhZGVmYXVsdDtcbiRtaW5pY2FydF9idXR0b24tdmlld2NhcnQtaWNvbi1wb3M6ICRidXR0b25fZGVmYXVsdC1pY29uLXBvcyAhZGVmYXVsdDtcblxuJG1pbmljYXJ0X2J1dHRvbi1jYXJvdXNlbC10eXBlOiAnc2Vjb25kYXJ5JyAhZGVmYXVsdDtcbiRtaW5pY2FydF9idXR0b24tY2Fyb3VzZWwtaWNvbi1wb3M6ICRidXR0b25fZGVmYXVsdC1pY29uLXBvcyAhZGVmYXVsdDtcblxuLiN7JG5zfW1pbmljYXJ0IHtcbiAgICAkcm9vdDogJjtcblxuICAgIEBpZiAkbWluaWNhcnQtb2ZmY2FudmFzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1mbG93OiBjb2x1bW47XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIH1cblxuICAgICZfX3dyYXBwZXIge1xuICAgICAgICBAaWYgJG1pbmljYXJ0LW9mZmNhbnZhcyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleDogMSAxO1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19jb250ZW50LXdyYXBwZXIge1xuICAgICAgICBAaWYgJG1pbmljYXJ0LW9mZmNhbnZhcyB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAjeyRtaW5pY2FydF9vZmZjYW52YXMtdGl0bGUtaGVpZ2h0fSk7XG4gICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fY2xvc2Uge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IC0xLjVyZW07XG4gICAgICAgIHdpZHRoOiA1cmVtO1xuICAgICAgICBoZWlnaHQ6IDVyZW07XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAmOmZvY3VzLFxuICAgICAgICAmOmFjdGl2ZSxcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICRtaW5pY2FydC1vZmZjYW52YXMge1xuICAgICAgICAgICAgcmlnaHQ6IDAuNXJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2Nsb3NlLWljb24ge1xuICAgICAgICBAaWYgKCRtaW5pY2FydF9fY2xvc2UtaW5jbHVkZS1wc2V1ZG9pY29uKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBwc2V1ZG9pY29uKFxuICAgICAgICAgICAgICAgICR0eXBlOiAkbWluaWNhcnRfX2Nsb3NlLXBzZXVkb2ljb24tdHlwZSxcbiAgICAgICAgICAgICAgICAkY29sb3I6ICRtaW5pY2FydF9fY2xvc2UtY29sb3IsXG4gICAgICAgICAgICAgICAgJGNvbG9yLWhvdmVyOiAkbWluaWNhcnRfX2Nsb3NlLWNvbG9yLWhvdmVyLFxuICAgICAgICAgICAgICAgICR3aWR0aDogJG1pbmljYXJ0X19jbG9zZS13aWR0aCxcbiAgICAgICAgICAgICAgICAkaGVpZ2h0OiAkbWluaWNhcnRfX2Nsb3NlLWxpbmUtd2lkdGhcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG5cbiAgICAmX19jbG9zZS10ZXh0IHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgbWFyZ2luOiAtMXB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiAxcHg7XG4gICAgfVxuXG4gICAgJl9fdGl0bGUtd3JhcHBlciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgaGVpZ2h0OiAkbWluaWNhcnRfb2ZmY2FudmFzLXRpdGxlLWhlaWdodDtcbiAgICAgICAgcGFkZGluZzogJG1pbmljYXJ0X3BhZGRpbmc7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGNvbG9yOiAkbWluaWNhcnRfaXRlbS1oZWFkbGluZS1jb2xvcjtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgZm9udC1zaXplOiAxLjhyZW07XG4gICAgICAgIG1hcmdpbjogMDtcblxuICAgICAgICBAaWYgJG1pbmljYXJ0LW9mZmNhbnZhcyB7XG4gICAgICAgICAgICBwYWRkaW5nOiAkbWluaWNhcnRfb2ZmY2FudmFzLXRpdGxlLXBhZGRpbmc7XG4gICAgICAgICAgICBmb250LXNpemU6IDIuMXJlbTtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAkbWluaWNhcnRfaXRlbS1ib3JkZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19pdGVtcy10b3RhbCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG5cbiAgICAgICAgJjpub3QoI3skcm9vdH1fX2l0ZW1zLXRvdGFsLS1lbXB0eSkge1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcoJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJyknO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0tZW1wdHkge1xuICAgICAgICAgICAgLmNvdW50IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGlmICRtaW5pY2FydC1vZmZjYW52YXMge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvcl90ZXh0LTUwMDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19lZGl0LWxpbmsge1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuXG4gICAgICAgIC4jeyRuc31saW5rX19pY29uIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMCAwIDFyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19jb250ZW50IHtcbiAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtaW5pY2FydF9jb250ZW50LWJhY2tncm91bmQ7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAubG9hZC5pbmRpY2F0b3I6YmVmb3JlIHtcbiAgICAgICAgICAgIGhlaWdodDogdW5zZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19saXN0IHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgICAmLS1zY3JvbGwge1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiBub25lO1xuICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fbGlzdC1pdGVtIHtcbiAgICAgICAgcGFkZGluZzogJG1pbmljYXJ0X2l0ZW0tcGFkZGluZztcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogJG1pbmljYXJ0X2l0ZW0tYm9yZGVyO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICRtaW5pY2FydC1vZmZjYW52YXMge1xuICAgICAgICAgICAgcGFkZGluZzogJG1pbmljYXJ0X29mZmNhbnZhcy1pdGVtLXBhZGRpbmc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19hY3Rpb25zLXdyYXBwZXIge1xuICAgICAgICBwYWRkaW5nOiAkbWluaWNhcnRfcGFkZGluZztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgIEBpZiAkbWluaWNhcnQtb2ZmY2FudmFzIHtcbiAgICAgICAgICAgIHBhZGRpbmc6ICRtaW5pY2FydF9vZmZjYW52YXMtcGFkZGluZztcbiAgICAgICAgICAgIGJveC1zaGFkb3c6ICRtaW5pY2FydF9hY3Rpb24td3JhcHBlcl9ib3gtc2hhZG93O1xuICAgICAgICAgICAgbWluLWhlaWdodDogJG1pbmljYXJ0X2FjdGlvbnMtbWluLWhlaWdodDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgICAgICB6LWluZGV4OiAxO1xuXG4gICAgICAgICAgICAmOmhhcyguY3MtbWluaWNhcnRfX2VtcHR5KSB7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2FjdGlvbnMge1xuICAgICAgICBtYXJnaW4tdG9wOiAxcmVtO1xuXG4gICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2VtcHR5IHtcbiAgICAgICAgcGFkZGluZzogJG1pbmljYXJ0X3BhZGRpbmc7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgdG9wOiAkbWluaWNhcnRfb2ZmY2FudmFzLXRpdGxlLWhlaWdodDtcbiAgICAgICAgbGVmdDogMDtcbiAgICB9XG5cbiAgICAmX19zdWJ0b3RhbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEuMnJlbTtcbiAgICB9XG5cbiAgICAmX19zdWJ0b3RhbC1wcmljZSB7XG4gICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW0gIWltcG9ydGFudDtcblxuICAgICAgICAgICAgQGlmICRtaW5pY2FydC1vZmZjYW52YXMge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMi4xcmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19idXR0b24tY2hlY2tvdXQge1xuICAgICAgICBAaW5jbHVkZSBidXR0b24oXG4gICAgICAgICAgICAkdHlwZTogJG1pbmljYXJ0X2J1dHRvbi1jaGVja291dC10eXBlLFxuICAgICAgICAgICAgJGljb25fcG9zOiAkbWluaWNhcnRfYnV0dG9uLWNoZWNrb3V0LWljb24tcG9zXG4gICAgICAgICk7XG5cbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgJi1zcGFuIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbl9zcGFuKFxuICAgICAgICAgICAgICAgICR0eXBlOiAkbWluaWNhcnRfYnV0dG9uLWNoZWNrb3V0LXR5cGUsXG4gICAgICAgICAgICAgICAgJGljb25fcG9zOiAkbWluaWNhcnRfYnV0dG9uLWNoZWNrb3V0LWljb24tcG9zXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lICovXG4gICAgICAgIH1cblxuICAgICAgICAmLWljb24ge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uX2ljb24oXG4gICAgICAgICAgICAgICAgJHR5cGU6ICRtaW5pY2FydF9idXR0b24tY2hlY2tvdXQtdHlwZSxcbiAgICAgICAgICAgICAgICAkaWNvbl9wb3M6ICRtaW5pY2FydF9idXR0b24tY2hlY2tvdXQtaWNvbi1wb3NcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgKi9cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2J1dHRvbi12aWV3Y2FydCB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbihcbiAgICAgICAgICAgICR0eXBlOiAkbWluaWNhcnRfYnV0dG9uLXZpZXdjYXJ0LXR5cGUsXG4gICAgICAgICAgICAkaWNvbl9wb3M6ICRtaW5pY2FydF9idXR0b24tdmlld2NhcnQtaWNvbi1wb3NcbiAgICAgICAgKTtcblxuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAmLXNwYW4ge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uX3NwYW4oXG4gICAgICAgICAgICAgICAgJHR5cGU6ICRtaW5pY2FydF9idXR0b24tdmlld2NhcnQtdHlwZSxcbiAgICAgICAgICAgICAgICAkaWNvbl9wb3M6ICRtaW5pY2FydF9idXR0b24tdmlld2NhcnQtaWNvbi1wb3NcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgKi9cbiAgICAgICAgfVxuXG4gICAgICAgICYtaWNvbiB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b25faWNvbihcbiAgICAgICAgICAgICAgICAkdHlwZTogJG1pbmljYXJ0X2J1dHRvbi12aWV3Y2FydC10eXBlLFxuICAgICAgICAgICAgICAgICRpY29uX3BvczogJG1pbmljYXJ0X2J1dHRvbi12aWV3Y2FydC1pY29uLXBvc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8qIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSAqL1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYnV0dG9uLWNhcm91c2VsIHtcbiAgICAgICAgJi13cmFwcGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAkbWluaWNhcnRfb2ZmY2FudmFzLWNhcm91c2VsLWJ1dHRvbi1zcGFjaW5nO1xuICAgICAgICAgICAgbWFyZ2luOiAkbWluaWNhcnRfb2ZmY2FudmFzLWNhcm91c2VsLWJ1dHRvbi1zcGFjaW5nIDA7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAkbWluaWNhcnRfb2ZmY2FudmFzLWNhcm91c2VsLWJ1dHRvbi1ib3JkZXI7XG5cbiAgICAgICAgICAgIEBpZiAkbWluaWNhcnRfb2ZmY2FudmFzLWNhcm91c2VsLWJ1dHRvbi1wb3NpdGlvbiA9PSAnbGVmdCcge1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgICAgIH0gQGVsc2UgaWYgJG1pbmljYXJ0X29mZmNhbnZhcy1jYXJvdXNlbC1idXR0b24tcG9zaXRpb24gPT0gJ3JpZ2h0JyB7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbihcbiAgICAgICAgICAgICR0eXBlOiAkbWluaWNhcnRfYnV0dG9uLWNhcm91c2VsLXR5cGUsXG4gICAgICAgICAgICAkaWNvbl9wb3M6ICRtaW5pY2FydF9idXR0b24tY2Fyb3VzZWwtaWNvbi1wb3NcbiAgICAgICAgKTtcblxuICAgICAgICAmLXNwYW4ge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uX3NwYW4oXG4gICAgICAgICAgICAgICAgJHR5cGU6ICRtaW5pY2FydF9idXR0b24tY2Fyb3VzZWwtdHlwZSxcbiAgICAgICAgICAgICAgICAkaWNvbl9wb3M6ICRtaW5pY2FydF9idXR0b24tY2Fyb3VzZWwtaWNvbi1wb3NcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgKi9cbiAgICAgICAgfVxuXG4gICAgICAgICYtaWNvbiB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b25faWNvbihcbiAgICAgICAgICAgICAgICAkdHlwZTogJG1pbmljYXJ0X2J1dHRvbi1jYXJvdXNlbC10eXBlLFxuICAgICAgICAgICAgICAgICRpY29uX3BvczogJG1pbmljYXJ0X2J1dHRvbi1jYXJvdXNlbC1pY29uLXBvc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8qIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSAqL1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fbWVzc2FnZXMge1xuICAgICAgICBwYWRkaW5nOiAwIDJyZW07XG5cbiAgICAgICAgQGlmICgkbWluaWNhcnRfbWVzc2FnZS10eXBlID09ICdoaWRkZW4nKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCRtaW5pY2FydF9tZXNzYWdlLXR5cGUgPT0gJ2ZpeGVkJykge1xuICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICAgICAgdG9wOiA0cmVtO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHotaW5kZXg6IDk5OTk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLW9mZmNhbnZhc19fd3JhcHBlciB7XG4gICAgICAgIHBhZGRpbmc6ICRtaW5pY2FydF9vZmZjYW52YXMtd3JhcHBlcjtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbn1cblxuQGlmICRtaW5pY2FydC1vZmZjYW52YXMgYW5kICRtaW5pY2FydC1vZmZjYW52YXMtY2Fyb3VzZWwge1xuICAgIC8qIHByZXR0aWVyLWlnbm9yZSAqL1xuICAgIC4jeyRuc31taW5pY2FydF9fY2Fyb3VzZWwge1xuICAgICAgICAkcm9vdDogJjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAxMDtcblxuICAgICAgICAvLyBGaXggZm9yIHRvbyB0YWxsIGNhcm91c2VsIHRpbGVzIG9uIHRhYmxldHNcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzxsYXB0b3BMZycpIHtcbiAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtaGVpZ2h0OiA5MDBweCkge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogNjByZW07XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogJG1pbmljYXJ0X29mZmNhbnZhcy1jYXJvdXNlbC10cmFuc2l0aW9uO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJG1pbmljYXJ0X29mZmNhbnZhcy1jYXJvdXNlbC1iYWNrZ3JvdW5kO1xuXG4gICAgICAgICAgICAjeyRyb290fS13cmFwcGVyLS1yZWFkeSAmIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi13cmFwcGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgcmlnaHQ6IGNhbGMoI3skbWluaWNhcnRfd2lkdGh9ICsgI3skbWluaWNhcnRfb2ZmY2FudmFzLWNhcm91c2VsLXNwYWNpbmd9KTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMHZ3IC0gKCN7JG1pbmljYXJ0X3dpZHRofSArICgyICogI3skbWluaWNhcnRfb2ZmY2FudmFzLWNhcm91c2VsLXNwYWNpbmd9KSkpO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMjByZW07XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgICAgICYtLWxvYWRpbmcsXG4gICAgICAgICAgICAmLS1yZWFkeSB7XG4gICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGF0LXJvb3QgLmRyYXdlci0tdmlzaWJsZSAmIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5taW5pY2FydC1vZmZjYW52YXMtb3BlbiAmIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYShcbiAgICAgICAgICAgICAgICAgICAgJyN7JG1pbmljYXJ0X29mZmNhbnZhcy1jYXJvdXNlbC1zaG93LWJyZWFrcG9pbnR9J1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PWxhcHRvcExnJykge1xuICAgICAgICAgICAgICAgIHJpZ2h0OiBjYWxjKCN7JG1pbmljYXJ0X3dpZHRofSArICgyICogI3skbWluaWNhcnRfb2ZmY2FudmFzLWNhcm91c2VsLXNwYWNpbmd9KSk7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwdncgLSAoI3skbWluaWNhcnRfd2lkdGh9ICsgKDQgKiAjeyRtaW5pY2FydF9vZmZjYW52YXMtY2Fyb3VzZWwtc3BhY2luZ30pKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAkbWluaWNhcnRfb2ZmY2FudmFzLWNhcm91c2VsLXBvc2l0aW9uID09ICd0b3AnIHtcbiAgICAgICAgICAgICAgICB0b3A6ICRtaW5pY2FydF9vZmZjYW52YXMtY2Fyb3VzZWwtcG9zaXRpb24tb2Zmc2V0O1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgICAgICAgICB9IEBlbHNlIGlmICRtaW5pY2FydF9vZmZjYW52YXMtY2Fyb3VzZWwtcG9zaXRpb24gPT0gJ2JvdHRvbScge1xuICAgICAgICAgICAgICAgIHRvcDogYXV0bztcbiAgICAgICAgICAgICAgICBib3R0b206ICRtaW5pY2FydF9vZmZjYW52YXMtY2Fyb3VzZWwtcG9zaXRpb24tb2Zmc2V0O1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC4jeyRuc31oZWFkbGluZSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDAgJG1pbmljYXJ0X29mZmNhbnZhcy1jYXJvdXNlbC1zcGFjaW5nO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICRtaW5pY2FydF9vZmZjYW52YXMtY2Fyb3VzZWwtc3BhY2luZyAwIDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC4jeyRuc31oZWFkbGluZV9fdGl0bGUge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGhlYWRsaW5lKCRsZXZlbDogJGZvbnQtc2l6ZV9oZWFkbGluZS0zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtc3Bpbm5lciB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICB3aWR0aDogJG1pbmljYXJ0X29mZmNhbnZhcy1jYXJvdXNlbC1zcGlubmVyLXNpemU7XG4gICAgICAgICAgICBoZWlnaHQ6ICRtaW5pY2FydF9vZmZjYW52YXMtY2Fyb3VzZWwtc3Bpbm5lci1zaXplO1xuICAgICAgICAgICAgcGFkZGluZzogJG1pbmljYXJ0X29mZmNhbnZhcy1jYXJvdXNlbC1zcGFjaW5nIDA7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogJG1pbmljYXJ0X29mZmNhbnZhcy1jYXJvdXNlbC10cmFuc2l0aW9uO1xuXG4gICAgICAgICAgICAjeyRyb290fS13cmFwcGVyLS1sb2FkaW5nICYge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuI3skbnN9cHJvZHVjdHMtY2Fyb3VzZWwge1xuICAgICAgICAgICAgJHJvb3Q6ICY7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIHNsaWRlcihcbiAgICAgICAgICAgICAgICAkY29sdW1ucy1jb25maWc6ICRtaW5pY2FydC1vZmZjYW52YXMtY2Fyb3VzZWxfaXRlbS1wZXItcm93LFxuICAgICAgICAgICAgICAgICRtLWdhcDogJG1pbmljYXJ0LW9mZmNhbnZhcy1jYXJvdXNlbF9tb2JpbGUtZ2FwLFxuICAgICAgICAgICAgICAgICRkLWdhcDogJG1pbmljYXJ0LW9mZmNhbnZhcy1jYXJvdXNlbF9kZXNrdG9wLWdhcCxcbiAgICAgICAgICAgICAgICAkbmV4dC12aXNpYmxlOiAkbWluaWNhcnQtb2ZmY2FudmFzLWNhcm91c2VsX25leHQtc2xpZGUtdmlzaWJsZSxcbiAgICAgICAgICAgICAgICAkcm9vdDogJHJvb3RcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRtaW5pY2FydF9vZmZjYW52YXMtY2Fyb3VzZWwtYmFja2dyb3VuZDtcbiAgICAgICAgfVxuICAgIH1cbn0gQGVsc2Uge1xuICAgIC4jeyRuc31taW5pY2FydF9fY2Fyb3VzZWwge1xuICAgICAgICAmLXNwaW5uZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGlmICRtaW5pY2FydC1vZmZjYW52YXMgIT0gdHJ1ZSB7XG4gICAgLm1pbmljYXJ0LXdyYXBwZXIge1xuICAgICAgICAudWktZGlhbG9nIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgICAgIHJpZ2h0OiAwLjVyZW07XG4gICAgICAgICAgICB6LWluZGV4OiA5OTk5OTtcblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAtMXJlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmICgkZ2xvYmFsX2hlYWRlci1oZWlnaHQtZGVza3RvcCA+ICRnbG9iYWxfaGVhZGVyLWhlaWdodC10YWJsZXQpIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj1sYXB0b3BMZycpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBjYWxjKFxuICAgICAgICAgICAgICAgICAgICAgICAgMTAwJSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3skZ2xvYmFsX2hlYWRlci1oZWlnaHQtZGVza3RvcH0gLSAjeyRnbG9iYWxfaGVhZGVyLWhlaWdodC10YWJsZXR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIC8gMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuYmxvY2stbWluaWNhcnQge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJG1pbmljYXJ0X2JhY2tncm91bmQ7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAkbWluaWNhcnRfYm94LXNoYWRvdztcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIHdpZHRoOiAzMXJlbTtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgcGFkZGluZzogMCAycmVtO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj1waG9uZUxnJykge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAkbWluaWNhcnRfd2lkdGg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEuNXJlbTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbWluaWNhcnRfYmFja2dyb3VuZDtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgICAgICAgICAgICAgdG9wOiAtMC44cmVtO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAxLjVyZW07XG4gICAgICAgICAgICAgICAgbGVmdDogYXV0bztcblxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PWxhcHRvcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDQuNXJlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59IEBlbHNlIHtcbiAgICAubWluaWNhcnQtd3JhcHBlciB7XG4gICAgICAgIC51aS1kaWFsb2cge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndXRpbHMvcmVzZXQtbGlzdC1zdHlsZSc7XG5AaW1wb3J0ICd1dGlscy9zdHJpcC11bml0JztcbkBpbXBvcnQgJ3V0aWxzL2hpZGUtc2Nyb2xsYmFyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvX3NsaWRlci9ob29rcyc7XG5cbi8vIENhbGN1bGF0ZSBjb250YWluZXIgYnJlYWtwb2ludCArIDIgKiBlZGdlIGd1dHRlciBhbmQgdHJhbnNmb3JtIHRvICdlbScgdW5pdCBmb3IgbWVkaWEgcXVlcnlcbiRjb250YWluZXJCcmVha3BvaW50UHg6IChcbiAgICAgICAgc3RyaXAtdW5pdCgkcGFnZV9tYXgtd2lkdGgpICsgMiAqIHN0cmlwLXVuaXQoJHBhZ2VfZWRnZS1ndXR0ZXIpXG4gICAgKSAqIDEwO1xuJGNvbnRhaW5lckJyZWFrcG9pbnRFbTogJGNvbnRhaW5lckJyZWFrcG9pbnRQeCAvIDE2ICogMWVtO1xuJHRvQ29udGFpbmVyQnJlYWtwb2ludEVtOiAoJGNvbnRhaW5lckJyZWFrcG9pbnRQeCAtIDEpIC8gMTYgKiAxZW07XG5cbkBtaXhpbiBpdC1ncmlkKCRtLWdhcDogMC44cmVtLCAkZC1nYXA6IDAuOHJlbSkge1xuICAgICRyb290OiAmO1xuICAgIC0tZ2FwOiAjeyRtLWdhcH07XG5cbiAgICAmOm5vdCguI3skbnN9Y29udGFpbmVyLS11c2Utd2hvbGUtd2lkdGgpICYge1xuICAgICAgICAmI3skcm9vdH0tLWNvbnRhaW5lci13aWR0aCB7XG4gICAgICAgICAgICAjeyRyb290fV9fc2xpZGVzLXdyYXBwZXIge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogJHBhZ2VfbWF4LXdpZHRoO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3NsaWRlcyB7XG4gICAgICAgIC0tY29sdW1uczogMTtcblxuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IHZhcigtLWdhcCk7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KHZhcigtLWNvbHVtbnMpLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICAjeyRyb290fS0taXRlbXMtaW4tcm93LW1vYmlsZS0yICYge1xuICAgICAgICAgICAgLS1jb2x1bW5zOiAyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fc2xpZGUge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAmX19saW5rIHtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tZ2FwKSAvIDIgKyAyKTtcblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAwLjRyZW07XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IG5vLXByZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG91dGxpbmUtb2Zmc2V0IDAuMjVzIGVhc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19waWN0dXJlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuXG4gICAgICAgIC8qIHN0eWxlbGludC1kaXNhYmxlIC0tIHN0eWxlbGludCBkb2Vzbid0IGtub3cgdGhpcyBtZWRpYSBxdWVyeSB5ZXQuICovXG4gICAgICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLWRhdGE6IHJlZHVjZSkge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICAvKiBzdHlsZWxpbnQtZW5hYmxlICovXG4gICAgfVxuXG4gICAgJl9faW1hZ2Uge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcl9iYWNrZ3JvdW5kLTUwMDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgIC0tZ2FwOiAjeyRkLWdhcH07XG5cbiAgICAgICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCA4IHtcbiAgICAgICAgICAgICYtLWl0ZW1zLWluLXJvdy0jeyRpfSAjeyRyb290fV9fc2xpZGVzIHtcbiAgICAgICAgICAgICAgICAtLWNvbHVtbnM6ICN7JGl9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0JywgJzxsYXB0b3AnKSB7XG4gICAgICAgICYtLWl0ZW1zLWluLXJvdy00Om5vdCgjeyRyb290fS0taWNvbikgI3skcm9vdH1fX3NsaWRlcyB7XG4gICAgICAgICAgICAtLWNvbHVtbnM6IDI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBpdC1ncmlkLWhvb2soJG0tZ2FwLCAkZC1nYXApO1xufVxuXG5AbWl4aW4gc2xpZGVyLWVzc2VudGlhbHMoJHJvb3Q6ICRyb290KSB7XG4gICAgI3skcm9vdH1fX3NsaWRlcy13cmFwcGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cblxuICAgICN7JHJvb3R9X19zbGlkZXMge1xuICAgICAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlKCk7XG5cbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleDogMCAwIDEwMCU7XG4gICAgICAgIGdhcDogMDtcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLWdhcCkgMDtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgb3ZlcnNjcm9sbC1iZWhhdmlvci1pbmxpbmU6IGNvbnRhaW47XG4gICAgICAgIHNjcm9sbGJhci13aWR0aDogdGhpbjtcblxuICAgICAgICBAc3VwcG9ydHMgKHNjcm9sbC1iZWhhdmlvcjogc21vb3RoKSB7XG4gICAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiB4IG1hbmRhdG9yeTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGhpZGUtc2Nyb2xsYmFyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjeyRyb290fV9fc2xpZGUge1xuICAgICAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlKCk7XG5cbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBmbGV4OiAwIDAgdmFyKC0tc2l6ZSk7XG4gICAgICAgIG1hcmdpbi1yaWdodDogdmFyKC0tZ2FwKTtcbiAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0O1xuICAgICAgICBtaW4td2lkdGg6IDA7XG5cbiAgICAgICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgI3skcm9vdH1fX2ltYWdlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgc2xpZGVyLWVzc2VudGlhbHMtaG9vaygkcm9vdCk7XG59XG5cbkBtaXhpbiBzbGlkZXIoXG4gICAgJGNvbHVtbnMtY29uZmlnOiAnY2xhc3MtYmFzZWQnLFxuICAgICRtLWdhcDogMC44cmVtLFxuICAgICRkLWdhcDogMC44cmVtLFxuICAgICRuZXh0LXZpc2libGU6IDMuMnJlbSxcbiAgICAkcm9vdDogJyYnXG4pIHtcbiAgICAtLWdhcDogI3skbS1nYXB9O1xuICAgIC0tYmFzZS1zaXplOiBjYWxjKDEwMCUgLSAjeyRuZXh0LXZpc2libGV9KTtcblxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAjeyRjb250YWluZXJCcmVha3BvaW50RW19KSB7XG4gICAgICAgICYjeyRyb290fS0tY29udGFpbmVyLXdpZHRoIHtcbiAgICAgICAgICAgIC0tYmFzZS1zaXplOiBjYWxjKCN7JHBhZ2VfbWF4LXdpZHRofSAtICN7JG5leHQtdmlzaWJsZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgJiN7JHJvb3R9LS11c2Utd2hvbGUtc2NyZWVuOm5vdCgjeyRyb290fS0tZnVsbC13aWR0aC1zbGlkZXIpIHtcbiAgICAgICAgICAgIC0tYmFzZS1zaXplOiAxMDAlO1xuXG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgICN7JHJvb3R9X19zbGlkZXMge1xuICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLXR5cGU6IHggcHJveGltaXR5O1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogY2FsYygoMTAwJSAtICN7JHBhZ2VfbWF4LXdpZHRofSkgLyAyKTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiBjYWxjKCgxMDAlIC0gI3skcGFnZV9tYXgtd2lkdGh9KSAvIDIpO1xuICAgICAgICAgICAgICAgIHNjcm9sbC1wYWRkaW5nLWxlZnQ6IGNhbGMoKDEwMCUgLSAjeyRwYWdlX21heC13aWR0aH0pIC8gMik7XG4gICAgICAgICAgICAgICAgc2Nyb2xsLXBhZGRpbmctcmlnaHQ6IGNhbGMoKDEwMCUgLSAjeyRwYWdlX21heC13aWR0aH0pIC8gMik7XG4gICAgICAgICAgICAgICAgc2Nyb2xsLW1hcmdpbi1sZWZ0OiBjYWxjKCgxMDB2dyAtICN7JHBhZ2VfbWF4LXdpZHRofSkgLyAyKTtcbiAgICAgICAgICAgICAgICBzY3JvbGwtbWFyZ2luLXJpZ2h0OiBjYWxjKCgxMDB2dyAtICN7JHBhZ2VfbWF4LXdpZHRofSkgLyAyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSBhbmQgKHBvaW50ZXI6IGZpbmUpIGFuZCAobWluLXdpZHRoOiAjeyRjb250YWluZXJCcmVha3BvaW50RW19KSB7XG4gICAgICAgICYjeyRyb290fS0tY29udGFpbmVyLXdpZHRoIHtcbiAgICAgICAgICAgIC0tYmFzZS1zaXplOiAjeyRwYWdlX21heC13aWR0aH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAtLXNpemU6IHZhcigtLWJhc2Utc2l6ZSk7XG5cbiAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgIC0tZ2FwOiAjeyRkLWdhcH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2xhc3MtYmFzZWQgY29sdW1ucyBjb25maWcgcmVsYXRlcyB0byBjbGFzc25hbWVzLCBsaWtlICctLWl0ZW1zLWluLXJvdy00J1xuICAgICAqIHdoaWNoIGFyZSBhZGRlZCB0byBlbGVtZW50cywgZGVwZW5kaW5nIG9uIHRoZSBDQyBDb21wb25lbnRzIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgQGlmICRjb2x1bW5zLWNvbmZpZyA9PSAnY2xhc3MtYmFzZWQnIHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCA4IHtcbiAgICAgICAgICAgICAgICAmI3skcm9vdH0tLWl0ZW1zLWluLXJvdy0jeyRpfSB7XG4gICAgICAgICAgICAgICAgICAgIC0tc2l6ZTogY2FsYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcigtLWJhc2Utc2l6ZSkgL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICN7JGl9IC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCN7JGkgLSAxfSAqIHZhcigtLWdhcCkpIC8gI3skaX0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0JywgJzxsYXB0b3AnKSB7XG4gICAgICAgICAgICAmI3skcm9vdH0tLWl0ZW1zLWluLXJvdy00Om5vdCgjeyRyb290fS0taWNvbikge1xuICAgICAgICAgICAgICAgIC0tc2l6ZTogY2FsYyh2YXIoLS1iYXNlLXNpemUpIC8gMiAtICgxICogdmFyKC0tZ2FwKSAvIDIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgICAkYmFzZUl0ZW1zUGVyUm93OiBtYXAtZ2V0KCRjb2x1bW5zLWNvbmZpZywgJ3Bob25lJyk7XG4gICAgICAgIC0tc2l6ZTogY2FsYyhcbiAgICAgICAgICAgIHZhcigtLWJhc2Utc2l6ZSkgL1xuICAgICAgICAgICAgICAgICN7JGJhc2VJdGVtc1BlclJvd30gLVxuICAgICAgICAgICAgICAgICN7JGJhc2VJdGVtc1BlclJvdyAtXG4gICAgICAgICAgICAgICAgMX0gKlxuICAgICAgICAgICAgICAgIHZhcigtLWdhcCkgL1xuICAgICAgICAgICAgICAgICN7JGJhc2VJdGVtc1BlclJvd31cbiAgICAgICAgKTtcblxuICAgICAgICBAZWFjaCAkYnJlYWtwb2ludCwgJGl0ZW1zUGVyUm93IGluICRjb2x1bW5zLWNvbmZpZyB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj0jeyRicmVha3BvaW50fScpIHtcbiAgICAgICAgICAgICAgICAtLXNpemU6IGNhbGMoXG4gICAgICAgICAgICAgICAgICAgIHZhcigtLWJhc2Utc2l6ZSkgLyAjeyRpdGVtc1BlclJvd30gLSAoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3skaXRlbXNQZXJSb3cgLSAxfSAqIHZhcigtLWdhcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSAvICN7JGl0ZW1zUGVyUm93fSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyogIGNvbnRhaW5lciBwYWRkaW5nIGZpeCAgKi9cbiAgICBAbWVkaWEgKG1heC13aWR0aDogI3skdG9Db250YWluZXJCcmVha3BvaW50RW19KSB7XG4gICAgICAgICYjeyRyb290fS0tY29udGFpbmVyLXdpZHRoIHtcbiAgICAgICAgICAgICN7JHJvb3R9X19zbGlkZXMge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJHBhZ2VfZWRnZS1ndXR0ZXI7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZ2VfZWRnZS1ndXR0ZXI7XG4gICAgICAgICAgICAgICAgc2Nyb2xsLXBhZGRpbmctbGVmdDogJHBhZ2VfZWRnZS1ndXR0ZXI7XG4gICAgICAgICAgICAgICAgc2Nyb2xsLXBhZGRpbmctcmlnaHQ6ICRwYWdlX2VkZ2UtZ3V0dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiBuby1wcmVmZXJlbmNlKSB7XG4gICAgICAgICN7JHJvb3R9X19zbGlkZXMge1xuICAgICAgICAgICAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBzbGlkZXItZXNzZW50aWFscygkcm9vdCk7XG5cbiAgICBAaW5jbHVkZSBzbGlkZXItaG9vaygkY29sdW1ucy1jb25maWcsICRtLWdhcCwgJGQtZ2FwLCAkbmV4dC12aXNpYmxlLCAkcm9vdCk7XG59XG5cbkBtaXhpbiBzbGlkZXItbW9iaWxlKCRtLWdhcDogMC44cmVtLCAkbmV4dC12aXNpYmxlOiAzLjJyZW0sICRyb290OiAnJicpIHtcbiAgICAtLWdhcDogI3skbS1nYXB9O1xuICAgIC0tYmFzZS1zaXplOiBjYWxjKDEwMCUgLSAjeyRuZXh0LXZpc2libGV9KTtcbiAgICAtLXNpemU6IHZhcigtLWJhc2Utc2l6ZSk7XG5cbiAgICAmI3skcm9vdH0tLWNvbnRhaW5lci13aWR0aCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtI3skcGFnZV9lZGdlLWd1dHRlcn07XG4gICAgICAgIG1hcmdpbi1yaWdodDogLSN7JHBhZ2VfZWRnZS1ndXR0ZXJ9O1xuXG4gICAgICAgICN7JHJvb3R9X19zbGlkZXMge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFnZV9lZGdlLWd1dHRlcjtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWdlX2VkZ2UtZ3V0dGVyO1xuICAgICAgICAgICAgc2Nyb2xsLXBhZGRpbmctbGVmdDogJHBhZ2VfZWRnZS1ndXR0ZXI7XG4gICAgICAgICAgICBzY3JvbGwtcGFkZGluZy1yaWdodDogJHBhZ2VfZWRnZS1ndXR0ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IG5vLXByZWZlcmVuY2UpIHtcbiAgICAgICAgI3skcm9vdH1fX3NsaWRlcyB7XG4gICAgICAgICAgICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIHNsaWRlci1lc3NlbnRpYWxzKCRyb290KTtcblxuICAgIEBpbmNsdWRlIHNsaWRlci1tb2JpbGUtaG9vaygkbS1nYXAsICRuZXh0LXZpc2libGUsICRyb290KTtcbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAnY29tcG9uZW50cy90eXBvZ3JhcGh5L21peGluJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uL21peGluJztcbkBpbXBvcnQgJ3V0aWxzL3Zpc3VhbGx5LWhpZGRlbic7XG5AaW1wb3J0ICd2ZW5kb3JzL2luY2x1ZGUtbWVkaWEnO1xuXG4kbW9kYWxfdGl0bGUtZm9udC1zaXplOiAkZm9udC1zaXplX2hlYWRsaW5lLTMgIWRlZmF1bHQ7XG4kbW9kYWxfaW5zaWRlLWJvcmRlcnM6IDFweCBzb2xpZCAkY29sb3JfYm9yZGVyLTUwMCAhZGVmYXVsdDtcbiRtb2RhbF9iYWNrZ3JvdW5kOiAkY29sb3JfYmFja2dyb3VuZC0yMDAgIWRlZmF1bHQ7XG4kbW9kYWxfc2xpZGUtbW9iaWxlLWJhY2tncm91bmQ6ICRjb2xvcl9iYWNrZ3JvdW5kLTIwMCAhZGVmYXVsdDtcbiRtb2RhbF9ib3gtc2hhZG93OiAkYm94LXNoYWRvd19iYXNlICFkZWZhdWx0O1xuJG1vZGFsX2JvcmRlci1yYWRpdXM6IDAgIWRlZmF1bHQ7XG4kbW9kYWwtYm9yZGVyOiBub25lICFkZWZhdWx0O1xuJG1vZGFsX3RleHQtZm9udC1zaXplOiAkZm9udC1zaXplX3BhcmFncmFwaCAhZGVmYXVsdDtcbiRtb2RhbF9wcmltYXJ5LWJ1dHRvbi10eXBlOiAkYnV0dG9uX2RlZmF1bHQtdHlwZSAhZGVmYXVsdDtcbiRtb2RhbF9wcmltYXJ5LWJ1dHRvbi1pY29uLXBvczogJ25vLWljb24nICFkZWZhdWx0O1xuJG1vZGFsX3NlY29uZGFyeS1idXR0b24tdHlwZTogJ3NlY29uZGFyeScgIWRlZmF1bHQ7XG4kbW9kYWxfc2Vjb25kYXJ5LWJ1dHRvbi1pY29uLXBvczogJ25vLWljb24nICFkZWZhdWx0O1xuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBuby1kZXNjZW5kaW5nLXNwZWNpZmljaXR5ICovXG5cbi5tb2RhbC1zbGlkZSxcbi5tb2RhbC1wb3B1cCxcbi5tb2RhbC1jdXN0b20ge1xuICAgICYuY29uZmlybSB7XG4gICAgICAgIC5tb2RhbC1pbm5lci13cmFwIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogNTByZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubW9kYWwtaW5uZXItd3JhcCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRtb2RhbF9iYWNrZ3JvdW5kO1xuICAgICAgICBib3gtc2hhZG93OiAkbW9kYWxfYm94LXNoYWRvdztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1vZGFsX2JvcmRlci1yYWRpdXM7XG4gICAgICAgIGJvcmRlcjogJG1vZGFsLWJvcmRlcjtcbiAgICB9XG5cbiAgICAubW9kYWwtY29udGVudCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAycmVtO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcbiAgICAgICAgZm9udC1zaXplOiAkbW9kYWxfdGV4dC1mb250LXNpemU7XG4gICAgfVxuXG4gICAgLm1vZGFsLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAuYWN0aW9uLWNsb3NlIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIG1hcmdpbjogMS41cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltYWdlcy9pY29ucy9jbG9zZS5zdmcnKTtcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDFyZW0gMXJlbTtcbiAgICAgICAgd2lkdGg6IDNyZW07XG4gICAgICAgIGhlaWdodDogM3JlbTtcbiAgICAgICAgei1pbmRleDogMTtcblxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHZpc3VhbGx5LWhpZGRlbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5tb2RhbC1mb290ZXIge1xuICAgICAgICBwYWRkaW5nOiAycmVtO1xuICAgICAgICBib3JkZXItdG9wOiAkbW9kYWxfaW5zaWRlLWJvcmRlcnM7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPHBob25lTGcnKSB7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aW9uLXByaW1hcnksXG4gICAgICAgIC5wcmltYXJ5IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbihcbiAgICAgICAgICAgICAgICAkdHlwZTogJG1vZGFsX3ByaW1hcnktYnV0dG9uLXR5cGUsXG4gICAgICAgICAgICAgICAgJGljb25fcG9zOiAkbW9kYWxfcHJpbWFyeS1idXR0b24taWNvbi1wb3NcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDEycmVtO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPHBob25lTGcnKSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1zcGFuKFxuICAgICAgICAgICAgICAgICAgICAkdHlwZTogJG1vZGFsX3ByaW1hcnktYnV0dG9uLXR5cGUsXG4gICAgICAgICAgICAgICAgICAgICRpY29uX3BvczogJG1vZGFsX3ByaW1hcnktYnV0dG9uLWljb24tcG9zXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5hY3Rpb24tc2Vjb25kYXJ5LFxuICAgICAgICAuc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbihcbiAgICAgICAgICAgICAgICAkdHlwZTogJG1vZGFsX3NlY29uZGFyeS1idXR0b24tdHlwZSxcbiAgICAgICAgICAgICAgICAkaWNvbl9wb3M6ICRtb2RhbF9zZWNvbmRhcnktYnV0dG9uLWljb24tcG9zXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbWluLXdpZHRoOiAxMnJlbTtcblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzxwaG9uZUxnJykge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBidXR0b24tc3BhbihcbiAgICAgICAgICAgICAgICAgICAgJHR5cGU6ICRtb2RhbF9zZWNvbmRhcnktYnV0dG9uLXR5cGUsXG4gICAgICAgICAgICAgICAgICAgICRpY29uX3BvczogJG1vZGFsX3NlY29uZGFyeS1idXR0b24taWNvbi1wb3NcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTdHlsZSBmb3IgY2hlY2tvdXQgbW9kYWxzIGhhdmUgdmVyeSBoaWdoIHNwZWNpZmljaXR5IGluIG1hZ2VudG9cbiAgICAgICAgICAgIGJvZHkuY2hlY2tvdXQtaW5kZXgtaW5kZXggJiB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uKFxuICAgICAgICAgICAgICAgICAgICAkdHlwZTogJG1vZGFsX3NlY29uZGFyeS1idXR0b24tdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgJGljb25fcG9zOiAkbW9kYWxfc2Vjb25kYXJ5LWJ1dHRvbi1pY29uLXBvc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgbWluLXdpZHRoOiAxMnJlbTtcblxuICAgICAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBidXR0b24tc3BhbihcbiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlOiAkbW9kYWxfc2Vjb25kYXJ5LWJ1dHRvbi10eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJGljb25fcG9zOiAkbW9kYWxfc2Vjb25kYXJ5LWJ1dHRvbi1pY29uLXBvc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGJ1dHRvbjpvbmx5LWNoaWxkIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbihcbiAgICAgICAgICAgICAgICAkdHlwZTogJG1vZGFsX3ByaW1hcnktYnV0dG9uLXR5cGUsXG4gICAgICAgICAgICAgICAgJGljb25fcG9zOiAkbW9kYWxfcHJpbWFyeS1idXR0b24taWNvbi1wb3NcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDEycmVtO1xuXG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBidXR0b24tc3BhbihcbiAgICAgICAgICAgICAgICAgICAgJHR5cGU6ICRtb2RhbF9wcmltYXJ5LWJ1dHRvbi10eXBlLFxuICAgICAgICAgICAgICAgICAgICAkaWNvbl9wb3M6ICRtb2RhbF9wcmltYXJ5LWJ1dHRvbi1pY29uLXBvc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubW9kYWwtdGl0bGUge1xuICAgICAgICBAaW5jbHVkZSBoZWFkbGluZSgkbGV2ZWw6ICRtb2RhbF90aXRsZS1mb250LXNpemUpO1xuICAgICAgICBwYWRkaW5nOiAycmVtO1xuICAgICAgICBib3JkZXItYm90dG9tOiAkbW9kYWxfaW5zaWRlLWJvcmRlcnM7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59XG5cbi5tb2RhbC1wb3B1cC5tb2RhbC1zbGlkZSB7XG4gICAgLm1vZGFsLWlubmVyLXdyYXBbY2xhc3NdIHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzw9dGFibGV0Jykge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1vZGFsX3NsaWRlLW1vYmlsZS1iYWNrZ3JvdW5kO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubW9kYWwtc2xpZGUge1xuICAgIC5tb2RhbC1mb290ZXIge1xuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPHBob25lTGcnKSB7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aW9uLXByaW1hcnksXG4gICAgICAgIC5wcmltYXJ5IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8cGhvbmVMZycpIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5hY3Rpb24tc2Vjb25kYXJ5LFxuICAgICAgICAuc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8cGhvbmVMZycpIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gRml4IGJ1ZyB3aXRoIG5vIGNsb3Npbmcgb3ZlcmxheSBvbiBtb2JpbGUuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbWFnZW50by9tYWdlbnRvMi9pc3N1ZXMvNzM5OSBmb3IgZGV0YWlsc1xuLm1vZGFsLXBvcHVwIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB0b3VjaC1hY3Rpb246IG5vbmU7XG5cbiAgICAmLmFncmVlbWVudHMtbW9kYWwge1xuICAgICAgICAubW9kYWwtdGl0bGUge1xuICAgICAgICAgICAgQGluY2x1ZGUgdmlzdWFsbHktaGlkZGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1pbmljYXJ0LXJlbW92ZS1pdGVtIHtcbiAgICAgICAgLm1vZGFsLXRpdGxlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHZpc3VhbGx5LWhpZGRlbigpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubW9kYWwtY3VzdG9tIHtcbiAgICAmLmNhcnQtaXRlbXMge1xuICAgICAgICAubW9kYWwtdGl0bGUge1xuICAgICAgICAgICAgQGluY2x1ZGUgdmlzdWFsbHktaGlkZGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5wYWdlLWxheW91dC1jaGVja291dCB7XG4gICAgLm1vZGFsLXBvcHVwOm5vdCguX2lubmVyLXNjcm9sbCkge1xuICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICB9XG5cbiAgICAubW9kYWwtc2xpZGUge1xuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPnRhYmxldCcpIHtcbiAgICAgICAgICAgIHdpZHRoOiA4MCU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDY1cmVtO1xuICAgICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubW9kYWxzLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRtb2RhbHNfb3ZlcmxheS1iYWNrZ3JvdW5kO1xufVxuXG5ib2R5Ll9oYXMtbW9kYWwubW9kYWwtbm8tc2Nyb2xsIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgd2lkdGg6IDEwMHZ3O1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgb3ZlcmZsb3c6IGluaXRpYWw7XG59XG5cbi8qIHN0eWxlbGludC1lbmFibGUgKi9cbiIsIi8qKipcbiAqIFVzaW5nIHBzdWVkbyBlbGVtZW50cyB0byBtYWludGFpbiBhbiBlbGVtZW50cyBhc3BlY3QgcmF0aW8sIGV2ZW4gYXMgaXQgc2NhbGVzXG4gKiBJdCdzIHVzaW5nIG9ubHkgZm9yIElFMTEgYW5kIEVkZ2UgKHZlcnNpb24gd2hpY2ggZG9lc24ndCBzdXBwb3J0IG5hdGl2ZSBDU1MgZ3JpZCkgYnJvd3NlcnNcbiAqIEZvciBicm93c2VycyB3aGljaCBzdXBwb3J0IG5hdGl2ZSBDU1MgZ3JpZCwgd2UgYXJlIHVzaW5nIG1peGlucyBjb250YWluIGByZXNldGAgaW4gbWl4aW4gbmFtZVxuICogdG8gb3ZlcnJpZGUgZGVmYXVsdCBtaXhpbnMgKHByb2dyZXNzaXZlIGVuaGFuY2VtZW50KVxuICogaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9zYXNzL21haW50YWluLWFzcGVjdC1yYXRpby1taXhpbi9cbiAqIEBwYXJhbSB7bnVtYmVyfSAkd2lkdGg6IHdpZHRoIG9mIHRoZSBlbGVtZW50O1xuICogQHBhcmFtIHtudW1iZXJ9ICRoZWlnaHQ6IGhlaWdodCBvZiB0aGUgZWxlbWVudDtcbiAqIEBwYXJhbSB7c3RyaW5nfSAkY29udGVudENsYXNzOiBjbGFzcyBvZiB0aGUgZGlyZWN0IGNoaWxkIGVsZW1lbnQgdG8gYmUgcG9zaXRpb25lZCBhYnNvbHV0ZWx5O1xuICogQHBhcmFtIHtib29sZWFufSAkYXV0b3Bvc2l0aW9uOiB0ZWxscyBpZiBpdGVtIHNoYWxsIHRha2UgMTAwJSBvZiBwYXJlbnQgc2l6ZSBvciBpZiBpdCBjYW4gYmUgd2lkZXIvaGlnaGVyIGlmIG5lZWRlZDtcbiAqL1xuXG5AZnVuY3Rpb24gZ2V0LWFzcGVjdC1yYXRpby1wYWRkaW5nLXZhbHVlKCR3aWR0aCwgJGhlaWdodCkge1xuICAgIEByZXR1cm4gKCRoZWlnaHQgLyAkd2lkdGgpICogMTAwJTtcbn1cblxuQG1peGluIGFzcGVjdC1yYXRpbygkd2lkdGgsICRoZWlnaHQsICRjaGlsZENsYXNzLCAkYXV0b3Bvc2l0aW9uOiB0cnVlKSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nLXRvcDogZ2V0LWFzcGVjdC1yYXRpby1wYWRkaW5nLXZhbHVlKCR3aWR0aCwgJGhlaWdodCk7XG4gICAgfVxuXG4gICAgLiN7JGNoaWxkQ2xhc3N9IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG5cbiAgICAgICAgQGlmICRhdXRvcG9zaXRpb24ge1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiBhc3BlY3QtcmF0aW8tcmVzZXQoJGNoaWxkQ2xhc3MsICRhdXRvcG9zaXRpb246IHRydWUpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IG5vbmU7XG4gICAgfVxuXG4gICAgLiN7JGNoaWxkQ2xhc3N9IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IGF1dG87XG4gICAgICAgIGxlZnQ6IGF1dG87XG5cbiAgICAgICAgQGlmICRhdXRvcG9zaXRpb24ge1xuICAgICAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgICAgICBib3R0b206IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiBhc3BlY3QtcmF0aW8tY2hpbGQtcG9zaXRpb24oJGF1dG9wb3NpdGlvbjogdHJ1ZSkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcblxuICAgIEBpZiAkYXV0b3Bvc2l0aW9uIHtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICB9XG59XG5cbkBtaXhpbiBhc3BlY3QtcmF0aW8tb3ZlcnJpZGUoJHdpZHRoLCAkaGVpZ2h0KSB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBwYWRkaW5nLXRvcDogZ2V0LWFzcGVjdC1yYXRpby1wYWRkaW5nLXZhbHVlKCR3aWR0aCwgJGhlaWdodCk7XG4gICAgfVxufVxuXG5AbWl4aW4gYXNwZWN0LXJhdGlvLW92ZXJyaWRlLXJlc2V0KCkge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgfVxufVxuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd1dGlscy9hc3BlY3QtcmF0aW8nO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcblxuJG5hdmlnYXRpb25fZm9udC1zaXplOiAxcmVtICFkZWZhdWx0O1xuXG4kbmF2aWdhdGlvbl9vdmVybGF5LXNob3c6IGZhbHNlICFkZWZhdWx0O1xuLy8gQm94IHNoYWRvdyBlZmZlY3QgYXBwbGllZCBmb3IgdGhlIGZseW91dC5cbiRuYXZpZ2F0aW9uX2ZseW91dC1ib3gtc2hhZG93OiAycHggMnB4IDVweCByZ2JhKCRjb2xvcl9iYWNrZ3JvdW5kLTgwMCwgMC4xNSkgIWRlZmF1bHQ7XG4vLyBGbHlvdXQgYmFja2dyb3VuZCBjb2xvci5cbiRuYXZpZ2F0aW9uX2ZseW91dC1iYWNrZ3JvdW5kOiAkY29sb3JfYmFja2dyb3VuZC0yMDAgIWRlZmF1bHQ7XG4vLyBDb2xvciBvZiB0aGUgbGluay5cbiRuYXZpZ2F0aW9uX2xpbmstY29sb3I6ICRjb2xvcl90ZXh0LTYwMCAhZGVmYXVsdDtcbi8vIENvbG9yIG9mIHRoZSBsaW5rIGluIHRoZSBmbHlvdXQgb24gaG92ZXIuXG4kbmF2aWdhdGlvbl9saW5rLWNvbG9yLWhvdmVyOiAkY29sb3JfdGV4dC04MDAgIWRlZmF1bHQ7XG4vLyBCb3R0b20gYm9yZGVyIGNvbmZpZ3VyYXRpb24gZm9yIGZseW91dCBjYXRlZ29yeSBsaW5rcy5cbiRuYXZpZ2F0aW9uX2xpbmstYm9yZGVyOiAxcHggc29saWQgJGNvbG9yX2JvcmRlci01MDAgIWRlZmF1bHQ7XG4kbmF2aWdhdGlvbl9saXN0cy1tYXJrLXBhcmVudC1vbi1ob3ZlcjogdHJ1ZSAhZGVmYXVsdDtcblxuJG5hdmlnYXRpb25fbGluay1pY29uLXNpemUtd2lkdGg6IDJyZW0gIWRlZmF1bHQ7XG4kbmF2aWdhdGlvbl9saW5rLWljb24tc2l6ZS1oZWlnaHQ6ICRuYXZpZ2F0aW9uX2xpbmstaWNvbi1zaXplLXdpZHRoICFkZWZhdWx0O1xuLy8gd29ya3Mgb25seSBmb3Igc3ZnIGljb25zXG4kbmF2aWdhdGlvbl9saW5rLWljb24tY29sb3I6ICRjb2xvcl90ZXh0LTYwMCAhZGVmYXVsdDtcbiRuYXZpZ2F0aW9uX2xpbmstaWNvbi1jb2xvci0taG92ZXI6ICRjb2xvcl9wcmltYXJ5LTUwMCAhZGVmYXVsdDtcblxuLiN7JG5zfW5hdmlnYXRpb24ge1xuICAgICRyb290OiAmO1xuXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBmb250LXNpemU6ICRuYXZpZ2F0aW9uX2ZvbnQtc2l6ZTtcblxuICAgICZfX2xpc3Qge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG5cbiAgICAgICAgJi0tbWFpbiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDJyZW07XG4gICAgICAgIH1cblxuICAgICAgICAmLS1hbGwtY2F0ZWdvcmllcyB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGNvbHVtbnM6IGF1dG8gMTtcbiAgICAgICAgICAgIGNvbHVtbi1nYXA6IDA7XG4gICAgICAgICAgICBmbGV4OiAxIDAgYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWxldmVsIHtcbiAgICAgICAgICAgICZfMSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgY29sdW1uczogYXV0byAxO1xuICAgICAgICAgICAgICAgIGNvbHVtbi1nYXA6IDA7XG4gICAgICAgICAgICAgICAgZmxleDogMSAwIGF1dG87XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfMiB7XG4gICAgICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0taGlkZGVuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICAgICAgICYrLiN7JG5zfW5hdmlnYXRpb25fX2V4dHJhcyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICN7JHJvb3R9X19pdGVtLS1uby1jaGlsZHJlbiB7XG4gICAgICAgICAgICAmOm50aC1jaGlsZCgyKSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDFyZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2l0ZW0ge1xuICAgICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgIEBpZiAoJG5hdmlnYXRpb25fbGlzdHMtbWFyay1wYXJlbnQtb24taG92ZXIpIHtcblxuICAgICAgICAgICAgJi0tYWN0aXZlLFxuICAgICAgICAgICAgJi5hY3RpdmUsXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAmOm5vdChbZGF0YS1jYXRlZ29yeS1pZGVudGlmaWVyPSdhbGwtY2F0ZWdvcmllcyddKSB7XG4gICAgICAgICAgICAgICAgICAgID4jeyRyb290fV9fbGluayB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJG5hdmlnYXRpb25fbGluay1jb2xvci1ob3ZlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAgICYtLW1haW4ge1xuXG4gICAgICAgICAgICAgICAgJjpob3ZlcixcbiAgICAgICAgICAgICAgICAmLmFjdGl2ZSxcbiAgICAgICAgICAgICAgICAmI3skcm9vdH1fX2l0ZW0tLWFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgICAgICY6bm90KFtkYXRhLWNhdGVnb3J5LWlkZW50aWZpZXI9J2FsbC1jYXRlZ29yaWVzJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgID4jeyRyb290fV9fbGluayB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRuYXZpZ2F0aW9uX2xpbmstY29sb3ItaG92ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLS1tYWluIHtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG5cbiAgICAgICAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgICAgICAgPiN7JHJvb3R9X19saW5rOm5vdCgjeyRyb290fV9fbGluay0td2l0aC1pY29uKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgICAgICAgICA+I3skcm9vdH1fX2xpbmsge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLWFsbC1jYXRlZ29yaWVzIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgICAgICAvLyBQcmV2ZW50cyBlbGVtZW50IGJyZWFraW5nIGJlY2F1c2Ugb2YgY29sdW1uIGxheW91dC5cbiAgICAgICAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgICAgICAgIC8qIFRoZW9yZXRpY2FsbHkgRkYgMjArICovXG4gICAgICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkLWNvbHVtbjtcbiAgICAgICAgICAgIC8qIElFIDExICovXG4gICAgICAgICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWxldmVsIHtcbiAgICAgICAgICAgICZfMSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgICAgICAgICAvLyBQcmV2ZW50cyBlbGVtZW50IGJyZWFraW5nIGJlY2F1c2Ugb2YgY29sdW1uIGxheW91dC5cbiAgICAgICAgICAgICAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgICAgICAgICAgICAgLyogVGhlb3JldGljYWxseSBGRiAyMCsgKi9cbiAgICAgICAgICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkLWNvbHVtbjtcbiAgICAgICAgICAgICAgICAvKiBJRSAxMSAqL1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0taGlkZGVuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19saW5rIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMC45ZW0gMS4wNWVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAmLFxuICAgICAgICAmOnZpc2l0ZWQge1xuICAgICAgICAgICAgY29sb3I6ICRuYXZpZ2F0aW9uX2xpbmstY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgIGNvbG9yOiAkbmF2aWdhdGlvbl9saW5rLWNvbG9yLWhvdmVyO1xuXG4gICAgICAgICAgICAjeyRyb290fV9fbGluay1pY29uLS1zdmcge1xuICAgICAgICAgICAgICAgIHBhdGgge1xuICAgICAgICAgICAgICAgICAgICBmaWxsOiAkbmF2aWdhdGlvbl9saW5rLWljb24tY29sb3ItLWhvdmVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLW1haW4ge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLW1haW46OmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcbiAgICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgICAgYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgbGVmdDogMC45ZW07XG4gICAgICAgICAgICByaWdodDogMC45ZW07XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JfcHJpbWFyeS01MDA7XG4gICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gcmlnaHQ7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXMgZWFzZS1vdXQ7XG5cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLS1tYWluOmhvdmVyOjphZnRlciB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSBsZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tYWxsLWNhdGVnb3JpZXMge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206ICRuYXZpZ2F0aW9uX2xpbmstYm9yZGVyO1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDEuNmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tbGV2ZWwge1xuICAgICAgICAgICAgJl8xIHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAkbmF2aWdhdGlvbl9saW5rLWJvcmRlcjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMS42ZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfMiB7XG4gICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjRlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLXdpdGgtaWNvbiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICRuYXZpZ2F0aW9uX2xpbmstaWNvbi1zaXplLXdpZHRoICsgMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtaWNvbi13cmFwcGVyIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHdpZHRoOiAkbmF2aWdhdGlvbl9saW5rLWljb24tc2l6ZS13aWR0aDtcbiAgICAgICAgICAgIGhlaWdodDogJG5hdmlnYXRpb25fbGluay1pY29uLXNpemUtaGVpZ2h0O1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDAuOGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgJi1pY29uIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKTtcbiAgICAgICAgICAgIGhlaWdodDogJG5hdmlnYXRpb25fbGluay1pY29uLXNpemUtd2lkdGg7XG4gICAgICAgICAgICB3aWR0aDogJG5hdmlnYXRpb25fbGluay1pY29uLXNpemUtaGVpZ2h0O1xuXG4gICAgICAgICAgICAjeyRyb290fV9fbGluay0tY2F0ZWdvcnkgJiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTAuNXJlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi0tc3ZnIHtcbiAgICAgICAgICAgICAgICBwYXRoIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogJG5hdmlnYXRpb25fbGluay1pY29uLWNvbG9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtcHJvZHVjdHMtcXR5IHtcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnKCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcpJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jcy1uYXZpZ2F0aW9uX19pdGVtOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgLmNzLW5hdmlnYXRpb25fX2xpbmstLW1haW46OmFmdGVyIHtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY3MtbmF2aWdhdGlvbl9faXRlbTpsYXN0LWNoaWxkIHtcbiAgICAgICAgLmNzLW5hdmlnYXRpb25fX2xpbmstLW1haW46OmFmdGVyIHtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvL1N0eWxpbmcgZm9yIGNhdGVnb3JpZXMgbGV2ZWxfMSB3aXRoIG5vIHN1YmNhdGVnb3JpZXNcbiAgICAjeyRyb290fV9faXRlbS0tbm8tY2hpbGRyZW4ge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgICN7JHJvb3R9X19pdGVtLS1uby1jaGlsZHJlbj4jeyRyb290fV9fbGluay0tbGV2ZWxfMSB7XG4gICAgICAgIC8vIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICBmb250LXNpemU6IDEuMTJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgcGFkZGluZzogMC45ZW0gMS41ZW07XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgY29sb3I6ICRuYXZpZ2F0aW9uX2xpbmstY29sb3I7XG4gICAgfVxuXG4gICAgJl9fZmx5b3V0IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2aWdhdGlvbl9mbHlvdXQtYmFja2dyb3VuZDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICB6LWluZGV4OiAxMDAxOyAvLyBNYWtlIHN1cmUgZmx5b3V0cyBjb3ZlciBnYWxsZXJ5IG5hdi5cbiAgICAgICAgYm94LXNoYWRvdzogJG5hdmlnYXRpb25fZmx5b3V0LWJveC1zaGFkb3c7XG4gICAgICAgIG1hcmdpbi10b3A6IC0xcHg7XG5cbiAgICAgICAgJi0tdmlzaWJsZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgQHN1cHBvcnRzICgtbXMtaW1lLWFsaWduOiBhdXRvKSB7XG4gICAgICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgICAgICAgICBsaXN0LXN0eWxlLWltYWdlOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBRUFBQUFCQ0FRQUFBQzFIQXdDQUFBQUMwbEVRVlI0Mm1Oa1lBQUFBQVlBQWpDQjBDOEFBQUFBU1VWT1JLNUNZSUk9KTtcbiAgICAgICAgICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19leHRyYXMge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgJl9fdGVhc2VyIHtcbiAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMWVtIDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcblxuICAgICAgICAmLS1oaWRkZW4ge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3Byb2R1Y3RzIHtcbiAgICAgICAgcGFkZGluZzogMC41ZW0gMWVtO1xuICAgICAgICBtaW4td2lkdGg6IDI0cmVtO1xuXG4gICAgICAgICYtaGVhZGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgY29sb3I6ICRuYXZpZ2F0aW9uX2xpbmstY29sb3I7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogJG5hdmlnYXRpb25fbGluay1ib3JkZXI7XG4gICAgICAgICAgICBwYWRkaW5nOiAxLjFlbSAxLjA1ZW0gMS41NWVtO1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtbGlzdCB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3Byb2R1Y3Qge1xuICAgICAgICBAaW5jbHVkZSBhc3BlY3QtcmF0aW8oJHdpZHRoOiAkdGlsZV9hc3BlY3QtcmF0aW8td2lkdGgsXG4gICAgICAgICAgICAkaGVpZ2h0OiAkdGlsZV9hc3BlY3QtcmF0aW8taGVpZ2h0LFxuICAgICAgICAgICAgJGNoaWxkQ2xhc3M6ICN7JG5zfXByb2R1Y3QtdGlsZSxcbiAgICAgICAgICAgICRhdXRvcG9zaXRpb246IHRydWUpO1xuICAgIH1cblxuICAgICZfX292ZXJsYXkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHotaW5kZXg6IDEwMDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgM3JlbSwgMCk7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgbGluZWFyLFxuICAgICAgICAgICAgdHJhbnNmb3JtIDAuMnMgY3ViaWMtYmV6aWVyKDAsIDAuOTcsIDAuMDUsIDAuOTkpO1xuXG4gICAgICAgIEBpZiAkbmF2aWdhdGlvbl9vdmVybGF5LXNob3cge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0tdmlzaWJsZSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnBhZ2UtcHJpbnQgJiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgQHN1cHBvcnRzIChkaXNwbGF5OiBncmlkKSBhbmQgKGdyaWQtYXV0by1mbG93OiByb3cpIHtcbiAgICAgICAgJl9fcHJvZHVjdCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBhc3BlY3QtcmF0aW8tcmVzZXQoJGNoaWxkQ2xhc3M6ICN7JG5zfXByb2R1Y3QtdGlsZSxcbiAgICAgICAgICAgICAgICAkYXV0b3Bvc2l0aW9uOiB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLiN7JG5zfWNvbnRhaW5lciB7XG4gICAgJi0tbmF2aWdhdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jcy1uYXZpZ2F0aW9uX19pdGVtLmNzLW5hdmlnYXRpb25fX2l0ZW0tLW1haW4uYWN0aXZlIHtcbiAgICAuY3MtbmF2aWdhdGlvbl9fbGluay0tbWFpbiB7XG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpO1xuICAgICAgICB9XG4gICAgfVxufSIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcbkBpbXBvcnQgJ3V0aWxzL3Zpc3VhbGx5LWhpZGRlbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2ZpZWxkL21peGluJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uL21peGluJztcblxuJGlucHV0X3BhZGRpbmc6IDAuNzE1ZW0gMWVtICFkZWZhdWx0O1xuJGlucHV0X2JvcmRlcjogMXB4IHNvbGlkICRjb2xvcl9hbHRvICFkZWZhdWx0O1xuJGlucHV0X2JvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzX2Jhc2UgIWRlZmF1bHQ7XG5cbiRuZXdzbGV0dGVyX21hcmdpbjogMCAhZGVmYXVsdDtcbiRuZXdzbGV0dGVyX3BhZGRpbmc6IDAgMS41cmVtICFkZWZhdWx0O1xuXG4kbmV3c2xldHRlcl9mb3JtLW1heC13aWR0aDogMzRyZW0gIWRlZmF1bHQ7XG4kbmV3c2xldHRlcl9mb3JtLWhlaWdodDogNHJlbSAhZGVmYXVsdDtcblxuJG5ld3NsZXR0ZXJfYnV0dG9uLXR5cGU6ICRidXR0b25fZGVmYXVsdC10eXBlICFkZWZhdWx0O1xuJG5ld3NsZXR0ZXJfYnV0dG9uLWljb24tcG9zOiAnb25seS1pY29uJyAhZGVmYXVsdDtcblxuJG5ld3NsZXR0ZXJfYnV0dG9uLWljb24td2lkdGg6IDAuOGVtICFkZWZhdWx0O1xuJG5ld3NsZXR0ZXJfYnV0dG9uLWljb24taGVpZ2h0OiAwLjhlbSAhZGVmYXVsdDtcblxuLiN7JG5zfW5ld3NsZXR0ZXIge1xuICAgIG1hcmdpbjogJG5ld3NsZXR0ZXJfbWFyZ2luO1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEoJzx0YWJsZXQnKSB7XG4gICAgICAgIHBhZGRpbmc6ICRuZXdzbGV0dGVyX3BhZGRpbmc7XG4gICAgfVxuXG4gICAgJl9fZm9ybSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogJG5ld3NsZXR0ZXJfZm9ybS1tYXgtd2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj1sYXB0b3AnKSB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19mb3JtLXdyYXBwZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICAgIH1cblxuICAgICZfX2ZpZWxkIHtcbiAgICAgICAgZmxleC1iYXNpczogMTAwJTtcbiAgICB9XG5cbiAgICAmX19pbnB1dCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAmX19sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIHZpc3VhbGx5LWhpZGRlbigpO1xuICAgIH1cblxuICAgICZfX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgICAgaGVpZ2h0OiAkbmV3c2xldHRlcl9mb3JtLWhlaWdodDtcbiAgICB9XG5cbiAgICAmX19idXR0b24ge1xuICAgICAgICBAaW5jbHVkZSBidXR0b24oXG4gICAgICAgICAgICAkdHlwZTogJG5ld3NsZXR0ZXJfYnV0dG9uLXR5cGUsXG4gICAgICAgICAgICAkaWNvbl9wb3M6ICRuZXdzbGV0dGVyX2J1dHRvbi1pY29uLXBvc1xuICAgICAgICApO1xuXG4gICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgICZfX2J1dHRvbi1pY29uIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWljb24oXG4gICAgICAgICAgICAkdHlwZTogJG5ld3NsZXR0ZXJfYnV0dG9uLXR5cGUsXG4gICAgICAgICAgICAkaWNvbl9wb3M6ICRuZXdzbGV0dGVyX2J1dHRvbi1pY29uLXBvc1xuICAgICAgICApO1xuXG4gICAgICAgIHdpZHRoOiAkbmV3c2xldHRlcl9idXR0b24taWNvbi13aWR0aDtcbiAgICAgICAgaGVpZ2h0OiAkbmV3c2xldHRlcl9idXR0b24taWNvbi1oZWlnaHQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG59XG4iLCJAaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcbkBpbXBvcnQgJ3ZlbmRvcnMvaW5jbHVkZS1tZWRpYSc7XG5AaW1wb3J0ICd1dGlscy9nZXQtdmFsdWUtZnJvbS1saXN0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcHNldWRvaWNvbi9taXhpbic7XG5AaW1wb3J0ICd1dGlscy9kZWVwLWdldC9kZWVwLWdldC5zY3NzJztcblxuJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2JhY2tncm91bmQ6ICRjb2xvcl9iYWNrZ3JvdW5kLTIwMCAhZGVmYXVsdDtcblxuJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2l0ZW0tYmFja2dyb3VuZDogJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2JhY2tncm91bmQgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLW5hdmlnYXRpb25faXRlbS1ib3JkZXI6IDFweCAkY29sb3JfYWx0byBzb2xpZCAhZGVmYXVsdDtcblxuJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX3NlYXJjaC1lbmFibGVkOiBkZWVwLWdldChcbiAgICAkdmlldy14bWwsXG4gICAgdmFycyxcbiAgICBNYWdlbnRvX1RoZW1lLFxuICAgIGhlYWRlcixcbiAgICBtb2JpbGVfc2VhcmNoX2luX29mZmNhbnZhc1xuKSAhZGVmYXVsdDtcblxuJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX3NlYXJjaC1lbmFibGVkLWxpc3QtbGV2ZWwxLXRvcC1wb3NpdGlvbjogMTQlICFkZWZhdWx0O1xuXG4kb2ZmY2FudmFzLW5hdmlnYXRpb25fbGluay1jb2xvcjogJGNvbG9yX3RleHQtODAwICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2xpbmstY29sb3ItLWhvdmVyOiAkb2ZmY2FudmFzLW5hdmlnYXRpb25fbGluay1jb2xvciAhZGVmYXVsdDtcbiRvZmZjYW52YXMtbmF2aWdhdGlvbl9saW5rLWZvbnQtc2l6ZTogMS40cmVtICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2xpbmstZm9udC13ZWlnaHQ6IDcwMCAhZGVmYXVsdDtcbiRvZmZjYW52YXMtbmF2aWdhdGlvbl9saW5rLXNpZ24tY29sb3I6ICRjb2xvcl9wcmltYXJ5LTUwMCAhZGVmYXVsdDtcbiRvZmZjYW52YXMtbmF2aWdhdGlvbl9saW5rLXNpZ24tY29sb3ItLWhvdmVyOiAkb2ZmY2FudmFzLW5hdmlnYXRpb25fbGluay1zaWduLWNvbG9yICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2xpbmstYWN0aXZlLWNvbG9yOiAkY29sb3JfcHJpbWFyeS01MDAgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLW5hdmlnYXRpb25fbGluay1wYWRkaW5nOiAyLjRyZW0gMnJlbSAhZGVmYXVsdDtcblxuJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2ljb24tdXNlLXBzZXVkb2ljb24taW5zdGVhZC1zdmc6IHRydWUgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLW5hdmlnYXRpb25faWNvbi13aWR0aDogMC43cmVtICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2ljb24taGVpZ2h0OiAwLjFyZW0gIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLW5hdmlnYXRpb25faWNvbi1jb2xvcjogJGNvbG9yX3ByaW1hcnktNTAwICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2ljb24tY29sb3ItLWhvdmVyOiAkb2ZmY2FudmFzLW5hdmlnYXRpb25faWNvbi1jb2xvciAhZGVmYXVsdDtcbi8vIEJlbG93IG5hdmlnYXRpb25faWNvbiBzZXR0aW5ncyBhcmUgdXNhYmxlIG9ubHkgaWYgeW91IHVzZSBwc2V1ZG9pY29uXG4kb2ZmY2FudmFzLW5hdmlnYXRpb25faWNvbi10eXBlOiAnYXJyb3cnICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2ljb24tZGVmYXVsdC0tbmV4dDogJ3JpZ2h0JyAhZGVmYXVsdDtcbiRvZmZjYW52YXMtbmF2aWdhdGlvbl9pY29uLWRlZmF1bHQtLXByZXY6ICdsZWZ0JyAhZGVmYXVsdDtcbiRvZmZjYW52YXMtbmF2aWdhdGlvbl9pY29uLWFuaW1hdGlvbjogZmFsc2UgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLW5hdmlnYXRpb25faWNvbi1hcnJvdy1sZWZ0LW9mZnNldDogMCAhZGVmYXVsdDtcblxuJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2ljb24tc2lnbi1jb2xvcjogJGNvbG9yX3ByaW1hcnktNTAwICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2ljb24tc2lnbi1jb2xvci0taG92ZXI6ICRvZmZjYW52YXMtbmF2aWdhdGlvbl9pY29uLXNpZ24tY29sb3IgIWRlZmF1bHQ7XG5cbiRvZmZjYW52YXMtbmF2aWdhdGlvbl9jYXRlZ29yeS1pY29uX21heC1oZWlnaHQ6IDJyZW0gIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLW5hdmlnYXRpb25fY2F0ZWdvcnktaWNvbl9tYXJnaW4tcmlnaHQ6IDFyZW0gIWRlZmF1bHQ7XG5cbi4jeyRuc31vZmZjYW52YXMtbmF2aWdhdGlvbiB7XG4gICAgJHJvb3Q6ICY7XG5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYmFja2dyb3VuZDogJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2JhY2tncm91bmQ7XG5cbiAgICAmX19saXN0IHtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2ZmY2FudmFzLW5hdmlnYXRpb25faXRlbS1iYWNrZ3JvdW5kO1xuICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICAgJi0tbGV2ZWxfMCxcbiAgICAgICAgJi0tY3VycmVudCxcbiAgICAgICAgJi0tYWN0aXZlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tbGV2ZWxfMCxcbiAgICAgICAgJi0tY3VycmVudCB7XG4gICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tY3VycmVudCB7XG4gICAgICAgICAgICA+ICN7JHJvb3R9X19pdGVtIHtcbiAgICAgICAgICAgICAgICA+ICN7JHJvb3R9X19saXN0IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJiAmIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDEwNSU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcztcblxuICAgICAgICAgICAgLy8gUHJldmVudCBvdmVybGFwcGluZyBvZiBzZWFyY2ggb24gbmF2aWdhdGlvbiBsaXN0XG4gICAgICAgICAgICBAaWYgKCRvZmZjYW52YXMtbmF2aWdhdGlvbl9zZWFyY2gtZW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIHRvcDogJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX3NlYXJjaC1lbmFibGVkLWxpc3QtbGV2ZWwxLXRvcC1wb3NpdGlvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi0tYWN0aXZlIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwNSUpO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwNSUsIDAsIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9faXRlbSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b206ICRvZmZjYW52YXMtbmF2aWdhdGlvbl9pdGVtLWJvcmRlcjtcblxuICAgICAgICAmLS13aXRoLWljb24ge1xuICAgICAgICAgICAgI3skcm9vdH1fX3RleHQge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IGdldC12YWx1ZS1mcm9tLWxpc3QoXG4gICAgICAgICAgICAgICAgICAgICRvZmZjYW52YXMtbmF2aWdhdGlvbl9saW5rLXBhZGRpbmcsXG4gICAgICAgICAgICAgICAgICAgICdsZWZ0J1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19saW5rIHtcbiAgICAgICAgbWluLXdpZHRoOiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgcGFkZGluZzogJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2xpbmstcGFkZGluZztcbiAgICAgICAgZm9udC1zaXplOiAkb2ZmY2FudmFzLW5hdmlnYXRpb25fbGluay1mb250LXNpemU7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAkb2ZmY2FudmFzLW5hdmlnYXRpb25fbGluay1mb250LXdlaWdodDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICYsXG4gICAgICAgICY6dmlzaXRlZCB7XG4gICAgICAgICAgICBjb2xvcjogJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2xpbmstY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiAkb2ZmY2FudmFzLW5hdmlnYXRpb25fbGluay1jb2xvci0taG92ZXI7XG5cbiAgICAgICAgICAgIEBpZiBub3QoJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2ljb24tdXNlLXBzZXVkb2ljb24taW5zdGVhZC1zdmcpIHtcbiAgICAgICAgICAgICAgICAjeyRyb290fV9faWNvbiB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGgge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2ljb24tY29sb3ItLWhvdmVyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0tc2lnbi1pbixcbiAgICAgICAgJi0tc2lnbi1vdXQge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogNXJlbTtcblxuICAgICAgICAgICAgJixcbiAgICAgICAgICAgICY6dmlzaXRlZCB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRvZmZjYW52YXMtbmF2aWdhdGlvbl9saW5rLXNpZ24tY29sb3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkb2ZmY2FudmFzLW5hdmlnYXRpb25fbGluay1zaWduLWNvbG9yLS1ob3ZlcjtcblxuICAgICAgICAgICAgICAgICN7JHJvb3R9X19pY29uIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAkb2ZmY2FudmFzLW5hdmlnYXRpb25faWNvbi1zaWduLWNvbG9yLS1ob3ZlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgI3skcm9vdH1fX2ljb24ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyLjNyZW07XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyLjdyZW07XG4gICAgICAgICAgICAgICAgcmlnaHQ6IGdldC12YWx1ZS1mcm9tLWxpc3QoXG4gICAgICAgICAgICAgICAgICAgICRvZmZjYW52YXMtbmF2aWdhdGlvbl9saW5rLXBhZGRpbmcsXG4gICAgICAgICAgICAgICAgICAgICdyaWdodCdcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgcGF0aCB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGw6ICRvZmZjYW52YXMtbmF2aWdhdGlvbl9pY29uLXNpZ24tY29sb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0tcGFyZW50LFxuICAgICAgICAmLS1yZXR1cm4ge1xuICAgICAgICAgICAgI3skcm9vdH1fX2ljb24ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAkb2ZmY2FudmFzLW5hdmlnYXRpb25faWNvbi13aWR0aDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICRvZmZjYW52YXMtbmF2aWdhdGlvbl9pY29uLWhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLXBhcmVudCB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cmVtO1xuXG4gICAgICAgICAgICAjeyRyb290fV9faWNvbiB7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IGdldC12YWx1ZS1mcm9tLWxpc3QoXG4gICAgICAgICAgICAgICAgICAgICRvZmZjYW52YXMtbmF2aWdhdGlvbl9saW5rLXBhZGRpbmcsXG4gICAgICAgICAgICAgICAgICAgICdyaWdodCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0tcmV0dXJuIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNXJlbTtcblxuICAgICAgICAgICAgI3skcm9vdH1fX2ljb24ge1xuICAgICAgICAgICAgICAgIGxlZnQ6IGdldC12YWx1ZS1mcm9tLWxpc3QoXG4gICAgICAgICAgICAgICAgICAgICRvZmZjYW52YXMtbmF2aWdhdGlvbl9saW5rLXBhZGRpbmcsXG4gICAgICAgICAgICAgICAgICAgICdsZWZ0J1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCRvZmZjYW52YXMtbmF2aWdhdGlvbl9pY29uLXVzZS1wc2V1ZG9pY29uLWluc3RlYWQtc3ZnKSB7XG4gICAgICAgICAgICAmLS1uZXh0IHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBwc2V1ZG9pY29uKFxuICAgICAgICAgICAgICAgICAgICAkdHlwZTogJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2ljb24tdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgJGFuaW1hdGVkOiAkb2ZmY2FudmFzLW5hdmlnYXRpb25faWNvbi1hbmltYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICRhcnJvdy1kZWZhdWx0OiAkb2ZmY2FudmFzLW5hdmlnYXRpb25faWNvbi1kZWZhdWx0LS1uZXh0LFxuICAgICAgICAgICAgICAgICAgICAkYXJyb3ctb2Zmc2V0OiAkb2ZmY2FudmFzLW5hdmlnYXRpb25faWNvbi1hcnJvdy1sZWZ0LW9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgJHdpZHRoOiAkb2ZmY2FudmFzLW5hdmlnYXRpb25faWNvbi13aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgJGhlaWdodDogJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2ljb24taGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAkY29sb3I6ICRvZmZjYW52YXMtbmF2aWdhdGlvbl9pY29uLWNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAkY29sb3ItaG92ZXI6ICRvZmZjYW52YXMtbmF2aWdhdGlvbl9pY29uLWNvbG9yLS1ob3ZlcixcbiAgICAgICAgICAgICAgICAgICAgJHBvc2l0aW9uLXNpZGUtb2Zmc2V0OlxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0LXZhbHVlLWZyb20tbGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2ZmY2FudmFzLW5hdmlnYXRpb25fbGluay1wYWRkaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLS1wcmV2IHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBwc2V1ZG9pY29uKFxuICAgICAgICAgICAgICAgICAgICAkdHlwZTogJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2ljb24tdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgJGFuaW1hdGVkOiAkb2ZmY2FudmFzLW5hdmlnYXRpb25faWNvbi1hbmltYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICRhcnJvdy1kZWZhdWx0OiAkb2ZmY2FudmFzLW5hdmlnYXRpb25faWNvbi1kZWZhdWx0LS1wcmV2LFxuICAgICAgICAgICAgICAgICAgICAkYXJyb3ctb2Zmc2V0OiAkb2ZmY2FudmFzLW5hdmlnYXRpb25faWNvbi1hcnJvdy1sZWZ0LW9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgJHdpZHRoOiAkb2ZmY2FudmFzLW5hdmlnYXRpb25faWNvbi13aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgJGhlaWdodDogJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2ljb24taGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAkY29sb3I6ICRvZmZjYW52YXMtbmF2aWdhdGlvbl9pY29uLWNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAkY29sb3ItaG92ZXI6ICRvZmZjYW52YXMtbmF2aWdhdGlvbl9pY29uLWNvbG9yLS1ob3ZlcixcbiAgICAgICAgICAgICAgICAgICAgJHBvc2l0aW9uLXNpZGUtb2Zmc2V0OiBhdXRvXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICY6YmVmb3JlLFxuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBnZXQtdmFsdWUtZnJvbS1saXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2xpbmstcGFkZGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsZWZ0J1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hY3RpdmUge1xuICAgICAgICA+ICN7JHJvb3R9X19saW5rIHtcbiAgICAgICAgICAgIGNvbG9yOiAkb2ZmY2FudmFzLW5hdmlnYXRpb25fbGluay1hY3RpdmUtY29sb3I7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19pY29uIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXG4gICAgICAgIHBhdGgge1xuICAgICAgICAgICAgZmlsbDogJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2ljb24tY29sb3I7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19jYXRlZ29yeS1pY29uLXdyYXBwZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAkb2ZmY2FudmFzLW5hdmlnYXRpb25fY2F0ZWdvcnktaWNvbl9tYXgtaGVpZ2h0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRvZmZjYW52YXMtbmF2aWdhdGlvbl9jYXRlZ29yeS1pY29uX21hcmdpbi1yaWdodDtcbiAgICB9XG5cbiAgICAmX19jYXRlZ29yeS1pY29uIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtNTAlLCAwKTtcbiAgICAgICAgbWF4LWhlaWdodDogJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2NhdGVnb3J5LWljb25fbWF4LWhlaWdodDtcbiAgICB9XG5cbiAgICAmX190ZXh0LXBhcmVudCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplX2hlYWRsaW5lLTY7XG4gICAgICAgIGNvbG9yOiAkY29sb3JfdGV4dC00MDA7XG4gICAgfVxuXG4gICAgQGlmICgkZ2xvYmFsX2hlYWRlci1tb2JpbGUtc2VhcmNoLWluLW9mZmNhbnZhcykge1xuICAgICAgICAmX19zZWFyY2gge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgcGFkZGluZzogJG9mZmNhbnZhcy1uYXZpZ2F0aW9uX2xpbmstcGFkZGluZztcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206ICRvZmZjYW52YXMtbmF2aWdhdGlvbl9pdGVtLWJvcmRlcjtcblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoXG4gICAgICAgICAgICAgICAgJz49I3skZ2xvYmFsX2hlYWRlci1tb2JpbGUtc2VhcmNoLWluLW9mZmNhbnZhcy1icmVha3BvaW50fSdcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKipcbiAqIEJyZWFrcG9pbnQgY29tcG9uZW50IHVzZWQgYnkgaW5jbHVkZS1tZWRpYSB2ZW5kb3IgbGlicmFyeS5cbiAqL1xuLyoqXG4gKiBFeHRyYWN0cyBuZXN0ZWQga2V5cyBmcm9tIGdpdmVuIG1hcC5cbiAqIEV4YW1wbGU6IGRlZXAtZ2V0KCRzb21lLW1hcCwgc29tZSwgbmVzdGVkLCBrZXlzKTtcbiAqL1xuLyoqXG4qIERlZmF1bHQgcHJvamVjdCBicmVha3BvaW50cyAtIFtlbV1cbiovXG4vKipcbiAqIEJyZWFrcG9pbnQgY29tcG9uZW50IHVzZWQgYnkgaW5jbHVkZS1tZWRpYSB2ZW5kb3IgbGlicmFyeS5cbiAqL1xuLyoqXG4gKiBFeHRyYWN0cyBuZXN0ZWQga2V5cyBmcm9tIGdpdmVuIG1hcC5cbiAqIEV4YW1wbGU6IGRlZXAtZ2V0KCRzb21lLW1hcCwgc29tZSwgbmVzdGVkLCBrZXlzKTtcbiAqL1xuLyoqXG4qIERlZmF1bHQgcHJvamVjdCBicmVha3BvaW50cyAtIFtlbV1cbiovXG4vKipcbiAqIEJyZWFrcG9pbnQgY29tcG9uZW50IHVzZWQgYnkgaW5jbHVkZS1tZWRpYSB2ZW5kb3IgbGlicmFyeS5cbiAqL1xuLyoqXG4gKiBFeHRyYWN0cyBuZXN0ZWQga2V5cyBmcm9tIGdpdmVuIG1hcC5cbiAqIEV4YW1wbGU6IGRlZXAtZ2V0KCRzb21lLW1hcCwgc29tZSwgbmVzdGVkLCBrZXlzKTtcbiAqL1xuLyoqXG4qIERlZmF1bHQgcHJvamVjdCBicmVha3BvaW50cyAtIFtlbV1cbiovXG4vKipcbiAqIEJyZWFrcG9pbnQgY29tcG9uZW50IHVzZWQgYnkgaW5jbHVkZS1tZWRpYSB2ZW5kb3IgbGlicmFyeS5cbiAqL1xuLyoqXG4gKiBFeHRyYWN0cyBuZXN0ZWQga2V5cyBmcm9tIGdpdmVuIG1hcC5cbiAqIEV4YW1wbGU6IGRlZXAtZ2V0KCRzb21lLW1hcCwgc29tZSwgbmVzdGVkLCBrZXlzKTtcbiAqL1xuLyoqXG4qIERlZmF1bHQgcHJvamVjdCBicmVha3BvaW50cyAtIFtlbV1cbiovXG4vKioqXG4gKiBIaWRlIG9ubHkgdmlzdWFsbHksIGJ1dCBoYXZlIGl0IGF2YWlsYWJsZSBmb3Igc2NyZWVuIHJlYWRlcnM6XG4gKiBodHRwczovL3Nub29rLmNhL2FyY2hpdmVzL2h0bWxfYW5kX2Nzcy9oaWRpbmctY29udGVudC1mb3ItYWNjZXNzaWJpbGl0eVxuICpcbiAqIDEuIEZvciBsb25nIGNvbnRlbnQsIGxpbmUgZmVlZHMgYXJlIG5vdCBpbnRlcnByZXRlZCBhcyBzcGFjZXMgYW5kIHNtYWxsIHdpZHRoXG4gKiAgICBjYXVzZXMgY29udGVudCB0byB3cmFwIDEgd29yZCBwZXIgbGluZTpcbiAqICAgIGh0dHBzOi8vbWVkaXVtLmNvbS9AamVzc2ViZWFjaC9iZXdhcmUtc211c2hlZC1vZmYtc2NyZWVuLWFjY2Vzc2libGUtdGV4dC01OTUyYTRjMmNiZmVcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9oNWJwL2h0bWw1LWJvaWxlcnBsYXRlL2Jsb2IvbWFzdGVyL3NyYy9jc3MvbWFpbi5jc3MjTDEzMFxuICovXG4vKipcbiAqIEJyZWFrcG9pbnQgY29tcG9uZW50IHVzZWQgYnkgaW5jbHVkZS1tZWRpYSB2ZW5kb3IgbGlicmFyeS5cbiAqL1xuLyoqXG4gKiBFeHRyYWN0cyBuZXN0ZWQga2V5cyBmcm9tIGdpdmVuIG1hcC5cbiAqIEV4YW1wbGU6IGRlZXAtZ2V0KCRzb21lLW1hcCwgc29tZSwgbmVzdGVkLCBrZXlzKTtcbiAqL1xuLyoqXG4qIERlZmF1bHQgcHJvamVjdCBicmVha3BvaW50cyAtIFtlbV1cbiovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBibG9jay1uby1lbXB0eSAqL1xuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuLmNzLWhlYWRlci11c2VyLW5hdiB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMCAxcmVtO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5AbWVkaWEgKG1heC13aWR0aDogMjMuMTE1ZW0pIHtcbiAgLmNzLWhlYWRlci11c2VyLW5hdiB7XG4gICAgcGFkZGluZzogMCAwLjdyZW07XG4gIH1cbn1cbi5jcy1oZWFkZXItdXNlci1uYXZfX2l0ZW0ge1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nOiAwO1xuICBmbGV4OiAxIDEgMjUlO1xufVxuLmNzLWhlYWRlci11c2VyLW5hdl9fbGluayB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDFyZW07XG59XG5AbWVkaWEgKG1heC13aWR0aDogNDhlbSkge1xuICAuY3MtaGVhZGVyLXVzZXItbmF2X19saW5rIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG59XG4uY3MtaGVhZGVyLXVzZXItbmF2X19saW5rOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLmNzLWhlYWRlci11c2VyLW5hdl9fbGluazpob3ZlciAuY3MtaGVhZGVyLXVzZXItbmF2X19pY29uIHBhdGgge1xuICBmaWxsOiAjMDAwMDAwO1xufVxuLmNzLWhlYWRlci11c2VyLW5hdl9fbGluazpob3ZlciAuY3MtaGVhZGVyLXVzZXItbmF2X19sYWJlbCB7XG4gIGNvbG9yOiAjNjk2OTY5O1xufVxuLmNzLWhlYWRlci11c2VyLW5hdl9fbGluay0tc2VhcmNoOmhvdmVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmNzLWhlYWRlci11c2VyLW5hdl9faWNvbi13cmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmNzLWhlYWRlci11c2VyLW5hdl9faWNvbiB7XG4gIHdpZHRoOiAxLjZyZW07XG4gIGhlaWdodDogMS42cmVtO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAwIGF1dG87XG59XG4uY3MtaGVhZGVyLXVzZXItbmF2X19pY29uIHBhdGgge1xuICBmaWxsOiAjNDg0ODQ4O1xufVxuLmNzLWhlYWRlci11c2VyLW5hdl9fbGFiZWwge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIG1hcmdpbi10b3A6IDAuM3JlbTtcbiAgY29sb3I6ICM2OTY5Njk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYm9yZGVyOiAwO1xuICBjbGlwOiByZWN0KDAgMCAwIDApO1xuICBjbGlwLXBhdGg6IGluc2V0KDUwJSk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgLyogMSAqL1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgLmNzLWhlYWRlci11c2VyLW5hdl9fbGFiZWwge1xuICAgIGNsaXA6IGF1dG87XG4gICAgY2xpcC1wYXRoOiBub25lO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtYXJnaW46IDA7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgcGFkZGluZzogMDtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gIH1cbn1cbi5jcy1oZWFkZXItdXNlci1uYXZfX3F0eS1jb3VudGVyIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7XG4gIGNvbG9yOiAjZmZmO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDAuMnJlbTtcbiAgcGFkZGluZzogMCAwLjZyZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEwMCU7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGhlaWdodDogMS44ZW07XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IC0wLjVyZW07XG4gIHRvcDogLTAuNXJlbTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgLmNzLWhlYWRlci11c2VyLW5hdl9fcXR5LWNvdW50ZXIge1xuICAgIHJpZ2h0OiAtMXJlbTtcbiAgfVxufVxuLmNzLWhlYWRlci11c2VyLW5hdl9fcXR5LWNvdW50ZXItLXdpc2hsaXN0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDtcbiAgY29sb3I6ICMwMDA7XG4gIHRyYW5zaXRpb246IHRvcCAwLjlzIGN1YmljLWJlemllcigwLjQyLCAwLjMxLCAwLjM0LCAwLjkzKSwgbGVmdCAwLjlzIGN1YmljLWJlemllcigwLjQyLCAwLjMxLCAwLjM0LCAwLjkzKTtcbn1cbi5jcy1oZWFkZXItdXNlci1uYXZfX3F0eS1jb3VudGVyLS1taW5pY2FydCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNDFmMTI7XG4gIGNvbG9yOiAjZmZmO1xuICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbn1cbi5jcy1oZWFkZXItdXNlci1uYXZfX3F0eS1jb3VudGVyLS1jb21wYXJlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDtcbiAgY29sb3I6ICMwMDA7XG59XG4uY3MtaGVhZGVyLXVzZXItbmF2X19xdHktY291bnRlci0taGF2ZS1pdGVtcyB7XG4gIG9wYWNpdHk6IDE7XG59XG4uY3MtaGVhZGVyLXVzZXItbmF2X19xdHktY291bnRlci0td2lzaGxpc3QtY2xvbmVkIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAxMjAwO1xuICByaWdodDogYXV0bztcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogdG9wIDEuMnMgY3ViaWMtYmV6aWVyKDAuNDIsIDAuMzEsIDAuMzQsIDAuOTMpLCBsZWZ0IDEuMnMgY3ViaWMtYmV6aWVyKDAuNDIsIDAuMzEsIDAuMzQsIDAuOTMpO1xufVxuLmNzLWhlYWRlci11c2VyLW5hdl9fcXR5LWNvdW50ZXItLXdpc2hsaXN0LWFuaW1hdGluZyB7XG4gIGFuaW1hdGlvbjogbW92ZS1xdHktYmFkZ2UgMS4ycyBjdWJpYy1iZXppZXIoMC40MiwgMC4zMSwgMC4zNCwgMC45Myk7XG4gIHRvcDogMC41cmVtO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgLmNzLWhlYWRlci11c2VyLW5hdl9fcXR5LWNvdW50ZXItLXdpc2hsaXN0LWFuaW1hdGluZyB7XG4gICAgdG9wOiAxLjNyZW07XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA2NGVtKSB7XG4gIC5jcy1oZWFkZXItdXNlci1uYXZfX3F0eS1jb3VudGVyLS13aXNobGlzdC1hbmltYXRpbmcge1xuICAgIHRvcDogMy41cmVtO1xuICB9XG59XG5Aa2V5ZnJhbWVzIG1vdmUtcXR5LWJhZGdlIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgMTUlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG4gIDg1JSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7XG4gIH1cbiAgOTUlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxufVxuLmNzLWhlYWRlci11c2VyLW5hdl9fcXR5LWNvdW50ZXItc3BhbiB7XG4gIG1pbi13aWR0aDogMWNoO1xufVxuXG4uY3Mtb2ZmY2FudmFzLXRvZ2dsZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYm9yZGVyOiAwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZzogMS41cmVtO1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmNzLW9mZmNhbnZhcy10b2dnbGUsIC5jcy1vZmZjYW52YXMtdG9nZ2xlOmFjdGl2ZSwgLmNzLW9mZmNhbnZhcy10b2dnbGU6Zm9jdXMsIC5jcy1vZmZjYW52YXMtdG9nZ2xlOmhvdmVyIHtcbiAgYm9yZGVyOiAwO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cbi5jcy1vZmZjYW52YXMtdG9nZ2xlOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBoZWlnaHQ6IDJweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gIGJhY2tncm91bmQ6ICMwMDAwMDA7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQ7XG59XG4uY3Mtb2ZmY2FudmFzLXRvZ2dsZS0tYWN0aXZlLCAuY3Mtb2ZmY2FudmFzLXRvZ2dsZS0tYWN0aXZlOmFjdGl2ZSwgLmNzLW9mZmNhbnZhcy10b2dnbGUtLWFjdGl2ZTpmb2N1cywgLmNzLW9mZmNhbnZhcy10b2dnbGUtLWFjdGl2ZTpob3ZlciB7XG4gIGJhY2tncm91bmQ6ICMwMDAwMDA7XG59XG4uY3Mtb2ZmY2FudmFzLXRvZ2dsZS0tYWN0aXZlOmFmdGVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbn1cbi5jcy1vZmZjYW52YXMtdG9nZ2xlLS1hY3RpdmUgLmNzLW9mZmNhbnZhcy10b2dnbGVfX2ljb24ge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xufVxuLmNzLW9mZmNhbnZhcy10b2dnbGUtLWFjdGl2ZSAuY3Mtb2ZmY2FudmFzLXRvZ2dsZV9faWNvbiwgLmNzLW9mZmNhbnZhcy10b2dnbGUtLWFjdGl2ZSAuY3Mtb2ZmY2FudmFzLXRvZ2dsZV9faWNvbjpiZWZvcmUsIC5jcy1vZmZjYW52YXMtdG9nZ2xlLS1hY3RpdmUgLmNzLW9mZmNhbnZhcy10b2dnbGVfX2ljb246YWZ0ZXIge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xufVxuLmNzLW9mZmNhbnZhcy10b2dnbGUtLWFjdGl2ZSAuY3Mtb2ZmY2FudmFzLXRvZ2dsZV9faWNvbjpiZWZvcmUsIC5jcy1vZmZjYW52YXMtdG9nZ2xlLS1hY3RpdmUgLmNzLW9mZmNhbnZhcy10b2dnbGVfX2ljb246YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG59XG4uY3Mtb2ZmY2FudmFzLXRvZ2dsZV9faWNvbiB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmNzLW9mZmNhbnZhcy10b2dnbGVfX2ljb24sIC5jcy1vZmZjYW52YXMtdG9nZ2xlX19pY29uOmJlZm9yZSwgLmNzLW9mZmNhbnZhcy10b2dnbGVfX2ljb246YWZ0ZXIge1xuICB3aWR0aDogMS44cmVtO1xuICBoZWlnaHQ6IDAuMnJlbTtcbiAgYmFja2dyb3VuZDogIzAwMDAwMDtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzLCB0cmFuc2Zvcm0gMC4zcztcbn1cbi5jcy1vZmZjYW52YXMtdG9nZ2xlX19pY29uOmJlZm9yZSwgLmNzLW9mZmNhbnZhcy10b2dnbGVfX2ljb246YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuLmNzLW9mZmNhbnZhcy10b2dnbGVfX2ljb246YmVmb3JlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yNTAlKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMjUwJSwgMCk7XG59XG4uY3Mtb2ZmY2FudmFzLXRvZ2dsZV9faWNvbjphZnRlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyNTAlKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAyNTAlLCAwKTtcbn1cbi5jcy1vZmZjYW52YXMtdG9nZ2xlX190ZXh0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDAuNXJlbTtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIGNvbG9yOiAjMjEyMTIxO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzO1xufVxuLmNzLW9mZmNhbnZhcy10b2dnbGUtLWFjdGl2ZSAuY3Mtb2ZmY2FudmFzLXRvZ2dsZV9fdGV4dCB7XG4gIGNvbG9yOiAjZmZmO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgLmNzLW9mZmNhbnZhcy10b2dnbGVfX3RleHQge1xuICAgIGJvdHRvbTogMnJlbTtcbiAgfVxufSIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcblxuJG9mZmNhbnZhc192ZXJ0aWNhbC1vZmZzZXQtbW9iaWxlOiAkZ2xvYmFsX2hlYWRlci1oZWlnaHQtbW9iaWxlICFkZWZhdWx0OyAvLyBNb3ZlIGJlbG93IHRoZSBuYXZpZ2F0aW9uIG9uIG1vYmlsZS5cbiRvZmZjYW52YXNfdG9wLW9mZnNldC10YWJsZXQ6ICRnbG9iYWxfaGVhZGVyLWhlaWdodC10YWJsZXQgIWRlZmF1bHQ7IC8vIE1vdmUgYmVsb3cgdGhlIG5hdmlnYXRpb24gb24gdGFibGV0LlxuJG9mZmNhbnZhc190cmFuc2l0aW9uLXRpbWU6ICR0cmFuc2l0aW9uLWRlZmF1bHQtdGltZSAhZGVmYXVsdDtcblxuJG9mZmNhbnZhc19vdmVybGF5LWJhY2tncm91bmQ6ICRtb2RhbHNfb3ZlcmxheS1iYWNrZ3JvdW5kICFkZWZhdWx0O1xuXG4kb2ZmY2FudmFzX2RyYXdlci1iYWNrZ3JvdW5kOiAkY29sb3JfYmFja2dyb3VuZC0yMDAgIWRlZmF1bHQ7XG5cbiRvZmZjYW52YXNfc3Bpbm5lci1jb2xvcjogJGNvbG9yX3ByaW1hcnktNTAwICFkZWZhdWx0O1xuXG4uI3skbnN9b2ZmY2FudmFzIHtcbiAgICAkcm9vdDogJjtcblxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAzMDA7XG5cbiAgICAmX19kcmF3ZXIsXG4gICAgJl9fb3ZlcmxheSB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBib3R0b206IDA7XG5cbiAgICAgICAgQGlmICgkZ2xvYmFsX2hlYWRlci1pcy1ib3R0b20tb24tbW9iaWxlKSB7XG4gICAgICAgICAgICBib3R0b206ICRvZmZjYW52YXNfdmVydGljYWwtb2Zmc2V0LW1vYmlsZTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICB0b3A6ICRvZmZjYW52YXNfdmVydGljYWwtb2Zmc2V0LW1vYmlsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgIHRvcDogJG9mZmNhbnZhc190b3Atb2Zmc2V0LXRhYmxldDtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PWxhcHRvcCcpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAjeyRyb290fS0tbWluaS1jYXJ0ICYge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19vdmVybGF5IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gI3skb2ZmY2FudmFzX3ZlcnRpY2FsLW9mZnNldC1tb2JpbGV9KTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIC8vIFNldHRpbmcgMW1zIGJlY2F1c2UgMCBkb2Vzbid0IHNlZW0gdG8gd29yayBhbmQgd2UgbmVlZCBzZWFtbGVzcyB0cmFuc2l0aW9uIGZvciBzY2FsZSBoZXJlLlxuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yICRvZmZjYW52YXNfdHJhbnNpdGlvbi10aW1lLFxuICAgICAgICAgICAgdHJhbnNmb3JtIDFtcyAkb2ZmY2FudmFzX3RyYW5zaXRpb24tdGltZTtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgICN7JHJvb3R9LS1taW5pLWNhcnQgJiB7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAub3ZlcmxheSB7XG4gICAgICAgICYtLXZpc2libGUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRvZmZjYW52YXNfb3ZlcmxheS1iYWNrZ3JvdW5kO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAkb2ZmY2FudmFzX3RyYW5zaXRpb24tdGltZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2RyYXdlciB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgYmFja2dyb3VuZDogJG9mZmNhbnZhc19kcmF3ZXItYmFja2dyb3VuZDtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtICRvZmZjYW52YXNfdHJhbnNpdGlvbi10aW1lO1xuICAgICAgICB3aWR0aDogOTAlO1xuICAgICAgICBtYXgtd2lkdGg6IDQwcmVtO1xuXG4gICAgICAgIEBpZiAoJGdsb2JhbF9oZWFkZXItaXMtYm90dG9tLW9uLW1vYmlsZSkge1xuICAgICAgICAgICAgYm90dG9tOiAkb2ZmY2FudmFzX3ZlcnRpY2FsLW9mZnNldC1tb2JpbGU7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAjeyRyb290fS0tc2lkZV9sZWZ0ICYge1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTA1JSwgMCwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICAjeyRyb290fS0tc2lkZV9yaWdodCAmIHtcbiAgICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTA1JSwgMCwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICAmLS1uYXZpZ2F0aW9uIHtcbiAgICAgICAgICAgIEBpZiAoJGdsb2JhbF9oZWFkZXItbW9iaWxlLW1lbnUtaXMtcmlnaHQpIHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTA1JSwgMCwgMCk7XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwNSUsIDAsIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyYXdlciB7XG4gICAgICAgICYtLXZpc2libGUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKSAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fc3Bpbm5lciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDZyZW07XG4gICAgICAgIGhlaWdodDogNnJlbTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB0b3A6IDIwJTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0zcmVtO1xuICAgIH1cbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcblxuJHBhZ2UtYm90dG9tX3RleHQtY29sb3I6ICRjb2xvcl90ZXh0LTUwMCAhZGVmYXVsdDtcbiRwYWdlLWJvdHRvbV9kaXZpZGVyLWNvbG9yOiAkY29sb3JfYm9yZGVyLTUwMCAhZGVmYXVsdDtcblxuLiN7JG5zfXBhZ2UtYm90dG9tIHtcbiAgICAkcm9vdDogJjtcblxuICAgIHBhZGRpbmc6IDEuNXJlbSAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIH1cblxuICAgIC5wYWdlLXByaW50ICYge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgICZfX2ltYWdlIHtcbiAgICAgICAgaGVpZ2h0OiAzcmVtO1xuICAgICAgICB3aWR0aDogYXV0bztcblxuICAgICAgICAmLS1jaXJjbGUge1xuICAgICAgICAgICAgd2lkdGg6IDQuN3JlbTtcbiAgICAgICAgICAgIGhlaWdodDogNC43cmVtO1xuICAgICAgICAgICAgbWluLXdpZHRoOiA0LjdyZW07XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiA0LjdyZW07XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX190ZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgICAgIGNvbG9yOiAkcGFnZS1ib3R0b21fdGV4dC1jb2xvcjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjZyZW07XG5cbiAgICAgICAgJi0tc21hbGwge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fZ3JvdXAge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAxO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDA7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj1sYXB0b3AnKSB7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmLS1pbmZvIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtYmFzaXM6IDQwJTtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcblxuICAgICAgICAgICAgICAgICN7JHJvb3R9X190ZXh0IHtcbiAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAyMHJlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PWxhcHRvcCcpIHtcbiAgICAgICAgICAgICAgICBmbGV4LWJhc2lzOiAxNyU7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcblxuICAgICAgICAgICAgICAgICN7JHJvb3R9X190ZXh0IHtcbiAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLXNoaXBwaW5nIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtYmFzaXM6IDU1JTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgICAgIGZsZXgtYmFzaXM6IDMzJTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDRyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLS1wYXltZW50IHtcbiAgICAgICAgICAgIGZsZXgtYmFzaXM6IDUwJTtcblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzx0YWJsZXQnKSB7XG4gICAgICAgICAgICAgICAgI3skcm9vdH1fX3RleHQge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0JywgJzxsYXB0b3AnKSB7XG4gICAgICAgICAgICAgICAgZmxleC1iYXNpczogMTAwJTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNHJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLXNoaXBwaW5nLFxuICAgICAgICAmLS1wYXltZW50IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PWxhcHRvcCcpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMCAxcmVtO1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAxcmVtO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDAuMnJlbTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkcGFnZS1ib3R0b21fZGl2aWRlci1jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2xvZ28ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXNocmluazogMTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8bGFwdG9wJykge1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICAmLS1oZXJtZXMge1xuICAgICAgICAgICAgd2lkdGg6IDEyLjJyZW07XG4gICAgICAgIH1cblxuICAgICAgICAmLS1kaGwge1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMnJlbTtcbiAgICAgICAgICAgIG1pbi13aWR0aDogOC42cmVtO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tcGF5cGFsIHtcbiAgICAgICAgICAgIHdpZHRoOiA2LjJyZW07XG4gICAgICAgIH1cblxuICAgICAgICAmLS12aXNhIHtcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDJyZW07XG4gICAgICAgICAgICBtaW4td2lkdGg6IDUuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLW1hc3RlcmNhcmQge1xuICAgICAgICAgICAgd2lkdGg6IDMuM3JlbTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWtsYXJuYS1zb2ZvcnQge1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMi41cmVtO1xuICAgICAgICAgICAgbWluLWhlaWdodDogMi41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0ta2xhcm5hIHtcbiAgICAgICAgICAgIHdpZHRoOiA3cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tZ2xzIHtcbiAgICAgICAgICAgIHdpZHRoOiA1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tZ2lyb3BheSB7XG4gICAgICAgICAgICB3aWR0aDogNC44cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tZWMge1xuICAgICAgICAgICAgd2lkdGg6IDEuOHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLXBheWRpcmVrdCB7XG4gICAgICAgICAgICB3aWR0aDogNnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWxhc3RzY2hyaWZ0IHtcbiAgICAgICAgICAgIHdpZHRoOiA2LjE1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tdm9ya2Fzc2Uge1xuICAgICAgICAgICAgd2lkdGg6IDguM3JlbTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLXJlY2hudW5nIHtcbiAgICAgICAgICAgIHdpZHRoOiA2LjE1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uI3skbnN9Y29udGFpbmVyIHtcbiAgICAmLS1wYWdlLWJvdHRvbSB7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG59XG4iLCJAaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdHlwb2dyYXBoeS9taXhpbic7XG5AaW1wb3J0ICd2ZW5kb3JzL2luY2x1ZGUtbWVkaWEnO1xuXG4kcGFnZS10aXRsZV9mb250LXNpemU6ICRmb250LXNpemVfaGVhZGxpbmUtMSAhZGVmYXVsdDtcbiRwYWdlLXRpdGxlX3RleHQtdHJhbnNmb3JtOiBub25lICFkZWZhdWx0O1xuJHBhZ2UtdGl0bGVfZm9udC13ZWlnaHQ6IDYwMCAhZGVmYXVsdDtcblxuJHBhZ2UtdGl0bGUtY2F0ZWdvcnlfZm9udC1zaXplOiA5cmVtICFkZWZhdWx0O1xuJHBhZ2UtdGl0bGUtY2F0ZWdvcnlfZm9udC1zaXplLW1vYmlsZTogMy41cmVtICFkZWZhdWx0O1xuJHBhZ2UtdGl0bGUtY2F0ZWdvcnlfZm9udC13ZWlnaHQ6IDQwMCAhZGVmYXVsdDtcblxuJHBhZ2UtdGl0bGVfc3Bhbi1jb2xvcjogJGNvbG9yX3RleHQtNTAwICFkZWZhdWx0O1xuJHBhZ2UtdGl0bGVfc3Bhbi1mb250LXdlaWdodDogMzAwICFkZWZhdWx0O1xuJHBhZ2UtdGl0bGVfc3Bhbi1wYWRkaW5nOiAwICFkZWZhdWx0O1xuXG4ucGFnZS10aXRsZSB7XG4gICAgQGluY2x1ZGUgaGVhZGxpbmUoJGxldmVsOiAkcGFnZS10aXRsZV9mb250LXNpemUpO1xuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtO1xuICAgIHRleHQtdHJhbnNmb3JtOiAkcGFnZS10aXRsZV90ZXh0LXRyYW5zZm9ybTtcbiAgICBmb250LXdlaWdodDogJHBhZ2UtdGl0bGVfZm9udC13ZWlnaHQ7XG5cbiAgICAmX19oZWFkbGluZSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogaW5oZXJpdDtcbiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICB9XG5cbiAgICAmX19zcGFuIHtcbiAgICAgICAgY29sb3I6ICRwYWdlLXRpdGxlX3NwYW4tY29sb3I7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAkcGFnZS10aXRsZV9zcGFuLWZvbnQtd2VpZ2h0O1xuICAgICAgICBwYWRkaW5nOiAkcGFnZS10aXRsZV9zcGFuLXBhZGRpbmc7XG4gICAgfVxufVxuXG4uY2F0YWxvZy1jYXRlZ29yeS12aWV3IHtcbiAgICAucGFnZS10aXRsZS13cmFwcGVyIHtcbiAgICAgICAgLnBhZ2UtdGl0bGUge1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IGxpbm90eXBlLWRpZG90LWhlYWRsaW5lLCBzZXJpZjtcbiAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICAgICAgbWFyZ2luOiAxcmVtIDA7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBmb250LXNpemU6ICRwYWdlLXRpdGxlLWNhdGVnb3J5X2ZvbnQtc2l6ZTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAkcGFnZS10aXRsZS1jYXRlZ29yeV9mb250LXdlaWdodDtcblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzw9dGFibGV0Jykge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHBhZ2UtdGl0bGUtY2F0ZWdvcnlfZm9udC1zaXplLW1vYmlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn0iLCJAaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcHJpY2UtYm94L21peGluJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcHJpY2UtYm94L3ZhcmlhYmxlcy5zY3NzJztcbkBpbXBvcnQgJ3V0aWxzL3Zpc3VhbGx5LWhpZGRlbic7XG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIG5vLWRlc2NlbmRpbmctc3BlY2lmaWNpdHlcblxuJGNvbmZpZ3VyYWJsZS1wcm9kdWN0cy1zaG93LWZyb20tcHJpY2UtbGFiZWw6IGZhbHNlO1xuXG4ucHJpY2UtYm94IHtcbiAgICAkcm9vdDogJjtcbiAgICBAaW5jbHVkZSBwcmljZUJveCgpO1xuXG4gICAgLnByaWNlIHtcbiAgICAgICAgY29sb3I6ICRwcmljZS1ib3hfbm9ybWFsLXByaWNlLWNvbG9yO1xuICAgICAgICBmb250LXNpemU6ICRwcmljZS1ib3hfbm9ybWFsLXByaWNlLWZvbnQtc2l6ZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRwcmljZS1ib3hfbm9ybWFsLXByaWNlLWZvbnQtd2VpZ2h0O1xuICAgICAgICBtYXJnaW46IDA7XG5cbiAgICAgICAgJi1sYWJlbCB7XG4gICAgICAgICAgICBjb2xvcjogJHByaWNlLWJveF9sYWJlbC1jb2xvcjtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICBmb250LXNpemU6ICRwcmljZS1ib3hfbGFiZWwtZm9udC1zaXplO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6ICRwcmljZS1ib3hfbGFiZWwtZm9udC13ZWlnaHQ7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgbWFyZ2luOiAwICRwcmljZS1ib3hfbGFiZWwtbWFyZ2luICRwcmljZS1ib3hfbGFiZWwtbWFyZ2luIDA7XG5cbiAgICAgICAgICAgIEBpZiAoJHByaWNlLWJveF9sYWJlbC1kaXNwbGF5LWNvbG9uKSB7XG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICc6JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJvZHk6bm90KC5wYWdlLXByb2R1Y3QtYnVuZGxlLCAucGFnZS1wcm9kdWN0LWdyb3VwZWQpXG4gICAgICAgICAgICAgICAgcDpub3QoLnByaWNlLWZyb20sIC5wcmljZS10bylcbiAgICAgICAgICAgICAgICAmIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB2aXN1YWxseS1oaWRkZW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkY29uZmlndXJhYmxlLXByb2R1Y3RzLXNob3ctZnJvbS1wcmljZS1sYWJlbCB7XG4gICAgICAgIC5ub3JtYWwtcHJpY2Uge1xuICAgICAgICAgICAgLnByaWNlLWxhYmVsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucHJpY2Utd3JhcHBlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuXG4gICAgLnByaWNlLWZyb20sXG4gICAgLnByaWNlLXRvIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgPiAucHJpY2UtY29udGFpbmVyIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJHByaWNlLWJveF9sYWJlbC1mb250LXNpemU7XG4gICAgICAgIH1cblxuICAgICAgICAucHJpY2UtbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5vbGQtcHJpY2Uge1xuICAgICAgICAucHJpY2Uge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiAkcHJpY2UtYm94X29sZC1wcmljZS10ZXh0LWRlY29yYXRpb247XG4gICAgICAgICAgICBjb2xvcjogJHByaWNlLWJveF9vbGQtcHJpY2UtY29sb3I7XG4gICAgICAgICAgICBmb250LXNpemU6ICRwcmljZS1ib3hfb2xkLXByaWNlLWZvbnQtc2l6ZTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAkcHJpY2UtYm94X29sZC1wcmljZS1mb250LXdlaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zcGVjaWFsLXByaWNlIHtcbiAgICAgICAgLnByaWNlIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICAgIGNvbG9yOiAkcHJpY2UtYm94X3NwZWNpYWwtcHJpY2UtY29sb3I7XG4gICAgICAgICAgICBmb250LXNpemU6ICRwcmljZS1ib3hfc3BlY2lhbC1wcmljZS1mb250LXNpemU7XG4gICAgICAgICAgICBmb250LXdlaWdodDogJHByaWNlLWJveF9zcGVjaWFsLXByaWNlLWZvbnQtd2VpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgLnByaWNlIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHByaWNlLWJveF9zcGVjaWFsLXByaWNlLWNvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnByaWNlLWZyb20ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRwcmljZS1ib3hfc3BhY2UtYmV0d2Vlbi1wcmljZXM7XG4gICAgfVxuXG4gICAgLiN7JG5zfXByaWNlLS1wZHBfZGFpbHlkZWFsLWNvdW50ZG93biAmIHtcbiAgICAgICAgJjpub3QoLnByaWNlLWZpbmFsX3ByaWNlX3dpdGhvdXRfZGFpbHlfZGVhbCkge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5wcmljZS1jb250YWluZXIucHJpY2UtZmluYWxfcHJpY2Uge1xuICAgICAgICAmOm5vdCg6b25seS1jaGlsZCkgLnByaWNlIHtcbiAgICAgICAgICAgIGNvbG9yOiAkcHJpY2UtYm94X3NwZWNpYWwtcHJpY2UtY29sb3I7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi4jeyRuc31idW5kbGUtYm94X19hZGQge1xuICAgIC5wcmljZS1hcy1jb25maWd1cmVkIHtcbiAgICAgICAgbWFyZ2luOiAxcmVtIDAgMDtcbiAgICB9XG59XG5cbi5taW5pbWFsLXByaWNlLWxpbmsge1xuICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcbiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY29sb3I6ICRwcmljZS1ib3hfbm9ybWFsLXByaWNlLWNvbG9yO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29udGVudDogJy0nO1xuICAgICAgICByaWdodDogLTFyZW07XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIH1cbn1cbiIsIi8vIHByaWNlLWJveFxuLy8gVGhpcyBjb21wb25lbnQgaXMgcmVzcG9uc2libGUgZm9yIHN0eWxpbmcgcHJpY2VzIGJ5IG1hcmt1cCBwcm92aWRlZCBieSBNYWdlbnRvMlxuLy9cbi8vIFNlZSBodHRwOi8vd2FycHNwaXJlLmNvbS9rc3MvIGZvciBkb2N1bWVudGF0aW9uIGd1aWRlbGluZXMuXG4vLyBWZXJzaW9uIDAuMC4xXG5AbWl4aW4gcHJpY2VCb3goKSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICAgLnByaWNlIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAgICAgICAmLWxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAub2xkLXByaWNlIHtcbiAgICAgICAgLnByaWNlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT2xkIHByaWNlIHNob3VsZCBub3QgYmUgZGlzcGxheWVkIGZvciBwcmljZXMgd2hlcmUgbm9ybWFsIHByaWNlIGlzIFwiQXMgbG93IGFzIHtwcmljZX1cIlxuICAgICAgICAmLm5vLWRpc3BsYXkge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zcGVjaWFsLXByaWNlIC5wcmljZSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMC40ZW07XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTdHJpbmcgdG8gbnVtYmVyIGNvbnZlcnRlclxuICogaHR0cHM6Ly93d3cuc2Fzc21laXN0ZXIuY29tL2dpc3QvOWZhMTlkMjU0ODY0ZjMzZDRhODBcbiAqIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuICogQHBhcmFtIHtTdHJpbmcgfCBOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGJlIHBhcnNlZFxuICogQHJldHVybiB7TnVtYmVyfVxuICovXG5cbkBmdW5jdGlvbiB0by1udW1iZXIoJHZhbHVlKSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG4gICAgICAgIEByZXR1cm4gJHZhbHVlO1xuICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkdmFsdWUpICE9ICdzdHJpbmcnIHtcbiAgICAgICAgJF86IGxvZygnVmFsdWUgZm9yIGB0by1udW1iZXJgIHNob3VsZCBiZSBhIG51bWJlciBvciBhIHN0cmluZy4nKTtcbiAgICB9XG5cbiAgICAkcmVzdWx0OiAwO1xuICAgICRkaWdpdHM6IDA7XG4gICAgJG1pbnVzOiBzdHItc2xpY2UoJHZhbHVlLCAxLCAxKSA9PSAnLSc7XG4gICAgJG51bWJlcnM6IChcbiAgICAgICAgJzAnOiAwLFxuICAgICAgICAnMSc6IDEsXG4gICAgICAgICcyJzogMixcbiAgICAgICAgJzMnOiAzLFxuICAgICAgICAnNCc6IDQsXG4gICAgICAgICc1JzogNSxcbiAgICAgICAgJzYnOiA2LFxuICAgICAgICAnNyc6IDcsXG4gICAgICAgICc4JzogOCxcbiAgICAgICAgJzknOiA5LFxuICAgICk7XG5cbiAgICBAZm9yICRpIGZyb20gaWYoJG1pbnVzLCAyLCAxKSB0aHJvdWdoIHN0ci1sZW5ndGgoJHZhbHVlKSB7XG4gICAgICAgICRjaGFyYWN0ZXI6IHN0ci1zbGljZSgkdmFsdWUsICRpLCAkaSk7XG5cbiAgICAgICAgQGlmIG5vdChpbmRleChtYXAta2V5cygkbnVtYmVycyksICRjaGFyYWN0ZXIpIG9yICRjaGFyYWN0ZXIgPT0gJy4nKSB7XG4gICAgICAgICAgICBAcmV0dXJuIHRvLWxlbmd0aChcbiAgICAgICAgICAgICAgICBpZigkbWludXMsIC0kcmVzdWx0LCAkcmVzdWx0KSxcbiAgICAgICAgICAgICAgICBzdHItc2xpY2UoJHZhbHVlLCAkaSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCRjaGFyYWN0ZXIgPT0gJy4nKSB7XG4gICAgICAgICAgICAkZGlnaXRzOiAxO1xuICAgICAgICB9IEBlbHNlIGlmICgkZGlnaXRzID09IDApIHtcbiAgICAgICAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKiAxMCArIG1hcC1nZXQoJG51bWJlcnMsICRjaGFyYWN0ZXIpO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRkaWdpdHM6ICRkaWdpdHMgKiAxMDtcbiAgICAgICAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKyBtYXAtZ2V0KCRudW1iZXJzLCAkY2hhcmFjdGVyKSAvICRkaWdpdHM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIGlmKCRtaW51cywgLSRyZXN1bHQsICRyZXN1bHQpO1xufVxuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd2ZW5kb3JzL2luY2x1ZGUtbWVkaWEnO1xuQGltcG9ydCAnY29tcG9uZW50cy9iYWRnZS9taXhpbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3ByaWNlLWJveC92YXJpYWJsZXMuc2Nzcyc7XG5AaW1wb3J0ICdldGMvdmlldy5zY3NzJztcbkBpbXBvcnQgJ3V0aWxzL2RlZXAtZ2V0L2RlZXAtZ2V0LnNjc3MnO1xuQGltcG9ydCAndXRpbHMvc3RyaW5nLXRvLW51bWJlcic7XG5AaW1wb3J0ICd1dGlscy9yZXNldC1saXN0LXN0eWxlJztcbkBpbXBvcnQgJ3V0aWxzL3Zpc3VhbGx5LWhpZGRlbic7XG5cbi8vIEdlbmVyYWxcbiRwcm9kdWN0LXRpbGVfZ2VuZXJhbC10aWxlLWd1dHRlcjogMS41cmVtICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9nZW5lcmFsLWVsZW1lbnRzLWd1dHRlcjogMXJlbSAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfZ2VuZXJhbC1iYWNrZ3JvdW5kOiAkY29sb3Jfd2hpdGUgIWRlZmF1bHQ7XG4kcHJvZHVjdC10aWxlX2dlbmVyYWwtYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXNfYmFzZSAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfZ2VuZXJhbC1mb250LXNpemU6IDEuNHJlbSAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfaG92ZXItYW5pbWF0aW9uOiB0cnVlICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9ob3Zlci1hbmltYXRpb24tYnJlYWtwb2ludDogJz49bGFwdG9wJyAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfcGFkZGluZzogJHByb2R1Y3QtdGlsZV9nZW5lcmFsLXRpbGUtZ3V0dGVyICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9hbGlnbm1lbnQ6IGNlbnRlciAhZGVmYXVsdDsgLy8gbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4kcHJvZHVjdC10aWxlX2luaXRpYWwtYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG4kcHJvZHVjdC10aWxlX2hvdmVyLWJvcmRlcjogMXB4IHNvbGlkICRjb2xvcl9nYWxsZXJ5ICFkZWZhdWx0O1xuXG4vLyBJZiBwcm9kdWN0IHRpbGUgZGVzaWduIGhhcyBhIGhpZGRlbiBib3R0b20gcGFydCB0aGF0IGlzIHNsaWRlZCB1cCBvbiBob3ZlciBzZXQgYm90aCBiZWxvdyB2YXJpYWJsZXNcbiRwcm9kdWN0LXRpbGVfbWFpbi1hZnRlci1zbGlkZS1vbi1ob3ZlcjogZmFsc2UgIWRlZmF1bHQ7XG4kcHJvZHVjdC10aWxlX21haW4tYWZ0ZXItaGVpZ2h0OiAnYXV0bycgIWRlZmF1bHQ7XG4kcHJvZHVjdC10aWxlX2NvbnRlbnQtaGVpZ2h0OiAnYXV0bycgIWRlZmF1bHQ7XG5cbi8vIFByb2R1Y3QgbmFtZVxuJHByb2R1Y3QtdGlsZV9wcm9kdWN0LW5hbWUtZm9udC1zaXplOiAkcHJvZHVjdC10aWxlX2dlbmVyYWwtZm9udC1zaXplICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9wcm9kdWN0LW5hbWUtZm9udC13ZWlnaHQ6IDQwMCAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfcHJvZHVjdC1uYW1lLW1heC1saW5lcy1kaXNwbGF5OiAxICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9wcm9kdWN0LW5hbWUtbGluZS1oZWlnaHQ6IDEuOHJlbSAhZGVmYXVsdDsgLy8gTVVTVCBCRSBhIG51bWJlciB2YWx1ZSB3aXRoIHVuaXQsIGNhbm5vdCBiZSAnaW5oZXJpdCdcbiRwcm9kdWN0LXRpbGVfcHJvZHVjdC1uYW1lLWxpbmstY29sb3I6ICRjb2xvcl9taW5lc2hhZnQgIWRlZmF1bHQ7XG4kcHJvZHVjdC10aWxlX3Byb2R1Y3QtbmFtZS1saW5rLWNvbG9yLXZpc2l0ZWQ6ICRjb2xvcl9taW5lc2hhZnQgIWRlZmF1bHQ7XG4kcHJvZHVjdC10aWxlX3Byb2R1Y3QtbmFtZS1saW5rLWNvbG9yLWhvdmVyOiAkY29sb3JfbWluZXNoYWZ0ICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9wcm9kdWN0LW5hbWUtbGluay10ZXh0LWRlY29yYXRpb24taG92ZXI6IHVuZGVybGluZSAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfcHJvZHVjdC1uYW1lLW1hcmdpbjogMHB4ICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9wcm9kdWN0LW5hbWUtYWxpZ25tZW50OiBsZWZ0ICFkZWZhdWx0O1xuXG4vLyBCYWRnZXNcbiRwcm9kdWN0LXRpbGVfYmFkZ2VzLXotaW5kZXg6IDIgIWRlZmF1bHQ7XG4kcHJvZHVjdC10aWxlX2JhZGdlcy1kaXJlY3Rpb246ICd2ZXJ0aWNhbCcgIWRlZmF1bHQ7IC8vIHZlcnRpY2FsIG9yIGhvcml6b250YWxcbiRwcm9kdWN0LXRpbGVfYmFkZ2VzLXktYXNpcy1wb3NpdGlvbi1wcm9wOiB0b3AgIWRlZmF1bHQ7XG4kcHJvZHVjdC10aWxlX2JhZGdlcy14LWFzaXMtcG9zaXRpb24tcHJvcDogbGVmdCAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfYmFkZ2VzLXktYXNpcy1wb3NpdGlvbi12YWx1ZTogJHByb2R1Y3QtdGlsZV9nZW5lcmFsLWVsZW1lbnRzLWd1dHRlciAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfYmFkZ2VzLXgtYXNpcy1wb3NpdGlvbi12YWx1ZTogJHByb2R1Y3QtdGlsZV9nZW5lcmFsLWVsZW1lbnRzLWd1dHRlciAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfYmFkZ2VzLWl0ZW0tbWFyZ2luOiAwIDAgI3skcHJvZHVjdC10aWxlX2dlbmVyYWwtZWxlbWVudHMtZ3V0dGVyIC9cbiA0XG59XG5cbiFkZWZhdWx0O1xuXG4vLyBTd2F0Y2hlc1xuJHByb2R1Y3QtdGlsZV9zd2F0Y2hlcy1jb250YWluZXItbWluLWhlaWdodDogMi42cmVtICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9zd2F0Y2hlcy1tYXJnaW46ICRwcm9kdWN0LXRpbGVfZ2VuZXJhbC1lbGVtZW50cy1ndXR0ZXIgMCAkcHJvZHVjdC10aWxlX2dlbmVyYWwtZWxlbWVudHMtZ3V0dGVyICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9zd2F0Y2hlcy1hbGlnbm1lbnQ6ICRwcm9kdWN0LXRpbGVfYWxpZ25tZW50ICFkZWZhdWx0O1xuXG4vLyBCcmFuZFxuJHByb2R1Y3QtdGlsZV9icmFuZC1mb250LXNpemU6IDEuMnJlbSAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfYnJhbmQtY29sb3I6ICRjb2xvcl90ZXh0LTQwMCAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfYnJhbmQtaGVpZ2h0OiAycmVtICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9icmFuZC1hbGlnbm1lbnQ6IGNlbnRlciAhZGVmYXVsdDtcblxuLy8gUmV2aWV3XG4kcHJvZHVjdC10aWxlX3Jldmlldy1tYXJnaW46ICN7JHByb2R1Y3QtdGlsZV9nZW5lcmFsLWVsZW1lbnRzLWd1dHRlciAvIDJ9IDAgMCAhZGVmYXVsdDtcblxuLy8gQWRkdG9cbiRwcm9kdWRjdC10aWxlX2FkZHRvLWZvbnQtc2l6ZTogMS4zcmVtICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9hZGR0by1tYXJnaW46ICN7JHByb2R1Y3QtdGlsZV9nZW5lcmFsLWVsZW1lbnRzLWd1dHRlciAvIDJ9IDAgMCAhZGVmYXVsdDtcblxuLy8gUXR5IHN3aWN0aGVyXG4kcHJvZHVkY3QtdGlsZV9xdHktc3dpdGNoZXItd2lkdGg6IDExcmVtICFkZWZhdWx0O1xuJHByb2R1ZGN0LXRpbGVfcXR5LXN3aXRjaGVyLXNwYWNlLWJvdHRvbTogMXJlbSAhZGVmYXVsdDtcblxuLy8gQWRkdG9jYXJ0XG4kcHJvZHVjdC10aWxlX2FkZHRvY2FydC1tYXJnaW46IDAgMCAwICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9hZGR0b2NhcnQtd2lkdGg6IDhyZW0gIWRlZmF1bHQ7XG4kcHJvZHVjdC10aWxlX2FkZHRvY2FydC1zaG93LW9ubHktb24taG92ZXI6IHRydWUgIWRlZmF1bHQ7XG4kcHJvZHVjdC10aWxlX2FkZHRvY2FydC1yZWR1Y2VkOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdG9ja1xuJHByb2R1Y3QtdGlsZV9zdG9jay1mb250LXNpemU6IDEuM3JlbSAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfc3RvY2staW4tY29sb3I6ICRjb2xvcl9hcHBsZSAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfc3RvY2stb3V0LW9mLWNvbG9yOiAkY29sb3JfY3JpbXNvbiAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfc3RvY2stbWFyZ2luOiAwICFkZWZhdWx0O1xuXG4vLyBEYWlseSBEZWFsXG4kcHJvZHVjdC10aWxlX2RhaWx5ZGVhbC1tYXJnaW46IDAgIWRlZmF1bHQ7XG5cbi8vIFdpc2hsaXN0XG4kcHJvZHVjdC10aWxlX3dpc2hsaXN0LWNvbW1lbnQtdmlzaWJsZTogZmFsc2UgIWRlZmF1bHQ7XG4kcHJvZHVjdC10aWxlX3dpc2hsaXN0LWNvbW1lbnQtdGV4dGFyZWEtaGVpZ2h0OiA1cmVtICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV93aXNobGlzdC1hY3Rpb25zLW1hcmdpbjogI3skcHJvZHVjdC10aWxlX2dlbmVyYWwtZWxlbWVudHMtZ3V0dGVyIC9cbiAyXG59XG5cbjAgMCAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfd2lzaGxpc3QtYWN0aW9ucy1kaXNwbGF5OiBmbGV4ICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV93aXNobGlzdC1hY3Rpb25zLWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhZGVmYXVsdDtcblxuJHByb2R1Y3QtdGlsZV93aXNobGlzdC1yZW1vdmUtaWNvbi1iYWNrZ3JvdW5kOiAkY29sb3JfYmFja2dyb3VuZC0yMDAgIWRlZmF1bHQ7XG4kcHJvZHVjdC10aWxlX3dpc2hsaXN0LXJlbW92ZS1pY29uLXNpemU6IDEuMnJlbSAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfd2lzaGxpc3QtcmVtb3ZlLWljb24tZmlsbDogJGNvbG9yX2JvcmRlci03MDAgIWRlZmF1bHQ7XG5cbi8vIERlc2NyaXB0aW9uXG4kcHJvZHVjdC10aWxlX2Rlc2NyaXB0aW9uLWZvbnQtc2l6ZTogMS4zcmVtICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9kZXNjcmlwdGlvbi1mb250LXdlaWdodDogNDAwICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9kZXNjcmlwdGlvbi1saW5lLWhlaWdodDogMS40ICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9kZXNjcmlwdGlvbi1jb2xvcjogJGNvbG9yX2RvdmUtZ3JheSAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfZGVzY3JpcHRpb24tbWFyZ2luOiAwIDAgI3skcHJvZHVjdC10aWxlX2dlbmVyYWwtZWxlbWVudHMtZ3V0dGVyIC9cbiAyXG59XG5cbiFkZWZhdWx0O1xuXG4vLyBUaHVtYm5haWxcbiRwcm9kdWN0LXRpbGVfbGltaXQtY29udGFpbmVyLXRvLWltYWdlLXNpemU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFByaWNlc1xuJHByb2R1Y3QtdGlsZV9ub3JtYWwtcHJpY2UtY29sb3I6ICRwcmljZS1ib3hfbm9ybWFsLXByaWNlLWNvbG9yICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9ub3JtYWwtcHJpY2UtZm9udC1zaXplOiAkcHJpY2UtYm94X25vcm1hbC1wcmljZS1mb250LXNpemUgIWRlZmF1bHQ7XG4kcHJvZHVjdC10aWxlX25vcm1hbC1wcmljZS1mb250LXdlaWdodDogJHByaWNlLWJveF9ub3JtYWwtcHJpY2UtZm9udC13ZWlnaHQgIWRlZmF1bHQ7XG4kcHJvZHVjdC10aWxlX3NwZWNpYWwtcHJpY2UtY29sb3I6ICRwcmljZS1ib3hfc3BlY2lhbC1wcmljZS1jb2xvciAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfc3BlY2lhbC1wcmljZS1mb250LXNpemU6ICRwcmljZS1ib3hfc3BlY2lhbC1wcmljZS1mb250LXNpemUgIWRlZmF1bHQ7XG4kcHJvZHVjdC10aWxlX3NwZWNpYWwtcHJpY2UtZm9udC13ZWlnaHQ6ICRwcmljZS1ib3hfc3BlY2lhbC1wcmljZS1mb250LXdlaWdodCAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfb2xkLXByaWNlLWNvbG9yOiAkcHJpY2UtYm94X29sZC1wcmljZS1jb2xvciAhZGVmYXVsdDtcbiRwcm9kdWN0LXRpbGVfb2xkLXByaWNlLWZvbnQtc2l6ZTogJHByaWNlLWJveF9vbGQtcHJpY2UtZm9udC1zaXplICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9vbGQtcHJpY2UtZm9udC13ZWlnaHQ6ICRwcmljZS1ib3hfb2xkLXByaWNlLWZvbnQtd2VpZ2h0ICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9vbGQtcHJpY2UtdGV4dC1kZWNvcmF0aW9uOiAkcHJpY2UtYm94X29sZC1wcmljZS10ZXh0LWRlY29yYXRpb24gIWRlZmF1bHQ7XG5cbiRwcm9kdWN0LXRpbGVfcHJpY2VzLWRpcmVjdGlvbjogJ2hvcml6b250YWwnICFkZWZhdWx0OyAvLyB2ZXJ0aWNhbCBvciBob3Jpem9udGFsXG4kcHJvZHVjdC10aWxlX3ByaWNlcy1tYXJnaW46IDAgIWRlZmF1bHQ7XG4kcHJvZHVjdC10aWxlX2Rpc3BsYXktb2xkLXByaWNlLWZpcnN0OiB0cnVlICFkZWZhdWx0O1xuJHByb2R1Y3QtdGlsZV9wcmljZXMtYWxpZ25tZW50OiAnbGVmdCcgIWRlZmF1bHQ7XG5cbiRwcm9kdWN0LXRpbGUtbWFnZW50by1jYXRhbG9nLWltYWdlOiBkZWVwLWdldCgkdmlldy14bWwsXG4gICAgICAgIG1lZGlhLFxuICAgICAgICBpbWFnZXMsXG4gICAgICAgIGltYWdlLFxuICAgICAgICBjYXRlZ29yeV9wYWdlX2dyaWQpO1xuJHByb2R1Y3QtdGlsZS1tYWdlbnRvLWNhdGFsb2ctaW1hZ2Utd2lkdGg6IHRvLW51bWJlcigje21hcC1nZXQoJHByb2R1Y3QtdGlsZS1tYWdlbnRvLWNhdGFsb2ctaW1hZ2UsIHdpZHRoKX0pO1xuJHByb2R1Y3QtdGlsZS1tYWdlbnRvLWNhdGFsb2ctaW1hZ2UtaGVpZ2h0OiB0by1udW1iZXIoI3ttYXAtZ2V0KCRwcm9kdWN0LXRpbGUtbWFnZW50by1jYXRhbG9nLWltYWdlLCBoZWlnaHQpfSk7XG5cbi4jeyRuc31wcm9kdWN0LXRpbGUge1xuICAgICRyb290OiAmO1xuXG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3JkZXItcmFkaXVzOiAkcHJvZHVjdC10aWxlX2dlbmVyYWwtYm9yZGVyLXJhZGl1cztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJvZHVjdC10aWxlX2dlbmVyYWwtYmFja2dyb3VuZDtcbiAgICAvLyBib3JkZXI6ICRwcm9kdWN0LXRpbGVfaW5pdGlhbC1ib3JkZXI7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yICR0cmFuc2l0aW9uLWRlZmF1bHQtdGltZTtcbiAgICAvL2FzcGVjdC1yYXRpbzogI3skdGlsZV9hc3BlY3QtcmF0aW8td2lkdGgtLW1vYmlsZX0vI3skdGlsZV9hc3BlY3QtcmF0aW8taGVpZ2h0LS1tb2JpbGV9O1xuXG4gICAgLy8gQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgIC8vICAgICBhc3BlY3QtcmF0aW86ICN7JHRpbGVfYXNwZWN0LXJhdGlvLXdpZHRofS8jeyR0aWxlX2FzcGVjdC1yYXRpby1oZWlnaHR9O1xuICAgIC8vIH1cblxuICAgIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSBhbmQgKHBvaW50ZXI6IGZpbmUpIHtcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAvLyBib3JkZXI6ICRwcm9kdWN0LXRpbGVfaG92ZXItYm9yZGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tY2xpY2thYmxlIHtcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1oaWRkZW4ge1xuICAgICAgICAjeyRyb290fV9fbWFpbiB7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2NvbnRhaW5lciB7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nOiAkcHJvZHVjdC10aWxlX3BhZGRpbmc7XG5cbiAgICAgICAgQGlmICgkcHJvZHVjdC10aWxlX2NvbnRlbnQtaGVpZ2h0ICE9J2F1dG8nIGFuZCAkcHJvZHVjdC10aWxlX21haW4tYWZ0ZXItc2xpZGUtb24taG92ZXIgKSB7XG4gICAgICAgICAgICBAbWVkaWEgKGhvdmVyOiBob3ZlcikgYW5kIChwb2ludGVyOiBmaW5lKSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206ICRwcm9kdWN0LXRpbGVfY29udGVudC1oZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19saW5rIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAmX190aHVtYm5haWwge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgIH1cblxuICAgICZfX3RodW1ibmFpbC1saW5rIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcblxuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmOnZpc2l0ZWQge1xuICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19maWd1cmUge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICBAaWYgKCRwcm9kdWN0LXRpbGVfbGltaXQtY29udGFpbmVyLXRvLWltYWdlLXNpemUpIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogKCRwcm9kdWN0LXRpbGUtbWFnZW50by1jYXRhbG9nLWltYWdlLXdpZHRoIC8gMTApICogMXJlbTtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6ICgkcHJvZHVjdC10aWxlLW1hZ2VudG8tY2F0YWxvZy1pbWFnZS1oZWlnaHQgLyAxMCkgKiAxcmVtO1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19pbWFnZSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICAgICAgbWFyZ2luOiBhdXRvO1xuICAgIH1cblxuICAgICZfX2ltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcblxuICAgICAgICAmW3NyYyo9J3BsYWNlaG9sZGVyJ10ge1xuICAgICAgICAgICAgbWluLXdpZHRoOiA3MCU7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAycmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fY29udGVudCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG5cbiAgICAgICAgQGlmICgkcHJvZHVjdC10aWxlX21haW4tYWZ0ZXItc2xpZGUtb24taG92ZXIpIHtcbiAgICAgICAgICAgIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSBhbmQgKHBvaW50ZXI6IGZpbmUpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6ICRwcm9kdWN0LXRpbGVfZ2VuZXJhbC10aWxlLWd1dHRlcjtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtICgyICogI3skcHJvZHVjdC10aWxlX2dlbmVyYWwtdGlsZS1ndXR0ZXJ9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19tYWluIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpICRwcm9kdWN0LXRpbGVfYWRkdG9jYXJ0LXdpZHRoO1xuXG4gICAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgICAgICAgICAnYmFkZ2VzIGFkZHRvJ1xuICAgICAgICAgICAgJ3N3YXRjaGVzIHN3YXRjaGVzJ1xuICAgICAgICAgICAgJ25hbWUgbmFtZSdcbiAgICAgICAgICAgICdkZXNjcmlwdGlvbiBkZXNjcmlwdGlvbidcbiAgICAgICAgICAgICdjb2xsZWN0aW9uLXNrdSBjb2xsZWN0aW9uLXNrdSdcbiAgICAgICAgICAgICdwcmljZSBwcmljZSdcbiAgICAgICAgICAgICdyZXZpZXcgIGFkZHRvY2FydCdcbiAgICAgICAgICAgICdzdG9jayBhZGR0b2NhcnQnXG4gICAgICAgICAgICAnd2lzaGxpc3QtaWNvbnMgd2lzaGxpc3QtaWNvbnMnO1xuICAgIH1cblxuICAgICZfX3N3YXRjaGVzIHtcbiAgICAgICAgZ3JpZC1hcmVhOiBzd2F0Y2hlcztcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgbWFyZ2luOiAkcHJvZHVjdC10aWxlX3N3YXRjaGVzLW1hcmdpbjtcbiAgICAgICAgbWluLWhlaWdodDogJHByb2R1Y3QtdGlsZV9zd2F0Y2hlcy1jb250YWluZXItbWluLWhlaWdodDtcblxuICAgICAgICAmLFxuICAgICAgICAuc3dhdGNoLWF0dHJpYnV0ZS1vcHRpb25zIHtcbiAgICAgICAgICAgIEBpZiAoJHByb2R1Y3QtdGlsZV9zd2F0Y2hlcy1hbGlnbm1lbnQgPT0nbGVmdCcpIHtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBlbHNlIGlmICgkcHJvZHVjdC10aWxlX3N3YXRjaGVzLWFsaWdubWVudCA9PSdyaWdodCcpIHtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8dGFibGV0Jykge1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgICAgICAvLyBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAvLyAmOmFmdGVye1xuICAgICAgICAgICAgLy8gICAgIGNvbnRlbnQ6IFwiK1wiO1xuICAgICAgICAgICAgLy8gICAgIGNvbG9yOiAkY29sb3JfY29yaW5fbGlnaHQ7XG4gICAgICAgICAgICAvLyAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgLy8gICAgIHdpZHRoOiAzNXB4O1xuICAgICAgICAgICAgLy8gICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICAgICAgICAgIC8vICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgICAgICAgLy8gICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgICAgICAgIC8vICAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICAgICAgICAgIC8vICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMjU1LDI1NSwyNTUsMCkgMCUsIHJnYigyNTUsMjU1LDI1NSkgNDAlKTs7XG4gICAgICAgICAgICAvLyAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgLy8gICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgLy8gICAgIHRvcDogMDtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2JyYW5kIHtcbiAgICAgICAgZ3JpZC1hcmVhOiBicmFuZDtcbiAgICAgICAgaGVpZ2h0OiAkcHJvZHVjdC10aWxlX2JyYW5kLWhlaWdodDtcbiAgICAgICAgbWFyZ2luLXRvcDogJHByb2R1Y3QtdGlsZV9nZW5lcmFsLXRpbGUtZ3V0dGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiAkcHJvZHVjdC10aWxlX2JyYW5kLWFsaWdubWVudDtcblxuICAgICAgICAmLS1lbXB0eSB7XG4gICAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19icmFuZC10ZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiAkcHJvZHVjdC10aWxlX2JyYW5kLWZvbnQtc2l6ZTtcbiAgICAgICAgY29sb3I6ICRwcm9kdWN0LXRpbGVfYnJhbmQtY29sb3I7XG4gICAgfVxuXG4gICAgJl9fbmFtZSB7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGdyaWQtYXJlYTogbmFtZTtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRwcm9kdWN0LXRpbGVfcHJvZHVjdC1uYW1lLWxpbmUtaGVpZ2h0O1xuICAgICAgICBmb250LXdlaWdodDogJHByb2R1Y3QtdGlsZV9wcm9kdWN0LW5hbWUtZm9udC13ZWlnaHQ7XG4gICAgICAgIGZvbnQtc2l6ZTogJHByb2R1Y3QtdGlsZV9wcm9kdWN0LW5hbWUtZm9udC1zaXplO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAkcHJvZHVjdC10aWxlX3Byb2R1Y3QtbmFtZS1tYXgtbGluZXMtZGlzcGxheSAqICRwcm9kdWN0LXRpbGVfcHJvZHVjdC1uYW1lLWxpbmUtaGVpZ2h0ICsgMC4yO1xuICAgICAgICBtYXJnaW46ICRwcm9kdWN0LXRpbGVfcHJvZHVjdC1uYW1lLW1hcmdpbjtcbiAgICAgICAgdGV4dC1hbGlnbjogJHByb2R1Y3QtdGlsZV9wcm9kdWN0LW5hbWUtYWxpZ25tZW50O1xuXG4gICAgICAgIEBpZiAoJHByb2R1Y3QtdGlsZV9wcm9kdWN0LW5hbWUtbWF4LWxpbmVzLWRpc3BsYXkgPT0xKSB7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIH1cblxuICAgICAgICBhIHtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkcHJvZHVjdC10aWxlX3Byb2R1Y3QtbmFtZS1saW5rLWNvbG9yLWhvdmVyICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6dmlzaXRlZCB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRwcm9kdWN0LXRpbGVfcHJvZHVjdC1uYW1lLWxpbmstY29sb3ItdmlzaXRlZCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fbmFtZS1saW5rIHtcbiAgICAgICAgY29sb3I6ICRwcm9kdWN0LXRpbGVfcHJvZHVjdC1uYW1lLWxpbmstY29sb3I7XG5cbiAgICAgICAgQGlmICgkcHJvZHVjdC10aWxlX3Byb2R1Y3QtbmFtZS1saW5rLWNvbG9yICE9JHByb2R1Y3QtdGlsZV9wcm9kdWN0LW5hbWUtbGluay1jb2xvci1ob3ZlciApIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGxpbmVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGRpc2FibGVkIGJlY2F1c2UgYXV0b3ByZWZpeGVyIGNhbid0IGJ1aWxkIHRoaXMgKi9cbiAgICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUgdmFsdWUtbm8tdmVuZG9yLXByZWZpeCAqL1xuICAgICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4ICovXG4gICAgICAgIEBpZiAoJHByb2R1Y3QtdGlsZV9wcm9kdWN0LW5hbWUtbWF4LWxpbmVzLWRpc3BsYXkgPiAxKSB7XG4gICAgICAgICAgICAvKiBhdXRvcHJlZml4ZXI6IGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgICAgIC8qIGF1dG9wcmVmaXhlcjogaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgICAgICAvKiBhdXRvcHJlZml4ZXI6IGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6ICRwcm9kdWN0LXRpbGVfcHJvZHVjdC1uYW1lLW1heC1saW5lcy1kaXNwbGF5O1xuICAgICAgICAgICAgLyogYXV0b3ByZWZpeGVyOiBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgbGluZS1jbGFtcDogJHByb2R1Y3QtdGlsZV9wcm9kdWN0LW5hbWUtbWF4LWxpbmVzLWRpc3BsYXk7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIHZhbHVlLW5vLXZlbmRvci1wcmVmaXggKi9cbiAgICAgICAgLyogc3R5bGVsaW50LWVuYWJsZSBwcm9wZXJ0eS1uby12ZW5kb3ItcHJlZml4ICovXG5cbiAgICAgICAgJjp2aXNpdGVkIHtcbiAgICAgICAgICAgIGNvbG9yOiAkcHJvZHVjdC10aWxlX3Byb2R1Y3QtbmFtZS1saW5rLWNvbG9yLXZpc2l0ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiAkcHJvZHVjdC10aWxlX3Byb2R1Y3QtbmFtZS1saW5rLWNvbG9yLWhvdmVyO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiAkcHJvZHVjdC10aWxlX3Byb2R1Y3QtbmFtZS1saW5rLXRleHQtZGVjb3JhdGlvbi1ob3ZlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2NvbGVjdGlvbi1za3Utd3JhcHBlciB7XG5cbiAgICAgICAgLmNzLXByb2R1Y3QtdGlsZV9fY29sbGVjdGlvbixcbiAgICAgICAgLmNzLXByb2R1Y3QtdGlsZV9fc2t1IHtcbiAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkcHJvZHVjdC10aWxlX3Byb2R1Y3QtbmFtZS1saW5lLWhlaWdodDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAkcHJvZHVjdC10aWxlX3Byb2R1Y3QtbmFtZS1mb250LXdlaWdodDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3JfdHVuZG9yYTtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAvLyB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogJHByb2R1Y3QtdGlsZV9wcm9kdWN0LW5hbWUtbWF4LWxpbmVzLWRpc3BsYXkgKiAkcHJvZHVjdC10aWxlX3Byb2R1Y3QtbmFtZS1saW5lLWhlaWdodCArIDAuMjtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246ICRwcm9kdWN0LXRpbGVfcHJvZHVjdC1uYW1lLWFsaWdubWVudDtcblxuICAgICAgICAgICAgQGlmICgkcHJvZHVjdC10aWxlX3Byb2R1Y3QtbmFtZS1tYXgtbGluZXMtZGlzcGxheSA9PTEpIHtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fY29sZWN0aW9uLXNrdS13cmFwcGVyIHtcbiAgICAgICAgZ3JpZC1hcmVhOiBjb2xsZWN0aW9uLXNrdTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgfVxuXG4gICAgJl9fcHJpY2Uge1xuICAgICAgICBncmlkLWFyZWE6IHByaWNlO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuXG4gICAgICAgIC5wcmljZS1ib3gge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIG1hcmdpbjogJHByb2R1Y3QtdGlsZV9wcmljZXMtbWFyZ2luO1xuXG4gICAgICAgICAgICAucHJpY2Uge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHByb2R1Y3QtdGlsZV9ub3JtYWwtcHJpY2UtZm9udC1zaXplO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAkcHJvZHVjdC10aWxlX25vcm1hbC1wcmljZS1mb250LXdlaWdodDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHByb2R1Y3QtdGlsZV9ub3JtYWwtcHJpY2UtY29sb3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5vbGQtcHJpY2Uge1xuICAgICAgICAgICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHByb2R1Y3QtdGlsZV9vbGQtcHJpY2UtZm9udC1zaXplO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogJHByb2R1Y3QtdGlsZV9vbGQtcHJpY2UtZm9udC13ZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkcHJvZHVjdC10aWxlX29sZC1wcmljZS1jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiAkcHJvZHVjdC10aWxlX29sZC1wcmljZS10ZXh0LWRlY29yYXRpb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuc3BlY2lhbC1wcmljZSB7XG4gICAgICAgICAgICAgICAgLnByaWNlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAkcHJvZHVjdC10aWxlX3NwZWNpYWwtcHJpY2UtZm9udC1zaXplO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogJHByb2R1Y3QtdGlsZV9zcGVjaWFsLXByaWNlLWZvbnQtd2VpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHByb2R1Y3QtdGlsZV9zcGVjaWFsLXByaWNlLWNvbG9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm1pbmltYWwtcHJpY2Uge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKCRwcm9kdWN0LXRpbGVfZGlzcGxheS1vbGQtcHJpY2UtZmlyc3QpIHtcbiAgICAgICAgICAgICAgICAub2xkLXByaWNlIHtcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmICgkcHJvZHVjdC10aWxlX3ByaWNlcy1kaXJlY3Rpb24gPT0ndmVydGljYWwnKSB7XG4gICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAgICAgICAgIC5wcmljZS1mcm9tIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5taW5pbWFsLXByaWNlIHtcbiAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBAaWYgKCRwcm9kdWN0LXRpbGVfcHJpY2VzLWFsaWdubWVudCA9PSdsZWZ0Jykge1xuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBAZWxzZSBpZiAoJHByb2R1Y3QtdGlsZV9wcmljZXMtYWxpZ25tZW50ID09J3JpZ2h0Jykge1xuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgICAgICAgICAubWluaW1hbC1wcmljZSB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGlmICgkcHJvZHVjdC10aWxlX2Rpc3BsYXktb2xkLXByaWNlLWZpcnN0KSB7XG4gICAgICAgICAgICAgICAgICAgIC5vbGQtcHJpY2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLnByaWNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICRwcmljZS1ib3hfc3BhY2UtYmV0d2Vlbi1wcmljZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC5taW5pbWFsLXByaWNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgID4ucHJpY2UtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJpY2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICRwcmljZS1ib3hfc3BhY2UtYmV0d2Vlbi1wcmljZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLnNwZWNpYWwtcHJpY2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLnByaWNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICRwcmljZS1ib3hfc3BhY2UtYmV0d2Vlbi1wcmljZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBAaWYgKCRwcm9kdWN0LXRpbGVfcHJpY2VzLWFsaWdubWVudCA9PSdsZWZ0Jykge1xuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGVsc2UgaWYgKCRwcm9kdWN0LXRpbGVfcHJpY2VzLWFsaWdubWVudCA9PSdyaWdodCcpIHtcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLWRhaWx5ZGVhbC1jb3VudGRvd24gLnByaWNlLWJveCB7XG4gICAgICAgICAgICAmOm5vdCgucHJpY2UtZmluYWxfcHJpY2Vfd2l0aG91dF9kYWlseV9kZWFsKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5wcmljZS1ib3gtLXZpc2libGUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19yZXZpZXcge1xuICAgICAgICBncmlkLWFyZWE6IHJldmlldztcbiAgICAgICAgbWFyZ2luOiAkcHJvZHVjdC10aWxlX3Jldmlldy1tYXJnaW47XG5cbiAgICAgICAgJjplbXB0eSB7XG4gICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3N0b2NrIHtcbiAgICAgICAgZ3JpZC1hcmVhOiBzdG9jaztcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBmb250LXNpemU6ICRwcm9kdWN0LXRpbGVfc3RvY2stZm9udC1zaXplO1xuICAgICAgICBtYXJnaW46ICRwcm9kdWN0LXRpbGVfc3RvY2stbWFyZ2luO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMS4xcmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiAkcHJvZHVjdC10aWxlX3Byb2R1Y3QtbmFtZS1hbGlnbm1lbnQ7XG5cbiAgICAgICAgJi0taW4ge1xuICAgICAgICAgICAgY29sb3I6ICRwcm9kdWN0LXRpbGVfc3RvY2staW4tY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAmLS1vdXQge1xuICAgICAgICAgICAgY29sb3I6ICRwcm9kdWN0LXRpbGVfc3RvY2stb3V0LW9mLWNvbG9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYWRkdG9jYXJ0IHtcbiAgICAgICAgZ3JpZC1hcmVhOiBhZGR0b2NhcnQ7XG4gICAgICAgIG1hcmdpbjogJHByb2R1Y3QtdGlsZV9hZGR0b2NhcnQtbWFyZ2luO1xuXG4gICAgICAgIEBpZiAoJHByb2R1Y3QtdGlsZV9hZGR0b2NhcnQtc2hvdy1vbmx5LW9uLWhvdmVyKSB7XG4gICAgICAgICAgICBAbWVkaWEgKGhvdmVyOiBob3ZlcikgYW5kIChwb2ludGVyOiBmaW5lKSB7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICR0cmFuc2l0aW9uLWRlZmF1bHQtdGltZTtcblxuICAgICAgICAgICAgICAgICN7JHJvb3R9OmhvdmVyICYge1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoJHByb2R1Y3QtdGlsZV9hZGR0b2NhcnQtcmVkdWNlZCkge1xuICAgICAgICAgICAgLiN7JG5zfXByb2R1Y3QtdGlsZTpub3QoLiN7JG5zfXByb2R1Y3QtdGlsZS0tbGlzdCkgJiB7XG4gICAgICAgICAgICAgICAgLiN7JG5zfWFkZHRvY2FydCB7XG4gICAgICAgICAgICAgICAgICAgICZfX2J1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiA0cmVtO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAmOjpiZWZvcmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgdmlzdWFsbHktaGlkZGVuKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmX19idXR0b24tbGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICZfX3N1Y2Nlc3MtbGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICZfX2ZhaWwtbGFiZWwge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgdmlzdWFsbHktaGlkZGVuKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmX19idXR0b24taWNvbixcbiAgICAgICAgICAgICAgICAgICAgJl9fY29uZmlndXJlLWljb24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01MCUsIC01MCUsIDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuI3skbnN9cHJvZHVjdC10aWxlOm5vdCguI3skbnN9cHJvZHVjdC10aWxlLS1saXN0KSAmLiN7JG5zfWFkZHRvY2FydC0tbG9hZGluZyB7XG4gICAgICAgICAgICAgICAgLiN7JG5zfWFkZHRvY2FydF9fbG9hZGluZyB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSkgdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLiN7JG5zfWFkZHRvY2FydF9fYnV0dG9uLWljb24sXG4gICAgICAgICAgICAgICAgLiN7JG5zfWFkZHRvY2FydF9fY29uZmlndXJlLWljb24ge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2FkZHRvY2FydC1idXR0b24ge1xuICAgICAgICBAaWYgKCRwcm9kdWN0LXRpbGVfYWRkdG9jYXJ0LXJlZHVjZWQpIHtcbiAgICAgICAgICAgIHdpZHRoOiAkcHJvZHVjdC10aWxlX2FkZHRvY2FydC13aWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiBub3QoJHByb2R1Y3QtdGlsZV9hZGR0b2NhcnQtcmVkdWNlZCkge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19hZGR0byB7XG4gICAgICAgIGdyaWQtYXJlYTogYWRkdG87XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBtYXJnaW46ICRwcm9kdWN0LXRpbGVfYWRkdG8tbWFyZ2luO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMS41cmVtO1xuICAgICAgICByaWdodDogMS41cmVtO1xuXG4gICAgICAgIC5jcy1saW5rcy1ibG9jay1hZGR0b19fbGluayB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRwcm9kdWRjdC10aWxlX2FkZHRvLWZvbnQtc2l6ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jcy1kYXNoYm9hcmRfX2JvdHRvbS13aXNobGlzdCAmLFxuICAgICAgICAuY3MtZGFzaGJvYXJkX193aXNobGlzdC1wcm9kdWN0cy1ncmlkICYge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6ZW1wdHkge1xuICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuY3MtbGlua3MtYmxvY2stYWRkdG9fX2xpbmstbGFiZWwge1xuICAgICAgICAgICAgQGluY2x1ZGUgdmlzdWFsbHktaGlkZGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19iYWRnZXMge1xuICAgICAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlKCk7XG5cbiAgICAgICAgZ3JpZC1hcmVhOiBiYWRnZXM7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB6LWluZGV4OiAkcHJvZHVjdC10aWxlX2JhZGdlcy16LWluZGV4O1xuICAgICAgICAjeyRwcm9kdWN0LXRpbGVfYmFkZ2VzLXktYXNpcy1wb3NpdGlvbi1wcm9wfTogJHByb2R1Y3QtdGlsZV9iYWRnZXMteS1hc2lzLXBvc2l0aW9uLXZhbHVlO1xuICAgICAgICAjeyRwcm9kdWN0LXRpbGVfYmFkZ2VzLXgtYXNpcy1wb3NpdGlvbi1wcm9wfTogJHByb2R1Y3QtdGlsZV9iYWRnZXMteC1hc2lzLXBvc2l0aW9uLXZhbHVlO1xuXG4gICAgICAgIEBpZiAoJHByb2R1Y3QtdGlsZV9iYWRnZXMtZGlyZWN0aW9uID09J3ZlcnRpY2FsJykge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2JhZGdlIHtcbiAgICAgICAgQGluY2x1ZGUgYmFkZ2UoKTtcblxuICAgICAgICBncmlkLWFyZWE6IGJhZGdlO1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXBob25lJywgJzxwaG9uZUxnJykge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIH1cblxuICAgICAgICAmLS1kaXNjb3VudCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBiYWRnZV90eXBlKCdkaXNjb3VudCcpO1xuXG4gICAgICAgICAgICAjeyRyb290fV9fYmFkZ2UtdGV4dCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgYmFkZ2Vfc3BhbignZGlzY291bnQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLW5ldyB7XG4gICAgICAgICAgICBAaW5jbHVkZSBiYWRnZV90eXBlKCduZXcnKTtcblxuICAgICAgICAgICAgI3skcm9vdH1fX2JhZGdlLXRleHQge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJhZGdlX3NwYW4oJ25ldycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0tZnJlZS1zaGlwcGluZyB7XG4gICAgICAgICAgICBAaW5jbHVkZSBiYWRnZV90eXBlKCdmcmVlLXNoaXBwaW5nJyk7XG5cbiAgICAgICAgICAgICN7JHJvb3R9X19iYWRnZS10ZXh0IHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBiYWRnZV9zcGFuKCdmcmVlLXNoaXBwaW5nJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLS1wb3B1bGFyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJhZGdlX3R5cGUoJ3BvcHVsYXInKTtcblxuICAgICAgICAgICAgI3skcm9vdH1fX2JhZGdlLXRleHQge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJhZGdlX3NwYW4oJ3BvcHVsYXInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLWRhaWx5ZGVhbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBiYWRnZV90eXBlKCdkYWlseWRlYWwnKTtcblxuICAgICAgICAgICAgI3skcm9vdH1fX2JhZGdlLXRleHQge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJhZGdlX3NwYW4oJ2RhaWx5ZGVhbCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYmFkZ2UtaXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAgICAgI3skcm9vdH0tLWdyaWQgJiB7XG4gICAgICAgICAgICBtYXJnaW46ICRwcm9kdWN0LXRpbGVfYmFkZ2VzLWl0ZW0tbWFyZ2luO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7IC8vIFNldCB3aWR0aCBleHBsaWNpdGx5IHRvIGF2b2lkIEVkZ2UgYnVnc1xuICAgICAgICB9XG5cbiAgICAgICAgJjplbXB0eSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYmFkZ2UtdGV4dCB7XG4gICAgICAgIEBpbmNsdWRlIGJhZGdlX3NwYW4oKTtcbiAgICB9XG5cbiAgICAmX19kYWlseWRlYWwge1xuICAgICAgICBncmlkLWFyZWE6IGRhaWx5ZGVhbDtcbiAgICAgICAgbWFyZ2luOiAkcHJvZHVjdC10aWxlX2RhaWx5ZGVhbC1tYXJnaW47XG4gICAgfVxuXG4gICAgJl9fcXR5IHtcbiAgICAgICAgZ3JpZC1hcmVhOiBxdHk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRwcm9kdWRjdC10aWxlX3F0eS1zd2l0Y2hlci1zcGFjZS1ib3R0b207XG4gICAgICAgIHdpZHRoOiAkcHJvZHVkY3QtdGlsZV9xdHktc3dpdGNoZXItd2lkdGg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIH1cblxuICAgICZfX2Rlc2NyaXB0aW9uIHtcbiAgICAgICAgZ3JpZC1hcmVhOiBkZXNjcmlwdGlvbjtcbiAgICAgICAgZm9udC1zaXplOiAkcHJvZHVjdC10aWxlX2Rlc2NyaXB0aW9uLWZvbnQtc2l6ZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRwcm9kdWN0LXRpbGVfZGVzY3JpcHRpb24tZm9udC13ZWlnaHQ7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkcHJvZHVjdC10aWxlX2Rlc2NyaXB0aW9uLWxpbmUtaGVpZ2h0O1xuICAgICAgICBjb2xvcjogJHByb2R1Y3QtdGlsZV9kZXNjcmlwdGlvbi1jb2xvcjtcbiAgICAgICAgbWFyZ2luOiAkcHJvZHVjdC10aWxlX2Rlc2NyaXB0aW9uLW1hcmdpbjtcbiAgICB9XG5cbiAgICAmX19tYWluLWFmdGVyIHtcbiAgICAgICAgQGlmICgkcHJvZHVjdC10aWxlX21haW4tYWZ0ZXItc2xpZGUtb24taG92ZXIpIHtcbiAgICAgICAgICAgIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSBhbmQgKHBvaW50ZXI6IGZpbmUpIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBoZWlnaHQgJHRyYW5zaXRpb24tZGVmYXVsdC10aW1lO1xuXG4gICAgICAgICAgICAgICAgI3skcm9vdH06aG92ZXIgJiB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJHByb2R1Y3QtdGlsZV9tYWluLWFmdGVyLWhlaWdodDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX193aXNobGlzdC1yZW1vdmUtaWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgYmFja2dyb3VuZDogJHByb2R1Y3QtdGlsZV93aXNobGlzdC1yZW1vdmUtaWNvbi1iYWNrZ3JvdW5kO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogJHByb2R1Y3QtdGlsZV9wYWRkaW5nO1xuXG4gICAgICAgIEBtZWRpYSAocG9pbnRlcjogZmluZSkge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3dpc2hsaXN0LXJlbW92ZS1pY29uLWltYWdlIHtcbiAgICAgICAgd2lkdGg6ICRwcm9kdWN0LXRpbGVfd2lzaGxpc3QtcmVtb3ZlLWljb24tc2l6ZTtcbiAgICAgICAgaGVpZ2h0OiAkcHJvZHVjdC10aWxlX3dpc2hsaXN0LXJlbW92ZS1pY29uLXNpemU7XG4gICAgICAgIGZpbGw6ICRwcm9kdWN0LXRpbGVfd2lzaGxpc3QtcmVtb3ZlLWljb24tZmlsbDtcbiAgICB9XG5cbiAgICAmX193aXNobGlzdC1jb21tZW50IHtcbiAgICAgICAgQGlmIG5vdCgkcHJvZHVjdC10aWxlX3dpc2hsaXN0LWNvbW1lbnQtdmlzaWJsZSkge1xuICAgICAgICAgICAgQGluY2x1ZGUgdmlzdWFsbHktaGlkZGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX193aXNobGlzdC1hY3Rpb25zIHtcbiAgICAgICAgZ3JpZC1hcmVhOiB3aXNobGlzdC1pY29ucztcbiAgICAgICAgbWFyZ2luOiAkcHJvZHVjdC10aWxlX3dpc2hsaXN0LWFjdGlvbnMtbWFyZ2luO1xuICAgICAgICBkaXNwbGF5OiAkcHJvZHVjdC10aWxlX3dpc2hsaXN0LWFjdGlvbnMtZGlzcGxheTtcblxuICAgICAgICBAaWYgKCRwcm9kdWN0LXRpbGVfd2lzaGxpc3QtYWN0aW9ucy1kaXNwbGF5ID09ZmxleCkge1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiAkcHJvZHVjdC10aWxlX3dpc2hsaXN0LWFjdGlvbnMtanVzdGlmeS1jb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufSIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndXRpbHMvcmVzZXQtbGlzdC1zdHlsZSc7XG5AaW1wb3J0ICd2ZW5kb3JzL2luY2x1ZGUtbWVkaWEnO1xuXG4kcHJvZHVjdF9saXN0LWl0ZW0tYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xvcl9ib3JkZXItMjAwICFkZWZhdWx0O1xuJHByb2R1Y3RfbGlzdC1pdGVtLXBhZGRpbmc6IDAgIWRlZmF1bHQ7XG4kcHJvZHVjdF9saXN0LWNhcm91c2VsLWJyZWFrcG9pbnQ6ICc+PXRhYmxldCcgIWRlZmF1bHQ7XG5cbi4jeyRuc31wcm9kdWN0cy1saXN0IHtcbiAgICAkcm9vdDogJjtcblxuICAgIEBpbmNsdWRlIHJlc2V0LWxpc3Qtc3R5bGUoKTtcblxuICAgICZfX2l0ZW0ge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgJjpub3QoI3skcm9vdH0tLWNhcm91c2VsKSB7XG4gICAgICAgICN7JHJvb3R9X19pdGVtIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206ICRwcm9kdWN0X2xpc3QtaXRlbS1ib3JkZXItYm90dG9tO1xuICAgICAgICAgICAgcGFkZGluZzogJHByb2R1Y3RfbGlzdC1pdGVtLXBhZGRpbmc7XG5cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLWNhcm91c2VsIHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJHByb2R1Y3RfbGlzdC1jYXJvdXNlbC1icmVha3BvaW50KSB7XG4gICAgICAgICAgICAjeyRyb290fV9faXRlbSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogJHByb2R1Y3RfbGlzdC1pdGVtLWJvcmRlci1ib3R0b207XG4gICAgICAgICAgICAgICAgcGFkZGluZzogJHByb2R1Y3RfbGlzdC1pdGVtLXBhZGRpbmc7XG5cbiAgICAgICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZmllbGQvbWl4aW4nO1xuQGltcG9ydCAndXRpbHMvdmlzdWFsbHktaGlkZGVuJztcblxuJHF0eS1pbmNyZW1lbnQtLWluLXdpc2hsaXN0X2hpZGU6IHRydWUgIWRlZmF1bHQ7XG5cbiRxdHktaW5jcmVtZW50X2lucHV0LWZvbnQtc2l6ZTogaW5oZXJpdCAhZGVmYXVsdDtcbiRxdHktaW5jcmVtZW50X2lucHV0LXRleHQtYWxpZ246IGNlbnRlciAhZGVmYXVsdDtcbiRxdHktaW5jcmVtZW50X2lucHV0LS1lcnJvci1ib3JkZXItY29sb3I6ICRjb2xvcl9lcnJvci01MDAgIWRlZmF1bHQ7XG4kcXR5LWluY3JlbWVudF9pbnB1dC0taG92ZXItYm9yZGVyOiAkY29sb3JfYm9yZGVyLTUwMCAhZGVmYXVsdDtcblxuJHF0eS1pbmNyZW1lbnRfYnV0dG9uLXBvc2l0aW9uLW9mZnNldDogMXB4ICFkZWZhdWx0O1xuJHF0eS1pbmNyZW1lbnRfYnV0dG9uLXdpZHRoOiAzcmVtICFkZWZhdWx0O1xuJHF0eS1pbmNyZW1lbnRfYnV0dG9uLWJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzX2Jhc2UgIWRlZmF1bHQ7XG4kcXR5LWluY3JlbWVudF9idXR0b24tYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG4kcXR5LWluY3JlbWVudF9idXR0b24tLWhvdmVyLWJhY2tncm91bmQ6ICRjb2xvcl9wcmltYXJ5LTUwMCAhZGVmYXVsdDtcbiRxdHktaW5jcmVtZW50X2J1dHRvbi1ib3JkZXI6IDFweCBzb2xpZCAkY29sb3JfYm9yZGVyLTUwMCAhZGVmYXVsdDtcbiRxdHktaW5jcmVtZW50X2J1dHRvbi0taG92ZXItYm9yZGVyOiAxcHggc29saWQgJGNvbG9yX3ByaW1hcnktNTAwICFkZWZhdWx0O1xuJHF0eS1pbmNyZW1lbnRfYnV0dG9uLWFuaW1hdGlvbi10aW1lOiAwLjVzICFkZWZhdWx0O1xuJHF0eS1pbmNyZW1lbnRfYnV0dG9uLS1kaXNhYmxlZC1iYWNrZ3JvdW5kOiAkcXR5LWluY3JlbWVudF9idXR0b24tYmFja2dyb3VuZCAhZGVmYXVsdDtcbiRxdHktaW5jcmVtZW50X2J1dHRvbi0tZGlzYWJsZWQtYm9yZGVyOiAkcXR5LWluY3JlbWVudF9idXR0b24tYm9yZGVyICFkZWZhdWx0O1xuJHF0eS1pbmNyZW1lbnRfYnV0dG9uLS1kaXNhYmxlZC1vcGFjaXR5OiAxICFkZWZhdWx0O1xuXG4kcXR5LWluY3JlbWVudF9pY29uLWZpbGw6ICRjb2xvcl9wcmltYXJ5LTUwMCAhZGVmYXVsdDtcbiRxdHktaW5jcmVtZW50X2ljb24tLWhvdmVyLWZpbGw6ICRjb2xvcl90ZXh0LTIwMCAhZGVmYXVsdDtcbiRxdHktaW5jcmVtZW50X2ljb24tLWRpc2FibGVkLWZpbGw6ICRjb2xvcl9iYWNrZ3JvdW5kLTYwMCAhZGVmYXVsdDtcbiRxdHktaW5jcmVtZW50X2ljb24tLWRlY3JlbWVudC13aWR0aDogMS4ycmVtICFkZWZhdWx0O1xuJHF0eS1pbmNyZW1lbnRfaWNvbi0tZGVjcmVtZW50LWhlaWdodDogMC4zcmVtICFkZWZhdWx0O1xuJHF0eS1pbmNyZW1lbnRfaWNvbi0taW5jcmVtZW50LXdpZHRoOiAkcXR5LWluY3JlbWVudF9pY29uLS1kZWNyZW1lbnQtd2lkdGggIWRlZmF1bHQ7XG4kcXR5LWluY3JlbWVudF9pY29uLS1pbmNyZW1lbnQtaGVpZ2h0OiAkcXR5LWluY3JlbWVudF9pY29uLS1pbmNyZW1lbnQtd2lkdGggIWRlZmF1bHQ7XG5cbi4jeyRuc31xdHktaW5jcmVtZW50IHtcbiAgICAkcm9vdDogJjtcblxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgIEBpZiAkcXR5LWluY3JlbWVudC0taW4td2lzaGxpc3RfaGlkZSB7XG4gICAgICAgICYtLXdpc2hsaXN0IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHZpc3VhbGx5LWhpZGRlbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSB2aXN1YWxseS1oaWRkZW4oKTtcbiAgICB9XG5cbiAgICAmX19pbnB1dCB7XG4gICAgICAgIEBpbmNsdWRlIGZpZWxkLWlucHV0KCk7XG4gICAgICAgIGZvbnQtc2l6ZTogJHF0eS1pbmNyZW1lbnRfaW5wdXQtZm9udC1zaXplO1xuICAgICAgICB0ZXh0LWFsaWduOiAkcXR5LWluY3JlbWVudF9pbnB1dC10ZXh0LWFsaWduO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMC41ZW07XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDAuNWVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgbWluLXdpZHRoOiAyY2g7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG9yZGVyOiAyO1xuXG4gICAgICAgICYsXG4gICAgICAgICY6aG92ZXI6bm90KFtkaXNhYmxlZF0pLFxuICAgICAgICAmOmZvY3VzOm5vdChbZGlzYWJsZWRdKSB7XG4gICAgICAgICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodC13aWR0aDogMDtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJHF0eS1pbmNyZW1lbnRfaW5wdXQtLWhvdmVyLWJvcmRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgICYubWFnZS1lcnJvciB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRxdHktaW5jcmVtZW50X2lucHV0LS1lcnJvci1ib3JkZXItY29sb3IgIWltcG9ydGFudDtcblxuICAgICAgICAgICAgfiAjeyRyb290fV9fYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICRxdHktaW5jcmVtZW50X2lucHV0LS1lcnJvci1ib3JkZXItY29sb3IgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICsgLm1hZ2UtZXJyb3Ige1xuICAgICAgICAgICAgb3JkZXI6IDM7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2J1dHRvbiB7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgJHF0eS1pbmNyZW1lbnRfYnV0dG9uLWFuaW1hdGlvbi10aW1lLFxuICAgICAgICAgICAgYm9yZGVyLWNvbG9yICRxdHktaW5jcmVtZW50X2J1dHRvbi1hbmltYXRpb24tdGltZSxcbiAgICAgICAgICAgIGZpbGwgJHF0eS1pbmNyZW1lbnRfYnV0dG9uLWFuaW1hdGlvbi10aW1lO1xuICAgICAgICBtYXgtd2lkdGg6ICRxdHktaW5jcmVtZW50X2J1dHRvbi13aWR0aDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHF0eS1pbmNyZW1lbnRfYnV0dG9uLWJhY2tncm91bmQ7XG4gICAgICAgIGZsZXg6IDEgMSAoI3skcXR5LWluY3JlbWVudF9idXR0b24td2lkdGggLSAxfSk7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjVlbTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMC41ZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRxdHktaW5jcmVtZW50X2J1dHRvbi1ib3JkZXItcmFkaXVzO1xuXG4gICAgICAgICYsXG4gICAgICAgICY6dmlzaXRlZCxcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcXR5LWluY3JlbWVudF9idXR0b24tYmFja2dyb3VuZDtcbiAgICAgICAgICAgIGJvcmRlcjogJHF0eS1pbmNyZW1lbnRfYnV0dG9uLWJvcmRlcjtcblxuICAgICAgICAgICAgKiB7XG4gICAgICAgICAgICAgICAgZmlsbDogJHF0eS1pbmNyZW1lbnRfaWNvbi1maWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlcixcbiAgICAgICAgJjphY3RpdmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHF0eS1pbmNyZW1lbnRfYnV0dG9uLS1ob3Zlci1iYWNrZ3JvdW5kO1xuICAgICAgICAgICAgYm9yZGVyOiAkcXR5LWluY3JlbWVudF9idXR0b24tLWhvdmVyLWJvcmRlcjtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgKiB7XG4gICAgICAgICAgICAgICAgZmlsbDogJHF0eS1pbmNyZW1lbnRfaWNvbi0taG92ZXItZmlsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLWRlY3JlbWVudCB7XG4gICAgICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmLS1pbmNyZW1lbnQge1xuICAgICAgICAgICAgb3JkZXI6IDI7XG4gICAgICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWRpc2FibGVkIHtcbiAgICAgICAgICAgIG9wYWNpdHk6ICRxdHktaW5jcmVtZW50X2J1dHRvbi0tZGlzYWJsZWQtb3BhY2l0eTtcblxuICAgICAgICAgICAgJixcbiAgICAgICAgICAgICY6aG92ZXIsXG4gICAgICAgICAgICAmOnZpc2l0ZWQsXG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcXR5LWluY3JlbWVudF9idXR0b24tLWRpc2FibGVkLWJhY2tncm91bmQ7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAkcXR5LWluY3JlbWVudF9idXR0b24tLWRpc2FibGVkLWJvcmRlcjtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXG4gICAgICAgICAgICAgICAgKiB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGw6ICRxdHktaW5jcmVtZW50X2ljb24tLWRpc2FibGVkLWZpbGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9faWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cbiAgICAgICAgJi0tZGVjcmVtZW50IHtcbiAgICAgICAgICAgIHdpZHRoOiAkcXR5LWluY3JlbWVudF9pY29uLS1kZWNyZW1lbnQtd2lkdGg7XG4gICAgICAgICAgICBoZWlnaHQ6ICRxdHktaW5jcmVtZW50X2ljb24tLWRlY3JlbWVudC1oZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLS1pbmNyZW1lbnQge1xuICAgICAgICAgICAgd2lkdGg6ICRxdHktaW5jcmVtZW50X2ljb24tLWluY3JlbWVudC13aWR0aDtcbiAgICAgICAgICAgIGhlaWdodDogJHF0eS1pbmNyZW1lbnRfaWNvbi0taW5jcmVtZW50LWhlaWdodDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcbkBpbXBvcnQgJ3V0aWxzL3Zpc3VhbGx5LWhpZGRlbic7XG5cbiRza2lwLWxpbmtzX2NvbnRhaW5lci1wYWRkaW5nOiAwLjVyZW0gMCAhZGVmYXVsdDtcblxuJHNraXAtbGlua3NfZGlzcGxheS1tb2RlOiBzdGF0aWMgIWRlZmF1bHQ7IC8vIHN0YXRpYyB8IGZpeGVkXG4kc2tpcC1saW5rc19iYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JfcHJpbWFyeS01MDAgIWRlZmF1bHQ7XG4kc2tpcC1saW5rc196LWluZGV4OiA0MDAgIWRlZmF1bHQ7XG5cbiRza2lwLWxpbmtzX2xpbmstYm9yZGVyOiBub25lICFkZWZhdWx0O1xuJHNraXAtbGlua3NfbGluay1jb2xvcjogJGNvbG9yX3RleHQtMjAwICFkZWZhdWx0O1xuJHNraXAtbGlua3NfbGluay1jb2xvci1ob3ZlcjogJHNraXAtbGlua3NfbGluay1jb2xvciAhZGVmYXVsdDtcbiRza2lwLWxpbmtzX2xpbmstY29sb3ItZm9jdXM6ICRza2lwLWxpbmtzX2xpbmstY29sb3IgIWRlZmF1bHQ7XG4kc2tpcC1saW5rc19saW5rLXBhZGRpbmc6IDAuNXJlbSAxcmVtICFkZWZhdWx0O1xuJHNraXAtbGlua3NfbGluay1tYXJnaW46IDAuNXJlbSAhZGVmYXVsdDtcbiRza2lwLWxpbmtzX2xpbmstZm9udC1zaXplOiAxLjZyZW0gIWRlZmF1bHQ7XG4kc2tpcC1saW5rc19saW5rLWZvbnQtd2VpZ2h0OiA3MDAgIWRlZmF1bHQ7XG4kc2tpcC1saW5rc19saW5rLXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFkZWZhdWx0O1xuXG4uI3skbnN9c2tpcC1saW5rcyB7XG4gICAgJHJvb3Q6ICY7XG5cbiAgICAmX19saW5rcyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRza2lwLWxpbmtzX2JhY2tncm91bmQtY29sb3I7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAgICY6bm90KDpmb2N1cyk6bm90KDpmb2N1cy13aXRoaW4pIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHZpc3VhbGx5LWhpZGRlbigpO1xuICAgICAgICAgICAgLy8gaW50ZW50aW9uYWwgYWRqdXN0bWVudCBvZiBjbGlwIHByb3BlcnRpZXMgc28gdGhlIGVsZW1lbnQgaXMgc3RpbGwgZm9jdXNhYmxlXG4gICAgICAgICAgICBjbGlwOiBhdXRvO1xuICAgICAgICAgICAgY2xpcC1wYXRoOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cyxcbiAgICAgICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICAgICAgQGluY2x1ZGUgdmlzdWFsbHktdmlzaWJsZSgpO1xuICAgICAgICAgICAgcGFkZGluZzogJHNraXAtbGlua3NfY29udGFpbmVyLXBhZGRpbmc7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgQGlmICgkc2tpcC1saW5rc19kaXNwbGF5LW1vZGUgPT0gZml4ZWQpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgICAgICAgICAgei1pbmRleDogJHNraXAtbGlua3Nfei1pbmRleDtcbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKCRza2lwLWxpbmtzX2Rpc3BsYXktbW9kZSA9PSBzdGF0aWMpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gaW5jcmVhc2VkIHNwZWNpZmljaXR5IHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGxpbmsgc3R5bGVzXG4gICAgYSN7JHJvb3R9X19saW5rIHtcbiAgICAgICAgY29sb3I6ICRza2lwLWxpbmtzX2xpbmstY29sb3I7XG4gICAgICAgIHBhZGRpbmc6ICRza2lwLWxpbmtzX2xpbmstcGFkZGluZztcbiAgICAgICAgZm9udC1zaXplOiAkc2tpcC1saW5rc19saW5rLWZvbnQtc2l6ZTtcbiAgICAgICAgYm9yZGVyOiAkc2tpcC1saW5rc19saW5rLWJvcmRlcjtcbiAgICAgICAgbWFyZ2luOiAkc2tpcC1saW5rc19saW5rLW1hcmdpbjtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRza2lwLWxpbmtzX2xpbmstZm9udC13ZWlnaHQ7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogJHNraXAtbGlua3NfbGluay10ZXh0LWRlY29yYXRpb247XG5cbiAgICAgICAgJjpudGgtb2YtdHlwZShuICsgMikge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgICY6bnRoLW9mLXR5cGUobiArIDIpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpudGgtb2YtdHlwZShuICsgMykge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj1sYXB0b3AnKSB7XG4gICAgICAgICAgICAmOm50aC1vZi10eXBlKG4gKyAyKSxcbiAgICAgICAgICAgICY6bnRoLW9mLXR5cGUobiArIDMpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICY6Zm9jdXMsXG4gICAgICAgICY6dmlzaXRlZCB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBjb2xvcjogJHNraXAtbGlua3NfbGluay1jb2xvci1ob3ZlcjtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogJHNraXAtbGlua3NfbGluay10ZXh0LWRlY29yYXRpb247XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcbkBpbXBvcnQgJ3ZlbmRvcnMvaW5jbHVkZS1tZWRpYSc7XG5AaW1wb3J0ICd1dGlscy9yZXNldC1saXN0LXN0eWxlJztcblxuJHNvY2lhbC1tZWRpYS1saXN0X2Rpc3BsYXk6IGZsZXggIWRlZmF1bHQ7XG4kc29jaWFsLW1lZGlhLWxpc3RfZmxleC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhZGVmYXVsdDtcbiRzb2NpYWwtbWVkaWEtbGlzdF9mbGV4LWFsaWduLWl0ZW1zOiBjZW50ZXIgIWRlZmF1bHQ7XG4kc29jaWFsLW1lZGlhLWxpc3RfcGFkZGluZzogJHBhZ2VfZWRnZS1ndXR0ZXIgMCAkcGFnZV9lZGdlLWd1dHRlciAhZGVmYXVsdDtcblxuJHNvY2lhbC1tZWRpYS1saXN0X2xpc3QtaXRlbS1tYXJnaW46IDAgMC40ZW0gIWRlZmF1bHQ7XG4kc29jaWFsLW1lZGlhLWxpc3RfbGlzdC1pdGVtLXBhZGRpbmc6IDAgIWRlZmF1bHQ7XG5cbiRzb2NpYWwtbWVkaWEtbGlzdF9saW5rLWRpc3BsYXk6IGZsZXggIWRlZmF1bHQ7XG4kc29jaWFsLW1lZGlhLWxpc3RfbGluay1oZWlnaHQ6IDMuNWVtICFkZWZhdWx0O1xuJHNvY2lhbC1tZWRpYS1saXN0X2xpbmstbWluLXdpZHRoOiA0ZW0gIWRlZmF1bHQ7XG4kc29jaWFsLW1lZGlhLWxpc3RfbGluay1ib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1c19iYXNlICFkZWZhdWx0O1xuJHNvY2lhbC1tZWRpYS1saXN0X2xpbmstdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBsaW5lYXIgIWRlZmF1bHQ7XG4kc29jaWFsLW1lZGlhLWxpc3RfbGluay1iYWNrZ3JvdW5kOiAkY29sb3JfbWluZXNoYWZ0ICFkZWZhdWx0O1xuJHNvY2lhbC1tZWRpYS1saXN0X2xpbmstaG92ZXItYmFja2dyb3VuZDogJGNvbG9yX3ByaW1hcnktODAwICFkZWZhdWx0O1xuXG4kc29jaWFsLW1lZGlhLWxpc3RfaWNvbi1wb3NpdGlvbjogYWJzb2x1dGUgIWRlZmF1bHQ7XG4kc29jaWFsLW1lZGlhLWxpc3RfaWNvbi10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01NSUsIC01NSUsIDApICFkZWZhdWx0O1xuXG5AaWYgJHNvY2lhbC1tZWRpYS1saXN0X2ljb24tcG9zaXRpb24gPT0gYWJzb2x1dGUge1xuICAgICRzb2NpYWwtbWVkaWEtbGlzdF9pY29uLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTUwJSwgLTUwJSwgMCkgIWRlZmF1bHQ7XG59XG5cbi4jeyRuc31zb2NpYWwtbWVkaWEtbGlzdCB7XG4gICAgJHJvb3Q6ICY7XG5cbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlKCk7XG5cbiAgICBkaXNwbGF5OiAkc29jaWFsLW1lZGlhLWxpc3RfZGlzcGxheTtcbiAgICBwYWRkaW5nOiAkc29jaWFsLW1lZGlhLWxpc3RfcGFkZGluZztcblxuICAgIEBpZiAkc29jaWFsLW1lZGlhLWxpc3RfZGlzcGxheSA9PVxuICAgICAgICBmbGV4IG9yXG4gICAgICAgICRzb2NpYWwtbWVkaWEtbGlzdF9kaXNwbGF5ID09XG4gICAgICAgIGlubGluZS1mbGV4XG4gICAge1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6ICRzb2NpYWwtbWVkaWEtbGlzdF9mbGV4LWp1c3RpZnktY29udGVudDtcbiAgICAgICAgYWxpZ24taXRlbXM6ICRzb2NpYWwtbWVkaWEtbGlzdF9mbGV4LWFsaWduLWl0ZW1zO1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIH1cblxuICAgICZfX2l0ZW0ge1xuICAgICAgICBtYXJnaW46ICRzb2NpYWwtbWVkaWEtbGlzdF9saXN0LWl0ZW0tbWFyZ2luO1xuICAgICAgICBwYWRkaW5nOiAkc29jaWFsLW1lZGlhLWxpc3RfbGlzdC1pdGVtLXBhZGRpbmc7XG4gICAgfVxuXG4gICAgJl9fbGluayB7XG4gICAgICAgIGRpc3BsYXk6ICRzb2NpYWwtbWVkaWEtbGlzdF9saW5rLWRpc3BsYXk7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgaGVpZ2h0OiAkc29jaWFsLW1lZGlhLWxpc3RfbGluay1oZWlnaHQ7XG4gICAgICAgIG1pbi13aWR0aDogJHNvY2lhbC1tZWRpYS1saXN0X2xpbmstbWluLXdpZHRoO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkc29jaWFsLW1lZGlhLWxpc3RfbGluay1iYWNrZ3JvdW5kO1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHNvY2lhbC1tZWRpYS1saXN0X2xpbmstYm9yZGVyLXJhZGl1cztcbiAgICAgICAgdHJhbnNpdGlvbjogJHNvY2lhbC1tZWRpYS1saXN0X2xpbmstdHJhbnNpdGlvbjtcblxuICAgICAgICBAaWYgJHNvY2lhbC1tZWRpYS1saXN0X2xpbmstaG92ZXItYmFja2dyb3VuZCAhPVxuICAgICAgICAgICAgJHNvY2lhbC1tZWRpYS1saXN0X2xpbmstYmFja2dyb3VuZFxuICAgICAgICB7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkc29jaWFsLW1lZGlhLWxpc3RfbGluay1ob3Zlci1iYWNrZ3JvdW5kO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9faWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiAkc29jaWFsLW1lZGlhLWxpc3RfaWNvbi1wb3NpdGlvbjtcbiAgICAgICAgdHJhbnNmb3JtOiAkc29jaWFsLW1lZGlhLWxpc3RfaWNvbi10cmFuc2Zvcm07XG5cbiAgICAgICAgQGlmICRzb2NpYWwtbWVkaWEtbGlzdF9pY29uLXBvc2l0aW9uID09IGFic29sdXRlIHtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgbGVmdDogNTUlO1xuICAgICAgICB9XG5cbiAgICAgICAgI3skcm9vdH1fX2l0ZW0tLWZiICYge1xuICAgICAgICAgICAgd2lkdGg6IDAuOWVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAxLjhlbTtcbiAgICAgICAgfVxuXG4gICAgICAgICN7JHJvb3R9X19pdGVtLS10dyAmIHtcbiAgICAgICAgICAgIHdpZHRoOiAyLjVlbTtcbiAgICAgICAgICAgIGhlaWdodDogMmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgI3skcm9vdH1fX2l0ZW0tLXl0ICYge1xuICAgICAgICAgICAgd2lkdGg6IDEuOGVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAyLjFlbTtcbiAgICAgICAgfVxuXG4gICAgICAgICN7JHJvb3R9X19pdGVtLS1ncCAmIHtcbiAgICAgICAgICAgIHdpZHRoOiAyZW07XG4gICAgICAgICAgICBoZWlnaHQ6IDJlbTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDAuMWVtO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd2ZW5kb3JzL2luY2x1ZGUtbWVkaWEnO1xuQGltcG9ydCAndXRpbHMvdmlzdWFsbHktaGlkZGVuJztcbkBpbXBvcnQgJ3V0aWxzL2RlZXAtZ2V0L2RlZXAtZ2V0LnNjc3MnO1xuXG4vLyBEZXRlcm1pbmVzIGlmIHRoZSBDU1MgbWFzay1iYXNlZCBzdGFyIGljb25zIGFyZSBlbmFibGVkLlxuJHN0YXItcmF0aW5nX3VzZS1jc3MtbWFzay1mb3Itc3RhcnM6IGRlZXAtZ2V0KFxuICAgICR2aWV3LXhtbCxcbiAgICB2YXJzLFxuICAgIE1hZ2VudG9fUmV2aWV3LFxuICAgIHN0YXItcmF0aW5nLFxuICAgIHVzZS1jc3MtbWFzay1mb3Itc3RhcnNcbikgIWRlZmF1bHQ7XG5cbiRzdGFyLXJhdGluZ19jb2xvci1hY3RpdmU6ICRjb2xvcl9yZXZpZXctYWN0aXZlICFkZWZhdWx0O1xuJHN0YXItcmF0aW5nX2NvbG9yLWluYWN0aXZlOiAkY29sb3JfcmV2aWV3LWluYWN0aXZlICFkZWZhdWx0O1xuJHN0YXItcmF0aW5nX2Zvcm0tc3Rhci1jb2xvci1hY3RpdmU6ICRjb2xvcl9yZXZpZXctYWN0aXZlICFkZWZhdWx0O1xuJHN0YXItcmF0aW5nX2Zvcm0tc3Rhci1jb2xvci1pbmFjdGl2ZTogJGNvbG9yX3Jldmlldy1jb250cm9sLWluYWN0aXZlICFkZWZhdWx0O1xuJHN0YXItcmF0aW5nX3RleHQtY29sb3I6ICRjb2xvcl90ZXh0LTUwMCAhZGVmYXVsdDtcbi8vIERldGVybWluZXMgZmxleCBqdXN0aWZpY2F0aW9uIG9mIHN0YXJzXG4kc3Rhci1yYXRpbmdfanVzdGlmeTogc3BhY2UtYmV0d2VlbiAhZGVmYXVsdDtcbi8vIERldGVybWluZXMgd2lkdGggb2YgYSBzaW5nbGUgc3RhclxuJHN0YXItcmF0aW5nX3N0YXItd2lkdGgtZGVmYXVsdDogMS41cmVtICFkZWZhdWx0O1xuJHN0YXItcmF0aW5nX3N0YXItd2lkdGgtcmV2aWV3cy1zdW1tYXJ5OiAycmVtICFkZWZhdWx0O1xuJHN0YXItcmF0aW5nX3N0YXItd2lkdGgtcmV2aWV3OiAxLjVyZW0gIWRlZmF1bHQ7XG4kc3Rhci1yYXRpbmdfc3Rhci13aWR0aC1yZXZpZXctZm9ybTogMnJlbSAhZGVmYXVsdDtcbi8vIERldGVybWluZXMgd2lkdGggb2YgcmV2aWV3IHN0YXJzIGNvbnRhaW5lclxuJHN0YXItcmF0aW5nX2NvbnRhaW5lci13aWR0aC1kZWZhdWx0OiA3LjJyZW0gIWRlZmF1bHQ7XG4kc3Rhci1yYXRpbmdfY29udGFpbmVyLXdpZHRoLXJldmlld3Mtc3VtbWFyeTogMTByZW0gIWRlZmF1bHQ7XG4kc3Rhci1yYXRpbmdfY29udGFpbmVyLXdpZHRoLXJldmlldzogNy4ycmVtICFkZWZhdWx0O1xuLy8gUGFkZGluZyBmb3IgcmV2aWV3IGZvcm0gc3RhcnNcbiRzdGFyLXJhdGluZ19zdGFyLXBhZGRpbmctcmV2aWV3LWZvcm06IDAuNnJlbSAhZGVmYXVsdDtcbiRzdGFyLXJhdGluZ19zdGFyLXBhZGRpbmctcmV2aWV3LWZvcm0tbW9iaWxlOiAxcmVtICFkZWZhdWx0O1xuLy8gRGV0ZXJtaW5lcyBwYWRkaW5nIHJ1bGVzZXRcbiRzdGFyLXJhdGluZ19wYWRkaW5nLWRlZmF1bHQ6IDAgIWRlZmF1bHQ7XG4kc3Rhci1yYXRpbmdfcGFkZGluZy1yZXZpZXdzLXN1bW1hcnk6IDAgIWRlZmF1bHQ7XG4kc3Rhci1yYXRpbmdfcGFkZGluZy1yZXZpZXc6IDAgIWRlZmF1bHQ7XG4kc3Rhci1yYXRpbmdfcGFkZGluZy1yZXZpZXctZm9ybTogMCAhZGVmYXVsdDtcbi8vIERldGVybWluZXMgc2NvcmUgYW5kIGNvdW50IHRleHRmaWVsZCBkaXNwbGF5IHJ1bGVzZXRcbiRzdGFyLXJhdGluZ19oaWRlLXRleHQtcGRwOiBmYWxzZSAhZGVmYXVsdDtcbiRzdGFyLXJhdGluZ19oaWRlLXRleHQtdGlsZTogZmFsc2UgIWRlZmF1bHQ7XG4vLyBEZXRlcm1pbmVzIGRpc3BsYXkgcnVsZXNldCBmb3IgXCJyZXZpZXdcIiBhbm5vdGF0aW9uXG4kc3Rhci1yYXRpbmdfaGlkZS1hbm5vdGF0aW9uLXBkcDogZmFsc2UgIWRlZmF1bHQ7XG4kc3Rhci1yYXRpbmdfaGlkZS1hbm5vdGF0aW9uLXRpbGU6IHRydWUgIWRlZmF1bHQ7XG4vLyBEZXRlcm1pbmVzIHJhdGluZyBsYWJlbCBkZXRhaWxzXG4kc3Rhci1yYXRpbmdfbGFiZWwtY29sb3I6ICRjb2xvcl90ZXh0LTgwMCAhZGVmYXVsdDtcbiRzdGFyLXJhdGluZ19sYWJlbC1mb250LXNpemU6IDAuNzVlbSAhZGVmYXVsdDtcbiRzdGFyLXJhdGluZ19sYWJlbC1mb250LXdlaWdodDogNzAwICFkZWZhdWx0O1xuJHN0YXItcmF0aW5nX2xhYmVsLXRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWRlZmF1bHQ7XG4vLyBEZXRlcm1pbmVzIHRoZSBzaGFwZSBvZiB0aGUgc3RhclxuJHN0YXItcmF0aW5nX2ljb24tdXJsOiAnLi4vaW1hZ2VzL2ljb25zL3Jldmlld3Mvc3Rhci5zdmcnICFkZWZhdWx0O1xuLy8gRGV0ZXJtaW5lcyBhc3BlY3QgcmF0aW8gb2YgdGhlIHN0YXJzXG4kc3Rhci1yYXRpbmdfYXNwZWN0LXJhdGlvOiAxICFkZWZhdWx0O1xuXG4uI3skbnN9c3Rhci1yYXRpbmcge1xuICAgICRyb290OiAmO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICZfX3N0YXJzIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIHBhZGRpbmc6ICRzdGFyLXJhdGluZ19wYWRkaW5nLWRlZmF1bHQ7XG4gICAgICAgIHdpZHRoOiAkc3Rhci1yYXRpbmdfY29udGFpbmVyLXdpZHRoLWRlZmF1bHQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogJHN0YXItcmF0aW5nX2p1c3RpZnk7XG5cbiAgICAgICAgI3skcm9vdH0tLXN1bW1hcnkgJiB7XG4gICAgICAgICAgICB3aWR0aDogJHN0YXItcmF0aW5nX2NvbnRhaW5lci13aWR0aC1yZXZpZXdzLXN1bW1hcnk7XG4gICAgICAgICAgICBwYWRkaW5nOiAkc3Rhci1yYXRpbmdfcGFkZGluZy1yZXZpZXdzLXN1bW1hcnk7XG4gICAgICAgIH1cblxuICAgICAgICAjeyRyb290fS0tcmV2aWV3ICYge1xuICAgICAgICAgICAgd2lkdGg6ICRzdGFyLXJhdGluZ19jb250YWluZXItd2lkdGgtcmV2aWV3O1xuICAgICAgICAgICAgcGFkZGluZzogJHN0YXItcmF0aW5nX3BhZGRpbmctcmV2aWV3O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fc3RhciB7XG4gICAgICAgIHdpZHRoOiAkc3Rhci1yYXRpbmdfc3Rhci13aWR0aC1kZWZhdWx0O1xuXG4gICAgICAgIEBpZiAkc3Rhci1yYXRpbmdfdXNlLWNzcy1tYXNrLWZvci1zdGFycyB7XG4gICAgICAgICAgICBoZWlnaHQ6IGNhbGMoXG4gICAgICAgICAgICAgICAgI3skc3Rhci1yYXRpbmdfc3Rhci13aWR0aC1kZWZhdWx0fSAvXG4gICAgICAgICAgICAgICAgICAgICN7JHN0YXItcmF0aW5nX2FzcGVjdC1yYXRpb31cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhc3BlY3QtcmF0aW86ICRzdGFyLXJhdGluZ19hc3BlY3QtcmF0aW87XG5cbiAgICAgICAgICAgIEBzdXBwb3J0cyAobWFzazogdXJsKCN7JHN0YXItcmF0aW5nX2ljb24tdXJsfSkpIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkc3Rhci1yYXRpbmdfY29sb3ItaW5hY3RpdmU7XG4gICAgICAgICAgICAgICAgbWFzazogdXJsKCRzdGFyLXJhdGluZ19pY29uLXVybCkgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGYWxsYmFjayBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBtYXNrXG4gICAgICAgICAgICBAc3VwcG9ydHMgbm90IChtYXNrOiB1cmwoI3skc3Rhci1yYXRpbmdfaWNvbi11cmx9KSkge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgICAgICAgICAgICAgIDQ1ZGVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXItcmF0aW5nX2NvbG9yLWluYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXItcmF0aW5nX2NvbG9yLWluYWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIHVybCgkc3Rhci1yYXRpbmdfaWNvbi11cmwpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcl93aGl0ZTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6IGxpZ2h0ZW4sIG5vcm1hbDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIGZpbGw6ICRzdGFyLXJhdGluZ19jb2xvci1pbmFjdGl2ZTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWFjdGl2ZSB7XG4gICAgICAgICAgICBAaWYgJHN0YXItcmF0aW5nX3VzZS1jc3MtbWFzay1mb3Itc3RhcnMge1xuICAgICAgICAgICAgICAgIEBzdXBwb3J0cyAobWFzazogdXJsKCRzdGFyLXJhdGluZ19pY29uLXVybCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJHN0YXItcmF0aW5nX2NvbG9yLWFjdGl2ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gRmFsbGJhY2sgZm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgbWFza1xuICAgICAgICAgICAgICAgIEBzdXBwb3J0cyBub3QgKG1hc2s6IHVybCgkc3Rhci1yYXRpbmdfaWNvbi11cmwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NWRlZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3Rhci1yYXRpbmdfY29sb3ItYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGFyLXJhdGluZ19jb2xvci1hY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwoJHN0YXItcmF0aW5nX2ljb24tdXJsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaWxsOiAkc3Rhci1yYXRpbmdfY29sb3ItYWN0aXZlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0taGFsZi1hY3RpdmUge1xuICAgICAgICAgICAgQGlmICRzdGFyLXJhdGluZ191c2UtY3NzLW1hc2stZm9yLXN0YXJzIHtcbiAgICAgICAgICAgICAgICBAc3VwcG9ydHMgKG1hc2s6IHVybCgkc3Rhci1yYXRpbmdfaWNvbi11cmwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvIHJpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXItcmF0aW5nX2NvbG9yLWFjdGl2ZSA1MCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAkc3Rhci1yYXRpbmdfY29sb3ItaW5hY3RpdmUgNTAlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrIGZvciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IG1hc2tcbiAgICAgICAgICAgICAgICBAc3VwcG9ydHMgbm90IChtYXNrOiB1cmwoI3skc3Rhci1yYXRpbmdfaWNvbi11cmx9KSkge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gcmlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXItcmF0aW5nX2NvbG9yLWFjdGl2ZSA1MCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXItcmF0aW5nX2NvbG9yLWluYWN0aXZlIDUwJVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybCgkc3Rhci1yYXRpbmdfaWNvbi11cmwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIC5zdGFyLWxlZnQge1xuICAgICAgICAgICAgICAgICAgICBmaWxsOiAkc3Rhci1yYXRpbmdfY29sb3ItYWN0aXZlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5zdGFyLXJpZ2h0IHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogJHN0YXItcmF0aW5nX2NvbG9yLWluYWN0aXZlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICN7JHJvb3R9LS1zdW1tYXJ5ICYge1xuICAgICAgICAgICAgd2lkdGg6ICRzdGFyLXJhdGluZ19zdGFyLXdpZHRoLXJldmlld3Mtc3VtbWFyeTtcbiAgICAgICAgfVxuXG4gICAgICAgICN7JHJvb3R9LS1yZXZpZXcgJiB7XG4gICAgICAgICAgICB3aWR0aDogJHN0YXItcmF0aW5nX3N0YXItd2lkdGgtcmV2aWV3O1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmIG5vdCAkc3Rhci1yYXRpbmdfdXNlLWNzcy1tYXNrLWZvci1zdGFycyB7XG4gICAgICAgICAgICBwYXRoIHtcbiAgICAgICAgICAgICAgICBmaWxsLW9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgZmlsbDogaW5oZXJpdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGltZyB7XG4gICAgICAgIHdpZHRoOiAkc3Rhci1yYXRpbmdfc3Rhci13aWR0aC1kZWZhdWx0O1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgJl9fZm9ybS1zdGFycyB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBwYWRkaW5nOiAkc3Rhci1yYXRpbmdfcGFkZGluZy1yZXZpZXctZm9ybTtcbiAgICB9XG5cbiAgICAmX19mb3JtLXN0YXIge1xuICAgICAgICBvcGFjaXR5OiAxO1xuXG4gICAgICAgIEBpZiAkc3Rhci1yYXRpbmdfdXNlLWNzcy1tYXNrLWZvci1zdGFycyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGFzcGVjdC1yYXRpbzogJHN0YXItcmF0aW5nX2FzcGVjdC1yYXRpbztcblxuICAgICAgICAgICAgQHN1cHBvcnRzIChtYXNrOiB1cmwoI3skc3Rhci1yYXRpbmdfaWNvbi11cmx9KSkge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRzdGFyLXJhdGluZ19mb3JtLXN0YXItY29sb3ItaW5hY3RpdmU7XG4gICAgICAgICAgICAgICAgbWFzazogdXJsKCRzdGFyLXJhdGluZ19pY29uLXVybCkgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBtYXNrLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGYWxsYmFjayBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBtYXNrXG4gICAgICAgICAgICBAc3VwcG9ydHMgbm90IChtYXNrOiB1cmwoI3skc3Rhci1yYXRpbmdfaWNvbi11cmx9KSkge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICAgICAgICAgICAgICAgIDQ1ZGVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXItcmF0aW5nX2Zvcm0tc3Rhci1jb2xvci1pbmFjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICRzdGFyLXJhdGluZ19mb3JtLXN0YXItY29sb3ItaW5hY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgdXJsKCRzdGFyLXJhdGluZ19pY29uLXVybCk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yX3doaXRlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtYmxlbmQtbW9kZTogbGlnaHRlbiwgbm9ybWFsO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBmaWxsOiAkc3Rhci1yYXRpbmdfZm9ybS1zdGFyLWNvbG9yLWluYWN0aXZlO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAmLS1hY3RpdmUge1xuICAgICAgICAgICAgQGlmICRzdGFyLXJhdGluZ191c2UtY3NzLW1hc2stZm9yLXN0YXJzIHtcbiAgICAgICAgICAgICAgICBAc3VwcG9ydHMgKG1hc2s6IHVybCgjeyRzdGFyLXJhdGluZ19pY29uLXVybH0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRzdGFyLXJhdGluZ19mb3JtLXN0YXItY29sb3ItYWN0aXZlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBtYXNrXG4gICAgICAgICAgICAgICAgQHN1cHBvcnRzIG5vdCAobWFzazogdXJsKCN7JHN0YXItcmF0aW5nX2ljb24tdXJsfSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ1ZGVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGFyLXJhdGluZ19mb3JtLXN0YXItY29sb3ItYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGFyLXJhdGluZ19mb3JtLXN0YXItY29sb3ItYWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsKCRzdGFyLXJhdGluZ19pY29uLXVybCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgZmlsbDogJHN0YXItcmF0aW5nX2Zvcm0tc3Rhci1jb2xvci1hY3RpdmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgbm90ICRzdGFyLXJhdGluZ191c2UtY3NzLW1hc2stZm9yLXN0YXJzIHtcbiAgICAgICAgICAgIHBhdGgge1xuICAgICAgICAgICAgICAgIGZpbGwtb3BhY2l0eTogMTtcbiAgICAgICAgICAgICAgICBmaWxsOiBpbmhlcml0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpudGgtbGFzdC1vZi10eXBlKCkge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgICN7JHJvb3R9X19mb3JtLXN0YXJzOmhvdmVyICYge1xuICAgICAgICAgICAgQGlmICRzdGFyLXJhdGluZ191c2UtY3NzLW1hc2stZm9yLXN0YXJzIHtcbiAgICAgICAgICAgICAgICBAc3VwcG9ydHMgKG1hc2s6IHVybCgjeyRzdGFyLXJhdGluZ19pY29uLXVybH0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRzdGFyLXJhdGluZ19mb3JtLXN0YXItY29sb3ItYWN0aXZlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBtYXNrXG4gICAgICAgICAgICAgICAgQHN1cHBvcnRzIG5vdCAobWFzazogdXJsKCN7JHN0YXItcmF0aW5nX2ljb24tdXJsfSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ1ZGVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGFyLXJhdGluZ19mb3JtLXN0YXItY29sb3ItYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGFyLXJhdGluZ19mb3JtLXN0YXItY29sb3ItYWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsKCRzdGFyLXJhdGluZ19pY29uLXVybCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgZmlsbDogJHN0YXItcmF0aW5nX2Zvcm0tc3Rhci1jb2xvci1hY3RpdmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAjeyRyb290fV9fZm9ybS1zdGFycyBsYWJlbDpob3ZlciB+IGxhYmVsICYge1xuICAgICAgICAgICAgQGlmICRzdGFyLXJhdGluZ191c2UtY3NzLW1hc2stZm9yLXN0YXJzIHtcbiAgICAgICAgICAgICAgICBAc3VwcG9ydHMgKG1hc2s6IHVybCgjeyRzdGFyLXJhdGluZ19pY29uLXVybH0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRzdGFyLXJhdGluZ19mb3JtLXN0YXItY29sb3ItaW5hY3RpdmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrIGZvciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IG1hc2tcbiAgICAgICAgICAgICAgICBAc3VwcG9ydHMgbm90IChtYXNrOiB1cmwoI3skc3Rhci1yYXRpbmdfaWNvbi11cmx9KSkge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgNDVkZWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXItcmF0aW5nX2Zvcm0tc3Rhci1jb2xvci1pbmFjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3Rhci1yYXRpbmdfZm9ybS1zdGFyLWNvbG9yLWluYWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsKCRzdGFyLXJhdGluZ19pY29uLXVybCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgZmlsbDogJHN0YXItcmF0aW5nX2Zvcm0tc3Rhci1jb2xvci1pbmFjdGl2ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3RleHQge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGNvbG9yOiAkc3Rhci1yYXRpbmdfdGV4dC1jb2xvcjtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjVlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIHBhZGRpbmctdG9wOiBjYWxjKCN7JHN0YXItcmF0aW5nX3N0YXItd2lkdGgtZGVmYXVsdH0gKiAwLjEpO1xuXG4gICAgICAgICYtLWNvdW50IHtcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnKCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcpJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkc3Rhci1yYXRpbmdfaGlkZS10ZXh0LXBkcCB7XG4gICAgICAgICAgICAuI3skbnN9YnV5Ym94ICYge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgJHN0YXItcmF0aW5nX2hpZGUtdGV4dC10aWxlIHtcbiAgICAgICAgICAgIC4jeyRuc31wcm9kdWN0LXRpbGUgJiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLWVtcHR5IHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3RleHQtYW5ub3RhdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcblxuICAgICAgICBAaWYgJHN0YXItcmF0aW5nX2hpZGUtYW5ub3RhdGlvbi1wZHAge1xuICAgICAgICAgICAgLiN7JG5zfWJ1eWJveCAmIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGlmICRzdGFyLXJhdGluZ19oaWRlLWFubm90YXRpb24tdGlsZSB7XG4gICAgICAgICAgICAuI3skbnN9cHJvZHVjdC10aWxlICYge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgfVxuXG4gICAgJl9fbGFiZWwge1xuICAgICAgICBjb2xvcjogJHN0YXItcmF0aW5nX2xhYmVsLWNvbG9yO1xuICAgICAgICBmb250LXNpemU6ICRzdGFyLXJhdGluZ19sYWJlbC1mb250LXNpemU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAkc3Rhci1yYXRpbmdfbGFiZWwtZm9udC13ZWlnaHQ7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiAkc3Rhci1yYXRpbmdfbGFiZWwtdGV4dC10cmFuc2Zvcm07XG4gICAgICAgIHBhZGRpbmctdG9wOiBjYWxjKCN7JHN0YXItcmF0aW5nX3N0YXItd2lkdGgtZGVmYXVsdH0gKiAwLjIpO1xuICAgIH1cbn1cblxuLnJldmlldy1jb250cm9sLXZvdGUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIDUge1xuICAgICAgICAucmF0aW5nLSN7JGl9IHtcbiAgICAgICAgICAgIHotaW5kZXg6ICN7JGl9O1xuXG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogbm9uZTtcbiAgICB9XG5cbiAgICBsYWJlbCB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAkc3Rhci1yYXRpbmdfc3Rhci13aWR0aC1yZXZpZXctZm9ybSArXG4gICAgICAgICAgICAkc3Rhci1yYXRpbmdfc3Rhci1wYWRkaW5nLXJldmlldy1mb3JtLW1vYmlsZTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHN0YXItcmF0aW5nX3N0YXItcGFkZGluZy1yZXZpZXctZm9ybS1tb2JpbGU7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAwO1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgIHdpZHRoOiAkc3Rhci1yYXRpbmdfc3Rhci13aWR0aC1yZXZpZXctZm9ybSArXG4gICAgICAgICAgICAgICAgJHN0YXItcmF0aW5nX3N0YXItcGFkZGluZy1yZXZpZXctZm9ybTtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRzdGFyLXJhdGluZ19zdGFyLXBhZGRpbmctcmV2aWV3LWZvcm07XG4gICAgICAgIH1cblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgd2lkdGg6ICRzdGFyLXJhdGluZ19zdGFyLXdpZHRoLXJldmlldy1mb3JtO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgQGluY2x1ZGUgdmlzdWFsbHktdmlzaWJsZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd1dGlscy92aXN1YWxseS1oaWRkZW4nO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcbkBpbXBvcnQgJ2V0Yy92aWV3LnNjc3MnO1xuQGltcG9ydCAndXRpbHMvZGVlcC1nZXQvZGVlcC1nZXQuc2Nzcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbi9taXhpbic7XG5AaW1wb3J0ICd1dGlscy9nZXQtdmFsdWUtZnJvbS1saXN0LnNjc3MnO1xuXG4kc3dhdGNoZXMtLWNsaWNrYWJsZTogZGVlcC1nZXQoJHZpZXcteG1sLFxuICAgICAgICB2YXJzLFxuICAgICAgICBNYWdlbnRvX0NhdGFsb2csXG4gICAgICAgIGNvbmZpZ3VyYWJsZV90aWxlX3N3YXRjaGVzLFxuICAgICAgICBlbmFibGVkKSAhZGVmYXVsdDtcblxuLy8gS2VlcCBpbiBzeW5jIHdpdGggcXVhbnRpdHkgd3JhcHBlciBpbiBidXlib3guXG4kc3dhdGNoZXNfbGFiZWwtd2lkdGg6IDEwcmVtICFkZWZhdWx0O1xuJHN3YXRjaGVzX2xhYmVsLXdpZHRoLWxhcHRvcC11cDogMTFyZW0gIWRlZmF1bHQ7XG4kc3dhdGNoZXNfbGFiZWwtZ3V0dGVyOiAxLjVyZW0gIWRlZmF1bHQ7XG4kc3dhdGNoZXNfbGFiZWwtZm9udC1zaXplOiAxLjFlbSAhZGVmYXVsdDtcbi8vIEtlZXAgaW4gc3luYyB3aWR0aCBxdWFudGl0eSB3cmFwcGVyIGluIGJ1eWJveCBlbmQuXG5cbi8vIFNjZW5hcmlvIHdpdGggc3dhdGNoZXMgYmVsb3cgbGFiZWwsIHdoaWNoIGlzIDEwMCUgd2lkZVxuLy8gd2l0aCB0aGlzIHZhcmlhYmxlIHNldCB0byB0cnVlICRzd2F0Y2hlc19sYWJlbC13aWR0aFxuLy8gYW5kICRzd2F0Y2hlc19sYWJlbC13aWR0aC1sYXB0b3AtdXAgd2lsbCBiZSBvdmVycmlkZW4gLSBhbHdheXMgMTAwJSB3aWR0aFxuJHN3YXRjaGVzX2Z1bGwtd2lkdGgtbGFiZWw6IGZhbHNlICFkZWZhdWx0O1xuXG4kc3dhdGNoZXNfZGlzYWJsZS1zaG93LW1vcmU6IGZhbHNlICFkZWZhdWx0O1xuJHN3YXRjaGVzX3N3YXRjaC1ndXR0ZXI6IDAuNGVtICFkZWZhdWx0O1xuJHN3YXRjaGVzX3N3YXRjaC1oZWlnaHQ6IDMuMmVtICFkZWZhdWx0O1xuJHN3YXRjaGVzX3N3YXRjaC13aWR0aDogMy4yZW0gIWRlZmF1bHQ7XG4kc3dhdGNoZXNfc3dhdGNoLXBhZGRpbmc6IDAgIWRlZmF1bHQ7XG4kc3dhdGNoZXNfc3dhdGNoLWNvbG9yOiAkY29sb3JfdGV4dC05MDAgIWRlZmF1bHQ7XG4kc3dhdGNoZXNfc3dhdGNoLXRleHQtb2Zmc2V0OiAwLjFlbSAhZGVmYXVsdDtcblxuJHN3YXRjaGVzX3N3YXRjaC1iYWNrZ3JvdW5kOiAkY29sb3JfYmFja2dyb3VuZC01MDAgIWRlZmF1bHQ7XG4kc3dhdGNoZXNfc3dhdGNoLS1ob3Zlci1iYWNrZ3JvdW5kOiAkY29sb3JfYmFja2dyb3VuZC0yMDAgIWRlZmF1bHQ7XG4kc3dhdGNoZXNfc3dhdGNoLS1zZWxlY3RlZC1iYWNrZ3JvdW5kOiAkY29sb3JfYmFja2dyb3VuZC0yMDAgIWRlZmF1bHQ7XG5cbiRzd2F0Y2hlc19zd2F0Y2gtYm9yZGVyLXJhZGl1czogNTBweCAhZGVmYXVsdDtcbiRzd2F0Y2hlc19zd2F0Y2gtYm9yZGVyLXdpZHRoOiAzcHggIWRlZmF1bHQ7XG4kc3dhdGNoZXNfc3dhdGNoLWJvcmRlcjogMnB4IHNvbGlkICRjb2xvcl9hbHRvICFkZWZhdWx0O1xuJHN3YXRjaGVzX3N3YXRjaC0taG92ZXItYm9yZGVyOiAycHggc29saWQgJGNvbG9yX2NvcmluX2xpZ2h0ICFkZWZhdWx0O1xuJHN3YXRjaGVzX3N3YXRjaC0tc2VsZWN0ZWQtYm9yZGVyOiAycHggc29saWQgJGNvbG9yX2NvcmluX2xpZ2h0ICFkZWZhdWx0O1xuXG4kc3dhdGNoZXNfc3dhdGNoLS10ZXh0LWRpc2FibGVkLWJhY2tncm91bmQ6ICRjb2xvcl93aGl0ZSAhZGVmYXVsdDtcbiRzd2F0Y2hlc19zd2F0Y2gtLXRleHQtZGlzYWJsZWQtYm9yZGVyOiAycHggc29saWQgJGNvbG9yX2JvcmRlci01MDAgIWRlZmF1bHQ7XG4kc3dhdGNoZXNfc3dhdGNoLS10ZXh0LWRpc2FibGVkLWNvbG9yOiAkY29sb3JfdGV4dC05MDAgIWRlZmF1bHQ7XG4kc3dhdGNoZXNfc3dhdGNoLS10ZXh0LW9wYWNpdHk6IDAuNjUgIWRlZmF1bHQ7XG5cbiRzd2F0Y2hlc19zd2F0Y2gtLWJhY2tpbnN0b2NrLWJhY2tncm91bmQ6IHJnYmEoJGNvbG9yX2JhY2tncm91bmQtNjAwLCAwLjU1KSB1cmwoLi4vaW1hZ2VzL2ljb25zL25vdGlmaWNhdGlvbi1wYW5lbC9pY29uX25vdGlmaWNhdGlvbi1vdXRsaW5lLnN2ZykgY2VudGVyLzY0JSBuby1yZXBlYXQgIWRlZmF1bHQ7XG5cbiRzd2F0Y2hlc19zd2F0Y2gtb3V0bGluZS13aWR0aDogMXB4ICFkZWZhdWx0O1xuJHN3YXRjaGVzX3N3YXRjaC1vdXRsaW5lLW9mZnNldDogKFxuICAgICRzd2F0Y2hlc19zd2F0Y2gtYm9yZGVyLXdpZHRoICsgJHN3YXRjaGVzX3N3YXRjaC1vdXRsaW5lLXdpZHRoKSAhZGVmYXVsdDtcbiRzd2F0Y2hlc19zd2F0Y2gtb3V0bGluZTogdW5zZXQgIWRlZmF1bHQ7XG4kc3dhdGNoZXNfc3dhdGNoLS1ob3Zlci1vdXRsaW5lOiB1bnNldCAhZGVmYXVsdDtcbiRzd2F0Y2hlc19zd2F0Y2gtLXNlbGVjdGVkLW91dGxpbmU6IHVuc2V0ICFkZWZhdWx0O1xuXG4kc3dhdGNoZXNfcm93cy1ndXR0ZXI6ICRzd2F0Y2hlc19zd2F0Y2gtZ3V0dGVyICogMiAhZGVmYXVsdDtcblxuJHN3YXRjaGVzLS10aWxlX2ZvbnQtc2l6ZTogMC40NWVtICFkZWZhdWx0O1xuLy8gVGVsbHMgaG93IG1hbnkgcm93cyBvZiBzd2F0Y2hlcyB3aWxsIGJlIGRpc3BsYXllZCBpbnNpZGUgdGlsZSBjb21wb25lbnQuXG4kc3dhdGNoZXMtLXRpbGVfbnVtLW9mLXJvd3M6IDEgIWRlZmF1bHQ7XG4vLyBDYWxjdWxhdGVzIGhvdyBtdWNoIHNwYWNlIHNob3VsZCBiZSByZXNlcnZlZCBpbiB0aWxlIGZvciBzd2F0Y2hlcyB0byBwcmV2ZW50IGNvbnRlbnQgZnJvbSBqdW1waW5nLlxuJHN3YXRjaGVzLS10aWxlX21pbi1oZWlnaHQ6IGNhbGMoI3skc3dhdGNoZXMtLXRpbGVfbnVtLW9mLXJvd3N9ICogKCN7JHN3YXRjaGVzX3N3YXRjaC1oZWlnaHR9ICsgI3skc3dhdGNoZXNfc3dhdGNoLW91dGxpbmUtb2Zmc2V0ICpcbiAyXG4gICAgfSkpICFkZWZhdWx0O1xuJHN3YXRjaGVzLS1wZHBfZm9udC1zaXplOiAxLjFlbSAhZGVmYXVsdDtcbiRzd2F0Y2hlcy0tZmlsdGVyc19mb250LXNpemU6IDAuOGVtICFkZWZhdWx0O1xuXG4vLyBUb29sdGlwcyBmb3Igc3dhdGNoZXNcbiRzd2F0Y2hlc190b29sdGlwLWJhY2tncm91bmQ6ICRjb2xvcl93aGl0ZSAhZGVmYXVsdDtcbiRzd2F0Y2hlc190b29sdGlwLWJvcmRlci1yYWRpdXM6IDAuNXJlbSAhZGVmYXVsdDtcbiRzd2F0Y2hlc190b29sdGlwLWJvcmRlci1zaXplOiAwLjFyZW0gIWRlZmF1bHQ7XG4kc3dhdGNoZXNfdG9vbHRpcC1ib3JkZXItY29sb3I6ICRjb2xvcl9ib3JkZXItNTAwICFkZWZhdWx0O1xuJHN3YXRjaGVzX3Rvb2x0aXAtY29sb3I6ICRjb2xvcl90ZXh0LTQwMCAhZGVmYXVsdDtcbiRzd2F0Y2hlc190b29sdGlwLWZvbnQtc2l6ZTogMS4zcmVtICFkZWZhdWx0O1xuJHN3YXRjaGVzX3Rvb2x0aXAtZm9udC13ZWlnaHQ6IDQwMCAhZGVmYXVsdDtcbiRzd2F0Y2hlc190b29sdGlwLW1hcmdpbjogMCAhZGVmYXVsdDtcbiRzd2F0Y2hlc190b29sdGlwLXBhZGRpbmc6IDAuNXJlbSAhZGVmYXVsdDtcbiRzd2F0Y2hlc190b29sdGlwLW1pbi13aWR0aDogMnJlbSAhZGVmYXVsdDtcbiRzd2F0Y2hlc190b29sdGlwLWFycm93LXNob3c6IHRydWUgIWRlZmF1bHQ7XG4kc3dhdGNoZXNfdG9vbHRpcC1hcnJvdy1zaXplOiAxcmVtICFkZWZhdWx0O1xuJHN3YXRjaGVzX3Rvb2x0aXAtYXJyb3ctb2Zmc2V0LXg6IDUwJSAhZGVmYXVsdDtcbiRzd2F0Y2hlc190b29sdGlwLXRleHQtYWxpZ246IGNlbnRlciAhZGVmYXVsdDtcblxuJHN3YXRjaGVzX3Rvb2x0aXAtdGh1bWJuYWlsLWRhdGE6IGRlZXAtZ2V0KCR2aWV3LXhtbCxcbiAgICAgICAgbWVkaWEsXG4gICAgICAgIGltYWdlcyxcbiAgICAgICAgaW1hZ2UsXG4gICAgICAgIHN3YXRjaF90aHVtYikgIWRlZmF1bHQ7XG5cbiRzd2F0Y2hlc190b29sdGlwLXRodW1ibmFpbC13aWR0aDogI3ttYXAtZ2V0KFxuICRzd2F0Y2hlc190b29sdGlwLXRodW1ibmFpbC1kYXRhLFxuICAgIHdpZHRoKVxufVxuXG4hZGVmYXVsdDtcbiRzd2F0Y2hlc190b29sdGlwLXRodW1ibmFpbC1oZWlnaHQ6ICN7bWFwLWdldChcbiAkc3dhdGNoZXNfdG9vbHRpcC10aHVtYm5haWwtZGF0YSxcbiAgICBoZWlnaHQpXG59XG5cbiFkZWZhdWx0O1xuXG4uc3dhdGNoLWF0dHJpYnV0ZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIC8vIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgIC8vIFRoZSBvbmx5IHNlbGVjdG9yIHdlIGhhdmUgdG8gdGVsbCB0aGF0IHN3YXRjaGVzIGFyZSBpbnNpZGUgYWZ0ZXJzZWFyY2ggbmF2aWdhdGlvbi5cbiAgICAmLnN3YXRjaC1sYXllcmVkIHtcbiAgICAgICAgZm9udC1zaXplOiAkc3dhdGNoZXMtLWZpbHRlcnNfZm9udC1zaXplO1xuICAgIH1cblxuICAgICYrJiB7XG4gICAgICAgIG1hcmdpbi10b3A6ICRzd2F0Y2hlc19yb3dzLWd1dHRlcjtcbiAgICB9XG59XG5cbi5zd2F0Y2gtYXR0cmlidXRlLWxhYmVsIHtcbiAgICBvcmRlcjogMTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxpbmUtaGVpZ2h0OiBjYWxjKCN7JHN3YXRjaGVzX3N3YXRjaC1oZWlnaHR9IC0gI3skc3dhdGNoZXNfc3dhdGNoLWJvcmRlci13aWR0aCAqIDJ9ICsgI3skc3dhdGNoZXNfc3dhdGNoLXRleHQtb2Zmc2V0fVxuKTtcbmZvbnQtd2VpZ2h0OiA3MDA7XG5mb250LXNpemU6ICRzd2F0Y2hlc19sYWJlbC1mb250LXNpemU7XG53aWR0aDogJHN3YXRjaGVzX2xhYmVsLXdpZHRoO1xubWFyZ2luLXJpZ2h0OiAkc3dhdGNoZXNfbGFiZWwtZ3V0dGVyO1xuXG5AaWYgKCRzd2F0Y2hlc19mdWxsLXdpZHRoLWxhYmVsID09dHJ1ZSkge1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG5AaW5jbHVkZSBtZWRpYSgnPj1sYXB0b3AnKSB7XG4gICAgd2lkdGg6ICRzd2F0Y2hlc19sYWJlbC13aWR0aC1sYXB0b3AtdXA7XG5cbiAgICBAaWYgKCRzd2F0Y2hlc19mdWxsLXdpZHRoLWxhYmVsID09dHJ1ZSkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG59XG5cbiY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICc6ICc7XG4gICAgbGluZS1oZWlnaHQ6IGNhbGMoI3skc3dhdGNoZXNfc3dhdGNoLWhlaWdodH0gLSAjeyRzd2F0Y2hlc19zd2F0Y2gtYm9yZGVyLXdpZHRoICogMn0gKyAjeyRzd2F0Y2hlc19zd2F0Y2gtdGV4dC1vZmZzZXR9KTtcbn1cbn1cblxuLnN3YXRjaC1hdHRyaWJ1dGUtc2VsZWN0ZWQtb3B0aW9uIHtcbiAgICBAaW5jbHVkZSB2aXN1YWxseS1oaWRkZW4oKTtcbn1cblxuLnN3YXRjaC1hdHRyaWJ1dGUtb3B0aW9ucyB7XG4gICAgb3JkZXI6IDM7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgbWFyZ2luLWxlZnQ6IC0jeyRzd2F0Y2hlc19zd2F0Y2gtZ3V0dGVyIC8gMn07XG4gICAgbWFyZ2luLWJvdHRvbTogLSN7JHN3YXRjaGVzX3N3YXRjaC1ndXR0ZXJ9O1xuICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgIH1cblxuICAgIC5zd2F0Y2gtb3B0ICYge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgLy8gbWF4LXdpZHRoOiBjYWxjKFxuICAgICAgICAvLyAgICAgMTAwJSAtICN7JHN3YXRjaGVzX2xhYmVsLWd1dHRlcn0gLSAjeyRzd2F0Y2hlc19sYWJlbC13aWR0aH1cbiAgICAgICAgLy8gKTtcblxuICAgICAgICBAaWYgKCRzd2F0Y2hlc19mdWxsLXdpZHRoLWxhYmVsID09dHJ1ZSkge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgLy8gbWF4LXdpZHRoOiBjYWxjKFxuICAgICAgICAgICAgLy8gICAgIDEwMCUgLSAjeyRzd2F0Y2hlc19sYWJlbC1ndXR0ZXJ9IC0gI3skc3dhdGNoZXNfbGFiZWwtd2lkdGgtbGFwdG9wLXVwfVxuICAgICAgICAgICAgLy8gKTtcblxuICAgICAgICAgICAgQGlmICgkc3dhdGNoZXNfZnVsbC13aWR0aC1sYWJlbCA9PXRydWUpIHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5tYWdlLWVycm9yIHtcbiAgICBvcmRlcjogMjtcbn1cblxuLy8gRWxlbWVudCBhZGRlZCBhcyBhIHBhcmVudCBvZiAuc3dhdGNoLW9wdGlvbiBpbiBmaWx0ZXJzLlxuLnN3YXRjaC1vcHRpb24tbGluay1sYXllcmVkIHtcbiAgICBmb250LXNpemU6IDFlbTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxufVxuXG4uc3dhdGNoLW9wdGlvbiB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLXdpZHRoOiAkc3dhdGNoZXNfc3dhdGNoLXdpZHRoO1xuICAgIGhlaWdodDogJHN3YXRjaGVzX3N3YXRjaC1oZWlnaHQ7XG4gICAgcGFkZGluZzogJHN3YXRjaGVzX3N3YXRjaC1wYWRkaW5nO1xuICAgIC8vIG1hcmdpbjogI3skc3dhdGNoZXNfc3dhdGNoLW91dGxpbmUtd2lkdGh9IGNhbGMoXG4gICAgLy8gICAgICAgICAjeyRzd2F0Y2hlc19zd2F0Y2gtb3V0bGluZS13aWR0aH0gKyAjeyRzd2F0Y2hlc19zd2F0Y2gtZ3V0dGVyIC8gMn1cbiAgICAvLyAgICAgKSBjYWxjKCN7JHN3YXRjaGVzX3N3YXRjaC1vdXRsaW5lLXdpZHRofSArICN7JHN3YXRjaGVzX3N3YXRjaC1ndXR0ZXJ9KTtcbiAgICBtYXJnaW46IDZweDtcbiAgICBib3JkZXItcmFkaXVzOiAkc3dhdGNoZXNfc3dhdGNoLWJvcmRlci1yYWRpdXM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHN3YXRjaGVzX3N3YXRjaC1iYWNrZ3JvdW5kO1xuICAgIGJvcmRlcjogJHN3YXRjaGVzX3N3YXRjaC1ib3JkZXI7XG4gICAgY29sb3I6ICRzd2F0Y2hlc19zd2F0Y2gtY29sb3I7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGxpbmUtaGVpZ2h0OiBjYWxjKCN7JHN3YXRjaGVzX3N3YXRjaC1oZWlnaHR9IC0gI3skc3dhdGNoZXNfc3dhdGNoLWJvcmRlci13aWR0aCAqIDJ9ICsgI3skc3dhdGNoZXNfc3dhdGNoLXRleHQtb2Zmc2V0fSk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcywgYm9yZGVyLWNvbG9yIDAuM3MsIG9wYWNpdHkgMC4zcyxcbiAgICAgICAgY29sb3IgMC4zcztcblxuICAgIEBpZiAkc3dhdGNoZXNfZGlzYWJsZS1zaG93LW1vcmUge1xuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtJHN3YXRjaGVzX3N3YXRjaC1vdXRsaW5lLW9mZnNldDtcbiAgICAgICAgbGVmdDogLSRzd2F0Y2hlc19zd2F0Y2gtb3V0bGluZS1vZmZzZXQ7XG4gICAgICAgIHJpZ2h0OiAtJHN3YXRjaGVzX3N3YXRjaC1vdXRsaW5lLW9mZnNldDtcbiAgICAgICAgYm90dG9tOiAtJHN3YXRjaGVzX3N3YXRjaC1vdXRsaW5lLW9mZnNldDtcbiAgICAgICAgYm9yZGVyOiAkc3dhdGNoZXNfc3dhdGNoLW91dGxpbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRzd2F0Y2hlc19zd2F0Y2gtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuM3M7XG4gICAgfVxuXG4gICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAvLyBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL2ljb25zL3N3YXRjaGVzL2Rpc2FibGVkLnN2ZykgJGNvbG9yX3doaXRlIGNlbnRlciBuby1yZXBlYXQ7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBsZWZ0IHRvcCwgI2ZmZmZmZiAwJSwgI2ZmZmZmZiA0MiUsICNmZmZmZmYgNDMlLCAjZmZmZmZmIDQ2JSwgI0JDQkJCQyA0NyUsICNCQ0JCQkMgNTMlLCAjZmZmZmZmIDU0JSwgI2ZmZmZmZiA1NyUsICNmZmZmZmYgNTglLCAjZmZmZmZmIDEwMCUpO1xuICAgICAgICB3aWR0aDogMy45cmVtO1xuICAgICAgICBoZWlnaHQ6IDMuOXJlbTtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAzLjhyZW07XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcztcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgI2JjYmJiYztcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgfVxuXG4gICAgJi5zZWxlY3RlZCxcbiAgICAmLmJpcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlcjogJHN3YXRjaGVzX3N3YXRjaC0tc2VsZWN0ZWQtYm9yZGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkc3dhdGNoZXNfc3dhdGNoLS1zZWxlY3RlZC1iYWNrZ3JvdW5kO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGJvcmRlcjogJHN3YXRjaGVzX3N3YXRjaC0tc2VsZWN0ZWQtb3V0bGluZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuZGlzYWJsZWQ6bm90KC5iYWNrLWluLXN0b2NrLWFsZXJ0KSxcbiAgICAmW2Rpc2FibGVkXTpub3QoLmJhY2staW4tc3RvY2stYWxlcnQpIHtcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcblxuICAgICAgICAmLnRleHQge1xuICAgICAgICAgICAgb3BhY2l0eTogNTAlO1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvcl9zaWx2ZXItY2hhbGljZTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRzd2F0Y2hlc19zd2F0Y2gtLXRleHQtZGlzYWJsZWQtYmFja2dyb3VuZDtcblxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIC8vIC8vYm9yZGVyOiAkc3dhdGNoZXNfc3dhdGNoLS10ZXh0LWRpc2FibGVkLWJvcmRlcjtcbiAgICAgICAgICAgICAgICAvLyBib3JkZXI6IHVuc2V0O1xuICAgICAgICAgICAgICAgIC8vIHdpZHRoOiAzcHg7XG4gICAgICAgICAgICAgICAgLy8gaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIC8vIHRyYW5zZm9ybTogcm90YXRlKDMxNWRlZyk7XG4gICAgICAgICAgICAgICAgLy8gYmFja2dyb3VuZDogI0JDQkJCQztcbiAgICAgICAgICAgICAgICAvLyBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgICAgICAvLyB0b3A6IDBweDtcbiAgICAgICAgICAgICAgICAvLyBib3JkZXItcmFkaXVzOiAwcHg7XG4gICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgICAgICAvLyBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL2ljb25zL3N3YXRjaGVzL2Rpc2FibGVkLnN2ZykgJGNvbG9yX3doaXRlIGNlbnRlciBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGxlZnQgdG9wLCAjZmZmZmZmMDAgMCUsICNmZmZmZmYwMCA0MiUsICNmZmZmZmYwMCA0MyUsICNmZmZmZmYwMCA0NiUsICNCQ0JCQkMgNDclLCAjQkNCQkJDIDUzJSwgI2ZmZmZmZjAwIDU0JSwgI2ZmZmZmZjAwIDU3JSwgI2ZmZmZmZjAwIDU4JSwgI2ZmZmZmZjAwIDEwMCUpO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAzLjlyZW07XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzLjlyZW07XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAzLjhyZW07XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzO1xuICAgICAgICAgICAgICAgIC8vIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgI2JjYmJiYztcbiAgICAgICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmltYWdlLFxuICAgICAgICAmLmNvbG9yIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCguZGlzYWJsZWQpOm5vdCguc2VsZWN0ZWQpOm5vdChbZGlzYWJsZWRdKSxcbiAgICAmLmJhY2staW4tc3RvY2stYWxlcnQge1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJvcmRlcjogJHN3YXRjaGVzX3N3YXRjaC0taG92ZXItYm9yZGVyO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHN3YXRjaGVzX3N3YXRjaC0taG92ZXItYmFja2dyb3VuZDtcblxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogJHN3YXRjaGVzX3N3YXRjaC0taG92ZXItb3V0bGluZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm1vZGFsLWNvbnRlbnQgLnN3YXRjaC1vcHRpb246YWZ0ZXIsXG4ubW9kYWwtY29udGVudCAuc3dhdGNoLW9wdGlvbjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgLy8gYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9pY29ucy9zd2F0Y2hlcy9kaXNhYmxlZC5zdmcpICRjb2xvcl93aGl0ZSBjZW50ZXIgbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBsZWZ0IHRvcCwgI2ZmZmZmZiAwJSwgI2ZmZmZmZiA0MiUsICNmZmZmZmYgNDMlLCAjZmZmZmZmIDQ2JSwgI0JDQkJCQyA0NyUsICNCQ0JCQkMgNTMlLCAjZmZmZmZmIDU0JSwgI2ZmZmZmZiA1NyUsICNmZmZmZmYgNTglLCAjZmZmZmZmIDEwMCUpO1xuICAgIHdpZHRoOiA0LjZyZW07XG4gICAgaGVpZ2h0OiA0LjZyZW07XG4gICAgYmFja2dyb3VuZC1zaXplOiA0LjZyZW07XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgYm9yZGVyOiAycHggc29saWQgI2JjYmJiYztcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG5cbi5tb2RhbC1jb250ZW50IC5zd2F0Y2gtb3B0aW9uLmRpc2FibGVkOmJlZm9yZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB3aWR0aDogNC42cmVtICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiA0LjZyZW0gIWltcG9ydGFudDtcbn1cblxuLmF0YWxvZy1wcm9kdWN0LXZpZXcge1xuICAgIC5zd2F0Y2gtb3B0aW9uLmltYWdlIHtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiA0cmVtO1xuICAgIH1cbn1cblxuLnByb2R1Y3RzLWdyaWQge1xuICAgIC5zd2F0Y2gtb3B0aW9uLmltYWdlIHtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4uc3dhdGNoLWlucHV0IHtcbiAgICBAaW5jbHVkZSB2aXN1YWxseS1oaWRkZW4oKTtcblxuICAgIC8vIFJlc3RvcmUgb3JpZ2luYWwgc3R5bGVzIGZyb20gTWFnZW50by5cbiAgICAvLyBJdCBwcmV2ZW50cyBrZXlib2FyZCBvbiBtb2JpbGUgdG8gYmUgc2hvd24gYWZ0ZXIgc3dhdGNoIGlzIGNsaWNrZWRcbiAgICBsZWZ0OiAtMTAwMHB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5zd2F0Y2gtbW9yZSB7XG4gICAgQGlmICRzd2F0Y2hlc19kaXNhYmxlLXNob3ctbW9yZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGNvbG9yOiAjNDg0ODQ4O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbn1cblxuLnN3YXRjaC1vcHRpb24tdG9vbHRpcCxcbi5zd2F0Y2gtb3B0aW9uLXRvb2x0aXAtbGF5ZXJlZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luOiAkc3dhdGNoZXNfdG9vbHRpcC1tYXJnaW47XG4gICAgei1pbmRleDogOTk5O1xuICAgIGJhY2tncm91bmQ6ICRzd2F0Y2hlc190b29sdGlwLWJhY2tncm91bmQ7XG4gICAgYm9yZGVyLXJhZGl1czogJHN3YXRjaGVzX3Rvb2x0aXAtYm9yZGVyLXJhZGl1cztcbiAgICBjb2xvcjogJHN3YXRjaGVzX3Rvb2x0aXAtY29sb3I7XG4gICAgZm9udC1zaXplOiAkc3dhdGNoZXNfdG9vbHRpcC1mb250LXNpemU7XG4gICAgZm9udC13ZWlnaHQ6ICRzd2F0Y2hlc190b29sdGlwLWZvbnQtd2VpZ2h0O1xuICAgIHBhZGRpbmc6ICRzd2F0Y2hlc190b29sdGlwLXBhZGRpbmc7XG4gICAgdGV4dC1hbGlnbjogJHN3YXRjaGVzX3Rvb2x0aXAtdGV4dC1hbGlnbjtcbiAgICBtaW4td2lkdGg6ICRzd2F0Y2hlc190b29sdGlwLW1pbi13aWR0aDtcblxuICAgIEBpZiAoJHN3YXRjaGVzX3Rvb2x0aXAtYm9yZGVyLXNpemUgIT0wIGFuZCAkc3dhdGNoZXNfdG9vbHRpcC1ib3JkZXItc2l6ZSAhPSdub25lJ1xuXG4gICAgKSB7XG4gICAgICAgIGJvcmRlcjogJHN3YXRjaGVzX3Rvb2x0aXAtYm9yZGVyLXNpemUgc29saWQgJHN3YXRjaGVzX3Rvb2x0aXAtYm9yZGVyLWNvbG9yO1xuICAgIH1cblxuICAgIC5pbWFnZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgd2lkdGg6ICRzd2F0Y2hlc190b29sdGlwLXRodW1ibmFpbC13aWR0aCArICdweCc7XG4gICAgICAgIGhlaWdodDogJHN3YXRjaGVzX3Rvb2x0aXAtdGh1bWJuYWlsLWhlaWdodCArICdweCc7XG4gICAgfVxuXG4gICAgLmNvcm5lciB7XG4gICAgICAgIEBpZiAoJHN3YXRjaGVzX3Rvb2x0aXAtYXJyb3ctc2hvdykge1xuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICB3aWR0aDogJHN3YXRjaGVzX3Rvb2x0aXAtYXJyb3ctc2l6ZTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICRzd2F0Y2hlc190b29sdGlwLWFycm93LXNpemU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHN3YXRjaGVzX3Rvb2x0aXAtYmFja2dyb3VuZDtcbiAgICAgICAgICAgICAgICBsZWZ0OiAkc3dhdGNoZXNfdG9vbHRpcC1hcnJvdy1vZmZzZXQteDtcblxuICAgICAgICAgICAgICAgIEBpZiAodW5pdCgkc3dhdGNoZXNfdG9vbHRpcC1hcnJvdy1vZmZzZXQteCk9PSclJykge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLSN7JHN3YXRjaGVzX3Rvb2x0aXAtYXJyb3ctb2Zmc2V0LXh9KSByb3RhdGUoNDVkZWcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBpZiAoJHN3YXRjaGVzX3Rvb2x0aXAtYm9yZGVyLXNpemUgIT0wIGFuZCAkc3dhdGNoZXNfdG9vbHRpcC1ib3JkZXItc2l6ZSAhPSdub25lJ1xuXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206ICRzd2F0Y2hlc190b29sdGlwLWJvcmRlci1zaXplIHNvbGlkICRzd2F0Y2hlc190b29sdGlwLWJvcmRlci1jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAkc3dhdGNoZXNfdG9vbHRpcC1ib3JkZXItc2l6ZSBzb2xpZCAkc3dhdGNoZXNfdG9vbHRpcC1ib3JkZXItY29sb3I7XG4gICAgICAgICAgICAgICAgICAgIC8vIHN0eWxlbGludC1kaXNhYmxlXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IGNhbGMoLSN7JHN3YXRjaGVzX3Rvb2x0aXAtYXJyb3ctc2l6ZSAvXG4gMlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgKyAjeyRzd2F0Y2hlc190b29sdGlwLWJvcmRlci1zaXplfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtI3skc3dhdGNoZXNfdG9vbHRpcC1hcnJvdy1zaXplIC8gMn07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59XG59XG5cbi5zd2F0Y2gtb3B0aW9uLXRvb2x0aXAge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ubWlzc2luZy1zd2F0Y2hlcy1tb2RhbCB7XG4gICAgbWF4LXdpZHRoOiA0MHJlbTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcblxuICAgIC5tYWdlLWVycm9yIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuOHJlbTtcbiAgICB9XG5cbiAgICAuc3dhdGNoLWF0dHJpYnV0ZSsuc3dhdGNoLWF0dHJpYnV0ZSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDJyZW07XG4gICAgfVxufVxuXG4ubWlzc2luZy1zd2F0Y2hlcy1tb2RhbC12aXNpYmxlIHtcbiAgICAuc3dhdGNoLW9wdGlvbi10b29sdGlwIHtcbiAgICAgICAgQG1lZGlhIChob3Zlcjpub25lKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIENvbnRhaW5lciBzZWxlY3RvciBmb3Igc3dhdGNoZXMgb24gUERQXG4uc3dhdGNoLW9wdCB7XG4gICAgZm9udC1zaXplOiAkc3dhdGNoZXMtLXBkcF9mb250LXNpemU7XG5cbiAgICAuc3dhdGNoLW9wdGlvbiB7XG4gICAgICAgICYuYmFjay1pbi1zdG9jay1hbGVydCB7XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkc3dhdGNoZXNfc3dhdGNoLS1iYWNraW5zdG9jay1iYWNrZ3JvdW5kO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYudGV4dCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMmVtO1xuXG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBnZXQtdmFsdWUtZnJvbS1saXN0KCRzd2F0Y2hlc19zd2F0Y2gtcGFkZGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlbGVjdG9yIGZvciBlcnJvciBjb250YWluZXIgd2hlbiBzd2F0Y2hlcyBhcmUgcmVxdWlyZWQgYnV0IG5vdCBzZWxlY3RlZC5cbiAgICAubWFnZS1lcnJvciB7XG4gICAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIC8vIG1hcmdpbi1sZWZ0OiBjYWxjKCN7JHN3YXRjaGVzX2xhYmVsLXdpZHRofSArICN7JHN3YXRjaGVzX2xhYmVsLWd1dHRlcn0pO1xuXG4gICAgICAgIC8vIEBpZiAoJHN3YXRjaGVzX2Z1bGwtd2lkdGgtbGFiZWwgPT0gdHJ1ZSkge1xuICAgICAgICAvLyAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIC8vIH1cblxuICAgICAgICAvLyBAaW5jbHVkZSBtZWRpYSgnPj1sYXB0b3AnKSB7XG4gICAgICAgIC8vICAgICBtYXJnaW4tbGVmdDogY2FsYyhcbiAgICAgICAgLy8gICAgICAgICAjeyRzd2F0Y2hlc19sYWJlbC13aWR0aC1sYXB0b3AtdXB9ICsgI3skc3dhdGNoZXNfbGFiZWwtZ3V0dGVyfVxuICAgICAgICAvLyAgICAgKTtcblxuICAgICAgICAvLyAgICAgQGlmICgkc3dhdGNoZXNfZnVsbC13aWR0aC1sYWJlbCA9PSB0cnVlKSB7XG4gICAgICAgIC8vICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH1cbiAgICB9XG59XG5cbi8vIENvbnRhaW5lciBzZWxlY3RvciBmb3Igc3dhdGNoZXMgaW4gdGlsZSBhbmQgZGFpbHkgZGVhbCB0ZWFzZXIuXG5bY2xhc3NePSdzd2F0Y2gtb3B0LSddIHtcbiAgICBmb250LXNpemU6ICRzd2F0Y2hlcy0tdGlsZV9mb250LXNpemU7XG4gICAgbWluLWhlaWdodDogJHN3YXRjaGVzLS10aWxlX21pbi1oZWlnaHQ7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICBAaWYgJHN3YXRjaGVzLS1jbGlja2FibGUge1xuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPnRhYmxldCcpIHtcbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnN3YXRjaC1vcHRpb24ge1xuXG4gICAgICAgICYuZGlzYWJsZWQuYmFjay1pbi1zdG9jay1hbGVydCxcbiAgICAgICAgJltkaXNhYmxlZF0uYmFjay1pbi1zdG9jay1hbGVydCB7XG4gICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXG4gICAgICAgICAgICAmLnRleHQge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6ICRzd2F0Y2hlc19zd2F0Y2gtLXRleHQtb3BhY2l0eTtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHN3YXRjaGVzX3N3YXRjaC0tdGV4dC1kaXNhYmxlZC1jb2xvcjtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkc3dhdGNoZXNfc3dhdGNoLS10ZXh0LWRpc2FibGVkLWJhY2tncm91bmQ7XG5cbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJHN3YXRjaGVzX3N3YXRjaC0tdGV4dC1kaXNhYmxlZC1ib3JkZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmltYWdlLFxuICAgICAgICAgICAgJi5jb2xvciB7XG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjplbXB0eSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxufVxuXG4uY3MtcHJvZHVjdC10aWxlX19jb250YWluZXIge1xuICAgIC5zd2F0Y2gtYXR0cmlidXRlLmNvbG9yIHtcbiAgICAgICAgLnN3YXRjaC1vcHRpb24ge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIC4ycyBlYXNlLWluLW91dDtcbiAgICAgICAgICAgIHNjYWxlOiAxO1xuXG4gICAgICAgICAgICAvLyBib3JkZXI6IDFweCBzb2xpZCAkY29sb3JfYWx0bztcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIHNjYWxlOiAxLjM7XG4gICAgICAgICAgICAgICAgLy8gYm9yZGVyOiAxcHggc29saWQgJGNvbG9yX2NvcmluX2xpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnN3YXRjaC1vcHRpb24uc2VsZWN0ZWQsXG4gICAgICAgIC5zd2F0Y2gtb3B0aW9uLmJpcy1zZWxlY3RlZCB7XG4gICAgICAgICAgICBzY2FsZTogMS4zO1xuICAgICAgICAgICAgLy8gYm9yZGVyOiAxcHggc29saWQgJGNvbG9yX2FsdG87XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jYXRhbG9nLXByb2R1Y3QtdmlldyB7XG4gICAgLnN3YXRjaC1vcHRpb24uaW1hZ2Uge1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW4gIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmJsb2NrLnByb2R1Y3RzLXJlbGF0ZWQgLmNzLXByb2R1Y3RzLWNhcm91c2VsX19wcm9kdWN0LXRpbGUge1xuICAgIC5zd2F0Y2gtb3B0aW9uLmltYWdlIHtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluICFpbXBvcnRhbnQ7XG4gICAgfVxufSIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdHlwb2dyYXBoeS9taXhpbic7XG5AaW1wb3J0ICd1dGlscy9yZXNldC1saXN0LXN0eWxlJztcblxuJHRvcGJhcl9iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhZGVmYXVsdDtcbiR0b3BiYXJfaGVpZ2h0OiAyLjdyZW0gIWRlZmF1bHQ7XG5cbiR0b3BiYXJfaXRlbS1mb250LXNpemU6IDEuMXJlbSAhZGVmYXVsdDtcbiR0b3BiYXJfaXRlbS10ZXh0LWNvbG9yOiAkY29sb3JfbWluZXNoYWZ0ICFkZWZhdWx0O1xuJHRvcGJhcl9lbmFibGUtYm9yZGVyczogdHJ1ZSAhZGVmYXVsdDtcbiR0b3BiYXJfaXRlbS1ib3JkZXI6IDAuMnJlbSBzb2xpZCAkY29sb3Jfd2hpdGUgIWRlZmF1bHQ7XG4kdG9wYmFyX2l0ZW0tcGhvbmVfbnVtYmVyLWNvbG9yOiAkY29sb3JfYmxhY2sgIWRlZmF1bHQ7XG5cbiR0b3BiYXJfbGluay1jb2xvcjogJGxpbmstY29sb3JfYmFzZSAhZGVmYXVsdDtcbiR0b3BiYXJfbGluay1jb2xvci1ob3ZlcjogJGxpbmstY29sb3JfYmFzZS1ob3ZlciAhZGVmYXVsdDtcbiR0b3BiYXJfbGluay1kZWNvcmF0aW9uOiBub25lICFkZWZhdWx0O1xuJHRvcGJhcl9saW5rLWhvdmVyLWRlY29yYXRpb246ICR0b3BiYXJfbGluay1kZWNvcmF0aW9uICFkZWZhdWx0O1xuXG4kY29udGFpbmVyX2JhY2tncm91bmQtdG9wLWJhcjogJGNvbG9yX2JhY2tncm91bmQtNTAwICFkZWZhdWx0O1xuXG4uI3skbnN9dG9wYmFyIHtcbiAgICAkcm9vdDogJjtcblxuICAgIGJhY2tncm91bmQ6ICR0b3BiYXJfYmFja2dyb3VuZDtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZvbnQtc2l6ZTogJHRvcGJhcl9pdGVtLWZvbnQtc2l6ZTtcblxuICAgIEBpbmNsdWRlIG1lZGlhKCc+PWxhcHRvcCcpIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgei1pbmRleDogMzAyO1xuICAgIH1cblxuICAgICZfX3dyYXBwZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgaGVpZ2h0OiAkdG9wYmFyX2hlaWdodDtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj1sYXB0b3AnKSB7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2l0ZW0ge1xuICAgICAgICBjb2xvcjogJHRvcGJhcl9pdGVtLXRleHQtY29sb3I7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAgICAgJi0tdXNwcyB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj1sYXB0b3BMZycpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0taG90bGluZSB7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLS1sYW5ndWFnZSB7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19saXN0LFxuICAgICZfX2l0ZW0gPiB1bCB7XG4gICAgICAgIEBpbmNsdWRlIHJlc2V0LWxpc3Qtc3R5bGUoKTtcblxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgJl9fbGlzdC1pdGVtIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgaGVpZ2h0OiAkdG9wYmFyX2hlaWdodDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxLjNyZW07XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCR0b3BiYXJfZW5hYmxlLWJvcmRlcnMpIHtcbiAgICAgICAgICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxLjNyZW07XG5cbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAkdG9wYmFyX2l0ZW0tYm9yZGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3RleHQge1xuICAgICAgICBjb2xvcjogJHRvcGJhcl9pdGVtLXRleHQtY29sb3I7XG4gICAgfVxuXG4gICAgJl9fbGluayB7XG4gICAgICAgIEBpbmNsdWRlIGxpbmsoXG4gICAgICAgICAgICAkY29sb3I6ICR0b3BiYXJfbGluay1jb2xvcixcbiAgICAgICAgICAgICRjb2xvci1ob3ZlcjogJHRvcGJhcl9saW5rLWNvbG9yLWhvdmVyLFxuICAgICAgICAgICAgJGRlY29yYXRpb246ICR0b3BiYXJfbGluay1kZWNvcmF0aW9uLFxuICAgICAgICAgICAgJGRlY29yYXRpb24taG92ZXI6ICR0b3BiYXJfbGluay1ob3Zlci1kZWNvcmF0aW9uXG4gICAgICAgICk7XG5cbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjlyZW07XG4gICAgfVxuXG4gICAgJl9faG90bGluZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgJl9fcGhvbmUtbnVtYmVyIHtcbiAgICAgICAgQGluY2x1ZGUgbGluayhcbiAgICAgICAgICAgICRjb2xvcjogJHRvcGJhcl9pdGVtLXBob25lX251bWJlci1jb2xvcixcbiAgICAgICAgICAgICRjb2xvci1ob3ZlcjogJHRvcGJhcl9pdGVtLXBob25lX251bWJlci1jb2xvclxuICAgICAgICApO1xuXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMC45cmVtO1xuICAgIH1cbn1cblxuLiN7JG5zfWNvbnRhaW5lciB7XG4gICAgJi0tdG9wLWJhciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb250YWluZXJfYmFja2dyb3VuZC10b3AtYmFyO1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxufVxuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3R5cG9ncmFwaHkvbWl4aW4nO1xuXG5oMSB7XG4gICAgQGluY2x1ZGUgaGVhZGxpbmUoJGxldmVsOiAkZm9udC1zaXplX2hlYWRsaW5lLTEpO1xufVxuXG5oMiB7XG4gICAgQGluY2x1ZGUgaGVhZGxpbmUoJGxldmVsOiAkZm9udC1zaXplX2hlYWRsaW5lLTIpO1xufVxuXG5oMyB7XG4gICAgQGluY2x1ZGUgaGVhZGxpbmUoJGxldmVsOiAkZm9udC1zaXplX2hlYWRsaW5lLTMpO1xufVxuXG5oNCB7XG4gICAgQGluY2x1ZGUgaGVhZGxpbmUoJGxldmVsOiAkZm9udC1zaXplX2hlYWRsaW5lLTQpO1xufVxuXG5oNSB7XG4gICAgQGluY2x1ZGUgaGVhZGxpbmUoJGxldmVsOiAkZm9udC1zaXplX2hlYWRsaW5lLTUpO1xufVxuXG5oNiB7XG4gICAgQGluY2x1ZGUgaGVhZGxpbmUoJGxldmVsOiAkZm9udC1zaXplX2hlYWRsaW5lLTYpO1xufVxuXG5hIHtcbiAgICBAaW5jbHVkZSBsaW5rKCk7XG59XG5cbnVsLFxub2wge1xuICAgIEBpbmNsdWRlIGxpc3QoKTtcblxuICAgID4gbGkge1xuICAgICAgICBAaW5jbHVkZSBsaXN0LWl0ZW0oKTtcbiAgICB9XG59XG4iLCJAaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcblxuJHZ0X2Rpc2FibGUtcG9pbnRlci1ldmVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi4jeyRuc31pbWFnZS10ZWFzZXIge1xuICAgICRyb290OiAmO1xuXG4gICAgJl9fc2xpZGUtLWhhcy12aWRlby10ZWFzZXIge1xuICAgICAgICAjeyRyb290fV9fcGljdHVyZSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaG93IHRleHQtY29udGVudCBhbmQgb3ZlcmxheXMgb3ZlciB0aGUgdmlkZW9cbiAgICAgICAgLy8gSWYgYWRkZWQgb24gY29udGVudC13cmFwcGVyIHdpbGwgcHJldmVudCBpbnRlcmFjdGlvbiB3aXRoIHZpZGVvXG4gICAgICAgICN7JHJvb3R9X19jb250ZW50LFxuICAgICAgICAjeyRyb290fV9fb3ZlcmxheSxcbiAgICAgICAgI3skcm9vdH1fX2dyYWRpZW50LFxuICAgICAgICAjeyRyb290fV9fb3B0aW1pemVyLWNvbnRhaW5lciB7XG4gICAgICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVuZGVyIHZpZGVvIHRlYXNlciBvdmVyIHRoZSBpbWFnZVxuICAgIFtkYXRhLXZpZGVvLXRlYXNlcl0ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgei1pbmRleDogMTtcblxuICAgICAgICAvLyBIaWRlIHZpZGVvIHBsYWNlaG9sZGVyIGlmIHZpZGVvIGlzIG5vdCByZW5kZXJlZFxuICAgICAgICAmOmVtcHR5IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB2aWRlbyBkb2VzIG5vdCBmaXQgaW1hZ2UgYXNwZWN0IHJhdGlvLCBpdCB3aWxsIGNlbnRlciBpdHNlbGYgaW4gdGhlIGNvbnRhaW5lclxuICAgIFtpZF49J3ZpZGVvLXRlYXNlciddIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cbiAgICAgICAgQGlmICR2dF9kaXNhYmxlLXBvaW50ZXItZXZlbnRzIHtcbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd1dGlscy92aXN1YWxseS1oaWRkZW4nO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcblxuLiN7JG5zfXZpc3VhbGx5LWhpZGRlbiB7XG4gICAgQGluY2x1ZGUgdmlzdWFsbHktaGlkZGVuO1xufVxuXG4ubGlua3MuY3MtaGVhZGVyX191c2VyLW5hdi5jcy1oZWFkZXItdXNlci1uYXYge1xuICAgIC5jcy1oZWFkZXItdXNlci1uYXZfX2xhYmVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi5jYXRhbG9nLXByb2R1Y3QtdmlldyB7XG4gICAgLmNvbHVtbi5tYWluIHtcbiAgICAgICAgcGFkZGluZzogMHJlbTtcbiAgICB9XG59XG5cbkBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAuY3MtY29udGFpbmVyLS1wYWdlLXBkcC1kZXRhaWxzLW5hdiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4vLyBoaWRlIHF0eSBpbmNyZW1lbnQgb24gcHJvZHVjdCBwYWdlXG4ucHJvZHVjdC1pbmZvLW1haW4uY3MtYnV5Ym94IHtcbiAgICAuY3MtYnV5Ym94X19zZWN0aW9uLS1wcm9kdWN0LWZvcm0ge1xuICAgICAgICAucHJvZHVjdC1vcHRpb25zLWJvdHRvbSB7XG4gICAgICAgICAgICAuY3MtYnV5Ym94X19xdHktd3JhcHBlciB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gbmVlZCB0byBtb3ZlIHRoaXMgdG8gYmV0dGVyIHBsYWNlXG4uY3MtcHJvZHVjdC1kZXRhaWxzIHtcbiAgICAvLyB6LWluZGV4OiAtMTtcbiAgICBtYXgtd2lkdGg6ICRwYWdlX21heC13aWR0aDtcbiAgICBtYXJnaW46IDAgYXV0bztcblxuICAgIHNlY3Rpb24uY3MtcHJvZHVjdC1kZXRhaWxzX19pdGVtLS1tYWluLFxuICAgIHNlY3Rpb24uY3MtcHJvZHVjdC1kZXRhaWxzX19pdGVtLS1yZXZpZXdzIHtcbiAgICAgICAgLy8gd2lkdGg6IDYwJTtcbiAgICAgICAgLy8gLmNzLWNvbnRhaW5lcl9faW5uZXJ7XG4gICAgICAgIC8vICAgICBtYXgtd2lkdGg6IGNhbGMoI3skcGFnZV9tYXgtd2lkdGh9ICogMC42KTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIC5jcy1wcm9kdWN0LWRldGFpbHNfX2l0ZW0tLW1haW4ge1xuICAgICAgICAuY3MtcHJvZHVjdC1kZXRhaWxzX19jb250ZW50IHtcbiAgICAgICAgICAgIC5jcy1wcm9kdWN0LWRldGFpbHMtbWFpbiB7XG4gICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jcy1wcm9kdWN0LWRldGFpbHNfX2l0ZW0tLXJldmlld3Mge1xuICAgICAgICAuY3MtcHJvZHVjdC1kZXRhaWxzX19jb250ZW50IHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgICAgIC5jcy1yZXZpZXdzLXN1bW1hcnkge1xuICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiB1bnNldDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IHVuc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBuZWVkIHRvIG1vdmUgdGhpcyB0byBiZXR0ZXIgcGxhY2Vcbi5jcy1wYWdlLWNhdGVnb3J5IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuXG4gICAgLmNhdGVnb3J5LWltYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAkcGFnZV9tYXgtd2lkdGg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICBsaW5lLWhlaWdodDogMHB4O1xuICAgIH1cbn1cblxuLy8gbmVlZCB0byBtb3ZlIHRoaXMgdG8gYmV0dGVyIHBsYWNlXG4jcHJvZHVjdC1hdHRyaWJ1dGUtc3BlY3MtdGFibGUge1xuICAgIHRyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiB1bnNldDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gbmVlZCB0byBtb3ZlIHRoaXMgdG8gYmV0dGVyIHBsYWNlXG4vLyBtYXggd2lkdGggb24gY21zIHBhZ2VzIG5lZWQgc29tZSB3b3JrXG4uY29sdW1ucyB7XG4gICAgLmNvbHVtbi5tYWluIHtcbiAgICAgICAgLy8gbWF4LXdpZHRoOiAkcGFnZV9tYXgtd2lkdGg7XG4gICAgICAgIC8vIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbn1cblxuLy8gbmVlZCB0byBtb3ZlIHRoaXMgdG8gYmV0dGVyIHBsYWNlXG4jZnVuZGFjamEtemRyb3d5LWJpdXN0IHtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAjZmZkOWRkO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY1ZjY7XG4gICAgcGFkZGluZzogMTBweDtcblxuICAgIGEge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIGNvbG9yOiAjZWM2ZWE1O1xuICAgIH1cbn1cblxuLy8gbmVlZCB0byBtb3ZlIHRoaXMgdG8gYmV0dGVyIHBsYWNlXG4ucHJvZHVjdC1hZGl0aW9uYWwtbW9kYWxzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICNwcm9kdWN0LXNpemUtbW9kYWwsXG4gICAgI3Byb2R1Y3QtZGVsaXZlcnktbW9kYWwge1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICAuY3VzdG9tLW1vZGFsLW9wZW4ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yX3RleHQtNjAwO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNwcm9kdWN0LWZvdW5kYXRpb24tbW9kYWwge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG59XG5cbi5jaGVja291dC1pbmRleC1pbmRleCB7XG4gICAgLmNzLXByb2dyZXNzLWJhcl9faXRlbS5fYWN0aXZlIHtcbiAgICAgICAgLmNzLXByb2dyZXNzLWJhcl9faW5kaWNhdG9yOmJlZm9yZSB7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIGV1IGRlbGl2ZXJ5XG5cbi5ldS1kZWxpdmVyeS13cmFwcGVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmMwO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkICNmYzA7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIHdpZHRoOiBmaXQtY29udGVudDtcbn1cblxuLmV1LWRlbGl2ZXJ5LXdyYXBwZXIgLmV1LWRlbGl2ZXJ5LXRleHQge1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZXUtZGVsaXZlcnktd3JhcHBlcjpob3ZlciB7XG4gICAgY29sb3I6IGluaXRpYWw7XG59XG5cbi5ldS1kZWxpdmVyeS13cmFwcGVyOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6ICNmM2MyMDI7XG59XG5cbi5ldS1kZWxpdmVyeS13cmFwcGVyIGltZyB7XG4gICAgd2lkdGg6IDUwcHg7XG59XG5cbi8vIDIxLjAzLjIwMjUgdHJ1c3RlZCBzaG9wcyBzdGFycyBvbiBwcm9kdWN0IGxpc3Rcbi5jcy1wcm9kdWN0LXRpbGVfX21haW4ucHJvZHVjdC1pdGVtLWRldGFpbHM+LmNzLXByb2R1Y3QtdGlsZV9fY29sZWN0aW9uLXNrdS13cmFwcGVyIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uY3MtcHJvZHVjdC10aWxlX19tYWluLnByb2R1Y3QtaXRlbS1kZXRhaWxzPi5jcy1wcm9kdWN0LXRpbGVfX2NvbGVjdGlvbi1za3Utd3JhcHBlcj4uY3MtcHJvZHVjdC10aWxlX19jb2xsZWN0aW9uIHtcbiAgICBsaW5lLWhlaWdodDogMjFweDtcbn1cblxuLmNzLXByb2R1Y3QtdGlsZV9fbWFpbi5wcm9kdWN0LWl0ZW0tZGV0YWlscz4uY3MtcHJvZHVjdC10aWxlX19jb2xlY3Rpb24tc2t1LXdyYXBwZXI+LmNzLXByb2R1Y3QtdGlsZV9fc2t1IHtcbiAgICBsaW5lLWhlaWdodDogMjFweDtcbn1cblxuLy8gTyBmaXJtaWUgXG4uY21zLWZpcm1hLWNvcmluIHtcbiAgICBwIHtcbiAgICAgICAgbWFyZ2luOiAycmVtO1xuICAgIH1cbn1cblxuLy8gUmVqZXN0cmFjamEgXG4uY3MtZGFzaGJvYXJkIC5mb3JtLmNyZWF0ZS5hY2NvdW50IC5jaG9pY2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgLmZpZWxkLXRvb2x0aXAtY29udGVudCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgfVxufVxuXG5cbi5mb3JtIC5maWVsZCsuZmllbGQge1xuICAgIGJ1dHRvbiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgfVxufVxuXG5cbi8vIEZpbmFsaXphY2phXG4uY3MtY2hlY2tvdXRfX3NpZGViYXIgLnRhYmxlLWNhcHRpb24ge1xuICAgIG1hcmdpbi10b3A6IDJyZW07XG59XG5cblxuLnByb2R1Y3QtaW5mby1tYWluIC5jcy1idXlib3hfX3NlY3Rpb24uY3MtYnV5Ym94X19zZWN0aW9uLS1wcm9kdWN0LWZvcm0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xuXG4gICAgLy8gIHRoaXMgZm9ybSBzaG93cyB1cCB3aGVuIHZhbGlkYXRpb24gZmFpbHNcbiAgICAjcHJvZHVjdF9hZGR0b2NhcnRfZm9ybSB7XG4gICAgICAgIG9yZGVyOiAxO1xuICAgIH1cblxuICAgIC5jcy1pbmRpY2F0b3ItZmFzdC1zaGlwcGluZyB7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB9XG5cbiAgICAucHJvZHVjdC1pbmZvLWZvcm0tYWZ0ZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbjogMCAwIDFyZW07XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcblxuICAgICAgICAjcHJvZHVjdC1kZWxpdmVyeS1tb2RhbCB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgICAgIC5jdXN0b20tbW9kYWwtb3BlbiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMzN2I4NDE7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA2cHg7XG4gICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuXG4gICAgICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5zdG9jay5jcy1idXlib3hfX3N0b2NrIHtcbiAgICAgICAgICAgIG1hcmdpbjogMHB4O1xuXG4gICAgICAgICAgICAuY3MtYnV5Ym94X19zdG9jay1pY29uLmNzLWJ1eWJveF9fc3RvY2staWNvbi0tYXZhaWxhYmxlIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMi40ZW07XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyLjRlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnByb2R1Y3QtaW5mby1tYWluIC5wcm9kdWN0LWFkaXRpb25hbC1tb2RhbHMge1xuICAgICNwcm9kdWN0LWdwc3ItbW9kYWwge1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICAuY3VzdG9tLW1vZGFsLW9wZW4ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgICAgICBjb2xvcjogIzQ4NDg0ODtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIG1lZGlhKCc8PXRhYmxldCcpIHtcbiAgICAucHJvZHVjdC1pbmZvLW1haW4gLnByb2R1Y3QtYWRpdGlvbmFsLW1vZGFscyB7XG4gICAgICAgICNwcm9kdWN0LXNpemUtbW9kYWwge1xuICAgICAgICAgICAgLmN1c3RvbS1tb2RhbC1vcGVuIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAjcHJvZHVjdC1ncHNyLW1vZGFsIHtcbiAgICAgICAgICAgIC5jdXN0b20tbW9kYWwtb3BlbiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4uY3MtcGFnZS1wcm9kdWN0X19idXlib3ggLnByb2R1Y3QtaW5mby1tYWluLmNzLWJ1eWJveCB7XG4gICAgd2lkdGg6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7XG59XG5cbi8vICNtb2RhbC1ncHNyIC5jb250ZW50IC5ncHNyLndyYXBwZXIge1xuLy8gfVxuXG4ucHJvZHVjdC1pbmZvLXNrbGFkLWtvbnNlcndhY2phIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cbiAgICAucHJvZHVjdC1pbmZvLXNrbGFkIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICB9XG5cbiAgICAucHJvZHVjdC1pbmZvLWtvbnNlcndhY2phIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcblxuICAgICAgICAua29uc2Vyd2FjamEud3JhcHBlciB7XG4gICAgICAgICAgICByb3ctZ2FwOiAwLjVyZW07XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5rb25zZXJ3YWNqYS1pdGVtIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiAxNXB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBtZWRpYSgnPD10YWJsZXQnKSB7XG4gICAgLnByb2R1Y3QtaW5mby1za2xhZC1rb25zZXJ3YWNqYSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgLnByb2R1Y3QtaW5mby1za2xhZCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9kdWN0LWluZm8ta29uc2Vyd2FjamEge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jcy1wcm9kdWN0LWRldGFpbHMtbWFpbl9faXRlbS0tZGVzY3JpcHRpb24gLmNzLXByb2R1Y3QtZGV0YWlscy1tYWluX19jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAucHJvZHVjdC5hdHRyaWJ1dGUuZGVzY3JpcHRpb24ge1xuICAgICAgICBvcmRlcjogMTtcbiAgICB9XG5cbiAgICAucHJvZHVjdC1pbmZvLXNrbGFkLWtvbnNlcndhY2phIHtcbiAgICAgICAgb3JkZXI6IDI7XG4gICAgfVxuXG4gICAgLnByb2R1Y3QtaW5mby10cnVzdGVkLXJldmlld3Mtc2VjdGlvbiB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBtYXJnaW4tdG9wOiAycmVtO1xuICAgIH1cbn1cblxuLy8gaG9tZSBzdHlsZXMgbmV3IHNlY3Rpb24gMzAuMTAuMjAyNVxuLnNlY3Rpb24td3JhcHBlci5zZWN0aW9uLTYucm93LmhvbWUtc2VjdGlvbi02IHtcbiAgICAuc2VjdGlvbi1jYXB0aW9uIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5zbGlkZXItaXRlbXMtd3JhcGVyIHtcbiAgICAgICAgLmJsb2NrIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gICAgICAgIH1cbiAgICB9XG59IiwiLmZvdG9yYW1hX19zdGFnZV9fZnJhbWUuZm90b3JhbWEtdmlkZW8tY29udGFpbmVye1xuICAgIC5wcm9kdWN0LXZpZGVve1xuICAgICAgICBhc3BlY3QtcmF0aW86IDMvNC41O1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAueXRwLWdyYWRpZW50LXRvcHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59IiwiQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcbkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuXG4uYmxvZy1wYWdlLFxuLmJsb2ctcG9zdC12aWV3e1xuICAgIC8vIGJsb2cgbGF5b3V0cyBtYXggd2lkdGhcbiAgICAjbWFpbmNvbnRlbnR7XG4gICAgICAgIG1heC13aWR0aDogMTE0MHB4O1xuICAgIH1cbiAgICAuY29sdW1uLm1haW57XG4gICAgICAgIHBhZGRpbmc6IDJyZW0gMCAwO1xuICAgIH1cbiAgICAvLyBwYWdlIHRpdGxlXG4gICAgLnBhZ2UtdGl0bGUtd3JhcHBlcntcbiAgICAgICAgLnBhZ2UtdGl0bGV7XG4gICAgICAgICAgICBmb250LWZhbWlseTogbGlub3R5cGUtZGlkb3QtaGVhZGxpbmUsIHNlcmlmO1xuICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgZm9udC1zaXplOiAzLjJyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIG1hcmdpbjogOHJlbSAwIDFyZW07XG4gICAgICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPD10YWJsZXQnKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAycmVtIDAgMXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBicmVhZGNydW1ic1xuICAgIC5jcy1icmVhZGNydW1ic3tcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRyZW07XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8PXRhYmxldCcpIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gY2F0ZWdvcmllc1xuICAgIC53aWRnZXQuYmxvY2suYmxvY2stY2F0ZWdvcmllc3tcbiAgICAgICAgLmJsb2NrLXRpdGxle1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICAuYWNjb3JkaW9ue1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbG9yX2JvcmRlci0yMDA7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cmVtO1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzw9dGFibGV0Jykge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5pdGVte1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDAuNXJlbTtcbiAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBhe1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yX3RleHQtNjAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhOmhvdmVye1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yX3RleHQtNjAwO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuaXRlbTo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICBib3R0b206IDEwcHg7XG4gICAgICAgICAgICAgICAgbGVmdDogMC43ZW07XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDAuN2VtO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcl9wcmltYXJ5LTUwMDtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gcmlnaHQ7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzIGVhc2Utb3V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLml0ZW06aG92ZXI6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gbGVmdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBncmlkIHRpbGVzXG4gICAgZGl2LnBvc3QtbGlzdC13cmFwcGVye1xuICAgICAgICAucG9zdC1saXN0LWl0ZW0uY29sLW1kLTEyOmZpcnN0LWNoaWxke1xuICAgICAgICAgICAgLnBvc3QtY29udGVudHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIC5wb3N0LWZ0aW1nLWhsZHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiA2NiU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLnBvc3QtZGVzY3JpcHRpb257XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMzMlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTBweCAxNXB4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5wb3N0LWxpc3QtaXRlbXtcbiAgICAgICAgICAgIC5wb3N0LWhvbGRlcntcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDQwcHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGgyLnBvc3QtdGl0bGV7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICBmb250LXNpemU6IDIuOHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgYXtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yX3RleHQtODAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHRhZ3NcbiAgICAuYmxvY2stdGFnY2xhdWR7XG4gICAgICAgIC5ibG9jay10aXRsZXtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgLnRhZ2NsYXVkLWhsZHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgICAgICBtYXJnaW46IDJyZW07XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBzcGFue1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvcl9jb3Jpbl9saWdodDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBwb3N0IGNvbWVudHNcbiAgICAjcG9zdC1jb21tZW50c3tcbiAgICAgICAgLmMtcmVwbHlmb3Jte1xuICAgICAgICAgICAgdGV4dGFyZWF7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogMTUwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ZXh0YXJlYSxcbiAgICAgICAgICAgIGlucHV0e1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvcl9ib3JkZXItNTAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnV0dG9ue1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcl9wcmltYXJ5LTUwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIHRvb2xiYXIgc3R5bGVzXG4udG9vbGJhci50b29sYmFyLWJsb2ctcG9zdHN7XG4gICAgLmNzLXBhZ2luYXRpb25fX2NvbnRlbnR7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtYXJnaW46IDFyZW0gMDtcbiAgICAgICAgLnBhZ2VzLWxhYmVse1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgICAgIC5wYWdlcy1pdGVtLXByZXZpb3VzLFxuICAgICAgICAucGFnZXMtaXRlbS1uZXh0e1xuICAgICAgICAgICAgbWFyZ2luOiAwIDFyZW07XG4gICAgICAgIH1cbiAgICAgICAgc3Zne1xuICAgICAgICAgICAgaGVpZ2h0OiAxNXB4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5pdGVtcy5wYWdlcy1pdGVtc3tcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgLml0ZW17XG4gICAgICAgICAgICBtYXJnaW46IDAgMXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn0iLCJAaW1wb3J0ICd2ZW5kb3JzL2luY2x1ZGUtbWVkaWEnO1xuQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5cbi5jdXN0b20tbW9kYWwtb3BlbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcGluaztcbiAgICBwYWRkaW5nOiAxcmVtO1xuICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZm9udC1zaXplOiAxLjdyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBAaW5jbHVkZSBtZWRpYSgnPD10YWJsZXQnKSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW07XG4gICAgfVxuXG4gICAgLnByZXNlbnQge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG4gICAgICAgIGFuaW1hdGlvbjogdGlsdC1zaGFraW5nIDFzO1xuICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHRpbHQtc2hha2luZyB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDhkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMjAlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMzAlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC04ZGVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDQwJSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5yb3ptaWFyLFxuICAgIC5kb3N0YXdhIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICAgIH1cbn1cblxuLmN1c3RvbS1tb2RhbCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB6LWluZGV4OiAtMTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIGhlaWdodDogMHB4O1xuICAgIHdpZHRoOiAwcHg7XG5cbiAgICAuY29udGVudCB7XG4gICAgICAgIHotaW5kZXg6IC0xO1xuICAgIH1cblxuICAgIC5jdXN0b20tbW9kYWwtY2xvc2Uge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgbWFyZ2luOiAxcmVtO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBmb250LXNpemU6IDEuN3JlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbWFyZ2luOiAxcmVtIGF1dG87XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG59XG5cbi5jdXN0b20tbW9kYWwub3BlbiB7XG4gICAgei1pbmRleDogOTk3O1xuICAgIG9wYWNpdHk6IDE7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAxMDB2dztcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIC5jb250ZW50IHtcbiAgICAgICAgcGFkZGluZzogMnJlbTtcbiAgICAgICAgei1pbmRleDogOTk5O1xuICAgICAgICBtYXgtd2lkdGg6IDk1dnc7XG4gICAgICAgIG1heC1oZWlnaHQ6IDk1dmg7XG4gICAgICAgIG1pbi13aWR0aDogMzAwcHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMwMHB4O1xuICAgICAgICBvdmVyZmxvdzogc2Nyb2xsO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIHdpZHRoOiA4MDBweDtcbiAgICAgICAgaGVpZ2h0OiBmaXQtY29udGVudDtcbiAgICAgICAgLy8gQGluY2x1ZGUgbWVkaWEoJzx0YWJsZXQnKSB7XG4gICAgICAgIC8vICAgICB3aWR0aDogOTUlO1xuICAgICAgICAvLyB9XG4gICAgfVxuXG4gICAgLm92ZXJsYXkge1xuICAgICAgICB6LWluZGV4OiA5OTg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDBiMztcbiAgICB9XG59XG5cbiNtb2RhbC1yb3ptaWFyb3drYSB7XG4gICAgLnRhYmxlLXJlc3BvbnNpdmUtcyB7XG4gICAgICAgIG92ZXJmbG93OiBzY3JvbGw7XG5cbiAgICAgICAgLnRhYmxlIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMjAwcHg7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zdGlja3kge1xuICAgICAgICAgICAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5O1xuICAgICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuI21vZGFsLWRvc3Rhd2Ege1xuICAgIC50YWJsZSB7XG4gICAgICAgIHdpZHRoOiAxMjAwcHg7XG4gICAgICAgIG1heC13aWR0aDogMTIwMHB4O1xuICAgIH1cbn0iLCJAaW1wb3J0ICd2ZW5kb3JzL2luY2x1ZGUtbWVkaWEnO1xuQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5cbi5jcy1oZWFkZXJfX3NlYXJjaC5jcy1oZWFkZXJfX3NlYXJjaC0tYWN0aXZlIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgaGVpZ2h0OiAxMDB2aDtcblxuICAgIC5jcy1oZWFkZXItc2VhcmNoIHtcbiAgICAgICAgcG9zaXRpb246IGJsb2NrO1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIG1heC13aWR0aDogMTgwcmVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAycmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgI3NlYXJjaF9hdXRvY29tcGxldGUge1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgICAgICAvLyBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDYwcHgpO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJveC1zaGFkb3c6IHVuc2V0O1xuICAgICAgICBvdmVyZmxvdzogc2Nyb2xsO1xuICAgICAgICBtaW4td2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogMTgwcmVtO1xuICAgICAgICBtYXgtaGVpZ2h0OiB1bnNldDtcblxuICAgICAgICBkbCB7XG4gICAgICAgICAgICBib3JkZXItdG9wOiB1bnNldDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRkIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IHVuc2V0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNzLWhlYWRlci1zZWFyY2hfX2ZpZWxkIHtcbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNzLWhlYWRlci1zZWFyY2hfX2lucHV0IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICAgICAgICAgICAgcGFkZGluZzogMC43NXJlbSAxcmVtO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM4ODg4ODg7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDMuNXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jcy1oZWFkZXItc2VhcmNoX19hY3Rpb24ge1xuICAgICAgICAgICAgLmNzLWhlYWRlci1zZWFyY2hfX2J1dHRvbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNzLWhlYWRlci1zZWFyY2hfX2Nsb3NlIHtcbiAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogNHJlbTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA0cmVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zbWlsZS1lbGFzdGljc3VpdGUtYXV0b2NvbXBsZXRlLXJlc3VsdCB7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAzZnI7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCgzLCAxZnIpO1xuICAgICAgICAgICAgZ3JpZC1jb2x1bW4tZ2FwOiAwcHg7XG4gICAgICAgICAgICBncmlkLXJvdy1nYXA6IDBweDtcbiAgICAgICAgICAgIGhlaWdodDogaW5oZXJpdDtcblxuICAgICAgICAgICAgLnRlcm0ge1xuICAgICAgICAgICAgICAgIGdyaWQtYXJlYTogMSAvIDEgLyAyIC8gMjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnByb2R1Y3Qge1xuICAgICAgICAgICAgICAgIGdyaWQtYXJlYTogMSAvIDIgLyA0IC8gMztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnByb2R1Y3RfYXR0cmlidXRlIHtcbiAgICAgICAgICAgICAgICBncmlkLWFyZWE6IDIgLyAxIC8gMyAvIDI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jYXRlZ29yeSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1hcmVhOiAzIC8gMSAvIDQgLyAyO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY2F0ZWdvcnkge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDNyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuYXV0b2NvbXBsZXRlLWxpc3QucHJvZHVjdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgICAgICAuYXV0b2NvbXBsZXRlLWxpc3QtdGl0bGUge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucHJvZHVjdC1pdGVtIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjUlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAucHJvZHVjdC1pbWFnZS1ib3gge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwcHg7XG5cbiAgICAgICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogMzAwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiA0MDBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLmNzLWF1dG9jb21wbGV0ZV9faXRlbS1kZXRhaWxzIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIGZsZXg6IHVuc2V0O1xuICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcblxuICAgICAgICAgICAgICAgICAgICAuY3MtYXV0b2NvbXBsZXRlX19pdGVtLW5hbWUge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICMzMzMzMzM7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufSIsIkBpbXBvcnQgJ3ZlbmRvcnMvaW5jbHVkZS1tZWRpYSc7XG5AaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcblxuLmNtcy1ob21lIHtcbiAgICAucGFnZS10aXRsZSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Q1ODY4ZTtcblxuICAgICAgICBoMSB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogbGlub3R5cGUtZGlkb3QtaGVhZGxpbmUsIHNlcmlmO1xuICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgZm9udC1zaXplOiA0cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDJyZW07XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdW5zZXQ7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8bGFwdG9wJykge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogM3JlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzx0YWJsZXQnKSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAyLjVyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBibG9jayBiYWNrZ3JvdW5kc1xuICAgIC5jb2x1bW4ubWFpbiB7XG5cbiAgICAgICAgLmNzLWNvbnRhaW5lci5jcy1jb250YWluZXItLXN0YXRpYy1ibG9jazpudGgtY2hpbGQoMykge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZFRjVGQjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDA0LjAzLjIwMjYgcmVkaW5nb1xuICAgICAgICAuY3MtY29udGFpbmVyLmNzLWNvbnRhaW5lci0tc3RhdGljLWJsb2NrOm50aC1jaGlsZCg3KSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkVGNUZCO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2VjdGlvbnMgbWFyZ2luc1xuICAgICAgICAuc2VjdGlvbi13cmFwcGVyLnNlY3Rpb24tMSB7XG4gICAgICAgICAgICBtYXJnaW46IDNyZW0gMCAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLnNlY3Rpb24td3JhcHBlci5zZWN0aW9uLTcsXG4gICAgICAgIC5zZWN0aW9uLXdyYXBwZXIuc2VjdGlvbi0zLFxuICAgICAgICAuc2VjdGlvbi13cmFwcGVyLnNlY3Rpb24tNCxcbiAgICAgICAgLnNlY3Rpb24td3JhcHBlci5zZWN0aW9uLTUsXG4gICAgICAgIC5zZWN0aW9uLXdyYXBwZXIuc2VjdGlvbi02IHtcbiAgICAgICAgICAgIG1hcmdpbjogNHJlbSBhdXRvICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8PXRhYmxldCcpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDJyZW0gYXV0byAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnNlY3Rpb24td3JhcHBlciB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2xpY2stdHJhY2sge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cblxuICAgIC8vIGZpcnN0IHNlY3Rpb25cbiAgICAuc2VjdGlvbi13cmFwcGVyLnNlY3Rpb24tMSB7XG4gICAgICAgIC5jb2wtbWQtNiB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jb250ZW50IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAycmVtO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMnJlbTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwNjY7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAzNTVweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgICAgIGgyIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDFyZW0gMDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAzcmVtO1xuICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogbGlub3R5cGUtZGlkb3QtaGVhZGxpbmUsIHNlcmlmO1xuICAgICAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogM3JlbSAzcmVtO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDNyZW07XG4gICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogMzc1cHg7XG5cbiAgICAgICAgICAgICAgICAgICAgaDIge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAzcmVtO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuN3JlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PWxhcHRvcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNHJlbSA3cmVtO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDRyZW07XG4gICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogNTA1cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNvbC1tZC02LmNvbC1tZC02Omxhc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgIC5jb2wtbWQtNi5jb2wtbWQtNjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogNXB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuY29sLW1kLTYuY29sLW1kLTY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA1cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2Vjb25kIHNlY3Rpb25cbiAgICAuc2VjdGlvbi13cmFwcGVyLnNlY3Rpb24tMiB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAzcmVtO1xuXG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBwYWRkaW5nOiAycmVtO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogM3JlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaDIge1xuICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjhyZW07XG4gICAgICAgICAgICAgICAgY29sb3I6ICM3QTJCNzc7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IGxpbm90eXBlLWRpZG90LWhlYWRsaW5lLCBzZXJpZjtcbiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDBweDtcblxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAzcmVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5zbGljay1saXN0LmRyYWdnYWJsZSB7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3QtaXRlbS1kZXRhaWxzIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3QtaXRlbS1pbmZvIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9kdWN0LWl0ZW0tbmFtZSB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDI0MHB4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICM3QTJCNzc7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuOHJlbTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnByaWNlLXdyYXBwZXIge1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICM3QTJCNzc7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLy8gdGhpcmQgc2VjdGlvblxuICAgIC5zZWN0aW9uLXdyYXBwZXIuc2VjdGlvbi0zIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgLmNvbnRhaW5lciB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICAgICB2aWRlbyB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmltZy13cmFwcHBlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzw9dGFibGV0Jykge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5yb3cge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcblxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbiAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGgzIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzQ4NDg0ODtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDNyZW07XG4gICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogbGlub3R5cGUtZGlkb3QtaGVhZGxpbmUsIHNlcmlmO1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICM0ODQ4NDg7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdW5zZXQ7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDFyZW07XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAxcmVtIDAgMXJlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjNDg0ODQ4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gNHJlbTtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjNDg0ODQ4O1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG5cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPD10YWJsZXQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZm91cnRoIHNlY3Rpb25cbiAgICAuc2VjdGlvbi13cmFwcGVyLnNlY3Rpb24tNCB7XG5cbiAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDNyZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGgyIHtcbiAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjNTc1NjVBO1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBsaW5vdHlwZS1kaWRvdC1oZWFkbGluZSwgc2VyaWY7XG4gICAgICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwcHg7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAycmVtO1xuXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDNyZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnBvcHVsYXItY2F0ZWdvcmllcy13cmFwZXIge1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgICAgICAuYmxvY2sge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxcmVtO1xuXG4gICAgICAgICAgICAgICAgaDMge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzU3NTY1QTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjdyZW07XG5cbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZmlmdGggc2VjdGlvblxuICAgIC5zZWN0aW9uLXdyYXBwZXIuc2VjdGlvbi01IHtcbiAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgICAgICBoMiB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNjMDkxOTc7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAzcmVtO1xuICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IGxpbm90eXBlLWRpZG90LWhlYWRsaW5lLCBzZXJpZjtcbiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNjMDkxOTc7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuc3RhcnMge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAycmVtIDA7XG5cbiAgICAgICAgICAgICAgICAuc3Rhcjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogdXJsKCcuLi9pbWFnZXMvaWNvbnMvc3Rhci5zdmcnKTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcblxuICAgICAgICAgICAgLmxlZnQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyMCU7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuXG4gICAgICAgICAgICAgICAgLnRvcCB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDMwcHg7XG5cbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzw9MTI1MHB4Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMHB4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLmJvdHRvbSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAzMHB4O1xuXG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8PTEyNTBweCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jZW50ZXIge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA2MCU7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMnJlbTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAycmVtO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjJjYWQ0O1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuYXJyb3c6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHVybCgnLi4vaW1hZ2VzL2ljb25zL3dyaXR0ZW4tYXJyb3cuc3ZnJyk7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyNTBweDtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5hcnJvdy10b3AtbGVmdDo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiA1MHB4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5hcnJvdy10b3AtcmlnaHQ6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDUwcHg7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuYXJyb3ctYm90dG9tLXJpZ2h0OjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICByaWdodDogMjVweDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIzMHB4O1xuICAgICAgICAgICAgICAgICAgICBib3R0b206IDEwMHB4O1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxNzJkZWcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5hcnJvdy1ib3R0b20tbGVmdDo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiA5MHB4O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjcwcHg7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC0xKSByb3RhdGUoMTc1ZGVnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPD0xNzAwcHgnKSB7XG4gICAgICAgICAgICAgICAgICAgIC5hcnJvdzo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyMjBweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8PTE1MDBweCcpIHtcbiAgICAgICAgICAgICAgICAgICAgLmFycm93OjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIwMHB4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzw9MTM1MHB4Jykge1xuICAgICAgICAgICAgICAgICAgICAuYXJyb3c6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTgwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPD0xMjUwcHgnKSB7XG4gICAgICAgICAgICAgICAgICAgIC5hcnJvdzo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5yaWdodCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDIwJTtcblxuICAgICAgICAgICAgICAgIC50b3Age1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMzBweDtcblxuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPD0xMjUwcHgnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5sZWZ0LFxuICAgICAgICAgICAgLnJpZ2h0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE1MHB4O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE1MHB4O1xuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDRweCBzb2xpZCAjYzA5MTk3O1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjYzA5MTk3O1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuN3JlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBzaXh0aCBzZWN0aW9uXG4gICAgLnNlY3Rpb24td3JhcHBlci5zZWN0aW9uLTYge1xuXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgLmltYWdlIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPD10YWJsZXQnKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9kdWN0cyB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8PXRhYmxldCcpIHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3RzPmgzIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICBjb2xvcjogIzQ4NDg0ODtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBsaW5vdHlwZS1kaWRvdC1oZWFkbGluZSwgc2VyaWY7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAzcmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3RzPnAge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjdyZW07XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzcmVtO1xuICAgICAgICAgICAgY29sb3I6ICM0ODQ4NDg7XG4gICAgICAgIH1cblxuICAgICAgICAuYmxvY2stcHJvZHVjdHMtbGlzdCB7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgICAgICAucHJvZHVjdC1pdGVtIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICAgICAgICAgIC5wcm9kdWN0LWl0ZW0taW5mbyB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8PXRhYmxldCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5wcm9kdWN0LWl0ZW0tZGV0YWlscyB7XG4gICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogMjQwcHg7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXG4gICAgICAgICAgICAgICAgICAgIC5wcm9kdWN0LWl0ZW0tbmFtZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzQ4NDg0ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS44cmVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAucHJpY2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICM0ODQ4NDg7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2l4dGggc2VjdGlvblxuICAgIC5zZWN0aW9uLXdyYXBwZXIuc2VjdGlvbi03IHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAgIC5pdGVtIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogNzUwcHg7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCc8PXRhYmxldCcpIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jb250ZW50IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzw9dGFibGV0Jykge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5oZWFkbGluZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogM3JlbTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzQ4NDg0ODtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IGxpbm90eXBlLWRpZG90LWhlYWRsaW5lLCBzZXJpZjtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5zdWItaGVhZGxpbmUge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzQ4NDg0ODtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVuc2V0O1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICM0ODQ4NDg7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gNHJlbTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzQ4NDg0ODtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcblxuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPD10YWJsZXQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5pdGVtOm50aC1jaGlsZCgxKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYSgnPD10YWJsZXQnKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zZWN0aW9uLXdyYXBwZXIuc2VjdGlvbi1uZXdzbGV0dGVyLnJvdyB7XG4gICAgICAgIC5uZXdzbGV0dGVyLXdyYXBwZXIge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDExNzBweDtcbiAgICAgICAgICAgIG1hcmdpbjogMnJlbSBhdXRvO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMHB4O1xuXG4gICAgICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDU0cHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDQ1cHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDU0cHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubmV3c2xldHRlci10aXRsZSB7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IGxpbm90eXBlLWRpZG90LWhlYWRsaW5lLCBzZXJpZjtcbiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiA0cmVtO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubmV3c2xldHRlci1zdWJ0aXRsZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAyM3B4O1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jdGEge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA3cHggMjdweDtcbiAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4O1xuICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2YxYjZkMztcbiAgICAgICAgICAgICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMjhweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm5ld3NsZXR0ZXItaW1nIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiA5cHg7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDYxcHg7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDI1N3B4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAgICAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNvbnRlbnQtd3JhcHBlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YxYjZkMztcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxMXB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTZweDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IGxhcmdlO1xuXG4gICAgICAgICAgICAgICAgLmNvbnRlbnQtbGlzdCB7XG4gICAgICAgICAgICAgICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA3MCU7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAyNzhweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTJweDtcbiAgICAgICAgICAgICAgICAgICAgZ2FwOiAzcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufSIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuXG4ubm9ybWFsLXByaWNlLmV4dHJhIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMXJlbSAwO1xuXG4gICAgLm5vcm1hbC1wcmljZS10ZXh0IHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbTtcbiAgICAgICAgY29sb3I6ICRjb2xvcl90aHVuZGVyYmlyZCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5wcmljZSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3JfdGh1bmRlcmJpcmQgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi5vbGQtcHJpY2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBib3JkZXItdG9wOiBzb2xpZCAxcHggJGNvbG9yX2FsdG87XG4gICAgcGFkZGluZy10b3A6IDFyZW07XG5cbiAgICAub2xkLXByaWNlLXRleHQge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xuICAgIH1cblxuICAgIC5wcmljZSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3JfZG92ZS1ncmF5ICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2ggIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi5jYXRhbG9nLWNhdGVnb3J5LXZpZXcsIC5icmFuZHMtaW5kZXgtaW5kZXgge1xuICAgIC5jcy1wcm9kdWN0LXRpbGVfX3ByaWNlIC5wcmljZS1ib3gge1xuICAgICAgICAvLyBQcnplbWVrXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50O1xuXG4gICAgICAgIC5vbW5pYnVzLXByaWNlIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3JfZG92ZS1ncmF5O1xuICAgICAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiB1bnNldDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm9tbmlidXMtcHJpY2Uge1xuICAgIGNvbG9yOiAkY29sb3JfZG92ZS1ncmF5O1xuICAgIG9yZGVyOiAtMTtcbiAgICAvLyBvbW5pYnVzIHByaWNlIHdhcyBkaXNhYmxlZCAxMy4wMy4yMDIzXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZy1ib3R0b206IDFyZW07XG4gICAgYm9yZGVyLWJvdHRvbTogc29saWQgMXB4ICRjb2xvcl9hbHRvO1xufVxuXG4uY3MtcHJvZHVjdC10aWxlX19jb250ZW50LFxuLmNzLWF1dG9jb21wbGV0ZV9faXRlbSxcbi5zbGljay1zbGlkZXIge1xuICAgIC5vbW5pYnVzLXByaWNlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi5jcy1wcm9kdWN0LXRpbGVfX2NvbnRlbnQsXG4uY3MtYXV0b2NvbXBsZXRlX19pdGVtLFxuLnNsaWNrLXNsaWRlciB7XG4gICAgLm9sZC1wcmljZSB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG5cbiAgICAgICAgLm9sZC1wcmljZS10ZXh0IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jcy1wcm9kdWN0LXRpbGVfX2NvbnRlbnQsXG4uY3MtYXV0b2NvbXBsZXRlX19pdGVtLFxuLnNsaWNrLXNsaWRlciB7XG4gICAgLm5vcm1hbC1wcmljZSB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG5cbiAgICAgICAgLm5vcm1hbC1wcmljZS10ZXh0IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jcy1wcm9kdWN0LXRpbGVfX2NvbnRlbnQsXG4uY3MtYXV0b2NvbXBsZXRlX19pdGVtLFxuLnNsaWNrLXNsaWRlciB7XG4gICAgLm5vcm1hbC1wcmljZS5leHRyYSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxufSIsIi5tcC1yZXdhcmQtY2FydCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5tcC1yZXdhcmQtcG9pbnRzLm1wLXByb2R1Y3Qge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uY29sIHtcbiAgd2lkdGg6IGF1dG87XG59XG5cbi5hY2NvdW50LmN1c3RvbWVyLXJlZmVycmFsLWluZGV4ICNtYWluY29udGVudCxcbi5hY2NvdW50LmN1c3RvbWVyLXJld2FyZHMtaW5kZXggI21haW5jb250ZW50LFxuLmFjY291bnQuY3VzdG9tZXItcmV3YXJkcy10cmFuc2FjdGlvbiAjbWFpbmNvbnRlbnQge1xuXG4gIG1heC13aWR0aDogMTI4MHB4O1xuXG59XG5cbiNtYWluY29udGVudCAuYmxvY2suYmxvY2stY29sbGFwc2libGUtbmF2LFxuLmFjY291bnQuY3VzdG9tZXItcmV3YXJkcy10cmFuc2FjdGlvbiAjbWFpbmNvbnRlbnQgLmJsb2NrLmJsb2NrLWNvbGxhcHNpYmxlLW5hdixcbi5ibG9jay5ibG9jay1jb2xsYXBzaWJsZS1uYXYgLmFjY291bnQuY3VzdG9tZXItcmVmZXJyYWwtaW5kZXggI21haW5jb250ZW50IC5ibG9jay5ibG9jay1jb2xsYXBzaWJsZS1uYXYge1xuXG4gIG1hcmdpbi10b3A6IDRyZW07XG5cbiAgcGFkZGluZy1yaWdodDogMDtcblxufVxuXG4uYWNjb3VudC5jdXN0b21lci1yZWZlcnJhbC1pbmRleCAjbWFpbmNvbnRlbnQgLmJsb2NrLmJsb2NrLWNvbGxhcHNpYmxlLW5hdixcbi5hY2NvdW50LmN1c3RvbWVyLXJld2FyZHMtaW5kZXggI21haW5jb250ZW50IC5ibG9jay5ibG9jay1jb2xsYXBzaWJsZS1uYXYsXG4uYWNjb3VudC5jdXN0b21lci1yZXdhcmRzLXRyYW5zYWN0aW9uICNtYWluY29udGVudCAuYmxvY2suYmxvY2stY29sbGFwc2libGUtbmF2IHtcblxuICB3aWR0aDogY2FsYygxMDAlIC8gNCk7XG4gIGJveC1zaGFkb3c6IDFweCAzcHggM3JlbSAwIHJnYmEoMzMsIDMzLCAzMywgMC4yOCk7XG4gIGZsb2F0OiBsZWZ0O1xuXG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0Ny45OWVtKSB7XG5cbiAgLmFjY291bnQuY3VzdG9tZXItcmVmZXJyYWwtaW5kZXggI21haW5jb250ZW50IC5ibG9jay5ibG9jay1jb2xsYXBzaWJsZS1uYXYsXG4gIC5hY2NvdW50LmN1c3RvbWVyLXJld2FyZHMtaW5kZXggI21haW5jb250ZW50IC5ibG9jay5ibG9jay1jb2xsYXBzaWJsZS1uYXYsXG4gIC5hY2NvdW50LmN1c3RvbWVyLXJld2FyZHMtdHJhbnNhY3Rpb24gI21haW5jb250ZW50IC5ibG9jay5ibG9jay1jb2xsYXBzaWJsZS1uYXYge1xuXG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgfVxuXG59XG5cbi5hY2NvdW50LmN1c3RvbWVyLXJlZmVycmFsLWluZGV4ICNtYWluY29udGVudCAuYmxvY2suYmxvY2stY29sbGFwc2libGUtbmF2LFxuLmFjY291bnQuY3VzdG9tZXItcmV3YXJkcy1pbmRleCAjbWFpbmNvbnRlbnQgLmJsb2NrLmJsb2NrLWNvbGxhcHNpYmxlLW5hdixcbi5hY2NvdW50LmN1c3RvbWVyLXJld2FyZHMtdHJhbnNhY3Rpb24gI21haW5jb250ZW50IC5ibG9jay5ibG9jay1jb2xsYXBzaWJsZS1uYXYge1xuXG4gIHBhZGRpbmctdG9wOiAycmVtO1xuXG4gIHBhZGRpbmctYm90dG9tOiAycmVtO1xuXG59XG5cbi5hY2NvdW50LmN1c3RvbWVyLXJlZmVycmFsLWluZGV4ICNtYWluY29udGVudCAuYmxvY2suYmxvY2stY29sbGFwc2libGUtbmF2IC50aXRsZS5ibG9jay1jb2xsYXBzaWJsZS1uYXYtdGl0bGUsXG4uYWNjb3VudC5jdXN0b21lci1yZXdhcmRzLWluZGV4ICNtYWluY29udGVudCAuYmxvY2suYmxvY2stY29sbGFwc2libGUtbmF2IC50aXRsZS5ibG9jay1jb2xsYXBzaWJsZS1uYXYtdGl0bGUsXG4uYWNjb3VudC5jdXN0b21lci1yZXdhcmRzLXRyYW5zYWN0aW9uICNtYWluY29udGVudCAuYmxvY2suYmxvY2stY29sbGFwc2libGUtbmF2IC50aXRsZS5ibG9jay1jb2xsYXBzaWJsZS1uYXYtdGl0bGUge1xuXG4gIHBhZGRpbmctYm90dG9tOiAxcmVtO1xuXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGNkY2RjO1xuXG4gIHBhZGRpbmctbGVmdDogMnJlbTtcblxufVxuXG4uYWNjb3VudC5jdXN0b21lci1yZWZlcnJhbC1pbmRleCAjbWFpbmNvbnRlbnQgLmJsb2NrLmJsb2NrLWNvbGxhcHNpYmxlLW5hdiAubmF2Lml0ZW1zLFxuLmFjY291bnQuY3VzdG9tZXItcmV3YXJkcy1pbmRleCAjbWFpbmNvbnRlbnQgLmJsb2NrLmJsb2NrLWNvbGxhcHNpYmxlLW5hdiAubmF2Lml0ZW1zLFxuLmFjY291bnQuY3VzdG9tZXItcmV3YXJkcy10cmFuc2FjdGlvbiAjbWFpbmNvbnRlbnQgLmJsb2NrLmJsb2NrLWNvbGxhcHNpYmxlLW5hdiAubmF2Lml0ZW1zIHtcblxuICBwYWRkaW5nLXRvcDogMnJlbTtcblxufVxuXG4uYWNjb3VudC5jdXN0b21lci1yZWZlcnJhbC1pbmRleCAjbWFpbmNvbnRlbnQgLmJsb2NrLmJsb2NrLWNvbGxhcHNpYmxlLW5hdiAubmF2Lml0ZW0uY3VycmVudCxcbi5hY2NvdW50LmN1c3RvbWVyLXJld2FyZHMtaW5kZXggI21haW5jb250ZW50IC5ibG9jay5ibG9jay1jb2xsYXBzaWJsZS1uYXYgLm5hdi5pdGVtLmN1cnJlbnQsXG4uYWNjb3VudC5jdXN0b21lci1yZXdhcmRzLXRyYW5zYWN0aW9uICNtYWluY29udGVudCAuYmxvY2suYmxvY2stY29sbGFwc2libGUtbmF2IC5uYXYuaXRlbS5jdXJyZW50IHtcblxuICBib3JkZXItbGVmdDogM3B4IHNvbGlkIGJsYWNrO1xuXG59XG5cbi5hY2NvdW50LmN1c3RvbWVyLXJlZmVycmFsLWluZGV4ICNtYWluY29udGVudCAuYmxvY2suYmxvY2stY29sbGFwc2libGUtbmF2IC5uYXYuaXRlbSxcbi5hY2NvdW50LmN1c3RvbWVyLXJld2FyZHMtaW5kZXggI21haW5jb250ZW50IC5ibG9jay5ibG9jay1jb2xsYXBzaWJsZS1uYXYgLm5hdi5pdGVtLFxuLmFjY291bnQuY3VzdG9tZXItcmV3YXJkcy10cmFuc2FjdGlvbiAjbWFpbmNvbnRlbnQgLmJsb2NrLmJsb2NrLWNvbGxhcHNpYmxlLW5hdiAubmF2Lml0ZW0ge1xuXG4gIHBhZGRpbmctbGVmdDogMnJlbTtcblxuICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xuXG59XG5cbi5hY2NvdW50LmN1c3RvbWVyLXJlZmVycmFsLWluZGV4ICNtYWluY29udGVudCAuYmxvY2suYmxvY2stY29sbGFwc2libGUtbmF2IC5uYXYuaXRlbSBhLFxuLmFjY291bnQuY3VzdG9tZXItcmV3YXJkcy1pbmRleCAjbWFpbmNvbnRlbnQgLmJsb2NrLmJsb2NrLWNvbGxhcHNpYmxlLW5hdiAubmF2Lml0ZW0gYSxcbi5hY2NvdW50LmN1c3RvbWVyLXJld2FyZHMtdHJhbnNhY3Rpb24gI21haW5jb250ZW50IC5ibG9jay5ibG9jay1jb2xsYXBzaWJsZS1uYXYgLm5hdi5pdGVtIGEge1xuXG4gIGNvbG9yOiAjNjk2OTY5O1xuXG59XG5cbi5hY2NvdW50LmN1c3RvbWVyLXJlZmVycmFsLWluZGV4ICNtYWluY29udGVudCAuY29sdW1uLm1haW4sXG4uYWNjb3VudC5jdXN0b21lci1yZXdhcmRzLWluZGV4ICNtYWluY29udGVudCAuY29sdW1uLm1haW4sXG4uYWNjb3VudC5jdXN0b21lci1yZXdhcmRzLXRyYW5zYWN0aW9uICNtYWluY29udGVudCAuY29sdW1uLm1haW4ge1xuXG4gIHBhZGRpbmctbGVmdDogMy41cmVtO1xuXG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAoMTAwJSAvIDQpKTtcblxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDcuOTllbSkge1xuXG4gIC5hY2NvdW50LmN1c3RvbWVyLXJlZmVycmFsLWluZGV4ICNtYWluY29udGVudCAuY29sdW1uLm1haW4sXG4gIC5hY2NvdW50LmN1c3RvbWVyLXJld2FyZHMtaW5kZXggI21haW5jb250ZW50IC5jb2x1bW4ubWFpbixcbiAgLmFjY291bnQuY3VzdG9tZXItcmV3YXJkcy10cmFuc2FjdGlvbiAjbWFpbmNvbnRlbnQgLmNvbHVtbi5tYWluIHtcblxuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAoMTAwJSAvIDMpKTtcblxuICB9XG5cbn1cblxuLmNzLXNlbGVjdCB7XG5cbiAgZGlzcGxheTogYmxvY2s7XG5cbiAgZm9udC1zaXplOiAxZW07XG5cbiAgbGluZS1oZWlnaHQ6IDEuMjc1ZW07XG5cbiAgcGFkZGluZzogMC43NWVtIDIuM2VtIDAuNzVlbSAxZW07XG5cbiAgY29sb3I6ICMyMTIxMjE7XG5cbiAgYm9yZGVyLXJhZGl1czogMDtcblxuICBib3JkZXI6IDFweCBzb2xpZCAjZGNkY2RjO1xuXG4gIGJveC1zaGFkb3c6IG5vbmU7XG5cbiAgd2lkdGg6IDEwMCU7XG5cbiAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gIG1hcmdpbjogMCAwIDAuMmVtO1xuXG4gIG91dGxpbmU6IDA7XG5cbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuXG4gIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcblxuICBhcHBlYXJhbmNlOiBub25lO1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDE2IDknIGZpbGw9JyUyM2RjZGNkYyclM2UlM2NwYXRoIGQ9J00wIDEuMkMwIC41LjYgMCAxLjIgMGMuMyAwIC42LjEuOC4zbDYgNS45IDYtNS45Yy41LS40IDEuMi0uMyAxLjcuMS40LjQuNCAxLjEgMCAxLjVMOC45IDguN2MtLjUuNC0xLjIuNC0xLjcgMEwuNCAyYS45LjkgMCAwIDEtLjQtLjh6Jy8lM2UlM2Mvc3ZnJTNlXCIpLCBsaW5lYXItZ3JhZGllbnQoMGRlZywgdHJhbnNwYXJlbnQgMCUsIHRyYW5zcGFyZW50IDEwMCUpO1xuXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQsIHJlcGVhdDtcblxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAwLjhlbSB0b3AgNTIlLCAwIDA7XG5cbiAgYmFja2dyb3VuZC1zaXplOiAwLjdlbSBhdXRvLCAxMDAlO1xuXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjVzO1xuXG59XG5cbi5ibG9jay1yZXdhcmQtZGFzaGJvYXJkIHtcbiAgY29sb3I6ICMzMzMzMzM7XG59XG5cbi5mb3JtLmZvcm0tcmV3YXJkcy1zZXR0aW5nIC5sZWdlbmQgc3BhbiB7XG4gIGZvbnQtc2l6ZTogMjZweDtcbn1cblxuLmZpZWxkc2V0IC5lbWFpbC1ub3RpZmljYXRpb24gc3BhbiB7XG4gIGZvbnQtc2l6ZTogMjZweDtcbn1cblxuaW5wdXQjbm90aWZpY2F0aW9uLWV4cGlyZSxcbmlucHV0I25vdGlmaWNhdGlvbi11cGRhdGUge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm9yZGVyLXdpZHRoOiAycHg7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci1jb2xvcjogcmdiKDIwNCwgMjA0LCAyMDQpO1xuICBib3JkZXItaW1hZ2U6IGluaXRpYWw7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgdHJhbnNpdGlvbjogMC4zcztcbn1cblxuaW5wdXQjbm90aWZpY2F0aW9uLWV4cGlyZTpjaGVja2VkLFxuaW5wdXQjbm90aWZpY2F0aW9uLXVwZGF0ZTpjaGVja2VkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgYm9yZGVyLWNvbG9yOiAjMzMzMzMzO1xuICBiYWNrZ3JvdW5kLXNpemU6IDE0cHggMTRweDtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xufVxuXG4uYmxvY2stcmV3YXJkLWRhc2hib2FyZCAuZW1haWwtbm90aWZpY2F0aW9uIHNwYW4ge1xuICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uYmxvY2stcmV3YXJkLWRhc2hib2FyZCAucHJpbWFyeSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogMTVweDtcbn1cblxuLmJsb2NrLXJld2FyZC1kYXNoYm9hcmQgLmFjdGlvbi5zYXZlLnByaW1hcnksXG4uYm94LWNvbnRlbnQgLmFjdGlvbi5wcmltYXJ5IGJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6ICNmZmIzYmI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgcGFkZGluZzogMTJweCA0MHB4O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2UsIGJveC1zaGFkb3cgMC4zcyBlYXNlO1xuICBib3gtc2hhZG93OiAwIDhweCAxNXB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLmJsb2NrLXJld2FyZC1kYXNoYm9hcmQgLmFjdGlvbi5zYXZlLnByaW1hcnk6aG92ZXIsXG4uYm94LWNvbnRlbnQgLmFjdGlvbi5wcmltYXJ5IGJ1dHRvbjpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTtcbiAgYm94LXNoYWRvdzogMCAxMnB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuLmJsb2NrLXJld2FyZC1kYXNoYm9hcmQgLmFjdGlvbi5zYXZlLnByaW1hcnk6YWN0aXZlLFxuLmJveC1jb250ZW50IC5hY3Rpb24ucHJpbWFyeSBidXR0b246YWN0aXZlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDFweCk7XG4gIGJveC1zaGFkb3c6IDAgNnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuLnVybF9hbmRfY29kZSAuY29weSB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYmFja2dyb3VuZDogI2ZmYjNiYjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsaW5lLWhlaWdodDogMzBweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiA1NXB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIHBvc2l0aW9uOiBpbmhlcml0O1xufVxuXG4ubXBfaW5wdXQge1xuICBoZWlnaHQ6IDMwcHg7XG4gIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuaW5wdXQubXAtaW5wdXQge1xuICB3aWR0aDogODAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmOWY5O1xuICBib3JkZXI6IDJweCBzb2xpZCAjY2NjO1xuICBwYWRkaW5nOiA2cHggM3B4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIGNvbG9yOiAjMzMzO1xufVxuXG4uaW52aXRlLWZyaWVuZCB0ZXh0YXJlYSB7XG4gIGhlaWdodDogMTI3cHg7XG4gIHdpZHRoOiAxMDAlO1xuICByZXNpemU6IG5vbmU7XG59XG5cbi5tcC10aXRsZSB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5cbi5zZW5kLWZyb20ge1xuICBoZWlnaHQ6IDIzcHg7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG59XG5cbi5hY3Rpb24ucHJpbWFyeS5idC1zZW5kIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDcuOTllbSkge1xuXG4gIC5hY2NvdW50LmN1c3RvbWVyLXJlZmVycmFsLWluZGV4ICNtYWluY29udGVudCAuY29sdW1uLm1haW4sXG4gIC5hY2NvdW50LmN1c3RvbWVyLXJld2FyZHMtaW5kZXggI21haW5jb250ZW50IC5jb2x1bW4ubWFpbixcbiAgLmFjY291bnQuY3VzdG9tZXItcmV3YXJkcy10cmFuc2FjdGlvbiAjbWFpbmNvbnRlbnQgLmNvbHVtbi5tYWluIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gIH1cbn1cblxuI3NlbmQtYnksXG4uaW52aXRlLWZyaWVuZCB0ZXh0YXJlYSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG4gIGJvcmRlcjogMnB4IHNvbGlkICNjY2M7XG4gIHBhZGRpbmc6IDVweCAxNXB4O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGNvbG9yOiAjMzMzO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uaW52aXRlLW1lc3NhZ2UgdGV4dGFyZWEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmOWY5O1xuICBib3JkZXI6IDJweCBzb2xpZCAjY2NjO1xuICBwYWRkaW5nOiA1cHggMTVweDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBjb2xvcjogIzMzMztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICBoZWlnaHQ6IDIwMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgcmVzaXplOiBub25lO1xufVxuXG4jc2VuZC1ieTpob3Zlcixcbi5pbnZpdGUtZnJpZW5kIHRleHRhcmVhOmhvdmVyLFxuLmludml0ZS1tZXNzYWdlIHRleHRhcmVhOmhvdmVyLFxuaW5wdXQubXAtaW5wdXQ6aG92ZXIge1xuICBib3JkZXItY29sb3I6ICM4ODg7XG59XG5cbiNzZW5kLWJ5OmZvY3VzLFxuLmludml0ZS1mcmllbmQgdGV4dGFyZWE6Zm9jdXMsXG4uaW52aXRlLW1lc3NhZ2UgdGV4dGFyZWE6Zm9jdXMsXG5pbnB1dC5tcC1pbnB1dDpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi5pbnZpdGUtZnJpZW5kIC5jb21tZW50IHtcbiAgcGFkZGluZzogMTBweDtcbn1cblxuLml0ZW0tYmFsYW5jZSAuYXZhaWxhYmxlIHtcbiAgYmFja2dyb3VuZDogIzZiYzc3Mjtcbn1cblxuLml0ZW0tYmFsYW5jZSAuZWFybmVkIHtcbiAgYmFja2dyb3VuZDogI2ZmYjNiYjtcbn1cblxuLml0ZW0tYmFsYW5jZSAucGFpZCB7XG4gIGJhY2tncm91bmQ6ICNkYmMxODM7XG59XG5cbiNtcF9yZXdhcmRfcmVmZXJyYWwgLmJveC1jb250ZW50LFxuLnRhYmxlLXdyYXBwZXIuYWRkaXRpb25hbC1hZGRyZXNzZXMsXG4udGFibGUtd3JhcHBlci5yZXZpZXdzLFxuLnRhYmxlLXdyYXBwZXIudHJhbnNhY3Rpb25zLXJlY2VudCB7XG4gIG92ZXJmbG93LXg6IGF1dG87XG59XG5cbiNtcF9yZXdhcmRfcmVmZXJyYWwgLmJveC1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhcixcbi50YWJsZS13cmFwcGVyLmFkZGl0aW9uYWwtYWRkcmVzc2VzOjotd2Via2l0LXNjcm9sbGJhcixcbi50YWJsZS13cmFwcGVyLm9yZGVycy1oaXN0b3J5Ojotd2Via2l0LXNjcm9sbGJhcixcbi50YWJsZS13cmFwcGVyLm9yZGVycy1yZWNlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLFxuLnRhYmxlLXdyYXBwZXIucmV2aWV3czo6LXdlYmtpdC1zY3JvbGxiYXIsXG4udGFibGUtd3JhcHBlci50cmFuc2FjdGlvbnMtcmVjZW50Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gIGhlaWdodDogOHB4ICFpbXBvcnRhbnQ7XG59XG5cbiNtcF9yZXdhcmRfcmVmZXJyYWwgLmJveC1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYixcbi50YWJsZS13cmFwcGVyLmFkZGl0aW9uYWwtYWRkcmVzc2VzOjotd2Via2l0LXNjcm9sbGJhci10aHVtYixcbi50YWJsZS13cmFwcGVyLm9yZGVycy1oaXN0b3J5Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYixcbi50YWJsZS13cmFwcGVyLm9yZGVycy1yZWNlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iLFxuLnRhYmxlLXdyYXBwZXIucmV2aWV3czo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIsXG4udGFibGUtd3JhcHBlci50cmFuc2FjdGlvbnMtcmVjZW50Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIGJhY2tncm91bmQ6ICNiNmI2YjY7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG59XG5cbiNtcF9yZXdhcmRfcmVmZXJyYWwgLmJveC1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Zlcixcbi50YWJsZS13cmFwcGVyLmFkZGl0aW9uYWwtYWRkcmVzc2VzOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Zlcixcbi50YWJsZS13cmFwcGVyLm9yZGVycy1oaXN0b3J5Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Zlcixcbi50YWJsZS13cmFwcGVyLm9yZGVycy1yZWNlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyLFxuLnRhYmxlLXdyYXBwZXIucmV2aWV3czo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIsXG4udGFibGUtd3JhcHBlci50cmFuc2FjdGlvbnMtcmVjZW50Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gIGJhY2tncm91bmQ6ICM5YTlhOWE7XG59XG5cbnRhYmxlI2FkZGl0aW9uYWwtYWRkcmVzc2VzLXRhYmxlLFxudGFibGUjbXktcmV2aWV3cy10YWJsZSxcbnRhYmxlI3Jld2FyZHMtdHJhbnNhY3Rpb24tdGFibGUsXG50YWJsZSN0cmFuc2FjdGlvbnMtaGlzdG9yeSB7XG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcbiAgbWFyZ2luLXRvcDogMzBweDtcbiAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgd2lkdGg6IDExMCU7XG59XG5cbnRhYmxlI3Jld2FyZHMtdHJhbnNhY3Rpb24tdGFibGUgdGhlYWQsXG50YWJsZSN0cmFuc2FjdGlvbnMtaGlzdG9yeSB0aGVhZCB7XG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZGNkY2RjO1xufVxuXG4uYmxvY2stcmV3YXJkLWRhc2hib2FyZCAuY29sLFxuLmJsb2NrLXJld2FyZC1kYXNoYm9hcmQtdHJhbnNhY3Rpb24gLmNvbCxcbi5ibG9jay5ibG9jay1hZGRyZXNzZXMtbGlzdCAuY29sLFxuLnRhYmxlLXdyYXBwZXIucmV2aWV3cyAuY29sLFxudGFibGUjdHJhbnNhY3Rpb25zLWhpc3RvcnkgLmNvbCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHBhZGRpbmctbGVmdDogMTRweDtcbiAgcGFkZGluZy1yaWdodDogMTRweDtcbn1cblxuLmJsb2NrLXJld2FyZC1kYXNoYm9hcmQgLmZpZWxkLmNob2ljZSxcbi5ibG9jay1yZXdhcmQtZGFzaGJvYXJkLXRyYW5zYWN0aW9uIC5maWVsZC5jaG9pY2UsXG4uYmxvY2suYmxvY2stYWRkcmVzc2VzLWxpc3QgLmZpZWxkLmNob2ljZSxcbi50YWJsZS13cmFwcGVyLnJldmlld3MgLmZpZWxkLmNob2ljZSxcbnRhYmxlI3RyYW5zYWN0aW9ucy1oaXN0b3J5IC5maWVsZC5jaG9pY2Uge1xuICBtYXJnaW46IDVweCAwO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAuY3MtZGFzaGJvYXJkX19zaWRlYmFyIHtcbiAgICB3aWR0aDogY2FsYygxMDAlIC8gMyk7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgLmNzLWRhc2hib2FyZF9fc2lkZWJhciB7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAvIDQpO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA4MGVtKSB7XG4gIC5jcy1kYXNoYm9hcmRfX3NpZGViYXIge1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgLyA0KTtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTBlbSkge1xuICAuY3MtZGFzaGJvYXJkX19zaWRlYmFyIHtcbiAgICB3aWR0aDogY2FsYygxMDAlIC8gNCk7XG4gIH1cbn1cblxuLnJld2FyZC10cmFuc2FjdGlvbnMtdG9vbGJhci50b29sYmFyLmJvdHRvbSAuY3MtcGFnaW5hdGlvbl9fY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ucmV3YXJkLXRyYW5zYWN0aW9ucy10b29sYmFyLnRvb2xiYXIuYm90dG9tIGxpLml0ZW0uY3MtcGFnaW5hdGlvbl9faXRlbSxcbi5yZXdhcmQtdHJhbnNhY3Rpb25zLXRvb2xiYXIudG9vbGJhci5ib3R0b20gbGkuaXRlbS5jdXJyZW50LmNzLXBhZ2luYXRpb25fX2l0ZW0uY3MtcGFnaW5hdGlvbl9faXRlbS0tY3VycmVudCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOiAwO1xufVxuXG4ucmV3YXJkLXRyYW5zYWN0aW9ucy10b29sYmFyLnRvb2xiYXIuYm90dG9tIC5pdGVtLmNzLXBhZ2luYXRpb25fX2l0ZW0gYSxcbi5yZXdhcmQtdHJhbnNhY3Rpb25zLXRvb2xiYXIudG9vbGJhci5ib3R0b20gc3Bhbi5jcy1wYWdpbmF0aW9uX19udW1iZXIuY3MtcGFnaW5hdGlvbl9fbnVtYmVyLS1jdXJyZW50IHtcbiAgd2lkdGg6IDMwcHg7XG4gIGhlaWdodDogMzBweDtcbiAgYm9yZGVyOiAycHggc29saWQgIzhiNzAzMztcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1sZWZ0OiA1cHg7XG4gIG1hcmdpbi1yaWdodDogNXB4O1xuICBmb250LXNpemU6IDIwcHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ucmV3YXJkLXRyYW5zYWN0aW9ucy10b29sYmFyLnRvb2xiYXIuYm90dG9tIGxpLml0ZW0uY3MtcGFnaW5hdGlvbl9faXRlbSBhLFxuLnJld2FyZC10cmFuc2FjdGlvbnMtdG9vbGJhci50b29sYmFyLmJvdHRvbSBsaS5pdGVtLmNzLXBhZ2luYXRpb25fX2l0ZW0gc3Bhbixcbi5yZXdhcmQtdHJhbnNhY3Rpb25zLXRvb2xiYXIudG9vbGJhci5ib3R0b20gbGkuaXRlbS5jdXJyZW50LmNzLXBhZ2luYXRpb25fX2l0ZW0uY3MtcGFnaW5hdGlvbl9faXRlbS0tY3VycmVudCBhLFxuLnJld2FyZC10cmFuc2FjdGlvbnMtdG9vbGJhci50b29sYmFyLmJvdHRvbSBsaS5pdGVtLmN1cnJlbnQuY3MtcGFnaW5hdGlvbl9faXRlbS5jcy1wYWdpbmF0aW9uX19pdGVtLS1jdXJyZW50IHNwYW4ge1xuICBjb2xvcjogIzhiNzAzMztcbn1cblxuLnJld2FyZC10cmFuc2FjdGlvbnMtdG9vbGJhci50b29sYmFyLmJvdHRvbSBwLmxhYmVsLnBhZ2VzLWxhYmVsLmNzLXBhZ2luYXRpb25fX3ByZWZpeC1sYWJlbCB7XG4gIHBhZGRpbmctcmlnaHQ6IDE1cHg7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5yZXdhcmQtdHJhbnNhY3Rpb25zLXRvb2xiYXIudG9vbGJhci5ib3R0b20gLnBhZ2VzLmNzLXBhZ2luYXRpb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5yZXdhcmQtdHJhbnNhY3Rpb25zLXRvb2xiYXIudG9vbGJhci5ib3R0b20gLmNzLXRvb2xiYXJfX2l0ZW0uY3MtdG9vbGJhcl9faXRlbS0tYW1vdW50IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ucmV3YXJkLXRyYW5zYWN0aW9ucy10b29sYmFyLnRvb2xiYXIuYm90dG9tIC5jcy10b29sYmFyX19pdGVtLmNzLXRvb2xiYXJfX2l0ZW0tLWFtb3VudCBwIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLnJld2FyZC10cmFuc2FjdGlvbnMtdG9vbGJhci50b29sYmFyLmJvdHRvbSAuY3MtdG9vbGJhcl9faXRlbS5jcy10b29sYmFyX19pdGVtLS1hbW91bnQgc3Bhbi50b29sYmFyLW51bWJlciB7XG4gIHBhZGRpbmc6IDAgMnB4O1xufVxuXG4ucmV3YXJkLXRyYW5zYWN0aW9ucy10b29sYmFyLnRvb2xiYXIuYm90dG9tIC5jcy10b29sYmFyX19pdGVtLmNzLXRvb2xiYXJfX2l0ZW0tLWxpbWl0ZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5yZXdhcmQtdHJhbnNhY3Rpb25zLXRvb2xiYXIudG9vbGJhci5ib3R0b20ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi10b3A6IDIwcHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbiNteS1vcmRlcnMtdGFibGUgdGguY29sIHtcbiAgd29yZC1icmVhazogbm9ybWFsO1xufVxuXG50YWJsZSNteS1vcmRlcnMtdGFibGUge1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICB3aWR0aDogMTEwJTtcbiAgbWF4LXdpZHRoOiBub25lO1xufVxuXG4uYmxvY2sucmVmZXItdmlhLXNvY2lhbCAuc29jaWFsLWJ1dHRvbnMge1xuICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuXG4uYmxvY2sucmVmZXItdmlhLXNvY2lhbCAuc29jaWFsLWJ1dHRvbnMgYSB7XG4gIGNvbG9yOiAjZmZiM2JiO1xuICBmb250LXNpemU6IDM1cHg7XG4gIHBhZGRpbmc6IDAgMTBweDtcbn1cblxuLmJsb2NrLnJlZmVyLXZpYS1zb2NpYWwge1xuICBtYXJnaW4tdG9wOiAyNXB4O1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG50YWJsZS5kYXRhLnRhYmxlIHtcbiAgd29yZC1icmVhazogbm9ybWFsO1xufVxuXG50ZC5jcy1jYXJ0LXRhYmxlX19jb2wuY3MtY2FydC1pdGVtX19xdHkuY29sLnF0eSB7XG4gIHBhZGRpbmc6IDAgMjBweCAhaW1wb3J0YW50O1xufVxuXG4udGFibGUtY2hlY2tvdXQtc2hpcHBpbmctbWV0aG9kIHRkLmNvbC5jb2wtbWV0aG9kIHtcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDIzcHgpIHtcbiAgLnRhYmxlLXdyYXBwZXIudHJhbnNhY3Rpb25zLXJlY2VudCAudGFibGUgdGhlYWQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAudGFibGUtd3JhcHBlci50cmFuc2FjdGlvbnMtcmVjZW50IC50YWJsZSB0Ym9keSB0ZDpiZWZvcmUge1xuICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gICAgY29udGVudDogYXR0cihkYXRhLXRoKSBcIjogXCI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGNvbG9yOiAjMjEyMTIxO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgfVxuXG4gIC50YWJsZS13cmFwcGVyLnRyYW5zYWN0aW9ucy1yZWNlbnQgLnRhYmxlIHRib2R5IHRkIHtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgcGFkZGluZzogMC4ycmVtO1xuICB9XG5cbiAgLnRhYmxlLXdyYXBwZXIudHJhbnNhY3Rpb25zLXJlY2VudCAudGFibGUgdGJvZHkgdGQuY29sLmNvbW1lbnQsXG4gIHRhYmxlI3RyYW5zYWN0aW9ucy1oaXN0b3J5IHRib2R5IHRkLmNvbC5jb21tZW50IHtcbiAgICB0ZXh0LXdyYXA6IGF1dG87XG4gIH1cblxuICAudGFibGUtd3JhcHBlci50cmFuc2FjdGlvbnMtcmVjZW50IC50YWJsZSB0Ym9keSB0ciB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM5YzljOWM7XG4gICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgcGFkZGluZy10b3A6IDIwcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAucmV3YXJkLXRyYW5zYWN0aW9ucy10b29sYmFyLnRvb2xiYXIuYm90dG9tIC5wYWdlcy5jcy1wYWdpbmF0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbi10b3A6IDI1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgfVxuXG4gIC5yZXdhcmQtdHJhbnNhY3Rpb25zLXRvb2xiYXIudG9vbGJhci5ib3R0b20gLmNzLXRvb2xiYXJfX2l0ZW0uY3MtdG9vbGJhcl9faXRlbS0tYW1vdW50IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIC5yZXdhcmQtdHJhbnNhY3Rpb25zLXRvb2xiYXIudG9vbGJhci5ib3R0b20gLmNzLXRvb2xiYXJfX2l0ZW0uY3MtdG9vbGJhcl9faXRlbS0tbGltaXRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAucmV3YXJkLXRyYW5zYWN0aW9ucy10b29sYmFyLnRvb2xiYXIuYm90dG9tIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogLTEwcHg7XG4gIH1cbn0iLCIuY21zLXdhcnVua2ktZG9zdGF3ICB7XG4gICAgLmNvbHVtbnMuY29sdW1uLm1haW4ge1xuICAgICAgICBwYWRkaW5nOiA0cmVtIDJyZW0gMDtcbiAgICB9XG59IFxuXG4uYmYtdGV4dCB7XG4gICAgZm9udC1zaXplOiA5cmVtO1xufSIsIkBpbXBvcnQgJ3ZlbmRvcnMvaW5jbHVkZS1tZWRpYSc7XG5AaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcblxuLmNoZWNrb3V0LWluZGV4LWluZGV4IHtcbiAgICAubXBfcmV3YXJkX21lc3NhZ2VzIHtcbiAgICAgICAgbWF4LXdpZHRoOiA5M3JlbTtcbiAgICAgICAgLm1lc3NhZ2VzIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA5MHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubXBfcmV3YXJkX21lc3NhZ2VzLm1lc3NhZ2VzIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogOTBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJzw9dGFibGV0Jykge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDBweCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgXG59XG5cblxuLnBheW1lbnQtbWV0aG9kLXByemVsZXd5MjRfX21ldGhvZC0tcHJvbW90ZWQge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xufVxuXG4ucGF5bWVudC1tZXRob2QucGF5bWVudC1tZXRob2QtcHJ6ZWxld3kyNC5fYWN0aXZlIHtcbiAgICBtYXgtd2lkdGg6IDQ3MHB4O1xufSIsIi5jbXMtYmxhY2stZnJpZGF5LWh0bWwsIC5jbXMtbmV3c2xldHRlci1sYW5kaW5nLXBhZ2UtaHRtbCB7XG4gICAgLmNvbHVtbnMge1xuICAgICAgICBtYXgtd2lkdGg6IDk4MHB4O1xuICAgIH1cbiAgICAuYmYtdGV4dCB7XG4gICAgZm9udC1zaXplOiA1LjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xufVxuXG4uYmYtcm93IHtcbm1hcmdpbjogMCBhdXRvO1xufVxuXG59XG5cblxuIiwiLyogcGx1bXJvY2tldCBybWEgZXh0ZW5zaW9uIGN1c3RvbSBzdHlsZXMgKi9cbi5zYWxlcy1ndWVzdC12aWV3LFxuLnNhbGVzLWd1ZXN0LWludm9pY2UsXG4uc2FsZXMtZ3Vlc3Qtc2hpcG1lbnQge1xuICAgIHRhYmxlI215LW9yZGVycy10YWJsZSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5wYWdlLXRpdGxlLXdyYXBwZXIge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICAub3JkZXItc3RhdHVzIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDZweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDVweCAxMHB4O1xuICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgI2NjY2NjYztcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIG1hcmdpbjogM3B4IDAgMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDJweCAxMHB4O1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoMS5wYWdlLXRpdGxlIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyNXB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogNDBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgICB9XG5cbiAgICAuYWN0aW9ucy10b29sYmFyLm9yZGVyLWFjdGlvbnMtdG9vbGJhciB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuXG4gICAgICAgIC8vIFByemVtZWsgMS4wNy4yMDI2XG5cbiAgICAgICAgLmFjdGlvbnMge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDNweCAwcHg7XG5cbiAgICAgICAgICAgICYgYSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNlZmVmZWY7O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDNweCA4cHg7XG5cbiAgICAgICAgICAgICAgICAmLnJldHVybnMge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aW9uIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMzBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hY3Rpb24ucHJpbnQge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAub3JkZXItZGV0YWlscy1pdGVtcy5vcmRlcmVkIHtcbiAgICAgICAgcGFkZGluZzogMjVweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2NjY2NjYztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgICB9XG5cbiAgICAudGFibGUgdGZvb3Qge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xuXG4gICAgICAgIHRyPnRoLFxuICAgICAgICB0cj50ZCB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb2wucXR5IC5pdGVtcy1xdHkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC5ibG9jay5ibG9jay1vcmRlci1kZXRhaWxzLXZpZXcge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA1MHB4O1xuXG4gICAgICAgIC5ibG9jay10aXRsZSB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2M2YzZjNjtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcblxuICAgICAgICAgICAgc3Ryb25nIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDIuMnJlbTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmJsb2NrLWNvbnRlbnQ+LmJveCB7XG4gICAgICAgICAgICBjbGVhcjogbm9uZTtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgd2lkdGg6IDI1JTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmxvY2suYmxvY2stb3JkZXItZGV0YWlscy12aWV3IHtcbiAgICAgICAgLmJsb2NrLXRpdGxlIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYzZjNmM2O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuXG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDIuMnJlbTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbHVtbi5tYWluIC5vcmRlci1kZXRhaWxzLWl0ZW1zIC50YWJsZS13cmFwcGVyIC5kYXRhLnRhYmxlPnRoZWFkPnRyPnRoIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2NjY2M7XG4gICAgfVxuXG4gICAgLm9yZGVyLWl0ZW1zLnRhYmxlLXdyYXBwZXIgLmNvbC5wcmljZSB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cblxuICAgIC5vcmRlci1pdGVtcy50YWJsZS13cmFwcGVyIC5jb2wucXR5IHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgLm9yZGVyLWl0ZW1zLnRhYmxlLXdyYXBwZXIgLmNvbC5zdWJ0b3RhbCB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbn1cblxuLmFjY291bnQucHJybWEtcmV0dXJucy1jcmVhdGUsXG4uYWNjb3VudC5wcnJtYV9yZXR1cm5zX2FkZHJlc3MsXG4uYWNjb3VudC5wcnJtYS1yZXR1cm5zLXZpZXcsXG4uYWNjb3VudC5wcnJtYV9yZXR1cm5zX2d1ZXN0LFxuLmFjY291bnQucHJybWFfcmV0dXJuc19oaXN0b3J5LFxuLmFjY291bnQucHJybWEtcmV0dXJucy1vcmRlcl9oaXN0b3J5LFxuLmFjY291bnQucHJybWFfcmV0dXJuc19wcmludCxcbi5hY2NvdW50LnBycm1hX3JldHVybnNfc3VjY2Vzcyxcbi5hY2NvdW50LnBycm1hX3JldHVybnNfdmlldyB7XG4gICAgLmNzLWRhc2hib2FyZF9fY29sdW1ucz4uY3MtZGFzaGJvYXJkX19tYWluIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxufVxuXG5cbi5zYWxlcy1ndWVzdC1mb3JtIC5mb3JtLmZvcm0tb3JkZXJzLXNlYXJjaCB7XG4gICAgbWF4LXdpZHRoOiA5NjhweDtcbiAgICBtYXJnaW46IDAgYXV0bztcblxuICAgIC5maWVsZHNldCB7fVxuXG4gICAgLmFjdGlvbnMtdG9vbGJhciB7XG4gICAgICAgIG1hcmdpbjogMnJlbSAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG5cbiAgICAgICAgLnByaW1hcnk+LnN1Ym1pdCB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwcHg7XG4gICAgICAgICAgICBvdXRsaW5lLW9mZnNldDogMXB4O1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgcGFkZGluZzogMC43NWVtIDFlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4iLCIvLyBDb21wb25lbnQgdG8gc2hvdyBmaXhlZCBwcm9ncmVzcyBiYXIgb24gdG9wIG9mIHRoZSBwYWdlIGR1cmluZyBwYWdlIHJlZGlyZWN0LlxuQGltcG9ydCAnY29uZmlnL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd2ZW5kb3JzL2luY2x1ZGUtbWVkaWEnO1xuXG4kcmVkaXJlY3QtcHJvZ3Jlc3MtYmFyX2VuYWJsZWQ6IGRlZXAtZ2V0KFxuICAgICR2aWV3LXhtbCxcbiAgICB2YXJzLFxuICAgIE1hZ2VudG9fVGhlbWUsXG4gICAgcmVkaXJlY3RfcHJvZ3Jlc3NfYmFyLFxuICAgIGVuYWJsZWRcbikgIWRlZmF1bHQ7XG4kcmVkaXJlY3QtcHJvZ3Jlc3MtYmFyX2NvbG9yLWJhY2tncm91bmQ6ICRjb2xvcl93aGl0ZSAhZGVmYXVsdDsgLy8gdXNlZCBmb3Igc2hhZG93IGFuZCBiYWNrZ3JvdW5kXG4kcmVkaXJlY3QtcHJvZ3Jlc3MtYmFyX2NvbG9yLW1haW46ICRjb2xvcl9zdWNjZXNzLTUwMCAhZGVmYXVsdDsgLy8gdXNlZCBmb3IgcHJvZ3Jlc3MgYmFyXG4kcmVkaXJlY3QtcHJvZ3Jlc3MtYmFyX2NvbG9yLWVycm9yOiAkY29sb3JfZXJyb3ItNTAwICFkZWZhdWx0OyAvLyB1c2VkIGZvciBibGlua2luZyBhbmltYXRpb25cbiRyZWRpcmVjdC1wcm9ncmVzcy1iYXJfaGVpZ2h0OiA2cHggIWRlZmF1bHQ7XG5cbi8qKlxuICogUmVkaXJlY3QgcHJvZ3Jlc3MgYmFyIHNob3duIHdpdGggSlMgb24gdGhlIG9uYmVmb3JldW5sb2FkIGV2ZW50LlxuICogSXQgaXMgYW5pbWF0ZWQgaW4gNCBzdGVwczpcbiAqIDEuIEZyb20gMCUgdG8gNTAlIHdpZHRoIHdpdGhpbiBmaXJzdCAzMDBtc1xuICogMi4gRnJvbSA1MCUgdG8gOTAlIHdpZHRoIHdpdGhpbiBuZXh0IDE1MDBtcyB3aXRoIGxvZ2FyaXRobWljIGVhc2luZ1xuICogMy4gRnJvbSA5MCUgdG8gMTAwJSB3aWR0aCB3aXRoaW4gbmV4dCAxODAwMG1zIHdpdGggbGluZWFyIGVhc2luZ1xuICogNC4gQXQgdGhlIGVuZCAtIGJsaW5raW5nIFwiZXJyb3JcIiBhbmltYXRpb24gdG8gaW5kaWNhdGUgbG9hZGluZyBpc3N1ZVxuICovXG5cbkBpZiAoJHJlZGlyZWN0LXByb2dyZXNzLWJhcl9lbmFibGVkKSB7XG4gICAgLmNzLXJlZGlyZWN0LXByb2dyZXNzLWJhciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBmb250LXNpemU6IDA7XG4gICAgICAgICAgICBoZWlnaHQ6ICRyZWRpcmVjdC1wcm9ncmVzcy1iYXJfaGVpZ2h0O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHJlZGlyZWN0LXByb2dyZXNzLWJhcl9jb2xvci1tYWluO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgLTgwcHggMHB4IDM4cHggLTcwcHhcbiAgICAgICAgICAgICAgICAkcmVkaXJlY3QtcHJvZ3Jlc3MtYmFyX2NvbG9yLWJhY2tncm91bmQ7XG4gICAgICAgICAgICBhbmltYXRpb246IHJlZGlyZWN0UHJvZ3Jlc3NBbmltYXRpb25TdGVwMSAzMDBtcyBsaW5lYXIgZm9yd2FyZHMsXG4gICAgICAgICAgICAgICAgcmVkaXJlY3RQcm9ncmVzc0FuaW1hdGlvblN0ZXAyIDE1MDBtcyBjdWJpYy1iZXppZXIoMC44LCAxLCAxLCAxKVxuICAgICAgICAgICAgICAgICAgICAzMDBtcyBmb3J3YXJkcyxcbiAgICAgICAgICAgICAgICByZWRpcmVjdFByb2dyZXNzQW5pbWF0aW9uU3RlcDMgMTgwMDBtcyBsaW5lYXIgMTgwMG1zIGZvcndhcmRzLFxuICAgICAgICAgICAgICAgIHJlZGlyZWN0UHJvZ3Jlc3NBbmltYXRpb25TdGVwNCAxMDAwbXMgZWFzZS1pbi1vdXQgMTk4MDBtc1xuICAgICAgICAgICAgICAgICAgICBpbmZpbml0ZTtcbiAgICAgICAgICAgIHotaW5kZXg6IDk5OTk5OTk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHJlZGlyZWN0UHJvZ3Jlc3NBbmltYXRpb25TdGVwMSB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDApO1xuICAgICAgICB9XG4gICAgICAgIDEwMCUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMC41KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgcmVkaXJlY3RQcm9ncmVzc0FuaW1hdGlvblN0ZXAyIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMC41KTtcbiAgICAgICAgfVxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDAuOSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHJlZGlyZWN0UHJvZ3Jlc3NBbmltYXRpb25TdGVwMyB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDAuOSk7XG4gICAgICAgIH1cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJsaW5raW5nIGFuaW1hdGlvblxuICAgIEBrZXlmcmFtZXMgcmVkaXJlY3RQcm9ncmVzc0FuaW1hdGlvblN0ZXA0IHtcbiAgICAgICAgMCUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHJlZGlyZWN0LXByb2dyZXNzLWJhcl9jb2xvci1lcnJvcjtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgfVxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRyZWRpcmVjdC1wcm9ncmVzcy1iYXJfY29sb3ItZXJyb3I7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbi8qKlxuICogRXh0cmFjdHMgbmVzdGVkIGtleXMgZnJvbSBnaXZlbiBtYXAuXG4gKiBFeGFtcGxlOiBkZWVwLWdldCgkc29tZS1tYXAsIHNvbWUsIG5lc3RlZCwga2V5cyk7XG4gKi9cbi8qKlxuKiBEZWZhdWx0IHByb2plY3QgYnJlYWtwb2ludHMgLSBbZW1dXG4qL1xuLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbi8qKlxuICogRXh0cmFjdHMgbmVzdGVkIGtleXMgZnJvbSBnaXZlbiBtYXAuXG4gKiBFeGFtcGxlOiBkZWVwLWdldCgkc29tZS1tYXAsIHNvbWUsIG5lc3RlZCwga2V5cyk7XG4gKi9cbi8qKlxuKiBEZWZhdWx0IHByb2plY3QgYnJlYWtwb2ludHMgLSBbZW1dXG4qL1xuLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbi8qKlxuICogRXh0cmFjdHMgbmVzdGVkIGtleXMgZnJvbSBnaXZlbiBtYXAuXG4gKiBFeGFtcGxlOiBkZWVwLWdldCgkc29tZS1tYXAsIHNvbWUsIG5lc3RlZCwga2V5cyk7XG4gKi9cbi8qKlxuKiBEZWZhdWx0IHByb2plY3QgYnJlYWtwb2ludHMgLSBbZW1dXG4qL1xuLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbi8qKlxuICogRXh0cmFjdHMgbmVzdGVkIGtleXMgZnJvbSBnaXZlbiBtYXAuXG4gKiBFeGFtcGxlOiBkZWVwLWdldCgkc29tZS1tYXAsIHNvbWUsIG5lc3RlZCwga2V5cyk7XG4gKi9cbi8qKlxuKiBEZWZhdWx0IHByb2plY3QgYnJlYWtwb2ludHMgLSBbZW1dXG4qL1xuLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbi8qKlxuICogRXh0cmFjdHMgbmVzdGVkIGtleXMgZnJvbSBnaXZlbiBtYXAuXG4gKiBFeGFtcGxlOiBkZWVwLWdldCgkc29tZS1tYXAsIHNvbWUsIG5lc3RlZCwga2V5cyk7XG4gKi9cbi8qKlxuKiBEZWZhdWx0IHByb2plY3QgYnJlYWtwb2ludHMgLSBbZW1dXG4qL1xuLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbi8qKlxuICogRXh0cmFjdHMgbmVzdGVkIGtleXMgZnJvbSBnaXZlbiBtYXAuXG4gKiBFeGFtcGxlOiBkZWVwLWdldCgkc29tZS1tYXAsIHNvbWUsIG5lc3RlZCwga2V5cyk7XG4gKi9cbi8qKlxuKiBEZWZhdWx0IHByb2plY3QgYnJlYWtwb2ludHMgLSBbZW1dXG4qL1xuLyoqXG4gKiBFeHRyYWN0cyBuZXN0ZWQga2V5cyBmcm9tIGdpdmVuIG1hcC5cbiAqIEV4YW1wbGU6IGRlZXAtZ2V0KCRzb21lLW1hcCwgc29tZSwgbmVzdGVkLCBrZXlzKTtcbiAqL1xuLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbi8qKlxuICogRXh0cmFjdHMgbmVzdGVkIGtleXMgZnJvbSBnaXZlbiBtYXAuXG4gKiBFeGFtcGxlOiBkZWVwLWdldCgkc29tZS1tYXAsIHNvbWUsIG5lc3RlZCwga2V5cyk7XG4gKi9cbi8qKlxuKiBEZWZhdWx0IHByb2plY3QgYnJlYWtwb2ludHMgLSBbZW1dXG4qL1xuLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbi8qKlxuICogRXh0cmFjdHMgbmVzdGVkIGtleXMgZnJvbSBnaXZlbiBtYXAuXG4gKiBFeGFtcGxlOiBkZWVwLWdldCgkc29tZS1tYXAsIHNvbWUsIG5lc3RlZCwga2V5cyk7XG4gKi9cbi8qKlxuKiBEZWZhdWx0IHByb2plY3QgYnJlYWtwb2ludHMgLSBbZW1dXG4qL1xuLyoqKlxuICogUmVtb3ZlIGJyb3dzZXIncyBtYXJnaW5zLCBwYWRkaW5ncyBhbmQgbGlzdCBzdHlsZSBydWxlc1xuICovXG4vKioqXG4gKiBIaWRlIG5hdGl2ZSBicm93c2VyJ3Mgc2Nyb2xsYmFyXG4gKi9cbi8qKlxuICogQnJlYWtwb2ludCBjb21wb25lbnQgdXNlZCBieSBpbmNsdWRlLW1lZGlhIHZlbmRvciBsaWJyYXJ5LlxuICovXG4vKipcbiAqIEV4dHJhY3RzIG5lc3RlZCBrZXlzIGZyb20gZ2l2ZW4gbWFwLlxuICogRXhhbXBsZTogZGVlcC1nZXQoJHNvbWUtbWFwLCBzb21lLCBuZXN0ZWQsIGtleXMpO1xuICovXG4vKipcbiogRGVmYXVsdCBwcm9qZWN0IGJyZWFrcG9pbnRzIC0gW2VtXVxuKi9cbi8qKlxuICogQnJlYWtwb2ludCBjb21wb25lbnQgdXNlZCBieSBpbmNsdWRlLW1lZGlhIHZlbmRvciBsaWJyYXJ5LlxuICovXG4vKipcbiAqIEV4dHJhY3RzIG5lc3RlZCBrZXlzIGZyb20gZ2l2ZW4gbWFwLlxuICogRXhhbXBsZTogZGVlcC1nZXQoJHNvbWUtbWFwLCBzb21lLCBuZXN0ZWQsIGtleXMpO1xuICovXG4vKipcbiogRGVmYXVsdCBwcm9qZWN0IGJyZWFrcG9pbnRzIC0gW2VtXVxuKi9cbi5jcy1zbGlkZXItbmF2aWdhdGlvbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5AbWVkaWEgKGhvdmVyOiBob3ZlcikgYW5kIChwb2ludGVyOiBmaW5lKSB7XG4gIC5jcy1zbGlkZXItbmF2aWdhdGlvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDExO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTUwJSwgMCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA0LjRyZW07XG4gICAgaGVpZ2h0OiA1LjJyZW07XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJveC1zaGFkb3c6IDFweCAxcHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGNvbG9yOiAjMDAwMDAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcztcbiAgfVxuICAuY3Mtc2xpZGVyLW5hdmlnYXRpb24tLXByZXYge1xuICAgIGxlZnQ6IDEuNXJlbTtcbiAgfVxuICAuY3Mtc2xpZGVyLW5hdmlnYXRpb24tLW5leHQge1xuICAgIHJpZ2h0OiAxLjVyZW07XG4gIH1cbiAgLmNzLXNsaWRlci1uYXZpZ2F0aW9uW2Rpc2FibGVkXSB7XG4gICAgb3BhY2l0eTogMC4yNTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG4gIC5jcy1zbGlkZXItbmF2aWdhdGlvbltkaXNhYmxlZF0gc3ZnIHtcbiAgICBmaWx0ZXI6IGdyYXlzY2FsZSgxKTtcbiAgfVxuICAuY3Mtc2xpZGVyLW5hdmlnYXRpb246bm90KFtkaXNhYmxlZF0pOmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAxcHggMXB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICB9XG4gIC5jcy1zbGlkZXItbmF2aWdhdGlvbl9faWNvbiB7XG4gICAgd2lkdGg6IDEuNHJlbTtcbiAgICBoZWlnaHQ6IDIuN3JlbTtcbiAgICBmaWxsOiBjdXJyZW50Q29sb3I7XG4gIH1cbn1cblxuLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbi8qKlxuICogRXh0cmFjdHMgbmVzdGVkIGtleXMgZnJvbSBnaXZlbiBtYXAuXG4gKiBFeGFtcGxlOiBkZWVwLWdldCgkc29tZS1tYXAsIHNvbWUsIG5lc3RlZCwga2V5cyk7XG4gKi9cbi8qKlxuKiBEZWZhdWx0IHByb2plY3QgYnJlYWtwb2ludHMgLSBbZW1dXG4qL1xuLyoqXG4gKiBCcmVha3BvaW50IGNvbXBvbmVudCB1c2VkIGJ5IGluY2x1ZGUtbWVkaWEgdmVuZG9yIGxpYnJhcnkuXG4gKi9cbi8qKlxuICogRXh0cmFjdHMgbmVzdGVkIGtleXMgZnJvbSBnaXZlbiBtYXAuXG4gKiBFeGFtcGxlOiBkZWVwLWdldCgkc29tZS1tYXAsIHNvbWUsIG5lc3RlZCwga2V5cyk7XG4gKi9cbi8qKlxuKiBEZWZhdWx0IHByb2plY3QgYnJlYWtwb2ludHMgLSBbZW1dXG4qL1xuLmNzLXNsaWRlci1wYWdpbmF0aW9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjhyZW07XG4gIG1pbi1oZWlnaHQ6IDNyZW07XG59XG4uY3Mtc2xpZGVyLXBhZ2luYXRpb24tLWZyYWN0aW9uIHtcbiAgZ2FwOiAwO1xuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBmb250LXdlaWdodDogNjAwO1xufVxuLmNzLXNsaWRlci1wYWdpbmF0aW9uLS1mcmFjdGlvbiBzcGFuIHtcbiAgY29sb3I6ICMwMDA7XG59XG4uY3Mtc2xpZGVyLXBhZ2luYXRpb25fX2J1bGxldCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBiYWNrZ3JvdW5kOiAjZjRmNGY0O1xuICBib3JkZXI6IDA7XG4gIGlubGluZS1zaXplOiAyLjJyZW07XG4gIGJsb2NrLXNpemU6IDAuOXJlbTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMTVzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LWluZGVudDogLTk5cmVtO1xufVxuLmNzLXNsaWRlci1wYWdpbmF0aW9uX19idWxsZXQuY3VycmVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG59XG4uY3Mtc2xpZGVyLXBhZ2luYXRpb25fX2J1bGxldDpvbmx5LWNoaWxkIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLypcbiAqIEZ1bmN0aW9uIHRvIGdldCB2YWx1ZSBmcm9tIGEgbGlzdCBvZiB2YWx1ZXMsIGJhc2VkIG9uIHNpZGVcbiAqIEBwYXJhbSB7c3RyaW5nfSAkdmFyaWFibGU6IHZhcmlhYmxlIHdpdGggYSBsaXN0IG9mIHZhbHVlcyAobGlrZSBwYWRkaW5ncywgbWFyZ2lucyBldGMuKTtcbiAqIEBwYXJhbSB7c3RyaW5nfSAkc2lkZTogc2lkZSAodXAgLyByaWdodCAvIGRvd24gLyBsZWZ0KSBmb3Igd2hpY2ggd2Ugd2FudCB0byBnZXQgdmFsdWVcbiAqIEV4YW1wbGU6XG4gKiAkY29tcG9uZW50X3BhZGRpbmc6IDFyZW0gMnJlbSAzcmVtO1xuICogZ2V0LXZhbHVlLWZyb20tbGlzdCgkY29tcG9uZW50X3BhZGRpbmcsICdyaWdodCcpIC8vIDJyZW1cbiAqIGdldC12YWx1ZS1mcm9tLWxpc3QoJGNvbXBvbmVudF9wYWRkaW5nLCAnYm90dG9tJykgLy8gM3JlbVxuICovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBibG9jay1uby1lbXB0eSAqL1xuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuLyoqKlxuICogSGlkZSBvbmx5IHZpc3VhbGx5LCBidXQgaGF2ZSBpdCBhdmFpbGFibGUgZm9yIHNjcmVlbiByZWFkZXJzOlxuICogaHR0cHM6Ly9zbm9vay5jYS9hcmNoaXZlcy9odG1sX2FuZF9jc3MvaGlkaW5nLWNvbnRlbnQtZm9yLWFjY2Vzc2liaWxpdHlcbiAqXG4gKiAxLiBGb3IgbG9uZyBjb250ZW50LCBsaW5lIGZlZWRzIGFyZSBub3QgaW50ZXJwcmV0ZWQgYXMgc3BhY2VzIGFuZCBzbWFsbCB3aWR0aFxuICogICAgY2F1c2VzIGNvbnRlbnQgdG8gd3JhcCAxIHdvcmQgcGVyIGxpbmU6XG4gKiAgICBodHRwczovL21lZGl1bS5jb20vQGplc3NlYmVhY2gvYmV3YXJlLXNtdXNoZWQtb2ZmLXNjcmVlbi1hY2Nlc3NpYmxlLXRleHQtNTk1MmE0YzJjYmZlXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaDVicC9odG1sNS1ib2lsZXJwbGF0ZS9ibG9iL21hc3Rlci9zcmMvY3NzL21haW4uY3NzI0wxMzBcbiAqL1xuLyoqXG4gKiBUaGlzIGNvbXBvbmVudHMgaXMgc29ydCBvZiB1bmlxdWUgYmVjYXVzZSBpdCdzIGl0ZW1zLXBlci1yb3cgY29uZmlndXJhdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgdGFibGV0K1xuICogVGhpcyBtYXAgYWRkcyBwb3NzaWJpbGl0eSB0byAnZm9yY2UnIHByb3ZpZWQgY29sdW1ucyBjb25maWd1cmF0aW9uIHVwIHRvIGxhcHRvcCByZXNvbHV0aW9ucy5cbiAqL1xuLmNzLWltYWdlLXRlYXNlciB7XG4gIC0tc2xvZ2FuLWZvbnQtc2l6ZTogMy44cmVtO1xuICAtLWRlc2NyaXB0aW9uLWZvbnQtc2l6ZTogMS41cmVtO1xuICAtLWdhcDogMC44cmVtO1xuICAvKlxuICAgKiBLZWVwIENUQSBzZXBhcmF0ZWQgZnJvbSB0ZXh0LWNvbnRlbnQgZm9yIGFsbCBzY2VuYXJpb3NcbiAgICogXCIhaW1wb3J0YW50XCIgYWRkZWQgZHVlIHRvIGZhbGxiYWNrIGZyb20gLS1zY2hlbWUtKiB3aXRoIGJ1dHRvbigpIG1peGluIHRoYXQgcmVzZXRzIG1hcmdpbnNcbiAgICovXG4gIC8qKlxuICAgKiBDb250cmFzdCBPcHRpbWl6ZXJzXG4gICAqL1xufVxuLmNzLWltYWdlLXRlYXNlcjpub3QoLmNzLWNvbnRhaW5lci0tdXNlLXdob2xlLXdpZHRoKSAuY3MtaW1hZ2UtdGVhc2VyLmNzLWltYWdlLXRlYXNlci0tY29udGFpbmVyLXdpZHRoIC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlcy13cmFwcGVyIHtcbiAgbWF4LXdpZHRoOiAxODByZW07XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXMge1xuICAtLWNvbHVtbnM6IDE7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdhcDogdmFyKC0tZ2FwKTtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQodmFyKC0tY29sdW1ucyksIG1pbm1heCgwLCAxZnIpKTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuLmNzLWltYWdlLXRlYXNlci0taXRlbXMtaW4tcm93LW1vYmlsZS0yIC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlcyB7XG4gIC0tY29sdW1uczogMjtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW46IDA7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19saW5rIHtcbiAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tZ2FwKSAvIDIgKyAyKTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX2xpbms6Zm9jdXMge1xuICBvdXRsaW5lLW9mZnNldDogMC40cmVtO1xufVxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiBuby1wcmVmZXJlbmNlKSB7XG4gIC5jcy1pbWFnZS10ZWFzZXJfX2xpbmsge1xuICAgIHRyYW5zaXRpb246IG91dGxpbmUtb2Zmc2V0IDAuMjVzIGVhc2U7XG4gIH1cbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3BpY3R1cmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG4gIC8qIHN0eWxlbGludC1kaXNhYmxlIC0tIHN0eWxlbGludCBkb2Vzbid0IGtub3cgdGhpcyBtZWRpYSBxdWVyeSB5ZXQuICovXG4gIC8qIHN0eWxlbGludC1lbmFibGUgKi9cbn1cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLWRhdGE6IHJlZHVjZSkge1xuICAuY3MtaW1hZ2UtdGVhc2VyX19waWN0dXJlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19pbWFnZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjRmNDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gIC5jcy1pbWFnZS10ZWFzZXIge1xuICAgIC0tZ2FwOiAwLjhyZW07XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlci0taXRlbXMtaW4tcm93LTIgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGVzIHtcbiAgICAtLWNvbHVtbnM6IDI7XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlci0taXRlbXMtaW4tcm93LTMgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGVzIHtcbiAgICAtLWNvbHVtbnM6IDM7XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlci0taXRlbXMtaW4tcm93LTQgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGVzIHtcbiAgICAtLWNvbHVtbnM6IDQ7XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlci0taXRlbXMtaW4tcm93LTUgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGVzIHtcbiAgICAtLWNvbHVtbnM6IDU7XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlci0taXRlbXMtaW4tcm93LTYgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGVzIHtcbiAgICAtLWNvbHVtbnM6IDY7XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlci0taXRlbXMtaW4tcm93LTcgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGVzIHtcbiAgICAtLWNvbHVtbnM6IDc7XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlci0taXRlbXMtaW4tcm93LTggLmNzLWltYWdlLXRlYXNlcl9fc2xpZGVzIHtcbiAgICAtLWNvbHVtbnM6IDg7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTllbSkge1xuICAuY3MtaW1hZ2UtdGVhc2VyLS1pdGVtcy1pbi1yb3ctNDpub3QoLmNzLWltYWdlLXRlYXNlci0taWNvbikgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGVzIHtcbiAgICAtLWNvbHVtbnM6IDI7XG4gIH1cbn1cbi5jcy1pbWFnZS10ZWFzZXItLXNsaWRlciB7XG4gIC0tZ2FwOiAwLjhyZW07XG4gIC0tYmFzZS1zaXplOiBjYWxjKDEwMCUgLSAwcHgpO1xuICAtLXNpemU6IHZhcigtLWJhc2Utc2l6ZSk7XG4gIC8qKlxuICAgKiBjbGFzcy1iYXNlZCBjb2x1bW5zIGNvbmZpZyByZWxhdGVzIHRvIGNsYXNzbmFtZXMsIGxpa2UgJy0taXRlbXMtaW4tcm93LTQnXG4gICAqIHdoaWNoIGFyZSBhZGRlZCB0byBlbGVtZW50cywgZGVwZW5kaW5nIG9uIHRoZSBDQyBDb21wb25lbnRzIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICAvKiAgY29udGFpbmVyIHBhZGRpbmcgZml4ICAqL1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDExNC4zNzVlbSkge1xuICAuY3MtaW1hZ2UtdGVhc2VyLS1zbGlkZXIuY3MtaW1hZ2UtdGVhc2VyLS1jb250YWluZXItd2lkdGgge1xuICAgIC0tYmFzZS1zaXplOiBjYWxjKDE4MHJlbSAtIDBweCk7XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyLmNzLWltYWdlLXRlYXNlci0tdXNlLXdob2xlLXNjcmVlbjpub3QoLmNzLWltYWdlLXRlYXNlci0tZnVsbC13aWR0aC1zbGlkZXIpIHtcbiAgICAtLWJhc2Utc2l6ZTogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyLmNzLWltYWdlLXRlYXNlci0tdXNlLXdob2xlLXNjcmVlbjpub3QoLmNzLWltYWdlLXRlYXNlci0tZnVsbC13aWR0aC1zbGlkZXIpIC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlcyB7XG4gICAgc2Nyb2xsLXNuYXAtdHlwZTogeCBwcm94aW1pdHk7XG4gICAgcGFkZGluZy1sZWZ0OiBjYWxjKCgxMDAlIC0gMTgwcmVtKSAvIDIpO1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGMoKDEwMCUgLSAxODByZW0pIC8gMik7XG4gICAgc2Nyb2xsLXBhZGRpbmctbGVmdDogY2FsYygoMTAwJSAtIDE4MHJlbSkgLyAyKTtcbiAgICBzY3JvbGwtcGFkZGluZy1yaWdodDogY2FsYygoMTAwJSAtIDE4MHJlbSkgLyAyKTtcbiAgICBzY3JvbGwtbWFyZ2luLWxlZnQ6IGNhbGMoKDEwMHZ3IC0gMTgwcmVtKSAvIDIpO1xuICAgIHNjcm9sbC1tYXJnaW4tcmlnaHQ6IGNhbGMoKDEwMHZ3IC0gMTgwcmVtKSAvIDIpO1xuICB9XG59XG5AbWVkaWEgKGhvdmVyOiBob3ZlcikgYW5kIChwb2ludGVyOiBmaW5lKSBhbmQgKG1pbi13aWR0aDogMTE0LjM3NWVtKSB7XG4gIC5jcy1pbWFnZS10ZWFzZXItLXNsaWRlci5jcy1pbWFnZS10ZWFzZXItLWNvbnRhaW5lci13aWR0aCB7XG4gICAgLS1iYXNlLXNpemU6IDE4MHJlbTtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyIHtcbiAgICAtLWdhcDogMC44cmVtO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAuY3MtaW1hZ2UtdGVhc2VyLS1zbGlkZXIuY3MtaW1hZ2UtdGVhc2VyLS1pdGVtcy1pbi1yb3ctMiB7XG4gICAgLS1zaXplOiBjYWxjKFxuICAgICAgICB2YXIoLS1iYXNlLXNpemUpIC9cbiAgICAgICAgICAgIDIgLVxuICAgICAgICAgICAgKCgxICogdmFyKC0tZ2FwKSkgLyAyKVxuICAgICk7XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyLmNzLWltYWdlLXRlYXNlci0taXRlbXMtaW4tcm93LTMge1xuICAgIC0tc2l6ZTogY2FsYyhcbiAgICAgICAgdmFyKC0tYmFzZS1zaXplKSAvXG4gICAgICAgICAgICAzIC1cbiAgICAgICAgICAgICgoMiAqIHZhcigtLWdhcCkpIC8gMylcbiAgICApO1xuICB9XG4gIC5jcy1pbWFnZS10ZWFzZXItLXNsaWRlci5jcy1pbWFnZS10ZWFzZXItLWl0ZW1zLWluLXJvdy00IHtcbiAgICAtLXNpemU6IGNhbGMoXG4gICAgICAgIHZhcigtLWJhc2Utc2l6ZSkgL1xuICAgICAgICAgICAgNCAtXG4gICAgICAgICAgICAoKDMgKiB2YXIoLS1nYXApKSAvIDQpXG4gICAgKTtcbiAgfVxuICAuY3MtaW1hZ2UtdGVhc2VyLS1zbGlkZXIuY3MtaW1hZ2UtdGVhc2VyLS1pdGVtcy1pbi1yb3ctNSB7XG4gICAgLS1zaXplOiBjYWxjKFxuICAgICAgICB2YXIoLS1iYXNlLXNpemUpIC9cbiAgICAgICAgICAgIDUgLVxuICAgICAgICAgICAgKCg0ICogdmFyKC0tZ2FwKSkgLyA1KVxuICAgICk7XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyLmNzLWltYWdlLXRlYXNlci0taXRlbXMtaW4tcm93LTYge1xuICAgIC0tc2l6ZTogY2FsYyhcbiAgICAgICAgdmFyKC0tYmFzZS1zaXplKSAvXG4gICAgICAgICAgICA2IC1cbiAgICAgICAgICAgICgoNSAqIHZhcigtLWdhcCkpIC8gNilcbiAgICApO1xuICB9XG4gIC5jcy1pbWFnZS10ZWFzZXItLXNsaWRlci5jcy1pbWFnZS10ZWFzZXItLWl0ZW1zLWluLXJvdy03IHtcbiAgICAtLXNpemU6IGNhbGMoXG4gICAgICAgIHZhcigtLWJhc2Utc2l6ZSkgL1xuICAgICAgICAgICAgNyAtXG4gICAgICAgICAgICAoKDYgKiB2YXIoLS1nYXApKSAvIDcpXG4gICAgKTtcbiAgfVxuICAuY3MtaW1hZ2UtdGVhc2VyLS1zbGlkZXIuY3MtaW1hZ2UtdGVhc2VyLS1pdGVtcy1pbi1yb3ctOCB7XG4gICAgLS1zaXplOiBjYWxjKFxuICAgICAgICB2YXIoLS1iYXNlLXNpemUpIC9cbiAgICAgICAgICAgIDggLVxuICAgICAgICAgICAgKCg3ICogdmFyKC0tZ2FwKSkgLyA4KVxuICAgICk7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTllbSkge1xuICAuY3MtaW1hZ2UtdGVhc2VyLS1zbGlkZXIuY3MtaW1hZ2UtdGVhc2VyLS1pdGVtcy1pbi1yb3ctNDpub3QoLmNzLWltYWdlLXRlYXNlci0taWNvbikge1xuICAgIC0tc2l6ZTogY2FsYyh2YXIoLS1iYXNlLXNpemUpIC8gMiAtICgxICogdmFyKC0tZ2FwKSAvIDIpKTtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDExNC4zMTI1ZW0pIHtcbiAgLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyLmNzLWltYWdlLXRlYXNlci0tY29udGFpbmVyLXdpZHRoIC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlcyB7XG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xuICAgIHNjcm9sbC1wYWRkaW5nLWxlZnQ6IDEuNXJlbTtcbiAgICBzY3JvbGwtcGFkZGluZy1yaWdodDogMS41cmVtO1xuICB9XG59XG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IG5vLXByZWZlcmVuY2UpIHtcbiAgLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyIC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlcyB7XG4gICAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG4gIH1cbn1cbi5jcy1pbWFnZS10ZWFzZXItLXNsaWRlciAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXMtd3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5jcy1pbWFnZS10ZWFzZXItLXNsaWRlciAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXMge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXg6IDAgMCAxMDAlO1xuICBnYXA6IDA7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBwYWRkaW5nOiB2YXIoLS1nYXApIDA7XG4gIG92ZXJmbG93LXg6IGF1dG87XG4gIG92ZXJzY3JvbGwtYmVoYXZpb3ItaW5saW5lOiBjb250YWluO1xuICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XG59XG5Ac3VwcG9ydHMgKHNjcm9sbC1iZWhhdmlvcjogc21vb3RoKSB7XG4gIC5jcy1pbWFnZS10ZWFzZXItLXNsaWRlciAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXMge1xuICAgIHNjcm9sbC1zbmFwLXR5cGU6IHggbWFuZGF0b3J5O1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAuY3MtaW1hZ2UtdGVhc2VyLS1zbGlkZXIgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGVzIHtcbiAgICBvdmVyZmxvdzogLW1vei1zY3JvbGxiYXJzLW5vbmU7XG4gICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuICB9XG4gIC5jcy1pbWFnZS10ZWFzZXItLXNsaWRlciAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXM6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgfVxuICAuY3MtaW1hZ2UtdGVhc2VyLS1zbGlkZXIgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGVzOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG59XG4uY3MtaW1hZ2UtdGVhc2VyLS1zbGlkZXIgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZmxleDogMCAwIHZhcigtLXNpemUpO1xuICBtYXJnaW4tcmlnaHQ6IHZhcigtLWdhcCk7XG4gIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDtcbiAgbWluLXdpZHRoOiAwO1xufVxuLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyIC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlOmxhc3Qtb2YtdHlwZSB7XG4gIG1hcmdpbi1yaWdodDogMDtcbn1cbi5jcy1pbWFnZS10ZWFzZXItLXNsaWRlciAuY3MtaW1hZ2UtdGVhc2VyX19pbWFnZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQ3Ljk5ZW0pIHtcbiAgLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyLW1vYmlsZTpub3QoLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyKSB7XG4gICAgLS1nYXA6IDAuOHJlbTtcbiAgICAtLWJhc2Utc2l6ZTogY2FsYygxMDAlIC0gMHB4KTtcbiAgICAtLXNpemU6IHZhcigtLWJhc2Utc2l6ZSk7XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyLW1vYmlsZTpub3QoLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyKS5jcy1pbWFnZS10ZWFzZXItLWNvbnRhaW5lci13aWR0aCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xLjVyZW07XG4gICAgbWFyZ2luLXJpZ2h0OiAtMS41cmVtO1xuICB9XG4gIC5jcy1pbWFnZS10ZWFzZXItLXNsaWRlci1tb2JpbGU6bm90KC5jcy1pbWFnZS10ZWFzZXItLXNsaWRlcikuY3MtaW1hZ2UtdGVhc2VyLS1jb250YWluZXItd2lkdGggLmNzLWltYWdlLXRlYXNlcl9fc2xpZGVzIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XG4gICAgc2Nyb2xsLXBhZGRpbmctbGVmdDogMS41cmVtO1xuICAgIHNjcm9sbC1wYWRkaW5nLXJpZ2h0OiAxLjVyZW07XG4gIH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA0Ny45OWVtKSBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IG5vLXByZWZlcmVuY2UpIHtcbiAgLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyLW1vYmlsZTpub3QoLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyKSAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXMge1xuICAgIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xuICB9XG59XG5AbWVkaWEgKG1heC13aWR0aDogNDcuOTllbSkge1xuICAuY3MtaW1hZ2UtdGVhc2VyLS1zbGlkZXItbW9iaWxlOm5vdCguY3MtaW1hZ2UtdGVhc2VyLS1zbGlkZXIpIC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlcy13cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA0Ny45OWVtKSB7XG4gIC5jcy1pbWFnZS10ZWFzZXItLXNsaWRlci1tb2JpbGU6bm90KC5jcy1pbWFnZS10ZWFzZXItLXNsaWRlcikgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGVzIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgZ2FwOiAwO1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIHBhZGRpbmc6IHZhcigtLWdhcCkgMDtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIG92ZXJzY3JvbGwtYmVoYXZpb3ItaW5saW5lOiBjb250YWluO1xuICAgIHNjcm9sbGJhci13aWR0aDogdGhpbjtcbiAgfVxuICBAc3VwcG9ydHMgKHNjcm9sbC1iZWhhdmlvcjogc21vb3RoKSB7XG4gICAgLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyLW1vYmlsZTpub3QoLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyKSAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXMge1xuICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogeCBtYW5kYXRvcnk7XG4gICAgfVxuICB9XG59XG5AbWVkaWEgKG1heC13aWR0aDogNDcuOTllbSkgYW5kIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyLW1vYmlsZTpub3QoLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyKSAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXMge1xuICAgIG92ZXJmbG93OiAtbW96LXNjcm9sbGJhcnMtbm9uZTtcbiAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyLW1vYmlsZTpub3QoLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyKSAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXM6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgfVxuICAuY3MtaW1hZ2UtdGVhc2VyLS1zbGlkZXItbW9iaWxlOm5vdCguY3MtaW1hZ2UtdGVhc2VyLS1zbGlkZXIpIC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQ3Ljk5ZW0pIHtcbiAgLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyLW1vYmlsZTpub3QoLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyKSAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZmxleDogMCAwIHZhcigtLXNpemUpO1xuICAgIG1hcmdpbi1yaWdodDogdmFyKC0tZ2FwKTtcbiAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG4gICAgbWluLXdpZHRoOiAwO1xuICB9XG4gIC5jcy1pbWFnZS10ZWFzZXItLXNsaWRlci1tb2JpbGU6bm90KC5jcy1pbWFnZS10ZWFzZXItLXNsaWRlcikgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGU6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA0Ny45OWVtKSB7XG4gIC5jcy1pbWFnZS10ZWFzZXItLXNsaWRlci1tb2JpbGU6bm90KC5jcy1pbWFnZS10ZWFzZXItLXNsaWRlcikgLmNzLWltYWdlLXRlYXNlcl9faW1hZ2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAuY3MtaW1hZ2UtdGVhc2VyLS1zbGlkZXItbW9iaWxlOm5vdCguY3MtaW1hZ2UtdGVhc2VyLS1zbGlkZXIpIC5jcy1pbWFnZS10ZWFzZXJfX25hdixcbi5jcy1pbWFnZS10ZWFzZXItLXNsaWRlci1tb2JpbGU6bm90KC5jcy1pbWFnZS10ZWFzZXItLXNsaWRlcikgLmNzLWltYWdlLXRlYXNlcl9fcGFnaW5hdGlvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1saWdodCB7XG4gIC0tc2NoZW1lLWNvbG9yOiAjZmZmO1xuICAtLXNjaGVtZS1iYWNrZ3JvdW5kOiAjMjEyMTIxO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIHtcbiAgLS1zY2hlbWUtY29sb3I6ICMyMTIxMjE7XG4gIC0tc2NoZW1lLWJhY2tncm91bmQ6ICNmZmY7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZTpub3QoLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLWltYWdlLXVwbG9hZGVkKSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXNjaGVtZS1iYWNrZ3JvdW5kKTtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA0Ny45OWVtKSB7XG4gIC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlcy0tbW9iaWxlX3RleHQtaW1hZ2UgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLWltYWdlLXVwbG9hZGVkIHtcbiAgICBvcmRlcjogMTtcbiAgfVxuICAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXMtLW1vYmlsZV9pbWFnZS10ZXh0IC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1pbWFnZS11cGxvYWRlZCB7XG4gICAgb3JkZXI6IC0xO1xuICB9XG59XG5AbWVkaWEgKG1heC13aWR0aDogNDcuOTllbSkge1xuICAuY3MtaW1hZ2UtdGVhc2VyLS1hcy1saXN0LW1vYmlsZSAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXMge1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgfVxuICAuY3MtaW1hZ2UtdGVhc2VyLS1hcy1saXN0LW1vYmlsZSAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZSB7XG4gICAgbWFyZ2luOiAwIDAgMC44cmVtO1xuICB9XG4gIC5jcy1pbWFnZS10ZWFzZXItLWFzLWxpc3QtbW9iaWxlIC5jcy1pbWFnZS10ZWFzZXJfX3BhZ2luYXRpb24sXG4uY3MtaW1hZ2UtdGVhc2VyLS1hcy1saXN0LW1vYmlsZSAuY3MtaW1hZ2UtdGVhc2VyX19uYXYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbi5jcy1pbWFnZS10ZWFzZXJfX2xpbmsge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAxMDAlO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fbGluaywgLmNzLWltYWdlLXRlYXNlcl9fbGluazpob3ZlciwgLmNzLWltYWdlLXRlYXNlcl9fbGluazp2aXNpdGVkLCAuY3MtaW1hZ2UtdGVhc2VyX19saW5rOmFjdGl2ZSwgLmNzLWltYWdlLXRlYXNlcl9fbGluazpmb2N1cyB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX2ZpZ3VyZSB7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fY29udGVudC13cmFwcGVyIHtcbiAgY29sb3I6IHZhcigtLXNjaGVtZS1jb2xvcik7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19jb250ZW50LXdyYXBwZXItLXVuZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW46IC0ycmVtIDJyZW0gMDtcbiAgcGFkZGluZzogMnJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2NoZW1lLWJhY2tncm91bmQpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19jb250ZW50LXdyYXBwZXItLW92ZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nOiAycmVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3BpY3R1cmUgKyAuY3MtaW1hZ2UtdGVhc2VyX19jb250ZW50LXdyYXBwZXItLW92ZXIsIC5jcy1pbWFnZS10ZWFzZXItLXRlYXNlci1hbmQtdGV4dCAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0taW1hZ2UtdXBsb2FkZWQgLmNzLWltYWdlLXRlYXNlcl9fY29udGVudC13cmFwcGVyLS1vdmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19jb250ZW50LXdyYXBwZXItLWNvbnRlbnQtYWxpZ24teC0yIHtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX2NvbnRlbnQtd3JhcHBlci0tY29udGVudC1hbGlnbi14LTMge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX2NvbnRlbnQtd3JhcHBlci0tY29udGVudC1hbGlnbi15LTIge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fY29udGVudC13cmFwcGVyLS1jb250ZW50LWFsaWduLXktMyB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX2NvbnRlbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX190ZXh0LWNvbnRlbnQgKyAuY3MtaW1hZ2UtdGVhc2VyX19jdGEge1xuICBtYXJnaW4tdG9wOiAxZW0gIWltcG9ydGFudDtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3Nsb2dhbiB7XG4gIG1hcmdpbjogMDtcbiAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgZm9udC1zaXplOiB2YXIoLS1zbG9nYW4tZm9udC1zaXplKTtcbiAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICBoeXBoZW5zOiBhdXRvO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fZGVzY3JpcHRpb24ge1xuICBtYXJnaW46IDFlbSAwIDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjE7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZGVzY3JpcHRpb24tZm9udC1zaXplKTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX2N0YSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fY3RhIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDEuNHJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGxpbmUtaGVpZ2h0OiAxLjI3NWVtO1xuICBtYXJnaW46IDA7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBwYWRkaW5nOiAwLjc1ZW0gMWVtO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuNXMsIGJvcmRlci1jb2xvciAwLjVzLCBmaWxsIDAuNXMsIGNvbG9yIDAuNXM7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHotaW5kZXg6IDU7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fY3RhOmhvdmVyLCAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fY3RhOmZvY3VzLCAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fY3RhOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtZGFyayAuY3MtaW1hZ2UtdGVhc2VyX19jdGE6YmVmb3JlLCAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fY3RhOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0xcHg7XG4gIGJvdHRvbTogLTFweDtcbiAgcmlnaHQ6IC0xcHg7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fY3RhOmJlZm9yZSB7XG4gIHdpZHRoOiAzLjRlbTtcbiAgYm9yZGVyLXJhZGl1czogMCAwcHggMHB4IDA7XG4gIHotaW5kZXg6IC0xO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMGRlZywgdHJhbnNwYXJlbnQgMCUsIHRyYW5zcGFyZW50IDAlLCAjNjY2IDAlLCAjNjY2IDEwMCUpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX2N0YTphZnRlciB7XG4gIHdpZHRoOiAzZW07XG4gIG1pbi13aWR0aDogYXV0bztcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY2NjtcbiAgdHJhbnNpdGlvbjogd2lkdGggMC4yNXMgbGluZWFyO1xuICB6LWluZGV4OiAtMjtcbiAgYm9yZGVyLXJhZGl1czogMHB4O1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX2N0YTpob3ZlcjphZnRlciB7XG4gIHdpZHRoOiBjYWxjKDEwMCUgKyAycHgpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX2N0YTo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX2N0YSwgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX2N0YTp2aXNpdGVkIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3JkZXItcmFkaXVzOiAwcHg7XG4gIG91dGxpbmUtb2Zmc2V0OiAxcHg7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX2N0YSAqLCAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fY3RhOnZpc2l0ZWQgKiB7XG4gIGNvbG9yOiAjZmZmO1xuICBmaWxsOiAjZmZmO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX2N0YTpob3Zlcjpub3QoW2Rpc2FibGVkXSksIC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtZGFyayAuY3MtaW1hZ2UtdGVhc2VyX19jdGE6Zm9jdXM6bm90KFtkaXNhYmxlZF0pLCAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fY3RhOmFjdGl2ZTpub3QoW2Rpc2FibGVkXSkge1xuICBib3gtc2hhZG93OiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY2Njtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtZGFyayAuY3MtaW1hZ2UtdGVhc2VyX19jdGE6aG92ZXI6bm90KFtkaXNhYmxlZF0pICosIC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtZGFyayAuY3MtaW1hZ2UtdGVhc2VyX19jdGE6Zm9jdXM6bm90KFtkaXNhYmxlZF0pICosIC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtZGFyayAuY3MtaW1hZ2UtdGVhc2VyX19jdGE6YWN0aXZlOm5vdChbZGlzYWJsZWRdKSAqIHtcbiAgY29sb3I6ICNmZmY7XG4gIGZpbGw6ICNmZmY7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fY3RhW2Rpc2FibGVkXSB7XG4gIG9wYWNpdHk6IDAuNjU7XG4gIGN1cnNvcjogYXV0bztcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtbGlnaHQgLmNzLWltYWdlLXRlYXNlcl9fY3RhIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDEuNHJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGxpbmUtaGVpZ2h0OiAxLjI3NWVtO1xuICBtYXJnaW46IDA7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBwYWRkaW5nOiAwLjc1ZW0gMWVtO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuNXMsIGJvcmRlci1jb2xvciAwLjVzLCBmaWxsIDAuNXMsIGNvbG9yIDAuNXM7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHotaW5kZXg6IDU7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX2N0YTo6YmVmb3JlLCAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX2N0YTo6YWZ0ZXIge1xuICBjb250ZW50OiBub25lO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1saWdodCAuY3MtaW1hZ2UtdGVhc2VyX19jdGE6Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtbGlnaHQgLmNzLWltYWdlLXRlYXNlcl9fY3RhLCAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX2N0YTp2aXNpdGVkIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3JkZXItcmFkaXVzOiAwcHg7XG4gIG91dGxpbmUtb2Zmc2V0OiAxcHg7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYm9yZGVyOiAxcHggc29saWQgIzAwMDAwMDtcbiAgY29sb3I6ICMwMDAwMDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX2N0YSAqLCAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX2N0YTp2aXNpdGVkICoge1xuICBjb2xvcjogIzAwMDAwMDtcbiAgZmlsbDogIzAwMDAwMDtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtbGlnaHQgLmNzLWltYWdlLXRlYXNlcl9fY3RhOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1saWdodCAuY3MtaW1hZ2UtdGVhc2VyX19jdGE6Zm9jdXM6bm90KFtkaXNhYmxlZF0pLCAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX2N0YTphY3RpdmU6bm90KFtkaXNhYmxlZF0pIHtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBib3JkZXI6IDFweCBzb2xpZCAjNjY2O1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY2Njtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtbGlnaHQgLmNzLWltYWdlLXRlYXNlcl9fY3RhOmhvdmVyOm5vdChbZGlzYWJsZWRdKSAqLCAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX2N0YTpmb2N1czpub3QoW2Rpc2FibGVkXSkgKiwgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1saWdodCAuY3MtaW1hZ2UtdGVhc2VyX19jdGE6YWN0aXZlOm5vdChbZGlzYWJsZWRdKSAqIHtcbiAgY29sb3I6ICNmZmY7XG4gIGZpbGw6ICNmZmY7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX2N0YVtkaXNhYmxlZF0ge1xuICBvcGFjaXR5OiAwLjY1O1xuICBjdXJzb3I6IGF1dG87XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fY3RhLXNwYW4ge1xuICBtYXJnaW4tdG9wOiAwO1xuICB6LWluZGV4OiAxO1xuICBmb250LXdlaWdodDogNzAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbGluZS1oZWlnaHQ6IDEuMjc1ZW07XG4gIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgcGFkZGluZy1yaWdodDogMy43NWVtO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1saWdodCAuY3MtaW1hZ2UtdGVhc2VyX19jdGEtc3BhbiB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIHotaW5kZXg6IDE7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBsaW5lLWhlaWdodDogMS4yNzVlbTtcbiAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBwYWRkaW5nLXJpZ2h0OiAzLjc1ZW07XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fY3RhLWljb24ge1xuICBtYXgtd2lkdGg6IDFlbTtcbiAgbWF4LWhlaWdodDogMS40cmVtO1xuICB6LWluZGV4OiAyO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC01MCUsIDApO1xuICBtYXJnaW4tcmlnaHQ6IDA7XG4gIHJpZ2h0OiAwLjc1ZW07XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX2N0YS1pY29uIHtcbiAgbWF4LXdpZHRoOiAxZW07XG4gIG1heC1oZWlnaHQ6IDEuNHJlbTtcbiAgei1pbmRleDogMjtcbiAgaGVpZ2h0OiBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtNTAlLCAwKTtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICByaWdodDogMC43NWVtO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDMwZW0pIHtcbiAgLmNzLWltYWdlLXRlYXNlcl9fY3RhIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICB6LWluZGV4OiAxO1xuICAgIG1hcmdpbjogMS4yZW0gMCAwO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxLjJyZW07XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlcl9fY3RhLWljb24ge1xuICAgIHdpZHRoOiAxLjJyZW07XG4gICAgaGVpZ2h0OiAxLjRyZW07XG4gIH1cbn1cbi5jcy1pbWFnZS10ZWFzZXJfX292ZXJsYXksIC5jcy1pbWFnZS10ZWFzZXJfX2dyYWRpZW50IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX292ZXJsYXksIC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtbGlnaHQgLmNzLWltYWdlLXRlYXNlcl9fb3B0aW1pemVyLWNvbnRhaW5lciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyMTIxMjE7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fb3ZlcmxheSwgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX29wdGltaXplci1jb250YWluZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1saWdodCAuY3MtaW1hZ2UtdGVhc2VyX19ncmFkaWVudC0tZGlyZWN0aW9uLXgtMS5jcy1pbWFnZS10ZWFzZXJfX2dyYWRpZW50LS1kaXJlY3Rpb24teS0xIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzIxMjEyMSAwJSwgcmdiYSgzMywgMzMsIDMzLCAwKSA4NSUpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX2dyYWRpZW50LS1kaXJlY3Rpb24teC0xLmNzLWltYWdlLXRlYXNlcl9fZ3JhZGllbnQtLWRpcmVjdGlvbi15LTEge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZmZmIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDg1JSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX2dyYWRpZW50LS1kaXJlY3Rpb24teC0xLmNzLWltYWdlLXRlYXNlcl9fZ3JhZGllbnQtLWRpcmVjdGlvbi15LTIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICMyMTIxMjEgMCUsIHJnYmEoMzMsIDMzLCAzMywgMCkgODUlKTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtZGFyayAuY3MtaW1hZ2UtdGVhc2VyX19ncmFkaWVudC0tZGlyZWN0aW9uLXgtMS5jcy1pbWFnZS10ZWFzZXJfX2dyYWRpZW50LS1kaXJlY3Rpb24teS0yIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjZmZmIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDg1JSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX2dyYWRpZW50LS1kaXJlY3Rpb24teC0xLmNzLWltYWdlLXRlYXNlcl9fZ3JhZGllbnQtLWRpcmVjdGlvbi15LTMge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsICMyMTIxMjEgMCUsIHJnYmEoMzMsIDMzLCAzMywgMCkgODUlKTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtZGFyayAuY3MtaW1hZ2UtdGVhc2VyX19ncmFkaWVudC0tZGlyZWN0aW9uLXgtMS5jcy1pbWFnZS10ZWFzZXJfX2dyYWRpZW50LS1kaXJlY3Rpb24teS0zIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCAjZmZmIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDg1JSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX2dyYWRpZW50LS1kaXJlY3Rpb24teC0yLmNzLWltYWdlLXRlYXNlcl9fZ3JhZGllbnQtLWRpcmVjdGlvbi15LTEge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjMjEyMTIxIDAlLCByZ2JhKDMzLCAzMywgMzMsIDApIDg1JSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fZ3JhZGllbnQtLWRpcmVjdGlvbi14LTIuY3MtaW1hZ2UtdGVhc2VyX19ncmFkaWVudC0tZGlyZWN0aW9uLXktMSB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsICNmZmYgMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgODUlKTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtbGlnaHQgLmNzLWltYWdlLXRlYXNlcl9fZ3JhZGllbnQtLWRpcmVjdGlvbi14LTIuY3MtaW1hZ2UtdGVhc2VyX19ncmFkaWVudC0tZGlyZWN0aW9uLXktMiB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgIzIxMjEyMSAwJSwgcmdiYSgzMywgMzMsIDMzLCAwKSA4NSUpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX2dyYWRpZW50LS1kaXJlY3Rpb24teC0yLmNzLWltYWdlLXRlYXNlcl9fZ3JhZGllbnQtLWRpcmVjdGlvbi15LTIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNmZmYgMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgODUlKTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtbGlnaHQgLmNzLWltYWdlLXRlYXNlcl9fZ3JhZGllbnQtLWRpcmVjdGlvbi14LTIuY3MtaW1hZ2UtdGVhc2VyX19ncmFkaWVudC0tZGlyZWN0aW9uLXktMyB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLCAjMjEyMTIxIDAlLCByZ2JhKDMzLCAzMywgMzMsIDApIDg1JSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fZ3JhZGllbnQtLWRpcmVjdGlvbi14LTIuY3MtaW1hZ2UtdGVhc2VyX19ncmFkaWVudC0tZGlyZWN0aW9uLXktMyB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLCAjZmZmIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDg1JSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX2dyYWRpZW50LS1kaXJlY3Rpb24teC0zLmNzLWltYWdlLXRlYXNlcl9fZ3JhZGllbnQtLWRpcmVjdGlvbi15LTEge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoLTEzNWRlZywgIzIxMjEyMSAwJSwgcmdiYSgzMywgMzMsIDMzLCAwKSA4NSUpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX2dyYWRpZW50LS1kaXJlY3Rpb24teC0zLmNzLWltYWdlLXRlYXNlcl9fZ3JhZGllbnQtLWRpcmVjdGlvbi15LTEge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoLTEzNWRlZywgI2ZmZiAwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSA4NSUpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1saWdodCAuY3MtaW1hZ2UtdGVhc2VyX19ncmFkaWVudC0tZGlyZWN0aW9uLXgtMy5jcy1pbWFnZS10ZWFzZXJfX2dyYWRpZW50LS1kaXJlY3Rpb24teS0yIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KC05MGRlZywgIzIxMjEyMSAwJSwgcmdiYSgzMywgMzMsIDMzLCAwKSA4NSUpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX2dyYWRpZW50LS1kaXJlY3Rpb24teC0zLmNzLWltYWdlLXRlYXNlcl9fZ3JhZGllbnQtLWRpcmVjdGlvbi15LTIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoLTkwZGVnLCAjZmZmIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDg1JSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX2dyYWRpZW50LS1kaXJlY3Rpb24teC0zLmNzLWltYWdlLXRlYXNlcl9fZ3JhZGllbnQtLWRpcmVjdGlvbi15LTMge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCAjMjEyMTIxIDAlLCByZ2JhKDMzLCAzMywgMzMsIDApIDg1JSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fZ3JhZGllbnQtLWRpcmVjdGlvbi14LTMuY3MtaW1hZ2UtdGVhc2VyX19ncmFkaWVudC0tZGlyZWN0aW9uLXktMyB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgtNDVkZWcsICNmZmYgMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgODUlKTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX2ltYWdlLS1taXJyb3Ige1xuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19jb250ZW50LS1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIHBhZGRpbmc6IDJlbTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX29wdGltaXplci1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgei1pbmRleDogLTE7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fdGV4dC1jb250ZW50LS10ZXh0LXNoYWRvdy0wIHtcbiAgdGV4dC1zaGFkb3c6IDAgMCAyLjVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwKTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtZGFyayAuY3MtaW1hZ2UtdGVhc2VyX190ZXh0LWNvbnRlbnQtLXRleHQtc2hhZG93LTUge1xuICB0ZXh0LXNoYWRvdzogMCAwIDIuNXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX3RleHQtY29udGVudC0tdGV4dC1zaGFkb3ctMTAge1xuICB0ZXh0LXNoYWRvdzogMCAwIDIuNXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fdGV4dC1jb250ZW50LS10ZXh0LXNoYWRvdy0xNSB7XG4gIHRleHQtc2hhZG93OiAwIDAgMi41cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fdGV4dC1jb250ZW50LS10ZXh0LXNoYWRvdy0yMCB7XG4gIHRleHQtc2hhZG93OiAwIDAgMi41cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtZGFyayAuY3MtaW1hZ2UtdGVhc2VyX190ZXh0LWNvbnRlbnQtLXRleHQtc2hhZG93LTI1IHtcbiAgdGV4dC1zaGFkb3c6IDAgMCAyLjVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtZGFyayAuY3MtaW1hZ2UtdGVhc2VyX190ZXh0LWNvbnRlbnQtLXRleHQtc2hhZG93LTMwIHtcbiAgdGV4dC1zaGFkb3c6IDAgMCAyLjVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX3RleHQtY29udGVudC0tdGV4dC1zaGFkb3ctMzUge1xuICB0ZXh0LXNoYWRvdzogMCAwIDIuNXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzUpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX3RleHQtY29udGVudC0tdGV4dC1zaGFkb3ctNDAge1xuICB0ZXh0LXNoYWRvdzogMCAwIDIuNXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fdGV4dC1jb250ZW50LS10ZXh0LXNoYWRvdy00NSB7XG4gIHRleHQtc2hhZG93OiAwIDAgMi41cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40NSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fdGV4dC1jb250ZW50LS10ZXh0LXNoYWRvdy01MCB7XG4gIHRleHQtc2hhZG93OiAwIDAgMi41cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtZGFyayAuY3MtaW1hZ2UtdGVhc2VyX190ZXh0LWNvbnRlbnQtLXRleHQtc2hhZG93LTU1IHtcbiAgdGV4dC1zaGFkb3c6IDAgMCAyLjVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU1KTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtZGFyayAuY3MtaW1hZ2UtdGVhc2VyX190ZXh0LWNvbnRlbnQtLXRleHQtc2hhZG93LTYwIHtcbiAgdGV4dC1zaGFkb3c6IDAgMCAyLjVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX3RleHQtY29udGVudC0tdGV4dC1zaGFkb3ctNjUge1xuICB0ZXh0LXNoYWRvdzogMCAwIDIuNXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjUpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX3RleHQtY29udGVudC0tdGV4dC1zaGFkb3ctNzAge1xuICB0ZXh0LXNoYWRvdzogMCAwIDIuNXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fdGV4dC1jb250ZW50LS10ZXh0LXNoYWRvdy03NSB7XG4gIHRleHQtc2hhZG93OiAwIDAgMi41cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWRhcmsgLmNzLWltYWdlLXRlYXNlcl9fdGV4dC1jb250ZW50LS10ZXh0LXNoYWRvdy04MCB7XG4gIHRleHQtc2hhZG93OiAwIDAgMi41cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtZGFyayAuY3MtaW1hZ2UtdGVhc2VyX190ZXh0LWNvbnRlbnQtLXRleHQtc2hhZG93LTg1IHtcbiAgdGV4dC1zaGFkb3c6IDAgMCAyLjVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtZGFyayAuY3MtaW1hZ2UtdGVhc2VyX190ZXh0LWNvbnRlbnQtLXRleHQtc2hhZG93LTkwIHtcbiAgdGV4dC1zaGFkb3c6IDAgMCAyLjVyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX3RleHQtY29udGVudC0tdGV4dC1zaGFkb3ctOTUge1xuICB0ZXh0LXNoYWRvdzogMCAwIDIuNXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1kYXJrIC5jcy1pbWFnZS10ZWFzZXJfX3RleHQtY29udGVudC0tdGV4dC1zaGFkb3ctMTAwIHtcbiAgdGV4dC1zaGFkb3c6IDAgMCAyLjVyZW0gd2hpdGU7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX3RleHQtY29udGVudC0tdGV4dC1zaGFkb3ctMCB7XG4gIHRleHQtc2hhZG93OiAwIDAgMi41cmVtIHJnYmEoMzMsIDMzLCAzMywgMCk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX3RleHQtY29udGVudC0tdGV4dC1zaGFkb3ctNSB7XG4gIHRleHQtc2hhZG93OiAwIDAgMi41cmVtIHJnYmEoMzMsIDMzLCAzMywgMC4wNSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX3RleHQtY29udGVudC0tdGV4dC1zaGFkb3ctMTAge1xuICB0ZXh0LXNoYWRvdzogMCAwIDIuNXJlbSByZ2JhKDMzLCAzMywgMzMsIDAuMSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX3RleHQtY29udGVudC0tdGV4dC1zaGFkb3ctMTUge1xuICB0ZXh0LXNoYWRvdzogMCAwIDIuNXJlbSByZ2JhKDMzLCAzMywgMzMsIDAuMTUpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1saWdodCAuY3MtaW1hZ2UtdGVhc2VyX190ZXh0LWNvbnRlbnQtLXRleHQtc2hhZG93LTIwIHtcbiAgdGV4dC1zaGFkb3c6IDAgMCAyLjVyZW0gcmdiYSgzMywgMzMsIDMzLCAwLjIpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1saWdodCAuY3MtaW1hZ2UtdGVhc2VyX190ZXh0LWNvbnRlbnQtLXRleHQtc2hhZG93LTI1IHtcbiAgdGV4dC1zaGFkb3c6IDAgMCAyLjVyZW0gcmdiYSgzMywgMzMsIDMzLCAwLjI1KTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtbGlnaHQgLmNzLWltYWdlLXRlYXNlcl9fdGV4dC1jb250ZW50LS10ZXh0LXNoYWRvdy0zMCB7XG4gIHRleHQtc2hhZG93OiAwIDAgMi41cmVtIHJnYmEoMzMsIDMzLCAzMywgMC4zKTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtbGlnaHQgLmNzLWltYWdlLXRlYXNlcl9fdGV4dC1jb250ZW50LS10ZXh0LXNoYWRvdy0zNSB7XG4gIHRleHQtc2hhZG93OiAwIDAgMi41cmVtIHJnYmEoMzMsIDMzLCAzMywgMC4zNSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX3RleHQtY29udGVudC0tdGV4dC1zaGFkb3ctNDAge1xuICB0ZXh0LXNoYWRvdzogMCAwIDIuNXJlbSByZ2JhKDMzLCAzMywgMzMsIDAuNCk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX3RleHQtY29udGVudC0tdGV4dC1zaGFkb3ctNDUge1xuICB0ZXh0LXNoYWRvdzogMCAwIDIuNXJlbSByZ2JhKDMzLCAzMywgMzMsIDAuNDUpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1saWdodCAuY3MtaW1hZ2UtdGVhc2VyX190ZXh0LWNvbnRlbnQtLXRleHQtc2hhZG93LTUwIHtcbiAgdGV4dC1zaGFkb3c6IDAgMCAyLjVyZW0gcmdiYSgzMywgMzMsIDMzLCAwLjUpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1saWdodCAuY3MtaW1hZ2UtdGVhc2VyX190ZXh0LWNvbnRlbnQtLXRleHQtc2hhZG93LTU1IHtcbiAgdGV4dC1zaGFkb3c6IDAgMCAyLjVyZW0gcmdiYSgzMywgMzMsIDMzLCAwLjU1KTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtbGlnaHQgLmNzLWltYWdlLXRlYXNlcl9fdGV4dC1jb250ZW50LS10ZXh0LXNoYWRvdy02MCB7XG4gIHRleHQtc2hhZG93OiAwIDAgMi41cmVtIHJnYmEoMzMsIDMzLCAzMywgMC42KTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtbGlnaHQgLmNzLWltYWdlLXRlYXNlcl9fdGV4dC1jb250ZW50LS10ZXh0LXNoYWRvdy02NSB7XG4gIHRleHQtc2hhZG93OiAwIDAgMi41cmVtIHJnYmEoMzMsIDMzLCAzMywgMC42NSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX3RleHQtY29udGVudC0tdGV4dC1zaGFkb3ctNzAge1xuICB0ZXh0LXNoYWRvdzogMCAwIDIuNXJlbSByZ2JhKDMzLCAzMywgMzMsIDAuNyk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX3RleHQtY29udGVudC0tdGV4dC1zaGFkb3ctNzUge1xuICB0ZXh0LXNoYWRvdzogMCAwIDIuNXJlbSByZ2JhKDMzLCAzMywgMzMsIDAuNzUpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1saWdodCAuY3MtaW1hZ2UtdGVhc2VyX190ZXh0LWNvbnRlbnQtLXRleHQtc2hhZG93LTgwIHtcbiAgdGV4dC1zaGFkb3c6IDAgMCAyLjVyZW0gcmdiYSgzMywgMzMsIDMzLCAwLjgpO1xufVxuLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUtLXNjaGVtZS1saWdodCAuY3MtaW1hZ2UtdGVhc2VyX190ZXh0LWNvbnRlbnQtLXRleHQtc2hhZG93LTg1IHtcbiAgdGV4dC1zaGFkb3c6IDAgMCAyLjVyZW0gcmdiYSgzMywgMzMsIDMzLCAwLjg1KTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtbGlnaHQgLmNzLWltYWdlLXRlYXNlcl9fdGV4dC1jb250ZW50LS10ZXh0LXNoYWRvdy05MCB7XG4gIHRleHQtc2hhZG93OiAwIDAgMi41cmVtIHJnYmEoMzMsIDMzLCAzMywgMC45KTtcbn1cbi5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlLS1zY2hlbWUtbGlnaHQgLmNzLWltYWdlLXRlYXNlcl9fdGV4dC1jb250ZW50LS10ZXh0LXNoYWRvdy05NSB7XG4gIHRleHQtc2hhZG93OiAwIDAgMi41cmVtIHJnYmEoMzMsIDMzLCAzMywgMC45NSk7XG59XG4uY3MtaW1hZ2UtdGVhc2VyX19zbGlkZS0tc2NoZW1lLWxpZ2h0IC5jcy1pbWFnZS10ZWFzZXJfX3RleHQtY29udGVudC0tdGV4dC1zaGFkb3ctMTAwIHtcbiAgdGV4dC1zaGFkb3c6IDAgMCAyLjVyZW0gIzIxMjEyMTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTllbSkge1xuICAuY3MtaW1hZ2UtdGVhc2VyLS1pY29uIHtcbiAgICAtLWdhcDogMC44cmVtO1xuICAgIC0tYmFzZS1zaXplOiBjYWxjKDEwMCUgLSAwcHgpO1xuICAgIC0tc2l6ZTogdmFyKC0tYmFzZS1zaXplKTtcbiAgfVxuICAuY3MtaW1hZ2UtdGVhc2VyLS1pY29uLmNzLWltYWdlLXRlYXNlci0tY29udGFpbmVyLXdpZHRoIHtcbiAgICBtYXJnaW4tbGVmdDogLTEuNXJlbTtcbiAgICBtYXJnaW4tcmlnaHQ6IC0xLjVyZW07XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlci0taWNvbi5jcy1pbWFnZS10ZWFzZXItLWNvbnRhaW5lci13aWR0aCAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXMge1xuICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcbiAgICBzY3JvbGwtcGFkZGluZy1sZWZ0OiAxLjVyZW07XG4gICAgc2Nyb2xsLXBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIGFuZCAobWF4LXdpZHRoOiA2My45OWVtKSBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IG5vLXByZWZlcmVuY2UpIHtcbiAgLmNzLWltYWdlLXRlYXNlci0taWNvbiAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXMge1xuICAgIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkgYW5kIChtYXgtd2lkdGg6IDYzLjk5ZW0pIHtcbiAgLmNzLWltYWdlLXRlYXNlci0taWNvbiAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXMtd3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkgYW5kIChtYXgtd2lkdGg6IDYzLjk5ZW0pIHtcbiAgLmNzLWltYWdlLXRlYXNlci0taWNvbiAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXMge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBnYXA6IDA7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgcGFkZGluZzogdmFyKC0tZ2FwKSAwO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgb3ZlcnNjcm9sbC1iZWhhdmlvci1pbmxpbmU6IGNvbnRhaW47XG4gICAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluO1xuICB9XG4gIEBzdXBwb3J0cyAoc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGgpIHtcbiAgICAuY3MtaW1hZ2UtdGVhc2VyLS1pY29uIC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlcyB7XG4gICAgICBzY3JvbGwtc25hcC10eXBlOiB4IG1hbmRhdG9yeTtcbiAgICB9XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTllbSkgYW5kIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgLmNzLWltYWdlLXRlYXNlci0taWNvbiAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXMge1xuICAgIG92ZXJmbG93OiAtbW96LXNjcm9sbGJhcnMtbm9uZTtcbiAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlci0taWNvbiAuY3MtaW1hZ2UtdGVhc2VyX19zbGlkZXM6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgfVxuICAuY3MtaW1hZ2UtdGVhc2VyLS1pY29uIC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIGFuZCAobWF4LXdpZHRoOiA2My45OWVtKSB7XG4gIC5jcy1pbWFnZS10ZWFzZXItLWljb24gLmNzLWltYWdlLXRlYXNlcl9fc2xpZGUge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZsZXg6IDAgMCB2YXIoLS1zaXplKTtcbiAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLWdhcCk7XG4gICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0O1xuICAgIG1pbi13aWR0aDogMDtcbiAgfVxuICAuY3MtaW1hZ2UtdGVhc2VyLS1pY29uIC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkgYW5kIChtYXgtd2lkdGg6IDYzLjk5ZW0pIHtcbiAgLmNzLWltYWdlLXRlYXNlci0taWNvbiAuY3MtaW1hZ2UtdGVhc2VyX19pbWFnZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiAwcHgpIGFuZCAobWF4LXdpZHRoOiA2My45OWVtKSB7XG4gIC5jcy1pbWFnZS10ZWFzZXItLWljb24ge1xuICAgIC0tc2l6ZTogY2FsYyhcbiAgICAgICAgdmFyKC0tYmFzZS1zaXplKSAvIDIgLSAoKFxuICAgICAgICAgICAgICAgICAgICAgICAgMSAqIHZhcigtLWdhcClcbiAgICAgICAgICAgICAgICAgICAgKSAvIDIpXG4gICAgKSAhaW1wb3J0YW50O1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMjMuMTI1ZW0pIGFuZCAobWF4LXdpZHRoOiA2My45OWVtKSB7XG4gIC5jcy1pbWFnZS10ZWFzZXItLWljb24ge1xuICAgIC0tc2l6ZTogY2FsYyhcbiAgICAgICAgdmFyKC0tYmFzZS1zaXplKSAvIDIgLSAoKFxuICAgICAgICAgICAgICAgICAgICAgICAgMSAqIHZhcigtLWdhcClcbiAgICAgICAgICAgICAgICAgICAgKSAvIDIpXG4gICAgKSAhaW1wb3J0YW50O1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMzBlbSkgYW5kIChtYXgtd2lkdGg6IDYzLjk5ZW0pIHtcbiAgLmNzLWltYWdlLXRlYXNlci0taWNvbiB7XG4gICAgLS1zaXplOiBjYWxjKFxuICAgICAgICB2YXIoLS1iYXNlLXNpemUpIC8gMyAtICgoXG4gICAgICAgICAgICAgICAgICAgICAgICAyICogdmFyKC0tZ2FwKVxuICAgICAgICAgICAgICAgICAgICApIC8gMylcbiAgICApICFpbXBvcnRhbnQ7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTllbSkge1xuICAuY3MtaW1hZ2UtdGVhc2VyLS1pY29uIHtcbiAgICAtLXNpemU6IGNhbGMoXG4gICAgICAgIHZhcigtLWJhc2Utc2l6ZSkgLyA1IC0gKChcbiAgICAgICAgICAgICAgICAgICAgICAgIDQgKiB2YXIoLS1nYXApXG4gICAgICAgICAgICAgICAgICAgICkgLyA1KVxuICAgICkgIWltcG9ydGFudDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIGFuZCAobWF4LXdpZHRoOiA2My45OWVtKSBhbmQgKGhvdmVyOiBob3ZlcikgYW5kIChwb2ludGVyOiBmaW5lKSB7XG4gIC5jcy1pbWFnZS10ZWFzZXItLWljb24uY3MtaW1hZ2UtdGVhc2VyLS1zbGlkZXItbW9iaWxlOm5vdCguY3MtaW1hZ2UtdGVhc2VyLS1zbGlkZXIpIC5jcy1pbWFnZS10ZWFzZXJfX25hdiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSBhbmQgKG1heC13aWR0aDogNjMuOTllbSkge1xuICAuY3MtaW1hZ2UtdGVhc2VyLS1pY29uLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyLW1vYmlsZTpub3QoLmNzLWltYWdlLXRlYXNlci0tc2xpZGVyKSAuY3MtaW1hZ2UtdGVhc2VyX19wYWdpbmF0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG59XG4uY3MtaW1hZ2UtdGVhc2VyLS1pY29uIC5jcy1pbWFnZS10ZWFzZXJfX3Nsb2dhbiB7XG4gIC0tc2xvZ2FuLWZvbnQtc2l6ZTogMS42cmVtO1xufVxuLmNzLWltYWdlLXRlYXNlci0taWNvbiAuY3MtaW1hZ2UtdGVhc2VyX19kZXNjcmlwdGlvbiB7XG4gIG1hcmdpbi10b3A6IDAuNWVtO1xufVxuLmNzLWltYWdlLXRlYXNlci0taWNvbiAuY3MtaW1hZ2UtdGVhc2VyX19jdGEge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmNzLWltYWdlLXRlYXNlci0taWNvbiAuY3MtaW1hZ2UtdGVhc2VyX19jb250ZW50LXdyYXBwZXItLXVuZGVyIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgcGFkZGluZzogMXJlbTtcbn1cbi5jcy1pbWFnZS10ZWFzZXItLWljb24gLmNzLWltYWdlLXRlYXNlcl9fY29udGVudC13cmFwcGVyLS1jdGEtb25seSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAuY3MtaW1hZ2UtdGVhc2VyLS1tb3NhaWMgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGVzLS1tb3NhaWMtc2NlbmFyaW8tMSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMmZyKSBtaW5tYXgoMCwgMWZyKTtcbiAgfVxuICAuY3MtaW1hZ2UtdGVhc2VyLS1tb3NhaWMgLmNzLWltYWdlLXRlYXNlcl9fc2xpZGVzLS1tb3NhaWMtc2NlbmFyaW8tMiB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSBtaW5tYXgoMCwgMmZyKTtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQ3Ljk5ZW0pIHtcbiAgLmNzLWltYWdlLXRlYXNlci0tdGVhc2VyLWFuZC10ZXh0IC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gIH1cbiAgLmNzLWltYWdlLXRlYXNlci0tdGVhc2VyLWFuZC10ZXh0IC5jcy1pbWFnZS10ZWFzZXJfX3NsaWRlIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgfVxufVxuLmNzLWltYWdlLXRlYXNlci0taW5zdGFncmFtLWZlZWQgLmNzLWltYWdlLXRlYXNlcl9fcGljdHVyZSB7XG4gIGhlaWdodDogMTAwJTtcbn1cbi5jcy1pbWFnZS10ZWFzZXItLWluc3RhZ3JhbS1mZWVkIC5jcy1pbWFnZS10ZWFzZXJfX2ltYWdlIHtcbiAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjRmNDtcbn1cblxuLmNzLWNvbnRhaW5lci0taW1hZ2UtdGVhc2VyIHtcbiAgbWFyZ2luOiAwIDAgM3JlbTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gIC5jcy1jb250YWluZXItLWltYWdlLXRlYXNlciB7XG4gICAgbWFyZ2luOiAwIDAgNHJlbTtcbiAgfVxufVxuLmNzLWNvbnRhaW5lci0taW1hZ2UtdGVhc2VyLS1za2lwLXNwYWNpbmcge1xuICBtYXJnaW46IDA7XG59XG5cbi5jcy1jb250YWluZXItLWdyaWQtdGVhc2VyIHtcbiAgbWFyZ2luOiAwO1xufVxuXG4uY3MtY29udGFpbmVyLS1pbWFnZS10ZWFzZXItd2luZG93LXdpZHRoIHtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuLmNzLWNvbnRhaW5lci0taW1hZ2UtdGVhc2VyLXdpbmRvdy13aWR0aCAuY3MtY29udGFpbmVyX19pbm5lciB7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cblxuLmNzLWNvbnRhaW5lci0taW1hZ2UtdGVhc2VyLXNsaWRlciB7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgcGFkZGluZy1yaWdodDogMDtcbn0iLCJAaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvaW1hZ2UtdGVhc2VyL2Z1bmN0aW9ucy9nZXQtZ3JhZGllbnQtYW5nbGUnO1xuXG5AbWl4aW4gdGVhc2VyLWdyYWRpZW50LW92ZXJsYXkoXG4gICAgJHg6IDEsXG4gICAgJHk6IDEsXG4gICAgJGNvbG9yOiAkY29sb3JfYmFja2dyb3VuZC03MDAsXG4gICAgJGdyYWRpZW50LXJhbmdlOiA4NSVcbikge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgZ2V0LWdyYWRpZW50LWFuZ2xlKCR4LCAkeSksXG4gICAgICAgICRjb2xvciAwJSxcbiAgICAgICAgcmdiYSgkY29sb3IsIDApICRncmFkaWVudC1yYW5nZVxuICAgICk7XG59XG4iLCJAbWl4aW4gb3B0aW1pemVyLXRleHQtc2hhZG93KFxuICAgICRjb2xvcjogJGNvbG9yX2JhY2tncm91bmQtMjAwLFxuICAgICR0ZXh0LXNoYWRvdy1vZmZzZXQ6IDAgMCAyNXB4LFxuICAgICRzdGVwOiA1XG4pIHtcbiAgICBAZm9yICRpIGZyb20gMCB0aHJvdWdoIGNlaWwoMTAwIC8gJHN0ZXApIHtcbiAgICAgICAgJHZhbHVlOiAkaSAqICRzdGVwO1xuXG4gICAgICAgICYtI3skdmFsdWV9IHtcbiAgICAgICAgICAgIHRleHQtc2hhZG93OiAjeyR0ZXh0LXNoYWRvdy1vZmZzZXR9IHJnYmEoJGNvbG9yLCAoJHZhbHVlIC8gMTAwKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaW1wb3J0ICdjb25maWcvdmFyaWFibGVzJztcbkBpbXBvcnQgJ2NvbmZpZy9icmVha3BvaW50cyc7XG5AaW1wb3J0ICd2ZW5kb3JzL2luY2x1ZGUtbWVkaWEnO1xuQGltcG9ydCAnZXRjL3ZpZXcuc2Nzcyc7XG5AaW1wb3J0ICd1dGlscy9kZWVwLWdldC9kZWVwLWdldC5zY3NzJztcbkBpbXBvcnQgJ3V0aWxzL2NvbXBvbmVudC1zcGFjaW5nJztcblxuQGltcG9ydCAnY29tcG9uZW50cy9fc2xpZGVyL21peGluJztcblxuLyoqXG4gKiBJdCBpcyBpbnRlbmRlZCwgdG8gbm90IHVzZSB0aGUgc2FtZSBjb25maWcgcGF0dGVybiAoanMvY29ubHVtbnNDb25maWcpIGFzIGZvciBvdGhlciBzbGlkZXItYmFzZWQgY29tcG9uZXRzLFxuICogYmVjYXVzZSBQcm9kdWN0cyBDYXJvdXNlbHMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgY29uZmlnIGFzIHByb2R1Y3QgZ3JpZCBmb3IgY29uc2lzdGVuY3kuXG4gKiBJZiBjdXN0b20gY29sdW1ucyBjb25maWcgaXMgbmVlZGVkLCByZWRlZmluZSBpdC5cbiAqL1xuJHByb2R1Y3RzLWNhcm91c2VsX2l0ZW0tcGVyLXJvdzogZGVlcC1nZXQoXG4gICAgJHZpZXcteG1sLFxuICAgIHZhcnMsXG4gICAgTWFnZVN1aXRlX0NvbnRlbnRDb25zdHJ1Y3RvcixcbiAgICBjb2x1bW5zLFxuICAgIG9uZS1jb2x1bW5cbikgIWRlZmF1bHQ7XG5cbiRwcm9kdWN0cy1jYXJvdXNlbF9tb2JpbGUtZ2FwOiAwLjhyZW0gIWRlZmF1bHQ7XG4kcHJvZHVjdHMtY2Fyb3VzZWxfZGVza3RvcC1nYXA6IDAuOHJlbSAhZGVmYXVsdDtcbiRwcm9kdWN0cy1jYXJvdXNlbF9uZXh0LXNsaWRlLXZpc2libGU6IDBweCAhZGVmYXVsdDsgLy8gaXQgd2lsbCBiZSB0aGlzIHZhbHVlICsgcGFnZS1ndXR0ZXJcblxuLiN7JG5zfXByb2R1Y3RzLWNhcm91c2VsIHtcbiAgICAkcm9vdDogJjtcblxuICAgIEBpbmNsdWRlIGNvbXBvbmVudC1zcGFjaW5nKCk7XG5cbiAgICBAaW5jbHVkZSBzbGlkZXIoXG4gICAgICAgICRjb2x1bW5zLWNvbmZpZzogJHByb2R1Y3RzLWNhcm91c2VsX2l0ZW0tcGVyLXJvdyxcbiAgICAgICAgJG0tZ2FwOiAkcHJvZHVjdHMtY2Fyb3VzZWxfbW9iaWxlLWdhcCxcbiAgICAgICAgJGQtZ2FwOiAkcHJvZHVjdHMtY2Fyb3VzZWxfZGVza3RvcC1nYXAsXG4gICAgICAgICRuZXh0LXZpc2libGU6ICRwcm9kdWN0cy1jYXJvdXNlbF9uZXh0LXNsaWRlLXZpc2libGUsXG4gICAgICAgICRyb290OiAkcm9vdFxuICAgICk7XG5cbiAgICAmX193cmFwcGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgIH1cbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndmVuZG9ycy9pbmNsdWRlLW1lZGlhJztcbkBpbXBvcnQgJ3V0aWxzL2NvbXBvbmVudC1zcGFjaW5nJztcblxuLyoqXG4gKiBHYXAgYmV0d2VlbiBjb2x1bW5zIChhbGwgQ1NTIHVuaXRzIGFsbG93ZWQpIFtFeGFtcGxlOiAxLjVyZW1dXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jb2x1bW4tZ2FwXG4gKi9cbiRwYXJhZ3JhcGhfY29sdW1uLWdhcDogNnJlbSAhZGVmYXVsdDtcbi8qKlxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sdW1uLXJ1bGVcbiAqL1xuJHBhcmFncmFwaF9jb2x1bW4tcnVsZTogMXB4IHNvbGlkICRjb2xvcl9ib3JkZXItNTAwICFkZWZhdWx0O1xuXG4uI3skbnN9cGFyYWdyYXBoIHtcbiAgICBjb2x1bW4tZ2FwOiAkcGFyYWdyYXBoX2NvbHVtbi1nYXA7XG4gICAgY29sdW1uLXJ1bGU6ICRwYXJhZ3JhcGhfY29sdW1uLXJ1bGU7XG4gICAgQGluY2x1ZGUgY29tcG9uZW50LXNwYWNpbmcoKTtcblxuICAgIGltZyB7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XG4gICAgICAgICYtLWNvbHMtMixcbiAgICAgICAgJi0tY29scy0zLFxuICAgICAgICAmLS1jb2xzLTQge1xuICAgICAgICAgICAgY29sdW1uLWNvdW50OiAyO1xuXG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEoJz49bGFwdG9wJykge1xuICAgICAgICAmLS1jb2xzLTMsXG4gICAgICAgICYtLWNvbHMtNCB7XG4gICAgICAgICAgICBjb2x1bW4tY291bnQ6IDM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYSgnPj1sYXB0b3BMZycpIHtcbiAgICAgICAgJi0tY29scy00IHtcbiAgICAgICAgICAgIGNvbHVtbi1jb3VudDogNDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLW1vZGUtb3B0aW1hbCB7XG4gICAgICAgIG1heC13aWR0aDogNDBlbTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgY29sdW1uLWNvdW50OiBpbml0aWFsO1xuICAgIH1cbn1cbiIsIkBpbXBvcnQgJ2NvbmZpZy92YXJpYWJsZXMnO1xuQGltcG9ydCAndXRpbHMvY29tcG9uZW50LXNwYWNpbmcnO1xuXG4kc2VwYXJhdG9yX2NvbG9yOiAkY29sb3JfYm9yZGVyLTUwMCAhZGVmYXVsdDtcbiRzZXBhcmF0b3Jfc3R5bGU6IDFweCBzb2xpZCAkc2VwYXJhdG9yX2NvbG9yICFkZWZhdWx0O1xuXG4uI3skbnN9c2VwYXJhdG9yIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci10b3A6ICRzZXBhcmF0b3Jfc3R5bGU7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgQGluY2x1ZGUgY29tcG9uZW50LXNwYWNpbmcoKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBQUE7QUNBQTs7O0FBQUE7QUR5QkE7O0FBQUE7QUF6QkE7O0FBQUE7QUNBQTs7O0FBQUE7QUR5QkE7O0FBQUE7QUV6QkE7O0FBQUE7QUFRQTtBQStCQTtBQ2hDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFtQkE7QUFDQTtBQWpCQTs7O0FBR0E7QUFtQkE7QUFDQTtBQWpCQTtBQ2pCQTtBRG1CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbUJBO0FBQ0E7QUFqQkE7QURQQTtBQUNBO0FBQ0E7QUMyQkE7QUFDQTtBQW5CQTs7OztBQUlBO0FBcUJBO0FBQ0E7QUFuQkE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQW9CQTtBQWxCQTtBQUVBO0FBQ0E7QUFtQkE7QUFDQTtBQWZBO0FBRUE7QUFDQTtBQVFBO0FBU0E7QUFoQkE7QUFFQTtBQUNBO0FBQ0E7QUFpQkE7QUFiQTtBQUlBO0FBWUE7QUFDQTtBQVBBO0FBQ0E7QUFTQTtBSHRGQTs7QUFBQTtBQ0FBOzs7QUFBQTtBRHlCQTs7QUFBQTtB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a0I0QkE7QUFDQTtBbEIxQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBa0JzQkE7QWxCSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBa0JGQTtBdkRtZEE7QXFDeGRBO0FBVUE7QWtCREE7QUFDQTtBbEJHQTtBQUNBO0FrQkRBO0FsQklBO0FBQ0E7QWtCRkE7QWxCTUE7QUFDQTtBa0JKQTtBbEJTQTtBQUNBO0FrQlBBO0FsQllBO0FBQ0E7QWtCVkE7QWxCYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBa0JYQTtBbEJhQTtBQUNBO0FrQlhBO0FsQmVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0E1QmhJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QThDcUhBO0F2RG1hQTtBcUN2YUE7QTVCN0dBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0E4Q3FIQTtBQUNBO0FsQlFBO0FDeElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUQ2SEE7QUFDQTtBQUNBO0FBZ0JBO0FrQlRBO0F2RGtZQTtBcUM5WUE7QUFVQTtBa0JNQTtBQUNBO0FsQk9BO0FDM0lBO0FBQ0E7QUQ2SUE7QWtCTEE7QWxCU0E7QUM3SUE7QUFDQTtBQUNBO0FpQnVJQTtBbEJRQTtBQzNJQTtBQUNBO0FpQnNJQTtBbEJRQTtBQUNBO0FrQk5BO0FsQjZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QWtCM0JBO0FsQitCQTtBQUNBO0FBQ0E7QWtCN0JBO0F2RGlXQTtBcUN0VUE7QUFLQTtBa0I1QkE7QUFDQTtBdkQ0VkE7QXFDdFVBO0FBU0E7QWtCM0JBO0FBQ0E7QWxCK0JBO0FBQ0E7QUFDQTtBa0I3QkE7QWxCZ0NBO0FBQ0E7QWtCOUJBO0FsQmlDQTtBQUNBO0FBQ0E7QWtCL0JBO0FsQmtDQTtBQUNBO0FrQmhDQTtB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBSUE7QUFBQTtBQUNBO0FBR0E7OztBQUlBO0FBRUE7QUFIQTtBQUNBO0FBTUE7OztBQUlBO0FBQ0E7QUFDQTtBQUxBO0FBQ0E7QUFRQTtBQUVBOzs7QUFJQTtBQVJBO0FBQ0E7QUFhQTs7O0FBSUE7QUFFQTtBQWJBO0FBQ0E7QUFnQkE7OztBQUlBO0FBRUE7QUFFQTtBQWpCQTtBQUNBO0FBb0JBOzs7QUFJQTtBQW5CQTtBQUNBO0FBc0JBOzs7QUFJQTtBQXJCQTtBQUNBO0FBd0JBOzs7QUFJQTtBQUVBO0FBeEJBO0FBQ0E7QUEyQkE7OztBQUlBO0FBMUJBO0FBQ0E7QUE2QkE7OztBQUlBO0FBRUE7QUE3QkE7QUFDQTtBQWdDQTtBQUVBOzs7QUFJQTtBQWhDQTtBQUNBO0FBcUNBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBeERBO0FBQ0E7QUEyREE7QUFDQTtBQXpEQTtBQUNBO0FBMkRBO0FBQ0E7QUF6REE7QUFDQTtBQTJEQTtBQUNBO0FBekRBO0FBQ0E7QUEyREE7O0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQXpEQTtBQUNBO0FBMkRBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF6REE7QUFDQTtBQTJEQTtBQUNBO0FBekRBO0FBQ0E7QUEyREE7QUFDQTtBQUNBO0FBekRBO0FBQ0E7QUEyREE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF6REE7QUFDQTtBQTJEQTs7QUFFQTtBQUNBO0FBekRBO0FBQ0E7QUEyREE7O0FBRUE7QUFDQTtBQXpEQTtBQUNBO0FBMkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF6REE7QUFDQTtBQTJEQTtBQUNBO0FBQ0E7QUF6REE7QUFDQTtBQTJEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXpEQTtBQUNBO0FBMkRBO0FBQ0E7QUFDQTtBQUNBO0FBekRBO0FBQ0E7QUEyREE7QUFDQTtBQXpEQTtBQUNBO0FBMkRBO0FBQ0E7QUFDQTtBQXpEQTtBQUNBO0FBMkRBO0FBQ0E7QUF6REE7QUFDQTtBQTJEQTtBQUVBOzs7QUFHQTtBQTFEQTtBQUNBO0FBNkRBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEzREE7QUFDQTtBQTZEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBM0RBO0FBQ0E7QUE2REE7Ozs7QUFJQTtBQTNEQTtBQUNBO0FBNkRBOzs7O0FBSUE7QUFDQTtBQTNEQTtBQUNBO0FBNkRBO0FBQ0E7QUEzREE7QUFDQTtBQTZEQTtBQUNBO0FBM0RBO0FBQ0E7QUE2REE7QUFDQTtBQTNEQTtBQUNBO0FBNkRBO0FBQ0E7QUEzREE7QUFDQTtBQTZEQTs7OztBQUlBO0FBM0RBO0FBQ0E7QUE2REE7Ozs7OztBQU1BO0FBM0RBO0FBQ0E7QUE2REE7Ozs7OztBQU1BO0FBQ0E7QUEzREE7QUFDQTtBQTZEQTs7Ozs7O0FBTUE7QUEzREE7QUFDQTtBQTZEQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBM0RBO0FBQ0E7QUE2REE7O0FBRUE7QUEzREE7QUFDQTtBQTZEQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUEzREE7QUFDQTtBQTZEQTs7Ozs7QUFLQTtBQTNEQTtBQUNBO0FBNkRBO0FBQ0E7QUFDQTtBQTNEQTtBQUNBO0FBOERBO0FBQ0E7QUFDQTtBQTVEQTtBQUNBO0FBK0RBO0FBQ0E7QUFDQTtBQTdEQTtBQUNBO0FBZ0VBO0FBQ0E7QUFDQTtBQTlEQTtBQUNBO0FBaUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEvREE7QUFDQTtBQWlFQTs7QUFFQTtBQUNBO0FBL0RBO0FBQ0E7QUFpRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBL0RBO0FBQ0E7QUFpRUE7Ozs7QUFJQTtBQS9EQTtBQUNBO0FBaUVBO0FBQ0E7QUFDQTtBQS9EQTtBQUNBO0FBaUVBO0FBQ0E7QUEvREE7QUFDQTtBQWlFQTtBQUNBO0FBL0RBO0FBQ0E7QUFpRUE7QUFDQTtBQS9EQTtBQUNBO0FBaUVBO0FBQ0E7QUEvREE7QUFDQTtBQWlFQTtBQUNBO0FBL0RBO0FBQ0E7QUFpRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQS9EQTtBQUNBO0FBaUVBO0FBQ0E7QUEvREE7QUFDQTtBQWlFQTtBQUNBO0FBQ0E7QUFDQTtBQS9EQTtBQUNBO0FBaUVBO0FBQ0E7QUEvREE7QUFDQTtBQWlFQTtBQUNBO0FBQ0E7QUFDQTtBQS9EQTtBQUNBO0FBaUVBO0FBQ0E7QUFDQTtBQS9EQTtBQUNBO0FBaUVBO0FBQ0E7QUEvREE7QUFDQTtBQWlFQTtBQUNBO0FBL0RBO0FBQ0E7QUFpRUE7QUFDQTtBQUNBO0FBL0RBO0FBQ0E7QUFpRUE7QUFDQTtBQUNBO0FBL0RBO0FBQ0E7QUFpRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEvREE7QUFDQTtBQWlFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBL0RBO0FBQ0E7QUFpRUE7O0FBRUE7QUEvREE7QUFDQTtBQWlFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBL0RBO0FBQ0E7QUFpRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQS9EQTtBQUNBO0FBaUVBO0FBQ0E7QUEvREE7QUFDQTtBQWlFQTtBQUNBO0FBL0RBO0FBQ0E7QUFpRUE7QUFDQTtBQUNBO0FBQ0E7QUEvREE7QUFDQTtBQzdoQkE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBREE7QXhGTkE7O0FBQUE7QUNBQTs7O0FBQUE7QUR5QkE7O0FBQUE7QUF6QkE7O0FBQUE7QUNBQTs7O0FBQUE7QUR5QkE7O0FBQUE7QXlGckJBO0FBQ0E7QUFpQkE7QUFoQkE7QUFDQTtBQWtCQTtBQUNBO0FBZEE7QUFDQTtBQWdCQTtBakZnaEJBO0FpRmppQkE7QUFHQTtBQWtCQTtBQUNBO0FBQ0E7QUFkQTtBQUNBO0FBZ0JBO0FBQ0E7QUFkQTtBQUNBO0FBZ0JBO0FDekNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBREE7QUNWQTtBQUlBOzs7QUFDQTtBQUFBO0FBR0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7OztBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQUE7OztBQUNBO0FBQ0E7QUFJQTtBQUZBOzs7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUpBOzs7QUFDQTtBQUNBO0FBUUE7QUFIQTs7O0FBQ0E7QUFPQTtBQUpBOzs7QUFDQTtBQUNBO0FBQ0E7QUFRQTtBQUpBOzs7QUFDQTtBQUNBO0FBQ0E7QUFRQTtBQUxBOzs7QUFDQTtBQVNBO0FBUEE7Ozs7OztBQUVBO0FBYUE7QUFUQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFhQTtBQVZBOzs7QUFDQTtBQWNBO0FBWkE7OztBQUNBO0FBQ0E7QUFDQTtBQWdCQTtBQWRBOzs7QUFDQTtBQUNBO0FBa0JBO0FBZEE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBa0JBO0FBYkE7OztBQUNBO0FBQ0E7QUFDQTtBQWlCQTtBQWZBOzs7QUFDQTtBQUNBO0FBbUJBO0FBZEE7OztBQUNBO0FBa0JBO0FBZkE7OztBQUNBO0FBbUJBO0FBaEJBOzs7QUFDQTtBQW9CQTtBQWpCQTs7O0FBQ0E7QUFxQkE7QUFDQTtBQVRBOzs7Ozs7Ozs7QUFDQTtBQW1CQTtBQUNBO0FBZkE7QUFDQTtBQUNBO0FBaUJBO0FBYkE7QUFDQTtBQUNBO0FBQ0E7QUFlQTtBQWJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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TkE7QXBDOU5BO0FBQ0E7QW9DZ09BO0FwQ2pPQTtBQUNBO0FvQ21PQTtBcENwT0E7QUFDQTtBb0NzT0E7QXBDdk9BO0FBQ0E7QW9DeU9BO0FwQzFPQTtBQUNBO0FvQzRPQTtBcEM3T0E7QUFDQTtBb0MrT0E7QUFDQTtBckZ3T0E7QWlEbGRBO0FBQ0E7QW9DNk9BO0FBQ0E7QUFsUUE7QXBDaUZBO0FBQ0E7QUE4QkE7QUFNQTs7O0FBQUE7QUE0Q0E7QW9DMEdBO0FwQ3hMQTtBQUNBO0FBQ0E7QW9DMExBO0FwQ3ZMQTtBQUNBO0FBRUE7QW9Dd0xBO0FwQ3RMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FvQ3dMQTtBQUNBO0FwQ3BMQTtBQUNBO0FBQ0E7QW9Dc0xBO0FBQ0E7QXJGa01BO0FxRnJlQTtBcENtSEE7QW9Db0xBO0FBQ0E7QXJGNkxBO0FpRHhXQTtBQUNBOzs7O0FBQUE7QW9Da0xBO0FwQ25MQTtBQUNBOzs7O0FBQUE7QW9DeUxBO0FwQzFMQTtBQUNBOzs7O0FBQUE7QW9DZ01BO0FwQ2pNQTtBQUNBOzs7O0FBQUE7QW9DdU1BO0FwQ3hNQTtBQUNBOzs7O0FBQUE7QW9DOE1BO0FwQy9NQTtBQUNBOzs7O0FBQUE7QW9DcU5BO0FwQ3ROQTtBQUNBOzs7O0FBQUE7QW9DNE5BO0FBQ0E7QXJGMElBO0FpRDdWQTtBQUNBO0FvQ3NOQTtBQUNBO0FwQzdMQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QW9DOExBO0FBQ0E7QXBDMUxBO0FBQ0E7QUFDQTtBb0M0TEE7QUFDQTtBcENqVkE7QUFDQTtBb0NtVkE7QXBDaFZBO0E5Qm5HQTtBQUNBO0FBQ0E7QThCb0dBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QW9DbVZBO0FwQ2pWQTtBQVpBO0FBYUE7QW9Db1ZBO0FBQ0E7QXJGbUdBO0FpRHJjQTtBRm5HQTtBQUNBO0FzQ3ljQTtBdEN2Y0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBc0N5Y0E7QXRDdGNBO0FBQ0E7QUFDQTtBQUNBO0FzQ3djQTtBQUNBO0FwQzlWQTtB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QTtBQWhsQkE7QUNqVkE7QURvNkJBO0FBbmtCQTtBQUNBO0FBcWtCQTtBQWhrQkE7QUFDQTtBQUNBO0FBQ0E7QUFra0JBO0FBL2pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWlrQkE7QUVyN0JBO0FBQ0E7QUZ1N0JBO0FFeDdCQTtBQUNBO0FGMDdCQTtBRTM3QkE7QUFDQTtBRjY3QkE7QUU5N0JBO0FBQ0E7QUZnOEJBO0FFajhCQTtBQUNBO0FGbThCQTtBRXA4QkE7QUFDQTtBRnM4QkE7QUV2OEJBO0FBQ0E7QUZ5OEJBO0FFMThCQTtBQUNBO0FGNDhCQTtBRTc4QkE7QUFDQTtBRis4QkE7QUVoOUJBO0FBQ0E7QUZrOUJBO0FFbjlCQTtBQUNBO0FGcTlCQTtBRXQ5QkE7QUFDQTtBRnc5QkE7QUV6OUJBO0FBQ0E7QUYyOUJBO0FFNTlCQTtBQUNBO0FGODlCQTtBRS85QkE7QUFDQTtBRmkrQkE7QUVsK0JBO0FBQ0E7QUZvK0JBO0FFcitCQTtBQUNBO0FGdStCQTtBRXgrQkE7QUFDQTtBRjArQkE7QUUzK0JBO0FBQ0E7QUY2K0JBO0FFOStCQTtBQUNBO0FGZy9CQTtBRWovQkE7QUFDQTtBRm0vQkE7QUVwL0JBO0FBQ0E7QUZzL0JBO0FFdi9CQTtBQUNBO0FGeS9CQTtBRTEvQkE7QUFDQTtBRjQvQkE7QUU3L0JBO0FBQ0E7QUYrL0JBO0FFaGdDQTtBQUNBO0FGa2dDQTtBRW5nQ0E7QUFDQTtBRnFnQ0E7QUV0Z0NBO0FBQ0E7QUZ3Z0NBO0FFemdDQTtBQUNBO0FGMmdDQTtBRTVnQ0E7QUFDQTtBRjhnQ0E7QUUvZ0NBO0FBQ0E7QUZpaENBO0FFbGhDQTtBQUNBO0FGb2hDQTtBRXJoQ0E7QUFDQTtBRnVoQ0E7QUV4aENBO0FBQ0E7QUYwaENBO0FFM2hDQTtBQUNBO0FGNmhDQTtBRTloQ0E7QUFDQTtBRmdpQ0E7QUVqaUNBO0FBQ0E7QUZtaUNBO0FFcGlDQTtBQUNBO0FGc2lDQTtBRXZpQ0E7QUFDQTtBRnlpQ0E7QUUxaUNBO0FBQ0E7QUY0aUNBO0FFN2lDQTtBQUNBO0FGK2lDQTtBRWhqQ0E7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QTtBdkN1TUE7Ozs7QUFBQTtBdUMvRUE7QUFDQTtBeEYwWkE7QXdGbmhCQTtBdkN1TUE7Ozs7QUFBQTtBdUN0RUE7QUFDQTtBeEZpWkE7QXdGbmhCQTtBdkN1TUE7Ozs7QUFBQTtBdUM3REE7QUFDQTtBeEZ3WUE7QXdGbmhCQTtBdkN1TUE7Ozs7QUFBQTtBdUNwREE7QUFDQTtBeEYrWEE7QXdGbmhCQTtBdkN1TUE7Ozs7QUFBQTtBdUMzQ0E7QUFDQTtBeEZzWEE7QXdGbmhCQTtBdkN1TUE7Ozs7QUFBQTtBdUNsQ0E7QUFDQTtBeEY2V0E7QXdGbmhCQTtBdkN1TUE7Ozs7QUFBQTtBdUN6QkE7QUFDQTtBdkNrQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0F1Q2pDQTtBQUNBO0F2Q3FDQTtBQUNBO0FBQ0E7QXVDbkNBO0FBQ0E7QXZDbEhBO0FBQ0E7QXVDb0hBO0F2Q2pIQTtBOUJuR0E7QUFDQTtBQUNBO0E4Qm9HQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0F1Q29IQTtBdkNsSEE7QUFaQTtBQWFBO0F1Q3FIQTtBQUNBO0F4RmtVQTtBaURyY0E7QUZuR0E7QUFDQTtBeUMwT0E7QXpDeE9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QXlDME9BO0F6Q3ZPQTtBQUNBO0FBQ0E7QUFDQTtBeUN5T0E7QUFDQTtBdkMvSEE7QTlCeEhBO0FBQ0E7QUFDQTtBOEJ5SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBdUNrSUE7QXZDaElBO0FBQ0E7QXVDa0lBO0F2QzlIQTtBQUNBO0F1Q2dJQTtBQXJPQTtBQUNBO0FBQ0E7QUF1T0E7QWhHaFJBOztBQUFBO0FDQUE7OztBQUFBO0FEeUJBOztBQUFBO0FBekJBOztBQUFBO0FDQUE7OztBQUFBO0FEeUJBOztBQUFBO0FBekJBOztBQUFBO0FDQUE7OztBQUFBO0FEeUJBOztBQUFBO0FBekJBOztBQUFBO0FDQUE7OztBQUFBO0FEeUJBOztBQUFBO0FBekJBOztBQUFBO0FDQUE7OztBQUFBO0FEeUJBOztBQUFBO0FpR3JCQTs7O0FBQUE7QUFLQTs7QUFBQTtBQUtBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QXBFVkE7QW9FdURBO0F6RmdmQTtBeUYvaEJBO0FwRUVBO0FvRWlEQTtBQUNBO0FwRTdDQTtBQUNBO0FvRStDQTtBQWxEQTtBQUNBO0FBb0RBO0F6RnFlQTtBeUZyaEJBO0FBR0E7QUFBQTtBQWlEQTtBQS9DQTtBQUNBO0FBaURBO0FBOUNBO0FBQ0E7QUFDQTtBQWdEQTtBQUNBO0F6RnlkQTtBeUZwZ0JBO0FBRUE7QUFBQTtBQTZDQTtBQUNBO0F6Rm9kQTtBeUY3ZkE7QUFDQTtBQUFBO0FBNENBO0FBQ0E7QUF6Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBMkNBO0FqR3BHQTs7QUFBQTtBQ0FBOzs7QUFBQTtBRHlCQTs7QUFBQTtBQXpCQTs7QUFBQTtBQ0FBOzs7QUFBQTtBRHlCQTs7QUFBQTtBQXpCQTs7QUFBQTtBQ0FBOzs7QUFBQTtBRHlCQTs7QUFBQTtBQXpCQTs7QUFBQTtBQ0FBOzs7QUFBQTtBRHlCQTs7QUFBQTtBa0duQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FyRUxBO0FxRXlDQTtBMUY4ZkE7QTBGdmlCQTtBckVVQTtBcUVtQ0E7QUFDQTtBckUvQkE7QUFDQTtBcUVpQ0E7Iiwic291cmNlUm9vdCI6IiJ9*/