/*
 * Table of contents:
 * 01 Common elements
 * 02 Spinners
 * 03 Navigation
 * 04 Layout blocks
 * 05 Modals
 * 06 Toasts
 * 07 Social
 * 08 Projects
 * 09 Owl gallery
 * 10 Services
 * 11 Prices
 * 12 About
 * 13 Blog
 * 14 Contact
 * 15 Inputs
 * 16 Footer
 * 17 Skins: Ring green
 * 18 Skins: Ring pink
 * 19 Skins: Tunnel
 * 20 Skins: Waves horizontal
 * 21 Skins: Waves vertical
 * 22 Skins: Fuzzy hue
 * 23 Skins: Fuzzy saturation
 * 24 Skins: Combustion purple
 * 25 Skins: Combustion yellow
 */
/********************************************/
/*
/* 01 Common elements
/*
/********************************************/
html,
body,
.full-height {
  height: 100%;
}

body {
  background-color: #fff;
}

body.locked {
  overflow-y: hidden;
}

.hero {
  overflow: hidden;
}

h1,
h2,
h3,
.brand-logo,
.button-collapse {
  -webkit-font-smoothing: antialiased;
  font-kerning: normal;
  -moz-osx-font-smoothing: grayscale;
  -moz-font-feature-settings: 'liga', 'kern';
  text-rendering: optimizeLegibility;
}

h2 {
  margin-bottom: 0;
  font-size: 6rem;
  font-weight: 200;
  letter-spacing: -2px;
  text-align: center;
}

@media only screen and (max-width: 600px) {
  h2 {
    font-size: 3rem;
  }
}

h2 span {
  position: relative;
  z-index: 10;
  padding: 0 1rem;
  background: #fff;
}

h2::after {
  position: relative;
  display: block;
  top: -4rem;
  width: 100%;
  height: 2px;
  margin: 1rem auto 0;
  background-color: rgba(158, 158, 158, 0.2);
  content: '';
}

@media only screen and (max-width: 600px) {
  h2::after {
    top: -3rem;
  }
}

h2 + h3 {
  margin-top: -0.75rem;
  margin-bottom: 3rem;
}

h3 {
  text-align: center;
}

@media only screen and (max-width: 600px) {
  h3 {
    font-size: 1.8rem;
  }
}

section {
  padding-bottom: 5rem;
}

section.hero {
  padding-bottom: 0;
}

@media only screen and (max-width: 600px) {
  section {
    padding-bottom: 3rem;
  }
}

.nobr {
  white-space: nowrap;
}

.collapsible {
  box-shadow: none;
}

.container {
  width: 90%;
  max-width: 1600px;
}

@media only screen and (min-width: 601px) {
  .container {
    width: 90%;
  }
}

@media only screen and (min-width: 993px) {
  .container {
    width: 90%;
  }
}

.container.full-width {
  width: 100%;
}

.container.row.narrow-row {
  margin-right: 0;
  margin-left: 0;
}

.row .col.padding-bottom {
  padding-bottom: 1.5rem;
}

.extra-padding {
  padding: 3rem 0;
}

@media only screen and (max-width: 600px) {
  .extra-padding {
    padding: 1.5rem 0;
  }
}

.no-padding {
  padding: 0;
}

.margin-top {
  margin-top: 3rem;
}

.margin-top-more {
  margin-top: 6rem;
}

@media only screen and (max-width: 600px) {
  .margin-top-more {
    margin-top: 3rem;
  }
}

.big-icons-row i {
  font-size: 6rem;
}

@media only screen and (max-width: 600px) {
  .big-icons-row i {
    font-size: 4rem;
  }
}

iframe {
  border: 0;
}

.progress {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 999;
  display: none;
  margin: 0;
  background-color: #f5f5f5;
}

.progress .indeterminate {
  background-color: #9e9e9e;
}

.width--pct--5 {
  width: 5% !important;
}

.width--pct--10 {
  width: 10% !important;
}

.width--pct--15 {
  width: 15% !important;
}

.width--pct--20 {
  width: 20% !important;
}

.width--pct--25 {
  width: 25% !important;
}

.width--pct--30 {
  width: 30% !important;
}

.width--pct--35 {
  width: 35% !important;
}

.width--pct--40 {
  width: 40% !important;
}

.width--pct--45 {
  width: 45% !important;
}

.width--pct--50 {
  width: 50% !important;
}

.width--pct--60 {
  width: 60% !important;
}

.width--pct--70 {
  width: 70% !important;
}

.width--pct--75 {
  width: 75% !important;
}

.width--pct--80 {
  width: 80% !important;
}

.width--pct--90 {
  width: 90% !important;
}

.width--pct--100 {
  width: 100% !important;
}

.pad--r--10 {
  padding-right: 10px !important;
}

.pad--b--40 {
  padding-bottom: 40px !important;
}

/********************************************/
/*
/* 02 Spinners
/*
/********************************************/

.spinner-dot-in,
.spinner-dot-stick,
.spinner-double-dot-stick,
.spinner-dot-out,
.spinner-double-dot-out,
.spinner-double-dot-in,
.spinner-wave-out,
.spinner-wave-in,
.spinner-double-wave-out,
.spinner-double-wave-in,
.spinner-huge-wave-out,
.spinner-huge-wave-in,
.spinner-section,
.spinner-section-in,
.spinner-double-section-in,
.spinner-section-out,
.spinner-double-section-out,
.spinner-section-far,
.spinner-double-section-far,
.spinner-double-section {
  display: block;
  float: left;
  width: 60px;
  height: 60px;
  border: 3.75px solid #9e9e9e;
  border-radius: 50%;
  animation: spinner 2s linear infinite;
}

@keyframes spinner {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}


.spinner-dot-in,
.spinner-dot-stick,
.spinner-double-dot-stick,
.spinner-dot-out,
.spinner-double-dot-out,
.spinner-double-dot-in {
  position: relative;
}


.spinner-dot-in::before,
.spinner-dot-stick::before,
.spinner-double-dot-stick::before,
.spinner-dot-out::before,
.spinner-double-dot-out::before,
.spinner-dot-in::after,
.spinner-dot-stick::after,
.spinner-double-dot-stick::after,
.spinner-dot-out::after,
.spinner-double-dot-out::after,
.spinner-double-dot-in::before,
.spinner-double-dot-in::after {
  position: absolute;
  top: 7.5px;
  left: 26.25px;
  width: 7.5px;
  height: 7.5px;
  background: #fff;
  border-radius: 50%;
  content: '';
}


.spinner-dot-in::after,
.spinner-dot-stick::after,
.spinner-double-dot-stick::after,
.spinner-dot-out::after,
.spinner-double-dot-out::after,
.spinner-double-dot-in::after {
  top: auto;
  bottom: 7.5px;
}


.spinner-dot-in::after {
  display: none;
}


.spinner-dot-stick::before,
.spinner-dot-stick::after,
.spinner-double-dot-stick::before,
.spinner-double-dot-stick::after {
  top: -7.5px;
}


.spinner-dot-stick::after,
.spinner-double-dot-stick::after {
  top: auto;
  bottom: -7.5px;
}


.spinner-dot-stick::after {
  display: none;
}


.spinner-dot-out::before,
.spinner-dot-out::after,
.spinner-double-dot-out::before,
.spinner-double-dot-out::after {
  top: -15px;
}


.spinner-dot-out::after,
.spinner-double-dot-out::after {
  top: auto;
  bottom: -15px;
}


.spinner-dot-out::after {
  display: none;
}


.spinner-wave-out {
  box-shadow: -1.875px -1.875px 0 1.875px #fff;
}


.spinner-wave-in {
  box-shadow: inset -1.875px -1.875px 0 1.875px #fff;
}


.spinner-double-wave-out {
  box-shadow: -1.875px -1.875px 0 1.875px #fff, 1.875px 1.875px 0 1.875px #fff;
}


.spinner-double-wave-in {
  box-shadow: inset -1.875px -1.875px 0 1.875px #fff, inset 1.875px 1.875px 0 1.875px #fff;
}


.spinner-huge-wave-out {
  box-shadow: -1.875px -1.875px 0 7.5px #fff;
}


.spinner-huge-wave-in {
  box-shadow: inset -1.875px -1.875px 0 7.5px #fff;
}


.spinner-section,
.spinner-section-in,
.spinner-double-section-in,
.spinner-section-out,
.spinner-double-section-out,
.spinner-section-far,
.spinner-double-section-far,
.spinner-double-section {
  position: relative;
}


.spinner-section::before,
.spinner-section-in::before,
.spinner-double-section-in::before,
.spinner-section-out::before,
.spinner-double-section-out::before,
.spinner-section-far::before,
.spinner-double-section-far::before,
.spinner-section::after,
.spinner-section-in::after,
.spinner-double-section-in::after,
.spinner-section-out::after,
.spinner-double-section-out::after,
.spinner-section-far::after,
.spinner-double-section-far::after,
.spinner-double-section::before,
.spinner-double-section::after {
  position: absolute;
  top: -3.75px;
  left: -3.75px;
  display: block;
  width: 60px;
  height: 60px;
  border: 3.75px solid transparent;
  border-top-color: #fff;
  border-radius: 50%;
  content: '';
}


.spinner-section::after,
.spinner-section-in::after,
.spinner-double-section-in::after,
.spinner-section-out::after,
.spinner-double-section-out::after,
.spinner-section-far::after,
.spinner-double-section-far::after,
.spinner-double-section::after {
  border-top-color: transparent;
  border-bottom-color: #fff;
}


.spinner-section::after {
  display: none;
}


.spinner-section-in::before,
.spinner-section-in::after,
.spinner-double-section-in::before,
.spinner-double-section-in::after {
  top: 0;
  left: 0;
  width: 52.5px;
  height: 52.5px;
}


.spinner-section-in::after {
  display: none;
}


.spinner-section-out::before,
.spinner-section-out::after,
.spinner-double-section-out::before,
.spinner-double-section-out::after {
  top: -7.5px;
  left: -7.5px;
  width: 67.5px;
  height: 67.5px;
}


.spinner-section-out::after {
  display: none;
}


.spinner-section-far::before,
.spinner-section-far::after,
.spinner-double-section-far::before,
.spinner-double-section-far::after {
  top: -11.25px;
  left: -11.25px;
  width: 75px;
  height: 75px;
}


.spinner-section-far::after {
  display: none;
}

.spinner-container {
  -webkit-box-pack: center;
  -moz-box-pack: center;
  box-pack: center;
  -webkit-justify-content: center;
  -moz-justify-content: center;
  -ms-justify-content: center;
  -o-justify-content: center;
  justify-content: center;
  -ms-flex-pack: center;
  -webkit-transition: all 0.4s cubic-bezier(0.075, 0.82, 0.165, 1);
  -moz-transition: all 0.4s cubic-bezier(0.075, 0.82, 0.165, 1);
  transition: all 0.4s cubic-bezier(0.075, 0.82, 0.165, 1);
  position: fixed;
  top: 0;
  left: 0;
  z-index: 999;
  width: 100%;
  height: 100%;
  background: #191919;
}

.spinner-container > div {
  -webkit-transition: opacity 0.3s cubic-bezier(0.075, 0.82, 0.165, 1);
  -moz-transition: opacity 0.3s cubic-bezier(0.075, 0.82, 0.165, 1);
  transition: opacity 0.3s cubic-bezier(0.075, 0.82, 0.165, 1);
  opacity: 1;
}

.spinner-container.hide-spinner {
  top: 50%;
  height: 0;
}

.spinner-container.hide-spinner > div {
  opacity: 0;
}

/********************************************/
/*
/* 03 Navigation
/*
/********************************************/
.table-of-contents li {
  padding: 0;
}

.table-of-contents li .active,
.table-of-contents li a,
.table-of-contents li a:hover {
  padding: 0;
  margin: 0 20px;
  font-weight: normal;
  border-left: 0;
}

.table-of-contents li a {
  border-bottom: 1px solid #e0e0e0;
}

.table-of-contents li a:hover {
  border-bottom: 1px solid #9e9e9e;
}

.table-of-contents li .active {
  border-bottom: 1px solid #757575;
}

.table-of-contents li:last-of-type a {
  margin-right: 0;
}

nav {
  background-color: #fff;
  box-shadow: none;
}

nav .brand-logo {
  font-weight: 500;
  letter-spacing: -1px;
  color: #191919;
}

nav ul a,
nav a {
  color: #191919;
}

nav ul a:hover,
nav a:hover {
  background: none;
}

nav .table-of-contents a,
nav .table-of-contents a:hover {
  color: #191919;
}

.hamburger {
  position: relative;
  width: 20px;
  height: 2px;
  cursor: pointer;
  background: #191919;
}

.hamburger::after, .hamburger::before {
  position: relative;
  display: block;
  width: 20px;
  height: 2px;
  background: #191919;
  content: '';
}

.hamburger::after {
  top: -8px;
}

.hamburger::before {
  top: 6px;
}

/********************************************/
/*
/* 04 Layout blocks
/*
/********************************************/
.rectangle {
  padding-bottom: 66.67%;
}

.rectangle-50 {
  padding-bottom: 50%;
}

@media only screen and (max-width: 600px) {
  .rectangle-50 {
    padding-bottom: 66.67%;
  }
}

.square {
  padding-bottom: 100%;
}

.rectangle,
.rectangle-50,
.square {
  position: relative;
  display: block;
  overflow: hidden;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
}

.rectangle > .content,
.rectangle-50 > .content,
.square > .content {
  position: absolute;
  width: 100%;
}

.rectangle > .content div,
.rectangle-50 > .content div,
.square > .content div {
  width: 100%;
}

/********************************************/
/*
/* 05 Modals
/*
/********************************************/
.modal.bottom-sheet {
  height: 100%;
  max-height: none;
}

.modal blockquote {
  font-size: 3rem;
  font-weight: 200;
  border-left: 0;
}

@media only screen and (max-width: 600px) {
  .modal blockquote {
    font-size: 1.5rem;
    font-weight: 300;
  }
}

.modal-close {
  position: absolute;
  top: 0;
  left: 1.5rem;
  z-index: 10000;
  font-size: 3rem;
}

.modal-close::after {
  position: absolute;
  top: 0;
  left: 0;
  font-size: 1rem;
  content: 'esc';
}

.about .modal.bottom-sheet {
  height: auto;
}

@media only screen and (max-width: 992px) {
  .about .modal.bottom-sheet {
    height: 100%;
  }
  .about .modal.bottom-sheet .modal-content .square {
    padding-bottom: 0;
  }
  .about .modal.bottom-sheet .modal-content .square .content {
    position: relative;
  }
}

/********************************************/
/*
/* 06 Toasts
/*
/********************************************/
@media only screen and (max-width: 992px) and (min-width: 601px) {
  #toast-container {
    right: 5%;
  }
}

.toast {
  display: none;
  height: auto;
  padding: 20px;
  line-height: 1.75rem;
}

.toast:first-of-type {
  display: block;
}

.toast a {
  display: block;
  color: #fff;
  text-decoration: underline;
}

.toast.error {
  background-color: #FF5252;
}

.toast.success {
  color: #191919;
  background-color: #00E676;
}

/********************************************/
/*
/* 07 Social
/*
/********************************************/
.social .content {
  -webkit-box-pack: center;
  -moz-box-pack: center;
  box-pack: center;
  -webkit-justify-content: center;
  -moz-justify-content: center;
  -ms-justify-content: center;
  -o-justify-content: center;
  justify-content: center;
  -ms-flex-pack: center;
  height: 100%;
}

.social a {
  display: inline-block;
  padding: 3px 5px;
  margin: 0 3px;
}

.social a.facebook {
  color: #fff;
  background-color: #3b5998;
}

.social a.facebook:hover {
  background-color: rgba(59, 89, 152, 0.7);
}

.social a.twitter {
  color: #fff;
  background-color: #4099ff;
}

.social a.twitter:hover {
  background-color: rgba(64, 153, 255, 0.7);
}

.social a.dribbble {
  color: #fff;
  background-color: #c73b6f;
}

.social a.dribbble:hover {
  background-color: rgba(199, 59, 111, 0.7);
}

.social a.github {
  color: #fff;
  background-color: #999;
}

.social a.github:hover {
  background-color: rgba(153, 153, 153, 0.7);
}

.social a.vk {
  color: #fff;
  background-color: #2b587a;
}

.social a.vk:hover {
  background-color: rgba(43, 88, 122, 0.7);
}

.social a.linkedin {
  color: #fff;
  background-color: #4075b4;
}

.social a.linkedin:hover {
  background-color: rgba(64, 117, 180, 0.7);
}

.social a.googleplus {
  color: #fff;
  background-color: #c24e40;
}

.social a.googleplus:hover {
  background-color: rgba(194, 78, 64, 0.7);
}

.social a.pinterest {
  color: #fff;
  background-color: #bd081c;
}

.social a.pinterest:hover {
  background-color: rgba(189, 8, 28, 0.7);
}

@media only screen and (max-width: 600px) {
  .social a {
    margin-bottom: 5px;
  }
}

.social a:first-of-type {
  margin-left: 5px;
}

.social.huge a {
  margin: 0;
}

/********************************************/
/*
/* 08 Projects
/*
/********************************************/
.projects h2 {
  margin-top: 5rem;
}

.projects .content {
  height: 100%;
}

.projects .content div {
  -webkit-transform: translate3d(0, 100%, 0);
  -moz-transform: translate3d(0, 100%, 0);
  -ms-transform: translate3d(0, 100%, 0);
  -o-transform: translate3d(0, 100%, 0);
  transform: translate3d(0, 100%, 0);
  -webkit-transition: all 0s linear;
  -moz-transition: all 0s linear;
  transition: all 0s linear;
  padding: 0 1rem;
  font-size: 4rem;
  line-height: 4rem;
  color: #fff;
  opacity: 0;
}

@media only screen and (max-width: 600px) {
  .projects .content div {
    -webkit-transform: translate3d(0, 0, 0);
    -moz-transform: translate3d(0, 0, 0);
    -ms-transform: translate3d(0, 0, 0);
    -o-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    font-size: 2rem;
    line-height: 2rem;
    text-shadow: 0 1px 1px rgba(25, 25, 25, 0.25);
    opacity: 1;
  }
}

@media only screen and (max-width: 600px) {
  .projects .content {
    background: rgba(25, 25, 25, 0.1);
  }
}

.projects .content:hover {
  background-color: rgba(25, 25, 25, 0.7);
}

.projects .content:hover div {
  -webkit-transform: translate3d(0, 0, 0);
  -moz-transform: translate3d(0, 0, 0);
  -ms-transform: translate3d(0, 0, 0);
  -o-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0);
  -webkit-transition: all 0.3s cubic-bezier(0.075, 0.82, 0.165, 1);
  -moz-transition: all 0.3s cubic-bezier(0.075, 0.82, 0.165, 1);
  transition: all 0.3s cubic-bezier(0.075, 0.82, 0.165, 1);
  opacity: 1;
}

@media only screen and (max-width: 600px) {
  .projects .content:hover {
    -webkit-transition: none;
    -moz-transition: none;
    transition: none;
    background-color: transparent;
  }
}

/********************************************/
/*
/* 09 Owl gallery
/*
/********************************************/
.owl-carousel .col {
  padding: 0;
}

.owl-carousel .owl-item {
  -webkit-transform: translateZ(0) scale(1, 1);
  -webkit-backface-visibility: hidden;
}

.owl-carousel .owl-dot {
  display: inline-block;
  margin-right: .5rem;
}

.owl-carousel .owl-dot span {
  display: block;
  width: 10px;
  height: 10px;
  background: #eeeeee;
  border-radius: 50%;
}

.owl-carousel .owl-dot.active span {
  background: #bdbdbd;
}

/********************************************/
/*
/* 10 Services
/*
/********************************************/
.services .col > div {
  background-color: #f5f5f5;
}

.service-items .content {
  display: -webkit-box;
  display: -moz-box;
  display: box;
  display: -webkit-flex;
  display: -moz-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -moz-box-orient: vertical;
  box-orient: vertical;
  -webkit-box-direction: normal;
  -moz-box-direction: normal;
  box-direction: normal;
  -webkit-flex-direction: column;
  -moz-flex-direction: column;
  flex-direction: column;
  -ms-flex-direction: column;
  -webkit-box-align: center;
  -moz-box-align: center;
  box-align: center;
  -webkit-align-items: center;
  -moz-align-items: center;
  -ms-align-items: center;
  -o-align-items: center;
  align-items: center;
  -ms-flex-align: center;
  -webkit-box-pack: center;
  -moz-box-pack: center;
  box-pack: center;
  -webkit-justify-content: center;
  -moz-justify-content: center;
  -ms-justify-content: center;
  -o-justify-content: center;
  justify-content: center;
  -ms-flex-pack: center;
  height: 100%;
  padding: 0 1rem;
}

.service-items .content i {
  -webkit-transition-property: -webkit-transform, opacity;
  -moz-transition-property: -moz-transform, opacity;
  transition-property: transform, opacity;
  -webkit-transition-duration: 0s, 0s;
  -moz-transition-duration: 0s, 0s;
  transition-duration: 0s, 0s;
  -webkit-transition-timing-function: linear, cubic-bezier(0.075, 0.82, 0.165, 1);
  -moz-transition-timing-function: linear, cubic-bezier(0.075, 0.82, 0.165, 1);
  transition-timing-function: linear, cubic-bezier(0.075, 0.82, 0.165, 1);
  opacity: 1;
}

@media only screen and (max-width: 600px) {
  .service-items .content i {
    -webkit-transition: none;
    -moz-transition: none;
    transition: none;
    -webkit-transform: translateY(-120%);
    -moz-transform: translateY(-120%);
    -ms-transform: translateY(-120%);
    -o-transform: translateY(-120%);
    transform: translateY(-120%);
  }
}

.service-items .content h4,
.service-items .content p {
  -webkit-transition: opacity 0.4s cubic-bezier(0.075, 0.82, 0.165, 1);
  -moz-transition: opacity 0.4s cubic-bezier(0.075, 0.82, 0.165, 1);
  transition: opacity 0.4s cubic-bezier(0.075, 0.82, 0.165, 1);
  width: 100%;
  padding: 0 1.5rem;
  text-align: center;
  cursor: default;
  opacity: 0;
}

@media only screen and (max-width: 600px) {
  .service-items .content h4,
  .service-items .content p {
    opacity: 1;
  }
}

@media only screen and (min-width: 993px) and (max-width: 1100px) {
  .service-items .content p {
    font-size: 1.3rem;
  }
}

@media only screen and (max-width: 600px) {
  .service-items .content h4 {
    font-size: 1.4rem;
  }
}

.service-items .content .description {
  -webkit-transform: translateY(-50%);
  -moz-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  -o-transform: translateY(-50%);
  transform: translateY(-50%);
  position: absolute;
  top: 50%;
  left: 0;
}

@media only screen and (max-width: 600px) {
  .service-items .content .description {
    top: 65%;
  }
}

.service-items .content:hover h4,
.service-items .content:hover p {
  opacity: 1;
}

.service-items .content:hover i {
  -webkit-transition-property: -webkit-transform, opacity;
  -moz-transition-property: -moz-transform, opacity;
  transition-property: transform, opacity;
  -webkit-transition-duration: 10s, 0.4s;
  -moz-transition-duration: 10s, 0.4s;
  transition-duration: 10s, 0.4s;
  -webkit-transition-timing-function: linear, cubic-bezier(0.075, 0.82, 0.165, 1);
  -moz-transition-timing-function: linear, cubic-bezier(0.075, 0.82, 0.165, 1);
  transition-timing-function: linear, cubic-bezier(0.075, 0.82, 0.165, 1);
  -webkit-transform: scale(2);
  -moz-transform: scale(2);
  -ms-transform: scale(2);
  -o-transform: scale(2);
  transform: scale(2);
  opacity: .1;
}

@media only screen and (max-width: 600px) {
  .service-items .content:hover i {
    opacity: 1;
  }
}

/********************************************/
/*
/* 11 Prices
/*
/********************************************/
.prices .divider {
  width: 50%;
  height: 2px;
  margin: 1.5rem auto 0;
}

.prices strong + p {
  margin-top: 0;
}

.prices .info {
  position: relative;
  top: -3px;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
  margin-left: .5rem;
  font-size: 1rem;
  line-height: 1.5rem;
  color: #9e9e9e;
  cursor: help;
  background: #e0e0e0;
  border-radius: 50%;
}

.prices h5 {
  font-size: 4rem;
  font-weight: 200;
}

.prices .currency {
  position: relative;
  top: -1.5rem;
  font-size: 1.5rem;
  font-weight: 300;
}

/********************************************/
/*
/* 12 About
/*
/********************************************/
.about .name {
  margin: .5rem 0 0 1rem;
  font-size: 2rem;
  color: #fff;
}

.about .you {
  height: 100%;
}

.about .you a {
  color: #191919;
  border-bottom: 1px solid #e0e0e0;
}

.about .you a:hover {
  border-bottom: 1px solid #9e9e9e;
}

.about .you .name {
  color: #191919;
  text-align: center;
}

.about .modal .square {
  overflow: scroll;
}

.about .modal .square > .content {
  padding: 1.5rem 2rem;
}

.about .modal-cover .square {
  overflow: hidden;
}

.about .modal-content .square {
  overflow-x: hidden;
}

.about .philosophy {
  padding: 5rem 0 4rem;
}

@media only screen and (max-width: 600px) {
  .about .philosophy {
    padding: 3rem 0 2rem;
  }
}

.about .philosophy .tabs {
  height: auto;
  background-color: transparent;
}

.about .philosophy .tabs .tab {
  height: auto;
  letter-spacing: normal;
  color: #191919;
  text-transform: none;
}

@media only screen and (max-width: 600px) {
  .about .philosophy .tabs .tab h5 {
    display: none;
  }
}

.about .philosophy .tabs .tab a {
  color: rgba(25, 25, 25, 0.6);
}

.about .philosophy .tabs .tab a.active {
  color: #191919;
}

.about .philosophy .tab-contents h5 {
  display: none;
}

@media only screen and (max-width: 600px) {
  .about .philosophy .tab-contents h5 {
    display: block;
    margin: 2rem 0 -2rem;
    text-align: center;
  }
}

.about .philosophy .indicator {
  height: 3px;
  background-color: #191919;
}

/********************************************/
/*
/* 13 Blog
/*
/********************************************/
.blog .posts .content {
  height: 100%;
}

.blog .posts .content div {
  -webkit-transform: translate3d(0, 100%, 0);
  -moz-transform: translate3d(0, 100%, 0);
  -ms-transform: translate3d(0, 100%, 0);
  -o-transform: translate3d(0, 100%, 0);
  transform: translate3d(0, 100%, 0);
  -webkit-transition: all 0s linear;
  -moz-transition: all 0s linear;
  transition: all 0s linear;
  padding: 0 1rem;
  font-size: 4rem;
  line-height: 4rem;
  color: #fff;
  opacity: 0;
}

@media only screen and (max-width: 600px) {
  .blog .posts .content div {
    -webkit-transform: translate3d(0, 0, 0);
    -moz-transform: translate3d(0, 0, 0);
    -ms-transform: translate3d(0, 0, 0);
    -o-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    font-size: 2rem;
    line-height: 2rem;
    text-shadow: 0 1px 1px rgba(25, 25, 25, 0.25);
    opacity: 1;
  }
}

.blog .posts .content div small {
  display: block;
  font-size: 1.5rem;
  font-weight: 200;
}

@media only screen and (max-width: 600px) {
  .blog .posts .content div small {
    font-size: 1rem;
    font-weight: 300;
  }
}

@media only screen and (max-width: 600px) {
  .blog .posts .content {
    background: rgba(25, 25, 25, 0.25);
  }
}

.blog .posts .content .smaller {
  font-size: 2rem;
  line-height: 2rem;
}

.blog .posts .content .smaller small {
  font-size: 1rem;
}

.blog .posts .content:hover {
  background-color: rgba(25, 25, 25, 0.7);
}

.blog .posts .content:hover div {
  -webkit-transform: translate3d(0, 0, 0);
  -moz-transform: translate3d(0, 0, 0);
  -ms-transform: translate3d(0, 0, 0);
  -o-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0);
  -webkit-transition: all 0.3s cubic-bezier(0.075, 0.82, 0.165, 1);
  -moz-transition: all 0.3s cubic-bezier(0.075, 0.82, 0.165, 1);
  transition: all 0.3s cubic-bezier(0.075, 0.82, 0.165, 1);
  opacity: 1;
}

/********************************************/
/*
/* 14 Contact
/*
/********************************************/
.map {
  height: 500px;
}

.send-message span {
  display: inline-block;
  min-width: 50px;
  padding: 0 5px;
  background: rgba(158, 158, 158, 0.1);
  outline: none;
}

.send-message span:focus {
  background: rgba(158, 158, 158, 0.3);
}

.send-message .btn,
.send-message .btn-large {
  margin-top: 2rem;
}

.contact-details a {
  color: #191919;
  border-bottom: 1px solid #e0e0e0;
}

.contact-details a:hover {
  border-bottom: 1px solid #9e9e9e;
}

.contact-details a:hover.fa-external-link {
  color: #757575;
}

.contact-details .active {
  border-bottom: 1px solid #757575;
}

.contact-details address {
  margin-top: 15px;
  font-style: normal;
}

.contact-details .fa {
  font-size: 1rem;
}

.contact-details .im .fa {
  width: 1.5rem;
}

.contact-details .fa-external-link {
  color: #bdbdbd;
}

/********************************************/
/*
/* 15 Inputs
/*
/********************************************/
.input-field label {
  color: #191919;
}

input[type=text],
input[type=email],
input[type=email],
textarea.materialize-textarea {
  padding-right: 1rem;
  padding-left: 1rem;
  background: rgba(158, 158, 158, 0.1);
  border-bottom: 0;
  box-sizing: border-box;
}

textarea.materialize-textarea {
  overflow-y: scroll;
  height: 8rem !important;
}

.input-field input[type=text]:focus:not([readonly]),
.input-field input[type=email]:focus,
.input-field input[type=email]:focus:not([readonly]),
input[type=email]:focus,
input[type=email]:focus:not([readonly]),
textarea.materialize-textarea:focus,
textarea.materialize-textarea:focus:not([readonly]) {
  background: rgba(158, 158, 158, 0.3);
  border-bottom: 0;
  box-shadow: none;
}

.input-field input[type=text]:focus:not([readonly]) + label,
.input-field input[type=email]:focus + label,
.input-field input[type=email]:focus:not([readonly]) + label,
input[type=email]:focus + label,
input[type=email]:focus:not([readonly]) + label,
textarea.materialize-textarea:focus + label,
textarea.materialize-textarea:focus:not([readonly]) + label {
  color: #191919;
}

.input-field input[type=text].valid,
.input-field input[type=email].valid,
textarea.materialize-textarea.valid {
  border-bottom: 0;
  box-shadow: none;
}

.input-field input[type=text].invalid,
.input-field input[type=email].invalid,
textarea.materialize-textarea.invalid {
  border-bottom: 0;
  box-shadow: none;
}

.input-field .prefix.active {
  color: #191919;
}

/********************************************/
/*
/* 16 Footer
/*
/********************************************/
footer.page-footer {
  color: #191919;
  background-color: #f5f5f5;
}

footer.page-footer .footer-copyright {
  color: #191919;
}

footer.page-footer input[type=submit]:focus {
  outline: 0;
}

.flex__container {
  display: flex;
}

.flex--jc--l {
  justify-content: flex-start;
}

.flex--jc--r {
  justify-content: flex-end;
}

.flex--jc--c {
  justify-content: center;
}

.flex--jc--sb {
  justify-content: space-between;
}

.flex--ai--t {
  align-items: flex-start;
}

.flex--ai--b {
  align-items: flex-end;
}

.flex--ai--c {
  align-items: center;
}

.flex--dir--col {
  flex-direction: column;
}

.embed-container {
  position: relative;
  padding-bottom: 56.25%;
  height: 0;
  overflow: hidden;
  max-width: 100%;
  height: auto;
}

.embed-container iframe,
.embed-container object,
.embed-container embed {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.popkin-skin .navbar-fixed {
  height: 0;
}

.popkin-skin nav .brand-logo {
  padding-top: 5px;
}

.popkin-skin nav .brand-logo img {
  height: 82px;
}

.popkin-skin footer.page-footer {
  margin: 0px !important;
  padding: 0px !important;
}

.popkin-skin .btn,
.popkin-skin .btn-large {
  color: #fff;
  background-color: #9c27b0;
}

.popkin-skin #video-viewport {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  z-index: -1;
}

.popkin-skin video {
  display: block;
  width: 100%;
  height: auto;
}

.popkin-skin .hero {
  height: 100%;
  overflow: hidden;
  display: block;
}

.popkin-skin .hero.fullsize-video-bg {
  overflow: hidden;
  position: relative;
  max-height: 560px;
}

@media only screen and (max-width: 992px) {
  .popkin-skin .hero.fullsize-video-bg {
    max-height: 440px;
  }
}

@media only screen and (max-width: 600px) {
  .popkin-skin .hero.fullsize-video-bg {
    max-height: 420px;
  }
}

.popkin-skin .hero.fullsize-video-bg:before {
  content: '';
  background: rgba(114, 45, 0, 0.35);
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
}

.popkin-skin .hero.fullsize-video-bg:after {
  content: '';
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQYV2NkYGD4z8DAwIhMgzgggCKBogKmg3iVAJgZDQNmrIUhAAAAAElFTkSuQmCC);
  background-size: 3px 3px;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  overflow: hidden;
}

.popkin-skin .hero.fullsize-video-bg .overlay {
  z-index: 2;
  display: flex;
  width: 100%;
  height: 100%;
  position: relative;
}

.popkin-skin .hero.fullsize-video-bg .overlay .overlay--content {
  display: flex;
  align-items: center;
  justify-content: center;
}

.popkin-skin .hero.fullsize-video-bg .overlay .overlay--content #quote__rotator {
  max-width: 75%;
  display: flex;
  justify-content: center;
}

.popkin-skin .hero.fullsize-video-bg .overlay .overlay--content #quote__rotator .hero--logo {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
}

.popkin-skin .hero.fullsize-video-bg .overlay .overlay--content #quote__rotator .hero--logo img {
  width: 125px;
  height: 125px;
}

.popkin-skin .hero.fullsize-video-bg .overlay .overlay--content #quote__rotator .quote {
  font-size: 36px;
  line-height: 1em;
  color: white;
  text-transform: uppercase;
  font-weight: 500;
  text-shadow: 2px 3px black;
  text-align: center;
}

@media only screen and (max-width: 992px) {
  .popkin-skin .hero.fullsize-video-bg .overlay .overlay--content #quote__rotator .quote {
    font-size: 24px;
  }
}

.popkin-skin .hero.fullsize-video-bg .overlay .overlay--person {
  display: flex;
  align-items: flex-end;
  justify-content: center;
}

@media only screen and (max-width: 600px) {
  .popkin-skin .hero.fullsize-video-bg .overlay .overlay--person {
    justify-content: flex-end;
  }
}

.popkin-skin .hero h1 {
  -webkit-transform: translateY(-50%);
  -moz-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  -o-transform: translateY(-50%);
  transform: translateY(-50%);
  position: absolute;
  top: 50%;
  z-index: 10;
  width: 100%;
  padding: 0 2rem;
  margin: 0;
  font-size: 5rem;
  font-weight: 700;
  letter-spacing: 2px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
  text-transform: uppercase;
}

