@charset "UTF-8";
/* Colors */
/* even rows in list or tables, subtle shade of $c-bg-high */
/* Primary: blue */
/* text over primary background */
/* Secondary: green */
/* text over secondary background */
/* Accent: orange */
/* text over accent background */
/* Brag: gold */
/* text over brag background */
/* Error: red */
/* text over brag background */
/* Good: green */
/* Warn: orange */
/* Bad: red */
/* Heart: red */
/* Fancy: pink */
/* text over brag background */
/* Borders */
/* Shadows */
/* even rows in list or tables, subtle shade of $c-bg-high */
/* Primary: blue */
/* Secondary: green */
/* Brag: gold */
/* Fancy: pink */
/* Good: green */
/* Warn: orange */
/* Bad: red */
/* Common imports for all CSS modules */
/* Widths */
/* Heights */
/* Orientations */
/* Capabilities */
/* Aliases */
/* Uniboard: keep the same page layout across pages */
/* when the width is appropriate for col1, but landscape prevents it */
.piece-letter .tview2 move, .tview2 .piece-letter move, .piece-letter .pv_box .pv span, .pv_box .pv .piece-letter span, .piece-letter .explorer-box .moves td:first-child, .explorer-box .moves .piece-letter td:first-child, .piece-letter .explorer-box .tablebase td:first-child, .explorer-box .tablebase .piece-letter td:first-child, .piece-letter .analyse__fork move, .analyse__fork .piece-letter move, .piece-letter #analyse-cm .title, #analyse-cm .piece-letter .title, .tview2 glyph, .mselect__list, .analyse__fork glyph {
  font-family: 'Noto Sans', Sans-Serif;
}

.tview2 move draw, .pv_box .pv span draw, .explorer-box .moves td:first-child draw, .explorer-box .tablebase td:first-child draw, .analyse__fork move draw, #analyse-cm .title draw, .tview2 eval, .tview2 comment .by, .ceval .engine .cloud, .explorer-box .moves th, .analyse__fork eval {
  font-family: 'Roboto', Sans-Serif;
}

.tview2 move, .pv_box .pv span, .explorer-box .moves td:first-child, .explorer-box .tablebase td:first-child, .analyse__fork move, #analyse-cm .title, .mofw-nom-overlay__header .mofw-san, .mofw-nom-overlay__cont-chip .mofw-cont-san {
  font-family: 'Noto Chess', 'Noto Sans';
}

.tview2 move draw, .pv_box .pv span draw, .explorer-box .moves td:first-child draw, .explorer-box .tablebase td:first-child draw, .analyse__fork move draw, #analyse-cm .title draw {
  margin-left: 1ch;
  font-weight: normal;
}

/* text printed directly on the page background deserves special treatment (transp theme) */
.analyse__controls .fbt {
  color: #999999;
}

.crosstable__users, .crosstable__score, .crosstable povs:hover, .cmn-toggle + label::after, .mselect__label, .explorer__config .choices button, #analyse-cm .title, .analyse__clock {
  background: linear-gradient(to bottom, #3c3934, #33312e 100%);
}

.cmn-toggle:hover:not(:disabled) + label::after, .mselect__label:hover, .explorer__config .choices button:hover {
  background: linear-gradient(to bottom, #44413b, #3b3935 100%);
  color: #cccccc;
}

.ceval, .analyse__tools .comp-off__hint {
  background: linear-gradient(to bottom, #3c3934, #33312e 100%);
}

#modal-wrap, .pv_box .pv-board, .variant-racingKings .cg-wrap.cg-wrap cg-container::before, .mselect__list, #analyse-cm {
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
}

.fbt, .analyse__tools .comp-off__hint button, .mofw-nom-overlay__close, .mofw-nom-overlay__cont-remove, .mofw-nom-overlay__btn {
  background: none;
  border: none;
  outline: none;
  color: #bababa;
  align-items: normal;
}

.cmn-toggle:focus:not(:disabled) + label, .cmn-toggle:hover:not(:disabled) + label {
  box-shadow: 0 0 12px #999999;
}

.tview2 move, .ceval help,
.ceval .engine {
  white-space: nowrap;
  overflow: hidden;
}

.tview2 comment .by, .pv_box .pv.pv--nowrap {
  white-space: nowrap;
}

.tview2-column > interrupt > comment {
  overflow-wrap: break-word;
  word-break: break-word;
}

.tview2 comment .by, .pv_box .pv.pv--nowrap, .crosstable__users, .explorer-box .games td span {
  overflow: hidden;
  text-overflow: ellipsis;
}

.pv_box .pv-board .pv-board-square {
  position: relative;
  display: block;
  height: 0;
  padding-bottom: 100%;
  width: 100%;
}

.cmn-toggle + label::before, .tview2 shapes::before, .mselect__label::after, .mselect__list .current::after {
  font-size: 1.2em;
  vertical-align: middle;
  font-family: 'lichess';
  font-style: normal;
  font-weight: normal;
  text-transform: none;
  speak: none;
  content: attr(data-icon);
  opacity: 0.9;
}

#modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  background: rgba(0, 0, 0, 0.6);
  z-index: 109;
}

.explorer-box .overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
}

.pv_box .pv-board .pv-board-square .cg-wrap {
  position: absolute;
  width: 100%;
  height: 100%;
}

.cmn-toggle, .analyse-controls {
  touch-action: manipulation;
}

.tview2-column, .action-menu .autoplay, .explorer__config__player__choice .previous {
  display: flex;
  flex-flow: row wrap;
}

#modal-overlay, .ceval .switch, .explorer__config .name > div, .analyse__fork, .analyse__fork move, .copyables .pair {
  /* extends %flex-wrap */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
}

.explorer-box .explorer-title, .explorer-box .explorer-title .active, #analyse-cm a, .material, .mselect label span,
.mselect a {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.mselect__label {
  /* extends %flex-center */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  justify-content: space-between;
}

.mselect__list .current, .explorer__config .date label {
  /* extends %flex-center */
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
  justify-content: space-between;
}

#modal-wrap, .continue-with, .crosstable povs, .crosstable__users, .crosstable__score, .crosstable__matchup, .mselect__list, .analyse__tools, .action-menu__tools > *, .explorer-box .message, .training-box, .analyse--wiki .analyse__side {
  display: flex;
  flex-flow: column;
}

.crosstable, .analyse__tools, .mselect__label, #modal-wrap, .tview2-inline move.active,
.tview2 line move.active, .tview2-inline move:hover, .ceval .engine .cloud, .mselect__list, #analyse-cm, .is3d .analyse__clock.top {
  border-radius: 3px;
}

.crosstable, .analyse__tools {
  overflow: hidden;
  /* helps with clipping background into border-radius */
}

.crosstable .sep, .explorer__config .choices button:first-child, .explorer-box .bar span:first-child {
  border-radius: 3px 0 0 3px;
}

.explorer__config .choices button:last-child, .explorer-box .bar span:last-child {
  border-radius: 0 3px 3px 0;
}

.analyse__clock.top {
  border-radius: 3px 3px 0 0;
}

.analyse-controls .fbt, .analyse__clock.bottom, .copyables .pair .action {
  border-radius: 0 0 3px 3px;
}

.mselect__label, .crosstable, .analyse__tools, #modal-wrap .close:hover, .analyse__clock {
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
}

coords {
  /* handle hidden coords */
  /* handle inner coords */
  position: absolute;
  display: flex;
  pointer-events: none;
  user-select: none;
  color: #fff;
  text-shadow: 0 1px 2px #000;
  font-weight: bold;
  /* negate inner coords colors */
}

.coords-no coords {
  display: none;
}

coords {
  font-size: 8px;
}

@media (min-width: 320px) {
  coords {
    font-size: calc( 8px + 4 * ((100vw - 320px) / 880));
  }
}

@media (min-width: 1200px) {
  coords {
    font-size: 12px;
  }
}

coords.ranks {
  flex-flow: column-reverse;
  top: 1px;
  right: 0;
  height: 100%;
  width: 0.8em;
}

coords.ranks.black {
  flex-flow: column;
}

coords.files {
  bottom: 0px;
  left: 0;
  text-align: left;
  flex-flow: row;
  width: 100%;
  height: 1.4em;
}

coords.files.black {
  flex-flow: row-reverse;
}

coords.files coord {
  padding-left: 4px;
}

coords coord {
  flex: 1 1 auto;
}

coords .is3d .cg-wrap coords coord {
  color: #fff !important;
  text-shadow: 0 1px 2px #000 !important;
}

coords .is3d .cg-wrap coords.files {
  bottom: calc(1px - 2.5%);
}

coords .is3d .cg-wrap coords.files coord {
  padding-left: 3px;
}

coords {
  text-shadow: var(--cg-cs, 0 1px 2px #000);
}

.orientation-white .files coord:nth-child(2n + 1),
.orientation-white .ranks coord:nth-child(2n),
.orientation-black .files coord:nth-child(2n),
.orientation-black .ranks coord:nth-child(2n + 1) {
  color: var(--cg-ccw, #fff);
}

.orientation-white .files coord:nth-child(2n),
.orientation-white .ranks coord:nth-child(2n + 1),
.orientation-black .files coord:nth-child(2n + 1),
.orientation-black .ranks coord:nth-child(2n) {
  color: var(--cg-ccb, #fff);
}

/* handle outer coords */
@media (min-width: 800px), (orientation: landscape) {
  .coords-out coords {
    text-shadow: none;
  }
  .coords-out coords.ranks {
    right: -15px;
    top: 0;
    width: 12px;
  }
  .coords-out coords.ranks coord {
    transform: translateY(42%);
  }
  .coords-out coords.files {
    bottom: -15px;
    left: 0;
    text-align: center;
  }
  .coords-out coords.ranks coord,
  .coords-out .is2d coords.files coord {
    color: #999999 !important;
  }
}

body {
  --board-scale: 1;
}

@media (min-width: 800px) and (min-height: 500px) {
  body {
    --board-scale: calc((var(--zoom) / 100) * 0.7 + 0.3);
  }
}

@media (max-width: 799px) and (orientation: portrait) {
  body {
    --col1: 1;
  }
  .main-board cg-board {
    border-radius: 0;
  }
}

body ::-webkit-scrollbar,
body ::-webkit-scrollbar-corner {
  width: 0.5rem;
  background: #262421;
}

body ::-webkit-scrollbar-thumb {
  background: #4d4d4d;
}

body ::-webkit-scrollbar-thumb:hover,
body ::-webkit-scrollbar-thumb:active {
  background: #6b6b6b;
}

body.resizing {
  user-select: none;
}

cg-resize {
  display: none;
}

@media (min-width: 800px) {
  cg-resize {
    display: block;
    position: absolute;
    right: -9px;
    bottom: -9px;
    width: 22px;
    height: 22px;
    cursor: nwse-resize;
    z-index: 10;
  }
  cg-resize::before, cg-resize::after {
    background: #000;
    content: '';
    position: absolute;
    width: 12px;
    height: 1px;
  }
  cg-resize::before {
    width: 5px;
    transform: translate(7px, 8px) rotate(-45deg);
  }
  cg-resize::after {
    transform: translate(1px, 6px) rotate(-45deg);
  }
  cg-resize:hover {
    border-radius: 50%;
    background: rgba(214, 79, 0, 0.5);
  }
  .resizing cg-resize {
    border-radius: 50%;
    background: rgba(98, 153, 36, 0.5);
  }
}

#modal-overlay {
  justify-content: center;
}

#modal-wrap {
  background: #262421;
  position: relative;
  text-align: center;
  max-width: 100vw;
  max-height: 96vh;
}

#modal-wrap > div {
  overflow: hidden;
  overflow-y: auto;
  padding: 2rem;
}

#modal-wrap .close {
  color: #bababa;
  position: absolute;
  font-size: 16px;
  line-height: 28px;
  width: 32px;
  height: 32px;
  cursor: pointer;
  top: 0;
  right: 0;
  background: none;
}

@media (min-width: 800px) {
  #modal-wrap .close {
    top: -12px;
    right: -12px;
    background: #3c3934;
    border-radius: 50%;
  }
}

#modal-wrap .close:hover {
  background: #cc3333;
  color: #fff;
}

.continue-with > *:not(:first-child) {
  margin-top: 1em;
}

.color-icon.white::before {
  content: '';
}

.color-icon.black::before {
  content: '';
}

.color-icon.random::before {
  content: '';
}

.crosstable__users {
  flex: 1 1 auto;
}

.crosstable {
  width: 100%;
  line-height: 1.9em;
  display: flex;
}

.crosstable fill,
.crosstable povs {
  background: #262421;
  flex: 1 1 auto;
}

.crosstable povs, .crosstable__users, .crosstable__score, .crosstable__matchup {
  text-align: center;
}

.crosstable__users {
  max-width: 40vw;
  text-align: left;
}

.crosstable__users a {
  padding-left: 2vmin;
}

.crosstable__score {
  flex: 0 0 auto;
  font-weight: bold;
}

.crosstable__score span {
  padding: 0 2vmin;
}

.crosstable__matchup {
  flex: 1 1 auto;
  font-weight: bold;
  background: #293a49;
}

.crosstable povs a {
  color: #999999;
  flex: 0 0 50%;
}

.crosstable povs:hover a {
  opacity: 1 !important;
}

.crosstable povs a.loss {
  opacity: 0.2;
}

.crosstable povs.current a {
  background: #a1420a;
  color: #fff;
  opacity: 1 !important;
}

.crosstable povs.new {
  border: #404040;
}

.crosstable povs a.loss {
  opacity: 0.2;
}

@media (max-width: 649px) {
  .crosstable povs {
    display: none;
  }
  .crosstable povs:nth-last-child(-n + 12) {
    display: flex;
  }
}

.crosstable .sep {
  border-left: 1px solid #404040;
  margin-left: 0.3em;
}

.crosstable .win {
  font-weight: bold;
  color: #629924;
}

.crosstable .loss {
  color: #cc3333;
}

.crosstable .unavailable {
  margin-top: 40px;
  opacity: 0.7;
}

.fbt {
  text-transform: uppercase;
  line-height: 1.5;
  transition: all 150ms;
}

@media (hover: hover) {
  .fbt:hover:not(.disabled):not([disabled]) {
    background: #537c23;
    color: #fff;
  }
}

.fbt.active {
  background: #629924 !important;
  color: #fff;
}

.fbt.disabled, .fbt[disabled] {
  opacity: 0.5;
  cursor: default;
}

.cmn-toggle {
  position: absolute;
  margin-left: -99999px;
}

.cmn-toggle + label {
  display: block;
  position: relative;
  cursor: pointer;
  outline: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  padding: 1px;
  width: 40px;
  height: 24px;
  border: 1px solid #404040;
  border-radius: 24px;
}

.cmn-toggle + label::before, .cmn-toggle + label::after {
  display: block;
  position: absolute;
  content: '';
  width: 22px;
  height: 22px;
  bottom: 0;
  left: 0;
}

.cmn-toggle + label::before {
  font-size: 1em;
  z-index: 1;
  text-align: center;
  line-height: 22px;
}

.cmn-toggle + label::after {
  border-radius: 100%;
  box-shadow: 0 1px 2.5px rgba(0, 0, 0, 0.3);
}

.cmn-toggle:not(:checked) + label {
  background-color: #cc3333;
}

.cmn-toggle--subtle:not(:checked) + label {
  background-color: #6b6b6b;
}

.cmn-toggle:checked + label {
  background-color: #629924;
}

.cmn-toggle:disabled + label {
  opacity: 60%;
  cursor: not-allowed !important;
}

.cmn-toggle:hover:not(:disabled) + label {
  transition: background 150ms;
}

.cmn-toggle:hover:not(:disabled) + label::before {
  transition: margin 150ms, color 150ms;
}

.cmn-toggle:hover:not(:disabled) + label::after {
  transition: margin 150ms;
}

.cmn-toggle:not(:checked) + label::before {
  content: '';
  color: #cc3333;
}

.cmn-toggle--subtle:not(:checked) + label::before {
  color: #6b6b6b;
}

.cmn-toggle:checked + label::before, .cmn-toggle:checked + label::after {
  margin-left: 16px;
}

.cmn-toggle:checked + label::before {
  content: '';
  color: #629924;
}

input.range {
  -webkit-appearance: none;
  background: none;
  border: 0;
}

input.range:focus {
  outline: none;
}

input.range::-webkit-slider-runnable-track {
  width: 100%;
  height: 1em;
  cursor: pointer;
  background: #4d4d4d;
  border-radius: 0.5em;
}

input.range::-webkit-slider-thumb {
  background: linear-gradient(to bottom, #3c3934, #33312e 100%);
  border: 1px solid #6b6b6b;
  height: 1em;
  width: 1.5em;
  border-radius: 12px;
  background: #262421;
  cursor: pointer;
  -webkit-appearance: none;
}

input.range::-moz-range-track {
  width: 100%;
  height: 1em;
  cursor: pointer;
  background: #4d4d4d;
  border-radius: 0.5em;
}

input.range::-moz-range-thumb {
  background: linear-gradient(to bottom, #3c3934, #33312e 100%);
  border: 1px solid #6b6b6b;
  height: 1em;
  width: 1.5em;
  border-radius: 12px;
  background: #262421;
  cursor: pointer;
}

input.range::-ms-track {
  width: 100%;
  height: 1em;
  cursor: pointer;
  background: #4d4d4d;
  border-radius: 0.5em;
}

input.range::-ms-fill-lower {
  background: rgba(191, 191, 191, 0.78);
  border-radius: 11.8px;
}

input.range::-ms-fill-upper {
  background: rgba(214, 214, 214, 0.78);
  border-radius: 11.8px;
}

input.range::-ms-thumb {
  background: linear-gradient(to bottom, #3c3934, #33312e 100%);
  border: 1px solid #6b6b6b;
  height: 1em;
  width: 1.5em;
  border-radius: 12px;
  background: #262421;
  cursor: pointer;
  border-color: transparent;
  color: transparent;
}

.tview2 move {
  display: inline-block;
  cursor: pointer;
}

.tview2 {
  white-space: normal;
}

.tview2-inline {
  padding: 7px 3px 7px 7px;
}

@media (hover: none) {
  .tview2 move {
    user-select: none;
  }
}

.tview2 move.inaccuracy {
  color: #56b4e9;
}

.tview2 move.mistake {
  color: #e69f00;
}

.tview2 move.blunder {
  color: #df5353;
}

.tview2-column move {
  font-size: 1.092em;
  padding: 0 2px;
}

.tview2-inline move {
  padding: 0.25em 0.17em;
  white-space: nowrap;
  font-weight: bold;
}

.tview2 move.parent {
  color: #3692e7;
}

.tview2 comment a {
  vertical-align: top;
}

.tview2 move.current {
  border: 1px solid #d64f00;
}

.tview2 move.active {
  font-weight: bold;
  background: #2a4053;
  color: #cccccc;
}

.tview2-inline move.active,
.tview2 line move.active {
  background: #2d5070;
  color: #e3e3e3;
  outline: 1px solid #306698;
}

.tview2 move.nongame {
  font-style: italic;
}

.tview2 move:not(.empty):hover,
.tview2 move:not(.empty):hover index,
.tview2 move:not(.empty):hover eval {
  background: #3692e7;
  color: #fff;
}

.tview2 move.empty {
  color: #6b6b6b;
  cursor: default;
}

.tview2 move index {
  font-size: 90%;
  color: #999999;
}

.tview2 move.context-menu {
  background: #d64f00;
  color: #fff;
}

.tview2 move.context-menu index {
  color: #fff;
}

.tview2-column move index {
  padding-left: 5px;
}

.tview2-column move index:first-child {
  padding-left: 0;
}

.tview2-inline move index {
  padding-right: 0.2em;
  line-height: 111.11%;
}

.tview2 line move {
  color: #bababa;
}

.tview2-column > move {
  flex: 0 0 43.5%;
  display: flex;
  font-size: 1.185em;
  line-height: 1.75em;
  padding: 0 0.3em 0 0.5em;
}

.tview2-column > index + move {
  border-right: #404040;
}

.tview2 eval {
  flex: 3 0 auto;
  text-align: right;
  font-size: 0.8em;
  color: #999999;
}

.tview2 glyph {
  margin-left: 0.08em;
  vertical-align: bottom;
}

.tview2 .mofw-star {
  font-size: 0.75em;
  margin-left: 0.15em;
  vertical-align: middle;
  cursor: default;
}

.tview2 .mofw-star--complete {
  color: #4caf50;
}

.tview2 .mofw-star--draft {
  color: #e6b800;
}

.tview2 shapes {
  font-size: 0.7em;
  margin-left: 0.4em;
  text-align: right;
  color: #629924;
}

.tview2 shapes::before {
  content: '';
}

.tview2-column > move glyph {
  flex: 0 1 auto;
  text-align: center;
  overflow: hidden;
  font-size: 0.82em;
}

.tview2-column > index {
  flex: 0 0 13%;
  display: flex;
  justify-content: center;
  border-right: 1px solid #404040;
  background: #302e2c;
  line-height: 2.07em;
  color: #6b6b6b;
}

.tview2 > interrupt {
  font-size: 95%;
}

.tview2-column > interrupt {
  flex: 0 0 100%;
  background: #302e2c;
  border-top: 1px solid #404040;
  border-bottom: 1px solid #404040;
  max-width: 100%;
}

.tview2-column div.pgr {
  flex: 0 0 100%;
  display: flex;
  align-items: flex-start;
}

.tview2-column div.pgr > index {
  flex: 0 0 10%;
  display: flex;
  justify-content: center;
  border-right: 1px solid #404040;
  background: #302e2c;
  line-height: 2.07em;
  color: #6b6b6b;
  align-self: stretch;
}

.tview2-column div.pgr > .pgr-sym {
  flex: 0 0 10%;
  display: flex;
  justify-content: center;
  line-height: 2.07em;
  font-size: 1.1em;
}

.tview2-column div.pgr > .pgr-cnt {
  flex: 0 0 12%;
  display: flex;
  justify-content: center;
  line-height: 2.07em;
  color: #6b6b6b;
  font-size: 0.85em;
}

.tview2-column div.pgr > move {
  flex: 1;
  font-size: 1.185em;
  line-height: 1.75em;
  padding: 0 0.3em 0 0.5em;
}

.tview2-column div.pgr > move:hover {
  background: none !important;
  color: inherit !important;
}

.tview2-column div.pgr > move span {
  cursor: pointer;
  margin-right: 0.35em;
  padding: 0 2px;
  display: inline-block;
}

.tview2-column div.pgr > move span:hover {
  background: #3692e7;
  color: #fff;
}

.tview2-column div.pgr > move span.active {
  font-weight: bold;
  background: #2a4053;
  color: #cccccc;
}

.tview2-column div.pgr > move span.current {
  border: 1px solid #d64f00;
}

.tview2-column > interrupt > comment {
  display: block;
  padding: 3px 5px;
}

.tview2-inline comment {
  vertical-align: 45%;
  word-wrap: break-word;
  margin: 0 0.2em 0 0.1em;
  font-size: 0.9em;
}

.tview2 comment .by {
  display: inline-block;
  vertical-align: -0.3em;
  font-size: 0.9em;
  opacity: 0.8;
  margin-right: 0.4em;
  max-width: 9em;
}

.tview2-column comment.white {
  border-left: 3px solid;
}

.tview2-column comment.black {
  border-right: 3px solid;
  overflow-x: hidden;
}

.tview2-column comment.inaccuracy {
  border-color: #56b4e9;
}

.tview2-column comment.mistake {
  border-color: #e69f00;
}

.tview2-column comment.blunder {
  border-color: #df5353;
}

.tview2-column comment.undefined {
  border-color: #66558c;
}

.tview2 line comment {
  font-size: 90%;
}

.tview2-column line comment {
  display: inline;
  color: #999999;
  word-wrap: break-word;
  padding: 0 5px 0 3px;
  vertical-align: top;
}

.tview2 line comment .by {
  font-size: 1em;
  vertical-align: top;
}

.tview2 lines {
  display: block;
  margin-top: 2px;
  margin-left: 6px;
  margin-bottom: 0.8em;
  border-left: 2px solid #404040;
}

.tview2 > interrupt > lines {
  margin-left: 0px;
}

.tview2 lines.single {
  border-left: none;
}

.tview2 lines:last-child {
  margin-bottom: 0;
}

.tview2 line {
  display: block;
  padding-left: 7px;
}

.tview2-column line {
  margin: 2px 0;
}

.tview2 lines lines move {
  font-size: 13px;
}

.tview2 lines lines {
  margin-left: 1px;
}

.tview2 lines lines::before {
  content: ' ';
  border-top: 2px solid #404040;
  position: absolute;
  margin-left: -11px;
  width: 9px;
  height: 6px;
}

.tview2 lines line::before {
  margin-top: 0.65em;
  margin-left: -8px;
  content: ' ';
  border-top: 2px solid #404040;
  position: absolute;
  width: 8px;
  height: 6px;
}

.tview2 lines lines:last-child {
  margin-bottom: 0;
}

.tview2 inline {
  display: inline;
  font-style: italic;
  font-size: 0.9em;
  opacity: 0.8;
}

.tview2 inline::before,
.tview2 inline::after {
  vertical-align: 0.4em;
  opacity: 0.7;
  font-size: 0.9em;
}

.tview2 inline::before {
  content: '(';
  margin-left: 2px;
}

.tview2 inline::after {
  content: ')';
  margin-right: 2px;
}

.tview2-inline inline::before,
.tview2-inline inline::after {
  vertical-align: 0.7em;
}

.tview2 .conceal {
  opacity: 0.4;
}

.tview2 .hide {
  display: none;
}

.ceval {
  position: relative;
  display: flex;
  align-items: stretch;
}

.ceval.enabled {
  padding-top: 2px;
  height: 40px;
}

.ceval.enabled .show-threat {
  visibility: visible;
}

.ceval .switch {
  flex: 0 0 40px;
  margin-right: 8px;
}

.ceval pearl {
  flex: 0 0 75px;
  line-height: 38px;
  font-size: 1.6em;
  text-align: center;
  font-weight: bold;
}

.ceval help,
.ceval .engine {
  flex: 1 1 auto;
  font-size: 12px;
  line-height: 16px;
  margin-top: 3px;
  color: #999999;
}

.ceval .engine .cloud {
  margin-left: 4px;
  background: #4f7a1d;
  color: #fff;
  padding: 1px 3px;
  text-transform: uppercase;
  font-size: 11px;
}

.ceval .engine .info {
  display: block;
  white-space: nowrap;
}

.ceval .engine .deeper {
  color: #3692e7;
  margin-left: 4px;
}

.ceval .engine .deeper::before {
  vertical-align: -2px;
}

.ceval .technology {
  margin-left: 5px;
}

.ceval .technology.good {
  color: #629924;
}

.ceval .bar {
  position: absolute;
  width: 100%;
  height: 3px;
  top: 0px;
}

@keyframes bar-anim {
  from {
    background-position: 0 0;
  }
  to {
    background-position: 100000px 0;
  }
}

.ceval .bar span {
  display: block;
  height: 3px;
  width: 0;
  background: #629924;
  transition: width 1s;
}

.ceval .bar span.threat {
  background: #cc3333;
}

.ceval.computing .bar span {
  background-image: url("../images/bar-highlight.png");
  animation: bar-anim 1000s linear infinite;
}

.ceval .show-threat {
  flex: 0 99 auto;
  line-height: 38px;
  color: #999999;
  font-size: 0.9em;
  padding-right: 0.5em;
  overflow: hidden;
  visibility: hidden;
}

.ceval .show-threat:hover:not(.hidden), .ceval .show-threat.active {
  color: #cc3333;
}

.ceval .show-threat.hidden {
  opacity: 0.3;
  cursor: default;
}

.pv_box {
  position: relative;
  background: #262421;
  font-size: 13px;
}

.pv_box .pv {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  line-height: 2em;
  border-top: 1px solid #404040;
  padding-right: 14px;
  min-height: 2em;
}

.pv_box .pv.pv--nowrap {
  display: block;
  flex-wrap: initial;
  height: 2em;
}

.pv_box .pv[data-uci]:hover {
  background: #323c22;
  cursor: pointer;
}

.pv_box .pv strong {
  display: inline-block;
  width: 34px;
  text-align: center;
}

.pv_box .pv span {
  margin-left: 4px;
}

.pv_box .pv[data-uci] .pv-san:hover {
  color: #3692e7;
}

.pv_box .pv .pv-wrap-toggle {
  position: absolute;
  top: 0;
  right: 0;
  padding: 0 4px;
  margin: 0;
  cursor: pointer;
}

.pv_box .pv .pv-wrap-toggle:hover {
  background: #629924;
  color: #fff;
}

.pv_box .pv .pv-wrap-toggle::before {
  content: '▲';
}

.pv_box .pv.pv--nowrap .pv-wrap-toggle {
  transform: rotate(180deg);
}

.pv_box .pv-board {
  position: absolute;
  width: 80%;
  left: 34px;
  max-width: 240px;
  z-index: 1;
}

main {
  --gauge-gap: 8px;
}

@media (min-width: 320px) {
  main {
    --gauge-gap: calc( 8px + 9 * ((100vw - 320px) / 880));
  }
}

@media (min-width: 1200px) {
  main {
    --gauge-gap: 17px;
  }
}

.eval-gauge {
  width: var(--gauge-gap);
  position: relative;
  background: #a0a0a0;
  overflow: hidden;
}

@media (max-width: 799px) and (orientation: portrait) {
  .eval-gauge {
    display: none;
  }
}

.eval-gauge.reverse {
  transform: rotateX(180deg);
}

.eval-gauge::after {
  content: '';
  display: block;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.7) inset;
}

.eval-gauge tick {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  border-bottom: 2px ridge #a0a0a0;
  opacity: 0.4;
}

.eval-gauge tick.zero {
  top: 6px;
  opacity: 1;
  border-bottom: 7px solid rgba(214, 79, 0, 0.4);
  margin-top: -3px;
}

.eval-gauge .black {
  width: 100%;
  height: 50%;
  background: #666;
  transition: height 1s;
}

.analyse-controls {
  display: flex;
  justify-content: space-between;
  align-items: stretch;
  font-size: 1.3rem;
}

.analyse-controls .fbt {
  text-align: center;
}

.analyse-controls .hidden {
  visibility: hidden;
}

.analyse-controls .jumps {
  display: flex;
}

.analyse-controls .jumps .fbt {
  flex: 1 1 30%;
}

.analyse-controls .jumps .fbt:first-child, .analyse-controls .jumps .fbt:last-child {
  flex: 1 1 20%;
  font-size: 0.7em;
}

#promotion-choice {
  background: rgba(22, 21, 18, 0.7);
  z-index: 205;
  position: absolute;
  width: var(--cg-width, 100%);
  height: var(--cg-height, 100%);
  right: 0;
}

#promotion-choice square {
  cursor: pointer;
  border-radius: 50%;
  background-color: #b0b0b0;
  box-shadow: inset 0 0 25px 3px #808080;
  transition: all 150ms;
}

