@charset "UTF-8";
/* Colors */
/* even rows in list or tables, subtle shade of $c-bg-high */
/* Primary: blue */
/* text over primary background */
/* Secondary: green */
/* text over secondary background */
/* Accent: orange */
/* text over accent background */
/* Brag: gold */
/* text over brag background */
/* Error: red */
/* text over brag background */
/* Good: green */
/* Warn: orange */
/* Bad: red */
/* Fancy: pink */
/* text over brag background */
/* Borders */
/* Shadows */
/* Custom */
/* Common imports for all CSS modules */
/* Widths */
/* Heights */
/* Orientations */
/* Capabilities */
/* Aliases */
/* Uniboard: keep the same page layout accross pages */
/* when the width is appropriate for col1, but landscape prevents it */
/* atm only chrome supports min-content, max-content */
.lobby__streams .stream strong, .timeline .entry a, .lobby__box__top .title {
  font-family: 'Noto Sans';
}

.tabs-horiz span, .lpools, .hooks__list th, .lobby__streams .stream, .timeline .entry, .lobby__forum .extract, .lobby__streams .more, .timeline .more {
  font-family: 'Roboto';
}

/* text printed directly on the page background deserves special treatment (transp theme) */
.tabs-horiz, .lobby__counters, .lobby__streams .stream, .timeline, .lobby__about a, .timeline .entry a {
  color: #5e5e5e;
}

#hook .opponent, .lobby__box__top {
  background: linear-gradient(to bottom, whitesmoke 0%, #ededed 100%);
  text-shadow: 0 1px 0 white;
}

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

.lpools .active, #hook {
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
}

.hooks__list td, .tour-spotlight {
  white-space: nowrap;
  overflow: hidden;
}

.lobby__streams .stream, .lobby__box td, .lobby__support__text span {
  white-space: nowrap;
}

.lpools > div {
  overflow-wrap: break-word;
  word-break: break-word;
}

.lobby__streams .stream, .lobby__box td, .lobby__support__text span, .lobby__leaderboard td:first-child, .lobby__winners td:first-child {
  overflow: hidden;
  text-overflow: ellipsis;
}

.hooks__chart {
  position: absolute;
  width: 100%;
  height: 100%;
}

.tabs-horiz, .tour-spotlight, .lobby__support a {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.lobby__counters, .lobby__box__top, .lobby__blog .post {
  /* extends %flex-center */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  justify-content: space-between;
}

.lpools > div, #hook .inner, .lobby__app, .lobby__table, .lobby__start, .lobby__box, .lobby__side, .lobby__nope .lobby__app__content, .now-playing .meta {
  display: flex;
  flex-flow: column;
}

.lobby__spotlights, .lobby__box, #hook, .lobby__app__content, .lobby__support a, .lpools > div {
  border-radius: 3px;
}

.lobby__spotlights, .lobby__box, #hook {
  overflow: hidden;
  /* helps with clipping background into border-radius */
}

.lobby__app__content, .lobby__support a, .lobby__spotlights, .lobby__box {
  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);
}

.now-playing {
  display: grid;
  --np-min-width: 200px;
  grid-template-columns: repeat(auto-fill, minmax(var(--np-min-width), 1fr));
}

@media (max-width: 499px) {
  .now-playing {
    --np-min-width: 50%;
  }
}

.now-playing > a {
  color: #4d4d4d;
  padding: .3em;
}

.now-playing .indicator {
  color: #bd111f;
  margin-top: -3px;
  display: block;
}

.now-playing cg-board {
  box-shadow: none;
}

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

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

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

@keyframes glowing {
  42% {
    background: none;
  }
  50% {
    background: #f2cfd2;
  }
  58% {
    background: none;
  }
}

.glowing {
  animation: glowing 2s ease-in-out infinite;
}

.tabs-horiz {
  justify-content: center;
  align-items: flex-end;
  border-bottom: 2px solid #d9d9d9;
}

@media (max-width: 499px) {
  .tabs-horiz {
    font-size: .9em;
  }
}

.tabs-horiz span {
  flex: 1 1 auto;
  text-align: center;
  padding: .5em .2em;
  cursor: pointer;
  position: relative;
  transition: color 0.25s;
  min-width: 15%;
  letter-spacing: -.5px;
}

@media (min-width: 500px) {
  .tabs-horiz span {
    letter-spacing: inherit;
  }
}

.tabs-horiz span::after {
  content: '';
  background: #bd111f;
  height: 2px;
  position: absolute;
  width: 96%;
  left: 2%;
  bottom: -2px;
  transition: all 0.25s;
  transform: scale(0);
}

.tabs-horiz span.active::after, .tabs-horiz span:hover::after {
  transform: scale(1);
}

.tabs-horiz span.active {
  color: #bd111f;
}

.tabs-horiz .unread {
  margin-left: .3em;
}

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

.lobby {
  grid-area: main;
  display: grid;
  grid-template-areas: 'app' 'table' 'side' 'blog' 'tv' 'puzzle' 'leader' 'winner' 'tours' 'simuls' 'forum' 'support' 'about' '.';
  grid-gap: 2vmin;
}

.lobby__counters {
  margin-top: 2vmin;
}

@media (min-width: 500px) {
  .lobby {
    grid-template-columns: repeat(2, 1fr);
    grid-template-rows: auto repeat(3, fit-content(0));
    grid-template-areas: 'table  table' 'app    app' 'side   tv' 'side   puzzle' 'blog   blog' 'leader winner' 'tours  tours' 'simuls simuls' 'forum  forum' 'about  support';
  }
}

@media (min-width: 800px) {
  .lobby {
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: 12em repeat(2, fit-content(0));
    grid-template-areas: 'table   app     app' 'side    app     app' 'tv      leader  winner' 'puzzle  tours   tours' 'support blog    blog ' 'about   simuls  simuls' '. forum forum ';
  }
  .lobby__start {
    flex-flow: column;
    align-items: stretch;
    justify-content: center;
  }
  .lobby__counters {
    margin: 0.66667vmin 0 -0.66667vmin 0;
  }
  .lobby .timeline {
    margin-left: 0;
  }
}

@media (min-width: 1260px) {
  .lobby {
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: repeat(2, fit-content(0));
    grid-template-areas: 'side   app     app    table' 'tv     leader  winner puzzle' 'about  blog    blog   support' '.      tours   tours  .' '.      simuls  simuls .' '.      forum   forum  .';
  }
  .lobby__tournaments, .lobby__simuls {
    max-height: 20em;
  }
  .lobby__side {
    margin-top: 2em;
  }
  .lobby__counters {
    margin: 0;
  }
}

.lobby__side {
  grid-area: side;
}

.lobby__app, .lobby__nope {
  grid-area: app;
}

.lobby__table {
  grid-area: table;
}

.lobby__tv {
  grid-area: tv;
}

.lobby__leaderboard {
  grid-area: leader;
}

.lobby__winners {
  grid-area: winner;
}

.lobby__puzzle {
  grid-area: puzzle;
}

.lobby__tournaments {
  grid-area: tours;
}

.lobby__simuls {
  grid-area: simuls;
}

.lobby__forum {
  grid-area: forum;
}

.lobby__blog {
  grid-area: blog;
}

.lobby__support {
  grid-area: support;
}

.lobby__about {
  grid-area: about;
}

.lobby__app-pools {
  height: 300px;
}

@media (min-width: 500px) {
  .lobby__app-pools {
    height: 400px;
  }
}

.lpools {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(4, 1fr);
  grid-gap: 9px;
  padding: 9px;
}

.lpools {
  font-size: 14px;
}

@media (min-width: 320px) {
  .lpools {
    font-size: calc(14px + 11 * ((100vw - 320px) / 880));
  }
}

@media (min-width: 1200px) {
  .lpools {
    font-size: 25px;
  }
}

.lpools > div {
  justify-content: center;
  align-items: center;
  cursor: pointer;
  border: 1px solid #d9d9d9;
  background: rgba(255, 255, 255, 0.5);
  color: #4d4d4d;
  transition: all 150ms;
}

.lpools > div:hover {
  background: rgba(187, 17, 31, 0.2);
  opacity: 1;
}

.lpools .active {
  background: white;
}

.lpools .active .perf {
  display: none;
}

.lpools .transp {
  opacity: 0.4;
}

.lpools .spinner {
  flex: 0 0 auto;
  margin: .1em 0 .6em 0;
  width: 2em;
  height: 2em;
  pointer-events: none;
}

.lpools .clock {
  display: block;
  font-size: 1.5em;
  line-height: 1.6em;
  letter-spacing: .1em;
}

.hooks__chart {
  bottom: 0;
  right: 0;
  overflow: hidden;
}

.hooks__chart .label {
  color: #787878;
  font-size: .7em;
  position: absolute;
  left: 3px;
  bottom: 1px;
  text-shadow: 0 1px 0 white;
  font-weight: bold;
}

.hooks__chart .grid {
  position: absolute;
  left: 0;
  bottom: 0;
}

.hooks__chart .grid.horiz {
  width: 100%;
  border-top: 1px dashed #d9d9d9;
}

.hooks__chart .grid.vert {
  height: 100%;
  border-right: 1px dashed #d9d9d9;
}

.hooks__chart .canvas {
  position: relative;
  width: 100%;
  height: 100%;
}

.hooks__chart .plot {
  position: absolute;
  cursor: pointer;
  z-index: 3;
  font-size: 1.6em;
  opacity: .7;
  transition: all 150ms;
  transform: scale(1);
}

.hooks__chart .plot.rated {
  opacity: 0.9;
  color: #d59020;
}

.hooks__chart .plot.cancel {
  opacity: 0.9;
  color: #629924;
}

.hooks__chart .plot.new {
  transform: translateY(-7px);
  opacity: 0;
}

.hooks__chart .plot:hover {
  z-index: 2;
  opacity: 1;
  transform: scale(1.15);
}

#hook {
  display: none;
  background: white;
  position: absolute;
  z-index: 120;
}

#hook .inner {
  text-align: center;
}

#hook .inner-clickable {
  cursor: pointer;
  padding: 5px 0;
}

#hook .opponent {
  min-width: 120px;
  padding: .5em .7em;
}

.hooks__list {
  width: 100%;
}

.hooks__list tr.disabled {
  opacity: 0.4;
}

.hooks__list tr.disabled td {
  cursor: default;
  background: transparent;
  border-color: transparent;
}

.hooks__list tr.cancel td {
  background: rgba(98, 153, 36, 0.4);
}

.hooks__list tr.join:hover td {
  background: rgba(189, 17, 31, 0.5);
  color: #fff;
}

.hooks__list tr:not(.disabled):hover ::before {
  opacity: 1;
}

.hooks__list tr.variants td {
  text-align: center;
  padding: 3px 0;
  background: none;
  text-transform: uppercase;
  letter-spacing: 3px;
  cursor: default;
}

.hooks__list th {
  padding: 1em;
}

.hooks__list th.sortable {
  cursor: pointer;
}

.hooks__list th.sortable:hover, .hooks__list th.sort {
  font-weight: normal;
}

.hooks__list th.sort .is:before {
  opacity: 0.7;
  margin-right: 3px;
  content: "R";
}

.hooks__list th.player {
  width: 110px;
}

.hooks__list td {
  padding: .5em .7em;
  border-bottom: 1px solid #d9d9d9;
  cursor: pointer;
  background: rgba(255, 255, 255, 0.5);
}

.hooks__list td:first-child {
  width: 16px;
}

.hooks__list td:first-child ::before {
  font-size: 1.2em;
  line-height: 1.3;
}

.hooks__list td:last-child ::before {
  margin-right: 8px;
  line-height: 0.9;
  font-size: 1.6em;
}

.hooks__list td ::before {
  opacity: 0.6;
}

.hooks__list tbody.stepping {
  opacity: 0.7;
}

.lseeks .create {
  margin-top: 20px;
  text-align: center;
}

.lobby__app {
  min-height: 300px;
  user-select: none;
}

@media (min-width: 500px) {
  .lobby__app {
    min-height: 400px;
  }
}

@media (min-width: 800px) {
  .lobby__app {
    height: 600px;
    max-height: calc(100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 2vmin);
  }
}

.lobby-nope .lobby__app {
  display: none;
}

.lobby__app__content {
  flex: 1 1 100%;
  position: relative;
  background: url("data:image/svg+xml,%3Csvg data-name='Слой 1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 600 600'%3E%3Cpath d='M310.67 189.44h-21.34C260.93 102 178.87 38.84 82 38.84v522.32h436V38.84c-96.87 0-178.93 63.16-207.33 150.6zm72.19 361.08H218.37c-9.85 0-8.83-13.92 0-14.4s12.76-10.87 11.78-17.33c8.28-4.5 31.9-29.19 37.15-64.18.41-2.79-2.81-10.7-1.95-13.65 1-3.46 7.35-7 8.14-11.73 5.48-33.24 4.87-42.94 4.73-60.38-.05-5.87-2.49-8.29-7.83-10.46s-17.09-3.39-24.71-6.09c-6.82-2.42-7.07-8.43-.27-11.81s35.86-9.45 37.17-28.94c1-15.5-13.19-34.2-15.18-38.26-2.48-5.05.88-9.15 7.3-12.18 6.84-3.69 12.23-4 16.11-6.92 4.6-3.48 3.88-12.94 3.89-17.81h-6.92v-11.82h6.82v-6.92h12v6.92h6.82v11.82h-6.91c0 4.87-.72 14.33 3.88 17.81 3.88 2.94 9.27 3.23 16.12 6.92 6.41 3 9.77 7.13 7.29 12.18-2 4.06-16.22 22.76-15.18 38.26C320 331 349 337.09 355.83 340.49s6.54 9.39-.28 11.81c-7.62 2.7-19.46 4-24.71 6.09s-7.77 4.61-7.84 10.46c-.15 17.44-.76 27.14 4.73 60.38.78 4.75 7.13 8.27 8.14 11.73.85 3-2.37 10.86-1.95 13.65 5.24 35 28.86 59.68 37.14 64.18-1 6.46 2.95 16.84 11.78 17.33s9.88 14.4.02 14.4z' fill='%23e6e6e6'/%3E%3C/svg%3E");
  background-size: 100% 100%;
  overflow-x: hidden;
  overflow-y: auto;
}

.lobby__app .lredir {
  background: white;
  display: flex;
}

.lobby__app .lredir .spinner {
  width: 100px;
  height: 100px;
}

.lobby__app .toggle {
  position: absolute;
  padding: .6em;
  cursor: pointer;
  z-index: 2;
  font-size: 1.3em;
  transition: all 150ms;
}

.lobby__app .toggle.toggle-filter {
  right: 0;
}

.lobby__app .toggle:hover {
  color: #bd111f;
}

.lobby__app .gamesFiltered {
  color: #bd111f;
  transition: all 150ms;
}

.lobby__app .gamesFiltered:hover {
  color: #c83945;
}

.lobby__table {
  position: relative;
}

.lobby__start {
  justify-content: stretch;
  flex: 1 1 auto;
  margin: 0 1em 0 1em;
}

@media (min-width: 500px) {
  .lobby__start {
    margin: 2em 0 0 0;
  }
}

.lobby__start a {
  font-size: 1.1em;
  text-align: center;
  margin: .2em 0;
  padding: .5em;
}

.lobby__start a.disabled {
  opacity: 0.2;
}

@media (min-width: 1260px) {
  .lobby__start {
    justify-content: center;
  }
  .lobby__start a {
    margin: 1.2em 0;
    padding: 1em;
  }
}

.lobby__counters {
  background: #f7f6f5;
  padding: 2vmin 4vmin;
}

@media (min-width: 800px) {
  .lobby__counters {
    background: none;
    padding: 0;
  }
}

@media (min-width: 1260px) {
  .lobby__counters {
    flex-flow: column;
    align-items: flex-start;
    position: absolute;
    bottom: 0;
  }
}

.lobby__counters a {
  color: #5e5e5e;
  transition: color 150ms;
}

.lobby__counters a:hover {
  color: #bd111f;
}

.lobby__streams .stream {
  color: #5e5e5e;
  display: block;
  margin-bottom: .5em;
  line-height: .9;
}

.lobby__streams .stream.highlight strong {
  color: #d59020;
}

.lobby__streams .stream strong:before {
  font-size: 1.5em;
  margin-right: .1rem;
}

.lobby__spotlights {
  flex: 0 0 auto;
}

