@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 */
/* Fancy: pink */
/* text over brag background */
/* Borders */
/* Shadows */
/* Custom */
/* Common imports for all CSS modules */
/* Widths */
/* Heights */
/* Orientations */
/* Capabilities */
/* Aliases */
/* Uniboard: keep the same page layout accross pages */
/* when the width is appropriate for col1, but landscape prevents it */
/* atm only chrome supports min-content, max-content */
.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';
}

.tview2 eval, .tview2 comment .by, .ceval .engine .cloud, .analyse__fork eval {
  font-family: 'Roboto';
}

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

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

.crosstable__users, .crosstable__score, .crosstable povs:hover, .cmn-toggle + label::after, .mselect__label, #analyse-cm .title {
  background: linear-gradient(to bottom, whitesmoke 0%, #ededed 100%);
  text-shadow: 0 1px 0 white;
}

.cmn-toggle:hover + label::after, .mselect__label:hover {
  background: linear-gradient(to bottom, #fafafa 0%, #f2f2f2 100%);
  text-shadow: 0 1px 0 white;
}

.ceval {
  background: linear-gradient(to bottom, whitesmoke 0%, #ededed 100%);
}

#trainer group.radio input:checked + label {
  background: #0456bc;
}

#modal-wrap, .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 {
  background: none;
  border: none;
  outline: none;
  color: #4d4d4d;
}

.cmn-toggle:focus + label::before, .cmn-toggle:hover + label::before {
  box-shadow: 0 0 12px #787878;
}

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

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

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

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

.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;
}

#promotion-choice {
  position: absolute;
  width: 100%;
  height: 100%;
}

.tview2-column {
  display: flex;
  flex-flow: row wrap;
}

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

#analyse-cm a, .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 {
  /* 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 > *, .training-box {
  display: flex;
  flex-flow: column;
}

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

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

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

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

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

.mselect__label, .crosstable, .analyse__tools, #modal-wrap .close:hover {
  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: .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;
}

:root {
  --cg-coord-color-white: #fff;
  --cg-coord-color-black: #fff;
  --cg-coord-shadow: 0 1px 2px #000;
}

coords {
  text-shadow: var(--cg-coord-shadow);
}

.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-coord-color-white);
}

.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-coord-color-black);
}

/* 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 coord {
    color: #5e5e5e !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: .5rem;
  background: white;
}

body ::-webkit-scrollbar-thumb {
  background: #dbdbdb;
}

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

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;
  }
  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(189, 17, 31, 0.5);
  }
  .resizing cg-resize {
    border-radius: 50%;
    background: rgba(98, 153, 36, 0.5);
  }
}

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

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

#modal-wrap > div {
  overflow: auto;
}

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

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

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

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

.color-icon.white::before {
  content: "K";
}

.color-icon.black::before {
  content: "J";
}

.color-icon.random::before {
  content: "l";
}

.crosstable__users {
  flex: 1 1 auto;
}

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

.crosstable fill,
.crosstable povs {
  background: white;
  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: #f2cfd2;
}

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

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

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

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

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

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

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

.crosstable .sep {
  border-left: 1px solid #d9d9d9;
  margin-left: .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: #ed1c24;
    color: #fff;
  }
}

.fbt.active {
  background: #bd111f !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;
}

.cmn-toggle + label {
  padding: 1px;
  width: 40px;
  height: 24px;
  background-color: #d9d9d9;
  border-radius: 24px;
}

.cmn-toggle + label::before,
.cmn-toggle + label::after {
  display: block;
  position: absolute;
  top: 1px;
  left: 1px;
  bottom: 1px;
  content: "";
}

.cmn-toggle + label::before {
  right: 1px;
  background-color: #cc3333;
  border-radius: 24px;
}

.cmn-toggle--subtle + label::before {
  background-color: #bd111f;
}

.cmn-toggle:hover + label::before {
  transition: background 150ms;
}

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

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

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

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

input[type=range] {
  -webkit-appearance: none;
  background: none;
  border: 0;
}

input[type=range]:focus {
  outline: none;
}

input[type=range]::-webkit-slider-runnable-track {
  width: 100%;
  height: 1em;
  cursor: pointer;
  background: #dbdbdb;
  border-radius: .5em;
}

input[type=range]::-webkit-slider-thumb {
  background: linear-gradient(to bottom, whitesmoke 0%, #ededed 100%);
  text-shadow: 0 1px 0 white;
  border: 1px solid #b3b3b3;
  height: 1em;
  width: 1.5em;
  border-radius: 12px;
  background: white;
  cursor: pointer;
  -webkit-appearance: none;
  margin-top: -0.3px;
}

input[type=range]::-moz-range-track {
  width: 100%;
  height: 1em;
  cursor: pointer;
  background: #dbdbdb;
  border-radius: .5em;
}

input[type=range]::-moz-range-thumb {
  background: linear-gradient(to bottom, whitesmoke 0%, #ededed 100%);
  text-shadow: 0 1px 0 white;
  border: 1px solid #b3b3b3;
  height: 1em;
  width: 1.5em;
  border-radius: 12px;
  background: white;
  cursor: pointer;
}

input[type=range]::-ms-track {
  width: 100%;
  height: 1em;
  cursor: pointer;
  background: #dbdbdb;
  border-radius: .5em;
}

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

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

input[type=range]::-ms-thumb {
  background: linear-gradient(to bottom, whitesmoke 0%, #ededed 100%);
  text-shadow: 0 1px 0 white;
  border: 1px solid #b3b3b3;
  height: 1em;
  width: 1.5em;
  border-radius: 12px;
  background: white;
  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;
}

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

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

.tview2 move.parent {
  color: #bd111f;
}

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

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

.tview2 move.active {
  font-weight: bold;
  background: #f2cfd2;
}

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

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

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

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

.tview2 move.context-menu {
  background: #bd111f;
  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: .2em;
  line-height: 111.11%;
}

.tview2 line move {
  color: #4d4d4d;
}

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

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

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

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

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

.tview2-column > index {
  flex: 0 0 13%;
  display: flex;
  justify-content: center;
  border-right: 1px solid #d9d9d9;
  background: #f7f6f5;
  line-height: 2.07em;
  color: #b3b3b3;
}

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

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

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

.tview2-inline comment {
  vertical-align: 45%;
  word-wrap: break-word;
  margin: 0 .2em 0 .1em;
  font-size: .9em;
}

.tview2 comment .by {
  display: inline-block;
  vertical-align: -.3em;
  font-size: .9em;
  opacity: 0.8;
  margin-right: .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: #787878;
  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: .8em;
  border-left: 2px solid #d9d9d9;
}

.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 #d9d9d9;
  position: absolute;
  margin-left: -11px;
  width: 9px;
  height: 6px;
}

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

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

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

.tview2 inline::before,
.tview2 inline::after {
  vertical-align: .4em;
  opacity: 0.7;
  font-size: .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: .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 .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: #787878;
}

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

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

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

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

.ceval .wasmx {
  margin-left: 5px;
  text-transform: uppercase;
  color: #629924;
}

.ceval .asmjs, .ceval .wasm {
  margin-left: 5px;
  text-transform: uppercase;
}

.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: #bd111f;
  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: #787878;
  font-size: .9em;
  padding-right: .5em;
  overflow: hidden;
}

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

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

.pv_box {
  background: white;
  font-size: 13px;
}

.pv_box .pv {
  height: 2em;
  line-height: 2em;
  border-top: 1px solid #d9d9d9;
}

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

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

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

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: #fff;
  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 #eee;
  opacity: 0.4;
}

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

.eval-gauge .black {
  width: 100%;
  height: 50%;
  background: #888;
  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: .7em;
}

#promotion-choice {
  background: rgba(255, 255, 255, 0.7);
  z-index: 205;
}

#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 #bd111f;
  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: .3rem .3rem .3rem 1rem;
  cursor: pointer;
}

.mselect__label::after {
  content: 'u';
  font-size: 70%;
  color: #bd111f;
}

.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: white;
  transform: scale(1, 0);
  transform-origin: top;
  transition: transform 150ms;
}

.mselect__list .current {
  background: #f7f6f5;
}

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

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

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

.mselect__list > *::before {
  margin-right: .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 #d9d9d9;
}

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

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)) - 3rem);
}

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

.analyse {
  grid-area: main;
  display: grid;
  --meta-height: auto;
  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,
.analyse .intro {
  grid-area: 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;
}

@supports (height: max-content) {
  .analyse {
    --meta-height: max-content;
  }
}

@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: 2vmin;
  }
  .analyse .eval-gauge {
    display: block;
  }
}

@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) fit-content(0) 2.5em auto;
    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 {
  max-height: 100vh;
  /* magically fixes fit-content on safari 10 */
  background: white;
}

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

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

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

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

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

.analyse__moves .result {
  border-top: 1px solid #d9d9d9;
  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;
}

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

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

.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 #d9d9d9;
  content: '';
  display: table-cell;
  position: relative;
  top: .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: #4d4d4d;
  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 {
  display: flex;
}

.action-menu .autoplay a {
  color: #787878;
  font-size: .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 {
  display: inline-block;
  padding: 0 8px;
}

.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 1em;
  height: 1.6em;
  width: 100%;
}

.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-box {
  position: relative;
  flex: 2.5 1 0px;
  white-space: nowrap;
  transition: all 150ms;
  transition-delay: 0.3s;
  overflow-y: scroll;
  font-size: .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 span {
  display: block;
  margin-right: 1.9em;
  overflow: hidden;
  text-overflow: ellipsis;
  user-select: text;
}

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

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

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

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

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

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

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

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

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

.explorer-box .bar span {
  text-align: center;
  display: inline-block;
  overflow: hidden;
  vertical-align: middle;
  border: 0 solid #d9d9d9;
  border-width: 1px 0;
  height: 16px;
  line-height: 14px;
  font-size: .9em;
}

.explorer-box .white {
  background: #fff;
  box-shadow: 0 -5px 7px rgba(0, 0, 0, 0.1) inset;
}

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

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

.explorer-box .black {
  background: #555;
  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 span {
  display: block;
}

.explorer-box .games result {
  display: block;
  text-align: center;
  padding: 3px 5px;
  border-radius: 3px;
  font-size: .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: .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 {
  text-align: center;
  font-style: italic;
  flex: 1 1 100%;
  display: flex;
  flex-flow: column;
  justify-content: center;
}

.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;
}

.explorer-box .message.masters i {
  font-size: 40px;
  margin: 10px 0;
}

.explorer-box .config section {
  margin: 0.4em 2vmin 0 2vmin;
}

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

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

.explorer-box .config .choices {
  display: flex;
}

.explorer-box .config .choices span {
  flex-grow: 1;
  padding: 5px 0;
  text-align: center;
  cursor: pointer;
  transition: all 150ms;
  border: 1px solid #d9d9d9;
  border-width: 1px 0 1px 1px;
  text-transform: capitalize;
}

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

.explorer-box .config .choices span:hover {
  background: #fff;
}

.explorer-box .config .choices span.selected {
  background: #629924;
  color: #fff;
  text-shadow: 1px 0 0 rgba(0, 0, 0, 0.5);
  font-weight: bold;
  box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2) inset;
}

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

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

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

.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: #f7f6f5;
  border-top: 1px solid 1px solid #d9d9d9;
  white-space: nowrap;
  line-height: 30px;
}

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

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

.practice-box.inaccuracy .title,
.practice-box.inaccuracy .progress div {
  background: #d59020;
  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: #d59020;
}

.practice-box.inaccuracy .verdict::before {
  background: #d59020;
  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: #bd111f;
  transition: 0.3s;
}

.analyse__fork {
  flex: 0 0 auto;
}

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

.analyse__fork move {
  background: #efc4c7;
  color: #1f1f1f;
  flex: 0 0 50%;
  cursor: pointer;
  padding: .2em 1em;
  border-bottom: 1px solid white;
}

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

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

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

.analyse__fork eval {
  flex: 3 0 auto;
  text-align: right;
  font-size: .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-cm {
  background: white;
  position: absolute;
  display: none;
  z-index: 107;
  cursor: default;
}

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

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

#analyse-cm a {
  color: #4d4d4d;
  padding: .5em .6em .5em .3em;
}

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

#analyse-cm a:hover {
  background: #f8e7e9;
}

.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: #787878;
}