@media only screen and (max-width: 600px) {
  .popkin-skin .hero h1 {
    padding: 0 1rem;
    font-size: 3rem;
  }
}

@media only screen and (max-width: 600px) {
  .popkin-skin #bio #bio__wrapper {
    display: flex;
    flex-direction: column-reverse;
  }
}

.popkin-skin #didYouKnow .row .dyk {
  margin-bottom: 40px;
  height: auto;
  font-size: 18px;
  box-sizing: border-box;
  line-height: 24px;
}

.popkin-skin #didYouKnow .row .dyk span {
  font-size: 60px;
  font-weight: bold;
  display: flex;
  margin: 12px;
  color: #3178ba;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QuY3NzIiwic291cmNlcyI6WyJyZWFjdC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvX2JvdXJib24uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL3NldHRpbmdzL19wcmVmaXhlci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3B4LXRvLWVtLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fYXNzZXQtcGlwZWxpbmUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fYXNzaWduLWlucHV0cy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19jb250YWlucy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19jb250YWlucy1mYWxzeS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19pcy1sZW5ndGguc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9faXMtbGlnaHQuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9faXMtbnVtYmVyLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2lzLXNpemUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcHgtdG8tZW0uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcHgtdG8tcmVtLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3NoYWRlLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3N0cmlwLXVuaXRzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3RpbnQuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3VucGFjay5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19tb2R1bGFyLXNjYWxlLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19jb252ZXJ0LXVuaXRzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19kaXJlY3Rpb25hbC12YWx1ZXMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX2ZvbnQtc291cmNlLWRlY2xhcmF0aW9uLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19saW5lYXItYW5nbGUtcGFyc2VyLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19saW5lYXItZ3JhZGllbnQtcGFyc2VyLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19saW5lYXItcG9zaXRpb25zLXBhcnNlci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fcmFkaWFsLWFyZy1wYXJzZXIuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3JhZGlhbC1wb3NpdGlvbnMtcGFyc2VyLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19yYWRpYWwtZ3JhZGllbnQtcGFyc2VyLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19yZW5kZXItZ3JhZGllbnRzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19zaGFwZS1zaXplLXN0cmlwcGVyLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19zdHItdG8tbnVtLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19hbmltYXRpb24uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2FwcGVhcmFuY2Uuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2JhY2tmYWNlLXZpc2liaWxpdHkuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2JhY2tncm91bmQuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2JhY2tncm91bmQtaW1hZ2Uuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2JvcmRlci1pbWFnZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fY2FsYy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fY29sdW1ucy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fZmlsdGVyLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19mbGV4LWJveC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fZm9udC1mYWNlLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19mb250LWZlYXR1cmUtc2V0dGluZ3Muc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2hpZHBpLW1lZGlhLXF1ZXJ5LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19oeXBoZW5zLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19pbWFnZS1yZW5kZXJpbmcuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2tleWZyYW1lcy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fbGluZWFyLWdyYWRpZW50LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19wZXJzcGVjdGl2ZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fcGxhY2Vob2xkZXIuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3JhZGlhbC1ncmFkaWVudC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fc2VsZWN0aW9uLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL190ZXh0LWRlY29yYXRpb24uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3RyYW5zZm9ybS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fdHJhbnNpdGlvbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fdXNlci1zZWxlY3Quc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fYm9yZGVyLWNvbG9yLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2JvcmRlci1yYWRpdXMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fYm9yZGVyLXN0eWxlLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2JvcmRlci13aWR0aC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19idXR0b25zLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2NsZWFyZml4LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2VsbGlwc2lzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2ZvbnQtc3RhY2tzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2hpZGUtdGV4dC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19tYXJnaW4uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcGFkZGluZy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19wb3NpdGlvbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19wcmVmaXhlci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19yZXRpbmEtaW1hZ2Uuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fc2l6ZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL190ZXh0LWlucHV0cy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL190aW1pbmctZnVuY3Rpb25zLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX3RyaWFuZ2xlLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX3dvcmQtd3JhcC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvX2JvdXJib24tZGVwcmVjYXRlZC11cGNvbWluZy5zY3NzIiwiX21hdGVyaWFsaXplLWNvbG9yLnNjc3MiLCJfbWVkaWEtcXVlcnktcmFuZ2VzLnNjc3MiLCJfY29uc3RhbnQtY29sb3JzLnNjc3MiLCJfY29tbW9uLnNjc3MiLCJfc3Bpbm5lcnMuc2NzcyIsIl9uYXYuc2NzcyIsIl9ibG9ja3Muc2NzcyIsIl9tb2RhbC5zY3NzIiwiX3RvYXN0cy5zY3NzIiwiX3NvY2lhbC5zY3NzIiwiX3Byb2plY3RzLnNjc3MiLCJfb3dsLnNjc3MiLCJfc2VydmljZXMuc2NzcyIsIl9wcmljZXMuc2NzcyIsIl9hYm91dC5zY3NzIiwiX2Jsb2cuc2NzcyIsIl9jb250YWN0LnNjc3MiLCJfaW5wdXRzLnNjc3MiLCJfZm9vdGVyLnNjc3MiLCJza2lucy9fcG9wa2luLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVXNpbmcgQm91cmJvbiBmb3IgbWl4aW5zIGFuZCBzdHVmZjogaHR0cDovL2JvdXJib24uaW8vZG9jcy9cbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2JvdXJib24nO1xuXG4vKlxuICogVGFibGUgb2YgY29udGVudHM6XG4gKiAwMSBDb21tb24gZWxlbWVudHNcbiAqIDAyIFNwaW5uZXJzXG4gKiAwMyBOYXZpZ2F0aW9uXG4gKiAwNCBMYXlvdXQgYmxvY2tzXG4gKiAwNSBNb2RhbHNcbiAqIDA2IFRvYXN0c1xuICogMDcgU29jaWFsXG4gKiAwOCBQcm9qZWN0c1xuICogMDkgT3dsIGdhbGxlcnlcbiAqIDEwIFNlcnZpY2VzXG4gKiAxMSBQcmljZXNcbiAqIDEyIEFib3V0XG4gKiAxMyBCbG9nXG4gKiAxNCBDb250YWN0XG4gKiAxNSBJbnB1dHNcbiAqIDE2IEZvb3RlclxuICogMTcgU2tpbnM6IFJpbmcgZ3JlZW5cbiAqIDE4IFNraW5zOiBSaW5nIHBpbmtcbiAqIDE5IFNraW5zOiBUdW5uZWxcbiAqIDIwIFNraW5zOiBXYXZlcyBob3Jpem9udGFsXG4gKiAyMSBTa2luczogV2F2ZXMgdmVydGljYWxcbiAqIDIyIFNraW5zOiBGdXp6eSBodWVcbiAqIDIzIFNraW5zOiBGdXp6eSBzYXR1cmF0aW9uXG4gKiAyNCBTa2luczogQ29tYnVzdGlvbiBwdXJwbGVcbiAqIDI1IFNraW5zOiBDb21idXN0aW9uIHllbGxvd1xuICovXG5cbi8vIE5vdCBjb21waWxlZFxuQGltcG9ydCAnbWF0ZXJpYWxpemUtY29sb3InO1xuXG4vLyBOb3QgY29tcGlsZWRcbkBpbXBvcnQgJ21lZGlhLXF1ZXJ5LXJhbmdlcyc7XG5cbi8vIE5vdCBjb21waWxlZFxuQGltcG9ydCAnY29uc3RhbnQtY29sb3JzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLypcbi8qIDAxIENvbW1vbiBlbGVtZW50c1xuLypcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbkBpbXBvcnQgJ2NvbW1vbic7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qXG4vKiAwMiBTcGlubmVyc1xuLypcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbkBpbXBvcnQgJ3NwaW5uZXJzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLypcbi8qIDAzIE5hdmlnYXRpb25cbi8qXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0ICduYXYnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKlxuLyogMDQgTGF5b3V0IGJsb2Nrc1xuLypcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbkBpbXBvcnQgJ2Jsb2Nrcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qXG4vKiAwNSBNb2RhbHNcbi8qXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0ICdtb2RhbCc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qXG4vKiAwNiBUb2FzdHNcbi8qXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0ICd0b2FzdHMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKlxuLyogMDcgU29jaWFsXG4vKlxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuQGltcG9ydCAnc29jaWFsJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLypcbi8qIDA4IFByb2plY3RzXG4vKlxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuQGltcG9ydCAncHJvamVjdHMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKlxuLyogMDkgT3dsIGdhbGxlcnlcbi8qXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0ICdvd2wnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKlxuLyogMTAgU2VydmljZXNcbi8qXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0ICdzZXJ2aWNlcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qXG4vKiAxMSBQcmljZXNcbi8qXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0ICdwcmljZXMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKlxuLyogMTIgQWJvdXRcbi8qXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0ICdhYm91dCc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qXG4vKiAxMyBCbG9nXG4vKlxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuQGltcG9ydCAnYmxvZyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qXG4vKiAxNCBDb250YWN0XG4vKlxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuQGltcG9ydCAnY29udGFjdCc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qXG4vKiAxNSBJbnB1dHNcbi8qXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0ICdpbnB1dHMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKlxuLyogMTYgRm9vdGVyXG4vKlxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuQGltcG9ydCAnZm9vdGVyJztcblxuQGltcG9ydCAnc2tpbnMvcG9wa2luJztcbiIsIi8vIEJvdXJib24gNC4yLjdcbi8vIGh0dHA6Ly9ib3VyYm9uLmlvXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE1IHRob3VnaHRib3QsIGluYy5cbi8vIE1JVCBMaWNlbnNlXG5cbkBpbXBvcnQgXCJzZXR0aW5ncy9wcmVmaXhlclwiO1xuQGltcG9ydCBcInNldHRpbmdzL3B4LXRvLWVtXCI7XG5AaW1wb3J0IFwic2V0dGluZ3MvYXNzZXQtcGlwZWxpbmVcIjtcblxuQGltcG9ydCBcImZ1bmN0aW9ucy9hc3NpZ24taW5wdXRzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnRhaW5zXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnRhaW5zLWZhbHN5XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2lzLWxlbmd0aFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9pcy1saWdodFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9pcy1udW1iZXJcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvaXMtc2l6ZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9weC10by1lbVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9weC10by1yZW1cIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvc2hhZGVcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvc3RyaXAtdW5pdHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvdGludFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy90cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvdW5wYWNrXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL21vZHVsYXItc2NhbGVcIjtcblxuQGltcG9ydCBcImhlbHBlcnMvY29udmVydC11bml0c1wiO1xuQGltcG9ydCBcImhlbHBlcnMvZGlyZWN0aW9uYWwtdmFsdWVzXCI7XG5AaW1wb3J0IFwiaGVscGVycy9mb250LXNvdXJjZS1kZWNsYXJhdGlvblwiO1xuQGltcG9ydCBcImhlbHBlcnMvZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLWFuZ2xlLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLWdyYWRpZW50LXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLXBvc2l0aW9ucy1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3JhZGlhbC1hcmctcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9yYWRpYWwtcG9zaXRpb25zLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLWdyYWRpZW50LXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvcmVuZGVyLWdyYWRpZW50c1wiO1xuQGltcG9ydCBcImhlbHBlcnMvc2hhcGUtc2l6ZS1zdHJpcHBlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvc3RyLXRvLW51bVwiO1xuXG5AaW1wb3J0IFwiY3NzMy9hbmltYXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL2FwcGVhcmFuY2VcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tmYWNlLXZpc2liaWxpdHlcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmQtaW1hZ2VcIjtcbkBpbXBvcnQgXCJjc3MzL2JvcmRlci1pbWFnZVwiO1xuQGltcG9ydCBcImNzczMvY2FsY1wiO1xuQGltcG9ydCBcImNzczMvY29sdW1uc1wiO1xuQGltcG9ydCBcImNzczMvZmlsdGVyXCI7XG5AaW1wb3J0IFwiY3NzMy9mbGV4LWJveFwiO1xuQGltcG9ydCBcImNzczMvZm9udC1mYWNlXCI7XG5AaW1wb3J0IFwiY3NzMy9mb250LWZlYXR1cmUtc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJjc3MzL2hpZHBpLW1lZGlhLXF1ZXJ5XCI7XG5AaW1wb3J0IFwiY3NzMy9oeXBoZW5zXCI7XG5AaW1wb3J0IFwiY3NzMy9pbWFnZS1yZW5kZXJpbmdcIjtcbkBpbXBvcnQgXCJjc3MzL2tleWZyYW1lc1wiO1xuQGltcG9ydCBcImNzczMvbGluZWFyLWdyYWRpZW50XCI7XG5AaW1wb3J0IFwiY3NzMy9wZXJzcGVjdGl2ZVwiO1xuQGltcG9ydCBcImNzczMvcGxhY2Vob2xkZXJcIjtcbkBpbXBvcnQgXCJjc3MzL3JhZGlhbC1ncmFkaWVudFwiO1xuQGltcG9ydCBcImNzczMvc2VsZWN0aW9uXCI7XG5AaW1wb3J0IFwiY3NzMy90ZXh0LWRlY29yYXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL3RyYW5zZm9ybVwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNpdGlvblwiO1xuQGltcG9ydCBcImNzczMvdXNlci1zZWxlY3RcIjtcblxuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItY29sb3JcIjtcbkBpbXBvcnQgXCJhZGRvbnMvYm9yZGVyLXJhZGl1c1wiO1xuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItc3R5bGVcIjtcbkBpbXBvcnQgXCJhZGRvbnMvYm9yZGVyLXdpZHRoXCI7XG5AaW1wb3J0IFwiYWRkb25zL2J1dHRvbnNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJhZGRvbnMvZWxsaXBzaXNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvZm9udC1zdGFja3NcIjtcbkBpbXBvcnQgXCJhZGRvbnMvaGlkZS10ZXh0XCI7XG5AaW1wb3J0IFwiYWRkb25zL21hcmdpblwiO1xuQGltcG9ydCBcImFkZG9ucy9wYWRkaW5nXCI7XG5AaW1wb3J0IFwiYWRkb25zL3Bvc2l0aW9uXCI7XG5AaW1wb3J0IFwiYWRkb25zL3ByZWZpeGVyXCI7XG5AaW1wb3J0IFwiYWRkb25zL3JldGluYS1pbWFnZVwiO1xuQGltcG9ydCBcImFkZG9ucy9zaXplXCI7XG5AaW1wb3J0IFwiYWRkb25zL3RleHQtaW5wdXRzXCI7XG5AaW1wb3J0IFwiYWRkb25zL3RpbWluZy1mdW5jdGlvbnNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvdHJpYW5nbGVcIjtcbkBpbXBvcnQgXCJhZGRvbnMvd29yZC13cmFwXCI7XG5cbkBpbXBvcnQgXCJib3VyYm9uLWRlcHJlY2F0ZWQtdXBjb21pbmdcIjtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEdsb2JhbCB2YXJpYWJsZXMgdG8gZW5hYmxlIG9yIGRpc2FibGUgdmVuZG9yIHByZWZpeGVzXG5cbiRwcmVmaXgtZm9yLXdlYmtpdDogICAgdHJ1ZSAhZGVmYXVsdDtcbiRwcmVmaXgtZm9yLW1vemlsbGE6ICAgdHJ1ZSAhZGVmYXVsdDtcbiRwcmVmaXgtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcbiRwcmVmaXgtZm9yLW9wZXJhOiAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRwcmVmaXgtZm9yLXNwZWM6ICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiIsIiRlbS1iYXNlOiAxNnB4ICFkZWZhdWx0O1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQSBnbG9iYWwgc2V0dGluZyB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgYCRhc3NldC1waXBlbGluZWAgdmFyaWFibGUgZm9yIGFsbCBmdW5jdGlvbnMgdGhhdCBhY2NlcHQgaXQuXG4vLy9cbi8vLyBAdHlwZSBCb29sXG5cbiRhc3NldC1waXBlbGluZTogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAZnVuY3Rpb24gYXNzaWduLWlucHV0cygkaW5wdXRzLCAkcHNldWRvOiBudWxsKSB7XG4gICRsaXN0OiAoKTtcblxuICBAZWFjaCAkaW5wdXQgaW4gJGlucHV0cyB7XG4gICAgJGlucHV0OiB1bnF1b3RlKCRpbnB1dCk7XG4gICAgJGlucHV0OiBpZigkcHNldWRvLCAkaW5wdXQgKyBcIjpcIiArICRwc2V1ZG8sICRpbnB1dCk7XG4gICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJGlucHV0LCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ2hlY2tzIGlmIGEgbGlzdCBjb250YWlucyBhIHZhbHVlKHMpLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0XG4vLy8gICBUaGUgbGlzdCB0byBjaGVjayBhZ2FpbnN0LlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkdmFsdWVzXG4vLy8gICBBIHNpbmdsZSB2YWx1ZSBvciBsaXN0IG9mIHZhbHVlcyB0byBjaGVjayBmb3IuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIGNvbnRhaW5zKCRsaXN0LCAkdmFsdWUpXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuXG5AZnVuY3Rpb24gY29udGFpbnMoJGxpc3QsICR2YWx1ZXMuLi4pIHtcbiAgQGVhY2ggJHZhbHVlIGluICR2YWx1ZXMge1xuICAgIEBpZiB0eXBlLW9mKGluZGV4KCRsaXN0LCAkdmFsdWUpKSAhPSBcIm51bWJlclwiIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ2hlY2tzIGlmIGEgbGlzdCBkb2VzIG5vdCBjb250YWlucyBhIHZhbHVlLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0XG4vLy8gICBUaGUgbGlzdCB0byBjaGVjayBhZ2FpbnN0LlxuLy8vXG4vLy8gQHJldHVybiB7Qm9vbH1cblxuQGZ1bmN0aW9uIGNvbnRhaW5zLWZhbHN5KCRsaXN0KSB7XG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICBAaWYgbm90ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ2hlY2tzIGZvciBhIHZhbGlkIENTUyBsZW5ndGguXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHZhbHVlXG5cbkBmdW5jdGlvbiBpcy1sZW5ndGgoJHZhbHVlKSB7XG4gIEByZXR1cm4gdHlwZS1vZigkdmFsdWUpICE9IFwibnVsbFwiIGFuZCAoc3RyLXNsaWNlKCR2YWx1ZSArIFwiXCIsIDEsIDQpID09IFwiY2FsY1wiXG4gICAgICAgb3IgaW5kZXgoYXV0byBpbmhlcml0IGluaXRpYWwgMCwgJHZhbHVlKVxuICAgICAgIG9yICh0eXBlLW9mKCR2YWx1ZSkgPT0gXCJudW1iZXJcIiBhbmQgbm90KHVuaXRsZXNzKCR2YWx1ZSkpKSk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm9ncmFtYXRpY2FsbHkgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgY29sb3IgaXMgbGlnaHQgb3IgZGFyay5cbi8vL1xuLy8vIEBsaW5rIGh0dHA6Ly9yb2JvdHMudGhvdWdodGJvdC5jb20vY2xvc2VyLWxvb2stY29sb3ItbGlnaHRuZXNzXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yIChIZXgpfSAkY29sb3Jcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgaXMtbGlnaHQoJGNvbG9yKVxuLy8vXG4vLy8gQHJldHVybiB7Qm9vbH1cblxuQGZ1bmN0aW9uIGlzLWxpZ2h0KCRoZXgtY29sb3IpIHtcbiAgJC1sb2NhbC1yZWQ6IHJlZChyZ2JhKCRoZXgtY29sb3IsIDEpKTtcbiAgJC1sb2NhbC1ncmVlbjogZ3JlZW4ocmdiYSgkaGV4LWNvbG9yLCAxKSk7XG4gICQtbG9jYWwtYmx1ZTogYmx1ZShyZ2JhKCRoZXgtY29sb3IsIDEpKTtcbiAgJC1sb2NhbC1saWdodG5lc3M6ICgkLWxvY2FsLXJlZCAqIDAuMjEyNiArICQtbG9jYWwtZ3JlZW4gKiAwLjcxNTIgKyAkLWxvY2FsLWJsdWUgKiAwLjA3MjIpIC8gMjU1O1xuXG4gIEByZXR1cm4gJC1sb2NhbC1saWdodG5lc3MgPiAwLjY7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgZm9yIGEgdmFsaWQgbnVtYmVyLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZVxuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBjb250YWluc1xuXG5AZnVuY3Rpb24gaXMtbnVtYmVyKCR2YWx1ZSkge1xuICBAcmV0dXJuIGNvbnRhaW5zKFwiMFwiIFwiMVwiIFwiMlwiIFwiM1wiIFwiNFwiIFwiNVwiIFwiNlwiIFwiN1wiIFwiOFwiIFwiOVwiIDAgMSAyIDMgNCA1IDYgNyA4IDksICR2YWx1ZSk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgZm9yIGEgdmFsaWQgQ1NTIHNpemUuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHZhbHVlXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBpcy1sZW5ndGhcblxuQGZ1bmN0aW9uIGlzLXNpemUoJHZhbHVlKSB7XG4gIEByZXR1cm4gaXMtbGVuZ3RoKCR2YWx1ZSlcbiAgICAgICAgICBvciBjb250YWlucyhcImZpbGxcIiBcImZpdC1jb250ZW50XCIgXCJtaW4tY29udGVudFwiIFwibWF4LWNvbnRlbnRcIiwgJHZhbHVlKTtcbn1cbiIsIi8vIENvbnZlcnQgcGl4ZWxzIHRvIGVtc1xuLy8gZWcuIGZvciBhIHJlbGF0aW9uYWwgdmFsdWUgb2YgMTJweCB3cml0ZSBlbSgxMikgd2hlbiB0aGUgcGFyZW50IGlzIDE2cHhcbi8vIGlmIHRoZSBwYXJlbnQgaXMgYW5vdGhlciB2YWx1ZSBzYXkgMjRweCB3cml0ZSBlbSgxMiwgMjQpXG5cbkBmdW5jdGlvbiBlbSgkcHh2YWwsICRiYXNlOiAkZW0tYmFzZSkge1xuICBAaWYgbm90IHVuaXRsZXNzKCRweHZhbCkge1xuICAgICRweHZhbDogc3RyaXAtdW5pdHMoJHB4dmFsKTtcbiAgfVxuICBAaWYgbm90IHVuaXRsZXNzKCRiYXNlKSB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXRzKCRiYXNlKTtcbiAgfVxuICBAcmV0dXJuICgkcHh2YWwgLyAkYmFzZSkgKiAxZW07XG59XG4iLCIvLyBDb252ZXJ0IHBpeGVscyB0byByZW1zXG4vLyBlZy4gZm9yIGEgcmVsYXRpb25hbCB2YWx1ZSBvZiAxMnB4IHdyaXRlIHJlbSgxMilcbi8vIEFzc3VtZXMgJGVtLWJhc2UgaXMgdGhlIGZvbnQtc2l6ZSBvZiA8aHRtbD5cblxuQGZ1bmN0aW9uIHJlbSgkcHh2YWwpIHtcbiAgQGlmIG5vdCB1bml0bGVzcygkcHh2YWwpIHtcbiAgICAkcHh2YWw6IHN0cmlwLXVuaXRzKCRweHZhbCk7XG4gIH1cblxuICAkYmFzZTogJGVtLWJhc2U7XG4gIEBpZiBub3QgdW5pdGxlc3MoJGJhc2UpIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdHMoJGJhc2UpO1xuICB9XG4gIEByZXR1cm4gKCRweHZhbCAvICRiYXNlKSAqIDFyZW07XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBNaXhlcyBhIGNvbG9yIHdpdGggYmxhY2suXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3Jcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIChQZXJjZW50YWdlKX0gJHBlcmNlbnRcbi8vLyAgIFRoZSBhbW91bnQgb2YgYmxhY2sgdG8gYmUgbWl4ZWQgaW4uXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogc2hhZGUoI2ZmYmI1MiwgNjAlKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzY2NGEyMDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXR1cm4ge0NvbG9yfVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkcGVyY2VudCkge1xuICBAcmV0dXJuIG1peCgjMDAwLCAkY29sb3IsICRwZXJjZW50KTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFN0cmlwcyB0aGUgdW5pdCBmcm9tIGEgbnVtYmVyLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgKFdpdGggVW5pdCl9ICR2YWx1ZVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAkZGltZW5zaW9uOiBzdHJpcC11bml0cygxMGVtKTtcbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgICRkaW1lbnNpb246IDEwO1xuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyIChVbml0bGVzcyl9XG5cbkBmdW5jdGlvbiBzdHJpcC11bml0cygkdmFsdWUpIHtcbiAgQHJldHVybiAoJHZhbHVlIC8gKCR2YWx1ZSAqIDAgKyAxKSk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBNaXhlcyBhIGNvbG9yIHdpdGggd2hpdGUuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3Jcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIChQZXJjZW50YWdlKX0gJHBlcmNlbnRcbi8vLyAgIFRoZSBhbW91bnQgb2Ygd2hpdGUgdG8gYmUgbWl4ZWQgaW4uXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogdGludCgjNmVjYWE2LCA0MCUpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYThkZmM5O1xuLy8vICAgfVxuLy8vXG4vLy8gQHJldHVybiB7Q29sb3J9XG5cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnQpIHtcbiAgQHJldHVybiBtaXgoI2ZmZiwgJGNvbG9yLCAkcGVyY2VudCk7XG59XG4iLCIvLyBSZXR1cm4gdmVuZG9yLXByZWZpeGVkIHByb3BlcnR5IG5hbWVzIGlmIGFwcHJvcHJpYXRlXG4vLyBFeGFtcGxlOiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCh0cmFuc2Zvcm0sIGNvbG9yLCBiYWNrZ3JvdW5kKSwgbW96KSAtPiAtbW96LXRyYW5zZm9ybSwgY29sb3IsIGJhY2tncm91bmRcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBmdW5jdGlvbiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wcywgJHZlbmRvcjogZmFsc2UpIHtcbiAgJG5ldy1wcm9wczogKCk7XG5cbiAgQGVhY2ggJHByb3AgaW4gJHByb3BzIHtcbiAgICAkbmV3LXByb3BzOiBhcHBlbmQoJG5ldy1wcm9wcywgdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lKCRwcm9wLCAkdmVuZG9yKSwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkbmV3LXByb3BzO1xufVxuXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lKCRwcm9wLCAkdmVuZG9yOiBmYWxzZSkge1xuICAvLyBwdXQgb3RoZXIgcHJvcGVydGllcyB0aGF0IG5lZWQgdG8gYmUgcHJlZml4ZWQgaGVyZSBhc3dlbGxcbiAgQGlmICR2ZW5kb3IgYW5kICRwcm9wID09IHRyYW5zZm9ybSB7XG4gICAgQHJldHVybiB1bnF1b3RlKCctJyskdmVuZG9yKyctJyskcHJvcCk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHByb3A7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENvbnZlcnRzIHNob3J0aGFuZCB0byB0aGUgNC12YWx1ZSBzeW50YXguXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRzaG9ydGhhbmRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW46IHVucGFjaygxZW0gMmVtKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgbWFyZ2luOiAxZW0gMmVtIDFlbSAyZW07XG4vLy8gICB9XG5cbkBmdW5jdGlvbiB1bnBhY2soJHNob3J0aGFuZCkge1xuICBAaWYgbGVuZ3RoKCRzaG9ydGhhbmQpID09IDEge1xuICAgIEByZXR1cm4gbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDEpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkc2hvcnRoYW5kKSA9PSAyIHtcbiAgICBAcmV0dXJuIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMikgbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAyKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHNob3J0aGFuZCkgPT0gMyB7XG4gICAgQHJldHVybiBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDIpIG50aCgkc2hvcnRoYW5kLCAzKSBudGgoJHNob3J0aGFuZCwgMik7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJHNob3J0aGFuZDtcbiAgfVxufVxuIiwiLy8gU2NhbGluZyBWYXJpYWJsZXNcbiRnb2xkZW46ICAgICAgICAgICAxLjYxODtcbiRtaW5vci1zZWNvbmQ6ICAgICAxLjA2NztcbiRtYWpvci1zZWNvbmQ6ICAgICAxLjEyNTtcbiRtaW5vci10aGlyZDogICAgICAxLjI7XG4kbWFqb3ItdGhpcmQ6ICAgICAgMS4yNTtcbiRwZXJmZWN0LWZvdXJ0aDogICAxLjMzMztcbiRhdWdtZW50ZWQtZm91cnRoOiAxLjQxNDtcbiRwZXJmZWN0LWZpZnRoOiAgICAxLjU7XG4kbWlub3Itc2l4dGg6ICAgICAgMS42O1xuJG1ham9yLXNpeHRoOiAgICAgIDEuNjY3O1xuJG1pbm9yLXNldmVudGg6ICAgIDEuNzc4O1xuJG1ham9yLXNldmVudGg6ICAgIDEuODc1O1xuJG9jdGF2ZTogICAgICAgICAgIDI7XG4kbWFqb3ItdGVudGg6ICAgICAgMi41O1xuJG1ham9yLWVsZXZlbnRoOiAgIDIuNjY3O1xuJG1ham9yLXR3ZWxmdGg6ICAgIDM7XG4kZG91YmxlLW9jdGF2ZTogICAgNDtcblxuJG1vZHVsYXItc2NhbGUtcmF0aW86ICRwZXJmZWN0LWZvdXJ0aCAhZGVmYXVsdDtcbiRtb2R1bGFyLXNjYWxlLWJhc2U6IGVtKCRlbS1iYXNlKSAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIG1vZHVsYXItc2NhbGUoJGluY3JlbWVudCwgJHZhbHVlOiAkbW9kdWxhci1zY2FsZS1iYXNlLCAkcmF0aW86ICRtb2R1bGFyLXNjYWxlLXJhdGlvKSB7XG4gICR2MTogbnRoKCR2YWx1ZSwgMSk7XG4gICR2MjogbnRoKCR2YWx1ZSwgbGVuZ3RoKCR2YWx1ZSkpO1xuICAkdmFsdWU6ICR2MTtcblxuICAvLyBzY2FsZSAkdjIgdG8ganVzdCBhYm92ZSAkdjFcbiAgQHdoaWxlICR2MiA+ICR2MSB7XG4gICAgJHYyOiAoJHYyIC8gJHJhdGlvKTsgLy8gd2lsbCBiZSBvZmYtYnktMVxuICB9XG4gIEB3aGlsZSAkdjIgPCAkdjEge1xuICAgICR2MjogKCR2MiAqICRyYXRpbyk7IC8vIHdpbGwgZml4IG9mZi1ieS0xXG4gIH1cblxuICAvLyBjaGVjayBBRlRFUiBzY2FsaW5nICR2MiB0byBwcmV2ZW50IGRvdWJsZS1jb3VudGluZyBjb3JuZXItY2FzZVxuICAkZG91YmxlLXN0cmFuZGVkOiAkdjIgPiAkdjE7XG5cbiAgQGlmICRpbmNyZW1lbnQgPiAwIHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRpbmNyZW1lbnQge1xuICAgICAgQGlmICRkb3VibGUtc3RyYW5kZWQgYW5kICgkdjEgKiAkcmF0aW8pID4gJHYyIHtcbiAgICAgICAgJHZhbHVlOiAkdjI7XG4gICAgICAgICR2MjogKCR2MiAqICRyYXRpbyk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJHYxOiAoJHYxICogJHJhdGlvKTtcbiAgICAgICAgJHZhbHVlOiAkdjE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRpbmNyZW1lbnQgPCAwIHtcbiAgICAvLyBhZGp1c3QgJHYyIHRvIGp1c3QgYmVsb3cgJHYxXG4gICAgQGlmICRkb3VibGUtc3RyYW5kZWQge1xuICAgICAgJHYyOiAoJHYyIC8gJHJhdGlvKTtcbiAgICB9XG5cbiAgICBAZm9yICRpIGZyb20gJGluY3JlbWVudCB0aHJvdWdoIC0xIHtcbiAgICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIGFuZCAoJHYxIC8gJHJhdGlvKSA8ICR2MiB7XG4gICAgICAgICR2YWx1ZTogJHYyO1xuICAgICAgICAkdjI6ICgkdjIgLyAkcmF0aW8pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICR2MTogKCR2MSAvICRyYXRpbyk7XG4gICAgICAgICR2YWx1ZTogJHYxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBzdHItdG8tbnVtIGZuLlxuLy8gU291cmNlOiBodHRwOi8vc2Fzc21laXN0ZXIuY29tL2dpc3QvOTY0NzQwOFxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuQGZ1bmN0aW9uIF9jb252ZXJ0LXVuaXRzKCRudW1iZXIsICR1bml0KSB7XG4gICRzdHJpbmdzOiBcInB4XCIsIFwiY21cIiwgXCJtbVwiLCBcIiVcIiwgXCJjaFwiLCBcInBpY2FcIiwgXCJpblwiLCBcImVtXCIsIFwicmVtXCIsIFwicHRcIiwgXCJwY1wiLCBcImV4XCIsIFwidndcIiwgXCJ2aFwiLCBcInZtaW5cIiwgXCJ2bWF4XCIsIFwiZGVnXCIsIFwicmFkXCIsIFwiZ3JhZFwiLCBcInR1cm5cIjtcbiAgJHVuaXRzOiAgIDFweCwgMWNtLCAxbW0sIDElLCAxY2gsIDFwaWNhLCAxaW4sIDFlbSwgMXJlbSwgMXB0LCAxcGMsIDFleCwgMXZ3LCAxdmgsIDF2bWluLCAxdm1heCwgMWRlZywgMXJhZCwgMWdyYWQsIDF0dXJuO1xuICAkaW5kZXg6IGluZGV4KCRzdHJpbmdzLCAkdW5pdCk7XG5cbiAgQGlmIG5vdCAkaW5kZXgge1xuICAgIEB3YXJuIFwiVW5rbm93biB1bml0IGAjeyR1bml0fWAuXCI7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRudW1iZXIpICE9IFwibnVtYmVyXCIge1xuICAgIEB3YXJuIFwiYCN7JG51bWJlcn0gaXMgbm90IGEgbnVtYmVyYFwiO1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBAcmV0dXJuICRudW1iZXIgKiBudGgoJHVuaXRzLCAkaW5kZXgpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gRGlyZWN0aW9uYWwtcHJvcGVydHkgbWl4aW5zIGFyZSBzaG9ydGhhbmRzIGZvciB3cml0aW5nIHByb3BlcnRpZXMgbGlrZSB0aGUgZm9sbG93aW5nXG4vLy9cbi8vLyBAaWdub3JlIFlvdSBjYW4gYWxzbyB1c2UgYGZhbHNlYCBpbnN0ZWFkIG9mIGBudWxsYC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgZGlyZWN0aW9uYWwgdmFsdWVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLXN0eWxlKGRvdHRlZCBudWxsKTtcbi8vLyAgICAgQGluY2x1ZGUgbWFyZ2luKG51bGwgMCAxMHB4KTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogZG90dGVkO1xuLy8vICAgICBib3JkZXItdG9wLXN0eWxlOiBkb3R0ZWQ7XG4vLy8gICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4vLy8gICAgIG1hcmdpbi1sZWZ0OiAwO1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zLWZhbHN5XG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fVxuXG5AZnVuY3Rpb24gY29sbGFwc2UtZGlyZWN0aW9uYWxzKCR2YWxzKSB7XG4gICRvdXRwdXQ6IG51bGw7XG5cbiAgJGE6IG50aCgkdmFscywgMSk7XG4gICRiOiBpZihsZW5ndGgoJHZhbHMpIDwgMiwgJGEsIG50aCgkdmFscywgMikpO1xuICAkYzogaWYobGVuZ3RoKCR2YWxzKSA8IDMsICRhLCBudGgoJHZhbHMsIDMpKTtcbiAgJGQ6IGlmKGxlbmd0aCgkdmFscykgPCAyLCAkYSwgbnRoKCR2YWxzLCBpZihsZW5ndGgoJHZhbHMpIDwgNCwgMiwgNCkpKTtcblxuICBAaWYgJGEgPT0gMCB7ICRhOiAwOyB9XG4gIEBpZiAkYiA9PSAwIHsgJGI6IDA7IH1cbiAgQGlmICRjID09IDAgeyAkYzogMDsgfVxuICBAaWYgJGQgPT0gMCB7ICRkOiAwOyB9XG5cbiAgQGlmICRhID09ICRiIGFuZCAkYSA9PSAkYyBhbmQgJGEgPT0gJGQgeyAkb3V0cHV0OiAkYTsgICAgICAgICAgfVxuICBAZWxzZSBpZiAkYSA9PSAkYyBhbmQgJGIgPT0gJGQgICAgICAgICB7ICRvdXRwdXQ6ICRhICRiOyAgICAgICB9XG4gIEBlbHNlIGlmICRiID09ICRkICAgICAgICAgICAgICAgICAgICAgIHsgJG91dHB1dDogJGEgJGIgJGM7ICAgIH1cbiAgQGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkb3V0cHV0OiAkYSAkYiAkYyAkZDsgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cblxuLy8vIE91dHB1dCBkaXJlY3Rpb25hbCBwcm9wZXJ0aWVzLCBmb3IgaW5zdGFuY2UgYG1hcmdpbmAuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkcHJlXG4vLy8gICBQcmVmaXggdG8gdXNlXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdWZcbi8vLyAgIFN1ZmZpeCB0byB1c2Vcbi8vLyBAcGFyYW0ge0xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIHZhbHVlc1xuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBjb2xsYXBzZS1kaXJlY3Rpb25hbHNcbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zLWZhbHN5XG5cbkBtaXhpbiBkaXJlY3Rpb25hbC1wcm9wZXJ0eSgkcHJlLCAkc3VmLCAkdmFscykge1xuICAvLyBQcm9wZXJ0eSBOYW1lc1xuICAkdG9wOiAgICAkcHJlICsgXCItdG9wXCIgICAgKyBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xuICAkYm90dG9tOiAkcHJlICsgXCItYm90dG9tXCIgKyBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xuICAkbGVmdDogICAkcHJlICsgXCItbGVmdFwiICAgKyBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xuICAkcmlnaHQ6ICAkcHJlICsgXCItcmlnaHRcIiAgKyBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xuICAkYWxsOiAgICAkcHJlICsgICAgICAgICAgICAgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcblxuICAkdmFsczogY29sbGFwc2UtZGlyZWN0aW9uYWxzKCR2YWxzKTtcblxuICBAaWYgY29udGFpbnMtZmFsc3koJHZhbHMpIHtcbiAgICBAaWYgbnRoKCR2YWxzLCAxKSB7ICN7JHRvcH06IG50aCgkdmFscywgMSk7IH1cblxuICAgIEBpZiBsZW5ndGgoJHZhbHMpID09IDEge1xuICAgICAgQGlmIG50aCgkdmFscywgMSkgeyAjeyRyaWdodH06IG50aCgkdmFscywgMSk7IH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpZiBudGgoJHZhbHMsIDIpIHsgI3skcmlnaHR9OiBudGgoJHZhbHMsIDIpOyB9XG4gICAgfVxuXG4gICAgQGlmIGxlbmd0aCgkdmFscykgPT0gMiB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAxKSB7ICN7JGJvdHRvbX06IG50aCgkdmFscywgMSk7IH1cbiAgICAgIEBpZiBudGgoJHZhbHMsIDIpIHsgI3skbGVmdH06ICAgbnRoKCR2YWxzLCAyKTsgfVxuICAgIH0gQGVsc2UgaWYgbGVuZ3RoKCR2YWxzKSA9PSAzIHtcbiAgICAgIEBpZiBudGgoJHZhbHMsIDMpIHsgI3skYm90dG9tfTogbnRoKCR2YWxzLCAzKTsgfVxuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRsZWZ0fTogICBudGgoJHZhbHMsIDIpOyB9XG4gICAgfSBAZWxzZSBpZiBsZW5ndGgoJHZhbHMpID09IDQge1xuICAgICAgQGlmIG50aCgkdmFscywgMykgeyAjeyRib3R0b219OiBudGgoJHZhbHMsIDMpOyB9XG4gICAgICBAaWYgbnRoKCR2YWxzLCA0KSB7ICN7JGxlZnR9OiAgIG50aCgkdmFscywgNCk7IH1cbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICN7JGFsbH06ICR2YWxzO1xuICB9XG59XG4iLCIvLyBVc2VkIGZvciBjcmVhdGluZyB0aGUgc291cmNlIHN0cmluZyBmb3IgZm9udHMgdXNpbmcgQGZvbnQtZmFjZVxuLy8gUmVmZXJlbmNlOiBodHRwOi8vZ29vLmdsL1J1MWJLUFxuXG5AZnVuY3Rpb24gZm9udC11cmwtcHJlZml4ZXIoJGFzc2V0LXBpcGVsaW5lKSB7XG4gIEBpZiAkYXNzZXQtcGlwZWxpbmUgPT0gdHJ1ZSB7XG4gICAgQHJldHVybiBmb250LXVybDtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiB1cmw7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGZvbnQtc291cmNlLWRlY2xhcmF0aW9uKFxuICAkZm9udC1mYW1pbHksXG4gICRmaWxlLXBhdGgsXG4gICRhc3NldC1waXBlbGluZSxcbiAgJGZpbGUtZm9ybWF0cyxcbiAgJGZvbnQtdXJsKSB7XG5cbiAgJHNyYzogKCk7XG5cbiAgJGZvcm1hdHMtbWFwOiAoXG4gICAgZW90OiAgIFwiI3skZmlsZS1wYXRofS5lb3Q/I2llZml4XCIgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksXG4gICAgd29mZjI6IFwiI3skZmlsZS1wYXRofS53b2ZmMlwiIGZvcm1hdChcIndvZmYyXCIpLFxuICAgIHdvZmY6ICBcIiN7JGZpbGUtcGF0aH0ud29mZlwiIGZvcm1hdChcIndvZmZcIiksXG4gICAgdHRmOiAgIFwiI3skZmlsZS1wYXRofS50dGZcIiBmb3JtYXQoXCJ0cnVldHlwZVwiKSxcbiAgICBzdmc6ICAgXCIjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX1cIiBmb3JtYXQoXCJzdmdcIilcbiAgKTtcblxuICBAZWFjaCAka2V5LCAkdmFsdWVzIGluICRmb3JtYXRzLW1hcCB7XG4gICAgQGlmIGNvbnRhaW5zKCRmaWxlLWZvcm1hdHMsICRrZXkpIHtcbiAgICAgICRmaWxlLXBhdGg6IG50aCgkdmFsdWVzLCAxKTtcbiAgICAgICRmb250LWZvcm1hdDogbnRoKCR2YWx1ZXMsIDIpO1xuXG4gICAgICBAaWYgJGFzc2V0LXBpcGVsaW5lID09IHRydWUge1xuICAgICAgICAkc3JjOiBhcHBlbmQoJHNyYywgZm9udC11cmwoJGZpbGUtcGF0aCkgJGZvbnQtZm9ybWF0LCBjb21tYSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJHNyYzogYXBwZW5kKCRzcmMsIHVybCgkZmlsZS1wYXRoKSAkZm9udC1mb3JtYXQsIGNvbW1hKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzcmM7XG59XG4iLCJAZnVuY3Rpb24gX2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXR5cGUsICRncmFkaWVudC1wb3NpdGlvbnMpIHtcbiAgQGlmICRncmFkaWVudC1wb3NpdGlvbnNcbiAgYW5kICgkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIpXG4gIGFuZCAodHlwZS1vZigkZ3JhZGllbnQtcG9zaXRpb25zKSAhPSBjb2xvcikge1xuICAgICRncmFkaWVudC1wb3NpdGlvbnM6IF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtcG9zaXRpb25zKTtcbiAgfVxuICBAZWxzZSBpZiAkZ3JhZGllbnQtcG9zaXRpb25zXG4gIGFuZCAoJGdyYWRpZW50LXR5cGUgPT0gcmFkaWFsKVxuICBhbmQgKHR5cGUtb2YoJGdyYWRpZW50LXBvc2l0aW9ucykgIT0gY29sb3IpIHtcbiAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvc2l0aW9ucyk7XG4gIH1cbiAgQHJldHVybiAkZ3JhZGllbnQtcG9zaXRpb25zO1xufVxuIiwiLy8gUHJpdmF0ZSBmdW5jdGlvbiBmb3IgbGluZWFyLWdyYWRpZW50LXBhcnNlclxuQGZ1bmN0aW9uIF9saW5lYXItYW5nbGUtcGFyc2VyKCRpbWFnZSwgJGZpcnN0LXZhbCwgJHByZWZpeCwgJHN1ZmZpeCkge1xuICAkb2Zmc2V0OiBudWxsO1xuICAkdW5pdC1zaG9ydDogIHN0ci1zbGljZSgkZmlyc3QtdmFsLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpIC0gMiwgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XG4gICR1bml0LWxvbmc6ICAgc3RyLXNsaWNlKCRmaXJzdC12YWwsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkgLSAzLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcblxuICBAaWYgKCR1bml0LWxvbmcgPT0gXCJncmFkXCIpIG9yXG4gICAgICAoJHVuaXQtbG9uZyA9PSBcInR1cm5cIikge1xuICAgICRvZmZzZXQ6IGlmKCR1bml0LWxvbmcgPT0gXCJncmFkXCIsIC0xMDBncmFkICogMywgLTAuNzV0dXJuKTtcbiAgfVxuXG4gIEBlbHNlIGlmICgkdW5pdC1zaG9ydCA9PSBcImRlZ1wiKSBvclxuICAgICAgICAgICAoJHVuaXQtc2hvcnQgPT0gXCJyYWRcIikge1xuICAgICRvZmZzZXQ6IGlmKCR1bml0LXNob3J0ID09IFwiZGVnXCIsIC05MCAqIDMsIDEuNnJhZCk7XG4gIH1cblxuICBAaWYgJG9mZnNldCB7XG4gICAgJG51bTogX3N0ci10by1udW0oJGZpcnN0LXZhbCk7XG5cbiAgICBAcmV0dXJuIChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkcHJlZml4ICsgKCRvZmZzZXQgLSAkbnVtKSArICRzdWZmaXgsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG59XG4iLCJAZnVuY3Rpb24gX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoJGltYWdlKSB7XG4gICRpbWFnZTogdW5xdW90ZSgkaW1hZ2UpO1xuICAkZ3JhZGllbnRzOiAoKTtcbiAgJHN0YXJ0OiBzdHItaW5kZXgoJGltYWdlLCBcIihcIik7XG4gICRlbmQ6IHN0ci1pbmRleCgkaW1hZ2UsIFwiLFwiKTtcbiAgJGZpcnN0LXZhbDogc3RyLXNsaWNlKCRpbWFnZSwgJHN0YXJ0ICsgMSwgJGVuZCAtIDEpO1xuXG4gICRwcmVmaXg6IHN0ci1zbGljZSgkaW1hZ2UsIDEsICRzdGFydCk7XG4gICRzdWZmaXg6IHN0ci1zbGljZSgkaW1hZ2UsICRlbmQsIHN0ci1sZW5ndGgoJGltYWdlKSk7XG5cbiAgJGhhcy1tdWx0aXBsZS12YWxzOiBzdHItaW5kZXgoJGZpcnN0LXZhbCwgXCIgXCIpO1xuICAkaGFzLXNpbmdsZS1wb3NpdGlvbjogdW5xdW90ZShfcG9zaXRpb24tZmxpcHBlcigkZmlyc3QtdmFsKSArIFwiXCIpO1xuICAkaGFzLWFuZ2xlOiBpcy1udW1iZXIoc3RyLXNsaWNlKCRmaXJzdC12YWwsIDEsIDEpKTtcblxuICBAaWYgJGhhcy1tdWx0aXBsZS12YWxzIHtcbiAgICAkZ3JhZGllbnRzOiBfbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlcigkaW1hZ2UsICRmaXJzdC12YWwsICRwcmVmaXgsICRzdWZmaXgsICRoYXMtbXVsdGlwbGUtdmFscyk7XG4gIH1cblxuICBAZWxzZSBpZiAkaGFzLXNpbmdsZS1wb3NpdGlvbiAhPSBcIlwiIHtcbiAgICAkcG9zOiB1bnF1b3RlKCRoYXMtc2luZ2xlLXBvc2l0aW9uICsgXCJcIik7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJGltYWdlLFxuICAgICAgc3BlYy1pbWFnZTogJHByZWZpeCArIFwidG8gXCIgKyAkcG9zICsgJHN1ZmZpeFxuICAgICk7XG4gIH1cblxuICBAZWxzZSBpZiAkaGFzLWFuZ2xlIHtcbiAgICAvLyBSb3RhdGUgZGVncmVlIGZvciB3ZWJraXRcbiAgICAkZ3JhZGllbnRzOiBfbGluZWFyLWFuZ2xlLXBhcnNlcigkaW1hZ2UsICRmaXJzdC12YWwsICRwcmVmaXgsICRzdWZmaXgpO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgICRncmFkaWVudHM6IChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG5cbiAgQHJldHVybiAkZ3JhZGllbnRzO1xufVxuIiwiQGZ1bmN0aW9uIF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkcG9zKSB7XG4gICR0eXBlOiB0eXBlLW9mKG50aCgkcG9zLCAxKSk7XG4gICRzcGVjOiBudWxsO1xuICAkZGVncmVlOiBudWxsO1xuICAkc2lkZTogbnVsbDtcbiAgJGNvcm5lcjogbnVsbDtcbiAgJGxlbmd0aDogbGVuZ3RoKCRwb3MpO1xuICAvLyBQYXJzZSBTaWRlIGFuZCBjb3JuZXIgcG9zaXRpb25zXG4gIEBpZiAoJGxlbmd0aCA+IDEpIHtcbiAgICBAaWYgbnRoKCRwb3MsIDEpID09IFwidG9cIiB7IC8vIE5ld2VyIHN5bnRheFxuICAgICAgJHNpZGU6IG50aCgkcG9zLCAyKTtcblxuICAgICAgQGlmICRsZW5ndGggPT0gMiB7IC8vIGVnLiB0byB0b3BcbiAgICAgICAgLy8gU3dhcCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIobnRoKCRwb3MsIDIpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7IC8vIGVnLiB0byB0b3AgbGVmdFxuICAgICAgICAkY29ybmVyOiBudGgoJHBvcywgMyk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRsZW5ndGggPT0gMiB7IC8vIE9sZGVyIHN5bnRheCAoXCJ0b3AgbGVmdFwiKVxuICAgICAgJHNpZGU6IF9wb3NpdGlvbi1mbGlwcGVyKG50aCgkcG9zLCAxKSk7XG4gICAgICAkY29ybmVyOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMikpO1xuICAgIH1cblxuICAgIEBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJsZWZ0IHRvcFwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJ0b3AgbGVmdFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgIEBlbHNlIGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInJpZ2h0IHRvcFwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJ0b3AgcmlnaHRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJyaWdodCBib3R0b21cIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwiYm90dG9tIHJpZ2h0XCIpIHtcbiAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKCN7JHNpZGV9KSBfcG9zaXRpb24tZmxpcHBlcigjeyRjb3JuZXJ9KTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwibGVmdCBib3R0b21cIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwiYm90dG9tIGxlZnRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICAkc3BlYzogdG8gJHNpZGUgJGNvcm5lcjtcbiAgfVxuICBAZWxzZSBpZiAkbGVuZ3RoID09IDEge1xuICAgIC8vIFN3YXAgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgQGlmICR0eXBlID09IHN0cmluZyB7XG4gICAgICAkZGVncmVlOiAkcG9zO1xuICAgICAgJHNwZWM6IHRvIF9wb3NpdGlvbi1mbGlwcGVyKCRwb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkZGVncmVlOiAtMjcwIC0gJHBvczsgLy9yb3RhdGUgdGhlIGdyYWRpZW50IG9wcG9zaXRlIGZyb20gc3BlY1xuICAgICAgJHNwZWM6ICRwb3M7XG4gICAgfVxuICB9XG4gICRkZWdyZWU6IHVucXVvdGUoJGRlZ3JlZSArIFwiLFwiKTtcbiAgJHNwZWM6ICAgdW5xdW90ZSgkc3BlYyArIFwiLFwiKTtcbiAgQHJldHVybiAkZGVncmVlICRzcGVjO1xufVxuXG5AZnVuY3Rpb24gX3Bvc2l0aW9uLWZsaXBwZXIoJHBvcykge1xuICBAcmV0dXJuIGlmKCRwb3MgPT0gbGVmdCwgcmlnaHQsIG51bGwpXG4gICAgICAgICBpZigkcG9zID09IHJpZ2h0LCBsZWZ0LCBudWxsKVxuICAgICAgICAgaWYoJHBvcyA9PSB0b3AsIGJvdHRvbSwgbnVsbClcbiAgICAgICAgIGlmKCRwb3MgPT0gYm90dG9tLCB0b3AsIG51bGwpO1xufVxuIiwiLy8gUHJpdmF0ZSBmdW5jdGlvbiBmb3IgbGluZWFyLWdyYWRpZW50LXBhcnNlclxuQGZ1bmN0aW9uIF9saW5lYXItc2lkZS1jb3JuZXItcGFyc2VyKCRpbWFnZSwgJGZpcnN0LXZhbCwgJHByZWZpeCwgJHN1ZmZpeCwgJGhhcy1tdWx0aXBsZS12YWxzKSB7XG4gICR2YWwtMTogc3RyLXNsaWNlKCRmaXJzdC12YWwsIDEsICRoYXMtbXVsdGlwbGUtdmFscyAtIDEpO1xuICAkdmFsLTI6IHN0ci1zbGljZSgkZmlyc3QtdmFsLCAkaGFzLW11bHRpcGxlLXZhbHMgKyAxLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcbiAgJHZhbC0zOiBudWxsO1xuICAkaGFzLXZhbC0zOiBzdHItaW5kZXgoJHZhbC0yLCBcIiBcIik7XG5cbiAgQGlmICRoYXMtdmFsLTMge1xuICAgICR2YWwtMzogc3RyLXNsaWNlKCR2YWwtMiwgJGhhcy12YWwtMyArIDEsIHN0ci1sZW5ndGgoJHZhbC0yKSk7XG4gICAgJHZhbC0yOiBzdHItc2xpY2UoJHZhbC0yLCAxLCAkaGFzLXZhbC0zIC0gMSk7XG4gIH1cblxuICAkcG9zOiBfcG9zaXRpb24tZmxpcHBlcigkdmFsLTEpIF9wb3NpdGlvbi1mbGlwcGVyKCR2YWwtMikgX3Bvc2l0aW9uLWZsaXBwZXIoJHZhbC0zKTtcbiAgJHBvczogdW5xdW90ZSgkcG9zICsgXCJcIik7XG5cbiAgLy8gVXNlIG9sZCBzcGVjIGZvciB3ZWJraXRcbiAgQGlmICR2YWwtMSA9PSBcInRvXCIge1xuICAgIEByZXR1cm4gKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cblxuICAvLyBCcmluZyB0aGUgY29kZSB1cCB0byBzcGVjXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXG4gICAgICBzcGVjLWltYWdlOiAkcHJlZml4ICsgXCJ0byBcIiArICRwb3MgKyAkc3VmZml4XG4gICAgKTtcbiAgfVxufVxuIiwiQGZ1bmN0aW9uIF9yYWRpYWwtYXJnLXBhcnNlcigkZzEsICRnMiwgJHBvcywgJHNoYXBlLXNpemUpIHtcbiAgQGVhY2ggJHZhbHVlIGluICRnMSwgJGcyIHtcbiAgICAkZmlyc3QtdmFsOiBudGgoJHZhbHVlLCAxKTtcbiAgICAkcG9zLXR5cGU6ICB0eXBlLW9mKCRmaXJzdC12YWwpO1xuICAgICRzcGVjLWF0LWluZGV4OiBudWxsO1xuXG4gICAgLy8gRGV0ZXJtaW5lIGlmIHNwZWMgd2FzIHBhc3NlZCB0byBtaXhpblxuICAgIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gbGlzdCB7XG4gICAgICAkc3BlYy1hdC1pbmRleDogaWYoaW5kZXgoJHZhbHVlLCBhdCksIGluZGV4KCR2YWx1ZSwgYXQpLCBmYWxzZSk7XG4gICAgfVxuICAgIEBpZiAkc3BlYy1hdC1pbmRleCB7XG4gICAgICBAaWYgJHNwZWMtYXQtaW5kZXggPiAxIHtcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAoJHNwZWMtYXQtaW5kZXggLSAxKSB7XG4gICAgICAgICAgJHNoYXBlLXNpemU6ICRzaGFwZS1zaXplIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgICBAZm9yICRpIGZyb20gKCRzcGVjLWF0LWluZGV4ICsgMSkgdGhyb3VnaCBsZW5ndGgoJHZhbHVlKSB7XG4gICAgICAgICAgJHBvczogJHBvcyBudGgoJHZhbHVlLCAkaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRzcGVjLWF0LWluZGV4ID09IDEge1xuICAgICAgICBAZm9yICRpIGZyb20gKCRzcGVjLWF0LWluZGV4ICsgMSkgdGhyb3VnaCBsZW5ndGgoJHZhbHVlKSB7XG4gICAgICAgICAgJHBvczogJHBvcyBudGgoJHZhbHVlLCAkaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRnMTogbnVsbDtcbiAgICB9XG5cbiAgICAvLyBJZiBub3Qgc3BlYyBjYWxjdWxhdGUgY29ycmVjdCB2YWx1ZXNcbiAgICBAZWxzZSB7XG4gICAgICBAaWYgKCRwb3MtdHlwZSAhPSBjb2xvcikgb3IgKCRmaXJzdC12YWwgIT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgICAgIEBpZiAoJHBvcy10eXBlID09IG51bWJlcilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjZW50ZXJcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJ0b3BcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJyaWdodFwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImJvdHRvbVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImxlZnRcIikge1xuXG4gICAgICAgICAgJHBvczogJHZhbHVlO1xuXG4gICAgICAgICAgQGlmICRwb3MgPT0gJGcxIHtcbiAgICAgICAgICAgICRnMTogbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAZWxzZSBpZlxuICAgICAgICAgICAoJGZpcnN0LXZhbCA9PSBcImVsbGlwc2VcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjaXJjbGVcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjbG9zZXN0LXNpZGVcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjbG9zZXN0LWNvcm5lclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImZhcnRoZXN0LXNpZGVcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJmYXJ0aGVzdC1jb3JuZXJcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjb250YWluXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiY292ZXJcIikge1xuXG4gICAgICAgICAgJHNoYXBlLXNpemU6ICR2YWx1ZTtcblxuICAgICAgICAgIEBpZiAkdmFsdWUgPT0gJGcxIHtcbiAgICAgICAgICAgICRnMTogbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAZWxzZSBpZiAkdmFsdWUgPT0gJGcyIHtcbiAgICAgICAgICAgICRnMjogbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQHJldHVybiAkZzEsICRnMiwgJHBvcywgJHNoYXBlLXNpemU7XG59XG4iLCJAZnVuY3Rpb24gX3JhZGlhbC1wb3NpdGlvbnMtcGFyc2VyKCRncmFkaWVudC1wb3MpIHtcbiAgJHNoYXBlLXNpemU6IG50aCgkZ3JhZGllbnQtcG9zLCAxKTtcbiAgJHBvczogICAgICAgIG50aCgkZ3JhZGllbnQtcG9zLCAyKTtcbiAgJHNoYXBlLXNpemUtc3BlYzogX3NoYXBlLXNpemUtc3RyaXBwZXIoJHNoYXBlLXNpemUpO1xuXG4gICRwcmUtc3BlYzogdW5xdW90ZShpZigkcG9zLCBcIiN7JHBvc30sIFwiLCBudWxsKSlcbiAgICAgICAgICAgICB1bnF1b3RlKGlmKCRzaGFwZS1zaXplLCBcIiN7JHNoYXBlLXNpemV9LFwiLCBudWxsKSk7XG4gICRwb3Mtc3BlYzogaWYoJHBvcywgXCJhdCAjeyRwb3N9XCIsIG51bGwpO1xuXG4gICRzcGVjOiBcIiN7JHNoYXBlLXNpemUtc3BlY30gI3skcG9zLXNwZWN9XCI7XG5cbiAgLy8gQWRkIGNvbW1hXG4gIEBpZiAoJHNwZWMgIT0gXCIgIFwiKSB7XG4gICAgJHNwZWM6IFwiI3skc3BlY30sXCI7XG4gIH1cblxuICBAcmV0dXJuICRwcmUtc3BlYyAkc3BlYztcbn1cbiIsIkBmdW5jdGlvbiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpIHtcbiAgJGltYWdlOiB1bnF1b3RlKCRpbWFnZSk7XG4gICRncmFkaWVudHM6ICgpO1xuICAkc3RhcnQ6IHN0ci1pbmRleCgkaW1hZ2UsIFwiKFwiKTtcbiAgJGVuZDogc3RyLWluZGV4KCRpbWFnZSwgXCIsXCIpO1xuICAkZmlyc3QtdmFsOiBzdHItc2xpY2UoJGltYWdlLCAkc3RhcnQgKyAxLCAkZW5kIC0gMSk7XG5cbiAgJHByZWZpeDogc3RyLXNsaWNlKCRpbWFnZSwgMSwgJHN0YXJ0KTtcbiAgJHN1ZmZpeDogc3RyLXNsaWNlKCRpbWFnZSwgJGVuZCwgc3RyLWxlbmd0aCgkaW1hZ2UpKTtcblxuICAkaXMtc3BlYy1zeW50YXg6IHN0ci1pbmRleCgkZmlyc3QtdmFsLCBcImF0XCIpO1xuXG4gIEBpZiAkaXMtc3BlYy1zeW50YXggYW5kICRpcy1zcGVjLXN5bnRheCA+IDEge1xuICAgICRrZXl3b3JkOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgMSwgJGlzLXNwZWMtc3ludGF4IC0gMik7XG4gICAgJHBvczogc3RyLXNsaWNlKCRmaXJzdC12YWwsICRpcy1zcGVjLXN5bnRheCArIDMsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuICAgICRwb3M6IGFwcGVuZCgkcG9zLCAka2V5d29yZCwgY29tbWEpO1xuXG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cblxuICBAZWxzZSBpZiAkaXMtc3BlYy1zeW50YXggPT0gMSB7XG4gICAgJHBvczogc3RyLXNsaWNlKCRmaXJzdC12YWwsICRpcy1zcGVjLXN5bnRheCArIDMsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuXG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cblxuICBAZWxzZSBpZiBzdHItaW5kZXgoJGltYWdlLCBcImNvdmVyXCIpIG9yIHN0ci1pbmRleCgkaW1hZ2UsIFwiY29udGFpblwiKSB7XG4gICAgQHdhcm4gXCJSYWRpYWwtZ3JhZGllbnQgbmVlZHMgdG8gYmUgdXBkYXRlZCB0byBjb25mb3JtIHRvIGxhdGVzdCBzcGVjLlwiO1xuXG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiBudWxsLFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIEBlbHNlIHtcbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJGltYWdlLFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIEByZXR1cm4gJGdyYWRpZW50cztcbn1cbiIsIi8vIFVzZXIgZm9yIGxpbmVhciBhbmQgcmFkaWFsIGdyYWRpZW50cyB3aXRoaW4gYmFja2dyb3VuZC1pbWFnZSBvciBib3JkZXItaW1hZ2UgcHJvcGVydGllc1xuXG5AZnVuY3Rpb24gX3JlbmRlci1ncmFkaWVudHMoJGdyYWRpZW50LXBvc2l0aW9ucywgJGdyYWRpZW50cywgJGdyYWRpZW50LXR5cGUsICR2ZW5kb3I6IGZhbHNlKSB7XG4gICRwcmUtc3BlYzogbnVsbDtcbiAgJHNwZWM6IG51bGw7XG4gICR2ZW5kb3ItZ3JhZGllbnRzOiBudWxsO1xuICBAaWYgJGdyYWRpZW50LXR5cGUgPT0gbGluZWFyIHtcbiAgICBAaWYgJGdyYWRpZW50LXBvc2l0aW9ucyB7XG4gICAgICAkcHJlLXNwZWM6IG50aCgkZ3JhZGllbnQtcG9zaXRpb25zLCAxKTtcbiAgICAgICRzcGVjOiAgICAgbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSByYWRpYWwge1xuICAgICRwcmUtc3BlYzogbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDEpO1xuICAgICRzcGVjOiAgICAgbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDIpO1xuICB9XG5cbiAgQGlmICR2ZW5kb3Ige1xuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiAtI3skdmVuZG9yfS0jeyRncmFkaWVudC10eXBlfS1ncmFkaWVudCgjeyRwcmUtc3BlY30gJGdyYWRpZW50cyk7XG4gIH1cbiAgQGVsc2UgaWYgJHZlbmRvciA9PSBmYWxzZSB7XG4gICAgJHZlbmRvci1ncmFkaWVudHM6IFwiI3skZ3JhZGllbnQtdHlwZX0tZ3JhZGllbnQoI3skc3BlY30gI3skZ3JhZGllbnRzfSlcIjtcbiAgICAkdmVuZG9yLWdyYWRpZW50czogdW5xdW90ZSgkdmVuZG9yLWdyYWRpZW50cyk7XG4gIH1cbiAgQHJldHVybiAkdmVuZG9yLWdyYWRpZW50cztcbn1cbiIsIkBmdW5jdGlvbiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSkge1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBudWxsO1xuICBAZWFjaCAkdmFsdWUgaW4gJHNoYXBlLXNpemUge1xuICAgIEBpZiAoJHZhbHVlID09IFwiY292ZXJcIikgb3IgKCR2YWx1ZSA9PSBcImNvbnRhaW5cIikge1xuICAgICAgJHZhbHVlOiBudWxsO1xuICAgIH1cbiAgICAkc2hhcGUtc2l6ZS1zcGVjOiBcIiN7JHNoYXBlLXNpemUtc3BlY30gI3skdmFsdWV9XCI7XG4gIH1cbiAgQHJldHVybiAkc2hhcGUtc2l6ZS1zcGVjO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBsaW5lYXIvcmFkaWFsLWdyYWRpZW50LXBhcnNlcnMuXG4vLyBTb3VyY2U6IGh0dHA6Ly9zYXNzbWVpc3Rlci5jb20vZ2lzdC85NjQ3NDA4XG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AZnVuY3Rpb24gX3N0ci10by1udW0oJHN0cmluZykge1xuICAvLyBNYXRyaWNlc1xuICAkc3RyaW5nczogXCIwXCIgXCIxXCIgXCIyXCIgXCIzXCIgXCI0XCIgXCI1XCIgXCI2XCIgXCI3XCIgXCI4XCIgXCI5XCI7XG4gICRudW1iZXJzOiAgMCAgIDEgICAyICAgMyAgIDQgICA1ICAgNiAgIDcgICA4ICAgOTtcblxuICAvLyBSZXN1bHRcbiAgJHJlc3VsdDogMDtcbiAgJGRpdmlkZXI6IDA7XG4gICRtaW51czogZmFsc2U7XG5cbiAgLy8gTG9vcGluZyB0aHJvdWdoIGFsbCBjaGFyYWN0ZXJzXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyLWxlbmd0aCgkc3RyaW5nKSB7XG4gICAgJGNoYXJhY3Rlcjogc3RyLXNsaWNlKCRzdHJpbmcsICRpLCAkaSk7XG4gICAgJGluZGV4OiBpbmRleCgkc3RyaW5ncywgJGNoYXJhY3Rlcik7XG5cbiAgICBAaWYgJGNoYXJhY3RlciA9PSBcIi1cIiB7XG4gICAgICAkbWludXM6IHRydWU7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGNoYXJhY3RlciA9PSBcIi5cIiB7XG4gICAgICAkZGl2aWRlcjogMTtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgbm90ICRpbmRleCB7XG4gICAgICAgICRyZXN1bHQ6IGlmKCRtaW51cywgJHJlc3VsdCAqIC0xLCAkcmVzdWx0KTtcbiAgICAgICAgQHJldHVybiBfY29udmVydC11bml0cygkcmVzdWx0LCBzdHItc2xpY2UoJHN0cmluZywgJGkpKTtcbiAgICAgIH1cblxuICAgICAgJG51bWJlcjogbnRoKCRudW1iZXJzLCAkaW5kZXgpO1xuXG4gICAgICBAaWYgJGRpdmlkZXIgPT0gMCB7XG4gICAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKiAxMDtcbiAgICAgIH1cblxuICAgICAgQGVsc2Uge1xuICAgICAgICAvLyBNb3ZlIHRoZSBkZWNpbWFsIGRvdCB0byB0aGUgbGVmdFxuICAgICAgICAkZGl2aWRlcjogJGRpdmlkZXIgKiAxMDtcbiAgICAgICAgJG51bWJlcjogJG51bWJlciAvICRkaXZpZGVyO1xuICAgICAgfVxuXG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICsgJG51bWJlcjtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBpZigkbWludXMsICRyZXN1bHQgKiAtMSwgJHJlc3VsdCk7XG59XG4iLCIvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWFuaW1hdGlvbnMvI3RoZS1hbmltYXRpb24tbmFtZS1wcm9wZXJ0eS1cbi8vIEVhY2ggb2YgdGhlc2UgbWl4aW5zIHN1cHBvcnQgY29tbWEgc2VwYXJhdGVkIGxpc3RzIG9mIHZhbHVlcywgd2hpY2ggYWxsb3dzIGRpZmZlcmVudCB0cmFuc2l0aW9ucyBmb3IgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzIHRvIGJlIGRlc2NyaWJlZCBpbiBhIHNpbmdsZSBzdHlsZSBydWxlLiBFYWNoIHZhbHVlIGluIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSB2YWx1ZSBhdCB0aGF0IHNhbWUgcG9zaXRpb24gaW4gdGhlIG90aGVyIHByb3BlcnRpZXMuXG5cbkBtaXhpbiBhbmltYXRpb24oJGFuaW1hdGlvbnMuLi4pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLCAkYW5pbWF0aW9ucywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGFuaW1hdGlvbi1uYW1lKCRuYW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tbmFtZSwgJG5hbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLWR1cmF0aW9uKCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZHVyYXRpb24sICR0aW1lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24oJG1vdGlvbnMuLi4pIHtcbiAgLy8gZWFzZSB8IGxpbmVhciB8IGVhc2UtaW4gfCBlYXNlLW91dCB8IGVhc2UtaW4tb3V0XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24sICRtb3Rpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCgkdmFsdWVzLi4uKSB7XG4gIC8vIGluZmluaXRlIHwgPG51bWJlcj5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgJHZhbHVlcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGFuaW1hdGlvbi1kaXJlY3Rpb24oJGRpcmVjdGlvbnMuLi4pIHtcbiAgLy8gbm9ybWFsIHwgYWx0ZXJuYXRlXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kaXJlY3Rpb24sICRkaXJlY3Rpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLXBsYXktc3RhdGUoJHN0YXRlcy4uLikge1xuICAvLyBydW5uaW5nIHwgcGF1c2VkXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1wbGF5LXN0YXRlLCAkc3RhdGVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLWRlbGF5KCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZGVsYXksICR0aW1lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGFuaW1hdGlvbi1maWxsLW1vZGUoJG1vZGVzLi4uKSB7XG4gIC8vIG5vbmUgfCBmb3J3YXJkcyB8IGJhY2t3YXJkcyB8IGJvdGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWZpbGwtbW9kZSwgJG1vZGVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiQG1peGluIGFwcGVhcmFuY2UoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFwcGVhcmFuY2UsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuIiwiQG1peGluIGJhY2tmYWNlLXZpc2liaWxpdHkoJHZpc2liaWxpdHkpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYmFja2ZhY2UtdmlzaWJpbGl0eSwgJHZpc2liaWxpdHksIHdlYmtpdCBzcGVjKTtcbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIEJhY2tncm91bmQgcHJvcGVydHkgZm9yIGFkZGluZyBtdWx0aXBsZSBiYWNrZ3JvdW5kcyB1c2luZyBzaG9ydGhhbmRcbi8vIG5vdGF0aW9uLlxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuXG5AbWl4aW4gYmFja2dyb3VuZCgkYmFja2dyb3VuZHMuLi4pIHtcbiAgJHdlYmtpdC1iYWNrZ3JvdW5kczogKCk7XG4gICRzcGVjLWJhY2tncm91bmRzOiAoKTtcblxuICBAZWFjaCAkYmFja2dyb3VuZCBpbiAkYmFja2dyb3VuZHMge1xuICAgICR3ZWJraXQtYmFja2dyb3VuZDogKCk7XG4gICAgJHNwZWMtYmFja2dyb3VuZDogKCk7XG4gICAgJGJhY2tncm91bmQtdHlwZTogdHlwZS1vZigkYmFja2dyb3VuZCk7XG5cbiAgICBAaWYgJGJhY2tncm91bmQtdHlwZSA9PSBzdHJpbmcgb3IgJGJhY2tncm91bmQtdHlwZSA9PSBsaXN0IHtcbiAgICAgICRiYWNrZ3JvdW5kLXN0cjogaWYoJGJhY2tncm91bmQtdHlwZSA9PSBsaXN0LCBudGgoJGJhY2tncm91bmQsIDEpLCAkYmFja2dyb3VuZCk7XG5cbiAgICAgICR1cmwtc3RyOiAgICAgICBzdHItc2xpY2UoJGJhY2tncm91bmQtc3RyLCAxLCAzKTtcbiAgICAgICRncmFkaWVudC10eXBlOiBzdHItc2xpY2UoJGJhY2tncm91bmQtc3RyLCAxLCA2KTtcblxuICAgICAgQGlmICR1cmwtc3RyID09IFwidXJsXCIge1xuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgICRiYWNrZ3JvdW5kO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcImxpbmVhclwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoXCIjeyRiYWNrZ3JvdW5kfVwiKTtcbiAgICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJyYWRpYWxcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKFwiI3skYmFja2dyb3VuZH1cIik7XG4gICAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xuICAgICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgICAgICAgJHNwZWMtYmFja2dyb3VuZDogICAkYmFja2dyb3VuZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICAkd2Via2l0LWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgJHNwZWMtYmFja2dyb3VuZDogICAkYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAkd2Via2l0LWJhY2tncm91bmRzOiBhcHBlbmQoJHdlYmtpdC1iYWNrZ3JvdW5kcywgJHdlYmtpdC1iYWNrZ3JvdW5kLCBjb21tYSk7XG4gICAgJHNwZWMtYmFja2dyb3VuZHM6ICAgYXBwZW5kKCRzcGVjLWJhY2tncm91bmRzLCAgICRzcGVjLWJhY2tncm91bmQsICAgY29tbWEpO1xuICB9XG5cbiAgYmFja2dyb3VuZDogJHdlYmtpdC1iYWNrZ3JvdW5kcztcbiAgYmFja2dyb3VuZDogJHNwZWMtYmFja2dyb3VuZHM7XG59XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBCYWNrZ3JvdW5kLWltYWdlIHByb3BlcnR5IGZvciBhZGRpbmcgbXVsdGlwbGUgYmFja2dyb3VuZCBpbWFnZXMgd2l0aFxuLy8gZ3JhZGllbnRzLCBvciBmb3Igc3RyaW5naW5nIG11bHRpcGxlIGdyYWRpZW50cyB0b2dldGhlci5cbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cblxuQG1peGluIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlcy4uLikge1xuICAkd2Via2l0LWltYWdlczogKCk7XG4gICRzcGVjLWltYWdlczogKCk7XG5cbiAgQGVhY2ggJGltYWdlIGluICRpbWFnZXMge1xuICAgICR3ZWJraXQtaW1hZ2U6ICgpO1xuICAgICRzcGVjLWltYWdlOiAoKTtcblxuICAgIEBpZiAodHlwZS1vZigkaW1hZ2UpID09IHN0cmluZykge1xuICAgICAgJHVybC1zdHI6ICAgICAgIHN0ci1zbGljZSgkaW1hZ2UsIDEsIDMpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkaW1hZ2UsIDEsIDYpO1xuXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XG4gICAgICAgICR3ZWJraXQtaW1hZ2U6ICRpbWFnZTtcbiAgICAgICAgJHNwZWMtaW1hZ2U6ICAgJGltYWdlO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcImxpbmVhclwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoJGltYWdlKTtcbiAgICAgICAgJHdlYmtpdC1pbWFnZTogIG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtaW1hZ2U6ICAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwicmFkaWFsXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpO1xuICAgICAgICAkd2Via2l0LWltYWdlOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XG4gICAgICAgICRzcGVjLWltYWdlOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHdlYmtpdC1pbWFnZXM6IGFwcGVuZCgkd2Via2l0LWltYWdlcywgJHdlYmtpdC1pbWFnZSwgY29tbWEpO1xuICAgICRzcGVjLWltYWdlczogICBhcHBlbmQoJHNwZWMtaW1hZ2VzLCAgICRzcGVjLWltYWdlLCAgIGNvbW1hKTtcbiAgfVxuXG4gIGJhY2tncm91bmQtaW1hZ2U6ICR3ZWJraXQtaW1hZ2VzO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAkc3BlYy1pbWFnZXM7XG59XG4iLCJAbWl4aW4gYm9yZGVyLWltYWdlKCRib3JkZXJzLi4uKSB7XG4gICR3ZWJraXQtYm9yZGVyczogKCk7XG4gICRzcGVjLWJvcmRlcnM6ICgpO1xuXG4gIEBlYWNoICRib3JkZXIgaW4gJGJvcmRlcnMge1xuICAgICR3ZWJraXQtYm9yZGVyOiAoKTtcbiAgICAkc3BlYy1ib3JkZXI6ICgpO1xuICAgICRib3JkZXItdHlwZTogdHlwZS1vZigkYm9yZGVyKTtcblxuICAgIEBpZiAkYm9yZGVyLXR5cGUgPT0gc3RyaW5nIG9yIGxpc3Qge1xuICAgICAgJGJvcmRlci1zdHI6IGlmKCRib3JkZXItdHlwZSA9PSBsaXN0LCBudGgoJGJvcmRlciwgMSksICRib3JkZXIpO1xuXG4gICAgICAkdXJsLXN0cjogICAgICAgc3RyLXNsaWNlKCRib3JkZXItc3RyLCAxLCAzKTtcbiAgICAgICRncmFkaWVudC10eXBlOiBzdHItc2xpY2UoJGJvcmRlci1zdHIsIDEsIDYpO1xuXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XG4gICAgICAgICR3ZWJraXQtYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgICAkc3BlYy1ib3JkZXI6ICAgJGJvcmRlcjtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJsaW5lYXJcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9saW5lYXItZ3JhZGllbnQtcGFyc2VyKFwiI3skYm9yZGVyfVwiKTtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtYm9yZGVyOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwicmFkaWFsXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcihcIiN7JGJvcmRlcn1cIik7XG4gICAgICAgICR3ZWJraXQtYm9yZGVyOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XG4gICAgICAgICRzcGVjLWJvcmRlcjogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSB7XG4gICAgICAgICR3ZWJraXQtYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgICAkc3BlYy1ib3JkZXI6ICAgJGJvcmRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICAkd2Via2l0LWJvcmRlcjogJGJvcmRlcjtcbiAgICAgICRzcGVjLWJvcmRlcjogICAkYm9yZGVyO1xuICAgIH1cblxuICAgICR3ZWJraXQtYm9yZGVyczogYXBwZW5kKCR3ZWJraXQtYm9yZGVycywgJHdlYmtpdC1ib3JkZXIsIGNvbW1hKTtcbiAgICAkc3BlYy1ib3JkZXJzOiAgIGFwcGVuZCgkc3BlYy1ib3JkZXJzLCAgICRzcGVjLWJvcmRlciwgICBjb21tYSk7XG4gIH1cblxuICAtd2Via2l0LWJvcmRlci1pbWFnZTogJHdlYmtpdC1ib3JkZXJzO1xuICAgICAgICAgIGJvcmRlci1pbWFnZTogJHNwZWMtYm9yZGVycztcbiAgICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xufVxuXG4vL0V4YW1wbGVzOlxuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKHVybChcImltYWdlLnBuZ1wiKSk7XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UodXJsKFwiaW1hZ2UucG5nXCIpIDIwIHN0cmV0Y2gpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSBzdHJldGNoKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSAyMCAzMCA0MCA1MCBzdHJldGNoIHJvdW5kKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShyYWRpYWwtZ3JhZGllbnQodG9wLCBjb3Zlciwgb3JhbmdlLCB5ZWxsb3csIG9yYW5nZSkpO1xuIiwiQG1peGluIGNhbGMoJHByb3BlcnR5LCAkdmFsdWUpIHtcbiAgI3skcHJvcGVydHl9OiAtd2Via2l0LWNhbGMoI3skdmFsdWV9KTtcbiAgI3skcHJvcGVydHl9OiBjYWxjKCN7JHZhbHVlfSk7XG59XG4iLCJAbWl4aW4gY29sdW1ucygkYXJnOiBhdXRvKSB7XG4gIC8vIDxjb2x1bW4tY291bnQ+IHx8IDxjb2x1bW4td2lkdGg+XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbnMsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tY291bnQoJGludDogYXV0bykge1xuICAvLyBhdXRvIHx8IGludGVnZXJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLWNvdW50LCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLWdhcCgkbGVuZ3RoOiBub3JtYWwpIHtcbiAgLy8gbm9ybWFsIHx8IGxlbmd0aFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tZ2FwLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLWZpbGwoJGFyZzogYXV0bykge1xuICAvLyBhdXRvIHx8IGxlbmd0aFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tZmlsbCwgJGFyZywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi1ydWxlKCRhcmcpIHtcbiAgLy8gPGJvcmRlci13aWR0aD4gfHwgPGJvcmRlci1zdHlsZT4gfHwgPGNvbG9yPlxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZSwgJGFyZywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi1ydWxlLWNvbG9yKCRjb2xvcikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS1jb2xvciwgJGNvbG9yLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtc3R5bGUoJHN0eWxlOiBub25lKSB7XG4gIC8vIG5vbmUgfCBoaWRkZW4gfCBkYXNoZWQgfCBkb3R0ZWQgfCBkb3VibGUgfCBncm9vdmUgfCBpbnNldCB8IGluc2V0IHwgb3V0c2V0IHwgcmlkZ2UgfCBzb2xpZFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS1zdHlsZSwgJHN0eWxlLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtd2lkdGggKCR3aWR0aDogbm9uZSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS13aWR0aCwgJHdpZHRoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXNwYW4oJGFyZzogbm9uZSkge1xuICAvLyBub25lIHx8IGFsbFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tc3BhbiwgJGFyZywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi13aWR0aCgkbGVuZ3RoOiBhdXRvKSB7XG4gIC8vIGF1dG8gfHwgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi13aWR0aCwgJGxlbmd0aCwgd2Via2l0IG1veiBzcGVjKTtcbn1cbiIsIkBtaXhpbiBmaWx0ZXIoJGZ1bmN0aW9uOiBub25lKSB7XG4gIC8vIDxmaWx0ZXItZnVuY3Rpb24+IFs8ZmlsdGVyLWZ1bmN0aW9uXSogfCBub25lXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZpbHRlciwgJGZ1bmN0aW9uLCB3ZWJraXQgc3BlYyk7XG59XG4iLCIvLyBDU1MzIEZsZXhpYmxlIEJveCBNb2RlbCBhbmQgcHJvcGVydHkgZGVmYXVsdHNcblxuLy8gQ3VzdG9tIHNob3J0aGFuZCBub3RhdGlvbiBmb3IgZmxleGJveFxuQG1peGluIGJveCgkb3JpZW50OiBpbmxpbmUtYXhpcywgJHBhY2s6IHN0YXJ0LCAkYWxpZ246IHN0cmV0Y2gpIHtcbiAgQGluY2x1ZGUgZGlzcGxheS1ib3g7XG4gIEBpbmNsdWRlIGJveC1vcmllbnQoJG9yaWVudCk7XG4gIEBpbmNsdWRlIGJveC1wYWNrKCRwYWNrKTtcbiAgQGluY2x1ZGUgYm94LWFsaWduKCRhbGlnbik7XG59XG5cbkBtaXhpbiBkaXNwbGF5LWJveCB7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBkaXNwbGF5OiAtbW96LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7IC8vIElFIDEwXG4gIGRpc3BsYXk6IGJveDtcbn1cblxuQG1peGluIGJveC1vcmllbnQoJG9yaWVudDogaW5saW5lLWF4aXMpIHtcbi8vIGhvcml6b250YWx8dmVydGljYWx8aW5saW5lLWF4aXN8YmxvY2stYXhpc3xpbmhlcml0XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmllbnQsICRvcmllbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtcGFjaygkcGFjazogc3RhcnQpIHtcbi8vIHN0YXJ0fGVuZHxjZW50ZXJ8anVzdGlmeVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtcGFjaywgJHBhY2ssIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LXBhY2s6ICRwYWNrOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWFsaWduKCRhbGlnbjogc3RyZXRjaCkge1xuLy8gc3RhcnR8ZW5kfGNlbnRlcnxiYXNlbGluZXxzdHJldGNoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1hbGlnbiwgJGFsaWduLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1hbGlnbjogJGFsaWduOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWRpcmVjdGlvbigkZGlyZWN0aW9uOiBub3JtYWwpIHtcbi8vIG5vcm1hbHxyZXZlcnNlfGluaGVyaXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWRpcmVjdGlvbiwgJGRpcmVjdGlvbiwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiAkZGlyZWN0aW9uOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWxpbmVzKCRsaW5lczogc2luZ2xlKSB7XG4vLyBzaW5nbGV8bXVsdGlwbGVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWxpbmVzLCAkbGluZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtb3JkaW5hbC1ncm91cCgkaW50OiAxKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmRpbmFsLWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1vcmRlcjogJGludDsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1mbGV4KCR2YWx1ZTogMCkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleDogJHZhbHVlOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWZsZXgtZ3JvdXAoJGludDogMSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuLy8gQ1NTMyBGbGV4aWJsZSBCb3ggTW9kZWwgYW5kIHByb3BlcnR5IGRlZmF1bHRzXG4vLyBVbmlmaWVkIGF0dHJpYnV0ZXMgZm9yIDIwMDksIDIwMTEsIGFuZCAyMDEyIGZsYXZvdXJzLlxuXG4vLyAyMDA5IC0gZGlzcGxheSAoYm94IHwgaW5saW5lLWJveClcbi8vIDIwMTEgLSBkaXNwbGF5IChmbGV4Ym94IHwgaW5saW5lLWZsZXhib3gpXG4vLyAyMDEyIC0gZGlzcGxheSAoZmxleCB8IGlubGluZS1mbGV4KVxuQG1peGluIGRpc3BsYXkoJHZhbHVlKSB7XG4vLyBmbGV4IHwgaW5saW5lLWZsZXhcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXhcIiB7XG4gICAgLy8gMjAwOVxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIGRpc3BsYXk6IC1tb3otYm94O1xuICAgIGRpc3BsYXk6IGJveDtcblxuICAgIC8vIDIwMTJcbiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XG4gICAgZGlzcGxheTogLW1vei1mbGV4O1xuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OyAvLyAyMDExIChJRSAxMClcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImlubGluZS1mbGV4XCIge1xuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1ib3g7XG4gICAgZGlzcGxheTogaW5saW5lLWJveDtcblxuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtZmxleDtcbiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIH0gQGVsc2Uge1xuICAgIGRpc3BsYXk6ICR2YWx1ZTtcbiAgfVxufVxuXG4vLyAyMDA5IC0gYm94LWZsZXggKGludGVnZXIpXG4vLyAyMDExIC0gZmxleCAoZGVjaW1hbCB8IHdpZHRoIGRlY2ltYWwpXG4vLyAyMDEyIC0gZmxleCAoaW50ZWdlciBpbnRlZ2VyIHdpZHRoKVxuQG1peGluIGZsZXgoJHZhbHVlKSB7XG5cbiAgLy8gR3JhYiBmbGV4LWdyb3cgZm9yIG9sZGVyIGJyb3dzZXJzLlxuICAkZmxleC1ncm93OiBudGgoJHZhbHVlLCAxKTtcblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LCAkZmxleC1ncm93LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKSwgMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG5cbi8vIDIwMDkgLSBib3gtb3JpZW50ICggaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgaW5saW5lLWF4aXMgfCBibG9jay1heGlzKVxuLy8gICAgICAtIGJveC1kaXJlY3Rpb24gKG5vcm1hbCB8IHJldmVyc2UpXG4vLyAyMDExIC0gZmxleC1kaXJlY3Rpb24gKHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2UpXG4vLyAyMDEyIC0gZmxleC1kaXJlY3Rpb24gKHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2UpXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJHZhbHVlOiByb3cpIHtcblxuICAvLyBBbHQgdmFsdWVzLlxuICAkdmFsdWUtMjAwOTogJHZhbHVlO1xuICAkdmFsdWUtMjAxMTogJHZhbHVlO1xuICAkZGlyZWN0aW9uOiBub3JtYWw7XG5cbiAgQGlmICR2YWx1ZSA9PSByb3cge1xuICAgICR2YWx1ZS0yMDA5OiBob3Jpem9udGFsO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInJvdy1yZXZlcnNlXCIge1xuICAgICR2YWx1ZS0yMDA5OiBob3Jpem9udGFsO1xuICAgICRkaXJlY3Rpb246IHJldmVyc2U7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IGNvbHVtbiB7XG4gICAgJHZhbHVlLTIwMDk6IHZlcnRpY2FsO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImNvbHVtbi1yZXZlcnNlXCIge1xuICAgICR2YWx1ZS0yMDA5OiB2ZXJ0aWNhbDtcbiAgICAkZGlyZWN0aW9uOiByZXZlcnNlO1xuICB9XG5cbiAgLy8gMjAwOVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JpZW50LCAkdmFsdWUtMjAwOSwgd2Via2l0IG1veiBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWRpcmVjdGlvbiwgJGRpcmVjdGlvbiwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZGlyZWN0aW9uLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogJHZhbHVlO1xufVxuXG4vLyAyMDA5IC0gYm94LWxpbmVzIChzaW5nbGUgfCBtdWx0aXBsZSlcbi8vIDIwMTEgLSBmbGV4LXdyYXAgKG5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2UpXG4vLyAyMDEyIC0gZmxleC13cmFwIChub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlKVxuQG1peGluIGZsZXgtd3JhcCgkdmFsdWU6IG5vd3JhcCkge1xuICAvLyBBbHQgdmFsdWVzXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBub3dyYXAge1xuICAgICRhbHQtdmFsdWU6IHNpbmdsZTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gd3JhcCB7XG4gICAgJGFsdC12YWx1ZTogbXVsdGlwbGU7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwid3JhcC1yZXZlcnNlXCIge1xuICAgICRhbHQtdmFsdWU6IG11bHRpcGxlO1xuICB9XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWxpbmVzLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LXdyYXAsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBzcGVjKTtcbn1cblxuLy8gMjAwOSAtIFRPRE86IHBhcnNlIHZhbHVlcyBpbnRvIGZsZXgtZGlyZWN0aW9uL2ZsZXgtd3JhcFxuLy8gMjAxMSAtIFRPRE86IHBhcnNlIHZhbHVlcyBpbnRvIGZsZXgtZGlyZWN0aW9uL2ZsZXgtd3JhcFxuLy8gMjAxMiAtIGZsZXgtZmxvdyAoZmxleC1kaXJlY3Rpb24gfHwgZmxleC13cmFwKVxuQG1peGluIGZsZXgtZmxvdygkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1mbG93LCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbi8vIDIwMDkgLSBib3gtb3JkaW5hbC1ncm91cCAoaW50ZWdlcilcbi8vIDIwMTEgLSBmbGV4LW9yZGVyIChpbnRlZ2VyKVxuLy8gMjAxMiAtIG9yZGVyIChpbnRlZ2VyKVxuQG1peGluIG9yZGVyKCRpbnQ6IDApIHtcbiAgLy8gMjAwOVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JkaW5hbC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKG9yZGVyLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1vcmRlcjogJGludDtcbn1cblxuLy8gMjAxMiAtIGZsZXgtZ3JvdyAobnVtYmVyKVxuQG1peGluIGZsZXgtZ3JvdygkbnVtYmVyOiAwKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZ3JvdywgJG51bWJlciwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtcG9zaXRpdmU6ICRudW1iZXI7XG59XG5cbi8vIDIwMTIgLSBmbGV4LXNocmluayAobnVtYmVyKVxuQG1peGluIGZsZXgtc2hyaW5rKCRudW1iZXI6IDEpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1zaHJpbmssICRudW1iZXIsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAkbnVtYmVyO1xufVxuXG4vLyAyMDEyIC0gZmxleC1iYXNpcyAobnVtYmVyKVxuQG1peGluIGZsZXgtYmFzaXMoJHdpZHRoOiBhdXRvKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtYmFzaXMsICR3aWR0aCwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6ICR3aWR0aDtcbn1cblxuLy8gMjAwOSAtIGJveC1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkpXG4vLyAyMDExIC0gZmxleC1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkpXG4vLyAyMDEyIC0ganVzdGlmeS1jb250ZW50IChmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kKVxuQG1peGluIGp1c3RpZnktY29udGVudCgkdmFsdWU6IGZsZXgtc3RhcnQpIHtcblxuICAvLyBBbHQgdmFsdWVzLlxuICAkYWx0LXZhbHVlOiAkdmFsdWU7XG4gIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xuICAgICRhbHQtdmFsdWU6IHN0YXJ0O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xuICAgICRhbHQtdmFsdWU6IGVuZDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1iZXR3ZWVuXCIge1xuICAgICRhbHQtdmFsdWU6IGp1c3RpZnk7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwic3BhY2UtYXJvdW5kXCIge1xuICAgICRhbHQtdmFsdWU6IGRpc3RyaWJ1dGU7XG4gIH1cblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1wYWNrLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoanVzdGlmeS1jb250ZW50LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtcGFjazogJGFsdC12YWx1ZTtcbn1cblxuLy8gMjAwOSAtIGJveC1hbGlnbiAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG4vLyAyMDExIC0gZmxleC1hbGlnbiAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG4vLyAyMDEyIC0gYWxpZ24taXRlbXMgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbkBtaXhpbiBhbGlnbi1pdGVtcygkdmFsdWU6IHN0cmV0Y2gpIHtcblxuICAkYWx0LXZhbHVlOiAkdmFsdWU7XG5cbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJGFsdC12YWx1ZTogc3RhcnQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgJGFsdC12YWx1ZTogZW5kO1xuICB9XG5cbiAgLy8gMjAwOVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtYWxpZ24sICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihhbGlnbi1pdGVtcywgJHZhbHVlLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LWFsaWduOiAkYWx0LXZhbHVlO1xufVxuXG4vLyAyMDExIC0gZmxleC1pdGVtLWFsaWduIChhdXRvIHwgc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG4vLyAyMDEyIC0gYWxpZ24tc2VsZiAoYXV0byB8IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbkBtaXhpbiBhbGlnbi1zZWxmKCR2YWx1ZTogYXV0bykge1xuXG4gICR2YWx1ZS0yMDExOiAkdmFsdWU7XG4gIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xuICAgICR2YWx1ZS0yMDExOiBzdGFydDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAkdmFsdWUtMjAxMTogZW5kO1xuICB9XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihhbGlnbi1zZWxmLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LWl0ZW0tYWxpZ246ICR2YWx1ZS0yMDExO1xufVxuXG4vLyAyMDExIC0gZmxleC1saW5lLXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSB8IGRpc3RyaWJ1dGUgfCBzdHJldGNoKVxuLy8gMjAxMiAtIGFsaWduLWNvbnRlbnQgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLWNvbnRlbnQoJHZhbHVlOiBzdHJldGNoKSB7XG5cbiAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IHN0YXJ0O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xuICAgICR2YWx1ZS0yMDExOiBlbmQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwic3BhY2UtYmV0d2VlblwiIHtcbiAgICAkdmFsdWUtMjAxMToganVzdGlmeTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1hcm91bmRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IGRpc3RyaWJ1dGU7XG4gIH1cblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtbGluZS1wYWNrOiAkdmFsdWUtMjAxMTtcbn1cbiIsIkBtaXhpbiBmb250LWZhY2UoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGFzc2V0LXBpcGVsaW5lOiAkYXNzZXQtcGlwZWxpbmUsXG4gICRmaWxlLWZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmcpIHtcblxuICAkZm9udC11cmwtcHJlZml4OiBmb250LXVybC1wcmVmaXhlcigkYXNzZXQtcGlwZWxpbmUpO1xuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuXG4gICAgc3JjOiBmb250LXNvdXJjZS1kZWNsYXJhdGlvbihcbiAgICAgICRmb250LWZhbWlseSxcbiAgICAgICRmaWxlLXBhdGgsXG4gICAgICAkYXNzZXQtcGlwZWxpbmUsXG4gICAgICAkZmlsZS1mb3JtYXRzLFxuICAgICAgJGZvbnQtdXJsLXByZWZpeFxuICAgICk7XG4gIH1cbn1cbiIsIkBtaXhpbiBmb250LWZlYXR1cmUtc2V0dGluZ3MoJHNldHRpbmdzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAwIHsgJHNldHRpbmdzOiBub25lOyB9XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZvbnQtZmVhdHVyZS1zZXR0aW5ncywgJHNldHRpbmdzLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuIiwiLy8gSGlEUEkgbWl4aW4uIERlZmF1bHQgdmFsdWUgc2V0IHRvIDEuMyB0byB0YXJnZXQgR29vZ2xlIE5leHVzIDcgKGh0dHA6Ly9iamFuZ28uY29tL2FydGljbGVzL21pbi1kZXZpY2UtcGl4ZWwtcmF0aW8vKVxuQG1peGluIGhpZHBpKCRyYXRpbzogMS4zKSB7XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgb25seSBzY3JlZW4gYW5kIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXG4gIG9ubHkgc2NyZWVuIGFuZCAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogI3skcmF0aW99LzEpLFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiByb3VuZCgkcmF0aW8gKiA5NmRwaSkpLFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiAkcmF0aW8gKiAxZHBweCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCJAbWl4aW4gaHlwaGVucygkaHlwaGVuYXRpb246IG5vbmUpIHtcbiAgLy8gbm9uZSB8IG1hbnVhbCB8IGF1dG9cbiAgQGluY2x1ZGUgcHJlZml4ZXIoaHlwaGVucywgJGh5cGhlbmF0aW9uLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuIiwiQG1peGluIGltYWdlLXJlbmRlcmluZyAoJG1vZGU6YXV0bykge1xuXG4gIEBpZiAoJG1vZGUgPT0gY3Jpc3AtZWRnZXMpIHtcbiAgICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBuZWFyZXN0LW5laWdoYm9yOyAvLyBJRTgrXG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAtbW96LWNyaXNwLWVkZ2VzO1xuICAgIGltYWdlLXJlbmRlcmluZzogLW8tY3Jpc3AtZWRnZXM7XG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0O1xuICAgIGltYWdlLXJlbmRlcmluZzogY3Jpc3AtZWRnZXM7XG4gIH1cblxuICBAZWxzZSB7XG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAkbW9kZTtcbiAgfVxufVxuIiwiLy8gQWRkcyBrZXlmcmFtZXMgYmxvY2tzIGZvciBzdXBwb3J0ZWQgcHJlZml4ZXMsIHJlbW92aW5nIHJlZHVuZGFudCBwcmVmaXhlcyBpbiB0aGUgYmxvY2sncyBjb250ZW50XG5AbWl4aW4ga2V5ZnJhbWVzKCRuYW1lKSB7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdDogICAgJHByZWZpeC1mb3Itd2Via2l0O1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhOiAgICRwcmVmaXgtZm9yLW1vemlsbGE7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1pY3Jvc29mdDogJHByZWZpeC1mb3ItbWljcm9zb2Z0O1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1vcGVyYTogICAgICRwcmVmaXgtZm9yLW9wZXJhO1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjOiAgICAgICRwcmVmaXgtZm9yLXNwZWM7XG5cbiAgQGlmICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdCB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1wcmVmaXgtZm9yLWFsbCgpO1xuICAgICRwcmVmaXgtZm9yLXdlYmtpdDogdHJ1ZSAhZ2xvYmFsO1xuICAgIEAtd2Via2l0LWtleWZyYW1lcyAjeyRuYW1lfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgJG9yaWdpbmFsLXByZWZpeC1mb3ItbW96aWxsYSB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1wcmVmaXgtZm9yLWFsbCgpO1xuICAgICRwcmVmaXgtZm9yLW1vemlsbGE6IHRydWUgIWdsb2JhbDtcbiAgICBALW1vei1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgJHByZWZpeC1mb3Itd2Via2l0OiAgICAkb3JpZ2luYWwtcHJlZml4LWZvci13ZWJraXQgICAgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3ItbW96aWxsYTogICAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhICAgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3ItbWljcm9zb2Z0OiAkb3JpZ2luYWwtcHJlZml4LWZvci1taWNyb3NvZnQgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3Itb3BlcmE6ICAgICAkb3JpZ2luYWwtcHJlZml4LWZvci1vcGVyYSAgICAgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3Itc3BlYzogICAgICAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjICAgICAgIWdsb2JhbDtcblxuICBAaWYgJG9yaWdpbmFsLXByZWZpeC1mb3Itc3BlYyB7XG4gICAgQGtleWZyYW1lcyAjeyRuYW1lfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiBsaW5lYXItZ3JhZGllbnQoJHBvcywgJGcxLCAkZzI6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnMzogbnVsbCwgJGc0OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzU6IG51bGwsICRnNjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGc3OiBudWxsLCAkZzg6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnOTogbnVsbCwgJGcxMDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGZhbGxiYWNrOiBudWxsKSB7XG4gIC8vIERldGVjdCB3aGF0IHR5cGUgb2YgdmFsdWUgZXhpc3RzIGluICRwb3NcbiAgJHBvcy10eXBlOiB0eXBlLW9mKG50aCgkcG9zLCAxKSk7XG4gICRwb3Mtc3BlYzogbnVsbDtcbiAgJHBvcy1kZWdyZWU6IG51bGw7XG5cbiAgLy8gSWYgJHBvcyBpcyBtaXNzaW5nIGZyb20gbWl4aW4sIHJlYXNzaWduIHZhcnMgYW5kIGFkZCBkZWZhdWx0IHBvc2l0aW9uXG4gIEBpZiAoJHBvcy10eXBlID09IGNvbG9yKSBvciAobnRoKCRwb3MsIDEpID09IFwidHJhbnNwYXJlbnRcIikgIHtcbiAgICAkZzEwOiAkZzk7ICRnOTogJGc4OyAkZzg6ICRnNzsgJGc3OiAkZzY7ICRnNjogJGc1O1xuICAgICRnNTogJGc0OyAkZzQ6ICRnMzsgJGczOiAkZzI7ICRnMjogJGcxOyAkZzE6ICRwb3M7XG4gICAgJHBvczogbnVsbDtcbiAgfVxuXG4gIEBpZiAkcG9zIHtcbiAgICAkcG9zaXRpb25zOiBfbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIoJHBvcyk7XG4gICAgJHBvcy1kZWdyZWU6IG50aCgkcG9zaXRpb25zLCAxKTtcbiAgICAkcG9zLXNwZWM6ICAgbnRoKCRwb3NpdGlvbnMsIDIpO1xuICB9XG5cbiAgJGZ1bGw6ICRnMSwgJGcyLCAkZzMsICRnNCwgJGc1LCAkZzYsICRnNywgJGc4LCAkZzksICRnMTA7XG5cbiAgLy8gU2V0ICRnMSBhcyB0aGUgZGVmYXVsdCBmYWxsYmFjayBjb2xvclxuICAkZmFsbGJhY2stY29sb3I6IG50aCgkZzEsIDEpO1xuXG4gIC8vIElmICRmYWxsYmFjayBpcyBhIGNvbG9yIHVzZSB0aGF0IGNvbG9yIGFzIHRoZSBmYWxsYmFjayBjb2xvclxuICBAaWYgKHR5cGUtb2YoJGZhbGxiYWNrKSA9PSBjb2xvcikgb3IgKCRmYWxsYmFjayA9PSBcInRyYW5zcGFyZW50XCIpIHtcbiAgICAkZmFsbGJhY2stY29sb3I6ICRmYWxsYmFjaztcbiAgfVxuXG4gIGJhY2tncm91bmQtY29sb3I6ICRmYWxsYmFjay1jb2xvcjtcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoJHBvcy1kZWdyZWUgJGZ1bGwpOyAvLyBTYWZhcmkgNS4xKywgQ2hyb21lXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVucXVvdGUoXCJsaW5lYXItZ3JhZGllbnQoI3skcG9zLXNwZWN9I3skZnVsbH0pXCIpO1xufVxuIiwiQG1peGluIHBlcnNwZWN0aXZlKCRkZXB0aDogbm9uZSkge1xuICAvLyBub25lIHwgPGxlbmd0aD5cbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUsICRkZXB0aCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIHBlcnNwZWN0aXZlLW9yaWdpbigkdmFsdWU6IDUwJSA1MCUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUtb3JpZ2luLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gcGxhY2Vob2xkZXIge1xuICAkcGxhY2Vob2xkZXJzOiBcIjotd2Via2l0LWlucHV0XCIgXCI6LW1velwiIFwiLW1velwiIFwiLW1zLWlucHV0XCI7XG4gIEBlYWNoICRwbGFjZWhvbGRlciBpbiAkcGxhY2Vob2xkZXJzIHtcbiAgICAmOiN7JHBsYWNlaG9sZGVyfS1wbGFjZWhvbGRlciB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFJlcXVpcmVzIFNhc3MgMy4xK1xuQG1peGluIHJhZGlhbC1ncmFkaWVudCgkZzEsICRnMixcbiAgICAgICAgICAgICAgICAgICAgICAgJGczOiBudWxsLCAkZzQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnNTogbnVsbCwgJGc2OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzc6IG51bGwsICRnODogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGc5OiBudWxsLCAkZzEwOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkcG9zOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkc2hhcGUtc2l6ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGZhbGxiYWNrOiBudWxsKSB7XG5cbiAgJGRhdGE6IF9yYWRpYWwtYXJnLXBhcnNlcigkZzEsICRnMiwgJHBvcywgJHNoYXBlLXNpemUpO1xuICAkZzE6ICBudGgoJGRhdGEsIDEpO1xuICAkZzI6ICBudGgoJGRhdGEsIDIpO1xuICAkcG9zOiBudGgoJGRhdGEsIDMpO1xuICAkc2hhcGUtc2l6ZTogbnRoKCRkYXRhLCA0KTtcblxuICAkZnVsbDogJGcxLCAkZzIsICRnMywgJGc0LCAkZzUsICRnNiwgJGc3LCAkZzgsICRnOSwgJGcxMDtcblxuICAvLyBTdHJpcCBkZXByZWNhdGVkIGNvdmVyL2NvbnRhaW4gZm9yIHNwZWNcbiAgJHNoYXBlLXNpemUtc3BlYzogX3NoYXBlLXNpemUtc3RyaXBwZXIoJHNoYXBlLXNpemUpO1xuXG4gIC8vIFNldCAkZzEgYXMgdGhlIGRlZmF1bHQgZmFsbGJhY2sgY29sb3JcbiAgJGZpcnN0LWNvbG9yOiBudGgoJGZ1bGwsIDEpO1xuICAkZmFsbGJhY2stY29sb3I6IG50aCgkZmlyc3QtY29sb3IsIDEpO1xuXG4gIEBpZiAodHlwZS1vZigkZmFsbGJhY2spID09IGNvbG9yKSBvciAoJGZhbGxiYWNrID09IFwidHJhbnNwYXJlbnRcIikge1xuICAgICRmYWxsYmFjay1jb2xvcjogJGZhbGxiYWNrO1xuICB9XG5cbiAgLy8gQWRkIENvbW1hcyBhbmQgc3BhY2VzXG4gICRzaGFwZS1zaXplOiBpZigkc2hhcGUtc2l6ZSwgXCIjeyRzaGFwZS1zaXplfSwgXCIsIG51bGwpO1xuICAkcG9zOiAgICAgICAgaWYoJHBvcywgXCIjeyRwb3N9LCBcIiwgbnVsbCk7XG4gICRwb3Mtc3BlYzogICBpZigkcG9zLCBcImF0ICN7JHBvc31cIiwgbnVsbCk7XG4gICRzaGFwZS1zaXplLXNwZWM6IGlmKCgkc2hhcGUtc2l6ZS1zcGVjICE9IFwiIFwiKSBhbmQgKCRwb3MgPT0gbnVsbCksIFwiI3skc2hhcGUtc2l6ZS1zcGVjfSwgXCIsIFwiI3skc2hhcGUtc2l6ZS1zcGVjfSBcIik7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogICRmYWxsYmFjay1jb2xvcjtcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoI3skcG9zfSN7JHNoYXBlLXNpemV9I3skZnVsbH0pO1xuICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoI3skc2hhcGUtc2l6ZS1zcGVjfSN7JHBvcy1zcGVjfSN7JGZ1bGx9KTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBPdXRwdXRzIHRoZSBzcGVjIGFuZCBwcmVmaXhlZCB2ZXJzaW9ucyBvZiB0aGUgYDo6c2VsZWN0aW9uYCBwc2V1ZG8tZWxlbWVudC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0Jvb2x9ICRjdXJyZW50LXNlbGVjdG9yIFtmYWxzZV1cclxuLy8vICAgSWYgc2V0IHRvIGB0cnVlYCwgaXQgdGFrZXMgdGhlIGN1cnJlbnQgZWxlbWVudCBpbnRvIGNvbnNpZGVyYXRpb24uXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBzZWxlY3Rpb24odHJ1ZSkge1xyXG4vLy8gICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYmI1MjtcclxuLy8vICAgICB9XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50OjotbW96LXNlbGVjdGlvbiB7XHJcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYmI1MjtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vICAgLmVsZW1lbnQ6OnNlbGVjdGlvbiB7XHJcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYmI1MjtcclxuLy8vICAgfVxyXG5cclxuQG1peGluIHNlbGVjdGlvbigkY3VycmVudC1zZWxlY3RvcjogZmFsc2UpIHtcclxuICBAaWYgJGN1cnJlbnQtc2VsZWN0b3Ige1xyXG4gICAgJjo6LW1vei1zZWxlY3Rpb24ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICAmOjpzZWxlY3Rpb24ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9IEBlbHNlIHtcclxuICAgIDo6LW1vei1zZWxlY3Rpb24ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICA6OnNlbGVjdGlvbiB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAbWl4aW4gdGV4dC1kZWNvcmF0aW9uKCR2YWx1ZSkge1xuLy8gPHRleHQtZGVjb3JhdGlvbi1saW5lPiB8fCA8dGV4dC1kZWNvcmF0aW9uLXN0eWxlPiB8fCA8dGV4dC1kZWNvcmF0aW9uLWNvbG9yPlxuICBAaW5jbHVkZSBwcmVmaXhlcih0ZXh0LWRlY29yYXRpb24sICR2YWx1ZSwgbW96KTtcbn1cblxuQG1peGluIHRleHQtZGVjb3JhdGlvbi1saW5lKCRsaW5lOiBub25lKSB7XG4vLyBub25lIHx8IHVuZGVybGluZSB8fCBvdmVybGluZSB8fCBsaW5lLXRocm91Z2hcbiAgQGluY2x1ZGUgcHJlZml4ZXIodGV4dC1kZWNvcmF0aW9uLWxpbmUsICRsaW5lLCBtb3opO1xufVxuXG5AbWl4aW4gdGV4dC1kZWNvcmF0aW9uLXN0eWxlKCRzdHlsZTogc29saWQpIHtcbi8vIHNvbGlkIHx8IGRvdWJsZSB8fCBkb3R0ZWQgfHwgZGFzaGVkIHx8IHdhdnlcbiAgQGluY2x1ZGUgcHJlZml4ZXIodGV4dC1kZWNvcmF0aW9uLXN0eWxlLCAkc3R5bGUsIG1veiB3ZWJraXQpO1xufVxuXG5AbWl4aW4gdGV4dC1kZWNvcmF0aW9uLWNvbG9yKCRjb2xvcjogY3VycmVudENvbG9yKSB7XG4vLyBjdXJyZW50Q29sb3IgfHwgPGNvbG9yPlxuICBAaW5jbHVkZSBwcmVmaXhlcih0ZXh0LWRlY29yYXRpb24tY29sb3IsICRjb2xvciwgbW96KTtcbn1cbiIsIkBtaXhpbiB0cmFuc2Zvcm0oJHByb3BlcnR5OiBub25lKSB7XG4gIC8vIG5vbmUgfCA8dHJhbnNmb3JtLWZ1bmN0aW9uPlxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2Zvcm0sICRwcm9wZXJ0eSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtLW9yaWdpbigkYXhlczogNTAlKSB7XG4gIC8vIHgtYXhpcyAtIGxlZnQgfCBjZW50ZXIgfCByaWdodCAgfCBsZW5ndGggfCAlXG4gIC8vIHktYXhpcyAtIHRvcCAgfCBjZW50ZXIgfCBib3R0b20gfCBsZW5ndGggfCAlXG4gIC8vIHotYXhpcyAtICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNmb3JtLW9yaWdpbiwgJGF4ZXMsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcbn1cblxuQG1peGluIHRyYW5zZm9ybS1zdHlsZSgkc3R5bGU6IGZsYXQpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNmb3JtLXN0eWxlLCAkc3R5bGUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcbn1cbiIsIi8vIFNob3J0aGFuZCBtaXhpbi4gU3VwcG9ydHMgbXVsdGlwbGUgcGFyZW50aGVzZXMtZGVsaW1pbmF0ZWQgdmFsdWVzIGZvciBlYWNoIHZhcmlhYmxlLlxuLy8gRXhhbXBsZTogQGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDJzIGVhc2UtaW4tb3V0KTtcbi8vICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24gKG9wYWNpdHkgMXMgZWFzZS1pbiAycywgd2lkdGggMnMgZWFzZS1vdXQpO1xuLy8gICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbi1wcm9wZXJ0eSAodHJhbnNmb3JtLCBvcGFjaXR5KTtcblxuQG1peGluIHRyYW5zaXRpb24oJHByb3BlcnRpZXMuLi4pIHtcbiAgLy8gRml4IGZvciB2ZW5kb3ItcHJlZml4IHRyYW5zZm9ybSBwcm9wZXJ0eVxuICAkbmVlZHMtcHJlZml4ZXM6IGZhbHNlO1xuICAkd2Via2l0OiAoKTtcbiAgJG1vejogKCk7XG4gICRzcGVjOiAoKTtcblxuICAvLyBDcmVhdGUgbGlzdHMgZm9yIHZlbmRvci1wcmVmaXhlZCB0cmFuc2Zvcm1cbiAgQGVhY2ggJGxpc3QgaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiBudGgoJGxpc3QsIDEpID09IFwidHJhbnNmb3JtXCIge1xuICAgICAgJG5lZWRzLXByZWZpeGVzOiB0cnVlO1xuICAgICAgJGxpc3QxOiAtd2Via2l0LXRyYW5zZm9ybTtcbiAgICAgICRsaXN0MjogLW1vei10cmFuc2Zvcm07XG4gICAgICAkbGlzdDM6ICgpO1xuXG4gICAgICBAZWFjaCAkdmFyIGluICRsaXN0IHtcbiAgICAgICAgJGxpc3QzOiBqb2luKCRsaXN0MywgJHZhcik7XG5cbiAgICAgICAgQGlmICR2YXIgIT0gXCJ0cmFuc2Zvcm1cIiB7XG4gICAgICAgICAgJGxpc3QxOiBqb2luKCRsaXN0MSwgJHZhcik7XG4gICAgICAgICAgJGxpc3QyOiBqb2luKCRsaXN0MiwgJHZhcik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJHdlYmtpdDogYXBwZW5kKCR3ZWJraXQsICRsaXN0MSk7XG4gICAgICAkbW96OiAgICBhcHBlbmQoJG1veiwgICAgJGxpc3QyKTtcbiAgICAgICRzcGVjOiAgIGFwcGVuZCgkc3BlYywgICAkbGlzdDMpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdlYmtpdDogYXBwZW5kKCR3ZWJraXQsICRsaXN0LCBjb21tYSk7XG4gICAgICAkbW96OiAgICBhcHBlbmQoJG1veiwgICAgJGxpc3QsIGNvbW1hKTtcbiAgICAgICRzcGVjOiAgIGFwcGVuZCgkc3BlYywgICAkbGlzdCwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkbmVlZHMtcHJlZml4ZXMge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogJHdlYmtpdDtcbiAgICAgICAtbW96LXRyYW5zaXRpb246ICRtb3o7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiAkc3BlYztcbiAgfSBAZWxzZSB7XG4gICAgQGlmIGxlbmd0aCgkcHJvcGVydGllcykgPj0gMSB7XG4gICAgICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLCAkcHJvcGVydGllcywgd2Via2l0IG1veiBzcGVjKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcm9wZXJ0aWVzOiBhbGwgMC4xNXMgZWFzZS1vdXQgMHM7XG4gICAgICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLCAkcHJvcGVydGllcywgd2Via2l0IG1veiBzcGVjKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRyYW5zaXRpb24tcHJvcGVydHkoJHByb3BlcnRpZXMuLi4pIHtcbiAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBcIndlYmtpdFwiKTtcbiAgICAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBcIm1velwiKTtcbiAgICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBmYWxzZSk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLWR1cmF0aW9uKCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLWR1cmF0aW9uLCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbigkbW90aW9ucy4uLikge1xuICAvLyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXQgfCBjdWJpYy1iZXppZXIoKVxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiwgJG1vdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLWRlbGF5KCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLWRlbGF5LCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gdXNlci1zZWxlY3QoJHZhbHVlOiBub25lKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKHVzZXItc2VsZWN0LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBib3JkZXItY29sb3JgIG9uIHNwZWNpZmljIHNpZGVzIG9mIGEgYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1jb2xvcigjYTYwYjU1ICM3NmNkOWMgbnVsbCAjZThhZTFhKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICNlOGFlMWE7XG4vLy8gICAgIGJvcmRlci1yaWdodC1jb2xvcjogIzc2Y2Q5Yztcbi8vLyAgICAgYm9yZGVyLXRvcC1jb2xvcjogI2E2MGI1NTtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcbi8vL1xuLy8vIEBvdXRwdXQgYGJvcmRlci1jb2xvcmBcblxuQG1peGluIGJvcmRlci1jb2xvcigkdmFscy4uLikge1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShib3JkZXIsIGNvbG9yLCAkdmFscy4uLik7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBib3JkZXItcmFkaXVzYCBvbiBib3RoIGNvcm5lcnMgb24gdGhlIHNpZGUgb2YgYSBib3guXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHJhZGlpXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudC1vbmUge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cyg1cHgpO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuZWxlbWVudC10d28ge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoM3B4KTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50LW9uZSB7XG4vLy8gICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDtcbi8vLyAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDVweDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLmVsZW1lbnQtdHdvIHtcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4O1xuLy8vICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7XG4vLy8gICB9XG4vLy9cbi8vLyBAb3V0cHV0IGBib3JkZXItcmFkaXVzYFxuXG5AbWl4aW4gYm9yZGVyLXRvcC1yYWRpdXMoJHJhZGlpKSB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRyYWRpaTtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRyYWRpaTtcbn1cblxuQG1peGluIGJvcmRlci1yaWdodC1yYWRpdXMoJHJhZGlpKSB7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaWk7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkcmFkaWk7XG59XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLXJhZGl1cygkcmFkaWkpIHtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogJHJhZGlpO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGlpO1xufVxuXG5AbWl4aW4gYm9yZGVyLWxlZnQtcmFkaXVzKCRyYWRpaSkge1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaWk7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRyYWRpaTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci1zdHlsZWAgb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLXN0eWxlKGRhc2hlZCBudWxsIHNvbGlkKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4vLy8gICAgIGJvcmRlci10b3Atc3R5bGU6IGRhc2hlZDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcbi8vL1xuLy8vIEBvdXRwdXQgYGJvcmRlci1zdHlsZWBcblxuQG1peGluIGJvcmRlci1zdHlsZSgkdmFscy4uLikge1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShib3JkZXIsIHN0eWxlLCAkdmFscy4uLik7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBib3JkZXItd2lkdGhgIG9uIHNwZWNpZmljIHNpZGVzIG9mIGEgYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci13aWR0aCgxZW0gbnVsbCAyMHB4KTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMjBweDtcbi8vLyAgICAgYm9yZGVyLXRvcC13aWR0aDogMWVtO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxuLy8vXG4vLy8gQG91dHB1dCBgYm9yZGVyLXdpZHRoYFxuXG5AbWl4aW4gYm9yZGVyLXdpZHRoKCR2YWxzLi4uKSB7XG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KGJvcmRlciwgd2lkdGgsICR2YWxzLi4uKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEdlbmVyYXRlcyB2YXJpYWJsZXMgZm9yIGFsbCBidXR0b25zLiBQbGVhc2Ugbm90ZSB0aGF0IHlvdSBtdXN0IHVzZSBpbnRlcnBvbGF0aW9uIG9uIHRoZSB2YXJpYWJsZTogYCN7JGFsbC1idXR0b25zfWAuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgICN7JGFsbC1idXR0b25zfSB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmMDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgICN7JGFsbC1idXR0b25zLWZvY3VzfSxcbi8vLyAgICN7JGFsbC1idXR0b25zLWhvdmVyfSB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICMwZjA7XG4vLy8gICB9XG4vLy9cbi8vLyAgICN7JGFsbC1idXR0b25zLWFjdGl2ZX0ge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgYnV0dG9uLFxuLy8vICAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJyZXNldFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjAwO1xuLy8vICAgfVxuLy8vXG4vLy8gICBidXR0b246Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXTpmb2N1cyxcbi8vLyAgIGJ1dHRvbjpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJidXR0b25cIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwicmVzZXRcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwic3VibWl0XCJdOmhvdmVyIHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzBmMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgYnV0dG9uOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJidXR0b25cIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJzdWJtaXRcIl06YWN0aXZlIHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwZjtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIGFzc2lnbi1pbnB1dHNcbi8vL1xuLy8vIEB0eXBlIExpc3Rcbi8vL1xuLy8vIEB0b2RvIFJlbW92ZSBkb3VibGUgYXNzaWduZWQgdmFyaWFibGVzIChMaW5lcyA1OeKAkzYyKSBpbiB2NS4wLjBcblxuJGJ1dHRvbnMtbGlzdDogJ2J1dHRvbicsXG4gICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScsXG4gICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInJlc2V0XCJdJyxcbiAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwic3VibWl0XCJdJztcblxuJGFsbC1idXR0b25zOiAgICAgICAgYXNzaWduLWlucHV0cygkYnV0dG9ucy1saXN0KTtcbiRhbGwtYnV0dG9ucy1hY3RpdmU6IGFzc2lnbi1pbnB1dHMoJGJ1dHRvbnMtbGlzdCwgYWN0aXZlKTtcbiRhbGwtYnV0dG9ucy1mb2N1czogIGFzc2lnbi1pbnB1dHMoJGJ1dHRvbnMtbGlzdCwgZm9jdXMpO1xuJGFsbC1idXR0b25zLWhvdmVyOiAgYXNzaWduLWlucHV0cygkYnV0dG9ucy1saXN0LCBob3Zlcik7XG5cbiRhbGwtYnV0dG9uLWlucHV0czogICAgICAgICRhbGwtYnV0dG9ucztcbiRhbGwtYnV0dG9uLWlucHV0cy1hY3RpdmU6ICRhbGwtYnV0dG9ucy1hY3RpdmU7XG4kYWxsLWJ1dHRvbi1pbnB1dHMtZm9jdXM6ICAkYWxsLWJ1dHRvbnMtZm9jdXM7XG4kYWxsLWJ1dHRvbi1pbnB1dHMtaG92ZXI6ICAkYWxsLWJ1dHRvbnMtaG92ZXI7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhbiBlYXN5IHdheSB0byBpbmNsdWRlIGEgY2xlYXJmaXggZm9yIGNvbnRhaW5pbmcgZmxvYXRzLlxuLy8vXG4vLy8gQGxpbmsgaHR0cDovL2Nzc21vam8uY29tL2xhdGVzdF9uZXdfY2xlYXJmaXhfc29fZmFyL1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQ6OmFmdGVyIHtcbi8vLyAgICAgY2xlYXI6IGJvdGg7XG4vLy8gICAgIGNvbnRlbnQ6IFwiXCI7XG4vLy8gICAgIGRpc3BsYXk6IHRhYmxlO1xuLy8vICAgfVxuXG5AbWl4aW4gY2xlYXJmaXgge1xuICAmOjphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gVHJ1bmNhdGVzIHRleHQgYW5kIGFkZHMgYW4gZWxsaXBzaXMgdG8gcmVwcmVzZW50IG92ZXJmbG93LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbMTAwJV1cbi8vLyAgIE1heC13aWR0aCBmb3IgdGhlIHN0cmluZyB0byByZXNwZWN0IGJlZm9yZSBiZWluZyB0cnVuY2F0ZWRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBlbGxpcHNpcztcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuLy8vICAgICBtYXgtd2lkdGg6IDEwMCU7XG4vLy8gICAgIG92ZXJmbG93OiBoaWRkZW47XG4vLy8gICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuLy8vICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuLy8vICAgICB3b3JkLXdyYXA6IG5vcm1hbDtcbi8vLyAgIH1cblxuQG1peGluIGVsbGlwc2lzKCR3aWR0aDogMTAwJSkge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1heC13aWR0aDogJHdpZHRoO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgd29yZC13cmFwOiBub3JtYWw7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBHZW9yZ2lhIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiRnZW9yZ2lhOiBcIkdlb3JnaWFcIiwgXCJDYW1icmlhXCIsIFwiVGltZXMgTmV3IFJvbWFuXCIsIFwiVGltZXNcIiwgc2VyaWY7XG5cbi8vLyBIZWx2ZXRpY2EgZm9udCBzdGFjay5cbi8vL1xuLy8vIEB0eXBlIExpc3RcblxuJGhlbHZldGljYTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBcIkhlbHZldGljYVwiLCBcIlJvYm90b1wiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG5cbi8vLyBMdWNpZGEgR3JhbmRlIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiRsdWNpZGEtZ3JhbmRlOiBcIkx1Y2lkYSBHcmFuZGVcIiwgXCJUYWhvbWFcIiwgXCJWZXJkYW5hXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcblxuLy8vIE1vbm9zcGFjZSBmb250IHN0YWNrLlxuLy8vXG4vLy8gQHR5cGUgTGlzdFxuXG4kbW9ub3NwYWNlOiBcIkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ub1wiLCBcIkNvbnNvbGFzXCIsIFwiQ291cmllclwiLCBtb25vc3BhY2U7XG5cbi8vLyBWZXJkYW5hIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiR2ZXJkYW5hOiBcIlZlcmRhbmFcIiwgXCJHZW5ldmFcIiwgc2Fucy1zZXJpZjtcbiIsIi8vLyBIaWRlcyB0aGUgdGV4dCBpbiBhbiBlbGVtZW50LCBjb21tb25seSB1c2VkIHRvIHNob3cgYW4gaW1hZ2UuIFNvbWUgZWxlbWVudHMgd2lsbCBuZWVkIGJsb2NrLWxldmVsIHN0eWxlcyBhcHBsaWVkLlxuLy8vXG4vLy8gQGxpbmsgaHR0cDovL3plbGRtYW4uY29tLzIwMTIvMDMvMDEvcmVwbGFjaW5nLXRoZS05OTk5cHgtaGFjay1uZXctaW1hZ2UtcmVwbGFjZW1lbnRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBoaWRlLXRleHQ7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG92ZXJmbG93OiBoaWRkZW47XG4vLy8gICAgIHRleHQtaW5kZW50OiAxMDElO1xuLy8vICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuLy8vICAgfVxuLy8vXG4vLy8gQHRvZG8gUmVtb3ZlIGhlaWdodCBhcmd1bWVudCBpbiB2NS4wLjBcblxuQG1peGluIGhpZGUtdGV4dCgkaGVpZ2h0OiBudWxsKSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtaW5kZW50OiAxMDElO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gIEBpZiAkaGVpZ2h0IHtcbiAgICBAd2FybiBcIlRoZSBgaGlkZS10ZXh0YCBtaXhpbiBoYXMgY2hhbmdlZCBhbmQgbm8gbG9uZ2VyIHJlcXVpcmVzIGEgaGVpZ2h0LiBUaGUgaGVpZ2h0IGFyZ3VtZW50IHdpbGwgbm8gbG9uZ2VyIGJlIGFjY2VwdGVkIGluIHY1LjAuMFwiO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBtYXJnaW5gIG9uIHNwZWNpZmljIHNpZGVzIG9mIGEgYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIG1hcmdpbihudWxsIDEwcHggM2VtIDIwdmgpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW4tYm90dG9tOiAzZW07XG4vLy8gICAgIG1hcmdpbi1sZWZ0OiAyMHZoO1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7bWl4aW59IGRpcmVjdGlvbmFsLXByb3BlcnR5XG4vLy9cbi8vLyBAb3V0cHV0IGBtYXJnaW5gXG5cbkBtaXhpbiBtYXJnaW4oJHZhbHMuLi4pIHtcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkobWFyZ2luLCBmYWxzZSwgJHZhbHMuLi4pO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgcGFkZGluZ2Agb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcGFkZGluZygxMnZoIG51bGwgMTBweCA1JSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuLy8vICAgICBwYWRkaW5nLWxlZnQ6IDUlO1xuLy8vICAgICBwYWRkaW5nLXRvcDogMTJ2aDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcbi8vL1xuLy8vIEBvdXRwdXQgYHBhZGRpbmdgXG5cbkBtaXhpbiBwYWRkaW5nKCR2YWxzLi4uKSB7XG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KHBhZGRpbmcsIGZhbHNlLCAkdmFscy4uLik7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3Igc2V0dGluZyBhbiBlbGVtZW504oCZcyBwb3NpdGlvbi4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxuLy8vXG4vLy8gQHBhcmFtIHtQb3NpdGlvbn0gJHBvc2l0aW9uIFtyZWxhdGl2ZV1cbi8vLyAgIEEgQ1NTIHBvc2l0aW9uIHZhbHVlXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICRjb29yZGluYXRlcyBbbnVsbCBudWxsIG51bGwgbnVsbF1cbi8vLyAgIExpc3Qgb2YgdmFsdWVzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgNC12YWx1ZSBzeW50YXggZm9yIHRoZSBlZGdlcyBvZiBhIGJveFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHBvc2l0aW9uKGFic29sdXRlLCAwIG51bGwgbnVsbCAxMGVtKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgbGVmdDogMTBlbTtcbi8vLyAgICAgcG9zaXRpb246IGFic29sdXRlO1xuLy8vICAgICB0b3A6IDA7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGlzLWxlbmd0aFxuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gdW5wYWNrXG5cbkBtaXhpbiBwb3NpdGlvbigkcG9zaXRpb246IHJlbGF0aXZlLCAkY29vcmRpbmF0ZXM6IG51bGwgbnVsbCBudWxsIG51bGwpIHtcbiAgQGlmIHR5cGUtb2YoJHBvc2l0aW9uKSA9PSBsaXN0IHtcbiAgICAkY29vcmRpbmF0ZXM6ICRwb3NpdGlvbjtcbiAgICAkcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgJGNvb3JkaW5hdGVzOiB1bnBhY2soJGNvb3JkaW5hdGVzKTtcblxuICAkb2Zmc2V0czogKFxuICAgIHRvcDogICAgbnRoKCRjb29yZGluYXRlcywgMSksXG4gICAgcmlnaHQ6ICBudGgoJGNvb3JkaW5hdGVzLCAyKSxcbiAgICBib3R0b206IG50aCgkY29vcmRpbmF0ZXMsIDMpLFxuICAgIGxlZnQ6ICAgbnRoKCRjb29yZGluYXRlcywgNClcbiAgKTtcblxuICBwb3NpdGlvbjogJHBvc2l0aW9uO1xuXG4gIEBlYWNoICRvZmZzZXQsICR2YWx1ZSBpbiAkb2Zmc2V0cyB7XG4gICAgQGlmIGlzLWxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICN7JG9mZnNldH06ICR2YWx1ZTtcbiAgICB9XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEEgbWl4aW4gZm9yIGdlbmVyYXRpbmcgdmVuZG9yIHByZWZpeGVzIG9uIG5vbi1zdGFuZGFyZGl6ZWQgcHJvcGVydGllcy5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkcHJvcGVydHlcbi8vLyAgIFByb3BlcnR5IHRvIHByZWZpeFxuLy8vXG4vLy8gQHBhcmFtIHsqfSAkdmFsdWVcbi8vLyAgIFZhbHVlIHRvIHVzZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkcHJlZml4ZXNcbi8vLyAgIFByZWZpeGVzIHRvIGRlZmluZVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHByZWZpeGVyKGJvcmRlci1yYWRpdXMsIDEwcHgsIHdlYmtpdCBtcyBzcGVjKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4O1xuLy8vICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7XG4vLy8gICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLXdlYmtpdFxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3ItbW96aWxsYVxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3ItbWljcm9zb2Z0XG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci1vcGVyYVxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3Itc3BlY1xuXG5AbWl4aW4gcHJlZml4ZXIoJHByb3BlcnR5LCAkdmFsdWUsICRwcmVmaXhlcykge1xuICBAZWFjaCAkcHJlZml4IGluICRwcmVmaXhlcyB7XG4gICAgQGlmICRwcmVmaXggPT0gd2Via2l0IHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci13ZWJraXQge1xuICAgICAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBtb3oge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLW1vemlsbGEge1xuICAgICAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBtcyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3ItbWljcm9zb2Z0IHtcbiAgICAgICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBvIHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1vcGVyYSB7XG4gICAgICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBzcGVjIHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1zcGVjIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfSBAZWxzZSAge1xuICAgICAgQHdhcm4gXCJVbnJlY29nbml6ZWQgcHJlZml4OiAjeyRwcmVmaXh9XCI7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCkge1xuICAkcHJlZml4LWZvci13ZWJraXQ6ICAgIGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW1vemlsbGE6ICAgZmFsc2UgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3ItbWljcm9zb2Z0OiBmYWxzZSAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1vcGVyYTogICAgIGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLXNwZWM6ICAgICAgZmFsc2UgIWdsb2JhbDtcbn1cbiIsIkBtaXhpbiByZXRpbmEtaW1hZ2UoJGZpbGVuYW1lLCAkYmFja2dyb3VuZC1zaXplLCAkZXh0ZW5zaW9uOiBwbmcsICRyZXRpbmEtZmlsZW5hbWU6IG51bGwsICRyZXRpbmEtc3VmZml4OiBfMngsICRhc3NldC1waXBlbGluZTogJGFzc2V0LXBpcGVsaW5lKSB7XG4gIEBpZiAkYXNzZXQtcGlwZWxpbmUge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlLXVybChcIiN7JGZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgICB1cmwoXCIjeyRmaWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGhpZHBpIHtcbiAgICBAaWYgJGFzc2V0LXBpcGVsaW5lIHtcbiAgICAgIEBpZiAkcmV0aW5hLWZpbGVuYW1lIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2UtdXJsKFwiI3skcmV0aW5hLWZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlLXVybChcIiN7JGZpbGVuYW1lfSN7JHJldGluYS1zdWZmaXh9LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAaWYgJHJldGluYS1maWxlbmFtZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiN7JHJldGluYS1maWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIjeyRmaWxlbmFtZX0jeyRyZXRpbmEtc3VmZml4fS4jeyRleHRlbnNpb259XCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGJhY2tncm91bmQtc2l6ZTogJGJhY2tncm91bmQtc2l6ZTtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gU2V0cyB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgb2YgdGhlIGVsZW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRzaXplXG4vLy8gICBBIGxpc3Qgb2YgYXQgbW9zdCAyIHNpemUgdmFsdWVzLlxuLy8vXG4vLy8gICBJZiB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlIHZhbHVlIGluIGAkc2l6ZWAgaXQgaXMgdXNlZCBmb3IgYm90aCB3aWR0aCBhbmQgaGVpZ2h0LiBBbGwgdW5pdHMgYXJlIHN1cHBvcnRlZC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmZpcnN0LWVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBzaXplKDJlbSk7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5zZWNvbmQtZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHNpemUoYXV0byAxMGVtKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5maXJzdC1lbGVtZW50IHtcbi8vLyAgICAgd2lkdGg6IDJlbTtcbi8vLyAgICAgaGVpZ2h0OiAyZW07XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5zZWNvbmQtZWxlbWVudCB7XG4vLy8gICAgIHdpZHRoOiBhdXRvO1xuLy8vICAgICBoZWlnaHQ6IDEwZW07XG4vLy8gICB9XG4vLy9cbi8vLyBAdG9kbyBSZWZhY3RvciBpbiA1LjAuMCB0byB1c2UgYSBjb21tYS1zZXBhcmF0ZWQgYXJndW1lbnRcblxuQG1peGluIHNpemUoJHZhbHVlKSB7XG4gICR3aWR0aDogbnRoKCR2YWx1ZSwgMSk7XG4gICRoZWlnaHQ6ICR3aWR0aDtcblxuICBAaWYgbGVuZ3RoKCR2YWx1ZSkgPiAxIHtcbiAgICAkaGVpZ2h0OiBudGgoJHZhbHVlLCAyKTtcbiAgfVxuXG4gIEBpZiBpcy1zaXplKCRoZWlnaHQpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuIFwiYCN7JGhlaWdodH1gIGlzIG5vdCBhIHZhbGlkIGxlbmd0aCBmb3IgdGhlIGAkaGVpZ2h0YCBwYXJhbWV0ZXIgaW4gdGhlIGBzaXplYCBtaXhpbi5cIjtcbiAgfVxuXG4gIEBpZiBpcy1zaXplKCR3aWR0aCkge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuIFwiYCN7JHdpZHRofWAgaXMgbm90IGEgdmFsaWQgbGVuZ3RoIGZvciB0aGUgYCR3aWR0aGAgcGFyYW1ldGVyIGluIHRoZSBgc2l6ZWAgbWl4aW4uXCI7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEdlbmVyYXRlcyB2YXJpYWJsZXMgZm9yIGFsbCB0ZXh0LWJhc2VkIGlucHV0cy4gUGxlYXNlIG5vdGUgdGhhdCB5b3UgbXVzdCB1c2UgaW50ZXJwb2xhdGlvbiBvbiB0aGUgdmFyaWFibGU6IGAjeyRhbGwtdGV4dC1pbnB1dHN9YC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgI3skYWxsLXRleHQtaW5wdXRzfSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICNmMDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgICN7JGFsbC10ZXh0LWlucHV0cy1mb2N1c30sXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHMtaG92ZXJ9IHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgIzBmMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgI3skYWxsLXRleHQtaW5wdXRzLWFjdGl2ZX0ge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDBmO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgaW5wdXRbdHlwZT1cImNvbG9yXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwibW9udGhcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZWxcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInVybFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdLFxuLy8vICAgdGV4dGFyZWEge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjZjAwO1xuLy8vICAgfVxuLy8vXG4vLy8gICBpbnB1dFt0eXBlPVwiY29sb3JcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZVwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZVwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJlbWFpbFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJtb250aFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwic2VhcmNoXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInRlbFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZXh0XCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInRpbWVcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwidXJsXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cIndlZWtcIl06Zm9jdXMsXG4vLy8gICB0ZXh0YXJlYTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJjb2xvclwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRlXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cImVtYWlsXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwidGVsXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInRleHRcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwidGltZVwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJ1cmxcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwid2Vla1wiXTpob3Zlcixcbi8vLyAgIHRleHRhcmVhOmhvdmVyIHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgIzBmMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgaW5wdXRbdHlwZT1cImNvbG9yXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRlXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZVwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cImVtYWlsXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJtb250aFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwic2VhcmNoXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZWxcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInRleHRcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInRpbWVcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInVybFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwid2Vla1wiXTphY3RpdmUsXG4vLy8gICB0ZXh0YXJlYTphY3RpdmUge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDBmO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUgYXNzaWduLWlucHV0c1xuLy8vXG4vLy8gQHR5cGUgTGlzdFxuXG4kdGV4dC1pbnB1dHMtbGlzdDogJ2lucHV0W3R5cGU9XCJjb2xvclwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJkYXRlXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImVtYWlsXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cIm1vbnRoXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cIm51bWJlclwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJwYXNzd29yZFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJzZWFyY2hcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGVsXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInRleHRcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGltZVwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ1cmxcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwid2Vla1wiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0Om5vdChbdHlwZV0pJyxcbiAgICAgICAgICAgICAgICAgICAndGV4dGFyZWEnO1xuXG4kYWxsLXRleHQtaW5wdXRzOiAgICAgICAgYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCk7XG4kYWxsLXRleHQtaW5wdXRzLWFjdGl2ZTogYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCwgYWN0aXZlKTtcbiRhbGwtdGV4dC1pbnB1dHMtZm9jdXM6ICBhc3NpZ24taW5wdXRzKCR0ZXh0LWlucHV0cy1saXN0LCBmb2N1cyk7XG4kYWxsLXRleHQtaW5wdXRzLWhvdmVyOiAgYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCwgaG92ZXIpO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ1NTIGN1YmljLWJlemllciB0aW1pbmcgZnVuY3Rpb25zLiBUaW1pbmcgZnVuY3Rpb25zIGNvdXJ0ZXN5IG9mIGpxdWVyeS5lYXNpZSAoZ2l0aHViLmNvbS9qYXVraWEvZWFzaWUpXG4vLy9cbi8vLyBUaW1pbmcgZnVuY3Rpb25zIGFyZSB0aGUgc2FtZSBhcyBkZW1vZWQgaGVyZTogaHR0cDovL2pxdWVyeXVpLmNvbS9yZXNvdXJjZXMvZGVtb3MvZWZmZWN0L2Vhc2luZy5odG1sXG4vLy9cbi8vLyBAdHlwZSBjdWJpYy1iZXppZXJcblxuJGVhc2UtaW4tcXVhZDogICAgICBjdWJpYy1iZXppZXIoMC41NTAsICAwLjA4NSwgMC42ODAsIDAuNTMwKTtcbiRlYXNlLWluLWN1YmljOiAgICAgY3ViaWMtYmV6aWVyKDAuNTUwLCAgMC4wNTUsIDAuNjc1LCAwLjE5MCk7XG4kZWFzZS1pbi1xdWFydDogICAgIGN1YmljLWJlemllcigwLjg5NSwgIDAuMDMwLCAwLjY4NSwgMC4yMjApO1xuJGVhc2UtaW4tcXVpbnQ6ICAgICBjdWJpYy1iZXppZXIoMC43NTUsICAwLjA1MCwgMC44NTUsIDAuMDYwKTtcbiRlYXNlLWluLXNpbmU6ICAgICAgY3ViaWMtYmV6aWVyKDAuNDcwLCAgMC4wMDAsIDAuNzQ1LCAwLjcxNSk7XG4kZWFzZS1pbi1leHBvOiAgICAgIGN1YmljLWJlemllcigwLjk1MCwgIDAuMDUwLCAwLjc5NSwgMC4wMzUpO1xuJGVhc2UtaW4tY2lyYzogICAgICBjdWJpYy1iZXppZXIoMC42MDAsICAwLjA0MCwgMC45ODAsIDAuMzM1KTtcbiRlYXNlLWluLWJhY2s6ICAgICAgY3ViaWMtYmV6aWVyKDAuNjAwLCAtMC4yODAsIDAuNzM1LCAwLjA0NSk7XG5cbiRlYXNlLW91dC1xdWFkOiAgICAgY3ViaWMtYmV6aWVyKDAuMjUwLCAgMC40NjAsIDAuNDUwLCAwLjk0MCk7XG4kZWFzZS1vdXQtY3ViaWM6ICAgIGN1YmljLWJlemllcigwLjIxNSwgIDAuNjEwLCAwLjM1NSwgMS4wMDApO1xuJGVhc2Utb3V0LXF1YXJ0OiAgICBjdWJpYy1iZXppZXIoMC4xNjUsICAwLjg0MCwgMC40NDAsIDEuMDAwKTtcbiRlYXNlLW91dC1xdWludDogICAgY3ViaWMtYmV6aWVyKDAuMjMwLCAgMS4wMDAsIDAuMzIwLCAxLjAwMCk7XG4kZWFzZS1vdXQtc2luZTogICAgIGN1YmljLWJlemllcigwLjM5MCwgIDAuNTc1LCAwLjU2NSwgMS4wMDApO1xuJGVhc2Utb3V0LWV4cG86ICAgICBjdWJpYy1iZXppZXIoMC4xOTAsICAxLjAwMCwgMC4yMjAsIDEuMDAwKTtcbiRlYXNlLW91dC1jaXJjOiAgICAgY3ViaWMtYmV6aWVyKDAuMDc1LCAgMC44MjAsIDAuMTY1LCAxLjAwMCk7XG4kZWFzZS1vdXQtYmFjazogICAgIGN1YmljLWJlemllcigwLjE3NSwgIDAuODg1LCAwLjMyMCwgMS4yNzUpO1xuXG4kZWFzZS1pbi1vdXQtcXVhZDogIGN1YmljLWJlemllcigwLjQ1NSwgIDAuMDMwLCAwLjUxNSwgMC45NTUpO1xuJGVhc2UtaW4tb3V0LWN1YmljOiBjdWJpYy1iZXppZXIoMC42NDUsICAwLjA0NSwgMC4zNTUsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1xdWFydDogY3ViaWMtYmV6aWVyKDAuNzcwLCAgMC4wMDAsIDAuMTc1LCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtcXVpbnQ6IGN1YmljLWJlemllcigwLjg2MCwgIDAuMDAwLCAwLjA3MCwgMS4wMDApO1xuJGVhc2UtaW4tb3V0LXNpbmU6ICBjdWJpYy1iZXppZXIoMC40NDUsICAwLjA1MCwgMC41NTAsIDAuOTUwKTtcbiRlYXNlLWluLW91dC1leHBvOiAgY3ViaWMtYmV6aWVyKDEuMDAwLCAgMC4wMDAsIDAuMDAwLCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtY2lyYzogIGN1YmljLWJlemllcigwLjc4NSwgIDAuMTM1LCAwLjE1MCwgMC44NjApO1xuJGVhc2UtaW4tb3V0LWJhY2s6ICBjdWJpYy1iZXppZXIoMC42ODAsIC0wLjU1MCwgMC4yNjUsIDEuNTUwKTtcbiIsIkBtaXhpbiB0cmlhbmdsZSgkc2l6ZSwgJGNvbG9yLCAkZGlyZWN0aW9uKSB7XG4gICR3aWR0aDogbnRoKCRzaXplLCAxKTtcbiAgJGhlaWdodDogbnRoKCRzaXplLCBsZW5ndGgoJHNpemUpKTtcbiAgJGZvcmVncm91bmQtY29sb3I6IG50aCgkY29sb3IsIDEpO1xuICAkYmFja2dyb3VuZC1jb2xvcjogaWYobGVuZ3RoKCRjb2xvcikgPT0gMiwgbnRoKCRjb2xvciwgMiksIHRyYW5zcGFyZW50KTtcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgJHdpZHRoOiAkd2lkdGggLyAyO1xuICAgICRoZWlnaHQ6IGlmKGxlbmd0aCgkc2l6ZSkgPiAxLCAkaGVpZ2h0LCAkaGVpZ2h0LzIpO1xuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci1sZWZ0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQ6ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItdG9wOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLXRvcDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQ6ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItdG9wOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfVxuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHVwLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSB1cC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcblxuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0OiAgJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB1cC1sZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH1cbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBkb3duLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBkb3duLWxlZnQpIHtcbiAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gZG93bi1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdDogICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93bi1sZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH1cbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC11cCkge1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3I7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgJHdpZHRoO1xuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LWRvd24pIHtcbiAgICBib3JkZXItY29sb3I6ICRmb3JlZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICR3aWR0aDtcbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC1yaWdodCkge1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3I7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICR3aWR0aCAkaGVpZ2h0O1xuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LWxlZnQpIHtcbiAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yICRmb3JlZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXdpZHRoOiAkd2lkdGggJGhlaWdodDtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gY2hhbmdlIHRoZSBgd29yZC13cmFwYCBwcm9wZXJ0eS5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkd3JhcCBbYnJlYWstd29yZF1cbi8vLyAgIFZhbHVlIGZvciB0aGUgYHdvcmQtYnJlYWtgIHByb3BlcnR5LlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAud3JhcHBlciB7XG4vLy8gICAgIEBpbmNsdWRlIHdvcmQtd3JhcChicmVhay13b3JkKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC53cmFwcGVyIHtcbi8vLyAgICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbi8vLyAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuLy8vICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4vLy8gICB9XG5cbkBtaXhpbiB3b3JkLXdyYXAoJHdyYXA6IGJyZWFrLXdvcmQpIHtcbiAgb3ZlcmZsb3ctd3JhcDogJHdyYXA7XG4gIHdvcmQtd3JhcDogJHdyYXA7XG5cbiAgQGlmICR3cmFwID09IGJyZWFrLXdvcmQge1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbiAgfSBAZWxzZSB7XG4gICAgd29yZC1icmVhazogJHdyYXA7XG4gIH1cbn1cbiIsIi8vIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBNQUpPUiB2ZXJzaW9uIHJlbGVhc2VcblxuQG1peGluIGlubGluZS1ibG9jayB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBAd2FybiBcIlRoZSBpbmxpbmUtYmxvY2sgbWl4aW4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xufVxuXG5AbWl4aW4gYnV0dG9uICgkc3R5bGU6IHNpbXBsZSwgJGJhc2UtY29sb3I6ICM0Mjk0ZjAsICR0ZXh0LXNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gc3RyaW5nIGFuZCB0eXBlLW9mKCRiYXNlLWNvbG9yKSA9PSBjb2xvciB7XG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBzdHJpbmcgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IG51bWJlciB7XG4gICAgJHBhZGRpbmc6ICR0ZXh0LXNpemU7XG4gICAgJHRleHQtc2l6ZTogJGJhc2UtY29sb3I7XG4gICAgJGJhc2UtY29sb3I6ICM0Mjk0ZjA7XG5cbiAgICBAaWYgJHBhZGRpbmcgPT0gaW5oZXJpdCB7XG4gICAgICAkcGFkZGluZzogN3B4IDE4cHg7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBjb2xvciBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gY29sb3Ige1xuICAgICRiYXNlLWNvbG9yOiAkc3R5bGU7XG4gICAgJHN0eWxlOiBzaW1wbGU7XG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBjb2xvciBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gbnVtYmVyIHtcbiAgICAkcGFkZGluZzogJHRleHQtc2l6ZTtcbiAgICAkdGV4dC1zaXplOiAkYmFzZS1jb2xvcjtcbiAgICAkYmFzZS1jb2xvcjogJHN0eWxlO1xuICAgICRzdHlsZTogc2ltcGxlO1xuXG4gICAgQGlmICRwYWRkaW5nID09IGluaGVyaXQge1xuICAgICAgJHBhZGRpbmc6IDdweCAxOHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gbnVtYmVyIHtcbiAgICAkcGFkZGluZzogJGJhc2UtY29sb3I7XG4gICAgJHRleHQtc2l6ZTogJHN0eWxlO1xuICAgICRiYXNlLWNvbG9yOiAjNDI5NGYwO1xuICAgICRzdHlsZTogc2ltcGxlO1xuXG4gICAgQGlmICRwYWRkaW5nID09ICM0Mjk0ZjAge1xuICAgICAgJHBhZGRpbmc6IDdweCAxOHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3BhY2l0eTogMC41O1xuICB9XG5cbiAgQHdhcm4gXCJUaGUgYnV0dG9uIG1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2VcIjtcbn1cblxuLy8gU2VsZWN0b3IgU3R5bGUgQnV0dG9uXG5AbWl4aW4gYnV0dG9uc3R5bGUoJHR5cGUsICRiLWNvbG9yLCAkdC1zaXplLCAkcGFkKSB7XG4gIC8vIEdyYXlzY2FsZSBidXR0b25cbiAgQGlmICR0eXBlID09IHNpbXBsZSBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgc2ltcGxlKCRiLWNvbG9yLCB0cnVlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIEBpZiAkdHlwZSA9PSBzaGlueSBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgc2hpbnkoJGItY29sb3IsIHRydWUsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGlmICR0eXBlID09IHBpbGwgYW5kICRiLWNvbG9yID09IGdyYXlzY2FsZSgkYi1jb2xvcikge1xuICAgIEBpbmNsdWRlIHBpbGwoJGItY29sb3IsIHRydWUsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGlmICR0eXBlID09IGZsYXQgYW5kICRiLWNvbG9yID09IGdyYXlzY2FsZSgkYi1jb2xvcikge1xuICAgIEBpbmNsdWRlIGZsYXQoJGItY29sb3IsIHRydWUsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgLy8gQ29sb3JlZCBidXR0b25cbiAgQGlmICR0eXBlID09IHNpbXBsZSB7XG4gICAgQGluY2x1ZGUgc2ltcGxlKCRiLWNvbG9yLCBmYWxzZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAZWxzZSBpZiAkdHlwZSA9PSBzaGlueSB7XG4gICAgQGluY2x1ZGUgc2hpbnkoJGItY29sb3IsIGZhbHNlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIEBlbHNlIGlmICR0eXBlID09IHBpbGwge1xuICAgIEBpbmNsdWRlIHBpbGwoJGItY29sb3IsIGZhbHNlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIEBlbHNlIGlmICR0eXBlID09IGZsYXQge1xuICAgIEBpbmNsdWRlIGZsYXQoJGItY29sb3IsIGZhbHNlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxufVxuXG4vLyBTaW1wbGUgQnV0dG9uXG5AbWl4aW4gc2ltcGxlKCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcbiAgJGJvcmRlcjogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA5JSwgICRsaWdodG5lc3M6IC0xNCUpO1xuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogLTglLCAgJGxpZ2h0bmVzczogIDE1JSk7XG4gICRzdG9wLWdyYWRpZW50OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAgOSUsICAkbGlnaHRuZXNzOiAtMTElKTtcbiAgJHRleHQtc2hhZG93OiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICAxNSUsICRsaWdodG5lc3M6IC0xOCUpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcbiAgfVxuXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICRib3JkZXI6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlcik7XG4gICAgJGluc2V0LXNoYWRvdzogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93KTtcbiAgICAkc3RvcC1ncmFkaWVudDogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50KTtcbiAgICAkdGV4dC1zaGFkb3c6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdyk7XG4gIH1cblxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvciwgJHN0b3AtZ3JhZGllbnQpO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXNoYWRvdzogMCAxcHggMCAkdGV4dC1zaGFkb3c7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG5cbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC00JSwgJGxpZ2h0bmVzczogLTUlKTtcbiAgICAkaW5zZXQtc2hhZG93LWhvdmVyOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogLTclLCAkbGlnaHRuZXNzOiAgNSUpO1xuICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAgOCUsICRsaWdodG5lc3M6IC0xNCUpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgZ3JheXNjYWxlKCRiYXNlLWNvbG9yLWhvdmVyKTtcbiAgICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1ob3Zlcik7XG4gICAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLWhvdmVyLCAkc3RvcC1ncmFkaWVudC1ob3Zlcik7XG5cbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdy1ob3ZlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSxcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XG4gICAgJGJvcmRlci1hY3RpdmU6ICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDklLCAkbGlnaHRuZXNzOiAtMTQlKTtcbiAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogNyUsICRsaWdodG5lc3M6IC0xNyUpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgZ3JheXNjYWxlKCRib3JkZXItYWN0aXZlKTtcbiAgICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1hY3RpdmUpO1xuICAgIH1cblxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItYWN0aXZlO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCA4cHggNHB4ICRpbnNldC1zaGFkb3ctYWN0aXZlLCBpbnNldCAwIDAgOHB4IDRweCAkaW5zZXQtc2hhZG93LWFjdGl2ZTtcbiAgfVxufVxuXG4vLyBTaGlueSBCdXR0b25cbkBtaXhpbiBzaGlueSgkYmFzZS1jb2xvciwgJGdyYXlzY2FsZTogZmFsc2UsICR0ZXh0c2l6ZTogaW5oZXJpdCwgJHBhZGRpbmc6IDdweCAxOHB4KSB7XG4gICRjb2xvcjogICAgICAgICBoc2woMCwgMCwgMTAwJSk7XG4gICRib3JkZXI6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMTcsICRncmVlbjogLTExMSwgJGJsdWU6IC04MSk7XG4gICRib3JkZXItYm90dG9tOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMjYsICRncmVlbjogLTEyNywgJGJsdWU6IC0xMjIpO1xuICAkZm91cnRoLXN0b3A6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNzksICAkZ3JlZW46IC03MCwgICRibHVlOiAtNDYpO1xuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAgMzcsICAkZ3JlZW46ICAyOSwgICRibHVlOiAgMTIpO1xuICAkc2Vjb25kLXN0b3A6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNTYsICAkZ3JlZW46IC01MCwgICRibHVlOiAtMzMpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTQwLCAkZ3JlZW46IC0xNDEsICRibHVlOiAtMTE0KTtcbiAgJHRoaXJkLXN0b3A6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTg2LCAgJGdyZWVuOiAtNzUsICAkYmx1ZTogLTQ4KTtcblxuICBAaWYgaXMtbGlnaHQoJGJhc2UtY29sb3IpIHtcbiAgICAkY29sb3I6ICAgICAgIGhzbCgwLCAwLCAyMCUpO1xuICAgICR0ZXh0LXNoYWRvdzogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogMTAlLCAkbGlnaHRuZXNzOiA0JSk7XG4gIH1cblxuICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAkYm9yZGVyOiAgICAgICAgZ3JheXNjYWxlKCRib3JkZXIpO1xuICAgICRib3JkZXItYm90dG9tOiBncmF5c2NhbGUoJGJvcmRlci1ib3R0b20pO1xuICAgICRmb3VydGgtc3RvcDogICBncmF5c2NhbGUoJGZvdXJ0aC1zdG9wKTtcbiAgICAkaW5zZXQtc2hhZG93OiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3cpO1xuICAgICRzZWNvbmQtc3RvcDogICBncmF5c2NhbGUoJHNlY29uZC1zdG9wKTtcbiAgICAkdGV4dC1zaGFkb3c6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdyk7XG4gICAgJHRoaXJkLXN0b3A6ICAgIGdyYXlzY2FsZSgkdGhpcmQtc3RvcCk7XG4gIH1cblxuICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQodG9wLCAkYmFzZS1jb2xvciAwJSwgJHNlY29uZC1zdG9wIDUwJSwgJHRoaXJkLXN0b3AgNTAlLCAkZm91cnRoLXN0b3AgMTAwJSk7XG5cbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlcjtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItYm90dG9tO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3c7XG5cbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgJGZpcnN0LXN0b3AtaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMywgJGdyZWVuOiAtMTUsICRibHVlOiAtMTgpO1xuICAgICRzZWNvbmQtc3RvcC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNjYsICRncmVlbjogLTYyLCAkYmx1ZTogLTUxKTtcbiAgICAkdGhpcmQtc3RvcC1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTkzLCAkZ3JlZW46IC04NSwgJGJsdWU6IC02Nik7XG4gICAgJGZvdXJ0aC1zdG9wLWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC04NiwgJGdyZWVuOiAtODAsICRibHVlOiAtNjMpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkZmlyc3Qtc3RvcC1ob3ZlcjogIGdyYXlzY2FsZSgkZmlyc3Qtc3RvcC1ob3Zlcik7XG4gICAgICAkc2Vjb25kLXN0b3AtaG92ZXI6IGdyYXlzY2FsZSgkc2Vjb25kLXN0b3AtaG92ZXIpO1xuICAgICAgJHRoaXJkLXN0b3AtaG92ZXI6ICBncmF5c2NhbGUoJHRoaXJkLXN0b3AtaG92ZXIpO1xuICAgICAgJGZvdXJ0aC1zdG9wLWhvdmVyOiBncmF5c2NhbGUoJGZvdXJ0aC1zdG9wLWhvdmVyKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQodG9wLCAkZmlyc3Qtc3RvcC1ob3ZlciAgMCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlY29uZC1zdG9wLWhvdmVyIDUwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcmQtc3RvcC1ob3ZlciAgNTAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmb3VydGgtc3RvcC1ob3ZlciAxMDAlKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSxcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XG4gICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTExMSwgJGdyZWVuOiAtMTE2LCAkYmx1ZTogLTEyMik7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1hY3RpdmUpO1xuICAgIH1cblxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAyMHB4IDAgJGluc2V0LXNoYWRvdy1hY3RpdmU7XG4gIH1cbn1cblxuLy8gUGlsbCBCdXR0b25cbkBtaXhpbiBwaWxsKCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcbiAgJGJvcmRlci1ib3R0b206IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDgsICRzYXR1cmF0aW9uOiAtMTElLCAkbGlnaHRuZXNzOiAtMjYlKTtcbiAgJGJvcmRlci1zaWRlczogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDQsICRzYXR1cmF0aW9uOiAtMjElLCAkbGlnaHRuZXNzOiAtMjElKTtcbiAgJGJvcmRlci10b3A6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMzAlLCAkbGlnaHRuZXNzOiAtMTUlKTtcbiAgJGluc2V0LXNoYWRvdzogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMSUsICAkbGlnaHRuZXNzOiAgNyUpO1xuICAkc3RvcC1ncmFkaWVudDogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246ICAxNCUsICRsaWdodG5lc3M6IC0xMCUpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNSwgJHNhdHVyYXRpb246IC0xOSUsICRsaWdodG5lc3M6IC0xNSUpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcbiAgfVxuXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICRib3JkZXItYm90dG9tOiBncmF5c2NhbGUoJGJvcmRlci1ib3R0b20pO1xuICAgICRib3JkZXItc2lkZXM6ICBncmF5c2NhbGUoJGJvcmRlci1zaWRlcyk7XG4gICAgJGJvcmRlci10b3A6ICAgIGdyYXlzY2FsZSgkYm9yZGVyLXRvcCk7XG4gICAgJGluc2V0LXNoYWRvdzogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93KTtcbiAgICAkc3RvcC1ncmFkaWVudDogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50KTtcbiAgICAkdGV4dC1zaGFkb3c6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdyk7XG4gIH1cblxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLXRvcDtcbiAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLXRvcCAkYm9yZGVyLXNpZGVzICRib3JkZXItYm90dG9tO1xuICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdztcbiAgY29sb3I6ICRjb2xvcjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6ICR0ZXh0c2l6ZTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3IsICRzdG9wLWdyYWRpZW50KTtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3c7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG5cbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaWdodG5lc3M6IC00LjUlKTtcbiAgICAkYm9yZGVyLWJvdHRvbTogICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246ICAxMy41JSwgJGxpZ2h0bmVzczogLTMyJSk7XG4gICAgJGJvcmRlci1zaWRlczogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDQsICRzYXR1cmF0aW9uOiAtMiUsICAgICRsaWdodG5lc3M6IC0yNyUpO1xuICAgICRib3JkZXItdG9wOiAgICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IC0xLCAkc2F0dXJhdGlvbjogLTE3JSwgICAkbGlnaHRuZXNzOiAtMjElKTtcbiAgICAkaW5zZXQtc2hhZG93LWhvdmVyOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAgICAgICAgICAgJHNhdHVyYXRpb246IC0xJSwgICAgJGxpZ2h0bmVzczogIDMlKTtcbiAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246IC00JSwgICAgJGxpZ2h0bmVzczogLTE1LjUlKTtcbiAgICAkdGV4dC1zaGFkb3ctaG92ZXI6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNSwgJHNhdHVyYXRpb246IC01JSwgICAgJGxpZ2h0bmVzczogLTIyJSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xuICAgICAgJGJvcmRlci1ib3R0b206ICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbSk7XG4gICAgICAkYm9yZGVyLXNpZGVzOiAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItc2lkZXMpO1xuICAgICAgJGJvcmRlci10b3A6ICAgICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLXRvcCk7XG4gICAgICAkaW5zZXQtc2hhZG93LWhvdmVyOiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctaG92ZXIpO1xuICAgICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGdyYXlzY2FsZSgkc3RvcC1ncmFkaWVudC1ob3Zlcik7XG4gICAgICAkdGV4dC1zaGFkb3ctaG92ZXI6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdy1ob3Zlcik7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvci1ob3ZlciwgJHN0b3AtZ3JhZGllbnQtaG92ZXIpO1xuXG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLXRvcDtcbiAgICBib3JkZXItY29sb3I6ICRib3JkZXItdG9wICRib3JkZXItc2lkZXMgJGJvcmRlci1ib3R0b207XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3ctaG92ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdy1ob3ZlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYWN0aXZlLWNvbG9yOiAgICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNCwgICRzYXR1cmF0aW9uOiAtMTIlLCAgJGxpZ2h0bmVzczogLTEwJSk7XG4gICAgJGJvcmRlci1hY3RpdmU6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDYsICAkc2F0dXJhdGlvbjogLTIuNSUsICRsaWdodG5lc3M6IC0zMCUpO1xuICAgICRib3JkZXItYm90dG9tLWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAxMSwgJHNhdHVyYXRpb246ICA2JSwgICAkbGlnaHRuZXNzOiAtMzElKTtcbiAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogOSwgICRzYXR1cmF0aW9uOiAgMiUsICAgJGxpZ2h0bmVzczogLTIxLjUlKTtcbiAgICAkdGV4dC1zaGFkb3ctYWN0aXZlOiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNSwgICRzYXR1cmF0aW9uOiAtMTIlLCAgJGxpZ2h0bmVzczogLTIxLjUlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGFjdGl2ZS1jb2xvcjogICAgICAgICBncmF5c2NhbGUoJGFjdGl2ZS1jb2xvcik7XG4gICAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLWFjdGl2ZSk7XG4gICAgICAkYm9yZGVyLWJvdHRvbS1hY3RpdmU6IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbS1hY3RpdmUpO1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1hY3RpdmUpO1xuICAgICAgJHRleHQtc2hhZG93LWFjdGl2ZTogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZDogJGFjdGl2ZS1jb2xvcjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWFjdGl2ZTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1ib3R0b20tYWN0aXZlO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCA2cHggM3B4ICRpbnNldC1zaGFkb3ctYWN0aXZlO1xuICAgIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdy1hY3RpdmU7XG4gIH1cbn1cblxuLy8gRmxhdCBCdXR0b25cbkBtaXhpbiBmbGF0KCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcblxuICBAaWYgaXMtbGlnaHQoJGJhc2UtY29sb3IpIHtcbiAgICAkY29sb3I6ICAgICAgIGhzbCgwLCAwLCAyMCUpO1xuICB9XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhc2UtY29sb3I7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYm9yZGVyOiAwO1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe1xuICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA0JSwgJGxpZ2h0bmVzczogNSUpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkYmFzZS1jb2xvci1ob3ZlcjogZ3JheXNjYWxlKCRiYXNlLWNvbG9yLWhvdmVyKTtcbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvci1ob3ZlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSxcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XG4gICAgJGJhc2UtY29sb3ItYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtNCUsICRsaWdodG5lc3M6IC01JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRiYXNlLWNvbG9yLWFjdGl2ZTogZ3JheXNjYWxlKCRiYXNlLWNvbG9yLWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhc2UtY29sb3ItYWN0aXZlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG4vLyBGbGV4aWJsZSBncmlkXG5AZnVuY3Rpb24gZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnM6ICRmZy1tYXgtY29sdW1ucykge1xuICAkd2lkdGg6ICRjb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkd2lkdGggLyAkY29udGFpbmVyLXdpZHRoKTtcblxuICBAd2FybiBcIlRoZSBmbGV4LWdyaWQgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xufVxuXG4vLyBGbGV4aWJsZSBndXR0ZXJcbkBmdW5jdGlvbiBmbGV4LWd1dHRlcigkY29udGFpbmVyLWNvbHVtbnM6ICRmZy1tYXgtY29sdW1ucywgJGd1dHRlcjogJGZnLWd1dHRlcikge1xuICAkY29udGFpbmVyLXdpZHRoOiAkY29udGFpbmVyLWNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb250YWluZXItY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgQHJldHVybiBwZXJjZW50YWdlKCRndXR0ZXIgLyAkY29udGFpbmVyLXdpZHRoKTtcblxuICBAd2FybiBcIlRoZSBmbGV4LWd1dHRlciBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XG59XG5cbkBmdW5jdGlvbiBncmlkLXdpZHRoKCRuKSB7XG4gIEByZXR1cm4gJG4gKiAkZ3ctY29sdW1uICsgKCRuIC0gMSkgKiAkZ3ctZ3V0dGVyO1xuXG4gIEB3YXJuIFwiVGhlIGdyaWQtd2lkdGggZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xufVxuXG5AZnVuY3Rpb24gZ29sZGVuLXJhdGlvKCR2YWx1ZSwgJGluY3JlbWVudCkge1xuICBAcmV0dXJuIG1vZHVsYXItc2NhbGUoJGluY3JlbWVudCwgJHZhbHVlLCAkcmF0aW86ICRnb2xkZW4pO1xuXG4gIEB3YXJuIFwiVGhlIGdvbGRlbi1yYXRpbyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlLiBQbGVhc2UgdXNlIHRoZSBtb2R1bGFyLXNjYWxlIGZ1bmN0aW9uLCBpbnN0ZWFkLlwiO1xufVxuXG5AbWl4aW4gYm94LXNpemluZygkYm94KSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1zaXppbmcsICRib3gsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgQHdhcm4gXCJUaGUgYm94LXNpemluZyBtaXhpbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlLiBUaGlzIHByb3BlcnR5IGNhbiBub3cgYmUgdXNlZCB1bi1wcmVmaXhlZC5cIjtcbn1cbiIsIi8vIFV0aWxpdHkgQ29sb3IgQ2xhc3Nlc1xuXG4vLy5zdWNjZXNzIHtcbi8vXG4vL31cblxuLy8gR29vZ2xlIENvbG9yIFBhbGV0dGUgZGVmaW5lZDogaHR0cDovL3d3dy5nb29nbGUuY29tL2Rlc2lnbi9zcGVjL3N0eWxlL2NvbG9yLmh0bWxcblxuXG4kbWF0ZXJpYWxpemUtcmVkOiAoXG4gIFwibGlnaHRlbi01XCI6ICAjZmRlYWViLFxuICBcImxpZ2h0ZW4tNFwiOiAgI2Y4YzFjMyxcbiAgXCJsaWdodGVuLTNcIjogICNmMzk4OWIsXG4gIFwibGlnaHRlbi0yXCI6ICAjZWU2ZTczLFxuICBcImxpZ2h0ZW4tMVwiOiAgI2VhNDU0YixcbiAgXCJiYXNlXCI6ICAgICAgICNlNTFjMjMsXG4gIFwiZGFya2VuLTFcIjogICAjZDAxODFlLFxuICBcImRhcmtlbi0yXCI6ICAgI2I5MTUxYixcbiAgXCJkYXJrZW4tM1wiOiAgICNhMjEzMTgsXG4gIFwiZGFya2VuLTRcIjogICAjOGIxMDE0LFxuKTtcblxuJHJlZDogKFxuICBcImxpZ2h0ZW4tNVwiOiAgI0ZGRUJFRSxcbiAgXCJsaWdodGVuLTRcIjogICNGRkNERDIsXG4gIFwibGlnaHRlbi0zXCI6ICAjRUY5QTlBLFxuICBcImxpZ2h0ZW4tMlwiOiAgI0U1NzM3MyxcbiAgXCJsaWdodGVuLTFcIjogICNFRjUzNTAsXG4gIFwiYmFzZVwiOiAgICAgICAjRjQ0MzM2LFxuICBcImRhcmtlbi0xXCI6ICAgI0U1MzkzNSxcbiAgXCJkYXJrZW4tMlwiOiAgICNEMzJGMkYsXG4gIFwiZGFya2VuLTNcIjogICAjQzYyODI4LFxuICBcImRhcmtlbi00XCI6ICAgI0I3MUMxQyxcbiAgXCJhY2NlbnQtMVwiOiAgICAjRkY4QTgwLFxuICBcImFjY2VudC0yXCI6ICAgICNGRjUyNTIsXG4gIFwiYWNjZW50LTNcIjogICAgI0ZGMTc0NCxcbiAgXCJhY2NlbnQtNFwiOiAgICAjRDUwMDAwXG4pO1xuXG4kcGluazogKFxuICBcImxpZ2h0ZW4tNVwiOiAgI2ZjZTRlYyxcbiAgXCJsaWdodGVuLTRcIjogICNmOGJiZDAsXG4gIFwibGlnaHRlbi0zXCI6ICAjZjQ4ZmIxLFxuICBcImxpZ2h0ZW4tMlwiOiAgI2YwNjI5MixcbiAgXCJsaWdodGVuLTFcIjogICNlYzQwN2EsXG4gIFwiYmFzZVwiOiAgICAgICAjZTkxZTYzLFxuICBcImRhcmtlbi0xXCI6ICAgI2Q4MWI2MCxcbiAgXCJkYXJrZW4tMlwiOiAgICNjMjE4NWIsXG4gIFwiZGFya2VuLTNcIjogICAjYWQxNDU3LFxuICBcImRhcmtlbi00XCI6ICAgIzg4MGU0ZixcbiAgXCJhY2NlbnQtMVwiOiAgICAjZmY4MGFiLFxuICBcImFjY2VudC0yXCI6ICAgICNmZjQwODEsXG4gIFwiYWNjZW50LTNcIjogICAgI2Y1MDA1NyxcbiAgXCJhY2NlbnQtNFwiOiAgICAjYzUxMTYyXG4pO1xuXG4kcHVycGxlOiAoXG4gIFwibGlnaHRlbi01XCI6ICAjZjNlNWY1LFxuICBcImxpZ2h0ZW4tNFwiOiAgI2UxYmVlNyxcbiAgXCJsaWdodGVuLTNcIjogICNjZTkzZDgsXG4gIFwibGlnaHRlbi0yXCI6ICAjYmE2OGM4LFxuICBcImxpZ2h0ZW4tMVwiOiAgI2FiNDdiYyxcbiAgXCJiYXNlXCI6ICAgICAgICM5YzI3YjAsXG4gIFwiZGFya2VuLTFcIjogICAjOGUyNGFhLFxuICBcImRhcmtlbi0yXCI6ICAgIzdiMWZhMixcbiAgXCJkYXJrZW4tM1wiOiAgICM2YTFiOWEsXG4gIFwiZGFya2VuLTRcIjogICAjNGExNDhjLFxuICBcImFjY2VudC0xXCI6ICAgICNlYTgwZmMsXG4gIFwiYWNjZW50LTJcIjogICAgI2UwNDBmYixcbiAgXCJhY2NlbnQtM1wiOiAgICAjZDUwMGY5LFxuICBcImFjY2VudC00XCI6ICAgICNhYTAwZmZcbik7XG5cbiRkZWVwLXB1cnBsZTogKFxuICBcImxpZ2h0ZW4tNVwiOiAgI2VkZTdmNixcbiAgXCJsaWdodGVuLTRcIjogICNkMWM0ZTksXG4gIFwibGlnaHRlbi0zXCI6ICAjYjM5ZGRiLFxuICBcImxpZ2h0ZW4tMlwiOiAgIzk1NzVjZCxcbiAgXCJsaWdodGVuLTFcIjogICM3ZTU3YzIsXG4gIFwiYmFzZVwiOiAgICAgICAjNjczYWI3LFxuICBcImRhcmtlbi0xXCI6ICAgIzVlMzViMSxcbiAgXCJkYXJrZW4tMlwiOiAgICM1MTJkYTgsXG4gIFwiZGFya2VuLTNcIjogICAjNDUyN2EwLFxuICBcImRhcmtlbi00XCI6ICAgIzMxMWI5MixcbiAgXCJhY2NlbnQtMVwiOiAgICAjYjM4OGZmLFxuICBcImFjY2VudC0yXCI6ICAgICM3YzRkZmYsXG4gIFwiYWNjZW50LTNcIjogICAgIzY1MWZmZixcbiAgXCJhY2NlbnQtNFwiOiAgICAjNjIwMGVhXG4pO1xuXG4kaW5kaWdvOiAoXG4gIFwibGlnaHRlbi01XCI6ICAjZThlYWY2LFxuICBcImxpZ2h0ZW4tNFwiOiAgI2M1Y2FlOSxcbiAgXCJsaWdodGVuLTNcIjogICM5ZmE4ZGEsXG4gIFwibGlnaHRlbi0yXCI6ICAjNzk4NmNiLFxuICBcImxpZ2h0ZW4tMVwiOiAgIzVjNmJjMCxcbiAgXCJiYXNlXCI6ICAgICAgICMzZjUxYjUsXG4gIFwiZGFya2VuLTFcIjogICAjMzk0OWFiLFxuICBcImRhcmtlbi0yXCI6ICAgIzMwM2Y5ZixcbiAgXCJkYXJrZW4tM1wiOiAgICMyODM1OTMsXG4gIFwiZGFya2VuLTRcIjogICAjMWEyMzdlLFxuICBcImFjY2VudC0xXCI6ICAgICM4YzllZmYsXG4gIFwiYWNjZW50LTJcIjogICAgIzUzNmRmZSxcbiAgXCJhY2NlbnQtM1wiOiAgICAjM2Q1YWZlLFxuICBcImFjY2VudC00XCI6ICAgICMzMDRmZmVcbik7XG5cbiRibHVlOiAoXG4gIFwibGlnaHRlbi01XCI6ICAjRTNGMkZELFxuICBcImxpZ2h0ZW4tNFwiOiAgI0JCREVGQixcbiAgXCJsaWdodGVuLTNcIjogICM5MENBRjksXG4gIFwibGlnaHRlbi0yXCI6ICAjNjRCNUY2LFxuICBcImxpZ2h0ZW4tMVwiOiAgIzQyQTVGNSxcbiAgXCJiYXNlXCI6ICAgICAgICMyMTk2RjMsXG4gIFwiZGFya2VuLTFcIjogICAjMUU4OEU1LFxuICBcImRhcmtlbi0yXCI6ICAgIzE5NzZEMixcbiAgXCJkYXJrZW4tM1wiOiAgICMxNTY1QzAsXG4gIFwiZGFya2VuLTRcIjogICAjMEQ0N0ExLFxuICBcImFjY2VudC0xXCI6ICAgICM4MkIxRkYsXG4gIFwiYWNjZW50LTJcIjogICAgIzQ0OEFGRixcbiAgXCJhY2NlbnQtM1wiOiAgICAjMjk3OUZGLFxuICBcImFjY2VudC00XCI6ICAgICMyOTYyRkZcbik7XG5cbiRsaWdodC1ibHVlOiAoXG4gIFwibGlnaHRlbi01XCI6ICAjZTFmNWZlLFxuICBcImxpZ2h0ZW4tNFwiOiAgI2IzZTVmYyxcbiAgXCJsaWdodGVuLTNcIjogICM4MWQ0ZmEsXG4gIFwibGlnaHRlbi0yXCI6ICAjNGZjM2Y3LFxuICBcImxpZ2h0ZW4tMVwiOiAgIzI5YjZmNixcbiAgXCJiYXNlXCI6ICAgICAgICMwM2E5ZjQsXG4gIFwiZGFya2VuLTFcIjogICAjMDM5YmU1LFxuICBcImRhcmtlbi0yXCI6ICAgIzAyODhkMSxcbiAgXCJkYXJrZW4tM1wiOiAgICMwMjc3YmQsXG4gIFwiZGFya2VuLTRcIjogICAjMDE1NzliLFxuICBcImFjY2VudC0xXCI6ICAgICM4MGQ4ZmYsXG4gIFwiYWNjZW50LTJcIjogICAgIzQwYzRmZixcbiAgXCJhY2NlbnQtM1wiOiAgICAjMDBiMGZmLFxuICBcImFjY2VudC00XCI6ICAgICMwMDkxZWFcbik7XG5cbiRjeWFuOiAoXG4gIFwibGlnaHRlbi01XCI6ICAjZTBmN2ZhLFxuICBcImxpZ2h0ZW4tNFwiOiAgI2IyZWJmMixcbiAgXCJsaWdodGVuLTNcIjogICM4MGRlZWEsXG4gIFwibGlnaHRlbi0yXCI6ICAjNGRkMGUxLFxuICBcImxpZ2h0ZW4tMVwiOiAgIzI2YzZkYSxcbiAgXCJiYXNlXCI6ICAgICAgICMwMGJjZDQsXG4gIFwiZGFya2VuLTFcIjogICAjMDBhY2MxLFxuICBcImRhcmtlbi0yXCI6ICAgIzAwOTdhNyxcbiAgXCJkYXJrZW4tM1wiOiAgICMwMDgzOGYsXG4gIFwiZGFya2VuLTRcIjogICAjMDA2MDY0LFxuICBcImFjY2VudC0xXCI6ICAgICM4NGZmZmYsXG4gIFwiYWNjZW50LTJcIjogICAgIzE4ZmZmZixcbiAgXCJhY2NlbnQtM1wiOiAgICAjMDBlNWZmLFxuICBcImFjY2VudC00XCI6ICAgICMwMGI4ZDRcbik7XG5cbiR0ZWFsOiAoXG4gIFwibGlnaHRlbi01XCI6ICAjZTBmMmYxLFxuICBcImxpZ2h0ZW4tNFwiOiAgI2IyZGZkYixcbiAgXCJsaWdodGVuLTNcIjogICM4MGNiYzQsXG4gIFwibGlnaHRlbi0yXCI6ICAjNGRiNmFjLFxuICBcImxpZ2h0ZW4tMVwiOiAgIzI2YTY5YSxcbiAgXCJiYXNlXCI6ICAgICAgICMwMDk2ODgsXG4gIFwiZGFya2VuLTFcIjogICAjMDA4OTdiLFxuICBcImRhcmtlbi0yXCI6ICAgIzAwNzk2YixcbiAgXCJkYXJrZW4tM1wiOiAgICMwMDY5NWMsXG4gIFwiZGFya2VuLTRcIjogICAjMDA0ZDQwLFxuICBcImFjY2VudC0xXCI6ICAgICNhN2ZmZWIsXG4gIFwiYWNjZW50LTJcIjogICAgIzY0ZmZkYSxcbiAgXCJhY2NlbnQtM1wiOiAgICAjMWRlOWI2LFxuICBcImFjY2VudC00XCI6ICAgICMwMGJmYTVcbik7XG5cbiRncmVlbjogKFxuICBcImxpZ2h0ZW4tNVwiOiAgI0U4RjVFOSxcbiAgXCJsaWdodGVuLTRcIjogICNDOEU2QzksXG4gIFwibGlnaHRlbi0zXCI6ICAjQTVENkE3LFxuICBcImxpZ2h0ZW4tMlwiOiAgIzgxQzc4NCxcbiAgXCJsaWdodGVuLTFcIjogICM2NkJCNkEsXG4gIFwiYmFzZVwiOiAgICAgICAjNENBRjUwLFxuICBcImRhcmtlbi0xXCI6ICAgIzQzQTA0NyxcbiAgXCJkYXJrZW4tMlwiOiAgICMzODhFM0MsXG4gIFwiZGFya2VuLTNcIjogICAjMkU3RDMyLFxuICBcImRhcmtlbi00XCI6ICAgIzFCNUUyMCxcbiAgXCJhY2NlbnQtMVwiOiAgICAjQjlGNkNBLFxuICBcImFjY2VudC0yXCI6ICAgICM2OUYwQUUsXG4gIFwiYWNjZW50LTNcIjogICAgIzAwRTY3NixcbiAgXCJhY2NlbnQtNFwiOiAgICAjMDBDODUzXG4pO1xuXG4kbGlnaHQtZ3JlZW46IChcbiAgXCJsaWdodGVuLTVcIjogICNmMWY4ZTksXG4gIFwibGlnaHRlbi00XCI6ICAjZGNlZGM4LFxuICBcImxpZ2h0ZW4tM1wiOiAgI2M1ZTFhNSxcbiAgXCJsaWdodGVuLTJcIjogICNhZWQ1ODEsXG4gIFwibGlnaHRlbi0xXCI6ICAjOWNjYzY1LFxuICBcImJhc2VcIjogICAgICAgIzhiYzM0YSxcbiAgXCJkYXJrZW4tMVwiOiAgICM3Y2IzNDIsXG4gIFwiZGFya2VuLTJcIjogICAjNjg5ZjM4LFxuICBcImRhcmtlbi0zXCI6ICAgIzU1OGIyZixcbiAgXCJkYXJrZW4tNFwiOiAgICMzMzY5MWUsXG4gIFwiYWNjZW50LTFcIjogICAgI2NjZmY5MCxcbiAgXCJhY2NlbnQtMlwiOiAgICAjYjJmZjU5LFxuICBcImFjY2VudC0zXCI6ICAgICM3NmZmMDMsXG4gIFwiYWNjZW50LTRcIjogICAgIzY0ZGQxN1xuKTtcblxuJGxpbWU6IChcbiAgXCJsaWdodGVuLTVcIjogICNmOWZiZTcsXG4gIFwibGlnaHRlbi00XCI6ICAjZjBmNGMzLFxuICBcImxpZ2h0ZW4tM1wiOiAgI2U2ZWU5YyxcbiAgXCJsaWdodGVuLTJcIjogICNkY2U3NzUsXG4gIFwibGlnaHRlbi0xXCI6ICAjZDRlMTU3LFxuICBcImJhc2VcIjogICAgICAgI2NkZGMzOSxcbiAgXCJkYXJrZW4tMVwiOiAgICNjMGNhMzMsXG4gIFwiZGFya2VuLTJcIjogICAjYWZiNDJiLFxuICBcImRhcmtlbi0zXCI6ICAgIzllOWQyNCxcbiAgXCJkYXJrZW4tNFwiOiAgICM4Mjc3MTcsXG4gIFwiYWNjZW50LTFcIjogICAgI2Y0ZmY4MSxcbiAgXCJhY2NlbnQtMlwiOiAgICAjZWVmZjQxLFxuICBcImFjY2VudC0zXCI6ICAgICNjNmZmMDAsXG4gIFwiYWNjZW50LTRcIjogICAgI2FlZWEwMFxuKTtcblxuJHllbGxvdzogKFxuICBcImxpZ2h0ZW4tNVwiOiAgI2ZmZmRlNyxcbiAgXCJsaWdodGVuLTRcIjogICNmZmY5YzQsXG4gIFwibGlnaHRlbi0zXCI6ICAjZmZmNTlkLFxuICBcImxpZ2h0ZW4tMlwiOiAgI2ZmZjE3NixcbiAgXCJsaWdodGVuLTFcIjogICNmZmVlNTgsXG4gIFwiYmFzZVwiOiAgICAgICAjZmZlYjNiLFxuICBcImRhcmtlbi0xXCI6ICAgI2ZkZDgzNSxcbiAgXCJkYXJrZW4tMlwiOiAgICNmYmMwMmQsXG4gIFwiZGFya2VuLTNcIjogICAjZjlhODI1LFxuICBcImRhcmtlbi00XCI6ICAgI2Y1N2YxNyxcbiAgXCJhY2NlbnQtMVwiOiAgICAjZmZmZjhkLFxuICBcImFjY2VudC0yXCI6ICAgICNmZmZmMDAsXG4gIFwiYWNjZW50LTNcIjogICAgI2ZmZWEwMCxcbiAgXCJhY2NlbnQtNFwiOiAgICAjZmZkNjAwXG4pO1xuXG4kYW1iZXI6IChcbiAgXCJsaWdodGVuLTVcIjogICNmZmY4ZTEsXG4gIFwibGlnaHRlbi00XCI6ICAjZmZlY2IzLFxuICBcImxpZ2h0ZW4tM1wiOiAgI2ZmZTA4MixcbiAgXCJsaWdodGVuLTJcIjogICNmZmQ1NGYsXG4gIFwibGlnaHRlbi0xXCI6ICAjZmZjYTI4LFxuICBcImJhc2VcIjogICAgICAgI2ZmYzEwNyxcbiAgXCJkYXJrZW4tMVwiOiAgICNmZmIzMDAsXG4gIFwiZGFya2VuLTJcIjogICAjZmZhMDAwLFxuICBcImRhcmtlbi0zXCI6ICAgI2ZmOGYwMCxcbiAgXCJkYXJrZW4tNFwiOiAgICNmZjZmMDAsXG4gIFwiYWNjZW50LTFcIjogICAgI2ZmZTU3ZixcbiAgXCJhY2NlbnQtMlwiOiAgICAjZmZkNzQwLFxuICBcImFjY2VudC0zXCI6ICAgICNmZmM0MDAsXG4gIFwiYWNjZW50LTRcIjogICAgI2ZmYWIwMFxuKTtcblxuJG9yYW5nZTogKFxuICBcImxpZ2h0ZW4tNVwiOiAgI2ZmZjNlMCxcbiAgXCJsaWdodGVuLTRcIjogICNmZmUwYjIsXG4gIFwibGlnaHRlbi0zXCI6ICAjZmZjYzgwLFxuICBcImxpZ2h0ZW4tMlwiOiAgI2ZmYjc0ZCxcbiAgXCJsaWdodGVuLTFcIjogICNmZmE3MjYsXG4gIFwiYmFzZVwiOiAgICAgICAjZmY5ODAwLFxuICBcImRhcmtlbi0xXCI6ICAgI2ZiOGMwMCxcbiAgXCJkYXJrZW4tMlwiOiAgICNmNTdjMDAsXG4gIFwiZGFya2VuLTNcIjogICAjZWY2YzAwLFxuICBcImRhcmtlbi00XCI6ICAgI2U2NTEwMCxcbiAgXCJhY2NlbnQtMVwiOiAgICAjZmZkMTgwLFxuICBcImFjY2VudC0yXCI6ICAgICNmZmFiNDAsXG4gIFwiYWNjZW50LTNcIjogICAgI2ZmOTEwMCxcbiAgXCJhY2NlbnQtNFwiOiAgICAjZmY2ZDAwXG4pO1xuXG4kZGVlcC1vcmFuZ2U6IChcbiAgXCJsaWdodGVuLTVcIjogICNmYmU5ZTcsXG4gIFwibGlnaHRlbi00XCI6ICAjZmZjY2JjLFxuICBcImxpZ2h0ZW4tM1wiOiAgI2ZmYWI5MSxcbiAgXCJsaWdodGVuLTJcIjogICNmZjhhNjUsXG4gIFwibGlnaHRlbi0xXCI6ICAjZmY3MDQzLFxuICBcImJhc2VcIjogICAgICAgI2ZmNTcyMixcbiAgXCJkYXJrZW4tMVwiOiAgICNmNDUxMWUsXG4gIFwiZGFya2VuLTJcIjogICAjZTY0YTE5LFxuICBcImRhcmtlbi0zXCI6ICAgI2Q4NDMxNSxcbiAgXCJkYXJrZW4tNFwiOiAgICNiZjM2MGMsXG4gIFwiYWNjZW50LTFcIjogICAgI2ZmOWU4MCxcbiAgXCJhY2NlbnQtMlwiOiAgICAjZmY2ZTQwLFxuICBcImFjY2VudC0zXCI6ICAgICNmZjNkMDAsXG4gIFwiYWNjZW50LTRcIjogICAgI2RkMmMwMFxuKTtcblxuJGJyb3duOiAoXG4gIFwibGlnaHRlbi01XCI6ICAjZWZlYmU5LFxuICBcImxpZ2h0ZW4tNFwiOiAgI2Q3Y2NjOCxcbiAgXCJsaWdodGVuLTNcIjogICNiY2FhYTQsXG4gIFwibGlnaHRlbi0yXCI6ICAjYTE4ODdmLFxuICBcImxpZ2h0ZW4tMVwiOiAgIzhkNmU2MyxcbiAgXCJiYXNlXCI6ICAgICAgICM3OTU1NDgsXG4gIFwiZGFya2VuLTFcIjogICAjNmQ0YzQxLFxuICBcImRhcmtlbi0yXCI6ICAgIzVkNDAzNyxcbiAgXCJkYXJrZW4tM1wiOiAgICM0ZTM0MmUsXG4gIFwiZGFya2VuLTRcIjogICAjM2UyNzIzXG4pO1xuXG4kYmx1ZS1ncmV5OiAoXG4gIFwibGlnaHRlbi01XCI6ICAjZWNlZmYxLFxuICBcImxpZ2h0ZW4tNFwiOiAgI2NmZDhkYyxcbiAgXCJsaWdodGVuLTNcIjogICNiMGJlYzUsXG4gIFwibGlnaHRlbi0yXCI6ICAjOTBhNGFlLFxuICBcImxpZ2h0ZW4tMVwiOiAgIzc4OTA5YyxcbiAgXCJiYXNlXCI6ICAgICAgICM2MDdkOGIsXG4gIFwiZGFya2VuLTFcIjogICAjNTQ2ZTdhLFxuICBcImRhcmtlbi0yXCI6ICAgIzQ1NWE2NCxcbiAgXCJkYXJrZW4tM1wiOiAgICMzNzQ3NGYsXG4gIFwiZGFya2VuLTRcIjogICAjMjYzMjM4XG4pO1xuXG4kZ3JleTogKFxuICBcImxpZ2h0ZW4tNVwiOiAgI2ZhZmFmYSxcbiAgXCJsaWdodGVuLTRcIjogICNmNWY1ZjUsXG4gIFwibGlnaHRlbi0zXCI6ICAjZWVlZWVlLFxuICBcImxpZ2h0ZW4tMlwiOiAgI2UwZTBlMCxcbiAgXCJsaWdodGVuLTFcIjogICNiZGJkYmQsXG4gIFwiYmFzZVwiOiAgICAgICAjOWU5ZTllLFxuICBcImRhcmtlbi0xXCI6ICAgIzc1NzU3NSxcbiAgXCJkYXJrZW4tMlwiOiAgICM2MTYxNjEsXG4gIFwiZGFya2VuLTNcIjogICAjNDI0MjQyLFxuICBcImRhcmtlbi00XCI6ICAgIzIxMjEyMVxuKTtcblxuJHNoYWRlczogKFxuICBcImJsYWNrXCI6ICAgICAgICAjMDAwMDAwLFxuICBcIndoaXRlXCI6ICAgICAgICAjRkZGRkZGLFxuICBcInRyYW5zcGFyZW50XCI6ICB0cmFuc3BhcmVudFxuKTtcblxuJGNvbG9yczogKFxuICBcIm1hdGVyaWFsaXplLXJlZFwiOiAkbWF0ZXJpYWxpemUtcmVkLFxuICBcInJlZFwiOiAkcmVkLFxuICBcInBpbmtcIjogJHBpbmssXG4gIFwicHVycGxlXCI6ICRwdXJwbGUsXG4gIFwiZGVlcC1wdXJwbGVcIjogJGRlZXAtcHVycGxlLFxuICBcImluZGlnb1wiOiAkaW5kaWdvLFxuICBcImJsdWVcIjogJGJsdWUsXG4gIFwibGlnaHQtYmx1ZVwiOiAkbGlnaHQtYmx1ZSxcbiAgXCJjeWFuXCI6ICRjeWFuLFxuICBcInRlYWxcIjogJHRlYWwsXG4gIFwiZ3JlZW5cIjogJGdyZWVuLFxuICBcImxpZ2h0LWdyZWVuXCI6ICRsaWdodC1ncmVlbixcbiAgXCJsaW1lXCI6ICRsaW1lLFxuICBcInllbGxvd1wiOiAkeWVsbG93LFxuICBcImFtYmVyXCI6ICRhbWJlcixcbiAgXCJvcmFuZ2VcIjogJG9yYW5nZSxcbiAgXCJkZWVwLW9yYW5nZVwiOiAkZGVlcC1vcmFuZ2UsXG4gIFwiYnJvd25cIjogJGJyb3duLFxuICBcImJsdWUtZ3JleVwiOiAkYmx1ZS1ncmV5LFxuICBcImdyZXlcIjogJGdyZXksXG4gIFwic2hhZGVzXCI6ICRzaGFkZXNcbik7XG5cblxuLy8gQ29sb3IgQ2xhc3Nlc1xuXG4vL0BlYWNoICRjb2xvcl9uYW1lLCAkY29sb3IgaW4gJGNvbG9ycyB7XG4vLyAgQGVhY2ggJGNvbG9yX3R5cGUsICRjb2xvcl92YWx1ZSBpbiAkY29sb3Ige1xuLy8gICAgQGlmICRjb2xvcl90eXBlID09IFwiYmFzZVwiIHtcbi8vICAgICAgLiN7JGNvbG9yX25hbWV9IHtcbi8vICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JfdmFsdWUgIWltcG9ydGFudDtcbi8vICAgICAgfVxuLy8gICAgICAuI3skY29sb3JfbmFtZX0tdGV4dCB7XG4vLyAgICAgICAgY29sb3I6ICRjb2xvcl92YWx1ZSAhaW1wb3J0YW50O1xuLy8gICAgICB9XG4vLyAgICB9XG4vLyAgICBAZWxzZSB7XG4vLyAgICAgIC4jeyRjb2xvcl9uYW1lfS4jeyRjb2xvcl90eXBlfSB7XG4vLyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yX3ZhbHVlICFpbXBvcnRhbnQ7XG4vLyAgICAgIH1cbi8vICAgICAgLiN7JGNvbG9yX25hbWV9LXRleHQudGV4dC0jeyRjb2xvcl90eXBlfSB7XG4vLyAgICAgICAgY29sb3I6ICRjb2xvcl92YWx1ZSAhaW1wb3J0YW50O1xuLy8gICAgICB9XG4vLyAgICB9XG4vLyAgfVxuLy99XG5cbi8vIFNoYWRlIGNsYXNzZXNcbi8vQGVhY2ggJGNvbG9yLCAkY29sb3JfdmFsdWUgaW4gJHNoYWRlcyB7XG4vLyAgLiN7JGNvbG9yfSB7XG4vLyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JfdmFsdWUgIWltcG9ydGFudDtcbi8vICB9XG4vLyAgLiN7JGNvbG9yfS10ZXh0IHtcbi8vICAgIGNvbG9yOiAkY29sb3JfdmFsdWUgIWltcG9ydGFudDtcbi8vICB9XG4vL31cblxuXG4vLyB1c2FnZTogY29sb3IoXCJuYW1lX29mX2NvbG9yXCIsIFwidHlwZV9vZl9jb2xvclwiKVxuLy8gdG8gYXZvaWQgdG8gcmVwZWF0aW5nIG1hcC1nZXQoJGNvbG9ycywgLi4uKVxuXG5AZnVuY3Rpb24gY29sb3IoJGNvbG9yLCAkdHlwZSkge1xuICBAaWYgbWFwLWhhcy1rZXkoJGNvbG9ycywgJGNvbG9yKSB7XG4gICAgJGN1cnJfY29sb3I6IG1hcC1nZXQoJGNvbG9ycywgJGNvbG9yKTtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGN1cnJfY29sb3IsICR0eXBlKSB7XG4gICAgICBAcmV0dXJuIG1hcC1nZXQoJGN1cnJfY29sb3IsICR0eXBlKTtcbiAgICB9XG4gIH1cbiAgQHdhcm4gXCJVbmtub3duIGAje25hbWV9YCBpbiAkY29sb3JzLlwiO1xuICBAcmV0dXJuIG51bGw7XG59XG4iLCIkc21hbGwtc2NyZWVuLXVwOiA2MDFweDtcbiRtZWRpdW0tc2NyZWVuLXVwOiA5OTNweDtcbiRsYXJnZS1zY3JlZW4tdXA6IDEyMDFweDtcbiRzbWFsbC1zY3JlZW46IDYwMHB4O1xuJG1lZGl1bS1zY3JlZW46IDk5MnB4O1xuJGxhcmdlLXNjcmVlbjogMTIwMHB4O1xuXG4kbWVkaXVtLWFuZC11cDogXCJvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aCA6ICN7JHNtYWxsLXNjcmVlbi11cH0pXCI7XG4kbGFyZ2UtYW5kLXVwOiBcIm9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogI3skbWVkaXVtLXNjcmVlbi11cH0pXCI7XG4kc21hbGwtYW5kLWRvd246IFwib25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiAjeyRzbWFsbC1zY3JlZW59KVwiO1xuJG1lZGl1bS1hbmQtZG93bjogXCJvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aCA6ICN7JG1lZGl1bS1zY3JlZW59KVwiO1xuJG1lZGl1bS1vbmx5OiBcIm9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoIDogI3skc21hbGwtc2NyZWVuLXVwfSkgYW5kIChtYXgtd2lkdGggOiAjeyRtZWRpdW0tc2NyZWVufSlcIjsiLCIvLyBHbG9iYWwgY29sb3JzXG4kYmxhY2s6ICMxOTE5MTk7XG4kd2hpdGU6ICNmZmY7XG4kZ3JleTogY29sb3IoJ2dyZXknLCAnYmFzZScpO1xuJGxpZ2h0LWdyZXk6IGNvbG9yKCdncmV5JywgJ2xpZ2h0ZW4tNCcpO1xuJGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblxuLy8gVXNlZCBpbiBfbmF2LnNjc3NcbiRuYXYtaXRlbS1ib3JkZXItY29sb3I6ICdncmV5JztcblxuLy8gVXNlZCBpbiBfc29jaWFsLnNjc3NcbiRmYWNlYm9vazogIzNiNTk5ODtcbiR0d2l0dGVyOiAjNDA5OWZmO1xuJGRyaWJiYmxlOiAjYzczYjZmO1xuJGdpdGh1YjogIzk5OTtcbiR2azogIzJiNTg3YTtcbiRsaW5rZWRpbjogIzQwNzViNDtcbiRnb29nbGVwbHVzOiAjYzI0ZTQwO1xuJHBpbnRlcmVzdDogI2JkMDgxYztcblxuLy8gVXNlZCBmb3IgdG9hc3RzXG4kZXJyb3I6IGNvbG9yKCdyZWQnLCAnYWNjZW50LTInKTtcbiRzdWNjZXNzOiBjb2xvcignZ3JlZW4nLCAnYWNjZW50LTMnKTtcblxuLy8gVXNlZCBpbiBfY29udGFjdC5zY3NzXG4kaW5wdXQtYmFja2dyb3VuZDogdHJhbnNwYXJlbnRpemUoY29sb3IoJ2dyZXknLCAnYmFzZScpLCAuOSk7XG4kaW5wdXQtYmFja2dyb3VuZC1mb2N1czogdHJhbnNwYXJlbnRpemUoY29sb3IoJ2dyZXknLCAnYmFzZScpLCAuNyk7XG4iLCJodG1sLFxuYm9keSxcbi5mdWxsLWhlaWdodCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuXG5ib2R5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcblxuICAgICYubG9ja2VkIHtcbiAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgIH1cbn1cblxuLy8gVGhpcyBpcyBuZWVkZWQgdG8gaGlkZSBob3Jpem9udGFsIHNjcm9sbGJhcnMgb24gV2luZG93cyBtYWNoaW5lcyA6LShcbi5oZXJvIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLyBUeXBvZ3JhcGh5IGltcHJvdmVtZW50c1xuaDEsXG5oMixcbmgzLFxuLmJyYW5kLWxvZ28sXG4uYnV0dG9uLWNvbGxhcHNlIHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICBmb250LWtlcm5pbmc6IG5vcm1hbDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOiAnbGlnYScsICdrZXJuJztcbiAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xufVxuXG5oMiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBmb250LXNpemU6IDZyZW07XG4gICAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTJweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICBAbWVkaWEgI3skc21hbGwtYW5kLWRvd259IHtcbiAgICAgICAgZm9udC1zaXplOiAzcmVtO1xuICAgIH1cblxuICAgIHNwYW4ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDEwO1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgdG9wOiAtNHJlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMnB4O1xuICAgICAgICBtYXJnaW46IDFyZW0gYXV0byAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudGl6ZSgkZ3JleSwgMC44KTtcbiAgICAgICAgY29udGVudDogJyc7XG5cbiAgICAgICAgQG1lZGlhICN7JHNtYWxsLWFuZC1kb3dufSB7XG4gICAgICAgICAgICB0b3A6IC0zcmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgKyBoMyB7XG4gICAgICAgIG1hcmdpbi10b3A6IC0wLjc1cmVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAzcmVtO1xuICAgIH1cbn1cblxuaDMge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIEBtZWRpYSAjeyRzbWFsbC1hbmQtZG93bn0ge1xuICAgICAgICBmb250LXNpemU6IDEuOHJlbTtcbiAgICB9XG59XG5cbnNlY3Rpb24ge1xuICAgIHBhZGRpbmctYm90dG9tOiA1cmVtO1xuXG4gICAgJi5oZXJvIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgQG1lZGlhICN7JHNtYWxsLWFuZC1kb3dufSB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAzcmVtO1xuICAgIH1cbn1cblxuLm5vYnIge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5jb2xsYXBzaWJsZSB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbn1cblxuJGNvbnRhaW5lci13aWR0aDogOTAlO1xuXG4uY29udGFpbmVyIHtcbiAgICB3aWR0aDogJGNvbnRhaW5lci13aWR0aDtcbiAgICBtYXgtd2lkdGg6IDE2MDBweDtcblxuICAgIEBtZWRpYSAjeyRtZWRpdW0tYW5kLXVwfSB7XG4gICAgICAgIHdpZHRoOiAkY29udGFpbmVyLXdpZHRoO1xuICAgIH1cblxuICAgIEBtZWRpYSAjeyRsYXJnZS1hbmQtdXB9IHtcbiAgICAgICAgd2lkdGg6ICRjb250YWluZXItd2lkdGg7XG4gICAgfVxuXG4gICAgJi5mdWxsLXdpZHRoIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgJi5yb3cubmFycm93LXJvdyB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxufVxuXG4ucm93IC5jb2wucGFkZGluZy1ib3R0b20ge1xuICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW07XG59XG5cbi5leHRyYS1wYWRkaW5nIHtcbiAgICBwYWRkaW5nOiAzcmVtIDA7XG5cbiAgICBAbWVkaWEgI3skc21hbGwtYW5kLWRvd259IHtcbiAgICAgICAgcGFkZGluZzogMS41cmVtIDA7XG4gICAgfVxufVxuXG4ubm8tcGFkZGluZyB7XG4gICAgcGFkZGluZzogMDtcbn1cblxuLm1hcmdpbi10b3Age1xuICAgIG1hcmdpbi10b3A6IDNyZW07XG59XG5cbi5tYXJnaW4tdG9wLW1vcmUge1xuICAgIG1hcmdpbi10b3A6IDZyZW07XG5cbiAgICBAbWVkaWEgI3skc21hbGwtYW5kLWRvd259IHtcbiAgICAgICAgbWFyZ2luLXRvcDogM3JlbTtcbiAgICB9XG59XG5cbi5iaWctaWNvbnMtcm93IGkge1xuICAgIGZvbnQtc2l6ZTogNnJlbTtcblxuICAgIEBtZWRpYSAjeyRzbWFsbC1hbmQtZG93bn0ge1xuICAgICAgICBmb250LXNpemU6IDRyZW07XG4gICAgfVxufVxuXG5pZnJhbWUge1xuICAgIGJvcmRlcjogMDtcbn1cblxuLnByb2dyZXNzIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgei1pbmRleDogOTk5O1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRsaWdodC1ncmV5O1xuXG4gICAgLmluZGV0ZXJtaW5hdGUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleTtcbiAgICB9XG59XG5cbi53aWR0aC0tcGN0LS01IHtcbiAgICB3aWR0aDogNSUgIWltcG9ydGFudDtcbn1cblxuLndpZHRoLS1wY3QtLTEwIHtcbiAgICB3aWR0aDogMTAlICFpbXBvcnRhbnQ7XG59XG5cbi53aWR0aC0tcGN0LS0xNSB7XG4gICAgd2lkdGg6IDE1JSAhaW1wb3J0YW50O1xufVxuXG4ud2lkdGgtLXBjdC0tMjAge1xuICAgIHdpZHRoOiAyMCUgIWltcG9ydGFudDtcbn1cblxuLndpZHRoLS1wY3QtLTI1IHtcbiAgICB3aWR0aDogMjUlICFpbXBvcnRhbnQ7XG59XG5cbi53aWR0aC0tcGN0LS0zMCB7XG4gICAgd2lkdGg6IDMwJSAhaW1wb3J0YW50O1xufVxuXG4ud2lkdGgtLXBjdC0tMzUge1xuICAgIHdpZHRoOiAzNSUgIWltcG9ydGFudDtcbn1cblxuLndpZHRoLS1wY3QtLTQwIHtcbiAgICB3aWR0aDogNDAlICFpbXBvcnRhbnQ7XG59XG5cbi53aWR0aC0tcGN0LS00NSB7XG4gICAgd2lkdGg6IDQ1JSAhaW1wb3J0YW50O1xufVxuXG4ud2lkdGgtLXBjdC0tNTAge1xuICAgIHdpZHRoOiA1MCUgIWltcG9ydGFudDtcbn1cbi53aWR0aC0tcGN0LS02MCB7XG4gICAgd2lkdGg6IDYwJSAhaW1wb3J0YW50O1xufVxuLndpZHRoLS1wY3QtLTcwIHtcbiAgICB3aWR0aDogNzAlICFpbXBvcnRhbnQ7XG59XG4ud2lkdGgtLXBjdC0tNzUge1xuICAgIHdpZHRoOiA3NSUgIWltcG9ydGFudDtcbn1cbi53aWR0aC0tcGN0LS04MCB7XG4gICAgd2lkdGg6IDgwJSAhaW1wb3J0YW50O1xufVxuLndpZHRoLS1wY3QtLTkwIHtcbiAgICB3aWR0aDogOTAlICFpbXBvcnRhbnQ7XG59XG4ud2lkdGgtLXBjdC0tMTAwIHtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xufVxuXG4ucGFkLS1yLS0xMCB7XG4gICAgcGFkZGluZy1yaWdodDogMTBweCAhaW1wb3J0YW50O1xufVxuXG4ucGFkLS1iLS00MCB7XG4gICAgcGFkZGluZy1ib3R0b206IDQwcHggIWltcG9ydGFudDtcbn1cbiIsIiRpbmFjdGl2ZTogY29sb3IoJ2dyZXknLCAnYmFzZScpO1xuJGFjdGl2ZTogJHdoaXRlO1xuJHNwZWVkOiAycztcbiRzaXplOiA2MHB4O1xuJHVuaXQ6ICRzaXplIC8gMTY7XG5cbiVzcGlubmVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbG9hdDogbGVmdDtcbiAgICB3aWR0aDogJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICBib3JkZXI6ICR1bml0IHNvbGlkICRpbmFjdGl2ZTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYW5pbWF0aW9uOiBzcGlubmVyICRzcGVlZCBsaW5lYXIgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgc3Bpbm5lciB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICB9XG59XG5cbi8vIERvdHNcbiVzcGlubmVyLWRvdWJsZS1kb3QtaW4sXG4uc3Bpbm5lci1kb3VibGUtZG90LWluIHtcbiAgICBAZXh0ZW5kICVzcGlubmVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICY6OmJlZm9yZSxcbiAgICAmOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAoJHVuaXQgKiAyKTtcbiAgICAgICAgbGVmdDogKCRzaXplIC8gMiAtICR1bml0KTtcbiAgICAgICAgd2lkdGg6ICgkdW5pdCAqIDIpO1xuICAgICAgICBoZWlnaHQ6ICgkdW5pdCAqIDIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYWN0aXZlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgdG9wOiBhdXRvO1xuICAgICAgICBib3R0b206ICgkdW5pdCAqIDIpO1xuICAgIH1cbn1cblxuJXNwaW5uZXItZG90LWluLFxuLnNwaW5uZXItZG90LWluIHtcbiAgICBAZXh0ZW5kICVzcGlubmVyLWRvdWJsZS1kb3QtaW47XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4lc3Bpbm5lci1kb3VibGUtZG90LXN0aWNrLFxuLnNwaW5uZXItZG91YmxlLWRvdC1zdGljayB7XG4gICAgQGV4dGVuZCAlc3Bpbm5lci1kb3VibGUtZG90LWluO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgdG9wOiAoLSR1bml0ICogMik7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICB0b3A6IGF1dG87XG4gICAgICAgIGJvdHRvbTogKC0kdW5pdCAqIDIpO1xuICAgIH1cbn1cblxuJXNwaW5uZXItZG90LXN0aWNrLFxuLnNwaW5uZXItZG90LXN0aWNrIHtcbiAgICBAZXh0ZW5kICVzcGlubmVyLWRvdWJsZS1kb3Qtc3RpY2s7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4lc3Bpbm5lci1kb3VibGUtZG90LW91dCxcbi5zcGlubmVyLWRvdWJsZS1kb3Qtb3V0IHtcbiAgICBAZXh0ZW5kICVzcGlubmVyLWRvdWJsZS1kb3QtaW47XG5cbiAgICAmOjpiZWZvcmUsXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICB0b3A6ICgtJHVuaXQgKiA0KTtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAgIHRvcDogYXV0bztcbiAgICAgICAgYm90dG9tOiAoLSR1bml0ICogNCk7XG4gICAgfVxufVxuXG4lc3Bpbm5lci1kb3Qtb3V0LFxuLnNwaW5uZXItZG90LW91dCB7XG4gICAgQGV4dGVuZCAlc3Bpbm5lci1kb3VibGUtZG90LW91dDtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi8vIFdhdmVzXG4lc3Bpbm5lci13YXZlLW91dCxcbi5zcGlubmVyLXdhdmUtb3V0IHtcbiAgICBAZXh0ZW5kICVzcGlubmVyO1xuICAgIGJveC1zaGFkb3c6ICgtJHVuaXQgLyAyKSAoLSR1bml0IC8gMikgMCAoJHVuaXQgLyAyKSAkYWN0aXZlO1xufVxuXG4lc3Bpbm5lci13YXZlLWluLFxuLnNwaW5uZXItd2F2ZS1pbiB7XG4gICAgQGV4dGVuZCAlc3Bpbm5lcjtcbiAgICBib3gtc2hhZG93OiBpbnNldCAoLSR1bml0IC8gMikgKC0kdW5pdCAvIDIpIDAgKCR1bml0IC8gMikgJGFjdGl2ZTtcbn1cblxuJXNwaW5uZXItZG91YmxlLXdhdmUtb3V0LFxuLnNwaW5uZXItZG91YmxlLXdhdmUtb3V0IHtcbiAgICBAZXh0ZW5kICVzcGlubmVyO1xuICAgIGJveC1zaGFkb3c6ICgtJHVuaXQgLyAyKSAoLSR1bml0IC8gMikgMCAoJHVuaXQgLyAyKSAkYWN0aXZlLFxuICAgICAgICAgICAgKCR1bml0IC8gMikgKCR1bml0IC8gMikgMCAoJHVuaXQgLyAyKSAkYWN0aXZlO1xufVxuXG4lc3Bpbm5lci1kb3VibGUtd2F2ZS1pbixcbi5zcGlubmVyLWRvdWJsZS13YXZlLWluIHtcbiAgICBAZXh0ZW5kICVzcGlubmVyO1xuICAgIGJveC1zaGFkb3c6IGluc2V0ICgtJHVuaXQgLyAyKSAoLSR1bml0IC8gMikgMCAoJHVuaXQgLyAyKSAkYWN0aXZlLFxuICAgIGluc2V0ICgkdW5pdCAvIDIpICgkdW5pdCAvIDIpIDAgKCR1bml0IC8gMikgJGFjdGl2ZTtcbn1cblxuJXNwaW5uZXItaHVnZS13YXZlLW91dCxcbi5zcGlubmVyLWh1Z2Utd2F2ZS1vdXQge1xuICAgIEBleHRlbmQgJXNwaW5uZXI7XG4gICAgYm94LXNoYWRvdzogKC0kdW5pdCAvIDIpICgtJHVuaXQgLyAyKSAwICgkdW5pdCAqIDIpICRhY3RpdmU7XG59XG5cbiVzcGlubmVyLWh1Z2Utd2F2ZS1pbixcbi5zcGlubmVyLWh1Z2Utd2F2ZS1pbiB7XG4gICAgQGV4dGVuZCAlc3Bpbm5lcjtcbiAgICBib3gtc2hhZG93OiBpbnNldCAoLSR1bml0IC8gMikgKC0kdW5pdCAvIDIpIDAgKCR1bml0ICogMikgJGFjdGl2ZTtcbn1cblxuLy8gU2VjdGlvbnNcbiVzcGlubmVyLWRvdWJsZS1zZWN0aW9uLFxuLnNwaW5uZXItZG91YmxlLXNlY3Rpb24ge1xuICAgIEBleHRlbmQgJXNwaW5uZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0kdW5pdDtcbiAgICAgICAgbGVmdDogLSR1bml0O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6ICRzaXplO1xuICAgICAgICBoZWlnaHQ6ICRzaXplO1xuICAgICAgICBib3JkZXI6ICR1bml0IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAkYWN0aXZlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRhY3RpdmU7XG4gICAgfVxufVxuXG4lc3Bpbm5lci1zZWN0aW9uLFxuLnNwaW5uZXItc2VjdGlvbiB7XG4gICAgQGV4dGVuZCAlc3Bpbm5lci1kb3VibGUtc2VjdGlvbjtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbiVzcGlubmVyLWRvdWJsZS1zZWN0aW9uLWluLFxuLnNwaW5uZXItZG91YmxlLXNlY3Rpb24taW4ge1xuICAgIEBleHRlbmQgJXNwaW5uZXItZG91YmxlLXNlY3Rpb247XG5cbiAgICAmOjpiZWZvcmUsXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHdpZHRoOiAoJHNpemUgLSAkdW5pdCAqIDIpO1xuICAgICAgICBoZWlnaHQ6ICgkc2l6ZSAtICR1bml0ICogMik7XG4gICAgfVxufVxuXG4lc3Bpbm5lci1zZWN0aW9uLWluLFxuLnNwaW5uZXItc2VjdGlvbi1pbiB7XG4gICAgQGV4dGVuZCAlc3Bpbm5lci1kb3VibGUtc2VjdGlvbi1pbjtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbiVzcGlubmVyLWRvdWJsZS1zZWN0aW9uLW91dCxcbi5zcGlubmVyLWRvdWJsZS1zZWN0aW9uLW91dCB7XG4gICAgQGV4dGVuZCAlc3Bpbm5lci1kb3VibGUtc2VjdGlvbjtcblxuICAgICY6OmJlZm9yZSxcbiAgICAmOjphZnRlciB7XG4gICAgICAgIHRvcDogKCR1bml0ICogLSAyKTtcbiAgICAgICAgbGVmdDogKCR1bml0ICogLSAyKTtcbiAgICAgICAgd2lkdGg6ICgkc2l6ZSArICR1bml0ICogMik7XG4gICAgICAgIGhlaWdodDogKCRzaXplICsgJHVuaXQgKiAyKTtcbiAgICB9XG59XG5cbiVzcGlubmVyLXNlY3Rpb24tb3V0LFxuLnNwaW5uZXItc2VjdGlvbi1vdXQge1xuICAgIEBleHRlbmQgJXNwaW5uZXItZG91YmxlLXNlY3Rpb24tb3V0O1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuJXNwaW5uZXItZG91YmxlLXNlY3Rpb24tZmFyLFxuLnNwaW5uZXItZG91YmxlLXNlY3Rpb24tZmFyIHtcbiAgICBAZXh0ZW5kICVzcGlubmVyLWRvdWJsZS1zZWN0aW9uO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgdG9wOiAoJHVuaXQgKiAtIDMpO1xuICAgICAgICBsZWZ0OiAoJHVuaXQgKiAtIDMpO1xuICAgICAgICB3aWR0aDogKCRzaXplICsgJHVuaXQgKiA0KTtcbiAgICAgICAgaGVpZ2h0OiAoJHNpemUgKyAkdW5pdCAqIDQpO1xuICAgIH1cbn1cblxuJXNwaW5uZXItc2VjdGlvbi1mYXIsXG4uc3Bpbm5lci1zZWN0aW9uLWZhciB7XG4gICAgQGV4dGVuZCAlc3Bpbm5lci1kb3VibGUtc2VjdGlvbi1mYXI7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4uc3Bpbm5lci1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIGp1c3RpZnktY29udGVudChjZW50ZXIpO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsIC40cyAkZWFzZS1vdXQtY2lyYyk7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDk5OTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogJGJsYWNrO1xuXG4gICAgPiBkaXYge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkgLjNzICRlYXNlLW91dC1jaXJjKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAmLmhpZGUtc3Bpbm5lciB7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBoZWlnaHQ6IDA7XG5cbiAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi50YWJsZS1vZi1jb250ZW50cyBsaSB7XG4gICAgcGFkZGluZzogMDtcblxuICAgIC5hY3RpdmUsXG4gICAgYSxcbiAgICBhOmhvdmVyIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwIDIwcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgIH1cblxuICAgIGEge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgY29sb3IoJG5hdi1pdGVtLWJvcmRlci1jb2xvciwgJ2xpZ2h0ZW4tMicpO1xuICAgIH1cblxuICAgIGE6aG92ZXIge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgY29sb3IoJG5hdi1pdGVtLWJvcmRlci1jb2xvciwgJ2Jhc2UnKTtcbiAgICB9XG5cbiAgICAuYWN0aXZlIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGNvbG9yKCRuYXYtaXRlbS1ib3JkZXItY29sb3IsICdkYXJrZW4tMScpO1xuICAgIH1cblxuICAgICY6bGFzdC1vZi10eXBlIGEge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxufVxuXG5uYXYge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuXG4gICAgLmJyYW5kLWxvZ28ge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTFweDtcbiAgICAgICAgY29sb3I6ICRibGFjaztcbiAgICB9XG5cbiAgICB1bCBhLFxuICAgIGEge1xuICAgICAgICBjb2xvcjogJGJsYWNrO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC50YWJsZS1vZi1jb250ZW50cyBhLFxuICAgIC50YWJsZS1vZi1jb250ZW50cyBhOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICRibGFjaztcbiAgICB9XG59XG5cbi5oYW1idXJnZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDJweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYmFja2dyb3VuZDogJGJsYWNrO1xuXG4gICAgJjo6YWZ0ZXIsXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIGhlaWdodDogMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYmxhY2s7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgdG9wOiAtOHB4O1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIHRvcDogNnB4O1xuICAgIH1cbn1cbiIsIi5yZWN0YW5nbGUge1xuICAgIHBhZGRpbmctYm90dG9tOiA2Ni42NyU7XG59XG5cbi5yZWN0YW5nbGUtNTAge1xuICAgIHBhZGRpbmctYm90dG9tOiA1MCU7XG5cbiAgICBAbWVkaWEgI3skc21hbGwtYW5kLWRvd259IHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDY2LjY3JTtcbiAgICB9XG59XG5cbi5zcXVhcmUge1xuICAgIHBhZGRpbmctYm90dG9tOiAxMDAlO1xufVxuXG4ucmVjdGFuZ2xlLFxuLnJlY3RhbmdsZS01MCxcbi5zcXVhcmUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG5cbiAgICA+IC5jb250ZW50IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICBkaXYge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIubW9kYWwge1xuICAgICYuYm90dG9tLXNoZWV0IHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtYXgtaGVpZ2h0OiBub25lO1xuICAgIH1cblxuICAgIGJsb2NrcXVvdGUge1xuICAgICAgICBmb250LXNpemU6IDNyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAyMDA7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAwO1xuXG4gICAgICAgIEBtZWRpYSAjeyRzbWFsbC1hbmQtZG93bn0ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubW9kYWwtY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMS41cmVtO1xuICAgIHotaW5kZXg6IDEwMDAwO1xuICAgIGZvbnQtc2l6ZTogM3JlbTtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgY29udGVudDogJ2VzYyc7XG4gICAgfVxufVxuXG4uYWJvdXQgLm1vZGFsLmJvdHRvbS1zaGVldCB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuXG4gICAgQG1lZGlhICN7JG1lZGl1bS1hbmQtZG93bn0ge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAgICAgLm1vZGFsLWNvbnRlbnQgLnNxdWFyZSB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcblxuICAgICAgICAgICAgLmNvbnRlbnQge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTkycHgpIGFuZCAobWluLXdpZHRoOiA2MDFweCkge1xuICAgICN0b2FzdC1jb250YWluZXIge1xuICAgICAgICByaWdodDogNSU7XG4gICAgfVxufVxuXG4udG9hc3Qge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNzVyZW07XG5cbiAgICAvLyBBIGJpdCBvZiBhIHRyaWNrZXJ5IGluIG9yZGVyIHRvIHNob3cgb25seSBvbmUgdG9hc3QgYXQgdGhlIHRpbWVcbiAgICAvLyBNYWtpbmcgc3VyZSB0aGUgdXNlciB3b24ndCBmcmVhayBvdXQsIHdoZW4gaGUgc2VlcyAzIHJlZCB0aGluZ2llcyBwb3AgdXBcbiAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cblxuICAgICYuZXJyb3Ige1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXJyb3I7XG4gICAgfVxuXG4gICAgJi5zdWNjZXNzIHtcbiAgICAgICAgY29sb3I6ICRibGFjaztcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHN1Y2Nlc3M7XG4gICAgfVxufSIsIkBtaXhpbiBzb2NpYWwtbGluaygkbmV0d29yaywgJGNvbG9yKSB7XG4gICAgJi4jeyRuZXR3b3JrfSB7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50aXplKCRjb2xvciwgLjMpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc29jaWFsIHtcbiAgICAuY29udGVudCB7XG4gICAgICAgIEBpbmNsdWRlIGp1c3RpZnktY29udGVudChjZW50ZXIpO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICAgIEBpbmNsdWRlIHNvY2lhbC1saW5rKGZhY2Vib29rLCAkZmFjZWJvb2spO1xuICAgICAgICBAaW5jbHVkZSBzb2NpYWwtbGluayh0d2l0dGVyLCAkdHdpdHRlcik7XG4gICAgICAgIEBpbmNsdWRlIHNvY2lhbC1saW5rKGRyaWJiYmxlLCAkZHJpYmJibGUpO1xuICAgICAgICBAaW5jbHVkZSBzb2NpYWwtbGluayhnaXRodWIsICRnaXRodWIpO1xuICAgICAgICBAaW5jbHVkZSBzb2NpYWwtbGluayh2aywgJHZrKTtcbiAgICAgICAgQGluY2x1ZGUgc29jaWFsLWxpbmsobGlua2VkaW4sICRsaW5rZWRpbik7XG4gICAgICAgIEBpbmNsdWRlIHNvY2lhbC1saW5rKGdvb2dsZXBsdXMsICRnb29nbGVwbHVzKTtcbiAgICAgICAgQGluY2x1ZGUgc29jaWFsLWxpbmsocGludGVyZXN0LCAkcGludGVyZXN0KTtcblxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IDNweCA1cHg7XG4gICAgICAgIG1hcmdpbjogMCAzcHg7XG5cbiAgICAgICAgQG1lZGlhICN7JHNtYWxsLWFuZC1kb3dufSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuaHVnZSBhIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn1cbiIsIi5wcm9qZWN0cyBoMiB7XG4gICAgbWFyZ2luLXRvcDogNXJlbTtcbn1cblxuLnByb2plY3RzIC5jb250ZW50IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICBkaXYge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlM2QoMCwgMTAwJSwgMCkpO1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCAwcyBsaW5lYXIpO1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogNHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDRyZW07XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIG9wYWNpdHk6IDA7XG5cbiAgICAgICAgQG1lZGlhICN7JHNtYWxsLWFuZC1kb3dufSB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlM2QoMCwgMCwgMCkpO1xuICAgICAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDJyZW07XG4gICAgICAgICAgICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4IHRyYW5zcGFyZW50aXplKCRibGFjaywgLjc1KTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAbWVkaWEgI3skc21hbGwtYW5kLWRvd259IHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnRpemUoJGJsYWNrLCAuOSk7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50aXplKCRibGFjaywgLjMpO1xuXG4gICAgICAgIGRpdiB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlM2QoMCwgMCwgMCkpO1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwgLjNzICRlYXNlLW91dC1jaXJjKTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgI3skc21hbGwtYW5kLWRvd259IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24obm9uZSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5vd2wtY2Fyb3VzZWwge1xuICAgIC5jb2wge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC5vd2wtaXRlbSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApIHNjYWxlKDEuMCwgMS4wKTtcbiAgICAgICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxuXG4gICAgLm93bC1kb3Qge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIG1hcmdpbi1yaWdodDogLjVyZW07XG5cbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHdpZHRoOiAxMHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogY29sb3IoJ2dyZXknLCAnbGlnaHRlbi0zJyk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSBzcGFuIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGNvbG9yKCdncmV5JywgJ2xpZ2h0ZW4tMScpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLnNlcnZpY2VzIHtcbiAgICAuY29sID4gZGl2IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyZXk7XG4gICAgfVxufVxuXG4uc2VydmljZS1pdGVtcyB7XG4gICAgLmNvbnRlbnQge1xuICAgICAgICBAaW5jbHVkZSBkaXNwbGF5KGZsZXgpO1xuICAgICAgICBAaW5jbHVkZSBmbGV4LWRpcmVjdGlvbihjb2x1bW4pO1xuICAgICAgICBAaW5jbHVkZSBhbGlnbi1pdGVtcyhjZW50ZXIpO1xuICAgICAgICBAaW5jbHVkZSBqdXN0aWZ5LWNvbnRlbnQoY2VudGVyKTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG5cbiAgICAgICAgaSB7XG4gICAgICAgICAgICAvL0BpbmNsdWRlIHRyYW5zaXRpb24ob3BhY2l0eSAuNHMgJGVhc2Utb3V0LWNpcmMpO1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbi1wcm9wZXJ0eSh0cmFuc2Zvcm0sIG9wYWNpdHkpO1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbi1kdXJhdGlvbigwcywgMHMpO1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24obGluZWFyLCAkZWFzZS1vdXQtY2lyYyk7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuXG4gICAgICAgICAgICBAbWVkaWEgI3skc21hbGwtYW5kLWRvd259IHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG5vbmUpO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC0xMjAlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBoNCxcbiAgICAgICAgcCB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkgLjRzICRlYXNlLW91dC1jaXJjKTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgcGFkZGluZzogMCAxLjVyZW07XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuXG4gICAgICAgICAgICBAbWVkaWEgI3skc21hbGwtYW5kLWRvd259IHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk5M3B4KSBhbmQgKG1heC13aWR0aDogMTEwMHB4KSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjNyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBoNCB7XG4gICAgICAgICAgICBAbWVkaWEgI3skc21hbGwtYW5kLWRvd259IHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG5cbiAgICAgICAgICAgIEBtZWRpYSAjeyRzbWFsbC1hbmQtZG93bn0ge1xuICAgICAgICAgICAgICAgIHRvcDogNjUlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBoNCxcbiAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGkge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24tcHJvcGVydHkodHJhbnNmb3JtLCBvcGFjaXR5KTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uLWR1cmF0aW9uKDEwcywgLjRzKTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbihsaW5lYXIsICRlYXNlLW91dC1jaXJjKTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oc2NhbGUoMikpO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IC4xO1xuXG4gICAgICAgICAgICAgICAgQG1lZGlhICN7JHNtYWxsLWFuZC1kb3dufSB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLnByaWNlcyB7XG4gICAgLmRpdmlkZXIge1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICBoZWlnaHQ6IDJweDtcbiAgICAgICAgbWFyZ2luOiAxLjVyZW0gYXV0byAwO1xuICAgIH1cblxuICAgIHN0cm9uZyArIHAge1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cblxuICAgIC5pbmZvIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IC0zcHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6IDEuNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjVyZW07XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAuNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41cmVtO1xuICAgICAgICBjb2xvcjogY29sb3IoJ2dyZXknLCAnYmFzZScpO1xuICAgICAgICBjdXJzb3I6IGhlbHA7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbG9yKCdncmV5JywgJ2xpZ2h0ZW4tMicpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgfVxuXG4gICAgaDUge1xuICAgICAgICBmb250LXNpemU6IDRyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAyMDA7XG4gICAgfVxuXG4gICAgLmN1cnJlbmN5IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IC0xLjVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgIH1cbn1cbiIsIi5hYm91dCB7XG4gICAgLm5hbWUge1xuICAgICAgICBtYXJnaW46IC41cmVtIDAgMCAxcmVtO1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgfVxuXG4gICAgLnlvdSB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgY29sb3IoJG5hdi1pdGVtLWJvcmRlci1jb2xvciwgJ2xpZ2h0ZW4tMicpO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgY29sb3IoJG5hdi1pdGVtLWJvcmRlci1jb2xvciwgJ2Jhc2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5uYW1lIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubW9kYWwge1xuICAgICAgICAuc3F1YXJlIHtcbiAgICAgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7XG5cbiAgICAgICAgICAgID4gLmNvbnRlbnQge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEuNXJlbSAycmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm1vZGFsLWNvdmVyIC5zcXVhcmUge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cblxuICAgIC5tb2RhbC1jb250ZW50IC5zcXVhcmUge1xuICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgfVxuXG4gICAgLnBoaWxvc29waHkge1xuICAgICAgICBwYWRkaW5nOiA1cmVtIDAgNHJlbTtcblxuICAgICAgICBAbWVkaWEgI3skc21hbGwtYW5kLWRvd259IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDNyZW0gMCAycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhYnMge1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgICAgIC50YWIge1xuICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG5cbiAgICAgICAgICAgICAgICBoNSB7XG4gICAgICAgICAgICAgICAgICAgIEBtZWRpYSAjeyRzbWFsbC1hbmQtZG93bn0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdHJhbnNwYXJlbnRpemUoJGJsYWNrLCAuNCk7XG5cbiAgICAgICAgICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRibGFjaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC50YWItY29udGVudHMge1xuICAgICAgICAgICAgaDUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICAgICAgICAgICBAbWVkaWEgI3skc21hbGwtYW5kLWRvd259IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMnJlbSAwIC0ycmVtO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmluZGljYXRvciB7XG4gICAgICAgICAgICBoZWlnaHQ6IDNweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRibGFjaztcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5ibG9nIHtcbiAgICAucG9zdHMge1xuICAgICAgICAuY29udGVudCB7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAgICAgICAgIGRpdiB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApKTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCAwcyBsaW5lYXIpO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDRyZW07XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDRyZW07XG4gICAgICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuXG4gICAgICAgICAgICAgICAgQG1lZGlhICN7JHNtYWxsLWFuZC1kb3dufSB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGUzZCgwLCAwLCAwKSk7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDJyZW07XG4gICAgICAgICAgICAgICAgICAgIHRleHQtc2hhZG93OiAwIDFweCAxcHggdHJhbnNwYXJlbnRpemUoJGJsYWNrLCAuNzUpO1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNtYWxsIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogMjAwO1xuXG4gICAgICAgICAgICAgICAgICAgIEBtZWRpYSAjeyRzbWFsbC1hbmQtZG93bn0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQG1lZGlhICN7JHNtYWxsLWFuZC1kb3dufSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnRpemUoJGJsYWNrLCAuNzUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuc21hbGxlciB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xuXG4gICAgICAgICAgICAgICAgc21hbGwge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudGl6ZSgkYmxhY2ssIC4zKTtcblxuICAgICAgICAgICAgICAgIGRpdiB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGUzZCgwLCAwLCAwKSk7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsIC4zcyAkZWFzZS1vdXQtY2lyYyk7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLm1hcCB7XG4gICAgaGVpZ2h0OiA1MDBweDtcbn1cblxuLnNlbmQtbWVzc2FnZSB7XG4gICAgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWluLXdpZHRoOiA1MHB4O1xuICAgICAgICBwYWRkaW5nOiAwIDVweDtcbiAgICAgICAgYmFja2dyb3VuZDogJGlucHV0LWJhY2tncm91bmQ7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkaW5wdXQtYmFja2dyb3VuZC1mb2N1cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5idG4sXG4gICAgLmJ0bi1sYXJnZSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDJyZW07XG4gICAgfVxufVxuXG4uY29udGFjdC1kZXRhaWxzIHtcbiAgICBhIHtcbiAgICAgICAgY29sb3I6ICRibGFjaztcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGNvbG9yKCRuYXYtaXRlbS1ib3JkZXItY29sb3IsICdsaWdodGVuLTInKTtcbiAgICB9XG5cbiAgICBhOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGNvbG9yKCRuYXYtaXRlbS1ib3JkZXItY29sb3IsICdiYXNlJyk7XG5cbiAgICAgICAgJi5mYS1leHRlcm5hbC1saW5rIHtcbiAgICAgICAgICAgIGNvbG9yOiBjb2xvcignZ3JleScsICdkYXJrZW4tMScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmFjdGl2ZSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBjb2xvcigkbmF2LWl0ZW0tYm9yZGVyLWNvbG9yLCAnZGFya2VuLTEnKTtcbiAgICB9XG5cbiAgICBhZGRyZXNzIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTVweDtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIH1cblxuICAgIC5mYSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICB9XG5cbiAgICAuaW0gLmZhIHtcbiAgICAgICAgd2lkdGg6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAuZmEtZXh0ZXJuYWwtbGluayB7XG4gICAgICAgIGNvbG9yOiBjb2xvcignZ3JleScsICdsaWdodGVuLTEnKTtcbiAgICB9XG59XG4iLCIuaW5wdXQtZmllbGQgbGFiZWwge1xuICAgIGNvbG9yOiAkYmxhY2s7XG59XG5cbmlucHV0W3R5cGU9dGV4dF0sXG5pbnB1dFt0eXBlPWVtYWlsXSxcbmlucHV0W3R5cGU9ZW1haWxdLFxudGV4dGFyZWEubWF0ZXJpYWxpemUtdGV4dGFyZWEge1xuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xuICAgIGJhY2tncm91bmQ6ICRpbnB1dC1iYWNrZ3JvdW5kO1xuICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxudGV4dGFyZWEubWF0ZXJpYWxpemUtdGV4dGFyZWEge1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICBoZWlnaHQ6IDhyZW0gIWltcG9ydGFudDtcbn1cblxuLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9dGV4dF06Zm9jdXM6bm90KFtyZWFkb25seV0pLFxuLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9ZW1haWxdOmZvY3VzLFxuLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9ZW1haWxdOmZvY3VzOm5vdChbcmVhZG9ubHldKSxcbmlucHV0W3R5cGU9ZW1haWxdOmZvY3VzLFxuaW5wdXRbdHlwZT1lbWFpbF06Zm9jdXM6bm90KFtyZWFkb25seV0pLFxudGV4dGFyZWEubWF0ZXJpYWxpemUtdGV4dGFyZWE6Zm9jdXMsXG50ZXh0YXJlYS5tYXRlcmlhbGl6ZS10ZXh0YXJlYTpmb2N1czpub3QoW3JlYWRvbmx5XSkge1xuICAgIGJhY2tncm91bmQ6ICRpbnB1dC1iYWNrZ3JvdW5kLWZvY3VzO1xuICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcblxuICAgICsgbGFiZWwge1xuICAgICAgICBjb2xvcjogJGJsYWNrO1xuICAgIH1cbn1cblxuLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9dGV4dF0udmFsaWQsXG4uaW5wdXQtZmllbGQgaW5wdXRbdHlwZT1lbWFpbF0udmFsaWQsXG50ZXh0YXJlYS5tYXRlcmlhbGl6ZS10ZXh0YXJlYS52YWxpZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICBib3gtc2hhZG93OiBub25lO1xufVxuXG4uaW5wdXQtZmllbGQgaW5wdXRbdHlwZT10ZXh0XS5pbnZhbGlkLFxuLmlucHV0LWZpZWxkIGlucHV0W3R5cGU9ZW1haWxdLmludmFsaWQsXG50ZXh0YXJlYS5tYXRlcmlhbGl6ZS10ZXh0YXJlYS5pbnZhbGlkIHtcbiAgICBib3JkZXItYm90dG9tOiAwO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi5pbnB1dC1maWVsZCAucHJlZml4LmFjdGl2ZSB7XG4gICAgY29sb3I6ICRibGFjaztcbn1cbiIsImZvb3Rlci5wYWdlLWZvb3RlciB7XG4gICAgY29sb3I6ICRibGFjaztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JleTtcblxuICAgIC5mb290ZXItY29weXJpZ2h0IHtcbiAgICAgICAgY29sb3I6ICRibGFjaztcbiAgICB9XG5cbiAgICBpbnB1dFt0eXBlPXN1Ym1pdF06Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiAwO1xuICAgIH1cbn1cbiIsIi8vIENvbG9yc1xuJGJ1dHRvbi1iYWNrZ3JvdW5kOiBjb2xvcigncHVycGxlJywgJ2Jhc2UnKTtcbiRidXR0b24tY29sb3I6ICR3aGl0ZTtcbiRoMS1zaGFkb3ctY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiRwcmltYXJ5LTE6ICMzMTc4YmE7XG5cbi5mbGV4X19jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG59XG5cbi5mbGV4LS1qYy0tbCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuLmZsZXgtLWpjLS1yIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuLmZsZXgtLWpjLS1jIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi5mbGV4LS1qYy0tc2Ige1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuLmZsZXgtLWFpLS10IHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbn1cbi5mbGV4LS1haS0tYiB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xufVxuLmZsZXgtLWFpLS1jIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uZmxleC0tZGlyLS1jb2wge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5lbWJlZC1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlO1xuICAgIGhlaWdodDogMDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgaWZyYW1lLFxuICAgIG9iamVjdCxcbiAgICBlbWJlZCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbn1cblxuLy8gU2tpbiBjdXN0b21pc2F0aW9uXG4ucG9wa2luLXNraW4ge1xuICAgIC5uYXZiYXItZml4ZWQge1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgfVxuICAgIG5hdiB7XG4gICAgICAgIC5icmFuZC1sb2dvIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiA1cHg7XG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIGhlaWdodDogODJweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBmb290ZXIucGFnZS1mb290ZXIge1xuICAgICAgICBtYXJnaW46IDBweCAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmJ0bixcbiAgICAuYnRuLWxhcmdlIHtcbiAgICAgICAgY29sb3I6ICRidXR0b24tY29sb3I7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAjdmlkZW8tdmlld3BvcnQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgei1pbmRleDogLTE7XG4gICAgfVxuXG4gICAgdmlkZW8ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICB9XG5cbiAgICAuaGVybyB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgJi5mdWxsc2l6ZS12aWRlby1iZyB7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogNTYwcHg7XG4gICAgICAgICAgICBAbWVkaWEgI3skbWVkaXVtLWFuZC1kb3dufSB7XG4gICAgICAgICAgICAgICAgbWF4LWhlaWdodDogNDQwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAbWVkaWEgI3skc21hbGwtYW5kLWRvd259IHtcbiAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiA0MjBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDExNCwgNDUsIDAsIDAuMzUpO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIC8vYmFja2dyb3VuZC1pbWFnZTogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQU1BQUFBRENBWUFBQUJXS0xXL0FBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeVpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTURZM0lEYzVMakUxTnpjME55d2dNakF4TlM4d015OHpNQzB5TXpvME1EbzBNaUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UVWdUV0ZqYVc1MGIzTm9JaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakk0UmtaQlFUZ3pOemcxTnpFeFJUVTROVFF5T0RjM09VTTRNVFpHTVVSRUlpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSTRSa1pCUVRnME56ZzFOekV4UlRVNE5UUXlPRGMzT1VNNE1UWkdNVVJFSWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1qaEdSa0ZCT0RFM09EVTNNVEZGTlRnMU5ESTROemM1UXpneE5rWXhSRVFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWpoR1JrRkJPREkzT0RVM01URkZOVGcxTkRJNE56YzVRemd4TmtZeFJFUWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejY2dUhJbkFBQUFJVWxFUVZSNDJtTDUvLzgvQXlNajQyWUdJR0JpZ0FCZkVNRUlrb0VCZ0FBREFLdnVCd1ZTOEJBakFBQUFBRWxGVGtTdVFtQ0MpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFVQUFBQUZDQVlBQUFDTmJ5YmxBQUFBSGtsRVFWUVlWMk5rWUdENHo4REF3SWhNZ3pnZ2dDS0JvZ0ttZzNpVkFKZ1pEUU5tcklVaEFBQUFBRWxGVGtTdVFtQ0MpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogM3B4IDNweDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm92ZXJsYXkge1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIC5vdmVybGF5LS1jb250ZW50IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgLy8gd2lkdGg6IDUwJTtcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICNxdW90ZV9fcm90YXRvciB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDc1JTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIC5oZXJvLS1sb2dvIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEyNXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEyNXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5xdW90ZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAzNnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LXNoYWRvdzogMnB4IDNweCBibGFjaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQG1lZGlhICN7JG1lZGl1bS1hbmQtZG93bn0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5vdmVybGF5LS1wZXJzb24ge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICAgICAgICAgICAgICAgIC8vd2lkdGg6IDUwJTtcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIEBtZWRpYSAjeyRzbWFsbC1hbmQtZG93bn0ge1xuICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2NhbGU6IDAuODtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGgxIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMnJlbTtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogNXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMnB4O1xuICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIHRleHQtc2hhZG93OiAwIDFweCAxcHggJGgxLXNoYWRvdy1jb2xvcjtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgICAgICAgICAgIEBtZWRpYSAjeyRzbWFsbC1hbmQtZG93bn0ge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDNyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjYmlvIHtcbiAgICAgICAgI2Jpb19fd3JhcHBlciB7XG4gICAgICAgICAgICBAbWVkaWEgI3skc21hbGwtYW5kLWRvd259IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICNkaWRZb3VLbm93IHtcbiAgICAgICAgLnJvdyB7XG4gICAgICAgICAgICAuZHlrIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiA2MHB4O1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAxMnB4O1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHByaW1hcnktMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUdBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFXSCw4Q0FBOEM7QUFDOUM7Ozs4Q0FHOEM7QWtGN0M5QyxBQUFBLElBQUk7QUFDSixBQUFBLElBQUk7QUFDSixBQUFBLFlBQVksQ0FBQztFQUNULE1BQU0sRUFBRSxJQUFLO0NBQ2hCOztBQUVELEFBQUEsSUFBSSxDQUFDO0VBQ0QsZ0JBQWdCLEVETFosSUFBSTtDQ1VYOztBQU5ELEFBQUEsSUFBSSxBQUdDLE9BQU8sQ0FBQztFQUNMLFVBQVUsRUFBRSxNQUFPO0NBQ3RCOztBQUlMLEFBQUEsS0FBSyxDQUFDO0VBQ0YsUUFBUSxFQUFFLE1BQU87Q0FD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 */
