/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./data/www/templates/asgard/eshop.setos.cz/sass/overflow-menu.scss ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************/
/**
 * Retrieves the next smaller breakpoint from the given breakpoint.
 *
 * @param {String} $breakpoint - The breakpoint for which to find the next smaller breakpoint.
 * @return {String|null} - The next smaller breakpoint, or null if no smaller breakpoint is available.
 */
/**
 * Retrieves the next larger breakpoint from the $grid-breakpoints map.
 *
 * @function get-bigger-breakpoint
 * @param {String} $breakpoint - The current breakpoint to find the next larger one for.
 * @return {String | null} - The next larger breakpoint or null if the current breakpoint is the largest or not found.
 */
/**
 * Reset iSpace custom form input styles to be able to design special inputs more easily
 */
/**
 * Styles to hide the scrollbar but still allow scrolling
 */
/**
 * Special version of the card-box() layout for the B2B shop
 */
/**
 * card-box list layout for the B2B shop
 */
.overflow-menu {
  --overflow-background-color: rgb(255, 255, 255, 1);
  max-width: 100%;
}
.grey-bg-100 .overflow-menu {
  --overflow-background-color: #f3f3f3;
}
.overflow-menu__items {
  /* stylelint-disable-next-line length-zero-no-unit */
  --scrollbar-height: 0px;
  --mask-width: 20px;
  --overflow-background-color: var(--overflow-background-color);
  --mask-image-content: linear-gradient(to right, transparent 5px, #000 var(--mask-width), #000 calc(100% - var(--mask-width)), transparent calc(100% - 5px));
  --mask-size-content: 100% calc(100% - var(--scrollbar-height));
  --mask-image-scrollbar: linear-gradient(#000, #000);
  --mask-size-scrollbar: 100% var(--scrollbar-height);
  display: flex;
  gap: 0.8rem;
  white-space: nowrap;
  -webkit-overflow-scrolling: touch;
  font-size: 14px;
  line-height: 1.2;
  font-variation-settings: "wght" 600;
  scrollbar-color: transparent;
  scrollbar-width: none;
  overflow: auto;
  mask-image: var(--mask-image-content), var(--mask-image-scrollbar);
  mask-size: var(--mask-size-content), var(--mask-size-scrollbar);
  mask-position: 0 0, 100% 0;
  mask-repeat: no-repeat, no-repeat;
  background-color: var(--overflow-background-color);
  margin-inline: calc(var(--bs-gutter-x) * -0.5);
  padding-inline: calc(var(--bs-gutter-x) * 0.5);
}
.overflow-menu__items::-webkit-scrollbar {
  height: 0;
}
.overflow-menu__items::-webkit-scrollbar-thumb {
  background-color: transparent;
  border: none;
  border-radius: 0;
}
.overflow-menu__items::-webkit-scrollbar-track {
  background-color: none;
  border: none;
}
@media (min-width: 992px) {
  .overflow-menu__items {
    font-size: 1.4rem;
  }
}
.overflow-menu__item-element {
  display: inline-block;
  text-decoration: none;
  padding: 0.5rem 1rem;
  border-radius: 1rem;
  background-color: rgba(255, 255, 255, 0);
  color: #000;
  font-variation-settings: inherit;
  transition: background-color ease-out 0.15s, color ease-out 0.15s;
  border: 1px solid transparent;
}
.overflow-menu__item-element:hover, .overflow-menu__item-element:focus, .overflow-menu__item-element:active, .overflow-menu__item-element--active, .overflow-menu__item-element.is-active {
  font-variation-settings: "wght" 600;
  background-color: #e8e8fd;
  color: #333372;
  border-color: #333372;
}
@media (min-width: 992px) {
  .overflow-menu__item-element:hover, .overflow-menu__item-element:focus, .overflow-menu__item-element:active, .overflow-menu__item-element--active, .overflow-menu__item-element.is-active {
    background-color: #e8e8fd;
  }
}
.overflow-menu__item-element--active, .overflow-menu__item-element.is-active {
  pointer-events: none;
  cursor: default;
}
@media (min-width: 992px) {
  .overflow-menu__item-element {
    padding: 1.1rem 2rem;
    border: 1px solid rgba(0, 0, 0, 0.2);
  }
}
/*!***********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./data/www/templates/asgard/eshop.setos.cz/sass/offers.scss ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************/
/**
 * Retrieves the next smaller breakpoint from the given breakpoint.
 *
 * @param {String} $breakpoint - The breakpoint for which to find the next smaller breakpoint.
 * @return {String|null} - The next smaller breakpoint, or null if no smaller breakpoint is available.
 */
/**
 * Retrieves the next larger breakpoint from the $grid-breakpoints map.
 *
 * @function get-bigger-breakpoint
 * @param {String} $breakpoint - The current breakpoint to find the next larger one for.
 * @return {String | null} - The next larger breakpoint or null if the current breakpoint is the largest or not found.
 */
/**
 * Reset iSpace custom form input styles to be able to design special inputs more easily
 */
/**
 * Styles to hide the scrollbar but still allow scrolling
 */
/**
 * Special version of the card-box() layout for the B2B shop
 */
/**
 * card-box list layout for the B2B shop
 */
.time-limited-offers__title {
  margin-block-end: 1rem;
  font-size: 2rem;
  font-weight: normal;
  font-variation-settings: "wght" 600;
}
.time-limited-offers__offer-details {
  align-self: center;
  display: flex;
  text-align: center;
  line-height: 40px;
  background-color: #232352;
  color: #fff;
  border-radius: 8px 8px 0 0;
  flex-direction: column;
}
.time-limited-offers__offer-details * {
  word-break: normal;
}
.time-limited-offers__offer-details > * {
  padding-inline: 2rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.time-limited-offers__offer-details > *:where(:first-child) {
  padding-block: 2rem 1rem;
}
.time-limited-offers__offer-details > *:where(:last-child) {
  padding-block: 1rem 2rem;
  border-block-start: 2px dashed;
}
.time-limited-offers__offer-details > *:where(:first-child:last-child) {
  border: none;
  padding-block: 2rem;
}
.time-limited-offers__offer-details *:where(:not(.time-limited-offers__offer-time-remaining-heading)) {
  display: inline-block;
}
@media (min-width: 992px) {
  .time-limited-offers__offer-details *:where(:not(.time-limited-offers__offer-time-remaining-heading)) {
    display: flex;
    font-size: 34px;
    font-weight: normal;
    font-variation-settings: "wght" 900;
  }
}
.time-limited-offers__offer-time-remaining-heading {
  font-size: 14px;
  font-weight: normal;
  font-variation-settings: "wght" 500;
  font-variant: tabular-nums;
}
@media (min-width: 992px) {
  .time-limited-offers__offer-time-remaining-heading {
    font-size: 28px;
    font-variation-settings: "wght" 700;
  }
}
.time-limited-offers__offer-time-remaining-value {
  font-variant: tabular-nums;
}
.time-limited-offers--xl-wide .time-limited-offers__offer-details *:where(:not(.time-limited-offers__offer-time-remaining-heading)) {
  display: flex;
  font-size: 34px;
  font-weight: normal;
  font-variation-settings: "wght" 900;
}
.time-limited-offers--xl-wide .time-limited-offers__offer-time-remaining-heading {
  font-size: 28px;
  font-variation-settings: "wght" 700;
}
@media (min-width: 1200px) {
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card {
    --thumbnail-width: 200px;
    --flag-font-size: 1.2rem;
    background-color: #fff;
    box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.07);
    border-radius: 8px;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__inner {
    padding: 3rem;
  }
}
@media (min-width: 1200px) and (min-width: 1366px) {
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card {
    --thumbnail-width: 280px;
    --flag-font-size: 1.6rem;
  }
}
@media (min-width: 1200px) and (min-width: 1200px) {
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__inner {
    display: grid;
    grid-template-columns: var(--thumbnail-width) 1fr auto;
    grid-auto-rows: auto;
    min-height: 24rem;
    align-items: center;
    padding: 3rem 4rem 3rem 0;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__inner::before {
    content: "";
    grid-row: 1;
    grid-column: 1/-1;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__primary, .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__secondary {
    display: contents;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__secondary-inner {
    display: contents;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__thumbnail {
    position: absolute;
    width: var(--thumbnail-width);
    height: 100%;
    left: 0;
    top: 0;
    padding: 30px;
    grid-area: auto;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__thumbnail img {
    max-width: 240px;
    max-height: 240px;
    inset: 0;
    margin: auto;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__variants {
    grid-column: 1;
    grid-row: 6;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__heading {
    grid-column: 2/-1;
    grid-row: 2;
    font-size: 2.2rem;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__perex {
    grid-column: 2/-1;
    grid-row: 3;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__parameters {
    grid-column: 2/-1;
    grid-row: 4;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__availability {
    grid-column: 2/-1;
    grid-row: 5;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__price {
    grid-column: 2;
    grid-row: 6;
    margin: 0;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__price .card-price {
    justify-content: start;
    gap: 0 1.6rem;
    text-align: left;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__price .card-price__full {
    font-size: 2.2rem;
    color: #000;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__price .card-price__discount, .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__price .card-price__saving {
    font-size: 1.6rem;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__flags {
    position: absolute;
    top: -10px;
    right: -13px;
    left: auto;
    place-self: start end;
    gap: 0.3rem;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__flags [class*=__item] {
    border-radius: 50px;
    padding: 0.22em 0.63em;
    text-align: center;
    font-size: var(--flag-font-size);
    line-height: 1.2;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__flags [class*=__item] [class*=__text] {
    font-weight: normal;
    font-variation-settings: "wght" 400;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__add {
    grid-column: 3;
    grid-row: 6;
    padding: 0;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__add-link {
    min-width: 205px;
  }
}
@media (min-width: 1200px) {
  .time-limited-offers--xl-wide .time-limited-offers__offer-details {
    flex-direction: row;
    line-height: 50px;
    background-color: transparent;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-details > * {
    background-color: #232352;
    color: #fff;
    padding-block: clamp(2rem, 3vw, 4.75rem);
    gap: 0.5rem;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-details > *:where(:last-child) {
    border-block-start: 0;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-details *:where(:not(.time-limited-offers__offer-time-remaining-heading)) {
    font-size: 44px;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-percentage-saving {
    --inverted-border-gradient: #0000 98%, #000;
    --inverted-border-radius: 14px;
    --inverted-border-radius-tl: 0px;
    --inverted-border-radius-tr: 14px;
    --inverted-border-radius-br: 14px;
    --inverted-border-radius-bl: 0px;
    mask: radial-gradient(var(--inverted-border-radius-tl) at 0 0, var(--inverted-border-gradient)) 0 0, radial-gradient(var(--inverted-border-radius-tr) at 100% 0, var(--inverted-border-gradient)) 100% 0, radial-gradient(var(--inverted-border-radius-bl) at 0 100%, var(--inverted-border-gradient)) 0 100%, radial-gradient(var(--inverted-border-radius-br) at 100% 100%, var(--inverted-border-gradient)) 100% 100%;
    mask-repeat: no-repeat;
    mask-size: 51% 51%;
    border-radius: 15px 0 0 15px;
    flex: 1 1 auto;
  }
  @supports (background: -webkit-named-image(i)) {
    .time-limited-offers--xl-wide .time-limited-offers__offer-percentage-saving {
      mask: none;
    }
  }
  @supports (offset-path: shape(from top left, curve to 50% 50% with 25% 100%)) {
    .time-limited-offers--xl-wide .time-limited-offers__offer-percentage-saving {
      mask: none;
      clip-path: shape(from 0 var(--inverted-border-radius-tl), arc by var(--inverted-border-radius-tl) calc(var(--inverted-border-radius-tl) * -1) of var(--inverted-border-radius-tl), line to calc(100% - var(--inverted-border-radius-tr)) 0, arc by var(--inverted-border-radius-tr) var(--inverted-border-radius-tr) of var(--inverted-border-radius-tr), line to 100% calc(100% - var(--inverted-border-radius-br)), arc by calc(var(--inverted-border-radius-br) * -1) var(--inverted-border-radius-br) of var(--inverted-border-radius-br), line to var(--inverted-border-radius-bl) 100%, arc by calc(var(--inverted-border-radius-bl) * -1) calc(var(--inverted-border-radius-bl) * -1) of var(--inverted-border-radius-bl), line to 0 var(--inverted-border-radius-tl));
    }
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-time-remaining {
    flex: 1.2 1 auto;
    border-radius: 15px 0 0 15px;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-time-remaining:where(:not(:first-child)) {
    --inverted-border-gradient: #0000 98%, #000;
    --inverted-border-radius: 14px;
    --inverted-border-radius-tl: 14px;
    --inverted-border-radius-tr: 0px;
    --inverted-border-radius-br: 0px;
    --inverted-border-radius-bl: 14px;
    mask: radial-gradient(var(--inverted-border-radius-tl) at 0 0, var(--inverted-border-gradient)) 0 0, radial-gradient(var(--inverted-border-radius-tr) at 100% 0, var(--inverted-border-gradient)) 100% 0, radial-gradient(var(--inverted-border-radius-bl) at 0 100%, var(--inverted-border-gradient)) 0 100%, radial-gradient(var(--inverted-border-radius-br) at 100% 100%, var(--inverted-border-gradient)) 100% 100%;
    mask-repeat: no-repeat;
    mask-size: 51% 51%;
    border-radius: 0;
    border-inline-start: 2px dashed;
  }
  @supports (background: -webkit-named-image(i)) {
    .time-limited-offers--xl-wide .time-limited-offers__offer-time-remaining:where(:not(:first-child)) {
      mask: none;
    }
  }
  @supports (offset-path: shape(from top left, curve to 50% 50% with 25% 100%)) {
    .time-limited-offers--xl-wide .time-limited-offers__offer-time-remaining:where(:not(:first-child)) {
      mask: none;
      clip-path: shape(from 0 var(--inverted-border-radius-tl), arc by var(--inverted-border-radius-tl) calc(var(--inverted-border-radius-tl) * -1) of var(--inverted-border-radius-tl), line to calc(100% - var(--inverted-border-radius-tr)) 0, arc by var(--inverted-border-radius-tr) var(--inverted-border-radius-tr) of var(--inverted-border-radius-tr), line to 100% calc(100% - var(--inverted-border-radius-br)), arc by calc(var(--inverted-border-radius-br) * -1) var(--inverted-border-radius-br) of var(--inverted-border-radius-br), line to var(--inverted-border-radius-bl) 100%, arc by calc(var(--inverted-border-radius-bl) * -1) calc(var(--inverted-border-radius-bl) * -1) of var(--inverted-border-radius-bl), line to 0 var(--inverted-border-radius-tl));
    }
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-time-remaining-heading {
    font-size: 36px;
  }
}
@media (max-width: 991.98px) {
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .time-limited-offers__offer-time-remaining {
    padding: 0;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .time-limited-offers__offer-time-remaining-heading:first-child:not(:only-child)::after {
    content: ":";
  }
}
.time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__flags {
  left: auto;
  right: 10px;
  top: calc(var(--thumbnail-padding) - 20px);
}
@media (max-width: 991.98px) {
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__flags {
    display: none;
  }
}
.time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__flags [class*=__item] {
  border-radius: 5px;
}
@media (max-width: 991.98px) {
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card {
    background-color: #fff;
    box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.1);
    border-radius: 0 0 8px 8px;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__perex {
    display: none;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__flags {
    left: auto;
    right: 0;
    top: calc(var(--thumbnail-padding) - 10px);
    place-self: start;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__flags [class*=__item] {
    border-radius: 11px;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__flags [class*=__text] {
    font-variation-settings: "wght" 500;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__inner {
    display: grid;
    grid-template-columns: 70px 1fr 38px;
    grid-template-rows: min-content min-content;
    padding: 20px 0 20px 10px;
    gap: 10px 20px;
    align-items: center;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__availability {
    display: none;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__primary, .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__secondary, .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__secondary-inner {
    display: contents;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__thumbnail {
    /* stylelint-disable-next-line length-zero-no-unit */
    --thumbnail-padding: 0px;
    grid-row: 1/span 2;
    grid-column: 1;
    height: 70px;
    margin-bottom: 0;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__heading {
    grid-row: 1;
    grid-column: 2;
    font-size: 1.2rem;
    margin-block: auto 0;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__price {
    grid-row: 2;
    grid-column: 2;
    margin-block: 0 auto;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card .card-price {
    justify-content: flex-start;
    gap: 10px 0.5rem;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card .card-price__full {
    font-size: 1.2rem;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card .card-price__discount, .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card .card-price__saving {
    font-size: 1.1rem;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card .card-price__saving {
    line-height: 1;
    background-color: rgba(24, 128, 56, 0.1);
    padding: 4px 6px;
    border-radius: 3px;
    text-transform: lowercase;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__add {
    display: none;
  }
}
.category__sidebar .time-limited-offers__slider .embla__viewport {
  overflow: visible;
}
.category__sidebar .time-limited-offers__slider .embla__container {
  gap: 60px;
}
.time-limited-offers__slider .embla__buttons {
  position: relative;
  max-width: max-content;
  margin: 2rem auto 0;
  bottom: initial;
  right: initial;
  box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.06);
}
.time-limited-offers__slider .embla__button {
  display: block;
}
.time-limited-offers .card-price__voucher {
  display: none;
}
.container:has(> .time-limited-offers) {
  overflow-x: clip;
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmVzaG9wLnNldG9zLmN6LmFzZ2FyZC50ZW1wbGF0ZS5kNmM4ZTIwYjllMDhkZjU3ZTE0ZC5jc3MiLCJtYXBwaW5ncyI6Ijs7O0FBR0E7Ozs7O0VBQUE7QUFpQkE7Ozs7OztFQUFBO0FDOFBBOztFQUFBO0FBK0hBOztFQUFBO0FBZUE7O0VBQUE7QUFtR0E7O0VBQUE7QUM3ZkE7RUFDSTtFQUVBO0FBbUJKO0FBakJJO0VBQ0k7QUFtQlI7QUFoQkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsMEJBQ0k7RUFFSjtFQUNBO0VBQ0E7RUFDQTtBQWVSO0FBWlE7RUFDSTtBQWNaO0FBWFE7RUFDSTtFQUNBO0VBQ0E7QUFhWjtBQVZRO0VBQ0k7RUFDQTtBQVlaO0FDUEk7RURoREE7SUErQ1E7RUFZVjtBQUNGO0FBUlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLGlFQUNJO0VBRUo7QUFRWjtBQU5ZO0VBS0k7RUFDQTtFQUNBO0VBQ0E7QUFJaEI7QUM3Qkk7RURpQlE7SUFXUTtFQUtsQjtBQUNGO0FBRlk7RUFFSTtFQUNBO0FBR2hCO0FDdENJO0VESUk7SUFtQ1E7SUFDQTtFQUdkO0FBQ0YsQzs7OztBRnhHQTs7Ozs7RUFBQTtBQWlCQTs7Ozs7O0VBQUE7QUM4UEE7O0VBQUE7QUErSEE7O0VBQUE7QUFlQTs7RUFBQTtBQW1HQTs7RUFBQTtBRzdmSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FBb0JSO0FBaEJRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQWtCWjtBQWhCWTtFQUNJO0FBa0JoQjtBQWZZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQWlCaEI7QUFmZ0I7RUFDSTtBQWlCcEI7QUFkZ0I7RUFDSTtFQUNBO0FBZ0JwQjtBQWJnQjtFQUNJO0VBQ0E7QUFlcEI7QUFYWTtFQUNJO0FBYWhCO0FEREk7RUNiUTtJQUlRO0lBQ0E7SUFDQTtJQUNBO0VBY2xCO0FBQ0Y7QUFUWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FBV2hCO0FEZkk7RUNBUTtJQU9RO0lBQ0E7RUFZbEI7QUFDRjtBQVRZO0VBQ0k7QUFXaEI7QUFGb0I7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBQUl4QjtBQUNvQjtFQUNJO0VBQ0E7QUFDeEI7QURsQ0k7RUMwQ2dCO0lBR0k7SUFDQTtFQVB0QjtFSHpFRTtJQUNJO0lBQ0E7SUFFQTtJQUNBO0lBQ0E7RUcwRU47RUh4RU07SUFDSTtFRzBFVjtBQUNGO0FEbERJO0VGbENBO0lBY1k7SUFDQTtFRzBFZDtBQUNGO0FEeERJO0VGZFE7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUd5RWQ7RUh2RWM7SUFDSTtJQUNBO0lBQ0E7RUd5RWxCO0VIckVVO0lBRUk7RUdzRWQ7RUhsRWM7SUFDSTtFR29FbEI7RUhoRVU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFR2tFZDtFSGhFYztJQUNJO0lBQ0E7SUFDQTtJQUNBO0VHa0VsQjtFSDlEVTtJQUNJO0lBQ0E7RUdnRWQ7RUg3RFU7SUFDSTtJQUNBO0lBQ0E7RUcrRGQ7RUg1RFU7SUFDSTtJQUNBO0VHOERkO0VIM0RVO0lBQ0k7SUFDQTtFRzZEZDtFSDFEVTtJQUNJO0lBQ0E7RUc0RGQ7RUh6RFU7SUFDSTtJQUNBO0lBQ0E7RUcyRGQ7RUh6RGM7SUFDSTtJQUNBO0lBQ0E7RUcyRGxCO0VIekRrQjtJQUNJO0lBQ0E7RUcyRHRCO0VIeERrQjtJQUVJO0VHeUR0QjtFSHBEVTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFR3NEZDtFSHBEYztJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUdzRGxCO0VIcERrQjtJQUNJO0lBQ0E7RUdzRHRCO0VIakRVO0lBQ0k7SUFDQTtJQUNBO0VHbURkO0VIakRjO0lBQ0k7RUdtRGxCO0FBQ0Y7QUQ3Skk7RUNpRGdCO0lBQ0k7SUFDQTtJQUNBO0VBK0d0QjtFQTdHc0I7SUFDSTtJQUNBO0lBQ0E7SUFDQTtFQStHMUI7RUE3RzBCO0lBQ0k7RUErRzlCO0VBM0dzQjtJQUNJO0VBNkcxQjtFQXpHa0I7SUh1RGhCO0lBQ0E7SUFpQ0E7SUFDQTtJQUNBO0lBQ0E7SUFFQSx3WkFDSTtJQUlKO0lBQ0E7SUdqR29CO0lBQ0E7RUFrSHRCO0VIZEU7SUd4R2dCO01IeUdaO0lHaUJKO0VBQ0Y7RUhaRTtJRy9HZ0I7TUhnSFo7TUFDQTtJR2VKO0VBQ0Y7RUExSGtCO0lBQ0k7SUFDQTtFQTRIdEI7RUExSHNCO0lINENwQjtJQUNBO0lBaUNBO0lBQ0E7SUFDQTtJQUNBO0lBRUEsd1pBQ0k7SUFJSjtJQUNBO0lHdEZ3QjtJQUNBO0VBbUkxQjtFSDFDRTtJRzdGb0I7TUg4RmhCO0lHNkNKO0VBQ0Y7RUh4Q0U7SUdwR29CO01IcUdoQjtNQUNBO0lHMkNKO0VBQ0Y7RUEzSXNCO0lBQ0k7RUE2STFCO0FBQ0Y7QUQxTkk7RUN3RmdCO0lBQ0k7RUFxSXRCO0VBakk4QjtJQUNJO0VBbUlsQztBQUNGO0FBMUhZO0VBQ0k7RUFDQTtFQUNBO0FBNEhoQjtBRHZPSTtFQ3dHUTtJQU1RO0VBNkhsQjtBQUNGO0FBM0hnQjtFQUNJO0FBNkhwQjtBRC9PSTtFQ3dIUTtJQUNJO0lBQ0E7SUFDQTtFQTBIZDtFQXhIYztJQUNJO0VBMEhsQjtFQXZIYztJQUNJO0lBQ0E7SUFDQTtJQUNBO0VBeUhsQjtFQXZIa0I7SUFDSTtFQXlIdEI7RUF0SGtCO0lBQ0k7RUF3SHRCO0VBcEhjO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VBc0hsQjtFQW5IYztJQUNJO0VBcUhsQjtFQWxIYztJQUdJO0VBa0hsQjtFQS9HYztJQUNJO0lBQ0E7SUFFQTtJQUNBO0lBQ0E7SUFDQTtFQWdIbEI7RUE3R2M7SUFDSTtJQUNBO0lBQ0E7SUFDQTtFQStHbEI7RUE1R2M7SUFDSTtJQUNBO0lBQ0E7RUE4R2xCO0VBM0djO0lBQ0k7SUFDQTtFQTZHbEI7RUEzR2tCO0lBQ0k7RUE2R3RCO0VBMUdrQjtJQUVJO0VBMkd0QjtFQXhHa0I7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VBMEd0QjtFQXRHYztJQUNJO0VBd0dsQjtBQUNGO0FBaEdnQjtFQUNJO0FBa0dwQjtBQS9GZ0I7RUFDSTtBQWlHcEI7QUE3Rlk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUErRmhCO0FBNUZZO0VBQ0k7QUE4RmhCO0FBekZJO0VBQ0k7QUEyRlI7QUF0RlE7RUFDSTtBQXdGWixDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2hvcGlvLy4vZGF0YS93d3cvdGVtcGxhdGVzL2FzZ2FyZC9lc2hvcC5zZXRvcy5jei9zYXNzL2FwcC9hYnN0cmFjdHMvX2Zucy5zY3NzIiwid2VicGFjazovL3Nob3Bpby8uL2RhdGEvd3d3L3RlbXBsYXRlcy9hc2dhcmQvZXNob3Auc2V0b3MuY3ovc2Fzcy9hcHAvYWJzdHJhY3RzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly9zaG9waW8vLi9kYXRhL3d3dy90ZW1wbGF0ZXMvYXNnYXJkL2VzaG9wLnNldG9zLmN6L3Nhc3Mvb3ZlcmZsb3ctbWVudS5zY3NzIiwid2VicGFjazovL3Nob3Bpby8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JyZWFrcG9pbnRzLnNjc3MiLCJ3ZWJwYWNrOi8vc2hvcGlvLy4vZGF0YS93d3cvdGVtcGxhdGVzL2FzZ2FyZC9lc2hvcC5zZXRvcy5jei9zYXNzL29mZmVycy5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6bGlzdCc7XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBuZXh0IHNtYWxsZXIgYnJlYWtwb2ludCBmcm9tIHRoZSBnaXZlbiBicmVha3BvaW50LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCAtIFRoZSBicmVha3BvaW50IGZvciB3aGljaCB0byBmaW5kIHRoZSBuZXh0IHNtYWxsZXIgYnJlYWtwb2ludC5cbiAqIEByZXR1cm4ge1N0cmluZ3xudWxsfSAtIFRoZSBuZXh0IHNtYWxsZXIgYnJlYWtwb2ludCwgb3IgbnVsbCBpZiBubyBzbWFsbGVyIGJyZWFrcG9pbnQgaXMgYXZhaWxhYmxlLlxuICovXG5AZnVuY3Rpb24gZ2V0LXNtYWxsZXItYnJlYWtwb2ludCgkYnJlYWtwb2ludCkge1xuICAgICRrZXlzOiBtYXAua2V5cygkZ3JpZC1icmVha3BvaW50cyk7XG4gICAgJGluZGV4OiBsaXN0LmluZGV4KCRrZXlzLCAkYnJlYWtwb2ludCk7XG5cbiAgICBAaWYgbm90ICRpbmRleCBvciAkaW5kZXggPT0gMSB7XG4gICAgICAgIEByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBAcmV0dXJuIGxpc3QubnRoKCRrZXlzLCAkaW5kZXggLSAxKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIG5leHQgbGFyZ2VyIGJyZWFrcG9pbnQgZnJvbSB0aGUgJGdyaWQtYnJlYWtwb2ludHMgbWFwLlxuICpcbiAqIEBmdW5jdGlvbiBnZXQtYmlnZ2VyLWJyZWFrcG9pbnRcbiAqIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCAtIFRoZSBjdXJyZW50IGJyZWFrcG9pbnQgdG8gZmluZCB0aGUgbmV4dCBsYXJnZXIgb25lIGZvci5cbiAqIEByZXR1cm4ge1N0cmluZyB8IG51bGx9IC0gVGhlIG5leHQgbGFyZ2VyIGJyZWFrcG9pbnQgb3IgbnVsbCBpZiB0aGUgY3VycmVudCBicmVha3BvaW50IGlzIHRoZSBsYXJnZXN0IG9yIG5vdCBmb3VuZC5cbiAqL1xuQGZ1bmN0aW9uIGdldC1sYXJnZXItYnJlYWtwb2ludCgkYnJlYWtwb2ludCkge1xuICAgICRrZXlzOiBtYXAua2V5cygkZ3JpZC1icmVha3BvaW50cyk7XG4gICAgJGluZGV4OiBsaXN0LmluZGV4KCRrZXlzLCAkYnJlYWtwb2ludCk7XG5cbiAgICBAaWYgbm90ICRpbmRleCBvciAkaW5kZXggPT0gbGlzdC5sZW5ndGgoJGJyZWFrcG9pbnQpIHtcbiAgICAgICAgQHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIEByZXR1cm4gbGlzdC5udGgoJGtleXMsICRpbmRleCArIDEpO1xufVxuIiwiQHVzZSAnc2Fzczpjb2xvcic7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOmxpc3QnO1xuXG4vLyAqIFZpc3VhbHMgZm9yIHNtYWxsIGJsb2NrcyB3aXRoIGEgaG92ZXIgLyBmb2N1cy13aXRoaW4gZWZmZWN0IGluY2x1ZGVkXG4vLyAqIFRvIG1vZGlmeSBkZWZhdWx0IHZhbHVlcywgeW91IGNvdWxkIHVzZSBAaW5jbHVkZSBzbWFsbC1ibG9jay1jb21wb25lbnQobWFwLnNldCgkY29uZmlnLCAncmFkaXVzJywgMjBweCkpXG5AbWl4aW4gc21hbGwtYmxvY2stY29tcG9uZW50KFxuICAgICRyYWRpdXM6IDEwcHgsXG4gICAgJGJhY2tncm91bmQtc3RhcnQ6IGNvbG9yLmFkanVzdChtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnktbGlnaHQpLCAkYWxwaGE6IC0xKSxcbiAgICAkYmFja2dyb3VuZC1lbmQ6IGNvbG9yLmFkanVzdChtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnktbWlkKSwgJGFscGhhOiAwKSxcbiAgICAkYm94LXNoYWRvdy1zdGFydDogMCA0cHggMjBweCAwICMwMDAwMDAxNCxcbiAgICAkYm94LXNoYWRvdy1lbmQ6IDAgNHB4IDRweCAwICMwMDAwMDAxNCxcbiAgICAkdHJhbnNpdGlvbjogJ2JhY2tncm91bmQtY29sb3IgbGluZWFyIDAuMTVzLCBib3gtc2hhZG93IGxpbmVhciAwLjE1cydcbikge1xuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtc3RhcnQ7XG4gICAgYm94LXNoYWRvdzogJGJveC1zaGFkb3ctc3RhcnQ7XG4gICAgdHJhbnNpdGlvbjogI3skdHJhbnNpdGlvbn07XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtZW5kO1xuICAgICAgICBib3gtc2hhZG93OiAkYm94LXNoYWRvdy1lbmQ7XG4gICAgfVxufVxuXG5AbWl4aW4gd2lkZS1jYXJkKCRicmVha3BvaW50OiAneGwnKSB7XG4gICAgJHNtYWxsZXItYnJlYWtwb2ludDogZ2V0LWxhcmdlci1icmVha3BvaW50KCRicmVha3BvaW50KTtcblxuICAgIC5wcm9kdWN0LWNhcmQge1xuICAgICAgICAtLXRodW1ibmFpbC13aWR0aDogMjAwcHg7XG4gICAgICAgIC0tZmxhZy1mb250LXNpemU6IDEuMnJlbTtcblxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIGxpZ2h0KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDIwcHggMCByZ2IoMCwgMCwgMCwgMC4wNyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcblxuICAgICAgICAmX19pbm5lciB7XG4gICAgICAgICAgICBwYWRkaW5nOiAzcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICRzbWFsbGVyLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkc21hbGxlci1icmVha3BvaW50KSB7XG4gICAgICAgICAgICAgICAgLS10aHVtYm5haWwtd2lkdGg6IDI4MHB4O1xuICAgICAgICAgICAgICAgIC0tZmxhZy1mb250LXNpemU6IDEuNnJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgICZfX2lubmVyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tdGh1bWJuYWlsLXdpZHRoKSAxZnIgYXV0bztcbiAgICAgICAgICAgICAgICBncmlkLWF1dG8tcm93czogYXV0bztcbiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAyNHJlbTtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDNyZW0gNHJlbSAzcmVtIDA7XG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX19wcmltYXJ5LFxuICAgICAgICAgICAgJl9fc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBjb250ZW50cztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgICAgICAmLWlubmVyIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogY29udGVudHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX190aHVtYm5haWwge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB3aWR0aDogdmFyKC0tdGh1bWJuYWlsLXdpZHRoKTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMzBweDtcbiAgICAgICAgICAgICAgICBncmlkLWFyZWE6IGF1dG87XG5cbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDI0MHB4O1xuICAgICAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiAyNDBweDtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogYXV0bztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX3ZhcmlhbnRzIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMTtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogNjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9faGVhZGluZyB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDIgLyAtMTtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDIuMnJlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fcGVyZXgge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyIC8gLTE7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX3BhcmFtZXRlcnMge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyIC8gLTE7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX2F2YWlsYWJpbGl0eSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDIgLyAtMTtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogNTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fcHJpY2Uge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiA2O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcblxuICAgICAgICAgICAgICAgIC5jYXJkLXByaWNlIHtcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgICAgICAgICAgICAgICAgICAgZ2FwOiAwIDEuNnJlbTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICAgICAgICAgICAgICAmX19mdWxsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMi4ycmVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgZGFyayk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmX19kaXNjb3VudCxcbiAgICAgICAgICAgICAgICAgICAgJl9fc2F2aW5nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS42cmVtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX19mbGFncyB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogLTEwcHg7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IC0xM3B4O1xuICAgICAgICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgICAgICAgICAgcGxhY2Utc2VsZjogc3RhcnQgZW5kO1xuICAgICAgICAgICAgICAgIGdhcDogMC4zcmVtO1xuXG4gICAgICAgICAgICAgICAgW2NsYXNzKj0nX19pdGVtJ10ge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MHB4O1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjIyZW0gMC42M2VtO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZmxhZy1mb250LXNpemUpO1xuICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcyo9J19fdGV4dCddIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXZhcmlhdGlvbi1zZXR0aW5nczogJ3dnaHQnIDQwMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fYWRkIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMztcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogNjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICAgICAgICAgJi1saW5rIHtcbiAgICAgICAgICAgICAgICAgICAgbWluLXdpZHRoOiAyMDVweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vICogQWRkIGludmVydGVkIGJvcmRlciByYWRpdXMgY29ybmVyc1xuLy8gKiBtYXNrIHZhbHVlcyBhcmUgaW4gdGhlIG9yZGVyIHRsIC8gdHIgLyBiciAvIGJsXG4vLyAqIE5vdGUgdGhhdCBhbGwgdW5pdHMgc2hvdWxkIGJlIGluIHB4XG4vLyAqIEBwYXJhbSB7bGlzdH0gLSBzcGVjaWZpYyBib3JkZXIgY29ybmVycyAkY29ybmVycyAoYWxsfHRsfHRyfGJsfGJyKVxuQG1peGluIGludmVydGVkLWJvcmRlci1yYWRpdXMoJGNvcm5lcnM6ICdhbGwnKSB7XG4gICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXG4gICAgJHZhbGlkLWJvcmRlci1yYWRpdXMtcGFyYW1zOiBbJ2FsbCcsICd0bCcsICd0cicsICdibCcsICdicicsICd0JywgJ3InLCAnYicsICdsJ107XG4gICAgJGludmVydGVkLWJvcmRlci1yYWRpdXM6IDE0cHg7XG4gICAgJGludmVydGVkLWJvcmRlci10bDogMHB4O1xuICAgICRpbnZlcnRlZC1ib3JkZXItdHI6IDBweDtcbiAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJyOiAwcHg7XG4gICAgJGludmVydGVkLWJvcmRlci1ibDogMHB4O1xuXG4gICAgLS1pbnZlcnRlZC1ib3JkZXItZ3JhZGllbnQ6ICMwMDAwIDk4JSwgIzAwMDtcbiAgICAtLWludmVydGVkLWJvcmRlci1yYWRpdXM6ICN7JGludmVydGVkLWJvcmRlci1yYWRpdXN9O1xuXG4gICAgQGlmIG5vdCBsaXN0LmluZGV4KCR2YWxpZC1ib3JkZXItcmFkaXVzLXBhcmFtcywgJGNvcm5lcnMpIHtcbiAgICAgICAgQGVycm9yIFwiI3skY29ybmVyc30gaXMgbm90IGEgdmFsaWQgc2lkZS4gRXhwZWN0ZWQgb25lIG9mICN7JHZhbGlkLWJvcmRlci1yYWRpdXMtcGFyYW1zfS5cIjtcbiAgICB9XG5cbiAgICBAaWYgJGNvcm5lcnMgPT0gJ2FsbCcge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRsOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgJGludmVydGVkLWJvcmRlci10cjogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItYnI6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJsOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9IEBlbHNlIGlmICRjb3JuZXJzID09ICd0bCcge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRsOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9IEBlbHNlIGlmICRjb3JuZXJzID09ICd0cicge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRyOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9IEBlbHNlIGlmICRjb3JuZXJzID09ICdicicge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJyOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9IEBlbHNlIGlmICRjb3JuZXJzID09ICdibCcge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJsOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9IEBlbHNlIGlmICRjb3JuZXJzID09ICd0JyB7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItdGw6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRyOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9IEBlbHNlIGlmICRjb3JuZXJzID09ICdyJyB7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItdHI6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJyOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9IEBlbHNlIGlmICRjb3JuZXJzID09ICdiJyB7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItYnI6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJsOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9IEBlbHNlIGlmICRjb3JuZXJzID09ICdsJyB7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItdGw6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJsOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICB9XG5cbiAgICAtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdGw6ICN7JGludmVydGVkLWJvcmRlci10bH07XG4gICAgLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRyOiAjeyRpbnZlcnRlZC1ib3JkZXItdHJ9O1xuICAgIC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1icjogI3skaW52ZXJ0ZWQtYm9yZGVyLWJyfTtcbiAgICAtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYmw6ICN7JGludmVydGVkLWJvcmRlci1ibH07XG5cbiAgICBtYXNrOlxuICAgICAgICByYWRpYWwtZ3JhZGllbnQodmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10bCkgYXQgMCAwLCB2YXIoLS1pbnZlcnRlZC1ib3JkZXItZ3JhZGllbnQpKSAwIDAsXG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCh2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRyKSBhdCAxMDAlIDAsIHZhcigtLWludmVydGVkLWJvcmRlci1ncmFkaWVudCkpIDEwMCUgMCxcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYmwpIGF0IDAgMTAwJSwgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLWdyYWRpZW50KSkgMCAxMDAlLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQodmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1icikgYXQgMTAwJSAxMDAlLCB2YXIoLS1pbnZlcnRlZC1ib3JkZXItZ3JhZGllbnQpKSAxMDAlIDEwMCU7XG4gICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBtYXNrLXNpemU6IDUxJSA1MSU7XG5cbiAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZSBuby1pbnZhbGlkLXBvc2l0aW9uLWRlY2xhcmF0aW9uXG4gICAgLy8gRGlzYWJsZSBmb3Igb2xkZXIgU2FmYXJpIGJyb3dzZXJzIGFzIHRoZSBsYXlvdXQgYnJlYWtzIHRoZXJlIHdpdGggbWFza1xuICAgIEBzdXBwb3J0cyAoYmFja2dyb3VuZDogLXdlYmtpdC1uYW1lZC1pbWFnZShpKSkge1xuICAgICAgICBtYXNrOiBub25lO1xuICAgIH1cblxuICAgIC8vIFdlIGNhbm5vdCBjaGVjayBmb3IgQHN1cHBvcnRzIChjbGlwLXBhdGg6IHNoYXBlKCkpIGJlY2F1c2UsIHdoaWxlIEZpcmVmb3ggc3VwcG9ydHMgdGhlIHJ1bGUsIGl0IGRvZXMgbm90IHdvcmsgLSB5ZXQgKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTAzMjgpXG4gICAgLy8gQnV0LCBhcyBzaGFwZSgpIGNhbiBiZSB1c2VkIGluIGFuaW1hdGlvbiBwYXRocywgYW5kIENocm9tZSBhbmQgY3VycmVudCBTYWZhcmkgc3VwcG9ydCB0aGlzIGltcGxlbWVudGF0aW9uLlxuICAgIC8vIE5PVEU6IFdlIHNob3VsZCBzdGlsbCBjaGVjayB0byBzZWUgd2hlbiBjbGlwLXBhdGg6IHNoYXBlKCkgaXMgZnVsbHkgZW5hYmxlZCBpbiBGaXJlZm94LCBidXQgaW4gdGhlIG1lYW50aW1lLCBtYXNraW5nIHdvcmtzIG5pY2VseSB0aGVyZVxuICAgIEBzdXBwb3J0cyAob2Zmc2V0LXBhdGg6IHNoYXBlKGZyb20gdG9wIGxlZnQsIGN1cnZlIHRvIDUwJSA1MCUgd2l0aCAyNSUgMTAwJSkpIHtcbiAgICAgICAgbWFzazogbm9uZTtcbiAgICAgICAgY2xpcC1wYXRoOiBzaGFwZShcbiAgICAgICAgICAgIGZyb20gMCB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRsKSxcbiAgICAgICAgICAgIGFyYyBieSB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRsKSBjYWxjKHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdGwpICogLTEpIG9mIHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdGwpLFxuICAgICAgICAgICAgbGluZSB0byBjYWxjKDEwMCUgLSB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRyKSkgMCxcbiAgICAgICAgICAgIGFyYyBieSB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRyKSB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRyKSBvZiB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRyKSxcbiAgICAgICAgICAgIGxpbmUgdG8gMTAwJSBjYWxjKDEwMCUgLSB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJyKSksXG4gICAgICAgICAgICBhcmMgYnkgY2FsYyh2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJyKSAqIC0xKSB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJyKSBvZiB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJyKSxcbiAgICAgICAgICAgIGxpbmUgdG8gdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1ibCkgMTAwJSxcbiAgICAgICAgICAgIGFyYyBieSBjYWxjKHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYmwpICogLTEpIGNhbGModmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1ibCkgKiAtMSkgb2YgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1ibCksXG4gICAgICAgICAgICBsaW5lIHRvIDAgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10bClcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLy8gc3R5bGVsaW50LWVuYWJsZSBuby1pbnZhbGlkLXBvc2l0aW9uLWRlY2xhcmF0aW9uXG59XG5cbi8vIExhYmVsIGlzIHNoaWZ0ZWQgd2hlbiAtXG4vLyBpbnB1dCBpcyBmb2N1c2VkXG4vLyBoYXMgdmFsdWUgcHJvcCBidXQgbm90IHBsYWNlaG9sZGVyIHNob3duIChoYXBwZW5kcyB3aGVuIHByZWZpbGxlZCBpbnB1dCBpcyBtYW51YWxseSBjbGVhcmVkKVxuLy8gaGFzIHNvbWUgdGV4dCBwbGFjZWhvbGRlclxuLy8gaXMgYXV0b2ZpbGxlZFxuQG1peGluIGZvcm0taW5wdXQtbGFiZWwtc2VsZWN0b3JzIHtcbiAgICAmOmhhcyg6d2hlcmUoaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEpOm5vdCg6d2hlcmUoOnBsYWNlaG9sZGVyLXNob3duKSk6aXMoOndoZXJlKDpub3QoOnBsYWNlaG9sZGVyLXNob3duKSksIDp3aGVyZSg6bm90KFtwbGFjZWhvbGRlcj0nJ10sIFtwbGFjZWhvbGRlcj0nICddKSksIDpub3QoW3ZhbHVlPScnXSksIDotd2Via2l0LWF1dG9maWxsLCA6YXV0b2ZpbGwsIDpmb2N1cykpIDp3aGVyZSguZm9ybS1pbnB1dF9fbGFiZWwpLFxuICAgICY6aGFzKDp3aGVyZShpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSk6aXMoOndoZXJlKDpwbGFjZWhvbGRlci1zaG93bjpub3QoW3BsYWNlaG9sZGVyPScnXSwgW3BsYWNlaG9sZGVyPScgJ10pKSkpIDp3aGVyZSguZm9ybS1pbnB1dF9fbGFiZWwpLFxuICAgICY6aGFzKDp3aGVyZShpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSk6aXMoOmZvY3VzKSkgOndoZXJlKC5mb3JtLWlucHV0X19sYWJlbCkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8qKlxuICogUmVzZXQgaVNwYWNlIGN1c3RvbSBmb3JtIGlucHV0IHN0eWxlcyB0byBiZSBhYmxlIHRvIGRlc2lnbiBzcGVjaWFsIGlucHV0cyBtb3JlIGVhc2lseVxuICovXG5AbWl4aW4gcmVzZXQtZm9ybS1pbnB1dCB7XG4gICAgJjpoYXMoOndoZXJlKGlucHV0Om5vdChbdHlwZT0nY2hlY2tib3gnXSwgW3R5cGU9J3JhZGlvJ10pLCB0ZXh0YXJlYSwgc2VsZWN0KSkge1xuICAgICAgICB6LWluZGV4OiBhdXRvO1xuICAgICAgICBtYXJnaW4tdG9wOiBpbml0aWFsO1xuXG4gICAgICAgIDp3aGVyZSguZm9ybS1maWVsZC1jb250YWluZXIpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IGluaXRpYWw7XG4gICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIH1cblxuICAgICAgICA6d2hlcmUoLmZvcm0tZmllbGQgPiAqKSB7XG4gICAgICAgICAgICAmOm5vdChbZGlzYWJsZWRdKSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIDp3aGVyZSguZm9ybS1maWVsZF9faW5wdXQpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogaW5pdGlhbDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aGFzKC5lcnJvcnMpIHtcbiAgICAgICAgICAgIC0taW5wdXQtYmc6IGluaXRpYWw7XG5cbiAgICAgICAgICAgIC5mb3JtLWZpZWxkLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICAgICAgICAgIC5mb3JtLWZpZWxkLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogaW5pdGlhbCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6aGFzKFtkaXNhYmxlZF0pIHtcbiAgICAgICAgICAgIC5mb3JtLWZpZWxkLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIDp3aGVyZSguZm9ybS1pbnB1dF9fbGFiZWwpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgIHBhZGRpbmctaW5saW5lOiAwO1xuICAgICAgICAgICAgcGFkZGluZy1ibG9jazogMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogaW5pdGlhbDtcbiAgICAgICAgICAgIGNvbG9yOiBpbml0aWFsO1xuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogY2xpcDtcbiAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIHotaW5kZXg6IGF1dG87XG4gICAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAgICAgICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiBpbml0aWFsO1xuICAgICAgICAgICAgbWFyZ2luLWJsb2NrLWVuZDogaW5pdGlhbDtcblxuICAgICAgICAgICAgJjo6YmVmb3JlLFxuICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhhcyguZm9ybS1maWVsZC0tc20pIHtcbiAgICAgICAgICAgIC5mb3JtLWlucHV0X19sYWJlbCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ibG9jazogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgICAgIDp3aGVyZSguZm9ybS1maWVsZC1jb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgOndoZXJlKC5mb3JtLWlucHV0X19sYWJlbCkge1xuICAgICAgICAgICAgICAgIGNvbG9yOiBpbml0aWFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAmOm5vdCg6d2hlcmUoOmZvY3VzLXdpdGhpbiwgW2Rpc2FibGVkXSkpIHtcbiAgICAgICAgICAgICAgICAmOndoZXJlKDpub3QoOmhhcyguZXJyb3JzKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgOndoZXJlKC5mb3JtLWZpZWxkLWNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgOndoZXJlKC5mb3JtLWlucHV0X19sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmOmhhcyguZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIDp3aGVyZSguZm9ybS1maWVsZC1jb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIDp3aGVyZSguZm9ybS1pbnB1dF9fbGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgZm9ybS1pbnB1dC1sYWJlbC1zZWxlY3RvcnMge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgZm9udC1zaXplOiBpbml0aWFsO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICAgICAgICAgIG1heC13aWR0aDogbm9uZTtcblxuICAgICAgICAgICAgJjo6YmVmb3JlLFxuICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFN0eWxlcyB0byBoaWRlIHRoZSBzY3JvbGxiYXIgYnV0IHN0aWxsIGFsbG93IHNjcm9sbGluZ1xuICovXG5AbWl4aW4gc2Nyb2xsLXdpdGhvdXQtc2Nyb2xsYmFyIHtcbiAgICBvdmVyZmxvdzogc2Nyb2xsO1xuICAgIG92ZXJmbG93OiAtbW96LXNjcm9sbGJhcnMtbm9uZTsgLyogRmlyZWZveCAqL1xuICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTsgLyogSUUgYW5kIEVkZ2UgKi9cbiAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7IC8qIEZpcmVmb3ggKi9cblxuICAgIC8qIENocm9tZSwgU2FmYXJpIGFuZCBPcGVyYSAqL1xuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi8qKlxuICogU3BlY2lhbCB2ZXJzaW9uIG9mIHRoZSBjYXJkLWJveCgpIGxheW91dCBmb3IgdGhlIEIyQiBzaG9wXG4gKi9cbkBtaXhpbiBjYXJkLWJveC1jaGVja291dCB7XG4gICAgQGluY2x1ZGUgY2FyZC1ib3g7XG5cbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBkYXJrKTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHdvcmQtYnJlYWs6IG5vcm1hbDtcblxuICAgICY6aGFzKGlucHV0OmNoZWNrZWQpLFxuICAgICYuc2VsZWN0ZWQtcGF5bWVudC1zaGlwcGluZy1tZXRob2Qge1xuICAgICAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5LWRhcmspO1xuICAgICAgICBjb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5LWRhcmspO1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJ21kJykge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMXB4IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuZm9ybS1ibG9jay1kaXNhYmxlZCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgQGNvbnRlbnQ7XG59XG5cbkBtaXhpbiBjYXJkLWJveC1jaGVja291dC1jb21wb25lbnRzKCRpcy1taW5pbWFsOiBmYWxzZSkge1xuICAgIEBpZiAkaXMtbWluaW1hbCB7XG4gICAgICAgICYtbGFiZWwge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuODtcbiAgICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgICAmLWxhYmVsLFxuICAgICAgICAmLWluZm8sXG4gICAgICAgICYtcHJpY2Uge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuODtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtbGFiZWwge1xuICAgICAgICBwb3NpdGlvbjogaW5pdGlhbDtcbiAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgQGlmICRpcy1taW5pbWFsIHtcbiAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyO1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpoYXMoOmNoZWNrZWQpLFxuICAgICAgICAmOmhhcyhbZGlzYWJsZWRdKSB7XG4gICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICAgICAgICAgIHRvdWNoLWFjdGlvbjogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5yYWRpbyB7XG4gICAgICAgICAgICAmX19pbnB1dCB7XG4gICAgICAgICAgICAgICAgdG9wOiAtMTZweDsgLy8gY29uc2lkZXIgdGhlIDE0cHggcGFkZGluZyAoZXh0cmEgMnB4IGZvciBib3JkZXIpXG5cbiAgICAgICAgICAgICAgICAmOmNoZWNrZWQ6bm90KDpkaXNhYmxlZCk6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLXRleHQge1xuICAgICAgICAgICAgQGlmICRpcy1taW5pbWFsIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGNvbnRlbnQ7XG59XG5cbi8qKlxuICogY2FyZC1ib3ggbGlzdCBsYXlvdXQgZm9yIHRoZSBCMkIgc2hvcFxuICovXG5AbWl4aW4gY2FyZC1ib3gtbGlzdC1jaGVja291dCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICBnYXA6IDAuOHJlbTtcbiAgICB0cmFuc2l0aW9uOiBnYXAgMC4zcztcbn1cblxuLy8gQWx0ZXJuYXRpdmUgZGlzYy1saWtlIHN0eWxpbmcgZm9yIHJhZGlvIGFuZCBjaGVja2JveCBpbnB1dHNcbkBtaXhpbiBpbnB1dC1kaXNjIHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBpbnNldDogMCAxMHB4IDAgYXV0bztcbiAgICBtYXJnaW4tYmxvY2s6IGF1dG87XG4gICAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgICB3aWR0aDogMTVweDtcbiAgICBoZWlnaHQ6IDE1cHg7XG4gICAgZmxleDogMCAwIDE1cHg7IC8vIGluIGNhc2UgaXQncyBwYXJ0IG9mIGEgZmxleCBsYXlvdXRcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYigwLCAwLCAwLCAwLjEpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xcyBlYXNlLWluLW91dDtcbn1cblxuLy8gY2FyZCBib3hlcyBhcmUgdHlwaWNhbGx5IHVzZWQgb24gcHJvZHVjdCBkZXRhaWwgc2VydmljZXMsIGNoZWNrb3V0IHRyYW5zcG9ydC9wYXltZW50IG9wdGlvbnMsXG4vLyBBTkQgcHJlLWNoZWNrb3V0IHBhZ2VcbkBtaXhpbiBjYXJkLWJveCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBsaWdodCk7XG4gICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2dyYXktOTAwJyk7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIG1hcC5nZXQoJGlucHV0LCBib3JkZXItY29sb3IpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogMTRweCAzMHB4IDE0cHggMjBweDtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAtMXB4O1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnktZGFyayk7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2UtaW4tb3V0O1xuICAgIH1cblxuICAgIFt0eXBlPSdjaGVja2JveCddLFxuICAgIFt0eXBlPSdyYWRpbyddIHtcbiAgICAgICAgQGluY2x1ZGUgaW5wdXQtZGlzYztcbiAgICB9XG5cbiAgICAmOmhhcyg6Y2hlY2tlZCksXG4gICAgJltjbGFzcyo9J3NlbGVjdGVkJ10ge1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgW3R5cGU9J2NoZWNrYm94J106bm90KC5maXgtc3BlY2lmaWNpdHkpLFxuICAgICAgICBbdHlwZT0ncmFkaW8nXTpub3QoLmZpeC1zcGVjaWZpY2l0eSkge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnktZGFyayk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnktZGFyayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyOm5vdCg6aGFzKFtkaXNhYmxlZF0pKSxcbiAgICAmOmZvY3VzLXdpdGhpbjpub3QoOmhhcyhbZGlzYWJsZWRdKSkge1xuICAgICAgICBib3JkZXItY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgZ3JheS00MDApO1xuXG4gICAgICAgIFt0eXBlPSdjaGVja2JveCddOm5vdCg6Y2hlY2tlZCksXG4gICAgICAgIFt0eXBlPSdyYWRpbyddOm5vdCg6Y2hlY2tlZCkge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2IoMCwgMCwgMCwgMC4yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aGFzKFtkaXNhYmxlZF0pOm5vdCguZml4LXNwZWNpZmljaXR5KSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgbGlnaHQpO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6Y29sb3InO1xuQGltcG9ydCAndGhlbWUtdmFyaWFibGVzJztcbkBpbXBvcnQgJy4uLy4uL2RlZmF1bHQvc2Fzcy9hc2dhcmQtdmFyaWFibGVzJztcbkBpbXBvcnQgJ2FwcC9hYnN0cmFjdHMvYWxsJztcblxuLm92ZXJmbG93LW1lbnUge1xuICAgIC0tb3ZlcmZsb3ctYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUsIDEpO1xuXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICAgLmdyZXktYmctMTAwICYge1xuICAgICAgICAtLW92ZXJmbG93LWJhY2tncm91bmQtY29sb3I6ICN7bWFwLmdldCgkdGhlbWUtY29sb3JzLCBncmF5LTEwMCl9O1xuICAgIH1cblxuICAgICZfX2l0ZW1zIHtcbiAgICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIGxlbmd0aC16ZXJvLW5vLXVuaXQgKi9cbiAgICAgICAgLS1zY3JvbGxiYXItaGVpZ2h0OiAwcHg7XG4gICAgICAgIC0tbWFzay13aWR0aDogMjBweDtcbiAgICAgICAgLS1vdmVyZmxvdy1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1vdmVyZmxvdy1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgICAgICAgLS1tYXNrLWltYWdlLWNvbnRlbnQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdHJhbnNwYXJlbnQgNXB4LCAjMDAwIHZhcigtLW1hc2std2lkdGgpLCAjMDAwIGNhbGMoMTAwJSAtIHZhcigtLW1hc2std2lkdGgpKSwgdHJhbnNwYXJlbnQgY2FsYygxMDAlIC0gNXB4KSk7XG4gICAgICAgIC0tbWFzay1zaXplLWNvbnRlbnQ6IDEwMCUgY2FsYygxMDAlIC0gdmFyKC0tc2Nyb2xsYmFyLWhlaWdodCkpO1xuICAgICAgICAtLW1hc2staW1hZ2Utc2Nyb2xsYmFyOiBsaW5lYXItZ3JhZGllbnQoIzAwMCwgIzAwMCk7XG4gICAgICAgIC0tbWFzay1zaXplLXNjcm9sbGJhcjogMTAwJSB2YXIoLS1zY3JvbGxiYXItaGVpZ2h0KTtcblxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDAuOHJlbTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiAnd2dodCcgNjAwO1xuICAgICAgICBzY3JvbGxiYXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICBtYXNrLWltYWdlOiB2YXIoLS1tYXNrLWltYWdlLWNvbnRlbnQpLCB2YXIoLS1tYXNrLWltYWdlLXNjcm9sbGJhcik7XG4gICAgICAgIG1hc2stc2l6ZTogdmFyKC0tbWFzay1zaXplLWNvbnRlbnQpLCB2YXIoLS1tYXNrLXNpemUtc2Nyb2xsYmFyKTtcbiAgICAgICAgbWFzay1wb3NpdGlvbjpcbiAgICAgICAgICAgIDAgMCxcbiAgICAgICAgICAgIDEwMCUgMDtcbiAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdCwgbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1vdmVyZmxvdy1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgICAgICAgbWFyZ2luLWlubGluZTogY2FsYyh2YXIoLS1icy1ndXR0ZXIteCkgKiAtMC41KTtcbiAgICAgICAgcGFkZGluZy1pbmxpbmU6IGNhbGModmFyKC0tYnMtZ3V0dGVyLXgpICogMC41KTtcblxuICAgICAgICAvLyBoaWRlIHRoZSBzY3JvbGxiYXIgZm9yIHdlYmtpdC9ibGluayBicm93c2Vyc1xuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgnbGcnKSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2l0ZW0ge1xuICAgICAgICAmLWVsZW1lbnQge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IuYWRqdXN0KG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2xpZ2h0JyksICRhbHBoYTogLTEpO1xuICAgICAgICAgICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2RhcmsnKTtcbiAgICAgICAgICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiBpbmhlcml0O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIGVhc2Utb3V0IDAuMTVzLFxuICAgICAgICAgICAgICAgIGNvbG9yIGVhc2Utb3V0IDAuMTVzO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgICAgICY6aG92ZXIsXG4gICAgICAgICAgICAmOmZvY3VzLFxuICAgICAgICAgICAgJjphY3RpdmUsXG4gICAgICAgICAgICAmLS1hY3RpdmUsXG4gICAgICAgICAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6ICd3Z2h0JyA2MDA7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCAncHJpbWFyeS1taWQnKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgcHJpbWFyeSk7XG5cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCdsZycpIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCAncHJpbWFyeS1taWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYtLWFjdGl2ZSxcbiAgICAgICAgICAgICYuaXMtYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJ2xnJykge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEuMXJlbSAycmVtO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yLmFkanVzdChtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsICdkYXJrJyksICRhbHBoYTogLTAuOCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvLyBCcmVha3BvaW50IHZpZXdwb3J0IHNpemVzIGFuZCBtZWRpYSBxdWVyaWVzLlxuLy9cbi8vIEJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIGFzIGEgbWFwIG9mIChuYW1lOiBtaW5pbXVtIHdpZHRoKSwgb3JkZXIgZnJvbSBzbWFsbCB0byBsYXJnZTpcbi8vXG4vLyAgICAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KVxuLy9cbi8vIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYCBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cblxuLy8gTmFtZSBvZiB0aGUgbmV4dCBicmVha3BvaW50LCBvciBudWxsIGZvciB0aGUgbGFzdCBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgJGJyZWFrcG9pbnQtbmFtZXM6ICh4cyBzbSBtZCBsZyB4bCB4eGwpKVxuLy8gICAgbWRcbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAaWYgbm90ICRuIHtcbiAgICBAZXJyb3IgXCJicmVha3BvaW50IGAjeyRuYW1lfWAgbm90IGZvdW5kIGluIGAjeyRicmVha3BvaW50c31gXCI7XG4gIH1cbiAgQHJldHVybiBpZigkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cbi8vIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICA1NzZweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcbn1cblxuLy8gTWF4aW11bSBicmVha3BvaW50IHdpZHRoLlxuLy8gVGhlIG1heGltdW0gdmFsdWUgaXMgcmVkdWNlZCBieSAwLjAycHggdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb25zIG9mXG4vLyBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzIHdpdGggZnJhY3Rpb25hbCB3aWR0aHMuXG4vLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL21lZGlhcXVlcmllcy00LyNtcS1taW4tbWF4XG4vLyBVc2VzIDAuMDJweCByYXRoZXIgdGhhbiAwLjAxcHggdG8gd29yayBhcm91bmQgYSBjdXJyZW50IHJvdW5kaW5nIGJ1ZyBpbiBTYWZhcmkuXG4vLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODI2MVxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KG1kLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIDc2Ny45OHB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWF4IGFuZCAkbWF4ID4gMCwgJG1heCAtIC4wMiwgbnVsbCk7XG59XG5cbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuXG4vLyBVc2VmdWwgZm9yIG1ha2luZyByZXNwb25zaXZlIHV0aWxpdGllcy5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIFwiXCIgIChSZXR1cm5zIGEgYmxhbmsgc3RyaW5nKVxuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBcIi1zbVwiXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICBAcmV0dXJuIGlmKGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpID09IG51bGwsIFwiXCIsIFwiLSN7JG5hbWV9XCIpO1xufVxuXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIHdpZGVyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSBvZiBhdCBtb3N0IHRoZSBtYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgbGFyZ2VzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWF4IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSB0aGF0IHNwYW5zIG11bHRpcGxlIGJyZWFrcG9pbnQgd2lkdGhzLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1iZXR3ZWVuKCRsb3dlciwgJHVwcGVyLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRsb3dlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJHVwcGVyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBNZWRpYSBiZXR3ZWVuIHRoZSBicmVha3BvaW50J3MgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMuXG4vLyBObyBtaW5pbXVtIGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCwgYW5kIG5vIG1heGltdW0gZm9yIHRoZSBsYXJnZXN0IG9uZS5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBvbmx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50LCBub3Qgdmlld3BvcnRzIGFueSB3aWRlciBvciBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LW9ubHkoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiAgYnJlYWtwb2ludC1tYXgoJG5leHQsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuZXh0LCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQGltcG9ydCAndGhlbWUtdmFyaWFibGVzJztcbkBpbXBvcnQgJy4uLy4uL2RlZmF1bHQvc2Fzcy9hc2dhcmQtdmFyaWFibGVzJztcbkBpbXBvcnQgJ2FwcC9hYnN0cmFjdHMvYWxsJztcblxuLnRpbWUtbGltaXRlZC1vZmZlcnMge1xuICAgICZfX3RpdGxlIHtcbiAgICAgICAgbWFyZ2luLWJsb2NrLWVuZDogMXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICBmb250LXZhcmlhdGlvbi1zZXR0aW5nczogJ3dnaHQnIDYwMDtcbiAgICB9XG5cbiAgICAmX19vZmZlciB7XG4gICAgICAgICYtZGV0YWlscyB7XG4gICAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHNlY29uZGFyeSk7XG4gICAgICAgICAgICBjb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBsaWdodCk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHggOHB4IDAgMDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgICAgICoge1xuICAgICAgICAgICAgICAgIHdvcmQtYnJlYWs6IG5vcm1hbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPiAqIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWlubGluZTogMnJlbTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICAgICAgICAgICY6d2hlcmUoOmZpcnN0LWNoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctYmxvY2s6IDJyZW0gMXJlbTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmOndoZXJlKDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctYmxvY2s6IDFyZW0gMnJlbTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJsb2NrLXN0YXJ0OiAycHggZGFzaGVkO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6d2hlcmUoOmZpcnN0LWNoaWxkOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWJsb2NrOiAycmVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgKjp3aGVyZSg6bm90KC50aW1lLWxpbWl0ZWQtb2ZmZXJzX19vZmZlci10aW1lLXJlbWFpbmluZy1oZWFkaW5nKSkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJ2xnJykge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDM0cHg7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiAnd2dodCcgOTAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtdGltZS1yZW1haW5pbmcge1xuICAgICAgICAgICAgJi1oZWFkaW5nIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXZhcmlhdGlvbi1zZXR0aW5nczogJ3dnaHQnIDUwMDtcbiAgICAgICAgICAgICAgICBmb250LXZhcmlhbnQ6IHRhYnVsYXItbnVtcztcblxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJ2xnJykge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDI4cHg7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiAnd2dodCcgNzAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi12YWx1ZSB7XG4gICAgICAgICAgICAgICAgZm9udC12YXJpYW50OiB0YWJ1bGFyLW51bXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS14bC13aWRlIHtcbiAgICAgICAgLnRpbWUtbGltaXRlZC1vZmZlcnMge1xuICAgICAgICAgICAgJl9fb2ZmZXIge1xuICAgICAgICAgICAgICAgICYtZGV0YWlscyB7XG4gICAgICAgICAgICAgICAgICAgICo6d2hlcmUoOm5vdCgudGltZS1saW1pdGVkLW9mZmVyc19fb2ZmZXItdGltZS1yZW1haW5pbmctaGVhZGluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDM0cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6ICd3Z2h0JyA5MDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmLXRpbWUtcmVtYWluaW5nIHtcbiAgICAgICAgICAgICAgICAgICAgJi1oZWFkaW5nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjhweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiAnd2dodCcgNzAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgneGwnKSB7XG4gICAgICAgICAgICAudGltZS1saW1pdGVkLW9mZmVycyB7XG4gICAgICAgICAgICAgICAgJl9fb2ZmZXIge1xuICAgICAgICAgICAgICAgICAgICAmLXdyYXBwZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgd2lkZS1jYXJkKCd4bCcpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMS4yZnI7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmLWRldGFpbHMge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA1MHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgID4gKiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBzZWNvbmRhcnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIGxpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWJsb2NrOiBjbGFtcCgycmVtLCAzdncsIDQuNzVyZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcDogMC41cmVtO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJjp3aGVyZSg6bGFzdC1jaGlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAqOndoZXJlKDpub3QoLnRpbWUtbGltaXRlZC1vZmZlcnNfX29mZmVyLXRpbWUtcmVtYWluaW5nLWhlYWRpbmcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiA0NHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJi1wZXJjZW50YWdlLXNhdmluZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBpbnZlcnRlZC1ib3JkZXItcmFkaXVzKCdyJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE1cHggMCAwIDE1cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICYtdGltZS1yZW1haW5pbmcge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxleDogMS4yIDEgYXV0bztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE1cHggMCAwIDE1cHg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICY6d2hlcmUoOm5vdCg6Zmlyc3QtY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cygnbCcpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItaW5saW5lLXN0YXJ0OiAycHggZGFzaGVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAmLWhlYWRpbmcge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMzZweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6d2hlcmUoOm5vdCgmLS14bC13aWRlKSkge1xuICAgICAgICAudGltZS1saW1pdGVkLW9mZmVycyB7XG4gICAgICAgICAgICAmX19vZmZlciB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCdsZycpIHtcbiAgICAgICAgICAgICAgICAgICAgJi10aW1lLXJlbWFpbmluZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAmLWhlYWRpbmcge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQ6bm90KDpvbmx5LWNoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICc6JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9kdWN0LWNhcmQge1xuICAgICAgICAgICAgJl9fZmxhZ3Mge1xuICAgICAgICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgICAgICAgdG9wOiBjYWxjKHZhcigtLXRodW1ibmFpbC1wYWRkaW5nKSAtIDIwcHgpO1xuXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCdsZycpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBbY2xhc3MqPSdfX2l0ZW0nXSB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJ2xnJykge1xuICAgICAgICAgICAgLnByb2R1Y3QtY2FyZCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCAnbGlnaHQnKTtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMjBweCAwIHJnYmEobWFwLmdldCgkdGhlbWUtY29sb3JzLCAnZGFyaycpLCAwLjEpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCA4cHggOHB4O1xuXG4gICAgICAgICAgICAgICAgJl9fcGVyZXgge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICZfX2ZsYWdzIHtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogY2FsYyh2YXIoLS10aHVtYm5haWwtcGFkZGluZykgLSAxMHB4KTtcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Utc2VsZjogc3RhcnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzKj0nX19pdGVtJ10ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTFweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcyo9J19fdGV4dCddIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiAnd2dodCcgNTAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJl9faW5uZXIge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDcwcHggMWZyIDM4cHg7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogbWluLWNvbnRlbnQgbWluLWNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggMCAyMHB4IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgIGdhcDogMTBweCAyMHB4O1xuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICZfX2F2YWlsYWJpbGl0eSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJl9fcHJpbWFyeSxcbiAgICAgICAgICAgICAgICAmX19zZWNvbmRhcnksXG4gICAgICAgICAgICAgICAgJl9fc2Vjb25kYXJ5LWlubmVyIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogY29udGVudHM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJl9fdGh1bWJuYWlsIHtcbiAgICAgICAgICAgICAgICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIGxlbmd0aC16ZXJvLW5vLXVuaXQgKi9cbiAgICAgICAgICAgICAgICAgICAgLS10aHVtYm5haWwtcGFkZGluZzogMHB4O1xuXG4gICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxIC8gc3BhbiAyO1xuICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA3MHB4O1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICZfX2hlYWRpbmcge1xuICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDI7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYmxvY2s6IGF1dG8gMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmX19wcmljZSB7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMjtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJsb2NrOiAwIGF1dG87XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLmNhcmQtcHJpY2Uge1xuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGdhcDogMTBweCAwLjVyZW07XG5cbiAgICAgICAgICAgICAgICAgICAgJl9fZnVsbCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICZfX2Rpc2NvdW50LFxuICAgICAgICAgICAgICAgICAgICAmX19zYXZpbmcge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmX19zYXZpbmcge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHNhdmluZy1jb2xvci1iZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA0cHggNnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICZfX2FkZCB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fc2xpZGVyIHtcbiAgICAgICAgLmVtYmxhIHtcbiAgICAgICAgICAgIC5jYXRlZ29yeV9fc2lkZWJhciAmIHtcbiAgICAgICAgICAgICAgICAmX192aWV3cG9ydCB7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICZfX2NvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgICAgIGdhcDogNjBweDsgLy8gYWxsb3cgZm9yIHRoZSBzaGFkb3cgKHZhbHVlIGlzIDEwcHggPiBjb250YWluZXIgcGFkZGluZylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX2J1dHRvbnMge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IG1heC1jb250ZW50O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMnJlbSBhdXRvIDA7XG4gICAgICAgICAgICAgICAgYm90dG9tOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiBpbml0aWFsO1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDIwcHggMCByZ2JhKG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2RhcmsnKSwgMC4wNik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX2J1dHRvbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2FyZC1wcmljZV9fdm91Y2hlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gRklYIEZPUiBpT1MgLyBNYWNPUyBTYWZhcmkgd2l0aCBTcGxpZGVcbiAgICBAYXQtcm9vdCB7XG4gICAgICAgIC5jb250YWluZXI6aGFzKD4gI3smfSkge1xuICAgICAgICAgICAgb3ZlcmZsb3cteDogY2xpcDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=*/