/******************************************************
* Optional Google map showing walk locations
******************************************************/
/**
 * Breakpoints
 */
/**
 * Input capabilities
 */
/********************************************************
* Touch devices
********************************************************/
body {
  visibility: inherit;
}

#map-container {
  display: none;
  /*Hide by default (unhidden by show_map script if JS enabled)*/
  margin-bottom: 16px;
  clear: left;
}

#google-map {
  width: 100%;
  height: 400px;
}

/******************************************************
* Optional main image
******************************************************/
/**
* Display a full-width photo with a white border
*/
#main-photo {
  display: inline-block;
  position: relative;
  margin-bottom: 8px;
  width: 100%;
}

#main-photo img {
  position: relative;
  display: block;
  width: 100%;
  height: auto;
}

#main-photo .image-border {
  display: block;
  position: absolute;
  left: 10px;
  top: 10px;
  right: 10px;
  bottom: 10px;
  border: 1px solid white;
}

#main-photo + div p:first-child {
  margin-top: 0;
}

/*****************************************************************
 App intro shown for new users
*****************************************************************/
.app-formats {
  display: table;
  margin: 0 auto;
  width: 100%;
}

@media screen and (min-width: 60em) {
  .app-formats .app-button {
    display: none !important;
  }
}

@media screen and (max-width: 59.99em) {
  .app-formats .text {
    display: none !important;
  }
}

@media screen and (min-width: 37.5em) and (max-width: 59.99em) {
  .app-formats .icon {
    visibility: hidden;
  }
}

@media screen and (max-width: 37.49em) {
  .app-formats {
    display: block;
    width: 100%;
  }
  .app-formats .icon {
    display: none !important;
  }
}

.app-formats > div.store-link {
  display: table-cell;
}

.app-formats > div.store-link .inner {
  left: 50%;
  transform: translateX(-50%);
  position: relative;
  width: 98%;
  width: calc(100% - 12px);
  border-radius: 10px;
  display: table;
  table-layout: fixed;
}

@media screen and (min-width: 37.5em) {
  .app-formats > div.store-link .inner {
    margin: 8px 0 0 0;
    padding: 8px 0 4px 0;
    border: 1px solid #aaaaaa;
  }
}

@media screen and (min-width: 37.5em) and (max-width: 59.99em) {
  .app-formats > div.store-link .inner {
    position: relative;
  }
}

@media screen and (min-width: 37.5em) and (max-width: 46.24em) {
  .app-formats > div.store-link .inner {
    padding: 4px 0 8px 0;
  }
}

@media screen and (min-width: 60em) {
  .app-formats > div.store-link:hover {
    cursor: pointer;
  }
  .app-formats > div.store-link:hover a {
    text-decoration: underline;
  }
}

.app-formats > div.store-link.ios .icon {
  padding-left: 42px;
}

@media screen and (min-width: 46.25em) {
  .app-formats > div.store-link.android .icon img {
    margin-left: 12px;
  }
}

.app-formats > div.store-link.android .icon {
  padding-left: 24px !important;
}

.app-formats > div.store-link .inner > div {
  display: table-cell;
  vertical-align: middle;
}

@media screen and (max-width: 46.24em) {
  .app-formats > div.store-link .inner > div {
    display: block;
  }
}

.app-formats > div.store-link .inner > div.icon {
  text-align: left;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-right: 16px;
}

@media screen and (max-width: 59.99em) {
  .app-formats > div.store-link .inner > div.icon {
    display: none;
  }
}

.app-formats > div.store-link .inner > div.text {
  text-align: center;
  font-size: 17px;
  font-variant: small-caps;
  color: white;
}

.app-formats > div.store-link .inner > div.text a {
  color: white;
  text-decoration: none;
}

.app-formats > div.store-link .inner > div.qr {
  text-align: right;
  padding-left: 18px;
  padding-right: 8px;
}

@media screen and (max-width: 46.24em) {
  .app-formats > div.store-link .inner > div.qr {
    text-align: center;
  }
}

@media screen and (max-width: 37.49em) {
  .app-formats > div.store-link .inner > div.qr {
    display: none !important;
  }
}

.app-formats > div.store-link .inner > div.qr img {
  max-width: 100px;
}

@media screen and (max-width: 59.99em) {
  .app-formats > div.store-link .inner > div.qr img {
    width: 100%;
  }
}

@media screen and (min-width: 46.25em) and (max-width: 59.99em) {
  .app-formats > div.store-link .inner > div.app-button {
    top: 50%;
    transform: translateY(-50%);
    position: absolute;
    left: 8px;
    text-align: left;
  }
}

@media screen and (max-width: 46.24em) {
  .app-formats > div.store-link .inner > div.app-button {
    text-align: center;
  }
}

.app-formats > div.store-link .inner > div.app-button a {
  padding-left: 42px;
}

@media screen and (max-width: 37.49em) {
  .app-formats > div.store-link .inner > div.app-button a {
    margin: 12px 0 0 0;
  }
}

#app-intro {
  background-color: #131;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  /*
 * Responsive slideshow widget using Slick carousel
 */
  /******************************************************
* Slick Carousel default theme overrides
******************************************************/
  padding: 4px 0 0 0;
  margin-bottom: 16px;
  display: none;
}

#app-intro, #app-intro a {
  color: white;
}

#app-intro:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 0;
  background: linear-gradient(#2e802e, #174517);
  border-radius: 4px 4px 0 0;
  z-index: -1;
}

#app-intro:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#184719, #113311);
  z-index: -1;
}

#app-intro > * {
  z-index: 2;
}

body:not(.fullscreen) #app-intro > * {
  position: relative;
}

#app-intro .slick-prev,
#app-intro .slick-next {
  z-index: 1;
  width: auto !important;
  height: auto !important;
}

#app-intro .slick-prev:before,
#app-intro .slick-next:before {
  background-color: black;
  border-radius: 20px;
}

#app-intro .slick-prev {
  left: 16px;
}

#app-intro .slick-prev:before {
  content: "\f104";
  font: 40px/1 'FontAwesome';
  padding: 0 16px 2px 12px;
}

#app-intro .slick-next {
  right: 16px;
  text-align: right;
}

#app-intro .slick-next:before {
  content: "\f105";
  font: 40px/1 'FontAwesome';
  padding: 0 12px 2px 16px;
}

#app-intro .slick-prev:hover:before,
#app-intro .slick-next:hover:before {
  color: #7e7e7e;
}

@media (pointer: coarse) and (hover: none) {
  #app-intro .slick-prev:hover:before,
  #app-intro .slick-next:hover:before {
    color: white;
    opacity: 0.75;
  }
}

@media screen and (max-width: 48.615em) {
  #app-intro .slick-prev:hover:before,
  #app-intro .slick-next:hover:before {
    color: white;
    opacity: 0.75;
  }
}

#app-intro .slideshow {
  margin: 0 auto 0 auto;
  width: 100%;
}

#app-intro .slideshow:not(.initialised) .slide {
  display: none !important;
}

#app-intro .slideshow:not(.initialised) .slide:first-child {
  display: block !important;
}

#app-intro .slideshow.loading {
  width: 100%;
}

body:not(.fullscreen) #app-intro .slideshow.loading {
  position: relative;
}

#app-intro .slideshow.loading::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -30px;
  margin-left: -30px;
  width: 50px;
  height: 50px;
  border-radius: 50px;
  border: 5px solid rgba(255, 255, 255, 0.25);
  border-top-color: white;
  animation: loading 1s ease infinite;
}

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

#app-intro .slideshow.loading .caption {
  display: none !important;
}

#app-intro .slideshow.loading .slide {
  visibility: hidden;
}

#app-intro .slideshow.loading .slide:first-child .caption {
  display: block !important;
}

#app-intro .slideshow.loading .slide img {
  display: none;
}

#app-intro .slideshow.initialised:not(.loading) .wrapper:not(.evaluating) {
  position: relative;
}

#app-intro .slideshow.initialised:not(.loading) .wrapper:not(.evaluating) .caption {
  top: 50%;
  transform: translateY(-50%);
  position: absolute;
}

#app-intro .slideshow .slide img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
}

#app-intro .slideshow .slide .caption {
  font-family: "Coming Soon";
  color: #ddd;
  padding: 8px 16px;
  display: block;
  vertical-align: middle;
  font-size: 16pt;
}

@media screen and (max-width: 37.49em) {
  #app-intro .slideshow .slide .caption {
    font-size: 12pt;
    line-height: 14pt;
  }
}

#app-intro h2 {
  border-bottom: none;
  padding: 0 8px 8px 8px;
  margin: 0;
}

#app-intro .slideshow {
  background-color: #131;
}

#app-download-links {
  padding-bottom: 8px;
}

/*****************************************************************
 Links box
*****************************************************************/
.box {
  background-color: #2f2f2f;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  box-shadow: 4px 4px 4px #bbb;
  color: #eee;
  padding: 8px;
}

.box, .box a {
  color: white;
}

.box:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 0;
  background: linear-gradient(#717171, #424141);
  border-radius: 4px 4px 0 0;
  z-index: -1;
}

.box:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#404040, #2f2f2f);
  z-index: -1;
}

.box > * {
  z-index: 2;
}

body:not(.fullscreen) .box > * {
  position: relative;
}

.box a, .box strong {
  color: white;
}

.box h2 {
  border: none;
  margin: 0;
}

@media screen and (min-width: 60em) {
  #links {
    width: 300px;
    margin-left: 12px;
    margin-bottom: 12px;
    float: right;
  }
}

