/* 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 */
.slist thead, .mchat__tab, .mchat__messages a:not(.user-link), .tour__main__header .time, .tour__standing td.rank, .tour__actor-info .stats td:last-child, .tour__actor-info .sublist th {
  font-family: 'Roboto';
}

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

.slist thead, .tour__controls, .tour__actor-info .stats h2 {
  background: linear-gradient(to bottom, whitesmoke 0%, #ededed 100%);
  text-shadow: 0 1px 0 white;
}

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

#modal-wrap {
  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;
}

.mchat__tab input {
  -webkit-appearance: none;
  background: white;
  border: 1px solid #e3e3e3;
  display: inline-block;
  padding: .5em;
}

.mchat__tab input:checked {
  background: #0456bc;
  border-color: #0456bc;
}

.context-streamer, .mchat__tab, .tour__meta section .setup {
  white-space: nowrap;
  overflow: hidden;
}

.mchat__tab span, .tour__standing .player .name, .tour__player-info .pairings td:nth-child(2) {
  white-space: nowrap;
}

.mchat__messages, .tour__meta .description, .tour__team-standing .players {
  overflow-wrap: break-word;
  word-break: break-word;
}

.mchat__tab span, .tour__standing .player .name, .tour__player-info .pairings td:nth-child(2), .podium > div, .tour__duels strong {
  overflow: hidden;
  text-overflow: ellipsis;
}

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

.tour__controls .pager, #modal-overlay {
  /* extends %flex-wrap */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
}

.context-streamer, .tour__meta section[data-icon], .tour__featured .mini-game__player, .tour__main__header {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.tour__featured .mini-game__user .user-link, .tour__controls, .tour__duels line {
  /* extends %flex-center */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  justify-content: space-between;
}

.mchat, .mchat__content, .tour__side, .tour__featured, .tour__main__header .clock-created, .tour__ur-playing, .tour__duels a, .tour__actor-info .stats, #modal-wrap {
  display: flex;
  flex-flow: column;
}

.mchat__tab input, .mchat, .tour__meta, .tour__actor-info, .tour__stats, .tour__meta .tour__prize, .tour__duels .rank, #modal-wrap {
  border-radius: 3px;
}

.mchat, .tour__meta, .tour__actor-info {
  overflow: hidden;
  /* helps with clipping background into border-radius */
}

.mchat__tab {
  border-radius: 3px 3px 0 0;
}

.context-streamer {
  border-radius: 0 0 3px 3px;
}

.tour__stats, .mchat, .tour__meta, .tour__actor-info, .context-streamer, .tour__controls, #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);
}

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

@keyframes bar-glider-anim {
  0% {
    transform: translateX(-1300px);
  }
  100% {
    transform: translateX(2100px);
  }
}

.bar-glider {
  position: relative;
  overflow: hidden;
}

.bar-glider::after {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 70px;
  background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.3));
  animation: bar-glider-anim 3s linear infinite;
}

.slist {
  width: 100%;
  border-bottom: 1px solid #d9d9d9;
}

.slist thead th {
  border-top: 1px solid #d9d9d9;
  border-bottom: 1px solid #d9d9d9;
  padding: .5rem .8rem;
}

.slist thead th.large {
  font-size: 1.2rem;
}

.slist td {
  padding: 1rem;
}

.slist td .label {
  font-family: monospace;
  font-size: .8rem;
}

.slist tbody tr:nth-child(even) {
  background: #f7f6f5;
}

.slist td:first-child,
.slist th:first-child {
  padding-left: 1.5rem;
}

.slist-pad td:first-child,
.slist-pad th:first-child {
  padding-left: var(--box-padding);
}

.slist-pad td:last-child,
.slist-pad th:last-child {
  padding-right: var(--box-padding);
}

.slist-invert tbody tr:nth-child(odd) {
  background: #f7f6f5;
}

.slist-invert tbody tr:nth-child(even) {
  background: none;
}

.pull-quote {
  margin: 0 auto;
}

.pull-quote p {
  color: #4d4d4d;
  position: relative;
  margin: 0 .7em;
  padding: 1em 0;
  border: 1px solid #d9d9d9;
  border-width: 1px 0;
  font-style: italic;
  font-size: 1.1rem;
}

.pull-quote p:after {
  content: '';
  position: absolute;
  bottom: -9px;
  left: 42px;
  width: 15px;
  height: 15px;
  background: white;
  border-left: 2px solid #d9d9d9;
  border-bottom: 1px solid #d9d9d9;
  transform: skew(45deg) rotate(-45deg);
}

.pull-quote.long p {
  font-size: 1rem;
}

.pull-quote footer {
  margin: 10px;
  line-height: 20px;
  text-align: right;
}

.pull-quote footer:before {
  content: '\2014\2009';
}

.fire-trophy {
  text-shadow: 0 .008em .127em #fefcc9, .055em -.066em .2em #feec85, -.111em -.127em .272em #ffae34, .111em -.272em .411em #ec760c, -.111em -.456em .416em #cd4606, 0 -.533em .577em #973716, .055em -.55em .533em #451b0e;
}

@keyframes fire-trophy {
  0% {
    text-shadow: 0 .008em .127em #fefcc9, .055em -.066em .2em #feec85, -.111em -.127em .272em #ffae34, .111em -.272em .411em #ec760c, -.111em -.456em .416em #cd4606, 0 -.533em .577em #973716, .055em -.55em .533em #451b0e;
  }
  100% {
    text-shadow: 0 0 .111em #fefcc9, .055em -.055em .166em #fefcc9, -.111em -.111em .222em #feec85, .122em -.233em .333em #ffae34, -.122em -.322em .277em #ec760c, 0 -.456em .444em #cd4606, .055em -.5em .444em #973716;
  }
}

.fire-trophy {
  color: #4d4d4d;
  font-size: 90px;
  display: block;
}

.fire-trophy:hover {
  animation: fire-trophy 1.5s ease-in-out infinite alternate;
}

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

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

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

.context-streamers {
  max-height: 20vh;
  overflow-y: auto;
}

.context-streamer {
  height: 2.2em;
  color: #fff !important;
  background: #a1c27c;
  transition: all 150ms;
}

.context-streamer::before {
  font-size: 1.3em;
  margin-left: .4em;
}

.context-streamer:hover {
  background: #82ad50;
}

.podium-wrap {
  position: relative;
  padding-bottom: 20px;
}

.podium-wrap #confetti {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  opacity: 1;
  transition: opacity 25s;
}

.podium-wrap #confetti.faded {
  opacity: 0;
}

.podium > div {
  display: inline-block;
  text-align: center;
}

.podium .first {
  width: 44%;
  font-size: 1.6em;
}

.podium .second {
  font-size: 1.3em;
  width: 29%;
}

.podium .third {
  font-size: 1.2em;
  width: 27%;
}

.podium .trophy {
  margin: 0 auto .5em auto;
  background: center / contain no-repeat;
}

.podium .first .trophy {
  height: 9em;
  width: 9em;
  background-image: url("../images/trophy/lichess-massive.svg");
}

.podium .second .trophy {
  height: 9em;
  width: 7em;
  background-image: url("../images/trophy/lichess-silver-1.svg");
}

.podium .third .trophy {
  height: 7em;
  width: 7em;
  background-image: url("../images/trophy/lichess-bronze-2.svg");
}

@media (max-width: 499px) {
  .podium .trophy {
    display: none;
  }
}

.podium .user-link {
  font-weight: bold;
  letter-spacing: -1px;
}

.podium .stats {
  margin: .5em auto 0 auto;
  font-size: .7em;
}

.podium .stats th {
  letter-spacing: -1px;
  text-align: left;
}

.podium .stats td {
  font-weight: bold;
  padding-left: 5px;
  text-align: right;
}

.podium .third .stats {
  font-size: .8em;
}

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

.mchat__tabs {
  flex: 0 0 auto;
  display: flex;
}

.mchat__tab {
  flex: 1 1 auto;
  text-align: center;
  padding: .4em 10px;
  cursor: pointer;
  color: #5e5e5e;
  transition: all 150ms;
}

.mchat__tab:hover {
  background: #f5dbdd;
}

.mchat__tab-active {
  color: #4d4d4d;
  background: white !important;
}

.mchat__tab input {
  cursor: pointer;
  display: none;
}

.mchat__tab-active input {
  display: block;
}

.mchat__tab:last-child {
  border-right: none;
}