#promotion-choice piece {
  pointer-events: auto;
  opacity: 1;
  /* cancels blindfold */
}

.is2d #promotion-choice piece {
  width: 100%;
  height: 100%;
  transition: all 150ms;
  transform: scale(0.8);
}

#promotion-choice square:hover {
  box-shadow: inset 0 0 48px 8px #d64f00;
  border-radius: 0%;
}

.is2d #promotion-choice square:hover piece {
  transform: none;
}

.variant-racingKings .cg-wrap.cg-wrap cg-container::before {
  background: rgba(230, 230, 230, 0.2);
  width: 100%;
  height: 12.5%;
  content: '';
  position: absolute;
  left: 0;
  z-index: 1;
  pointer-events: none;
}

.variant-racingKings .cg-wrap.orientation-white cg-container::before {
  top: 0;
}

.variant-racingKings .cg-wrap.orientation-black cg-container::before {
  bottom: 0;
}

.variant-kingOfTheHill cg-container::before {
  width: 25%;
  height: 25%;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.7);
  background: rgba(230, 230, 230, 0.2);
  content: '';
  position: absolute;
  top: 37.5%;
  left: 37.5%;
  z-index: 1;
  pointer-events: none;
}

.mselect {
  position: relative;
  white-space: nowrap;
}

.mselect__toggle {
  display: none;
}

.blind-mode .mselect__toggle {
  display: inherit;
}

.mselect__label {
  flex-flow: row nowrap;
  padding: 0.3rem 0.6rem 0.3rem 1rem;
  cursor: pointer;
}

.mselect__label::after {
  content: '';
  font-size: 70%;
  color: #3692e7;
  margin-left: 0.4rem;
}

.mselect__toggle:checked ~ .mselect__label {
  transition: opacity 150ms;
  opacity: 0;
}

.mselect__list {
  position: absolute;
  top: 0;
  left: 0;
  min-width: 100%;
  max-height: 60vh;
  overflow-y: auto;
  z-index: 110;
  background: #3c3934;
  transform: scale(1, 0);
  transform-origin: top;
  transition: transform 150ms;
}

.mselect__list .current {
  background: #302e2c;
}

.mselect__list .current::after {
  content: '';
  flex: 1 1 100%;
  text-align: right;
}

.mselect__list > * {
  white-space: nowrap;
  display: block;
  padding: 0.3em 1em;
  transition: all 150ms;
  color: #3692e7;
  opacity: 0;
}

.mselect__list > *:hover {
  background: #3692e7;
  color: #fff;
}

.mselect__list > *::before {
  margin-right: 0.4em;
}

.mselect__toggle:checked ~ .mselect__list {
  transform: scale(1, 1);
}

@media (max-width: 799px) {
  .mselect__toggle:checked ~ .mselect__list {
    position: fixed;
    top: 50%;
    transform: translateY(-50%) scale(1, 1);
  }
}

.mselect__toggle:checked ~ .mselect__list > * {
  opacity: 1;
  transition: opacity 125ms ease-in-out 125ms;
}

/* free analysis on /analysis */
.analyse__tools .sub-box, .action-menu {
  border-bottom: 1px solid #404040;
}

@media (min-width: 800px), (orientation: landscape) {
  .analyse__tools .sub-box, .action-menu {
    border-bottom: 3px solid #629924;
  }
}

body {
  /* prevents scroll bar flicker on page height changes */
  overflow-y: scroll;
}

#main-wrap {
  --main-max-width: calc(100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 5rem);
}

@media (min-width: 800px), (orientation: landscape) {
  #main-wrap {
    --main-max-width: auto;
  }
}

.analyse {
  grid-area: main;
  display: grid;
  --meta-height: auto;
  --chat-height: fit-content(0);
  grid-template-rows: auto auto minmax(20em, 30vh);
  grid-template-areas: 'board' 'controls' 'tools' 'side' 'acpl' 'under' 'chat' 'uchat';
}

.analyse__side {
  grid-area: side;
  justify-content: start;
  margin: 2vmin;
}

.analyse__board {
  grid-area: board;
}

.analyse .relay-tour {
  grid-row-start: board;
  grid-row-end: tools;
  grid-column: board;
}

.analyse__tools {
  grid-area: tools;
}

.analyse__controls {
  grid-area: controls;
}

.analyse__underboard {
  grid-area: under;
}

@media (max-width: 799px) and (orientation: portrait) {
  .analyse__underboard {
    overflow: hidden;
  }
}

.analyse__acpl {
  grid-area: acpl;
}

.analyse .chat__members {
  grid-area: uchat;
}

.analyse .eval-gauge {
  grid-area: gauge;
  display: none;
}

.analyse--wiki {
  --chat-height: 0;
}

@media (min-width: 800px), (orientation: landscape) {
  .analyse {
    grid-template-columns: minmax(calc(70vmin * var(--board-scale)), calc(100vh * var(--board-scale) - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) var(--gauge-gap) minmax(240px, 400px);
    grid-template-rows: fit-content(0);
    grid-template-areas: 'board      gauge tools' 'under      .     controls' 'under      .     acpl' 'under      .     side' 'chat       .     side' 'uchat      .     side';
    grid-row-gap: 0;
  }
  .analyse__side,
  .analyse .chat__members,
  .analyse .mchat {
    margin: 2vmin 0 0 0;
  }
  .analyse__underboard {
    margin-top: 23px;
  }
  .analyse .eval-gauge {
    display: block;
  }
  .analyse .relay-tour {
    grid-row-end: under;
  }
}

@media (max-width: 799px) and (orientation: landscape) {
  .analyse {
    grid-template-columns: minmax(calc(55vmin), calc(100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 2vmin)) var(--gauge-gap) minmax(200px, 240px);
  }
}

@media (min-width: 1260px) {
  .analyse {
    grid-template-columns: minmax(230px, 20vw) 2vmin minmax(calc(70vmin * var(--board-scale)), calc(100vh * var(--board-scale) - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) var(--gauge-gap) minmax(240px, 400px);
    grid-template-rows: var(--meta-height) var(--chat-height) 2.5em 1fr;
    grid-template-areas: 'side    . board gauge tools' 'chat    . board gauge tools' 'uchat   . under .     controls' 'uchat   . under .     acpl';
  }
  .analyse__side {
    margin-top: 0;
  }
  .analyse .mchat {
    min-height: 10em;
  }
  .analyse .crosstable__users {
    flex: 7 1 auto;
  }
}

.analyse__tools {
  background: #262421;
}

.analyse__tools .ceval {
  flex: 0 0 38px;
}

.analyse__tools .sub-box {
  user-select: none;
}

.analyse__tools .sub-box .title {
  font-size: 0.9rem;
  line-height: 1.9em;
  background: #3e5322;
  padding: 0 7px;
}

.analyse__tools .comp-off__hint {
  opacity: 0.8;
  padding: 0.3em 1em;
  text-align: center;
}

.analyse__tools .comp-off__hint button {
  margin-left: 1em;
  color: #3692e7;
}

.analyse__tools .comp-off__hint button:hover {
  color: #57aeff;
}

.analyse__moves {
  flex: 2 1 0;
  overflow-y: auto;
  overflow-x: hidden;
  border-top: 1px solid #404040;
  position: relative;
  /* required so line::before scrolls along the moves! */
}

.analyse__moves .result,
.analyse__moves .status {
  background: #302e2c;
  text-align: center;
}

.analyse__moves .result {
  border-top: 1px solid #404040;
  font-weight: bold;
  font-size: 1.2em;
  padding: 5px 0 3px 0;
}

.analyse__moves .status {
  font-size: 1em;
  font-style: italic;
  padding-bottom: 7px;
}

.analyse__controls {
  height: 3rem;
  align-items: stretch;
}

.analyse__controls div {
  display: flex;
  flex: 1 1 auto;
  align-items: stretch;
}

.analyse__controls .jumps {
  flex: 3 1 auto;
}

.analyse__controls .fbt {
  flex: 0 0 2.5rem;
  transition: visibility 0s;
}

.analyse__controls .active {
  margin-top: -3px;
  padding-top: 3px;
}

.analyse__controls ::before {
  vertical-align: middle;
}

@media (max-width: 799px) and (orientation: portrait) {
  .analyse__controls {
    height: 5rem;
  }
  .analyse__controls .fbt {
    flex: 0 0 3.5rem;
  }
}

.action-menu {
  flex: 1 1 0;
  display: flex;
  flex-flow: column;
  overflow: auto;
  padding: 2vmin;
}

.action-menu h2 {
  font-size: 1em;
  text-transform: uppercase;
  text-align: center;
  white-space: nowrap;
  margin: 2vmin 0 3px 0;
  display: table;
  padding: 0 10px;
}

.action-menu h2:before, .action-menu h2:after {
  border-top: 1px solid #404040;
  content: '';
  display: table-cell;
  position: relative;
  top: 0.5em;
  width: 45%;
}

.action-menu h2:before {
  right: 8px;
}

.action-menu h2:after {
  left: 8px;
}

.action-menu__tools {
  flex: 0 0 auto;
  display: flex;
  flex-flow: row wrap;
}

.action-menu__tools > * {
  flex: 0 0 50%;
  text-align: center;
  padding: 0;
  height: 75px;
  justify-content: center;
}

.action-menu__tools .button {
  color: #bababa;
  text-transform: none;
  white-space: normal;
}

.action-menu__tools .button::before {
  display: block;
  font-size: 2em;
  line-height: 1em;
  margin-bottom: 5px;
}

.action-menu .autoplay a {
  color: #999999;
  font-size: 0.9em;
  flex: 1 1 auto;
  padding: 7px 0;
  text-align: center;
}

.action-menu form.delete {
  text-align: right;
  margin-top: 6px;
}

.action-menu form.delete .button::before {
  font-size: 1.2em;
}

.action-menu .setting {
  flex: 0 0 auto;
  margin-top: 2vmin;
  display: flex;
}

.action-menu .setting label {
  flex: 4 1 auto;
  cursor: pointer;
  white-space: nowrap;
}

.action-menu .setting input[type='range'] {
  flex: 1 4 auto;
  padding: 0 0 0 1em;
  height: 1.6em;
  width: 100%;
  margin: 0 1ch;
}

.action-menu .setting input[type='range'][min='0'] {
  padding: 0;
}

.action-menu .setting .range_value {
  flex: 0 0 auto;
  display: block;
  text-align: right;
}

@media (max-width: 799px) and (orientation: portrait) {
  .action-menu .abset-inline {
    display: none;
  }
}

.explorer__config section,
.explorer__config .toggle {
  margin: 0.4em 2vmin 0 2vmin;
}

.explorer__config section.save {
  text-align: center;
  padding: 15px 0 10px 0;
}

.explorer__config label {
  font-weight: bold;
  display: block;
  line-height: 2em;
}

.explorer__config .choices {
  display: flex;
}

.explorer__config .choices button {
  flex-grow: 1;
  padding: 5px 0;
  text-align: center;
  cursor: pointer;
  transition: all 150ms;
  border: 1px solid #404040;
  border-width: 1px 0 1px 1px;
  text-transform: capitalize;
}

.explorer__config .choices button:last-child {
  border-right-width: 1px;
}

.explorer__config .choices button[aria-pressed='true'], .explorer__config .choices button.active {
  background: #629924;
  color: #fff;
  text-shadow: 1px 0 0 rgba(0, 0, 0, 0.5);
  font-weight: bold;
}

.explorer__config .choices button[aria-pressed='true'] {
  box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2) inset;
}

.explorer__config .name .player-name {
  border-radius: 3px !important;
  font-weight: bold;
  padding-right: 1em;
  padding-left: 1em;
  text-transform: none;
  margin-right: 0.5em;
}

.explorer__config .name .player-name.active:hover {
  background: #82ad50;
}

.explorer__config .name .color {
  margin-left: 1ch;
}

.explorer__config .toggle {
  font-weight: bold;
  display: block;
  line-height: 2em;
}

.explorer__config .date input {
  border: none;
  background: none;
  padding: 0.1em 0.5em;
}

.explorer__config .date input:invalid {
  background: #582927;
}

.explorer__config__player__choice {
  max-width: 70ch !important;
}

.explorer__config__player__choice > div {
  overflow: visible !important;
}

.explorer__config__player__choice .input-wrapper {
  overflow: visible !important;
  position: relative;
  display: inline-block;
  padding-top: 2em;
  margin-bottom: 2em;
}

.explorer__config__player__choice .previous .button {
  margin: 0.3em 0.2em;
  text-transform: none;
}

.explorer-box {
  position: relative;
  flex: 3 1 0px;
  white-space: nowrap;
  transition: all 150ms;
  transition-delay: 0.3s;
  overflow-x: hidden;
  overflow-y: auto;
  font-size: 0.9em;
}

.explorer-box.reduced {
  flex: 0.3 3 0px;
}

.explorer-box.reduced:hover {
  flex: 1 2 0px;
}

.explorer-box .overlay {
  display: none;
}

.explorer-box.loading .overlay {
  display: block;
}

.explorer-box tbody {
  transition: all 150ms;
}

.explorer-box.loading tbody {
  opacity: 0.4;
}

.explorer-box .title {
  overflow: hidden;
  text-overflow: ellipsis;
  user-select: text;
}

.explorer-box .explorer-title {
  align-items: stretch;
  font-size: 0.9rem;
  line-height: 1.9em;
  padding: 0;
  background: #384722;
}

.explorer-box .explorer-title .ddloader {
  padding-left: 7px;
}

.explorer-box .explorer-title .active {
  padding: 0 7px;
  color: #cccccc;
  background: #3e5322;
}

.explorer-box .explorer-title .active strong {
  margin-right: 0.5ch;
}

.explorer-box .explorer-title .active.player {
  cursor: pointer;
}

.explorer-box .explorer-title .long {
  letter-spacing: -0.1ch;
}

.explorer-box .explorer-title button {
  display: inline-block;
  padding: 0 0.5ch;
  margin-left: 1px;
  color: #999999;
}

.explorer-box .explorer-title button:hover {
  color: #cccccc;
  background: #445f23;
}

.explorer-box .empty {
  display: flex;
  flex-flow: column;
  height: 100%;
}

.explorer-box .empty .message {
  text-align: center;
}

.explorer-box tr:nth-child(even) {
  background: #302e2c;
}

.explorer-box tr:hover {
  background: #323c22;
}

.explorer-box td {
  cursor: pointer;
  padding-left: 7px;
}

.explorer-box .moves th {
  font-size: 0.8rem;
  line-height: 1.8em;
  background: #3e5322;
  padding-left: 7px;
}

.explorer-box .moves td:first-child {
  line-height: 30px;
  padding-left: 7px;
}

.explorer-box .moves td:nth-child(2) {
  font-size: 0.75em;
  text-align: right;
}

.explorer-box .moves td:last-child {
  width: 100%;
  padding-right: 7px;
}

.explorer-box .moves tbody tr.sum {
  /* sum row */
  background: #2a4053;
  font-weight: bold;
}

@media (min-width: 800px) and (min-height: 400px), (orientation: landscape) and (min-height: 400px) {
  .explorer-box .moves tbody tr.sum {
    position: sticky;
    bottom: 0;
  }
}

.explorer-box .moves tbody tr.sum td {
  cursor: default;
}

.explorer-box .bar span {
  text-align: center;
  display: inline-block;
  overflow: hidden;
  vertical-align: middle;
  background-clip: padding-box;
  border: 0 solid rgba(186, 186, 186, 0.17);
  border-width: 1px 0;
  height: 16px;
  line-height: 14px;
  font-size: 0.9em;
  transition: width 1s;
}

.explorer-box .white {
  background: #ccc;
  box-shadow: 0 -5px 7px rgba(0, 0, 0, 0.25) inset;
  color: #222;
}

.explorer-box .draws,
.explorer-box .black {
  color: #ddd;
  box-shadow: 0 5px 7px rgba(255, 255, 255, 0.1) inset;
}

.explorer-box .draws {
  background: #666;
}

.explorer-box .black {
  background: #333;
  color: #ddd;
}

.explorer-box .bar span:first-child {
  border-left-width: 1px;
}

.explorer-box .bar span:last-child {
  border-right-width: 1px;
}

.explorer-box .games {
  width: 100%;
}

.explorer-box .games td {
  padding: 5px 0 5px 7px;
  max-width: 110px;
}

.explorer-box .games td:nth-child(2) {
  max-width: none;
}

.explorer-box .games td span {
  display: block;
}

.explorer-box .games result {
  display: block;
  text-align: center;
  padding: 3px 5px;
  border-radius: 3px;
  font-size: 0.9em;
}

.explorer-box .game_menu {
  background: #629924;
  cursor: default;
  padding: 0;
}

.explorer-box .game_menu .game_title {
  text-align: center;
  color: #fff;
  margin: 3px 0 1px 0;
}

.explorer-box .game_menu .menu {
  display: flex;
  justify-content: space-between;
  text-transform: uppercase;
}

.explorer-box .game_menu .menu a {
  color: #fff;
  padding: 4px 8px;
}

.explorer-box .game_menu .menu a:hover {
  background: rgba(255, 255, 255, 0.2);
}

.explorer-box .tablebase {
  width: 100%;
}

.explorer-box .tablebase td:first-child {
  font-size: 14px;
  line-height: 30px;
  padding-left: 7px;
}

.explorer-box .tablebase td:last-child {
  padding-right: 7px;
  text-align: right;
}

.explorer-box .tablebase result {
  padding: 3px 5px;
  margin-left: 5px;
  border-radius: 3px;
  font-size: 0.9em;
}

.explorer-box .toconf {
  position: absolute;
  top: 0;
  right: 0;
  cursor: pointer;
  display: block;
  font-size: 1.2em;
  width: 1.5em;
  line-height: 1.5em;
  text-align: center;
  opacity: 0.8;
}

.explorer-box .toconf:hover {
  opacity: 1;
}

.explorer-box .message {
  flex: 1 1 auto;
  justify-content: center;
  text-align: center;
  font-style: italic;
}

.explorer-box.reduced .message {
  justify-content: flex-start;
}

.explorer-box .message strong {
  font-weight: bold;
  margin: 1em 0;
}

.explorer-box:not(.reduced) .message h3,
.explorer-box.reduced:hover .message h3 {
  font-weight: bold;
}

.explorer-box .message p {
  white-space: normal;
  padding: 0 8px;
  margin: 0 0 8px 0;
}

.explorer-box.reduced .message p,
.explorer-box.reduced .message button {
  display: none;
}

.explorer-box.reduced:hover .message p,
.explorer-box.reduced:hover .message button {
  display: block;
}

.explorer-box .message button {
  margin: 0 30px;
}

.training-box {
  flex: 1.5 1 0px;
}

.training-box .feedback {
  flex: 1 1 100%;
  display: flex;
  flex-flow: column;
  justify-content: center;
}

.training-box .feedback .find,
.training-box .feedback .fail {
  padding-top: 5px;
  padding-bottom: 8px;
}

.training-box .progress {
  margin-top: 5px;
  opacity: 0.8;
  width: 100%;
  height: 4px;
  background: #4d4d4d;
}

.training-box .progress div {
  background: #629924;
  height: 4px;
  transition: width 0.5s;
  max-width: 100%;
}

.training-box .player {
  display: flex;
  align-items: center;
  margin-left: 10px;
}

.training-box .no-square {
  width: 64px;
  height: 64px;
  margin-right: 10px;
}

.is3d .training-box div.no-square {
  height: 82px;
}

.training-box piece {
  position: inherit;
  display: block;
  width: 100% !important;
  height: 100% !important;
}

.training-box .icon {
  display: block;
  width: 64px;
  height: 64px;
  margin-right: 10px;
  font-size: 50px;
  font-size: 64px;
  line-height: 64px;
  text-align: center;
}

.training-box .instruction > * {
  display: block;
}

.training-box .instruction > strong {
  font-weight: normal;
  font-size: 1.2em;
}

.training-box .choices {
  line-height: 1.6em;
  margin: 5px 0 -5px 0;
}

.training-box .choices a {
  display: block;
}

.practice-box {
  flex: 0 0 135px;
  user-select: none;
}

.practice-box .comment {
  flex: 0 0 30px;
  display: flex;
  align-items: stretch;
  background: #302e2c;
  border-top: 1px solid 1px solid #404040;
  white-space: nowrap;
  line-height: 30px;
}

.practice-box .progress div {
  background: #4d4d4d;
}

.practice-box.goodMove .progress div {
  background: #629924;
  color: #fff;
}

.practice-box.inaccuracy .title,
.practice-box.inaccuracy .progress div {
  background: #bf811d;
  color: #fff;
}

.practice-box.mistake .title,
.practice-box.blunder .title,
.practice-box.mistake .progress div,
.practice-box.blunder .progress div {
  background: #cc3333;
  color: #fff;
}

.practice-box .comment .wait {
  padding-left: 15px;
}

.practice-box .verdict {
  font-weight: bold;
  margin-right: 10px;
  display: flex;
}

.practice-box .verdict::before {
  width: 30px;
  height: 100%;
  color: #fff;
  margin-right: 7px;
  text-align: center;
  font-size: 1.4em;
  font-weight: normal;
}

.practice-box.goodMove .verdict {
  color: #629924;
}

.practice-box.goodMove .verdict::before {
  background: #629924;
  content: '✓';
  font-size: 1.7em;
}

.practice-box.inaccuracy .verdict {
  color: #bf811d;
}

.practice-box.inaccuracy .verdict::before {
  background: #bf811d;
  content: '?';
}

.practice-box.mistake .verdict,
.practice-box.blunder .verdict {
  color: #cc3333;
}

.practice-box.mistake .verdict::before,
.practice-box.blunder .verdict::before {
  background: #cc3333;
  content: '✗';
}

.practice-box .comment move {
  cursor: pointer;
  margin-left: 5px;
  color: #3692e7;
  transition: 0.3s;
}

.analyse__fork {
  flex: 0 0 auto;
}

@media (max-width: 799px) and (orientation: portrait) {
  .analyse__fork {
    display: none;
  }
}

.analyse__fork move {
  background: #2a4053;
  color: #cccccc;
  flex: 0 0 50%;
  cursor: pointer;
  padding: 0.2em 1em;
  border-bottom: 1px solid #262421;
}

.analyse__fork move:nth-child(odd) {
  border-right: 1px solid #262421;
}

.analyse__fork move:hover,
.analyse__fork:not(:hover) move.selected {
  background: #3692e7;
  color: #fff;
}

.analyse__fork glyph {
  margin-left: 2px;
}

.analyse__fork eval {
  flex: 3 0 auto;
  text-align: right;
  font-size: 0.9em;
}

.analyse__side {
  align-self: start;
}

.analyse__side .back-to-game {
  margin-top: 2em;
  text-align: center;
}

@media (min-width: 1260px) {
  .analyse__side .back-to-game {
    margin-top: 10vh;
  }
}

.analyse__side .back-to-game .button {
  margin: 0 auto;
}

.analyse__side .analyse__wiki {
  margin-top: 2vh;
  flex: 1 1 auto;
}

@media (min-width: 1260px) {
  .analyse__side .analyse__wiki {
    flex: 1 1 0;
    padding: 0.5em 1em 0 0;
  }
}

.analyse--wiki .analyse__side {
  align-self: auto;
}

.analyse__wiki {
  overflow-y: auto;
}

.analyse__wiki p {
  text-align: justify;
  line-height: 1.5;
}

.analyse__wiki h1,
.analyse__wiki h2 {
  margin-bottom: 1rem;
}

.analyse__wiki h1,
.analyse__wiki h2 {
  font-size: 17px;
}

@media (min-width: 320px) {
  .analyse__wiki h1,
  .analyse__wiki h2 {
    font-size: calc( 17px + 6 * ((100vw - 320px) / 880));
  }
}

@media (min-width: 1200px) {
  .analyse__wiki h1,
  .analyse__wiki h2 {
    font-size: 23px;
  }
}

.analyse__wiki h3 {
  font-size: 1.2em;
  font-weight: bold;
  margin-bottom: 0.7rem;
}

#analyse-cm {
  background: #262421;
  position: absolute;
  display: none;
  z-index: 107;
  cursor: default;
  user-select: none;
}

#analyse-cm.visible {
  display: block;
}

#analyse-cm .title {
  padding: 0.4em;
  text-align: center;
  font-size: 1.2em;
  border-bottom: 1px solid #404040;
  margin: 0;
}

#analyse-cm a {
  color: #bababa;
  padding: 0.5em 0.6em 0.5em 0.3em;
}

#analyse-cm a::before {
  width: 2em;
  text-align: center;
}

#analyse-cm a:hover {
  background: #38291e;
}

.material div {
  display: inline-block;
  margin-left: 10px;
}

.material mpiece {
  margin-left: -10px;
  background-size: cover;
  display: inline-block;
}

.material mpiece.pawn {
  background-image: url(../piece/mono/P.svg);
}

.material mpiece.bishop {
  background-image: url(../piece/mono/B.svg);
}

.material mpiece.knight {
  background-image: url(../piece/mono/N.svg);
}

.material mpiece.rook {
  background-image: url(../piece/mono/R.svg);
}

.material mpiece.queen {
  background-image: url(../piece/mono/Q.svg);
}

.material mpiece.king {
  background-image: url(../piece/mono/K.svg);
}

.material score {
  font-family: 'Roboto';
}

.analyse__player_strip {
  position: absolute;
  right: 0;
  display: flex;
  /* Where to put them in col1 layout? It moves the entire board and controls down for little benefit */
}

.analyse__player_strip.top {
  top: -20px;
}

.is3d .analyse__player_strip.top {
  top: -55px;
}

.analyse__player_strip.bottom {
  top: var(--cg-height, 100%);
  z-index: 1;
}

.is3d .analyse__player_strip.bottom {
  top: calc(var(--cg-height, 100%) + 15px);
}

@media (max-width: 799px) and (orientation: portrait) {
  .analyse__player_strip {
    display: none;
  }
}

.analyse__clock {
  padding: 0 0.5em;
  margin-left: 12px;
  height: 20px;
  font-weight: bold;
  text-align: center;
}

.analyse__clock.active {
  background: #2b455d;
}

.analyse__clock tenths {
  font-size: 80%;
}

.material {
  padding-right: 1px;
}

.material mpiece {
  width: 20px;
  height: 20px;
}

.material mpiece.pawn {
  margin-left: -10px;
}

.material score {
  margin-top: -2px;
}

.material-top {
  margin-top: -1px;
}

.material-bottom {
  margin-top: 1px;
}

.mofw-nom-overlay {
  position: absolute;
  z-index: 1001;
  left: 0;
  right: 0;
  background: #262421;
  border-top: 3px solid #d64f00;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.18);
}

.mofw-nom-overlay__header {
  display: flex;
  align-items: center;
  padding: 0.55rem 1rem;
  font-size: 1rem;
  font-weight: bold;
  border-bottom: 1px solid #404040;
  gap: 0.5rem;
}

.mofw-nom-overlay__header .mofw-san {
  color: #d64f00;
}

.mofw-nom-overlay__close {
  margin-left: auto;
  font-size: 1.2rem;
  line-height: 1;
  color: #999999;
  cursor: pointer;
  padding: 0 0.2rem;
}

.mofw-nom-overlay__close:hover {
  color: #bababa;
}

.mofw-nom-overlay__section {
  padding: 0.5rem 1rem;
  border-bottom: 1px solid #404040;
}

.mofw-nom-overlay__actions {
  padding: 0.5rem 1rem;
  display: flex;
  gap: 0.5rem;
  align-items: center;
  border-top: 1px solid #404040;
}

.mofw-nom-overlay__label {
  font-size: 0.78rem;
  color: #999999;
  margin-bottom: 0.3rem;
  font-weight: bold;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.mofw-nom-overlay__optional {
  font-weight: normal;
  text-transform: none;
  letter-spacing: 0;
}

.mofw-nom-overlay__tag-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 0.2rem 0.5rem;
}

.mofw-nom-overlay__tag-item {
  display: flex;
  align-items: center;
  gap: 0.3rem;
  font-size: 0.88rem;
  cursor: pointer;
  padding: 0.12rem 0;
  color: #bababa;
}

.mofw-nom-overlay__tag-item:hover {
  color: #d64f00;
}

.mofw-nom-overlay__tag-item:first-child {
  font-weight: bold;
}

.mofw-nom-overlay__tag-cb {
  cursor: pointer;
  accent-color: #d64f00;
  width: 15px;
  height: 15px;
}

.mofw-nom-overlay__cont-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.3rem;
  min-height: 1.8rem;
}

.mofw-nom-overlay__cont-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.2rem;
  background: #3f2a1d;
  border: 1px solid #7c4626;
  border-radius: 4px;
  padding: 0.12rem 0.3rem;
  font-size: 0.88rem;
}

.mofw-nom-overlay__cont-remove {
  font-size: 0.78rem;
  line-height: 1;
  color: #999999;
  cursor: pointer;
  padding: 0 0.1rem;
}

.mofw-nom-overlay__cont-remove:hover {
  color: #cc3333;
}

.mofw-nom-overlay__cont-arrow {
  color: #999999;
  font-size: 0.75rem;
}