@media screen and (min-width: 60em) {
  #description {
    float: left;
    width: 600px;
  }
}

#description p {
  margin-top: 0px;
}

/******************************************************
* Sorting dropdown
******************************************************/
#sort-form {
  float: right;
  padding-top: 8px;
  padding-bottom: 8px;
}

/******************************************************
* Walk listing
******************************************************/
ul.walks {
  clear: both;
  margin-top: 16px;
  padding-left: 0 !important;
  margin-left: 0 !important;
}

li.walk {
  box-shadow: 4px 4px 4px #bbb;
  list-style: none;
  margin-bottom: 16px;
  page-break-inside: avoid;
}

li.walk:last-child {
  margin-bottom: 0;
}

li.walk .overview {
  padding-left: 4px;
  padding-right: 4px;
  padding-top: 2px;
  padding-bottom: 2px;
  border-top-left-radius: 4px;
  border-top-right-radius: 4px;
}

@media screen and (max-width: 46.24em) {
  li.walk .overview {
    display: none;
  }
}

li.walk .overview .distance {
  float: right;
  position: relative;
  top: 4px;
  color: white;
}

li.walk .overview h2 {
  font-size: 16pt;
  border: none;
  margin: 0 0 0 0;
}

li.walk .overview h2 a {
  color: white;
  text-decoration: none;
}

li.walk .detail {
  display: flex;
  background: white;
  border-bottom-right-radius: 4px;
  /*@include mqs($until: tablet) {
      align-items: center;
    }*/
}

li.walk .detail:after {
  content: '';
  display: block;
}

li.walk .detail .qr {
  float: right;
}

@media screen and (max-width: 46.24em) {
  li.walk .detail .qr {
    display: none;
  }
}

li.walk .detail .thumbnail {
  display: block;
  margin-right: 8px;
  margin-bottom: 0;
  min-width: 200px;
  min-height: 115px;
}

@media screen and (max-width: 46.24em) {
  li.walk .detail .thumbnail {
    max-width: 33%;
    min-width: 33%;
    min-height: auto;
  }
}

@media screen and (max-width: 19.99em) {
  li.walk .detail .thumbnail {
    max-width: 25%;
    min-height: auto;
  }
}

li.walk .detail .thumbnail img {
  width: 100%;
  height: 100%;
}

li.walk .detail .description {
  flex: 1;
}

@media screen and (min-width: 46.25em) {
  li.walk .detail .description .summary {
    display: none;
  }
}

li.walk .detail .description .summary h2 {
  border: none;
  margin-top: 0;
}

li.walk .detail .description .summary h2 a {
  text-decoration: none;
}

li.walk .detail .description .synopsis {
  margin-top: 0;
  margin-bottom: 0;
  padding: 4px;
}

@media screen and (max-width: 46.24em) {
  li.walk .detail .description .synopsis {
    display: none;
  }
}

.walk-grade-1 {
  background: #1a731a;
}

.walk-grade-2 {
  background: #53731a;
}

.walk-grade-3 {
  background: #73731a;
}

.walk-grade-4 {
  background: #73531a;
}

.walk-grade-5 {
  background: #731a1a;
}

/********************************************************
* Bottom promo (if active)
********************************************************/
/**
* Display a bottom promo in a light green box
*/
.bottom-promo {
  background-color: rgba(124, 197, 149, 0.65);
  border-radius: 4px;
  box-shadow: 4px 4px 4px #bbb;
  margin-top: 16px;
  padding: 8px;
}

.bottom-promo, .bottom-promo a {
  color: white;
}

.bottom-promo, .bottom-promo a {
  color: black;
}

.bottom-promo p {
  margin: 0;
}

/********************************************************
* Bottom section with mysteries and locality info
********************************************************/
/**
 * Breakpoints
 */
/**
 * Input capabilities
 */
/********************************************************
* Touch devices
********************************************************/
body {
  visibility: inherit;
}

.bottom-section {
  display: block;
}

@media screen and (min-width: 37.5em) {
  .bottom-section {
    display: flex;
    gap: 20px;
    align-items: flex-start;
  }
}

.bottom-section .locality-info {
  flex: 1;
}

.bottom-section .mysteries {
  flex: 0 0 300px;
  margin-top: 20px;
}

.bottom-section .mysteries img {
  width: 100%;
  display: block;
}

/********************************************************
* App instructions
********************************************************/
.app-instructions {
  display: none;
  margin-top: 24px;
}

/********************************************************
* Print simplification
********************************************************/
@media print {
  #main-photo, .overview, .locality-info, #sort, .bottom-promo {
    display: none;
  }
  .walk {
    box-shadow: none;
  }
  .walk-summary {
    border-bottom-right-radius: 0;
  }
  .app-instructions {
    display: block;
  }
}