.tour-spotlight {
  background: linear-gradient(to bottom, #d1e4f6 0%, #c5d8e9 100%);
  flex: 0 0 auto;
  padding: .3em;
  opacity: 0.8;
  transition: all 150ms;
  text-shadow: 0 1px 0 white;
  color: #4d4d4d;
}

.tour-spotlight.invert, .tour-spotlight.event-spotlight, .tour-spotlight:hover {
  background: linear-gradient(to bottom, #c6ddf3 0%, #b0cae3 100%);
  text-shadow: none;
}

.tour-spotlight:hover, .tour-spotlight:active, .tour-spotlight:focus {
  opacity: 1;
  color: #1b78d0;
}

.tour-spotlight .img {
  flex: 0 0 50px;
  margin: 0 .5em 0 .3em;
}

.tour-spotlight img.img {
  width: 40px;
}

.tour-spotlight i.img,
.tour-spotlight .img.icon {
  margin: 0 5px 0 0;
}

.tour-spotlight i.img::before {
  color: #fff;
  font-size: 50px;
  text-shadow: 1px 1px 2px #1b78d0;
}

.tour-spotlight .name {
  margin-top: 1px;
  line-height: 13px;
  display: block;
}

.tour-spotlight .headline {
  display: block;
  font-size: .85em;
  margin-bottom: -3px;
}

.tour-spotlight .more {
  font-size: .85em;
}

.tour-spotlight .more time {
  margin-left: 3px;
}

.tour-spotlight.little .img {
  flex: 0 0 40px;
  margin: 0 .5em 0 .3em;
}

.tour-spotlight.little .img::before {
  font-size: 40px;
}

.timeline {
  flex: 1 1 auto;
  margin: 1em 0 0 2vmin;
  overflow-y: auto;
}

@media (hover: hover) {
  .timeline {
    overflow: hidden;
  }
  .timeline:hover {
    overflow-y: auto;
  }
}

.timeline .entry:hover a {
  color: #bd111f;
}

.timeline .entry::after {
  content: '';
  display: block;
  width: 100%;
  height: 1px;
  background: linear-gradient(to left, #d9d9d9 20%, white);
  margin: .7em 0;
}

.lobby__box__top {
  flex: 0 0 auto;
  padding: .3em .5em;
}

.lobby__box__top .more {
  color: #787878;
  transition: all 150ms;
}

.lobby__box__top .more:hover {
  color: #bd111f;
}

.lobby__box__top .title {
  font-size: 1em;
  font-weight: bold;
  color: #787878;
  padding: .3em;
}

.lobby__box__content {
  background: white;
  overflow-x: hidden;
  overflow-y: auto;
}

.lobby__box .user-link {
  padding-left: -1em;
  font-weight: bold;
  color: #787878;
}

.lobby__box table {
  width: 100%;
  height: 100%;
}

.lobby__box td {
  padding: .5em .4em;
  border-top: 1px solid #d9d9d9;
  max-width: 21ch;
  /* prevent leaderboard overflow due to long usernames */
}

.lobby__box td:first-child {
  padding-left: .7em;
}

.lobby__box td.name a {
  font-weight: bold;
  color: #787878;
  transition: all 150ms;
}

.lobby__box td.name a:hover {
  color: #bd111f;
}

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

.lobby__leaderboard td:last-child, .lobby__winners td:last-child {
  text-align: right;
  padding-right: .7em;
}

.lobby__forum .lobby__box__top,
.lobby__blog .lobby__box__top {
  border-bottom: 1px solid #d9d9d9;
}

.lobby__forum li {
  margin: .6em 0;
  padding-left: 9px;
  line-height: 14px;
  white-space: nowrap;
}

.lobby__blog .post {
  color: #4d4d4d;
  flex-wrap: nowrap;
  overflow: hidden;
  padding: .2em .5em;
}

.lobby__blog .post:hover {
  background: #f5dbdd;
}

.lobby__blog .post .text {
  flex: 1 1 100%;
}

.lobby__blog .post strong {
  display: block;
}

.lobby__blog .post img {
  height: 4em;
  width: 4em;
  margin-right: .8em;
}

.lobby__blog .post time {
  color: #787878;
  white-space: nowrap;
}

.lobby__support a {
  background: white;
  font-size: 1.3em;
  margin-bottom: 2vmin;
  padding: .2em .5em;
  transition: all 150ms;
}

.lobby__support a:hover {
  background: #bd111f;
}

.lobby__support a:hover .lobby__support__text,
.lobby__support a:hover i::before {
  color: #fff;
}

.lobby__support i {
  flex: 0 0 auto;
  margin: 0 .5em;
}

.lobby__support i::before {
  margin-right: .15em;
  color: #bd111f;
  font-size: 2.6em;
  transition: all 150ms;
}

.lobby__support__text {
  flex: 1 1 auto;
  color: #bd111f;
  transition: all 150ms;
}

.lobby__support__text strong {
  font-weight: normal;
  display: block;
}

.lobby__support__text span {
  display: block;
  font-size: .8em;
}

.lobby__about {
  display: flex;
  align-content: flex-start;
  flex-flow: row wrap;
  font-size: .85em;
  font-weight: bold;
}

.lobby__about a {
  margin-right: 1.2em;
  white-space: nowrap;
  transition: color 150ms;
}

.lobby__about a:hover {
  color: #bd111f;
}

.connect-links {
  flex: 0 0 100%;
  margin-top: .5em;
}

.connect-links a {
  font-weight: normal;
}

body {
  /* improves preload */
  overflow-y: scroll;
}

#main-wrap {
  --main-max-width: 1400px;
}

.lobby__streams .more, .timeline .more {
  font-size: .9em;
  margin: .5em 1em .5em 0;
  display: block;
  text-align: right;
  color: #787878;
}

.lobby__streams .more:hover, .timeline .more:hover {
  color: #bd111f;
}

.lobby__side {
  overflow: hidden;
}

.lobby__nope {
  min-height: 300px;
  text-align: center;
}

@media (min-width: 500px) {
  .lobby__nope {
    min-height: 400px;
  }
}

@media (min-width: 800px) {
  .lobby__nope {
    height: 600px;
    max-height: calc(100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 2vmin);
  }
}

.lobby__nope .lobby__app__content {
  height: 100%;
  align-items: center;
  padding-top: 2em;
}

.lobby__nope ul {
  margin: .6em auto;
  display: inline-block;
  text-align: left;
}

.lobby__nope li {
  list-style: disc outside;
  font-size: 1.1em;
}

.game-setup {
  display: none;
}

.about-side {
  margin-top: 2vmin;
}

@media (max-width: 799px) {
  .about-side, .lobby__streams, .lobby__about {
    margin-left: 2vmin;
  }
}

.lobby__tv .mini-game {
  overflow: visible;
}

.lobby__puzzle .text {
  color: #787878;
  display: block;
  text-align: right;
  margin-right: 1ch;
}

.now-playing .meta {
  align-items: center;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9iYnkvY3NzL2J1aWxkL2xvYmJ5LmxpZ2h0LmNzcyIsInNvdXJjZXMiOlsibG9iYnkvY3NzL2J1aWxkL2xvYmJ5LmxpZ2h0LnNjc3MiLCJjb21tb24vY3NzL3RoZW1lL19saWdodC5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGVmYXVsdC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZnVuY3Rpb25zLnNjc3MiLCJsb2JieS9jc3MvYnVpbGQvX2xvYmJ5LnNjc3MiLCJjb21tb24vY3NzL19wbHVnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2FsbC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fei1pbmRleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWVkaWEtcXVlcmllcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L191bmlib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWl4aW5zLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19leHRlbmRzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbGV4LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19ib3guc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2ZsdWlkLXNpemUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19ub3ctcGxheWluZy5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2NvbG9yLWljb24uc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19nbG93aW5nLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fdGFicy1ob3Jpei5zY3NzIiwiY29tbW9uL2Nzcy9iYXNlL19zY3JvbGxiYXIuc2NzcyIsImxvYmJ5L2Nzcy9fbG9iYnkuc2NzcyIsImxvYmJ5L2Nzcy9fbGF5b3V0LnNjc3MiLCJsb2JieS9jc3MvYXBwL19hcHAuc2NzcyIsImxvYmJ5L2Nzcy9hcHAvX3Bvb2wuc2NzcyIsImxvYmJ5L2Nzcy9hcHAvX2hvb2stY2hhcnQuc2NzcyIsImxvYmJ5L2Nzcy9hcHAvX2hvb2stbGlzdC5zY3NzIiwibG9iYnkvY3NzL190YWJsZS5zY3NzIiwibG9iYnkvY3NzL19zdHJlYW0uc2NzcyIsImxvYmJ5L2Nzcy9fc3BvdGxpZ2h0LnNjc3MiLCJsb2JieS9jc3MvX3RpbWVsaW5lLnNjc3MiLCJsb2JieS9jc3MvX2JveC5zY3NzIiwibG9iYnkvY3NzL19mb3J1bS5zY3NzIiwibG9iYnkvY3NzL19ibG9nLnNjc3MiLCJsb2JieS9jc3MvX3N1cHBvcnQuc2NzcyIsImxvYmJ5L2Nzcy9fYWJvdXQuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy90aGVtZS9saWdodFwiO1xuQGltcG9ydCBcImxvYmJ5XCI7XG4iLCJAaW1wb3J0IFwiZGVmYXVsdFwiO1xuXG4kdGhlbWU6IFwibGlnaHRcIjtcbiR0aGVtZS1saWdodDogdHJ1ZTtcbiR0aGVtZS1kYXJrOiBmYWxzZTtcblxuJGMtYmctcGFnZTogaHNsKDAsIDAlLCAxMDAlKTtcbiRjLWJnLXBhZ2UtaW1nOiB1cmwoLi4vaW1hZ2VzL21vc2Nvdy1jaGVzc19wYXR0ZXJuX2xpZ2h0X2FuZ2xlZC0wMS5wbmcpO1xuJGMtYmctcGFnZS1iczogMTAlO1xuXG5AbWl4aW4gbWV0YWwtYmcge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCwgOTYpIDAlLCBoc2woMCwgMCwgOTMpIDEwMCUpO1xufVxuXG5AbWl4aW4gbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcblxuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gbWV0YWwtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCwgOTgpIDAlLCBoc2woMCwgMCwgOTUpIDEwMCUpO1xuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIG1peCgkYy1saW5rLCBoc2woMCwgMCUsIDEwMCUpLCAyMCUpIDAlLCBtaXgoJGMtbGluaywgaHNsKDAsIDAlLCA5NCUpLCAyMCUpIDEwMCUpO1xuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbC1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIG1peCgkYy1saW5rLCAjZmZmLCAyNSUpIDAlLCBtaXgoJGMtbGluaywgYy1saWdodCgkYy1iZy1wYWdlLCA5MCUpLCAyNSUpIDEwMCUpO1xuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gdGhlbWUtc3R5bGUge31cbiIsIkBpbXBvcnQgXCIuLi9hYnN0cmFjdC9mdW5jdGlvbnNcIjtcblxuLyogQ29sb3JzICovXG5cbkBmdW5jdGlvbiBjLWRpbW1lcigkY29sb3IsICR3ZWlnaHQ6IDE3JSkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYy1jbGVhcmVyKCRjb2xvciwgJHdlaWdodDogMTclKSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbiRjLXNpdGUtaHVlOiAzNztcblxuJGMtYmctcGFnZTogaHNsKCRjLXNpdGUtaHVlLCAxMCUsIDkyJSk7XG5cbiRjLWJnLXBhZ2UtaW1nOiBub25lO1xuJGMtYmctcGFnZS1iczogYXV0bztcblxuLy8gaHNsKDIxMCwgMTclLCA5NSUpXG4kYy1iZy1oaWdoOiBoc2woMCwgMCUsIDEwMCUpO1xuJGMtYmctbG93OiBoc2woMCwgMCUsIDg5JSk7XG5cbi8qIGV2ZW4gcm93cyBpbiBsaXN0IG9yIHRhYmxlcywgc3VidGxlIHNoYWRlIG9mICRjLWJnLWhpZ2ggKi9cbiRjLWJnLXplYnJhOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTYuNSUpO1xuJGMtYmctemVicmEyOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTIlKTtcblxuJGMtYm9keS1ncmFkaWVudDogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDg0JSk7XG5cbiRjLWZvbnQ6IGhzbCgwLCAwJSwgMzAlKTtcbiRjLWZvbnQtZGltOiBjLWxpZ2h0KCRjLWZvbnQsIDQ3JSk7XG4kYy1mb250LWRpbW1lcjogYy1saWdodCgkYy1mb250LCA3MCUpO1xuJGMtZm9udC1jbGVhcjogYy1saWdodCgkYy1mb250LCAxMiUpO1xuJGMtZm9udC1jbGVhcmVyOiBjLWxpZ2h0KCRjLWZvbnQsIDAlKTtcbiRjLXNoYWRlOiBjLWRpbW1lcigkYy1mb250LCA4MCUpO1xuJGMtZm9udC1wYWdlOiBjLWxpZ2h0KCRjLWZvbnQsIDM3JSk7XG5cbi8qIFByaW1hcnk6IGJsdWUgKi9cbiRjLXByaW1hcnk6ICNiZDExMWY7XG4kYy1wcmltYXJ5LWRpbTogYy1kaW1tZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LWNsZWFyOiBjLWNsZWFyZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBwcmltYXJ5IGJhY2tncm91bmQgKi9cblxuLyogU2Vjb25kYXJ5OiBncmVlbiAqL1xuJGMtc2Vjb25kYXJ5OiBoc2woODgsIDYyJSwgMzclKTtcbiRjLXNlY29uZGFyeS1kaW06IGMtZGltbWVyKCRjLXNlY29uZGFyeSk7XG4kYy1zZWNvbmRhcnktZGltbWVyOiBjLWRpbW1lcigkYy1zZWNvbmRhcnksIDQwJSk7XG4kYy1zZWNvbmRhcnktb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIHNlY29uZGFyeSBiYWNrZ3JvdW5kICovXG5cbi8qIEFjY2VudDogb3JhbmdlICovXG4kYy1hY2NlbnQ6ICNiZDExMWY7XG4kYy1hY2NlbnQtZGltOiBjLWRpbW1lcigkYy1hY2NlbnQpO1xuJGMtYWNjZW50LWNsZWFyOiBjLWNsZWFyZXIoJGMtYWNjZW50KTtcbiRjLWFjY2VudC1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYWNjZW50IGJhY2tncm91bmQgKi9cblxuLyogQnJhZzogZ29sZCAqL1xuJGMtYnJhZzogaHNsKDM3LCA3NCUsIDQ4JSk7XG4kYy1icmFnLW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuLyogRXJyb3I6IHJlZCAqL1xuJGMtcmVkOiBoc2woMCwgNjAlLCA1MCUpO1xuJGMtZXJyb3I6ICRjLXJlZDtcbiRjLWVycm9yLW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuLyogR29vZDogZ3JlZW4gKi9cbiRjLWdvb2Q6ICRjLXNlY29uZGFyeTtcbiRjLWdvb2Qtb3ZlcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG5cbi8qIFdhcm46IG9yYW5nZSAqL1xuJGMtd2FybjogJGMtYnJhZztcbiRjLXdhcm4tb3ZlcjogJGMtYnJhZy1vdmVyO1xuXG4vKiBCYWQ6IHJlZCAqL1xuJGMtYmFkOiAkYy1lcnJvcjtcbiRjLWJhZC1vdmVyOiAkYy1lcnJvci1vdmVyO1xuXG4vKiBGYW5jeTogcGluayAqL1xuJGMtZmFuY3k6IGhzbCgyOTQsIDYxJSwgNjIlKTtcbiRjLWZhbmN5LW92ZXI6IHdoaXRlO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbiRjLWxpbms6ICRjLXByaW1hcnk7XG4kYy1saW5rLWRpbTogJGMtcHJpbWFyeS1kaW07XG4kYy1saW5rLWNsZWFyOiAkYy1wcmltYXJ5LWNsZWFyO1xuJGMtbGluay1ob3ZlcjogYy1jbGVhcmVyKHNhdHVyYXRlKCRjLXByaW1hcnksIDEwMCUpLCAzNSUpO1xuJGMtbGluay1vdmVyOiAkYy1wcmltYXJ5LW92ZXI7XG5cbiRjLWJnLWJveDogJGMtYmctaGlnaDtcbiRjLWJnLWJveC1vcGFxdWU6ICRjLWJnLWJveDtcbiRjLWJnLWlucHV0OiBjLWxpZ2h0KCRjLWJnLXBhZ2UsIDk4JSk7XG5cbiRjLWJvcmRlcjogaHNsKDAsIDAlLCA4NSUpO1xuJGMtYm9yZGVyLXBhZ2U6IGhzbCgwLCAwJSwgODAlKTtcblxuJGMtcGFnZS1tYXNrOiBoc2xhKDAsIDAsIDAlLCAwLjYpO1xuXG4kYy1iZy1wb3B1cDogJGMtYmctaGlnaDtcbiRjLXBvcHVwOiAkYy1mb250O1xuXG4kYy1iZy1oZWFkZXItZHJvcGRvd246ICRjLWJnLXBvcHVwO1xuJGMtaGVhZGVyLWRyb3Bkb3duOiAkYy1wb3B1cDtcblxuJGMtZm9udC1zaGFkb3c6IHdoaXRlO1xuJHRleHQtc2hhZG93OiAwIDFweCAwICRjLWZvbnQtc2hhZG93O1xuXG4kYy1ib3Q6ICRjLWZhbmN5O1xuXG4kYy1wYWdlLWlucHV0OiAkYy1iZy1sb3c7XG5cbi8qIEJvcmRlcnMgKi9cblxuJGJvcmRlci13aWR0aDogMXB4O1xuJGJvcmRlci1zdHlsZTogc29saWQ7XG4kYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgJGMtYm9yZGVyO1xuXG4vKiBTaGFkb3dzICovXG5cbiRib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XG5cbi8vICRib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsMCwwLC4xNTcpO1xuXG4vKiBDdXN0b20gKi9cbiR3YXJuaW5nLWljb24tY29sb3I6IGhzbCg0NCwgMTAwJSwgNDYlKTtcbiIsIkBmdW5jdGlvbiBjLWxpZ2h0KCRjb2xvciwgJHZhbHVlKSB7XG4gIEByZXR1cm4gY2hhbmdlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHZhbHVlKTtcbn1cblxuQGZ1bmN0aW9uIGltZy11cmwoJHBhdGgpIHtcbiAgQHJldHVybiB1cmwoXCIjeyRpbWctcGF0aH0vI3skcGF0aH1cIik7XG59XG4iLCJAaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9wbHVnaW5cIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9ub3ctcGxheWluZ1wiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2NvbG9yLWljb25cIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9nbG93aW5nXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvdGFicy1ob3JpelwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvYmFzZS9zY3JvbGxiYXJcIjtcbkBpbXBvcnQgXCIuLi9sb2JieVwiO1xuIiwiLyogQ29tbW9uIGltcG9ydHMgZm9yIGFsbCBDU1MgbW9kdWxlcyAqL1xuXG5AaW1wb3J0IFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50XCI7XG5cbkBpbXBvcnQgXCJhYnN0cmFjdC9hbGxcIjtcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJEJyZWFrcG9pbnQtU2V0dGluZ3M6IChcbiAgJ2RlZmF1bHQgbWVkaWEnOiBhbGwsXG4gICdkZWZhdWx0IGZlYXR1cmUnOiBtaW4td2lkdGgsXG4gICdkZWZhdWx0IHBhaXInOiB3aWR0aCxcblxuICAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnOiBmYWxzZSxcbiAgJ3RvIGVtcyc6IGZhbHNlLFxuICAndHJhbnNmb3JtIHJlc29sdXRpb25zJzogdHJ1ZSxcblxuICAnbm8gcXVlcmllcyc6IGZhbHNlLFxuICAnbm8gcXVlcnkgZmFsbGJhY2tzJzogZmFsc2UsXG5cbiAgJ2Jhc2UgZm9udCBzaXplJzogMTZweCxcblxuICAnbGVnYWN5IHN5bnRheCc6IGZhbHNlXG4pO1xuXG4kYnJlYWtwb2ludDogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9zZXR0aW5nc1wiO1xuQGltcG9ydCAnYnJlYWtwb2ludC9jb250ZXh0JztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvaGVscGVycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L3BhcnNlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9uby1xdWVyeSc7XG5cbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcmVzcG9uZC10byc7XG5cbkBpbXBvcnQgXCJicmVha3BvaW50L2xlZ2FjeS1zZXR0aW5nc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgbGVnYWN5LXNldHRpbmdzLXdhcm5pbmc7XG5cbiAgLy8gUmVzZXQgY29udGV4dHNcbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG5cbiAgJGJyZWFrcG9pbnQ6IGJyZWFrcG9pbnQoJHF1ZXJ5LCBmYWxzZSk7XG5cbiAgJHF1ZXJ5LXN0cmluZzogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5Jyk7XG4gICRxdWVyeS1mYWxsYmFjazogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2ZhbGxiYWNrJyk7XG5cbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2NvbnRleHQgaG9sZGVyJykgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5IGNvdW50JykgIWdsb2JhbDtcblxuICAvLyBBbGxvdyBmb3IgYW4gYXMtbmVlZGVkIG92ZXJyaWRlIG9yIHVzYWdlIG9mIG5vIHF1ZXJ5IGZhbGxiYWNrLlxuICBAaWYgJG5vLXF1ZXJ5ICE9IGZhbHNlIHtcbiAgICAkcXVlcnktZmFsbGJhY2s6ICRuby1xdWVyeTtcbiAgfVxuXG4gIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gIH1cblxuICAvLyBQcmludCBPdXQgUXVlcnkgU3RyaW5nXG4gIEBpZiBub3QgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQG1lZGlhICN7JHF1ZXJ5LXN0cmluZ30ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSAhPSBmYWxzZSBvciBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpID09IHRydWUge1xuXG4gICAgJHR5cGU6IHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpKTtcbiAgICAkcHJpbnQ6IGZhbHNlO1xuXG4gICAgQGlmICgkdHlwZSA9PSAnYm9vbCcpIHtcbiAgICAgICRwcmludDogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdsaXN0Jykge1xuICAgICAgQGVhY2ggJHdyYXBwZXIgaW4gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSAkd3JhcHBlciB7XG4gICAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV3JpdGUgRmFsbGJhY2tcbiAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkgYW5kICgkcHJpbnQgPT0gdHJ1ZSkge1xuICAgICAgJHR5cGUtZmFsbGJhY2s6IHR5cGUtb2YoJHF1ZXJ5LWZhbGxiYWNrKTtcblxuICAgICAgQGlmICgkdHlwZS1mYWxsYmFjayAhPSAnYm9vbCcpIHtcbiAgICAgICAgI3skcXVlcnktZmFsbGJhY2t9ICYge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xufVxuXG5cbkBtaXhpbiBtcSgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhhcyBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldCgkc2V0dGluZykge1xuICBAaWYgYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnQsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCcmVha3BvaW50LVNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGlmIChzdHItaW5kZXgoJHNldHRpbmcsICctJykgb3Igc3RyLWluZGV4KCRzZXR0aW5nLCAnXycpKSBhbmQgc3RyLWluZGV4KCRzZXR0aW5nLCAnICcpID09IG51bGwge1xuICAgIEB3YXJuIFwiV29yZHMgaW4gQnJlYWtwb2ludCBzZXR0aW5ncyBzaG91bGQgYmUgc2VwYXJhdGVkIGJ5IHNwYWNlcywgbm90IGRhc2hlcyBvciB1bmRlcnNjb3Jlcy4gUGxlYXNlIHJlcGxhY2UgZGFzaGVzIGFuZCB1bmRlcnNjb3JlcyBiZXR3ZWVuIHdvcmRzIHdpdGggc3BhY2VzLiBTZXR0aW5ncyB3aWxsIG5vdCB3b3JrIGFzIGV4cGVjdGVkIHVudGlsIGNoYW5nZWQuXCI7XG4gIH1cbiAgJGJyZWFrcG9pbnQ6IG1hcC1tZXJnZSgkYnJlYWtwb2ludCwgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRicmVha3BvaW50LWNoYW5nZTogYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYmtwdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cbkBtaXhpbiBia3B0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICBAaWYgbGVuZ3RoKCRzZXR0aW5ncykgPT0gMSB7XG4gICAgJHNldHRpbmdzOiBudGgoJHNldHRpbmdzLCAxKTtcbiAgfVxuXG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGJyZWFrcG9pbnQ6IG1hcC1yZW1vdmUoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSAhZ2xvYmFsO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBia3B0LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBCcmVha3BvaW50IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKTtcbiRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBIYXMgQ29udGV4dFxuLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB5b3UgYXJlIGluc2lkZSBhIEJyZWFrcG9pbnQgcXVlcnlcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSB7XG4gIEBpZiBsZW5ndGgoJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCkge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgR2V0IENvbnRleHRcbi8vICRmZWF0dXJlOiBJbnB1dCBmZWF0dXJlIHRvIGdldCBpdCdzIGN1cnJlbnQgTVEgY29udGV4dC4gUmV0dXJucyBmYWxzZSBpZiBubyBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldC1jb250ZXh0KCRmZWF0dXJlKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICRnZXQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgb2Ygbm8tcXVlcnkgZnJvbSBnZXQgc2lkZSBzbyAvZmFsc2UvIHByZXBlbmRzIGFyZW4ndCByZXR1cm5lZFxuICAgIEBpZiAkZmVhdHVyZSA9PSAnbm8tcXVlcnknIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRnZXQpID09ICdsaXN0JyBhbmQgbGVuZ3RoKCRnZXQpID4gMSBhbmQgbnRoKCRnZXQsIDEpID09IGZhbHNlIHtcbiAgICAgICAgJGdldDogbnRoKCRnZXQsIGxlbmd0aCgkZ2V0KSk7XG4gICAgICB9XG4gICAgfVxuICAgIEByZXR1cm4gJGdldDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSBhbmQgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICBAcmV0dXJuIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byBzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpIHtcbiAgQGlmICR2YWx1ZSA9PSAnbW9ub2Nocm9tZScge1xuICAgICRmZWF0dXJlOiAnbW9ub2Nocm9tZSc7XG4gIH1cblxuICAkY3VycmVudDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gIEBpZiAkY3VycmVudCBhbmQgbGVuZ3RoKCRjdXJyZW50KSA9PSAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICBAd2FybiBcIllvdSBoYXZlIGFscmVhZHkgcXVlcmllZCBhZ2FpbnN0IGAjeyRmZWF0dXJlfWAuIFVuZXhwZWN0ZWQgdGhpbmdzIG1heSBoYXBwZW4gaWYgeW91IHF1ZXJ5IGFnYWluc3QgdGhlIHNhbWUgZmVhdHVyZSBtb3JlIHRoYW4gb25jZSBpbiB0aGUgc2FtZSBgYW5kYCBxdWVyeS4gQnJlYWtwb2ludCBpcyBvdmVyd3JpdGluZyB0aGUgY3VycmVudCBjb250ZXh0IHdpdGggYCN7JHZhbHVlfWBcIjtcbiAgfVxuXG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkdi1ob2xkZXI6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAxIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR2LWhvbGRlcjogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCAtIDEge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byByZXNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMge1xuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb252ZXJ0cyB0aGUgaW5wdXQgdmFsdWUgdG8gQmFzZSBFTXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpIHtcbiAgJHZhbHVlLXVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICAvLyBXaWxsIGNvbnZlcnQgcmVsYXRpdmUgRU1zIGludG8gcm9vdCBFTXMuXG4gIEBpZiBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSBhbmQgdHlwZS1vZihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgPT0gJ251bWJlcicgYW5kICR2YWx1ZS11bml0ID09ICdlbScge1xuICAgICRiYXNlLXVuaXQ6IHVuaXQoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpO1xuXG4gICAgQGlmICRiYXNlLXVuaXQgPT0gJ3B4JyBvciAkYmFzZS11bml0ID09ICclJyBvciAkYmFzZS11bml0ID09ICdlbScgb3IgJGJhc2UtdW5pdCA9PSAncHQnIHtcbiAgICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkgLyBiYXNlLWNvbnZlcnNpb24oYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpICogMWVtO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnI3ticmVha3BvaW50LWdldChcXCdiYXNlIGZvbnQgc2l6ZVxcJyl9IGlzIG5vdCBzZXQgaW4gdmFsaWQgdW5pdHMgZm9yIGZvbnQgc2l6ZSEnO1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIHtcbiAgJHVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICBAaWYgJHVuaXQgPT0gJ3B4JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxNnB4ICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICclJyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMDAlICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdlbScge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdwdCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTJwdCAqIDFlbTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4vLyAgICBAd2FybiAnRXZlcnl0aGluZyBpcyB0ZXJyaWJsZSEgV2hhdCBoYXZlIHlvdSBkb25lPyEnO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgbWluL21heCBwYWlyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWhlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLXdpZHRoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluLW1heCgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIHN0cmluZyB2YWx1ZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXM6ICAnb3JpZW50YXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjYW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2x1bWlub3NpdHknO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgYnJlYWtwb2ludC1taW4tbWF4KCRpdGVtKSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21pbi0jeyRpdGVtfScgb3IgJGZlYXR1cmUgPT0gJ21heC0jeyRpdGVtfScge1xuICAgICAgICBAcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgaXMgYSBtZWRpYSB0eXBlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1lZGlhLXR5cGVzOiAgJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdicmFpbGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VtYm9zc2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbmRoZWxkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyZWVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWVjaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHYnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkge1xuICBAZWFjaCAkbWVkaWEgaW4gJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXMge1xuICAgIEBpZiAoJGZlYXR1cmUgPT0gJG1lZGlhKSBvciAoJGZlYXR1cmUgPT0gJ25vdCAjeyRtZWRpYX0nKSBvciAoJGZlYXR1cmUgPT0gJ29ubHkgI3skbWVkaWF9Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBzdGFuZCBhbG9uZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncmlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSB7XG4gICRyZXNvbHV0aW9uczogJ2RldmljZS1waXhlbC1yYXRpbycsICdkcHInO1xuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgICRyZXNvbHV0aW9uczogYXBwZW5kKCRyZXNvbHV0aW9ucywgJ3Jlc29sdXRpb24nKTtcbiAgfVxuXG4gIEBlYWNoICRyZXNvIGluICRyZXNvbHV0aW9ucyB7XG4gICAgQGlmIGluZGV4KCRmZWF0dXJlLCAkcmVzbykgb3IgaW5kZXgoJGZlYXR1cmUsICdtaW4tI3skcmVzb30nKSBvciBpbmRleCgkZmVhdHVyZSwgJ21heC0jeyRyZXNvfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGFyc2VyIFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwicGFyc2Vycy9xdWVyeVwiO1xuQGltcG9ydCBcInBhcnNlcnMvc2luZ2xlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9kb3VibGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3RyaXBsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvcmVzb2x1dGlvblwiO1xuXG4kTWVtby1FeGlzdHM6IGZ1bmN0aW9uLWV4aXN0cyhtZW1vLWdldCkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhtZW1vLXNldCk7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBGdW5jdGlvblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkcXVlcnksICRjb250ZXh0cy4uLikge1xuICAkcnVuOiB0cnVlO1xuICAkcmV0dXJuOiAoKTtcblxuICAvLyBHcmFiIHRoZSBNZW1vIE91dHB1dCBpZiBNZW1vaXphdGlvbiBjYW4gYmUgYSB0aGluZ1xuICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAkcmV0dXJuOiBtZW1vLWdldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMpO1xuXG4gICAgQGlmICRyZXR1cm4gIT0gbnVsbCB7XG4gICAgICAkcnVuOiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAaWYgbm90ICRNZW1vLUV4aXN0cyBvciAkcnVuIHtcbiAgICAvLyBJbnRlcm5hbCBWYXJpYWJsZXNcbiAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAkcXVlcnktZmFsbGJhY2s6IGZhbHNlO1xuICAgICRyZXR1cm46ICgpO1xuXG4gICAgLy8gUmVzZXJ2ZSBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkaG9sZGVyLWNvbnRleHQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI7XG4gICAgJGhvbGRlci1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDtcblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG5cbiAgICAvLyBUZXN0IHRvIHNlZSBpZiBpdCdzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3RcbiAgICAkb3ItbGlzdDogaWYobGlzdC1zZXBhcmF0b3IoJHF1ZXJ5KSA9PSAnY29tbWEnLCB0cnVlLCBmYWxzZSk7XG5cblxuICAgIEBpZiAoJG9yLWxpc3QgPT0gZmFsc2UgYW5kIGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gZmFsc2UpIHtcbiAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgICAgICRsYXN0OiBudGgoJHF1ZXJ5LCAkbGVuZ3RoKTtcbiAgICAgICRxdWVyeS1mYWxsYmFjazogYnJlYWtwb2ludC1uby1xdWVyeSgkbGFzdCk7XG5cbiAgICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSB7XG4gICAgICAgICRsZW5ndGg6ICRsZW5ndGggLSAxO1xuICAgICAgfVxuXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gdHJ1ZSkge1xuICAgICAgICAkbXE6ICgpO1xuXG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJG1xOiBhcHBlbmQoJG1xLCBudGgoJHF1ZXJ5LCAkaSksIGNvbW1hKTtcbiAgICAgICAgfVxuXG4gICAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJG1xKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJHF1ZXJ5LXN0cmluZzogJHF1ZXJ5LXN0cmluZyArIGlmKCRpID09IDEsICcnLCAnLCAnKSArIGJyZWFrcG9pbnQtcGFyc2UobnRoKCRxdWVyeSwgJGkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRyZXR1cm46ICgncXVlcnknOiAkcXVlcnktc3RyaW5nLFxuICAgICAgICAnZmFsbGJhY2snOiAkcXVlcnktZmFsbGJhY2ssXG4gICAgICAgICdjb250ZXh0IGhvbGRlcic6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsXG4gICAgICAgICdxdWVyeSBjb3VudCc6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnRcbiAgICApO1xuICAgIEBpZiBsZW5ndGgoJGNvbnRleHRzKSA+IDAgYW5kIG50aCgkY29udGV4dHMsIDEpICE9IGZhbHNlIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICAgICAgfVxuICAgICAgJGNvbnRleHQtbWFwOiAoKTtcbiAgICAgIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgICAgICRjb250ZXh0LW1hcDogbWFwLW1lcmdlKCRjb250ZXh0LW1hcCwgKCRjb250ZXh0OiBicmVha3BvaW50LWdldC1jb250ZXh0KCRjb250ZXh0KSkpO1xuICAgICAgfVxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sIChjb250ZXh0OiAkY29udGV4dC1tYXApKTtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuICAgIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICAgJGhvbGRlcjogbWVtby1zZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzLCAkcmV0dXJuKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhbCBCcmVha3BvaW50IFBhcnNlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpIHtcbiAgLy8gSW5jcmVhc2UgbnVtYmVyIG9mICdhbmQnIHF1ZXJpZXNcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCArIDEgIWdsb2JhbDtcblxuICAvLyBTZXQgdXAgTWVkaWEgVHlwZVxuICAkcXVlcnktcHJpbnQ6ICcnO1xuXG4gICRmb3JjZS1hbGw6ICgoYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykgPT0gdHJ1ZSkgYW5kIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpID09ICdhbGwnKSk7XG4gICRlbXB0eS1tZWRpYTogdHJ1ZTtcbiAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpICE9ICdhbGwnKSB7XG4gICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG4gIH1cblxuXG4gICRxdWVyeS1yZXNvbHV0aW9uOiBmYWxzZTtcblxuICAkcXVlcnktaG9sZGVyOiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSk7XG5cblxuXG4gIC8vIExvb3Agb3ZlciBlYWNoIHBhcnNlZCBvdXQgcXVlcnkgYW5kIHdyaXRlIGl0IHRvICRxdWVyeS1wcmludFxuICAkZmlyc3Q6IHRydWU7XG5cbiAgQGVhY2ggJGZlYXR1cmUgaW4gJHF1ZXJ5LWhvbGRlciB7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRmZWF0dXJlKTtcblxuICAgIC8vIFBhcnNlIGEgc2luZ2xlIGZlYXR1cmVcbiAgICBAaWYgKCRsZW5ndGggPT0gMSkge1xuICAgICAgLy8gRmVhdHVyZSBpcyBjdXJyZW50bHkgYSBsaXN0LCBncmFiIHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICRmZWF0dXJlOiBudGgoJGZlYXR1cmUsIDEpO1xuXG4gICAgICAvLyBNZWRpYSBUeXBlIG11c3QgYnkgY29udmVudGlvbiBiZSB0aGUgZmlyc3QgaXRlbSwgc28gaXQncyBzYWZlIHRvIGZsYXQgb3ZlcnJpZGUgJHF1ZXJ5LXByaW50LCB3aGljaCByaWdodCBub3cgc2hvdWxkIG9ubHkgYmUgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZVxuICAgICAgQGlmIChicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSkge1xuICAgICAgICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKCRmZWF0dXJlICE9ICdhbGwnKSB7XG4gICAgICAgICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAkZmVhdHVyZTtcbiAgICAgICAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuXG4gICAgICAgICAgLy8gU2V0IENvbnRleHRcbiAgICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtZWRpYSwgJHF1ZXJ5LXByaW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgZG91YmxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAyKSB7XG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkgIT0gZmFsc2UpIHtcbiAgICAgICAgJHF1ZXJ5LXJlc29sdXRpb246ICRmZWF0dXJlO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBudWxsO1xuICAgICAgICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLFxuICAgICAgICAvLyB3ZSBjaGVjayB0byBzZWUgaWYgb25lIGlzIGEgc2luZ2xlLXN0cmluZyB2YWx1ZSxcbiAgICAgICAgLy8gdGhlbiB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgICAgICAgJGFscGhhOiBudGgoJGZlYXR1cmUsIDEpO1xuICAgICAgICAkYmV0YTogbnRoKCRmZWF0dXJlLCAyKTtcbiAgICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYWxwaGEpIG9yIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYmV0YSkge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRhbHBoYSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRiZXRhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgdHJpcGxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAzKSB7XG4gICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICB9XG5cbiAgfVxuXG4gIEBpZiAoJHF1ZXJ5LXJlc29sdXRpb24gIT0gZmFsc2UpIHtcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gIH1cblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBmZWF0dXJlIHRoYXQncyBiZWVuIGRldGVjdGVkIHNvIGZhciBhbmQgYXBwZW5kICdmYWxzZScgdG8gdGhlIHRoZSB2YWx1ZSBsaXN0IHRvIGluY3JlbWVudCB0aGVpciBjb3VudGVyc1xuICBAZWFjaCAkZiwgJHYgaW4gJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciB7XG4gICAgJHYtaG9sZGVyOiAkdjtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAaWYgbGVuZ3RoKCR2LWhvbGRlcikgPCAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgICBAaWYgJGYgPT0gJ21lZGlhJyB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZjogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KSB7XG4gIC8vIFBhcnNlIGZlYXR1cmVzIG91dCBvZiBhbiBpbmRpdmlkdWFsIHF1ZXJ5XG4gICRmZWF0dXJlLWhvbGRlcjogKCk7XG4gICRxdWVyeS1ob2xkZXI6ICgpO1xuICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgYSBzdHJpbmcvbnVtYmVyLCBudW1iZXIvc3RyaW5nLCBjaGVjayB0byBzZWUgaWYgaXQncyBhIHZhbGlkIHN0cmluZy9udW1iZXIgcGFpciBvciB0d28gc2luZ2xlc1xuICAgIEBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSBvciAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG5cbiAgICAgICRudW1iZXI6ICcnO1xuICAgICAgJHZhbHVlOiAnJztcblxuICAgICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMik7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDEpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDIpO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIHZhbHVlIGNhbiBiZSBhIHNpbmdsZSB2YWx1ZSwgY2hlY2sgdG8gc2VlIGlmIHRoZSBudW1iZXIgcGFzc2VkIGluIGlzIGEgdmFsaWQgaW5wdXQgZm9yIHNhaWQgc2luZ2xlIHZhbHVlLiBGb3J0dW5hdGVseSwgYWxsIGN1cnJlbnQgc2luZ2xlLXZhbHVlIG9wdGlvbnMgb25seSBhY2NlcHQgdW5pdGxlc3MgbnVtYmVycywgc28gdGhpcyBjaGVjayBpcyBlYXN5LlxuICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkdmFsdWUpIHtcbiAgICAgICAgQGlmIHVuaXRsZXNzKCRudW1iZXIpIHtcbiAgICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGEgbWVkaWEgdHlwZSwgc3BsaXQgdGhlIHF1ZXJ5XG4gICAgICBAaWYgYnJlYWtwb2ludC1pcy1tZWRpYSgkdmFsdWUpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDIpKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gSWYgaXQncyBub3QgYSBzaW5nbGUgZmVhdHVyZSwgd2UncmUganVzdCBnb2luZyB0byBhc3N1bWUgaXQncyBhIHByb3BlciBzdHJpbmcvdmFsdWUgcGFpciwgYW5kIHJvbGwgd2l0aCBpdC5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuXG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBudW1iZXJzLCB3ZSBhc3N1bWUgaXQncyBhIGRvdWJsZSBhbmQgcm9sbCB3aXRoIHRoYXRcbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSB7XG4gICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIHN0cmluZ3MgYW5kIG5laXRoZXIgYXJlIHNpbmdsZXMsIHdlIHJvbGwgd2l0aCB0aGF0LlxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7XG4gICAgLy8gSWYgd2UndmUgZ290IHRocmVlIGl0ZW1zIGFuZCBub25lIGlzIGEgbGlzdCwgd2UgY2hlY2sgdG8gc2VlXG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDMpKSAhPSAnbGlzdCcge1xuICAgICAgLy8gSWYgbm9uZSBvZiB0aGUgaXRlbXMgYXJlIHNpbmdsZSBzdHJpbmcgdmFsdWVzIGFuZCBub25lIG9mIHRoZSB2YWx1ZXMgYXJlIG1lZGlhIHZhbHVlcywgd2UncmUgZ29vZC5cbiAgICAgIEBpZiAobm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDMpKSkgYW5kICAoKG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAzKSkpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkZmVhdHVyZS1ob2xkZXIsIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gbGV0J3MgY2hlY2sgdG8gc2VlIGlmIHRoZSBmaXJzdCBpdGVtIGlzIGEgbWVkaWEgdHlwZVxuICAgICAgQGVsc2UgaWYgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAyKSwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlcik7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGl0ZW0sIG9yIGlmIGl0J3Mgbm90IGEgc3BlY2lhbCBjYXNlIGRvdWJsZSBvciB0cmlwbGUsIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSBxdWVyeS5cbiAgQHJldHVybiAkcXVlcnk7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInNpbmdsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGZlYXR1cmUgdGhhdCBjYW4gc3RhbmQgYWxvbmUsIHdlIGxldCBpdFxuICBAaWYgKGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkpIHtcbiAgICAkcGFyc2VkOiAkZmVhdHVyZTtcbiAgICAvLyBTZXQgQ29udGV4dFxuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkZmVhdHVyZSk7XG4gIH1cbiAgLy8gSWYgaXQncyBub3QgYSBzdGFuZCBhbG9uZSBmZWF0dXJlLCB3ZSBwYXNzIGl0IG9mZiB0byB0aGUgZGVmYXVsdCBoYW5kbGVyLlxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICcoJyArICRwYXJzZWQgKyAnKSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJyk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGRlZmF1bHQsICRmZWF0dXJlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSBhbmQgKHR5cGUtb2YoJGZlYXR1cmUpID09ICdudW1iZXInKSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7YnJlYWtwb2ludC10by1iYXNlLWVtKCRmZWF0dXJlKX0nO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3skZmVhdHVyZX0nO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0LXBhaXJcIjtcbkBpbXBvcnQgXCJkb3VibGUvZG91YmxlLXN0cmluZ1wiO1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAkZmlyc3Q6IG50aCgkZmVhdHVyZSwgMSk7XG4gICRzZWNvbmQ6IG50aCgkZmVhdHVyZSwgMik7XG5cbiAgLy8gSWYgd2UndmUgZ290IHR3byBudW1iZXJzLCB3ZSBrbm93IHdlIG5lZWQgdG8gdXNlIHRoZSBkZWZhdWx0IHBhaXIgYmVjYXVzZSB0aGVyZSBhcmUgbm8gbWVkaWEgcXVlcmllcyB0aGF0IGhhcyBhIG1lZGlhIGZlYXR1cmUgdGhhdCBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdudW1iZXInIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIHRoZXkgYXJlIGJvdGggc3RyaW5ncywgd2Ugc2VuZCBpdCB0aHJvdWdoIHRoZSBzdHJpbmcgcGFyc2VyXG4gIEBlbHNlIGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnc3RyaW5nJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpciwgd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgcGFpcicpO1xuICAkbWluOiAnJztcbiAgJG1heDogJyc7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZGVmYXVsdH0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZGVmYXVsdH0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZGVmYXVsdH06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGRlZmF1bHR9OiAjeyRtYXh9KSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgLy8gVGVzdCB0byBzZWUgd2hpY2ggaXMgdGhlIGZlYXR1cmUgYW5kIHdoaWNoIGlzIHRoZSB2YWx1ZVxuICBAaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmaXJzdCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkc2Vjb25kKSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiTmVpdGhlciAjeyRmaXJzdH0gbm9yICN7JHNlY29uZH0gaXMgYSB2YWxpZCBtZWRpYSBxdWVyeSBuYW1lLlwiO1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJztcbn0iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkdmFsdWU6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpO1xuICB9XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJ1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0cmlwbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcblxuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBzZXBhcmF0ZSB0aGUgc3RyaW5nIGZlYXR1cmVzIGZyb20gdGhlIHZhbHVlIG51bWJlcnNcbiAgJHN0cmluZzogbnVsbDtcbiAgJG51bWJlcnM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJGZlYXR1cmUge1xuICAgIEBpZiB0eXBlLW9mKCR2YWwpID09IHN0cmluZyB7XG4gICAgICAkc3RyaW5nOiAkdmFsO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgdHlwZS1vZigkbnVtYmVycykgPT0gJ251bGwnIHtcbiAgICAgICAgJG51bWJlcnM6ICR2YWw7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXJzOiBhcHBlbmQoJG51bWJlcnMsICR2YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJHN0cmluZywgbnRoKCRudW1iZXJzLCAxKSwgbnRoKCRudW1iZXJzLCAyKSk7XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcblxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJGZlYXR1cmUsICRmaXJzdCwgJHNlY29uZCkge1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGZlYXR1cmV9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGZlYXR1cmV9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGZlYXR1cmV9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRmZWF0dXJlfTogI3skbWF4fSknO1xufVxuIiwiQGltcG9ydCBcInJlc29sdXRpb24vcmVzb2x1dGlvblwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIGFuZCAkcXVlcnktcmVzb2x1dGlvbiB7XG4gICAgJHJlc29sdXRpb25zOiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHF1ZXJ5LXJlc29sdXRpb24pO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbnMpO1xuICAgICRxdWVyeS1ob2xkZXI6ICcnO1xuXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICRxdWVyeTogJyN7JHF1ZXJ5LXByaW50fSAjeyRsZWFkZXJ9I3tudGgoJHJlc29sdXRpb25zLCAkaSl9JztcbiAgICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJHF1ZXJ5O1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAnI3skcXVlcnktaG9sZGVyfSwgI3skcXVlcnl9JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIFJldHVybiB3aXRoIGF0dGFjaGVkIHJlc29sdXRpb25cbiAgICBAcmV0dXJuICRxdWVyeS1wcmludDtcbiAgfVxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcmVzb2x1dGlvbikge1xuICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb24pO1xuXG4gICRvdXRwdXQ6ICgpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgICRmZWF0dXJlOiAnJztcbiAgICAkdmFsdWU6ICcnO1xuXG4gICAgLy8gRmluZCB3aGljaCBpcyBudW1iZXJcbiAgICBAaWYgdHlwZS1vZihudGgoJHJlc29sdXRpb24sIDEpKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAyKTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgbWluL21heC9zdGFuZGFyZFxuICAgIEBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21pbi1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtaW4tJztcbiAgICB9XG4gICAgQGVsc2UgaWYgaW5kZXgoJHJlc29sdXRpb24sICdtYXgtcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWF4LSc7XG4gICAgfVxuXG4gICAgJHN0YW5kYXJkOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWV9KSc7XG5cbiAgICAvLyBJZiB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGRwcHgsXG4gICAgQGlmIHVuaXQoJHZhbHVlKSAhPSAnZHBweCcge1xuICAgICAgJGJhc2U6IDk2ZHBpO1xuICAgICAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZHBjbScge1xuICAgICAgICAkYmFzZTogMjQzLjg0ZHBjbTtcbiAgICAgIH1cbiAgICAgIC8vIFdyaXRlIG91dCBmZWF0dXJlIHRlc3RzXG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkZmFsbGJhY2s6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZSAvIDFkcHB4ICogOTZkcGl9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkZmFsbGJhY2ssIHNwYWNlKTtcbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW5vLXF1ZXJ5KCRxdWVyeSkge1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09ICdsaXN0JyB7XG4gICAgJGtleXdvcmQ6IG50aCgkcXVlcnksIDEpO1xuXG4gICAgQGlmIHR5cGUtb2YoJGtleXdvcmQpID09ICdzdHJpbmcnIGFuZCAoJGtleXdvcmQgPT0gJ25vLXF1ZXJ5JyBvciAka2V5d29yZCA9PSAnbm8gcXVlcnknIG9yICRrZXl3b3JkID09ICdmYWxsYmFjaycpIHtcbiAgICAgIEByZXR1cm4gbnRoKCRxdWVyeSwgMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgdGhlIEJyZWFrcG9pbnRzIHZhcmlhYmxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG4kQlJFQUtQT0lOVFM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlc3BvbmQtdG8gQVBJIE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiByZXNwb25kLXRvKCRjb250ZXh0LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA+IDAgYW5kIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtZXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGFkZCBicmVha3BvaW50cyBmb3IgcmVzcG9uZC10by4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KClgIHRvIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgpYC4gVGhlIGBhZGQtYnJlYWtwb2ludCgpYCBmdW5jdGlvbiB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIjtcbiAgICAkQlJFQUtQT0lOVFM6ICRicmVha3BvaW50cyAhZ2xvYmFsO1xuICAgICRicmVha3BvaW50czogKCkgIWdsb2JhbDtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRCUkVBS1BPSU5UUykgIT0gJ21hcCcge1xuICAgIC8vIEp1c3QgaW4gY2FzZSBzb21lb25lIHdyaXRlcyBnaWJiZXJpc2ggdG8gdGhlICRicmVha3BvaW50cyB2YXJpYWJsZS5cbiAgICBAd2FybiBcIllvdXIgYnJlYWtwb2ludHMgYXJlbid0IGEgbWFwISBgcmVzcG9uZC10b2AgZXhwZWN0cyBhIG1hcC4gUGxlYXNlIGNoZWNrIHRoZSB2YWx1ZSBvZiAkQlJFQUtQT0lOVFMgdmFyaWFibGUuXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFwLWdldCgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAd2FybiBcImAjeyRjb250ZXh0fWAgaXNuJ3QgYSBkZWZpbmVkIGJyZWFrcG9pbnQhIFBsZWFzZSBhZGQgaXQgdXNpbmcgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoYCN7JGNvbnRleHR9YCwgJHZhbHVlKTtgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiWW91IGhhdmVuJ3QgY3JlYXRlZCBhbnkgYnJlYWtwb2ludHMgeWV0ISBNYWtlIHNvbWUgYWxyZWFkeSEgYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdClgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBZGQgQnJlYWtwb2ludCB0byBCcmVha3BvaW50c1xuLy8gVE9ETzogUmVtb3ZlIGZ1bmN0aW9uIGluIG5leHQgcmVsZWFzZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPT0gMCB7XG4gICAgQHJldHVybiAkb3V0cHV0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgIEByZXR1cm4gJGJyZWFrcG9pbnRzO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgIEByZXR1cm4gbWFwLW1lcmdlKCRicmVha3BvaW50cywgJG91dHB1dCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICAkQlJFQUtQT0lOVFM6ICRvdXRwdXQgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICAkQlJFQUtQT0lOVFM6ICRCUkVBS1BPSU5UUyAhZ2xvYmFsO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgICRCUkVBS1BPSU5UUzogbWFwLW1lcmdlKCRCUkVBS1BPSU5UUywgJG91dHB1dCkgIWdsb2JhbDtcbiAgICB9XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGdldC1icmVha3BvaW50KCRuYW1lOiBmYWxzZSkge1xuICBAaWYgJG5hbWUgPT0gZmFsc2Uge1xuICAgIEByZXR1cm4gJEJSRUFLUE9JTlRTO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkbmFtZSk7XG4gIH1cbn1cbiIsIkBtaXhpbiBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZyB7XG4gICRsZWdhY3lWYXJzOiAoXG4gICAgJ2RlZmF1bHQtbWVkaWEnOiAnZGVmYXVsdCBtZWRpYScsXG4gICAgJ2RlZmF1bHQtZmVhdHVyZSc6ICdkZWZhdWx0IGZlYXR1cmUnLFxuICAgICdmb3JjZS1tZWRpYS1hbGwnOiAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLFxuICAgICd0by1lbXMnOiAndG8gZW1zJyxcbiAgICAncmVzb2x1dGlvbnMnOiAndHJhbnNmb3JtIHJlc29sdXRpb25zJyxcbiAgICAnbm8tcXVlcmllcyc6ICdubyBxdWVyaWVzJyxcbiAgICAnbm8tcXVlcnktZmFsbGJhY2tzJzogJ25vIHF1ZXJ5IGZhbGxiYWNrcycsXG4gICAgJ2Jhc2UtZm9udC1zaXplJzogJ2Jhc2UgZm9udCBzaXplJyxcbiAgICAnbGVnYWN5LXN5bnRheCc6ICdsZWdhY3kgc3ludGF4J1xuICApO1xuXG4gIEBlYWNoICRsZWdhY3ksICRuZXcgaW4gJGxlZ2FjeVZhcnMge1xuICAgIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LScgKyAkbGVnYWN5KSB7XG4gICAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGNoYW5nZSBzZXR0aW5ncyBmb3IgQnJlYWtwb2ludC4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludC0jeyRsZWdhY3l9OiB7e3NldHRpbmd9fWAgdG8gYEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCcjeyRuZXd9Jywge3tzZXR0aW5nfX0pYC4gVmFyaWFibGUgc2V0dGluZ3MsIGFzIHdlbGwgYXMgdGhpcyB3YXJuaW5nIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiXG4gICAgfVxuICB9O1xuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBIYW5kIGNvcnJlY3QgZWFjaCBzZXR0aW5nXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgbWVkaWEnLCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgZmVhdHVyZScsICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsJykgYW5kICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCAhPSBicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJywgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC10by1lbXMnKSBhbmQgJGJyZWFrcG9pbnQtdG8tZW1zICE9IGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RvIGVtcycsICRicmVha3BvaW50LXRvLWVtcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtcmVzb2x1dGlvbnMnKSBhbmQgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMgIT0gYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJywgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJpZXMnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcmllcycsICRicmVha3BvaW50LW5vLXF1ZXJpZXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcnkgZmFsbGJhY2tzJywgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZScpIGFuZCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSAhPSBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2Jhc2UgZm9udCBzaXplJywgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWxlZ2FjeS1zeW50YXgnKSBhbmQgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCAhPSBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbGVnYWN5IHN5bnRheCcsICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXgpO1xuICB9XG59IiwiQGltcG9ydCBcImZ1bmN0aW9uc1wiO1xuQGltcG9ydCBcInotaW5kZXhcIjtcbkBpbXBvcnQgXCJtZWRpYS1xdWVyaWVzXCI7XG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XG5AaW1wb3J0IFwidW5pYm9hcmRcIjtcbkBpbXBvcnQgXCJtaXhpbnNcIjtcbkBpbXBvcnQgXCJleHRlbmRzXCI7XG5AaW1wb3J0IFwiZmxleFwiO1xuQGltcG9ydCBcImJveFwiO1xuQGltcG9ydCBcImZsdWlkLXNpemVcIjtcbiIsIi8vLyBaLWluZGV4ZXMgbWFwLCBnYXRoZXJpbmcgYWxsIFogbGF5ZXJzIG9mIHRoZSBhcHBsaWNhdGlvblxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEB0eXBlIE1hcFxuLy8vIEBwcm9wIHtTdHJpbmd9IGtleSAtIExheWVy4oCZcyBuYW1lXG4vLy8gQHByb3Age051bWJlcn0gdmFsdWUgLSBaIHZhbHVlIG1hcHBlZCB0byB0aGUga2V5XG4kei1pbmRleGVzOiAoXCJjZ19fcHJvbW90aW9uXCI6IDIwNSwgXCJjZ19fcGllY2UuZHJhZ2dpbmdcIjogMjA0LCBcImNnX19waWVjZS5hbmltXCI6IDMsIFwiY2dfX3N2Z1wiOiAyLCBcImNnX19waWVjZVwiOiAyLCBcImNnX19waWVjZS5mYWRpbmdcIjogMSwgXCJwb3dlcnRpcFwiOiAxMjAsIFwiaW5xdWlyeVwiOiAxMTEsIFwiemVuLXRvZ2dsZVwiOiAxMTAsIFwibW9kYWxcIjogMTEwLCBcIm1zZWxlY3RcIjogMTEwLCBcInRvcG5hdlwiOiAxMTAsIFwiZnVsbHNjcmVlbi1tYXNrXCI6IDEwOSwgXCJkcm9wZG93blwiOiAxMDgsIFwiY29udGV4dC1tZW51XCI6IDEwNywgXCJzaXRlLWhlYWRlclwiOiAxMDYsIFwicmVjb25uZWN0aW5nXCI6IDEwNSwgXCJ0b3VyLXJlbWluZGVyXCI6IDEwNCwgXCJuYWctY2lyY2xlXCI6IDEwMywgXCJtei1tZW51XCI6IDQsIFwiYWJvdmUtbGluay1vdmVybGF5XCI6IDMsIFwiZnJpZW5kLWJveFwiOiAyLCBcImxpbmstb3ZlcmxheVwiOiAyLCBcImdhbWUtYm9va21hcmtcIjogMiwgXCJzdWJuYXYtc2lkZVwiOiAyLCBcImRlZmF1bHRcIjogMCk7XG5cbi8vLyBHZXQgYSB6LWluZGV4IHZhbHVlIGZyb20gYSBsYXllciBuYW1lXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGxheWVyIC0gTGF5ZXLigJlzIG5hbWVcbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XG4vLy8gQHJlcXVpcmUgJHotaW5kZXhlc1xuQGZ1bmN0aW9uIHooJGxheWVyKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkei1pbmRleGVzLCAkbGF5ZXIpO1xufVxuIiwiLyogV2lkdGhzICovXG5cbiRtcS14eC1zbWFsbDogbWluLXdpZHRoIDUwMHB4O1xuJG1xLXgtc21hbGw6IG1pbi13aWR0aCA2NTBweDtcbiRtcS1zbWFsbDogbWluLXdpZHRoIDgwMHB4O1xuJG1xLW1lZGl1bTogbWluLXdpZHRoIDk4MHB4O1xuJG1xLWxhcmdlOiBtaW4td2lkdGggMTEyMHB4O1xuJG1xLXgtbGFyZ2U6IG1pbi13aWR0aCAxMjYwcHg7XG5cbiRtcS1ub3QteHgtc21hbGw6IG1heC13aWR0aCA0OTlweDtcbiRtcS1ub3QteC1zbWFsbDogbWF4LXdpZHRoIDY0OXB4O1xuJG1xLW5vdC1zbWFsbDogbWF4LXdpZHRoIDc5OXB4O1xuJG1xLW5vdC1tZWRpdW06IG1heC13aWR0aCA5NzlweDtcbiRtcS1ub3QteC1sYXJnZTogbWF4LXdpZHRoIDEyNTlweDtcblxuLyogSGVpZ2h0cyAqL1xuXG4kbXEteC1zaG9ydDogbWluLWhlaWdodCA0MDBweDtcbiRtcS1zaG9ydDogbWluLWhlaWdodCA1MDBweDtcbiRtcS10YWxsOiBtaW4taGVpZ2h0IDYwMHB4O1xuJG1xLXgtdGFsbDogbWluLWhlaWdodCA3MDBweDtcblxuJG1xLW5vdC14LXNob3J0OiBtYXgtaGVpZ2h0IDM5OXB4O1xuXG4vKiBPcmllbnRhdGlvbnMgKi9cblxuJG1xLXBvcnRyYWl0OiBvcmllbnRhdGlvbiBwb3J0cmFpdDtcbiRtcS1sYW5kc2NhcGU6IG9yaWVudGF0aW9uIGxhbmRzY2FwZTtcblxuLyogQ2FwYWJpbGl0aWVzICovXG5cbiRtcS1ob3Zlci15ZXM6IFwiaG92ZXI6IGhvdmVyXCI7XG4kbXEtaG92ZXItbm86IGhvdmVyIG5vbmU7XG5cbi8qIEFsaWFzZXMgKi9cblxuJG1xLW1haW4tbWFyZ2luOiAkbXEtc21hbGw7XG5cbiRtcS10b3BuYXYtdmlzaWJsZTogJG1xLW1lZGl1bTtcbiRtcS10b3BuYXYtaGlkZGVuOiAkbXEtbm90LW1lZGl1bTtcblxuJG1xLXNpdGUtaGVhZGVyLXRhbGw6ICRtcS10YWxsO1xuXG4kbXEtc3VibmF2LXRvcDogJG1xLW5vdC1zbWFsbDtcbiRtcS1zdWJuYXYtc2lkZTogJG1xLXNtYWxsO1xuXG4kbXEtem9vbS1lbmFibGVkOiAkbXEtc21hbGwgJG1xLXNob3J0O1xuIiwiJGRlYnVnOiBmYWxzZTtcblxuJGZvbnQtcGF0aDogXCIuLi9mb250XCI7XG4kaW1nLXBhdGg6IFwiLi4vaW1hZ2VzXCI7XG5cbiR2aWV3cG9ydC1taW4td2lkdGg6IDMyMHB4O1xuXG4kYmxvY2stZ2FwOiAydm1pbjtcbiRibG9jay1nYXAtaGFsZjogMXZtaW47XG5cbiRibG9jay1nYXAtaDogMnZoO1xuJGJsb2NrLWdhcC13OiAydnc7XG4kYmxvY2stZ2FwLXctaGFsZjogMXZ3O1xuXG4kYm94LXJhZGl1cy1zaXplOiAzcHg7XG5cbiRzaXRlLWhlYWRlci10YWxsLWhlaWdodDogNjBweDtcbiRzaXRlLWhlYWRlci1zaG9ydC1oZWlnaHQ6IDQwcHg7XG5cbiR0cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtcztcblxuJG1haW4tbWF4LXdpZHRoOiAxMzAwcHggIWRlZmF1bHQ7XG5cbiRtYWluLW1hcmdpbjogdmFyKC0tbWFpbi1tYXJnaW4pO1xuJHNpdGUtaGVhZGVyLWhlaWdodDogdmFyKC0tc2l0ZS1oZWFkZXItaGVpZ2h0KTtcblxuJHNpdGUtaGVhZGVyLW1hcmdpbjogdmFyKC0tc2l0ZS1oZWFkZXItbWFyZ2luKTtcblxuJHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodDogY2FsYygjeyRzaXRlLWhlYWRlci1oZWlnaHR9ICsgI3skc2l0ZS1oZWFkZXItbWFyZ2lufSk7XG4iLCIvKiBVbmlib2FyZDoga2VlcCB0aGUgc2FtZSBwYWdlIGxheW91dCBhY2Nyb3NzIHBhZ2VzICovXG5cbiRtcS1ib2FyZC1yZXNpemFibGU6ICRtcS1zbWFsbDtcbiRtcS1jb2wxLXVuaWJvYXJkOiAkbXEtbm90LXNtYWxsICRtcS1wb3J0cmFpdDtcbiRtcS1jb2wyLXVuaWJvYXJkOiAkbXEtc21hbGwsICRtcS1sYW5kc2NhcGU7XG4kbXEtY29sMy11bmlib2FyZDogJG1xLXgtbGFyZ2U7XG5cbi8qIHdoZW4gdGhlIHdpZHRoIGlzIGFwcHJvcHJpYXRlIGZvciBjb2wxLCBidXQgbGFuZHNjYXBlIHByZXZlbnRzIGl0ICovXG4kbXEtY29sMi11bmlib2FyZC1zcXVlZXplOiAkbXEtbm90LXNtYWxsICRtcS1sYW5kc2NhcGU7XG5cbiRjb2wzLXVuaWJvYXJkLXNpZGU6IG1pbm1heCgyMzBweCwgMjB2dyk7XG4kY29sMy11bmlib2FyZC10YWJsZTogbWlubWF4KDI0MHB4LCA0MDBweCk7XG4kY29sMy11bmlib2FyZC1jb250cm9sczogM3JlbTtcblxuJGNvbDMtdW5pYm9hcmQtbWluLXdpZHRoOiBjYWxjKDcwdm1pbiAqIHZhcigtLWJvYXJkLXNjYWxlKSk7XG4kY29sMy11bmlib2FyZC1tYXgtd2lkdGg6IGNhbGMoMTAwdmggKiB2YXIoLS1ib2FyZC1zY2FsZSkgLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMy11bmlib2FyZC1jb250cm9sc30pO1xuJGNvbDMtdW5pYm9hcmQtd2lkdGg6IG1pbm1heCgkY29sMy11bmlib2FyZC1taW4td2lkdGgsICRjb2wzLXVuaWJvYXJkLW1heC13aWR0aCk7XG5cbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtc2NhbGU6IDAuOTtcblxuLy8gem9vbTogODUlXG4kY29sMy11bmlib2FyZC1kZWZhdWx0LW1pbi13aWR0aDogNTAwcHg7XG4kY29sMy11bmlib2FyZC1kZWZhdWx0LW1heC13aWR0aDogY2FsYygxMDB2aCAqICN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1zY2FsZX0gLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMy11bmlib2FyZC1jb250cm9sc30pO1xuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aDogbWlubWF4KCN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1taW4td2lkdGh9LCAjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWF4LXdpZHRofSk7XG5cbiRjb2wyLXVuaWJvYXJkLXRhYmxlOiAkY29sMy11bmlib2FyZC10YWJsZTtcbiRjb2wyLXVuaWJvYXJkLWNvbnRyb2xzOiAkY29sMy11bmlib2FyZC1jb250cm9scztcbiRjb2wyLXVuaWJvYXJkLXdpZHRoOiAkY29sMy11bmlib2FyZC13aWR0aDtcbiRjb2wyLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg6ICRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg7XG5cbiRjb2wyLXVuaWJvYXJkLXNxdWVlemUtdGFibGU6IG1pbm1heCgyMDBweCwgMjQwcHgpO1xuJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS13aWR0aDogbWlubWF4KGNhbGMoNTV2bWluKSwgY2FsYygxMDB2aCAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRibG9jay1nYXB9KSk7XG5cbiRjb2wxLXVuaWJvYXJkLWNvbnRyb2xzOiAkY29sMi11bmlib2FyZC1jb250cm9scztcbiIsIkBtaXhpbiBib3gtcmFkaXVzIHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuQG1peGluIGJveC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAkYm94LXNoYWRvdztcbn1cblxuQG1peGluIGJveC1uZWF0IHtcbiAgQGluY2x1ZGUgYm94LXJhZGl1cztcbiAgQGluY2x1ZGUgYm94LXNoYWRvdztcbn1cblxuQG1peGluIGRlYnVnLXpvb20taW5wdXQge1xuICAjem9vbS1pbnB1dCB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXpvb20tZW5hYmxlZCkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBib3R0b206IDNweDtcbiAgICAgIHJpZ2h0OiAzcHg7XG4gICAgICB3aWR0aDogMTB2dztcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRyYW5zaXRpb24oJHByb3A6IGFsbCwgJGR1cjogJHRyYW5zaXRpb24tZHVyYXRpb24pIHtcbiAgdHJhbnNpdGlvbjogJHByb3AgJGR1cjtcbn1cblxuQG1peGluIGhvdmVyZmxvdyB7XG4gIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgLmJsaW5kLW1vZGUgJiB7XG4gICAgZGlzcGxheTogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gZWxsaXBzaXMge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuQG1peGluIGNyb3NzdGFibGUtbGFyZ2Uge1xuICAuY3Jvc3N0YWJsZV9fdXNlcnMge1xuICAgIGZsZXg6IDcgMSBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBjcm9zc3RhYmxlLXNtYWxsIHtcbiAgLmNyb3NzdGFibGVfX3VzZXJzIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxufVxuXG4vKiBhdG0gb25seSBjaHJvbWUgc3VwcG9ydHMgbWluLWNvbnRlbnQsIG1heC1jb250ZW50ICovXG5AbWl4aW4gcHJvcGVyLWdyaWQge1xuICBAc3VwcG9ydHMgKGhlaWdodDogbWF4LWNvbnRlbnQpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gYm9keS1maXhlZC1zY3JvbGwge1xuICBib2R5IHtcbiAgICAvKiBwcmV2ZW50cyBzY3JvbGwgYmFyIGZsaWNrZXIgd2hlbiBkcmFnZ2luZyBhIHBpZWNlIG91dCAqL1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgfVxufVxuIiwiJWJhc2UtZm9udC1mYWxsYmFjayB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJywgU2Fucy1TZXJpZjtcbn1cblxuJWJhc2UtZm9udCB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJztcbn1cblxuJXJvYm90byB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbn1cblxuJXJvYm90by1mYXQge1xuICBmb250LWZhbWlseTogJ1JvYm90byc7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbiVjaGVzcy1mb250IHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIENoZXNzJywgJ05vdG8gU2Fucyc7XG59XG5cbiVzYW4ge1xuICBAZXh0ZW5kICVjaGVzcy1mb250O1xuXG4gIC5waWVjZS1sZXR0ZXIgJiB7XG4gICAgQGV4dGVuZCAlYmFzZS1mb250O1xuICB9XG59XG5cbi8qIHRleHQgcHJpbnRlZCBkaXJlY3RseSBvbiB0aGUgcGFnZSBiYWNrZ3JvdW5kIGRlc2VydmVzIHNwZWNpYWwgdHJlYXRtZW50ICh0cmFuc3AgdGhlbWUpICovXG4lcGFnZS1mb250IHtcbiAgY29sb3I6ICRjLWZvbnQtcGFnZTtcbn1cblxuJXBhZ2UtdGV4dCB7XG4gIEBleHRlbmQgJXBhZ2UtZm9udCwgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xufVxuXG4lcGFnZS1saW5rIHtcbiAgQGV4dGVuZCAlcGFnZS1saW5rLWZvbnQgIW9wdGlvbmFsO1xuXG4gIEBleHRlbmQgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xufVxuXG4lbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbDtcbn1cblxuJW1ldGFsLWhvdmVyIHtcbiAgQGluY2x1ZGUgbWV0YWwtaG92ZXI7XG59XG5cbiVwYWdlLW1ldGFsIHtcbiAgQGluY2x1ZGUgcGFnZS1tZXRhbDtcbn1cblxuJXBhZ2UtbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBwYWdlLW1ldGFsO1xufVxuXG4lbWV0YWwtYmcge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcbn1cblxuJWFjdGl2ZS1pbnNldC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDNweCA0cHggaHNsYSgwLCAwLCAwLCAwLjE1KSBpbnNldDtcbn1cblxuJWFjdGl2ZSB7XG4gIEBleHRlbmQgJWFjdGl2ZS1pbnNldC1zaGFkb3c7XG5cbiAgYmFja2dyb3VuZDogI2JkMTExZjtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtc2hhZG93OiAxcHggMXB4IDFweCB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4jdHJhaW5lciBncm91cC5yYWRpbyBpbnB1dDpjaGVja2VkICsgbGFiZWx7XG4gIGJhY2tncm91bmQ6ICMwNDU2YmM7XG59XG5cbiVhY3RpdmUtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBtaXgod2hpdGUsICRjLWFjY2VudCwgMjAlKTtcbn1cblxuJWFjdGl2ZS1zb2Z0IHtcbiAgQGV4dGVuZCAlYWN0aXZlLWluc2V0LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAjMDQ1NmJjO1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMXB4ICRjLWZvbnQtc2hhZG93ICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4lZHJvcGRvd24tc2hhZG93IHtcbiAgYm94LXNoYWRvdzogLTFweCA1cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbn1cblxuJXBvcHVwLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMTRweCAyOHB4IHJnYmEoMCwgMCwgMCwgMC4yNSksIDAgMTBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yMik7XG59XG5cbiVidXR0b24tc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAycHggNXB4IDAgaHNsYSgwLCAwLCAwJSwgMC4yMjUpO1xufVxuXG4lYnV0dG9uLXJhaXNlZC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDRweCAxMHB4IDBweCBoc2xhKDAsIDAsIDAsIDAuMjI1KTtcbn1cblxuJWJ1dHRvbi1ub25lIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBjb2xvcjogJGMtZm9udDtcbn1cblxuJWNoZWNrYm94IHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICRjLWJnLXBhZ2U7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRjLWJnLWxvdztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAuNWVtO1xuXG4gICY6Y2hlY2tlZCB7XG4gICAgYmFja2dyb3VuZDogIzA0NTZiYztcbiAgICBib3JkZXItY29sb3I6ICMwNDU2YmM7XG4gIH1cbn1cblxuJWZvY3VzLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMCAxMnB4ICRjLWZvbnQtZGltO1xufVxuXG4lbm93cmFwLWhpZGRlbiB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbiVub3dyYXAtZWxsaXBzaXMge1xuICBAZXh0ZW5kICVlbGxpcHNpcztcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4lYm94LXBhZGRpbmcge1xuICBwYWRkaW5nOiA1dmggdmFyKC0tYm94LXBhZGRpbmcpO1xufVxuXG4lYm94LXBhZGRpbmctaG9yaXoge1xuICBwYWRkaW5nOiAwIHZhcigtLWJveC1wYWRkaW5nKTtcbn1cblxuJWJyZWFrLXdvcmQge1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG4lYnJlYWstd29yZC1oYXJkIHtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xuXG4gIC8qIHN1cHBvcnQ6IGZpcmVmb3ggKi9cbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cblxuJWJyZWFrLW5vcGUge1xuICBvdmVyZmxvdy13cmFwOiBub3JtYWw7XG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcbn1cblxuJWVsbGlwc2lzIHtcbiAgQGluY2x1ZGUgZWxsaXBzaXM7XG59XG5cbiVzcXVhcmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cblxuJXZpZGVvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwO1xuICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlO1xuXG4gIC8qIDE2LzkgKi9cbiAgLy8gcGFkZGluZy1ib3R0b206IDc1JTsgLyogNC8zICovXG4gIHdpZHRoOiAxMDAlO1xuXG4gID4gKiB7XG4gICAgQGV4dGVuZCAlYWJzLTEwMDtcblxuICAgIGJvcmRlcjogbm9uZTtcbiAgfVxufVxuXG4lZGF0YS1pY29uIHtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZm9udC1mYW1pbHk6ICdsaWNoZXNzJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgc3BlYWs6IG5vbmU7XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1pY29uKTtcbiAgb3BhY2l0eTogMC45O1xufVxuXG4lZGF0YS1pY29uLXRvcCB7XG4gICY6OmJlZm9yZSB7XG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xuICB9XG59XG5cbiVmdWxsc2NyZWVuLW1hc2sge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZDogJGMtcGFnZS1tYXNrO1xuICB6LWluZGV4OiB6KFwiZnVsbHNjcmVlbi1tYXNrXCIpO1xufVxuXG4lbGluay1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6IHooXCJsaW5rLW92ZXJsYXlcIik7XG59XG5cbiVhYnMtMTAwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuIiwiJWZsZXgtd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG59XG5cbiVmbGV4LWNlbnRlciB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtd3JhcCAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1jZW50ZXItbm93cmFwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1iZXR3ZWVuIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLW5vd3JhcCB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLXN0cmV0Y2gge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xufVxuXG4lZmxleC1hcm91bmQge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbn1cblxuJWZsZXgtY29sdW1uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW47XG59XG4iLCIlYm94LXJhZGl1cyB7XG4gIEBpbmNsdWRlIGJveC1yYWRpdXM7XG59XG5cbiVib3gtcmFkaXVzLWZvcmNlIHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC8qIGhlbHBzIHdpdGggY2xpcHBpbmcgYmFja2dyb3VuZCBpbnRvIGJvcmRlci1yYWRpdXMgKi9cbn1cblxuJWJveC1yYWRpdXMtbGVmdCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgMCAwICRib3gtcmFkaXVzLXNpemU7XG59XG5cbiVib3gtcmFkaXVzLXJpZ2h0IHtcbiAgYm9yZGVyLXJhZGl1czogMCAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemUgMDtcbn1cblxuJWJveC1yYWRpdXMtdG9wIHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplIDAgMDtcbn1cblxuJWJveC1yYWRpdXMtYm90dG9tIHtcbiAgYm9yZGVyLXJhZGl1czogMCAwICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuJWJveC1yYWRpdXMtdG9wLWxlZnQge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplIDAgMCAwO1xufVxuXG4lYm94LXJhZGl1cy10b3AtcmlnaHQge1xuICBib3JkZXItcmFkaXVzOiAwICRib3gtcmFkaXVzLXNpemUgMCAwO1xufVxuXG4lYm94LXNoYWRvdyB7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3c7XG59XG5cbiVib3gtbmVhdCB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzO1xufVxuXG4lYm94LW5lYXQtdG9wIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXMtdG9wO1xufVxuXG4lYm94LW5lYXQtZm9yY2Uge1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cy1mb3JjZTtcbn1cbiIsIiR2cC1taW4td2lkdGg6IDMyMHB4ICFkZWZhdWx0O1xuJHZwLW1heC13aWR0aDogMTIwMHB4ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkdmFsdWUpIHtcbiAgQHJldHVybiAkdmFsdWUgLyAoJHZhbHVlICogMCArIDEpO1xufVxuXG5AbWl4aW4gZmx1aWQtc2l6ZSgkcHJvcCwgJG1pbi1zaXplLCAkbWF4LXNpemUsICRtaW4tdnc6ICR2cC1taW4td2lkdGgsICRtYXgtdnc6ICR2cC1tYXgtd2lkdGgpIHtcbiAgJHUxOiB1bml0KCRtaW4tdncpO1xuICAkdTI6IHVuaXQoJG1heC12dyk7XG4gICR1MzogdW5pdCgkbWluLXNpemUpO1xuICAkdTQ6IHVuaXQoJG1heC1zaXplKTtcblxuICBAaWYgJHUxID09ICR1MiBhbmQgJHUxID09ICR1MyBhbmQgJHUxID09ICR1NCB7XG4gICAgJiB7XG4gICAgICAjeyRwcm9wfTogJG1pbi1zaXplO1xuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbi12dykge1xuICAgICAgICAjeyRwcm9wfTogY2FsYygjeyRtaW4tc2l6ZX0gKyAje3N0cmlwLXVuaXQoJG1heC1zaXplIC0gJG1pbi1zaXplKX0gKiAoKDEwMHZ3IC0gI3skbWluLXZ3fSkgLyAje3N0cmlwLXVuaXQoJG1heC12dyAtICRtaW4tdncpfSkpO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1heC12dykge1xuICAgICAgICAjeyRwcm9wfTogJG1heC1zaXplO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGVycm9yIFwiZmx1aWQtc2l6ZSByZXF1aXJlcyB0aGF0IGFsbCB2YWx1ZXMgaGF2ZSB0aGUgc2FtZSB1bml0XCI7XG4gIH1cbn1cbiIsIi5ub3ctcGxheWluZyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIC0tbnAtbWluLXdpZHRoOiAyMDBweDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteHgtc21hbGwpIHtcbiAgICAtLW5wLW1pbi13aWR0aDogNTAlO1xuICB9XG5cblxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCh2YXIoLS1ucC1taW4td2lkdGgpLCAxZnIpKTtcblxuICA+IGEge1xuICAgIGNvbG9yOiAkYy1mb250O1xuICAgIHBhZGRpbmc6IC4zZW07XG4gIH1cblxuICAuaW5kaWNhdG9yIHtcbiAgICBjb2xvcjogJGMtYWNjZW50O1xuICAgIG1hcmdpbi10b3A6IC0zcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICBjZy1ib2FyZCB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxufVxuIiwiLmNvbG9yLWljb24ge1xuICBAaWYgJHRoZW1lLWxpZ2h0IHtcbiAgICAmLndoaXRlOjpiZWZvcmUge1xuICAgICAgY29udGVudDogXCJLXCI7XG4gICAgfVxuXG4gICAgJi5ibGFjazo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiSlwiO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJi53aGl0ZTo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiSlwiO1xuICAgIH1cblxuICAgICYuYmxhY2s6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIktcIjtcbiAgICB9XG4gIH1cblxuICAmLnJhbmRvbTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcImxcIjtcbiAgfVxufVxuIiwiQGtleWZyYW1lcyBnbG93aW5nIHtcbiAgNDIlIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG5cbiAgNTAlIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtbGluaywgJGMtYmctYm94LCAyMCUpO1xuICB9XG5cbiAgNTglIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG59XG5cbi5nbG93aW5nIHtcbiAgYW5pbWF0aW9uOiBnbG93aW5nIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuIiwiJGMtdGFicy1hY3RpdmU6ICRjLWFjY2VudCAhZGVmYXVsdDtcblxuLnRhYnMtaG9yaXoge1xuICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXAsICVwYWdlLXRleHQ7XG5cbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRjLWJvcmRlcjtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteHgtc21hbGwpIHtcbiAgICBmb250LXNpemU6IC45ZW07XG4gIH1cblxuXG4gIHNwYW4ge1xuICAgIEBleHRlbmQgJXJvYm90bztcblxuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAuNWVtIC4yZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oY29sb3IsIDAuMjVzKTtcblxuICAgIG1pbi13aWR0aDogMTUlO1xuICAgIGxldHRlci1zcGFjaW5nOiAtLjVweDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXh4LXNtYWxsKSB7XG4gICAgICBsZXR0ZXItc3BhY2luZzogaW5oZXJpdDtcbiAgICB9XG5cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgYmFja2dyb3VuZDogI2JkMTExZjtcbiAgICAgIGhlaWdodDogMnB4O1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IDk2JTtcbiAgICAgIGxlZnQ6IDIlO1xuICAgICAgYm90dG9tOiAtMnB4O1xuXG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgMC4yNXMpO1xuXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgIH1cblxuICAgICYuYWN0aXZlLFxuICAgICY6aG92ZXIge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuYWN0aXZlIHtcbiAgICAgIGNvbG9yOiAjYmQxMTFmO1xuICAgIH1cbiAgfVxuXG4gIC51bnJlYWQge1xuICAgIG1hcmdpbi1sZWZ0OiAuM2VtO1xuICB9XG59XG4iLCJib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXIsXG5ib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHtcbiAgd2lkdGg6IC41cmVtO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG59XG5cbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xufVxuXG5ib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIsXG5ib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6YWN0aXZlIHtcbiAgYmFja2dyb3VuZDogJGMtZm9udC1kaW1tZXI7XG59XG4iLCJAaW1wb3J0IFwibGF5b3V0XCI7XG5AaW1wb3J0IFwiYXBwL2FwcFwiO1xuQGltcG9ydCBcInRhYmxlXCI7XG5AaW1wb3J0IFwic3RyZWFtXCI7XG5AaW1wb3J0IFwic3BvdGxpZ2h0XCI7XG5AaW1wb3J0IFwidGltZWxpbmVcIjtcbkBpbXBvcnQgXCJib3hcIjtcbkBpbXBvcnQgXCJmb3J1bVwiO1xuQGltcG9ydCBcImJsb2dcIjtcbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5AaW1wb3J0IFwiYWJvdXRcIjtcblxuYm9keSB7XG4gIC8qIGltcHJvdmVzIHByZWxvYWQgKi9cbiAgb3ZlcmZsb3cteTogc2Nyb2xsO1xufVxuXG4jbWFpbi13cmFwIHtcbiAgLS1tYWluLW1heC13aWR0aDogMTQwMHB4O1xufVxuXG4lbG9iYnlfX3NpZGVfX21vcmUge1xuICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgZm9udC1zaXplOiAuOWVtO1xuICBtYXJnaW46IC41ZW0gMWVtIC41ZW0gMDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICBjb2xvcjogJGMtZm9udC1kaW07XG5cbiAgJjpob3ZlciB7XG4gICAgY29sb3I6ICRjLWxpbms7XG4gIH1cbn1cblxuLmxvYmJ5X19zaWRlIHtcbiAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmxvYmJ5X19ub3BlIHtcbiAgQGluY2x1ZGUgbG9iYnktYXBwLXNpemU7XG5cbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gIC5sb2JieV9fYXBwX19jb250ZW50IHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIGhlaWdodDogMTAwJTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmctdG9wOiAyZW07XG4gIH1cblxuICB1bCB7XG4gICAgbWFyZ2luOiAuNmVtIGF1dG87XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gIH1cblxuICBsaSB7XG4gICAgbGlzdC1zdHlsZTogZGlzYyBvdXRzaWRlO1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gIH1cbn1cblxuLmdhbWUtc2V0dXAge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uYWJvdXQtc2lkZSB7XG4gIG1hcmdpbi10b3A6ICRibG9jay1nYXA7XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW5vdC1jb2wzKSB7XG4gIC5hYm91dC1zaWRlLCAubG9iYnlfX3N0cmVhbXMsIC5sb2JieV9fYWJvdXQge1xuICAgIG1hcmdpbi1sZWZ0OiAkYmxvY2stZ2FwO1xuICB9XG59XG5cbi5sb2JieV9fdHYgLm1pbmktZ2FtZSB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuLmxvYmJ5X19wdXp6bGUge1xuICAudGV4dCB7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIG1hcmdpbi1yaWdodDogMWNoO1xuICB9XG59XG5cbi5ub3ctcGxheWluZyB7XG5cbiAgLm1ldGEge1xuICAgIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxufVxuIiwiJG1xLWNvbDI6ICRtcS14eC1zbWFsbDtcbiRtcS1jb2wzOiAkbXEtc21hbGw7XG4kbXEtY29sNDogJG1xLXgtbGFyZ2U7XG5cbiRtcS1ub3QtY29sMzogJG1xLW5vdC1zbWFsbDtcblxuQG1peGluIGxvYmJ5LWFwcC1zaXplIHtcbiAgbWluLWhlaWdodDogMzAwcHg7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIG1pbi1oZWlnaHQ6IDQwMHB4O1xuICB9XG5cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wzKSB7XG4gICAgaGVpZ2h0OiA2MDBweDtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGJsb2NrLWdhcH0pO1xuICB9XG59XG5cbi5sb2JieSB7XG4gIGdyaWQtYXJlYTogbWFpbjtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ2FwcCcgJ3RhYmxlJyAnc2lkZScgJ2Jsb2cnICd0dicgJ3B1enpsZScgJ2xlYWRlcicgJ3dpbm5lcicgJ3RvdXJzJyAnc2ltdWxzJyAnZm9ydW0nICdzdXBwb3J0JyAnYWJvdXQnICcuJztcbiAgZ3JpZC1nYXA6ICRibG9jay1nYXA7XG5cbiAgJl9fY291bnRlcnMge1xuICAgIG1hcmdpbi10b3A6ICRibG9jay1nYXA7XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gcmVwZWF0KDMsIGZpdC1jb250ZW50KDApKTtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiAndGFibGUgIHRhYmxlJyAnYXBwICAgIGFwcCcgJ3NpZGUgICB0dicgJ3NpZGUgICBwdXp6bGUnICdibG9nICAgYmxvZycgJ2xlYWRlciB3aW5uZXInICd0b3VycyAgdG91cnMnICdzaW11bHMgc2ltdWxzJyAnZm9ydW0gIGZvcnVtJyAnYWJvdXQgIHN1cHBvcnQnO1xuICB9XG5cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wzKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDEyZW0gcmVwZWF0KDIsIGZpdC1jb250ZW50KDApKTtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiAndGFibGUgICBhcHAgICAgIGFwcCcgJ3NpZGUgICAgYXBwICAgICBhcHAnICd0diAgICAgIGxlYWRlciAgd2lubmVyJyAncHV6emxlICB0b3VycyAgIHRvdXJzJyAnc3VwcG9ydCBibG9nICAgIGJsb2cgJyAnYWJvdXQgICBzaW11bHMgIHNpbXVscycgJy4gZm9ydW0gZm9ydW0gJztcblxuICAgICZfX3N0YXJ0IHtcbiAgICAgIGZsZXgtZmxvdzogY29sdW1uO1xuICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAmX19jb3VudGVycyB7XG4gICAgICBtYXJnaW46ICN7JGJsb2NrLWdhcCAvIDN9IDAgI3skYmxvY2stZ2FwIC8gLTN9IDA7XG4gICAgfVxuXG4gICAgLnRpbWVsaW5lIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbiAgfVxuXG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sNCkge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcik7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoMiwgZml0LWNvbnRlbnQoMCkpO1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdzaWRlICAgYXBwICAgICBhcHAgICAgdGFibGUnICd0diAgICAgbGVhZGVyICB3aW5uZXIgcHV6emxlJyAnYWJvdXQgIGJsb2cgICAgYmxvZyAgIHN1cHBvcnQnICcuICAgICAgdG91cnMgICB0b3VycyAgLicgJy4gICAgICBzaW11bHMgIHNpbXVscyAuJyAnLiAgICAgIGZvcnVtICAgZm9ydW0gIC4nO1xuXG4gICAgJl9fdG91cm5hbWVudHMsXG4gICAgJl9fc2ltdWxzIHtcbiAgICAgIG1heC1oZWlnaHQ6IDIwZW07XG4gICAgfVxuXG4gICAgJl9fc2lkZSB7XG4gICAgICBtYXJnaW4tdG9wOiAyZW07XG4gICAgfVxuXG4gICAgJl9fY291bnRlcnMge1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgfVxuXG5cbiAgJl9fc2lkZSB7XG4gICAgZ3JpZC1hcmVhOiBzaWRlO1xuICB9XG5cbiAgJl9fYXBwLFxuICAmX19ub3BlIHtcbiAgICBncmlkLWFyZWE6IGFwcDtcbiAgfVxuXG4gICZfX3RhYmxlIHtcbiAgICBncmlkLWFyZWE6IHRhYmxlO1xuICB9XG5cbiAgJl9fdHYge1xuICAgIGdyaWQtYXJlYTogdHY7XG4gIH1cblxuICAmX19sZWFkZXJib2FyZCB7XG4gICAgZ3JpZC1hcmVhOiBsZWFkZXI7XG4gIH1cblxuICAmX193aW5uZXJzIHtcbiAgICBncmlkLWFyZWE6IHdpbm5lcjtcbiAgfVxuXG4gICZfX3B1enpsZSB7XG4gICAgZ3JpZC1hcmVhOiBwdXp6bGU7XG4gIH1cblxuICAmX190b3VybmFtZW50cyB7XG4gICAgZ3JpZC1hcmVhOiB0b3VycztcbiAgfVxuXG4gICZfX3NpbXVscyB7XG4gICAgZ3JpZC1hcmVhOiBzaW11bHM7XG4gIH1cblxuICAmX19mb3J1bSB7XG4gICAgZ3JpZC1hcmVhOiBmb3J1bTtcbiAgfVxuXG4gICZfX2Jsb2cge1xuICAgIGdyaWQtYXJlYTogYmxvZztcbiAgfVxuXG4gICZfX3N1cHBvcnQge1xuICAgIGdyaWQtYXJlYTogc3VwcG9ydDtcbiAgfVxuXG4gICZfX2Fib3V0IHtcbiAgICBncmlkLWFyZWE6IGFib3V0O1xuICB9XG59XG4iLCJAaW1wb3J0IFwicG9vbFwiO1xuQGltcG9ydCBcImhvb2stY2hhcnRcIjtcbkBpbXBvcnQgXCJob29rLWxpc3RcIjtcblxuLmxvYmJ5X19hcHAge1xuICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICBAaW5jbHVkZSBsb2JieS1hcHAtc2l6ZTtcblxuICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAubG9iYnktbm9wZSAmIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgJl9fY29udGVudCB7XG4gICAgQGV4dGVuZCAlYm94LW5lYXQ7XG5cbiAgICBmbGV4OiAxIDEgMTAwJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICBAaWYgJHRoZW1lID09IFwidHJhbnNwXCIge1xuICAgICAgYmFja2dyb3VuZDogZmFkZS1vdXQoJGMtYmctYm94LCAwLjIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkbG9nby1jb2xvcjogXCJkYWRhZGFcIjtcblxuICAgICAgQGlmICR0aGVtZS1kYXJrIHtcbiAgICAgICAgJGxvZ28tY29sb3I6IFwiMzgzNjMzXCI7XG4gICAgICB9XG5cbiAgICAgIGJhY2tncm91bmQ6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgZGF0YS1uYW1lPSfQodC70L7QuSAxJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA2MDAgNjAwJyUzRSUzQ3BhdGggZD0nTTMxMC42NyAxODkuNDRoLTIxLjM0QzI2MC45MyAxMDIgMTc4Ljg3IDM4Ljg0IDgyIDM4Ljg0djUyMi4zMmg0MzZWMzguODRjLTk2Ljg3IDAtMTc4LjkzIDYzLjE2LTIwNy4zMyAxNTAuNnptNzIuMTkgMzYxLjA4SDIxOC4zN2MtOS44NSAwLTguODMtMTMuOTIgMC0xNC40czEyLjc2LTEwLjg3IDExLjc4LTE3LjMzYzguMjgtNC41IDMxLjktMjkuMTkgMzcuMTUtNjQuMTguNDEtMi43OS0yLjgxLTEwLjctMS45NS0xMy42NSAxLTMuNDYgNy4zNS03IDguMTQtMTEuNzMgNS40OC0zMy4yNCA0Ljg3LTQyLjk0IDQuNzMtNjAuMzgtLjA1LTUuODctMi40OS04LjI5LTcuODMtMTAuNDZzLTE3LjA5LTMuMzktMjQuNzEtNi4wOWMtNi44Mi0yLjQyLTcuMDctOC40My0uMjctMTEuODFzMzUuODYtOS40NSAzNy4xNy0yOC45NGMxLTE1LjUtMTMuMTktMzQuMi0xNS4xOC0zOC4yNi0yLjQ4LTUuMDUuODgtOS4xNSA3LjMtMTIuMTggNi44NC0zLjY5IDEyLjIzLTQgMTYuMTEtNi45MiA0LjYtMy40OCAzLjg4LTEyLjk0IDMuODktMTcuODFoLTYuOTJ2LTExLjgyaDYuODJ2LTYuOTJoMTJ2Ni45Mmg2LjgydjExLjgyaC02LjkxYzAgNC44Ny0uNzIgMTQuMzMgMy44OCAxNy44MSAzLjg4IDIuOTQgOS4yNyAzLjIzIDE2LjEyIDYuOTIgNi40MSAzIDkuNzcgNy4xMyA3LjI5IDEyLjE4LTIgNC4wNi0xNi4yMiAyMi43Ni0xNS4xOCAzOC4yNkMzMjAgMzMxIDM0OSAzMzcuMDkgMzU1LjgzIDM0MC40OXM2LjU0IDkuMzktLjI4IDExLjgxYy03LjYyIDIuNy0xOS40NiA0LTI0LjcxIDYuMDlzLTcuNzcgNC42MS03Ljg0IDEwLjQ2Yy0uMTUgMTcuNDQtLjc2IDI3LjE0IDQuNzMgNjAuMzguNzggNC43NSA3LjEzIDguMjcgOC4xNCAxMS43My44NSAzLTIuMzcgMTAuODYtMS45NSAxMy42NSA1LjI0IDM1IDI4Ljg2IDU5LjY4IDM3LjE0IDY0LjE4LTEgNi40NiAyLjk1IDE2Ljg0IDExLjc4IDE3LjMzczkuODggMTQuNC4wMiAxNC40eicgZmlsbD0nJTIzZTZlNmU2Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuICAgIH1cblxuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICB9XG5cbiAgLmxyZWRpciB7XG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAuc3Bpbm5lciB7XG4gICAgICB3aWR0aDogMTAwcHg7XG4gICAgICBoZWlnaHQ6IDEwMHB4O1xuICAgIH1cbiAgfVxuXG4gIC50b2dnbGUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBwYWRkaW5nOiAuNmVtO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB6LWluZGV4OiAyO1xuICAgIGZvbnQtc2l6ZTogMS4zZW07XG5cbiAgICAmLnRvZ2dsZS1maWx0ZXIge1xuICAgICAgcmlnaHQ6IDA7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICNiZDExMWY7XG4gICAgfVxuICB9XG5cbiAgLmdhbWVzRmlsdGVyZWQge1xuICAgIGNvbG9yOiAkYy1hY2NlbnQ7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGMtYWNjZW50LWRpbTtcbiAgICB9XG4gIH1cbn1cbiIsIi5sb2JieV9fYXBwLXBvb2xzIHtcbiAgaGVpZ2h0OiAzMDBweDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgaGVpZ2h0OiA0MDBweDtcbiAgfVxufVxuXG4ubHBvb2xzIHtcbiAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XG4gIGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0KDQsIDFmcik7XG4gIGdyaWQtZ2FwOiA5cHg7XG4gIHBhZGRpbmc6IDlweDtcblxuICBAaW5jbHVkZSBmbHVpZC1zaXplKFwiZm9udC1zaXplXCIsIDE0cHgsIDI1cHgpO1xuXG4gID4gZGl2IHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbiwgJWJveC1yYWRpdXMsICVicmVhay13b3JkO1xuXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyOiAkYm9yZGVyO1xuXG4gICAgQGlmICR0aGVtZS1saWdodCB7XG4gICAgICBiYWNrZ3JvdW5kOiBmYWRlLW91dCgkYy1iZy1ib3gsIDAuNSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGJhY2tncm91bmQ6IGZhZGUtb3V0KCRjLWZvbnQsIDAuOTUpO1xuICAgIH1cblxuICAgIGNvbG9yOiAkYy1mb250O1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogaHNsYSgzNTUsIDgzJSwgNDAlLCAwLjIpO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICAuYWN0aXZlIHtcbiAgICBAZXh0ZW5kICVwb3B1cC1zaGFkb3c7XG5cbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1wb3B1cDtcblxuICAgIC5wZXJmIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLnRyYW5zcCB7XG4gICAgb3BhY2l0eTogMC40O1xuICB9XG5cbiAgLnNwaW5uZXIge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIG1hcmdpbjogLjFlbSAwIC42ZW0gMDtcbiAgICB3aWR0aDogMmVtO1xuICAgIGhlaWdodDogMmVtO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG5cbiAgLmNsb2NrIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDEuNWVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjZlbTtcbiAgICBsZXR0ZXItc3BhY2luZzogLjFlbTtcbiAgfVxufVxuIiwiLmhvb2tzX19jaGFydCB7XG4gIEBleHRlbmQgJWFicy0xMDA7XG5cbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAubGFiZWwge1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICBmb250LXNpemU6IC43ZW07XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDNweDtcbiAgICBib3R0b206IDFweDtcbiAgICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB9XG5cbiAgLmdyaWQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIGJvdHRvbTogMDtcblxuICAgICYuaG9yaXoge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkICRjLWJvcmRlcjtcbiAgICB9XG5cbiAgICAmLnZlcnQge1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggZGFzaGVkICRjLWJvcmRlcjtcbiAgICB9XG4gIH1cblxuICAuY2FudmFzIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgLnBsb3Qge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgei1pbmRleDogMztcbiAgICBmb250LXNpemU6IDEuNmVtO1xuICAgIG9wYWNpdHk6IC43O1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG5cbiAgICAmLnJhdGVkIHtcbiAgICAgIG9wYWNpdHk6IDAuOTtcbiAgICAgIGNvbG9yOiAkYy1icmFnO1xuICAgIH1cblxuICAgICYuY2FuY2VsIHtcbiAgICAgIG9wYWNpdHk6IDAuOTtcbiAgICAgIGNvbG9yOiAkYy1nb29kO1xuICAgIH1cblxuICAgICYubmV3IHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtN3B4KTtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICB6LWluZGV4OiAyO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xNSk7XG4gICAgfVxuICB9XG59XG5cbiNob29rIHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cy1mb3JjZSwgJXBvcHVwLXNoYWRvdztcblxuICBkaXNwbGF5OiBub25lO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogeihcInBvd2VydGlwXCIpO1xuXG4gIC5pbm5lciB7XG4gICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAmLWNsaWNrYWJsZSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBwYWRkaW5nOiA1cHggMDtcbiAgICB9XG4gIH1cblxuICAub3Bwb25lbnQge1xuICAgIEBleHRlbmQgJW1ldGFsO1xuXG4gICAgbWluLXdpZHRoOiAxMjBweDtcbiAgICBwYWRkaW5nOiAuNWVtIC43ZW07XG4gIH1cbn1cbiIsIi5ob29rc19fbGlzdCB7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIHRyIHtcbiAgICAmLmRpc2FibGVkIHtcbiAgICAgIG9wYWNpdHk6IDAuNDtcblxuICAgICAgdGQge1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgICYuY2FuY2VsIHRkIHtcbiAgICAgIGJhY2tncm91bmQ6IGZhZGUtb3V0KCRjLXNlY29uZGFyeSwgMC42KTtcbiAgICB9XG5cbiAgICAmLmpvaW46aG92ZXIgdGQge1xuICAgICAgYmFja2dyb3VuZDogZmFkZS1vdXQoJGMtYWNjZW50LCAwLjUpO1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuXG4gICAgJjpub3QoLmRpc2FibGVkKTpob3ZlciA6OmJlZm9yZSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgICYudmFyaWFudHMgdGQge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgcGFkZGluZzogM3B4IDA7XG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAzcHg7XG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgfVxuICB9XG5cbiAgdGgge1xuICAgIEBleHRlbmQgJXJvYm90bztcblxuICAgIHBhZGRpbmc6IDFlbTtcblxuICAgICYuc29ydGFibGUge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgICYuc29ydGFibGU6aG92ZXIsXG4gICAgJi5zb3J0IHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgfVxuXG4gICAgJi5zb3J0IC5pczpiZWZvcmUge1xuICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAzcHg7XG4gICAgICBjb250ZW50OiBcIlJcIjtcbiAgICB9XG5cbiAgICAmLnBsYXllciB7XG4gICAgICB3aWR0aDogMTEwcHg7XG4gICAgfVxuICB9XG5cbiAgdGQge1xuICAgIEBleHRlbmQgJW5vd3JhcC1oaWRkZW47XG5cbiAgICBwYWRkaW5nOiAuNWVtIC43ZW07XG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYmFja2dyb3VuZDogZmFkZS1vdXQoJGMtYmctYm94LCAwLjUpO1xuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICB3aWR0aDogMTZweDtcbiAgICB9XG5cbiAgICAmOmZpcnN0LWNoaWxkIDo6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCA6OmJlZm9yZSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAwLjk7XG4gICAgICBmb250LXNpemU6IDEuNmVtO1xuICAgIH1cblxuICAgIDo6YmVmb3JlIHtcbiAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICB9XG4gIH1cblxuICB0Ym9keS5zdGVwcGluZyB7XG4gICAgb3BhY2l0eTogMC43O1xuICB9XG59XG5cbi5sc2Vla3MgLmNyZWF0ZSB7XG4gIG1hcmdpbi10b3A6IDIwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbiIsIi5sb2JieSB7XG4gICZfX3RhYmxlIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gICZfX3N0YXJ0IHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIGp1c3RpZnktY29udGVudDogc3RyZXRjaDtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBtYXJnaW46IDAgMWVtIDAgMWVtO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgICAgbWFyZ2luOiAyZW0gMCAwIDA7XG4gICAgfVxuXG5cbiAgICBhIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBtYXJnaW46IC4yZW0gMDtcbiAgICAgIHBhZGRpbmc6IC41ZW07XG5cbiAgICAgICYuZGlzYWJsZWQge1xuICAgICAgICBvcGFjaXR5OiAwLjI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sNCkge1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgIGEge1xuICAgICAgICBtYXJnaW46IDEuMmVtIDA7XG4gICAgICAgIHBhZGRpbmc6IDFlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmX19jb3VudGVycyB7XG4gICAgQGV4dGVuZCAlZmxleC1iZXR3ZWVuLCAlcGFnZS10ZXh0O1xuXG4gICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgcGFkZGluZzogJGJsb2NrLWdhcCAjeyRibG9jay1nYXAgKiAyfTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDMpIHtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sNCkge1xuICAgICAgZmxleC1mbG93OiBjb2x1bW47XG4gICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogMDtcbiAgICB9XG5cblxuICAgIGEge1xuICAgICAgY29sb3I6ICRjLWZvbnQtcGFnZTtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb2xvcik7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJGMtbGluaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5sb2JieV9fc3RyZWFtcyB7XG4gIC5zdHJlYW0ge1xuICAgIEBleHRlbmQgJXJvYm90bywgJW5vd3JhcC1lbGxpcHNpcywgJXBhZ2UtdGV4dDtcblxuICAgIGNvbG9yOiAkYy1mb250LXBhZ2U7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTogLjVlbTtcbiAgICBsaW5lLWhlaWdodDogLjk7XG5cbiAgICBzdHJvbmcge1xuICAgICAgQGV4dGVuZCAlYmFzZS1mb250O1xuICAgIH1cblxuICAgICYuaGlnaGxpZ2h0IHN0cm9uZyB7XG4gICAgICBjb2xvcjogJGMtYnJhZztcbiAgICB9XG5cbiAgICBzdHJvbmc6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgICBtYXJnaW4tcmlnaHQ6IC4xcmVtO1xuICAgIH1cbiAgfVxuXG4gIC5tb3JlIHtcbiAgICBAZXh0ZW5kICVsb2JieV9fc2lkZV9fbW9yZTtcbiAgfVxufVxuIiwiLmxvYmJ5X19zcG90bGlnaHRzIHtcbiAgQGV4dGVuZCAlYm94LW5lYXQtZm9yY2U7XG5cbiAgZmxleDogMCAwIGF1dG87XG59XG5cbi50b3VyLXNwb3RsaWdodCB7XG4gIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcCwgJW5vd3JhcC1oaWRkZW47XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIG1peCgjMWI3OGQwLCBoc2woMCwgMCUsIDEwMCUpLCAyMCUpIDAlLCBtaXgoIzFiNzhkMCwgaHNsKDAsIDAlLCA5NCUpLCAyMCUpIDEwMCUpO1xuICBmbGV4OiAwIDAgYXV0bztcbiAgcGFkZGluZzogLjNlbTtcbiAgb3BhY2l0eTogMC44O1xuXG4gIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgdGV4dC1zaGFkb3c6ICR0ZXh0LXNoYWRvdztcbiAgY29sb3I6ICM0ZDRkNGQ7XG5cbiAgJi5pbnZlcnQsXG4gICYuZXZlbnQtc3BvdGxpZ2h0LFxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBtaXgoIzFiNzhkMCwgI2ZmZiwgMjUlKSAwJSwgbWl4KCMxYjc4ZDAsIGMtbGlnaHQoI0YwRjJGNCwgOTAlKSwgMjUlKSAxMDAlKTtcbiAgICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6YWN0aXZlLFxuICAmOmZvY3VzIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGNvbG9yOiAjMWI3OGQwO1xuICB9XG5cbiAgLmltZyB7XG4gICAgZmxleDogMCAwIDUwcHg7XG4gICAgbWFyZ2luOiAwIC41ZW0gMCAuM2VtO1xuICB9XG5cbiAgaW1nLmltZyB7XG4gICAgd2lkdGg6IDQwcHg7XG4gIH1cblxuICBpLmltZyxcbiAgLmltZy5pY29uIHtcbiAgICBtYXJnaW46IDAgNXB4IDAgMDtcbiAgfVxuXG4gIGkuaW1nOjpiZWZvcmUge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGZvbnQtc2l6ZTogNTBweDtcblxuICAgIEBpZiAkdGhlbWUtbGlnaHQge1xuICAgICAgdGV4dC1zaGFkb3c6IDFweCAxcHggMnB4ICMxYjc4ZDA7XG4gICAgfVxuICB9XG5cbiAgLm5hbWUge1xuICAgIG1hcmdpbi10b3A6IDFweDtcbiAgICBsaW5lLWhlaWdodDogMTNweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIC5oZWFkbGluZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiAuODVlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAtM3B4O1xuICB9XG5cbiAgLm1vcmUge1xuICAgIGZvbnQtc2l6ZTogLjg1ZW07XG5cbiAgICB0aW1lIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAzcHg7XG4gICAgfVxuICB9XG5cbiAgJi5saXR0bGUge1xuICAgIC5pbWcge1xuICAgICAgZmxleDogMCAwIDQwcHg7XG4gICAgICBtYXJnaW46IDAgLjVlbSAwIC4zZW07XG5cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogNDBweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi50aW1lbGluZSB7XG4gIEBleHRlbmQgJXBhZ2UtdGV4dDtcblxuICBmbGV4OiAxIDEgYXV0bztcbiAgbWFyZ2luOiAxZW0gMCAwICRibG9jay1nYXA7XG5cbiAgQGluY2x1ZGUgaG92ZXJmbG93O1xuXG4gIC5lbnRyeSB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgYSB7XG4gICAgICBAZXh0ZW5kICViYXNlLWZvbnQsICVwYWdlLWZvbnQ7XG4gICAgfVxuXG4gICAgJjpob3ZlciBhIHtcbiAgICAgIGNvbG9yOiAkYy1saW5rO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMXB4O1xuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGxlZnQsICRjLWJvcmRlciAyMCUsICRjLWJnLXBhZ2UpO1xuICAgICAgbWFyZ2luOiAuN2VtIDA7XG4gICAgfVxuICB9XG5cbiAgLm1vcmUge1xuICAgIEBleHRlbmQgJWxvYmJ5X19zaWRlX19tb3JlO1xuICB9XG59XG4iLCIubG9iYnkge1xuICAmX19ib3gge1xuICAgIEBleHRlbmQgJWZsZXgtY29sdW1uLCAlYm94LW5lYXQtZm9yY2U7XG5cbiAgICAmX190b3Age1xuICAgICAgQGV4dGVuZCAlbWV0YWwsICVmbGV4LWJldHdlZW47XG5cbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgcGFkZGluZzogLjNlbSAuNWVtO1xuXG4gICAgICAubW9yZSB7XG4gICAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcblxuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIGNvbG9yOiAkYy1saW5rO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC50aXRsZSB7XG4gICAgICAgIEBleHRlbmQgJWJhc2UtZm9udDtcblxuICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgICAgcGFkZGluZzogLjNlbTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX19jb250ZW50IHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgfVxuXG4gICAgLnVzZXItbGluayB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IC0xZW07XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICB9XG5cbiAgICB0YWJsZSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICB0ZCB7XG4gICAgICBAZXh0ZW5kICVub3dyYXAtZWxsaXBzaXM7XG5cbiAgICAgIHBhZGRpbmc6IC41ZW0gLjRlbTtcbiAgICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgICBtYXgtd2lkdGg6IDIxY2g7XG5cbiAgICAgIC8qIHByZXZlbnQgbGVhZGVyYm9hcmQgb3ZlcmZsb3cgZHVlIHRvIGxvbmcgdXNlcm5hbWVzICovXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAuN2VtO1xuICAgICAgfVxuXG4gICAgICAmLm5hbWUgYSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBjb2xvcjogJGMtZm9udC1kaW07XG5cbiAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBjb2xvcjogJGMtbGluaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRyOm50aC1jaGlsZChldmVuKSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICB9XG4gIH1cblxuICAmX19sZWFkZXJib2FyZCxcbiAgJl9fd2lubmVycyB7XG4gICAgdGQ6Zmlyc3QtY2hpbGQge1xuICAgICAgQGV4dGVuZCAlZWxsaXBzaXM7XG4gICAgfVxuXG4gICAgdGQ6bGFzdC1jaGlsZCB7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IC43ZW07XG4gICAgfVxuICB9XG5cbiAgJl9fZm9ydW0gLmxvYmJ5X19ib3hfX3RvcCxcbiAgJl9fYmxvZyAubG9iYnlfX2JveF9fdG9wIHtcbiAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICB9XG59XG4iLCIubG9iYnlfX2ZvcnVtIHtcbiAgbGkge1xuICAgIG1hcmdpbjogLjZlbSAwO1xuICAgIHBhZGRpbmctbGVmdDogOXB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxNHB4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIH1cblxuICAuZXh0cmFjdCB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuICB9XG59XG4iLCIubG9iYnlfX2Jsb2cge1xuICAucG9zdCB7XG4gICAgQGV4dGVuZCAlZmxleC1iZXR3ZWVuO1xuXG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwYWRkaW5nOiAuMmVtIC41ZW07XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1saW5rLCAkYy1iZy1ib3gsIDE1JSk7XG4gICAgfVxuXG4gICAgLnRleHQge1xuICAgICAgZmxleDogMSAxIDEwMCU7XG4gICAgfVxuXG4gICAgc3Ryb25nIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIGltZyB7XG4gICAgICBoZWlnaHQ6IDRlbTtcbiAgICAgIHdpZHRoOiA0ZW07XG4gICAgICBtYXJnaW4tcmlnaHQ6IC44ZW07XG4gICAgfVxuXG4gICAgdGltZSB7XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cbiAgfVxufVxuIiwiJGMtc3VwcG9ydDogJGMtYnJhZztcblxuLmxvYmJ5X19zdXBwb3J0IHtcbiAgYSB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwLCAlYm94LW5lYXQ7XG5cbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgZm9udC1zaXplOiAxLjNlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAkYmxvY2stZ2FwO1xuICAgIHBhZGRpbmc6IC4yZW0gLjVlbTtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICNiZDExMWY7XG4gICAgfVxuXG4gICAgJjpob3ZlciAubG9iYnlfX3N1cHBvcnRfX3RleHQsXG4gICAgJjpob3ZlciBpOjpiZWZvcmUge1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuICB9XG5cbiAgaSB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgbWFyZ2luOiAwIC41ZW07XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAuMTVlbTtcbiAgICAgIGNvbG9yOiAjYmQxMTFmO1xuICAgICAgZm9udC1zaXplOiAyLjZlbTtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcbiAgICB9XG4gIH1cblxuICAmX190ZXh0IHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBjb2xvcjogI2JkMTExZjtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICBzdHJvbmcge1xuICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIHNwYW4ge1xuICAgICAgQGV4dGVuZCAlbm93cmFwLWVsbGlwc2lzO1xuXG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGZvbnQtc2l6ZTogLjhlbTtcbiAgICB9XG4gIH1cbn1cbiIsIi5sb2JieV9fYWJvdXQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBmb250LXNpemU6IC44NWVtO1xuICBmb250LXdlaWdodDogYm9sZDtcblxuICBhIHtcbiAgICBAZXh0ZW5kICVwYWdlLXRleHQ7XG5cbiAgICBtYXJnaW4tcmlnaHQ6IDEuMmVtO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGNvbG9yKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRjLWxpbms7XG4gICAgfVxuICB9XG59XG5cbi5jb25uZWN0LWxpbmtzIHtcbiAgZmxleDogMCAwIDEwMCU7XG4gIG1hcmdpbi10b3A6IC41ZW07XG5cbiAgYSB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUVFQSxZQUFZO0FBcUJaLDZEQUE2RDtBQWM3RCxtQkFBbUI7QUFNbkIsa0NBQWtDO0FBRWxDLHNCQUFzQjtBQU10QixvQ0FBb0M7QUFFcEMsb0JBQW9CO0FBTXBCLGlDQUFpQztBQUVqQyxnQkFBZ0I7QUFJaEIsK0JBQStCO0FBRS9CLGdCQUFnQjtBQUtoQiwrQkFBK0I7QUFFL0IsaUJBQWlCO0FBSWpCLGtCQUFrQjtBQUlsQixjQUFjO0FBSWQsaUJBQWlCO0FBSWpCLCtCQUErQjtBQThCL0IsYUFBYTtBQU1iLGFBQWE7QUFNYixZQUFZO0FHcElaLHdDQUF3QztBc0JBeEMsWUFBWTtBQWVaLGFBQWE7QUFTYixrQkFBa0I7QUFLbEIsa0JBQWtCO0FBS2xCLGFBQWE7QUVsQ2IsdURBQXVEO0FBT3ZELHVFQUF1RTtBQzZEdkUsdURBQXVEO0FpQnBFdkQsQWhCSUEsZWdCSmUsQ0FDYixPQUFPLENBUUwsTUFBTSxFRVRWLFNBQVMsQ0FRUCxNQUFNLENBR0osQ0FBQyxFQ1BBLGdCQUFLLENBZ0JKLE1BQU0sQ25CaEJEO0VBQ1QsV0FBVyxFQUFFLFdBQVc7Q0FDekI7O0FPSkQsQVBNQSxXT05XLENBWVQsSUFBSSxFS05OLE9BQU8sRUVSUCxZQUFZLENBcUNWLEVBQUUsRUVyQ0osZUFBZSxDQUNiLE9BQU8sRUVEVCxTQUFTLENBUVAsTUFBTSxFRVJSLGFBQWEsQ0FRWCxRQUFRLEVKUlYsZUFBZSxDQXVCYixLQUFLLEVFdkJQLFNBQVMsQ0E2QlAsS0FBSyxDbEJyQkM7RUFDTixXQUFXLEVBQUUsUUFBUTtDQUN0Qjs7QUFtQkQs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 */