.mofw-nom-overlay__cont-hint {
  font-size: 0.78rem;
  color: #999999;
  font-style: italic;
  margin-left: 0.2rem;
}

.mofw-nom-overlay__cont-empty {
  font-size: 0.82rem;
  color: #999999;
  font-style: italic;
}

.mofw-nom-overlay__note {
  width: 100%;
  box-sizing: border-box;
  padding: 0.35rem 0.5rem;
  background: #24221e;
  border: 1px solid #404040;
  border-radius: 4px;
  color: #bababa;
  font-size: 0.88rem;
  resize: vertical;
  font-family: inherit;
}

.mofw-nom-overlay__note:focus {
  outline: none;
  border-color: #d64f00;
}

.mofw-nom-overlay__btn {
  padding: 0.38rem 0.85rem;
  border-radius: 5px;
  font-size: 0.88rem;
  cursor: pointer;
  font-weight: bold;
  transition: background 0.12s, opacity 0.12s;
}

.mofw-nom-overlay__btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.mofw-nom-overlay__btn--cancel {
  color: #999999;
  border: 1px solid #404040;
  background: transparent;
  margin-right: auto;
}

.mofw-nom-overlay__btn--cancel:hover:not(:disabled) {
  background: #302e2c;
}

.mofw-nom-overlay__btn--draft {
  color: #c08a0f;
  border: 2px solid #c08a0f;
  background: transparent;
}

.mofw-nom-overlay__btn--draft:hover:not(:disabled) {
  background: #39301f;
}

.mofw-nom-overlay__btn--submit {
  background: #d64f00;
  color: #fff;
  border: 2px solid #d64f00;
}

.mofw-nom-overlay__btn--submit:hover:not(:disabled) {
  filter: brightness(1.1);
}

.copyables .pair {
  position: relative;
}

.copyables .pair .action {
  position: absolute;
  right: 0;
  top: 100%;
  text-align: right;
  opacity: 0;
  transition: all 150ms;
}

.copyables .pair textarea:focus ~ .action {
  opacity: 1;
}

.copyables .name {
  flex: 0 0 5ch;
  font-weight: bold;
  color: #999999;
}

.copyables .copyable {
  flex: 1 1 auto;
}

.copyables .pgn {
  margin: 1em 0;
}

.copyables .pgn textarea {
  min-height: 6em;
  white-space: pre-wrap;
  overflow-x: hidden;
}

.mselect {
  font-size: 1.5em;
}