/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiLi4vd3d3L2Nzcy93YWxrcy5jc3MiLAoJInNvdXJjZXMiOiBbCgkJIi4uL3d3dy9zY3NzL3dhbGtzLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fY29tbW9uLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fdmFyaWFibGVzLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fZ2VuZXJhbF9taXhpbnMuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19tZWRpYS5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX21xLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fdG91Y2guc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19tYWluX3Bob3RvLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fYXBwX2FkX2Zvcm1hdHMuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL2NvbXBvbmVudC9fc2xpZGVzaG93LnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9jb21wb25lbnQvX3NsaWNrX292ZXJyaWRlcy5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvY29tcG9uZW50L19sb2FkZXIuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19ib3R0b21fcHJvbW8uc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19jb21tb24uc2NzcyIKCV0sCgkic291cmNlc0NvbnRlbnQiOiBbCgkJIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiogT3B0aW9uYWwgR29vZ2xlIG1hcCBzaG93aW5nIHdhbGsgbG9jYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbkBpbXBvcnQgXCJAaW5jbHVkZS9jb21tb25cIjtcblxuI21hcC1jb250YWluZXIge1xuICBkaXNwbGF5OiBub25lOyAvKkhpZGUgYnkgZGVmYXVsdCAodW5oaWRkZW4gYnkgc2hvd19tYXAgc2NyaXB0IGlmIEpTIGVuYWJsZWQpKi9cbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgY2xlYXI6IGxlZnQ7XG59XG4jZ29vZ2xlLW1hcCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDQwMHB4O1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qIE9wdGlvbmFsIG1haW4gaW1hZ2VcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuQGltcG9ydCBcIkBpbmNsdWRlL21haW5fcGhvdG9cIjtcblxuI21haW4tcGhvdG8gKyBkaXYge1xuXHRwOmZpcnN0LWNoaWxkIHtcblx0XHRtYXJnaW4tdG9wOiAwO1xuXHR9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIEFwcCBpbnRybyBzaG93biBmb3IgbmV3IHVzZXJzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbkBpbXBvcnQgXCIuLi9AaW5jbHVkZS9hcHBfYWRfZm9ybWF0c1wiO1xuXG4jYXBwLWludHJvIHtcbiAgQGluY2x1ZGUgYm94R3JhZGllbnREYXJrR3JlZW47XG4gIEBpbXBvcnQgXCIuL0BpbmNsdWRlL2NvbXBvbmVudC9zbGlkZXNob3dcIjtcbiAgcGFkZGluZzogNHB4IDAgMCAwO1xuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICBkaXNwbGF5OiBub25lO1xuICBcbiAgaDJ7XG5cdGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgcGFkZGluZzogMCA4cHggOHB4IDhweDtcblx0bWFyZ2luOiAwO1xuICB9XG4gIC5zbGlkZXNob3d7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGRhcmstZ3JlZW47XG4gIH1cbiAgXG59XG5cbiNhcHAtZG93bmxvYWQtbGlua3Mge1xuXHRwYWRkaW5nLWJvdHRvbTogOHB4O1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBMaW5rcyBib3hcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4uYm94IHtcbiAgQGluY2x1ZGUgYm94eTtcbiAgcGFkZGluZzogOHB4O1xufVxuXG5cbiNsaW5rcyB7XG4gIEBpbmNsdWRlIG1xcygkZnJvbTogcGFnZSkge1xuICAgIHdpZHRoOiAzMDBweDtcblx0bWFyZ2luLWxlZnQ6IDEycHg7XG5cdG1hcmdpbi1ib3R0b206IDEycHg7XG5cdGZsb2F0OnJpZ2h0O1xuICB9XG59XG5cbiNkZXNjcmlwdGlvbiB7XG4gIEBpbmNsdWRlIG1xcygkZnJvbTogcGFnZSkge1xuXHRmbG9hdDpsZWZ0O1xuICAgIHdpZHRoOiA2MDBweDtcbiAgfVxuICBcbiAgcCB7XG5cdG1hcmdpbi10b3A6IDBweDtcbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qIFNvcnRpbmcgZHJvcGRvd25cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuI3NvcnQtZm9ybSB7XG4gIGZsb2F0OiByaWdodDtcbiAgcGFkZGluZy10b3A6IDhweDtcbiAgcGFkZGluZy1ib3R0b206IDhweDtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBXYWxrIGxpc3RpbmdcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxudWwud2Fsa3Mge1xuICBjbGVhcjogYm90aDtcbiAgbWFyZ2luLXRvcDoxNnB4O1xuICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcbn1cblxubGkud2FsayB7XG4gIEBpbmNsdWRlIGJveFNoYWRvdztcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIC8vIG92ZXJ2aWV3IGluIGhlYWRlciBmb3IgdGFibGV0cyBhbmQgZGVza3RvcHNcbiAgLm92ZXJ2aWV3e1xuICAgIHBhZGRpbmctbGVmdDogNHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDRweDtcbiAgICBwYWRkaW5nLXRvcDogMnB4O1xuICAgIHBhZGRpbmctYm90dG9tOiAycHg7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG5cbiAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmRpc3RhbmNlIHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRvcDogNHB4O1xuICAgICAgY29sb3I6IHdoaXRlO1xuICAgIH1cblxuICAgIGgyIHtcbiAgICAgIGZvbnQtc2l6ZTogMTZwdDtcbiAgICAgIGJvcmRlcjpub25lO1xuICAgICAgbWFyZ2luOiAwIDAgMCAwO1xuXG4gICAgICBhIHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmRldGFpbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xuXG4gICAgLypAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQpIHtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfSovXG5cbiAgICAmOmFmdGVye1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAucXIge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0KSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdGh1bWJuYWlsIGltYWdlXG4gICAgLnRodW1ibmFpbCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgICBtaW4taGVpZ2h0OiAxMTVweDtcblxuICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0KSB7XG4gICAgICAgIG1heC13aWR0aDogMzMlO1xuICAgICAgICBtaW4td2lkdGg6IDMzJTtcbiAgICAgICAgbWluLWhlaWdodDogYXV0bztcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogbW9iaWxlKSB7XG4gICAgICAgIG1heC13aWR0aDogMjUlO1xuICAgICAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICAgICAgfVxuXG4gICAgICBpbWd7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gIGRlc2NyaXB0aW9uXG4gICAgLmRlc2NyaXB0aW9ue1xuICAgICAgZmxleDogMTtcbiAgICAgIC8vIHN1bW1hcnkgZm9yIHBob25lc1xuICAgICAgLnN1bW1hcnl7XG4gICAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0KSB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGgye1xuICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgIGF7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHN5bm9wc2lzIGZvciB0YWJsZXRzIGFuZCBkZXNrdG9wc1xuICAgICAgLnN5bm9wc2lzIHtcbiAgICAgICAgbWFyZ2luLXRvcDowO1xuICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICAgIHBhZGRpbmc6NHB4O1xuXG4gICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldCkge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG59XG5cblxuXG5cblxuLndhbGstZ3JhZGUtMSB7YmFja2dyb3VuZDogIzFhNzMxYX1cbi53YWxrLWdyYWRlLTIge2JhY2tncm91bmQ6ICM1MzczMWF9XG4ud2Fsay1ncmFkZS0zIHtiYWNrZ3JvdW5kOiAjNzM3MzFhfVxuLndhbGstZ3JhZGUtNCB7YmFja2dyb3VuZDogIzczNTMxYX1cbi53YWxrLWdyYWRlLTUge2JhY2tncm91bmQ6ICM3MzFhMWF9XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qIEJvdHRvbSBwcm9tbyAoaWYgYWN0aXZlKVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0IFwiQGluY2x1ZGUvYm90dG9tX3Byb21vXCI7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBCb3R0b20gc2VjdGlvbiB3aXRoIG15c3RlcmllcyBhbmQgbG9jYWxpdHkgaW5mb1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0IFwiLi4vQGluY2x1ZGUvY29tbW9uXCI7XG4uYm90dG9tLXNlY3Rpb24ge1xuICBkaXNwbGF5OiBibG9jaztcblxuICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDIwcHg7IC8vIG9wdGlvbmFsIHNwYWNpbmcgYmV0d2VlbiBibG9ja3NcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgfVxuXG4gIC5sb2NhbGl0eS1pbmZvIHtcbiAgICBmbGV4OiAxO1xuICB9XG5cbiAgLm15c3RlcmllcyB7XG4gICAgZmxleDogMCAwIDMwMHB4OyAvLyBhZGp1c3Qgd2lkdGggYXMgbmVlZGVkXG4gICAgbWFyZ2luLXRvcDogMjBweDtcblxuICAgIGltZyB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxufVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qIEFwcCBpbnN0cnVjdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4uYXBwLWluc3RydWN0aW9ucyB7XG4gIGRpc3BsYXk6bm9uZTtcbiAgbWFyZ2luLXRvcDoyNHB4O1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiogUHJpbnQgc2ltcGxpZmljYXRpb25cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5AbWVkaWEgcHJpbnQge1xuICAjbWFpbi1waG90bywgLm92ZXJ2aWV3LCAubG9jYWxpdHktaW5mbywgI3NvcnQsIC5ib3R0b20tcHJvbW8ge2Rpc3BsYXk6bm9uZX1cblxuICAud2FsayB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxuXG4gIC53YWxrLXN1bW1hcnkge1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICB9XG5cbiAgLmFwcC1pbnN0cnVjdGlvbnMge1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gIH1cbn1cbiIsCgkJIi8vIENvbW1vbiBzdHlsZXNcbkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJnZW5lcmFsX21peGluc1wiO1xuQGltcG9ydCBcIm1lZGlhXCI7XG5AaW1wb3J0IFwidG91Y2hcIjtcblxuYm9keXtcbiAgdmlzaWJpbGl0eTogaW5oZXJpdDtcbn1cbiIsCgkJIi8vIFZhcmlhYmxlc1xuXG4kcGFnZS13aWR0aDogOTYwcHg7XG4kcmVzcG9uc2l2ZS1tZW51OiA3NzhweDtcblxuJGdyZXk6ICMyZjJmMmY7XG4kZGFyay1ncmVlbjogIzEzMTtcbiRncmVlbjogIzI4NWQxZTtcbiRibHVlOiAjMTk0MjRhO1xuJGxpZ2h0LWdyZWVuOiByZ2JhKDEyNCwgMTk3LCAxNDksIDAuNjUpO1xuJHJlZDogIzVjMWUxZTtcbiRkYXJrLXJlZDogIzY2MDAwMDtcblxuLy8gQm94IGdyYWRpZW50c1xuJGJveC1HcmFkLUhlaWdodDogMThweDtcblxuJGJveC1CRy1HcmV5OiAkZ3JleTtcbiRib3gtR3JhZC1VcHBlci1Ub3AtR3JleTogIzcxNzE3MTtcbiRib3gtR3JhZC1VcHBlci1Cb3R0b20tR3JleTogIzQyNDE0MTtcbiRib3gtR3JhZC1Mb3dlci1Ub3AtR3JleTogIzQwNDA0MDtcbiRib3gtR3JhZC1Mb3dlci1Cb3R0b20tR3JleTogIzJmMmYyZjtcblxuJGJveC1CRy1HcmVlbjogJGdyZWVuO1xuJGJveC1HcmFkLVVwcGVyLVRvcC1HcmVlbjogIzQ2OTkzNjtcbiRib3gtR3JhZC1VcHBlci1Cb3R0b20tR3JlZW46ICMzMDcwMjU7XG4kYm94LUdyYWQtTG93ZXItVG9wLUdyZWVuOiAjMzA3MjI1O1xuJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1HcmVlbjogIzI4NWQxZTtcblxuJGJveC1CRy1CbHVlOiAjMTk0MjRhO1xuJGJveC1HcmFkLVVwcGVyLVRvcC1CbHVlOiAjMTI2MTY3O1xuJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1CbHVlOiAjMTk0MjRhO1xuJGJveC1HcmFkLUxvd2VyLVRvcC1CbHVlOiAjMTk0MjRhO1xuJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1CbHVlOiAjMTk0MjRhO1xuXG5cbiRib3gtQkctRGFyay1HcmVlbjogJGRhcmstZ3JlZW47XG4kYm94LUdyYWQtVXBwZXItVG9wLURhcmstR3JlZW46ICMyZTgwMmU7XG4kYm94LUdyYWQtVXBwZXItQm90dG9tLURhcmstR3JlZW46ICMxNzQ1MTc7XG4kYm94LUdyYWQtTG93ZXItVG9wLURhcmstR3JlZW46ICMxODQ3MTk7XG4kYm94LUdyYWQtTG93ZXItQm90dG9tLURhcmstR3JlZW46ICMxMTMzMTE7XG5cbiRib3gtQkctUmVkOiAkcmVkO1xuJGJveC1HcmFkLVVwcGVyLVRvcC1SZWQ6ICNhODNiM2I7XG4kYm94LUdyYWQtVXBwZXItQm90dG9tLVJlZDogIzZlMjUyNTtcbiRib3gtR3JhZC1Mb3dlci1Ub3AtUmVkOiAjNzAyNTI1O1xuJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1SZWQ6ICM1YzFlMWU7XG5cbiRtcS1icmVha3BvaW50LW1vYmlsZTogMzIwcHg7XG4kbXEtYnJlYWtwb2ludC10YWJsZXQ3aW5jaDogNjAwcHg7XG4kbXEtYnJlYWtwb2ludC10YWJsZXQ6IDc0MHB4O1xuJG1xLWJyZWFrcG9pbnQtZGVza3RvcDogOTgwcHg7XG4kbXEtYnJlYWtwb2ludC13aWRlOiAxMzAwcHg7XG4kbXEtYnJlYWtwb2ludC1kZXNrdG9wQWQ6IDgxMHB4O1xuJG1xLWJyZWFrcG9pbnQtbW9iaWxlTGFuZHNjYXBlOiA0ODBweDtcbiRtcS1icmVha3BvaW50LW1lZGl1bUxvZ286IDQ0MHB4O1xuJG1xLWJyZWFrcG9pbnQtc21hbGxMb2dvOiAzMjBweDtcbiRtcS1icmVha3BvaW50LWhlYWRlclNvY2lhbEljb25zOiA5NTRweDtcbiRtcS1icmVha3BvaW50LXBhZ2U6ICRwYWdlLXdpZHRoO1xuJG1xLWJyZWFrcG9pbnQtcmVzcG9uc2l2ZU1lbnU6ICRyZXNwb25zaXZlLW1lbnU7XG5cblxuLy8gQnJlYWtwb2ludHNcbiRtcS1icmVha3BvaW50czogKFxuICAgICAgICBtb2JpbGU6ICAkbXEtYnJlYWtwb2ludC1tb2JpbGUsXG4gICAgICAgIHRhYmxldDdpbmNoOiAgJG1xLWJyZWFrcG9pbnQtdGFibGV0N2luY2gsXG4gICAgICAgIHRhYmxldDogICRtcS1icmVha3BvaW50LXRhYmxldCxcbiAgICAgICAgZGVza3RvcDogJG1xLWJyZWFrcG9pbnQtZGVza3RvcCxcbiAgICAgICAgd2lkZTogJG1xLWJyZWFrcG9pbnQtd2lkZSxcblxuICAvLyBUd2Vha3BvaW50c1xuICAgICAgICBkZXNrdG9wQWQ6ICRtcS1icmVha3BvaW50LWRlc2t0b3BBZCxcbiAgICAgICAgbW9iaWxlTGFuZHNjYXBlOiAkbXEtYnJlYWtwb2ludC1tb2JpbGVMYW5kc2NhcGUsXG4gICAgICAgIHNtYWxsTG9nbzogJG1xLWJyZWFrcG9pbnQtc21hbGxMb2dvLFxuICAgICAgICBwYWdlOiAkbXEtYnJlYWtwb2ludC1wYWdlLFxuICAgICAgICByZXNwb25zaXZlTWVudTogJG1xLWJyZWFrcG9pbnQtcmVzcG9uc2l2ZU1lbnUsXG4gICAgICAgIGhlYWRlclNvY2lhbEljb25zOiAkbXEtYnJlYWtwb2ludC1oZWFkZXJTb2NpYWxJY29uc1xuKTtcblxuXG4vLyBUbyBlbmFibGUgc3VwcG9ydCBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBAbWVkaWEgcXVlcmllcyxcbi8vIChJRSA8PSA4LCBGaXJlZm94IDw9IDMsIE9wZXJhIDw9IDkpIHNldCAkbXEtcmVzcG9uc2l2ZSB0byBmYWxzZVxuLy8gQ3JlYXRlIGEgc2VwYXJhdGUgc3R5bGVzaGVldCBzZXJ2ZWQgZXhjbHVzaXZlbHkgdG8gdGhlc2UgYnJvd3NlcnMsXG4vLyBtZWFuaW5nIEBtZWRpYSBxdWVyaWVzIHdpbGwgYmUgcmFzdGVyaXplZCwgcmVseWluZyBvbiB0aGUgY2FzY2FkZSBpdHNlbGZcbiRtcS1yZXNwb25zaXZlOiB0cnVlO1xuXG4vLyBJZiB5b3Ugd2FudCB0byBkaXNwbGF5IHRoZSBjdXJyZW50bHkgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcFxuLy8gcmlnaHQgY29ybmVyIG9mIHlvdXIgc2l0ZSBkdXJpbmcgZGV2ZWxvcG1lbnQsIGFkZCB0aGUgYnJlYWtwb2ludHNcbi8vIHRvIHRoaXMgbGlzdCwgb3JkZXJlZCBieSB3aWR0aCwgZS5nLiAobW9iaWxlLCB0YWJsZXQsIGRlc2t0b3ApLlxuLy8kbXEtc2hvdy1icmVha3BvaW50czogKG1vYmlsZSwgbW9iaWxlTGFuZHNjYXBlLCB0YWJsZXQsIGRlc2t0b3AsIHdpZGUpO1xuIiwKCQkiQG1peGluIGlXYWxrTW9iaWxlR3JhZGllbnR7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNjOWRjZjQgMCUsIzgyYjVlYyAyMiUsIzI5OGFlMyA0NiUsIzNlYzFmNyA3MCUsIzNlYzFmNyAxMDAlKTtcbn1cblxuQG1peGluIGNlbnRyZVl7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbkBtaXhpbiBjZW50cmVYe1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cblxuQG1peGluIGNlbnRyZVhZe1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgIHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbkBtaXhpbiBncmV5X2dyYWRpZW50e1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDE4MSwgMTg5LCAyMDAsIDEpIDAlLCByZ2JhKDEzMCwgMTQwLCAxNDksIDEpIDM2JSwgcmdiYSg0MCwgNTIsIDU5LCAxKSAxMDAlKTtcbn1cblxuQG1peGluIGdyZWVuX2dyYWRpZW50e1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNGViOTRlIDAlLCAjMTA5MDEwIDM2JSwgIzA5M2UwOSAxMDAlKTtcbn1cblxuQG1peGluIGJveCgkYmcpe1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmc7XG4gIGJvcmRlci1yYWRpdXM6NHB4O1xuICAmLCBhe1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxufVxuXG5AbWl4aW4gYm94R3JhZGllbnQoJGJnLCAkdXBwZXItdG9wLCAkdXBwZXItYm90dG9tLCAkbG93ZXItdG9wLCAkbG93ZXItYm90dG9tLCAkaGVpZ2h0OiAkYm94LUdyYWQtSGVpZ2h0KXtcbiAgQGluY2x1ZGUgYm94KCRiZyk7XG4gIHotaW5kZXg6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAmOmJlZm9yZXtcbiAgICBjb250ZW50OicnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDA7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KCR1cHBlci10b3AsICR1cHBlci1ib3R0b20pO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwO1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG5cbiAgJjphZnRlcntcbiAgICBjb250ZW50OicnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6ICRoZWlnaHQ7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KCRsb3dlci10b3AsICRsb3dlci1ib3R0b20pO1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG5cbiAgPiAqe1xuICAgIHotaW5kZXg6IDI7XG5cbiAgICBAYXQtcm9vdCB7XG4gICAgICBib2R5Om5vdCguZnVsbHNjcmVlbikgI3smfSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGJveEdyYWRpZW50R3JleXtcbiAgQGluY2x1ZGUgYm94R3JhZGllbnQoJGJveC1CRy1HcmV5LCAkYm94LUdyYWQtVXBwZXItVG9wLUdyZXksICRib3gtR3JhZC1VcHBlci1Cb3R0b20tR3JleSwgJGJveC1HcmFkLUxvd2VyLVRvcC1HcmV5LCAkYm94LUdyYWQtTG93ZXItQm90dG9tLUdyZXkpO1xufVxuXG5AbWl4aW4gYm94R3JhZGllbnRHcmVlbntcbiAgQGluY2x1ZGUgYm94R3JhZGllbnQoJGJveC1CRy1HcmVlbiwgJGJveC1HcmFkLVVwcGVyLVRvcC1HcmVlbiwgJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1HcmVlbiwgJGJveC1HcmFkLUxvd2VyLVRvcC1HcmVlbiwgJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1HcmVlbik7XG59XG5cbkBtaXhpbiBib3hHcmFkaWVudEJsdWV7XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50KCRib3gtQkctQmx1ZSwgJGJveC1HcmFkLVVwcGVyLVRvcC1CbHVlLCAkYm94LUdyYWQtVXBwZXItQm90dG9tLUJsdWUsICRib3gtR3JhZC1Mb3dlci1Ub3AtQmx1ZSwgJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1CbHVlKTtcbn1cblxuQG1peGluIGJveEdyYWRpZW50RGFya0dyZWVue1xuICBAaW5jbHVkZSBib3hHcmFkaWVudCgkYm94LUJHLURhcmstR3JlZW4sICRib3gtR3JhZC1VcHBlci1Ub3AtRGFyay1HcmVlbiwgJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1EYXJrLUdyZWVuLCAkYm94LUdyYWQtTG93ZXItVG9wLURhcmstR3JlZW4sICRib3gtR3JhZC1Mb3dlci1Cb3R0b20tRGFyay1HcmVlbik7XG59XG5cbkBtaXhpbiBib3hHcmFkaWVudFJlZHtcbiAgQGluY2x1ZGUgYm94R3JhZGllbnQoJGJveC1CRy1SZWQsICRib3gtR3JhZC1VcHBlci1Ub3AtUmVkLCAkYm94LUdyYWQtVXBwZXItQm90dG9tLVJlZCwgJGJveC1HcmFkLUxvd2VyLVRvcC1SZWQsICRib3gtR3JhZC1Mb3dlci1Cb3R0b20tUmVkKTtcbn1cblxuQG1peGluIGJveFNoYWRvd3tcbiAgYm94LXNoYWRvdzogNHB4IDRweCA0cHggI2JiYjtcbn1cblxuQG1peGluIGJveHl7XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50R3JleTtcbiAgQGluY2x1ZGUgYm94U2hhZG93O1xuICBjb2xvcjogI2VlZTtcblxuICBhLCBzdHJvbmcge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxuXG4gIGgyIHtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbkBtaXhpbiBsaWdodEdyZWVuQm94e1xuICBAaW5jbHVkZSBib3goJGxpZ2h0LWdyZWVuKTtcbiAgJixhe1xuICAgIGNvbG9yOiBibGFjaztcbiAgfVxufVxuXG4iLAoJCSJcbi8qKlxuICogQnJlYWtwb2ludHNcbiAqL1xuXG5AaW1wb3J0IFwibXFcIjtcblxuXG5AbWl4aW4gbXFzKCRmcm9tOiBmYWxzZSwgJHVudGlsOiBmYWxzZSl7XG4gIEBpbmNsdWRlIG1xKCRmcm9tLCAkdW50aWwsICRtZWRpYS10eXBlOiBzY3JlZW4pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vKipcbiAqIElucHV0IGNhcGFiaWxpdGllc1xuICovXG5cbi8vIHNtYXJ0cGhvbmVzIGFuZCB0YWJsZXRzXG5AbWl4aW4gdG91Y2gtc2NyZWVuLWlucHV0IHtcbiAgQG1lZGlhIChwb2ludGVyOiBjb2Fyc2UpXG4gIGFuZCAoaG92ZXI6IG5vbmUpe1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1vdXNlIG9yIHRvdWNoIHBhZFxuQG1peGluIG1vdXNlLWlucHV0IHtcbiAgQG1lZGlhIChwb2ludGVyOiBmaW5lKVxuICBhbmQgKGhvdmVyOiBob3Zlcil7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU2hvdyBmb3IgdG91Y2ggc2NyZWVuc1xuLy8gYW5kIHVwIHVudGlsIHRhYmxldCBkZXZpY2Ugd2lkdGggZm9yIHRhYmxldHMgbm90IHN1cHBvcnRpbmcgaW5wdXQgbWVkaWEgcXVlcmllcyBpZS4gb2xkIEFuZHJvaWQgNC54XG5AbWl4aW4gdG91Y2gtc2NyZWVuLWRldmljZXN7XG4gIEBpbmNsdWRlIHRvdWNoLXNjcmVlbi1pbnB1dCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcmVzcG9uc2l2ZU1lbnUpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBOaW50ZW5kbyBXaWkgY29udHJvbGxlciwgS2luZWN0LCBldGMuXG5AbWl4aW4gY29uc29sZS1pbnB1dCB7XG4gIEBtZWRpYSAocG9pbnRlcjogY29hcnNlKVxuICBhbmQgKGhvdmVyOiBob3Zlcil7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gc3R5bHVzLWJhc2VkIHNjcmVlbnMgKENpbnRpcSwgV2Fjb20sIGV0YylcbkBtaXhpbiBjb25zb2xlLWlucHV0IHtcbiAgQG1lZGlhIChwb2ludGVyOiBmaW5lKVxuICBhbmQgKGhvdmVyOiBub25lKXtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBSZXRpbmEgZGlzcGxheXMgKDJ4KVxuQG1peGluIHJldGluYSB7XG4gIEBtZWRpYSAobWluLS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpLCgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAzLzIpLFxuICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpLChtaW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpLChtaW4tcmVzb2x1dGlvbjogMS41ZHBweCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLAoJCSJAY2hhcnNldCBcIlVURi04XCI7IC8vIEZpeGVzIGFuIGlzc3VlIHdoZXJlIFJ1YnkgbG9jYWxlIGlzIG5vdCBzZXQgcHJvcGVybHlcbiAgICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL3B1bGwvMTBcblxuLy8vIEJhc2UgZm9udCBzaXplIG9uIHRoZSBgPGJvZHk+YCBlbGVtZW50XG4vLy8gQHR5cGUgTnVtYmVyICh1bml0KVxuJG1xLWJhc2UtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xuXG4vLy8gUmVzcG9uc2l2ZSBtb2RlXG4vLy9cbi8vLyBTZXQgdG8gYGZhbHNlYCB0byBlbmFibGUgc3VwcG9ydCBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBAbWVkaWEgcXVlcmllcyxcbi8vLyAoSUUgPD0gOCwgRmlyZWZveCA8PSAzLCBPcGVyYSA8PSA5KVxuLy8vXG4vLy8gWW91IGNvdWxkIGNyZWF0ZSBhIHN0eWxlc2hlZXQgc2VydmVkIGV4Y2x1c2l2ZWx5IHRvIG9sZGVyIGJyb3dzZXJzLFxuLy8vIHdoZXJlIEBtZWRpYSBxdWVyaWVzIGFyZSByYXN0ZXJpemVkXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIG9sZC1pZS5zY3NzXG4vLy8gICRtcS1yZXNwb25zaXZlOiBmYWxzZTtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gJG1xLXN0YXRpYy1icmVha3BvaW50XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgQm9vbGVhblxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjcmVzcG9uc2l2ZS1tb2RlLW9mZiBEaXNhYmxlZCByZXNwb25zaXZlIG1vZGUgZG9jdW1lbnRhdGlvblxuJG1xLXJlc3BvbnNpdmU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBCcmVha3BvaW50IGxpc3Rcbi8vL1xuLy8vIE5hbWUgeW91ciBicmVha3BvaW50cyBpbiBhIHdheSB0aGF0IGNyZWF0ZXMgYSB1YmlxdWl0b3VzIGxhbmd1YWdlXG4vLy8gYWNyb3NzIHRlYW0gbWVtYmVycy4gSXQgd2lsbCBpbXByb3ZlIGNvbW11bmljYXRpb24gYmV0d2VlblxuLy8vIHN0YWtlaG9sZGVycywgZGVzaWduZXJzLCBkZXZlbG9wZXJzLCBhbmQgdGVzdGVycy5cbi8vL1xuLy8vIEB0eXBlIE1hcFxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjc2VlaW5nLXRoZS1jdXJyZW50bHktYWN0aXZlLWJyZWFrcG9pbnQgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLWJyZWFrcG9pbnRzOiAoXG4gICAgbW9iaWxlOiAgMzIwcHgsXG4gICAgdGFibGV0OiAgNzQwcHgsXG4gICAgZGVza3RvcDogOTgwcHgsXG4gICAgd2lkZTogICAgMTMwMHB4XG4pICFkZWZhdWx0O1xuXG4vLy8gU3RhdGljIGJyZWFrcG9pbnQgKGZvciBmaXhlZC13aWR0aCBsYXlvdXRzKVxuLy8vXG4vLy8gRGVmaW5lIHRoZSBicmVha3BvaW50IGZyb20gJG1xLWJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkXG4vLy8gYmUgdXNlZCBhcyB0aGUgdGFyZ2V0IHdpZHRoIGZvciB0aGUgZml4ZWQtd2lkdGggbGF5b3V0XG4vLy8gKGkuZS4gd2hlbiAkbXEtcmVzcG9uc2l2ZSBpcyBzZXQgdG8gJ2ZhbHNlJykgaW4gYSBvbGQtaWUuc2Nzc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyB0YWJsZXQtb25seS5zY3NzXG4vLy8gIC8vXG4vLy8gIC8vIElnbm9yZSBhbGwgc3R5bGVzIGFib3ZlIHRhYmxldCBicmVha3BvaW50LFxuLy8vICAvLyBhbmQgZml4IHRoZSBzdHlsZXMgKGUuZy4gbGF5b3V0KSBhdCB0YWJsZXQgd2lkdGhcbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xuLy8vICAkbXEtc3RhdGljLWJyZWFrcG9pbnQ6IHRhYmxldDtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gdGFibGV0XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNhZGRpbmctY3VzdG9tLWJyZWFrcG9pbnRzIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1zdGF0aWMtYnJlYWtwb2ludDogZGVza3RvcCAhZGVmYXVsdDtcblxuLy8vIFNob3cgYnJlYWtwb2ludHMgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vL1xuLy8vIElmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnRseSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wXG4vLy8gcmlnaHQgY29ybmVyIG9mIHlvdXIgc2l0ZSBkdXJpbmcgZGV2ZWxvcG1lbnQsIGFkZCB0aGUgYnJlYWtwb2ludHNcbi8vLyB0byB0aGlzIGxpc3QsIG9yZGVyZWQgYnkgd2lkdGgsIGUuZy4gKG1vYmlsZSwgdGFibGV0LCBkZXNrdG9wKS5cbi8vL1xuLy8vIEB0eXBlIG1hcFxuJG1xLXNob3ctYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuXG4vLy8gQ3VzdG9taXplIHRoZSBtZWRpYSB0eXBlIChlLmcuIGBAbWVkaWEgc2NyZWVuYCBvciBgQG1lZGlhIHByaW50YClcbi8vLyBCeSBkZWZhdWx0IHNhc3MtbXEgdXNlcyBhbiBcImFsbFwiIG1lZGlhIHR5cGUgKGBAbWVkaWEgYWxsIGFuZCDigKZgKVxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNjaGFuZ2luZy1tZWRpYS10eXBlIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1tZWRpYS10eXBlOiBhbGwgIWRlZmF1bHQ7XG5cbi8vLyBDb252ZXJ0IHBpeGVscyB0byBlbXNcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcHggLSB2YWx1ZSB0byBjb252ZXJ0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlLWZvbnQtc2l6ZSAoJG1xLWJhc2UtZm9udC1zaXplKSAtIGA8Ym9keT5gIGZvbnQgc2l6ZVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkZm9udC1zaXplLWluLWVtczogbXEtcHgyZW0oMTZweCk7XG4vLy8gIHAgeyBmb250LXNpemU6IG1xLXB4MmVtKDE2cHgpOyB9XG4vLy9cbi8vLyBAcmVxdWlyZXMgJG1xLWJhc2UtZm9udC1zaXplXG4vLy8gQHJldHVybnMge051bWJlcn1cbkBmdW5jdGlvbiBtcS1weDJlbSgkcHgsICRiYXNlLWZvbnQtc2l6ZTogJG1xLWJhc2UtZm9udC1zaXplKSB7XG4gICAgQGlmIHVuaXRsZXNzKCRweCkge1xuICAgICAgICBAd2FybiBcIkFzc3VtaW5nICN7JHB4fSB0byBiZSBpbiBwaXhlbHMsIGF0dGVtcHRpbmcgdG8gY29udmVydCBpdCBpbnRvIHBpeGVscy5cIjtcbiAgICAgICAgQHJldHVybiBtcS1weDJlbSgkcHggKiAxcHgsICRiYXNlLWZvbnQtc2l6ZSk7XG4gICAgfSBAZWxzZSBpZiB1bml0KCRweCkgPT0gZW0ge1xuICAgICAgICBAcmV0dXJuICRweDtcbiAgICB9XG4gICAgQHJldHVybiAoJHB4IC8gJGJhc2UtZm9udC1zaXplKSAqIDFlbTtcbn1cblxuLy8vIEdldCBhIGJyZWFrcG9pbnQncyB3aWR0aFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludC4gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkdGFibGV0LXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCh0YWJsZXQpO1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoZGVza3RvcCkpIHt9XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFZhbHVlIGluIHBpeGVsc1xuQGZ1bmN0aW9uIG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cykge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSB7XG4gICAgICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQHdhcm4gXCJCcmVha3BvaW50ICN7JG5hbWV9IHdhc24ndCBmb3VuZCBpbiAkYnJlYWtwb2ludHMuXCI7XG4gICAgfVxufVxuXG4vLy8gTWVkaWEgUXVlcnkgbWl4aW5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGZyb20gKGZhbHNlKSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICR1bnRpbCAoZmFsc2UpIC0gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGFuZCAoZmFsc2UpIC0gQWRkaXRpb25hbCBtZWRpYSBxdWVyeSBwYXJhbWV0ZXJzXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZWRpYS10eXBlICgkbXEtbWVkaWEtdHlwZSkgLSBNZWRpYSB0eXBlOiBzY3JlZW4sIHByaW504oCmXG4vLy9cbi8vLyBAaWdub3JlIFVuZG9jdW1lbnRlZCBBUEksIGZvciBhZHZhbmNlZCB1c2Ugb25seTpcbi8vLyBAaWdub3JlIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgKCRtcS1icmVha3BvaW50cylcbi8vLyBAaWdub3JlIEBwYXJhbSB7U3RyaW5nfSAkc3RhdGljLWJyZWFrcG9pbnQgKCRtcS1zdGF0aWMtYnJlYWtwb2ludClcbi8vL1xuLy8vIEBjb250ZW50IHN0eWxpbmcgcnVsZXMsIHdyYXBwZWQgaW50byBhIEBtZWRpYSBxdWVyeSB3aGVuICRyZXNwb25zaXZlIGlzIHRydWVcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1tZWRpYS10eXBlXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXN0YXRpYy1icmVha3BvaW50XG4vLy8gQHJlcXVpcmVzIHtmdW5jdGlvbn0gbXEtcHgyZW1cbi8vLyBAcmVxdWlyZXMge2Z1bmN0aW9ufSBtcS1nZXQtYnJlYWtwb2ludC13aWR0aFxuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNyZXNwb25zaXZlLW1vZGUtb24tZGVmYXVsdCBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC5lbGVtZW50IHtcbi8vLyAgICBAaW5jbHVkZSBtcSgkZnJvbTogbW9iaWxlKSB7XG4vLy8gICAgICBjb2xvcjogcmVkO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSgkdW50aWw6IHRhYmxldCkge1xuLy8vICAgICAgY29sb3I6IGJsdWU7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKG1vYmlsZSwgdGFibGV0KSB7XG4vLy8gICAgICBjb2xvcjogZ3JlZW47XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKCRmcm9tOiB0YWJsZXQsICRhbmQ6ICcob3JpZW50YXRpb246IGxhbmRzY2FwZSknKSB7XG4vLy8gICAgICBjb2xvcjogdGVhbDtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoOTUwcHgpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSh0YWJsZXQsICRtZWRpYS10eXBlOiBzY3JlZW4pIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICAvLyBBZHZhbmNlZCB1c2U6XG4vLy8gICAgJG15LWJyZWFrcG9pbnRzOiAoTDogOTAwcHgsIFhMOiAxMjAwcHgpO1xuLy8vICAgIEBpbmNsdWRlIG1xKEwsICRicmVha3BvaW50czogJG15LWJyZWFrcG9pbnRzLCAkc3RhdGljLWJyZWFrcG9pbnQ6IEwpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgfVxuQG1peGluIG1xKFxuICAgICRmcm9tOiBmYWxzZSxcbiAgICAkdW50aWw6IGZhbHNlLFxuICAgICRhbmQ6IGZhbHNlLFxuICAgICRtZWRpYS10eXBlOiAkbXEtbWVkaWEtdHlwZSxcbiAgICAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cyxcbiAgICAkcmVzcG9uc2l2ZTogJG1xLXJlc3BvbnNpdmUsXG4gICAgJHN0YXRpYy1icmVha3BvaW50OiAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbikge1xuICAgICRtaW4td2lkdGg6IDA7XG4gICAgJG1heC13aWR0aDogMDtcbiAgICAkbWVkaWEtcXVlcnk6ICcnO1xuXG4gICAgLy8gRnJvbTogdGhpcyBicmVha3BvaW50IChpbmNsdXNpdmUpXG4gICAgQGlmICRmcm9tIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGZyb20pID09IG51bWJlciB7XG4gICAgICAgICAgICAkbWluLXdpZHRoOiBtcS1weDJlbSgkZnJvbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0obXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJGZyb20sICRicmVha3BvaW50cykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVW50aWw6IHRoYXQgYnJlYWtwb2ludCAoZXhjbHVzaXZlKVxuICAgIEBpZiAkdW50aWwge1xuICAgICAgICBAaWYgdHlwZS1vZigkdW50aWwpID09IG51bWJlciB7XG4gICAgICAgICAgICAkbWF4LXdpZHRoOiBtcS1weDJlbSgkdW50aWwpO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRtYXgtd2lkdGg6IG1xLXB4MmVtKG1xLWdldC1icmVha3BvaW50LXdpZHRoKCR1bnRpbCwgJGJyZWFrcG9pbnRzKSkgLSAuMDFlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgc3VwcG9ydCBpcyBkaXNhYmxlZCwgcmFzdGVyaXplIHRoZSBvdXRwdXQgb3V0c2lkZSBAbWVkaWEgYmxvY2tzXG4gICAgLy8gVGhlIGJyb3dzZXIgd2lsbCByZWx5IG9uIHRoZSBjYXNjYWRlIGl0c2VsZi5cbiAgICBAaWYgJHJlc3BvbnNpdmUgPT0gZmFsc2Uge1xuICAgICAgICAkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzdGF0aWMtYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAgICAgJHRhcmdldC13aWR0aDogbXEtcHgyZW0oJHN0YXRpYy1icmVha3BvaW50LXdpZHRoKTtcblxuICAgICAgICAvLyBPdXRwdXQgb25seSBydWxlcyB0aGF0IHN0YXJ0IGF0IG9yIHNwYW4gb3VyIHRhcmdldCB3aWR0aFxuICAgICAgICBAaWYgKFxuICAgICAgICAgICAgJGFuZCA9PSBmYWxzZVxuICAgICAgICAgICAgYW5kICRtaW4td2lkdGggPD0gJHRhcmdldC13aWR0aFxuICAgICAgICAgICAgYW5kIChcbiAgICAgICAgICAgICAgICAkdW50aWwgPT0gZmFsc2Ugb3IgJG1heC13aWR0aCA+PSAkdGFyZ2V0LXdpZHRoXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIHsgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGVuYWJsZWQsIG91dHB1dCBydWxlcyBpbnNpZGUgQG1lZGlhIHF1ZXJpZXNcbiAgICAgICAgQGlmICRtaW4td2lkdGggIT0gMCB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1pbi13aWR0aDogI3skbWluLXdpZHRofSknOyB9XG4gICAgICAgIEBpZiAkbWF4LXdpZHRoICE9IDAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kIChtYXgtd2lkdGg6ICN7JG1heC13aWR0aH0pJzsgfVxuICAgICAgICBAaWYgJGFuZCAgICAgICAgICAgIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAjeyRhbmR9JzsgfVxuXG4gICAgICAgIC8vIFJlbW92ZSB1bm5lY2Vzc2FyeSBtZWRpYSBxdWVyeSBwcmVmaXggJ2FsbCBhbmQgJ1xuICAgICAgICBAaWYgKCRtZWRpYS10eXBlID09ICdhbGwnIGFuZCAkbWVkaWEtcXVlcnkgIT0gJycpIHtcbiAgICAgICAgICAgICRtZWRpYS10eXBlOiAnJztcbiAgICAgICAgICAgICRtZWRpYS1xdWVyeTogc3RyLXNsaWNlKHVucXVvdGUoJG1lZGlhLXF1ZXJ5KSwgNik7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgI3skbWVkaWEtdHlwZSArICRtZWRpYS1xdWVyeX0ge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vLyBBZGQgYSBicmVha3BvaW50XG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCAtIFdpZHRoIG9mIHRoZSBicmVha3BvaW50XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgQGluY2x1ZGUgbXEtYWRkLWJyZWFrcG9pbnQodHZzY3JlZW4sIDE5MjBweCk7XG4vLy8gIEBpbmNsdWRlIG1xKHR2c2NyZWVuKSB7fVxuQG1peGluIG1xLWFkZC1icmVha3BvaW50KCRuYW1lLCAkd2lkdGgpIHtcbiAgICAkbmV3LWJyZWFrcG9pbnQ6ICgkbmFtZTogJHdpZHRoKTtcbiAgICAkbXEtYnJlYWtwb2ludHM6IG1hcC1tZXJnZSgkbXEtYnJlYWtwb2ludHMsICRuZXctYnJlYWtwb2ludCkgIWdsb2JhbDtcbn1cblxuLy8vIFNob3cgdGhlIGFjdGl2ZSBicmVha3BvaW50IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyIG9mIHRoZSB2aWV3cG9ydFxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjc2VlaW5nLXRoZS1jdXJyZW50bHktYWN0aXZlLWJyZWFrcG9pbnRcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNob3ctYnJlYWtwb2ludHMgKCRtcS1zaG93LWJyZWFrcG9pbnRzKSAtIExpc3Qgb2YgYnJlYWtwb2ludHMgdG8gc2hvdyBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lclxuLy8vIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgKCRtcS1icmVha3BvaW50cykgLSBCcmVha3BvaW50IG5hbWVzIGFuZCBzaXplc1xuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXNob3ctYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gU2hvdyBicmVha3BvaW50cyB1c2luZyBnbG9iYWwgc2V0dGluZ3Ncbi8vLyAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcbi8vL1xuLy8vICAvLyBTaG93IGJyZWFrcG9pbnRzIHVzaW5nIGN1c3RvbSBzZXR0aW5nc1xuLy8vICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzKChMLCBYTCksIChTOiAzMDBweCwgTDogODAwcHgsIFhMOiAxMjAwcHgpKTtcbkBtaXhpbiBtcS1zaG93LWJyZWFrcG9pbnRzKCRzaG93LWJyZWFrcG9pbnRzOiAkbXEtc2hvdy1icmVha3BvaW50cywgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMpIHtcbiAgICBib2R5OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGQ0Y4RTM7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRkJFRUQ1O1xuICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNGQkVFRDU7XG4gICAgICAgIGNvbG9yOiAjQzA5ODUzO1xuICAgICAgICBmb250OiBzbWFsbC1jYXB0aW9uO1xuICAgICAgICBwYWRkaW5nOiAzcHggNnB4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB6LWluZGV4OiAxMDA7XG5cbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIHRoZSBicmVha3BvaW50cyB0aGF0IHNob3VsZCBiZSBzaG93blxuICAgICAgICBAZWFjaCAkc2hvdy1icmVha3BvaW50IGluICRzaG93LWJyZWFrcG9pbnRzIHtcbiAgICAgICAgICAgICR3aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHNob3ctYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50czogJGJyZWFrcG9pbnRzKSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCIjeyRzaG93LWJyZWFrcG9pbnR9IOKJpSAjeyR3aWR0aH0gKCN7bXEtcHgyZW0oJHdpZHRoKX0pXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpZiBsZW5ndGgoJG1xLXNob3ctYnJlYWtwb2ludHMpID4gMCB7XG4gICAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcbn1cbiIsCgkJIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4qIFRvdWNoIGRldmljZXNcclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbkBpbXBvcnQgXCJnZW5lcmFsX21peGluc1wiO1xyXG5cclxuQG1peGluIGJveC1zaGFkb3d7XHJcbiAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwwLDAsLjE1KTtcclxufVxyXG5cclxuQG1peGluIHRvdWNoLXNjcmVlbi1zdHlsZXMge1xyXG5cclxuICAvLyBCdXR0b25zXHJcbiAgW2RhdGEtcm9sZT1cImJ1dHRvblwiXTpub3QoLm5vbi1yZXNwb25zaXZlKXtcclxuICAgIEBpbmNsdWRlIGJveC1zaGFkb3c7XHJcblxyXG4gICAgY29sb3I6ICMzMzMgIWltcG9ydGFudDtcclxuICAgIGJhY2tncm91bmQ6ICNlZWU7XHJcblxyXG4gICAgYm9yZGVyLWNvbG9yOiAjZGRkO1xyXG4gICAgYm9yZGVyLXdpZHRoOiAxcHg7XHJcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG5cclxuXHJcbiAgICBtYXJnaW46IC41ZW0gMDtcclxuICAgIHBhZGRpbmc6IC43ZW0gMWVtO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG5cclxuICAgICY6aG92ZXIsICY6YWN0aXZle1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjZThmMGZmO1xyXG4gICAgfVxyXG5cclxuICAgICZbZGF0YS1pY29uXXtcclxuICAgICAgcGFkZGluZy1sZWZ0OiAzMnB4O1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7XHJcbiAgICAgIGl7XHJcbiAgICAgICAgQGluY2x1ZGUgY2VudHJlWTtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgbGVmdDogOHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJi5ncmVlbiB7XHJcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICM4ZGRkYTAgMCUsICMzZGRiOGMgNTAlLCAjOGRkZGEwIDEwMCUpO1xyXG4gICAgICBib3JkZXItY29sb3I6ICMyYjZiMzc7XHJcbiAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuNSk7IC8vaGVhdmllciBzaGFkb3cgb24gZGFyayBncmVlbiBiZ1xyXG4gICAgICAmOmhvdmVyLCAmOmFjdGl2ZSB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2RjZjRlMSAwJSwgIzNkZGI4YyA1MCUsICNkY2Y0ZTEgMTAwJSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgICYuYmx1ZXtcclxuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjOGRjMGRkIDAlLCMzZGFjZGIgNTAlLCM4ZGMwZGQgMTAwJSk7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjMTI2MTY3O1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMyk7XHJcbiAgICAgICAgJjpob3ZlciwgJjphY3RpdmV7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZGNlMWY0IDAlLCM2ZWFjZWIgNTAlLCNkY2UxZjQgMTAwJSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGlzdHZpZXdzXHJcbiAgW2RhdGEtcm9sZT1cImxpc3R2aWV3XCJdOm5vdCgubm9uLXJlc3BvbnNpdmUpe1xyXG4gICAgQGluY2x1ZGUgYm94eTtcclxuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcclxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcblxyXG5cclxuICAgID5saXtcclxuICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbiAgICAgIG1hcmdpbjogMDtcclxuICAgICAgcGFkZGluZzogOHB4IDE2cHggOHB4IDhweCAhaW1wb3J0YW50O1xyXG4gICAgICBsaXN0LXN0eWxlOiBub25lO1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAjZGRkO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDFweCAxcHggMCAxcHg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50O1xyXG4gICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhe1xyXG4gICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XHJcbiAgICAgICAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAmOmFmdGVye1xyXG4gICAgICAgICAgY29udGVudDogJz4nO1xyXG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgcmlnaHQ6IDRweDtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0N2luY2gpIHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBMaW5rIGxpc3RzXHJcbiAgOm5vdCgubm9uLXJlc3BvbnNpdmUpOm5vdChbZGF0YS1yb2xlXSk6bm90KFtyb2xlXSkgPiBsaSA+IGE6b25seS1jaGlsZHtcclxuICAgIHBhZGRpbmc6IDhweCAwO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbiIsCgkJIi8qKlxuKiBEaXNwbGF5IGEgZnVsbC13aWR0aCBwaG90byB3aXRoIGEgd2hpdGUgYm9yZGVyXG4qL1xuXG4jbWFpbi1waG90byB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIGltZyB7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG5cbiAgLmltYWdlLWJvcmRlciB7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMTBweDtcbiAgICB0b3A6IDEwcHg7XG4gICAgcmlnaHQ6IDEwcHg7XG4gICAgYm90dG9tOiAxMHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHdoaXRlO1xuICB9XHRcbn1cbiIsCgkJIi5hcHAtZm9ybWF0cyB7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICBtYXJnaW46IDAgYXV0bztcbiAgd2lkdGg6IDEwMCU7XG5cbiAgLy9kZXNrdG9wXG4gIEBpbmNsdWRlIG1xcygkZnJvbTogcGFnZSkge1xuICAgIC5hcHAtYnV0dG9uIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAvL3RhYmxldFxuICBAaW5jbHVkZSBtcXMoJHVudGlsOiBwYWdlKSB7XG4gICAgLnRleHQge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0N2luY2gsICR1bnRpbDogcGFnZSkge1xuICAgIC5pY29ue1xuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgLmljb24ge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gID4gZGl2LnN0b3JlLWxpbmsge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG5cbiAgICAuaW5uZXJ7XG4gICAgICBAaW5jbHVkZSBjZW50cmVYO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgd2lkdGg6IDk4JTtcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxMnB4KTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG5cbiAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0N2luY2gpe1xuICAgICAgICBtYXJnaW46IDhweCAwIDAgMDtcbiAgICAgICAgcGFkZGluZzogOHB4IDAgNHB4IDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNhYWFhYWE7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0N2luY2gsICR1bnRpbDogcGFnZSkge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0N2luY2gsICR1bnRpbDogdGFibGV0KSB7XG4gICAgICAgIHBhZGRpbmc6IDRweCAwIDhweCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgQGluY2x1ZGUgbXFzKCRmcm9tOiBwYWdlKSB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgYSB7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmlvc3tcbiAgICAgIC5pY29ue1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDQycHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5hbmRyb2lke1xuICAgICAgQGluY2x1ZGUgbXFzKCRmcm9tOiB0YWJsZXQpIHtcbiAgICAgICAgLmljb24gaW1ne1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5pY29ue1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHggIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuaW5uZXIgPiBkaXYge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldCkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgJi5pY29uIHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgcGFkZGluZy10b3A6IDRweDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDRweDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTZweDtcbiAgICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi50ZXh0IHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDE3cHg7XG4gICAgICAgIGZvbnQtdmFyaWFudDogc21hbGwtY2FwcztcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBhe1xuICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5xcntcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMThweDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogOHB4O1xuXG4gICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldCkge1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaW1ne1xuICAgICAgICAgIG1heC13aWR0aDogMTAwcHg7XG4gICAgICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuYXBwLWJ1dHRvbntcbiAgICAgICAgQGluY2x1ZGUgbXFzKCRmcm9tOiB0YWJsZXQsICR1bnRpbDogcGFnZSkge1xuICAgICAgICAgIEBpbmNsdWRlIGNlbnRyZVk7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGxlZnQ6IDhweDtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0KSB7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgYXtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDQycHg7XG4gICAgICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0N2luY2gpIHtcbiAgICAgICAgICAgIG1hcmdpbjogMTJweCAwIDAgMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsCgkJIi8qXG4gKiBSZXNwb25zaXZlIHNsaWRlc2hvdyB3aWRnZXQgdXNpbmcgU2xpY2sgY2Fyb3VzZWxcbiAqL1xuXG5AaW1wb3J0IFwic2xpY2tfb3ZlcnJpZGVzXCI7XG5AaW1wb3J0IFwibG9hZGVyXCI7XG5cbi5zbGlkZXNob3cge1xuICBtYXJnaW46IDAgYXV0byAwIGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICAmOm5vdCguaW5pdGlhbGlzZWQpe1xuICAgIC5zbGlkZXtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICY6Zmlyc3QtY2hpbGR7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5sb2FkaW5ne1xuICAgIEBpbmNsdWRlIGxvYWRlcjtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIC5jYXB0aW9ue1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5zbGlkZXtcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcblxuICAgICAgJjpmaXJzdC1jaGlsZCAuY2FwdGlvbntcbiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgaW1ne1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYuaW5pdGlhbGlzZWQ6bm90KC5sb2FkaW5nKXtcbiAgICAud3JhcHBlcjpub3QoLmV2YWx1YXRpbmcpe1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAuY2FwdGlvbiB7XG4gICAgICAgIEBpbmNsdWRlIGNlbnRyZVk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuc2xpZGUge1xuXG4gICAgaW1nIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgfVxuXG4gICAgLmNhcHRpb24ge1xuICAgICAgZm9udC1mYW1pbHk6IFwiQ29taW5nIFNvb25cIjtcbiAgICAgIGNvbG9yOiAjZGRkO1xuICAgICAgcGFkZGluZzogOHB4IDE2cHg7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBmb250LXNpemU6IDE2cHQ7XG4gICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgICAgICBmb250LXNpemU6IDEycHQ7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxNHB0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwKCQkiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBTbGljayBDYXJvdXNlbCBkZWZhdWx0IHRoZW1lIG92ZXJyaWRlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4uc2xpY2stcHJldixcbi5zbGljay1uZXh0IHtcbiAgei1pbmRleDogMTtcbiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG5cbiAgJjpiZWZvcmV7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgfVxufVxuXG4uc2xpY2stcHJldiB7XG4gIGxlZnQ6IDE2cHg7XG59XG5cbi5zbGljay1wcmV2OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmMTA0XCI7XG4gIGZvbnQ6IDQwcHgvMSAnRm9udEF3ZXNvbWUnO1xuICBwYWRkaW5nOiAwIDE2cHggMnB4IDEycHg7XG59XG5cbi5zbGljay1uZXh0IHtcbiAgcmlnaHQ6IDE2cHg7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4uc2xpY2stbmV4dDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjEwNVwiO1xuICBmb250OiA0MHB4LzEgJ0ZvbnRBd2Vzb21lJztcbiAgcGFkZGluZzogMCAxMnB4IDJweCAxNnB4O1xufVxuXG4uc2xpY2stcHJldjpob3ZlcjpiZWZvcmUsXG4uc2xpY2stbmV4dDpob3ZlcjpiZWZvcmUge1xuICBjb2xvcjogIzdlN2U3ZTtcbiAgQGluY2x1ZGUgdG91Y2gtc2NyZWVuLWRldmljZXN7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG9wYWNpdHk6IDAuNzU7XG4gIH1cbn0iLAoJCSIvLyBMb2FkaW5nIGFuaW1hdGlvblxuXG4kbG9hZGVyLWRlZmF1bHQtc2l6ZTogNTBweDtcbiRsb2FkZXItZGVmYXVsdC10aGlja25lc3M6IDVweDtcbiRsb2FkZXItZGVmYXVsdC1mb3JlZ3JvdW5kOiB3aGl0ZTtcbiRsb2FkZXItZGVmYXVsdC1iYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMjUpO1xuJGxvYWRlci1kZWZhdWx0LWZvcmVncm91bmQtaW52ZXJ0ZWQ6IGJsYWNrO1xuJGxvYWRlci1kZWZhdWx0LWJhY2tncm91bmQtaW52ZXJ0ZWQ6IHJnYmEoMCwwLDAsMC4yNSk7XG5cbkBtaXhpbiBsb2FkZXIoXG4gICRzaXplOiAkbG9hZGVyLWRlZmF1bHQtc2l6ZSxcbiAgJHRoaWNrbmVzczogJGxvYWRlci1kZWZhdWx0LXRoaWNrbmVzcyxcbiAgJGZvcmVncm91bmQ6ICRsb2FkZXItZGVmYXVsdC1mb3JlZ3JvdW5kLFxuICAkYmFja2dyb3VuZDogJGxvYWRlci1kZWZhdWx0LWJhY2tncm91bmRcbil7XG5cbiAgQGF0LXJvb3R7XG4gICAgYm9keTpub3QoLmZ1bGxzY3JlZW4pICN7Jn0ge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi10b3A6IC0oJHNpemUgLyAyICsgJHRoaWNrbmVzcyk7XG4gICAgbWFyZ2luLWxlZnQ6IC0oJHNpemUgLyAyICsgJHRoaWNrbmVzcyk7XG4gICAgd2lkdGg6ICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgYm9yZGVyLXJhZGl1czogJHNpemU7XG4gICAgYm9yZGVyOiAkdGhpY2tuZXNzIHNvbGlkICRiYWNrZ3JvdW5kO1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRmb3JlZ3JvdW5kO1xuICAgIGFuaW1hdGlvbjogbG9hZGluZyAxcyBlYXNlIGluZmluaXRlO1xuICB9XG4gIEBrZXlmcmFtZXMgbG9hZGluZyB7XG4gICAgMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGxvYWRlci1pbnZlcnRlZChcbiAgJHNpemU6ICRsb2FkZXItZGVmYXVsdC1zaXplLFxuICAkdGhpY2tuZXNzOiAkbG9hZGVyLWRlZmF1bHQtdGhpY2tuZXNzLFxuICAkZm9yZWdyb3VuZDogJGxvYWRlci1kZWZhdWx0LWZvcmVncm91bmQtaW52ZXJ0ZWQsXG4gICRiYWNrZ3JvdW5kOiAkbG9hZGVyLWRlZmF1bHQtYmFja2dyb3VuZC1pbnZlcnRlZFxuKXtcbiAgQGluY2x1ZGUgbG9hZGVyKFxuICAgICRzaXplOiAkc2l6ZSxcbiAgICAkdGhpY2tuZXNzOiAkdGhpY2tuZXNzLFxuICAgICRmb3JlZ3JvdW5kOiAkZm9yZWdyb3VuZCxcbiAgICAkYmFja2dyb3VuZDogJGJhY2tncm91bmRcbiAgKTtcbn1cbiIsCgkJIi8qKlxuKiBEaXNwbGF5IGEgYm90dG9tIHByb21vIGluIGEgbGlnaHQgZ3JlZW4gYm94XG4qL1xuXG5cbi5ib3R0b20tcHJvbW8ge1xuICAgIEBpbmNsdWRlIGxpZ2h0R3JlZW5Cb3g7XG4gICAgQGluY2x1ZGUgYm94U2hhZG93O1xuICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIHB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxufSIsCgkJIi8vIENvbW1vbiBzdHlsZXNcbkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJnZW5lcmFsX21peGluc1wiO1xuQGltcG9ydCBcIm1lZGlhXCI7XG5AaW1wb3J0IFwidG91Y2hcIjtcblxuYm9keXtcbiAgdmlzaWJpbGl0eTogaW5oZXJpdDtcbn1cbiIKCV0sCgkibmFtZXMiOiBbXSwKCSJtYXBwaW5ncyI6ICJBQUFBOzt1REFFdUQ7QUlEdkQ7O0dBRUc7QUFXSDs7R0FFRztBRWhCSDs7eURBRXlEO0FMSXpELEFBQUEsSUFBSSxDQUFBO0VBQ0YsVUFBVSxFQUFFLE9BQU87Q0FDcEI7O0FERkQsQUFBQSxjQUFjLENBQUM7RUFDYixPQUFPLEVBQUUsSUFBSTtFQUFFLCtEQUErRDtFQUM5RSxhQUFhLEVBQUUsSUFBSTtFQUNuQixLQUFLLEVBQUUsSUFBSTtDQUNaOztBQUNELEFBQUEsV0FBVyxDQUFDO0VBQ1YsS0FBSyxFQUFFLElBQUk7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 */