@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 */
.activity section h2 {
  font-family: 'Noto Sans';
}

.game-row .header__text strong, .sub-ratings h3, .number-menu .nm-item, .activity rating {
  font-family: 'Roboto';
}

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

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

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

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

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

#us_profile .col2 > a, .activity .line {
  white-space: nowrap;
}

.user-show .claim-title {
  padding: 5vh var(--box-padding);
}

.user-show .flash {
  padding: 0 var(--box-padding);
}

#us_profile .bio, .note-zone .note {
  overflow-wrap: break-word;
  word-break: break-word;
}

#us_profile .col2 > a, .activity .line, .crosstable__users {
  overflow: hidden;
  text-overflow: ellipsis;
}

.flash__content::before, .flash-warning .flash__content::before, .flash-failure .flash__content::before {
  font-size: 1.2em;
  vertical-align: middle;
  font-family: 'lichess';
  font-style: normal;
  font-weight: normal;
  text-transform: none;
  speak: none;
  content: attr(data-icon);
  opacity: 0.9;
}

.game-row__overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
}

.game-row .header, #us_profile, .note-zone .mod-note, .note-zone .mod-note > div, .user-show .angles .nm-item {
  /* extends %flex-wrap */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
}

.sub-ratings a, #us_profile .warning, #us_profile .insight, .user-show__social .relation-actions {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.user-show__social, .user-show .claim-title form {
  /* extends %flex-center */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  justify-content: space-between;
}

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

.crosstable povs, .crosstable__users, .crosstable__score, .crosstable__matchup, .sub-ratings a > span, #us_profile .profile-side {
  display: flex;
  flex-flow: column;
}

.crosstable, .flash__content, #us_profile .warning, .activity score strong {
  border-radius: 3px;
}

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

.crosstable .sep, .sub-ratings a {
  border-radius: 3px 0 0 3px;
}

.number-menu--tabs .nm-item {
  border-radius: 3px 3px 0 0;
}

.crosstable, .sub-ratings a.game.active {
  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);
}

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

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

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

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

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

.hover-text::after {
  content: attr(title);
}

.hover-text:hover::after {
  content: attr(data-hover-text);
}

.crosstable__users {
  flex: 1 1 auto;
}

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

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

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

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

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

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

.crosstable__score span {
  padding: 0 2vmin;
}

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

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

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

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

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

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

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

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

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

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

.crosstable .loss {
  color: #cc3333;
}

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

.flash {
  margin: 1em 0 2em 0;
}

.flash__content {
  padding: 1em 2em;
  background: #629924;
  color: #fff;
}

.flash__content::before {
  content: 'E';
  margin-right: 1em;
  font-size: 1.5em;
}

.flash__content a {
  color: #fff;
}

.flash-warning .flash__content {
  background: #d59020;
  color: #fff;
}

.flash-warning .flash__content::before {
  content: '';
}

.flash-failure .flash__content {
  background: #cc3333;
  color: #fff;
}

.flash-failure .flash__content::before {
  content: 'j';
}

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

.cmn-toggle + label {
  display: block;
  position: relative;
  cursor: pointer;
  outline: none;
  -webkit-user-select: none;
  -moz-user-select: none;
}

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

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

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

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

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

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

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

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

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

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

.game-row {
  display: flex;
  align-items: stretch;
  height: 17rem;
  padding: .5em 1em;
  border-bottom: 1px solid #d9d9d9;
  position: relative;
  transition: background 150ms;
}

.game-row:nth-child(odd) {
  background: #f7f6f5;
}

.game-row:hover {
  background: #f2cfd2;
}

.game-row__board {
  flex: 0 0 16rem;
  margin-right: 1em;
}

@media (max-width: 799px) {
  .game-row__board {
    display: none;
  }
}

.game-row__infos {
  flex: 1 1 100%;
  display: flex;
  flex-flow: column;
  justify-content: space-between;
  margin: .5em 0;
}

.game-row .header::before {
  font-size: 3em;
  opacity: 0.7;
  margin-right: .7rem;
}

.game-row .header__text strong {
  font-weight: normal;
  font-size: 1.4em;
  text-transform: uppercase;
  display: block;
}

.game-row .versus {
  display: flex;
  justify-content: center;
  align-items: center;
}

.game-row .versus .swords {
  width: 2.5em;
  text-align: center;
  font-size: 2em;
  opacity: 0.7;
}

.game-row .versus .player {
  font-size: 1.3em;
  text-align: right;
}

.game-row .versus .player.black {
  text-align: left;
}

.game-row .versus a {
  font-weight: bold;
  position: relative;
  z-index: 3;
}

.game-row .versus .anon {
  line-height: 2em;
}

.game-row .result {
  display: block;
  text-align: center;
}

.game-row .win {
  color: #629924;
}

.game-row .loss {
  color: #cc3333;
}

.sub-ratings a {
  padding: 0.7em 2vmin 0.7em 0.4em;
  white-space: nowrap;
  transition: all 150ms;
  cursor: default;
}

.sub-ratings a.empty {
  opacity: .5;
}

.sub-ratings a::before {
  font-size: 3em;
  opacity: .5;
  margin-right: .2em;
  transition: all 150ms;
}

.sub-ratings a.game {
  cursor: pointer;
}

.sub-ratings a.game:hover {
  background: white;
}

.sub-ratings a.game:hover::before {
  color: #bd111f;
  opacity: .7;
}

.sub-ratings a.game.active {
  background: white;
}

.sub-ratings a.game.active::before {
  color: #bd111f;
  opacity: .7;
}

.sub-ratings a > span {
  flex: 1 1 100%;
  margin-right: .5em;
}

.sub-ratings a rating span,
.sub-ratings a .rank {
  font-size: .9em;
}

.sub-ratings a i {
  font-size: .75em;
  opacity: .2;
  color: #787878;
  transition: all 150ms;
}

.sub-ratings a:hover i {
  color: #bd111f;
  opacity: .7;
}

.sub-ratings a.active i {
  display: none;
}

.sub-ratings a .shy {
  font-size: .8em;
  opacity: 0.6;
  line-height: 1em;
}

.sub-ratings h3 {
  font-size: 1.1em;
  text-transform: uppercase;
  letter-spacing: .05em;
  margin: 0;
  display: inline-block;
}

.sub-ratings strong {
  color: #787878;
  font-weight: bold;
  font-size: 1.2em;
}

@media (max-width: 979px) {
  .sub-ratings a {
    padding: .3em;
  }
  .sub-ratings a > i,
  .sub-ratings h3,
  .sub-ratings rating .rp,
  .sub-ratings rating span {
    display: none;
  }
}

@media (max-width: 799px) {
  .sub-ratings {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(9ch, 1fr));
  }
  .sub-ratings br, .sub-ratings .rank {
    display: none;
  }
  .sub-ratings a {
    display: flex;
    justify-content: center;
  }
  .sub-ratings a::before {
    opacity: .8;
    font-size: 1.5em;
  }
  .sub-ratings a > span {
    flex: 0 0 auto;
    margin-right: 0;
  }
  .sub-ratings a strong {
    font-weight: normal;
  }
}

.user-show__header {
  background: #f7f6f5;
  padding: 2em 1.5em 1em 1.5em;
  flex-flow: row nowrap;
}

.user-show__header h1 {
  flex: 0 0 auto;
  font-size: 2em;
  margin-top: 0;
}

.user-show__header .connected {
  color: #629924;
}

.user-show__header .closed {
  color: #cc3333;
  font-weight: bold;
  margin-right: 1em;
}

.user-show__header .line {
  vertical-align: top;
}

.trophies {
  position: absolute;
  top: 35px;
  right: 1.5em;
  height: 40px;
  display: flex;
  flex-flow: row wrap;
  align-items: flex-start;
  justify-content: flex-end;
  margin-top: 0 !important;
}

@media (max-width: 799px) {
  .trophies {
    display: none;
  }
}

.trophy.award {
  font-family: 'lichess';
  speak: none;
  line-height: 100%;
}

.trophy {
  display: flex;
  align-items: flex-end;
  height: 40px;
}

.trophy img {
  height: 80px;
}

.trophy.top1 {
  filter: drop-shadow(0 0 6px #d59020);
}

.trophy, .shield-trophy {
  transition: transform 0.2s;
}

.trophy:not(.patron):hover, .shield-trophy:not(.patron):hover {
  transform: translateY(-3px);
}

.stacked {
  height: 40px;
  display: flex;
  align-items: flex-end;
}

.stacked .trophy {
  width: 65px;
  height: 65px;
  font-size: 65px;
}

.fire-trophy {
  opacity: 0.9;
  height: 80px;
  position: relative;
}

.fire-trophy, .fire-trophy:hover {
  color: #787878;
}

.fire-trophy:hover {
  opacity: 1;
}

.fire-trophy.marathonWinner, .fire-trophy.marathonTopTen, .fire-trophy.marathonTopFifty, .fire-trophy.marathonTopHundred {
  filter: hue-rotate(190deg);
  color: #59756e;
}

.fire-trophy.marathonTopTen {
  font-size: 58px;
  width: 55px;
  height: 55px;
  margin-top: 22px;
}

.fire-trophy.marathonTopFifty, .fire-trophy.marathonTopHundred {
  font-size: 50px;
  height: 50px;
  width: 50px;
  margin-top: 30px;
  animation: none;
}

.fire-trophy.marathonTopFifty {
  text-shadow: 0 0 5px #ffae34, 0 0 6.25px #ec760c, 0 0 7.5px #cd4606;
}

.fire-trophy.marathonTopHundred {
  text-shadow: none;
  color: #cd4606 !important;
}

.fire-trophy.bongcloudWarrior {
  filter: hue-rotate(70deg);
}

.packed .trophy {
  margin-right: -8px;
}

.packed .stacked {
  margin-right: 30px;
}

.packed .stacked .trophy {
  margin-right: -30px;
}

.trophy.icon3d {
  width: 40px;
  height: 40px;
  font-size: 39px;
  color: #b3b3b3;
  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);
}

.trophy.streaming {
  color: #d59020;
  animation: fire-trophy 1.25s ease-in-out infinite alternate;
}

.trophy.patron {
  flex: 0 0 auto;
  font-size: 60px;
  margin: 0 -10px 0 30px;
  transform: scale(-1, 1);
  color: #d59020;
  transition: margin-top 0.5s;
}

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

.combo-trophy {
  width: 60px;
  height: 60px;
  background-size: contain;
  background-repeat: no-repeat;
  font-family: 'lichess';
  text-align: center;
}

.shield-trophy {
  width: 50px;
  background-image: url(../images/trophy/shield-gold.png);
  font-size: 30px;
  line-height: 60px;
  color: #333 !important;
  text-shadow: 0 0 6px #fff;
  margin-top: -20px;
  filter: drop-shadow(0 0 6px #d59020);
}

.revol_trophy {
  background-image: url(../images/trophy/round-star.png);
  font-size: 24px;
  line-height: 68px;
  color: #fff !important;
  text-shadow: 0 0 4px #444;
  margin-top: -18px;
}

#us_profile {
  border-top: 1px solid #d9d9d9;
}

#us_profile .warning {
  padding: .7em;
  background: #faebeb;
  border: 1px solid #f0c2c2;
  color: #cc3333;
}

#us_profile .warning span {
  margin-right: .2em;
  font-size: 2.7em;
}

#us_profile .engine_warning {
  margin: 10px 0;
}

#us_profile .rating-history {
  flex: 1 1 58%;
  margin: -10px 0 -14px -8px;
  height: 350px;
}

#us_profile .rating-history .spinner {
  width: 90px;
  height: 90px;
  margin: 120px auto 0 auto;
}

#us_profile .profile-side {
  flex: 1 0 300px;
  height: 332px;
  border-left: 1px solid #d9d9d9;
  overflow: hidden;
}

#us_profile .country img {
  vertical-align: text-bottom;
  margin: 0 .3em;
}

#us_profile .user-infos {
  overflow-y: auto;
  flex: 1 1 auto;
  padding: .8em;
  overflow: auto;
}

@media (hover: hover) {
  #us_profile .user-infos {
    overflow: hidden;
  }
  #us_profile .user-infos:hover {
    overflow-y: auto;
  }
}

#us_profile .insight {
  /* no point linking to insights on devices that can't properly display it */
  flex: 0 0 auto;
  padding: .3em 1em;
  border-top: 1px solid #d9d9d9;
  color: #bd111f;
}

@media (max-width: 979px) {
  #us_profile .insight {
    display: none;
  }
}

#us_profile .insight strong {
  display: block;
  font-weight: normal;
  font-size: 1.5em;
}

#us_profile .insight em {
  display: block;
}

#us_profile .insight::before {
  font-size: 2.5em;
  margin-right: 1rem;
}

#us_profile .insight:hover, #us_profile .insight:hover::before {
  transition: all 150ms;
  background: #bd111f;
  color: #fff;
}

#us_profile .col2 {
  display: flex;
  flex-flow: row wrap;
}

#us_profile .col2 > a {
  flex: 0 0 50%;
}

#us_profile .bio {
  font-style: italic;
}

#us_profile .bio img {
  max-width: 100%;
}

.number-menu {
  background: #f7f6f5;
  display: flex;
  user-select: none;
}

.number-menu .nm-item {
  flex: 1 1 auto;
  color: #4d4d4d;
  text-align: center;
  line-height: 1.4em;
  padding: .5em 5px;
  text-transform: capitalize;
  white-space: normal;
  font-size: .9em;
}

.number-menu .nm-item:hover {
  color: #bd111f;
}

.number-menu--tabs .nm-item {
  margin-top: .7em;
  padding-bottom: .8em;
  transition: all 150ms;
  border-bottom: 1px solid #d9d9d9;
}

.number-menu--tabs .nm-item:first-child {
  border-top-left-radius: 0;
  border-left: 0 !important;
}

.number-menu--tabs .nm-item:last-child {
  border-top-right-radius: 0;
  border-right: 0 !important;
}

.number-menu--tabs .nm-item:hover {
  background: #f8e7e9;
  color: #1f1f1f;
}

.number-menu--tabs .nm-item.active {
  color: #1f1f1f;
  border: 1px solid #d9d9d9;
  border-bottom: 0;
  background: white;
}

.number-menu strong {
  font-weight: normal;
  font-size: 1.1em;
}

.note-zone {
  display: none;
  margin: 1em 1.5em;
  padding-bottom: 1em;
}

.note-zone textarea {
  width: 100%;
  height: 5em;
}

.note-zone .note {
  padding-top: 1em;
  border-top: 1px solid #d9d9d9;
  margin-top: 1em;
}

.note-zone .note__meta {
  text-align: right;
  margin: 0 1em;
  white-space: nowrap;
}

.note-zone .note__text {
  flex: 1 1 auto;
  min-height: 2.7em;
}

.note-zone .mod-note > div {
  margin-left: 1.5em;
}

.note-zone .mod-note > div > label {
  margin-left: .5em;
  cursor: pointer;
}

.activity section {
  font-size: 1.2em;
  margin-left: 1rem;
  padding-top: 1rem;
}

.activity section h2 {
  color: #d59020;
  font-size: 1.2em;
}

.activity section h2 time {
  font-weight: bold;
  text-transform: uppercase;
  background: white;
}

.activity .entries {
  margin-top: 0;
  padding-top: 10px;
  position: relative;
}

.activity .entry {
  padding: 1em 0 1em;
}

.activity .entry > i {
  font-size: 24px;
  float: left;
  width: 50px;
  height: 50px;
  margin-top: -10px;
  margin-left: -72px;
  line-height: 39px;
  text-align: center;
  background-color: #d69f45;
  border: 3px solid white;
  border-radius: 50%;
  color: #fff;
}

@media (min-width: 500px) {
  .activity .entries {
    margin: 30px 50px 0 50px;
    border-left: 3px solid #d69f45;
  }
  .activity .entry {
    padding-left: 45px;
  }
}

.activity .sub {
  margin: 3px 0;
  font-size: 1rem;
}

.activity .sub:last-child {
  margin-bottom: -7px;
}

.activity .sub > div {
  overflow: hidden;
}

.activity .line .more {
  flex: 0 1 auto;
}

.activity .line a {
  color: #4d4d4d;
}