.mchat-optional .mchat__tab.discussion {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.chat__members {
  font-size: .9em;
  height: 100%;
  overflow: hidden;
}

.mchat__messages {
  flex: 1 1 auto;
  max-height: 50vh;
  overflow-y: auto;
  overflow-x: hidden;
  cursor: initial;
  font-size: .9em;
}

@media (min-width: 1260px) {
  .mchat__messages {
    max-height: none;
  }
}

.mchat__messages li {
  position: relative;
  padding: .5em 0 .5em 10px;
  line-height: 1.2em;
  overflow-y: hidden;
  user-select: text;
}

.mchat__messages .deleted {
  opacity: 0.5;
}

.mchat__messages .system {
  display: block;
  opacity: 0.8;
  font-style: italic;
  font-size: .9em;
  margin-left: 0;
  text-align: center;
}

.mchat__messages .color,
.mchat__messages .user-link {
  font-weight: bold;
  padding: 0;
  color: #787878;
  letter-spacing: -1px;
  margin-right: .4em;
}

.mchat__messages .utitle {
  margin-right: 3px;
}

.mchat__messages i {
  display: none;
  position: absolute;
  top: 5px;
  right: 0;
  cursor: pointer;
  margin-right: 3px;
  padding: 4px 5px;
  opacity: 0.7;
  color: #bd111f;
}

.mchat__messages i:hover {
  opacity: 1;
}

.mchat__messages li:hover i {
  display: block;
  text-shadow: 0 0 2px white, 0 0 5px white, 0 0 10px white;
}

.mchat__say {
  flex: 0 0 auto;
  border: 0;
  border-top: 1px solid #d9d9d9;
  border-radius: 0;
  padding: 3px 20px 3px 4px;
}

.mchat__say.whisper {
  color: #629924;
  font-weight: bold;
  font-style: italic;
}

@keyframes palantir-glowing {
  40% {
    background: none;
  }
  50% {
    background: #d0e0bd;
  }
  60% {
    background: #ebb8bc;
  }
  70% {
    background: none;
  }
}

.palantir {
  flex: 0 1 auto;
  animation: palantir-glowing 1.5s ease-in-out infinite;
  border-radius: 0 3px 0 0;
}

.palantir-slot {
  animation: none;
  opacity: .6;
}

.palantir-slot:hover {
  opacity: 1;
}

.palantir-off {
  animation: none;
}

.palantir-on {
  background: #629924;
  color: #fff;
  animation: none;
}

.palantir-on:hover {
  background: #cc3333 !important;
  color: #fff !important;
}

.palantir::after {
  top: 1px;
  left: 0;
  right: auto;
  background: none;
  box-shadow: none;
}

.mchat {
  grid-area: chat;
  justify-content: stretch;
  min-height: 15em;
}

.mchat__content {
  background: white;
  flex: 1 1 auto;
  overflow: hidden;
}

.mchat__content.note textarea {
  font-size: .9em;
  flex-grow: 1;
  border: none;
  background-color: transparent;
  line-height: 1.7em;
  outline: none;
  resize: none;
}

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

.tour {
  display: grid;
  grid-template-areas: 'main' 'side' 'uchat' 'table';
  grid-gap: 2vmin;
}

.tour__side {
  grid-area: side;
}

.tour__table, .tour__stats, .tour__player {
  grid-area: table;
}

.tour__main {
  grid-area: main;
}

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

@media (min-width: 800px) {
  .tour {
    grid-template-columns: minmax(500px, calc(100vh * 0.9 - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) minmax(240px, 400px);
    grid-template-rows: calc(100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 2vmin - 3rem) min-content;
    grid-template-areas: 'main  side' 'main  uchat' 'table table';
  }
  .tour__table {
    display: flex;
  }
  .tour__table > * {
    flex: 0 0 50%;
  }
  .tour .mchat__messages {
    max-height: inherit;
  }
}

@media (min-width: 1260px) {
  .tour {
    grid-template-columns: minmax(230px, 20vw) minmax(500px, calc(100vh * 0.9 - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) minmax(240px, 400px);
    grid-template-rows: calc(100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 2vmin - 3rem) auto;
    grid-template-areas: 'side  main table' 'uchat main table';
  }
  .tour__table {
    flex-flow: column;
  }
  .tour__table > * {
    flex: inherit;
  }
}

.tour__side .mchat {
  flex: 1 1 7em;
  margin-top: 2vmin;
}

@media (min-width: 800px) {
  .tour__side .mchat {
    min-height: inherit;
  }
}

.tour__meta {
  background: white;
  padding: 1.2vmin 2vmin;
}

.tour__meta section {
  margin-bottom: 2vmin;
}

.tour__meta section::before {
  font-size: 3rem;
  margin-right: 4%;
}

.tour__meta section p {
  margin: 0;
}

.tour__meta section time {
  opacity: 1;
}

.tour__meta section .defender::before {
  font-size: 1.6em;
  vertical-align: -.26em;
  margin: 0 .15em 0 -.15em;
}

.tour__meta section.conditions::before {
  opacity: 0.7;
}

.tour__meta section.conditions.accepted {
  color: #629924;
}

.tour__meta section.conditions.refused {
  color: #cc3333;
}

.tour__meta .description {
  max-height: 20vh;
  overflow-y: auto;
}

.tour__meta .tour__prize {
  padding: 1em;
  background: #f8e8f9;
  margin-bottom: 1em;
  font-size: .9em;
}

.chat__members {
  overflow: visible;
  /* fixes invisible spectators on firefox, col2 */
}

@media (max-width: 799px) and (orientation: portrait) {
  .chat__members {
    margin: 0 2vmin;
  }
}

.tour__featured .mini-game__player i {
  flex: 0 0 auto;
}

.tour__featured .mini-game__player i::before {
  color: #bd111f;
  margin-right: 5px;
}

.tour__featured .mini-game__user {
  display: flex;
}

.tour__featured .mini-game__user strong {
  text-align: center;
  margin-right: 1ch;
}

.tour__featured .mini-game__user .user-link {
  flex: 1 1 100%;
  margin-right: 1em;
}

.tour__main__header {
  position: relative;
  min-height: 7em;
  padding: 0 3vmin;
}

.tour__main__header h1 {
  font-size: 2.2rem;
  flex: 9 1 auto;
  margin: 0;
  overflow: hidden;
}

.tour__main__header h1 a {
  /* GM wikipedia */
  color: #74383d;
}

.tour__main__header h1 a:hover {
  color: #bd111f;
}

.tour__main__header img {
  flex: 0 0 60px;
  display: block;
  width: 60px;
  height: 60px;
  padding: 6px;
}

.tour__main__header .img {
  margin-right: 1rem;
}

.tour__main__header i::before {
  font-size: 2.2rem;
}

.tour-shed .tour__main__header h1 {
  letter-spacing: 2px;
}

.tour-shed-weekly .tour__main__header i::before {
  font-size: 35px;
}

.tour-shed-monthly .tour__main__header i::before,
.tour-shed-weekend .tour__main__header i::before {
  font-size: 40px;
}

.tour-shed-yearly .tour__main__header i::before {
  font-size: 45px;
}

.tour-shed-weekend .tour__main__header h1,
.tour-shed-yearly .tour__main__header h1 {
  letter-spacing: 3px;
}

.tour__main__header .clock {
  flex: 0 0 auto;
  font-weight: bold;
  color: #787878;
}

.tour__main__header .clock-created {
  text-align: right;
}

.tour-sched .tour__main__header h1,
.tour-sched .tour__main__header .img {
  color: #d59020;
}

.tour__main-finished .tour__main__header h1 {
  text-align: center;
}

.tour-sched-marathon .tour__main-finished .tour__main__header h1 {
  padding-left: 0;
}

.tour__main__header .time {
  font-size: 1.5em;
  margin-left: .2em;
}

.tour__main__header .shy {
  line-height: 20px;
  font-size: .9em;
  font-weight: bold;
  text-transform: uppercase;
  opacity: 0.6;
  white-space: nowrap;
}

.tour-sched-marathon .tour__main__header h1 {
  color: #4166a0 !important;
  padding-left: 90px;
  letter-spacing: 2px;
}

.tour-sched-marathon .tour__main__header .fire-trophy {
  position: absolute;
  top: 0;
  left: 10px;
  width: 70px;
  height: 80px;
  opacity: 0.7;
  transition: 1s;
  font-family: "lichess";
  filter: hue-rotate(190deg);
}

.tour-sched-marathon .tour__main__header .fire-trophy:hover {
  opacity: 1;
}

.tour-sched-shield .tour__main__header h1 {
  padding-left: 90px;
  letter-spacing: 2px;
}

.tour-sched-shield .tour__main__header h1 .shield-trophy {
  position: absolute;
  top: -8px;
  left: 12px;
  display: block;
  width: 67px;
  height: 80px;
  background: url(../images/trophy/shield-gold.png) no-repeat;
  background-size: contain;
  font-family: "lichess";
  font-size: 40px;
  line-height: 80px;
  text-align: center;
  color: #333 !important;
  text-shadow: 0 0 6px #fff;
}

.tour__notice {
  color: #fff;
  background: #629924;
  text-align: center;
  padding: .5em 0;
  opacity: 0.8;
}

.tour__notice.closed {
  background: #bd111f;
}

.tour__ur-playing {
  text-align: center;
  font-size: 1.5em;
  position: relative;
}

.tour__ur-playing::before, .tour__ur-playing::after {
  content: 'U';
  font-size: 2rem;
  position: absolute;
  top: 30px;
}

.tour__ur-playing::before {
  left: 30px;
}

.tour__ur-playing::after {
  right: 30px;
}

.tour__controls {
  padding: 0 0px;
  position: relative;
}

.tour__controls .fbt {
  padding: .6em .8em;
  text-transform: uppercase;
  line-height: 1.3;
}

@media (min-width: 500px) {
  .tour__controls .fbt {
    padding: .6em 1em;
  }
}

@keyframes tour-delay {
  0% {
    width: 0%;
  }
  100% {
    width: 100%;
  }
}

.tour__controls .delay {
  background: rgba(117, 153, 0, 0.5);
  width: 0%;
}

.tour__controls .delay button {
  opacity: 0.7;
  color: #787878;
  mix-blend-mode: luminosity;
}

.tour__controls .highlight {
  position: absolute;
  right: 5px;
  top: -3px;
  padding: 8px 20px;
  border-radius: 8px;
  color: #FFF;
  text-decoration: none;
  background: #82BF56;
  border-bottom: 5px solid #759900;
  text-shadow: 0 -1px #759900;
  transition: all 0.1s;
  transform: translate(0px, 0px);
}

.tour__controls .highlight:hover {
  filter: brightness(1.06);
}

.tour__controls .highlight:active {
  transform: translate(0px, 5px);
  border-bottom-width: 1px;
  text-shadow: 0 0 #759900;
  filter: brightness(1);
}

.tour__controls .spinner {
  margin: 0;
  width: 1.5em;
  height: 1.5em;
  margin-right: .7em;
}

.tour__controls .pager {
  user-select: none;
}

.tour__controls .pager .page {
  margin: 0 3px;
  white-space: nowrap;
}

.tour__controls .pager input {
  border: none;
  background: rgba(98, 153, 36, 0.2);
}

.tour__controls .pager .search,
.tour__controls .pager input,
.tour__controls .pager .twitter-typeahead {
  height: 100%;
}

.tour__controls .search .tt-menu .spinner {
  float: none;
  margin: 10px auto;
}

.tour__standing {
  border: none;
}

.tour__standing .player {
  padding-left: 0px;
  padding-right: 0px;
}

.tour__standing .player .name {
  display: inline-block;
  vertical-align: middle;
  padding-right: 5px;
  max-width: 140px;
}

.tour__standing .user-link.long {
  letter-spacing: -0.7px;
}

.tour__standing .user-link .rating {
  font-style: italic;
  font-size: .8em;
}

.tour__standing tr.long .user-link .rating {
  display: block;
  padding-left: 0px;
}

.tour__standing tr {
  transition: all 150ms;
  user-select: none;
}

.tour__standing .loading tbody {
  opacity: 0.6;
  transition: opacity 0.3s;
}

.tour__standing:not(.created):not(.loading) tbody tr:hover {
  background: #ebb8bc;
  cursor: pointer;
}

.tour__standing tr.me td:first-child {
  background: linear-gradient(to right, #91b766 0px, #91b766 5px, rgba(0, 0, 0, 0) 5px, rgba(0, 0, 0, 0) 100%);
}

.tour__standing tr.active td:last-child {
  background: linear-gradient(to left, #d15862 0px, #d15862 5px, rgba(0, 0, 0, 0) 5px, rgba(0, 0, 0, 0) 100%);
}

.tour__standing td.rank {
  padding: 1em .5em 1em 10px;
  width: 1px;
  /* helps keeping it as small as possible */
}

.tour__standing td.rank i {
  opacity: .4;
  font-size: .8em;
}

.tour__standing .sheet {
  text-align: right;
  padding-right: 0;
  padding-left: 0;
  letter-spacing: .1em;
}

.tour__standing .sheet > * {
  display: inline-block;
}

.tour__standing .sheet score {
  opacity: 0.7;
}

.tour__standing tr.long .sheet {
  font-size: .9rem;
  letter-spacing: .06em;
}

.tour__standing tr.xlong .sheet {
  font-size: .85rem;
  letter-spacing: .04em;
}

.tour__standing double {
  color: #d59020;
  /* font-weight: bold; */
}

.tour__standing streak {
  color: #629924;
  /* font-weight: bold; */
}

.tour__standing .total {
  text-align: right;
  font-weight: bold;
  padding-right: 2vmin;
}

.tour__stats {
  background: white;
  padding: 1.7em 0;
  align-self: flex-start;
}

.tour__stats h2 {
  font-size: 1.5em;
  margin-bottom: 1em;
  text-align: center;
}

.tour__stats table {
  margin: auto;
}

.tour__stats td {
  font-weight: bold;
  padding-left: 1em;
  text-align: right;
  line-height: 2em;
}

.tour__duels {
  margin: 2vmin 0 0 0;
}

@media (min-width: 800px) {
  .tour__duels {
    margin: 0 0 0 2vmin;
  }
}

@media (min-width: 1260px) {
  .tour__duels {
    margin: 2vmin 0 0 0;
  }
}

.tour__duels h2 {
  font-size: 1.5em;
  margin-bottom: .2em;
  text-transform: uppercase;
  letter-spacing: 2px;
}

.tour__duels a {
  color: #4d4d4d;
  padding: .5em .7em;
  white-space: nowrap;
  line-height: 1.9em;
  border-top: 1px solid #e6e6e6;
  transition: all 150ms;
}

.tour__duels a:hover {
  background: #f2cfd2;
}

.tour__duels strong {
  font-size: 1.2em;
  color: #787878;
  display: block;
  max-width: 60%;
}

.tour__duels .rank {
  padding: .1em .5em;
  background: #f7f6f5;
}

.tour__duels .b .utitle,
.tour__duels .b .rank {
  margin-right: .3em;
}

.tour__duels .a .utitle,
.tour__duels .a .rank {
  margin-left: .3em;
}

.tour__actor-info {
  background: white;
  position: relative;
  align-self: flex-start;
}

.tour__actor-info .spinner {
  margin: 5em auto;
}

.tour__actor-info .close {
  position: absolute;
  top: 4px;
  right: 5px;
  opacity: .6;
  transition: all 150ms;
  color: #cc3333;
}

.tour__actor-info .close:hover {
  opacity: 1;
}

.tour__actor-info .stats {
  justify-content: center;
}

.tour__actor-info .stats h2 {
  font-size: 1.4em;
  padding: .6rem 1rem;
  border-bottom: 1px solid #d9d9d9;
}

.tour__actor-info .stats table {
  margin: 1em auto;
}

.tour__actor-info .stats td {
  font-weight: bold;
  padding-left: 10px;
  text-align: right;
  line-height: 1.8em;
}

.tour__actor-info .sublist {
  width: 100%;
}

.tour__actor-info .sublist tr {
  cursor: pointer;
  transition: background-color 150ms;
}

.tour__actor-info .sublist tr:nth-child(odd) {
  background: #f7f6f5;
}

.tour__actor-info .sublist tr:hover {
  background: #f8e7e9;
}

.tour__actor-info .sublist th, .tour__actor-info .sublist td {
  padding: .3em;
}

.tour__actor-info .sublist th {
  padding-left: 7px;
}

.tour__player-info .pairings {
  width: 100%;
}

.tour__player-info .pairings tr {
  cursor: pointer;
  transition: background-color 150ms;
}

.tour__player-info .pairings tr:nth-child(odd) {
  background: #f7f6f5;
}

.tour__player-info .pairings tr:hover {
  background: #f8e7e9;
}

.tour__player-info .pairings th, .tour__player-info .pairings td {
  padding: .3em;
}

.tour__player-info .pairings th {
  border-left: 3px solid transparent;
  transition: all 150ms;
}

.tour__player-info .pairings tr:hover th {
  border-color: #4d4d4d;
}

.tour__player-info .pairings tr.win:hover th {
  border-color: #629924;
}

.tour__player-info .pairings tr.loss:hover th {
  border-color: #cc3333;
}

.tour__player-info .pairings td:nth-child(2) {
  max-width: 200px;
}

.tour__player-info .pairings td:last-child {
  font-weight: bold;
  opacity: .8;
}

.tour__player-info .pairings tr.win td:last-child {
  color: #629924;
  opacity: 1;
}

.tour__player-info .pairings tr.loss td:last-child {
  color: #cc3333;
  opacity: 1;
}

.tour__player-info .color-icon {
  opacity: .6;
}

.tour__team-info .players {
  width: 100%;
}

.tour__team-info .players tr {
  cursor: pointer;
  transition: background-color 150ms;
}

.tour__team-info .players tr:nth-child(odd) {
  background: #f7f6f5;
}

.tour__team-info .players tr:hover {
  background: #f8e7e9;
}

.tour__team-info .players th, .tour__team-info .players td {
  padding: .3em 1em;
}

.tour__team-info .players td:last-child {
  text-align: right;
}

.tour__team-info .players .rating {
  font-style: italic;
  font-size: .8em;
}

.tour__team-info .players .leader::before {
  color: #d59020;
  margin-right: .15em;
}

.tour .pull-quote {
  margin-top: 30px;
  width: 300px;
}

.tour .box.created {
  padding-bottom: 2em;
  /* as quote margin */
}

.tour__faq {
  padding: 4em var(--box-padding);
  display: none;
}

@media (min-width: 800px) {
  .tour__faq {
    display: block;
  }
}

.tour__faq h2 {
  margin: 1.5em 0 .5em 0;
}

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

team.ttc-0 {
  color: #a42eff;
}

team.ttc-1 {
  color: #5757ff;
}

team.ttc-2 {
  color: #008000;
}

team.ttc-3 {
  color: #b22222;
}

team.ttc-4 {
  color: #ec7a51;
}

team.ttc-5 {
  color: #9acd32;
}

team.ttc-6 {
  color: #ff4500;
}

team.ttc-7 {
  color: #2e8b57;
}

team.ttc-8 {
  color: #daa520;
}

team.ttc-9 {
  color: #d27e1e;
}

team {
  padding: 1px 5px;
  font-size: .8em;
  font-weight: bold;
}

.tour__player-info team {
  margin: 1rem auto 0 auto;
  padding: .15rem .8rem;
  font-size: 1em;
  cursor: pointer;
}

.tour__standing .rating {
  padding-right: 5px;
}

.tour__team-standing tbody tr:nth-child(odd) {
  background: #f7f6f5;
}

.tour__team-standing tbody tr:nth-child(even) {
  background: white;
}

.tour__team-standing .team {
  cursor: pointer;
}

.tour__team-standing .team:hover {
  color: #bd111f;
}

.tour__team-standing .team team {
  font-size: 1rem;
}

.tour__team-standing .players {
  color: #787878;
}

.tour__team-standing score {
  font-weight: bold;
  padding: 0 2px;
  cursor: pointer;
}

.tour__team-standing score:hover {
  color: #d59020;
}

.tour__team-standing score.top username {
  font-weight: normal;
}

.tour__team-standing .total {
  text-align: right;
  font-weight: bold;
  padding-right: 2vmin;
}

.tour__team-standing tr.active td:last-child {
  background: linear-gradient(to left, #d15862 0px, #d15862 5px, rgba(0, 0, 0, 0) 5px, rgba(0, 0, 0, 0) 100%);
}

.tour__team-standing tr:hover {
  background: #ebb8bc !important;
}

.team-battle__list a {
  display: block;
}

.team-battle__choice a {
  display: block;
  margin-top: 1rem;
}

.tour__duels team {
  line-height: normal;
}

.team-picker ul {
  text-align: left;
  font-size: 1.1em;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91cm5hbWVudC9jc3MvYnVpbGQvdG91cm5hbWVudC5zaG93LnRlYW0tYmF0dGxlLmxpZ2h0LmNzcyIsInNvdXJjZXMiOlsidG91cm5hbWVudC9jc3MvYnVpbGQvdG91cm5hbWVudC5zaG93LnRlYW0tYmF0dGxlLmxpZ2h0LnNjc3MiLCJjb21tb24vY3NzL3RoZW1lL19saWdodC5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGVmYXVsdC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZnVuY3Rpb25zLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9idWlsZC9fdG91cm5hbWVudC5zaG93LnRlYW0tYmF0dGxlLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9idWlsZC9fdG91cm5hbWVudC5zaG93LnNjc3MiLCJjb21tb24vY3NzL19wbHVnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2FsbC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fei1pbmRleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWVkaWEtcXVlcmllcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L191bmlib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWl4aW5zLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19leHRlbmRzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbGV4LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19ib3guc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2ZsdWlkLXNpemUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19mYnQuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19iYXItZ2xpZGVyLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fc2xpc3Quc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19xdW90ZS5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2ZpcmUtdHJvcGh5LnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fY29sb3ItaWNvbi5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2NvbnRleHQtc3RyZWFtZXIuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19wb2RpdW0uc2NzcyIsImNoYXQvY3NzL19jaGF0LnNjc3MiLCJjb21tb24vY3NzL2Jhc2UvX3Njcm9sbGJhci5zY3NzIiwiY2hhdC9jc3MvX3RhYi5zY3NzIiwiY2hhdC9jc3MvX21lbWJlcnMuc2NzcyIsImNoYXQvY3NzL19kaXNjdXNzaW9uLnNjc3MiLCJjaGF0L2Nzcy9fcGFsYW50aXIuc2NzcyIsInRvdXJuYW1lbnQvY3NzL19zaG93LnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fbGF5b3V0LnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fc2lkZS5zY3NzIiwidG91cm5hbWVudC9jc3MvX2ZlYXR1cmVkLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fYXBwLWhlYWRlci5zY3NzIiwidG91cm5hbWVudC9jc3MvX2FwcC1ub3RpY2Uuc2NzcyIsInRvdXJuYW1lbnQvY3NzL19hcHAtY29udHJvbC5zY3NzIiwidG91cm5hbWVudC9jc3MvX2FwcC1zdGFuZGluZy5zY3NzIiwidG91cm5hbWVudC9jc3MvX3N0YXRzLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fZHVlbC5zY3NzIiwidG91cm5hbWVudC9jc3MvX2FjdG9yLWluZm8uc2NzcyIsInRvdXJuYW1lbnQvY3NzL19wbGF5ZXItaW5mby5zY3NzIiwidG91cm5hbWVudC9jc3MvX3RlYW0taW5mby5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX21vZGFsLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fdGVhbS1iYXR0bGUuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy90aGVtZS9saWdodFwiO1xuQGltcG9ydCBcInRvdXJuYW1lbnQuc2hvdy50ZWFtLWJhdHRsZVwiO1xuIiwiQGltcG9ydCBcImRlZmF1bHRcIjtcblxuJHRoZW1lOiBcImxpZ2h0XCI7XG4kdGhlbWUtbGlnaHQ6IHRydWU7XG4kdGhlbWUtZGFyazogZmFsc2U7XG5cbiRjLWJnLXBhZ2U6IGhzbCgwLCAwJSwgMTAwJSk7XG4kYy1iZy1wYWdlLWltZzogdXJsKC4uL2ltYWdlcy9tb3Njb3ctY2hlc3NfcGF0dGVybl9saWdodF9hbmdsZWQtMDEucG5nKTtcbiRjLWJnLXBhZ2UtYnM6IDEwJTtcblxuQG1peGluIG1ldGFsLWJnIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAsIDk2KSAwJSwgaHNsKDAsIDAsIDkzKSAxMDAlKTtcbn1cblxuQG1peGluIG1ldGFsIHtcbiAgQGluY2x1ZGUgbWV0YWwtYmc7XG5cbiAgdGV4dC1zaGFkb3c6ICR0ZXh0LXNoYWRvdztcbn1cblxuQG1peGluIG1ldGFsLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAsIDk4KSAwJSwgaHNsKDAsIDAsIDk1KSAxMDAlKTtcbiAgdGV4dC1zaGFkb3c6ICR0ZXh0LXNoYWRvdztcbn1cblxuQG1peGluIHBhZ2UtbWV0YWwge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBtaXgoJGMtbGluaywgaHNsKDAsIDAlLCAxMDAlKSwgMjAlKSAwJSwgbWl4KCRjLWxpbmssIGhzbCgwLCAwJSwgOTQlKSwgMjAlKSAxMDAlKTtcbiAgdGV4dC1zaGFkb3c6ICR0ZXh0LXNoYWRvdztcbn1cblxuQG1peGluIHBhZ2UtbWV0YWwtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBtaXgoJGMtbGluaywgI2ZmZiwgMjUlKSAwJSwgbWl4KCRjLWxpbmssIGMtbGlnaHQoJGMtYmctcGFnZSwgOTAlKSwgMjUlKSAxMDAlKTtcbiAgdGV4dC1zaGFkb3c6ICR0ZXh0LXNoYWRvdztcbn1cblxuQG1peGluIHRoZW1lLXN0eWxlIHt9XG4iLCJAaW1wb3J0IFwiLi4vYWJzdHJhY3QvZnVuY3Rpb25zXCI7XG5cbi8qIENvbG9ycyAqL1xuXG5AZnVuY3Rpb24gYy1kaW1tZXIoJGNvbG9yLCAkd2VpZ2h0OiAxNyUpIHtcbiAgQHJldHVybiBtaXgoI2ZmZiwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuQGZ1bmN0aW9uIGMtY2xlYXJlcigkY29sb3IsICR3ZWlnaHQ6IDE3JSkge1xuICBAcmV0dXJuIG1peCgjMDAwLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG4kYy1zaXRlLWh1ZTogMzc7XG5cbiRjLWJnLXBhZ2U6IGhzbCgkYy1zaXRlLWh1ZSwgMTAlLCA5MiUpO1xuXG4kYy1iZy1wYWdlLWltZzogbm9uZTtcbiRjLWJnLXBhZ2UtYnM6IGF1dG87XG5cbi8vIGhzbCgyMTAsIDE3JSwgOTUlKVxuJGMtYmctaGlnaDogaHNsKDAsIDAlLCAxMDAlKTtcbiRjLWJnLWxvdzogaHNsKDAsIDAlLCA4OSUpO1xuXG4vKiBldmVuIHJvd3MgaW4gbGlzdCBvciB0YWJsZXMsIHN1YnRsZSBzaGFkZSBvZiAkYy1iZy1oaWdoICovXG4kYy1iZy16ZWJyYTogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDk2LjUlKTtcbiRjLWJnLXplYnJhMjogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDkyJSk7XG5cbiRjLWJvZHktZ3JhZGllbnQ6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCA4NCUpO1xuXG4kYy1mb250OiBoc2woMCwgMCUsIDMwJSk7XG4kYy1mb250LWRpbTogYy1saWdodCgkYy1mb250LCA0NyUpO1xuJGMtZm9udC1kaW1tZXI6IGMtbGlnaHQoJGMtZm9udCwgNzAlKTtcbiRjLWZvbnQtY2xlYXI6IGMtbGlnaHQoJGMtZm9udCwgMTIlKTtcbiRjLWZvbnQtY2xlYXJlcjogYy1saWdodCgkYy1mb250LCAwJSk7XG4kYy1zaGFkZTogYy1kaW1tZXIoJGMtZm9udCwgODAlKTtcbiRjLWZvbnQtcGFnZTogYy1saWdodCgkYy1mb250LCAzNyUpO1xuXG4vKiBQcmltYXJ5OiBibHVlICovXG4kYy1wcmltYXJ5OiAjYmQxMTFmO1xuJGMtcHJpbWFyeS1kaW06IGMtZGltbWVyKCRjLXByaW1hcnkpO1xuJGMtcHJpbWFyeS1jbGVhcjogYy1jbGVhcmVyKCRjLXByaW1hcnkpO1xuJGMtcHJpbWFyeS1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgcHJpbWFyeSBiYWNrZ3JvdW5kICovXG5cbi8qIFNlY29uZGFyeTogZ3JlZW4gKi9cbiRjLXNlY29uZGFyeTogaHNsKDg4LCA2MiUsIDM3JSk7XG4kYy1zZWNvbmRhcnktZGltOiBjLWRpbW1lcigkYy1zZWNvbmRhcnkpO1xuJGMtc2Vjb25kYXJ5LWRpbW1lcjogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5LCA0MCUpO1xuJGMtc2Vjb25kYXJ5LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBzZWNvbmRhcnkgYmFja2dyb3VuZCAqL1xuXG4vKiBBY2NlbnQ6IG9yYW5nZSAqL1xuJGMtYWNjZW50OiAjYmQxMTFmO1xuJGMtYWNjZW50LWRpbTogYy1kaW1tZXIoJGMtYWNjZW50KTtcbiRjLWFjY2VudC1jbGVhcjogYy1jbGVhcmVyKCRjLWFjY2VudCk7XG4kYy1hY2NlbnQtb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIGFjY2VudCBiYWNrZ3JvdW5kICovXG5cbi8qIEJyYWc6IGdvbGQgKi9cbiRjLWJyYWc6IGhzbCgzNywgNzQlLCA0OCUpO1xuJGMtYnJhZy1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbi8qIEVycm9yOiByZWQgKi9cbiRjLXJlZDogaHNsKDAsIDYwJSwgNTAlKTtcbiRjLWVycm9yOiAkYy1yZWQ7XG4kYy1lcnJvci1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbi8qIEdvb2Q6IGdyZWVuICovXG4kYy1nb29kOiAkYy1zZWNvbmRhcnk7XG4kYy1nb29kLW92ZXI6ICRjLXNlY29uZGFyeS1vdmVyO1xuXG4vKiBXYXJuOiBvcmFuZ2UgKi9cbiRjLXdhcm46ICRjLWJyYWc7XG4kYy13YXJuLW92ZXI6ICRjLWJyYWctb3ZlcjtcblxuLyogQmFkOiByZWQgKi9cbiRjLWJhZDogJGMtZXJyb3I7XG4kYy1iYWQtb3ZlcjogJGMtZXJyb3Itb3ZlcjtcblxuLyogRmFuY3k6IHBpbmsgKi9cbiRjLWZhbmN5OiBoc2woMjk0LCA2MSUsIDYyJSk7XG4kYy1mYW5jeS1vdmVyOiB3aGl0ZTtcblxuLyogdGV4dCBvdmVyIGJyYWcgYmFja2dyb3VuZCAqL1xuXG4kYy1saW5rOiAkYy1wcmltYXJ5O1xuJGMtbGluay1kaW06ICRjLXByaW1hcnktZGltO1xuJGMtbGluay1jbGVhcjogJGMtcHJpbWFyeS1jbGVhcjtcbiRjLWxpbmstaG92ZXI6IGMtY2xlYXJlcihzYXR1cmF0ZSgkYy1wcmltYXJ5LCAxMDAlKSwgMzUlKTtcbiRjLWxpbmstb3ZlcjogJGMtcHJpbWFyeS1vdmVyO1xuXG4kYy1iZy1ib3g6ICRjLWJnLWhpZ2g7XG4kYy1iZy1ib3gtb3BhcXVlOiAkYy1iZy1ib3g7XG4kYy1iZy1pbnB1dDogYy1saWdodCgkYy1iZy1wYWdlLCA5OCUpO1xuXG4kYy1ib3JkZXI6IGhzbCgwLCAwJSwgODUlKTtcbiRjLWJvcmRlci1wYWdlOiBoc2woMCwgMCUsIDgwJSk7XG5cbiRjLXBhZ2UtbWFzazogaHNsYSgwLCAwLCAwJSwgMC42KTtcblxuJGMtYmctcG9wdXA6ICRjLWJnLWhpZ2g7XG4kYy1wb3B1cDogJGMtZm9udDtcblxuJGMtYmctaGVhZGVyLWRyb3Bkb3duOiAkYy1iZy1wb3B1cDtcbiRjLWhlYWRlci1kcm9wZG93bjogJGMtcG9wdXA7XG5cbiRjLWZvbnQtc2hhZG93OiB3aGl0ZTtcbiR0ZXh0LXNoYWRvdzogMCAxcHggMCAkYy1mb250LXNoYWRvdztcblxuJGMtYm90OiAkYy1mYW5jeTtcblxuJGMtcGFnZS1pbnB1dDogJGMtYmctbG93O1xuXG4vKiBCb3JkZXJzICovXG5cbiRib3JkZXItd2lkdGg6IDFweDtcbiRib3JkZXItc3R5bGU6IHNvbGlkO1xuJGJvcmRlcjogJGJvcmRlci13aWR0aCAkYm9yZGVyLXN0eWxlICRjLWJvcmRlcjtcblxuLyogU2hhZG93cyAqL1xuXG4kYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuXG4vLyAkYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLDAsMCwuMTU3KTtcblxuLyogQ3VzdG9tICovXG4kd2FybmluZy1pY29uLWNvbG9yOiBoc2woNDQsIDEwMCUsIDQ2JSk7XG4iLCJAZnVuY3Rpb24gYy1saWdodCgkY29sb3IsICR2YWx1ZSkge1xuICBAcmV0dXJuIGNoYW5nZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICR2YWx1ZSk7XG59XG5cbkBmdW5jdGlvbiBpbWctdXJsKCRwYXRoKSB7XG4gIEByZXR1cm4gdXJsKFwiI3skaW1nLXBhdGh9LyN7JHBhdGh9XCIpO1xufVxuIiwiQGltcG9ydCBcInRvdXJuYW1lbnQuc2hvd1wiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L21vZGFsXCI7XG5AaW1wb3J0IFwiLi4vdGVhbS1iYXR0bGVcIjtcbiIsIkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL3BsdWdpblwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2ZidFwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2Jhci1nbGlkZXJcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9zbGlzdFwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L3F1b3RlXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvZmlyZS10cm9waHlcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9jb2xvci1pY29uXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvY29udGV4dC1zdHJlYW1lclwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L3BvZGl1bVwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NoYXQvY3NzL2NoYXRcIjtcbkBpbXBvcnQgXCIuLi9zaG93XCI7XG4iLCIvKiBDb21tb24gaW1wb3J0cyBmb3IgYWxsIENTUyBtb2R1bGVzICovXG5cbkBpbXBvcnQgXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnRcIjtcblxuQGltcG9ydCBcImFic3RyYWN0L2FsbFwiO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kQnJlYWtwb2ludC1TZXR0aW5nczogKFxuICAnZGVmYXVsdCBtZWRpYSc6IGFsbCxcbiAgJ2RlZmF1bHQgZmVhdHVyZSc6IG1pbi13aWR0aCxcbiAgJ2RlZmF1bHQgcGFpcic6IHdpZHRoLFxuXG4gICdmb3JjZSBhbGwgbWVkaWEgdHlwZSc6IGZhbHNlLFxuICAndG8gZW1zJzogZmFsc2UsXG4gICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnOiB0cnVlLFxuXG4gICdubyBxdWVyaWVzJzogZmFsc2UsXG4gICdubyBxdWVyeSBmYWxsYmFja3MnOiBmYWxzZSxcblxuICAnYmFzZSBmb250IHNpemUnOiAxNnB4LFxuXG4gICdsZWdhY3kgc3ludGF4JzogZmFsc2Vcbik7XG5cbiRicmVha3BvaW50OiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJicmVha3BvaW50L3NldHRpbmdzXCI7XG5AaW1wb3J0ICdicmVha3BvaW50L2NvbnRleHQnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9oZWxwZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcGFyc2Vycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L25vLXF1ZXJ5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludC9yZXNwb25kLXRvJztcblxuQGltcG9ydCBcImJyZWFrcG9pbnQvbGVnYWN5LXNldHRpbmdzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZztcblxuICAvLyBSZXNldCBjb250ZXh0c1xuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcblxuICAkYnJlYWtwb2ludDogYnJlYWtwb2ludCgkcXVlcnksIGZhbHNlKTtcblxuICAkcXVlcnktc3RyaW5nOiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnknKTtcbiAgJHF1ZXJ5LWZhbGxiYWNrOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnZmFsbGJhY2snKTtcblxuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnY29udGV4dCBob2xkZXInKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnkgY291bnQnKSAhZ2xvYmFsO1xuXG4gIC8vIEFsbG93IGZvciBhbiBhcy1uZWVkZWQgb3ZlcnJpZGUgb3IgdXNhZ2Ugb2Ygbm8gcXVlcnkgZmFsbGJhY2suXG4gIEBpZiAkbm8tcXVlcnkgIT0gZmFsc2Uge1xuICAgICRxdWVyeS1mYWxsYmFjazogJG5vLXF1ZXJ5O1xuICB9XG5cbiAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFByaW50IE91dCBRdWVyeSBTdHJpbmdcbiAgQGlmIG5vdCBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAbWVkaWEgI3skcXVlcnktc3RyaW5nfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpICE9IGZhbHNlIG9yIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykgPT0gdHJ1ZSB7XG5cbiAgICAkdHlwZTogdHlwZS1vZihicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykpO1xuICAgICRwcmludDogZmFsc2U7XG5cbiAgICBAaWYgKCR0eXBlID09ICdib29sJykge1xuICAgICAgJHByaW50OiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSB7XG4gICAgICBAZWFjaCAkd3JhcHBlciBpbiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICR3cmFwcGVyIHtcbiAgICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXcml0ZSBGYWxsYmFja1xuICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSBhbmQgKCRwcmludCA9PSB0cnVlKSB7XG4gICAgICAkdHlwZS1mYWxsYmFjazogdHlwZS1vZigkcXVlcnktZmFsbGJhY2spO1xuXG4gICAgICBAaWYgKCR0eXBlLWZhbGxiYWNrICE9ICdib29sJykge1xuICAgICAgICAjeyRxdWVyeS1mYWxsYmFja30gJiB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG59XG5cblxuQG1peGluIG1xKCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGFzIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludCwgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludCwgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJyZWFrcG9pbnQtU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaWYgKHN0ci1pbmRleCgkc2V0dGluZywgJy0nKSBvciBzdHItaW5kZXgoJHNldHRpbmcsICdfJykpIGFuZCBzdHItaW5kZXgoJHNldHRpbmcsICcgJykgPT0gbnVsbCB7XG4gICAgQHdhcm4gXCJXb3JkcyBpbiBCcmVha3BvaW50IHNldHRpbmdzIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgc3BhY2VzLCBub3QgZGFzaGVzIG9yIHVuZGVyc2NvcmVzLiBQbGVhc2UgcmVwbGFjZSBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzIGJldHdlZW4gd29yZHMgd2l0aCBzcGFjZXMuIFNldHRpbmdzIHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgdW50aWwgY2hhbmdlZC5cIjtcbiAgfVxuICAkYnJlYWtwb2ludDogbWFwLW1lcmdlKCRicmVha3BvaW50LCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJGJyZWFrcG9pbnQtY2hhbmdlOiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBia3B0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuQG1peGluIGJrcHQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAxIHtcbiAgICAkc2V0dGluZ3M6IG50aCgkc2V0dGluZ3MsIDEpO1xuICB9XG5cbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkYnJlYWtwb2ludDogbWFwLXJlbW92ZSgkYnJlYWtwb2ludCwgJHNldHRpbmcpICFnbG9iYWw7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIGJrcHQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIEJyZWFrcG9pbnQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpO1xuJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEhhcyBDb250ZXh0XG4vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHlvdSBhcmUgaW5zaWRlIGEgQnJlYWtwb2ludCBxdWVyeVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIHtcbiAgQGlmIGxlbmd0aCgkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50KSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBHZXQgQ29udGV4dFxuLy8gJGZlYXR1cmU6IElucHV0IGZlYXR1cmUgdG8gZ2V0IGl0J3MgY3VycmVudCBNUSBjb250ZXh0LiBSZXR1cm5zIGZhbHNlIGlmIG5vIGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGZlYXR1cmUpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJGdldDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgLy8gU3BlY2lhbCBoYW5kbGluZyBvZiBuby1xdWVyeSBmcm9tIGdldCBzaWRlIHNvIC9mYWxzZS8gcHJlcGVuZHMgYXJlbid0IHJldHVybmVkXG4gICAgQGlmICRmZWF0dXJlID09ICduby1xdWVyeScge1xuICAgICAgQGlmIHR5cGUtb2YoJGdldCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJGdldCkgPiAxIGFuZCBudGgoJGdldCwgMSkgPT0gZmFsc2Uge1xuICAgICAgICAkZ2V0OiBudGgoJGdldCwgbGVuZ3RoKCRnZXQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQHJldHVybiAkZ2V0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIGFuZCAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgIEByZXR1cm4gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSkge1xuICBAaWYgJHZhbHVlID09ICdtb25vY2hyb21lJyB7XG4gICAgJGZlYXR1cmU6ICdtb25vY2hyb21lJztcbiAgfVxuXG4gICRjdXJyZW50OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgQGlmICRjdXJyZW50IGFuZCBsZW5ndGgoJGN1cnJlbnQpID09ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgIEB3YXJuIFwiWW91IGhhdmUgYWxyZWFkeSBxdWVyaWVkIGFnYWluc3QgYCN7JGZlYXR1cmV9YC4gVW5leHBlY3RlZCB0aGluZ3MgbWF5IGhhcHBlbiBpZiB5b3UgcXVlcnkgYWdhaW5zdCB0aGUgc2FtZSBmZWF0dXJlIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBzYW1lIGBhbmRgIHF1ZXJ5LiBCcmVha3BvaW50IGlzIG92ZXJ3cml0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgd2l0aCBgI3skdmFsdWV9YFwiO1xuICB9XG5cbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICR2LWhvbGRlcjogKCk7XG4gICAgQGZvciAkaSBmcm9tIDEgdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHYtaG9sZGVyOiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IC0gMSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHJlc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cyB7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbnZlcnRzIHRoZSBpbnB1dCB2YWx1ZSB0byBCYXNlIEVNc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSkge1xuICAkdmFsdWUtdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIC8vIFdpbGwgY29udmVydCByZWxhdGl2ZSBFTXMgaW50byByb290IEVNcy5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIGFuZCB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSA9PSAnbnVtYmVyJyBhbmQgJHZhbHVlLXVuaXQgPT0gJ2VtJyB7XG4gICAgJGJhc2UtdW5pdDogdW5pdChicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSk7XG5cbiAgICBAaWYgJGJhc2UtdW5pdCA9PSAncHgnIG9yICRiYXNlLXVuaXQgPT0gJyUnIG9yICRiYXNlLXVuaXQgPT0gJ2VtJyBvciAkYmFzZS11bml0ID09ICdwdCcge1xuICAgICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSAvIGJhc2UtY29udmVyc2lvbihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgKiAxZW07XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICcje2JyZWFrcG9pbnQtZ2V0KFxcJ2Jhc2UgZm9udCBzaXplXFwnKX0gaXMgbm90IHNldCBpbiB2YWxpZCB1bml0cyBmb3IgZm9udCBzaXplISc7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkge1xuICAkdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIEBpZiAkdW5pdCA9PSAncHgnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDE2cHggKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJyUnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEwMCUgKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ2VtJyB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ3B0JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMnB0ICogMWVtO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbi8vICAgIEB3YXJuICdFdmVyeXRoaW5nIGlzIHRlcnJpYmxlISBXaGF0IGhhdmUgeW91IGRvbmU/ISc7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBtaW4vbWF4IHBhaXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2Utd2lkdGgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzb2x1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4tbWF4KCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgc3RyaW5nIHZhbHVlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlczogICdvcmllbnRhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NhbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHVtaW5vc2l0eSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiBicmVha3BvaW50LW1pbi1tYXgoJGl0ZW0pIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWluLSN7JGl0ZW19JyBvciAkZmVhdHVyZSA9PSAnbWF4LSN7JGl0ZW19JyB7XG4gICAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBpcyBhIG1lZGlhIHR5cGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXM6ICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyYWlsbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZW1ib3NzZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZGhlbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlZWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dic7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRtZWRpYSBpbiAkYnJlYWtwb2ludC1tZWRpYS10eXBlcyB7XG4gICAgQGlmICgkZmVhdHVyZSA9PSAkbWVkaWEpIG9yICgkZmVhdHVyZSA9PSAnbm90ICN7JG1lZGlhfScpIG9yICgkZmVhdHVyZSA9PSAnb25seSAjeyRtZWRpYX0nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIHN0YW5kIGFsb25lXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpIHtcbiAgJHJlc29sdXRpb25zOiAnZGV2aWNlLXBpeGVsLXJhdGlvJywgJ2Rwcic7XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgJHJlc29sdXRpb25zOiBhcHBlbmQoJHJlc29sdXRpb25zLCAncmVzb2x1dGlvbicpO1xuICB9XG5cbiAgQGVhY2ggJHJlc28gaW4gJHJlc29sdXRpb25zIHtcbiAgICBAaWYgaW5kZXgoJGZlYXR1cmUsICRyZXNvKSBvciBpbmRleCgkZmVhdHVyZSwgJ21pbi0jeyRyZXNvfScpIG9yIGluZGV4KCRmZWF0dXJlLCAnbWF4LSN7JHJlc299Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQYXJzZXIgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJwYXJzZXJzL3F1ZXJ5XCI7XG5AaW1wb3J0IFwicGFyc2Vycy9zaW5nbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL2RvdWJsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvdHJpcGxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9yZXNvbHV0aW9uXCI7XG5cbiRNZW1vLUV4aXN0czogZnVuY3Rpb24tZXhpc3RzKG1lbW8tZ2V0KSBhbmQgZnVuY3Rpb24tZXhpc3RzKG1lbW8tc2V0KTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEZ1bmN0aW9uXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50KCRxdWVyeSwgJGNvbnRleHRzLi4uKSB7XG4gICRydW46IHRydWU7XG4gICRyZXR1cm46ICgpO1xuXG4gIC8vIEdyYWIgdGhlIE1lbW8gT3V0cHV0IGlmIE1lbW9pemF0aW9uIGNhbiBiZSBhIHRoaW5nXG4gIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICRyZXR1cm46IG1lbW8tZ2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cyk7XG5cbiAgICBAaWYgJHJldHVybiAhPSBudWxsIHtcbiAgICAgICRydW46IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJE1lbW8tRXhpc3RzIG9yICRydW4ge1xuICAgIC8vIEludGVybmFsIFZhcmlhYmxlc1xuICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICRxdWVyeS1mYWxsYmFjazogZmFsc2U7XG4gICAgJHJldHVybjogKCk7XG5cbiAgICAvLyBSZXNlcnZlIEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRob2xkZXItY29udGV4dDogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjtcbiAgICAkaG9sZGVyLXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50O1xuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cblxuICAgIC8vIFRlc3QgdG8gc2VlIGlmIGl0J3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdFxuICAgICRvci1saXN0OiBpZihsaXN0LXNlcGFyYXRvcigkcXVlcnkpID09ICdjb21tYScsIHRydWUsIGZhbHNlKTtcblxuXG4gICAgQGlmICgkb3ItbGlzdCA9PSBmYWxzZSBhbmQgYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSBmYWxzZSkge1xuICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICAgICAgJGxhc3Q6IG50aCgkcXVlcnksICRsZW5ndGgpO1xuICAgICAgJHF1ZXJ5LWZhbGxiYWNrOiBicmVha3BvaW50LW5vLXF1ZXJ5KCRsYXN0KTtcblxuICAgICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIHtcbiAgICAgICAgJGxlbmd0aDogJGxlbmd0aCAtIDE7XG4gICAgICB9XG5cbiAgICAgIEBpZiAoYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSB0cnVlKSB7XG4gICAgICAgICRtcTogKCk7XG5cbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkbXE6IGFwcGVuZCgkbXEsIG50aCgkcXVlcnksICRpKSwgY29tbWEpO1xuICAgICAgICB9XG5cbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkbXEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkcXVlcnktc3RyaW5nOiAkcXVlcnktc3RyaW5nICsgaWYoJGkgPT0gMSwgJycsICcsICcpICsgYnJlYWtwb2ludC1wYXJzZShudGgoJHF1ZXJ5LCAkaSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHJldHVybjogKCdxdWVyeSc6ICRxdWVyeS1zdHJpbmcsXG4gICAgICAgICdmYWxsYmFjayc6ICRxdWVyeS1mYWxsYmFjayxcbiAgICAgICAgJ2NvbnRleHQgaG9sZGVyJzogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcixcbiAgICAgICAgJ3F1ZXJ5IGNvdW50JzogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudFxuICAgICk7XG4gICAgQGlmIGxlbmd0aCgkY29udGV4dHMpID4gMCBhbmQgbnRoKCRjb250ZXh0cywgMSkgIT0gZmFsc2Uge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gICAgICB9XG4gICAgICAkY29udGV4dC1tYXA6ICgpO1xuICAgICAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAgICAgJGNvbnRleHQtbWFwOiBtYXAtbWVyZ2UoJGNvbnRleHQtbWFwLCAoJGNvbnRleHQ6IGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGNvbnRleHQpKSk7XG4gICAgICB9XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKGNvbnRleHQ6ICRjb250ZXh0LW1hcCkpO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG4gICAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgICAkaG9sZGVyOiBtZW1vLXNldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMsICRyZXR1cm4pO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmFsIEJyZWFrcG9pbnQgUGFyc2VyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSkge1xuICAvLyBJbmNyZWFzZSBudW1iZXIgb2YgJ2FuZCcgcXVlcmllc1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50ICsgMSAhZ2xvYmFsO1xuXG4gIC8vIFNldCB1cCBNZWRpYSBUeXBlXG4gICRxdWVyeS1wcmludDogJyc7XG5cbiAgJGZvcmNlLWFsbDogKChicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSA9PSB0cnVlKSBhbmQgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgPT0gJ2FsbCcpKTtcbiAgJGVtcHR5LW1lZGlhOiB0cnVlO1xuICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgIT0gJ2FsbCcpIHtcbiAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcbiAgfVxuXG5cbiAgJHF1ZXJ5LXJlc29sdXRpb246IGZhbHNlO1xuXG4gICRxdWVyeS1ob2xkZXI6IGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KTtcblxuXG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggcGFyc2VkIG91dCBxdWVyeSBhbmQgd3JpdGUgaXQgdG8gJHF1ZXJ5LXByaW50XG4gICRmaXJzdDogdHJ1ZTtcblxuICBAZWFjaCAkZmVhdHVyZSBpbiAkcXVlcnktaG9sZGVyIHtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJGZlYXR1cmUpO1xuXG4gICAgLy8gUGFyc2UgYSBzaW5nbGUgZmVhdHVyZVxuICAgIEBpZiAoJGxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBGZWF0dXJlIGlzIGN1cnJlbnRseSBhIGxpc3QsIGdyYWIgdGhlIGFjdHVhbCB2YWx1ZVxuICAgICAgJGZlYXR1cmU6IG50aCgkZmVhdHVyZSwgMSk7XG5cbiAgICAgIC8vIE1lZGlhIFR5cGUgbXVzdCBieSBjb252ZW50aW9uIGJlIHRoZSBmaXJzdCBpdGVtLCBzbyBpdCdzIHNhZmUgdG8gZmxhdCBvdmVycmlkZSAkcXVlcnktcHJpbnQsIHdoaWNoIHJpZ2h0IG5vdyBzaG91bGQgb25seSBiZSB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpKSB7XG4gICAgICAgIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoJGZlYXR1cmUgIT0gJ2FsbCcpIHtcbiAgICAgICAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICRmZWF0dXJlO1xuICAgICAgICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG5cbiAgICAgICAgICAvLyBTZXQgQ29udGV4dFxuICAgICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1lZGlhLCAkcXVlcnktcHJpbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSBkb3VibGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDIpIHtcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSAhPSBmYWxzZSkge1xuICAgICAgICAkcXVlcnktcmVzb2x1dGlvbjogJGZlYXR1cmU7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IG51bGw7XG4gICAgICAgIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsXG4gICAgICAgIC8vIHdlIGNoZWNrIHRvIHNlZSBpZiBvbmUgaXMgYSBzaW5nbGUtc3RyaW5nIHZhbHVlLFxuICAgICAgICAvLyB0aGVuIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICAgICAgICAkYWxwaGE6IG50aCgkZmVhdHVyZSwgMSk7XG4gICAgICAgICRiZXRhOiBudGgoJGZlYXR1cmUsIDIpO1xuICAgICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRhbHBoYSkgb3IgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRiZXRhKSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGFscGhhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGJldGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSB0cmlwbGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDMpIHtcbiAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgIH1cblxuICB9XG5cbiAgQGlmICgkcXVlcnktcmVzb2x1dGlvbiAhPSBmYWxzZSkge1xuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgfVxuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGZlYXR1cmUgdGhhdCdzIGJlZW4gZGV0ZWN0ZWQgc28gZmFyIGFuZCBhcHBlbmQgJ2ZhbHNlJyB0byB0aGUgdGhlIHZhbHVlIGxpc3QgdG8gaW5jcmVtZW50IHRoZWlyIGNvdW50ZXJzXG4gIEBlYWNoICRmLCAkdiBpbiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyIHtcbiAgICAkdi1ob2xkZXI6ICR2O1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBpZiBsZW5ndGgoJHYtaG9sZGVyKSA8ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICAgIEBpZiAkZiA9PSAnbWVkaWEnIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpIHtcbiAgLy8gUGFyc2UgZmVhdHVyZXMgb3V0IG9mIGFuIGluZGl2aWR1YWwgcXVlcnlcbiAgJGZlYXR1cmUtaG9sZGVyOiAoKTtcbiAgJHF1ZXJ5LWhvbGRlcjogKCk7XG4gICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCBhIHN0cmluZy9udW1iZXIsIG51bWJlci9zdHJpbmcsIGNoZWNrIHRvIHNlZSBpZiBpdCdzIGEgdmFsaWQgc3RyaW5nL251bWJlciBwYWlyIG9yIHR3byBzaW5nbGVzXG4gICAgQGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIG9yICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcblxuICAgICAgJG51bWJlcjogJyc7XG4gICAgICAkdmFsdWU6ICcnO1xuXG4gICAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMSk7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMik7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGEgc2luZ2xlIHZhbHVlLCBjaGVjayB0byBzZWUgaWYgdGhlIG51bWJlciBwYXNzZWQgaW4gaXMgYSB2YWxpZCBpbnB1dCBmb3Igc2FpZCBzaW5nbGUgdmFsdWUuIEZvcnR1bmF0ZWx5LCBhbGwgY3VycmVudCBzaW5nbGUtdmFsdWUgb3B0aW9ucyBvbmx5IGFjY2VwdCB1bml0bGVzcyBudW1iZXJzLCBzbyB0aGlzIGNoZWNrIGlzIGVhc3kuXG4gICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCR2YWx1ZSkge1xuICAgICAgICBAaWYgdW5pdGxlc3MoJG51bWJlcikge1xuICAgICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSBtZWRpYSB0eXBlLCBzcGxpdCB0aGUgcXVlcnlcbiAgICAgIEBpZiBicmVha3BvaW50LWlzLW1lZGlhKCR2YWx1ZSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMikpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIHNpbmdsZSBmZWF0dXJlLCB3ZSdyZSBqdXN0IGdvaW5nIHRvIGFzc3VtZSBpdCdzIGEgcHJvcGVyIHN0cmluZy92YWx1ZSBwYWlyLCBhbmQgcm9sbCB3aXRoIGl0LlxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG5cbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIG51bWJlcnMsIHdlIGFzc3VtZSBpdCdzIGEgZG91YmxlIGFuZCByb2xsIHdpdGggdGhhdFxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIHtcbiAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggc3RyaW5ncyBhbmQgbmVpdGhlciBhcmUgc2luZ2xlcywgd2Ugcm9sbCB3aXRoIHRoYXQuXG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgdGhyZWUgaXRlbXMgYW5kIG5vbmUgaXMgYSBsaXN0LCB3ZSBjaGVjayB0byBzZWVcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMykpICE9ICdsaXN0JyB7XG4gICAgICAvLyBJZiBub25lIG9mIHRoZSBpdGVtcyBhcmUgc2luZ2xlIHN0cmluZyB2YWx1ZXMgYW5kIG5vbmUgb2YgdGhlIHZhbHVlcyBhcmUgbWVkaWEgdmFsdWVzLCB3ZSdyZSBnb29kLlxuICAgICAgQGlmIChub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMykpKSBhbmQgICgobm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDMpKSkpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCRmZWF0dXJlLWhvbGRlciwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBsZXQncyBjaGVjayB0byBzZWUgaWYgdGhlIGZpcnN0IGl0ZW0gaXMgYSBtZWRpYSB0eXBlXG4gICAgICBAZWxzZSBpZiBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDIpLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgaXRlbSwgb3IgaWYgaXQncyBub3QgYSBzcGVjaWFsIGNhc2UgZG91YmxlIG9yIHRyaXBsZSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHF1ZXJ5LlxuICBAcmV0dXJuICRxdWVyeTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwic2luZ2xlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgZmVhdHVyZSB0aGF0IGNhbiBzdGFuZCBhbG9uZSwgd2UgbGV0IGl0XG4gIEBpZiAoYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSkge1xuICAgICRwYXJzZWQ6ICRmZWF0dXJlO1xuICAgIC8vIFNldCBDb250ZXh0XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICRmZWF0dXJlKTtcbiAgfVxuICAvLyBJZiBpdCdzIG5vdCBhIHN0YW5kIGFsb25lIGZlYXR1cmUsIHdlIHBhc3MgaXQgb2ZmIHRvIHRoZSBkZWZhdWx0IGhhbmRsZXIuXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJygnICsgJHBhcnNlZCArICcpJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZGVmYXVsdCwgJGZlYXR1cmUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIGFuZCAodHlwZS1vZigkZmVhdHVyZSkgPT0gJ251bWJlcicpIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3ticmVha3BvaW50LXRvLWJhc2UtZW0oJGZlYXR1cmUpfSc7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAjeyRmZWF0dXJlfSc7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHQtcGFpclwiO1xuQGltcG9ydCBcImRvdWJsZS9kb3VibGUtc3RyaW5nXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gICRmaXJzdDogbnRoKCRmZWF0dXJlLCAxKTtcbiAgJHNlY29uZDogbnRoKCRmZWF0dXJlLCAyKTtcblxuICAvLyBJZiB3ZSd2ZSBnb3QgdHdvIG51bWJlcnMsIHdlIGtub3cgd2UgbmVlZCB0byB1c2UgdGhlIGRlZmF1bHQgcGFpciBiZWNhdXNlIHRoZXJlIGFyZSBubyBtZWRpYSBxdWVyaWVzIHRoYXQgaGFzIGEgbWVkaWEgZmVhdHVyZSB0aGF0IGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ251bWJlcicge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgdGhleSBhcmUgYm90aCBzdHJpbmdzLCB3ZSBzZW5kIGl0IHRocm91Z2ggdGhlIHN0cmluZyBwYXJzZXJcbiAgQGVsc2UgaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdzdHJpbmcnIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLCB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBwYWlyJyk7XG4gICRtaW46ICcnO1xuICAkbWF4OiAnJztcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRkZWZhdWx0fSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRkZWZhdWx0fSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRkZWZhdWx0fTogI3skbWlufSkgYW5kIChtYXgtI3skZGVmYXVsdH06ICN7JG1heH0pJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICAvLyBUZXN0IHRvIHNlZSB3aGljaCBpcyB0aGUgZmVhdHVyZSBhbmQgd2hpY2ggaXMgdGhlIHZhbHVlXG4gIEBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZpcnN0KSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2UgaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRzZWNvbmQpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJOZWl0aGVyICN7JGZpcnN0fSBub3IgI3skc2Vjb25kfSBpcyBhIHZhbGlkIG1lZGlhIHF1ZXJ5IG5hbWUuXCI7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknO1xufSIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICR2YWx1ZTogYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSk7XG4gIH1cblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknXG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRyaXBsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuXG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIHNlcGFyYXRlIHRoZSBzdHJpbmcgZmVhdHVyZXMgZnJvbSB0aGUgdmFsdWUgbnVtYmVyc1xuICAkc3RyaW5nOiBudWxsO1xuICAkbnVtYmVyczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkZmVhdHVyZSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gc3RyaW5nIHtcbiAgICAgICRzdHJpbmc6ICR2YWw7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRudW1iZXJzKSA9PSAnbnVsbCcge1xuICAgICAgICAkbnVtYmVyczogJHZhbDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcnM6IGFwcGVuZCgkbnVtYmVycywgJHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkc3RyaW5nLCBudGgoJG51bWJlcnMsIDEpLCBudGgoJG51bWJlcnMsIDIpKTtcblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xuXG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkZmVhdHVyZSwgJGZpcnN0LCAkc2Vjb25kKSB7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZmVhdHVyZX0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZmVhdHVyZX0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZmVhdHVyZX06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGZlYXR1cmV9OiAjeyRtYXh9KSc7XG59XG4iLCJAaW1wb3J0IFwicmVzb2x1dGlvbi9yZXNvbHV0aW9uXCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykgYW5kICRxdWVyeS1yZXNvbHV0aW9uIHtcbiAgICAkcmVzb2x1dGlvbnM6IGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcXVlcnktcmVzb2x1dGlvbik7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9ucyk7XG4gICAgJHF1ZXJ5LWhvbGRlcjogJyc7XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgJHF1ZXJ5OiAnI3skcXVlcnktcHJpbnR9ICN7JGxlYWRlcn0je250aCgkcmVzb2x1dGlvbnMsICRpKX0nO1xuICAgICAgQGlmICRpID09IDEge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAkcXVlcnk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICcjeyRxdWVyeS1ob2xkZXJ9LCAjeyRxdWVyeX0nO1xuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gUmV0dXJuIHdpdGggYXR0YWNoZWQgcmVzb2x1dGlvblxuICAgIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xuICB9XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRyZXNvbHV0aW9uKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbik7XG5cbiAgJG91dHB1dDogKCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgJGZlYXR1cmU6ICcnO1xuICAgICR2YWx1ZTogJyc7XG5cbiAgICAvLyBGaW5kIHdoaWNoIGlzIG51bWJlclxuICAgIEBpZiB0eXBlLW9mKG50aCgkcmVzb2x1dGlvbiwgMSkpID09ICdudW1iZXInIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAxKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDIpO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSBtaW4vbWF4L3N0YW5kYXJkXG4gICAgQGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWluLXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21pbi0nO1xuICAgIH1cbiAgICBAZWxzZSBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21heC1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtYXgtJztcbiAgICB9XG5cbiAgICAkc3RhbmRhcmQ6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZX0pJztcblxuICAgIC8vIElmIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggZHBweCxcbiAgICBAaWYgdW5pdCgkdmFsdWUpICE9ICdkcHB4JyB7XG4gICAgICAkYmFzZTogOTZkcGk7XG4gICAgICBAaWYgdW5pdCgkdmFsdWUpID09ICdkcGNtJyB7XG4gICAgICAgICRiYXNlOiAyNDMuODRkcGNtO1xuICAgICAgfVxuICAgICAgLy8gV3JpdGUgb3V0IGZlYXR1cmUgdGVzdHNcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRmYWxsYmFjazogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlIC8gMWRwcHggKiA5NmRwaX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRmYWxsYmFjaywgc3BhY2UpO1xuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbm8tcXVlcnkoJHF1ZXJ5KSB7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gJ2xpc3QnIHtcbiAgICAka2V5d29yZDogbnRoKCRxdWVyeSwgMSk7XG5cbiAgICBAaWYgdHlwZS1vZigka2V5d29yZCkgPT0gJ3N0cmluZycgYW5kICgka2V5d29yZCA9PSAnbm8tcXVlcnknIG9yICRrZXl3b3JkID09ICdubyBxdWVyeScgb3IgJGtleXdvcmQgPT0gJ2ZhbGxiYWNrJykge1xuICAgICAgQHJldHVybiBudGgoJHF1ZXJ5LCAyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCB0aGUgQnJlYWtwb2ludHMgdmFyaWFibGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcbiRCUkVBS1BPSU5UUzogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVzcG9uZC10byBBUEkgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHJlc3BvbmQtdG8oJGNvbnRleHQsICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID4gMCBhbmQgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1lc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gYWRkIGJyZWFrcG9pbnRzIGZvciByZXNwb25kLXRvLiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoKWAgdG8gYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KClgLiBUaGUgYGFkZC1icmVha3BvaW50KClgIGZ1bmN0aW9uIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiO1xuICAgICRCUkVBS1BPSU5UUzogJGJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICAgJGJyZWFrcG9pbnRzOiAoKSAhZ2xvYmFsO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJEJSRUFLUE9JTlRTKSAhPSAnbWFwJyB7XG4gICAgLy8gSnVzdCBpbiBjYXNlIHNvbWVvbmUgd3JpdGVzIGdpYmJlcmlzaCB0byB0aGUgJGJyZWFrcG9pbnRzIHZhcmlhYmxlLlxuICAgIEB3YXJuIFwiWW91ciBicmVha3BvaW50cyBhcmVuJ3QgYSBtYXAhIGByZXNwb25kLXRvYCBleHBlY3RzIGEgbWFwLiBQbGVhc2UgY2hlY2sgdGhlIHZhbHVlIG9mICRCUkVBS1BPSU5UUyB2YXJpYWJsZS5cIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpLCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEB3YXJuIFwiYCN7JGNvbnRleHR9YCBpc24ndCBhIGRlZmluZWQgYnJlYWtwb2ludCEgUGxlYXNlIGFkZCBpdCB1c2luZyBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludChgI3skY29udGV4dH1gLCAkdmFsdWUpO2BcIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZW4ndCBjcmVhdGVkIGFueSBicmVha3BvaW50cyB5ZXQhIE1ha2Ugc29tZSBhbHJlYWR5ISBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0KWBcIjtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFkZCBCcmVha3BvaW50IHRvIEJyZWFrcG9pbnRzXG4vLyBUT0RPOiBSZW1vdmUgZnVuY3Rpb24gaW4gbmV4dCByZWxlYXNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA9PSAwIHtcbiAgICBAcmV0dXJuICRvdXRwdXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgQHJldHVybiAkYnJlYWtwb2ludHM7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgQHJldHVybiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkb3V0cHV0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgICRCUkVBS1BPSU5UUzogJG91dHB1dCAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgICRCUkVBS1BPSU5UUzogJEJSRUFLUE9JTlRTICFnbG9iYWw7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgJEJSRUFLUE9JTlRTOiBtYXAtbWVyZ2UoJEJSRUFLUE9JTlRTLCAkb3V0cHV0KSAhZ2xvYmFsO1xuICAgIH1cbiAgfVxufVxuXG5AZnVuY3Rpb24gZ2V0LWJyZWFrcG9pbnQoJG5hbWU6IGZhbHNlKSB7XG4gIEBpZiAkbmFtZSA9PSBmYWxzZSB7XG4gICAgQHJldHVybiAkQlJFQUtQT0lOVFM7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQlJFQUtQT0lOVFMsICRuYW1lKTtcbiAgfVxufVxuIiwiQG1peGluIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nIHtcbiAgJGxlZ2FjeVZhcnM6IChcbiAgICAnZGVmYXVsdC1tZWRpYSc6ICdkZWZhdWx0IG1lZGlhJyxcbiAgICAnZGVmYXVsdC1mZWF0dXJlJzogJ2RlZmF1bHQgZmVhdHVyZScsXG4gICAgJ2ZvcmNlLW1lZGlhLWFsbCc6ICdmb3JjZSBhbGwgbWVkaWEgdHlwZScsXG4gICAgJ3RvLWVtcyc6ICd0byBlbXMnLFxuICAgICdyZXNvbHV0aW9ucyc6ICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLFxuICAgICduby1xdWVyaWVzJzogJ25vIHF1ZXJpZXMnLFxuICAgICduby1xdWVyeS1mYWxsYmFja3MnOiAnbm8gcXVlcnkgZmFsbGJhY2tzJyxcbiAgICAnYmFzZS1mb250LXNpemUnOiAnYmFzZSBmb250IHNpemUnLFxuICAgICdsZWdhY3ktc3ludGF4JzogJ2xlZ2FjeSBzeW50YXgnXG4gICk7XG5cbiAgQGVhY2ggJGxlZ2FjeSwgJG5ldyBpbiAkbGVnYWN5VmFycyB7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtJyArICRsZWdhY3kpIHtcbiAgICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gY2hhbmdlIHNldHRpbmdzIGZvciBCcmVha3BvaW50LiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50LSN7JGxlZ2FjeX06IHt7c2V0dGluZ319YCB0byBgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJyN7JG5ld30nLCB7e3NldHRpbmd9fSlgLiBWYXJpYWJsZSBzZXR0aW5ncywgYXMgd2VsbCBhcyB0aGlzIHdhcm5pbmcgd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCJcbiAgICB9XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEhhbmQgY29ycmVjdCBlYWNoIHNldHRpbmdcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtbWVkaWEnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBtZWRpYScsICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBmZWF0dXJlJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwnKSBhbmQgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsICE9IGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXRvLWVtcycpIGFuZCAkYnJlYWtwb2ludC10by1lbXMgIT0gYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndG8gZW1zJywgJGJyZWFrcG9pbnQtdG8tZW1zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1yZXNvbHV0aW9ucycpIGFuZCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyAhPSBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcmllcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyaWVzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyaWVzJywgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyeSBmYWxsYmFja3MnLCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWJhc2UtZm9udC1zaXplJykgYW5kICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplICE9IGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnYmFzZSBmb250IHNpemUnLCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCcpIGFuZCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4ICE9IGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4Jykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdsZWdhY3kgc3ludGF4JywgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCk7XG4gIH1cbn0iLCJAaW1wb3J0IFwiZnVuY3Rpb25zXCI7XG5AaW1wb3J0IFwiei1pbmRleFwiO1xuQGltcG9ydCBcIm1lZGlhLXF1ZXJpZXNcIjtcbkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJ1bmlib2FyZFwiO1xuQGltcG9ydCBcIm1peGluc1wiO1xuQGltcG9ydCBcImV4dGVuZHNcIjtcbkBpbXBvcnQgXCJmbGV4XCI7XG5AaW1wb3J0IFwiYm94XCI7XG5AaW1wb3J0IFwiZmx1aWQtc2l6ZVwiO1xuIiwiLy8vIFotaW5kZXhlcyBtYXAsIGdhdGhlcmluZyBhbGwgWiBsYXllcnMgb2YgdGhlIGFwcGxpY2F0aW9uXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHR5cGUgTWFwXG4vLy8gQHByb3Age1N0cmluZ30ga2V5IC0gTGF5ZXLigJlzIG5hbWVcbi8vLyBAcHJvcCB7TnVtYmVyfSB2YWx1ZSAtIFogdmFsdWUgbWFwcGVkIHRvIHRoZSBrZXlcbiR6LWluZGV4ZXM6IChcImNnX19wcm9tb3Rpb25cIjogMjA1LCBcImNnX19waWVjZS5kcmFnZ2luZ1wiOiAyMDQsIFwiY2dfX3BpZWNlLmFuaW1cIjogMywgXCJjZ19fc3ZnXCI6IDIsIFwiY2dfX3BpZWNlXCI6IDIsIFwiY2dfX3BpZWNlLmZhZGluZ1wiOiAxLCBcInBvd2VydGlwXCI6IDEyMCwgXCJpbnF1aXJ5XCI6IDExMSwgXCJ6ZW4tdG9nZ2xlXCI6IDExMCwgXCJtb2RhbFwiOiAxMTAsIFwibXNlbGVjdFwiOiAxMTAsIFwidG9wbmF2XCI6IDExMCwgXCJmdWxsc2NyZWVuLW1hc2tcIjogMTA5LCBcImRyb3Bkb3duXCI6IDEwOCwgXCJjb250ZXh0LW1lbnVcIjogMTA3LCBcInNpdGUtaGVhZGVyXCI6IDEwNiwgXCJyZWNvbm5lY3RpbmdcIjogMTA1LCBcInRvdXItcmVtaW5kZXJcIjogMTA0LCBcIm5hZy1jaXJjbGVcIjogMTAzLCBcIm16LW1lbnVcIjogNCwgXCJhYm92ZS1saW5rLW92ZXJsYXlcIjogMywgXCJmcmllbmQtYm94XCI6IDIsIFwibGluay1vdmVybGF5XCI6IDIsIFwiZ2FtZS1ib29rbWFya1wiOiAyLCBcInN1Ym5hdi1zaWRlXCI6IDIsIFwiZGVmYXVsdFwiOiAwKTtcblxuLy8vIEdldCBhIHotaW5kZXggdmFsdWUgZnJvbSBhIGxheWVyIG5hbWVcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbGF5ZXIgLSBMYXllcuKAmXMgbmFtZVxuLy8vIEByZXR1cm4ge051bWJlcn1cbi8vLyBAcmVxdWlyZSAkei1pbmRleGVzXG5AZnVuY3Rpb24geigkbGF5ZXIpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCR6LWluZGV4ZXMsICRsYXllcik7XG59XG4iLCIvKiBXaWR0aHMgKi9cblxuJG1xLXh4LXNtYWxsOiBtaW4td2lkdGggNTAwcHg7XG4kbXEteC1zbWFsbDogbWluLXdpZHRoIDY1MHB4O1xuJG1xLXNtYWxsOiBtaW4td2lkdGggODAwcHg7XG4kbXEtbWVkaXVtOiBtaW4td2lkdGggOTgwcHg7XG4kbXEtbGFyZ2U6IG1pbi13aWR0aCAxMTIwcHg7XG4kbXEteC1sYXJnZTogbWluLXdpZHRoIDEyNjBweDtcblxuJG1xLW5vdC14eC1zbWFsbDogbWF4LXdpZHRoIDQ5OXB4O1xuJG1xLW5vdC14LXNtYWxsOiBtYXgtd2lkdGggNjQ5cHg7XG4kbXEtbm90LXNtYWxsOiBtYXgtd2lkdGggNzk5cHg7XG4kbXEtbm90LW1lZGl1bTogbWF4LXdpZHRoIDk3OXB4O1xuJG1xLW5vdC14LWxhcmdlOiBtYXgtd2lkdGggMTI1OXB4O1xuXG4vKiBIZWlnaHRzICovXG5cbiRtcS14LXNob3J0OiBtaW4taGVpZ2h0IDQwMHB4O1xuJG1xLXNob3J0OiBtaW4taGVpZ2h0IDUwMHB4O1xuJG1xLXRhbGw6IG1pbi1oZWlnaHQgNjAwcHg7XG4kbXEteC10YWxsOiBtaW4taGVpZ2h0IDcwMHB4O1xuXG4kbXEtbm90LXgtc2hvcnQ6IG1heC1oZWlnaHQgMzk5cHg7XG5cbi8qIE9yaWVudGF0aW9ucyAqL1xuXG4kbXEtcG9ydHJhaXQ6IG9yaWVudGF0aW9uIHBvcnRyYWl0O1xuJG1xLWxhbmRzY2FwZTogb3JpZW50YXRpb24gbGFuZHNjYXBlO1xuXG4vKiBDYXBhYmlsaXRpZXMgKi9cblxuJG1xLWhvdmVyLXllczogXCJob3ZlcjogaG92ZXJcIjtcbiRtcS1ob3Zlci1ubzogaG92ZXIgbm9uZTtcblxuLyogQWxpYXNlcyAqL1xuXG4kbXEtbWFpbi1tYXJnaW46ICRtcS1zbWFsbDtcblxuJG1xLXRvcG5hdi12aXNpYmxlOiAkbXEtbWVkaXVtO1xuJG1xLXRvcG5hdi1oaWRkZW46ICRtcS1ub3QtbWVkaXVtO1xuXG4kbXEtc2l0ZS1oZWFkZXItdGFsbDogJG1xLXRhbGw7XG5cbiRtcS1zdWJuYXYtdG9wOiAkbXEtbm90LXNtYWxsO1xuJG1xLXN1Ym5hdi1zaWRlOiAkbXEtc21hbGw7XG5cbiRtcS16b29tLWVuYWJsZWQ6ICRtcS1zbWFsbCAkbXEtc2hvcnQ7XG4iLCIkZGVidWc6IGZhbHNlO1xuXG4kZm9udC1wYXRoOiBcIi4uL2ZvbnRcIjtcbiRpbWctcGF0aDogXCIuLi9pbWFnZXNcIjtcblxuJHZpZXdwb3J0LW1pbi13aWR0aDogMzIwcHg7XG5cbiRibG9jay1nYXA6IDJ2bWluO1xuJGJsb2NrLWdhcC1oYWxmOiAxdm1pbjtcblxuJGJsb2NrLWdhcC1oOiAydmg7XG4kYmxvY2stZ2FwLXc6IDJ2dztcbiRibG9jay1nYXAtdy1oYWxmOiAxdnc7XG5cbiRib3gtcmFkaXVzLXNpemU6IDNweDtcblxuJHNpdGUtaGVhZGVyLXRhbGwtaGVpZ2h0OiA2MHB4O1xuJHNpdGUtaGVhZGVyLXNob3J0LWhlaWdodDogNDBweDtcblxuJHRyYW5zaXRpb24tZHVyYXRpb246IDE1MG1zO1xuXG4kbWFpbi1tYXgtd2lkdGg6IDEzMDBweCAhZGVmYXVsdDtcblxuJG1haW4tbWFyZ2luOiB2YXIoLS1tYWluLW1hcmdpbik7XG4kc2l0ZS1oZWFkZXItaGVpZ2h0OiB2YXIoLS1zaXRlLWhlYWRlci1oZWlnaHQpO1xuXG4kc2l0ZS1oZWFkZXItbWFyZ2luOiB2YXIoLS1zaXRlLWhlYWRlci1tYXJnaW4pO1xuXG4kc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0OiBjYWxjKCN7JHNpdGUtaGVhZGVyLWhlaWdodH0gKyAjeyRzaXRlLWhlYWRlci1tYXJnaW59KTtcbiIsIi8qIFVuaWJvYXJkOiBrZWVwIHRoZSBzYW1lIHBhZ2UgbGF5b3V0IGFjY3Jvc3MgcGFnZXMgKi9cblxuJG1xLWJvYXJkLXJlc2l6YWJsZTogJG1xLXNtYWxsO1xuJG1xLWNvbDEtdW5pYm9hcmQ6ICRtcS1ub3Qtc21hbGwgJG1xLXBvcnRyYWl0O1xuJG1xLWNvbDItdW5pYm9hcmQ6ICRtcS1zbWFsbCwgJG1xLWxhbmRzY2FwZTtcbiRtcS1jb2wzLXVuaWJvYXJkOiAkbXEteC1sYXJnZTtcblxuLyogd2hlbiB0aGUgd2lkdGggaXMgYXBwcm9wcmlhdGUgZm9yIGNvbDEsIGJ1dCBsYW5kc2NhcGUgcHJldmVudHMgaXQgKi9cbiRtcS1jb2wyLXVuaWJvYXJkLXNxdWVlemU6ICRtcS1ub3Qtc21hbGwgJG1xLWxhbmRzY2FwZTtcblxuJGNvbDMtdW5pYm9hcmQtc2lkZTogbWlubWF4KDIzMHB4LCAyMHZ3KTtcbiRjb2wzLXVuaWJvYXJkLXRhYmxlOiBtaW5tYXgoMjQwcHgsIDQwMHB4KTtcbiRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzOiAzcmVtO1xuXG4kY29sMy11bmlib2FyZC1taW4td2lkdGg6IGNhbGMoNzB2bWluICogdmFyKC0tYm9hcmQtc2NhbGUpKTtcbiRjb2wzLXVuaWJvYXJkLW1heC13aWR0aDogY2FsYygxMDB2aCAqIHZhcigtLWJvYXJkLXNjYWxlKSAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzfSk7XG4kY29sMy11bmlib2FyZC13aWR0aDogbWlubWF4KCRjb2wzLXVuaWJvYXJkLW1pbi13aWR0aCwgJGNvbDMtdW5pYm9hcmQtbWF4LXdpZHRoKTtcblxuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1zY2FsZTogMC45O1xuXG4vLyB6b29tOiA4NSVcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWluLXdpZHRoOiA1MDBweDtcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWF4LXdpZHRoOiBjYWxjKDEwMHZoICogI3skY29sMy11bmlib2FyZC1kZWZhdWx0LXNjYWxlfSAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzfSk7XG4kY29sMy11bmlib2FyZC1kZWZhdWx0LXdpZHRoOiBtaW5tYXgoI3skY29sMy11bmlib2FyZC1kZWZhdWx0LW1pbi13aWR0aH0sICN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1tYXgtd2lkdGh9KTtcblxuJGNvbDItdW5pYm9hcmQtdGFibGU6ICRjb2wzLXVuaWJvYXJkLXRhYmxlO1xuJGNvbDItdW5pYm9hcmQtY29udHJvbHM6ICRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzO1xuJGNvbDItdW5pYm9hcmQtd2lkdGg6ICRjb2wzLXVuaWJvYXJkLXdpZHRoO1xuJGNvbDItdW5pYm9hcmQtZGVmYXVsdC13aWR0aDogJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aDtcblxuJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS10YWJsZTogbWlubWF4KDIwMHB4LCAyNDBweCk7XG4kY29sMi11bmlib2FyZC1zcXVlZXplLXdpZHRoOiBtaW5tYXgoY2FsYyg1NXZtaW4pLCBjYWxjKDEwMHZoIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGJsb2NrLWdhcH0pKTtcblxuJGNvbDEtdW5pYm9hcmQtY29udHJvbHM6ICRjb2wyLXVuaWJvYXJkLWNvbnRyb2xzO1xuIiwiQG1peGluIGJveC1yYWRpdXMge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplO1xufVxuXG5AbWl4aW4gYm94LXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6ICRib3gtc2hhZG93O1xufVxuXG5AbWl4aW4gYm94LW5lYXQge1xuICBAaW5jbHVkZSBib3gtcmFkaXVzO1xuICBAaW5jbHVkZSBib3gtc2hhZG93O1xufVxuXG5AbWl4aW4gZGVidWctem9vbS1pbnB1dCB7XG4gICN6b29tLWlucHV0IHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtem9vbS1lbmFibGVkKSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIGJvdHRvbTogM3B4O1xuICAgICAgcmlnaHQ6IDNweDtcbiAgICAgIHdpZHRoOiAxMHZ3O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHJhbnNpdGlvbigkcHJvcDogYWxsLCAkZHVyOiAkdHJhbnNpdGlvbi1kdXJhdGlvbikge1xuICB0cmFuc2l0aW9uOiAkcHJvcCAkZHVyO1xufVxuXG5AbWl4aW4gaG92ZXJmbG93IHtcbiAgb3ZlcmZsb3cteTogYXV0bztcblxuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoaWRlIHtcbiAgZGlzcGxheTogbm9uZTtcblxuICAuYmxpbmQtbW9kZSAmIHtcbiAgICBkaXNwbGF5OiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBlbGxpcHNpcyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG5AbWl4aW4gY3Jvc3N0YWJsZS1sYXJnZSB7XG4gIC5jcm9zc3RhYmxlX191c2VycyB7XG4gICAgZmxleDogNyAxIGF1dG87XG4gIH1cbn1cblxuQG1peGluIGNyb3NzdGFibGUtc21hbGwge1xuICAuY3Jvc3N0YWJsZV9fdXNlcnMge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG59XG5cbi8qIGF0bSBvbmx5IGNocm9tZSBzdXBwb3J0cyBtaW4tY29udGVudCwgbWF4LWNvbnRlbnQgKi9cbkBtaXhpbiBwcm9wZXItZ3JpZCB7XG4gIEBzdXBwb3J0cyAoaGVpZ2h0OiBtYXgtY29udGVudCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBib2R5LWZpeGVkLXNjcm9sbCB7XG4gIGJvZHkge1xuICAgIC8qIHByZXZlbnRzIHNjcm9sbCBiYXIgZmxpY2tlciB3aGVuIGRyYWdnaW5nIGEgcGllY2Ugb3V0ICovXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICB9XG59XG4iLCIlYmFzZS1mb250LWZhbGxiYWNrIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnLCBTYW5zLVNlcmlmO1xufVxuXG4lYmFzZS1mb250IHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xufVxuXG4lcm9ib3RvIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xufVxuXG4lcm9ib3RvLWZhdCB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuJWNoZXNzLWZvbnQge1xuICBmb250LWZhbWlseTogJ05vdG8gQ2hlc3MnLCAnTm90byBTYW5zJztcbn1cblxuJXNhbiB7XG4gIEBleHRlbmQgJWNoZXNzLWZvbnQ7XG5cbiAgLnBpZWNlLWxldHRlciAmIHtcbiAgICBAZXh0ZW5kICViYXNlLWZvbnQ7XG4gIH1cbn1cblxuLyogdGV4dCBwcmludGVkIGRpcmVjdGx5IG9uIHRoZSBwYWdlIGJhY2tncm91bmQgZGVzZXJ2ZXMgc3BlY2lhbCB0cmVhdG1lbnQgKHRyYW5zcCB0aGVtZSkgKi9cbiVwYWdlLWZvbnQge1xuICBjb2xvcjogJGMtZm9udC1wYWdlO1xufVxuXG4lcGFnZS10ZXh0IHtcbiAgQGV4dGVuZCAlcGFnZS1mb250LCAlcGFnZS10ZXh0LXNoYWRvdyAhb3B0aW9uYWw7XG59XG5cbiVwYWdlLWxpbmsge1xuICBAZXh0ZW5kICVwYWdlLWxpbmstZm9udCAhb3B0aW9uYWw7XG5cbiAgQGV4dGVuZCAlcGFnZS10ZXh0LXNoYWRvdyAhb3B0aW9uYWw7XG59XG5cbiVtZXRhbCB7XG4gIEBpbmNsdWRlIG1ldGFsO1xufVxuXG4lbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBtZXRhbC1ob3Zlcjtcbn1cblxuJXBhZ2UtbWV0YWwge1xuICBAaW5jbHVkZSBwYWdlLW1ldGFsO1xufVxuXG4lcGFnZS1tZXRhbC1ob3ZlciB7XG4gIEBpbmNsdWRlIHBhZ2UtbWV0YWw7XG59XG5cbiVtZXRhbC1iZyB7XG4gIEBpbmNsdWRlIG1ldGFsLWJnO1xufVxuXG4lYWN0aXZlLWluc2V0LXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgM3B4IDRweCBoc2xhKDAsIDAsIDAsIDAuMTUpIGluc2V0O1xufVxuXG4lYWN0aXZlIHtcbiAgQGV4dGVuZCAlYWN0aXZlLWluc2V0LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAjYmQxMTFmO1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMXB4IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbiN0cmFpbmVyIGdyb3VwLnJhZGlvIGlucHV0OmNoZWNrZWQgKyBsYWJlbHtcbiAgYmFja2dyb3VuZDogIzA0NTZiYztcbn1cblxuJWFjdGl2ZS1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IG1peCh3aGl0ZSwgJGMtYWNjZW50LCAyMCUpO1xufVxuXG4lYWN0aXZlLXNvZnQge1xuICBAZXh0ZW5kICVhY3RpdmUtaW5zZXQtc2hhZG93O1xuXG4gIGJhY2tncm91bmQ6ICMwNDU2YmM7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICB0ZXh0LXNoYWRvdzogMXB4IDFweCAxcHggJGMtZm9udC1zaGFkb3cgIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbiVkcm9wZG93bi1zaGFkb3cge1xuICBib3gtc2hhZG93OiAtMXB4IDVweCA2cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xufVxuXG4lcG9wdXAtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAxNHB4IDI4cHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIyKTtcbn1cblxuJWJ1dHRvbi1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDJweCA1cHggMCBoc2xhKDAsIDAsIDAlLCAwLjIyNSk7XG59XG5cbiVidXR0b24tcmFpc2VkLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEwcHggMHB4IGhzbGEoMCwgMCwgMCwgMC4yMjUpO1xufVxuXG4lYnV0dG9uLW5vbmUge1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGNvbG9yOiAkYy1mb250O1xufVxuXG4lY2hlY2tib3gge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgYmFja2dyb3VuZDogJGMtYmctcGFnZTtcbiAgYm9yZGVyOiAxcHggc29saWQgJGMtYmctbG93O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IC41ZW07XG5cbiAgJjpjaGVja2VkIHtcbiAgICBiYWNrZ3JvdW5kOiAjMDQ1NmJjO1xuICAgIGJvcmRlci1jb2xvcjogIzA0NTZiYztcbiAgfVxufVxuXG4lZm9jdXMtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAwIDEycHggJGMtZm9udC1kaW07XG59XG5cbiVub3dyYXAtaGlkZGVuIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuJW5vd3JhcC1lbGxpcHNpcyB7XG4gIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbiVib3gtcGFkZGluZyB7XG4gIHBhZGRpbmc6IDV2aCB2YXIoLS1ib3gtcGFkZGluZyk7XG59XG5cbiVib3gtcGFkZGluZy1ob3JpeiB7XG4gIHBhZGRpbmc6IDAgdmFyKC0tYm94LXBhZGRpbmcpO1xufVxuXG4lYnJlYWstd29yZCB7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbiVicmVhay13b3JkLWhhcmQge1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG5cbiAgLyogc3VwcG9ydDogZmlyZWZveCAqL1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG4lYnJlYWstbm9wZSB7XG4gIG92ZXJmbG93LXdyYXA6IG5vcm1hbDtcbiAgd29yZC1icmVhazogbm9ybWFsO1xufVxuXG4lZWxsaXBzaXMge1xuICBAaW5jbHVkZSBlbGxpcHNpcztcbn1cblxuJXNxdWFyZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ldmlkZW8ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiA1Ni4yNSU7XG5cbiAgLyogMTYvOSAqL1xuICAvLyBwYWRkaW5nLWJvdHRvbTogNzUlOyAvKiA0LzMgKi9cbiAgd2lkdGg6IDEwMCU7XG5cbiAgPiAqIHtcbiAgICBAZXh0ZW5kICVhYnMtMTAwO1xuXG4gICAgYm9yZGVyOiBub25lO1xuICB9XG59XG5cbiVkYXRhLWljb24ge1xuICBmb250LXNpemU6IDEuMmVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBmb250LWZhbWlseTogJ2xpY2hlc3MnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBzcGVhazogbm9uZTtcbiAgY29udGVudDogYXR0cihkYXRhLWljb24pO1xuICBvcGFjaXR5OiAwLjk7XG59XG5cbiVkYXRhLWljb24tdG9wIHtcbiAgJjo6YmVmb3JlIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG4gIH1cbn1cblxuJWZ1bGxzY3JlZW4tbWFzayB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kOiAkYy1wYWdlLW1hc2s7XG4gIHotaW5kZXg6IHooXCJmdWxsc2NyZWVuLW1hc2tcIik7XG59XG5cbiVsaW5rLW92ZXJsYXkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgei1pbmRleDogeihcImxpbmstb3ZlcmxheVwiKTtcbn1cblxuJWFicy0xMDAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4iLCIlZmxleC13cmFwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbn1cblxuJWZsZXgtY2VudGVyIHtcbiAgLyogZXh0ZW5kcyAlZmxleC13cmFwICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbiVmbGV4LWNlbnRlci1ub3dyYXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbiVmbGV4LWJldHdlZW4ge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbiVmbGV4LWJldHdlZW4tbm93cmFwIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbiVmbGV4LWJldHdlZW4tc3RyZXRjaCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG59XG5cbiVmbGV4LWFyb3VuZCB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xufVxuXG4lZmxleC1jb2x1bW4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IGNvbHVtbjtcbn1cbiIsIiVib3gtcmFkaXVzIHtcbiAgQGluY2x1ZGUgYm94LXJhZGl1cztcbn1cblxuJWJveC1yYWRpdXMtZm9yY2Uge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgLyogaGVscHMgd2l0aCBjbGlwcGluZyBiYWNrZ3JvdW5kIGludG8gYm9yZGVyLXJhZGl1cyAqL1xufVxuXG4lYm94LXJhZGl1cy1sZWZ0IHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAwIDAgJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuJWJveC1yYWRpdXMtcmlnaHQge1xuICBib3JkZXItcmFkaXVzOiAwICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZSAwO1xufVxuXG4lYm94LXJhZGl1cy10b3Age1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemUgMCAwO1xufVxuXG4lYm94LXJhZGl1cy1ib3R0b20ge1xuICBib3JkZXItcmFkaXVzOiAwIDAgJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplO1xufVxuXG4lYm94LXJhZGl1cy10b3AtbGVmdCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgMCAwIDA7XG59XG5cbiVib3gtcmFkaXVzLXRvcC1yaWdodCB7XG4gIGJvcmRlci1yYWRpdXM6IDAgJGJveC1yYWRpdXMtc2l6ZSAwIDA7XG59XG5cbiVib3gtc2hhZG93IHtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdztcbn1cblxuJWJveC1uZWF0IHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXM7XG59XG5cbiVib3gtbmVhdC10b3Age1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cy10b3A7XG59XG5cbiVib3gtbmVhdC1mb3JjZSB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzLWZvcmNlO1xufVxuIiwiJHZwLW1pbi13aWR0aDogMzIwcHggIWRlZmF1bHQ7XG4kdnAtbWF4LXdpZHRoOiAxMjAwcHggIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzdHJpcC11bml0KCR2YWx1ZSkge1xuICBAcmV0dXJuICR2YWx1ZSAvICgkdmFsdWUgKiAwICsgMSk7XG59XG5cbkBtaXhpbiBmbHVpZC1zaXplKCRwcm9wLCAkbWluLXNpemUsICRtYXgtc2l6ZSwgJG1pbi12dzogJHZwLW1pbi13aWR0aCwgJG1heC12dzogJHZwLW1heC13aWR0aCkge1xuICAkdTE6IHVuaXQoJG1pbi12dyk7XG4gICR1MjogdW5pdCgkbWF4LXZ3KTtcbiAgJHUzOiB1bml0KCRtaW4tc2l6ZSk7XG4gICR1NDogdW5pdCgkbWF4LXNpemUpO1xuXG4gIEBpZiAkdTEgPT0gJHUyIGFuZCAkdTEgPT0gJHUzIGFuZCAkdTEgPT0gJHU0IHtcbiAgICAmIHtcbiAgICAgICN7JHByb3B9OiAkbWluLXNpemU7XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluLXZ3KSB7XG4gICAgICAgICN7JHByb3B9OiBjYWxjKCN7JG1pbi1zaXplfSArICN7c3RyaXAtdW5pdCgkbWF4LXNpemUgLSAkbWluLXNpemUpfSAqICgoMTAwdncgLSAjeyRtaW4tdnd9KSAvICN7c3RyaXAtdW5pdCgkbWF4LXZ3IC0gJG1pbi12dyl9KSk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWF4LXZ3KSB7XG4gICAgICAgICN7JHByb3B9OiAkbWF4LXNpemU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAZXJyb3IgXCJmbHVpZC1zaXplIHJlcXVpcmVzIHRoYXQgYWxsIHZhbHVlcyBoYXZlIHRoZSBzYW1lIHVuaXRcIjtcbiAgfVxufVxuIiwiLmZidCB7XG4gIEBleHRlbmQgJWJ1dHRvbi1ub25lO1xuXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICY6aG92ZXI6bm90KC5kaXNhYmxlZCk6bm90KFtkaXNhYmxlZF0pIHtcbiAgICAgIGJhY2tncm91bmQ6ICNlZDFjMjQ7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICB9XG4gIH1cblxuICAmLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogI2JkMTExZiAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjZmZmO1xuICB9XG5cbiAgJi5kaXNhYmxlZCxcbiAgJltkaXNhYmxlZF0ge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gIH1cbn1cbiIsIkBrZXlmcmFtZXMgYmFyLWdsaWRlci1hbmltIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTMwMHB4KTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMTAwcHgpO1xuICB9XG59XG5cbi5iYXItZ2xpZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiA3MHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpKTtcbiAgICBhbmltYXRpb246IGJhci1nbGlkZXItYW5pbSAzcyBsaW5lYXIgaW5maW5pdGU7XG4gIH1cbn1cbiIsIi5zbGlzdCB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuXG4gIHRoZWFkIHtcbiAgICBAZXh0ZW5kICVtZXRhbCwgJXJvYm90bztcblxuICAgIHRoIHtcbiAgICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICAgICAgcGFkZGluZzogLjVyZW0gLjhyZW07XG4gICAgfVxuXG4gICAgdGgubGFyZ2Uge1xuICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgfVxuICB9XG5cbiAgdGQge1xuICAgIHBhZGRpbmc6IDFyZW07XG5cbiAgICAubGFiZWwge1xuICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICAgIGZvbnQtc2l6ZTogLjhyZW07XG4gICAgfVxuICB9XG5cbiAgdGJvZHkgdHI6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgfVxuXG4gIHRkOmZpcnN0LWNoaWxkLFxuICB0aDpmaXJzdC1jaGlsZCB7XG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XG4gIH1cblxuICAmLXBhZCB7XG4gICAgdGQ6Zmlyc3QtY2hpbGQsXG4gICAgdGg6Zmlyc3QtY2hpbGQge1xuICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1ib3gtcGFkZGluZyk7XG4gICAgfVxuXG4gICAgdGQ6bGFzdC1jaGlsZCxcbiAgICB0aDpsYXN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLWJveC1wYWRkaW5nKTtcbiAgICB9XG4gIH1cblxuICAmLWludmVydCB7XG4gICAgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgfVxuXG4gICAgdGJvZHkgdHI6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIucHVsbC1xdW90ZSB7XG4gIG1hcmdpbjogMCBhdXRvO1xuXG4gIHAge1xuICAgIGNvbG9yOiAkYy1mb250O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXJnaW46IDAgLjdlbTtcbiAgICBwYWRkaW5nOiAxZW0gMDtcbiAgICBib3JkZXI6ICRib3JkZXI7XG4gICAgYm9yZGVyLXdpZHRoOiAxcHggMDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgZm9udC1zaXplOiAxLjFyZW07XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAtOXB4O1xuICAgICAgbGVmdDogNDJweDtcbiAgICAgIHdpZHRoOiAxNXB4O1xuICAgICAgaGVpZ2h0OiAxNXB4O1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAkYy1ib3JkZXI7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtYm9yZGVyO1xuICAgICAgdHJhbnNmb3JtOiBza2V3KDQ1ZGVnKSByb3RhdGUoLTQ1ZGVnKTtcbiAgICB9XG4gIH1cblxuICAmLmxvbmcgcCB7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICB9XG5cbiAgZm9vdGVyIHtcbiAgICBtYXJnaW46IDEwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnXFwyMDE0XFwyMDA5JztcbiAgICB9XG4gIH1cbn1cbiIsIiVmaXJlLXRyb3BoeS1zaGFkb3cge1xuICB0ZXh0LXNoYWRvdzogMCAuMDA4ZW0gLjEyN2VtICNmZWZjYzksIC4wNTVlbSAtLjA2NmVtIC4yZW0gI2ZlZWM4NSwgLS4xMTFlbSAtLjEyN2VtIC4yNzJlbSAjZmZhZTM0LCAuMTExZW0gLS4yNzJlbSAuNDExZW0gI2VjNzYwYywgLS4xMTFlbSAtLjQ1NmVtIC40MTZlbSAjY2Q0NjA2LCAwIC0uNTMzZW0gLjU3N2VtICM5NzM3MTYsIC4wNTVlbSAtLjU1ZW0gLjUzM2VtICM0NTFiMGU7XG59XG5cbkBrZXlmcmFtZXMgZmlyZS10cm9waHkge1xuICAwJSB7XG4gICAgdGV4dC1zaGFkb3c6IDAgLjAwOGVtIC4xMjdlbSAjZmVmY2M5LCAuMDU1ZW0gLS4wNjZlbSAuMmVtICNmZWVjODUsIC0uMTExZW0gLS4xMjdlbSAuMjcyZW0gI2ZmYWUzNCwgLjExMWVtIC0uMjcyZW0gLjQxMWVtICNlYzc2MGMsIC0uMTExZW0gLS40NTZlbSAuNDE2ZW0gI2NkNDYwNiwgMCAtLjUzM2VtIC41NzdlbSAjOTczNzE2LCAuMDU1ZW0gLS41NWVtIC41MzNlbSAjNDUxYjBlO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdGV4dC1zaGFkb3c6IDAgMCAuMTExZW0gI2ZlZmNjOSwgLjA1NWVtIC0uMDU1ZW0gLjE2NmVtICNmZWZjYzksIC0uMTExZW0gLS4xMTFlbSAuMjIyZW0gI2ZlZWM4NSwgLjEyMmVtIC0uMjMzZW0gLjMzM2VtICNmZmFlMzQsIC0uMTIyZW0gLS4zMjJlbSAuMjc3ZW0gI2VjNzYwYywgMCAtLjQ1NmVtIC40NDRlbSAjY2Q0NjA2LCAuMDU1ZW0gLS41ZW0gLjQ0NGVtICM5NzM3MTY7XG4gIH1cbn1cblxuLmZpcmUtdHJvcGh5IHtcbiAgQGV4dGVuZCAlZmlyZS10cm9waHktc2hhZG93O1xuXG4gIGNvbG9yOiAkYy1mb250O1xuICBmb250LXNpemU6IDkwcHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuXG4gICY6aG92ZXIge1xuICAgIGFuaW1hdGlvbjogZmlyZS10cm9waHkgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7XG4gIH1cbn1cbiIsIi5jb2xvci1pY29uIHtcbiAgQGlmICR0aGVtZS1saWdodCB7XG4gICAgJi53aGl0ZTo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiS1wiO1xuICAgIH1cblxuICAgICYuYmxhY2s6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIkpcIjtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICYud2hpdGU6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIkpcIjtcbiAgICB9XG5cbiAgICAmLmJsYWNrOjpiZWZvcmUge1xuICAgICAgY29udGVudDogXCJLXCI7XG4gICAgfVxuICB9XG5cbiAgJi5yYW5kb206OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJsXCI7XG4gIH1cbn1cbiIsIi5jb250ZXh0LXN0cmVhbWVycyB7XG4gIG1heC1oZWlnaHQ6IDIwdmg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5jb250ZXh0LXN0cmVhbWVyIHtcbiAgQGV4dGVuZCAlbm93cmFwLWhpZGRlbiwgJWJveC1yYWRpdXMtYm90dG9tLCAlYm94LXNoYWRvdywgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICBoZWlnaHQ6IDIuMmVtO1xuICBjb2xvcjogJGMtc2Vjb25kYXJ5LW92ZXIgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctcGFnZSwgNjAlKTtcblxuICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgZm9udC1zaXplOiAxLjNlbTtcbiAgICBtYXJnaW4tbGVmdDogLjRlbTtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLXBhZ2UsIDgwJSk7XG4gIH1cbn1cbiIsIi5wb2RpdW0td3JhcCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1ib3R0b206IDIwcHg7XG5cbiAgI2NvbmZldHRpIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMjVzO1xuXG4gICAgJi5mYWRlZCB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxufVxuXG4ucG9kaXVtIHtcbiAgPiBkaXYge1xuICAgIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gIC5maXJzdCB7XG4gICAgd2lkdGg6IDQ0JTtcbiAgICBmb250LXNpemU6IDEuNmVtO1xuICB9XG5cbiAgLnNlY29uZCB7XG4gICAgZm9udC1zaXplOiAxLjNlbTtcbiAgICB3aWR0aDogMjklO1xuICB9XG5cbiAgLnRoaXJkIHtcbiAgICBmb250LXNpemU6IDEuMmVtO1xuICAgIHdpZHRoOiAyNyU7XG4gIH1cblxuICAudHJvcGh5IHtcbiAgICBtYXJnaW46IDAgYXV0byAuNWVtIGF1dG87XG4gICAgYmFja2dyb3VuZDogY2VudGVyIC8gY29udGFpbiBuby1yZXBlYXQ7XG4gIH1cblxuICAuZmlyc3QgLnRyb3BoeSB7XG4gICAgaGVpZ2h0OiA5ZW07XG4gICAgd2lkdGg6IDllbTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKFwidHJvcGh5L2xpY2hlc3MtbWFzc2l2ZS5zdmdcIik7XG4gIH1cblxuICAuc2Vjb25kIC50cm9waHkge1xuICAgIGhlaWdodDogOWVtO1xuICAgIHdpZHRoOiA3ZW07XG4gICAgYmFja2dyb3VuZC1pbWFnZTogaW1nLXVybChcInRyb3BoeS9saWNoZXNzLXNpbHZlci0xLnN2Z1wiKTtcbiAgfVxuXG4gIC50aGlyZCAudHJvcGh5IHtcbiAgICBoZWlnaHQ6IDdlbTtcbiAgICB3aWR0aDogN2VtO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGltZy11cmwoXCJ0cm9waHkvbGljaGVzcy1icm9uemUtMi5zdmdcIik7XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteHgtc21hbGwpIHtcbiAgICAudHJvcGh5IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cblxuICAudXNlci1saW5rIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTFweDtcbiAgfVxuXG4gIC5zdGF0cyB7XG4gICAgbWFyZ2luOiAuNWVtIGF1dG8gMCBhdXRvO1xuICAgIGZvbnQtc2l6ZTogLjdlbTtcblxuICAgIHRoIHtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMXB4O1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG5cbiAgICB0ZCB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIHBhZGRpbmctbGVmdDogNXB4O1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuICB9XG5cbiAgLnRoaXJkIC5zdGF0cyB7XG4gICAgZm9udC1zaXplOiAuOGVtO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9iYXNlL3Njcm9sbGJhclwiO1xuXG5AaW1wb3J0IFwidGFiXCI7XG5AaW1wb3J0IFwibWVtYmVyc1wiO1xuQGltcG9ydCBcImRpc2N1c3Npb25cIjtcbkBpbXBvcnQgXCJwYWxhbnRpclwiO1xuXG4ubWNoYXQge1xuICBAZXh0ZW5kICVib3gtbmVhdC1mb3JjZSwgJWZsZXgtY29sdW1uO1xuXG4gIGdyaWQtYXJlYTogY2hhdDtcbiAganVzdGlmeS1jb250ZW50OiBzdHJldGNoO1xuXG4gICZfX2NvbnRlbnQge1xuICAgIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmLm5vdGUgdGV4dGFyZWEge1xuICAgICAgZm9udC1zaXplOiAuOWVtO1xuICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBsaW5lLWhlaWdodDogMS43ZW07XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgcmVzaXplOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIG1pbi1oZWlnaHQ6IDE1ZW07XG59XG4iLCJib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXIsXG5ib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHtcbiAgd2lkdGg6IC41cmVtO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG59XG5cbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xufVxuXG5ib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIsXG5ib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6YWN0aXZlIHtcbiAgYmFja2dyb3VuZDogJGMtZm9udC1kaW1tZXI7XG59XG4iLCIubWNoYXQge1xuICAmX190YWJzIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5cbiAgJl9fdGFiIHtcbiAgICBAZXh0ZW5kICVyb2JvdG8sICVub3dyYXAtaGlkZGVuLCAlYm94LXJhZGl1cy10b3A7XG5cbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogLjRlbSAxMHB4O1xuXG4gICAgLy8gYmFja2dyb3VuZDogJGMtc2hhZGU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGNvbG9yOiAkYy1mb250LXBhZ2U7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtYWNjZW50LCAkYy1iZy1ib3gsIDE1JSk7XG4gICAgfVxuXG4gICAgJi1hY3RpdmUge1xuICAgICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3ggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBpbnB1dCB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICBAZXh0ZW5kICVjaGVja2JveDtcbiAgICB9XG5cbiAgICAmLWFjdGl2ZSBpbnB1dCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgIEBleHRlbmQgJW5vd3JhcC1lbGxpcHNpcztcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgIH1cbiAgfVxuXG4gICYtb3B0aW9uYWwgLm1jaGF0X190YWIuZGlzY3Vzc2lvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxufVxuIiwiLmNoYXRfX21lbWJlcnMge1xuICBAZXh0ZW5kICVwYWdlLXRleHQ7XG5cbiAgZm9udC1zaXplOiAuOWVtO1xuXG4gIC8vIG1pbi1oZWlnaHQ6IDVlbTtcbiAgLy8gbWF4LWhlaWdodDogOWVtO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4iLCIubWNoYXQge1xuICAmX19tZXNzYWdlcyB7XG4gICAgQGV4dGVuZCAlYnJlYWstd29yZDtcblxuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIG1heC1oZWlnaHQ6IDUwdmg7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wzLXVuaWJvYXJkKSB7XG4gICAgICBtYXgtaGVpZ2h0OiBub25lO1xuICAgIH1cblxuXG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgY3Vyc29yOiBpbml0aWFsO1xuICAgIGZvbnQtc2l6ZTogLjllbTtcblxuICAgIGxpIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHBhZGRpbmc6IC41ZW0gMCAuNWVtIDEwcHg7XG4gICAgICBsaW5lLWhlaWdodDogMS4yZW07XG4gICAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgICB1c2VyLXNlbGVjdDogdGV4dDtcbiAgICB9XG5cbiAgICAuZGVsZXRlZCB7XG4gICAgICBvcGFjaXR5OiAwLjU7XG4gICAgfVxuXG4gICAgLnN5c3RlbSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG9wYWNpdHk6IDAuODtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIGZvbnQtc2l6ZTogLjllbTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5jb2xvcixcbiAgICAudXNlci1saW5rIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMXB4O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAuNGVtO1xuICAgIH1cblxuICAgIC51dGl0bGUge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAzcHg7XG4gICAgfVxuXG4gICAgYTpub3QoLnVzZXItbGluaykge1xuICAgICAgQGV4dGVuZCAlcm9ib3RvO1xuICAgIH1cblxuICAgIGkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNXB4O1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgICAgIHBhZGRpbmc6IDRweCA1cHg7XG4gICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICBjb2xvcjogJGMtYWNjZW50O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsaTpob3ZlciBpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgdGV4dC1zaGFkb3c6IDAgMCAycHggJGMtYmctYm94LCAwIDAgNXB4ICRjLWJnLWJveCwgMCAwIDEwcHggJGMtYmctYm94O1xuICAgIH1cbiAgfVxuXG4gICZfX3NheSB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBwYWRkaW5nOiAzcHggMjBweCAzcHggNHB4O1xuXG4gICAgJi53aGlzcGVyIHtcbiAgICAgIGNvbG9yOiAkYy1nb29kO1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgfVxuICB9XG59XG4iLCJAa2V5ZnJhbWVzIHBhbGFudGlyLWdsb3dpbmcge1xuICA0MCUge1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gIH1cblxuICA1MCUge1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLWJveCwgMzAlKTtcbiAgfVxuXG4gIDYwJSB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgMzAlKTtcbiAgfVxuXG4gIDcwJSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgfVxufVxuXG4ucGFsYW50aXIge1xuICBmbGV4OiAwIDEgYXV0bztcbiAgYW5pbWF0aW9uOiBwYWxhbnRpci1nbG93aW5nIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gIGJvcmRlci1yYWRpdXM6IDAgM3B4IDAgMDtcblxuICAmLXNsb3Qge1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICBvcGFjaXR5OiAuNjtcblxuICAgICY6aG92ZXIge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICAmLW9mZiB7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuICB9XG5cbiAgJi1vbiB7XG4gICAgYmFja2dyb3VuZDogJGMtZ29vZDtcbiAgICBjb2xvcjogJGMtZ29vZC1vdmVyO1xuICAgIGFuaW1hdGlvbjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJGMtYmFkICFpbXBvcnRhbnQ7XG4gICAgICBjb2xvcjogJGMtYmFkLW92ZXIgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAmOjphZnRlciB7XG4gICAgdG9wOiAxcHg7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogYXV0bztcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gIH1cbn1cbiIsIiRtcS1jb2wxOiAkbXEtY29sMS11bmlib2FyZDtcbiRtcS1jb2wyOiAkbXEtc21hbGw7XG4kbXEtY29sMzogJG1xLWNvbDMtdW5pYm9hcmQ7XG5cbkBpbXBvcnQgXCJsYXlvdXRcIjtcbkBpbXBvcnQgXCJzaWRlXCI7XG5AaW1wb3J0IFwiZmVhdHVyZWRcIjtcbkBpbXBvcnQgXCJhcHAtaGVhZGVyXCI7XG5AaW1wb3J0IFwiYXBwLW5vdGljZVwiO1xuQGltcG9ydCBcImFwcC1jb250cm9sXCI7XG5AaW1wb3J0IFwiYXBwLXN0YW5kaW5nXCI7XG5AaW1wb3J0IFwic3RhdHNcIjtcbkBpbXBvcnQgXCJkdWVsXCI7XG5AaW1wb3J0IFwiYWN0b3ItaW5mb1wiO1xuQGltcG9ydCBcInBsYXllci1pbmZvXCI7XG5AaW1wb3J0IFwidGVhbS1pbmZvXCI7XG5cbi50b3VyIHtcbiAgLnB1bGwtcXVvdGUge1xuICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gICAgd2lkdGg6IDMwMHB4O1xuICB9XG5cbiAgLmJveC5jcmVhdGVkIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMmVtO1xuXG4gICAgLyogYXMgcXVvdGUgbWFyZ2luICovXG4gIH1cbn1cblxuLnRvdXJfX2ZhcSB7XG4gIHBhZGRpbmc6IDRlbSB2YXIoLS1ib3gtcGFkZGluZyk7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cblxuICBoMiB7XG4gICAgbWFyZ2luOiAxLjVlbSAwIC41ZW0gMDtcbiAgfVxufVxuIiwiQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAjbWFpbi13cmFwIHtcbiAgICAtLW1haW4tbWF4LXdpZHRoOiBhdXRvO1xuICB9XG59XG5cblxuJGNoYXQtb3B0aW1hbC1zaXplOiBjYWxjKDEwMHZoIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGJsb2NrLWdhcH0gLSAzcmVtKTtcblxuLnRvdXIge1xuICBkaXNwbGF5OiBncmlkO1xuXG4gICZfX3NpZGUge1xuICAgIGdyaWQtYXJlYTogc2lkZTtcbiAgfVxuXG4gICZfX3RhYmxlLCAmX19zdGF0cywgJl9fcGxheWVyIHtcbiAgICBncmlkLWFyZWE6IHRhYmxlO1xuICB9XG5cbiAgJl9fbWFpbiB7XG4gICAgZ3JpZC1hcmVhOiBtYWluO1xuICB9XG5cbiAgLmNoYXRfX21lbWJlcnMge1xuICAgIGdyaWQtYXJlYTogdWNoYXQ7XG4gIH1cblxuICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnbWFpbicgJ3NpZGUnICd1Y2hhdCcgJ3RhYmxlJztcbiAgZ3JpZC1nYXA6ICRibG9jay1nYXA7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogJGNvbDItdW5pYm9hcmQtZGVmYXVsdC13aWR0aCAkY29sMi11bmlib2FyZC10YWJsZTtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6ICRjaGF0LW9wdGltYWwtc2l6ZSBtaW4tY29udGVudDtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnbWFpbiAgc2lkZScgJ21haW4gIHVjaGF0JyAndGFibGUgdGFibGUnO1xuXG4gICAgJl9fdGFibGUge1xuICAgICAgZGlzcGxheTogZmxleDtcblxuICAgICAgPiAqIHtcbiAgICAgICAgZmxleDogMCAwIDUwJTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWNoYXRfX21lc3NhZ2VzIHtcbiAgICAgIG1heC1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgfVxuICB9XG5cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wzKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAkY29sMy11bmlib2FyZC1zaWRlICRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGggJGNvbDMtdW5pYm9hcmQtdGFibGU7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAkY2hhdC1vcHRpbWFsLXNpemUgYXV0bztcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnc2lkZSAgbWFpbiB0YWJsZScgJ3VjaGF0IG1haW4gdGFibGUnO1xuXG4gICAgJl9fdGFibGUge1xuICAgICAgZmxleC1mbG93OiBjb2x1bW47XG5cbiAgICAgID4gKiB7XG4gICAgICAgIGZsZXg6IGluaGVyaXQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIudG91cl9fc2lkZSB7XG4gIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gIC5tY2hhdCB7XG4gICAgZmxleDogMSAxIDdlbTtcbiAgICBtYXJnaW4tdG9wOiAkYmxvY2stZ2FwO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgICAgbWluLWhlaWdodDogaW5oZXJpdDtcbiAgICB9XG4gIH1cbn1cblxuLnRvdXJfX21ldGEge1xuICBAZXh0ZW5kICVib3gtbmVhdC1mb3JjZTtcblxuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gIHBhZGRpbmc6ICN7JGJsb2NrLWdhcCAqIDAuNn0gJGJsb2NrLWdhcDtcblxuICBzZWN0aW9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkYmxvY2stZ2FwO1xuXG4gICAgJltkYXRhLWljb25dIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgZm9udC1zaXplOiAzcmVtO1xuICAgICAgbWFyZ2luLXJpZ2h0OiA0JTtcbiAgICB9XG5cbiAgICBwIHtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAuc2V0dXAge1xuICAgICAgQGV4dGVuZCAlbm93cmFwLWhpZGRlbjtcbiAgICB9XG5cbiAgICB0aW1lIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgLmRlZmVuZGVyOjpiZWZvcmUge1xuICAgICAgZm9udC1zaXplOiAxLjZlbTtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiAtLjI2ZW07XG4gICAgICBtYXJnaW46IDAgLjE1ZW0gMCAtLjE1ZW07XG4gICAgfVxuXG4gICAgJi5jb25kaXRpb25zIHtcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIH1cblxuICAgICAgJi5hY2NlcHRlZCB7XG4gICAgICAgIGNvbG9yOiAkYy1nb29kO1xuICAgICAgfVxuXG4gICAgICAmLnJlZnVzZWQge1xuICAgICAgICBjb2xvcjogJGMtYmFkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5kZXNjcmlwdGlvbiB7XG4gICAgQGV4dGVuZCAlYnJlYWstd29yZDtcblxuICAgIG1heC1oZWlnaHQ6IDIwdmg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgfVxuXG4gIC50b3VyX19wcml6ZSB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICAgIHBhZGRpbmc6IDFlbTtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtZmFuY3ksICRjLWJnLWJveCwgMTUlKTtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgZm9udC1zaXplOiAuOWVtO1xuICB9XG59XG5cbi5jaGF0X19tZW1iZXJzIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG5cbiAgLyogZml4ZXMgaW52aXNpYmxlIHNwZWN0YXRvcnMgb24gZmlyZWZveCwgY29sMiAqL1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgbWFyZ2luOiAwICRibG9jay1nYXA7XG4gIH1cbn1cbiIsIi50b3VyX19mZWF0dXJlZCB7XG4gIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gIC5taW5pLWdhbWVfX3BsYXllciB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gICAgJiBpIHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb2xvcjogJGMtYWNjZW50O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWluaS1nYW1lX191c2VyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgc3Ryb25nIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogMWNoO1xuICAgIH1cblxuICAgIC51c2VyLWxpbmsge1xuICAgICAgQGV4dGVuZCAlZmxleC1iZXR3ZWVuO1xuXG4gICAgICBmbGV4OiAxIDEgMTAwJTtcbiAgICAgIG1hcmdpbi1yaWdodDogMWVtO1xuICAgIH1cbiAgfVxufVxuIiwiLnRvdXJfX21haW5fX2hlYWRlciB7XG4gIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1pbi1oZWlnaHQ6IDdlbTtcbiAgcGFkZGluZzogMCAjeyRibG9jay1nYXAgKiAxLjV9O1xuXG4gIGgxIHtcbiAgICBmb250LXNpemU6IDIuMnJlbTtcbiAgICBmbGV4OiA5IDEgYXV0bztcbiAgICBtYXJnaW46IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIGEge1xuICAgICAgLyogR00gd2lraXBlZGlhICovXG4gICAgICBjb2xvcjogbWl4KCRjLWxpbmssICRjLWZvbnQsIDM1JSk7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJGMtbGluaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpbWcge1xuICAgIGZsZXg6IDAgMCA2MHB4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiA2MHB4O1xuICAgIGhlaWdodDogNjBweDtcbiAgICBwYWRkaW5nOiA2cHg7XG4gIH1cblxuICAuaW1nIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG4gIH1cblxuICBpOjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogMi4ycmVtO1xuICB9XG5cbiAgLnRvdXItc2hlZCAmIGgxIHtcbiAgICBsZXR0ZXItc3BhY2luZzogMnB4O1xuICB9XG5cbiAgLnRvdXItc2hlZC13ZWVrbHkgJiBpOjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogMzVweDtcbiAgfVxuXG4gIC50b3VyLXNoZWQtbW9udGhseSAmIGk6OmJlZm9yZSxcbiAgLnRvdXItc2hlZC13ZWVrZW5kICYgaTo6YmVmb3JlIHtcbiAgICBmb250LXNpemU6IDQwcHg7XG4gIH1cblxuICAudG91ci1zaGVkLXllYXJseSAmIGk6OmJlZm9yZSB7XG4gICAgZm9udC1zaXplOiA0NXB4O1xuICB9XG5cbiAgLnRvdXItc2hlZC13ZWVrZW5kICYgaDEsXG4gIC50b3VyLXNoZWQteWVhcmx5ICYgaDEge1xuICAgIGxldHRlci1zcGFjaW5nOiAzcHg7XG4gIH1cblxuICAuY2xvY2sge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcblxuICAgICYtY3JlYXRlZCB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuICB9XG5cbiAgLnRvdXItc2NoZWQgJiBoMSxcbiAgLnRvdXItc2NoZWQgJiAuaW1nIHtcbiAgICBjb2xvcjogJGMtYnJhZztcbiAgfVxuXG4gIC50b3VyX19tYWluLWZpbmlzaGVkICYgaDEge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIC50b3VyLXNjaGVkLW1hcmF0aG9uICYge1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIH1cbiAgfVxuXG4gIC50aW1lIHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICBmb250LXNpemU6IDEuNWVtO1xuICAgIG1hcmdpbi1sZWZ0OiAuMmVtO1xuICB9XG5cbiAgLnNoeSB7XG4gICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgZm9udC1zaXplOiAuOWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgb3BhY2l0eTogMC42O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIH1cblxuICAudG91ci1zY2hlZC1tYXJhdGhvbiAmIGgxIHtcbiAgICBjb2xvcjogIzQxNjZhMCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmctbGVmdDogOTBweDtcbiAgICBsZXR0ZXItc3BhY2luZzogMnB4O1xuICB9XG5cbiAgLnRvdXItc2NoZWQtbWFyYXRob24gJiAuZmlyZS10cm9waHkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMTBweDtcbiAgICB3aWR0aDogNzBweDtcbiAgICBoZWlnaHQ6IDgwcHg7XG4gICAgb3BhY2l0eTogMC43O1xuICAgIHRyYW5zaXRpb246IDFzO1xuICAgIGZvbnQtZmFtaWx5OiBcImxpY2hlc3NcIjtcbiAgICBmaWx0ZXI6IGh1ZS1yb3RhdGUoMTkwZGVnKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICAudG91ci1zY2hlZC1zaGllbGQgJiB7XG4gICAgaDEge1xuICAgICAgcGFkZGluZy1sZWZ0OiA5MHB4O1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDJweDtcblxuICAgICAgLnNoaWVsZC10cm9waHkge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLThweDtcbiAgICAgICAgbGVmdDogMTJweDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiA2N3B4O1xuICAgICAgICBoZWlnaHQ6IDgwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvdHJvcGh5L3NoaWVsZC1nb2xkLnBuZykgbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgICAgIGZvbnQtZmFtaWx5OiBcImxpY2hlc3NcIjtcbiAgICAgICAgZm9udC1zaXplOiA0MHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogODBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogIzMzMyAhaW1wb3J0YW50O1xuICAgICAgICB0ZXh0LXNoYWRvdzogMCAwIDZweCAjZmZmO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLnRvdXJfX25vdGljZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBhZGRpbmc6IC41ZW0gMDtcbiAgb3BhY2l0eTogMC44O1xuXG4gICYuY2xvc2VkIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1wcmltYXJ5O1xuICB9XG59XG5cbi50b3VyX191ci1wbGF5aW5nIHtcbiAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDEuNWVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgJjo6YmVmb3JlLFxuICAmOjphZnRlciB7XG4gICAgY29udGVudDogJ1UnO1xuICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAzMHB4O1xuICB9XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBsZWZ0OiAzMHB4O1xuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIHJpZ2h0OiAzMHB4O1xuICB9XG59XG4iLCIudG91cl9fY29udHJvbHMge1xuICBAZXh0ZW5kICVtZXRhbCwgJWZsZXgtYmV0d2VlbiwgJWJveC1zaGFkb3c7XG5cbiAgcGFkZGluZzogMCAwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAuZmJ0IHtcbiAgICBwYWRkaW5nOiAuNmVtIC44ZW07XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS14eC1zbWFsbCkge1xuICAgICAgcGFkZGluZzogLjZlbSAxZW07XG4gICAgfVxuXG5cbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gIH1cblxuICBAa2V5ZnJhbWVzIHRvdXItZGVsYXkge1xuICAgIDAlIHtcbiAgICAgIHdpZHRoOiAwJTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5kZWxheSB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMTcsIDE1MywgMCwgMC41KTtcbiAgICB3aWR0aDogMCU7XG5cbiAgICBidXR0b24ge1xuICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgICAgbWl4LWJsZW5kLW1vZGU6IGx1bWlub3NpdHk7XG4gICAgfVxuICB9XG5cbiAgLmhpZ2hsaWdodCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiA1cHg7XG4gICAgdG9wOiAtM3B4O1xuICAgIHBhZGRpbmc6IDhweCAyMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBjb2xvcjogI0ZGRjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZDogIzgyQkY1NjtcbiAgICBib3JkZXItYm90dG9tOiA1cHggc29saWQgIzc1OTkwMDtcbiAgICB0ZXh0LXNoYWRvdzogMCAtMXB4ICM3NTk5MDA7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMXM7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMHB4LCAwcHgpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4wNik7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMHB4LCA1cHgpO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4O1xuICAgICAgdGV4dC1zaGFkb3c6IDAgMCAjNzU5OTAwO1xuICAgICAgZmlsdGVyOiBicmlnaHRuZXNzKDEpO1xuICAgIH1cbiAgfVxuXG4gIC5zcGlubmVyIHtcbiAgICBtYXJnaW46IDA7XG4gICAgd2lkdGg6IDEuNWVtO1xuICAgIGhlaWdodDogMS41ZW07XG4gICAgbWFyZ2luLXJpZ2h0OiAuN2VtO1xuICB9XG5cbiAgLnBhZ2VyIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICAgIHVzZXItc2VsZWN0OiBub25lO1xuXG4gICAgLnBhZ2Uge1xuICAgICAgbWFyZ2luOiAwIDNweDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuXG4gICAgaW5wdXQge1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYmFja2dyb3VuZDogZmFkZS1vdXQoJGMtc2Vjb25kYXJ5LCAwLjgpO1xuICAgIH1cblxuICAgIC5zZWFyY2gsXG4gICAgaW5wdXQsXG4gICAgLnR3aXR0ZXItdHlwZWFoZWFkIHtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG4gIH1cblxuICAuc2VhcmNoIC50dC1tZW51IC5zcGlubmVyIHtcbiAgICBmbG9hdDogbm9uZTtcbiAgICBtYXJnaW46IDEwcHggYXV0bztcbiAgfVxufVxuIiwiLnRvdXJfX3N0YW5kaW5nIHtcbiAgYm9yZGVyOiBub25lO1xuXG4gIC5wbGF5ZXIge1xuICAgIHBhZGRpbmctbGVmdDogMHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDBweDtcblxuICAgIC5uYW1lIHtcbiAgICAgIEBleHRlbmQgJW5vd3JhcC1lbGxpcHNpcztcblxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDtcbiAgICAgIG1heC13aWR0aDogMTQwcHg7XG4gICAgfVxuICB9XG5cbiAgLnVzZXItbGluay5sb25nIHtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuN3B4O1xuICB9XG5cbiAgLnVzZXItbGluayAucmF0aW5nIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgZm9udC1zaXplOiAuOGVtO1xuICB9XG5cbiAgdHIubG9uZyAudXNlci1saW5rIC5yYXRpbmcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmctbGVmdDogMHB4O1xuICB9XG5cbiAgdHIge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgfVxuXG4gIC5sb2FkaW5nIHRib2R5IHtcbiAgICBvcGFjaXR5OiAwLjY7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHksIDAuM3MpO1xuICB9XG5cbiAgJjpub3QoLmNyZWF0ZWQpOm5vdCgubG9hZGluZykgdGJvZHkgdHI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDMwJSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgdHIubWUgdGQ6Zmlyc3QtY2hpbGQge1xuICAgICRjLW1lLWJvcmRlcjogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCA3MCUpO1xuXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkYy1tZS1ib3JkZXIgMHB4LCAkYy1tZS1ib3JkZXIgNXB4LCByZ2JhKDAsIDAsIDAsIDApIDVweCwgcmdiYSgwLCAwLCAwLCAwKSAxMDAlKTtcbiAgfVxuXG4gIHRyLmFjdGl2ZSB0ZDpsYXN0LWNoaWxkIHtcbiAgICAkYy1hY3RpdmUtYm9yZGVyOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCA3MCUpO1xuXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGxlZnQsICRjLWFjdGl2ZS1ib3JkZXIgMHB4LCAkYy1hY3RpdmUtYm9yZGVyIDVweCwgcmdiYSgwLCAwLCAwLCAwKSA1cHgsIHJnYmEoMCwgMCwgMCwgMCkgMTAwJSk7XG4gIH1cblxuICB0ZC5yYW5rIHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICBwYWRkaW5nOiAxZW0gLjVlbSAxZW0gMTBweDtcbiAgICB3aWR0aDogMXB4O1xuXG4gICAgLyogaGVscHMga2VlcGluZyBpdCBhcyBzbWFsbCBhcyBwb3NzaWJsZSAqL1xuICAgIGkge1xuICAgICAgb3BhY2l0eTogLjQ7XG4gICAgICBmb250LXNpemU6IC44ZW07XG4gICAgfVxuICB9XG5cbiAgLnNoZWV0IHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLjFlbTtcblxuICAgICYgPiAqIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG5cbiAgICBzY29yZSB7XG4gICAgICBvcGFjaXR5OiAwLjc7XG4gICAgfVxuICB9XG5cbiAgdHIubG9uZyAuc2hlZXQge1xuICAgIGZvbnQtc2l6ZTogLjlyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IC4wNmVtO1xuICB9XG5cbiAgdHIueGxvbmcgLnNoZWV0IHtcbiAgICBmb250LXNpemU6IC44NXJlbTtcbiAgICBsZXR0ZXItc3BhY2luZzogLjA0ZW07XG4gIH1cblxuICBkb3VibGUge1xuICAgIGNvbG9yOiAkYy1icmFnO1xuXG4gICAgLyogZm9udC13ZWlnaHQ6IGJvbGQ7ICovXG4gIH1cblxuICBzdHJlYWsge1xuICAgIGNvbG9yOiAkYy1zZWNvbmRhcnk7XG5cbiAgICAvKiBmb250LXdlaWdodDogYm9sZDsgKi9cbiAgfVxuXG4gIC50b3RhbCB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgcGFkZGluZy1yaWdodDogJGJsb2NrLWdhcDtcbiAgfVxufVxuIiwiLnRvdXJfX3N0YXRzIHtcbiAgQGV4dGVuZCAlYm94LW5lYXQ7XG5cbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICBwYWRkaW5nOiAxLjdlbSAwO1xuICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuXG4gIGgyIHtcbiAgICBmb250LXNpemU6IDEuNWVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICB0YWJsZSB7XG4gICAgbWFyZ2luOiBhdXRvO1xuICB9XG5cbiAgdGQge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHBhZGRpbmctbGVmdDogMWVtO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGxpbmUtaGVpZ2h0OiAyZW07XG4gIH1cbn1cbiIsIi50b3VyX19kdWVscyB7XG4gIG1hcmdpbjogJGJsb2NrLWdhcCAwIDAgMDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgbWFyZ2luOiAwIDAgMCAkYmxvY2stZ2FwO1xuICB9XG5cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wzKSB7XG4gICAgbWFyZ2luOiAkYmxvY2stZ2FwIDAgMCAwO1xuICB9XG5cblxuICBoMiB7XG4gICAgZm9udC1zaXplOiAxLjVlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAuMmVtO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDJweDtcbiAgfVxuXG4gIGEge1xuICAgIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgcGFkZGluZzogLjVlbSAuN2VtO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgbGluZS1oZWlnaHQ6IDEuOWVtO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBtaXgoJGMtYmctcGFnZSwgJGMtYm9yZGVyLXBhZ2UsIDUwJSk7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtbGluaywgJGMtYmctcGFnZSwgMjAlKTtcbiAgICB9XG4gIH1cblxuICBsaW5lIHtcbiAgICBAZXh0ZW5kICVmbGV4LWJldHdlZW47XG4gIH1cblxuICBzdHJvbmcge1xuICAgIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWF4LXdpZHRoOiA2MCU7XG4gIH1cblxuICAucmFuayB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICAgIHBhZGRpbmc6IC4xZW0gLjVlbTtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgfVxuXG4gIC5iIC51dGl0bGUsXG4gIC5iIC5yYW5rIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC4zZW07XG4gIH1cblxuICAuYSAudXRpdGxlLFxuICAuYSAucmFuayB7XG4gICAgbWFyZ2luLWxlZnQ6IC4zZW07XG4gIH1cbn1cbiIsIi50b3VyX19hY3Rvci1pbmZvIHtcbiAgQGV4dGVuZCAlYm94LW5lYXQtZm9yY2U7XG5cbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG5cbiAgLnNwaW5uZXIge1xuICAgIG1hcmdpbjogNWVtIGF1dG87XG4gIH1cblxuICAuY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDRweDtcbiAgICByaWdodDogNXB4O1xuICAgIG9wYWNpdHk6IC42O1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgIGNvbG9yOiAkYy1yZWQ7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgLnN0YXRzIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgaDIge1xuICAgICAgQGV4dGVuZCAlbWV0YWw7XG5cbiAgICAgIGZvbnQtc2l6ZTogMS40ZW07XG4gICAgICBwYWRkaW5nOiAuNnJlbSAxcmVtO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICB9XG5cbiAgICB0YWJsZSB7XG4gICAgICBtYXJnaW46IDFlbSBhdXRvO1xuICAgIH1cblxuICAgIHRkIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICBsaW5lLWhlaWdodDogMS44ZW07XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIEBleHRlbmQgJXJvYm90bztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuc3VibGlzdCB7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICB0ciB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZC1jb2xvcik7XG5cbiAgICAgICY6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICAgIH1cblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1saW5rLCAkYy1iZy1ib3gsIDEwJSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGgsIHRkIHtcbiAgICAgIHBhZGRpbmc6IC4zZW07XG4gICAgfVxuXG4gICAgdGgge1xuICAgICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgICBwYWRkaW5nLWxlZnQ6IDdweDtcbiAgICB9XG4gIH1cbn1cbiIsIi50b3VyX19wbGF5ZXItaW5mbyB7XG4gIC5wYWlyaW5ncyB7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICB0ciB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZC1jb2xvcik7XG5cbiAgICAgICY6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICAgIH1cblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1saW5rLCAkYy1iZy1ib3gsIDEwJSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGgsIHRkIHtcbiAgICAgIHBhZGRpbmc6IC4zZW07XG4gICAgfVxuXG4gICAgdGgge1xuICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcbiAgICB9XG5cbiAgICB0cjpob3ZlciB0aCB7XG4gICAgICBib3JkZXItY29sb3I6ICRjLWZvbnQ7XG4gICAgfVxuXG4gICAgdHIud2luOmhvdmVyIHRoIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJGMtZ29vZDtcbiAgICB9XG5cbiAgICB0ci5sb3NzOmhvdmVyIHRoIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJGMtYmFkO1xuICAgIH1cblxuICAgIHRkOm50aC1jaGlsZCgyKSB7XG4gICAgICBAZXh0ZW5kICVub3dyYXAtZWxsaXBzaXM7XG5cbiAgICAgIG1heC13aWR0aDogMjAwcHg7XG4gICAgfVxuXG4gICAgdGQ6bGFzdC1jaGlsZCB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIG9wYWNpdHk6IC44O1xuICAgIH1cblxuICAgIHRyLndpbiB0ZDpsYXN0LWNoaWxkIHtcbiAgICAgIGNvbG9yOiAkYy1nb29kO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICB0ci5sb3NzIHRkOmxhc3QtY2hpbGQge1xuICAgICAgY29sb3I6ICRjLWJhZDtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgLmNvbG9yLWljb24ge1xuICAgIG9wYWNpdHk6IC42O1xuICB9XG59XG4iLCIudG91cl9fdGVhbS1pbmZvIHtcbiAgLnBsYXllcnMge1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgdHIge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQtY29sb3IpO1xuXG4gICAgICAmOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtbGluaywgJGMtYmctYm94LCAxMCUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoLCB0ZCB7XG4gICAgICBwYWRkaW5nOiAuM2VtIDFlbTtcbiAgICB9XG5cbiAgICB0ZDpsYXN0LWNoaWxkIHtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cblxuICAgIC5yYXRpbmcge1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgZm9udC1zaXplOiAuOGVtO1xuICAgIH1cblxuICAgIC5sZWFkZXIge1xuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29sb3I6ICRjLWJyYWc7XG4gICAgICAgIG1hcmdpbi1yaWdodDogLjE1ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIjbW9kYWwge1xuICAmLW92ZXJsYXkge1xuICAgIEBleHRlbmQgJWZ1bGxzY3JlZW4tbWFzaywgJWZsZXgtY2VudGVyO1xuXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAmLXdyYXAge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMsICVwb3B1cC1zaGFkb3csICVmbGV4LWNvbHVtbjtcblxuICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogMnJlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWF4LXdpZHRoOiAxMDB2dztcbiAgICBtYXgtaGVpZ2h0OiA5NnZoO1xuXG4gICAgPiBkaXYge1xuICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgfVxuXG4gICAgLmNsb3NlIHtcbiAgICAgIGNvbG9yOiAkYy1mb250O1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDI3cHg7XG4gICAgICB3aWR0aDogMzJweDtcbiAgICAgIGhlaWdodDogMzJweDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgYmFja2dyb3VuZDogbm9uZTtcblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtc21hbGwpIHtcbiAgICAgICAgdG9wOiAtMTJweDtcbiAgICAgICAgcmlnaHQ6IC0xMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1wb3B1cDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5jbG9zZTpob3ZlciB7XG4gICAgICBAZXh0ZW5kICVib3gtc2hhZG93O1xuXG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iYWQ7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICB9XG4gIH1cbn1cbiIsIiR0ZWFtLWNvbG9yczogKDA6IGhzbCgyNzQsIDEwMCUsIDU5JSksIDE6IGhzbCgyNDAsIDEwMCUsIDY3JSksIDI6ICMwMDgwMDAsIDM6ICNiMjIyMjIsIDQ6IGhzbCgxNiwgODAlLCA2MiUpLCA1OiAjOWFjZDMyLCA2OiAjZmY0NTAwLCA3OiAjMmU4YjU3LCA4OiAjZGFhNTIwLCA5OiBoc2woMzIsIDc1JSwgNDclKSk7XG5cbkBlYWNoICRpbmRleCwgJGNvbG9yIGluICR0ZWFtLWNvbG9ycyB7XG4gIHRlYW0udHRjLSN7JGluZGV4fSB7XG4gICAgY29sb3I6ICN7JGNvbG9yfTtcbiAgfVxufVxuXG50ZWFtIHtcbiAgcGFkZGluZzogMXB4IDVweDtcbiAgZm9udC1zaXplOiAuOGVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLnRvdXJfX3BsYXllci1pbmZvIHRlYW0ge1xuICBtYXJnaW46IDFyZW0gYXV0byAwIGF1dG87XG4gIHBhZGRpbmc6IC4xNXJlbSAuOHJlbTtcbiAgZm9udC1zaXplOiAxZW07XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLnRvdXJfX3N0YW5kaW5nIHtcbiAgLnJhdGluZyB7XG4gICAgcGFkZGluZy1yaWdodDogNXB4O1xuICB9XG59XG5cbi50b3VyX190ZWFtLXN0YW5kaW5nIHtcbiAgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkge1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICB9XG5cbiAgdGJvZHkgdHI6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gIH1cblxuICAudGVhbSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGMtbGluaztcbiAgICB9XG5cbiAgICB0ZWFtIHtcbiAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICB9XG4gIH1cblxuICAucGxheWVycyB7XG4gICAgQGV4dGVuZCAlYnJlYWstd29yZDtcblxuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgfVxuXG4gIHNjb3JlIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBwYWRkaW5nOiAwIDJweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkYy1icmFnO1xuICAgIH1cblxuICAgICYudG9wIHtcbiAgICAgIHVzZXJuYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAudG90YWwge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRibG9jay1nYXA7XG4gIH1cblxuICB0ci5hY3RpdmUgdGQ6bGFzdC1jaGlsZCB7XG4gICAgJGMtYWN0aXZlLWJvcmRlcjogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgNzAlKTtcblxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCAkYy1hY3RpdmUtYm9yZGVyIDBweCwgJGMtYWN0aXZlLWJvcmRlciA1cHgsIHJnYmEoMCwgMCwgMCwgMCkgNXB4LCByZ2JhKDAsIDAsIDAsIDApIDEwMCUpO1xuICB9XG5cbiAgdHI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDMwJSkgIWltcG9ydGFudDtcbiAgfVxufVxuXG4udGVhbS1iYXR0bGUge1xuICAmX190aXRsZSB7fVxuXG4gICZfX2xpc3Qge1xuICAgIGEge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG59XG5cbi50ZWFtLWJhdHRsZV9fY2hvaWNlIHtcbiAgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgfVxufVxuXG4udG91cl9fZHVlbHMgdGVhbSB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbi50ZWFtLXBpY2tlciB7XG4gIHVsIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUVFQSxZQUFZO0FBcUJaLDZEQUE2RDtBQWM3RCxtQkFBbUI7QUFNbkIsa0NBQWtDO0FBRWxDLHNCQUFzQjtBQU10QixvQ0FBb0M7QUFFcEMsb0JBQW9CO0FBTXBCLGlDQUFpQztBQUVqQyxnQkFBZ0I7QUFJaEIsK0JBQStCO0FBRS9CLGdCQUFnQjtBQUtoQiwrQkFBK0I7QUFFL0IsaUJBQWlCO0FBSWpCLGtCQUFrQjtBQUlsQixjQUFjO0FBSWQsaUJBQWlCO0FBSWpCLCtCQUErQjtBQThCL0IsYUFBYTtBQU1iLGFBQWE7QUFNYixZQUFZO0FJcElaLHdDQUF3QztBc0JBeEMsWUFBWTtBQWVaLGFB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 */