.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHlzZS9jc3MvYnVpbGQvYW5hbHlzZS5mcmVlLmxpZ2h0LmNzcyIsInNvdXJjZXMiOlsiYW5hbHlzZS9jc3MvYnVpbGQvYW5hbHlzZS5mcmVlLmxpZ2h0LnNjc3MiLCJjb21tb24vY3NzL3RoZW1lL19saWdodC5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGVmYXVsdC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZnVuY3Rpb25zLnNjc3MiLCJhbmFseXNlL2Nzcy9idWlsZC9fYW5hbHlzZS5mcmVlLnNjc3MiLCJhbmFseXNlL2Nzcy9idWlsZC9fYW5hbHlzZS5iYXNlLnNjc3MiLCJjb21tb24vY3NzL19wbHVnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2FsbC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fei1pbmRleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWVkaWEtcXVlcmllcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L191bmlib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWl4aW5zLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19leHRlbmRzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbGV4LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19ib3guc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2ZsdWlkLXNpemUuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19jb29yZHMuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19jb29yZHMtY29sb3JzLnNjc3MiLCJjb21tb24vY3NzL2xheW91dC9fdW5pYm9hcmQuc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fc2Nyb2xsYmFyLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fYm9hcmQtcmVzaXplLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fbW9kYWwuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19jb250aW51ZS13aXRoLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fY29sb3ItaWNvbi5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2Nyb3NzdGFibGUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19mYnQuc2NzcyIsImNvbW1vbi9jc3MvZm9ybS9fY21uLXRvZ2dsZS5zY3NzIiwiY29tbW9uL2Nzcy9mb3JtL19yYW5nZS5zY3NzIiwidHJlZS9jc3MvX3RyZWUuc2NzcyIsInRyZWUvY3NzL19leHRlbmQuc2NzcyIsImNldmFsL2Nzcy9fY2V2YWwuc2NzcyIsImNldmFsL2Nzcy9fY3RybC5zY3NzIiwiY2V2YWwvY3NzL19wdi5zY3NzIiwiY2V2YWwvY3NzL19ldmFsLWdhdWdlLnNjc3MiLCJjaGVzcy9jc3MvX2NvbnRyb2wuc2NzcyIsImNoZXNzL2Nzcy9fcHJvbW90aW9uLnNjc3MiLCJjaGVzcy9jc3MvX3ZhcmlhbnQtc3R5bGUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19tc2VsZWN0LnNjc3MiLCJhbmFseXNlL2Nzcy9fYW5hbHlzZS5mcmVlLnNjc3MiLCJhbmFseXNlL2Nzcy9fYW5hbHlzZS5iYXNlLnNjc3MiLCJhbmFseXNlL2Nzcy9fdmFyaWFibGVzLnNjc3MiLCJhbmFseXNlL2Nzcy9fbGF5b3V0LnNjc3MiLCJhbmFseXNlL2Nzcy9fdG9vbHMuc2NzcyIsImFuYWx5c2UvY3NzL19hY3Rpb24tbWVudS5zY3NzIiwiYW5hbHlzZS9jc3MvX2V4cGxvcmVyLnNjc3MiLCJhbmFseXNlL2Nzcy9fdHJhaW5pbmcuc2NzcyIsImFuYWx5c2UvY3NzL19wcmFjdGljZS5zY3NzIiwiYW5hbHlzZS9jc3MvX2Zvcmsuc2NzcyIsImFuYWx5c2UvY3NzL19zaWRlLnNjc3MiLCJhbmFseXNlL2Nzcy9fY29udGV4dC1tZW51LnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvdGhlbWUvbGlnaHRcIjtcbkBpbXBvcnQgXCJhbmFseXNlLmZyZWVcIjtcbiIsIkBpbXBvcnQgXCJkZWZhdWx0XCI7XG5cbiR0aGVtZTogXCJsaWdodFwiO1xuJHRoZW1lLWxpZ2h0OiB0cnVlO1xuJHRoZW1lLWRhcms6IGZhbHNlO1xuXG4kYy1iZy1wYWdlOiBoc2woMCwgMCUsIDEwMCUpO1xuJGMtYmctcGFnZS1pbWc6IHVybCguLi9pbWFnZXMvbW9zY293LWNoZXNzX3BhdHRlcm5fbGlnaHRfYW5nbGVkLTAxLnBuZyk7XG4kYy1iZy1wYWdlLWJzOiAxMCU7XG5cbkBtaXhpbiBtZXRhbC1iZyB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgwLCAwLCA5NikgMCUsIGhzbCgwLCAwLCA5MykgMTAwJSk7XG59XG5cbkBtaXhpbiBtZXRhbCB7XG4gIEBpbmNsdWRlIG1ldGFsLWJnO1xuXG4gIHRleHQtc2hhZG93OiAkdGV4dC1zaGFkb3c7XG59XG5cbkBtaXhpbiBtZXRhbC1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgwLCAwLCA5OCkgMCUsIGhzbCgwLCAwLCA5NSkgMTAwJSk7XG4gIHRleHQtc2hhZG93OiAkdGV4dC1zaGFkb3c7XG59XG5cbkBtaXhpbiBwYWdlLW1ldGFsIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgbWl4KCRjLWxpbmssIGhzbCgwLCAwJSwgMTAwJSksIDIwJSkgMCUsIG1peCgkYy1saW5rLCBoc2woMCwgMCUsIDk0JSksIDIwJSkgMTAwJSk7XG4gIHRleHQtc2hhZG93OiAkdGV4dC1zaGFkb3c7XG59XG5cbkBtaXhpbiBwYWdlLW1ldGFsLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgbWl4KCRjLWxpbmssICNmZmYsIDI1JSkgMCUsIG1peCgkYy1saW5rLCBjLWxpZ2h0KCRjLWJnLXBhZ2UsIDkwJSksIDI1JSkgMTAwJSk7XG4gIHRleHQtc2hhZG93OiAkdGV4dC1zaGFkb3c7XG59XG5cbkBtaXhpbiB0aGVtZS1zdHlsZSB7fVxuIiwiQGltcG9ydCBcIi4uL2Fic3RyYWN0L2Z1bmN0aW9uc1wiO1xuXG4vKiBDb2xvcnMgKi9cblxuQGZ1bmN0aW9uIGMtZGltbWVyKCRjb2xvciwgJHdlaWdodDogMTclKSB7XG4gIEByZXR1cm4gbWl4KCNmZmYsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbkBmdW5jdGlvbiBjLWNsZWFyZXIoJGNvbG9yLCAkd2VpZ2h0OiAxNyUpIHtcbiAgQHJldHVybiBtaXgoIzAwMCwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuJGMtc2l0ZS1odWU6IDM3O1xuXG4kYy1iZy1wYWdlOiBoc2woJGMtc2l0ZS1odWUsIDEwJSwgOTIlKTtcblxuJGMtYmctcGFnZS1pbWc6IG5vbmU7XG4kYy1iZy1wYWdlLWJzOiBhdXRvO1xuXG4vLyBoc2woMjEwLCAxNyUsIDk1JSlcbiRjLWJnLWhpZ2g6IGhzbCgwLCAwJSwgMTAwJSk7XG4kYy1iZy1sb3c6IGhzbCgwLCAwJSwgODklKTtcblxuLyogZXZlbiByb3dzIGluIGxpc3Qgb3IgdGFibGVzLCBzdWJ0bGUgc2hhZGUgb2YgJGMtYmctaGlnaCAqL1xuJGMtYmctemVicmE6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCA5Ni41JSk7XG4kYy1iZy16ZWJyYTI6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCA5MiUpO1xuXG4kYy1ib2R5LWdyYWRpZW50OiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgODQlKTtcblxuJGMtZm9udDogaHNsKDAsIDAlLCAzMCUpO1xuJGMtZm9udC1kaW06IGMtbGlnaHQoJGMtZm9udCwgNDclKTtcbiRjLWZvbnQtZGltbWVyOiBjLWxpZ2h0KCRjLWZvbnQsIDcwJSk7XG4kYy1mb250LWNsZWFyOiBjLWxpZ2h0KCRjLWZvbnQsIDEyJSk7XG4kYy1mb250LWNsZWFyZXI6IGMtbGlnaHQoJGMtZm9udCwgMCUpO1xuJGMtc2hhZGU6IGMtZGltbWVyKCRjLWZvbnQsIDgwJSk7XG4kYy1mb250LXBhZ2U6IGMtbGlnaHQoJGMtZm9udCwgMzclKTtcblxuLyogUHJpbWFyeTogYmx1ZSAqL1xuJGMtcHJpbWFyeTogI2JkMTExZjtcbiRjLXByaW1hcnktZGltOiBjLWRpbW1lcigkYy1wcmltYXJ5KTtcbiRjLXByaW1hcnktY2xlYXI6IGMtY2xlYXJlcigkYy1wcmltYXJ5KTtcbiRjLXByaW1hcnktb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIHByaW1hcnkgYmFja2dyb3VuZCAqL1xuXG4vKiBTZWNvbmRhcnk6IGdyZWVuICovXG4kYy1zZWNvbmRhcnk6IGhzbCg4OCwgNjIlLCAzNyUpO1xuJGMtc2Vjb25kYXJ5LWRpbTogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5KTtcbiRjLXNlY29uZGFyeS1kaW1tZXI6IGMtZGltbWVyKCRjLXNlY29uZGFyeSwgNDAlKTtcbiRjLXNlY29uZGFyeS1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgc2Vjb25kYXJ5IGJhY2tncm91bmQgKi9cblxuLyogQWNjZW50OiBvcmFuZ2UgKi9cbiRjLWFjY2VudDogI2JkMTExZjtcbiRjLWFjY2VudC1kaW06IGMtZGltbWVyKCRjLWFjY2VudCk7XG4kYy1hY2NlbnQtY2xlYXI6IGMtY2xlYXJlcigkYy1hY2NlbnQpO1xuJGMtYWNjZW50LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBhY2NlbnQgYmFja2dyb3VuZCAqL1xuXG4vKiBCcmFnOiBnb2xkICovXG4kYy1icmFnOiBoc2woMzcsIDc0JSwgNDglKTtcbiRjLWJyYWctb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIGJyYWcgYmFja2dyb3VuZCAqL1xuXG4vKiBFcnJvcjogcmVkICovXG4kYy1yZWQ6IGhzbCgwLCA2MCUsIDUwJSk7XG4kYy1lcnJvcjogJGMtcmVkO1xuJGMtZXJyb3Itb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIGJyYWcgYmFja2dyb3VuZCAqL1xuXG4vKiBHb29kOiBncmVlbiAqL1xuJGMtZ29vZDogJGMtc2Vjb25kYXJ5O1xuJGMtZ29vZC1vdmVyOiAkYy1zZWNvbmRhcnktb3ZlcjtcblxuLyogV2Fybjogb3JhbmdlICovXG4kYy13YXJuOiAkYy1icmFnO1xuJGMtd2Fybi1vdmVyOiAkYy1icmFnLW92ZXI7XG5cbi8qIEJhZDogcmVkICovXG4kYy1iYWQ6ICRjLWVycm9yO1xuJGMtYmFkLW92ZXI6ICRjLWVycm9yLW92ZXI7XG5cbi8qIEZhbmN5OiBwaW5rICovXG4kYy1mYW5jeTogaHNsKDI5NCwgNjElLCA2MiUpO1xuJGMtZmFuY3ktb3Zlcjogd2hpdGU7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuJGMtbGluazogJGMtcHJpbWFyeTtcbiRjLWxpbmstZGltOiAkYy1wcmltYXJ5LWRpbTtcbiRjLWxpbmstY2xlYXI6ICRjLXByaW1hcnktY2xlYXI7XG4kYy1saW5rLWhvdmVyOiBjLWNsZWFyZXIoc2F0dXJhdGUoJGMtcHJpbWFyeSwgMTAwJSksIDM1JSk7XG4kYy1saW5rLW92ZXI6ICRjLXByaW1hcnktb3ZlcjtcblxuJGMtYmctYm94OiAkYy1iZy1oaWdoO1xuJGMtYmctYm94LW9wYXF1ZTogJGMtYmctYm94O1xuJGMtYmctaW5wdXQ6IGMtbGlnaHQoJGMtYmctcGFnZSwgOTglKTtcblxuJGMtYm9yZGVyOiBoc2woMCwgMCUsIDg1JSk7XG4kYy1ib3JkZXItcGFnZTogaHNsKDAsIDAlLCA4MCUpO1xuXG4kYy1wYWdlLW1hc2s6IGhzbGEoMCwgMCwgMCUsIDAuNik7XG5cbiRjLWJnLXBvcHVwOiAkYy1iZy1oaWdoO1xuJGMtcG9wdXA6ICRjLWZvbnQ7XG5cbiRjLWJnLWhlYWRlci1kcm9wZG93bjogJGMtYmctcG9wdXA7XG4kYy1oZWFkZXItZHJvcGRvd246ICRjLXBvcHVwO1xuXG4kYy1mb250LXNoYWRvdzogd2hpdGU7XG4kdGV4dC1zaGFkb3c6IDAgMXB4IDAgJGMtZm9udC1zaGFkb3c7XG5cbiRjLWJvdDogJGMtZmFuY3k7XG5cbiRjLXBhZ2UtaW5wdXQ6ICRjLWJnLWxvdztcblxuLyogQm9yZGVycyAqL1xuXG4kYm9yZGVyLXdpZHRoOiAxcHg7XG4kYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiRib3JkZXI6ICRib3JkZXItd2lkdGggJGJvcmRlci1zdHlsZSAkYy1ib3JkZXI7XG5cbi8qIFNoYWRvd3MgKi9cblxuJGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcblxuLy8gJGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwwLDAsLjE1Nyk7XG5cbi8qIEN1c3RvbSAqL1xuJHdhcm5pbmctaWNvbi1jb2xvcjogaHNsKDQ0LCAxMDAlLCA0NiUpO1xuIiwiQGZ1bmN0aW9uIGMtbGlnaHQoJGNvbG9yLCAkdmFsdWUpIHtcbiAgQHJldHVybiBjaGFuZ2UtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkdmFsdWUpO1xufVxuXG5AZnVuY3Rpb24gaW1nLXVybCgkcGF0aCkge1xuICBAcmV0dXJuIHVybChcIiN7JGltZy1wYXRofS8jeyRwYXRofVwiKTtcbn1cbiIsIkBpbXBvcnQgXCJhbmFseXNlLmJhc2VcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9tc2VsZWN0XCI7XG5cbkBpbXBvcnQgXCIuLi9hbmFseXNlLmZyZWVcIjtcbiIsIkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL3BsdWdpblwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL2Nvb3Jkc1wiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvbGF5b3V0L3VuaWJvYXJkXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9iYXNlL3Njcm9sbGJhclwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2JvYXJkLXJlc2l6ZVwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L21vZGFsXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvY29udGludWUtd2l0aFwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2NvbG9yLWljb25cIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9jcm9zc3RhYmxlXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvZmJ0XCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9mb3JtL2Ntbi10b2dnbGVcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2Zvcm0vcmFuZ2VcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi90cmVlL2Nzcy90cmVlXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY2V2YWwvY3NzL2NldmFsXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY2V2YWwvY3NzL2V2YWwtZ2F1Z2VcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jaGVzcy9jc3MvY29udHJvbFwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NoZXNzL2Nzcy9wcm9tb3Rpb25cIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jaGVzcy9jc3MvdmFyaWFudC1zdHlsZVwiO1xuIiwiLyogQ29tbW9uIGltcG9ydHMgZm9yIGFsbCBDU1MgbW9kdWxlcyAqL1xuXG5AaW1wb3J0IFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50XCI7XG5cbkBpbXBvcnQgXCJhYnN0cmFjdC9hbGxcIjtcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJEJyZWFrcG9pbnQtU2V0dGluZ3M6IChcbiAgJ2RlZmF1bHQgbWVkaWEnOiBhbGwsXG4gICdkZWZhdWx0IGZlYXR1cmUnOiBtaW4td2lkdGgsXG4gICdkZWZhdWx0IHBhaXInOiB3aWR0aCxcblxuICAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnOiBmYWxzZSxcbiAgJ3RvIGVtcyc6IGZhbHNlLFxuICAndHJhbnNmb3JtIHJlc29sdXRpb25zJzogdHJ1ZSxcblxuICAnbm8gcXVlcmllcyc6IGZhbHNlLFxuICAnbm8gcXVlcnkgZmFsbGJhY2tzJzogZmFsc2UsXG5cbiAgJ2Jhc2UgZm9udCBzaXplJzogMTZweCxcblxuICAnbGVnYWN5IHN5bnRheCc6IGZhbHNlXG4pO1xuXG4kYnJlYWtwb2ludDogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9zZXR0aW5nc1wiO1xuQGltcG9ydCAnYnJlYWtwb2ludC9jb250ZXh0JztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvaGVscGVycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L3BhcnNlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9uby1xdWVyeSc7XG5cbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcmVzcG9uZC10byc7XG5cbkBpbXBvcnQgXCJicmVha3BvaW50L2xlZ2FjeS1zZXR0aW5nc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgbGVnYWN5LXNldHRpbmdzLXdhcm5pbmc7XG5cbiAgLy8gUmVzZXQgY29udGV4dHNcbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG5cbiAgJGJyZWFrcG9pbnQ6IGJyZWFrcG9pbnQoJHF1ZXJ5LCBmYWxzZSk7XG5cbiAgJHF1ZXJ5LXN0cmluZzogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5Jyk7XG4gICRxdWVyeS1mYWxsYmFjazogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2ZhbGxiYWNrJyk7XG5cbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2NvbnRleHQgaG9sZGVyJykgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5IGNvdW50JykgIWdsb2JhbDtcblxuICAvLyBBbGxvdyBmb3IgYW4gYXMtbmVlZGVkIG92ZXJyaWRlIG9yIHVzYWdlIG9mIG5vIHF1ZXJ5IGZhbGxiYWNrLlxuICBAaWYgJG5vLXF1ZXJ5ICE9IGZhbHNlIHtcbiAgICAkcXVlcnktZmFsbGJhY2s6ICRuby1xdWVyeTtcbiAgfVxuXG4gIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gIH1cblxuICAvLyBQcmludCBPdXQgUXVlcnkgU3RyaW5nXG4gIEBpZiBub3QgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQG1lZGlhICN7JHF1ZXJ5LXN0cmluZ30ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSAhPSBmYWxzZSBvciBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpID09IHRydWUge1xuXG4gICAgJHR5cGU6IHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpKTtcbiAgICAkcHJpbnQ6IGZhbHNlO1xuXG4gICAgQGlmICgkdHlwZSA9PSAnYm9vbCcpIHtcbiAgICAgICRwcmludDogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdsaXN0Jykge1xuICAgICAgQGVhY2ggJHdyYXBwZXIgaW4gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSAkd3JhcHBlciB7XG4gICAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV3JpdGUgRmFsbGJhY2tcbiAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkgYW5kICgkcHJpbnQgPT0gdHJ1ZSkge1xuICAgICAgJHR5cGUtZmFsbGJhY2s6IHR5cGUtb2YoJHF1ZXJ5LWZhbGxiYWNrKTtcblxuICAgICAgQGlmICgkdHlwZS1mYWxsYmFjayAhPSAnYm9vbCcpIHtcbiAgICAgICAgI3skcXVlcnktZmFsbGJhY2t9ICYge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xufVxuXG5cbkBtaXhpbiBtcSgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhhcyBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldCgkc2V0dGluZykge1xuICBAaWYgYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnQsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCcmVha3BvaW50LVNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGlmIChzdHItaW5kZXgoJHNldHRpbmcsICctJykgb3Igc3RyLWluZGV4KCRzZXR0aW5nLCAnXycpKSBhbmQgc3RyLWluZGV4KCRzZXR0aW5nLCAnICcpID09IG51bGwge1xuICAgIEB3YXJuIFwiV29yZHMgaW4gQnJlYWtwb2ludCBzZXR0aW5ncyBzaG91bGQgYmUgc2VwYXJhdGVkIGJ5IHNwYWNlcywgbm90IGRhc2hlcyBvciB1bmRlcnNjb3Jlcy4gUGxlYXNlIHJlcGxhY2UgZGFzaGVzIGFuZCB1bmRlcnNjb3JlcyBiZXR3ZWVuIHdvcmRzIHdpdGggc3BhY2VzLiBTZXR0aW5ncyB3aWxsIG5vdCB3b3JrIGFzIGV4cGVjdGVkIHVudGlsIGNoYW5nZWQuXCI7XG4gIH1cbiAgJGJyZWFrcG9pbnQ6IG1hcC1tZXJnZSgkYnJlYWtwb2ludCwgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRicmVha3BvaW50LWNoYW5nZTogYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYmtwdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cbkBtaXhpbiBia3B0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICBAaWYgbGVuZ3RoKCRzZXR0aW5ncykgPT0gMSB7XG4gICAgJHNldHRpbmdzOiBudGgoJHNldHRpbmdzLCAxKTtcbiAgfVxuXG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGJyZWFrcG9pbnQ6IG1hcC1yZW1vdmUoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSAhZ2xvYmFsO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBia3B0LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBCcmVha3BvaW50IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKTtcbiRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBIYXMgQ29udGV4dFxuLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB5b3UgYXJlIGluc2lkZSBhIEJyZWFrcG9pbnQgcXVlcnlcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSB7XG4gIEBpZiBsZW5ndGgoJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCkge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgR2V0IENvbnRleHRcbi8vICRmZWF0dXJlOiBJbnB1dCBmZWF0dXJlIHRvIGdldCBpdCdzIGN1cnJlbnQgTVEgY29udGV4dC4gUmV0dXJucyBmYWxzZSBpZiBubyBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldC1jb250ZXh0KCRmZWF0dXJlKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICRnZXQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgb2Ygbm8tcXVlcnkgZnJvbSBnZXQgc2lkZSBzbyAvZmFsc2UvIHByZXBlbmRzIGFyZW4ndCByZXR1cm5lZFxuICAgIEBpZiAkZmVhdHVyZSA9PSAnbm8tcXVlcnknIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRnZXQpID09ICdsaXN0JyBhbmQgbGVuZ3RoKCRnZXQpID4gMSBhbmQgbnRoKCRnZXQsIDEpID09IGZhbHNlIHtcbiAgICAgICAgJGdldDogbnRoKCRnZXQsIGxlbmd0aCgkZ2V0KSk7XG4gICAgICB9XG4gICAgfVxuICAgIEByZXR1cm4gJGdldDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSBhbmQgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICBAcmV0dXJuIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byBzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpIHtcbiAgQGlmICR2YWx1ZSA9PSAnbW9ub2Nocm9tZScge1xuICAgICRmZWF0dXJlOiAnbW9ub2Nocm9tZSc7XG4gIH1cblxuICAkY3VycmVudDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gIEBpZiAkY3VycmVudCBhbmQgbGVuZ3RoKCRjdXJyZW50KSA9PSAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICBAd2FybiBcIllvdSBoYXZlIGFscmVhZHkgcXVlcmllZCBhZ2FpbnN0IGAjeyRmZWF0dXJlfWAuIFVuZXhwZWN0ZWQgdGhpbmdzIG1heSBoYXBwZW4gaWYgeW91IHF1ZXJ5IGFnYWluc3QgdGhlIHNhbWUgZmVhdHVyZSBtb3JlIHRoYW4gb25jZSBpbiB0aGUgc2FtZSBgYW5kYCBxdWVyeS4gQnJlYWtwb2ludCBpcyBvdmVyd3JpdGluZyB0aGUgY3VycmVudCBjb250ZXh0IHdpdGggYCN7JHZhbHVlfWBcIjtcbiAgfVxuXG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkdi1ob2xkZXI6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAxIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR2LWhvbGRlcjogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCAtIDEge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byByZXNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMge1xuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb252ZXJ0cyB0aGUgaW5wdXQgdmFsdWUgdG8gQmFzZSBFTXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpIHtcbiAgJHZhbHVlLXVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICAvLyBXaWxsIGNvbnZlcnQgcmVsYXRpdmUgRU1zIGludG8gcm9vdCBFTXMuXG4gIEBpZiBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSBhbmQgdHlwZS1vZihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgPT0gJ251bWJlcicgYW5kICR2YWx1ZS11bml0ID09ICdlbScge1xuICAgICRiYXNlLXVuaXQ6IHVuaXQoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpO1xuXG4gICAgQGlmICRiYXNlLXVuaXQgPT0gJ3B4JyBvciAkYmFzZS11bml0ID09ICclJyBvciAkYmFzZS11bml0ID09ICdlbScgb3IgJGJhc2UtdW5pdCA9PSAncHQnIHtcbiAgICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkgLyBiYXNlLWNvbnZlcnNpb24oYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpICogMWVtO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnI3ticmVha3BvaW50LWdldChcXCdiYXNlIGZvbnQgc2l6ZVxcJyl9IGlzIG5vdCBzZXQgaW4gdmFsaWQgdW5pdHMgZm9yIGZvbnQgc2l6ZSEnO1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIHtcbiAgJHVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICBAaWYgJHVuaXQgPT0gJ3B4JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxNnB4ICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICclJyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMDAlICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdlbScge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdwdCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTJwdCAqIDFlbTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4vLyAgICBAd2FybiAnRXZlcnl0aGluZyBpcyB0ZXJyaWJsZSEgV2hhdCBoYXZlIHlvdSBkb25lPyEnO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgbWluL21heCBwYWlyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWhlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLXdpZHRoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluLW1heCgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIHN0cmluZyB2YWx1ZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXM6ICAnb3JpZW50YXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjYW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2x1bWlub3NpdHknO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgYnJlYWtwb2ludC1taW4tbWF4KCRpdGVtKSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21pbi0jeyRpdGVtfScgb3IgJGZlYXR1cmUgPT0gJ21heC0jeyRpdGVtfScge1xuICAgICAgICBAcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgaXMgYSBtZWRpYSB0eXBlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1lZGlhLXR5cGVzOiAgJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdicmFpbGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VtYm9zc2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbmRoZWxkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyZWVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWVjaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHYnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkge1xuICBAZWFjaCAkbWVkaWEgaW4gJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXMge1xuICAgIEBpZiAoJGZlYXR1cmUgPT0gJG1lZGlhKSBvciAoJGZlYXR1cmUgPT0gJ25vdCAjeyRtZWRpYX0nKSBvciAoJGZlYXR1cmUgPT0gJ29ubHkgI3skbWVkaWF9Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBzdGFuZCBhbG9uZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncmlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSB7XG4gICRyZXNvbHV0aW9uczogJ2RldmljZS1waXhlbC1yYXRpbycsICdkcHInO1xuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgICRyZXNvbHV0aW9uczogYXBwZW5kKCRyZXNvbHV0aW9ucywgJ3Jlc29sdXRpb24nKTtcbiAgfVxuXG4gIEBlYWNoICRyZXNvIGluICRyZXNvbHV0aW9ucyB7XG4gICAgQGlmIGluZGV4KCRmZWF0dXJlLCAkcmVzbykgb3IgaW5kZXgoJGZlYXR1cmUsICdtaW4tI3skcmVzb30nKSBvciBpbmRleCgkZmVhdHVyZSwgJ21heC0jeyRyZXNvfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGFyc2VyIFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwicGFyc2Vycy9xdWVyeVwiO1xuQGltcG9ydCBcInBhcnNlcnMvc2luZ2xlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9kb3VibGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3RyaXBsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvcmVzb2x1dGlvblwiO1xuXG4kTWVtby1FeGlzdHM6IGZ1bmN0aW9uLWV4aXN0cyhtZW1vLWdldCkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhtZW1vLXNldCk7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBGdW5jdGlvblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkcXVlcnksICRjb250ZXh0cy4uLikge1xuICAkcnVuOiB0cnVlO1xuICAkcmV0dXJuOiAoKTtcblxuICAvLyBHcmFiIHRoZSBNZW1vIE91dHB1dCBpZiBNZW1vaXphdGlvbiBjYW4gYmUgYSB0aGluZ1xuICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAkcmV0dXJuOiBtZW1vLWdldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMpO1xuXG4gICAgQGlmICRyZXR1cm4gIT0gbnVsbCB7XG4gICAgICAkcnVuOiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAaWYgbm90ICRNZW1vLUV4aXN0cyBvciAkcnVuIHtcbiAgICAvLyBJbnRlcm5hbCBWYXJpYWJsZXNcbiAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAkcXVlcnktZmFsbGJhY2s6IGZhbHNlO1xuICAgICRyZXR1cm46ICgpO1xuXG4gICAgLy8gUmVzZXJ2ZSBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkaG9sZGVyLWNvbnRleHQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI7XG4gICAgJGhvbGRlci1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDtcblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG5cbiAgICAvLyBUZXN0IHRvIHNlZSBpZiBpdCdzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3RcbiAgICAkb3ItbGlzdDogaWYobGlzdC1zZXBhcmF0b3IoJHF1ZXJ5KSA9PSAnY29tbWEnLCB0cnVlLCBmYWxzZSk7XG5cblxuICAgIEBpZiAoJG9yLWxpc3QgPT0gZmFsc2UgYW5kIGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gZmFsc2UpIHtcbiAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgICAgICRsYXN0OiBudGgoJHF1ZXJ5LCAkbGVuZ3RoKTtcbiAgICAgICRxdWVyeS1mYWxsYmFjazogYnJlYWtwb2ludC1uby1xdWVyeSgkbGFzdCk7XG5cbiAgICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSB7XG4gICAgICAgICRsZW5ndGg6ICRsZW5ndGggLSAxO1xuICAgICAgfVxuXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gdHJ1ZSkge1xuICAgICAgICAkbXE6ICgpO1xuXG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJG1xOiBhcHBlbmQoJG1xLCBudGgoJHF1ZXJ5LCAkaSksIGNvbW1hKTtcbiAgICAgICAgfVxuXG4gICAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJG1xKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJHF1ZXJ5LXN0cmluZzogJHF1ZXJ5LXN0cmluZyArIGlmKCRpID09IDEsICcnLCAnLCAnKSArIGJyZWFrcG9pbnQtcGFyc2UobnRoKCRxdWVyeSwgJGkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRyZXR1cm46ICgncXVlcnknOiAkcXVlcnktc3RyaW5nLFxuICAgICAgICAnZmFsbGJhY2snOiAkcXVlcnktZmFsbGJhY2ssXG4gICAgICAgICdjb250ZXh0IGhvbGRlcic6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsXG4gICAgICAgICdxdWVyeSBjb3VudCc6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnRcbiAgICApO1xuICAgIEBpZiBsZW5ndGgoJGNvbnRleHRzKSA+IDAgYW5kIG50aCgkY29udGV4dHMsIDEpICE9IGZhbHNlIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICAgICAgfVxuICAgICAgJGNvbnRleHQtbWFwOiAoKTtcbiAgICAgIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgICAgICRjb250ZXh0LW1hcDogbWFwLW1lcmdlKCRjb250ZXh0LW1hcCwgKCRjb250ZXh0OiBicmVha3BvaW50LWdldC1jb250ZXh0KCRjb250ZXh0KSkpO1xuICAgICAgfVxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sIChjb250ZXh0OiAkY29udGV4dC1tYXApKTtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuICAgIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICAgJGhvbGRlcjogbWVtby1zZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzLCAkcmV0dXJuKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhbCBCcmVha3BvaW50IFBhcnNlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpIHtcbiAgLy8gSW5jcmVhc2UgbnVtYmVyIG9mICdhbmQnIHF1ZXJpZXNcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCArIDEgIWdsb2JhbDtcblxuICAvLyBTZXQgdXAgTWVkaWEgVHlwZVxuICAkcXVlcnktcHJpbnQ6ICcnO1xuXG4gICRmb3JjZS1hbGw6ICgoYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykgPT0gdHJ1ZSkgYW5kIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpID09ICdhbGwnKSk7XG4gICRlbXB0eS1tZWRpYTogdHJ1ZTtcbiAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpICE9ICdhbGwnKSB7XG4gICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG4gIH1cblxuXG4gICRxdWVyeS1yZXNvbHV0aW9uOiBmYWxzZTtcblxuICAkcXVlcnktaG9sZGVyOiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSk7XG5cblxuXG4gIC8vIExvb3Agb3ZlciBlYWNoIHBhcnNlZCBvdXQgcXVlcnkgYW5kIHdyaXRlIGl0IHRvICRxdWVyeS1wcmludFxuICAkZmlyc3Q6IHRydWU7XG5cbiAgQGVhY2ggJGZlYXR1cmUgaW4gJHF1ZXJ5LWhvbGRlciB7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRmZWF0dXJlKTtcblxuICAgIC8vIFBhcnNlIGEgc2luZ2xlIGZlYXR1cmVcbiAgICBAaWYgKCRsZW5ndGggPT0gMSkge1xuICAgICAgLy8gRmVhdHVyZSBpcyBjdXJyZW50bHkgYSBsaXN0LCBncmFiIHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICRmZWF0dXJlOiBudGgoJGZlYXR1cmUsIDEpO1xuXG4gICAgICAvLyBNZWRpYSBUeXBlIG11c3QgYnkgY29udmVudGlvbiBiZSB0aGUgZmlyc3QgaXRlbSwgc28gaXQncyBzYWZlIHRvIGZsYXQgb3ZlcnJpZGUgJHF1ZXJ5LXByaW50LCB3aGljaCByaWdodCBub3cgc2hvdWxkIG9ubHkgYmUgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZVxuICAgICAgQGlmIChicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSkge1xuICAgICAgICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKCRmZWF0dXJlICE9ICdhbGwnKSB7XG4gICAgICAgICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAkZmVhdHVyZTtcbiAgICAgICAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuXG4gICAgICAgICAgLy8gU2V0IENvbnRleHRcbiAgICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtZWRpYSwgJHF1ZXJ5LXByaW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgZG91YmxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAyKSB7XG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkgIT0gZmFsc2UpIHtcbiAgICAgICAgJHF1ZXJ5LXJlc29sdXRpb246ICRmZWF0dXJlO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBudWxsO1xuICAgICAgICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLFxuICAgICAgICAvLyB3ZSBjaGVjayB0byBzZWUgaWYgb25lIGlzIGEgc2luZ2xlLXN0cmluZyB2YWx1ZSxcbiAgICAgICAgLy8gdGhlbiB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgICAgICAgJGFscGhhOiBudGgoJGZlYXR1cmUsIDEpO1xuICAgICAgICAkYmV0YTogbnRoKCRmZWF0dXJlLCAyKTtcbiAgICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYWxwaGEpIG9yIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYmV0YSkge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRhbHBoYSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRiZXRhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgdHJpcGxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAzKSB7XG4gICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICB9XG5cbiAgfVxuXG4gIEBpZiAoJHF1ZXJ5LXJlc29sdXRpb24gIT0gZmFsc2UpIHtcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gIH1cblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBmZWF0dXJlIHRoYXQncyBiZWVuIGRldGVjdGVkIHNvIGZhciBhbmQgYXBwZW5kICdmYWxzZScgdG8gdGhlIHRoZSB2YWx1ZSBsaXN0IHRvIGluY3JlbWVudCB0aGVpciBjb3VudGVyc1xuICBAZWFjaCAkZiwgJHYgaW4gJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciB7XG4gICAgJHYtaG9sZGVyOiAkdjtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAaWYgbGVuZ3RoKCR2LWhvbGRlcikgPCAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgICBAaWYgJGYgPT0gJ21lZGlhJyB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZjogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KSB7XG4gIC8vIFBhcnNlIGZlYXR1cmVzIG91dCBvZiBhbiBpbmRpdmlkdWFsIHF1ZXJ5XG4gICRmZWF0dXJlLWhvbGRlcjogKCk7XG4gICRxdWVyeS1ob2xkZXI6ICgpO1xuICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgYSBzdHJpbmcvbnVtYmVyLCBudW1iZXIvc3RyaW5nLCBjaGVjayB0byBzZWUgaWYgaXQncyBhIHZhbGlkIHN0cmluZy9udW1iZXIgcGFpciBvciB0d28gc2luZ2xlc1xuICAgIEBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSBvciAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG5cbiAgICAgICRudW1iZXI6ICcnO1xuICAgICAgJHZhbHVlOiAnJztcblxuICAgICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMik7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDEpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDIpO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIHZhbHVlIGNhbiBiZSBhIHNpbmdsZSB2YWx1ZSwgY2hlY2sgdG8gc2VlIGlmIHRoZSBudW1iZXIgcGFzc2VkIGluIGlzIGEgdmFsaWQgaW5wdXQgZm9yIHNhaWQgc2luZ2xlIHZhbHVlLiBGb3J0dW5hdGVseSwgYWxsIGN1cnJlbnQgc2luZ2xlLXZhbHVlIG9wdGlvbnMgb25seSBhY2NlcHQgdW5pdGxlc3MgbnVtYmVycywgc28gdGhpcyBjaGVjayBpcyBlYXN5LlxuICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkdmFsdWUpIHtcbiAgICAgICAgQGlmIHVuaXRsZXNzKCRudW1iZXIpIHtcbiAgICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGEgbWVkaWEgdHlwZSwgc3BsaXQgdGhlIHF1ZXJ5XG4gICAgICBAaWYgYnJlYWtwb2ludC1pcy1tZWRpYSgkdmFsdWUpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDIpKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gSWYgaXQncyBub3QgYSBzaW5nbGUgZmVhdHVyZSwgd2UncmUganVzdCBnb2luZyB0byBhc3N1bWUgaXQncyBhIHByb3BlciBzdHJpbmcvdmFsdWUgcGFpciwgYW5kIHJvbGwgd2l0aCBpdC5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuXG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBudW1iZXJzLCB3ZSBhc3N1bWUgaXQncyBhIGRvdWJsZSBhbmQgcm9sbCB3aXRoIHRoYXRcbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSB7XG4gICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIHN0cmluZ3MgYW5kIG5laXRoZXIgYXJlIHNpbmdsZXMsIHdlIHJvbGwgd2l0aCB0aGF0LlxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7XG4gICAgLy8gSWYgd2UndmUgZ290IHRocmVlIGl0ZW1zIGFuZCBub25lIGlzIGEgbGlzdCwgd2UgY2hlY2sgdG8gc2VlXG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDMpKSAhPSAnbGlzdCcge1xuICAgICAgLy8gSWYgbm9uZSBvZiB0aGUgaXRlbXMgYXJlIHNpbmdsZSBzdHJpbmcgdmFsdWVzIGFuZCBub25lIG9mIHRoZSB2YWx1ZXMgYXJlIG1lZGlhIHZhbHVlcywgd2UncmUgZ29vZC5cbiAgICAgIEBpZiAobm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDMpKSkgYW5kICAoKG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAzKSkpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkZmVhdHVyZS1ob2xkZXIsIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gbGV0J3MgY2hlY2sgdG8gc2VlIGlmIHRoZSBmaXJzdCBpdGVtIGlzIGEgbWVkaWEgdHlwZVxuICAgICAgQGVsc2UgaWYgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAyKSwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlcik7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGl0ZW0sIG9yIGlmIGl0J3Mgbm90IGEgc3BlY2lhbCBjYXNlIGRvdWJsZSBvciB0cmlwbGUsIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSBxdWVyeS5cbiAgQHJldHVybiAkcXVlcnk7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInNpbmdsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGZlYXR1cmUgdGhhdCBjYW4gc3RhbmQgYWxvbmUsIHdlIGxldCBpdFxuICBAaWYgKGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkpIHtcbiAgICAkcGFyc2VkOiAkZmVhdHVyZTtcbiAgICAvLyBTZXQgQ29udGV4dFxuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkZmVhdHVyZSk7XG4gIH1cbiAgLy8gSWYgaXQncyBub3QgYSBzdGFuZCBhbG9uZSBmZWF0dXJlLCB3ZSBwYXNzIGl0IG9mZiB0byB0aGUgZGVmYXVsdCBoYW5kbGVyLlxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICcoJyArICRwYXJzZWQgKyAnKSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJyk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGRlZmF1bHQsICRmZWF0dXJlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSBhbmQgKHR5cGUtb2YoJGZlYXR1cmUpID09ICdudW1iZXInKSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7YnJlYWtwb2ludC10by1iYXNlLWVtKCRmZWF0dXJlKX0nO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3skZmVhdHVyZX0nO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0LXBhaXJcIjtcbkBpbXBvcnQgXCJkb3VibGUvZG91YmxlLXN0cmluZ1wiO1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAkZmlyc3Q6IG50aCgkZmVhdHVyZSwgMSk7XG4gICRzZWNvbmQ6IG50aCgkZmVhdHVyZSwgMik7XG5cbiAgLy8gSWYgd2UndmUgZ290IHR3byBudW1iZXJzLCB3ZSBrbm93IHdlIG5lZWQgdG8gdXNlIHRoZSBkZWZhdWx0IHBhaXIgYmVjYXVzZSB0aGVyZSBhcmUgbm8gbWVkaWEgcXVlcmllcyB0aGF0IGhhcyBhIG1lZGlhIGZlYXR1cmUgdGhhdCBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdudW1iZXInIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIHRoZXkgYXJlIGJvdGggc3RyaW5ncywgd2Ugc2VuZCBpdCB0aHJvdWdoIHRoZSBzdHJpbmcgcGFyc2VyXG4gIEBlbHNlIGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnc3RyaW5nJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpciwgd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgcGFpcicpO1xuICAkbWluOiAnJztcbiAgJG1heDogJyc7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZGVmYXVsdH0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZGVmYXVsdH0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZGVmYXVsdH06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGRlZmF1bHR9OiAjeyRtYXh9KSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgLy8gVGVzdCB0byBzZWUgd2hpY2ggaXMgdGhlIGZlYXR1cmUgYW5kIHdoaWNoIGlzIHRoZSB2YWx1ZVxuICBAaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmaXJzdCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkc2Vjb25kKSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiTmVpdGhlciAjeyRmaXJzdH0gbm9yICN7JHNlY29uZH0gaXMgYSB2YWxpZCBtZWRpYSBxdWVyeSBuYW1lLlwiO1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJztcbn0iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkdmFsdWU6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpO1xuICB9XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJ1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0cmlwbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcblxuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBzZXBhcmF0ZSB0aGUgc3RyaW5nIGZlYXR1cmVzIGZyb20gdGhlIHZhbHVlIG51bWJlcnNcbiAgJHN0cmluZzogbnVsbDtcbiAgJG51bWJlcnM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJGZlYXR1cmUge1xuICAgIEBpZiB0eXBlLW9mKCR2YWwpID09IHN0cmluZyB7XG4gICAgICAkc3RyaW5nOiAkdmFsO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgdHlwZS1vZigkbnVtYmVycykgPT0gJ251bGwnIHtcbiAgICAgICAgJG51bWJlcnM6ICR2YWw7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXJzOiBhcHBlbmQoJG51bWJlcnMsICR2YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJHN0cmluZywgbnRoKCRudW1iZXJzLCAxKSwgbnRoKCRudW1iZXJzLCAyKSk7XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcblxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJGZlYXR1cmUsICRmaXJzdCwgJHNlY29uZCkge1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGZlYXR1cmV9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGZlYXR1cmV9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGZlYXR1cmV9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRmZWF0dXJlfTogI3skbWF4fSknO1xufVxuIiwiQGltcG9ydCBcInJlc29sdXRpb24vcmVzb2x1dGlvblwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIGFuZCAkcXVlcnktcmVzb2x1dGlvbiB7XG4gICAgJHJlc29sdXRpb25zOiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHF1ZXJ5LXJlc29sdXRpb24pO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbnMpO1xuICAgICRxdWVyeS1ob2xkZXI6ICcnO1xuXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICRxdWVyeTogJyN7JHF1ZXJ5LXByaW50fSAjeyRsZWFkZXJ9I3tudGgoJHJlc29sdXRpb25zLCAkaSl9JztcbiAgICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJHF1ZXJ5O1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAnI3skcXVlcnktaG9sZGVyfSwgI3skcXVlcnl9JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIFJldHVybiB3aXRoIGF0dGFjaGVkIHJlc29sdXRpb25cbiAgICBAcmV0dXJuICRxdWVyeS1wcmludDtcbiAgfVxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcmVzb2x1dGlvbikge1xuICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb24pO1xuXG4gICRvdXRwdXQ6ICgpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgICRmZWF0dXJlOiAnJztcbiAgICAkdmFsdWU6ICcnO1xuXG4gICAgLy8gRmluZCB3aGljaCBpcyBudW1iZXJcbiAgICBAaWYgdHlwZS1vZihudGgoJHJlc29sdXRpb24sIDEpKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAyKTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgbWluL21heC9zdGFuZGFyZFxuICAgIEBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21pbi1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtaW4tJztcbiAgICB9XG4gICAgQGVsc2UgaWYgaW5kZXgoJHJlc29sdXRpb24sICdtYXgtcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWF4LSc7XG4gICAgfVxuXG4gICAgJHN0YW5kYXJkOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWV9KSc7XG5cbiAgICAvLyBJZiB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGRwcHgsXG4gICAgQGlmIHVuaXQoJHZhbHVlKSAhPSAnZHBweCcge1xuICAgICAgJGJhc2U6IDk2ZHBpO1xuICAgICAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZHBjbScge1xuICAgICAgICAkYmFzZTogMjQzLjg0ZHBjbTtcbiAgICAgIH1cbiAgICAgIC8vIFdyaXRlIG91dCBmZWF0dXJlIHRlc3RzXG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkZmFsbGJhY2s6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZSAvIDFkcHB4ICogOTZkcGl9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkZmFsbGJhY2ssIHNwYWNlKTtcbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW5vLXF1ZXJ5KCRxdWVyeSkge1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09ICdsaXN0JyB7XG4gICAgJGtleXdvcmQ6IG50aCgkcXVlcnksIDEpO1xuXG4gICAgQGlmIHR5cGUtb2YoJGtleXdvcmQpID09ICdzdHJpbmcnIGFuZCAoJGtleXdvcmQgPT0gJ25vLXF1ZXJ5JyBvciAka2V5d29yZCA9PSAnbm8gcXVlcnknIG9yICRrZXl3b3JkID09ICdmYWxsYmFjaycpIHtcbiAgICAgIEByZXR1cm4gbnRoKCRxdWVyeSwgMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgdGhlIEJyZWFrcG9pbnRzIHZhcmlhYmxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG4kQlJFQUtQT0lOVFM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlc3BvbmQtdG8gQVBJIE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiByZXNwb25kLXRvKCRjb250ZXh0LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA+IDAgYW5kIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtZXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGFkZCBicmVha3BvaW50cyBmb3IgcmVzcG9uZC10by4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KClgIHRvIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgpYC4gVGhlIGBhZGQtYnJlYWtwb2ludCgpYCBmdW5jdGlvbiB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIjtcbiAgICAkQlJFQUtQT0lOVFM6ICRicmVha3BvaW50cyAhZ2xvYmFsO1xuICAgICRicmVha3BvaW50czogKCkgIWdsb2JhbDtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRCUkVBS1BPSU5UUykgIT0gJ21hcCcge1xuICAgIC8vIEp1c3QgaW4gY2FzZSBzb21lb25lIHdyaXRlcyBnaWJiZXJpc2ggdG8gdGhlICRicmVha3BvaW50cyB2YXJpYWJsZS5cbiAgICBAd2FybiBcIllvdXIgYnJlYWtwb2ludHMgYXJlbid0IGEgbWFwISBgcmVzcG9uZC10b2AgZXhwZWN0cyBhIG1hcC4gUGxlYXNlIGNoZWNrIHRoZSB2YWx1ZSBvZiAkQlJFQUtQT0lOVFMgdmFyaWFibGUuXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFwLWdldCgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAd2FybiBcImAjeyRjb250ZXh0fWAgaXNuJ3QgYSBkZWZpbmVkIGJyZWFrcG9pbnQhIFBsZWFzZSBhZGQgaXQgdXNpbmcgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoYCN7JGNvbnRleHR9YCwgJHZhbHVlKTtgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiWW91IGhhdmVuJ3QgY3JlYXRlZCBhbnkgYnJlYWtwb2ludHMgeWV0ISBNYWtlIHNvbWUgYWxyZWFkeSEgYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdClgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBZGQgQnJlYWtwb2ludCB0byBCcmVha3BvaW50c1xuLy8gVE9ETzogUmVtb3ZlIGZ1bmN0aW9uIGluIG5leHQgcmVsZWFzZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPT0gMCB7XG4gICAgQHJldHVybiAkb3V0cHV0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgIEByZXR1cm4gJGJyZWFrcG9pbnRzO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgIEByZXR1cm4gbWFwLW1lcmdlKCRicmVha3BvaW50cywgJG91dHB1dCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICAkQlJFQUtQT0lOVFM6ICRvdXRwdXQgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICAkQlJFQUtQT0lOVFM6ICRCUkVBS1BPSU5UUyAhZ2xvYmFsO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgICRCUkVBS1BPSU5UUzogbWFwLW1lcmdlKCRCUkVBS1BPSU5UUywgJG91dHB1dCkgIWdsb2JhbDtcbiAgICB9XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGdldC1icmVha3BvaW50KCRuYW1lOiBmYWxzZSkge1xuICBAaWYgJG5hbWUgPT0gZmFsc2Uge1xuICAgIEByZXR1cm4gJEJSRUFLUE9JTlRTO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkbmFtZSk7XG4gIH1cbn1cbiIsIkBtaXhpbiBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZyB7XG4gICRsZWdhY3lWYXJzOiAoXG4gICAgJ2RlZmF1bHQtbWVkaWEnOiAnZGVmYXVsdCBtZWRpYScsXG4gICAgJ2RlZmF1bHQtZmVhdHVyZSc6ICdkZWZhdWx0IGZlYXR1cmUnLFxuICAgICdmb3JjZS1tZWRpYS1hbGwnOiAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLFxuICAgICd0by1lbXMnOiAndG8gZW1zJyxcbiAgICAncmVzb2x1dGlvbnMnOiAndHJhbnNmb3JtIHJlc29sdXRpb25zJyxcbiAgICAnbm8tcXVlcmllcyc6ICdubyBxdWVyaWVzJyxcbiAgICAnbm8tcXVlcnktZmFsbGJhY2tzJzogJ25vIHF1ZXJ5IGZhbGxiYWNrcycsXG4gICAgJ2Jhc2UtZm9udC1zaXplJzogJ2Jhc2UgZm9udCBzaXplJyxcbiAgICAnbGVnYWN5LXN5bnRheCc6ICdsZWdhY3kgc3ludGF4J1xuICApO1xuXG4gIEBlYWNoICRsZWdhY3ksICRuZXcgaW4gJGxlZ2FjeVZhcnMge1xuICAgIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LScgKyAkbGVnYWN5KSB7XG4gICAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGNoYW5nZSBzZXR0aW5ncyBmb3IgQnJlYWtwb2ludC4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludC0jeyRsZWdhY3l9OiB7e3NldHRpbmd9fWAgdG8gYEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCcjeyRuZXd9Jywge3tzZXR0aW5nfX0pYC4gVmFyaWFibGUgc2V0dGluZ3MsIGFzIHdlbGwgYXMgdGhpcyB3YXJuaW5nIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiXG4gICAgfVxuICB9O1xuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBIYW5kIGNvcnJlY3QgZWFjaCBzZXR0aW5nXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgbWVkaWEnLCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgZmVhdHVyZScsICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsJykgYW5kICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCAhPSBicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJywgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC10by1lbXMnKSBhbmQgJGJyZWFrcG9pbnQtdG8tZW1zICE9IGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RvIGVtcycsICRicmVha3BvaW50LXRvLWVtcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtcmVzb2x1dGlvbnMnKSBhbmQgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMgIT0gYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJywgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJpZXMnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcmllcycsICRicmVha3BvaW50LW5vLXF1ZXJpZXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcnkgZmFsbGJhY2tzJywgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZScpIGFuZCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSAhPSBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2Jhc2UgZm9udCBzaXplJywgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWxlZ2FjeS1zeW50YXgnKSBhbmQgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCAhPSBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbGVnYWN5IHN5bnRheCcsICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXgpO1xuICB9XG59IiwiQGltcG9ydCBcImZ1bmN0aW9uc1wiO1xuQGltcG9ydCBcInotaW5kZXhcIjtcbkBpbXBvcnQgXCJtZWRpYS1xdWVyaWVzXCI7XG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XG5AaW1wb3J0IFwidW5pYm9hcmRcIjtcbkBpbXBvcnQgXCJtaXhpbnNcIjtcbkBpbXBvcnQgXCJleHRlbmRzXCI7XG5AaW1wb3J0IFwiZmxleFwiO1xuQGltcG9ydCBcImJveFwiO1xuQGltcG9ydCBcImZsdWlkLXNpemVcIjtcbiIsIi8vLyBaLWluZGV4ZXMgbWFwLCBnYXRoZXJpbmcgYWxsIFogbGF5ZXJzIG9mIHRoZSBhcHBsaWNhdGlvblxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEB0eXBlIE1hcFxuLy8vIEBwcm9wIHtTdHJpbmd9IGtleSAtIExheWVy4oCZcyBuYW1lXG4vLy8gQHByb3Age051bWJlcn0gdmFsdWUgLSBaIHZhbHVlIG1hcHBlZCB0byB0aGUga2V5XG4kei1pbmRleGVzOiAoXCJjZ19fcHJvbW90aW9uXCI6IDIwNSwgXCJjZ19fcGllY2UuZHJhZ2dpbmdcIjogMjA0LCBcImNnX19waWVjZS5hbmltXCI6IDMsIFwiY2dfX3N2Z1wiOiAyLCBcImNnX19waWVjZVwiOiAyLCBcImNnX19waWVjZS5mYWRpbmdcIjogMSwgXCJwb3dlcnRpcFwiOiAxMjAsIFwiaW5xdWlyeVwiOiAxMTEsIFwiemVuLXRvZ2dsZVwiOiAxMTAsIFwibW9kYWxcIjogMTEwLCBcIm1zZWxlY3RcIjogMTEwLCBcInRvcG5hdlwiOiAxMTAsIFwiZnVsbHNjcmVlbi1tYXNrXCI6IDEwOSwgXCJkcm9wZG93blwiOiAxMDgsIFwiY29udGV4dC1tZW51XCI6IDEwNywgXCJzaXRlLWhlYWRlclwiOiAxMDYsIFwicmVjb25uZWN0aW5nXCI6IDEwNSwgXCJ0b3VyLXJlbWluZGVyXCI6IDEwNCwgXCJuYWctY2lyY2xlXCI6IDEwMywgXCJtei1tZW51XCI6IDQsIFwiYWJvdmUtbGluay1vdmVybGF5XCI6IDMsIFwiZnJpZW5kLWJveFwiOiAyLCBcImxpbmstb3ZlcmxheVwiOiAyLCBcImdhbWUtYm9va21hcmtcIjogMiwgXCJzdWJuYXYtc2lkZVwiOiAyLCBcImRlZmF1bHRcIjogMCk7XG5cbi8vLyBHZXQgYSB6LWluZGV4IHZhbHVlIGZyb20gYSBsYXllciBuYW1lXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGxheWVyIC0gTGF5ZXLigJlzIG5hbWVcbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XG4vLy8gQHJlcXVpcmUgJHotaW5kZXhlc1xuQGZ1bmN0aW9uIHooJGxheWVyKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkei1pbmRleGVzLCAkbGF5ZXIpO1xufVxuIiwiLyogV2lkdGhzICovXG5cbiRtcS14eC1zbWFsbDogbWluLXdpZHRoIDUwMHB4O1xuJG1xLXgtc21hbGw6IG1pbi13aWR0aCA2NTBweDtcbiRtcS1zbWFsbDogbWluLXdpZHRoIDgwMHB4O1xuJG1xLW1lZGl1bTogbWluLXdpZHRoIDk4MHB4O1xuJG1xLWxhcmdlOiBtaW4td2lkdGggMTEyMHB4O1xuJG1xLXgtbGFyZ2U6IG1pbi13aWR0aCAxMjYwcHg7XG5cbiRtcS1ub3QteHgtc21hbGw6IG1heC13aWR0aCA0OTlweDtcbiRtcS1ub3QteC1zbWFsbDogbWF4LXdpZHRoIDY0OXB4O1xuJG1xLW5vdC1zbWFsbDogbWF4LXdpZHRoIDc5OXB4O1xuJG1xLW5vdC1tZWRpdW06IG1heC13aWR0aCA5NzlweDtcbiRtcS1ub3QteC1sYXJnZTogbWF4LXdpZHRoIDEyNTlweDtcblxuLyogSGVpZ2h0cyAqL1xuXG4kbXEteC1zaG9ydDogbWluLWhlaWdodCA0MDBweDtcbiRtcS1zaG9ydDogbWluLWhlaWdodCA1MDBweDtcbiRtcS10YWxsOiBtaW4taGVpZ2h0IDYwMHB4O1xuJG1xLXgtdGFsbDogbWluLWhlaWdodCA3MDBweDtcblxuJG1xLW5vdC14LXNob3J0OiBtYXgtaGVpZ2h0IDM5OXB4O1xuXG4vKiBPcmllbnRhdGlvbnMgKi9cblxuJG1xLXBvcnRyYWl0OiBvcmllbnRhdGlvbiBwb3J0cmFpdDtcbiRtcS1sYW5kc2NhcGU6IG9yaWVudGF0aW9uIGxhbmRzY2FwZTtcblxuLyogQ2FwYWJpbGl0aWVzICovXG5cbiRtcS1ob3Zlci15ZXM6IFwiaG92ZXI6IGhvdmVyXCI7XG4kbXEtaG92ZXItbm86IGhvdmVyIG5vbmU7XG5cbi8qIEFsaWFzZXMgKi9cblxuJG1xLW1haW4tbWFyZ2luOiAkbXEtc21hbGw7XG5cbiRtcS10b3BuYXYtdmlzaWJsZTogJG1xLW1lZGl1bTtcbiRtcS10b3BuYXYtaGlkZGVuOiAkbXEtbm90LW1lZGl1bTtcblxuJG1xLXNpdGUtaGVhZGVyLXRhbGw6ICRtcS10YWxsO1xuXG4kbXEtc3VibmF2LXRvcDogJG1xLW5vdC1zbWFsbDtcbiRtcS1zdWJuYXYtc2lkZTogJG1xLXNtYWxsO1xuXG4kbXEtem9vbS1lbmFibGVkOiAkbXEtc21hbGwgJG1xLXNob3J0O1xuIiwiJGRlYnVnOiBmYWxzZTtcblxuJGZvbnQtcGF0aDogXCIuLi9mb250XCI7XG4kaW1nLXBhdGg6IFwiLi4vaW1hZ2VzXCI7XG5cbiR2aWV3cG9ydC1taW4td2lkdGg6IDMyMHB4O1xuXG4kYmxvY2stZ2FwOiAydm1pbjtcbiRibG9jay1nYXAtaGFsZjogMXZtaW47XG5cbiRibG9jay1nYXAtaDogMnZoO1xuJGJsb2NrLWdhcC13OiAydnc7XG4kYmxvY2stZ2FwLXctaGFsZjogMXZ3O1xuXG4kYm94LXJhZGl1cy1zaXplOiAzcHg7XG5cbiRzaXRlLWhlYWRlci10YWxsLWhlaWdodDogNjBweDtcbiRzaXRlLWhlYWRlci1zaG9ydC1oZWlnaHQ6IDQwcHg7XG5cbiR0cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtcztcblxuJG1haW4tbWF4LXdpZHRoOiAxMzAwcHggIWRlZmF1bHQ7XG5cbiRtYWluLW1hcmdpbjogdmFyKC0tbWFpbi1tYXJnaW4pO1xuJHNpdGUtaGVhZGVyLWhlaWdodDogdmFyKC0tc2l0ZS1oZWFkZXItaGVpZ2h0KTtcblxuJHNpdGUtaGVhZGVyLW1hcmdpbjogdmFyKC0tc2l0ZS1oZWFkZXItbWFyZ2luKTtcblxuJHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodDogY2FsYygjeyRzaXRlLWhlYWRlci1oZWlnaHR9ICsgI3skc2l0ZS1oZWFkZXItbWFyZ2lufSk7XG4iLCIvKiBVbmlib2FyZDoga2VlcCB0aGUgc2FtZSBwYWdlIGxheW91dCBhY2Nyb3NzIHBhZ2VzICovXG5cbiRtcS1ib2FyZC1yZXNpemFibGU6ICRtcS1zbWFsbDtcbiRtcS1jb2wxLXVuaWJvYXJkOiAkbXEtbm90LXNtYWxsICRtcS1wb3J0cmFpdDtcbiRtcS1jb2wyLXVuaWJvYXJkOiAkbXEtc21hbGwsICRtcS1sYW5kc2NhcGU7XG4kbXEtY29sMy11bmlib2FyZDogJG1xLXgtbGFyZ2U7XG5cbi8qIHdoZW4gdGhlIHdpZHRoIGlzIGFwcHJvcHJpYXRlIGZvciBjb2wxLCBidXQgbGFuZHNjYXBlIHByZXZlbnRzIGl0ICovXG4kbXEtY29sMi11bmlib2FyZC1zcXVlZXplOiAkbXEtbm90LXNtYWxsICRtcS1sYW5kc2NhcGU7XG5cbiRjb2wzLXVuaWJvYXJkLXNpZGU6IG1pbm1heCgyMzBweCwgMjB2dyk7XG4kY29sMy11bmlib2FyZC10YWJsZTogbWlubWF4KDI0MHB4LCA0MDBweCk7XG4kY29sMy11bmlib2FyZC1jb250cm9sczogM3JlbTtcblxuJGNvbDMtdW5pYm9hcmQtbWluLXdpZHRoOiBjYWxjKDcwdm1pbiAqIHZhcigtLWJvYXJkLXNjYWxlKSk7XG4kY29sMy11bmlib2FyZC1tYXgtd2lkdGg6IGNhbGMoMTAwdmggKiB2YXIoLS1ib2FyZC1zY2FsZSkgLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMy11bmlib2FyZC1jb250cm9sc30pO1xuJGNvbDMtdW5pYm9hcmQtd2lkdGg6IG1pbm1heCgkY29sMy11bmlib2FyZC1taW4td2lkdGgsICRjb2wzLXVuaWJvYXJkLW1heC13aWR0aCk7XG5cbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtc2NhbGU6IDAuOTtcblxuLy8gem9vbTogODUlXG4kY29sMy11bmlib2FyZC1kZWZhdWx0LW1pbi13aWR0aDogNTAwcHg7XG4kY29sMy11bmlib2FyZC1kZWZhdWx0LW1heC13aWR0aDogY2FsYygxMDB2aCAqICN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1zY2FsZX0gLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMy11bmlib2FyZC1jb250cm9sc30pO1xuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aDogbWlubWF4KCN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1taW4td2lkdGh9LCAjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWF4LXdpZHRofSk7XG5cbiRjb2wyLXVuaWJvYXJkLXRhYmxlOiAkY29sMy11bmlib2FyZC10YWJsZTtcbiRjb2wyLXVuaWJvYXJkLWNvbnRyb2xzOiAkY29sMy11bmlib2FyZC1jb250cm9scztcbiRjb2wyLXVuaWJvYXJkLXdpZHRoOiAkY29sMy11bmlib2FyZC13aWR0aDtcbiRjb2wyLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg6ICRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg7XG5cbiRjb2wyLXVuaWJvYXJkLXNxdWVlemUtdGFibGU6IG1pbm1heCgyMDBweCwgMjQwcHgpO1xuJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS13aWR0aDogbWlubWF4KGNhbGMoNTV2bWluKSwgY2FsYygxMDB2aCAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRibG9jay1nYXB9KSk7XG5cbiRjb2wxLXVuaWJvYXJkLWNvbnRyb2xzOiAkY29sMi11bmlib2FyZC1jb250cm9scztcbiIsIkBtaXhpbiBib3gtcmFkaXVzIHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuQG1peGluIGJveC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAkYm94LXNoYWRvdztcbn1cblxuQG1peGluIGJveC1uZWF0IHtcbiAgQGluY2x1ZGUgYm94LXJhZGl1cztcbiAgQGluY2x1ZGUgYm94LXNoYWRvdztcbn1cblxuQG1peGluIGRlYnVnLXpvb20taW5wdXQge1xuICAjem9vbS1pbnB1dCB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXpvb20tZW5hYmxlZCkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBib3R0b206IDNweDtcbiAgICAgIHJpZ2h0OiAzcHg7XG4gICAgICB3aWR0aDogMTB2dztcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRyYW5zaXRpb24oJHByb3A6IGFsbCwgJGR1cjogJHRyYW5zaXRpb24tZHVyYXRpb24pIHtcbiAgdHJhbnNpdGlvbjogJHByb3AgJGR1cjtcbn1cblxuQG1peGluIGhvdmVyZmxvdyB7XG4gIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgLmJsaW5kLW1vZGUgJiB7XG4gICAgZGlzcGxheTogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gZWxsaXBzaXMge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuQG1peGluIGNyb3NzdGFibGUtbGFyZ2Uge1xuICAuY3Jvc3N0YWJsZV9fdXNlcnMge1xuICAgIGZsZXg6IDcgMSBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBjcm9zc3RhYmxlLXNtYWxsIHtcbiAgLmNyb3NzdGFibGVfX3VzZXJzIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxufVxuXG4vKiBhdG0gb25seSBjaHJvbWUgc3VwcG9ydHMgbWluLWNvbnRlbnQsIG1heC1jb250ZW50ICovXG5AbWl4aW4gcHJvcGVyLWdyaWQge1xuICBAc3VwcG9ydHMgKGhlaWdodDogbWF4LWNvbnRlbnQpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gYm9keS1maXhlZC1zY3JvbGwge1xuICBib2R5IHtcbiAgICAvKiBwcmV2ZW50cyBzY3JvbGwgYmFyIGZsaWNrZXIgd2hlbiBkcmFnZ2luZyBhIHBpZWNlIG91dCAqL1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgfVxufVxuIiwiJWJhc2UtZm9udC1mYWxsYmFjayB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJywgU2Fucy1TZXJpZjtcbn1cblxuJWJhc2UtZm9udCB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJztcbn1cblxuJXJvYm90byB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbn1cblxuJXJvYm90by1mYXQge1xuICBmb250LWZhbWlseTogJ1JvYm90byc7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbiVjaGVzcy1mb250IHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIENoZXNzJywgJ05vdG8gU2Fucyc7XG59XG5cbiVzYW4ge1xuICBAZXh0ZW5kICVjaGVzcy1mb250O1xuXG4gIC5waWVjZS1sZXR0ZXIgJiB7XG4gICAgQGV4dGVuZCAlYmFzZS1mb250O1xuICB9XG59XG5cbi8qIHRleHQgcHJpbnRlZCBkaXJlY3RseSBvbiB0aGUgcGFnZSBiYWNrZ3JvdW5kIGRlc2VydmVzIHNwZWNpYWwgdHJlYXRtZW50ICh0cmFuc3AgdGhlbWUpICovXG4lcGFnZS1mb250IHtcbiAgY29sb3I6ICRjLWZvbnQtcGFnZTtcbn1cblxuJXBhZ2UtdGV4dCB7XG4gIEBleHRlbmQgJXBhZ2UtZm9udCwgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xufVxuXG4lcGFnZS1saW5rIHtcbiAgQGV4dGVuZCAlcGFnZS1saW5rLWZvbnQgIW9wdGlvbmFsO1xuXG4gIEBleHRlbmQgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xufVxuXG4lbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbDtcbn1cblxuJW1ldGFsLWhvdmVyIHtcbiAgQGluY2x1ZGUgbWV0YWwtaG92ZXI7XG59XG5cbiVwYWdlLW1ldGFsIHtcbiAgQGluY2x1ZGUgcGFnZS1tZXRhbDtcbn1cblxuJXBhZ2UtbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBwYWdlLW1ldGFsO1xufVxuXG4lbWV0YWwtYmcge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcbn1cblxuJWFjdGl2ZS1pbnNldC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDNweCA0cHggaHNsYSgwLCAwLCAwLCAwLjE1KSBpbnNldDtcbn1cblxuJWFjdGl2ZSB7XG4gIEBleHRlbmQgJWFjdGl2ZS1pbnNldC1zaGFkb3c7XG5cbiAgYmFja2dyb3VuZDogI2JkMTExZjtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtc2hhZG93OiAxcHggMXB4IDFweCB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4jdHJhaW5lciBncm91cC5yYWRpbyBpbnB1dDpjaGVja2VkICsgbGFiZWx7XG4gIGJhY2tncm91bmQ6ICMwNDU2YmM7XG59XG5cbiVhY3RpdmUtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBtaXgod2hpdGUsICRjLWFjY2VudCwgMjAlKTtcbn1cblxuJWFjdGl2ZS1zb2Z0IHtcbiAgQGV4dGVuZCAlYWN0aXZlLWluc2V0LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAjMDQ1NmJjO1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMXB4ICRjLWZvbnQtc2hhZG93ICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4lZHJvcGRvd24tc2hhZG93IHtcbiAgYm94LXNoYWRvdzogLTFweCA1cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbn1cblxuJXBvcHVwLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMTRweCAyOHB4IHJnYmEoMCwgMCwgMCwgMC4yNSksIDAgMTBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yMik7XG59XG5cbiVidXR0b24tc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAycHggNXB4IDAgaHNsYSgwLCAwLCAwJSwgMC4yMjUpO1xufVxuXG4lYnV0dG9uLXJhaXNlZC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDRweCAxMHB4IDBweCBoc2xhKDAsIDAsIDAsIDAuMjI1KTtcbn1cblxuJWJ1dHRvbi1ub25lIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBjb2xvcjogJGMtZm9udDtcbn1cblxuJWNoZWNrYm94IHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICRjLWJnLXBhZ2U7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRjLWJnLWxvdztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAuNWVtO1xuXG4gICY6Y2hlY2tlZCB7XG4gICAgYmFja2dyb3VuZDogIzA0NTZiYztcbiAgICBib3JkZXItY29sb3I6ICMwNDU2YmM7XG4gIH1cbn1cblxuJWZvY3VzLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMCAxMnB4ICRjLWZvbnQtZGltO1xufVxuXG4lbm93cmFwLWhpZGRlbiB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbiVub3dyYXAtZWxsaXBzaXMge1xuICBAZXh0ZW5kICVlbGxpcHNpcztcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4lYm94LXBhZGRpbmcge1xuICBwYWRkaW5nOiA1dmggdmFyKC0tYm94LXBhZGRpbmcpO1xufVxuXG4lYm94LXBhZGRpbmctaG9yaXoge1xuICBwYWRkaW5nOiAwIHZhcigtLWJveC1wYWRkaW5nKTtcbn1cblxuJWJyZWFrLXdvcmQge1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG4lYnJlYWstd29yZC1oYXJkIHtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xuXG4gIC8qIHN1cHBvcnQ6IGZpcmVmb3ggKi9cbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cblxuJWJyZWFrLW5vcGUge1xuICBvdmVyZmxvdy13cmFwOiBub3JtYWw7XG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcbn1cblxuJWVsbGlwc2lzIHtcbiAgQGluY2x1ZGUgZWxsaXBzaXM7XG59XG5cbiVzcXVhcmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cblxuJXZpZGVvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwO1xuICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlO1xuXG4gIC8qIDE2LzkgKi9cbiAgLy8gcGFkZGluZy1ib3R0b206IDc1JTsgLyogNC8zICovXG4gIHdpZHRoOiAxMDAlO1xuXG4gID4gKiB7XG4gICAgQGV4dGVuZCAlYWJzLTEwMDtcblxuICAgIGJvcmRlcjogbm9uZTtcbiAgfVxufVxuXG4lZGF0YS1pY29uIHtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZm9udC1mYW1pbHk6ICdsaWNoZXNzJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgc3BlYWs6IG5vbmU7XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1pY29uKTtcbiAgb3BhY2l0eTogMC45O1xufVxuXG4lZGF0YS1pY29uLXRvcCB7XG4gICY6OmJlZm9yZSB7XG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xuICB9XG59XG5cbiVmdWxsc2NyZWVuLW1hc2sge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZDogJGMtcGFnZS1tYXNrO1xuICB6LWluZGV4OiB6KFwiZnVsbHNjcmVlbi1tYXNrXCIpO1xufVxuXG4lbGluay1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6IHooXCJsaW5rLW92ZXJsYXlcIik7XG59XG5cbiVhYnMtMTAwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuIiwiJWZsZXgtd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG59XG5cbiVmbGV4LWNlbnRlciB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtd3JhcCAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1jZW50ZXItbm93cmFwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1iZXR3ZWVuIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLW5vd3JhcCB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLXN0cmV0Y2gge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xufVxuXG4lZmxleC1hcm91bmQge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbn1cblxuJWZsZXgtY29sdW1uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW47XG59XG4iLCIlYm94LXJhZGl1cyB7XG4gIEBpbmNsdWRlIGJveC1yYWRpdXM7XG59XG5cbiVib3gtcmFkaXVzLWZvcmNlIHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC8qIGhlbHBzIHdpdGggY2xpcHBpbmcgYmFja2dyb3VuZCBpbnRvIGJvcmRlci1yYWRpdXMgKi9cbn1cblxuJWJveC1yYWRpdXMtbGVmdCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgMCAwICRib3gtcmFkaXVzLXNpemU7XG59XG5cbiVib3gtcmFkaXVzLXJpZ2h0IHtcbiAgYm9yZGVyLXJhZGl1czogMCAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemUgMDtcbn1cblxuJWJveC1yYWRpdXMtdG9wIHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplIDAgMDtcbn1cblxuJWJveC1yYWRpdXMtYm90dG9tIHtcbiAgYm9yZGVyLXJhZGl1czogMCAwICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuJWJveC1yYWRpdXMtdG9wLWxlZnQge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplIDAgMCAwO1xufVxuXG4lYm94LXJhZGl1cy10b3AtcmlnaHQge1xuICBib3JkZXItcmFkaXVzOiAwICRib3gtcmFkaXVzLXNpemUgMCAwO1xufVxuXG4lYm94LXNoYWRvdyB7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3c7XG59XG5cbiVib3gtbmVhdCB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzO1xufVxuXG4lYm94LW5lYXQtdG9wIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXMtdG9wO1xufVxuXG4lYm94LW5lYXQtZm9yY2Uge1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cy1mb3JjZTtcbn1cbiIsIiR2cC1taW4td2lkdGg6IDMyMHB4ICFkZWZhdWx0O1xuJHZwLW1heC13aWR0aDogMTIwMHB4ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkdmFsdWUpIHtcbiAgQHJldHVybiAkdmFsdWUgLyAoJHZhbHVlICogMCArIDEpO1xufVxuXG5AbWl4aW4gZmx1aWQtc2l6ZSgkcHJvcCwgJG1pbi1zaXplLCAkbWF4LXNpemUsICRtaW4tdnc6ICR2cC1taW4td2lkdGgsICRtYXgtdnc6ICR2cC1tYXgtd2lkdGgpIHtcbiAgJHUxOiB1bml0KCRtaW4tdncpO1xuICAkdTI6IHVuaXQoJG1heC12dyk7XG4gICR1MzogdW5pdCgkbWluLXNpemUpO1xuICAkdTQ6IHVuaXQoJG1heC1zaXplKTtcblxuICBAaWYgJHUxID09ICR1MiBhbmQgJHUxID09ICR1MyBhbmQgJHUxID09ICR1NCB7XG4gICAgJiB7XG4gICAgICAjeyRwcm9wfTogJG1pbi1zaXplO1xuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbi12dykge1xuICAgICAgICAjeyRwcm9wfTogY2FsYygjeyRtaW4tc2l6ZX0gKyAje3N0cmlwLXVuaXQoJG1heC1zaXplIC0gJG1pbi1zaXplKX0gKiAoKDEwMHZ3IC0gI3skbWluLXZ3fSkgLyAje3N0cmlwLXVuaXQoJG1heC12dyAtICRtaW4tdncpfSkpO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1heC12dykge1xuICAgICAgICAjeyRwcm9wfTogJG1heC1zaXplO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGVycm9yIFwiZmx1aWQtc2l6ZSByZXF1aXJlcyB0aGF0IGFsbCB2YWx1ZXMgaGF2ZSB0aGUgc2FtZSB1bml0XCI7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJjb29yZHMtY29sb3JzXCI7XG5cbmNvb3JkcyB7XG4gIC8qIGhhbmRsZSBoaWRkZW4gY29vcmRzICovXG4gIC5jb29yZHMtbm8gJiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC8qIGhhbmRsZSBpbm5lciBjb29yZHMgKi9cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICBAaW5jbHVkZSBmbHVpZC1zaXplKFwiZm9udC1zaXplXCIsIDhweCwgMTJweCk7XG5cbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4ICMwMDA7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuXG4gICYucmFua3Mge1xuICAgIGZsZXgtZmxvdzogY29sdW1uLXJldmVyc2U7XG4gICAgdG9wOiAxcHg7XG4gICAgcmlnaHQ6IDA7XG5cbiAgICAvLyBhIG5lZ2F0aXZlIHZhbHVlIGNyZWF0ZXMgZW1wdHkgc3BhY2Ugb24gdGhlIHJpZ2h0IHNpZGUgaW4gbW9iaWxlIGJyb3dzZXJzXG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAuOGVtO1xuXG4gICAgJi5ibGFjayB7XG4gICAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICAmLmZpbGVzIHtcbiAgICBib3R0b206IDBweDtcbiAgICBsZWZ0OiAwO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgZmxleC1mbG93OiByb3c7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxLjRlbTtcblxuICAgICYuYmxhY2sge1xuICAgICAgZmxleC1mbG93OiByb3ctcmV2ZXJzZTtcbiAgICB9XG5cbiAgICBjb29yZCB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDRweDtcbiAgICB9XG4gIH1cblxuICBjb29yZCB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gIH1cblxuICAvKiBuZWdhdGUgaW5uZXIgY29vcmRzIGNvbG9ycyAqL1xuICAuaXMzZCAuY2ctd3JhcCBjb29yZHMgY29vcmQge1xuICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDJweCAjMDAwICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaXMzZCAuY2ctd3JhcCBjb29yZHMuZmlsZXMge1xuICAgIGJvdHRvbTogY2FsYygxcHggLSAyLjUlKTtcblxuICAgIGNvb3JkIHtcbiAgICAgIHBhZGRpbmctbGVmdDogM3B4O1xuICAgIH1cbiAgfVxufVxuXG5AaW5jbHVkZSBjb29yZHMtY29sb3JzO1xuXG4vKiBoYW5kbGUgb3V0ZXIgY29vcmRzICovXG5AaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyLXVuaWJvYXJkKSB7XG4gIC5jb29yZHMtb3V0IGNvb3JkcyB7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmU7XG5cbiAgICAmLnJhbmtzIHtcbiAgICAgIHJpZ2h0OiAtMTVweDtcbiAgICAgIHRvcDogMDtcbiAgICAgIHdpZHRoOiAxMnB4O1xuXG4gICAgICBjb29yZCB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MiUpO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuZmlsZXMge1xuICAgICAgYm90dG9tOiAtMTVweDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgY29vcmQge1xuICAgICAgY29sb3I6ICRjLWZvbnQtcGFnZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuIiwiQG1peGluIGNvb3Jkcy1jb2xvcnMge1xuICA6cm9vdCB7XG4gICAgLS1jZy1jb29yZC1jb2xvci13aGl0ZTogI2ZmZjtcbiAgICAtLWNnLWNvb3JkLWNvbG9yLWJsYWNrOiAjZmZmO1xuICAgIC0tY2ctY29vcmQtc2hhZG93OiAwIDFweCAycHggIzAwMDtcbiAgfVxuXG4gIGNvb3JkcyB7XG4gICAgdGV4dC1zaGFkb3c6IHZhcigtLWNnLWNvb3JkLXNoYWRvdyk7XG4gIH1cblxuICAub3JpZW50YXRpb24td2hpdGUgLmZpbGVzIGNvb3JkOm50aC1jaGlsZCgybisxKSxcbiAgLm9yaWVudGF0aW9uLXdoaXRlIC5yYW5rcyBjb29yZDpudGgtY2hpbGQoMm4pLFxuICAub3JpZW50YXRpb24tYmxhY2sgLmZpbGVzIGNvb3JkOm50aC1jaGlsZCgybiksXG4gIC5vcmllbnRhdGlvbi1ibGFjayAucmFua3MgY29vcmQ6bnRoLWNoaWxkKDJuKzEpIHtcbiAgICBjb2xvcjogdmFyKC0tY2ctY29vcmQtY29sb3Itd2hpdGUpO1xuICB9XG5cbiAgLm9yaWVudGF0aW9uLXdoaXRlIC5maWxlcyBjb29yZDpudGgtY2hpbGQoMm4pLFxuICAub3JpZW50YXRpb24td2hpdGUgLnJhbmtzIGNvb3JkOm50aC1jaGlsZCgybisxKSxcbiAgLm9yaWVudGF0aW9uLWJsYWNrIC5maWxlcyBjb29yZDpudGgtY2hpbGQoMm4rMSksXG4gIC5vcmllbnRhdGlvbi1ibGFjayAucmFua3MgY29vcmQ6bnRoLWNoaWxkKDJuKSB7XG4gICAgY29sb3I6IHZhcigtLWNnLWNvb3JkLWNvbG9yLWJsYWNrKTtcbiAgfVxufVxuIiwiYm9keSB7XG4gIC0tYm9hcmQtc2NhbGU6IDE7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtem9vbS1lbmFibGVkKSB7XG4gICAgLy8gLS16b29tOiA4MDsgZGVmaW5lZCBpbiB0aGUgSFRNTCwgbG9hZGVkIGZyb20gc2VydmVyXG4gICAgLS1ib2FyZC1zY2FsZTogY2FsYygodmFyKC0tem9vbSkgLyAxMDApICogMC43ICsgMC4zKTtcbiAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxLXVuaWJvYXJkKSB7XG4gIGJvZHkge1xuICAgIC0tY29sMTogMTtcbiAgfVxuXG4gIC5tYWluLWJvYXJkIGNnLWJvYXJkIHtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICB9XG59XG4iLCJib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXIsXG5ib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHtcbiAgd2lkdGg6IC41cmVtO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG59XG5cbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xufVxuXG5ib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIsXG5ib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6YWN0aXZlIHtcbiAgYmFja2dyb3VuZDogJGMtZm9udC1kaW1tZXI7XG59XG4iLCJib2R5LnJlc2l6aW5nIHtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbmNnLXJlc2l6ZSB7XG4gICRyZXNpemUtd2lkdGg6IDIycHg7XG5cbiAgZGlzcGxheTogbm9uZTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ib2FyZC1yZXNpemFibGUpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6ICN7MTNweCAtICRyZXNpemUtd2lkdGh9O1xuICAgIGJvdHRvbTogI3sxM3B4IC0gJHJlc2l6ZS13aWR0aH07XG4gICAgd2lkdGg6ICRyZXNpemUtd2lkdGg7XG4gICAgaGVpZ2h0OiAkcmVzaXplLXdpZHRoO1xuICAgIGN1cnNvcjogbndzZS1yZXNpemU7XG5cbiAgICAmOjpiZWZvcmUsICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICMwMDA7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAxMnB4O1xuICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHdpZHRoOiA1cHg7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg3cHgsIDhweCkgcm90YXRlKC00NWRlZyk7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMXB4LCA2cHgpIHJvdGF0ZSgtNDVkZWcpO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgYmFja2dyb3VuZDogZmFkZS1vdXQoJGMtYWNjZW50LCAwLjUpO1xuICAgIH1cblxuICAgIC5yZXNpemluZyAmIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJhY2tncm91bmQ6IGZhZGUtb3V0KCRjLXNlY29uZGFyeSwgMC41KTtcbiAgICB9XG4gIH1cbn1cbiIsIiNtb2RhbCB7XG4gICYtb3ZlcmxheSB7XG4gICAgQGV4dGVuZCAlZnVsbHNjcmVlbi1tYXNrLCAlZmxleC1jZW50ZXI7XG5cbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gICYtd3JhcCB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cywgJXBvcHVwLXNoYWRvdywgJWZsZXgtY29sdW1uO1xuXG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAycmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXgtd2lkdGg6IDEwMHZ3O1xuICAgIG1heC1oZWlnaHQ6IDk2dmg7XG5cbiAgICA+IGRpdiB7XG4gICAgICBvdmVyZmxvdzogYXV0bztcbiAgICB9XG5cbiAgICAuY2xvc2Uge1xuICAgICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICBsaW5lLWhlaWdodDogMjdweDtcbiAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgdG9wOiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zbWFsbCkge1xuICAgICAgICB0b3A6IC0xMnB4O1xuICAgICAgICByaWdodDogLTEycHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXBvcHVwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmNsb3NlOmhvdmVyIHtcbiAgICAgIEBleHRlbmQgJWJveC1zaGFkb3c7XG5cbiAgICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cbiAgfVxufVxuIiwiLmNvbnRpbnVlLXdpdGgge1xuICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICA+ICo6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgIG1hcmdpbi10b3A6IDFlbTtcbiAgfVxufVxuIiwiLmNvbG9yLWljb24ge1xuICBAaWYgJHRoZW1lLWxpZ2h0IHtcbiAgICAmLndoaXRlOjpiZWZvcmUge1xuICAgICAgY29udGVudDogXCJLXCI7XG4gICAgfVxuXG4gICAgJi5ibGFjazo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiSlwiO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJi53aGl0ZTo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiSlwiO1xuICAgIH1cblxuICAgICYuYmxhY2s6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIktcIjtcbiAgICB9XG4gIH1cblxuICAmLnJhbmRvbTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcImxcIjtcbiAgfVxufVxuIiwiQGluY2x1ZGUgY3Jvc3N0YWJsZS1zbWFsbDtcblxuLmNyb3NzdGFibGUge1xuICBAZXh0ZW5kICVib3gtbmVhdC1mb3JjZTtcblxuICB3aWR0aDogMTAwJTtcbiAgbGluZS1oZWlnaHQ6IDEuOWVtO1xuICBkaXNwbGF5OiBmbGV4O1xuXG4gIGZpbGwsXG4gIHBvdnMge1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxuXG4gIHBvdnMsXG4gICZfX3VzZXJzLFxuICAmX19zY29yZSxcbiAgJl9fbWF0Y2h1cCB7XG4gICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAmX191c2VycyxcbiAgJl9fc2NvcmUge1xuICAgIEBleHRlbmQgJW1ldGFsO1xuICB9XG5cbiAgJl9fdXNlcnMge1xuICAgIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gICAgbWF4LXdpZHRoOiA0MHZ3O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICBhIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJGJsb2NrLWdhcDtcbiAgICB9XG4gIH1cblxuICAmX19zY29yZSB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cbiAgICBzcGFuIHtcbiAgICAgIHBhZGRpbmc6IDAgJGJsb2NrLWdhcDtcbiAgICB9XG4gIH1cblxuICAmX19tYXRjaHVwIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCAyMCUpO1xuICB9XG5cbiAgcG92cyB7XG4gICAgYSB7XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgICBmbGV4OiAwIDAgNTAlO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgQGV4dGVuZCAlbWV0YWw7XG5cbiAgICAgIGEge1xuICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYS5sb3NzIHtcbiAgICAgIG9wYWNpdHk6IC4yO1xuICAgIH1cblxuICAgICYuY3VycmVudCBhIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1hY2NlbnQsICRjLWJnLWJveCwgNzAlKTtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgICYubmV3IHtcbiAgICAgIGJvcmRlcjogJGMtYm9yZGVyO1xuICAgIH1cblxuICAgIGEubG9zcyB7XG4gICAgICBvcGFjaXR5OiAuMjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteC1zbWFsbCkge1xuICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgJjpudGgtbGFzdC1jaGlsZCgtbisxMikge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5zZXAge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMtbGVmdDtcblxuICAgIGJvcmRlci1sZWZ0OiAkYm9yZGVyO1xuICAgIG1hcmdpbi1sZWZ0OiAuM2VtO1xuICB9XG5cbiAgLndpbiB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgY29sb3I6ICRjLWdvb2Q7XG4gIH1cblxuICAubG9zcyB7XG4gICAgY29sb3I6ICRjLWJhZDtcbiAgfVxuXG4gIC51bmF2YWlsYWJsZSB7XG4gICAgbWFyZ2luLXRvcDogNDBweDtcbiAgICBvcGFjaXR5OiAwLjc7XG4gIH1cbn1cbiIsIi5mYnQge1xuICBAZXh0ZW5kICVidXR0b24tbm9uZTtcblxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsaW5lLWhlaWdodDogMS41O1xuXG4gIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICAmOmhvdmVyOm5vdCguZGlzYWJsZWQpOm5vdChbZGlzYWJsZWRdKSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZWQxYzI0O1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuICB9XG5cbiAgJi5hY3RpdmUge1xuICAgIGJhY2tncm91bmQ6ICNiZDExMWYgIWltcG9ydGFudDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICZbZGlzYWJsZWRdIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICB9XG59XG4iLCIuY21uLXRvZ2dsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLWxlZnQ6IC05OTk5OXB4O1xufVxuXG4uY21uLXRvZ2dsZSArIGxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xufVxuXG4uY21uLXRvZ2dsZSArIGxhYmVsIHtcbiAgcGFkZGluZzogMXB4O1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6IDI0cHg7XG59XG5cbi5jbW4tdG9nZ2xlICsgbGFiZWw6OmJlZm9yZSxcbi5jbW4tdG9nZ2xlICsgbGFiZWw6OmFmdGVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxcHg7XG4gIGxlZnQ6IDFweDtcbiAgYm90dG9tOiAxcHg7XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG5cbi5jbW4tdG9nZ2xlICsgbGFiZWw6OmJlZm9yZSB7XG4gIHJpZ2h0OiAxcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjLWJhZDtcbiAgYm9yZGVyLXJhZGl1czogMjRweDtcbn1cblxuLmNtbi10b2dnbGU6Zm9jdXMgKyBsYWJlbDo6YmVmb3JlIHtcbiAgQGV4dGVuZCAlZm9jdXMtc2hhZG93O1xufVxuXG4uY21uLXRvZ2dsZS0tc3VidGxlICsgbGFiZWw6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiZDExMWY7XG59XG5cbi5jbW4tdG9nZ2xlOmhvdmVyICsgbGFiZWw6OmJlZm9yZSB7XG4gIEBleHRlbmQgJWZvY3VzLXNoYWRvdztcblxuICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQpO1xufVxuXG4uY21uLXRvZ2dsZSArIGxhYmVsOjphZnRlciB7XG4gIEBleHRlbmQgJW1ldGFsO1xuXG4gIHdpZHRoOiAyMnB4O1xuICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICBib3gtc2hhZG93OiAwIDFweCAyLjVweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG59XG5cbi5jbW4tdG9nZ2xlOmhvdmVyICsgbGFiZWw6OmFmdGVyIHtcbiAgQGV4dGVuZCAlbWV0YWwtaG92ZXI7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihtYXJnaW4pO1xufVxuXG4uY21uLXRvZ2dsZTpjaGVja2VkICsgbGFiZWw6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjLWdvb2Q7XG59XG5cbi5jbW4tdG9nZ2xlOmNoZWNrZWQgKyBsYWJlbDo6YWZ0ZXIge1xuICBtYXJnaW4tbGVmdDogMTZweDtcbn1cbiIsIkBtaXhpbiByYW5nZS10aHVtYiB7XG4gIEBpbmNsdWRlIG1ldGFsO1xuXG4gIGJvcmRlcjogMXB4IHNvbGlkICRjLWZvbnQtZGltbWVyO1xuICBoZWlnaHQ6IDFlbTtcbiAgd2lkdGg6IDEuNWVtO1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuQG1peGluIHJhbmdlLXRyYWNrIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMWVtO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xuICBib3JkZXItcmFkaXVzOiAuNWVtO1xufVxuXG5pbnB1dFt0eXBlPXJhbmdlXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiAwO1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XG4gICAgQGluY2x1ZGUgcmFuZ2UtdHJhY2s7XG4gIH1cblxuICAmOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgQGluY2x1ZGUgcmFuZ2UtdGh1bWI7XG5cbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgbWFyZ2luLXRvcDogLTAuM3B4O1xuICB9XG5cbiAgJjo6LW1vei1yYW5nZS10cmFjayB7XG4gICAgQGluY2x1ZGUgcmFuZ2UtdHJhY2s7XG4gIH1cblxuICAmOjotbW96LXJhbmdlLXRodW1iIHtcbiAgICBAaW5jbHVkZSByYW5nZS10aHVtYjtcbiAgfVxuXG4gICY6Oi1tcy10cmFjayB7XG4gICAgQGluY2x1ZGUgcmFuZ2UtdHJhY2s7XG4gIH1cblxuICAmOjotbXMtZmlsbC1sb3dlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxOTEsIDE5MSwgMTkxLCAwLjc4KTtcbiAgICBib3JkZXItcmFkaXVzOiAxMS44cHg7XG4gIH1cblxuICAmOjotbXMtZmlsbC11cHBlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyMTQsIDIxNCwgMjE0LCAwLjc4KTtcbiAgICBib3JkZXItcmFkaXVzOiAxMS44cHg7XG4gIH1cblxuICAmOjotbXMtdGh1bWIge1xuICAgIEBpbmNsdWRlIHJhbmdlLXRodW1iO1xuXG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJleHRlbmRcIjtcblxuLnR2aWV3MiB7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG5cbiAgJi1jb2x1bW4ge1xuICAgIEBleHRlbmQgJWZsZXgtd3JhcDtcbiAgfVxuXG4gICYtaW5saW5lIHtcbiAgICBwYWRkaW5nOiA3cHggM3B4IDdweCA3cHg7XG4gIH1cblxuICBtb3ZlIHtcbiAgICBAZXh0ZW5kICVtb3ZlO1xuICB9XG5cbiAgJi1jb2x1bW4gbW92ZSB7XG4gICAgZm9udC1zaXplOiAxLjA5MmVtO1xuICAgIHBhZGRpbmc6IDAgMnB4O1xuICB9XG5cbiAgJi1pbmxpbmUgbW92ZSB7XG4gICAgcGFkZGluZzogLjI1ZW0gLjE3ZW07XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIG1vdmUucGFyZW50IHtcbiAgICBjb2xvcjogJGMtcHJpbWFyeTtcbiAgfVxuXG4gIGNvbW1lbnQgYSB7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgfVxuXG4gIG1vdmUuY3VycmVudCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGMtYWNjZW50O1xuICB9XG5cbiAgbW92ZS5hY3RpdmUge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDIwJSk7XG4gIH1cblxuICAmLWlubGluZSBtb3ZlLmFjdGl2ZSB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cztcbiAgfVxuXG4gIG1vdmUubm9uZ2FtZSB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICB9XG5cbiAgbW92ZTpub3QoLmVtcHR5KTpob3ZlciB7XG4gICAgJixcbiAgICBpbmRleCxcbiAgICBldmFsIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLXByaW1hcnk7XG4gICAgICBjb2xvcjogJGMtcHJpbWFyeS1vdmVyO1xuICAgIH1cbiAgfVxuXG4gICYtaW5saW5lIG1vdmU6aG92ZXIge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXM7XG4gIH1cblxuICBtb3ZlLmVtcHR5IHtcbiAgICBjb2xvcjogJGMtZm9udC1kaW1tZXI7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICB9XG5cbiAgbW92ZSBpbmRleCB7XG4gICAgZm9udC1zaXplOiA5MCU7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICB9XG5cbiAgbW92ZS5jb250ZXh0LW1lbnUge1xuICAgIGJhY2tncm91bmQ6ICRjLWFjY2VudDtcbiAgICBjb2xvcjogJGMtYWNjZW50LW92ZXI7XG5cbiAgICBpbmRleCB7XG4gICAgICBjb2xvcjogJGMtYWNjZW50LW92ZXI7XG4gICAgfVxuICB9XG5cbiAgJi1jb2x1bW4gbW92ZSBpbmRleCB7XG4gICAgcGFkZGluZy1sZWZ0OiA1cHg7XG4gIH1cblxuICAmLWNvbHVtbiBtb3ZlIGluZGV4OmZpcnN0LWNoaWxkIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gIH1cblxuICAmLWlubGluZSBtb3ZlIGluZGV4IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAuMmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxMTEuMTElO1xuICB9XG5cbiAgbGluZSBtb3ZlIHtcbiAgICBjb2xvcjogJGMtZm9udDtcbiAgfVxuXG4gICYtY29sdW1uID4gbW92ZSB7XG4gICAgZmxleDogMCAwIDQzLjUlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZm9udC1zaXplOiAxLjE4NWVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjc1ZW07XG4gICAgcGFkZGluZzogMCAuM2VtIDAgLjVlbTtcbiAgfVxuXG4gICYtY29sdW1uID4gaW5kZXggKyBtb3ZlIHtcbiAgICBib3JkZXItcmlnaHQ6ICRjLWJvcmRlcjtcbiAgfVxuXG4gIGV2YWwge1xuICAgIEBleHRlbmQgJXJvYm90bztcblxuICAgIGZsZXg6IDMgMCBhdXRvO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGZvbnQtc2l6ZTogLjhlbTtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gIH1cblxuICBnbHlwaCB7XG4gICAgQGV4dGVuZCAlYmFzZS1mb250O1xuXG4gICAgbWFyZ2luLWxlZnQ6IC4wOGVtO1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gIH1cblxuICAmLWNvbHVtbiA+IG1vdmUgZ2x5cGgge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGZvbnQtc2l6ZTogLjgyZW07XG4gIH1cblxuICAmLWNvbHVtbiA+IGluZGV4IHtcbiAgICBmbGV4OiAwIDAgMTMlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm9yZGVyLXJpZ2h0OiAkYm9yZGVyO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIGxpbmUtaGVpZ2h0OiAyLjA3ZW07XG4gICAgY29sb3I6ICRjLWZvbnQtZGltbWVyO1xuICB9XG5cbiAgPiBpbnRlcnJ1cHQge1xuICAgIGZvbnQtc2l6ZTogOTUlO1xuICB9XG5cbiAgJi1jb2x1bW4gPiBpbnRlcnJ1cHQge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYy1ib3JkZXI7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLWJvcmRlcjtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cblxuICAmLWNvbHVtbiA+IGludGVycnVwdCA+IGNvbW1lbnQge1xuICAgIEBleHRlbmQgJWJyZWFrLXdvcmQ7XG5cbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAzcHggNXB4O1xuICB9XG5cbiAgJi1pbmxpbmUgY29tbWVudCB7XG4gICAgdmVydGljYWwtYWxpZ246IDQ1JTtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgbWFyZ2luOiAwIC4yZW0gMCAuMWVtO1xuICAgIGZvbnQtc2l6ZTogLjllbTtcbiAgfVxuXG4gIGNvbW1lbnQgLmJ5IHtcbiAgICBAZXh0ZW5kICVub3dyYXAtZWxsaXBzaXMsICVyb2JvdG87XG5cbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IC0uM2VtO1xuICAgIGZvbnQtc2l6ZTogLjllbTtcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgbWFyZ2luLXJpZ2h0OiAuNGVtO1xuICAgIG1heC13aWR0aDogOWVtO1xuICB9XG5cbiAgJi1jb2x1bW4gY29tbWVudC53aGl0ZSB7XG4gICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZDtcbiAgfVxuXG4gICYtY29sdW1uIGNvbW1lbnQuYmxhY2sge1xuICAgIGJvcmRlci1yaWdodDogM3B4IHNvbGlkO1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgfVxuXG4gICYtY29sdW1uIGNvbW1lbnQuaW5hY2N1cmFjeSB7XG4gICAgYm9yZGVyLWNvbG9yOiAjNTZCNEU5O1xuICB9XG5cbiAgJi1jb2x1bW4gY29tbWVudC5taXN0YWtlIHtcbiAgICBib3JkZXItY29sb3I6ICNFNjlGMDA7XG4gIH1cblxuICAmLWNvbHVtbiBjb21tZW50LmJsdW5kZXIge1xuICAgIGJvcmRlci1jb2xvcjogI0RGNTM1MztcbiAgfVxuXG4gICYtY29sdW1uIGNvbW1lbnQudW5kZWZpbmVkIHtcbiAgICBib3JkZXItY29sb3I6ICM2NjU1OEM7XG4gIH1cblxuICBsaW5lIGNvbW1lbnQge1xuICAgIGZvbnQtc2l6ZTogOTAlO1xuICB9XG5cbiAgJi1jb2x1bW4gbGluZSBjb21tZW50IHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICBwYWRkaW5nOiAwIDVweCAwIDNweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICB9XG5cbiAgbGluZSBjb21tZW50IC5ieSB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgfVxuXG4gIGxpbmVzIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgbWFyZ2luLWxlZnQ6IDZweDtcbiAgICBtYXJnaW4tYm90dG9tOiAuOGVtO1xuICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgJGMtYm9yZGVyO1xuICB9XG5cbiAgPiBpbnRlcnJ1cHQgPiBsaW5lcyB7XG4gICAgbWFyZ2luLWxlZnQ6IDBweDtcbiAgfVxuXG4gIGxpbmVzLnNpbmdsZSB7XG4gICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gIH1cblxuICBsaW5lczpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgbGluZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZy1sZWZ0OiA3cHg7XG4gIH1cblxuICAmLWNvbHVtbiBsaW5lIHtcbiAgICBtYXJnaW46IDJweCAwO1xuICB9XG5cbiAgbGluZXMgbGluZXMgbW92ZSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICB9XG5cbiAgbGluZXMgbGluZXMge1xuICAgIG1hcmdpbi1sZWZ0OiAxcHg7XG4gIH1cblxuICBsaW5lcyBsaW5lczo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnICc7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICRjLWJvcmRlcjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luLWxlZnQ6IC0xMXB4O1xuICAgIHdpZHRoOiA5cHg7XG4gICAgaGVpZ2h0OiA2cHg7XG4gIH1cblxuICBsaW5lcyBsaW5lOjpiZWZvcmUge1xuICAgIG1hcmdpbi10b3A6IC42NWVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtOHB4O1xuICAgIGNvbnRlbnQ6ICcgJztcbiAgICBib3JkZXItdG9wOiAycHggc29saWQgJGMtYm9yZGVyO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogOHB4O1xuICAgIGhlaWdodDogNnB4O1xuICB9XG5cbiAgbGluZXMgbGluZXM6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIGlubGluZSB7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBmb250LXNpemU6IC45ZW07XG4gICAgb3BhY2l0eTogMC44O1xuICB9XG5cbiAgaW5saW5lOjpiZWZvcmUsXG4gIGlubGluZTo6YWZ0ZXIge1xuICAgIHZlcnRpY2FsLWFsaWduOiAuNGVtO1xuICAgIG9wYWNpdHk6IDAuNztcbiAgICBmb250LXNpemU6IC45ZW07XG4gIH1cblxuICBpbmxpbmU6OmJlZm9yZSB7XG4gICAgY29udGVudDogJygnO1xuICAgIG1hcmdpbi1sZWZ0OiAycHg7XG4gIH1cblxuICBpbmxpbmU6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnKSc7XG4gICAgbWFyZ2luLXJpZ2h0OiAycHg7XG4gIH1cblxuICAmLWlubGluZSBpbmxpbmU6OmJlZm9yZSxcbiAgJi1pbmxpbmUgaW5saW5lOjphZnRlciB7XG4gICAgdmVydGljYWwtYWxpZ246IC43ZW07XG4gIH1cblxuICAuY29uY2VhbCB7XG4gICAgb3BhY2l0eTogMC40O1xuICB9XG5cbiAgLmhpZGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIiVtb3ZlIHtcbiAgQGV4dGVuZCAlc2FuLCAlbm93cmFwLWhpZGRlbjtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbiIsIkBpbXBvcnQgXCJjdHJsXCI7XG5AaW1wb3J0IFwicHZcIjtcbiIsIi5jZXZhbCB7XG4gIEBleHRlbmQgJW1ldGFsLWJnO1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG5cbiAgJi5lbmFibGVkIHtcbiAgICBwYWRkaW5nLXRvcDogMnB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgfVxuXG4gIC5zd2l0Y2gge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gICAgZmxleDogMCAwIDQwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gIH1cblxuICBwZWFybCB7XG4gICAgZmxleDogMCAwIDc1cHg7XG4gICAgbGluZS1oZWlnaHQ6IDM4cHg7XG4gICAgZm9udC1zaXplOiAxLjZlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICBoZWxwLFxuICAuZW5naW5lIHtcbiAgICBAZXh0ZW5kICVub3dyYXAtaGlkZGVuO1xuXG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgIG1hcmdpbi10b3A6IDNweDtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gIH1cblxuICAuZW5naW5lIHtcbiAgICAuY2xvdWQge1xuICAgICAgQGV4dGVuZCAlcm9ib3RvLCAlYm94LXJhZGl1cztcblxuICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICAgIGJhY2tncm91bmQ6ICNiZDExMWY7XG4gICAgICBjb2xvcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG4gICAgICBwYWRkaW5nOiAxcHggM3B4O1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICB9XG5cbiAgICAuaW5mbyB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuXG4gICAgLmRlZXBlciB7XG4gICAgICBjb2xvcjogJGMtcHJpbWFyeTtcbiAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgfVxuXG4gICAgLmRlZXBlcjo6YmVmb3JlIHtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiAtMnB4O1xuICAgIH1cbiAgfVxuXG4gIC53YXNteCB7XG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGNvbG9yOiAkYy1nb29kO1xuICB9XG5cbiAgLmFzbWpzLCAud2FzbSB7XG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB9XG5cbiAgLmJhciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogM3B4O1xuICAgIHRvcDogMHB4O1xuICB9XG5cbiAgQGtleWZyYW1lcyBiYXItYW5pbSB7XG4gICAgZnJvbSB7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwMDAwcHggMDtcbiAgICB9XG4gIH1cblxuICAuYmFyIHNwYW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogM3B4O1xuICAgIHdpZHRoOiAwO1xuICAgIGJhY2tncm91bmQ6ICNiZDExMWY7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMXM7XG5cbiAgICAmLnRocmVhdCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iYWQ7XG4gICAgfVxuICB9XG5cbiAgJi5jb21wdXRpbmcgLmJhciBzcGFuIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKFwiYmFyLWhpZ2hsaWdodC5wbmdcIik7XG4gICAgYW5pbWF0aW9uOiBiYXItYW5pbSAxMDAwcyBsaW5lYXIgaW5maW5pdGU7XG4gIH1cblxuICAuc2hvdy10aHJlYXQge1xuICAgIGZsZXg6IDAgOTkgYXV0bztcbiAgICBsaW5lLWhlaWdodDogMzhweDtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgZm9udC1zaXplOiAuOWVtO1xuICAgIHBhZGRpbmctcmlnaHQ6IC41ZW07XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICY6aG92ZXI6bm90KC5oaWRkZW4pLFxuICAgICYuYWN0aXZlIHtcbiAgICAgIGNvbG9yOiAkYy1yZWQ7XG4gICAgfVxuXG4gICAgJi5oaWRkZW4ge1xuICAgICAgb3BhY2l0eTogMC4zO1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgIH1cbiAgfVxufVxuIiwiLnB2X2JveCB7XG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgZm9udC1zaXplOiAxM3B4O1xuXG4gIC5wdiB7XG4gICAgQGV4dGVuZCAlbm93cmFwLWVsbGlwc2lzO1xuXG4gICAgaGVpZ2h0OiAyZW07XG4gICAgbGluZS1oZWlnaHQ6IDJlbTtcbiAgICBib3JkZXItdG9wOiAkYm9yZGVyO1xuXG4gICAgJltkYXRhLXVjaV06aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCAyMCUpO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIHN0cm9uZyB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB3aWR0aDogMzRweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgIEBleHRlbmQgJXNhbjtcblxuICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICB9XG4gIH1cbn1cbiIsIm1haW4ge1xuICBAaW5jbHVkZSBmbHVpZC1zaXplKFwiLS1nYXVnZS1nYXBcIiwgOHB4LCAxN3B4KTtcbn1cblxuLmV2YWwtZ2F1Z2Uge1xuICB3aWR0aDogdmFyKC0tZ2F1Z2UtZ2FwKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kOiBpZigkdGhlbWUtbGlnaHQsICNmZmYsICNhMGEwYTApO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEtdW5pYm9hcmQpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cblxuICAmLnJldmVyc2Uge1xuICAgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpO1xuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm94LXNoYWRvdzogMCAwIDVweCByZ2JhKDAsIDAsIDAsIDAuNykgaW5zZXQ7XG4gIH1cblxuICB0aWNrIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHJpZGdlIGlmKCR0aGVtZS1saWdodCwgI2VlZSwgI2EwYTBhMCk7XG4gICAgb3BhY2l0eTogMC40O1xuICB9XG5cbiAgdGljay56ZXJvIHtcbiAgICB0b3A6IDZweDtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGJvcmRlci1ib3R0b206IDdweCBzb2xpZCBmYWRlLW91dCgkYy1hY2NlbnQsIDAuNik7XG4gICAgbWFyZ2luLXRvcDogLTNweDtcbiAgfVxuXG4gIC5ibGFjayB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA1MCU7XG4gICAgYmFja2dyb3VuZDogaWYoJHRoZW1lLWxpZ2h0LCAjODg4LCAjNjY2KTtcbiAgICB0cmFuc2l0aW9uOiBoZWlnaHQgMXM7XG4gIH1cbn1cbiIsIi5hbmFseXNlLWNvbnRyb2xzIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgZm9udC1zaXplOiAxLjNyZW07XG5cbiAgLmZidCB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cy1ib3R0b207XG5cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAuaGlkZGVuIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cblxuICAuanVtcHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAuZmJ0IHtcbiAgICAgIGZsZXg6IDEgMSAzMCU7XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQsXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBmbGV4OiAxIDEgMjAlO1xuICAgICAgICBmb250LXNpemU6IC43ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIjcHJvbW90aW9uLWNob2ljZSB7XG4gIEBleHRlbmQgJWFicy0xMDA7XG5cbiAgYmFja2dyb3VuZDogZmFkZS1vdXQoJGMtYmctcGFnZSwgMC4zKTtcbiAgei1pbmRleDogeihcImNnX19wcm9tb3Rpb25cIik7XG5cbiAgc3F1YXJlIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNiMGIwYjA7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDI1cHggM3B4ICM4MDgwODA7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuICB9XG5cbiAgcGllY2Uge1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgIG9wYWNpdHk6IDE7XG5cbiAgICAvKiBjYW5jZWxzIGJsaW5kZm9sZCAqL1xuICB9XG5cbiAgLmlzMmQgJiBwaWVjZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC44KTtcbiAgfVxuXG4gIHNxdWFyZTpob3ZlciB7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDQ4cHggOHB4ICRjLWFjY2VudDtcbiAgICBib3JkZXItcmFkaXVzOiAwJTtcbiAgfVxuXG4gIC5pczJkICYgc3F1YXJlOmhvdmVyIHBpZWNlIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cbiIsIi52YXJpYW50LXJhY2luZ0tpbmdzIC5jZy13cmFwIHtcbiAgJi5jZy13cmFwIGNnLWNvbnRhaW5lcjo6YmVmb3JlIHtcbiAgICBAZXh0ZW5kICVwb3B1cC1zaGFkb3c7XG5cbiAgICBiYWNrZ3JvdW5kOiBoc2xhKDAsIDAlLCA5MCUsIDAuMik7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMi41JTtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiAxO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG5cbiAgJi5vcmllbnRhdGlvbi13aGl0ZSBjZy1jb250YWluZXI6OmJlZm9yZSB7XG4gICAgdG9wOiAwO1xuICB9XG5cbiAgJi5vcmllbnRhdGlvbi1ibGFjayBjZy1jb250YWluZXI6OmJlZm9yZSB7XG4gICAgYm90dG9tOiAwO1xuICB9XG59XG5cbi52YXJpYW50LWtpbmdPZlRoZUhpbGwgY2ctY29udGFpbmVyOjpiZWZvcmUge1xuICB3aWR0aDogMjUlO1xuICBoZWlnaHQ6IDI1JTtcbiAgYm94LXNoYWRvdzogMCAwIDEwcHggcmdiYSgwLCAwLCAwLCAwLjcpO1xuICBiYWNrZ3JvdW5kOiBoc2xhKDAsIDAlLCA5MCUsIDAuMik7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMzcuNSU7XG4gIGxlZnQ6IDM3LjUlO1xuICB6LWluZGV4OiAxO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbiIsIiRjLW1zZWxlY3Q6ICRjLXByaW1hcnk7XG5cbi5tc2VsZWN0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICZfX3RvZ2dsZSB7XG4gICAgQGluY2x1ZGUgaGlkZTtcbiAgfVxuXG4gICZfX2xhYmVsIHtcbiAgICBAZXh0ZW5kICVib3gtbmVhdCwgJW1ldGFsLCAlZmxleC1iZXR3ZWVuO1xuXG4gICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICAgIHBhZGRpbmc6IC4zcmVtIC4zcmVtIC4zcmVtIDFyZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBAZXh0ZW5kICVtZXRhbC1ob3ZlcjtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBAZXh0ZW5kICVkYXRhLWljb247XG5cbiAgICAgIGNvbnRlbnQ6ICd1JztcbiAgICAgIGZvbnQtc2l6ZTogNzAlO1xuICAgICAgY29sb3I6ICRjLW1zZWxlY3Q7XG4gICAgfVxuICB9XG5cbiAgJl9fdG9nZ2xlOmNoZWNrZWQgfiAubXNlbGVjdF9fbGFiZWwge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24ob3BhY2l0eSk7XG5cbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgJl9fbGlzdCB7XG4gICAgQGV4dGVuZCAlYmFzZS1mb250LCAlYm94LXJhZGl1cywgJXBvcHVwLXNoYWRvdywgJWZsZXgtY29sdW1uO1xuXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiA2MHZoO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgei1pbmRleDogeihcIm1zZWxlY3RcIik7XG4gICAgYmFja2dyb3VuZDogJGMtYmctcG9wdXA7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAwKTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3A7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKHRyYW5zZm9ybSk7XG5cbiAgICAuY3VycmVudCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcblxuICAgICAgQGV4dGVuZCAlZmxleC1iZXR3ZWVuLW5vd3JhcDtcblxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBAZXh0ZW5kICVkYXRhLWljb247XG5cbiAgICAgICAgY29udGVudDogJ0UnO1xuICAgICAgICBmbGV4OiAxIDEgMTAwJTtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgPiAqIHtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBhZGRpbmc6IC4zZW0gMWVtO1xuXG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgICBjb2xvcjogJGMtbXNlbGVjdDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLW1zZWxlY3Q7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgfVxuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IC40ZW07XG4gICAgICB9XG5cbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuXG4gICAgLm1zZWxlY3RfX3RvZ2dsZTpjaGVja2VkIH4gJiB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3Qtc21hbGwpIHtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDEsIDEpO1xuICAgICAgfVxuXG5cbiAgICAgID4gKiB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMTI1bXMgZWFzZS1pbi1vdXQgMTI1bXM7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvKiBmcmVlIGFuYWx5c2lzIG9uIC9hbmFseXNpcyAqL1xuQGltcG9ydCBcImFuYWx5c2UuYmFzZVwiO1xuXG4uY29weWFibGVzIHtcbiAgLnBhaXIge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLmFjdGlvbiB7XG4gICAgICBAZXh0ZW5kICVib3gtcmFkaXVzLWJvdHRvbTtcblxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICB0b3A6IDEwMCU7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgIG9wYWNpdHk6IDA7XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG4gICAgfVxuXG4gICAgdGV4dGFyZWE6Zm9jdXMgfiAuYWN0aW9uIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgLm5hbWUge1xuICAgIGZsZXg6IDAgMCA1Y2g7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICB9XG5cbiAgLmNvcHlhYmxlIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxuXG4gIC5wZ24ge1xuICAgIG1hcmdpbjogMWVtIDA7XG5cbiAgICB0ZXh0YXJlYSB7XG4gICAgICBtaW4taGVpZ2h0OiA2ZW07XG4gICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgfVxuICB9XG59XG5cbi5tc2VsZWN0IHtcbiAgZm9udC1zaXplOiAxLjVlbTtcblxuICBsYWJlbCBzcGFuLFxuICBhIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgfVxuICB9XG59XG4iLCJAaW1wb3J0IFwidmFyaWFibGVzXCI7XG5cbiVib3JkZXItYm90dG9tLWFjdGl2ZSB7XG4gIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAjYmQxMTFmO1xuICB9XG59XG5cbkBpbXBvcnQgXCJsYXlvdXRcIjtcbkBpbXBvcnQgXCJ0b29sc1wiO1xuQGltcG9ydCBcImFjdGlvbi1tZW51XCI7XG5AaW1wb3J0IFwiZXhwbG9yZXJcIjtcbkBpbXBvcnQgXCJ0cmFpbmluZ1wiO1xuQGltcG9ydCBcInByYWN0aWNlXCI7XG5AaW1wb3J0IFwiZm9ya1wiO1xuQGltcG9ydCBcInNpZGVcIjtcbkBpbXBvcnQgXCJjb250ZXh0LW1lbnVcIjtcblxuLy8gQGltcG9ydCAnc2lkZS1jbG9jayc7XG4iLCIkbXEtY29sMTogJG1xLWNvbDEtdW5pYm9hcmQ7XG4kbXEtY29sMjogJG1xLWNvbDItdW5pYm9hcmQ7XG4kbXEtY29sMzogJG1xLWNvbDMtdW5pYm9hcmQ7XG5cbiRtZXRhLWhlaWdodDogdmFyKC0tbWV0YS1oZWlnaHQpO1xuJGNoYXQtaGVpZ2h0OiBmaXQtY29udGVudCgwKTtcbiIsImJvZHkge1xuICAvKiBwcmV2ZW50cyBzY3JvbGwgYmFyIGZsaWNrZXIgb24gcGFnZSBoZWlnaHQgY2hhbmdlcyAqL1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG59XG5cbiNtYWluLXdyYXAge1xuICAtLW1haW4tbWF4LXdpZHRoOiBjYWxjKDEwMHZoIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGNvbDEtdW5pYm9hcmQtY29udHJvbHN9KTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgLS1tYWluLW1heC13aWR0aDogYXV0bztcbiAgfVxufVxuXG4uYW5hbHlzZSB7XG4gIGdyaWQtYXJlYTogbWFpbjtcbiAgZGlzcGxheTogZ3JpZDtcblxuICAmX19zaWRlIHtcbiAgICBncmlkLWFyZWE6IHNpZGU7XG4gICAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgICBtYXJnaW46ICRibG9jay1nYXA7XG4gIH1cblxuICAmX19ib2FyZCxcbiAgLmludHJvIHtcbiAgICBncmlkLWFyZWE6IGJvYXJkO1xuICB9XG5cbiAgJl9fdG9vbHMge1xuICAgIGdyaWQtYXJlYTogdG9vbHM7XG4gIH1cblxuICAmX19jb250cm9scyB7XG4gICAgZ3JpZC1hcmVhOiBjb250cm9scztcbiAgfVxuXG4gICZfX3VuZGVyYm9hcmQge1xuICAgIGdyaWQtYXJlYTogdW5kZXI7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxLXVuaWJvYXJkKSB7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAvLyBoZWxwcyB0cnVuY2F0aW5nIGxvbmcgc3R1ZHkgbmFtZXNcbiAgICB9XG4gIH1cblxuICAmX19hY3BsIHtcbiAgICBncmlkLWFyZWE6IGFjcGw7XG4gIH1cblxuICAuY2hhdF9fbWVtYmVycyB7XG4gICAgZ3JpZC1hcmVhOiB1Y2hhdDtcbiAgfVxuXG4gIC5ldmFsLWdhdWdlIHtcbiAgICBncmlkLWFyZWE6IGdhdWdlO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAtLW1ldGEtaGVpZ2h0OiBhdXRvO1xuXG4gIEBpbmNsdWRlIHByb3Blci1ncmlkIHtcbiAgICAtLW1ldGEtaGVpZ2h0OiBtYXgtY29udGVudDtcbiAgfVxuXG5cbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvIGF1dG8gbWlubWF4KDIwZW0sIDMwdmgpO1xuICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnYm9hcmQnICdjb250cm9scycgJ3Rvb2xzJyAnc2lkZScgJ2FjcGwnICd1bmRlcicgJ2NoYXQnICd1Y2hhdCc7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogJGNvbDItdW5pYm9hcmQtd2lkdGggdmFyKC0tZ2F1Z2UtZ2FwKSAkY29sMi11bmlib2FyZC10YWJsZTtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGZpdC1jb250ZW50KDApO1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdib2FyZCAgICAgIGdhdWdlIHRvb2xzJyAndW5kZXIgICAgICAuICAgICBjb250cm9scycgJ3VuZGVyICAgICAgLiAgICAgYWNwbCcgJ3VuZGVyICAgICAgLiAgICAgc2lkZScgJ2NoYXQgICAgICAgLiAgICAgc2lkZScgJ3VjaGF0ICAgICAgLiAgICAgc2lkZSc7XG4gICAgZ3JpZC1yb3ctZ2FwOiAwO1xuXG4gICAgJl9fc2lkZSxcbiAgICAuY2hhdF9fbWVtYmVycyxcbiAgICAubWNoYXQge1xuICAgICAgbWFyZ2luOiAkYmxvY2stZ2FwIDAgMCAwO1xuICAgIH1cblxuICAgICZfX3VuZGVyYm9hcmQge1xuICAgICAgbWFyZ2luLXRvcDogJGJsb2NrLWdhcDtcbiAgICB9XG5cbiAgICAuZXZhbC1nYXVnZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDItdW5pYm9hcmQtc3F1ZWV6ZSkge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS13aWR0aCB2YXIoLS1nYXVnZS1nYXApICRjb2wyLXVuaWJvYXJkLXNxdWVlemUtdGFibGU7XG4gIH1cblxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDMpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRjb2wzLXVuaWJvYXJkLXNpZGUgJGJsb2NrLWdhcCAkY29sMy11bmlib2FyZC13aWR0aCB2YXIoLS1nYXVnZS1nYXApICRjb2wzLXVuaWJvYXJkLXRhYmxlO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogJG1ldGEtaGVpZ2h0ICRjaGF0LWhlaWdodCAyLjVlbSBhdXRvO1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdzaWRlICAgIC4gYm9hcmQgZ2F1Z2UgdG9vbHMnICdjaGF0ICAgIC4gYm9hcmQgZ2F1Z2UgdG9vbHMnICd1Y2hhdCAgIC4gdW5kZXIgLiAgICAgY29udHJvbHMnICd1Y2hhdCAgIC4gdW5kZXIgLiAgICAgYWNwbCc7XG5cbiAgICAmX19zaWRlIHtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuXG4gICAgLm1jaGF0IHtcbiAgICAgIG1pbi1oZWlnaHQ6IDEwZW07XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgY3Jvc3N0YWJsZS1sYXJnZTtcbiAgfVxufVxuIiwiLmFuYWx5c2Uge1xuICAmX190b29scyB7XG4gICAgQGV4dGVuZCAlYm94LW5lYXQtZm9yY2UsICVmbGV4LWNvbHVtbjtcblxuICAgIG1heC1oZWlnaHQ6IDEwMHZoO1xuXG4gICAgLyogbWFnaWNhbGx5IGZpeGVzIGZpdC1jb250ZW50IG9uIHNhZmFyaSAxMCAqL1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcblxuICAgIC5jZXZhbCB7XG4gICAgICBmbGV4OiAwIDAgMzhweDtcbiAgICB9XG5cbiAgICAuc3ViLWJveCB7XG4gICAgICBAZXh0ZW5kICVib3JkZXItYm90dG9tLWFjdGl2ZTtcblxuICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICAgIC50aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogLjlyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjllbTtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCA0MCUpO1xuICAgICAgICBwYWRkaW5nOiAwIDdweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmX19tb3ZlcyB7XG4gICAgZmxleDogMiAxIDA7XG5cbiAgICAvLyAwIHNpemUgZm9yY2VzIHZlcnRpY2FsIHNjcm9sbGJhclxuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuXG4gICAgLy8gZWxzZSBhIHNjcm9sbGJhciBhcHBlYXJzIHNvbWV0aW1lc1xuICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLyogcmVxdWlyZWQgc28gbGluZTo6YmVmb3JlIHNjcm9sbHMgYWxvbmcgdGhlIG1vdmVzISAqL1xuICAgIC5yZXN1bHQsXG4gICAgLnN0YXR1cyB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAucmVzdWx0IHtcbiAgICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICBwYWRkaW5nOiA1cHggMCAzcHggMDtcbiAgICB9XG5cbiAgICAuc3RhdHVzIHtcbiAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgcGFkZGluZy1ib3R0b206IDdweDtcbiAgICB9XG4gIH1cblxuICAmX19jb250cm9scyB7XG4gICAgaGVpZ2h0OiAkY29sMy11bmlib2FyZC1jb250cm9scztcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcblxuICAgIGRpdiB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICB9XG5cbiAgICAuanVtcHMge1xuICAgICAgZmxleDogMyAxIGF1dG87XG4gICAgfVxuXG4gICAgLmZidCB7XG4gICAgICBAZXh0ZW5kICVwYWdlLXRleHQ7XG5cbiAgICAgIGZsZXg6IDAgMCAyLjVyZW07XG4gICAgfVxuXG4gICAgLmFjdGl2ZSB7XG4gICAgICBtYXJnaW4tdG9wOiAtM3B4O1xuICAgICAgcGFkZGluZy10b3A6IDNweDtcbiAgICB9XG5cbiAgICA6OmJlZm9yZSB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxufVxuIiwiLmFjdGlvbi1tZW51IHtcbiAgQGV4dGVuZCAlYm9yZGVyLWJvdHRvbS1hY3RpdmU7XG5cbiAgZmxleDogMSAxIDA7XG5cbiAgLy8gMCBzaXplIGZvcmNlcyB2ZXJ0aWNhbCBzY3JvbGxiYXJcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW47XG4gIG92ZXJmbG93OiBhdXRvO1xuICBwYWRkaW5nOiAkYmxvY2stZ2FwO1xuXG4gIGgyIHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG1hcmdpbjogJGJsb2NrLWdhcCAwIDNweCAwO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHBhZGRpbmc6IDAgMTBweDtcblxuICAgICY6YmVmb3JlLFxuICAgICY6YWZ0ZXIge1xuICAgICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRvcDogLjVlbTtcbiAgICAgIHdpZHRoOiA0NSU7XG4gICAgfVxuXG4gICAgJjpiZWZvcmUge1xuICAgICAgcmlnaHQ6IDhweDtcbiAgICB9XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgIGxlZnQ6IDhweDtcbiAgICB9XG4gIH1cblxuICAmX190b29scyB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuXG4gICAgPiAqIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gICAgICBmbGV4OiAwIDAgNTAlO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGhlaWdodDogNzVweDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cblxuICAgIC5idXR0b24ge1xuICAgICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG5cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXNpemU6IDJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5hdXRvcGxheSB7XG4gICAgZGlzcGxheTogZmxleDtcblxuICAgIGEge1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgICAgZm9udC1zaXplOiAuOWVtO1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICBwYWRkaW5nOiA3cHggMDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gIH1cblxuICBmb3JtLmRlbGV0ZSB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgbWFyZ2luLXRvcDogNnB4O1xuXG4gICAgLmJ1dHRvbiB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBwYWRkaW5nOiAwIDhweDtcbiAgICB9XG5cbiAgICAuYnV0dG9uOjpiZWZvcmUge1xuICAgICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICB9XG4gIH1cblxuICAuc2V0dGluZyB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgbWFyZ2luLXRvcDogJGJsb2NrLWdhcDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgbGFiZWwge1xuICAgICAgZmxleDogNCAxIGF1dG87XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIGlucHV0W3R5cGU9cmFuZ2VdIHtcbiAgICAgIGZsZXg6IDEgNCBhdXRvO1xuICAgICAgcGFkZGluZzogMCAxZW07XG4gICAgICBoZWlnaHQ6IDEuNmVtO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLnJhbmdlX3ZhbHVlIHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgLmFic2V0LWlubGluZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC8vIGZvcmNlIGlubGluZSBvbiBtb2JpbGVcbiAgfVxufVxuIiwiLmV4cGxvcmVyLWJveCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxleDogMi41IDEgMHB4O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgdHJhbnNpdGlvbi1kZWxheTogMC4zcztcbiAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICBmb250LXNpemU6IC45ZW07XG5cbiAgJi5yZWR1Y2VkIHtcbiAgICBmbGV4OiAwLjMgMyAwcHg7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGZsZXg6IDEgMiAwcHg7XG4gICAgfVxuICB9XG5cbiAgLm92ZXJsYXkge1xuICAgIEBleHRlbmQgJWxpbmstb3ZlcmxheTtcblxuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAmLmxvYWRpbmcgLm92ZXJsYXkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgdGJvZHkge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG4gIH1cblxuICAmLmxvYWRpbmcgdGJvZHkge1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgfVxuXG4gIC50aXRsZSBzcGFuIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDEuOWVtO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgdXNlci1zZWxlY3Q6IHRleHQ7XG4gIH1cblxuICAuZW1wdHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiBjb2x1bW47XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgLm1lc3NhZ2Uge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgfVxuXG4gIHRyIHtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgJjpudGgtY2hpbGQoZXZlbikge1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1ib3gsIDIwJSk7XG4gICAgfVxuICB9XG5cbiAgdGQge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nLWxlZnQ6IDdweDtcbiAgfVxuXG4gIC5tb3ZlcyB0ZDpmaXJzdC1jaGlsZCB7XG4gICAgQGV4dGVuZCAlc2FuO1xuXG4gICAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gICAgcGFkZGluZy1sZWZ0OiA3cHg7XG4gIH1cblxuICAubW92ZXMgdGQ6bnRoLWNoaWxkKDIpIHtcbiAgICBmb250LXNpemU6IC43NWVtO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICB9XG5cbiAgLm1vdmVzIHRkOmxhc3QtY2hpbGQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmctcmlnaHQ6IDdweDtcbiAgfVxuXG4gIC5iYXIgc3BhbiB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgYm9yZGVyOiAwIHNvbGlkICRjLWJvcmRlcjtcbiAgICBib3JkZXItd2lkdGg6IDFweCAwO1xuICAgIGhlaWdodDogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMTRweDtcbiAgICBmb250LXNpemU6IC45ZW07XG4gIH1cblxuICAud2hpdGUge1xuICAgIGJhY2tncm91bmQ6IGlmKCR0aGVtZS1saWdodCwgI2ZmZiwgI2NjYyk7XG4gICAgYm94LXNoYWRvdzogMCAtNXB4IDdweCByZ2JhKDAsIDAsIDAsIGlmKCR0aGVtZS1saWdodCwgMC4xLCAwLjI1KSkgaW5zZXQ7XG5cbiAgICBAaWYgJHRoZW1lLWRhcmsge1xuICAgICAgY29sb3I6ICMyMjI7XG4gICAgfVxuICB9XG5cbiAgLmRyYXdzLFxuICAuYmxhY2sge1xuICAgIGNvbG9yOiBpZigkdGhlbWUtbGlnaHQsICNmZmYsICNkZGQpO1xuICAgIGJveC1zaGFkb3c6IDAgNXB4IDdweCByZ2JhKDI1NSwgMjU1LCAyNTUsIGlmKCR0aGVtZS1saWdodCwgMC4yLCAwLjEpKSBpbnNldDtcbiAgfVxuXG4gIC5kcmF3cyB7XG4gICAgYmFja2dyb3VuZDogaWYoJHRoZW1lLWxpZ2h0LCAjYTBhMGEwLCAjNjY2KTtcbiAgfVxuXG4gIC5ibGFjayB7XG4gICAgYmFja2dyb3VuZDogaWYoJHRoZW1lLWxpZ2h0LCAjNTU1LCAjMzMzKTtcbiAgICBjb2xvcjogI2RkZDtcbiAgfVxuXG4gIC5iYXIgc3BhbjpmaXJzdC1jaGlsZCB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cy1sZWZ0O1xuXG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDFweDtcbiAgfVxuXG4gIC5iYXIgc3BhbjpsYXN0LWNoaWxkIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzLXJpZ2h0O1xuXG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7XG4gIH1cblxuICAuZ2FtZXMge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLmdhbWVzIHRkIHtcbiAgICBwYWRkaW5nOiA1cHggMCA1cHggN3B4O1xuICAgIG1heC13aWR0aDogMTEwcHg7XG4gIH1cblxuICAuZ2FtZXMgdGQgc3BhbiB7XG4gICAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIC5nYW1lcyByZXN1bHQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAzcHggNXB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBmb250LXNpemU6IC45ZW07XG4gIH1cblxuICAuZ2FtZV9tZW51IHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1zZWNvbmRhcnk7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICAuZ2FtZV90aXRsZSB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBjb2xvcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG4gICAgICBtYXJnaW46IDNweCAwIDFweCAwO1xuICAgIH1cblxuICAgIC5tZW51IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXG4gICAgICBhIHtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgICB9XG5cbiAgICAgIGE6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnRhYmxlYmFzZSB7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICB0ZDpmaXJzdC1jaGlsZCB7XG4gICAgICBAZXh0ZW5kICVzYW47XG5cbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiA3cHg7XG4gICAgfVxuXG4gICAgdGQ6bGFzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiA3cHg7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICByZXN1bHQge1xuICAgICAgcGFkZGluZzogM3B4IDVweDtcbiAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICBmb250LXNpemU6IC45ZW07XG4gICAgfVxuICB9XG5cbiAgLnRvY29uZiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICB3aWR0aDogMS41ZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNWVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBvcGFjaXR5OiAwLjg7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgLm1lc3NhZ2Uge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgZmxleDogMSAxIDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gICYucmVkdWNlZCAubWVzc2FnZSB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICB9XG5cbiAgLm1lc3NhZ2Ugc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBtYXJnaW46IDFlbSAwO1xuICB9XG5cbiAgJjpub3QoLnJlZHVjZWQpIC5tZXNzYWdlIGgzLFxuICAmLnJlZHVjZWQ6aG92ZXIgLm1lc3NhZ2UgaDMge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB9XG5cbiAgLm1lc3NhZ2UgcCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICBwYWRkaW5nOiAwIDhweDtcbiAgICBtYXJnaW46IDAgMCA4cHggMDtcbiAgfVxuXG4gICYucmVkdWNlZCAubWVzc2FnZSBwLFxuICAmLnJlZHVjZWQgLm1lc3NhZ2UgYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgJi5yZWR1Y2VkOmhvdmVyIC5tZXNzYWdlIHAsXG4gICYucmVkdWNlZDpob3ZlciAubWVzc2FnZSBidXR0b24ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLm1lc3NhZ2UgYnV0dG9uIHtcbiAgICBtYXJnaW46IDAgMzBweDtcbiAgfVxuXG4gIC5tZXNzYWdlLm1hc3RlcnMgaSB7XG4gICAgZm9udC1zaXplOiA0MHB4O1xuICAgIG1hcmdpbjogMTBweCAwO1xuICB9XG5cbiAgLmNvbmZpZyB7XG4gICAgc2VjdGlvbiB7XG4gICAgICBtYXJnaW46IDAuNGVtICRibG9jay1nYXAgMCAkYmxvY2stZ2FwO1xuICAgIH1cblxuICAgIHNlY3Rpb24uc2F2ZSB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiAxNXB4IDAgMTBweCAwO1xuICAgIH1cblxuICAgIGxhYmVsIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBsaW5lLWhlaWdodDogMmVtO1xuICAgIH1cblxuICAgIC5jaG9pY2VzIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAgIHNwYW4ge1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIHBhZGRpbmc6IDVweCAwO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgICAgIGJvcmRlcjogJGJvcmRlcjtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMCAxcHggMXB4O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcblxuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICBAZXh0ZW5kICVib3gtcmFkaXVzLWxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgIEBleHRlbmQgJWJveC1yYWRpdXMtcmlnaHQ7XG5cbiAgICAgICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDFweDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICAgIH1cblxuICAgICAgICAmLnNlbGVjdGVkIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAkYy1zZWNvbmRhcnk7XG4gICAgICAgICAgY29sb3I6ICRjLXNlY29uZGFyeS1vdmVyO1xuICAgICAgICAgIHRleHQtc2hhZG93OiAxcHggMCAwIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjIpIGluc2V0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIudHJhaW5pbmctYm94IHtcbiAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgZmxleDogMS41IDEgMHB4O1xuXG4gIC5mZWVkYmFjayB7XG4gICAgZmxleDogMSAxIDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gIC5wcm9ncmVzcyB7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xuICAgIG9wYWNpdHk6IDAuODtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiAkYy1zaGFkZTtcbiAgfVxuXG4gIC5wcm9ncmVzcyBkaXYge1xuICAgIGJhY2tncm91bmQ6ICRjLWdvb2Q7XG4gICAgaGVpZ2h0OiA0cHg7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMC41cztcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cblxuICAucGxheWVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIH1cblxuICAubm8tc3F1YXJlIHtcbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDY0cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICB9XG5cbiAgLmlzM2QgJiBkaXYubm8tc3F1YXJlIHtcbiAgICBoZWlnaHQ6IDgycHg7XG4gIH1cblxuICBwaWVjZSB7XG4gICAgcG9zaXRpb246IGluaGVyaXQ7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5pY29uIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDY0cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIGZvbnQtc2l6ZTogNTBweDtcbiAgICBmb250LXNpemU6IDY0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDY0cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgLmluc3RydWN0aW9uID4gKiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAuaW5zdHJ1Y3Rpb24gPiBzdHJvbmcge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1zaXplOiAxLjJlbTtcbiAgfVxuXG4gIC5jaG9pY2VzIHtcbiAgICBsaW5lLWhlaWdodDogMS42ZW07XG4gICAgbWFyZ2luOiA1cHggMCAtNXB4IDA7XG4gIH1cblxuICAuY2hvaWNlcyBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuIiwiLnByYWN0aWNlLWJveCB7XG4gIGZsZXg6IDAgMCAxMzVweDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgLmNvbW1lbnQge1xuICAgIGZsZXg6IDAgMCAzMHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRib3JkZXI7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgfVxuXG4gIC5wcm9ncmVzcyBkaXYge1xuICAgIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xuICB9XG5cbiAgJi5nb29kTW92ZSAucHJvZ3Jlc3MgZGl2IHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICAgIGNvbG9yOiAjZmZmO1xuICB9XG5cbiAgJi5pbmFjY3VyYWN5IC50aXRsZSxcbiAgJi5pbmFjY3VyYWN5IC5wcm9ncmVzcyBkaXYge1xuICAgIGJhY2tncm91bmQ6ICRjLWJyYWc7XG4gICAgY29sb3I6ICNmZmY7XG4gIH1cblxuICAmLm1pc3Rha2UgLnRpdGxlLFxuICAmLmJsdW5kZXIgLnRpdGxlLFxuICAmLm1pc3Rha2UgLnByb2dyZXNzIGRpdixcbiAgJi5ibHVuZGVyIC5wcm9ncmVzcyBkaXYge1xuICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxuXG4gIC5jb21tZW50IC53YWl0IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gIH1cblxuICAudmVyZGljdCB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICAudmVyZGljdDo6YmVmb3JlIHtcbiAgICB3aWR0aDogMzBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgbWFyZ2luLXJpZ2h0OiA3cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS40ZW07XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxuXG4gICYuZ29vZE1vdmUgLnZlcmRpY3Qge1xuICAgIGNvbG9yOiAkYy1nb29kO1xuICB9XG5cbiAgJi5nb29kTW92ZSAudmVyZGljdDo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICAgIGNvbnRlbnQ6ICfinJMnO1xuICAgIGZvbnQtc2l6ZTogMS43ZW07XG4gIH1cblxuICAmLmluYWNjdXJhY3kgLnZlcmRpY3Qge1xuICAgIGNvbG9yOiAkYy1icmFnO1xuICB9XG5cbiAgJi5pbmFjY3VyYWN5IC52ZXJkaWN0OjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6ICRjLWJyYWc7XG4gICAgY29udGVudDogJz8nO1xuICB9XG5cbiAgJi5taXN0YWtlIC52ZXJkaWN0LFxuICAmLmJsdW5kZXIgLnZlcmRpY3Qge1xuICAgIGNvbG9yOiAkYy1iYWQ7XG4gIH1cblxuICAmLm1pc3Rha2UgLnZlcmRpY3Q6OmJlZm9yZSxcbiAgJi5ibHVuZGVyIC52ZXJkaWN0OjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgICBjb250ZW50OiAn4pyXJztcbiAgfVxuXG4gIC5jb21tZW50IG1vdmUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgIGNvbG9yOiAkYy1saW5rO1xuICAgIHRyYW5zaXRpb246IDAuM3M7XG4gIH1cbn1cbiIsIiRjLWZvcms6ICRjLXByaW1hcnk7XG5cbi5hbmFseXNlX19mb3JrIHtcbiAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgZmxleDogMCAwIGF1dG87XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuXG4gIG1vdmUge1xuICAgIEBleHRlbmQgJXNhbiwgJWZsZXgtY2VudGVyO1xuXG4gICAgYmFja2dyb3VuZDogbWl4KCRjLWZvcmssICRjLWJnLWJveCwgMjUlKTtcbiAgICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbiAgICBmbGV4OiAwIDAgNTAlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiAuMmVtIDFlbTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtYmctYm94O1xuXG4gICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkYy1iZy1ib3g7XG4gICAgfVxuICB9XG5cbiAgbW92ZTpob3ZlcixcbiAgJjpub3QoOmhvdmVyKSBtb3ZlLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtZm9yaywgJGMtYmctYm94LCAxMDAlKTtcbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxuXG4gIGdseXBoIHtcbiAgICBAZXh0ZW5kICViYXNlLWZvbnQ7XG5cbiAgICBtYXJnaW4tbGVmdDogMnB4O1xuICB9XG5cbiAgZXZhbCB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgZmxleDogMyAwIGF1dG87XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZm9udC1zaXplOiAuOWVtO1xuICB9XG59XG4iLCIuYW5hbHlzZV9fc2lkZSB7XG4gIGFsaWduLXNlbGY6IHN0YXJ0O1xuXG4gIC5iYWNrLXRvLWdhbWUge1xuICAgIG1hcmdpbi10b3A6IDJlbTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDMpIHtcbiAgICAgIG1hcmdpbi10b3A6IDEwdmg7XG4gICAgfVxuXG5cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAuYnV0dG9uIHtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxufVxuIiwiI2FuYWx5c2UtY20ge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzLCAlcG9wdXAtc2hhZG93O1xuXG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBub25lO1xuICB6LWluZGV4OiB6KFwiY29udGV4dC1tZW51XCIpO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG5cbiAgJi52aXNpYmxlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIC50aXRsZSB7XG4gICAgQGV4dGVuZCAlc2FuLCAlbWV0YWw7XG5cbiAgICBwYWRkaW5nOiAuNGVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEuMmVtO1xuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgYSB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgcGFkZGluZzogLjVlbSAuNmVtIC41ZW0gLjNlbTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICB3aWR0aDogMmVtO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWFjY2VudCwgJGMtYmctYm94LCAxMCUpO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUVFQSxZQUFZO0FBcUJaLDZEQUE2RDtBQWM3RCxtQkFBbUI7QUFNbkIsa0NBQWtDO0FBRWxDLHNCQUFzQjtBQU10QixvQ0FBb0M7QUFFcEMsb0JBQW9CO0FBTXBCLGlDQUFpQztBQUVqQyxnQkFBZ0I7QUFJaEIsK0JBQStCO0FBRS9CLGdCQUFnQjtBQUtoQiwrQkFBK0I7QUFFL0IsaUJBQWlCO0FBSWpCLGtCQUFrQjtBQUlsQixjQUFjO0FBSWQsaUJBQWlCO0FBSWpCLCtCQUErQjtBQThCL0IsYUFBYTtBQU1iLGFBQWE7QUFNYixZQUFZO0FJcElaLHdDQUF3QztBc0JBeEMsWUFBWTtBQWVaLGFBQWE7QUFTYixrQkFBa0I7QUFLbEIsa0JBQWtCO0FBS2xCLGFBQWE7QUVsQ2IsdURBQXVEO0FBT3ZELHVFQUF1RTtBQzZEdkUsdURBQXVEO0FDNUNyRCxBQXBCRixhQW9CZSxDZ0J0QmYsT0FBTyxDQVdMLElBQUksRUFYTixPQUFPLENoQnNCTCxhQUFhLENnQlhiLElBQUksRWhCV0osYUFBYSxDb0J4QmYsT0FBTyxDQUlMLEdBQUcsQ0FrQkQsSUFBSSxFQXRCUixPQUFPLENBSUwsR0FBRyxDcEJvQkgsYUFBYSxDb0JGWCxJQUFJLEVwQkVOLGFBQWEsQ2dDeEJmLGFBQWEsQ0F3RVgsTUFBTSxDQUFDLEVBQUUsQUFBQSxZQUFZLEVBeEV2QixhQUFhLENBd0VYLE1BQU0sQ2hDaEROLGFBQWEsQ2dDZ0ROLEVBQUUsQUFBQSxZQUFZLEVoQ2hEckIsYUFBYSxDZ0N4QmYsYUFBYSxDQTJMWCxVQUFVLENBR1IsRUFB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 */