.activity .line a:hover {
  color: #bd111f;
}

.activity rating {
  margin-left: .7em;
}

.activity rating .rp {
  margin-left: .2em;
}

.activity score {
  float: right;
  font-size: .7em;
  margin-top: 2px;
}

.activity score > * {
  margin-left: 8px;
}

.activity score strong {
  color: #fff;
  font-size: 1.2em;
  padding: 1px 6px;
  display: inline-block;
  text-align: center;
  opacity: .7;
}

.activity .sub score strong {
  line-height: 1.6em;
  padding: 1px 4px;
}

.activity win strong {
  background: #629924;
}

.activity draw strong {
  background: #d59020;
}

.activity loss strong {
  background: #cc3333;
}

.user-show .number-menu .to-playing {
  color: #bd111f;
}

.user-show .number-menu .to-playing strong {
  font-weight: bold;
}

.user-show .now-playing {
  grid-template-columns: repeat(auto-fill, minmax(250px, auto));
}

.page-menu {
  /* for the trophies. This glorious hack bypasses the .user-show overflow: hidden */
  position: relative;
}

.user-show {
  overflow: hidden;
  /* this fixes profile overflow, but cuts out the trophies */
}

.user-show__social {
  background: #f7f6f5;
}

.user-show__social .number-menu {
  margin: 0 0 .2em 1em;
}

.user-show__social .user-actions {
  margin: 1em;
}

.user-show__social .user-actions form {
  display: inline;
}

.user-show__social .relation-actions {
  border-right: 1px solid #d9d9d9;
}

.user-show .claim-title {
  border-top: 1px solid #d9d9d9;
}

.user-show .claim-title h2 {
  font-size: 1.5em;
  margin-bottom: 1em;
}

.user-show .claim-title form {
  margin: 3em 0 1em 0;
}

.user-show .crosstable {
  margin: 2em 1em;
  width: auto;
}

.user-show .new-player {
  padding: 1.5em;
  overflow-y: scroll;
}

.user-show .new-player h2 {
  font-size: 1.5em;
}

.user-show .new-player p {
  margin: 1em 0;
}

.user-show .new-player li {
  list-style: disc inside;
  line-height: 1.5em;
}

.user-show .number-menu .to-games.active,
.user-show #games.number-menu {
  background: #e3e3e3 !important;
}

.user-show .angles {
  font-size: 1.2em;
  height: 4rem;
  border-top: 1px solid #d9d9d9;
}

.user-show .angles .nm-item {
  justify-content: center;
}

.user-show .angles .unread {
  margin-left: .5em;
}