.mselect label span::before,
.mselect a::before {
  line-height: 0;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHlzZS9jc3MvYnVpbGQvYW5hbHlzZS5mcmVlLmRhcmsuY3NzIiwic291cmNlcyI6WyJhbmFseXNlL2Nzcy9idWlsZC9hbmFseXNlLmZyZWUuZGFyay5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGFyay5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGVmYXVsdC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZnVuY3Rpb25zLnNjc3MiLCJhbmFseXNlL2Nzcy9idWlsZC9fYW5hbHlzZS5mcmVlLnNjc3MiLCJhbmFseXNlL2Nzcy9idWlsZC9fYW5hbHlzZS5iYXNlLnNjc3MiLCJjb21tb24vY3NzL19wbHVnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2FsbC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fei1pbmRleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWVkaWEtcXVlcmllcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L191bmlib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWl4aW5zLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19leHRlbmRzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbGV4LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19ib3guc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2ZsdWlkLXNpemUuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19jb29yZHMuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19jb29yZHMtY29sb3JzLnNjc3MiLCJjb21tb24vY3NzL2xheW91dC9fdW5pYm9hcmQuc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fc2Nyb2xsYmFyLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fYm9hcmQtcmVzaXplLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fbW9kYWwuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19jb250aW51ZS13aXRoLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fY29sb3ItaWNvbi5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2Nyb3NzdGFibGUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19mYnQuc2NzcyIsImNvbW1vbi9jc3MvZm9ybS9fY21uLXRvZ2dsZS5zY3NzIiwiY29tbW9uL2Nzcy9mb3JtL19yYW5nZS5zY3NzIiwidHJlZS9jc3MvX3RyZWUuc2NzcyIsInRyZWUvY3NzL19leHRlbmQuc2NzcyIsImNldmFsL2Nzcy9fY2V2YWwuc2NzcyIsImNldmFsL2Nzcy9fY3RybC5zY3NzIiwiY2V2YWwvY3NzL19wdi5zY3NzIiwiY2V2YWwvY3NzL19ldmFsLWdhdWdlLnNjc3MiLCJjaGVzcy9jc3MvX2NvbnRyb2wuc2NzcyIsImNoZXNzL2Nzcy9fcHJvbW90aW9uLnNjc3MiLCJjaGVzcy9jc3MvX3ZhcmlhbnQtc3R5bGUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19tc2VsZWN0LnNjc3MiLCJhbmFseXNlL2Nzcy9fYW5hbHlzZS5mcmVlLnNjc3MiLCJhbmFseXNlL2Nzcy9fYW5hbHlzZS5iYXNlLnNjc3MiLCJhbmFseXNlL2Nzcy9fdmFyaWFibGVzLnNjc3MiLCJhbmFseXNlL2Nzcy9fbGF5b3V0LnNjc3MiLCJhbmFseXNlL2Nzcy9fdG9vbHMuc2NzcyIsImFuYWx5c2UvY3NzL19hY3Rpb24tbWVudS5zY3NzIiwiYW5hbHlzZS9jc3MvZXhwbG9yZXIvX2V4cGxvcmVyLnNjc3MiLCJhbmFseXNlL2Nzcy9leHBsb3Jlci9fY29uZmlnLnNjc3MiLCJhbmFseXNlL2Nzcy9fdHJhaW5pbmcuc2NzcyIsImFuYWx5c2UvY3NzL19wcmFjdGljZS5zY3NzIiwiYW5hbHlzZS9jc3MvX2Zvcmsuc2NzcyIsImFuYWx5c2UvY3NzL19zaWRlLnNjc3MiLCJhbmFseXNlL2Nzcy9fY29udGV4dC1tZW51LnNjc3MiLCJhbmFseXNlL2Nzcy9fcGxheWVyLWNsb2NrLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fbWF0ZXJpYWwuc2NzcyIsImFuYWx5c2UvY3NzL19tb2Z3LnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy90aGVtZS9kYXJrJztcbkBpbXBvcnQgJ2FuYWx5c2UuZnJlZSc7XG4iLCJAaW1wb3J0ICdkZWZhdWx0JztcblxuJHRoZW1lOiAnZGFyayc7XG4kY29sb3Itc2NoZW1lOiAnZGFyayc7XG4kdGhlbWUtbGlnaHQ6IGZhbHNlO1xuJHRoZW1lLWRhcms6IHRydWU7XG5cbkBmdW5jdGlvbiBjLWRpbW1lcigkY29sb3IsICR3ZWlnaHQ6IDIwJSkge1xuICBAcmV0dXJuIG1peCgjMDAwLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYy1jbGVhcmVyKCRjb2xvciwgJHdlaWdodDogMjAlKSB7XG4gIEByZXR1cm4gbWl4KCNmZmYsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbiRjLWJnLXBhZ2U6IGhzbCgkYy1zaXRlLWh1ZSwgMTAlLCA4JSk7XG4kYy1iZy1oaWdoOiBoc2woJGMtc2l0ZS1odWUsIDclLCAxNCUpO1xuJGMtYmctbG93OiBoc2woJGMtc2l0ZS1odWUsIDclLCAyMiUpO1xuXG4vKiBldmVuIHJvd3MgaW4gbGlzdCBvciB0YWJsZXMsIHN1YnRsZSBzaGFkZSBvZiAkYy1iZy1oaWdoICovXG4kYy1iZy16ZWJyYTogaHNsKCRjLXNpdGUtaHVlLCA1JSwgMTglKTtcbiRjLWJnLXplYnJhMjogaHNsKCRjLXNpdGUtaHVlLCA1JSwgMjMlKTtcblxuJGMtYm9keS1ncmFkaWVudDogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDE2JSk7XG5cbiRjLWZvbnQ6IGhzbCgwLCAwJSwgNzMlKTtcbiRjLWZvbnQtZGltOiBjLWxpZ2h0KCRjLWZvbnQsIDYwJSk7XG4kYy1mb250LWRpbW1lcjogYy1saWdodCgkYy1mb250LCA0MiUpO1xuJGMtZm9udC1jbGVhcjogYy1saWdodCgkYy1mb250LCA4MCUpO1xuJGMtZm9udC1jbGVhcmVyOiBjLWxpZ2h0KCRjLWZvbnQsIDg5JSk7XG4kYy1zaGFkZTogYy1saWdodCgkYy1mb250LCAzMCUpO1xuJGMtZm9udC1wYWdlOiAkYy1mb250LWRpbTtcblxuLyogUHJpbWFyeTogYmx1ZSAqL1xuJGMtcHJpbWFyeTogaHNsKDIwOSwgNzklLCA1NiUpO1xuJGMtcHJpbWFyeS1kaW06IGMtZGltbWVyKCRjLXByaW1hcnksIDE1JSk7XG4kYy1wcmltYXJ5LWNsZWFyOiBjLWNsZWFyZXIoJGMtcHJpbWFyeSk7XG5cbi8qIFNlY29uZGFyeTogZ3JlZW4gKi9cbiRjLXNlY29uZGFyeTogaHNsKDg4LCA2MiUsIDM3JSk7XG4kYy1zZWNvbmRhcnktZGltOiBjLWRpbW1lcigkYy1zZWNvbmRhcnkpO1xuJGMtc2Vjb25kYXJ5LWRpbW1lcjogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5LCA0MCUpO1xuXG4vKiBCcmFnOiBnb2xkICovXG4kYy1icmFnOiBoc2woMzcsIDc0JSwgNDMlKTtcblxuLyogRmFuY3k6IHBpbmsgKi9cbiRjLWZhbmN5OiBoc2woMjk0LCA2MiUsIDQ4JSk7XG5cbi8qIEdvb2Q6IGdyZWVuICovXG4kYy1nb29kOiAkYy1zZWNvbmRhcnk7XG4kYy1nb29kLW92ZXI6ICRjLXNlY29uZGFyeS1vdmVyO1xuXG4vKiBXYXJuOiBvcmFuZ2UgKi9cbiRjLXdhcm46ICRjLWJyYWc7XG4kYy13YXJuLW92ZXI6ICRjLWJyYWctb3ZlcjtcblxuLyogQmFkOiByZWQgKi9cbiRjLWJhZDogJGMtZXJyb3I7XG4kYy1iYWQtb3ZlcjogJGMtZXJyb3Itb3ZlcjtcblxuJGMtbGluazogJGMtcHJpbWFyeTtcbiRjLWxpbmstZGltOiAkYy1wcmltYXJ5LWRpbTtcbiRjLWxpbmstY2xlYXI6ICRjLXByaW1hcnktY2xlYXI7XG4kYy1saW5rLWhvdmVyOiBjLWNsZWFyZXIoc2F0dXJhdGUoJGMtcHJpbWFyeSwgMTAwJSksIDI1JSk7XG5cbiRjLWJnLWJveDogJGMtYmctaGlnaDtcbiRjLWJnLWJveC1vcGFxdWU6ICRjLWJnLWJveDtcbiRjLWJnLWlucHV0OiBjLWxpZ2h0KCRjLWJnLXBhZ2UsIDEzJSk7XG5cbiRjLWJnLXBvcHVwOiAkYy1iZy1sb3c7XG4kYy1wb3B1cDogJGMtZm9udC1jbGVhcjtcblxuJGMtYmctaGVhZGVyLWRyb3Bkb3duOiAkYy1iZy1wb3B1cDtcbiRjLWhlYWRlci1kcm9wZG93bjogJGMtcG9wdXA7XG5cbiRjLWJvdDogJGMtZmFuY3k7XG5cbiRjLXBhZ2UtaW5wdXQ6ICRjLWJnLWJveDtcblxuJGMtYm9yZGVyOiBoc2woMCwgMCUsIDI1JSk7XG4kYy1ib3JkZXItcGFnZTogaHNsKDAsIDAlLCAyMiUpO1xuJGJvcmRlcjogJGJvcmRlci13aWR0aCAkYm9yZGVyLXN0eWxlICRjLWJvcmRlcjtcblxuJGMtZm9udC1zaGFkb3c6IGJsYWNrO1xuJHRleHQtc2hhZG93OiBub25lO1xuXG5AbWl4aW4gbWV0YWwtYmcge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woJGMtc2l0ZS1odWUsIDclLCAyMiksIGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDE5KSAxMDAlKTtcbn1cblxuQG1peGluIG1ldGFsIHtcbiAgQGluY2x1ZGUgbWV0YWwtYmc7XG59XG5cbkBtaXhpbiBtZXRhbC1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgkYy1zaXRlLWh1ZSwgNyUsIDI1KSwgaHNsKCRjLXNpdGUtaHVlLCA1JSwgMjIpIDEwMCUpO1xuICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbn1cblxuQG1peGluIHBhZ2UtbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbDtcbn1cblxuQG1peGluIHBhZ2UtbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBtZXRhbC1ob3Zlcjtcbn1cblxuQG1peGluIHRoZW1lLXN0eWxlIHtcbn1cbiIsIkBpbXBvcnQgJy4uL2Fic3RyYWN0L2Z1bmN0aW9ucyc7XG5cbi8qIENvbG9ycyAqL1xuXG5AZnVuY3Rpb24gYy1kaW1tZXIoJGNvbG9yLCAkd2VpZ2h0OiAxNyUpIHtcbiAgQHJldHVybiBtaXgoI2ZmZiwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuQGZ1bmN0aW9uIGMtY2xlYXJlcigkY29sb3IsICR3ZWlnaHQ6IDE3JSkge1xuICBAcmV0dXJuIG1peCgjMDAwLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG4kYy1zaXRlLWh1ZTogMzc7XG5cbiRjLWJnLXBhZ2U6IGhzbCgkYy1zaXRlLWh1ZSwgMTAlLCA5MiUpO1xuXG4vLyBoc2woMjEwLCAxNyUsIDk1JSlcbiRjLWJnLWhpZ2g6IGhzbCgwLCAwJSwgMTAwJSk7XG4kYy1iZy1sb3c6IGhzbCgwLCAwJSwgODklKTtcblxuLyogZXZlbiByb3dzIGluIGxpc3Qgb3IgdGFibGVzLCBzdWJ0bGUgc2hhZGUgb2YgJGMtYmctaGlnaCAqL1xuJGMtYmctemVicmE6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCA5Ni41JSk7XG4kYy1iZy16ZWJyYTI6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCA5MiUpO1xuXG4kYy1ib2R5LWdyYWRpZW50OiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgODQlKTtcblxuJGMtZm9udDogaHNsKDAsIDAlLCAzMCUpO1xuJGMtZm9udC1kaW06IGMtbGlnaHQoJGMtZm9udCwgNDclKTtcbiRjLWZvbnQtZGltbWVyOiBjLWxpZ2h0KCRjLWZvbnQsIDcwJSk7XG4kYy1mb250LWNsZWFyOiBjLWxpZ2h0KCRjLWZvbnQsIDEyJSk7XG4kYy1mb250LWNsZWFyZXI6IGMtbGlnaHQoJGMtZm9udCwgMCUpO1xuJGMtc2hhZGU6IGMtZGltbWVyKCRjLWZvbnQsIDgwJSk7XG4kYy1mb250LXBhZ2U6IGMtbGlnaHQoJGMtZm9udCwgMzclKTtcblxuLyogUHJpbWFyeTogYmx1ZSAqL1xuJGMtcHJpbWFyeTogaHNsKDIwOSwgNzclLCA0NiUpO1xuJGMtcHJpbWFyeS1kaW06IGMtZGltbWVyKCRjLXByaW1hcnkpO1xuJGMtcHJpbWFyeS1jbGVhcjogYy1jbGVhcmVyKCRjLXByaW1hcnkpO1xuJGMtcHJpbWFyeS1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgcHJpbWFyeSBiYWNrZ3JvdW5kICovXG5cbi8qIFNlY29uZGFyeTogZ3JlZW4gKi9cbiRjLXNlY29uZGFyeTogaHNsKDg4LCA2MiUsIDM3JSk7XG4kYy1zZWNvbmRhcnktZGltOiBjLWRpbW1lcigkYy1zZWNvbmRhcnkpO1xuJGMtc2Vjb25kYXJ5LWRpbW1lcjogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5LCA0MCUpO1xuJGMtc2Vjb25kYXJ5LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBzZWNvbmRhcnkgYmFja2dyb3VuZCAqL1xuXG4vKiBBY2NlbnQ6IG9yYW5nZSAqL1xuJGMtYWNjZW50OiBoc2woMjIsIDEwMCUsIDQyJSk7XG4kYy1hY2NlbnQtZGltOiBjLWRpbW1lcigkYy1hY2NlbnQpO1xuJGMtYWNjZW50LWNsZWFyOiBjLWNsZWFyZXIoJGMtYWNjZW50KTtcbiRjLWFjY2VudC1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYWNjZW50IGJhY2tncm91bmQgKi9cblxuLyogQnJhZzogZ29sZCAqL1xuJGMtYnJhZzogaHNsKDM3LCA3NCUsIDQ4JSk7XG4kYy1icmFnLW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuLyogRXJyb3I6IHJlZCAqL1xuJGMtcmVkOiBoc2woMCwgNjAlLCA1MCUpO1xuJGMtZXJyb3I6ICRjLXJlZDtcbiRjLWVycm9yLW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuLyogR29vZDogZ3JlZW4gKi9cbiRjLWdvb2Q6ICRjLXNlY29uZGFyeTtcbiRjLWdvb2Qtb3ZlcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG5cbi8qIFdhcm46IG9yYW5nZSAqL1xuJGMtd2FybjogJGMtYnJhZztcbiRjLXdhcm4tb3ZlcjogJGMtYnJhZy1vdmVyO1xuXG4vKiBCYWQ6IHJlZCAqL1xuJGMtYmFkOiAkYy1lcnJvcjtcbiRjLWJhZC1vdmVyOiAkYy1lcnJvci1vdmVyO1xuXG4vKiBIZWFydDogcmVkICovXG4kYy1oZWFydDogJGMtZXJyb3I7XG4kYy1oZWFydC1vdmVyOiAkYy1lcnJvci1vdmVyO1xuXG4vKiBGYW5jeTogcGluayAqL1xuJGMtZmFuY3k6IGhzbCgyOTQsIDYxJSwgNjIlKTtcbiRjLWZhbmN5LW92ZXI6IHdoaXRlO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbiRjLWxpbms6ICRjLXByaW1hcnk7XG4kYy1saW5rLWRpbTogJGMtcHJpbWFyeS1kaW07XG4kYy1saW5rLWNsZWFyOiAkYy1wcmltYXJ5LWNsZWFyO1xuJGMtbGluay1ob3ZlcjogYy1jbGVhcmVyKHNhdHVyYXRlKCRjLXByaW1hcnksIDEwMCUpLCAzNSUpO1xuJGMtbGluay1vdmVyOiAkYy1wcmltYXJ5LW92ZXI7XG5cbiRjLWJnLWJveDogJGMtYmctaGlnaDtcbiRjLWJnLWJveC1vcGFxdWU6ICRjLWJnLWJveDtcbiRjLWJnLWlucHV0OiBjLWxpZ2h0KCRjLWJnLXBhZ2UsIDk4JSk7XG5cbiRjLWJvcmRlcjogaHNsKDAsIDAlLCA4NSUpO1xuJGMtYm9yZGVyLXBhZ2U6IGhzbCgwLCAwJSwgODAlKTtcblxuJGMtcGFnZS1tYXNrOiBoc2xhKDAsIDAsIDAlLCAwLjYpO1xuXG4kYy1iZy1wb3B1cDogJGMtYmctaGlnaDtcbiRjLXBvcHVwOiAkYy1mb250O1xuXG4kYy1iZy1oZWFkZXItZHJvcGRvd246ICRjLWJnLXBvcHVwO1xuJGMtaGVhZGVyLWRyb3Bkb3duOiAkYy1wb3B1cDtcblxuJGMtZm9udC1zaGFkb3c6IHdoaXRlO1xuJHRleHQtc2hhZG93OiAwIDFweCAwICRjLWZvbnQtc2hhZG93O1xuXG4kYy1ib3Q6ICRjLWZhbmN5O1xuXG4kYy1wYWdlLWlucHV0OiAkYy1iZy1sb3c7XG5cbi8qIEJvcmRlcnMgKi9cblxuJGJvcmRlci13aWR0aDogMXB4O1xuJGJvcmRlci1zdHlsZTogc29saWQ7XG4kYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgJGMtYm9yZGVyO1xuXG4vKiBTaGFkb3dzICovXG5cbiRib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XG5cbi8vICRib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsMCwwLC4xNTcpO1xuIiwiQGZ1bmN0aW9uIGMtbGlnaHQoJGNvbG9yLCAkdmFsdWUpIHtcbiAgQHJldHVybiBjaGFuZ2UtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkdmFsdWUpO1xufVxuXG5AZnVuY3Rpb24gaW1nLXVybCgkcGF0aCkge1xuICBAcmV0dXJuIHVybCgnI3skaW1nLXBhdGh9LyN7JHBhdGh9Jyk7XG59XG4iLCJAaW1wb3J0ICdhbmFseXNlLmJhc2UnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvbXNlbGVjdCc7XG5cbkBpbXBvcnQgJy4uL2FuYWx5c2UuZnJlZSc7XG4iLCJAaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL3BsdWdpbic7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL3ZlbmRvci9jaGVzc2dyb3VuZC9jb29yZHMnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9sYXlvdXQvdW5pYm9hcmQnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9iYXNlL3Njcm9sbGJhcic7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9ib2FyZC1yZXNpemUnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvbW9kYWwnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvY29udGludWUtd2l0aCc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9jb2xvci1pY29uJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2Nyb3NzdGFibGUnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvZmJ0JztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvZm9ybS9jbW4tdG9nZ2xlJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvZm9ybS9yYW5nZSc7XG5AaW1wb3J0ICcuLi8uLi8uLi90cmVlL2Nzcy90cmVlJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NldmFsL2Nzcy9jZXZhbCc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jZXZhbC9jc3MvZXZhbC1nYXVnZSc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jaGVzcy9jc3MvY29udHJvbCc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jaGVzcy9jc3MvcHJvbW90aW9uJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NoZXNzL2Nzcy92YXJpYW50LXN0eWxlJztcbiIsIi8qIENvbW1vbiBpbXBvcnRzIGZvciBhbGwgQ1NTIG1vZHVsZXMgKi9cblxuQGltcG9ydCAnLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50JztcblxuQGltcG9ydCAnYWJzdHJhY3QvYWxsJztcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJEJyZWFrcG9pbnQtU2V0dGluZ3M6IChcbiAgJ2RlZmF1bHQgbWVkaWEnOiBhbGwsXG4gICdkZWZhdWx0IGZlYXR1cmUnOiBtaW4td2lkdGgsXG4gICdkZWZhdWx0IHBhaXInOiB3aWR0aCxcblxuICAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnOiBmYWxzZSxcbiAgJ3RvIGVtcyc6IGZhbHNlLFxuICAndHJhbnNmb3JtIHJlc29sdXRpb25zJzogdHJ1ZSxcblxuICAnbm8gcXVlcmllcyc6IGZhbHNlLFxuICAnbm8gcXVlcnkgZmFsbGJhY2tzJzogZmFsc2UsXG5cbiAgJ2Jhc2UgZm9udCBzaXplJzogMTZweCxcblxuICAnbGVnYWN5IHN5bnRheCc6IGZhbHNlXG4pO1xuXG4kYnJlYWtwb2ludDogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9zZXR0aW5nc1wiO1xuQGltcG9ydCAnYnJlYWtwb2ludC9jb250ZXh0JztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvaGVscGVycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L3BhcnNlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9uby1xdWVyeSc7XG5cbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcmVzcG9uZC10byc7XG5cbkBpbXBvcnQgXCJicmVha3BvaW50L2xlZ2FjeS1zZXR0aW5nc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgbGVnYWN5LXNldHRpbmdzLXdhcm5pbmc7XG5cbiAgLy8gUmVzZXQgY29udGV4dHNcbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG5cbiAgJGJyZWFrcG9pbnQ6IGJyZWFrcG9pbnQoJHF1ZXJ5LCBmYWxzZSk7XG5cbiAgJHF1ZXJ5LXN0cmluZzogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5Jyk7XG4gICRxdWVyeS1mYWxsYmFjazogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2ZhbGxiYWNrJyk7XG5cbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2NvbnRleHQgaG9sZGVyJykgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5IGNvdW50JykgIWdsb2JhbDtcblxuICAvLyBBbGxvdyBmb3IgYW4gYXMtbmVlZGVkIG92ZXJyaWRlIG9yIHVzYWdlIG9mIG5vIHF1ZXJ5IGZhbGxiYWNrLlxuICBAaWYgJG5vLXF1ZXJ5ICE9IGZhbHNlIHtcbiAgICAkcXVlcnktZmFsbGJhY2s6ICRuby1xdWVyeTtcbiAgfVxuXG4gIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gIH1cblxuICAvLyBQcmludCBPdXQgUXVlcnkgU3RyaW5nXG4gIEBpZiBub3QgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQG1lZGlhICN7JHF1ZXJ5LXN0cmluZ30ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSAhPSBmYWxzZSBvciBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpID09IHRydWUge1xuXG4gICAgJHR5cGU6IHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpKTtcbiAgICAkcHJpbnQ6IGZhbHNlO1xuXG4gICAgQGlmICgkdHlwZSA9PSAnYm9vbCcpIHtcbiAgICAgICRwcmludDogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdsaXN0Jykge1xuICAgICAgQGVhY2ggJHdyYXBwZXIgaW4gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSAkd3JhcHBlciB7XG4gICAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV3JpdGUgRmFsbGJhY2tcbiAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkgYW5kICgkcHJpbnQgPT0gdHJ1ZSkge1xuICAgICAgJHR5cGUtZmFsbGJhY2s6IHR5cGUtb2YoJHF1ZXJ5LWZhbGxiYWNrKTtcblxuICAgICAgQGlmICgkdHlwZS1mYWxsYmFjayAhPSAnYm9vbCcpIHtcbiAgICAgICAgI3skcXVlcnktZmFsbGJhY2t9ICYge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xufVxuXG5cbkBtaXhpbiBtcSgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhhcyBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldCgkc2V0dGluZykge1xuICBAaWYgYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnQsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCcmVha3BvaW50LVNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGlmIChzdHItaW5kZXgoJHNldHRpbmcsICctJykgb3Igc3RyLWluZGV4KCRzZXR0aW5nLCAnXycpKSBhbmQgc3RyLWluZGV4KCRzZXR0aW5nLCAnICcpID09IG51bGwge1xuICAgIEB3YXJuIFwiV29yZHMgaW4gQnJlYWtwb2ludCBzZXR0aW5ncyBzaG91bGQgYmUgc2VwYXJhdGVkIGJ5IHNwYWNlcywgbm90IGRhc2hlcyBvciB1bmRlcnNjb3Jlcy4gUGxlYXNlIHJlcGxhY2UgZGFzaGVzIGFuZCB1bmRlcnNjb3JlcyBiZXR3ZWVuIHdvcmRzIHdpdGggc3BhY2VzLiBTZXR0aW5ncyB3aWxsIG5vdCB3b3JrIGFzIGV4cGVjdGVkIHVudGlsIGNoYW5nZWQuXCI7XG4gIH1cbiAgJGJyZWFrcG9pbnQ6IG1hcC1tZXJnZSgkYnJlYWtwb2ludCwgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRicmVha3BvaW50LWNoYW5nZTogYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYmtwdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cbkBtaXhpbiBia3B0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICBAaWYgbGVuZ3RoKCRzZXR0aW5ncykgPT0gMSB7XG4gICAgJHNldHRpbmdzOiBudGgoJHNldHRpbmdzLCAxKTtcbiAgfVxuXG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGJyZWFrcG9pbnQ6IG1hcC1yZW1vdmUoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSAhZ2xvYmFsO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBia3B0LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBCcmVha3BvaW50IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKTtcbiRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBIYXMgQ29udGV4dFxuLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB5b3UgYXJlIGluc2lkZSBhIEJyZWFrcG9pbnQgcXVlcnlcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSB7XG4gIEBpZiBsZW5ndGgoJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCkge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgR2V0IENvbnRleHRcbi8vICRmZWF0dXJlOiBJbnB1dCBmZWF0dXJlIHRvIGdldCBpdCdzIGN1cnJlbnQgTVEgY29udGV4dC4gUmV0dXJucyBmYWxzZSBpZiBubyBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldC1jb250ZXh0KCRmZWF0dXJlKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICRnZXQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgb2Ygbm8tcXVlcnkgZnJvbSBnZXQgc2lkZSBzbyAvZmFsc2UvIHByZXBlbmRzIGFyZW4ndCByZXR1cm5lZFxuICAgIEBpZiAkZmVhdHVyZSA9PSAnbm8tcXVlcnknIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRnZXQpID09ICdsaXN0JyBhbmQgbGVuZ3RoKCRnZXQpID4gMSBhbmQgbnRoKCRnZXQsIDEpID09IGZhbHNlIHtcbiAgICAgICAgJGdldDogbnRoKCRnZXQsIGxlbmd0aCgkZ2V0KSk7XG4gICAgICB9XG4gICAgfVxuICAgIEByZXR1cm4gJGdldDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSBhbmQgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICBAcmV0dXJuIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byBzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpIHtcbiAgQGlmICR2YWx1ZSA9PSAnbW9ub2Nocm9tZScge1xuICAgICRmZWF0dXJlOiAnbW9ub2Nocm9tZSc7XG4gIH1cblxuICAkY3VycmVudDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gIEBpZiAkY3VycmVudCBhbmQgbGVuZ3RoKCRjdXJyZW50KSA9PSAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICBAd2FybiBcIllvdSBoYXZlIGFscmVhZHkgcXVlcmllZCBhZ2FpbnN0IGAjeyRmZWF0dXJlfWAuIFVuZXhwZWN0ZWQgdGhpbmdzIG1heSBoYXBwZW4gaWYgeW91IHF1ZXJ5IGFnYWluc3QgdGhlIHNhbWUgZmVhdHVyZSBtb3JlIHRoYW4gb25jZSBpbiB0aGUgc2FtZSBgYW5kYCBxdWVyeS4gQnJlYWtwb2ludCBpcyBvdmVyd3JpdGluZyB0aGUgY3VycmVudCBjb250ZXh0IHdpdGggYCN7JHZhbHVlfWBcIjtcbiAgfVxuXG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkdi1ob2xkZXI6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAxIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR2LWhvbGRlcjogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCAtIDEge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byByZXNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMge1xuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb252ZXJ0cyB0aGUgaW5wdXQgdmFsdWUgdG8gQmFzZSBFTXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpIHtcbiAgJHZhbHVlLXVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICAvLyBXaWxsIGNvbnZlcnQgcmVsYXRpdmUgRU1zIGludG8gcm9vdCBFTXMuXG4gIEBpZiBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSBhbmQgdHlwZS1vZihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgPT0gJ251bWJlcicgYW5kICR2YWx1ZS11bml0ID09ICdlbScge1xuICAgICRiYXNlLXVuaXQ6IHVuaXQoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpO1xuXG4gICAgQGlmICRiYXNlLXVuaXQgPT0gJ3B4JyBvciAkYmFzZS11bml0ID09ICclJyBvciAkYmFzZS11bml0ID09ICdlbScgb3IgJGJhc2UtdW5pdCA9PSAncHQnIHtcbiAgICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkgLyBiYXNlLWNvbnZlcnNpb24oYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpICogMWVtO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnI3ticmVha3BvaW50LWdldChcXCdiYXNlIGZvbnQgc2l6ZVxcJyl9IGlzIG5vdCBzZXQgaW4gdmFsaWQgdW5pdHMgZm9yIGZvbnQgc2l6ZSEnO1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIHtcbiAgJHVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICBAaWYgJHVuaXQgPT0gJ3B4JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxNnB4ICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICclJyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMDAlICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdlbScge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdwdCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTJwdCAqIDFlbTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4vLyAgICBAd2FybiAnRXZlcnl0aGluZyBpcyB0ZXJyaWJsZSEgV2hhdCBoYXZlIHlvdSBkb25lPyEnO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgbWluL21heCBwYWlyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWhlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLXdpZHRoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluLW1heCgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIHN0cmluZyB2YWx1ZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXM6ICAnb3JpZW50YXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjYW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2x1bWlub3NpdHknO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgYnJlYWtwb2ludC1taW4tbWF4KCRpdGVtKSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21pbi0jeyRpdGVtfScgb3IgJGZlYXR1cmUgPT0gJ21heC0jeyRpdGVtfScge1xuICAgICAgICBAcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgaXMgYSBtZWRpYSB0eXBlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1lZGlhLXR5cGVzOiAgJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdicmFpbGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VtYm9zc2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbmRoZWxkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyZWVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWVjaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHYnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkge1xuICBAZWFjaCAkbWVkaWEgaW4gJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXMge1xuICAgIEBpZiAoJGZlYXR1cmUgPT0gJG1lZGlhKSBvciAoJGZlYXR1cmUgPT0gJ25vdCAjeyRtZWRpYX0nKSBvciAoJGZlYXR1cmUgPT0gJ29ubHkgI3skbWVkaWF9Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBzdGFuZCBhbG9uZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncmlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSB7XG4gICRyZXNvbHV0aW9uczogJ2RldmljZS1waXhlbC1yYXRpbycsICdkcHInO1xuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgICRyZXNvbHV0aW9uczogYXBwZW5kKCRyZXNvbHV0aW9ucywgJ3Jlc29sdXRpb24nKTtcbiAgfVxuXG4gIEBlYWNoICRyZXNvIGluICRyZXNvbHV0aW9ucyB7XG4gICAgQGlmIGluZGV4KCRmZWF0dXJlLCAkcmVzbykgb3IgaW5kZXgoJGZlYXR1cmUsICdtaW4tI3skcmVzb30nKSBvciBpbmRleCgkZmVhdHVyZSwgJ21heC0jeyRyZXNvfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGFyc2VyIFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwicGFyc2Vycy9xdWVyeVwiO1xuQGltcG9ydCBcInBhcnNlcnMvc2luZ2xlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9kb3VibGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3RyaXBsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvcmVzb2x1dGlvblwiO1xuXG4kTWVtby1FeGlzdHM6IGZ1bmN0aW9uLWV4aXN0cyhtZW1vLWdldCkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhtZW1vLXNldCk7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBGdW5jdGlvblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkcXVlcnksICRjb250ZXh0cy4uLikge1xuICAkcnVuOiB0cnVlO1xuICAkcmV0dXJuOiAoKTtcblxuICAvLyBHcmFiIHRoZSBNZW1vIE91dHB1dCBpZiBNZW1vaXphdGlvbiBjYW4gYmUgYSB0aGluZ1xuICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAkcmV0dXJuOiBtZW1vLWdldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMpO1xuXG4gICAgQGlmICRyZXR1cm4gIT0gbnVsbCB7XG4gICAgICAkcnVuOiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAaWYgbm90ICRNZW1vLUV4aXN0cyBvciAkcnVuIHtcbiAgICAvLyBJbnRlcm5hbCBWYXJpYWJsZXNcbiAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAkcXVlcnktZmFsbGJhY2s6IGZhbHNlO1xuICAgICRyZXR1cm46ICgpO1xuXG4gICAgLy8gUmVzZXJ2ZSBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkaG9sZGVyLWNvbnRleHQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI7XG4gICAgJGhvbGRlci1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDtcblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG5cbiAgICAvLyBUZXN0IHRvIHNlZSBpZiBpdCdzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3RcbiAgICAkb3ItbGlzdDogaWYobGlzdC1zZXBhcmF0b3IoJHF1ZXJ5KSA9PSAnY29tbWEnLCB0cnVlLCBmYWxzZSk7XG5cblxuICAgIEBpZiAoJG9yLWxpc3QgPT0gZmFsc2UgYW5kIGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gZmFsc2UpIHtcbiAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgICAgICRsYXN0OiBudGgoJHF1ZXJ5LCAkbGVuZ3RoKTtcbiAgICAgICRxdWVyeS1mYWxsYmFjazogYnJlYWtwb2ludC1uby1xdWVyeSgkbGFzdCk7XG5cbiAgICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSB7XG4gICAgICAgICRsZW5ndGg6ICRsZW5ndGggLSAxO1xuICAgICAgfVxuXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gdHJ1ZSkge1xuICAgICAgICAkbXE6ICgpO1xuXG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJG1xOiBhcHBlbmQoJG1xLCBudGgoJHF1ZXJ5LCAkaSksIGNvbW1hKTtcbiAgICAgICAgfVxuXG4gICAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJG1xKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJHF1ZXJ5LXN0cmluZzogJHF1ZXJ5LXN0cmluZyArIGlmKCRpID09IDEsICcnLCAnLCAnKSArIGJyZWFrcG9pbnQtcGFyc2UobnRoKCRxdWVyeSwgJGkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRyZXR1cm46ICgncXVlcnknOiAkcXVlcnktc3RyaW5nLFxuICAgICAgICAnZmFsbGJhY2snOiAkcXVlcnktZmFsbGJhY2ssXG4gICAgICAgICdjb250ZXh0IGhvbGRlcic6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsXG4gICAgICAgICdxdWVyeSBjb3VudCc6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnRcbiAgICApO1xuICAgIEBpZiBsZW5ndGgoJGNvbnRleHRzKSA+IDAgYW5kIG50aCgkY29udGV4dHMsIDEpICE9IGZhbHNlIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICAgICAgfVxuICAgICAgJGNvbnRleHQtbWFwOiAoKTtcbiAgICAgIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgICAgICRjb250ZXh0LW1hcDogbWFwLW1lcmdlKCRjb250ZXh0LW1hcCwgKCRjb250ZXh0OiBicmVha3BvaW50LWdldC1jb250ZXh0KCRjb250ZXh0KSkpO1xuICAgICAgfVxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sIChjb250ZXh0OiAkY29udGV4dC1tYXApKTtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuICAgIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICAgJGhvbGRlcjogbWVtby1zZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzLCAkcmV0dXJuKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhbCBCcmVha3BvaW50IFBhcnNlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpIHtcbiAgLy8gSW5jcmVhc2UgbnVtYmVyIG9mICdhbmQnIHF1ZXJpZXNcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCArIDEgIWdsb2JhbDtcblxuICAvLyBTZXQgdXAgTWVkaWEgVHlwZVxuICAkcXVlcnktcHJpbnQ6ICcnO1xuXG4gICRmb3JjZS1hbGw6ICgoYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykgPT0gdHJ1ZSkgYW5kIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpID09ICdhbGwnKSk7XG4gICRlbXB0eS1tZWRpYTogdHJ1ZTtcbiAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpICE9ICdhbGwnKSB7XG4gICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG4gIH1cblxuXG4gICRxdWVyeS1yZXNvbHV0aW9uOiBmYWxzZTtcblxuICAkcXVlcnktaG9sZGVyOiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSk7XG5cblxuXG4gIC8vIExvb3Agb3ZlciBlYWNoIHBhcnNlZCBvdXQgcXVlcnkgYW5kIHdyaXRlIGl0IHRvICRxdWVyeS1wcmludFxuICAkZmlyc3Q6IHRydWU7XG5cbiAgQGVhY2ggJGZlYXR1cmUgaW4gJHF1ZXJ5LWhvbGRlciB7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRmZWF0dXJlKTtcblxuICAgIC8vIFBhcnNlIGEgc2luZ2xlIGZlYXR1cmVcbiAgICBAaWYgKCRsZW5ndGggPT0gMSkge1xuICAgICAgLy8gRmVhdHVyZSBpcyBjdXJyZW50bHkgYSBsaXN0LCBncmFiIHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICRmZWF0dXJlOiBudGgoJGZlYXR1cmUsIDEpO1xuXG4gICAgICAvLyBNZWRpYSBUeXBlIG11c3QgYnkgY29udmVudGlvbiBiZSB0aGUgZmlyc3QgaXRlbSwgc28gaXQncyBzYWZlIHRvIGZsYXQgb3ZlcnJpZGUgJHF1ZXJ5LXByaW50LCB3aGljaCByaWdodCBub3cgc2hvdWxkIG9ubHkgYmUgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZVxuICAgICAgQGlmIChicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSkge1xuICAgICAgICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKCRmZWF0dXJlICE9ICdhbGwnKSB7XG4gICAgICAgICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAkZmVhdHVyZTtcbiAgICAgICAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuXG4gICAgICAgICAgLy8gU2V0IENvbnRleHRcbiAgICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtZWRpYSwgJHF1ZXJ5LXByaW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgZG91YmxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAyKSB7XG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkgIT0gZmFsc2UpIHtcbiAgICAgICAgJHF1ZXJ5LXJlc29sdXRpb246ICRmZWF0dXJlO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBudWxsO1xuICAgICAgICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLFxuICAgICAgICAvLyB3ZSBjaGVjayB0byBzZWUgaWYgb25lIGlzIGEgc2luZ2xlLXN0cmluZyB2YWx1ZSxcbiAgICAgICAgLy8gdGhlbiB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgICAgICAgJGFscGhhOiBudGgoJGZlYXR1cmUsIDEpO1xuICAgICAgICAkYmV0YTogbnRoKCRmZWF0dXJlLCAyKTtcbiAgICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYWxwaGEpIG9yIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYmV0YSkge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRhbHBoYSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRiZXRhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgdHJpcGxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAzKSB7XG4gICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICB9XG5cbiAgfVxuXG4gIEBpZiAoJHF1ZXJ5LXJlc29sdXRpb24gIT0gZmFsc2UpIHtcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gIH1cblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBmZWF0dXJlIHRoYXQncyBiZWVuIGRldGVjdGVkIHNvIGZhciBhbmQgYXBwZW5kICdmYWxzZScgdG8gdGhlIHRoZSB2YWx1ZSBsaXN0IHRvIGluY3JlbWVudCB0aGVpciBjb3VudGVyc1xuICBAZWFjaCAkZiwgJHYgaW4gJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciB7XG4gICAgJHYtaG9sZGVyOiAkdjtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAaWYgbGVuZ3RoKCR2LWhvbGRlcikgPCAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgICBAaWYgJGYgPT0gJ21lZGlhJyB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZjogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KSB7XG4gIC8vIFBhcnNlIGZlYXR1cmVzIG91dCBvZiBhbiBpbmRpdmlkdWFsIHF1ZXJ5XG4gICRmZWF0dXJlLWhvbGRlcjogKCk7XG4gICRxdWVyeS1ob2xkZXI6ICgpO1xuICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgYSBzdHJpbmcvbnVtYmVyLCBudW1iZXIvc3RyaW5nLCBjaGVjayB0byBzZWUgaWYgaXQncyBhIHZhbGlkIHN0cmluZy9udW1iZXIgcGFpciBvciB0d28gc2luZ2xlc1xuICAgIEBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSBvciAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG5cbiAgICAgICRudW1iZXI6ICcnO1xuICAgICAgJHZhbHVlOiAnJztcblxuICAgICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMik7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDEpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDIpO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIHZhbHVlIGNhbiBiZSBhIHNpbmdsZSB2YWx1ZSwgY2hlY2sgdG8gc2VlIGlmIHRoZSBudW1iZXIgcGFzc2VkIGluIGlzIGEgdmFsaWQgaW5wdXQgZm9yIHNhaWQgc2luZ2xlIHZhbHVlLiBGb3J0dW5hdGVseSwgYWxsIGN1cnJlbnQgc2luZ2xlLXZhbHVlIG9wdGlvbnMgb25seSBhY2NlcHQgdW5pdGxlc3MgbnVtYmVycywgc28gdGhpcyBjaGVjayBpcyBlYXN5LlxuICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkdmFsdWUpIHtcbiAgICAgICAgQGlmIHVuaXRsZXNzKCRudW1iZXIpIHtcbiAgICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGEgbWVkaWEgdHlwZSwgc3BsaXQgdGhlIHF1ZXJ5XG4gICAgICBAaWYgYnJlYWtwb2ludC1pcy1tZWRpYSgkdmFsdWUpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDIpKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gSWYgaXQncyBub3QgYSBzaW5nbGUgZmVhdHVyZSwgd2UncmUganVzdCBnb2luZyB0byBhc3N1bWUgaXQncyBhIHByb3BlciBzdHJpbmcvdmFsdWUgcGFpciwgYW5kIHJvbGwgd2l0aCBpdC5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuXG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBudW1iZXJzLCB3ZSBhc3N1bWUgaXQncyBhIGRvdWJsZSBhbmQgcm9sbCB3aXRoIHRoYXRcbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSB7XG4gICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIHN0cmluZ3MgYW5kIG5laXRoZXIgYXJlIHNpbmdsZXMsIHdlIHJvbGwgd2l0aCB0aGF0LlxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7XG4gICAgLy8gSWYgd2UndmUgZ290IHRocmVlIGl0ZW1zIGFuZCBub25lIGlzIGEgbGlzdCwgd2UgY2hlY2sgdG8gc2VlXG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDMpKSAhPSAnbGlzdCcge1xuICAgICAgLy8gSWYgbm9uZSBvZiB0aGUgaXRlbXMgYXJlIHNpbmdsZSBzdHJpbmcgdmFsdWVzIGFuZCBub25lIG9mIHRoZSB2YWx1ZXMgYXJlIG1lZGlhIHZhbHVlcywgd2UncmUgZ29vZC5cbiAgICAgIEBpZiAobm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDMpKSkgYW5kICAoKG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAzKSkpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkZmVhdHVyZS1ob2xkZXIsIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gbGV0J3MgY2hlY2sgdG8gc2VlIGlmIHRoZSBmaXJzdCBpdGVtIGlzIGEgbWVkaWEgdHlwZVxuICAgICAgQGVsc2UgaWYgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAyKSwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlcik7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGl0ZW0sIG9yIGlmIGl0J3Mgbm90IGEgc3BlY2lhbCBjYXNlIGRvdWJsZSBvciB0cmlwbGUsIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSBxdWVyeS5cbiAgQHJldHVybiAkcXVlcnk7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInNpbmdsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGZlYXR1cmUgdGhhdCBjYW4gc3RhbmQgYWxvbmUsIHdlIGxldCBpdFxuICBAaWYgKGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkpIHtcbiAgICAkcGFyc2VkOiAkZmVhdHVyZTtcbiAgICAvLyBTZXQgQ29udGV4dFxuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkZmVhdHVyZSk7XG4gIH1cbiAgLy8gSWYgaXQncyBub3QgYSBzdGFuZCBhbG9uZSBmZWF0dXJlLCB3ZSBwYXNzIGl0IG9mZiB0byB0aGUgZGVmYXVsdCBoYW5kbGVyLlxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICcoJyArICRwYXJzZWQgKyAnKSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJyk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGRlZmF1bHQsICRmZWF0dXJlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSBhbmQgKHR5cGUtb2YoJGZlYXR1cmUpID09ICdudW1iZXInKSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7YnJlYWtwb2ludC10by1iYXNlLWVtKCRmZWF0dXJlKX0nO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3skZmVhdHVyZX0nO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0LXBhaXJcIjtcbkBpbXBvcnQgXCJkb3VibGUvZG91YmxlLXN0cmluZ1wiO1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAkZmlyc3Q6IG50aCgkZmVhdHVyZSwgMSk7XG4gICRzZWNvbmQ6IG50aCgkZmVhdHVyZSwgMik7XG5cbiAgLy8gSWYgd2UndmUgZ290IHR3byBudW1iZXJzLCB3ZSBrbm93IHdlIG5lZWQgdG8gdXNlIHRoZSBkZWZhdWx0IHBhaXIgYmVjYXVzZSB0aGVyZSBhcmUgbm8gbWVkaWEgcXVlcmllcyB0aGF0IGhhcyBhIG1lZGlhIGZlYXR1cmUgdGhhdCBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdudW1iZXInIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIHRoZXkgYXJlIGJvdGggc3RyaW5ncywgd2Ugc2VuZCBpdCB0aHJvdWdoIHRoZSBzdHJpbmcgcGFyc2VyXG4gIEBlbHNlIGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnc3RyaW5nJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpciwgd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgcGFpcicpO1xuICAkbWluOiAnJztcbiAgJG1heDogJyc7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZGVmYXVsdH0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZGVmYXVsdH0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZGVmYXVsdH06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGRlZmF1bHR9OiAjeyRtYXh9KSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgLy8gVGVzdCB0byBzZWUgd2hpY2ggaXMgdGhlIGZlYXR1cmUgYW5kIHdoaWNoIGlzIHRoZSB2YWx1ZVxuICBAaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmaXJzdCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkc2Vjb25kKSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiTmVpdGhlciAjeyRmaXJzdH0gbm9yICN7JHNlY29uZH0gaXMgYSB2YWxpZCBtZWRpYSBxdWVyeSBuYW1lLlwiO1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJztcbn0iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkdmFsdWU6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpO1xuICB9XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJ1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0cmlwbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcblxuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBzZXBhcmF0ZSB0aGUgc3RyaW5nIGZlYXR1cmVzIGZyb20gdGhlIHZhbHVlIG51bWJlcnNcbiAgJHN0cmluZzogbnVsbDtcbiAgJG51bWJlcnM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJGZlYXR1cmUge1xuICAgIEBpZiB0eXBlLW9mKCR2YWwpID09IHN0cmluZyB7XG4gICAgICAkc3RyaW5nOiAkdmFsO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgdHlwZS1vZigkbnVtYmVycykgPT0gJ251bGwnIHtcbiAgICAgICAgJG51bWJlcnM6ICR2YWw7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXJzOiBhcHBlbmQoJG51bWJlcnMsICR2YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJHN0cmluZywgbnRoKCRudW1iZXJzLCAxKSwgbnRoKCRudW1iZXJzLCAyKSk7XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcblxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJGZlYXR1cmUsICRmaXJzdCwgJHNlY29uZCkge1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGZlYXR1cmV9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGZlYXR1cmV9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGZlYXR1cmV9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRmZWF0dXJlfTogI3skbWF4fSknO1xufVxuIiwiQGltcG9ydCBcInJlc29sdXRpb24vcmVzb2x1dGlvblwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIGFuZCAkcXVlcnktcmVzb2x1dGlvbiB7XG4gICAgJHJlc29sdXRpb25zOiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHF1ZXJ5LXJlc29sdXRpb24pO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbnMpO1xuICAgICRxdWVyeS1ob2xkZXI6ICcnO1xuXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICRxdWVyeTogJyN7JHF1ZXJ5LXByaW50fSAjeyRsZWFkZXJ9I3tudGgoJHJlc29sdXRpb25zLCAkaSl9JztcbiAgICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJHF1ZXJ5O1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAnI3skcXVlcnktaG9sZGVyfSwgI3skcXVlcnl9JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIFJldHVybiB3aXRoIGF0dGFjaGVkIHJlc29sdXRpb25cbiAgICBAcmV0dXJuICRxdWVyeS1wcmludDtcbiAgfVxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcmVzb2x1dGlvbikge1xuICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb24pO1xuXG4gICRvdXRwdXQ6ICgpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgICRmZWF0dXJlOiAnJztcbiAgICAkdmFsdWU6ICcnO1xuXG4gICAgLy8gRmluZCB3aGljaCBpcyBudW1iZXJcbiAgICBAaWYgdHlwZS1vZihudGgoJHJlc29sdXRpb24sIDEpKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAyKTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgbWluL21heC9zdGFuZGFyZFxuICAgIEBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21pbi1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtaW4tJztcbiAgICB9XG4gICAgQGVsc2UgaWYgaW5kZXgoJHJlc29sdXRpb24sICdtYXgtcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWF4LSc7XG4gICAgfVxuXG4gICAgJHN0YW5kYXJkOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWV9KSc7XG5cbiAgICAvLyBJZiB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGRwcHgsXG4gICAgQGlmIHVuaXQoJHZhbHVlKSAhPSAnZHBweCcge1xuICAgICAgJGJhc2U6IDk2ZHBpO1xuICAgICAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZHBjbScge1xuICAgICAgICAkYmFzZTogMjQzLjg0ZHBjbTtcbiAgICAgIH1cbiAgICAgIC8vIFdyaXRlIG91dCBmZWF0dXJlIHRlc3RzXG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkZmFsbGJhY2s6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZSAvIDFkcHB4ICogOTZkcGl9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkZmFsbGJhY2ssIHNwYWNlKTtcbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW5vLXF1ZXJ5KCRxdWVyeSkge1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09ICdsaXN0JyB7XG4gICAgJGtleXdvcmQ6IG50aCgkcXVlcnksIDEpO1xuXG4gICAgQGlmIHR5cGUtb2YoJGtleXdvcmQpID09ICdzdHJpbmcnIGFuZCAoJGtleXdvcmQgPT0gJ25vLXF1ZXJ5JyBvciAka2V5d29yZCA9PSAnbm8gcXVlcnknIG9yICRrZXl3b3JkID09ICdmYWxsYmFjaycpIHtcbiAgICAgIEByZXR1cm4gbnRoKCRxdWVyeSwgMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgdGhlIEJyZWFrcG9pbnRzIHZhcmlhYmxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG4kQlJFQUtQT0lOVFM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlc3BvbmQtdG8gQVBJIE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiByZXNwb25kLXRvKCRjb250ZXh0LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA+IDAgYW5kIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtZXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGFkZCBicmVha3BvaW50cyBmb3IgcmVzcG9uZC10by4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KClgIHRvIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgpYC4gVGhlIGBhZGQtYnJlYWtwb2ludCgpYCBmdW5jdGlvbiB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIjtcbiAgICAkQlJFQUtQT0lOVFM6ICRicmVha3BvaW50cyAhZ2xvYmFsO1xuICAgICRicmVha3BvaW50czogKCkgIWdsb2JhbDtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRCUkVBS1BPSU5UUykgIT0gJ21hcCcge1xuICAgIC8vIEp1c3QgaW4gY2FzZSBzb21lb25lIHdyaXRlcyBnaWJiZXJpc2ggdG8gdGhlICRicmVha3BvaW50cyB2YXJpYWJsZS5cbiAgICBAd2FybiBcIllvdXIgYnJlYWtwb2ludHMgYXJlbid0IGEgbWFwISBgcmVzcG9uZC10b2AgZXhwZWN0cyBhIG1hcC4gUGxlYXNlIGNoZWNrIHRoZSB2YWx1ZSBvZiAkQlJFQUtQT0lOVFMgdmFyaWFibGUuXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFwLWdldCgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAd2FybiBcImAjeyRjb250ZXh0fWAgaXNuJ3QgYSBkZWZpbmVkIGJyZWFrcG9pbnQhIFBsZWFzZSBhZGQgaXQgdXNpbmcgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoYCN7JGNvbnRleHR9YCwgJHZhbHVlKTtgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiWW91IGhhdmVuJ3QgY3JlYXRlZCBhbnkgYnJlYWtwb2ludHMgeWV0ISBNYWtlIHNvbWUgYWxyZWFkeSEgYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdClgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBZGQgQnJlYWtwb2ludCB0byBCcmVha3BvaW50c1xuLy8gVE9ETzogUmVtb3ZlIGZ1bmN0aW9uIGluIG5leHQgcmVsZWFzZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPT0gMCB7XG4gICAgQHJldHVybiAkb3V0cHV0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgIEByZXR1cm4gJGJyZWFrcG9pbnRzO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgIEByZXR1cm4gbWFwLW1lcmdlKCRicmVha3BvaW50cywgJG91dHB1dCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICAkQlJFQUtQT0lOVFM6ICRvdXRwdXQgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICAkQlJFQUtQT0lOVFM6ICRCUkVBS1BPSU5UUyAhZ2xvYmFsO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgICRCUkVBS1BPSU5UUzogbWFwLW1lcmdlKCRCUkVBS1BPSU5UUywgJG91dHB1dCkgIWdsb2JhbDtcbiAgICB9XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGdldC1icmVha3BvaW50KCRuYW1lOiBmYWxzZSkge1xuICBAaWYgJG5hbWUgPT0gZmFsc2Uge1xuICAgIEByZXR1cm4gJEJSRUFLUE9JTlRTO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkbmFtZSk7XG4gIH1cbn1cbiIsIkBtaXhpbiBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZyB7XG4gICRsZWdhY3lWYXJzOiAoXG4gICAgJ2RlZmF1bHQtbWVkaWEnOiAnZGVmYXVsdCBtZWRpYScsXG4gICAgJ2RlZmF1bHQtZmVhdHVyZSc6ICdkZWZhdWx0IGZlYXR1cmUnLFxuICAgICdmb3JjZS1tZWRpYS1hbGwnOiAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLFxuICAgICd0by1lbXMnOiAndG8gZW1zJyxcbiAgICAncmVzb2x1dGlvbnMnOiAndHJhbnNmb3JtIHJlc29sdXRpb25zJyxcbiAgICAnbm8tcXVlcmllcyc6ICdubyBxdWVyaWVzJyxcbiAgICAnbm8tcXVlcnktZmFsbGJhY2tzJzogJ25vIHF1ZXJ5IGZhbGxiYWNrcycsXG4gICAgJ2Jhc2UtZm9udC1zaXplJzogJ2Jhc2UgZm9udCBzaXplJyxcbiAgICAnbGVnYWN5LXN5bnRheCc6ICdsZWdhY3kgc3ludGF4J1xuICApO1xuXG4gIEBlYWNoICRsZWdhY3ksICRuZXcgaW4gJGxlZ2FjeVZhcnMge1xuICAgIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LScgKyAkbGVnYWN5KSB7XG4gICAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGNoYW5nZSBzZXR0aW5ncyBmb3IgQnJlYWtwb2ludC4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludC0jeyRsZWdhY3l9OiB7e3NldHRpbmd9fWAgdG8gYEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCcjeyRuZXd9Jywge3tzZXR0aW5nfX0pYC4gVmFyaWFibGUgc2V0dGluZ3MsIGFzIHdlbGwgYXMgdGhpcyB3YXJuaW5nIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiXG4gICAgfVxuICB9O1xuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBIYW5kIGNvcnJlY3QgZWFjaCBzZXR0aW5nXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgbWVkaWEnLCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgZmVhdHVyZScsICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsJykgYW5kICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCAhPSBicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJywgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC10by1lbXMnKSBhbmQgJGJyZWFrcG9pbnQtdG8tZW1zICE9IGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RvIGVtcycsICRicmVha3BvaW50LXRvLWVtcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtcmVzb2x1dGlvbnMnKSBhbmQgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMgIT0gYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJywgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJpZXMnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcmllcycsICRicmVha3BvaW50LW5vLXF1ZXJpZXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcnkgZmFsbGJhY2tzJywgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZScpIGFuZCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSAhPSBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2Jhc2UgZm9udCBzaXplJywgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWxlZ2FjeS1zeW50YXgnKSBhbmQgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCAhPSBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbGVnYWN5IHN5bnRheCcsICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXgpO1xuICB9XG59IiwiQGltcG9ydCAnZnVuY3Rpb25zJztcbkBpbXBvcnQgJ3otaW5kZXgnO1xuQGltcG9ydCAnbWVkaWEtcXVlcmllcyc7XG5AaW1wb3J0ICd2YXJpYWJsZXMnO1xuQGltcG9ydCAndW5pYm9hcmQnO1xuQGltcG9ydCAnbWl4aW5zJztcbkBpbXBvcnQgJ2V4dGVuZHMnO1xuQGltcG9ydCAnZmxleCc7XG5AaW1wb3J0ICdib3gnO1xuQGltcG9ydCAnZmx1aWQtc2l6ZSc7XG4iLCIvLy8gWi1pbmRleGVzIG1hcCwgZ2F0aGVyaW5nIGFsbCBaIGxheWVycyBvZiB0aGUgYXBwbGljYXRpb25cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAdHlwZSBNYXBcbi8vLyBAcHJvcCB7U3RyaW5nfSBrZXkgLSBMYXllcuKAmXMgbmFtZVxuLy8vIEBwcm9wIHtOdW1iZXJ9IHZhbHVlIC0gWiB2YWx1ZSBtYXBwZWQgdG8gdGhlIGtleVxuJHotaW5kZXhlczogKFxuICAnY2dfX3Byb21vdGlvbic6IDIwNSxcbiAgJ2NnX19waWVjZS5kcmFnZ2luZyc6IDIwNCxcbiAgJ2NnX19ib2FyZC5vdmVybGF5JzogMTAwLFxuICAnY2dfX3BpZWNlLmFuaW0nOiAzLFxuICAnY2dfX3N2Zy5jZy1zaGFwZXMnOiAyLFxuICAnY2dfX3N2Zy5jZy1jdXN0b20tc3Zncyc6IDQsXG4gICdjZ19fcGllY2UnOiAyLFxuICAnY2dfX3BpZWNlLmZhZGluZyc6IDEsXG4gICdwb3dlcnRpcCc6IDEyMCxcbiAgJ2NvbXBsZXRlJzogMTEyLFxuICAnaW5xdWlyeSc6IDExMSxcbiAgJ3plbi10b2dnbGUnOiAxMTAsXG4gICdtb2RhbCc6IDExMCxcbiAgJ21zZWxlY3QnOiAxMTAsXG4gICd0b3BuYXYnOiAxMTAsXG4gICdmdWxsc2NyZWVuLW1hc2snOiAxMDksXG4gICdkcm9wZG93bic6IDEwOCxcbiAgJ2NvbnRleHQtbWVudSc6IDEwNyxcbiAgJ3NpdGUtaGVhZGVyJzogMTA2LFxuICAncmVjb25uZWN0aW5nJzogMTA1LFxuICAndG91ci1yZW1pbmRlcic6IDEwNCxcbiAgJ216LW1lbnUnOiA0LFxuICAnYWJvdmUtbGluay1vdmVybGF5JzogMyxcbiAgJ2ZyaWVuZC1ib3gnOiAyLFxuICAnbGluay1vdmVybGF5JzogMixcbiAgJ2dhbWUtYm9va21hcmsnOiAyLFxuICAnc3VibmF2LXNpZGUnOiAyLFxuICAnZGVmYXVsdCc6IDAsXG4pO1xuXG4vLy8gR2V0IGEgei1pbmRleCB2YWx1ZSBmcm9tIGEgbGF5ZXIgbmFtZVxuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRsYXllciAtIExheWVy4oCZcyBuYW1lXG4vLy8gQHJldHVybiB7TnVtYmVyfVxuLy8vIEByZXF1aXJlICR6LWluZGV4ZXNcbkBmdW5jdGlvbiB6KCRsYXllcikge1xuICBAcmV0dXJuIG1hcC1nZXQoJHotaW5kZXhlcywgJGxheWVyKTtcbn1cbiIsIi8qIFdpZHRocyAqL1xuXG4kbXEteHgtc21hbGw6IG1pbi13aWR0aCA1MDBweDtcbiRtcS14LXNtYWxsOiBtaW4td2lkdGggNjUwcHg7XG4kbXEtc21hbGw6IG1pbi13aWR0aCA4MDBweDtcbiRtcS1tZWRpdW06IG1pbi13aWR0aCA5ODBweDtcbiRtcS1sYXJnZTogbWluLXdpZHRoIDExMjBweDtcbiRtcS14LWxhcmdlOiBtaW4td2lkdGggMTI2MHB4O1xuXG4kbXEtbm90LXh4LXNtYWxsOiBtYXgtd2lkdGggNDk5cHg7XG4kbXEtbm90LXgtc21hbGw6IG1heC13aWR0aCA2NDlweDtcbiRtcS1ub3Qtc21hbGw6IG1heC13aWR0aCA3OTlweDtcbiRtcS1ub3QtbWVkaXVtOiBtYXgtd2lkdGggOTc5cHg7XG4kbXEtbm90LWxhcmdlOiBtYXgtd2lkdGggMTExOXB4O1xuJG1xLW5vdC14LWxhcmdlOiBtYXgtd2lkdGggMTI1OXB4O1xuXG4vKiBIZWlnaHRzICovXG5cbiRtcS14LXNob3J0OiBtaW4taGVpZ2h0IDQwMHB4O1xuJG1xLXNob3J0OiBtaW4taGVpZ2h0IDUwMHB4O1xuJG1xLXRhbGw6IG1pbi1oZWlnaHQgNjAwcHg7XG4kbXEteC10YWxsOiBtaW4taGVpZ2h0IDcwMHB4O1xuXG4kbXEtbm90LXgtc2hvcnQ6IG1heC1oZWlnaHQgMzk5cHg7XG5cbi8qIE9yaWVudGF0aW9ucyAqL1xuXG4kbXEtcG9ydHJhaXQ6IG9yaWVudGF0aW9uIHBvcnRyYWl0O1xuJG1xLWxhbmRzY2FwZTogb3JpZW50YXRpb24gbGFuZHNjYXBlO1xuXG4vKiBDYXBhYmlsaXRpZXMgKi9cblxuJG1xLWhvdmVyLXllczogJ2hvdmVyOiBob3Zlcic7XG4kbXEtaG92ZXItbm86IGhvdmVyIG5vbmU7XG5cbi8qIEFsaWFzZXMgKi9cblxuJG1xLW1haW4tbWFyZ2luOiAkbXEtc21hbGw7XG5cbiRtcS10b3BuYXYtdmlzaWJsZTogJG1xLW1lZGl1bTtcbiRtcS10b3BuYXYtaGlkZGVuOiAkbXEtbm90LW1lZGl1bTtcblxuJG1xLXNpdGUtaGVhZGVyLXRhbGw6ICRtcS10YWxsO1xuXG4kbXEtc3VibmF2LXRvcDogJG1xLW5vdC1zbWFsbDtcbiRtcS1zdWJuYXYtc2lkZTogJG1xLXNtYWxsO1xuXG4kbXEtem9vbS1lbmFibGVkOiAkbXEtc21hbGwgJG1xLXNob3J0O1xuIiwiJGRlYnVnOiBmYWxzZTtcblxuJGZvbnQtcGF0aDogJy4uL2ZvbnQnO1xuJGltZy1wYXRoOiAnLi4vaW1hZ2VzJztcblxuJHZpZXdwb3J0LW1pbi13aWR0aDogMzIwcHg7XG5cbiRibG9jay1nYXA6IDJ2bWluO1xuJGJsb2NrLWdhcC1oYWxmOiAxdm1pbjtcblxuJGJsb2NrLWdhcC1oOiAydmg7XG4kYmxvY2stZ2FwLXc6IDJ2dztcbiRibG9jay1nYXAtdy1oYWxmOiAxdnc7XG5cbiRib3gtcmFkaXVzLXNpemU6IDNweDtcblxuJHNpdGUtaGVhZGVyLXRhbGwtaGVpZ2h0OiA2MHB4O1xuJHNpdGUtaGVhZGVyLXNob3J0LWhlaWdodDogNDBweDtcblxuJHRyYW5zaXRpb24tZHVyYXRpb246IDE1MG1zO1xuXG4kbWFpbi1tYXgtd2lkdGg6IDEzMDBweCAhZGVmYXVsdDtcblxuJG1haW4tbWFyZ2luOiB2YXIoLS1tYWluLW1hcmdpbik7XG4kc2l0ZS1oZWFkZXItaGVpZ2h0OiB2YXIoLS1zaXRlLWhlYWRlci1oZWlnaHQpO1xuXG4kc2l0ZS1oZWFkZXItbWFyZ2luOiB2YXIoLS1zaXRlLWhlYWRlci1tYXJnaW4pO1xuXG4kc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0OiBjYWxjKCN7JHNpdGUtaGVhZGVyLWhlaWdodH0gKyAjeyRzaXRlLWhlYWRlci1tYXJnaW59KTtcbiIsIi8qIFVuaWJvYXJkOiBrZWVwIHRoZSBzYW1lIHBhZ2UgbGF5b3V0IGFjcm9zcyBwYWdlcyAqL1xuXG4kbXEtYm9hcmQtcmVzaXphYmxlOiAkbXEtc21hbGw7XG4kbXEtY29sMS11bmlib2FyZDogJG1xLW5vdC1zbWFsbCAkbXEtcG9ydHJhaXQ7XG4kbXEtY29sMi11bmlib2FyZDogJG1xLXNtYWxsLCAkbXEtbGFuZHNjYXBlO1xuJG1xLWNvbDMtdW5pYm9hcmQ6ICRtcS14LWxhcmdlO1xuXG4vKiB3aGVuIHRoZSB3aWR0aCBpcyBhcHByb3ByaWF0ZSBmb3IgY29sMSwgYnV0IGxhbmRzY2FwZSBwcmV2ZW50cyBpdCAqL1xuJG1xLWNvbDItdW5pYm9hcmQtc3F1ZWV6ZTogJG1xLW5vdC1zbWFsbCAkbXEtbGFuZHNjYXBlO1xuXG4kY29sMy11bmlib2FyZC1zaWRlOiBtaW5tYXgoMjMwcHgsIDIwdncpO1xuJGNvbDMtdW5pYm9hcmQtdGFibGU6IG1pbm1heCgyNDBweCwgNDAwcHgpO1xuJGNvbDMtdW5pYm9hcmQtY29udHJvbHM6IDNyZW07XG5cbiRjb2wzLXVuaWJvYXJkLW1pbi13aWR0aDogY2FsYyg3MHZtaW4gKiB2YXIoLS1ib2FyZC1zY2FsZSkpO1xuJGNvbDMtdW5pYm9hcmQtbWF4LXdpZHRoOiBjYWxjKDEwMHZoICogdmFyKC0tYm9hcmQtc2NhbGUpIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGNvbDMtdW5pYm9hcmQtY29udHJvbHN9KTtcbiRjb2wzLXVuaWJvYXJkLXdpZHRoOiBtaW5tYXgoJGNvbDMtdW5pYm9hcmQtbWluLXdpZHRoLCAkY29sMy11bmlib2FyZC1tYXgtd2lkdGgpO1xuXG4kY29sMy11bmlib2FyZC1kZWZhdWx0LXNjYWxlOiAwLjk7XG5cbi8vIHpvb206IDg1JVxuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1taW4td2lkdGg6IDUwMHB4O1xuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1tYXgtd2lkdGg6IGNhbGMoXG4gIDEwMHZoICogI3skY29sMy11bmlib2FyZC1kZWZhdWx0LXNjYWxlfSAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzfVxuKTtcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg6IG1pbm1heCgjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWluLXdpZHRofSwgI3skY29sMy11bmlib2FyZC1kZWZhdWx0LW1heC13aWR0aH0pO1xuXG4kY29sMi11bmlib2FyZC10YWJsZTogJGNvbDMtdW5pYm9hcmQtdGFibGU7XG4kY29sMi11bmlib2FyZC1jb250cm9sczogJGNvbDMtdW5pYm9hcmQtY29udHJvbHM7XG4kY29sMi11bmlib2FyZC13aWR0aDogJGNvbDMtdW5pYm9hcmQtd2lkdGg7XG4kY29sMi11bmlib2FyZC1kZWZhdWx0LXdpZHRoOiAkY29sMy11bmlib2FyZC1kZWZhdWx0LXdpZHRoO1xuXG4kY29sMi11bmlib2FyZC1zcXVlZXplLXRhYmxlOiBtaW5tYXgoMjAwcHgsIDI0MHB4KTtcbiRjb2wyLXVuaWJvYXJkLXNxdWVlemUtd2lkdGg6IG1pbm1heChjYWxjKDU1dm1pbiksIGNhbGMoMTAwdmggLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skYmxvY2stZ2FwfSkpO1xuXG4kY29sMS11bmlib2FyZC1jb250cm9sczogNXJlbTtcbiIsIkBtaXhpbiBib3gtcmFkaXVzIHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuQG1peGluIGJveC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAkYm94LXNoYWRvdztcbn1cblxuQG1peGluIGJveC1uZWF0IHtcbiAgQGluY2x1ZGUgYm94LXJhZGl1cztcbiAgQGluY2x1ZGUgYm94LXNoYWRvdztcbn1cblxuQG1peGluIGRlYnVnLXpvb20taW5wdXQge1xuICAjem9vbS1pbnB1dCB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXpvb20tZW5hYmxlZCkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBib3R0b206IDNweDtcbiAgICAgIHJpZ2h0OiAzcHg7XG4gICAgICB3aWR0aDogMTB2dztcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRyYW5zaXRpb24oJHByb3A6IGFsbCwgJGR1cjogJHRyYW5zaXRpb24tZHVyYXRpb24pIHtcbiAgdHJhbnNpdGlvbjogJHByb3AgJGR1cjtcbn1cblxuQG1peGluIGhvdmVyZmxvdyB7XG4gIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICAmOm5vdCg6aG92ZXIpIHtcbiAgICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTtcblxuICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgLmJsaW5kLW1vZGUgJiB7XG4gICAgZGlzcGxheTogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gZWxsaXBzaXMge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuQG1peGluIGNyb3NzdGFibGUtbGFyZ2Uge1xuICAuY3Jvc3N0YWJsZV9fdXNlcnMge1xuICAgIGZsZXg6IDcgMSBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBjcm9zc3RhYmxlLXNtYWxsIHtcbiAgLmNyb3NzdGFibGVfX3VzZXJzIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gYm9keS1maXhlZC1zY3JvbGwge1xuICBib2R5IHtcbiAgICAvKiBwcmV2ZW50cyBzY3JvbGwgYmFyIGZsaWNrZXIgd2hlbiBkcmFnZ2luZyBhIHBpZWNlIG91dCAqL1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgfVxufVxuIiwiJWJhc2UtZm9udC1mYWxsYmFjayB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJywgU2Fucy1TZXJpZjtcbn1cblxuJWJhc2UtZm9udCB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJywgU2Fucy1TZXJpZjtcbn1cblxuJXJvYm90byB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgU2Fucy1TZXJpZjtcbn1cblxuJXJvYm90by1mYXQge1xuICBmb250LWZhbWlseTogJ1JvYm90bycsIFNhbnMtU2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbiVjaGVzcy1mb250IHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIENoZXNzJywgJ05vdG8gU2Fucyc7XG59XG5cbiVzYW4ge1xuICBAZXh0ZW5kICVjaGVzcy1mb250O1xuXG4gIC5waWVjZS1sZXR0ZXIgJiB7XG4gICAgQGV4dGVuZCAlYmFzZS1mb250O1xuICB9XG5cbiAgZHJhdyB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuICAgIG1hcmdpbi1sZWZ0OiAxY2g7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxufVxuXG4vKiB0ZXh0IHByaW50ZWQgZGlyZWN0bHkgb24gdGhlIHBhZ2UgYmFja2dyb3VuZCBkZXNlcnZlcyBzcGVjaWFsIHRyZWF0bWVudCAodHJhbnNwIHRoZW1lKSAqL1xuJXBhZ2UtZm9udCB7XG4gIGNvbG9yOiAkYy1mb250LXBhZ2U7XG59XG5cbiVwYWdlLXRleHQge1xuICBAZXh0ZW5kICVwYWdlLWZvbnQsICVwYWdlLXRleHQtc2hhZG93ICFvcHRpb25hbDtcbn1cblxuJXBhZ2UtbGluayB7XG4gIEBleHRlbmQgJXBhZ2UtbGluay1mb250ICFvcHRpb25hbDtcblxuICBAZXh0ZW5kICVwYWdlLXRleHQtc2hhZG93ICFvcHRpb25hbDtcbn1cblxuJW1ldGFsIHtcbiAgQGluY2x1ZGUgbWV0YWw7XG59XG5cbiVtZXRhbC1ob3ZlciB7XG4gIEBpbmNsdWRlIG1ldGFsLWhvdmVyO1xufVxuXG4lcGFnZS1tZXRhbCB7XG4gIEBpbmNsdWRlIHBhZ2UtbWV0YWw7XG59XG5cbiVwYWdlLW1ldGFsLWhvdmVyIHtcbiAgQGluY2x1ZGUgcGFnZS1tZXRhbDtcbn1cblxuJW1ldGFsLWJnIHtcbiAgQGluY2x1ZGUgbWV0YWwtYmc7XG59XG5cbiVhY3RpdmUtaW5zZXQtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAzcHggNHB4IGhzbGEoMCwgMCwgMCwgMC4xNSkgaW5zZXQ7XG59XG5cbiVhY3RpdmUge1xuICBAZXh0ZW5kICVhY3RpdmUtaW5zZXQtc2hhZG93O1xuXG4gIGJhY2tncm91bmQ6ICRjLWFjY2VudDtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtc2hhZG93OiAwIDFweCAxcHggYmxhY2sgIWltcG9ydGFudDtcbn1cblxuJWFjdGl2ZS1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IG1peCh3aGl0ZSwgJGMtYWNjZW50LCAyMCUpO1xufVxuXG4lYWN0aXZlLXNvZnQge1xuICBAZXh0ZW5kICVhY3RpdmUtaW5zZXQtc2hhZG93O1xuXG4gIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xuICBjb2xvcjogJGMtZm9udC1jbGVhcmVyO1xuICB0ZXh0LXNoYWRvdzogMXB4IDFweCAxcHggJGMtZm9udC1zaGFkb3cgIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbiVkcm9wZG93bi1zaGFkb3cge1xuICBib3gtc2hhZG93OiAtMXB4IDVweCA2cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xufVxuXG4lcG9wdXAtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAxNHB4IDI4cHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIyKTtcbn1cblxuJWJ1dHRvbi1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDJweCA1cHggMCBoc2xhKDAsIDAsIDAlLCAwLjIyNSk7XG59XG5cbiVidXR0b24tcmFpc2VkLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEwcHggMHB4IGhzbGEoMCwgMCwgMCwgMC4yMjUpO1xufVxuXG4lYnV0dG9uLW5vbmUge1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGNvbG9yOiAkYy1mb250O1xuICBhbGlnbi1pdGVtczogbm9ybWFsO1xufVxuXG4lY2hlY2tib3gge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgYmFja2dyb3VuZDogJGMtYmctcGFnZTtcbiAgYm9yZGVyOiAxcHggc29saWQgJGMtYmctbG93O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDAuNWVtO1xuXG4gICY6Y2hlY2tlZCB7XG4gICAgYmFja2dyb3VuZDogJGMtc2Vjb25kYXJ5LWRpbW1lcjtcbiAgICBib3JkZXItY29sb3I6ICRjLXNlY29uZGFyeS1kaW07XG4gIH1cbn1cblxuJWZvY3VzLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMCAxMnB4ICRjLWZvbnQtZGltO1xufVxuXG4lemFsZ292ZXJmbG93IHtcbiAgLy8gbWl0aWdhdGUgemFsZ28gdGV4dFxuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4lbm93cmFwLWhpZGRlbiB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbiVub3dyYXAtZWxsaXBzaXMge1xuICBAZXh0ZW5kICVlbGxpcHNpcztcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4lYm94LXBhZGRpbmcge1xuICBwYWRkaW5nOiA1dmggdmFyKC0tYm94LXBhZGRpbmcpO1xufVxuXG4lYm94LXBhZGRpbmctaG9yaXoge1xuICBwYWRkaW5nOiAwIHZhcigtLWJveC1wYWRkaW5nKTtcbn1cblxuJWJyZWFrLXdvcmQge1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG4lYnJlYWstd29yZC1oYXJkIHtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xuXG4gIC8qIHN1cHBvcnQ6IGZpcmVmb3ggKi9cbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cblxuJWJyZWFrLW5vcGUge1xuICBvdmVyZmxvdy13cmFwOiBub3JtYWw7XG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcbn1cblxuJWVsbGlwc2lzIHtcbiAgQGluY2x1ZGUgZWxsaXBzaXM7XG59XG5cbiVzcXVhcmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cblxuJXZpZGVvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwO1xuICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlO1xuXG4gIC8qIDE2LzkgKi9cbiAgLy8gcGFkZGluZy1ib3R0b206IDc1JTsgLyogNC8zICovXG4gIHdpZHRoOiAxMDAlO1xuXG4gID4gKiB7XG4gICAgQGV4dGVuZCAlYWJzLTEwMDtcblxuICAgIGJvcmRlcjogbm9uZTtcbiAgfVxufVxuXG4lZ2FtZS1lbWJlZCB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW5vdC14eC1zbWFsbCkge1xuICAgIHBhZGRpbmctYm90dG9tOiAxNjAlO1xuICB9XG59XG5cbiVkYXRhLWljb24ge1xuICBmb250LXNpemU6IDEuMmVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBmb250LWZhbWlseTogJ2xpY2hlc3MnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBzcGVhazogbm9uZTtcbiAgY29udGVudDogYXR0cihkYXRhLWljb24pO1xuICBvcGFjaXR5OiAwLjk7XG59XG5cbiVkYXRhLWljb24tdG9wIHtcbiAgJjo6YmVmb3JlIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG4gIH1cbn1cblxuJWZ1bGxzY3JlZW4tbWFzayB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kOiAkYy1wYWdlLW1hc2s7XG4gIHotaW5kZXg6IHooJ2Z1bGxzY3JlZW4tbWFzaycpO1xufVxuXG4lbGluay1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6IHooJ2xpbmstb3ZlcmxheScpO1xufVxuXG4lYWJzLTEwMCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuJWRvdWJsZS10YXAge1xuICAvLyBwcmV2ZW50IGlQYWQgc2FmYXJpIGZyb20gem9vbWluZyBpbiBvbiBkb3VibGUgdGFwXG4gIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xufVxuIiwiJWZsZXgtd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG59XG5cbiVmbGV4LWNlbnRlciB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtd3JhcCAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1jZW50ZXItbm93cmFwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1iZXR3ZWVuIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLW5vd3JhcCB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLXN0cmV0Y2gge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xufVxuXG4lZmxleC1hcm91bmQge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbn1cblxuJWZsZXgtY29sdW1uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW47XG59XG4iLCIlYm94LXJhZGl1cyB7XG4gIEBpbmNsdWRlIGJveC1yYWRpdXM7XG59XG5cbiVib3gtcmFkaXVzLWZvcmNlIHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC8qIGhlbHBzIHdpdGggY2xpcHBpbmcgYmFja2dyb3VuZCBpbnRvIGJvcmRlci1yYWRpdXMgKi9cbn1cblxuJWJveC1yYWRpdXMtbGVmdCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgMCAwICRib3gtcmFkaXVzLXNpemU7XG59XG5cbiVib3gtcmFkaXVzLXJpZ2h0IHtcbiAgYm9yZGVyLXJhZGl1czogMCAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemUgMDtcbn1cblxuJWJveC1yYWRpdXMtdG9wIHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplIDAgMDtcbn1cblxuJWJveC1yYWRpdXMtYm90dG9tIHtcbiAgYm9yZGVyLXJhZGl1czogMCAwICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuJWJveC1yYWRpdXMtdG9wLWxlZnQge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplIDAgMCAwO1xufVxuXG4lYm94LXJhZGl1cy10b3AtcmlnaHQge1xuICBib3JkZXItcmFkaXVzOiAwICRib3gtcmFkaXVzLXNpemUgMCAwO1xufVxuXG4lYm94LXNoYWRvdyB7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3c7XG59XG5cbiVib3gtbmVhdCB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzO1xufVxuXG4lYm94LW5lYXQtdG9wIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXMtdG9wO1xufVxuXG4lYm94LW5lYXQtZm9yY2Uge1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cy1mb3JjZTtcbn1cbiIsIiR2cC1taW4td2lkdGg6IDMyMHB4ICFkZWZhdWx0O1xuJHZwLW1heC13aWR0aDogMTIwMHB4ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkdmFsdWUpIHtcbiAgQHJldHVybiAkdmFsdWUgLyAoJHZhbHVlICogMCArIDEpO1xufVxuXG5AbWl4aW4gZmx1aWQtc2l6ZSgkcHJvcCwgJG1pbi1zaXplLCAkbWF4LXNpemUsICRtaW4tdnc6ICR2cC1taW4td2lkdGgsICRtYXgtdnc6ICR2cC1tYXgtd2lkdGgpIHtcbiAgJHUxOiB1bml0KCRtaW4tdncpO1xuICAkdTI6IHVuaXQoJG1heC12dyk7XG4gICR1MzogdW5pdCgkbWluLXNpemUpO1xuICAkdTQ6IHVuaXQoJG1heC1zaXplKTtcblxuICBAaWYgJHUxID09ICR1MiBhbmQgJHUxID09ICR1MyBhbmQgJHUxID09ICR1NCB7XG4gICAgJiB7XG4gICAgICAjeyRwcm9wfTogJG1pbi1zaXplO1xuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbi12dykge1xuICAgICAgICAjeyRwcm9wfTogY2FsYyhcbiAgICAgICAgICAjeyRtaW4tc2l6ZX0gKyAje3N0cmlwLXVuaXQoJG1heC1zaXplIC0gJG1pbi1zaXplKX0gKlxuICAgICAgICAgICAgKCgxMDB2dyAtICN7JG1pbi12d30pIC8gI3tzdHJpcC11bml0KCRtYXgtdncgLSAkbWluLXZ3KX0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWF4LXZ3KSB7XG4gICAgICAgICN7JHByb3B9OiAkbWF4LXNpemU7XG4gICAgICB9XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJmbHVpZC1zaXplIHJlcXVpcmVzIHRoYXQgYWxsIHZhbHVlcyBoYXZlIHRoZSBzYW1lIHVuaXRcIjtcbiAgfVxufVxuIiwiY29vcmRzIHtcbiAgLyogaGFuZGxlIGhpZGRlbiBjb29yZHMgKi9cbiAgLmNvb3Jkcy1ubyAmIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLyogaGFuZGxlIGlubmVyIGNvb3JkcyAqL1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gIEBpbmNsdWRlIGZsdWlkLXNpemUoJ2ZvbnQtc2l6ZScsIDhweCwgMTJweCk7XG5cbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4ICMwMDA7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuXG4gICYucmFua3Mge1xuICAgIGZsZXgtZmxvdzogY29sdW1uLXJldmVyc2U7XG4gICAgdG9wOiAxcHg7XG4gICAgcmlnaHQ6IDA7XG5cbiAgICAvLyBhIG5lZ2F0aXZlIHZhbHVlIGNyZWF0ZXMgZW1wdHkgc3BhY2Ugb24gdGhlIHJpZ2h0IHNpZGUgaW4gbW9iaWxlIGJyb3dzZXJzXG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAwLjhlbTtcblxuICAgICYuYmxhY2sge1xuICAgICAgZmxleC1mbG93OiBjb2x1bW47XG4gICAgfVxuICB9XG5cbiAgJi5maWxlcyB7XG4gICAgYm90dG9tOiAwcHg7XG4gICAgbGVmdDogMDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGZsZXgtZmxvdzogcm93O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMS40ZW07XG5cbiAgICAmLmJsYWNrIHtcbiAgICAgIGZsZXgtZmxvdzogcm93LXJldmVyc2U7XG4gICAgfVxuXG4gICAgY29vcmQge1xuICAgICAgcGFkZGluZy1sZWZ0OiA0cHg7XG4gICAgfVxuICB9XG5cbiAgY29vcmQge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5cbiAgLyogbmVnYXRlIGlubmVyIGNvb3JkcyBjb2xvcnMgKi9cbiAgLmlzM2QgLmNnLXdyYXAgY29vcmRzIGNvb3JkIHtcbiAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICAgIHRleHQtc2hhZG93OiAwIDFweCAycHggIzAwMCAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmlzM2QgLmNnLXdyYXAgY29vcmRzLmZpbGVzIHtcbiAgICBib3R0b206IGNhbGMoMXB4IC0gMi41JSk7XG5cbiAgICBjb29yZCB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDNweDtcbiAgICB9XG4gIH1cbn1cblxuQGltcG9ydCAnY29vcmRzLWNvbG9ycyc7XG5cbi8qIGhhbmRsZSBvdXRlciBjb29yZHMgKi9cbkBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDItdW5pYm9hcmQpIHtcbiAgLmNvb3Jkcy1vdXQgY29vcmRzIHtcbiAgICB0ZXh0LXNoYWRvdzogbm9uZTtcblxuICAgICYucmFua3Mge1xuICAgICAgcmlnaHQ6IC0xNXB4O1xuICAgICAgdG9wOiAwO1xuICAgICAgd2lkdGg6IDEycHg7XG5cbiAgICAgIGNvb3JkIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQyJSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5maWxlcyB7XG4gICAgICBib3R0b206IC0xNXB4O1xuICAgICAgbGVmdDogMDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gIH1cblxuICAuY29vcmRzLW91dCBjb29yZHMucmFua3MsXG4gIC5jb29yZHMtb3V0IC5pczJkIGNvb3Jkcy5maWxlcyB7XG4gICAgY29vcmQge1xuICAgICAgY29sb3I6ICRjLWZvbnQtcGFnZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuIiwiJGNvb3JkLWNvbG9yLWRlZmF1bHQ6ICNmZmY7XG4kY29vcmQtc2hhZG93LWRlZmF1bHQ6IDAgMXB4IDJweCAjMDAwO1xuXG5jb29yZHMge1xuICB0ZXh0LXNoYWRvdzogdmFyKC0tY2ctY3MsICRjb29yZC1zaGFkb3ctZGVmYXVsdCk7XG59XG5cbi5vcmllbnRhdGlvbi13aGl0ZSAuZmlsZXMgY29vcmQ6bnRoLWNoaWxkKDJuICsgMSksXG4ub3JpZW50YXRpb24td2hpdGUgLnJhbmtzIGNvb3JkOm50aC1jaGlsZCgybiksXG4ub3JpZW50YXRpb24tYmxhY2sgLmZpbGVzIGNvb3JkOm50aC1jaGlsZCgybiksXG4ub3JpZW50YXRpb24tYmxhY2sgLnJhbmtzIGNvb3JkOm50aC1jaGlsZCgybiArIDEpIHtcbiAgY29sb3I6IHZhcigtLWNnLWNjdywgJGNvb3JkLWNvbG9yLWRlZmF1bHQpO1xufVxuXG4ub3JpZW50YXRpb24td2hpdGUgLmZpbGVzIGNvb3JkOm50aC1jaGlsZCgybiksXG4ub3JpZW50YXRpb24td2hpdGUgLnJhbmtzIGNvb3JkOm50aC1jaGlsZCgybiArIDEpLFxuLm9yaWVudGF0aW9uLWJsYWNrIC5maWxlcyBjb29yZDpudGgtY2hpbGQoMm4gKyAxKSxcbi5vcmllbnRhdGlvbi1ibGFjayAucmFua3MgY29vcmQ6bnRoLWNoaWxkKDJuKSB7XG4gIGNvbG9yOiB2YXIoLS1jZy1jY2IsICRjb29yZC1jb2xvci1kZWZhdWx0KTtcbn1cbiIsImJvZHkge1xuICAtLWJvYXJkLXNjYWxlOiAxO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXpvb20tZW5hYmxlZCkge1xuICAgIC8vIC0tem9vbTogODA7IGRlZmluZWQgaW4gdGhlIEhUTUwsIGxvYWRlZCBmcm9tIHNlcnZlclxuICAgIC0tYm9hcmQtc2NhbGU6IGNhbGMoKHZhcigtLXpvb20pIC8gMTAwKSAqIDAuNyArIDAuMyk7XG4gIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMS11bmlib2FyZCkge1xuICBib2R5IHtcbiAgICAtLWNvbDE6IDE7XG4gIH1cblxuICAubWFpbi1ib2FyZCBjZy1ib2FyZCB7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgfVxufVxuIiwiYm9keSA6Oi13ZWJraXQtc2Nyb2xsYmFyLFxuYm9keSA6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciB7XG4gIHdpZHRoOiAwLjVyZW07XG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbn1cblxuYm9keSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZDogJGMtc2hhZGU7XG59XG5cbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlcixcbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjphY3RpdmUge1xuICBiYWNrZ3JvdW5kOiAkYy1mb250LWRpbW1lcjtcbn1cbiIsImJvZHkucmVzaXppbmcge1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuY2ctcmVzaXplIHtcbiAgJHJlc2l6ZS13aWR0aDogMjJweDtcblxuICBkaXNwbGF5OiBub25lO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWJvYXJkLXJlc2l6YWJsZSkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogI3sxM3B4IC0gJHJlc2l6ZS13aWR0aH07XG4gICAgYm90dG9tOiAjezEzcHggLSAkcmVzaXplLXdpZHRofTtcbiAgICB3aWR0aDogJHJlc2l6ZS13aWR0aDtcbiAgICBoZWlnaHQ6ICRyZXNpemUtd2lkdGg7XG4gICAgY3Vyc29yOiBud3NlLXJlc2l6ZTtcbiAgICB6LWluZGV4OiAxMDtcblxuICAgICY6OmJlZm9yZSxcbiAgICAmOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjMDAwO1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMTJweDtcbiAgICAgIGhlaWdodDogMXB4O1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICB3aWR0aDogNXB4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoN3B4LCA4cHgpIHJvdGF0ZSgtNDVkZWcpO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDFweCwgNnB4KSByb3RhdGUoLTQ1ZGVnKTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJhY2tncm91bmQ6IGZhZGUtb3V0KCRjLWFjY2VudCwgMC41KTtcbiAgICB9XG5cbiAgICAucmVzaXppbmcgJiB7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBiYWNrZ3JvdW5kOiBmYWRlLW91dCgkYy1zZWNvbmRhcnksIDAuNSk7XG4gICAgfVxuICB9XG59XG4iLCIjbW9kYWwge1xuICAmLW92ZXJsYXkge1xuICAgIEBleHRlbmQgJWZ1bGxzY3JlZW4tbWFzaywgJWZsZXgtY2VudGVyO1xuXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAmLXdyYXAge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMsICVwb3B1cC1zaGFkb3csICVmbGV4LWNvbHVtbjtcblxuICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1heC13aWR0aDogMTAwdnc7XG4gICAgbWF4LWhlaWdodDogOTZ2aDtcblxuICAgID4gZGl2IHtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgcGFkZGluZzogMnJlbTtcbiAgICB9XG5cbiAgICAuY2xvc2Uge1xuICAgICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICBsaW5lLWhlaWdodDogMjhweDtcbiAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgdG9wOiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zbWFsbCkge1xuICAgICAgICB0b3A6IC0xMnB4O1xuICAgICAgICByaWdodDogLTEycHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXBvcHVwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmNsb3NlOmhvdmVyIHtcbiAgICAgIEBleHRlbmQgJWJveC1zaGFkb3c7XG5cbiAgICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cbiAgfVxufVxuIiwiLmNvbnRpbnVlLXdpdGgge1xuICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICA+ICo6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgIG1hcmdpbi10b3A6IDFlbTtcbiAgfVxufVxuIiwiLmNvbG9yLWljb24ge1xuICBAaWYgJHRoZW1lLWxpZ2h0IHtcbiAgICAmLndoaXRlOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ+6Avic7XG4gICAgfVxuXG4gICAgJi5ibGFjazo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICfugL0nO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJi53aGl0ZTo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICfugL0nO1xuICAgIH1cblxuICAgICYuYmxhY2s6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAn7oC+JztcbiAgICB9XG4gIH1cblxuICAmLnJhbmRvbTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAn7oGfJztcbiAgfVxufVxuIiwiQGluY2x1ZGUgY3Jvc3N0YWJsZS1zbWFsbDtcblxuLmNyb3NzdGFibGUge1xuICBAZXh0ZW5kICVib3gtbmVhdC1mb3JjZTtcblxuICB3aWR0aDogMTAwJTtcbiAgbGluZS1oZWlnaHQ6IDEuOWVtO1xuICBkaXNwbGF5OiBmbGV4O1xuXG4gIGZpbGwsXG4gIHBvdnMge1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxuXG4gIHBvdnMsXG4gICZfX3VzZXJzLFxuICAmX19zY29yZSxcbiAgJl9fbWF0Y2h1cCB7XG4gICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAmX191c2VycyxcbiAgJl9fc2NvcmUge1xuICAgIEBleHRlbmQgJW1ldGFsO1xuICB9XG5cbiAgJl9fdXNlcnMge1xuICAgIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gICAgbWF4LXdpZHRoOiA0MHZ3O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICBhIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJGJsb2NrLWdhcDtcbiAgICB9XG4gIH1cblxuICAmX19zY29yZSB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cbiAgICBzcGFuIHtcbiAgICAgIHBhZGRpbmc6IDAgJGJsb2NrLWdhcDtcbiAgICB9XG4gIH1cblxuICAmX19tYXRjaHVwIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCAyMCUpO1xuICB9XG5cbiAgcG92cyB7XG4gICAgYSB7XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgICBmbGV4OiAwIDAgNTAlO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgQGV4dGVuZCAlbWV0YWw7XG5cbiAgICAgIGEge1xuICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYS5sb3NzIHtcbiAgICAgIG9wYWNpdHk6IDAuMjtcbiAgICB9XG5cbiAgICAmLmN1cnJlbnQgYSB7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtYWNjZW50LCAkYy1iZy1ib3gsIDcwJSk7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAmLm5ldyB7XG4gICAgICBib3JkZXI6ICRjLWJvcmRlcjtcbiAgICB9XG5cbiAgICBhLmxvc3Mge1xuICAgICAgb3BhY2l0eTogMC4yO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW5vdC14LXNtYWxsKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAmOm50aC1sYXN0LWNoaWxkKC1uICsgMTIpIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuc2VwIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzLWxlZnQ7XG5cbiAgICBib3JkZXItbGVmdDogJGJvcmRlcjtcbiAgICBtYXJnaW4tbGVmdDogMC4zZW07XG4gIH1cblxuICAud2luIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogJGMtZ29vZDtcbiAgfVxuXG4gIC5sb3NzIHtcbiAgICBjb2xvcjogJGMtYmFkO1xuICB9XG5cbiAgLnVuYXZhaWxhYmxlIHtcbiAgICBtYXJnaW4tdG9wOiA0MHB4O1xuICAgIG9wYWNpdHk6IDAuNztcbiAgfVxufVxuIiwiLmZidCB7XG4gIEBleHRlbmQgJWJ1dHRvbi1ub25lO1xuXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICY6aG92ZXI6bm90KC5kaXNhYmxlZCk6bm90KFtkaXNhYmxlZF0pIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLWJveCwgNzUlKTtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cbiAgfVxuXG4gICYuYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1zZWNvbmRhcnkgIWltcG9ydGFudDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICZbZGlzYWJsZWRdIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICB9XG59XG4iLCIuY21uLXRvZ2dsZSB7XG4gIEBleHRlbmQgJWRvdWJsZS10YXA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLWxlZnQ6IC05OTk5OXB4O1xufVxuXG4uY21uLXRvZ2dsZSArIGxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICBwYWRkaW5nOiAxcHg7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRjLWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogMjRweDtcblxuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgY29udGVudDogJyc7XG4gICAgd2lkdGg6IDIycHg7XG4gICAgaGVpZ2h0OiAyMnB4O1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICB9XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBAZXh0ZW5kICVkYXRhLWljb247XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgei1pbmRleDogMTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gIH1cblxuICAmOjphZnRlciB7XG4gICAgQGV4dGVuZCAlbWV0YWw7XG5cbiAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDIuNXB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgfVxufVxuXG4uY21uLXRvZ2dsZTpub3QoOmNoZWNrZWQpICsgbGFiZWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1iYWQ7XG59XG5cbi5jbW4tdG9nZ2xlLS1zdWJ0bGU6bm90KDpjaGVja2VkKSArIGxhYmVsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGMtZm9udC1kaW1tZXI7XG59XG5cbi5jbW4tdG9nZ2xlOmNoZWNrZWQgKyBsYWJlbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjLWdvb2Q7XG59XG5cbi5jbW4tdG9nZ2xlOmRpc2FibGVkICsgbGFiZWwge1xuICBvcGFjaXR5OiA2MCU7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtcbn1cblxuLmNtbi10b2dnbGU6Zm9jdXM6bm90KDpkaXNhYmxlZCkgKyBsYWJlbCB7XG4gIEBleHRlbmQgJWZvY3VzLXNoYWRvdztcbn1cblxuLmNtbi10b2dnbGU6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICArIGxhYmVsIHtcbiAgICBAZXh0ZW5kICVmb2N1cy1zaGFkb3c7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kKTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICB0cmFuc2l0aW9uOiBtYXJnaW4gJHRyYW5zaXRpb24tZHVyYXRpb24sIGNvbG9yICR0cmFuc2l0aW9uLWR1cmF0aW9uO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIEBleHRlbmQgJW1ldGFsLWhvdmVyO1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihtYXJnaW4pO1xuICAgIH1cbiAgfVxufVxuXG4uY21uLXRvZ2dsZTpub3QoOmNoZWNrZWQpICsgbGFiZWwge1xuICAmOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICfugL8nO1xuICAgIGNvbG9yOiAkYy1iYWQ7XG4gIH1cbn1cblxuLmNtbi10b2dnbGUtLXN1YnRsZTpub3QoOmNoZWNrZWQpICsgbGFiZWwge1xuICAmOjpiZWZvcmUge1xuICAgIGNvbG9yOiAkYy1mb250LWRpbW1lcjtcbiAgfVxufVxuXG4uY21uLXRvZ2dsZTpjaGVja2VkICsgbGFiZWwge1xuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICBtYXJnaW4tbGVmdDogMTZweDtcbiAgfVxuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ+6AuCc7XG4gICAgY29sb3I6ICRjLWdvb2Q7XG4gIH1cbn1cbiIsIkBtaXhpbiByYW5nZS10aHVtYiB7XG4gIEBpbmNsdWRlIG1ldGFsO1xuXG4gIGJvcmRlcjogMXB4IHNvbGlkICRjLWZvbnQtZGltbWVyO1xuICBoZWlnaHQ6IDFlbTtcbiAgd2lkdGg6IDEuNWVtO1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuQG1peGluIHJhbmdlLXRyYWNrIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMWVtO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xuICBib3JkZXItcmFkaXVzOiAwLjVlbTtcbn1cblxuaW5wdXQucmFuZ2Uge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogMDtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xuICAgIEBpbmNsdWRlIHJhbmdlLXRyYWNrO1xuICB9XG5cbiAgJjo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgIEBpbmNsdWRlIHJhbmdlLXRodW1iO1xuXG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgJjo6LW1vei1yYW5nZS10cmFjayB7XG4gICAgQGluY2x1ZGUgcmFuZ2UtdHJhY2s7XG4gIH1cblxuICAmOjotbW96LXJhbmdlLXRodW1iIHtcbiAgICBAaW5jbHVkZSByYW5nZS10aHVtYjtcbiAgfVxuXG4gICY6Oi1tcy10cmFjayB7XG4gICAgQGluY2x1ZGUgcmFuZ2UtdHJhY2s7XG4gIH1cblxuICAmOjotbXMtZmlsbC1sb3dlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxOTEsIDE5MSwgMTkxLCAwLjc4KTtcbiAgICBib3JkZXItcmFkaXVzOiAxMS44cHg7XG4gIH1cblxuICAmOjotbXMtZmlsbC11cHBlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyMTQsIDIxNCwgMjE0LCAwLjc4KTtcbiAgICBib3JkZXItcmFkaXVzOiAxMS44cHg7XG4gIH1cblxuICAmOjotbXMtdGh1bWIge1xuICAgIEBpbmNsdWRlIHJhbmdlLXRodW1iO1xuXG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cbiIsIkBpbXBvcnQgJ2V4dGVuZCc7XG5cbiRjLWluYWNjdXJhY3k6ICM1NmI0ZTk7XG4kYy1taXN0YWtlOiAjZTY5ZjAwO1xuJGMtYmx1bmRlcjogI2RmNTM1MztcblxuLnR2aWV3MiB7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG5cbiAgJi1jb2x1bW4ge1xuICAgIEBleHRlbmQgJWZsZXgtd3JhcDtcbiAgfVxuXG4gICYtaW5saW5lIHtcbiAgICBwYWRkaW5nOiA3cHggM3B4IDdweCA3cHg7XG4gIH1cblxuICBtb3ZlIHtcbiAgICBAZXh0ZW5kICVtb3ZlO1xuXG4gICAgQG1lZGlhIChob3Zlcjogbm9uZSkge1xuICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgfVxuXG4gICAgJi5pbmFjY3VyYWN5IHtcbiAgICAgIGNvbG9yOiAkYy1pbmFjY3VyYWN5O1xuICAgIH1cbiAgICAmLm1pc3Rha2Uge1xuICAgICAgY29sb3I6ICRjLW1pc3Rha2U7XG4gICAgfVxuICAgICYuYmx1bmRlciB7XG4gICAgICBjb2xvcjogJGMtYmx1bmRlcjtcbiAgICB9XG4gIH1cblxuICAmLWNvbHVtbiBtb3ZlIHtcbiAgICBmb250LXNpemU6IDEuMDkyZW07XG4gICAgcGFkZGluZzogMCAycHg7XG4gIH1cblxuICAmLWlubGluZSBtb3ZlIHtcbiAgICBwYWRkaW5nOiAwLjI1ZW0gMC4xN2VtO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICBtb3ZlLnBhcmVudCB7XG4gICAgY29sb3I6ICRjLXByaW1hcnk7XG4gIH1cblxuICBjb21tZW50IGEge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIH1cblxuICBtb3ZlLmN1cnJlbnQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLWFjY2VudDtcbiAgfVxuXG4gIG1vdmUuYWN0aXZlIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCAyNSUpO1xuICAgIGNvbG9yOiAkYy1mb250LWNsZWFyO1xuICB9XG5cbiAgJi1pbmxpbmUgbW92ZS5hY3RpdmUsXG4gIGxpbmUgbW92ZS5hY3RpdmUge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXM7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgNDAlKTtcbiAgICBjb2xvcjogJGMtZm9udC1jbGVhcmVyO1xuICAgIG91dGxpbmU6IDFweCBzb2xpZCBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCA2MCUpO1xuICB9XG5cbiAgbW92ZS5ub25nYW1lIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIH1cblxuICBtb3ZlOm5vdCguZW1wdHkpOmhvdmVyIHtcbiAgICAmLFxuICAgIGluZGV4LFxuICAgIGV2YWwge1xuICAgICAgYmFja2dyb3VuZDogJGMtcHJpbWFyeTtcbiAgICAgIGNvbG9yOiAkYy1wcmltYXJ5LW92ZXI7XG4gICAgfVxuICB9XG5cbiAgJi1pbmxpbmUgbW92ZTpob3ZlciB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cztcbiAgfVxuXG4gIG1vdmUuZW1wdHkge1xuICAgIGNvbG9yOiAkYy1mb250LWRpbW1lcjtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gIH1cblxuICBtb3ZlIGluZGV4IHtcbiAgICBmb250LXNpemU6IDkwJTtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gIH1cblxuICBtb3ZlLmNvbnRleHQtbWVudSB7XG4gICAgYmFja2dyb3VuZDogJGMtYWNjZW50O1xuICAgIGNvbG9yOiAkYy1hY2NlbnQtb3ZlcjtcblxuICAgIGluZGV4IHtcbiAgICAgIGNvbG9yOiAkYy1hY2NlbnQtb3ZlcjtcbiAgICB9XG4gIH1cblxuICAmLWNvbHVtbiBtb3ZlIGluZGV4IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDVweDtcbiAgfVxuXG4gICYtY29sdW1uIG1vdmUgaW5kZXg6Zmlyc3QtY2hpbGQge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxuXG4gICYtaW5saW5lIG1vdmUgaW5kZXgge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuMmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxMTEuMTElO1xuICB9XG5cbiAgbGluZSBtb3ZlIHtcbiAgICBjb2xvcjogJGMtZm9udDtcbiAgfVxuXG4gICYtY29sdW1uID4gbW92ZSB7XG4gICAgZmxleDogMCAwIDQzLjUlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZm9udC1zaXplOiAxLjE4NWVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjc1ZW07XG4gICAgcGFkZGluZzogMCAwLjNlbSAwIDAuNWVtO1xuICB9XG5cbiAgJi1jb2x1bW4gPiBpbmRleCArIG1vdmUge1xuICAgIGJvcmRlci1yaWdodDogJGMtYm9yZGVyO1xuICB9XG5cbiAgZXZhbCB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgZmxleDogMyAwIGF1dG87XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gIH1cblxuICBnbHlwaCB7XG4gICAgQGV4dGVuZCAlYmFzZS1mb250O1xuXG4gICAgbWFyZ2luLWxlZnQ6IDAuMDhlbTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICB9XG5cbiAgLm1vZnctc3RhciB7XG4gICAgZm9udC1zaXplOiAwLjc1ZW07XG4gICAgbWFyZ2luLWxlZnQ6IDAuMTVlbTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcblxuICAgICYtLWNvbXBsZXRlIHtcbiAgICAgIGNvbG9yOiAjNGNhZjUwOyAvLyBncmVlbiDigJQgY29tcGxldGUgbm9taW5hdGlvblxuICAgIH1cblxuICAgICYtLWRyYWZ0IHtcbiAgICAgIGNvbG9yOiAjZTZiODAwOyAvLyB5ZWxsb3cg4oCUIGRyYWZ0L2luY29tcGxldGUgbm9taW5hdGlvblxuICAgIH1cbiAgfVxuXG4gIHNoYXBlcyB7XG4gICAgZm9udC1zaXplOiAwLjdlbTtcbiAgICBtYXJnaW4tbGVmdDogMC40ZW07XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgY29sb3I6ICRjLWdvb2Q7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBleHRlbmQgJWRhdGEtaWNvbjtcbiAgICAgIGNvbnRlbnQ6ICfugL4nO1xuICAgIH1cbiAgfVxuXG4gICYtY29sdW1uID4gbW92ZSBnbHlwaCB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZm9udC1zaXplOiAwLjgyZW07XG4gIH1cblxuICAmLWNvbHVtbiA+IGluZGV4IHtcbiAgICBmbGV4OiAwIDAgMTMlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm9yZGVyLXJpZ2h0OiAkYm9yZGVyO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIGxpbmUtaGVpZ2h0OiAyLjA3ZW07XG4gICAgY29sb3I6ICRjLWZvbnQtZGltbWVyO1xuICB9XG5cbiAgPiBpbnRlcnJ1cHQge1xuICAgIGZvbnQtc2l6ZTogOTUlO1xuICB9XG5cbiAgJi1jb2x1bW4gPiBpbnRlcnJ1cHQge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYy1ib3JkZXI7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLWJvcmRlcjtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cblxuICAvLyBTY290dGlzaCBQcm9ncmVzc2l2ZSBDaGVzczogb25lIHNlcmllcyBwZXIgcm93IOKAlCBpbmRleCB8IHBhd24gfCBjb3VudCB8IG1vdmVzXG4gICYtY29sdW1uIGRpdi5wZ3Ige1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgICA+IGluZGV4IHtcbiAgICAgIGZsZXg6IDAgMCAxMCU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBib3JkZXItcmlnaHQ6ICRib3JkZXI7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjA3ZW07XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW1tZXI7XG4gICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgIH1cblxuICAgID4gLnBnci1zeW0ge1xuICAgICAgZmxleDogMCAwIDEwJTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjA3ZW07XG4gICAgICBmb250LXNpemU6IDEuMWVtO1xuICAgIH1cblxuICAgID4gLnBnci1jbnQge1xuICAgICAgZmxleDogMCAwIDEyJTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjA3ZW07XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW1tZXI7XG4gICAgICBmb250LXNpemU6IDAuODVlbTtcbiAgICB9XG5cbiAgICA+IG1vdmUge1xuICAgICAgZmxleDogMTtcbiAgICAgIGZvbnQtc2l6ZTogMS4xODVlbTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjc1ZW07XG4gICAgICBwYWRkaW5nOiAwIDAuM2VtIDAgMC41ZW07XG4gICAgICAvLyBPdmVycmlkZSBub3JtYWwgbW92ZS1sZXZlbCBob3ZlciDigJQgaW5kaXZpZHVhbCBzcGFucyBoYW5kbGUgdGhlaXIgb3duIGhvdmVyXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICBjb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICBzcGFuIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuMzVlbTtcbiAgICAgICAgcGFkZGluZzogMCAycHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAkYy1wcmltYXJ5O1xuICAgICAgICAgIGNvbG9yOiAkYy1wcmltYXJ5LW92ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgMjUlKTtcbiAgICAgICAgICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgICYuY3VycmVudCB7XG4gICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGMtYWNjZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi1jb2x1bW4gPiBpbnRlcnJ1cHQgPiBjb21tZW50IHtcbiAgICBAZXh0ZW5kICVicmVhay13b3JkO1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogM3B4IDVweDtcbiAgfVxuXG4gICYtaW5saW5lIGNvbW1lbnQge1xuICAgIHZlcnRpY2FsLWFsaWduOiA0NSU7XG4gICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgIG1hcmdpbjogMCAwLjJlbSAwIDAuMWVtO1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gIH1cblxuICBjb21tZW50IC5ieSB7XG4gICAgQGV4dGVuZCAlbm93cmFwLWVsbGlwc2lzLCAlcm9ib3RvO1xuXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiAtMC4zZW07XG4gICAgZm9udC1zaXplOiAwLjllbTtcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjRlbTtcbiAgICBtYXgtd2lkdGg6IDllbTtcbiAgfVxuXG4gICYtY29sdW1uIGNvbW1lbnQud2hpdGUge1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQ7XG4gIH1cblxuICAmLWNvbHVtbiBjb21tZW50LmJsYWNrIHtcbiAgICBib3JkZXItcmlnaHQ6IDNweCBzb2xpZDtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIH1cblxuICAmLWNvbHVtbiBjb21tZW50LmluYWNjdXJhY3kge1xuICAgIGJvcmRlci1jb2xvcjogJGMtaW5hY2N1cmFjeTtcbiAgfVxuXG4gICYtY29sdW1uIGNvbW1lbnQubWlzdGFrZSB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYy1taXN0YWtlO1xuICB9XG5cbiAgJi1jb2x1bW4gY29tbWVudC5ibHVuZGVyIHtcbiAgICBib3JkZXItY29sb3I6ICRjLWJsdW5kZXI7XG4gIH1cblxuICAmLWNvbHVtbiBjb21tZW50LnVuZGVmaW5lZCB7XG4gICAgYm9yZGVyLWNvbG9yOiAjNjY1NThjO1xuICB9XG5cbiAgbGluZSBjb21tZW50IHtcbiAgICBmb250LXNpemU6IDkwJTtcbiAgfVxuXG4gICYtY29sdW1uIGxpbmUgY29tbWVudCB7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgcGFkZGluZzogMCA1cHggMCAzcHg7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgfVxuXG4gIGxpbmUgY29tbWVudCAuYnkge1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIH1cblxuICBsaW5lcyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLXRvcDogMnB4O1xuICAgIG1hcmdpbi1sZWZ0OiA2cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMC44ZW07XG4gICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAkYy1ib3JkZXI7XG4gIH1cblxuICA+IGludGVycnVwdCA+IGxpbmVzIHtcbiAgICBtYXJnaW4tbGVmdDogMHB4O1xuICB9XG5cbiAgbGluZXMuc2luZ2xlIHtcbiAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgfVxuXG4gIGxpbmVzOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICBsaW5lIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nLWxlZnQ6IDdweDtcbiAgfVxuXG4gICYtY29sdW1uIGxpbmUge1xuICAgIG1hcmdpbjogMnB4IDA7XG4gIH1cblxuICBsaW5lcyBsaW5lcyBtb3ZlIHtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gIH1cblxuICBsaW5lcyBsaW5lcyB7XG4gICAgbWFyZ2luLWxlZnQ6IDFweDtcbiAgfVxuXG4gIGxpbmVzIGxpbmVzOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcgJztcbiAgICBib3JkZXItdG9wOiAycHggc29saWQgJGMtYm9yZGVyO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBtYXJnaW4tbGVmdDogLTExcHg7XG4gICAgd2lkdGg6IDlweDtcbiAgICBoZWlnaHQ6IDZweDtcbiAgfVxuXG4gIGxpbmVzIGxpbmU6OmJlZm9yZSB7XG4gICAgbWFyZ2luLXRvcDogMC42NWVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtOHB4O1xuICAgIGNvbnRlbnQ6ICcgJztcbiAgICBib3JkZXItdG9wOiAycHggc29saWQgJGMtYm9yZGVyO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogOHB4O1xuICAgIGhlaWdodDogNnB4O1xuICB9XG5cbiAgbGluZXMgbGluZXM6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIGlubGluZSB7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBmb250LXNpemU6IDAuOWVtO1xuICAgIG9wYWNpdHk6IDAuODtcbiAgfVxuXG4gIGlubGluZTo6YmVmb3JlLFxuICBpbmxpbmU6OmFmdGVyIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogMC40ZW07XG4gICAgb3BhY2l0eTogMC43O1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gIH1cblxuICBpbmxpbmU6OmJlZm9yZSB7XG4gICAgY29udGVudDogJygnO1xuICAgIG1hcmdpbi1sZWZ0OiAycHg7XG4gIH1cblxuICBpbmxpbmU6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnKSc7XG4gICAgbWFyZ2luLXJpZ2h0OiAycHg7XG4gIH1cblxuICAmLWlubGluZSBpbmxpbmU6OmJlZm9yZSxcbiAgJi1pbmxpbmUgaW5saW5lOjphZnRlciB7XG4gICAgdmVydGljYWwtYWxpZ246IDAuN2VtO1xuICB9XG5cbiAgLmNvbmNlYWwge1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgfVxuXG4gIC5oaWRlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4iLCIlbW92ZSB7XG4gIEBleHRlbmQgJXNhbiwgJW5vd3JhcC1oaWRkZW47XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4iLCJAaW1wb3J0ICdjdHJsJztcbkBpbXBvcnQgJ3B2JztcbiIsIi5jZXZhbCB7XG4gIEBleHRlbmQgJW1ldGFsLWJnO1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG5cbiAgJi5lbmFibGVkIHtcbiAgICBwYWRkaW5nLXRvcDogMnB4O1xuICAgIGhlaWdodDogNDBweDtcblxuICAgIC5zaG93LXRocmVhdCB7XG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIH1cbiAgfVxuXG4gIC5zd2l0Y2gge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gICAgZmxleDogMCAwIDQwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gIH1cblxuICBwZWFybCB7XG4gICAgZmxleDogMCAwIDc1cHg7XG4gICAgbGluZS1oZWlnaHQ6IDM4cHg7XG4gICAgZm9udC1zaXplOiAxLjZlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICBoZWxwLFxuICAuZW5naW5lIHtcbiAgICBAZXh0ZW5kICVub3dyYXAtaGlkZGVuO1xuXG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgIG1hcmdpbi10b3A6IDNweDtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gIH1cblxuICAuZW5naW5lIHtcbiAgICAuY2xvdWQge1xuICAgICAgQGV4dGVuZCAlcm9ib3RvLCAlYm94LXJhZGl1cztcblxuICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICAgIGJhY2tncm91bmQ6ICRjLXNlY29uZGFyeS1kaW07XG4gICAgICBjb2xvcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG4gICAgICBwYWRkaW5nOiAxcHggM3B4O1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICB9XG5cbiAgICAuaW5mbyB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuXG4gICAgLmRlZXBlciB7XG4gICAgICBjb2xvcjogJGMtcHJpbWFyeTtcbiAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgfVxuXG4gICAgLmRlZXBlcjo6YmVmb3JlIHtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiAtMnB4O1xuICAgIH1cbiAgfVxuXG4gIC50ZWNobm9sb2d5IHtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICYuZ29vZCB7XG4gICAgICBjb2xvcjogJGMtZ29vZDtcbiAgICB9XG4gIH1cblxuICAuYmFyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAzcHg7XG4gICAgdG9wOiAwcHg7XG4gIH1cblxuICBAa2V5ZnJhbWVzIGJhci1hbmltIHtcbiAgICBmcm9tIHtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAwMDBweCAwO1xuICAgIH1cbiAgfVxuXG4gIC5iYXIgc3BhbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAzcHg7XG4gICAgd2lkdGg6IDA7XG4gICAgYmFja2dyb3VuZDogJGMtZ29vZDtcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAxcztcblxuICAgICYudGhyZWF0IHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgICB9XG4gIH1cblxuICAmLmNvbXB1dGluZyAuYmFyIHNwYW4ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGltZy11cmwoJ2Jhci1oaWdobGlnaHQucG5nJyk7XG4gICAgYW5pbWF0aW9uOiBiYXItYW5pbSAxMDAwcyBsaW5lYXIgaW5maW5pdGU7XG4gIH1cblxuICAuc2hvdy10aHJlYXQge1xuICAgIGZsZXg6IDAgOTkgYXV0bztcbiAgICBsaW5lLWhlaWdodDogMzhweDtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgZm9udC1zaXplOiAwLjllbTtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVlbTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcblxuICAgICY6aG92ZXI6bm90KC5oaWRkZW4pLFxuICAgICYuYWN0aXZlIHtcbiAgICAgIGNvbG9yOiAkYy1yZWQ7XG4gICAgfVxuXG4gICAgJi5oaWRkZW4ge1xuICAgICAgb3BhY2l0eTogMC4zO1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgIH1cbiAgfVxufVxuIiwiLnB2X2JveCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICBmb250LXNpemU6IDEzcHg7XG5cbiAgLnB2IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgbGluZS1oZWlnaHQ6IDJlbTtcbiAgICBib3JkZXItdG9wOiAkYm9yZGVyO1xuICAgIHBhZGRpbmctcmlnaHQ6IDE0cHg7XG4gICAgbWluLWhlaWdodDogMmVtO1xuXG4gICAgJi5wdi0tbm93cmFwIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyAvLyBcImZsZXhcIiBkb2Vzbid0IHN1cHBvcnQgZWxsaXBzaXMgc28gc3dpdGNoIGJhY2sgdG8gXCJibG9ja1wiXG4gICAgICBmbGV4LXdyYXA6IGluaXRpYWw7XG4gICAgICBoZWlnaHQ6IDJlbTtcbiAgICAgIEBleHRlbmQgJW5vd3JhcC1lbGxpcHNpcztcbiAgICB9XG5cbiAgICAmW2RhdGEtdWNpXTpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1ib3gsIDIwJSk7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgc3Ryb25nIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHdpZHRoOiAzNHB4O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIHNwYW4ge1xuICAgICAgQGV4dGVuZCAlc2FuO1xuXG4gICAgICBtYXJnaW4tbGVmdDogNHB4O1xuICAgIH1cblxuICAgICZbZGF0YS11Y2ldIC5wdi1zYW46aG92ZXIge1xuICAgICAgY29sb3I6ICRjLXByaW1hcnk7XG4gICAgfVxuXG4gICAgLnB2LXdyYXAtdG9nZ2xlIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgcGFkZGluZzogMCA0cHg7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1zZWNvbmRhcnk7XG4gICAgICAgIGNvbG9yOiAkYy1zZWNvbmRhcnktb3ZlcjtcbiAgICAgIH1cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICfilrInO1xuICAgICAgfVxuICAgIH1cblxuICAgICYucHYtLW5vd3JhcCAucHYtd3JhcC10b2dnbGUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICB9XG4gIH1cblxuICAucHYtYm9hcmQge1xuICAgIEBleHRlbmQgJXBvcHVwLXNoYWRvdztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDgwJTtcbiAgICBsZWZ0OiAzNHB4O1xuICAgIG1heC13aWR0aDogMjQwcHg7XG4gICAgei1pbmRleDogMTtcblxuICAgIC5wdi1ib2FyZC1zcXVhcmUge1xuICAgICAgQGV4dGVuZCAlc3F1YXJlO1xuXG4gICAgICAuY2ctd3JhcCB7XG4gICAgICAgIEBleHRlbmQgJWFicy0xMDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJtYWluIHtcbiAgQGluY2x1ZGUgZmx1aWQtc2l6ZSgnLS1nYXVnZS1nYXAnLCA4cHgsIDE3cHgpO1xufVxuXG4uZXZhbC1nYXVnZSB7XG4gIHdpZHRoOiB2YXIoLS1nYXVnZS1nYXApO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6IGlmKCR0aGVtZS1saWdodCwgI2ZmZiwgI2EwYTBhMCk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMS11bmlib2FyZCkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAmLnJldmVyc2Uge1xuICAgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpO1xuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm94LXNoYWRvdzogMCAwIDVweCByZ2JhKDAsIDAsIDAsIDAuNykgaW5zZXQ7XG4gIH1cblxuICB0aWNrIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHJpZGdlIGlmKCR0aGVtZS1saWdodCwgI2VlZSwgI2EwYTBhMCk7XG4gICAgb3BhY2l0eTogMC40O1xuICB9XG5cbiAgdGljay56ZXJvIHtcbiAgICB0b3A6IDZweDtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGJvcmRlci1ib3R0b206IDdweCBzb2xpZCBmYWRlLW91dCgkYy1hY2NlbnQsIDAuNik7XG4gICAgbWFyZ2luLXRvcDogLTNweDtcbiAgfVxuXG4gIC5ibGFjayB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA1MCU7XG4gICAgYmFja2dyb3VuZDogaWYoJHRoZW1lLWxpZ2h0LCAjODg4LCAjNjY2KTtcbiAgICB0cmFuc2l0aW9uOiBoZWlnaHQgMXM7XG4gIH1cbn1cbiIsIi5hbmFseXNlLWNvbnRyb2xzIHtcbiAgQGV4dGVuZCAlZG91YmxlLXRhcDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgZm9udC1zaXplOiAxLjNyZW07XG5cbiAgLmZidCB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cy1ib3R0b207XG5cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAuaGlkZGVuIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cblxuICAuanVtcHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAuZmJ0IHtcbiAgICAgIGZsZXg6IDEgMSAzMCU7XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQsXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBmbGV4OiAxIDEgMjAlO1xuICAgICAgICBmb250LXNpemU6IDAuN2VtO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiI3Byb21vdGlvbi1jaG9pY2Uge1xuICBiYWNrZ3JvdW5kOiBmYWRlLW91dCgkYy1iZy1wYWdlLCAwLjMpO1xuICB6LWluZGV4OiB6KCdjZ19fcHJvbW90aW9uJyk7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogdmFyKC0tY2ctd2lkdGgsIDEwMCUpO1xuICBoZWlnaHQ6IHZhcigtLWNnLWhlaWdodCwgMTAwJSk7XG4gIHJpZ2h0OiAwO1xuXG4gIHNxdWFyZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjBiMGIwO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAyNXB4IDNweCAjODA4MDgwO1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcbiAgfVxuXG4gIHBpZWNlIHtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICBvcGFjaXR5OiAxO1xuXG4gICAgLyogY2FuY2VscyBibGluZGZvbGQgKi9cbiAgfVxuXG4gIC5pczJkICYgcGllY2Uge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7XG4gIH1cblxuICBzcXVhcmU6aG92ZXIge1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCA0OHB4IDhweCAkYy1hY2NlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMCU7XG4gIH1cblxuICAuaXMyZCAmIHNxdWFyZTpob3ZlciBwaWVjZSB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG59XG4iLCIudmFyaWFudC1yYWNpbmdLaW5ncyAuY2ctd3JhcCB7XG4gICYuY2ctd3JhcCBjZy1jb250YWluZXI6OmJlZm9yZSB7XG4gICAgQGV4dGVuZCAlcG9wdXAtc2hhZG93O1xuXG4gICAgYmFja2dyb3VuZDogaHNsYSgwLCAwJSwgOTAlLCAwLjIpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTIuNSU7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgei1pbmRleDogMTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuXG4gICYub3JpZW50YXRpb24td2hpdGUgY2ctY29udGFpbmVyOjpiZWZvcmUge1xuICAgIHRvcDogMDtcbiAgfVxuXG4gICYub3JpZW50YXRpb24tYmxhY2sgY2ctY29udGFpbmVyOjpiZWZvcmUge1xuICAgIGJvdHRvbTogMDtcbiAgfVxufVxuXG4udmFyaWFudC1raW5nT2ZUaGVIaWxsIGNnLWNvbnRhaW5lcjo6YmVmb3JlIHtcbiAgd2lkdGg6IDI1JTtcbiAgaGVpZ2h0OiAyNSU7XG4gIGJveC1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoMCwgMCwgMCwgMC43KTtcbiAgYmFja2dyb3VuZDogaHNsYSgwLCAwJSwgOTAlLCAwLjIpO1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDM3LjUlO1xuICBsZWZ0OiAzNy41JTtcbiAgei1pbmRleDogMTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4iLCIkYy1tc2VsZWN0OiAkYy1wcmltYXJ5O1xuXG4ubXNlbGVjdCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAmX190b2dnbGUge1xuICAgIEBpbmNsdWRlIGhpZGU7XG4gIH1cblxuICAmX19sYWJlbCB7XG4gICAgQGV4dGVuZCAlYm94LW5lYXQsICVtZXRhbCwgJWZsZXgtYmV0d2VlbjtcblxuICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICBwYWRkaW5nOiAwLjNyZW0gMC42cmVtIDAuM3JlbSAxcmVtO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgQGV4dGVuZCAlbWV0YWwtaG92ZXI7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgQGV4dGVuZCAlZGF0YS1pY29uO1xuXG4gICAgICBjb250ZW50OiAn7oGoJztcbiAgICAgIGZvbnQtc2l6ZTogNzAlO1xuICAgICAgY29sb3I6ICRjLW1zZWxlY3Q7XG4gICAgICBtYXJnaW4tbGVmdDogMC40cmVtO1xuICAgIH1cbiAgfVxuXG4gICZfX3RvZ2dsZTpjaGVja2VkIH4gLm1zZWxlY3RfX2xhYmVsIHtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkpO1xuXG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gICZfX2xpc3Qge1xuICAgIEBleHRlbmQgJWJhc2UtZm9udCwgJWJveC1yYWRpdXMsICVwb3B1cC1zaGFkb3csICVmbGV4LWNvbHVtbjtcblxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBtaW4td2lkdGg6IDEwMCU7XG4gICAgbWF4LWhlaWdodDogNjB2aDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHotaW5kZXg6IHooJ21zZWxlY3QnKTtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1wb3B1cDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDApO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcDtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24odHJhbnNmb3JtKTtcblxuICAgIC5jdXJyZW50IHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuXG4gICAgICBAZXh0ZW5kICVmbGV4LWJldHdlZW4tbm93cmFwO1xuXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIEBleHRlbmQgJWRhdGEtaWNvbjtcblxuICAgICAgICBjb250ZW50OiAn7oC4JztcbiAgICAgICAgZmxleDogMSAxIDEwMCU7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgfVxuICAgIH1cblxuICAgID4gKiB7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwYWRkaW5nOiAwLjNlbSAxZW07XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICAgIGNvbG9yOiAkYy1tc2VsZWN0O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtbXNlbGVjdDtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB9XG5cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMC40ZW07XG4gICAgICB9XG5cbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuXG4gICAgLm1zZWxlY3RfX3RvZ2dsZTpjaGVja2VkIH4gJiB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3Qtc21hbGwpIHtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDEsIDEpO1xuICAgICAgfVxuXG4gICAgICA+ICoge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDEyNW1zIGVhc2UtaW4tb3V0IDEyNW1zO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLyogZnJlZSBhbmFseXNpcyBvbiAvYW5hbHlzaXMgKi9cbkBpbXBvcnQgJ2FuYWx5c2UuYmFzZSc7XG5cbi5jb3B5YWJsZXMge1xuICAucGFpciB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAuYWN0aW9uIHtcbiAgICAgIEBleHRlbmQgJWJveC1yYWRpdXMtYm90dG9tO1xuXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMDtcbiAgICAgIHRvcDogMTAwJTtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgb3BhY2l0eTogMDtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcbiAgICB9XG5cbiAgICB0ZXh0YXJlYTpmb2N1cyB+IC5hY3Rpb24ge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICAubmFtZSB7XG4gICAgZmxleDogMCAwIDVjaDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gIH1cblxuICAuY29weWFibGUge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5cbiAgLnBnbiB7XG4gICAgbWFyZ2luOiAxZW0gMDtcblxuICAgIHRleHRhcmVhIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDZlbTtcbiAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICB9XG4gIH1cbn1cblxuLm1zZWxlY3Qge1xuICBmb250LXNpemU6IDEuNWVtO1xuXG4gIGxhYmVsIHNwYW4sXG4gIGEge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBsaW5lLWhlaWdodDogMDtcbiAgICB9XG4gIH1cbn1cbiIsIkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5cbiVib3JkZXItYm90dG9tLWFjdGl2ZSB7XG4gIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAkYy1zZWNvbmRhcnk7XG4gIH1cbn1cblxuQGltcG9ydCAnbGF5b3V0JztcbkBpbXBvcnQgJ3Rvb2xzJztcbkBpbXBvcnQgJ2FjdGlvbi1tZW51JztcbkBpbXBvcnQgJ2V4cGxvcmVyL2V4cGxvcmVyJztcbkBpbXBvcnQgJ3RyYWluaW5nJztcbkBpbXBvcnQgJ3ByYWN0aWNlJztcbkBpbXBvcnQgJ2ZvcmsnO1xuQGltcG9ydCAnc2lkZSc7XG5AaW1wb3J0ICdjb250ZXh0LW1lbnUnO1xuQGltcG9ydCAncGxheWVyLWNsb2NrJztcbkBpbXBvcnQgJ21vZncnO1xuXG4vLyBAaW1wb3J0ICdzaWRlLWNsb2NrJztcbiIsIiRtcS1jb2wxOiAkbXEtY29sMS11bmlib2FyZDtcbiRtcS1jb2wyOiAkbXEtY29sMi11bmlib2FyZDtcbiRtcS1jb2wzOiAkbXEtY29sMy11bmlib2FyZDtcblxuJG1ldGEtaGVpZ2h0OiB2YXIoLS1tZXRhLWhlaWdodCk7XG4kY2hhdC1oZWlnaHQ6IHZhcigtLWNoYXQtaGVpZ2h0KTtcbiIsImJvZHkge1xuICAvKiBwcmV2ZW50cyBzY3JvbGwgYmFyIGZsaWNrZXIgb24gcGFnZSBoZWlnaHQgY2hhbmdlcyAqL1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG59XG5cbiNtYWluLXdyYXAge1xuICAtLW1haW4tbWF4LXdpZHRoOiBjYWxjKDEwMHZoIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGNvbDEtdW5pYm9hcmQtY29udHJvbHN9KTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgLS1tYWluLW1heC13aWR0aDogYXV0bztcbiAgfVxufVxuXG4uYW5hbHlzZSB7XG4gIGdyaWQtYXJlYTogbWFpbjtcbiAgZGlzcGxheTogZ3JpZDtcblxuICAmX19zaWRlIHtcbiAgICBncmlkLWFyZWE6IHNpZGU7XG4gICAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgICBtYXJnaW46ICRibG9jay1nYXA7XG4gIH1cblxuICAmX19ib2FyZCB7XG4gICAgZ3JpZC1hcmVhOiBib2FyZDtcbiAgfVxuXG4gIC5yZWxheS10b3VyIHtcbiAgICBncmlkLXJvdy1zdGFydDogYm9hcmQ7XG4gICAgZ3JpZC1yb3ctZW5kOiB0b29scztcbiAgICBncmlkLWNvbHVtbjogYm9hcmQ7XG4gIH1cblxuICAmX190b29scyB7XG4gICAgZ3JpZC1hcmVhOiB0b29scztcbiAgfVxuXG4gICZfX2NvbnRyb2xzIHtcbiAgICBncmlkLWFyZWE6IGNvbnRyb2xzO1xuICB9XG5cbiAgJl9fdW5kZXJib2FyZCB7XG4gICAgZ3JpZC1hcmVhOiB1bmRlcjtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEtdW5pYm9hcmQpIHtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47IC8vIGhlbHBzIHRydW5jYXRpbmcgbG9uZyBzdHVkeSBuYW1lc1xuICAgIH1cbiAgfVxuXG4gICZfX2FjcGwge1xuICAgIGdyaWQtYXJlYTogYWNwbDtcbiAgfVxuXG4gIC5jaGF0X19tZW1iZXJzIHtcbiAgICBncmlkLWFyZWE6IHVjaGF0O1xuICB9XG5cbiAgLmV2YWwtZ2F1Z2Uge1xuICAgIGdyaWQtYXJlYTogZ2F1Z2U7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC0tbWV0YS1oZWlnaHQ6IGF1dG87XG4gIC0tY2hhdC1oZWlnaHQ6IGZpdC1jb250ZW50KDApO1xuICAmLS13aWtpIHtcbiAgICAtLWNoYXQtaGVpZ2h0OiAwO1xuICB9XG5cbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvIGF1dG8gbWlubWF4KDIwZW0sIDMwdmgpO1xuICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICdib2FyZCdcbiAgICAnY29udHJvbHMnXG4gICAgJ3Rvb2xzJ1xuICAgICdzaWRlJ1xuICAgICdhY3BsJ1xuICAgICd1bmRlcidcbiAgICAnY2hhdCdcbiAgICAndWNoYXQnO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRjb2wyLXVuaWJvYXJkLXdpZHRoIHZhcigtLWdhdWdlLWdhcCkgJGNvbDItdW5pYm9hcmQtdGFibGU7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBmaXQtY29udGVudCgwKTtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgJ2JvYXJkICAgICAgZ2F1Z2UgdG9vbHMnXG4gICAgICAndW5kZXIgICAgICAuICAgICBjb250cm9scydcbiAgICAgICd1bmRlciAgICAgIC4gICAgIGFjcGwnXG4gICAgICAndW5kZXIgICAgICAuICAgICBzaWRlJ1xuICAgICAgJ2NoYXQgICAgICAgLiAgICAgc2lkZSdcbiAgICAgICd1Y2hhdCAgICAgIC4gICAgIHNpZGUnO1xuICAgIGdyaWQtcm93LWdhcDogMDtcblxuICAgICZfX3NpZGUsXG4gICAgLmNoYXRfX21lbWJlcnMsXG4gICAgLm1jaGF0IHtcbiAgICAgIG1hcmdpbjogJGJsb2NrLWdhcCAwIDAgMDtcbiAgICB9XG5cbiAgICAmX191bmRlcmJvYXJkIHtcbiAgICAgIG1hcmdpbi10b3A6IDIzcHg7XG4gICAgfVxuXG4gICAgLmV2YWwtZ2F1Z2Uge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLnJlbGF5LXRvdXIge1xuICAgICAgZ3JpZC1yb3ctZW5kOiB1bmRlcjtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyLXVuaWJvYXJkLXNxdWVlemUpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRjb2wyLXVuaWJvYXJkLXNxdWVlemUtd2lkdGggdmFyKC0tZ2F1Z2UtZ2FwKSAkY29sMi11bmlib2FyZC1zcXVlZXplLXRhYmxlO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMykge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogJGNvbDMtdW5pYm9hcmQtc2lkZSAkYmxvY2stZ2FwICRjb2wzLXVuaWJvYXJkLXdpZHRoIHZhcigtLWdhdWdlLWdhcCkgJGNvbDMtdW5pYm9hcmQtdGFibGU7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAkbWV0YS1oZWlnaHQgJGNoYXQtaGVpZ2h0IDIuNWVtIDFmcjtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgJ3NpZGUgICAgLiBib2FyZCBnYXVnZSB0b29scydcbiAgICAgICdjaGF0ICAgIC4gYm9hcmQgZ2F1Z2UgdG9vbHMnXG4gICAgICAndWNoYXQgICAuIHVuZGVyIC4gICAgIGNvbnRyb2xzJ1xuICAgICAgJ3VjaGF0ICAgLiB1bmRlciAuICAgICBhY3BsJztcblxuICAgICZfX3NpZGUge1xuICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG5cbiAgICAubWNoYXQge1xuICAgICAgbWluLWhlaWdodDogMTBlbTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBjcm9zc3RhYmxlLWxhcmdlO1xuICB9XG59XG4iLCIuYW5hbHlzZSB7XG4gICZfX3Rvb2xzIHtcbiAgICBAZXh0ZW5kICVib3gtbmVhdC1mb3JjZSwgJWZsZXgtY29sdW1uO1xuXG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuXG4gICAgLmNldmFsIHtcbiAgICAgIGZsZXg6IDAgMCAzOHB4O1xuICAgIH1cblxuICAgIC5zdWItYm94IHtcbiAgICAgIEBleHRlbmQgJWJvcmRlci1ib3R0b20tYWN0aXZlO1xuXG4gICAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgICAgLnRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjllbTtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCA0MCUpO1xuICAgICAgICBwYWRkaW5nOiAwIDdweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuY29tcC1vZmZfX2hpbnQge1xuICAgICAgQGV4dGVuZCAlbWV0YWwtYmc7XG5cbiAgICAgIG9wYWNpdHk6IDAuODtcbiAgICAgIHBhZGRpbmc6IDAuM2VtIDFlbTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgYnV0dG9uIHtcbiAgICAgICAgQGV4dGVuZCAlYnV0dG9uLW5vbmU7XG5cbiAgICAgICAgbWFyZ2luLWxlZnQ6IDFlbTtcbiAgICAgICAgY29sb3I6ICRjLWxpbms7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgY29sb3I6ICRjLWxpbmstaG92ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmX19tb3ZlcyB7XG4gICAgZmxleDogMiAxIDA7XG5cbiAgICAvLyAwIHNpemUgZm9yY2VzIHZlcnRpY2FsIHNjcm9sbGJhclxuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuXG4gICAgLy8gZWxzZSBhIHNjcm9sbGJhciBhcHBlYXJzIHNvbWV0aW1lc1xuICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLyogcmVxdWlyZWQgc28gbGluZTo6YmVmb3JlIHNjcm9sbHMgYWxvbmcgdGhlIG1vdmVzISAqL1xuICAgIC5yZXN1bHQsXG4gICAgLnN0YXR1cyB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAucmVzdWx0IHtcbiAgICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICBwYWRkaW5nOiA1cHggMCAzcHggMDtcbiAgICB9XG5cbiAgICAuc3RhdHVzIHtcbiAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgcGFkZGluZy1ib3R0b206IDdweDtcbiAgICB9XG4gIH1cblxuICAmX19jb250cm9scyB7XG4gICAgaGVpZ2h0OiAkY29sMy11bmlib2FyZC1jb250cm9scztcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcblxuICAgIGRpdiB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICB9XG5cbiAgICAuanVtcHMge1xuICAgICAgZmxleDogMyAxIGF1dG87XG4gICAgfVxuXG4gICAgLmZidCB7XG4gICAgICBAZXh0ZW5kICVwYWdlLXRleHQ7XG5cbiAgICAgIGZsZXg6IDAgMCAyLjVyZW07XG4gICAgICB0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDBzO1xuICAgIH1cblxuICAgIC5hY3RpdmUge1xuICAgICAgbWFyZ2luLXRvcDogLTNweDtcbiAgICAgIHBhZGRpbmctdG9wOiAzcHg7XG4gICAgfVxuXG4gICAgOjpiZWZvcmUge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgICBoZWlnaHQ6ICRjb2wxLXVuaWJvYXJkLWNvbnRyb2xzO1xuXG4gICAgICAuZmJ0IHtcbiAgICAgICAgZmxleDogMCAwIDMuNXJlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5hY3Rpb24tbWVudSB7XG4gIEBleHRlbmQgJWJvcmRlci1ib3R0b20tYWN0aXZlO1xuXG4gIGZsZXg6IDEgMSAwO1xuXG4gIC8vIDAgc2l6ZSBmb3JjZXMgdmVydGljYWwgc2Nyb2xsYmFyXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uO1xuICBvdmVyZmxvdzogYXV0bztcbiAgcGFkZGluZzogJGJsb2NrLWdhcDtcblxuICBoMiB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBtYXJnaW46ICRibG9jay1nYXAgMCAzcHggMDtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7XG5cbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB0b3A6IDAuNWVtO1xuICAgICAgd2lkdGg6IDQ1JTtcbiAgICB9XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICByaWdodDogOHB4O1xuICAgIH1cblxuICAgICY6YWZ0ZXIge1xuICAgICAgbGVmdDogOHB4O1xuICAgIH1cbiAgfVxuXG4gICZfX3Rvb2xzIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG5cbiAgICA+ICoge1xuICAgICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgaGVpZ2h0OiA3NXB4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmJ1dHRvbiB7XG4gICAgICBjb2xvcjogJGMtZm9udDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMWVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmF1dG9wbGF5IHtcbiAgICBAZXh0ZW5kICVmbGV4LXdyYXA7XG5cbiAgICBhIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICAgIHBhZGRpbmc6IDdweCAwO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgfVxuXG4gIGZvcm0uZGVsZXRlIHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBtYXJnaW4tdG9wOiA2cHg7XG5cbiAgICAuYnV0dG9uOjpiZWZvcmUge1xuICAgICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICB9XG4gIH1cblxuICAuc2V0dGluZyB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgbWFyZ2luLXRvcDogJGJsb2NrLWdhcDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgbGFiZWwge1xuICAgICAgZmxleDogNCAxIGF1dG87XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIGlucHV0W3R5cGU9J3JhbmdlJ10ge1xuICAgICAgZmxleDogMSA0IGF1dG87XG4gICAgICBwYWRkaW5nOiAwIDAgMCAxZW07XG4gICAgICBoZWlnaHQ6IDEuNmVtO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBtYXJnaW46IDAgMWNoO1xuXG4gICAgICAmW21pbj0nMCddIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAucmFuZ2VfdmFsdWUge1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEpIHtcbiAgICAuYWJzZXQtaW5saW5lIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gZm9yY2UgaW5saW5lIG9uIG1vYmlsZVxuICB9XG59XG4iLCJAaW1wb3J0ICcuL2NvbmZpZyc7XG5cbi5leHBsb3Jlci1ib3gge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXg6IDMgMSAwcHg7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICB0cmFuc2l0aW9uLWRlbGF5OiAwLjNzO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGZvbnQtc2l6ZTogMC45ZW07XG5cbiAgJi5yZWR1Y2VkIHtcbiAgICBmbGV4OiAwLjMgMyAwcHg7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGZsZXg6IDEgMiAwcHg7XG4gICAgfVxuICB9XG5cbiAgLm92ZXJsYXkge1xuICAgIEBleHRlbmQgJWxpbmstb3ZlcmxheTtcblxuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAmLmxvYWRpbmcgLm92ZXJsYXkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgdGJvZHkge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG4gIH1cblxuICAmLmxvYWRpbmcgdGJvZHkge1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgfVxuXG4gIC50aXRsZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB1c2VyLXNlbGVjdDogdGV4dDtcbiAgfVxuICAuZXhwbG9yZXItdGl0bGUge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS45ZW07XG4gICAgcGFkZGluZzogMDtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1ib3gsIDMwJSk7XG4gICAgLmRkbG9hZGVyIHtcbiAgICAgIHBhZGRpbmctbGVmdDogN3B4O1xuICAgIH1cbiAgICAuYWN0aXZlIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcbiAgICAgIHBhZGRpbmc6IDAgN3B4O1xuICAgICAgY29sb3I6ICRjLWZvbnQtY2xlYXI7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1ib3gsIDQwJSk7XG4gICAgICBzdHJvbmcge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNWNoO1xuICAgICAgfVxuICAgICAgJi5wbGF5ZXIge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIC5sb25nIHtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4xY2g7XG4gICAgfVxuICAgIGJ1dHRvbiB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBwYWRkaW5nOiAwIDAuNWNoO1xuICAgICAgbWFyZ2luLWxlZnQ6IDFweDtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCA1MCUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5lbXB0eSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAubWVzc2FnZSB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuICB9XG5cbiAgdHIge1xuICAgICY6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCAyMCUpO1xuICAgIH1cbiAgfVxuXG4gIHRkIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgcGFkZGluZy1sZWZ0OiA3cHg7XG4gIH1cblxuICAubW92ZXMge1xuICAgIHRoIHtcbiAgICAgIEBleHRlbmQgJXJvYm90bztcbiAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuOGVtO1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCA0MCUpO1xuICAgICAgcGFkZGluZy1sZWZ0OiA3cHg7XG4gICAgfVxuICAgIHRkOmZpcnN0LWNoaWxkIHtcbiAgICAgIEBleHRlbmQgJXNhbjtcblxuICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDdweDtcbiAgICB9XG5cbiAgICB0ZDpudGgtY2hpbGQoMikge1xuICAgICAgZm9udC1zaXplOiAwLjc1ZW07XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICB0ZDpsYXN0LWNoaWxkIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgcGFkZGluZy1yaWdodDogN3B4O1xuICAgIH1cblxuICAgIHRib2R5IHRyLnN1bSB7XG4gICAgICAvKiBzdW0gcm93ICovXG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCAyNSUpO1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEteC1zaG9ydCkge1xuICAgICAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRkIHtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5iYXIgc3BhbiB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgICBib3JkZXI6IDAgc29saWQgZmFkZS1vdXQoJGMtZm9udCwgMC44Myk7XG4gICAgYm9yZGVyLXdpZHRoOiAxcHggMDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gICAgZm9udC1zaXplOiAwLjllbTtcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAxcztcbiAgfVxuXG4gIC53aGl0ZSB7XG4gICAgYmFja2dyb3VuZDogaWYoJHRoZW1lLWxpZ2h0LCAjZmZmLCAjY2NjKTtcbiAgICBib3gtc2hhZG93OiAwIC01cHggN3B4IHJnYmEoMCwgMCwgMCwgaWYoJHRoZW1lLWxpZ2h0LCAwLjEsIDAuMjUpKSBpbnNldDtcblxuICAgIEBpZiAkdGhlbWUtZGFyayB7XG4gICAgICBjb2xvcjogIzIyMjtcbiAgICB9XG4gIH1cblxuICAuZHJhd3MsXG4gIC5ibGFjayB7XG4gICAgY29sb3I6IGlmKCR0aGVtZS1saWdodCwgI2ZmZiwgI2RkZCk7XG4gICAgYm94LXNoYWRvdzogMCA1cHggN3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgaWYoJHRoZW1lLWxpZ2h0LCAwLjIsIDAuMSkpIGluc2V0O1xuICB9XG5cbiAgLmRyYXdzIHtcbiAgICBiYWNrZ3JvdW5kOiBpZigkdGhlbWUtbGlnaHQsICNhMGEwYTAsICM2NjYpO1xuICB9XG5cbiAgLmJsYWNrIHtcbiAgICBiYWNrZ3JvdW5kOiBpZigkdGhlbWUtbGlnaHQsICM1NTUsICMzMzMpO1xuICAgIGNvbG9yOiAjZGRkO1xuICB9XG5cbiAgLmJhciBzcGFuOmZpcnN0LWNoaWxkIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzLWxlZnQ7XG5cbiAgICBib3JkZXItbGVmdC13aWR0aDogMXB4O1xuICB9XG5cbiAgLmJhciBzcGFuOmxhc3QtY2hpbGQge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMtcmlnaHQ7XG5cbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDFweDtcbiAgfVxuXG4gIC5nYW1lcyB7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICB0ZCB7XG4gICAgICBwYWRkaW5nOiA1cHggMCA1cHggN3B4O1xuICAgICAgbWF4LXdpZHRoOiAxMTBweDtcbiAgICAgICY6bnRoLWNoaWxkKDIpIHtcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgfVxuXG4gICAgICBzcGFuIHtcbiAgICAgICAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmVzdWx0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgcGFkZGluZzogM3B4IDVweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgfVxuICB9XG5cbiAgLmdhbWVfbWVudSB7XG4gICAgYmFja2dyb3VuZDogJGMtc2Vjb25kYXJ5O1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICBwYWRkaW5nOiAwO1xuXG4gICAgLmdhbWVfdGl0bGUge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgY29sb3I6ICRjLXNlY29uZGFyeS1vdmVyO1xuICAgICAgbWFyZ2luOiAzcHggMCAxcHggMDtcbiAgICB9XG5cbiAgICAubWVudSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgICAgYSB7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBwYWRkaW5nOiA0cHggOHB4O1xuICAgICAgfVxuXG4gICAgICBhOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC50YWJsZWJhc2Uge1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgdGQ6Zmlyc3QtY2hpbGQge1xuICAgICAgQGV4dGVuZCAlc2FuO1xuXG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICAgIHBhZGRpbmctbGVmdDogN3B4O1xuICAgIH1cblxuICAgIHRkOmxhc3QtY2hpbGQge1xuICAgICAgcGFkZGluZy1yaWdodDogN3B4O1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgcmVzdWx0IHtcbiAgICAgIHBhZGRpbmc6IDNweCA1cHg7XG4gICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICB9XG4gIH1cblxuICAudG9jb25mIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDEuMmVtO1xuICAgIHdpZHRoOiAxLjVlbTtcbiAgICBsaW5lLWhlaWdodDogMS41ZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG9wYWNpdHk6IDAuODtcblxuICAgICY6aG92ZXIge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICAubWVzc2FnZSB7XG4gICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgfVxuXG4gICYucmVkdWNlZCAubWVzc2FnZSB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICB9XG5cbiAgLm1lc3NhZ2Ugc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBtYXJnaW46IDFlbSAwO1xuICB9XG5cbiAgJjpub3QoLnJlZHVjZWQpIC5tZXNzYWdlIGgzLFxuICAmLnJlZHVjZWQ6aG92ZXIgLm1lc3NhZ2UgaDMge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB9XG5cbiAgLm1lc3NhZ2UgcCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICBwYWRkaW5nOiAwIDhweDtcbiAgICBtYXJnaW46IDAgMCA4cHggMDtcbiAgfVxuXG4gICYucmVkdWNlZCAubWVzc2FnZSBwLFxuICAmLnJlZHVjZWQgLm1lc3NhZ2UgYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgJi5yZWR1Y2VkOmhvdmVyIC5tZXNzYWdlIHAsXG4gICYucmVkdWNlZDpob3ZlciAubWVzc2FnZSBidXR0b24ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLm1lc3NhZ2UgYnV0dG9uIHtcbiAgICBtYXJnaW46IDAgMzBweDtcbiAgfVxufVxuIiwiLmV4cGxvcmVyX19jb25maWcge1xuICBzZWN0aW9uLFxuICAudG9nZ2xlIHtcbiAgICBtYXJnaW46IDAuNGVtICRibG9jay1nYXAgMCAkYmxvY2stZ2FwO1xuICB9XG5cbiAgc2VjdGlvbi5zYXZlIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMTVweCAwIDEwcHggMDtcbiAgfVxuXG4gIGxhYmVsIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBsaW5lLWhlaWdodDogMmVtO1xuICB9XG5cbiAgLmNob2ljZXMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICBidXR0b24ge1xuICAgICAgQGV4dGVuZCAlbWV0YWw7XG4gICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICBwYWRkaW5nOiA1cHggMDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgICAgYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMCAxcHggMXB4O1xuICAgICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBAZXh0ZW5kICVib3gtcmFkaXVzLWxlZnQ7XG4gICAgICB9XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIEBleHRlbmQgJWJveC1yYWRpdXMtcmlnaHQ7XG5cbiAgICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBAZXh0ZW5kICVtZXRhbC1ob3ZlcjtcbiAgICAgIH1cblxuICAgICAgJlthcmlhLXByZXNzZWQ9J3RydWUnXSxcbiAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtc2Vjb25kYXJ5O1xuICAgICAgICBjb2xvcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG4gICAgICAgIHRleHQtc2hhZG93OiAxcHggMCAwIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICB9XG4gICAgICAmW2FyaWEtcHJlc3NlZD0ndHJ1ZSddIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSBpbnNldDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubmFtZSB7XG4gICAgPiBkaXYge1xuICAgICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG4gICAgfVxuICAgIC5wbGF5ZXItbmFtZSB7XG4gICAgICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplICFpbXBvcnRhbnQ7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDFlbTtcbiAgICAgIHBhZGRpbmctbGVmdDogMWVtO1xuICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xuICAgICAgJi5hY3RpdmU6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCB3aGl0ZSwgODApO1xuICAgICAgfVxuICAgIH1cbiAgICAuY29sb3Ige1xuICAgICAgbWFyZ2luLWxlZnQ6IDFjaDtcbiAgICB9XG4gIH1cblxuICAudG9nZ2xlIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBsaW5lLWhlaWdodDogMmVtO1xuICB9XG5cbiAgLmRhdGUge1xuICAgIGxhYmVsIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtYmV0d2Vlbi1ub3dyYXA7XG4gICAgfVxuICAgIGlucHV0IHtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICBwYWRkaW5nOiAwLjFlbSAwLjVlbTtcbiAgICAgICY6aW52YWxpZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1lcnJvciwgJGMtYmctYm94LCAzMCUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfX3BsYXllcl9fY2hvaWNlIHtcbiAgICBtYXgtd2lkdGg6IDcwY2ggIWltcG9ydGFudDtcblxuICAgID4gZGl2IHtcbiAgICAgIC8vIGZvciB1c2VyIGNvbXBsZXRlXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5pbnB1dC13cmFwcGVyIHtcbiAgICAgIC8vIGZvciB1c2VyIGNvbXBsZXRlXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICAgICBwYWRkaW5nLXRvcDogMmVtO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMmVtO1xuICAgIH1cbiAgICAucHJldmlvdXMge1xuICAgICAgQGV4dGVuZCAlZmxleC13cmFwO1xuICAgICAgLmJ1dHRvbiB7XG4gICAgICAgIG1hcmdpbjogMC4zZW0gMC4yZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLnRyYWluaW5nLWJveCB7XG4gIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gIGZsZXg6IDEuNSAxIDBweDtcblxuICAuZmVlZGJhY2sge1xuICAgIGZsZXg6IDEgMSAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAuZmluZCxcbiAgICAuZmFpbCB7XG4gICAgICBwYWRkaW5nLXRvcDogNXB4O1xuICAgICAgcGFkZGluZy1ib3R0b206IDhweDtcbiAgICB9XG4gIH1cblxuICAucHJvZ3Jlc3Mge1xuICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA0cHg7XG4gICAgYmFja2dyb3VuZDogJGMtc2hhZGU7XG4gIH1cblxuICAucHJvZ3Jlc3MgZGl2IHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICAgIGhlaWdodDogNHB4O1xuICAgIHRyYW5zaXRpb246IHdpZHRoIDAuNXM7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLnBsYXllciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICB9XG5cbiAgLm5vLXNxdWFyZSB7XG4gICAgd2lkdGg6IDY0cHg7XG4gICAgaGVpZ2h0OiA2NHB4O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgfVxuXG4gIC5pczNkICYgZGl2Lm5vLXNxdWFyZSB7XG4gICAgaGVpZ2h0OiA4MnB4O1xuICB9XG5cbiAgcGllY2Uge1xuICAgIHBvc2l0aW9uOiBpbmhlcml0O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaWNvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDY0cHg7XG4gICAgaGVpZ2h0OiA2NHB4O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBmb250LXNpemU6IDUwcHg7XG4gICAgZm9udC1zaXplOiA2NHB4O1xuICAgIGxpbmUtaGVpZ2h0OiA2NHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gIC5pbnN0cnVjdGlvbiA+ICoge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLmluc3RydWN0aW9uID4gc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gIH1cblxuICAuY2hvaWNlcyB7XG4gICAgbGluZS1oZWlnaHQ6IDEuNmVtO1xuICAgIG1hcmdpbjogNXB4IDAgLTVweCAwO1xuICB9XG5cbiAgLmNob2ljZXMgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cbiIsIi5wcmFjdGljZS1ib3gge1xuICBmbGV4OiAwIDAgMTM1cHg7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuXG4gIC5jb21tZW50IHtcbiAgICBmbGV4OiAwIDAgMzBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYm9yZGVyO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gIH1cblxuICAucHJvZ3Jlc3MgZGl2IHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1zaGFkZTtcbiAgfVxuXG4gICYuZ29vZE1vdmUgLnByb2dyZXNzIGRpdiB7XG4gICAgYmFja2dyb3VuZDogJGMtZ29vZDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxuXG4gICYuaW5hY2N1cmFjeSAudGl0bGUsXG4gICYuaW5hY2N1cmFjeSAucHJvZ3Jlc3MgZGl2IHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1icmFnO1xuICAgIGNvbG9yOiAjZmZmO1xuICB9XG5cbiAgJi5taXN0YWtlIC50aXRsZSxcbiAgJi5ibHVuZGVyIC50aXRsZSxcbiAgJi5taXN0YWtlIC5wcm9ncmVzcyBkaXYsXG4gICYuYmx1bmRlciAucHJvZ3Jlc3MgZGl2IHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iYWQ7XG4gICAgY29sb3I6ICNmZmY7XG4gIH1cblxuICAuY29tbWVudCAud2FpdCB7XG4gICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICB9XG5cbiAgLnZlcmRpY3Qge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5cbiAgLnZlcmRpY3Q6OmJlZm9yZSB7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIG1hcmdpbi1yaWdodDogN3B4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEuNGVtO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cblxuICAmLmdvb2RNb3ZlIC52ZXJkaWN0IHtcbiAgICBjb2xvcjogJGMtZ29vZDtcbiAgfVxuXG4gICYuZ29vZE1vdmUgLnZlcmRpY3Q6OmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZDogJGMtZ29vZDtcbiAgICBjb250ZW50OiAn4pyTJztcbiAgICBmb250LXNpemU6IDEuN2VtO1xuICB9XG5cbiAgJi5pbmFjY3VyYWN5IC52ZXJkaWN0IHtcbiAgICBjb2xvcjogJGMtYnJhZztcbiAgfVxuXG4gICYuaW5hY2N1cmFjeSAudmVyZGljdDo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1icmFnO1xuICAgIGNvbnRlbnQ6ICc/JztcbiAgfVxuXG4gICYubWlzdGFrZSAudmVyZGljdCxcbiAgJi5ibHVuZGVyIC52ZXJkaWN0IHtcbiAgICBjb2xvcjogJGMtYmFkO1xuICB9XG5cbiAgJi5taXN0YWtlIC52ZXJkaWN0OjpiZWZvcmUsXG4gICYuYmx1bmRlciAudmVyZGljdDo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iYWQ7XG4gICAgY29udGVudDogJ+Kclyc7XG4gIH1cblxuICAuY29tbWVudCBtb3ZlIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICBjb2xvcjogJGMtbGluaztcbiAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICB9XG59XG4iLCIkYy1mb3JrOiAkYy1wcmltYXJ5O1xuXG4uYW5hbHlzZV9fZm9yayB7XG4gIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gIGZsZXg6IDAgMCBhdXRvO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgbW92ZSB7XG4gICAgQGV4dGVuZCAlc2FuLCAlZmxleC1jZW50ZXI7XG5cbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtZm9yaywgJGMtYmctYm94LCAyNSUpO1xuICAgIGNvbG9yOiAkYy1mb250LWNsZWFyO1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBhZGRpbmc6IDAuMmVtIDFlbTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtYmctYm94O1xuXG4gICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkYy1iZy1ib3g7XG4gICAgfVxuICB9XG5cbiAgbW92ZTpob3ZlcixcbiAgJjpub3QoOmhvdmVyKSBtb3ZlLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtZm9yaywgJGMtYmctYm94LCAxMDAlKTtcbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxuXG4gIGdseXBoIHtcbiAgICBAZXh0ZW5kICViYXNlLWZvbnQ7XG5cbiAgICBtYXJnaW4tbGVmdDogMnB4O1xuICB9XG5cbiAgZXZhbCB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgZmxleDogMyAwIGF1dG87XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZm9udC1zaXplOiAwLjllbTtcbiAgfVxufVxuIiwiLmFuYWx5c2Uge1xuICAmX19zaWRlIHtcbiAgICBhbGlnbi1zZWxmOiBzdGFydDtcblxuICAgIC5iYWNrLXRvLWdhbWUge1xuICAgICAgbWFyZ2luLXRvcDogMmVtO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wzKSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDEwdmg7XG4gICAgICB9XG5cbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgLmJ1dHRvbiB7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgICAuYW5hbHlzZV9fd2lraSB7XG4gICAgICBtYXJnaW4tdG9wOiAydmg7XG4gICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDMpIHtcbiAgICAgICAgZmxleDogMSAxIDA7XG4gICAgICAgIHBhZGRpbmc6IDAuNWVtIDFlbSAwIDA7XG4gICAgICB9XG4gICAgfVxuICB9XG4gICYtLXdpa2kgLmFuYWx5c2VfX3NpZGUge1xuICAgIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuICAgIGFsaWduLXNlbGY6IGF1dG87XG4gIH1cbiAgJl9fd2lraSB7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBwIHtcbiAgICAgIHRleHQtYWxpZ246IGp1c3RpZnk7XG4gICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIH1cbiAgICBoMSxcbiAgICBoMiB7XG4gICAgICBAaW5jbHVkZSBmbHVpZC1zaXplKCdmb250LXNpemUnLCAxN3B4LCAyM3B4KTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgfVxuICAgIGgzIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuN3JlbTtcbiAgICB9XG4gIH1cbn1cbiIsIiNhbmFseXNlLWNtIHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cywgJXBvcHVwLXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogbm9uZTtcbiAgei1pbmRleDogeignY29udGV4dC1tZW51Jyk7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgJi52aXNpYmxlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIC50aXRsZSB7XG4gICAgQGV4dGVuZCAlc2FuLCAlbWV0YWw7XG5cbiAgICBwYWRkaW5nOiAwLjRlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIGEge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICAgIGNvbG9yOiAkYy1mb250O1xuICAgIHBhZGRpbmc6IDAuNWVtIDAuNmVtIDAuNWVtIDAuM2VtO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHdpZHRoOiAyZW07XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtYWNjZW50LCAkYy1iZy1ib3gsIDEwJSk7XG4gICAgfVxuICB9XG59XG4iLCJAaW1wb3J0ICcuLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9tYXRlcmlhbCc7XG5cbiRjbG9jay1oZWlnaHQ6IDIwcHg7XG5cbi5hbmFseXNlX19wbGF5ZXJfc3RyaXAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuXG4gICYudG9wIHtcbiAgICB0b3A6ICN7LSRjbG9jay1oZWlnaHR9O1xuXG4gICAgLmlzM2QgJiB7XG4gICAgICB0b3A6ICN7LSRjbG9jay1oZWlnaHQgLSAzNXB4fTtcbiAgICB9XG4gIH1cblxuICAmLmJvdHRvbSB7XG4gICAgdG9wOiB2YXIoLS1jZy1oZWlnaHQsIDEwMCUpO1xuICAgIHotaW5kZXg6IDE7IC8vIG92ZXIgdGhlIGJvYXJkIGNvb3Jkc1xuXG4gICAgLmlzM2QgJiB7XG4gICAgICB0b3A6IGNhbGModmFyKC0tY2ctaGVpZ2h0LCAxMDAlKSArIDE1cHgpO1xuICAgIH1cbiAgfVxuXG4gIC8qIFdoZXJlIHRvIHB1dCB0aGVtIGluIGNvbDEgbGF5b3V0PyBJdCBtb3ZlcyB0aGUgZW50aXJlIGJvYXJkIGFuZCBjb250cm9scyBkb3duIGZvciBsaXR0bGUgYmVuZWZpdCAqL1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4uYW5hbHlzZV9fY2xvY2sge1xuICBAZXh0ZW5kICVtZXRhbCwgJWJveC1zaGFkb3c7XG5cbiAgcGFkZGluZzogMCAwLjVlbTtcbiAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gIGhlaWdodDogJGNsb2NrLWhlaWdodDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAmLnRvcCB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cy10b3A7XG5cbiAgICAuaXMzZCAmIHtcbiAgICAgIEBleHRlbmQgJWJveC1yYWRpdXM7XG4gICAgfVxuICB9XG5cbiAgJi5ib3R0b20ge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMtYm90dG9tO1xuICB9XG5cbiAgJi5hY3RpdmUge1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDMwJSk7XG4gIH1cblxuICB0ZW50aHMge1xuICAgIGZvbnQtc2l6ZTogODAlO1xuICB9XG59XG5cbi5tYXRlcmlhbCB7XG4gIHBhZGRpbmctcmlnaHQ6IDFweDtcblxuICBtcGllY2Uge1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcblxuICAgICYucGF3biB7XG4gICAgICBtYXJnaW4tbGVmdDogLTEwcHg7XG4gICAgfVxuICB9XG4gIHNjb3JlIHtcbiAgICBtYXJnaW4tdG9wOiAtMnB4O1xuICB9XG59XG5cbi5tYXRlcmlhbC10b3Age1xuICBtYXJnaW4tdG9wOiAtMXB4O1xufVxuXG4ubWF0ZXJpYWwtYm90dG9tIHtcbiAgbWFyZ2luLXRvcDogMXB4O1xufVxuIiwiLm1hdGVyaWFsIHtcbiAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gIGRpdiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICB9XG5cbiAgbXBpZWNlIHtcbiAgICBtYXJnaW4tbGVmdDogLTEwcHg7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAmLnBhd24ge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL3BpZWNlL21vbm8vUC5zdmcpO1xuICAgIH1cblxuICAgICYuYmlzaG9wIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9waWVjZS9tb25vL0Iuc3ZnKTtcbiAgICB9XG5cbiAgICAmLmtuaWdodCB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vcGllY2UvbW9uby9OLnN2Zyk7XG4gICAgfVxuXG4gICAgJi5yb29rIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9waWVjZS9tb25vL1Iuc3ZnKTtcbiAgICB9XG5cbiAgICAmLnF1ZWVuIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9waWVjZS9tb25vL1Euc3ZnKTtcbiAgICB9XG5cbiAgICAmLmtpbmcge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL3BpZWNlL21vbm8vSy5zdmcpO1xuICAgIH1cblxuICAgIEBpZiAkdGhlbWUgPT0gJ3RyYW5zcCcge1xuICAgICAgZmlsdGVyOiBicmlnaHRuZXNzKDEuMykgZHJvcC1zaGFkb3coMCAxcHggMXB4ICMwMDApO1xuICAgIH1cbiAgfVxuXG4gIHNjb3JlIHtcbiAgICBmb250LWZhbWlseTogJ1JvYm90byc7XG4gIH1cbn1cbiIsIi8vIE1vdmUgb2YgdGhlIFdlZWsgbm9taW5hdGlvbiBvdmVybGF5XG4vLyBSZW5kZXJlZCBhcyBwb3NpdGlvbjphYnNvbHV0ZSBpbnNpZGUgPGJvZHk+LCBwb3NpdGlvbmVkIGp1c3QgYmVsb3cgdGhlIGJvYXJkLlxuLy8gU2Nyb2xscyB3aXRoIHRoZSBtYWluIHBhZ2Ugc2Nyb2xsYmFyIOKAlCBubyBpbnRlcm5hbCBzY3JvbGxiYXIgbmVlZGVkLlxuLy8gei1pbmRleCAxMDAxIGtlZXBzIGl0IGFib3ZlIHRoZSBzcGlubmluZyBjb2hlbmNvaW4gZ2lmICh6LWluZGV4IDk5OSkuXG5cbi5tb2Z3LW5vbS1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlOyAvLyBzZXQgYnkgSlM7IHNjcm9sbHMgd2l0aCBwYWdlXG4gIHotaW5kZXg6IDEwMDE7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gIGJvcmRlci10b3A6IDNweCBzb2xpZCAkYy1hY2NlbnQ7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjE4KTtcblxuICAvLyDilIDilIAgSGVhZGVyIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAmX19oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAwLjU1cmVtIDFyZW07XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gICAgZ2FwOiAwLjVyZW07XG5cbiAgICAubW9mdy1zYW4ge1xuICAgICAgQGV4dGVuZCAlY2hlc3MtZm9udDtcbiAgICAgIGNvbG9yOiAkYy1hY2NlbnQ7XG4gICAgfVxuICB9XG5cbiAgJl9fY2xvc2Uge1xuICAgIEBleHRlbmQgJWJ1dHRvbi1ub25lO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgcGFkZGluZzogMCAwLjJyZW07XG4gICAgJjpob3ZlciB7IGNvbG9yOiAkYy1mb250OyB9XG4gIH1cblxuICAvLyDilIDilIAgQm9keSAobm8gc2Nyb2xsIOKAlCBwYWdlIGhhbmRsZXMgaXQpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAmX19ib2R5IHtcbiAgICAvLyBwbGFpbiBibG9jazsgY29udGVudCBleHBhbmRzIG5hdHVyYWxseVxuICB9XG5cbiAgLy8g4pSA4pSAIFNlY3Rpb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAmX19zZWN0aW9uIHtcbiAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICB9XG5cbiAgLy8g4pSA4pSAIEFjdGlvbnMgYmFyIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAmX19hY3Rpb25zIHtcbiAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMC41cmVtO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcbiAgfVxuXG4gIC8vIOKUgOKUgCBMYWJlbHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICZfX2xhYmVsIHtcbiAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgIG1hcmdpbi1ib3R0b206IDAuM3JlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gIH1cblxuICAmX19vcHRpb25hbCB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgfVxuXG4gIC8vIOKUgOKUgCBUYWcgZ3JpZCAoZmxhdCBjaGVja2JveGVzKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgJl9fdGFnLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMTYwcHgsIDFmcikpO1xuICAgIGdhcDogMC4ycmVtIDAuNXJlbTtcbiAgfVxuXG4gICZfX3RhZy1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjNyZW07XG4gICAgZm9udC1zaXplOiAwLjg4cmVtO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiAwLjEycmVtIDA7XG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgJjpob3ZlciB7IGNvbG9yOiAkYy1hY2NlbnQ7IH1cbiAgICAmOmZpcnN0LWNoaWxkIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cbiAgfVxuXG4gICZfX3RhZy1jYiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGFjY2VudC1jb2xvcjogJGMtYWNjZW50O1xuICAgIHdpZHRoOiAxNXB4O1xuICAgIGhlaWdodDogMTVweDtcbiAgfVxuXG4gIC8vIOKUgOKUgCBDb250aW51YXRpb24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICZfX2NvbnQtcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC4zcmVtO1xuICAgIG1pbi1oZWlnaHQ6IDEuOHJlbTtcbiAgfVxuXG4gICZfX2NvbnQtY2hpcCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuMnJlbTtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtYWNjZW50LCAkYy1iZy1ib3gsIDE0JSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgbWl4KCRjLWFjY2VudCwgJGMtYm9yZGVyLCA0MCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBwYWRkaW5nOiAwLjEycmVtIDAuM3JlbTtcbiAgICBmb250LXNpemU6IDAuODhyZW07XG5cbiAgICAubW9mdy1jb250LXNhbiB7IEBleHRlbmQgJWNoZXNzLWZvbnQ7IH1cbiAgfVxuXG4gICZfX2NvbnQtcmVtb3ZlIHtcbiAgICBAZXh0ZW5kICVidXR0b24tbm9uZTtcbiAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiAwIDAuMXJlbTtcbiAgICAmOmhvdmVyIHsgY29sb3I6ICRjLWJhZDsgfVxuICB9XG5cbiAgJl9fY29udC1hcnJvdyB7IGNvbG9yOiAkYy1mb250LWRpbTsgZm9udC1zaXplOiAwLjc1cmVtOyB9XG5cbiAgJl9fY29udC1oaW50IHtcbiAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBtYXJnaW4tbGVmdDogMC4ycmVtO1xuICB9XG5cbiAgJl9fY29udC1lbXB0eSB7XG4gICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIH1cblxuICAvLyDilIDilIAgTm90ZSB0ZXh0YXJlYSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgJl9fbm90ZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBwYWRkaW5nOiAwLjM1cmVtIDAuNXJlbTtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1pbnB1dDtcbiAgICBib3JkZXI6ICRib3JkZXI7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGNvbG9yOiAkYy1mb250O1xuICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgICY6Zm9jdXMgeyBvdXRsaW5lOiBub25lOyBib3JkZXItY29sb3I6ICRjLWFjY2VudDsgfVxuICB9XG5cbiAgLy8g4pSA4pSAIEJ1dHRvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICZfX2J0biB7XG4gICAgQGV4dGVuZCAlYnV0dG9uLW5vbmU7XG4gICAgcGFkZGluZzogMC4zOHJlbSAwLjg1cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xMnMsIG9wYWNpdHkgMC4xMnM7XG4gICAgJjpkaXNhYmxlZCB7IG9wYWNpdHk6IDAuNTsgY3Vyc29yOiBub3QtYWxsb3dlZDsgfVxuXG4gICAgJi0tY2FuY2VsIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLWJvcmRlcjtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7IGJhY2tncm91bmQ6ICRjLWJnLXplYnJhOyB9XG4gICAgfVxuXG4gICAgJi0tZHJhZnQge1xuICAgICAgY29sb3I6ICNjMDhhMGY7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAjYzA4YTBmO1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHsgYmFja2dyb3VuZDogbWl4KCNjMDhhMGYsICRjLWJnLWJveCwgMTIlKTsgfVxuICAgIH1cblxuICAgICYtLXN1Ym1pdCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1hY2NlbnQ7XG4gICAgICBjb2xvcjogJGMtYWNjZW50LW92ZXI7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAkYy1hY2NlbnQ7XG4gICAgICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHsgZmlsdGVyOiBicmlnaHRuZXNzKDEuMSk7IH1cbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FFRUEsWUFBWTtBQWtCWiw2REFBNkQ7QUFjN0QsbUJBQW1CO0FBTW5CLGtDQUFrQztBQUVsQyxzQkFBc0I7QUFNdEIsb0NBQW9DO0FBRXBDLG9CQUFvQjtBQU1wQixpQ0FBaUM7QUFFakMsZ0JBQWdCO0FBSWhCLCtCQUErQjtBQUUvQixnQkFBZ0I7QUFLaEIsK0JBQStCO0FBRS9CLGlCQUFpQjtBQUlqQixrQkFBa0I7QUFJbEIsY0FBYztBQUlkLGdCQUFnQjtBQUloQixpQkFBaUI7QUFJakIsK0JBQStCO0FBOEIvQixhQUFhO0FBTWIsYUFBYTtBRDVHYiw2REFBNkQ7QUFjN0QsbUJBQW1CO0FBS25CLHNCQUFzQjtBQUt0QixnQkFBZ0I7QUFHaEIsaUJBQWlCO0FBR2pCLGlCQUFpQjtBQUlqQixrQkFBa0I7QUFJbEIsY0FBYztBS3pEZCx3Q0FBd0M7QXNCQXhDLFlBQVk7QUFnQlosYUFBYTtBQVNiLGtCQUFrQjtBQUtsQixrQkFBa0I7QUFLbEIsYUFBYTtBRW5DYixzREFBc0Q7QUFPdEQsdUVBQXVFO0FFaUJyRSxBQXBCRixhQW9CZSxDZ0JsQmYsT0FBTyxDQVdMLElBQUksRUFYTixPQUFPLENoQmtCTCxhQUFhLENnQlBiLElBQUksRWhCT0osYUFBYSxDb0J4QmYsT0FBTyxDQUtMLEdBQUcsQ0EyQkQsSUFBSSxFQWhDUixPQUFPLENBS0ws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 */