.user-show .activity {
  margin-bottom: 2em;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZS9jc3MvYnVpbGQvdXNlci5zaG93LmxpZ2h0LmNzcyIsInNvdXJjZXMiOlsic2l0ZS9jc3MvYnVpbGQvdXNlci5zaG93LmxpZ2h0LnNjc3MiLCJjb21tb24vY3NzL3RoZW1lL19saWdodC5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGVmYXVsdC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZnVuY3Rpb25zLnNjc3MiLCJzaXRlL2Nzcy9idWlsZC9fdXNlci5zaG93LnNjc3MiLCJjb21tb24vY3NzL19wbHVnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2FsbC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fei1pbmRleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWVkaWEtcXVlcmllcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L191bmlib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWl4aW5zLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19leHRlbmRzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbGV4LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19ib3guc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2ZsdWlkLXNpemUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19maXJlLXRyb3BoeS5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX25vdy1wbGF5aW5nLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9faG92ZXItdGV4dC5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2Nyb3NzdGFibGUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19mbGFzaC5zY3NzIiwiY29tbW9uL2Nzcy9mb3JtL19jbW4tdG9nZ2xlLnNjc3MiLCJjb21tb24vY3NzL2Jhc2UvX3Njcm9sbGJhci5zY3NzIiwiZ2FtZS9jc3MvX3Jvdy5zY3NzIiwic2l0ZS9jc3MvdXNlci9fc2hvdy5zY3NzIiwic2l0ZS9jc3MvdXNlci9fc3ViLXJhdGluZy5zY3NzIiwic2l0ZS9jc3MvdXNlci9faGVhZGVyLnNjc3MiLCJzaXRlL2Nzcy91c2VyL190cm9waHkuc2NzcyIsInNpdGUvY3NzL3VzZXIvX3Byb2ZpbGUuc2NzcyIsInNpdGUvY3NzL3VzZXIvX251bWJlci1tZW51LnNjc3MiLCJzaXRlL2Nzcy91c2VyL19ub3RlLXpvbmUuc2NzcyIsInNpdGUvY3NzL3VzZXIvX2FjdGl2aXR5LnNjc3MiLCJzaXRlL2Nzcy91c2VyL19nYW1lcy5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL3RoZW1lL2xpZ2h0XCI7XG5AaW1wb3J0IFwidXNlci5zaG93XCI7XG4iLCJAaW1wb3J0IFwiZGVmYXVsdFwiO1xuXG4kdGhlbWU6IFwibGlnaHRcIjtcbiR0aGVtZS1saWdodDogdHJ1ZTtcbiR0aGVtZS1kYXJrOiBmYWxzZTtcblxuJGMtYmctcGFnZTogaHNsKDAsIDAlLCAxMDAlKTtcbiRjLWJnLXBhZ2UtaW1nOiB1cmwoLi4vaW1hZ2VzL21vc2Nvdy1jaGVzc19wYXR0ZXJuX2xpZ2h0X2FuZ2xlZC0wMS5wbmcpO1xuJGMtYmctcGFnZS1iczogMTAlO1xuXG5AbWl4aW4gbWV0YWwtYmcge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCwgOTYpIDAlLCBoc2woMCwgMCwgOTMpIDEwMCUpO1xufVxuXG5AbWl4aW4gbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcblxuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gbWV0YWwtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCwgOTgpIDAlLCBoc2woMCwgMCwgOTUpIDEwMCUpO1xuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIG1peCgkYy1saW5rLCBoc2woMCwgMCUsIDEwMCUpLCAyMCUpIDAlLCBtaXgoJGMtbGluaywgaHNsKDAsIDAlLCA5NCUpLCAyMCUpIDEwMCUpO1xuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbC1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIG1peCgkYy1saW5rLCAjZmZmLCAyNSUpIDAlLCBtaXgoJGMtbGluaywgYy1saWdodCgkYy1iZy1wYWdlLCA5MCUpLCAyNSUpIDEwMCUpO1xuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gdGhlbWUtc3R5bGUge31cbiIsIkBpbXBvcnQgXCIuLi9hYnN0cmFjdC9mdW5jdGlvbnNcIjtcblxuLyogQ29sb3JzICovXG5cbkBmdW5jdGlvbiBjLWRpbW1lcigkY29sb3IsICR3ZWlnaHQ6IDE3JSkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYy1jbGVhcmVyKCRjb2xvciwgJHdlaWdodDogMTclKSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbiRjLXNpdGUtaHVlOiAzNztcblxuJGMtYmctcGFnZTogaHNsKCRjLXNpdGUtaHVlLCAxMCUsIDkyJSk7XG5cbiRjLWJnLXBhZ2UtaW1nOiBub25lO1xuJGMtYmctcGFnZS1iczogYXV0bztcblxuLy8gaHNsKDIxMCwgMTclLCA5NSUpXG4kYy1iZy1oaWdoOiBoc2woMCwgMCUsIDEwMCUpO1xuJGMtYmctbG93OiBoc2woMCwgMCUsIDg5JSk7XG5cbi8qIGV2ZW4gcm93cyBpbiBsaXN0IG9yIHRhYmxlcywgc3VidGxlIHNoYWRlIG9mICRjLWJnLWhpZ2ggKi9cbiRjLWJnLXplYnJhOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTYuNSUpO1xuJGMtYmctemVicmEyOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTIlKTtcblxuJGMtYm9keS1ncmFkaWVudDogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDg0JSk7XG5cbiRjLWZvbnQ6IGhzbCgwLCAwJSwgMzAlKTtcbiRjLWZvbnQtZGltOiBjLWxpZ2h0KCRjLWZvbnQsIDQ3JSk7XG4kYy1mb250LWRpbW1lcjogYy1saWdodCgkYy1mb250LCA3MCUpO1xuJGMtZm9udC1jbGVhcjogYy1saWdodCgkYy1mb250LCAxMiUpO1xuJGMtZm9udC1jbGVhcmVyOiBjLWxpZ2h0KCRjLWZvbnQsIDAlKTtcbiRjLXNoYWRlOiBjLWRpbW1lcigkYy1mb250LCA4MCUpO1xuJGMtZm9udC1wYWdlOiBjLWxpZ2h0KCRjLWZvbnQsIDM3JSk7XG5cbi8qIFByaW1hcnk6IGJsdWUgKi9cbiRjLXByaW1hcnk6ICNiZDExMWY7XG4kYy1wcmltYXJ5LWRpbTogYy1kaW1tZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LWNsZWFyOiBjLWNsZWFyZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBwcmltYXJ5IGJhY2tncm91bmQgKi9cblxuLyogU2Vjb25kYXJ5OiBncmVlbiAqL1xuJGMtc2Vjb25kYXJ5OiBoc2woODgsIDYyJSwgMzclKTtcbiRjLXNlY29uZGFyeS1kaW06IGMtZGltbWVyKCRjLXNlY29uZGFyeSk7XG4kYy1zZWNvbmRhcnktZGltbWVyOiBjLWRpbW1lcigkYy1zZWNvbmRhcnksIDQwJSk7XG4kYy1zZWNvbmRhcnktb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIHNlY29uZGFyeSBiYWNrZ3JvdW5kICovXG5cbi8qIEFjY2VudDogb3JhbmdlICovXG4kYy1hY2NlbnQ6ICNiZDExMWY7XG4kYy1hY2NlbnQtZGltOiBjLWRpbW1lcigkYy1hY2NlbnQpO1xuJGMtYWNjZW50LWNsZWFyOiBjLWNsZWFyZXIoJGMtYWNjZW50KTtcbiRjLWFjY2VudC1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYWNjZW50IGJhY2tncm91bmQgKi9cblxuLyogQnJhZzogZ29sZCAqL1xuJGMtYnJhZzogaHNsKDM3LCA3NCUsIDQ4JSk7XG4kYy1icmFnLW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuLyogRXJyb3I6IHJlZCAqL1xuJGMtcmVkOiBoc2woMCwgNjAlLCA1MCUpO1xuJGMtZXJyb3I6ICRjLXJlZDtcbiRjLWVycm9yLW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuLyogR29vZDogZ3JlZW4gKi9cbiRjLWdvb2Q6ICRjLXNlY29uZGFyeTtcbiRjLWdvb2Qtb3ZlcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG5cbi8qIFdhcm46IG9yYW5nZSAqL1xuJGMtd2FybjogJGMtYnJhZztcbiRjLXdhcm4tb3ZlcjogJGMtYnJhZy1vdmVyO1xuXG4vKiBCYWQ6IHJlZCAqL1xuJGMtYmFkOiAkYy1lcnJvcjtcbiRjLWJhZC1vdmVyOiAkYy1lcnJvci1vdmVyO1xuXG4vKiBGYW5jeTogcGluayAqL1xuJGMtZmFuY3k6IGhzbCgyOTQsIDYxJSwgNjIlKTtcbiRjLWZhbmN5LW92ZXI6IHdoaXRlO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbiRjLWxpbms6ICRjLXByaW1hcnk7XG4kYy1saW5rLWRpbTogJGMtcHJpbWFyeS1kaW07XG4kYy1saW5rLWNsZWFyOiAkYy1wcmltYXJ5LWNsZWFyO1xuJGMtbGluay1ob3ZlcjogYy1jbGVhcmVyKHNhdHVyYXRlKCRjLXByaW1hcnksIDEwMCUpLCAzNSUpO1xuJGMtbGluay1vdmVyOiAkYy1wcmltYXJ5LW92ZXI7XG5cbiRjLWJnLWJveDogJGMtYmctaGlnaDtcbiRjLWJnLWJveC1vcGFxdWU6ICRjLWJnLWJveDtcbiRjLWJnLWlucHV0OiBjLWxpZ2h0KCRjLWJnLXBhZ2UsIDk4JSk7XG5cbiRjLWJvcmRlcjogaHNsKDAsIDAlLCA4NSUpO1xuJGMtYm9yZGVyLXBhZ2U6IGhzbCgwLCAwJSwgODAlKTtcblxuJGMtcGFnZS1tYXNrOiBoc2xhKDAsIDAsIDAlLCAwLjYpO1xuXG4kYy1iZy1wb3B1cDogJGMtYmctaGlnaDtcbiRjLXBvcHVwOiAkYy1mb250O1xuXG4kYy1iZy1oZWFkZXItZHJvcGRvd246ICRjLWJnLXBvcHVwO1xuJGMtaGVhZGVyLWRyb3Bkb3duOiAkYy1wb3B1cDtcblxuJGMtZm9udC1zaGFkb3c6IHdoaXRlO1xuJHRleHQtc2hhZG93OiAwIDFweCAwICRjLWZvbnQtc2hhZG93O1xuXG4kYy1ib3Q6ICRjLWZhbmN5O1xuXG4kYy1wYWdlLWlucHV0OiAkYy1iZy1sb3c7XG5cbi8qIEJvcmRlcnMgKi9cblxuJGJvcmRlci13aWR0aDogMXB4O1xuJGJvcmRlci1zdHlsZTogc29saWQ7XG4kYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgJGMtYm9yZGVyO1xuXG4vKiBTaGFkb3dzICovXG5cbiRib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XG5cbi8vICRib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsMCwwLC4xNTcpO1xuXG4vKiBDdXN0b20gKi9cbiR3YXJuaW5nLWljb24tY29sb3I6IGhzbCg0NCwgMTAwJSwgNDYlKTtcbiIsIkBmdW5jdGlvbiBjLWxpZ2h0KCRjb2xvciwgJHZhbHVlKSB7XG4gIEByZXR1cm4gY2hhbmdlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHZhbHVlKTtcbn1cblxuQGZ1bmN0aW9uIGltZy11cmwoJHBhdGgpIHtcbiAgQHJldHVybiB1cmwoXCIjeyRpbWctcGF0aH0vI3skcGF0aH1cIik7XG59XG4iLCJAaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9wbHVnaW5cIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9maXJlLXRyb3BoeVwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L25vdy1wbGF5aW5nXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvaG92ZXItdGV4dFwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2Nyb3NzdGFibGVcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9mbGFzaFwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvZm9ybS9jbW4tdG9nZ2xlXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9iYXNlL3Njcm9sbGJhclwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2dhbWUvY3NzL3Jvd1wiO1xuQGltcG9ydCBcIi4uL3VzZXIvc2hvd1wiO1xuIiwiLyogQ29tbW9uIGltcG9ydHMgZm9yIGFsbCBDU1MgbW9kdWxlcyAqL1xuXG5AaW1wb3J0IFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50XCI7XG5cbkBpbXBvcnQgXCJhYnN0cmFjdC9hbGxcIjtcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJEJyZWFrcG9pbnQtU2V0dGluZ3M6IChcbiAgJ2RlZmF1bHQgbWVkaWEnOiBhbGwsXG4gICdkZWZhdWx0IGZlYXR1cmUnOiBtaW4td2lkdGgsXG4gICdkZWZhdWx0IHBhaXInOiB3aWR0aCxcblxuICAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnOiBmYWxzZSxcbiAgJ3RvIGVtcyc6IGZhbHNlLFxuICAndHJhbnNmb3JtIHJlc29sdXRpb25zJzogdHJ1ZSxcblxuICAnbm8gcXVlcmllcyc6IGZhbHNlLFxuICAnbm8gcXVlcnkgZmFsbGJhY2tzJzogZmFsc2UsXG5cbiAgJ2Jhc2UgZm9udCBzaXplJzogMTZweCxcblxuICAnbGVnYWN5IHN5bnRheCc6IGZhbHNlXG4pO1xuXG4kYnJlYWtwb2ludDogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9zZXR0aW5nc1wiO1xuQGltcG9ydCAnYnJlYWtwb2ludC9jb250ZXh0JztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvaGVscGVycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L3BhcnNlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9uby1xdWVyeSc7XG5cbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcmVzcG9uZC10byc7XG5cbkBpbXBvcnQgXCJicmVha3BvaW50L2xlZ2FjeS1zZXR0aW5nc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgbGVnYWN5LXNldHRpbmdzLXdhcm5pbmc7XG5cbiAgLy8gUmVzZXQgY29udGV4dHNcbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG5cbiAgJGJyZWFrcG9pbnQ6IGJyZWFrcG9pbnQoJHF1ZXJ5LCBmYWxzZSk7XG5cbiAgJHF1ZXJ5LXN0cmluZzogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5Jyk7XG4gICRxdWVyeS1mYWxsYmFjazogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2ZhbGxiYWNrJyk7XG5cbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2NvbnRleHQgaG9sZGVyJykgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5IGNvdW50JykgIWdsb2JhbDtcblxuICAvLyBBbGxvdyBmb3IgYW4gYXMtbmVlZGVkIG92ZXJyaWRlIG9yIHVzYWdlIG9mIG5vIHF1ZXJ5IGZhbGxiYWNrLlxuICBAaWYgJG5vLXF1ZXJ5ICE9IGZhbHNlIHtcbiAgICAkcXVlcnktZmFsbGJhY2s6ICRuby1xdWVyeTtcbiAgfVxuXG4gIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gIH1cblxuICAvLyBQcmludCBPdXQgUXVlcnkgU3RyaW5nXG4gIEBpZiBub3QgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQG1lZGlhICN7JHF1ZXJ5LXN0cmluZ30ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSAhPSBmYWxzZSBvciBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpID09IHRydWUge1xuXG4gICAgJHR5cGU6IHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpKTtcbiAgICAkcHJpbnQ6IGZhbHNlO1xuXG4gICAgQGlmICgkdHlwZSA9PSAnYm9vbCcpIHtcbiAgICAgICRwcmludDogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdsaXN0Jykge1xuICAgICAgQGVhY2ggJHdyYXBwZXIgaW4gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSAkd3JhcHBlciB7XG4gICAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV3JpdGUgRmFsbGJhY2tcbiAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkgYW5kICgkcHJpbnQgPT0gdHJ1ZSkge1xuICAgICAgJHR5cGUtZmFsbGJhY2s6IHR5cGUtb2YoJHF1ZXJ5LWZhbGxiYWNrKTtcblxuICAgICAgQGlmICgkdHlwZS1mYWxsYmFjayAhPSAnYm9vbCcpIHtcbiAgICAgICAgI3skcXVlcnktZmFsbGJhY2t9ICYge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xufVxuXG5cbkBtaXhpbiBtcSgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhhcyBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldCgkc2V0dGluZykge1xuICBAaWYgYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnQsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCcmVha3BvaW50LVNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGlmIChzdHItaW5kZXgoJHNldHRpbmcsICctJykgb3Igc3RyLWluZGV4KCRzZXR0aW5nLCAnXycpKSBhbmQgc3RyLWluZGV4KCRzZXR0aW5nLCAnICcpID09IG51bGwge1xuICAgIEB3YXJuIFwiV29yZHMgaW4gQnJlYWtwb2ludCBzZXR0aW5ncyBzaG91bGQgYmUgc2VwYXJhdGVkIGJ5IHNwYWNlcywgbm90IGRhc2hlcyBvciB1bmRlcnNjb3Jlcy4gUGxlYXNlIHJlcGxhY2UgZGFzaGVzIGFuZCB1bmRlcnNjb3JlcyBiZXR3ZWVuIHdvcmRzIHdpdGggc3BhY2VzLiBTZXR0aW5ncyB3aWxsIG5vdCB3b3JrIGFzIGV4cGVjdGVkIHVudGlsIGNoYW5nZWQuXCI7XG4gIH1cbiAgJGJyZWFrcG9pbnQ6IG1hcC1tZXJnZSgkYnJlYWtwb2ludCwgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRicmVha3BvaW50LWNoYW5nZTogYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYmtwdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cbkBtaXhpbiBia3B0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICBAaWYgbGVuZ3RoKCRzZXR0aW5ncykgPT0gMSB7XG4gICAgJHNldHRpbmdzOiBudGgoJHNldHRpbmdzLCAxKTtcbiAgfVxuXG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGJyZWFrcG9pbnQ6IG1hcC1yZW1vdmUoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSAhZ2xvYmFsO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBia3B0LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBCcmVha3BvaW50IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKTtcbiRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBIYXMgQ29udGV4dFxuLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB5b3UgYXJlIGluc2lkZSBhIEJyZWFrcG9pbnQgcXVlcnlcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSB7XG4gIEBpZiBsZW5ndGgoJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCkge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgR2V0IENvbnRleHRcbi8vICRmZWF0dXJlOiBJbnB1dCBmZWF0dXJlIHRvIGdldCBpdCdzIGN1cnJlbnQgTVEgY29udGV4dC4gUmV0dXJucyBmYWxzZSBpZiBubyBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldC1jb250ZXh0KCRmZWF0dXJlKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICRnZXQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgb2Ygbm8tcXVlcnkgZnJvbSBnZXQgc2lkZSBzbyAvZmFsc2UvIHByZXBlbmRzIGFyZW4ndCByZXR1cm5lZFxuICAgIEBpZiAkZmVhdHVyZSA9PSAnbm8tcXVlcnknIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRnZXQpID09ICdsaXN0JyBhbmQgbGVuZ3RoKCRnZXQpID4gMSBhbmQgbnRoKCRnZXQsIDEpID09IGZhbHNlIHtcbiAgICAgICAgJGdldDogbnRoKCRnZXQsIGxlbmd0aCgkZ2V0KSk7XG4gICAgICB9XG4gICAgfVxuICAgIEByZXR1cm4gJGdldDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSBhbmQgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICBAcmV0dXJuIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byBzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpIHtcbiAgQGlmICR2YWx1ZSA9PSAnbW9ub2Nocm9tZScge1xuICAgICRmZWF0dXJlOiAnbW9ub2Nocm9tZSc7XG4gIH1cblxuICAkY3VycmVudDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gIEBpZiAkY3VycmVudCBhbmQgbGVuZ3RoKCRjdXJyZW50KSA9PSAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICBAd2FybiBcIllvdSBoYXZlIGFscmVhZHkgcXVlcmllZCBhZ2FpbnN0IGAjeyRmZWF0dXJlfWAuIFVuZXhwZWN0ZWQgdGhpbmdzIG1heSBoYXBwZW4gaWYgeW91IHF1ZXJ5IGFnYWluc3QgdGhlIHNhbWUgZmVhdHVyZSBtb3JlIHRoYW4gb25jZSBpbiB0aGUgc2FtZSBgYW5kYCBxdWVyeS4gQnJlYWtwb2ludCBpcyBvdmVyd3JpdGluZyB0aGUgY3VycmVudCBjb250ZXh0IHdpdGggYCN7JHZhbHVlfWBcIjtcbiAgfVxuXG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkdi1ob2xkZXI6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAxIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR2LWhvbGRlcjogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCAtIDEge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byByZXNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMge1xuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb252ZXJ0cyB0aGUgaW5wdXQgdmFsdWUgdG8gQmFzZSBFTXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpIHtcbiAgJHZhbHVlLXVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICAvLyBXaWxsIGNvbnZlcnQgcmVsYXRpdmUgRU1zIGludG8gcm9vdCBFTXMuXG4gIEBpZiBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSBhbmQgdHlwZS1vZihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgPT0gJ251bWJlcicgYW5kICR2YWx1ZS11bml0ID09ICdlbScge1xuICAgICRiYXNlLXVuaXQ6IHVuaXQoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpO1xuXG4gICAgQGlmICRiYXNlLXVuaXQgPT0gJ3B4JyBvciAkYmFzZS11bml0ID09ICclJyBvciAkYmFzZS11bml0ID09ICdlbScgb3IgJGJhc2UtdW5pdCA9PSAncHQnIHtcbiAgICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkgLyBiYXNlLWNvbnZlcnNpb24oYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpICogMWVtO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnI3ticmVha3BvaW50LWdldChcXCdiYXNlIGZvbnQgc2l6ZVxcJyl9IGlzIG5vdCBzZXQgaW4gdmFsaWQgdW5pdHMgZm9yIGZvbnQgc2l6ZSEnO1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIHtcbiAgJHVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICBAaWYgJHVuaXQgPT0gJ3B4JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxNnB4ICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICclJyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMDAlICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdlbScge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdwdCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTJwdCAqIDFlbTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4vLyAgICBAd2FybiAnRXZlcnl0aGluZyBpcyB0ZXJyaWJsZSEgV2hhdCBoYXZlIHlvdSBkb25lPyEnO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgbWluL21heCBwYWlyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWhlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLXdpZHRoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluLW1heCgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIHN0cmluZyB2YWx1ZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXM6ICAnb3JpZW50YXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjYW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2x1bWlub3NpdHknO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgYnJlYWtwb2ludC1taW4tbWF4KCRpdGVtKSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21pbi0jeyRpdGVtfScgb3IgJGZlYXR1cmUgPT0gJ21heC0jeyRpdGVtfScge1xuICAgICAgICBAcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgaXMgYSBtZWRpYSB0eXBlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1lZGlhLXR5cGVzOiAgJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdicmFpbGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VtYm9zc2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbmRoZWxkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyZWVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWVjaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHYnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkge1xuICBAZWFjaCAkbWVkaWEgaW4gJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXMge1xuICAgIEBpZiAoJGZlYXR1cmUgPT0gJG1lZGlhKSBvciAoJGZlYXR1cmUgPT0gJ25vdCAjeyRtZWRpYX0nKSBvciAoJGZlYXR1cmUgPT0gJ29ubHkgI3skbWVkaWF9Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBzdGFuZCBhbG9uZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncmlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSB7XG4gICRyZXNvbHV0aW9uczogJ2RldmljZS1waXhlbC1yYXRpbycsICdkcHInO1xuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgICRyZXNvbHV0aW9uczogYXBwZW5kKCRyZXNvbHV0aW9ucywgJ3Jlc29sdXRpb24nKTtcbiAgfVxuXG4gIEBlYWNoICRyZXNvIGluICRyZXNvbHV0aW9ucyB7XG4gICAgQGlmIGluZGV4KCRmZWF0dXJlLCAkcmVzbykgb3IgaW5kZXgoJGZlYXR1cmUsICdtaW4tI3skcmVzb30nKSBvciBpbmRleCgkZmVhdHVyZSwgJ21heC0jeyRyZXNvfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGFyc2VyIFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwicGFyc2Vycy9xdWVyeVwiO1xuQGltcG9ydCBcInBhcnNlcnMvc2luZ2xlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9kb3VibGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3RyaXBsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvcmVzb2x1dGlvblwiO1xuXG4kTWVtby1FeGlzdHM6IGZ1bmN0aW9uLWV4aXN0cyhtZW1vLWdldCkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhtZW1vLXNldCk7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBGdW5jdGlvblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkcXVlcnksICRjb250ZXh0cy4uLikge1xuICAkcnVuOiB0cnVlO1xuICAkcmV0dXJuOiAoKTtcblxuICAvLyBHcmFiIHRoZSBNZW1vIE91dHB1dCBpZiBNZW1vaXphdGlvbiBjYW4gYmUgYSB0aGluZ1xuICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAkcmV0dXJuOiBtZW1vLWdldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMpO1xuXG4gICAgQGlmICRyZXR1cm4gIT0gbnVsbCB7XG4gICAgICAkcnVuOiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAaWYgbm90ICRNZW1vLUV4aXN0cyBvciAkcnVuIHtcbiAgICAvLyBJbnRlcm5hbCBWYXJpYWJsZXNcbiAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAkcXVlcnktZmFsbGJhY2s6IGZhbHNlO1xuICAgICRyZXR1cm46ICgpO1xuXG4gICAgLy8gUmVzZXJ2ZSBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkaG9sZGVyLWNvbnRleHQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI7XG4gICAgJGhvbGRlci1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDtcblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG5cbiAgICAvLyBUZXN0IHRvIHNlZSBpZiBpdCdzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3RcbiAgICAkb3ItbGlzdDogaWYobGlzdC1zZXBhcmF0b3IoJHF1ZXJ5KSA9PSAnY29tbWEnLCB0cnVlLCBmYWxzZSk7XG5cblxuICAgIEBpZiAoJG9yLWxpc3QgPT0gZmFsc2UgYW5kIGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gZmFsc2UpIHtcbiAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgICAgICRsYXN0OiBudGgoJHF1ZXJ5LCAkbGVuZ3RoKTtcbiAgICAgICRxdWVyeS1mYWxsYmFjazogYnJlYWtwb2ludC1uby1xdWVyeSgkbGFzdCk7XG5cbiAgICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSB7XG4gICAgICAgICRsZW5ndGg6ICRsZW5ndGggLSAxO1xuICAgICAgfVxuXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gdHJ1ZSkge1xuICAgICAgICAkbXE6ICgpO1xuXG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJG1xOiBhcHBlbmQoJG1xLCBudGgoJHF1ZXJ5LCAkaSksIGNvbW1hKTtcbiAgICAgICAgfVxuXG4gICAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJG1xKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJHF1ZXJ5LXN0cmluZzogJHF1ZXJ5LXN0cmluZyArIGlmKCRpID09IDEsICcnLCAnLCAnKSArIGJyZWFrcG9pbnQtcGFyc2UobnRoKCRxdWVyeSwgJGkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRyZXR1cm46ICgncXVlcnknOiAkcXVlcnktc3RyaW5nLFxuICAgICAgICAnZmFsbGJhY2snOiAkcXVlcnktZmFsbGJhY2ssXG4gICAgICAgICdjb250ZXh0IGhvbGRlcic6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsXG4gICAgICAgICdxdWVyeSBjb3VudCc6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnRcbiAgICApO1xuICAgIEBpZiBsZW5ndGgoJGNvbnRleHRzKSA+IDAgYW5kIG50aCgkY29udGV4dHMsIDEpICE9IGZhbHNlIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICAgICAgfVxuICAgICAgJGNvbnRleHQtbWFwOiAoKTtcbiAgICAgIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgICAgICRjb250ZXh0LW1hcDogbWFwLW1lcmdlKCRjb250ZXh0LW1hcCwgKCRjb250ZXh0OiBicmVha3BvaW50LWdldC1jb250ZXh0KCRjb250ZXh0KSkpO1xuICAgICAgfVxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sIChjb250ZXh0OiAkY29udGV4dC1tYXApKTtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuICAgIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICAgJGhvbGRlcjogbWVtby1zZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzLCAkcmV0dXJuKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhbCBCcmVha3BvaW50IFBhcnNlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpIHtcbiAgLy8gSW5jcmVhc2UgbnVtYmVyIG9mICdhbmQnIHF1ZXJpZXNcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCArIDEgIWdsb2JhbDtcblxuICAvLyBTZXQgdXAgTWVkaWEgVHlwZVxuICAkcXVlcnktcHJpbnQ6ICcnO1xuXG4gICRmb3JjZS1hbGw6ICgoYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykgPT0gdHJ1ZSkgYW5kIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpID09ICdhbGwnKSk7XG4gICRlbXB0eS1tZWRpYTogdHJ1ZTtcbiAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpICE9ICdhbGwnKSB7XG4gICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG4gIH1cblxuXG4gICRxdWVyeS1yZXNvbHV0aW9uOiBmYWxzZTtcblxuICAkcXVlcnktaG9sZGVyOiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSk7XG5cblxuXG4gIC8vIExvb3Agb3ZlciBlYWNoIHBhcnNlZCBvdXQgcXVlcnkgYW5kIHdyaXRlIGl0IHRvICRxdWVyeS1wcmludFxuICAkZmlyc3Q6IHRydWU7XG5cbiAgQGVhY2ggJGZlYXR1cmUgaW4gJHF1ZXJ5LWhvbGRlciB7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRmZWF0dXJlKTtcblxuICAgIC8vIFBhcnNlIGEgc2luZ2xlIGZlYXR1cmVcbiAgICBAaWYgKCRsZW5ndGggPT0gMSkge1xuICAgICAgLy8gRmVhdHVyZSBpcyBjdXJyZW50bHkgYSBsaXN0LCBncmFiIHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICRmZWF0dXJlOiBudGgoJGZlYXR1cmUsIDEpO1xuXG4gICAgICAvLyBNZWRpYSBUeXBlIG11c3QgYnkgY29udmVudGlvbiBiZSB0aGUgZmlyc3QgaXRlbSwgc28gaXQncyBzYWZlIHRvIGZsYXQgb3ZlcnJpZGUgJHF1ZXJ5LXByaW50LCB3aGljaCByaWdodCBub3cgc2hvdWxkIG9ubHkgYmUgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZVxuICAgICAgQGlmIChicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSkge1xuICAgICAgICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKCRmZWF0dXJlICE9ICdhbGwnKSB7XG4gICAgICAgICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAkZmVhdHVyZTtcbiAgICAgICAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuXG4gICAgICAgICAgLy8gU2V0IENvbnRleHRcbiAgICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtZWRpYSwgJHF1ZXJ5LXByaW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgZG91YmxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAyKSB7XG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkgIT0gZmFsc2UpIHtcbiAgICAgICAgJHF1ZXJ5LXJlc29sdXRpb246ICRmZWF0dXJlO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBudWxsO1xuICAgICAgICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLFxuICAgICAgICAvLyB3ZSBjaGVjayB0byBzZWUgaWYgb25lIGlzIGEgc2luZ2xlLXN0cmluZyB2YWx1ZSxcbiAgICAgICAgLy8gdGhlbiB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgICAgICAgJGFscGhhOiBudGgoJGZlYXR1cmUsIDEpO1xuICAgICAgICAkYmV0YTogbnRoKCRmZWF0dXJlLCAyKTtcbiAgICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYWxwaGEpIG9yIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYmV0YSkge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRhbHBoYSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRiZXRhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgdHJpcGxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAzKSB7XG4gICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICB9XG5cbiAgfVxuXG4gIEBpZiAoJHF1ZXJ5LXJlc29sdXRpb24gIT0gZmFsc2UpIHtcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gIH1cblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBmZWF0dXJlIHRoYXQncyBiZWVuIGRldGVjdGVkIHNvIGZhciBhbmQgYXBwZW5kICdmYWxzZScgdG8gdGhlIHRoZSB2YWx1ZSBsaXN0IHRvIGluY3JlbWVudCB0aGVpciBjb3VudGVyc1xuICBAZWFjaCAkZiwgJHYgaW4gJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciB7XG4gICAgJHYtaG9sZGVyOiAkdjtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAaWYgbGVuZ3RoKCR2LWhvbGRlcikgPCAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgICBAaWYgJGYgPT0gJ21lZGlhJyB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZjogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KSB7XG4gIC8vIFBhcnNlIGZlYXR1cmVzIG91dCBvZiBhbiBpbmRpdmlkdWFsIHF1ZXJ5XG4gICRmZWF0dXJlLWhvbGRlcjogKCk7XG4gICRxdWVyeS1ob2xkZXI6ICgpO1xuICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgYSBzdHJpbmcvbnVtYmVyLCBudW1iZXIvc3RyaW5nLCBjaGVjayB0byBzZWUgaWYgaXQncyBhIHZhbGlkIHN0cmluZy9udW1iZXIgcGFpciBvciB0d28gc2luZ2xlc1xuICAgIEBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSBvciAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG5cbiAgICAgICRudW1iZXI6ICcnO1xuICAgICAgJHZhbHVlOiAnJztcblxuICAgICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMik7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDEpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDIpO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIHZhbHVlIGNhbiBiZSBhIHNpbmdsZSB2YWx1ZSwgY2hlY2sgdG8gc2VlIGlmIHRoZSBudW1iZXIgcGFzc2VkIGluIGlzIGEgdmFsaWQgaW5wdXQgZm9yIHNhaWQgc2luZ2xlIHZhbHVlLiBGb3J0dW5hdGVseSwgYWxsIGN1cnJlbnQgc2luZ2xlLXZhbHVlIG9wdGlvbnMgb25seSBhY2NlcHQgdW5pdGxlc3MgbnVtYmVycywgc28gdGhpcyBjaGVjayBpcyBlYXN5LlxuICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkdmFsdWUpIHtcbiAgICAgICAgQGlmIHVuaXRsZXNzKCRudW1iZXIpIHtcbiAgICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGEgbWVkaWEgdHlwZSwgc3BsaXQgdGhlIHF1ZXJ5XG4gICAgICBAaWYgYnJlYWtwb2ludC1pcy1tZWRpYSgkdmFsdWUpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDIpKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gSWYgaXQncyBub3QgYSBzaW5nbGUgZmVhdHVyZSwgd2UncmUganVzdCBnb2luZyB0byBhc3N1bWUgaXQncyBhIHByb3BlciBzdHJpbmcvdmFsdWUgcGFpciwgYW5kIHJvbGwgd2l0aCBpdC5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuXG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBudW1iZXJzLCB3ZSBhc3N1bWUgaXQncyBhIGRvdWJsZSBhbmQgcm9sbCB3aXRoIHRoYXRcbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSB7XG4gICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIHN0cmluZ3MgYW5kIG5laXRoZXIgYXJlIHNpbmdsZXMsIHdlIHJvbGwgd2l0aCB0aGF0LlxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7XG4gICAgLy8gSWYgd2UndmUgZ290IHRocmVlIGl0ZW1zIGFuZCBub25lIGlzIGEgbGlzdCwgd2UgY2hlY2sgdG8gc2VlXG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDMpKSAhPSAnbGlzdCcge1xuICAgICAgLy8gSWYgbm9uZSBvZiB0aGUgaXRlbXMgYXJlIHNpbmdsZSBzdHJpbmcgdmFsdWVzIGFuZCBub25lIG9mIHRoZSB2YWx1ZXMgYXJlIG1lZGlhIHZhbHVlcywgd2UncmUgZ29vZC5cbiAgICAgIEBpZiAobm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDMpKSkgYW5kICAoKG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAzKSkpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkZmVhdHVyZS1ob2xkZXIsIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gbGV0J3MgY2hlY2sgdG8gc2VlIGlmIHRoZSBmaXJzdCBpdGVtIGlzIGEgbWVkaWEgdHlwZVxuICAgICAgQGVsc2UgaWYgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAyKSwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlcik7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGl0ZW0sIG9yIGlmIGl0J3Mgbm90IGEgc3BlY2lhbCBjYXNlIGRvdWJsZSBvciB0cmlwbGUsIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSBxdWVyeS5cbiAgQHJldHVybiAkcXVlcnk7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInNpbmdsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGZlYXR1cmUgdGhhdCBjYW4gc3RhbmQgYWxvbmUsIHdlIGxldCBpdFxuICBAaWYgKGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkpIHtcbiAgICAkcGFyc2VkOiAkZmVhdHVyZTtcbiAgICAvLyBTZXQgQ29udGV4dFxuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkZmVhdHVyZSk7XG4gIH1cbiAgLy8gSWYgaXQncyBub3QgYSBzdGFuZCBhbG9uZSBmZWF0dXJlLCB3ZSBwYXNzIGl0IG9mZiB0byB0aGUgZGVmYXVsdCBoYW5kbGVyLlxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICcoJyArICRwYXJzZWQgKyAnKSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJyk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGRlZmF1bHQsICRmZWF0dXJlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSBhbmQgKHR5cGUtb2YoJGZlYXR1cmUpID09ICdudW1iZXInKSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7YnJlYWtwb2ludC10by1iYXNlLWVtKCRmZWF0dXJlKX0nO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3skZmVhdHVyZX0nO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0LXBhaXJcIjtcbkBpbXBvcnQgXCJkb3VibGUvZG91YmxlLXN0cmluZ1wiO1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAkZmlyc3Q6IG50aCgkZmVhdHVyZSwgMSk7XG4gICRzZWNvbmQ6IG50aCgkZmVhdHVyZSwgMik7XG5cbiAgLy8gSWYgd2UndmUgZ290IHR3byBudW1iZXJzLCB3ZSBrbm93IHdlIG5lZWQgdG8gdXNlIHRoZSBkZWZhdWx0IHBhaXIgYmVjYXVzZSB0aGVyZSBhcmUgbm8gbWVkaWEgcXVlcmllcyB0aGF0IGhhcyBhIG1lZGlhIGZlYXR1cmUgdGhhdCBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdudW1iZXInIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIHRoZXkgYXJlIGJvdGggc3RyaW5ncywgd2Ugc2VuZCBpdCB0aHJvdWdoIHRoZSBzdHJpbmcgcGFyc2VyXG4gIEBlbHNlIGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnc3RyaW5nJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpciwgd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgcGFpcicpO1xuICAkbWluOiAnJztcbiAgJG1heDogJyc7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZGVmYXVsdH0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZGVmYXVsdH0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZGVmYXVsdH06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGRlZmF1bHR9OiAjeyRtYXh9KSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgLy8gVGVzdCB0byBzZWUgd2hpY2ggaXMgdGhlIGZlYXR1cmUgYW5kIHdoaWNoIGlzIHRoZSB2YWx1ZVxuICBAaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmaXJzdCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkc2Vjb25kKSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiTmVpdGhlciAjeyRmaXJzdH0gbm9yICN7JHNlY29uZH0gaXMgYSB2YWxpZCBtZWRpYSBxdWVyeSBuYW1lLlwiO1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJztcbn0iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkdmFsdWU6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpO1xuICB9XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJ1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0cmlwbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcblxuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBzZXBhcmF0ZSB0aGUgc3RyaW5nIGZlYXR1cmVzIGZyb20gdGhlIHZhbHVlIG51bWJlcnNcbiAgJHN0cmluZzogbnVsbDtcbiAgJG51bWJlcnM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJGZlYXR1cmUge1xuICAgIEBpZiB0eXBlLW9mKCR2YWwpID09IHN0cmluZyB7XG4gICAgICAkc3RyaW5nOiAkdmFsO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgdHlwZS1vZigkbnVtYmVycykgPT0gJ251bGwnIHtcbiAgICAgICAgJG51bWJlcnM6ICR2YWw7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXJzOiBhcHBlbmQoJG51bWJlcnMsICR2YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJHN0cmluZywgbnRoKCRudW1iZXJzLCAxKSwgbnRoKCRudW1iZXJzLCAyKSk7XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcblxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJGZlYXR1cmUsICRmaXJzdCwgJHNlY29uZCkge1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGZlYXR1cmV9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGZlYXR1cmV9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGZlYXR1cmV9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRmZWF0dXJlfTogI3skbWF4fSknO1xufVxuIiwiQGltcG9ydCBcInJlc29sdXRpb24vcmVzb2x1dGlvblwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIGFuZCAkcXVlcnktcmVzb2x1dGlvbiB7XG4gICAgJHJlc29sdXRpb25zOiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHF1ZXJ5LXJlc29sdXRpb24pO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbnMpO1xuICAgICRxdWVyeS1ob2xkZXI6ICcnO1xuXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICRxdWVyeTogJyN7JHF1ZXJ5LXByaW50fSAjeyRsZWFkZXJ9I3tudGgoJHJlc29sdXRpb25zLCAkaSl9JztcbiAgICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJHF1ZXJ5O1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAnI3skcXVlcnktaG9sZGVyfSwgI3skcXVlcnl9JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIFJldHVybiB3aXRoIGF0dGFjaGVkIHJlc29sdXRpb25cbiAgICBAcmV0dXJuICRxdWVyeS1wcmludDtcbiAgfVxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcmVzb2x1dGlvbikge1xuICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb24pO1xuXG4gICRvdXRwdXQ6ICgpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgICRmZWF0dXJlOiAnJztcbiAgICAkdmFsdWU6ICcnO1xuXG4gICAgLy8gRmluZCB3aGljaCBpcyBudW1iZXJcbiAgICBAaWYgdHlwZS1vZihudGgoJHJlc29sdXRpb24sIDEpKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAyKTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgbWluL21heC9zdGFuZGFyZFxuICAgIEBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21pbi1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtaW4tJztcbiAgICB9XG4gICAgQGVsc2UgaWYgaW5kZXgoJHJlc29sdXRpb24sICdtYXgtcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWF4LSc7XG4gICAgfVxuXG4gICAgJHN0YW5kYXJkOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWV9KSc7XG5cbiAgICAvLyBJZiB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGRwcHgsXG4gICAgQGlmIHVuaXQoJHZhbHVlKSAhPSAnZHBweCcge1xuICAgICAgJGJhc2U6IDk2ZHBpO1xuICAgICAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZHBjbScge1xuICAgICAgICAkYmFzZTogMjQzLjg0ZHBjbTtcbiAgICAgIH1cbiAgICAgIC8vIFdyaXRlIG91dCBmZWF0dXJlIHRlc3RzXG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkZmFsbGJhY2s6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZSAvIDFkcHB4ICogOTZkcGl9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkZmFsbGJhY2ssIHNwYWNlKTtcbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW5vLXF1ZXJ5KCRxdWVyeSkge1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09ICdsaXN0JyB7XG4gICAgJGtleXdvcmQ6IG50aCgkcXVlcnksIDEpO1xuXG4gICAgQGlmIHR5cGUtb2YoJGtleXdvcmQpID09ICdzdHJpbmcnIGFuZCAoJGtleXdvcmQgPT0gJ25vLXF1ZXJ5JyBvciAka2V5d29yZCA9PSAnbm8gcXVlcnknIG9yICRrZXl3b3JkID09ICdmYWxsYmFjaycpIHtcbiAgICAgIEByZXR1cm4gbnRoKCRxdWVyeSwgMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgdGhlIEJyZWFrcG9pbnRzIHZhcmlhYmxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG4kQlJFQUtQT0lOVFM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlc3BvbmQtdG8gQVBJIE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiByZXNwb25kLXRvKCRjb250ZXh0LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA+IDAgYW5kIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtZXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGFkZCBicmVha3BvaW50cyBmb3IgcmVzcG9uZC10by4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KClgIHRvIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgpYC4gVGhlIGBhZGQtYnJlYWtwb2ludCgpYCBmdW5jdGlvbiB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIjtcbiAgICAkQlJFQUtQT0lOVFM6ICRicmVha3BvaW50cyAhZ2xvYmFsO1xuICAgICRicmVha3BvaW50czogKCkgIWdsb2JhbDtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRCUkVBS1BPSU5UUykgIT0gJ21hcCcge1xuICAgIC8vIEp1c3QgaW4gY2FzZSBzb21lb25lIHdyaXRlcyBnaWJiZXJpc2ggdG8gdGhlICRicmVha3BvaW50cyB2YXJpYWJsZS5cbiAgICBAd2FybiBcIllvdXIgYnJlYWtwb2ludHMgYXJlbid0IGEgbWFwISBgcmVzcG9uZC10b2AgZXhwZWN0cyBhIG1hcC4gUGxlYXNlIGNoZWNrIHRoZSB2YWx1ZSBvZiAkQlJFQUtQT0lOVFMgdmFyaWFibGUuXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFwLWdldCgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAd2FybiBcImAjeyRjb250ZXh0fWAgaXNuJ3QgYSBkZWZpbmVkIGJyZWFrcG9pbnQhIFBsZWFzZSBhZGQgaXQgdXNpbmcgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoYCN7JGNvbnRleHR9YCwgJHZhbHVlKTtgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiWW91IGhhdmVuJ3QgY3JlYXRlZCBhbnkgYnJlYWtwb2ludHMgeWV0ISBNYWtlIHNvbWUgYWxyZWFkeSEgYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdClgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBZGQgQnJlYWtwb2ludCB0byBCcmVha3BvaW50c1xuLy8gVE9ETzogUmVtb3ZlIGZ1bmN0aW9uIGluIG5leHQgcmVsZWFzZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPT0gMCB7XG4gICAgQHJldHVybiAkb3V0cHV0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgIEByZXR1cm4gJGJyZWFrcG9pbnRzO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgIEByZXR1cm4gbWFwLW1lcmdlKCRicmVha3BvaW50cywgJG91dHB1dCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICAkQlJFQUtQT0lOVFM6ICRvdXRwdXQgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICAkQlJFQUtQT0lOVFM6ICRCUkVBS1BPSU5UUyAhZ2xvYmFsO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgICRCUkVBS1BPSU5UUzogbWFwLW1lcmdlKCRCUkVBS1BPSU5UUywgJG91dHB1dCkgIWdsb2JhbDtcbiAgICB9XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGdldC1icmVha3BvaW50KCRuYW1lOiBmYWxzZSkge1xuICBAaWYgJG5hbWUgPT0gZmFsc2Uge1xuICAgIEByZXR1cm4gJEJSRUFLUE9JTlRTO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkbmFtZSk7XG4gIH1cbn1cbiIsIkBtaXhpbiBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZyB7XG4gICRsZWdhY3lWYXJzOiAoXG4gICAgJ2RlZmF1bHQtbWVkaWEnOiAnZGVmYXVsdCBtZWRpYScsXG4gICAgJ2RlZmF1bHQtZmVhdHVyZSc6ICdkZWZhdWx0IGZlYXR1cmUnLFxuICAgICdmb3JjZS1tZWRpYS1hbGwnOiAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLFxuICAgICd0by1lbXMnOiAndG8gZW1zJyxcbiAgICAncmVzb2x1dGlvbnMnOiAndHJhbnNmb3JtIHJlc29sdXRpb25zJyxcbiAgICAnbm8tcXVlcmllcyc6ICdubyBxdWVyaWVzJyxcbiAgICAnbm8tcXVlcnktZmFsbGJhY2tzJzogJ25vIHF1ZXJ5IGZhbGxiYWNrcycsXG4gICAgJ2Jhc2UtZm9udC1zaXplJzogJ2Jhc2UgZm9udCBzaXplJyxcbiAgICAnbGVnYWN5LXN5bnRheCc6ICdsZWdhY3kgc3ludGF4J1xuICApO1xuXG4gIEBlYWNoICRsZWdhY3ksICRuZXcgaW4gJGxlZ2FjeVZhcnMge1xuICAgIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LScgKyAkbGVnYWN5KSB7XG4gICAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGNoYW5nZSBzZXR0aW5ncyBmb3IgQnJlYWtwb2ludC4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludC0jeyRsZWdhY3l9OiB7e3NldHRpbmd9fWAgdG8gYEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCcjeyRuZXd9Jywge3tzZXR0aW5nfX0pYC4gVmFyaWFibGUgc2V0dGluZ3MsIGFzIHdlbGwgYXMgdGhpcyB3YXJuaW5nIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiXG4gICAgfVxuICB9O1xuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBIYW5kIGNvcnJlY3QgZWFjaCBzZXR0aW5nXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgbWVkaWEnLCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgZmVhdHVyZScsICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsJykgYW5kICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCAhPSBicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJywgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC10by1lbXMnKSBhbmQgJGJyZWFrcG9pbnQtdG8tZW1zICE9IGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RvIGVtcycsICRicmVha3BvaW50LXRvLWVtcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtcmVzb2x1dGlvbnMnKSBhbmQgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMgIT0gYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJywgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJpZXMnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcmllcycsICRicmVha3BvaW50LW5vLXF1ZXJpZXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcnkgZmFsbGJhY2tzJywgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZScpIGFuZCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSAhPSBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2Jhc2UgZm9udCBzaXplJywgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWxlZ2FjeS1zeW50YXgnKSBhbmQgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCAhPSBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbGVnYWN5IHN5bnRheCcsICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXgpO1xuICB9XG59IiwiQGltcG9ydCBcImZ1bmN0aW9uc1wiO1xuQGltcG9ydCBcInotaW5kZXhcIjtcbkBpbXBvcnQgXCJtZWRpYS1xdWVyaWVzXCI7XG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XG5AaW1wb3J0IFwidW5pYm9hcmRcIjtcbkBpbXBvcnQgXCJtaXhpbnNcIjtcbkBpbXBvcnQgXCJleHRlbmRzXCI7XG5AaW1wb3J0IFwiZmxleFwiO1xuQGltcG9ydCBcImJveFwiO1xuQGltcG9ydCBcImZsdWlkLXNpemVcIjtcbiIsIi8vLyBaLWluZGV4ZXMgbWFwLCBnYXRoZXJpbmcgYWxsIFogbGF5ZXJzIG9mIHRoZSBhcHBsaWNhdGlvblxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEB0eXBlIE1hcFxuLy8vIEBwcm9wIHtTdHJpbmd9IGtleSAtIExheWVy4oCZcyBuYW1lXG4vLy8gQHByb3Age051bWJlcn0gdmFsdWUgLSBaIHZhbHVlIG1hcHBlZCB0byB0aGUga2V5XG4kei1pbmRleGVzOiAoXCJjZ19fcHJvbW90aW9uXCI6IDIwNSwgXCJjZ19fcGllY2UuZHJhZ2dpbmdcIjogMjA0LCBcImNnX19waWVjZS5hbmltXCI6IDMsIFwiY2dfX3N2Z1wiOiAyLCBcImNnX19waWVjZVwiOiAyLCBcImNnX19waWVjZS5mYWRpbmdcIjogMSwgXCJwb3dlcnRpcFwiOiAxMjAsIFwiaW5xdWlyeVwiOiAxMTEsIFwiemVuLXRvZ2dsZVwiOiAxMTAsIFwibW9kYWxcIjogMTEwLCBcIm1zZWxlY3RcIjogMTEwLCBcInRvcG5hdlwiOiAxMTAsIFwiZnVsbHNjcmVlbi1tYXNrXCI6IDEwOSwgXCJkcm9wZG93blwiOiAxMDgsIFwiY29udGV4dC1tZW51XCI6IDEwNywgXCJzaXRlLWhlYWRlclwiOiAxMDYsIFwicmVjb25uZWN0aW5nXCI6IDEwNSwgXCJ0b3VyLXJlbWluZGVyXCI6IDEwNCwgXCJuYWctY2lyY2xlXCI6IDEwMywgXCJtei1tZW51XCI6IDQsIFwiYWJvdmUtbGluay1vdmVybGF5XCI6IDMsIFwiZnJpZW5kLWJveFwiOiAyLCBcImxpbmstb3ZlcmxheVwiOiAyLCBcImdhbWUtYm9va21hcmtcIjogMiwgXCJzdWJuYXYtc2lkZVwiOiAyLCBcImRlZmF1bHRcIjogMCk7XG5cbi8vLyBHZXQgYSB6LWluZGV4IHZhbHVlIGZyb20gYSBsYXllciBuYW1lXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGxheWVyIC0gTGF5ZXLigJlzIG5hbWVcbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XG4vLy8gQHJlcXVpcmUgJHotaW5kZXhlc1xuQGZ1bmN0aW9uIHooJGxheWVyKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkei1pbmRleGVzLCAkbGF5ZXIpO1xufVxuIiwiLyogV2lkdGhzICovXG5cbiRtcS14eC1zbWFsbDogbWluLXdpZHRoIDUwMHB4O1xuJG1xLXgtc21hbGw6IG1pbi13aWR0aCA2NTBweDtcbiRtcS1zbWFsbDogbWluLXdpZHRoIDgwMHB4O1xuJG1xLW1lZGl1bTogbWluLXdpZHRoIDk4MHB4O1xuJG1xLWxhcmdlOiBtaW4td2lkdGggMTEyMHB4O1xuJG1xLXgtbGFyZ2U6IG1pbi13aWR0aCAxMjYwcHg7XG5cbiRtcS1ub3QteHgtc21hbGw6IG1heC13aWR0aCA0OTlweDtcbiRtcS1ub3QteC1zbWFsbDogbWF4LXdpZHRoIDY0OXB4O1xuJG1xLW5vdC1zbWFsbDogbWF4LXdpZHRoIDc5OXB4O1xuJG1xLW5vdC1tZWRpdW06IG1heC13aWR0aCA5NzlweDtcbiRtcS1ub3QteC1sYXJnZTogbWF4LXdpZHRoIDEyNTlweDtcblxuLyogSGVpZ2h0cyAqL1xuXG4kbXEteC1zaG9ydDogbWluLWhlaWdodCA0MDBweDtcbiRtcS1zaG9ydDogbWluLWhlaWdodCA1MDBweDtcbiRtcS10YWxsOiBtaW4taGVpZ2h0IDYwMHB4O1xuJG1xLXgtdGFsbDogbWluLWhlaWdodCA3MDBweDtcblxuJG1xLW5vdC14LXNob3J0OiBtYXgtaGVpZ2h0IDM5OXB4O1xuXG4vKiBPcmllbnRhdGlvbnMgKi9cblxuJG1xLXBvcnRyYWl0OiBvcmllbnRhdGlvbiBwb3J0cmFpdDtcbiRtcS1sYW5kc2NhcGU6IG9yaWVudGF0aW9uIGxhbmRzY2FwZTtcblxuLyogQ2FwYWJpbGl0aWVzICovXG5cbiRtcS1ob3Zlci15ZXM6IFwiaG92ZXI6IGhvdmVyXCI7XG4kbXEtaG92ZXItbm86IGhvdmVyIG5vbmU7XG5cbi8qIEFsaWFzZXMgKi9cblxuJG1xLW1haW4tbWFyZ2luOiAkbXEtc21hbGw7XG5cbiRtcS10b3BuYXYtdmlzaWJsZTogJG1xLW1lZGl1bTtcbiRtcS10b3BuYXYtaGlkZGVuOiAkbXEtbm90LW1lZGl1bTtcblxuJG1xLXNpdGUtaGVhZGVyLXRhbGw6ICRtcS10YWxsO1xuXG4kbXEtc3VibmF2LXRvcDogJG1xLW5vdC1zbWFsbDtcbiRtcS1zdWJuYXYtc2lkZTogJG1xLXNtYWxsO1xuXG4kbXEtem9vbS1lbmFibGVkOiAkbXEtc21hbGwgJG1xLXNob3J0O1xuIiwiJGRlYnVnOiBmYWxzZTtcblxuJGZvbnQtcGF0aDogXCIuLi9mb250XCI7XG4kaW1nLXBhdGg6IFwiLi4vaW1hZ2VzXCI7XG5cbiR2aWV3cG9ydC1taW4td2lkdGg6IDMyMHB4O1xuXG4kYmxvY2stZ2FwOiAydm1pbjtcbiRibG9jay1nYXAtaGFsZjogMXZtaW47XG5cbiRibG9jay1nYXAtaDogMnZoO1xuJGJsb2NrLWdhcC13OiAydnc7XG4kYmxvY2stZ2FwLXctaGFsZjogMXZ3O1xuXG4kYm94LXJhZGl1cy1zaXplOiAzcHg7XG5cbiRzaXRlLWhlYWRlci10YWxsLWhlaWdodDogNjBweDtcbiRzaXRlLWhlYWRlci1zaG9ydC1oZWlnaHQ6IDQwcHg7XG5cbiR0cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtcztcblxuJG1haW4tbWF4LXdpZHRoOiAxMzAwcHggIWRlZmF1bHQ7XG5cbiRtYWluLW1hcmdpbjogdmFyKC0tbWFpbi1tYXJnaW4pO1xuJHNpdGUtaGVhZGVyLWhlaWdodDogdmFyKC0tc2l0ZS1oZWFkZXItaGVpZ2h0KTtcblxuJHNpdGUtaGVhZGVyLW1hcmdpbjogdmFyKC0tc2l0ZS1oZWFkZXItbWFyZ2luKTtcblxuJHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodDogY2FsYygjeyRzaXRlLWhlYWRlci1oZWlnaHR9ICsgI3skc2l0ZS1oZWFkZXItbWFyZ2lufSk7XG4iLCIvKiBVbmlib2FyZDoga2VlcCB0aGUgc2FtZSBwYWdlIGxheW91dCBhY2Nyb3NzIHBhZ2VzICovXG5cbiRtcS1ib2FyZC1yZXNpemFibGU6ICRtcS1zbWFsbDtcbiRtcS1jb2wxLXVuaWJvYXJkOiAkbXEtbm90LXNtYWxsICRtcS1wb3J0cmFpdDtcbiRtcS1jb2wyLXVuaWJvYXJkOiAkbXEtc21hbGwsICRtcS1sYW5kc2NhcGU7XG4kbXEtY29sMy11bmlib2FyZDogJG1xLXgtbGFyZ2U7XG5cbi8qIHdoZW4gdGhlIHdpZHRoIGlzIGFwcHJvcHJpYXRlIGZvciBjb2wxLCBidXQgbGFuZHNjYXBlIHByZXZlbnRzIGl0ICovXG4kbXEtY29sMi11bmlib2FyZC1zcXVlZXplOiAkbXEtbm90LXNtYWxsICRtcS1sYW5kc2NhcGU7XG5cbiRjb2wzLXVuaWJvYXJkLXNpZGU6IG1pbm1heCgyMzBweCwgMjB2dyk7XG4kY29sMy11bmlib2FyZC10YWJsZTogbWlubWF4KDI0MHB4LCA0MDBweCk7XG4kY29sMy11bmlib2FyZC1jb250cm9sczogM3JlbTtcblxuJGNvbDMtdW5pYm9hcmQtbWluLXdpZHRoOiBjYWxjKDcwdm1pbiAqIHZhcigtLWJvYXJkLXNjYWxlKSk7XG4kY29sMy11bmlib2FyZC1tYXgtd2lkdGg6IGNhbGMoMTAwdmggKiB2YXIoLS1ib2FyZC1zY2FsZSkgLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMy11bmlib2FyZC1jb250cm9sc30pO1xuJGNvbDMtdW5pYm9hcmQtd2lkdGg6IG1pbm1heCgkY29sMy11bmlib2FyZC1taW4td2lkdGgsICRjb2wzLXVuaWJvYXJkLW1heC13aWR0aCk7XG5cbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtc2NhbGU6IDAuOTtcblxuLy8gem9vbTogODUlXG4kY29sMy11bmlib2FyZC1kZWZhdWx0LW1pbi13aWR0aDogNTAwcHg7XG4kY29sMy11bmlib2FyZC1kZWZhdWx0LW1heC13aWR0aDogY2FsYygxMDB2aCAqICN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1zY2FsZX0gLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMy11bmlib2FyZC1jb250cm9sc30pO1xuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aDogbWlubWF4KCN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1taW4td2lkdGh9LCAjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWF4LXdpZHRofSk7XG5cbiRjb2wyLXVuaWJvYXJkLXRhYmxlOiAkY29sMy11bmlib2FyZC10YWJsZTtcbiRjb2wyLXVuaWJvYXJkLWNvbnRyb2xzOiAkY29sMy11bmlib2FyZC1jb250cm9scztcbiRjb2wyLXVuaWJvYXJkLXdpZHRoOiAkY29sMy11bmlib2FyZC13aWR0aDtcbiRjb2wyLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg6ICRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg7XG5cbiRjb2wyLXVuaWJvYXJkLXNxdWVlemUtdGFibGU6IG1pbm1heCgyMDBweCwgMjQwcHgpO1xuJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS13aWR0aDogbWlubWF4KGNhbGMoNTV2bWluKSwgY2FsYygxMDB2aCAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRibG9jay1nYXB9KSk7XG5cbiRjb2wxLXVuaWJvYXJkLWNvbnRyb2xzOiAkY29sMi11bmlib2FyZC1jb250cm9scztcbiIsIkBtaXhpbiBib3gtcmFkaXVzIHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuQG1peGluIGJveC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAkYm94LXNoYWRvdztcbn1cblxuQG1peGluIGJveC1uZWF0IHtcbiAgQGluY2x1ZGUgYm94LXJhZGl1cztcbiAgQGluY2x1ZGUgYm94LXNoYWRvdztcbn1cblxuQG1peGluIGRlYnVnLXpvb20taW5wdXQge1xuICAjem9vbS1pbnB1dCB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXpvb20tZW5hYmxlZCkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBib3R0b206IDNweDtcbiAgICAgIHJpZ2h0OiAzcHg7XG4gICAgICB3aWR0aDogMTB2dztcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRyYW5zaXRpb24oJHByb3A6IGFsbCwgJGR1cjogJHRyYW5zaXRpb24tZHVyYXRpb24pIHtcbiAgdHJhbnNpdGlvbjogJHByb3AgJGR1cjtcbn1cblxuQG1peGluIGhvdmVyZmxvdyB7XG4gIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgLmJsaW5kLW1vZGUgJiB7XG4gICAgZGlzcGxheTogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gZWxsaXBzaXMge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuQG1peGluIGNyb3NzdGFibGUtbGFyZ2Uge1xuICAuY3Jvc3N0YWJsZV9fdXNlcnMge1xuICAgIGZsZXg6IDcgMSBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBjcm9zc3RhYmxlLXNtYWxsIHtcbiAgLmNyb3NzdGFibGVfX3VzZXJzIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxufVxuXG4vKiBhdG0gb25seSBjaHJvbWUgc3VwcG9ydHMgbWluLWNvbnRlbnQsIG1heC1jb250ZW50ICovXG5AbWl4aW4gcHJvcGVyLWdyaWQge1xuICBAc3VwcG9ydHMgKGhlaWdodDogbWF4LWNvbnRlbnQpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gYm9keS1maXhlZC1zY3JvbGwge1xuICBib2R5IHtcbiAgICAvKiBwcmV2ZW50cyBzY3JvbGwgYmFyIGZsaWNrZXIgd2hlbiBkcmFnZ2luZyBhIHBpZWNlIG91dCAqL1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgfVxufVxuIiwiJWJhc2UtZm9udC1mYWxsYmFjayB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJywgU2Fucy1TZXJpZjtcbn1cblxuJWJhc2UtZm9udCB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJztcbn1cblxuJXJvYm90byB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbn1cblxuJXJvYm90by1mYXQge1xuICBmb250LWZhbWlseTogJ1JvYm90byc7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbiVjaGVzcy1mb250IHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIENoZXNzJywgJ05vdG8gU2Fucyc7XG59XG5cbiVzYW4ge1xuICBAZXh0ZW5kICVjaGVzcy1mb250O1xuXG4gIC5waWVjZS1sZXR0ZXIgJiB7XG4gICAgQGV4dGVuZCAlYmFzZS1mb250O1xuICB9XG59XG5cbi8qIHRleHQgcHJpbnRlZCBkaXJlY3RseSBvbiB0aGUgcGFnZSBiYWNrZ3JvdW5kIGRlc2VydmVzIHNwZWNpYWwgdHJlYXRtZW50ICh0cmFuc3AgdGhlbWUpICovXG4lcGFnZS1mb250IHtcbiAgY29sb3I6ICRjLWZvbnQtcGFnZTtcbn1cblxuJXBhZ2UtdGV4dCB7XG4gIEBleHRlbmQgJXBhZ2UtZm9udCwgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xufVxuXG4lcGFnZS1saW5rIHtcbiAgQGV4dGVuZCAlcGFnZS1saW5rLWZvbnQgIW9wdGlvbmFsO1xuXG4gIEBleHRlbmQgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xufVxuXG4lbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbDtcbn1cblxuJW1ldGFsLWhvdmVyIHtcbiAgQGluY2x1ZGUgbWV0YWwtaG92ZXI7XG59XG5cbiVwYWdlLW1ldGFsIHtcbiAgQGluY2x1ZGUgcGFnZS1tZXRhbDtcbn1cblxuJXBhZ2UtbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBwYWdlLW1ldGFsO1xufVxuXG4lbWV0YWwtYmcge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcbn1cblxuJWFjdGl2ZS1pbnNldC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDNweCA0cHggaHNsYSgwLCAwLCAwLCAwLjE1KSBpbnNldDtcbn1cblxuJWFjdGl2ZSB7XG4gIEBleHRlbmQgJWFjdGl2ZS1pbnNldC1zaGFkb3c7XG5cbiAgYmFja2dyb3VuZDogI2JkMTExZjtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtc2hhZG93OiAxcHggMXB4IDFweCB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4jdHJhaW5lciBncm91cC5yYWRpbyBpbnB1dDpjaGVja2VkICsgbGFiZWx7XG4gIGJhY2tncm91bmQ6ICMwNDU2YmM7XG59XG5cbiVhY3RpdmUtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBtaXgod2hpdGUsICRjLWFjY2VudCwgMjAlKTtcbn1cblxuJWFjdGl2ZS1zb2Z0IHtcbiAgQGV4dGVuZCAlYWN0aXZlLWluc2V0LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAjMDQ1NmJjO1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMXB4ICRjLWZvbnQtc2hhZG93ICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4lZHJvcGRvd24tc2hhZG93IHtcbiAgYm94LXNoYWRvdzogLTFweCA1cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbn1cblxuJXBvcHVwLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMTRweCAyOHB4IHJnYmEoMCwgMCwgMCwgMC4yNSksIDAgMTBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yMik7XG59XG5cbiVidXR0b24tc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAycHggNXB4IDAgaHNsYSgwLCAwLCAwJSwgMC4yMjUpO1xufVxuXG4lYnV0dG9uLXJhaXNlZC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDRweCAxMHB4IDBweCBoc2xhKDAsIDAsIDAsIDAuMjI1KTtcbn1cblxuJWJ1dHRvbi1ub25lIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBjb2xvcjogJGMtZm9udDtcbn1cblxuJWNoZWNrYm94IHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICRjLWJnLXBhZ2U7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRjLWJnLWxvdztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAuNWVtO1xuXG4gICY6Y2hlY2tlZCB7XG4gICAgYmFja2dyb3VuZDogIzA0NTZiYztcbiAgICBib3JkZXItY29sb3I6ICMwNDU2YmM7XG4gIH1cbn1cblxuJWZvY3VzLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMCAxMnB4ICRjLWZvbnQtZGltO1xufVxuXG4lbm93cmFwLWhpZGRlbiB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbiVub3dyYXAtZWxsaXBzaXMge1xuICBAZXh0ZW5kICVlbGxpcHNpcztcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4lYm94LXBhZGRpbmcge1xuICBwYWRkaW5nOiA1dmggdmFyKC0tYm94LXBhZGRpbmcpO1xufVxuXG4lYm94LXBhZGRpbmctaG9yaXoge1xuICBwYWRkaW5nOiAwIHZhcigtLWJveC1wYWRkaW5nKTtcbn1cblxuJWJyZWFrLXdvcmQge1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG4lYnJlYWstd29yZC1oYXJkIHtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xuXG4gIC8qIHN1cHBvcnQ6IGZpcmVmb3ggKi9cbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cblxuJWJyZWFrLW5vcGUge1xuICBvdmVyZmxvdy13cmFwOiBub3JtYWw7XG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcbn1cblxuJWVsbGlwc2lzIHtcbiAgQGluY2x1ZGUgZWxsaXBzaXM7XG59XG5cbiVzcXVhcmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cblxuJXZpZGVvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwO1xuICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlO1xuXG4gIC8qIDE2LzkgKi9cbiAgLy8gcGFkZGluZy1ib3R0b206IDc1JTsgLyogNC8zICovXG4gIHdpZHRoOiAxMDAlO1xuXG4gID4gKiB7XG4gICAgQGV4dGVuZCAlYWJzLTEwMDtcblxuICAgIGJvcmRlcjogbm9uZTtcbiAgfVxufVxuXG4lZGF0YS1pY29uIHtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZm9udC1mYW1pbHk6ICdsaWNoZXNzJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgc3BlYWs6IG5vbmU7XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1pY29uKTtcbiAgb3BhY2l0eTogMC45O1xufVxuXG4lZGF0YS1pY29uLXRvcCB7XG4gICY6OmJlZm9yZSB7XG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xuICB9XG59XG5cbiVmdWxsc2NyZWVuLW1hc2sge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZDogJGMtcGFnZS1tYXNrO1xuICB6LWluZGV4OiB6KFwiZnVsbHNjcmVlbi1tYXNrXCIpO1xufVxuXG4lbGluay1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6IHooXCJsaW5rLW92ZXJsYXlcIik7XG59XG5cbiVhYnMtMTAwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuIiwiJWZsZXgtd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG59XG5cbiVmbGV4LWNlbnRlciB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtd3JhcCAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1jZW50ZXItbm93cmFwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1iZXR3ZWVuIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLW5vd3JhcCB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLXN0cmV0Y2gge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xufVxuXG4lZmxleC1hcm91bmQge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbn1cblxuJWZsZXgtY29sdW1uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW47XG59XG4iLCIlYm94LXJhZGl1cyB7XG4gIEBpbmNsdWRlIGJveC1yYWRpdXM7XG59XG5cbiVib3gtcmFkaXVzLWZvcmNlIHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC8qIGhlbHBzIHdpdGggY2xpcHBpbmcgYmFja2dyb3VuZCBpbnRvIGJvcmRlci1yYWRpdXMgKi9cbn1cblxuJWJveC1yYWRpdXMtbGVmdCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgMCAwICRib3gtcmFkaXVzLXNpemU7XG59XG5cbiVib3gtcmFkaXVzLXJpZ2h0IHtcbiAgYm9yZGVyLXJhZGl1czogMCAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemUgMDtcbn1cblxuJWJveC1yYWRpdXMtdG9wIHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplIDAgMDtcbn1cblxuJWJveC1yYWRpdXMtYm90dG9tIHtcbiAgYm9yZGVyLXJhZGl1czogMCAwICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuJWJveC1yYWRpdXMtdG9wLWxlZnQge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplIDAgMCAwO1xufVxuXG4lYm94LXJhZGl1cy10b3AtcmlnaHQge1xuICBib3JkZXItcmFkaXVzOiAwICRib3gtcmFkaXVzLXNpemUgMCAwO1xufVxuXG4lYm94LXNoYWRvdyB7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3c7XG59XG5cbiVib3gtbmVhdCB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzO1xufVxuXG4lYm94LW5lYXQtdG9wIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXMtdG9wO1xufVxuXG4lYm94LW5lYXQtZm9yY2Uge1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cy1mb3JjZTtcbn1cbiIsIiR2cC1taW4td2lkdGg6IDMyMHB4ICFkZWZhdWx0O1xuJHZwLW1heC13aWR0aDogMTIwMHB4ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkdmFsdWUpIHtcbiAgQHJldHVybiAkdmFsdWUgLyAoJHZhbHVlICogMCArIDEpO1xufVxuXG5AbWl4aW4gZmx1aWQtc2l6ZSgkcHJvcCwgJG1pbi1zaXplLCAkbWF4LXNpemUsICRtaW4tdnc6ICR2cC1taW4td2lkdGgsICRtYXgtdnc6ICR2cC1tYXgtd2lkdGgpIHtcbiAgJHUxOiB1bml0KCRtaW4tdncpO1xuICAkdTI6IHVuaXQoJG1heC12dyk7XG4gICR1MzogdW5pdCgkbWluLXNpemUpO1xuICAkdTQ6IHVuaXQoJG1heC1zaXplKTtcblxuICBAaWYgJHUxID09ICR1MiBhbmQgJHUxID09ICR1MyBhbmQgJHUxID09ICR1NCB7XG4gICAgJiB7XG4gICAgICAjeyRwcm9wfTogJG1pbi1zaXplO1xuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbi12dykge1xuICAgICAgICAjeyRwcm9wfTogY2FsYygjeyRtaW4tc2l6ZX0gKyAje3N0cmlwLXVuaXQoJG1heC1zaXplIC0gJG1pbi1zaXplKX0gKiAoKDEwMHZ3IC0gI3skbWluLXZ3fSkgLyAje3N0cmlwLXVuaXQoJG1heC12dyAtICRtaW4tdncpfSkpO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1heC12dykge1xuICAgICAgICAjeyRwcm9wfTogJG1heC1zaXplO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGVycm9yIFwiZmx1aWQtc2l6ZSByZXF1aXJlcyB0aGF0IGFsbCB2YWx1ZXMgaGF2ZSB0aGUgc2FtZSB1bml0XCI7XG4gIH1cbn1cbiIsIiVmaXJlLXRyb3BoeS1zaGFkb3cge1xuICB0ZXh0LXNoYWRvdzogMCAuMDA4ZW0gLjEyN2VtICNmZWZjYzksIC4wNTVlbSAtLjA2NmVtIC4yZW0gI2ZlZWM4NSwgLS4xMTFlbSAtLjEyN2VtIC4yNzJlbSAjZmZhZTM0LCAuMTExZW0gLS4yNzJlbSAuNDExZW0gI2VjNzYwYywgLS4xMTFlbSAtLjQ1NmVtIC40MTZlbSAjY2Q0NjA2LCAwIC0uNTMzZW0gLjU3N2VtICM5NzM3MTYsIC4wNTVlbSAtLjU1ZW0gLjUzM2VtICM0NTFiMGU7XG59XG5cbkBrZXlmcmFtZXMgZmlyZS10cm9waHkge1xuICAwJSB7XG4gICAgdGV4dC1zaGFkb3c6IDAgLjAwOGVtIC4xMjdlbSAjZmVmY2M5LCAuMDU1ZW0gLS4wNjZlbSAuMmVtICNmZWVjODUsIC0uMTExZW0gLS4xMjdlbSAuMjcyZW0gI2ZmYWUzNCwgLjExMWVtIC0uMjcyZW0gLjQxMWVtICNlYzc2MGMsIC0uMTExZW0gLS40NTZlbSAuNDE2ZW0gI2NkNDYwNiwgMCAtLjUzM2VtIC41NzdlbSAjOTczNzE2LCAuMDU1ZW0gLS41NWVtIC41MzNlbSAjNDUxYjBlO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdGV4dC1zaGFkb3c6IDAgMCAuMTExZW0gI2ZlZmNjOSwgLjA1NWVtIC0uMDU1ZW0gLjE2NmVtICNmZWZjYzksIC0uMTExZW0gLS4xMTFlbSAuMjIyZW0gI2ZlZWM4NSwgLjEyMmVtIC0uMjMzZW0gLjMzM2VtICNmZmFlMzQsIC0uMTIyZW0gLS4zMjJlbSAuMjc3ZW0gI2VjNzYwYywgMCAtLjQ1NmVtIC40NDRlbSAjY2Q0NjA2LCAuMDU1ZW0gLS41ZW0gLjQ0NGVtICM5NzM3MTY7XG4gIH1cbn1cblxuLmZpcmUtdHJvcGh5IHtcbiAgQGV4dGVuZCAlZmlyZS10cm9waHktc2hhZG93O1xuXG4gIGNvbG9yOiAkYy1mb250O1xuICBmb250LXNpemU6IDkwcHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuXG4gICY6aG92ZXIge1xuICAgIGFuaW1hdGlvbjogZmlyZS10cm9waHkgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7XG4gIH1cbn1cbiIsIi5ub3ctcGxheWluZyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIC0tbnAtbWluLXdpZHRoOiAyMDBweDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteHgtc21hbGwpIHtcbiAgICAtLW5wLW1pbi13aWR0aDogNTAlO1xuICB9XG5cblxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCh2YXIoLS1ucC1taW4td2lkdGgpLCAxZnIpKTtcblxuICA+IGEge1xuICAgIGNvbG9yOiAkYy1mb250O1xuICAgIHBhZGRpbmc6IC4zZW07XG4gIH1cblxuICAuaW5kaWNhdG9yIHtcbiAgICBjb2xvcjogJGMtYWNjZW50O1xuICAgIG1hcmdpbi10b3A6IC0zcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICBjZy1ib2FyZCB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxufVxuIiwiLmhvdmVyLXRleHQge1xuICAmOjphZnRlciB7XG4gICAgY29udGVudDogYXR0cih0aXRsZSk7XG4gIH1cblxuICAmOmhvdmVyOjphZnRlciB7XG4gICAgY29udGVudDogYXR0cihkYXRhLWhvdmVyLXRleHQpO1xuICB9XG59XG4iLCJAaW5jbHVkZSBjcm9zc3RhYmxlLXNtYWxsO1xuXG4uY3Jvc3N0YWJsZSB7XG4gIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlO1xuXG4gIHdpZHRoOiAxMDAlO1xuICBsaW5lLWhlaWdodDogMS45ZW07XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgZmlsbCxcbiAgcG92cyB7XG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5cbiAgcG92cyxcbiAgJl9fdXNlcnMsXG4gICZfX3Njb3JlLFxuICAmX19tYXRjaHVwIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gICZfX3VzZXJzLFxuICAmX19zY29yZSB7XG4gICAgQGV4dGVuZCAlbWV0YWw7XG4gIH1cblxuICAmX191c2VycyB7XG4gICAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgICBtYXgtd2lkdGg6IDQwdnc7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgIGEge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkYmxvY2stZ2FwO1xuICAgIH1cbiAgfVxuXG4gICZfX3Njb3JlIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBmb250LXdlaWdodDogYm9sZDtcblxuICAgIHNwYW4ge1xuICAgICAgcGFkZGluZzogMCAkYmxvY2stZ2FwO1xuICAgIH1cbiAgfVxuXG4gICZfX21hdGNodXAge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDIwJSk7XG4gIH1cblxuICBwb3ZzIHtcbiAgICBhIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICBAZXh0ZW5kICVtZXRhbDtcblxuICAgICAgYSB7XG4gICAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhLmxvc3Mge1xuICAgICAgb3BhY2l0eTogLjI7XG4gICAgfVxuXG4gICAgJi5jdXJyZW50IGEge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWFjY2VudCwgJGMtYmctYm94LCA3MCUpO1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgJi5uZXcge1xuICAgICAgYm9yZGVyOiAkYy1ib3JkZXI7XG4gICAgfVxuXG4gICAgYS5sb3NzIHtcbiAgICAgIG9wYWNpdHk6IC4yO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW5vdC14LXNtYWxsKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAmOm50aC1sYXN0LWNoaWxkKC1uKzEyKSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnNlcCB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cy1sZWZ0O1xuXG4gICAgYm9yZGVyLWxlZnQ6ICRib3JkZXI7XG4gICAgbWFyZ2luLWxlZnQ6IC4zZW07XG4gIH1cblxuICAud2luIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogJGMtZ29vZDtcbiAgfVxuXG4gIC5sb3NzIHtcbiAgICBjb2xvcjogJGMtYmFkO1xuICB9XG5cbiAgLnVuYXZhaWxhYmxlIHtcbiAgICBtYXJnaW4tdG9wOiA0MHB4O1xuICAgIG9wYWNpdHk6IDAuNztcbiAgfVxufVxuIiwiLmZsYXNoIHtcbiAgbWFyZ2luOiAxZW0gMCAyZW0gMDtcblxuICAmX19jb250ZW50IHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gICAgcGFkZGluZzogMWVtIDJlbTtcbiAgICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICAgIGNvbG9yOiAkYy1nb29kLW92ZXI7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgQGV4dGVuZCAlZGF0YS1pY29uO1xuXG4gICAgICBjb250ZW50OiAnRSc7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICBjb2xvcjogJGMtZ29vZC1vdmVyO1xuICAgIH1cbiAgfVxuXG4gICYtd2FybmluZyAuZmxhc2hfX2NvbnRlbnQge1xuICAgIGJhY2tncm91bmQ6ICRjLXdhcm47XG4gICAgY29sb3I6ICRjLXdhcm4tb3ZlcjtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBAZXh0ZW5kICVkYXRhLWljb247XG5cbiAgICAgIGNvbnRlbnQ6ICfugIUnO1xuICAgIH1cbiAgfVxuXG4gICYtZmFpbHVyZSAuZmxhc2hfX2NvbnRlbnQge1xuICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgICBjb2xvcjogJGMtYmFkLW92ZXI7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgQGV4dGVuZCAlZGF0YS1pY29uO1xuXG4gICAgICBjb250ZW50OiAnaic7XG4gICAgfVxuICB9XG59XG4iLCIuY21uLXRvZ2dsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLWxlZnQ6IC05OTk5OXB4O1xufVxuXG4uY21uLXRvZ2dsZSArIGxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xufVxuXG4uY21uLXRvZ2dsZSArIGxhYmVsIHtcbiAgcGFkZGluZzogMXB4O1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6IDI0cHg7XG59XG5cbi5jbW4tdG9nZ2xlICsgbGFiZWw6OmJlZm9yZSxcbi5jbW4tdG9nZ2xlICsgbGFiZWw6OmFmdGVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxcHg7XG4gIGxlZnQ6IDFweDtcbiAgYm90dG9tOiAxcHg7XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG5cbi5jbW4tdG9nZ2xlICsgbGFiZWw6OmJlZm9yZSB7XG4gIHJpZ2h0OiAxcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjLWJhZDtcbiAgYm9yZGVyLXJhZGl1czogMjRweDtcbn1cblxuLmNtbi10b2dnbGU6Zm9jdXMgKyBsYWJlbDo6YmVmb3JlIHtcbiAgQGV4dGVuZCAlZm9jdXMtc2hhZG93O1xufVxuXG4uY21uLXRvZ2dsZS0tc3VidGxlICsgbGFiZWw6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiZDExMWY7XG59XG5cbi5jbW4tdG9nZ2xlOmhvdmVyICsgbGFiZWw6OmJlZm9yZSB7XG4gIEBleHRlbmQgJWZvY3VzLXNoYWRvdztcblxuICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQpO1xufVxuXG4uY21uLXRvZ2dsZSArIGxhYmVsOjphZnRlciB7XG4gIEBleHRlbmQgJW1ldGFsO1xuXG4gIHdpZHRoOiAyMnB4O1xuICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICBib3gtc2hhZG93OiAwIDFweCAyLjVweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG59XG5cbi5jbW4tdG9nZ2xlOmhvdmVyICsgbGFiZWw6OmFmdGVyIHtcbiAgQGV4dGVuZCAlbWV0YWwtaG92ZXI7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihtYXJnaW4pO1xufVxuXG4uY21uLXRvZ2dsZTpjaGVja2VkICsgbGFiZWw6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjLWdvb2Q7XG59XG5cbi5jbW4tdG9nZ2xlOmNoZWNrZWQgKyBsYWJlbDo6YWZ0ZXIge1xuICBtYXJnaW4tbGVmdDogMTZweDtcbn1cbiIsImJvZHkgOjotd2Via2l0LXNjcm9sbGJhcixcbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIge1xuICB3aWR0aDogLjVyZW07XG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbn1cblxuYm9keSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZDogJGMtc2hhZGU7XG59XG5cbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlcixcbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjphY3RpdmUge1xuICBiYWNrZ3JvdW5kOiAkYy1mb250LWRpbW1lcjtcbn1cbiIsIi5nYW1lLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICBoZWlnaHQ6IDE3cmVtO1xuICBwYWRkaW5nOiAuNWVtIDFlbTtcbiAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZCk7XG5cbiAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtbGluaywgJGMtYmctYm94LCAyMCUpO1xuICB9XG5cbiAgJl9fb3ZlcmxheSB7XG4gICAgQGV4dGVuZCAlbGluay1vdmVybGF5O1xuICB9XG5cbiAgJl9fYm9hcmQge1xuICAgIGZsZXg6IDAgMCAxNnJlbTtcbiAgICBtYXJnaW4tcmlnaHQ6IDFlbTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW5vdC1zbWFsbCkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAmX19pbmZvcyB7XG4gICAgZmxleDogMSAxIDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWFyZ2luOiAuNWVtIDA7XG4gIH1cblxuICAuaGVhZGVyIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBmb250LXNpemU6IDNlbTtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIG1hcmdpbi1yaWdodDogLjdyZW07XG4gICAgfVxuXG4gICAgJl9fdGV4dCB7XG4gICAgICBzdHJvbmcge1xuICAgICAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgZm9udC1zaXplOiAxLjRlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnZlcnN1cyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgLnN3b3JkcyB7XG4gICAgICB3aWR0aDogMi41ZW07XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBmb250LXNpemU6IDJlbTtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG5cbiAgICAucGxheWVyIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4zZW07XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICAucGxheWVyLmJsYWNrIHtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHotaW5kZXg6IHooXCJhYm92ZS1saW5rLW92ZXJsYXlcIik7XG4gICAgfVxuXG4gICAgLmFub24ge1xuICAgICAgbGluZS1oZWlnaHQ6IDJlbTtcbiAgICB9XG4gIH1cblxuICAucmVzdWx0IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAud2luIHtcbiAgICBjb2xvcjogJGMtZ29vZDtcbiAgfVxuXG4gIC5sb3NzIHtcbiAgICBjb2xvcjogJGMtYmFkO1xuICB9XG59XG4iLCJAaW1wb3J0IFwic3ViLXJhdGluZ1wiO1xuQGltcG9ydCBcImhlYWRlclwiO1xuQGltcG9ydCBcInRyb3BoeVwiO1xuQGltcG9ydCBcInByb2ZpbGVcIjtcbkBpbXBvcnQgXCJudW1iZXItbWVudVwiO1xuQGltcG9ydCBcIm5vdGUtem9uZVwiO1xuQGltcG9ydCBcImFjdGl2aXR5XCI7XG5AaW1wb3J0IFwiZ2FtZXNcIjtcblxuLnBhZ2UtbWVudSB7XG4gIC8qIGZvciB0aGUgdHJvcGhpZXMuIFRoaXMgZ2xvcmlvdXMgaGFjayBieXBhc3NlcyB0aGUgLnVzZXItc2hvdyBvdmVyZmxvdzogaGlkZGVuICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnVzZXItc2hvdyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgLyogdGhpcyBmaXhlcyBwcm9maWxlIG92ZXJmbG93LCBidXQgY3V0cyBvdXQgdGhlIHRyb3BoaWVzICovXG5cbiAgLmZsYXNoIHtcbiAgICBAZXh0ZW5kICVib3gtcGFkZGluZy1ob3JpejtcbiAgfVxuXG4gICZfX3NvY2lhbCB7XG4gICAgQGV4dGVuZCAlZmxleC1iZXR3ZWVuO1xuXG4gICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG5cbiAgICAubnVtYmVyLW1lbnUge1xuICAgICAgbWFyZ2luOiAwIDAgLjJlbSAxZW07XG4gICAgfVxuXG4gICAgLnVzZXItYWN0aW9ucyB7XG4gICAgICBtYXJnaW46IDFlbTtcblxuICAgICAgZm9ybSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAucmVsYXRpb24tYWN0aW9ucyB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICAgIGJvcmRlci1yaWdodDogJGJvcmRlcjtcbiAgICB9XG4gIH1cblxuICAuY2xhaW0tdGl0bGUge1xuICAgIEBleHRlbmQgJWJveC1wYWRkaW5nO1xuXG4gICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcblxuICAgIGgyIHtcbiAgICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgfVxuXG4gICAgZm9ybSB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWJldHdlZW47XG5cbiAgICAgIG1hcmdpbjogM2VtIDAgMWVtIDA7XG4gICAgfVxuICB9XG5cbiAgLmNyb3NzdGFibGUge1xuICAgIG1hcmdpbjogMmVtIDFlbTtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxuXG4gIC5uZXctcGxheWVyIHtcbiAgICBwYWRkaW5nOiAxLjVlbTtcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgICBoMiB7XG4gICAgICBmb250LXNpemU6IDEuNWVtO1xuICAgIH1cblxuICAgIHAge1xuICAgICAgbWFyZ2luOiAxZW0gMDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICBsaXN0LXN0eWxlOiBkaXNjIGluc2lkZTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjVlbTtcbiAgICB9XG4gIH1cblxuICAubnVtYmVyLW1lbnUgLnRvLWdhbWVzLmFjdGl2ZSxcbiAgI2dhbWVzLm51bWJlci1tZW51IHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1sb3cgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5hbmdsZXMge1xuICAgIEBleHRlbmQgJW1ldGFsO1xuXG4gICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICBoZWlnaHQ6IDRyZW07XG4gICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcblxuICAgIC5ubS1pdGVtIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAudW5yZWFkIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAuNWVtO1xuICAgIH1cbiAgfVxuXG4gIC5hY3Rpdml0eSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMmVtO1xuICB9XG59XG4iLCIuc3ViLXJhdGluZ3Mge1xuICBhIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzLWxlZnQsICVmbGV4LWNlbnRlci1ub3dyYXAsICVwYWdlLXRleHQ7XG5cbiAgICBwYWRkaW5nOiAwLjdlbSAkYmxvY2stZ2FwIDAuN2VtIDAuNGVtO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuXG4gICAgJi5lbXB0eSB7XG4gICAgICBvcGFjaXR5OiAuNTtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgZm9udC1zaXplOiAzZW07XG4gICAgICBvcGFjaXR5OiAuNTtcbiAgICAgIG1hcmdpbi1yaWdodDogLjJlbTtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcbiAgICB9XG5cbiAgICAmLmdhbWUge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWJnLWJveCwgJGMtYmctcGFnZSwgNTAlKTtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgIGNvbG9yOiAkYy1saW5rO1xuICAgICAgICAgIG9wYWNpdHk6IC43O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgQGV4dGVuZCAlYm94LXNoYWRvdztcblxuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICBjb2xvcjogJGMtYWNjZW50O1xuICAgICAgICAgIG9wYWNpdHk6IC43O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgPiBzcGFuIHtcbiAgICAgIGZsZXg6IDEgMSAxMDAlO1xuXG4gICAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgICAgbWFyZ2luLXJpZ2h0OiAuNWVtO1xuICAgIH1cblxuICAgIHJhdGluZyBzcGFuLFxuICAgIC5yYW5rIHtcbiAgICAgIGZvbnQtc2l6ZTogLjllbTtcbiAgICB9XG5cbiAgICBpIHtcbiAgICAgIGZvbnQtc2l6ZTogLjc1ZW07XG4gICAgICBvcGFjaXR5OiAuMjtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcbiAgICB9XG5cbiAgICAmOmhvdmVyIGkge1xuICAgICAgY29sb3I6ICRjLWxpbms7XG4gICAgICBvcGFjaXR5OiAuNztcbiAgICB9XG5cbiAgICAmLmFjdGl2ZSBpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLnNoeSB7XG4gICAgICBmb250LXNpemU6IC44ZW07XG4gICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICBsaW5lLWhlaWdodDogMWVtO1xuICAgIH1cbiAgfVxuXG4gIGgzIHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICBmb250LXNpemU6IDEuMWVtO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC4wNWVtO1xuICAgIG1hcmdpbjogMDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cblxuICBzdHJvbmcge1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDEuMmVtO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LW1lZGl1bSkge1xuICAgIGEge1xuICAgICAgcGFkZGluZzogLjNlbTtcbiAgICB9XG5cbiAgICBhID4gaSxcbiAgICBoMyxcbiAgICByYXRpbmcgLnJwLFxuICAgIHJhdGluZyBzcGFuIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zdWJuYXYtdG9wKSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDljaCwgMWZyKSk7XG5cbiAgICBiciwgLnJhbmsge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgb3BhY2l0eTogLjg7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgICB9XG5cbiAgICAgID4gc3BhbiB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICB9XG5cbiAgICAgIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIudXNlci1zaG93X19oZWFkZXIge1xuICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgcGFkZGluZzogMmVtIDEuNWVtIDFlbSAxLjVlbTtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuXG4gIGgxIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBmb250LXNpemU6IDJlbTtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG5cbiAgLmNvbm5lY3RlZCB7XG4gICAgY29sb3I6ICRjLWdvb2Q7XG4gIH1cblxuICAuY2xvc2VkIHtcbiAgICBjb2xvcjogJGMtYmFkO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbi1yaWdodDogMWVtO1xuICB9XG5cbiAgLmxpbmUge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIH1cbn1cbiIsIi50cm9waGllcyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAzNXB4O1xuICByaWdodDogMS41ZW07XG4gIGhlaWdodDogNDBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3Qtc21hbGwpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi50cm9waHkuYXdhcmQge1xuICBmb250LWZhbWlseTogJ2xpY2hlc3MnO1xuICBzcGVhazogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IDEwMCU7XG59XG5cbi50cm9waHkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gIGhlaWdodDogNDBweDtcblxuICBpbWcge1xuICAgIGhlaWdodDogODBweDtcbiAgfVxuXG4gICYudG9wMSB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgNnB4ICRjLWJyYWcpO1xuICB9XG59XG5cbi50cm9waHksIC5zaGllbGQtdHJvcGh5IHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnM7XG5cbiAgJjpub3QoLnBhdHJvbik6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTtcbiAgfVxufVxuXG4uc3RhY2tlZCB7XG4gIGhlaWdodDogNDBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xufVxuXG4uc3RhY2tlZCAudHJvcGh5IHtcbiAgd2lkdGg6IDY1cHg7XG4gIGhlaWdodDogNjVweDtcbiAgZm9udC1zaXplOiA2NXB4O1xufVxuXG4uZmlyZS10cm9waHkge1xuICAmLCAmOmhvdmVyIHtcbiAgICBjb2xvcjogaWYoJHRoZW1lLWxpZ2h0LCAkYy1mb250LWRpbSwgJGMtZm9udC1jbGVhcik7XG4gIH1cblxuICBvcGFjaXR5OiAwLjk7XG4gIGhlaWdodDogODBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICY6aG92ZXIge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAmLm1hcmF0aG9uV2lubmVyLFxuICAmLm1hcmF0aG9uVG9wVGVuLFxuICAmLm1hcmF0aG9uVG9wRmlmdHksXG4gICYubWFyYXRob25Ub3BIdW5kcmVkIHtcbiAgICBmaWx0ZXI6IGh1ZS1yb3RhdGUoMTkwZGVnKTtcbiAgICBjb2xvcjogYWRqdXN0LWNvbG9yKCRjLWxpbmssICRodWU6IC0xOTBkZWcsICRzYXR1cmF0aW9uOiAtNzAlKTtcbiAgfVxuXG4gICYubWFyYXRob25Ub3BUZW4ge1xuICAgIGZvbnQtc2l6ZTogNThweDtcbiAgICB3aWR0aDogNTVweDtcbiAgICBoZWlnaHQ6IDU1cHg7XG4gICAgbWFyZ2luLXRvcDogMjJweDtcbiAgfVxuXG4gICYubWFyYXRob25Ub3BGaWZ0eSxcbiAgJi5tYXJhdGhvblRvcEh1bmRyZWQge1xuICAgIGZvbnQtc2l6ZTogNTBweDtcbiAgICBoZWlnaHQ6IDUwcHg7XG4gICAgd2lkdGg6IDUwcHg7XG4gICAgbWFyZ2luLXRvcDogMzBweDtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cblxuICAmLm1hcmF0aG9uVG9wRmlmdHkge1xuICAgIHRleHQtc2hhZG93OiAwIDAgNXB4ICNmZmFlMzQsIDAgMCA2LjI1cHggI2VjNzYwYywgMCAwIDcuNXB4ICNjZDQ2MDY7XG4gIH1cblxuICAmLm1hcmF0aG9uVG9wSHVuZHJlZCB7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gICAgY29sb3I6ICNjZDQ2MDYgIWltcG9ydGFudDtcbiAgfVxuXG4gICYuYm9uZ2Nsb3VkV2FycmlvciB7XG4gICAgZmlsdGVyOiBodWUtcm90YXRlKDcwZGVnKTtcbiAgfVxufVxuXG4ucGFja2VkIC50cm9waHkge1xuICBtYXJnaW4tcmlnaHQ6IC04cHg7XG59XG5cbi5wYWNrZWQgLnN0YWNrZWQge1xuICBtYXJnaW4tcmlnaHQ6IDMwcHg7XG59XG5cbi5wYWNrZWQgLnN0YWNrZWQgLnRyb3BoeSB7XG4gIG1hcmdpbi1yaWdodDogLTMwcHg7XG59XG5cbi50cm9waHkuaWNvbjNkIHtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgZm9udC1zaXplOiAzOXB4O1xuICBjb2xvcjogJGMtZm9udC1kaW1tZXI7XG4gIHRleHQtc2hhZG93OiAwIDFweCAwIHJnYmEoMCwgMCwgMCwgMC41KTtcbn1cblxuLnRyb3BoeS5zdHJlYW1pbmcge1xuICBAZXh0ZW5kICVmaXJlLXRyb3BoeS1zaGFkb3c7XG5cbiAgY29sb3I6ICRjLWJyYWc7XG4gIGFuaW1hdGlvbjogZmlyZS10cm9waHkgMS4yNXMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlO1xufVxuXG4udHJvcGh5LnBhdHJvbiB7XG4gIGZsZXg6IDAgMCBhdXRvO1xuICBmb250LXNpemU6IDYwcHg7XG4gIG1hcmdpbjogMCAtMTBweCAwIDMwcHg7XG4gIHRyYW5zZm9ybTogc2NhbGUoLTEsIDEpO1xuICBjb2xvcjogJGMtYnJhZztcbiAgdHJhbnNpdGlvbjogbWFyZ2luLXRvcCAwLjVzO1xuXG4gICY6aG92ZXIge1xuICAgIEBleHRlbmQgJWZpcmUtdHJvcGh5LXNoYWRvdztcblxuICAgIGFuaW1hdGlvbjogZmlyZS10cm9waHkgMS4yNXMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlO1xuICB9XG59XG5cbi5jb21iby10cm9waHkge1xuICB3aWR0aDogNjBweDtcbiAgaGVpZ2h0OiA2MHB4O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGZvbnQtZmFtaWx5OiAnbGljaGVzcyc7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnNoaWVsZC10cm9waHkge1xuICB3aWR0aDogNTBweDtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltYWdlcy90cm9waHkvc2hpZWxkLWdvbGQucG5nKTtcbiAgZm9udC1zaXplOiAzMHB4O1xuICBsaW5lLWhlaWdodDogNjBweDtcbiAgY29sb3I6ICMzMzMgIWltcG9ydGFudDtcbiAgdGV4dC1zaGFkb3c6IDAgMCA2cHggI2ZmZjtcbiAgbWFyZ2luLXRvcDogLTIwcHg7XG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDZweCAkYy1icmFnKTtcbn1cblxuLnJldm9sX3Ryb3BoeSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWFnZXMvdHJvcGh5L3JvdW5kLXN0YXIucG5nKTtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBsaW5lLWhlaWdodDogNjhweDtcbiAgY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgdGV4dC1zaGFkb3c6IDAgMCA0cHggIzQ0NDtcbiAgbWFyZ2luLXRvcDogLTE4cHg7XG59XG4iLCIjdXNfcHJvZmlsZSB7XG4gIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gIGJvcmRlci10b3A6ICRib3JkZXI7XG5cbiAgLndhcm5pbmcge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMsICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICBwYWRkaW5nOiAuN2VtO1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1iYWQsICRjLWJnLWJveCwgMTAlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCBtaXgoJGMtYmFkLCAkYy1iZy1ib3gsIDMwJSk7XG4gICAgY29sb3I6ICRjLWJhZDtcblxuICAgIHNwYW4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAuMmVtO1xuICAgICAgZm9udC1zaXplOiAyLjdlbTtcbiAgICB9XG4gIH1cblxuICAuZW5naW5lX3dhcm5pbmcge1xuICAgIG1hcmdpbjogMTBweCAwO1xuICB9XG5cbiAgLnJhdGluZy1oaXN0b3J5IHtcbiAgICBmbGV4OiAxIDEgNTglO1xuICAgIG1hcmdpbjogLTEwcHggMCAtMTRweCAtOHB4O1xuICAgIGhlaWdodDogMzUwcHg7XG5cbiAgICAuc3Bpbm5lciB7XG4gICAgICB3aWR0aDogOTBweDtcbiAgICAgIGhlaWdodDogOTBweDtcbiAgICAgIG1hcmdpbjogMTIwcHggYXV0byAwIGF1dG87XG4gICAgfVxuICB9XG5cbiAgLnByb2ZpbGUtc2lkZSB7XG4gICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICBmbGV4OiAxIDAgMzAwcHg7XG4gICAgaGVpZ2h0OiAzMzJweDtcbiAgICBib3JkZXItbGVmdDogJGJvcmRlcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG5cbiAgLmNvdW50cnkgaW1nIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207XG4gICAgbWFyZ2luOiAwIC4zZW07XG4gIH1cblxuICAudXNlci1pbmZvcyB7XG4gICAgQGluY2x1ZGUgaG92ZXJmbG93O1xuXG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgcGFkZGluZzogLjhlbTtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgfVxuXG4gIC5pbnNpZ2h0IHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICAvKiBubyBwb2ludCBsaW5raW5nIHRvIGluc2lnaHRzIG9uIGRldmljZXMgdGhhdCBjYW4ndCBwcm9wZXJseSBkaXNwbGF5IGl0ICovXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LW1lZGl1bSkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cblxuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIHBhZGRpbmc6IC4zZW0gMWVtO1xuICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgY29sb3I6ICRjLWxpbms7XG5cbiAgICBzdHJvbmcge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgZm9udC1zaXplOiAxLjVlbTtcbiAgICB9XG5cbiAgICBlbSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgZm9udC1zaXplOiAyLjVlbTtcbiAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgICB9XG5cbiAgICAmOmhvdmVyLFxuICAgICY6aG92ZXI6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgICBiYWNrZ3JvdW5kOiAkYy1wcmltYXJ5O1xuICAgICAgY29sb3I6ICRjLXByaW1hcnktb3ZlcjtcbiAgICB9XG4gIH1cblxuICAuY29sMiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuXG4gICAgPiBhIHtcbiAgICAgIEBleHRlbmQgJW5vd3JhcC1lbGxpcHNpcztcblxuICAgICAgZmxleDogMCAwIDUwJTtcbiAgICB9XG4gIH1cblxuICAuYmlvIHtcbiAgICBAZXh0ZW5kICVicmVhay13b3JkO1xuXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuXG4gICAgaW1nIHtcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cbn1cbiIsIi5udW1iZXItbWVudSB7XG4gIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICBkaXNwbGF5OiBmbGV4O1xuICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAubm0taXRlbSB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTtcbiAgICBwYWRkaW5nOiAuNWVtIDVweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogLjllbTtcblxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRjLWxpbms7XG4gICAgfVxuICB9XG5cbiAgJi0tdGFicyAubm0taXRlbSB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cy10b3A7XG5cbiAgICBtYXJnaW4tdG9wOiAuN2VtO1xuICAgIHBhZGRpbmctYm90dG9tOiAuOGVtO1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItbGVmdDogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgIGJvcmRlci1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWxpbmssICRjLWJnLWJveCwgMTAlKTtcbiAgICAgIGNvbG9yOiAkYy1mb250LWNsZWFyO1xuICAgIH1cblxuICAgICYuYWN0aXZlIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LWNsZWFyO1xuICAgICAgYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICB9XG4gIH1cblxuICBzdHJvbmcge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1zaXplOiAxLjFlbTtcbiAgfVxufVxuIiwiLm5vdGUtem9uZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG1hcmdpbjogMWVtIDEuNWVtO1xuICBwYWRkaW5nLWJvdHRvbTogMWVtO1xuXG4gIHRleHRhcmVhIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDVlbTtcbiAgfVxuXG4gIC5ub3RlIHtcbiAgICBAZXh0ZW5kICVmbGV4LWJldHdlZW4tbm93cmFwLCAlYnJlYWstd29yZDtcblxuICAgIHBhZGRpbmctdG9wOiAxZW07XG4gICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcbiAgICBtYXJnaW4tdG9wOiAxZW07XG5cbiAgICAmX19tZXRhIHtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgbWFyZ2luOiAwIDFlbTtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuXG4gICAgJl9fdGV4dCB7XG4gICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICAgIG1pbi1oZWlnaHQ6IDIuN2VtO1xuICAgIH1cbiAgfVxuXG4gIC5tb2Qtbm90ZSB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgICA+IGRpdiB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICAgICAgbWFyZ2luLWxlZnQ6IDEuNWVtO1xuXG4gICAgICA+IGxhYmVsIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC41ZW07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIiRjLWNvbnRvdXJzOiBtaXgoJGMtYnJhZywgJGMtc2hhZGUsIDgwJSk7XG5cbi5hY3Rpdml0eSB7XG4gIHNlY3Rpb24ge1xuICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07XG4gICAgcGFkZGluZy10b3A6IDFyZW07XG4gIH1cblxuICBzZWN0aW9uIGgyIHtcbiAgICBAZXh0ZW5kICViYXNlLWZvbnQ7XG5cbiAgICBjb2xvcjogJGMtYnJhZztcbiAgICBmb250LXNpemU6IDEuMmVtO1xuXG4gICAgdGltZSB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgfVxuICB9XG5cbiAgLmVudHJpZXMge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgLmVudHJ5IHtcbiAgICBwYWRkaW5nOiAxZW0gMCAxZW07XG5cbiAgICA+IGkge1xuICAgICAgZm9udC1zaXplOiAyNHB4O1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICB3aWR0aDogNTBweDtcbiAgICAgIGhlaWdodDogNTBweDtcbiAgICAgIG1hcmdpbi10b3A6IC0xMHB4O1xuICAgICAgbWFyZ2luLWxlZnQ6IC03MnB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDM5cHg7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1jb250b3VycztcbiAgICAgIGJvcmRlcjogM3B4IHNvbGlkICRjLWJnLWJveDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXh4LXNtYWxsKSB7XG4gICAgLmVudHJpZXMge1xuICAgICAgbWFyZ2luOiAzMHB4IDUwcHggMCA1MHB4O1xuICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAkYy1jb250b3VycztcbiAgICB9XG5cbiAgICAuZW50cnkge1xuICAgICAgcGFkZGluZy1sZWZ0OiA0NXB4O1xuICAgIH1cbiAgfVxuXG5cbiAgLnN1YiB7XG4gICAgbWFyZ2luOiAzcHggMDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gIH1cblxuICAuc3ViOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IC03cHg7XG4gIH1cblxuICAuc3ViID4gZGl2IHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG5cbiAgLmxpbmUge1xuICAgIEBleHRlbmQgJW5vd3JhcC1lbGxpcHNpcztcblxuICAgIC5tb3JlIHtcbiAgICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIH1cblxuICAgIGEge1xuICAgICAgY29sb3I6ICRjLWZvbnQ7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJGMtbGluaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByYXRpbmcge1xuICAgIEBleHRlbmQgJXJvYm90bztcblxuICAgIG1hcmdpbi1sZWZ0OiAuN2VtO1xuXG4gICAgLnJwIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAuMmVtO1xuICAgIH1cbiAgfVxuXG4gIHNjb3JlIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgZm9udC1zaXplOiAuN2VtO1xuICAgIG1hcmdpbi10b3A6IDJweDtcblxuICAgID4gKiB7XG4gICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICAgIH1cblxuICAgIHN0cm9uZyB7XG4gICAgICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICBwYWRkaW5nOiAxcHggNnB4O1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgb3BhY2l0eTogLjc7XG4gICAgfVxuICB9XG5cbiAgLnN1YiBzY29yZSBzdHJvbmcge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjZlbTtcbiAgICBwYWRkaW5nOiAxcHggNHB4O1xuICB9XG5cbiAgd2luIHN0cm9uZyB7XG4gICAgYmFja2dyb3VuZDogJGMtZ29vZDtcbiAgfVxuXG4gIGRyYXcgc3Ryb25nIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1icmFnO1xuICB9XG5cbiAgbG9zcyBzdHJvbmcge1xuICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgfVxufVxuIiwiLnVzZXItc2hvdyB7XG4gIC5udW1iZXItbWVudSAudG8tcGxheWluZyB7XG4gICAgY29sb3I6ICRjLWFjY2VudDtcblxuICAgIHN0cm9uZyB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG4gIH1cblxuICAubm93LXBsYXlpbmcge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDI1MHB4LCBhdXRvKSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FFRUEsWUFBWTtBQXFCWiw2REFBNkQ7QUFjN0QsbUJBQW1CO0FBTW5CLGtDQUFrQztBQUVsQyxzQkFBc0I7QUFNdEIsb0NBQW9DO0FBRXBDLG9CQUFvQjtBQU1wQixpQ0FBaUM7QUFFakMsZ0JBQWdCO0FBSWhCLCtCQUErQjtBQUUvQixnQkFBZ0I7QUFLaEIsK0JBQStCO0FBRS9CLGlCQUFpQjtBQUlqQixrQkFBa0I7QUFJbEIsY0FBYztBQUlk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 */
