@charset "UTF-8";
@font-face {
  font-family: 'Typonine Mono Regular';
  src: url("https://content.arduino.cc/fonts/WF-028075-009795-001720.eot");
  src: url("https://content.arduino.cc/fonts/WF-028075-009795-001720.eot?#iefix") format("embedded-opentype"), url("https://content.arduino.cc/fonts/WF-028075-009795-001720.woff") format("woff"), url("https://content.arduino.cc/fonts/WF-028075-009795-001720.woff") format("woff"), url("https://content.arduino.cc/fonts/WF-028075-009795-001720.svg#Typotheque_webfonts_service") format("svg");
}

@font-face {
  font-family: 'Typonine Mono Medium';
  src: url("https://content.arduino.cc/fonts/WF-028075-009795-001722.eot");
  src: url("https://content.arduino.cc/fonts/WF-028075-009795-001722.eot?#iefix") format("embedded-opentype"), url("https://content.arduino.cc/fonts/WF-028075-009795-001722.woff") format("woff"), url("https://content.arduino.cc/fonts/WF-028075-009795-001722.woff") format("woff"), url("https://content.arduino.cc/fonts/WF-028075-009795-001722.svg#Typotheque_webfonts_service") format("svg");
}

@font-face {
  font-family: 'Typonine Sans Light';
  src: url("https://content.arduino.cc/fonts/WF-028075-009795-001726.eot");
  src: url("https://content.arduino.cc/fonts/WF-028075-009795-001726.eot?#iefix") format("embedded-opentype"), url("https://content.arduino.cc/fonts/WF-028075-009795-001726.woff") format("woff"), url("https://content.arduino.cc/fonts/WF-028075-009795-001726.woff") format("woff"), url("https://content.arduino.cc/fonts/WF-028075-009795-001726.svg#Typotheque_webfonts_service") format("svg");
}

@font-face {
  font-family: 'Typonine Sans Regular';
  src: url("https://content.arduino.cc/fonts/WF-028075-009795-001728.eot");
  src: url("https://content.arduino.cc/fonts/WF-028075-009795-001728.eot?#iefix") format("embedded-opentype"), url("https://content.arduino.cc/fonts/WF-028075-009795-001728.woff") format("woff"), url("https://content.arduino.cc/fonts/WF-028075-009795-001728.woff") format("woff"), url("https://content.arduino.cc/fonts/WF-028075-009795-001728.svg#Typotheque_webfonts_service") format("svg");
}

@font-face {
  font-family: 'Typonine Sans Regular Italic';
  src: url("https://content.arduino.cc/fonts/WF-028075-009795-001729.eot");
  src: url("https://content.arduino.cc/fonts/WF-028075-009795-001729.eot?#iefix") format("embedded-opentype"), url("https://content.arduino.cc/fonts/WF-028075-009795-001729.woff") format("woff"), url("https://content.arduino.cc/fonts/WF-028075-009795-001729.woff") format("woff"), url("https://content.arduino.cc/fonts/WF-028075-009795-001729.svg#Typotheque_webfonts_service") format("svg");
}

@font-face {
  font-family: 'Typonine Sans Medium';
  src: url("https://content.arduino.cc/fonts/WF-028075-009795-001730.eot");
  src: url("https://content.arduino.cc/fonts/WF-028075-009795-001730.eot?#iefix") format("embedded-opentype"), url("https://content.arduino.cc/fonts/WF-028075-009795-001730.woff") format("woff"), url("https://content.arduino.cc/fonts/WF-028075-009795-001730.woff") format("woff"), url("https://content.arduino.cc/fonts/WF-028075-009795-001730.svg#Typotheque_webfonts_service") format("svg");
}

@font-face {
  font-family: 'Typonine Sans Bold';
  src: url("https://content.arduino.cc/fonts/WF-028075-009795-001732.eot");
  src: url("https://content.arduino.cc/fonts/WF-028075-009795-001732.eot?#iefix") format("embedded-opentype"), url("https://content.arduino.cc/fonts/WF-028075-009795-001732.woff") format("woff"), url("https://content.arduino.cc/fonts/WF-028075-009795-001732.woff") format("woff"), url("https://content.arduino.cc/fonts/WF-028075-009795-001732.svg#Typotheque_webfonts_service") format("svg");
}

body {
  color: #434f54;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  font-family: "Typonine Sans Light", "Lucida Grande", Lucida, Verdana, sans-serif;
  font-size: 20px;
  letter-spacing: .7px;
  line-height: 1.45;
  min-height: 100vh;
}

@media screen and (max-width: 600px) {
  body {
    font-size: 18px;
  }
}

b,
strong {
  font-family: "Typonine Sans Regular", "Lucida Grande", Lucida, Verdana, sans-serif;
  font-weight: 400;
}

body,
h1,
h2,
h3,
h4,
h5,
h6,
ul,
ol,
li,
p {
  margin: 0;
}

ul,
li {
  list-style-type: none;
  padding: 0;
}

a {
  color: #0ca1a6;
  text-decoration: none;
  -webkit-transition: color .3s;
  transition: color .3s;
}

a:hover, a:active {
  color: #005c5f;
  text-decoration: none;
}

a:focus {
  color: #0ca1a6;
  outline: none;
}

img {
  height: auto;
  max-width: 100%;
  width: 100%;
}

input[type=text]::-ms-clear {
  display: none;
}

#page {
  -webkit-font-smoothing: subpixel-antialiased;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-preferred-size: auto;
      flex-basis: auto;
  -webkit-box-flex: 1;
      -ms-flex-positive: 1;
          flex-grow: 1;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  margin: 40px auto 20px;
  max-width: 1268px;
  padding: 0 40px;
  width: 100%;
}

@media screen and (max-width: 1024px) {
  #page {
    max-width: 820px;
  }
}

@media screen and (max-width: 480px) {
  #page {
    padding: 0 20px;
  }
}

#content {
  -webkit-box-ordinal-group: 3;
      -ms-flex-order: 2;
          order: 2;
  width: calc(75% - 40px);
}

#content.single-post {
  margin: 0 auto;
  max-width: 850px;
  width: 100%;
}

#sidebar {
  -webkit-box-ordinal-group: 2;
      -ms-flex-order: 1;
          order: 1;
  width: calc(25% - 40px);
}

#content,
#sidebar {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
}

@media screen and (max-width: 1024px) {
  #content,
  #sidebar {
    width: 100%;
  }
}

.btn-primary {
  background-color: #00979d;
  border: 0;
  border-radius: 2px 2px 0 0;
  -webkit-box-shadow: 0 4px #005c5f;
          box-shadow: 0 4px #005c5f;
  color: #fff;
  cursor: pointer;
  font-family: "Typonine Sans Regular", "Lucida Grande", Lucida, Verdana, sans-serif;
  font-size: 14px;
  letter-spacing: 1.28px;
  line-height: normal;
  outline: 0;
  padding: 9px 10px;
  position: relative;
  text-align: center;
  text-transform: uppercase;
  top: 0;
  -webkit-transition: top .1s ease-out, -webkit-box-shadow .1s ease-out;
  transition: top .1s ease-out, -webkit-box-shadow .1s ease-out;
  transition: top .1s ease-out, box-shadow .1s ease-out;
  transition: top .1s ease-out, box-shadow .1s ease-out, -webkit-box-shadow .1s ease-out;
}

.btn-primary:hover, .btn-primary:focus {
  border: 0;
  -webkit-box-shadow: 0 2px #005c5f;
          box-shadow: 0 2px #005c5f;
  outline: none;
  top: 2px;
}

.btn-primary:active {
  -webkit-box-shadow: none;
          box-shadow: none;
  top: 6px;
}

.btn-primary:hover, .btn-primary:active, .btn-primary:focus {
  color: #fff;
}

select,
.select-btn {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  background-color: #ecf1f1;
  border: 0;
  border-radius: 0;
  color: #434f54;
  cursor: pointer;
  font-family: "Typonine Sans Light", "Lucida Grande", Lucida, Verdana, sans-serif;
  font-size: 16px;
  height: 40px;
  letter-spacing: .7px;
  padding: 0 32px 0 14px;
  text-align: left;
  -webkit-transition: background-color .3s, color .3s;
  transition: background-color .3s, color .3s;
  width: 100%;
}

@media screen and (max-width: 1024px) {
  select,
  .select-btn {
    background-color: #fff;
  }
}

select:hover,
.select-btn:hover {
  background-color: #dae3e3;
  color: #374146;
}

select:focus,
.select-btn:focus {
  outline: none;
}

.wrapper-select,
.select-btn {
  position: relative;
}

.wrapper-select::after,
.select-btn::after {
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: 5px solid #434f54;
  content: '';
  height: 0;
  pointer-events: none;
  position: absolute;
  right: 12px;
  top: 17px;
  width: 0;
}

.custom-select {
  display: none;
}

.custom-select .dropdown-menu {
  background-color: #ecf1f1;
  max-height: 272px;
  overflow-y: auto;
}

@media screen and (max-width: 1024px) {
  .custom-select .dropdown-menu {
    background-color: #fff;
  }
}

.custom-select .dropdown-menu .children li a {
  font-size: 14px;
  padding-left: 28px;
}

.custom-select .dropdown-menu li {
  margin: 0;
}

.custom-select .dropdown-menu li a {
  color: #434f54;
  display: inline-block;
  padding: 8px 14px;
  -webkit-transition: background-color .3s;
  transition: background-color .3s;
  width: 100%;
}

.custom-select .dropdown-menu li a:hover {
  background-color: #dae3e3;
  color: #434f54;
}

@media (pointer: fine) {
  .native-select {
    display: none;
  }
  .custom-select {
    display: block;
  }
}

@-moz-document url-prefix() {
  .native-select {
    display: none;
  }
  .custom-select {
    display: block;
  }
  @media screen and (max-width: 1024px) {
    .native-select {
      display: block;
    }
    .custom-select {
      display: none;
    }
  }
}

@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
  .native-select {
    display: none;
  }
  .custom-select {
    display: block;
  }
}

@media screen and (-ms-high-contrast: active) and (max-width: 1024px) {
  .native-select {
    display: block;
  }
  .custom-select {
    display: none;
  }
}

.navigation {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  margin: 0 0 30px;
}

.navigation .alignleft a::before {
  border-left: 1px solid #0ca1a6;
  border-top: 1px solid #0ca1a6;
  content: '';
  display: inline-block;
  height: 10px;
  margin-right: 10px;
  position: relative;
  top: -2px;
  -webkit-transform: rotate(-45deg);
          transform: rotate(-45deg);
  width: 10px;
}

.navigation .alignright a::after {
  border-right: 1px solid #0ca1a6;
  border-top: 1px solid #0ca1a6;
  content: '';
  display: inline-block;
  height: 10px;
  margin-left: 10px;
  position: relative;
  top: -2px;
  -webkit-transform: rotate(45deg);
          transform: rotate(45deg);
  width: 10px;
}

.tag-btn, .ais-facets a, .sort-options-wrapper .sort-item-wrapper a {
  background-color: #bcac99;
  -webkit-box-shadow: 10px 0 0 #bcac99, -10px 0 0 #bcac99;
          box-shadow: 10px 0 0 #bcac99, -10px 0 0 #bcac99;
  color: #fff;
  display: inline;
  font-size: 16px;
  letter-spacing: 1.28px;
  line-height: 1.2;
  padding: 4px 0;
  text-transform: uppercase;
  -webkit-transition: background-color .3s, -webkit-box-shadow .3s;
  transition: background-color .3s, -webkit-box-shadow .3s;
  transition: background-color .3s, box-shadow .3s;
  transition: background-color .3s, box-shadow .3s, -webkit-box-shadow .3s;
}

.tag-btn:hover, .ais-facets a:hover, .sort-options-wrapper .sort-item-wrapper a:hover {
  background-color: #f39c12;
  -webkit-box-shadow: 10px 0 0 #f39c12, -10px 0 0 #f39c12;
          box-shadow: 10px 0 0 #f39c12, -10px 0 0 #f39c12;
}

@media screen and (max-width: 1024px) {
  .tag-btn, .ais-facets a, .sort-options-wrapper .sort-item-wrapper a {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-shadow: none;
            box-shadow: none;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    height: 100%;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    padding: 8px 14px;
  }
  .tag-btn:hover, .ais-facets a:hover, .sort-options-wrapper .sort-item-wrapper a:hover {
    -webkit-box-shadow: none;
            box-shadow: none;
  }
}

.breadcrumbs {
  margin: -20px 0 40px;
  width: 100%;
}

@media screen and (max-width: 1024px) {
  .breadcrumbs {
    margin-bottom: 20px;
  }
}

.breadcrumbs ul {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  font-size: 14px;
}

.breadcrumbs li {
  white-space: nowrap;
}

.breadcrumbs li span {
  margin: 0 7px 0 4px;
}

.breadcrumbs strong {
  font-family: "Typonine Sans Light", "Lucida Grande", Lucida, Verdana, sans-serif;
}

.breadcrumbs .br-post {
  overflow-x: hidden;
  text-overflow: ellipsis;
}

.breadcrumbs a {
  color: #434f54;
}

.breadcrumbs a:hover {
  color: #00979d;
}

.pagetitle {
  border-bottom: 1px solid rgba(218, 227, 227, 0.7);
  color: #9e846d;
  font-size: 26px;
  font-weight: 200;
  letter-spacing: 1.28px;
  line-height: 1.2;
  margin: 0 0 60px;
  padding: 0 0 20px;
  text-align: center;
  text-transform: uppercase;
}

.pagetitle .category {
  border: 1px solid rgba(158, 132, 109, 0.6);
  padding: 0 5px;
}

.layout-2-column,
.ais-hits {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
}

.ais-hits--item,
.layout-2-column .post {
  background-color: #ecf1f1;
  border-top-left-radius: 4px;
  border-top-right-radius: 4px;
  font-size: 18px;
  margin: 0 0 20px;
  overflow: hidden;
  -webkit-transition: background-color .3s;
  transition: background-color .3s;
  width: calc(50% - 10px);
}

@media screen and (max-width: 740px) {
  .ais-hits--item,
  .layout-2-column .post {
    width: 100%;
  }
}

.ais-hits--item article,
.layout-2-column .post article {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  height: 100%;
}

.ais-hits--item h2,
.layout-2-column .post h2 {
  font-family: "Typonine Sans Light", "Lucida Grande", Lucida, Verdana, sans-serif;
  font-size: 22px;
  font-weight: 200;
  letter-spacing: 2px;
  line-height: 1.35;
  margin: 0 0 20px;
  text-transform: uppercase;
  -webkit-transition: color .3s 0;
  transition: color .3s 0;
}

.ais-hits--item em,
.ais-hits--item a em,
.layout-2-column .post em,
.layout-2-column .post a em {
  background-color: #fff;
  font-style: normal;
  padding: 0 3px;
  -webkit-transition: background-color .3s;
  transition: background-color .3s;
}

.ais-hits--item .author,
.ais-hits--item .category,
.ais-hits--item .excerpt,
.layout-2-column .post .author,
.layout-2-column .post .category,
.layout-2-column .post .excerpt {
  color: #434f54;
  -webkit-transition: color .3s 0;
  transition: color .3s 0;
}

.ais-hits--item:hover,
.layout-2-column .post:hover {
  background-color: #7fcbcd;
}

.ais-hits--item:hover h2,
.layout-2-column .post:hover h2 {
  color: #fff;
}

.ais-hits--item:hover em,
.ais-hits--item:hover a em,
.layout-2-column .post:hover em,
.layout-2-column .post:hover a em {
  background-color: rgba(12, 161, 166, 0.45);
}

.ais-hits--item:hover .author,
.ais-hits--item:hover .category,
.ais-hits--item:hover .excerpt,
.layout-2-column .post:hover .author,
.layout-2-column .post:hover .category,
.layout-2-column .post:hover .excerpt {
  color: #fff;
}

.ais-hits--item:hover .ais-hits--thumbnail::after,
.ais-hits--item:hover .card-cover-image::after,
.layout-2-column .post:hover .ais-hits--thumbnail::after,
.layout-2-column .post:hover .card-cover-image::after {
  opacity: 1;
}

.ais-hits--item .ais-hits--content,
.ais-hits--item .card-content,
.layout-2-column .post .ais-hits--content,
.layout-2-column .post .card-content {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-preferred-size: auto;
      flex-basis: auto;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-flex: 1;
      -ms-flex-positive: 1;
          flex-grow: 1;
  overflow: hidden;
  padding: 24px 30px;
}

@media screen and (max-width: 480px) {
  .ais-hits--item .ais-hits--content,
  .ais-hits--item .card-content,
  .layout-2-column .post .ais-hits--content,
  .layout-2-column .post .card-content {
    padding: 20px;
  }
}

.ais-hits--item .ais-hits--content .excerpt,
.ais-hits--item .card-content .excerpt,
.layout-2-column .post .ais-hits--content .excerpt,
.layout-2-column .post .card-content .excerpt {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-preferred-size: auto;
      flex-basis: auto;
  -webkit-box-flex: 1;
      -ms-flex-positive: 1;
          flex-grow: 1;
  margin-bottom: 45px;
}

.ais-hits--item .ais-hits--content .author,
.ais-hits--item .ais-hits--content .category,
.ais-hits--item .card-content .author,
.ais-hits--item .card-content .category,
.layout-2-column .post .ais-hits--content .author,
.layout-2-column .post .ais-hits--content .category,
.layout-2-column .post .card-content .author,
.layout-2-column .post .card-content .category {
  font-size: 14px;
  letter-spacing: 1.28px;
  text-transform: uppercase;
}

.ais-hits--item .ais-hits--thumbnail,
.ais-hits--item .card-cover-image,
.layout-2-column .post .ais-hits--thumbnail,
.layout-2-column .post .card-cover-image {
  position: relative;
}

.ais-hits--item .ais-hits--thumbnail img,
.ais-hits--item .card-cover-image img,
.layout-2-column .post .ais-hits--thumbnail img,
.layout-2-column .post .card-cover-image img {
  display: inherit;
}

.ais-hits--item .ais-hits--thumbnail::after,
.ais-hits--item .card-cover-image::after,
.layout-2-column .post .ais-hits--thumbnail::after,
.layout-2-column .post .card-cover-image::after {
  background: rgba(0, 0, 0, 0.15);
  bottom: 0;
  content: '';
  left: 0;
  opacity: 0;
  position: absolute;
  right: 0;
  top: 0;
  -webkit-transition: opacity .3s;
  transition: opacity .3s;
}

.ais-hits--item .ais-hits--thumbnail a,
.ais-hits--item .card-cover-image a,
.layout-2-column .post .ais-hits--thumbnail a,
.layout-2-column .post .card-cover-image a {
  display: inline-block;
  width: 100%;
}

.ais-hits--item .ais-hits--thumbnail img,
.ais-hits--item .card-cover-image img,
.layout-2-column .post .ais-hits--thumbnail img,
.layout-2-column .post .card-cover-image img {
  margin: 0;
}

.layout-2-column .card-cover-image {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
}

.layout-2-column .cover-image {
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  display: inline-block;
  height: 35vh;
  max-height: 325px;
  min-height: 220px;
  width: 100%;
}

.layout-2-column .post {
  background-color: transparent;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
}

.layout-2-column .post .card-content {
  padding-bottom: 4px;
}

.layout-2-column .post .card-content .excerpt {
  margin-bottom: 0;
}

.layout-2-column .post:hover {
  background-color: transparent;
}

.layout-2-column .post:hover .author,
.layout-2-column .post:hover .category,
.layout-2-column .post:hover .excerpt {
  color: #434f54;
}

.layout-2-column .post:hover h2 {
  color: #0ca1a6;
}

.layout-2-column .post::after {
  display: none;
}

.layout-2-column .blog-card {
  background-color: #ecf1f1;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-preferred-size: auto;
      flex-basis: auto;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-flex: 1;
      -ms-flex-positive: 1;
          flex-grow: 1;
  -webkit-transition: background-color .3s;
  transition: background-color .3s;
}

.layout-2-column .blog-card:hover {
  background-color: #7fcbcd;
}

.layout-2-column .blog-card:hover .excerpt,
.layout-2-column .blog-card:hover h2 {
  color: #fff;
}

.layout-2-column .blog-card:hover + .info-wrapper {
  background-color: #7fcbcd;
}

.layout-2-column .blog-card:hover + .info-wrapper .board {
  color: #fff;
}

.layout-2-column .blog-card:hover + .info-wrapper .board a {
  color: #fff;
  -webkit-transition: color 0s;
  transition: color 0s;
}

.layout-2-column .info-wrapper {
  background-color: #ecf1f1;
  font-size: 14px;
  letter-spacing: 1.28px;
  padding: 24px 30px;
  text-transform: uppercase;
  -webkit-transition: background-color .3s;
  transition: background-color .3s;
}

.layout-2-column .info-wrapper .board {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
}

.layout-2-column .info-wrapper .board .label {
  margin-right: 6px;
}

.layout-2-column .info-wrapper .board a {
  margin-right: 8px;
}

.post {
  margin: 0 0 10px;
  -webkit-box-ordinal-group: 2;
      -ms-flex-order: 1;
          order: 1;
}

.post ul {
  padding-bottom: 20px;
  padding-left: 20px;
}

.post ul li {
  list-style-type: disc;
}

.post::after {
  border-top: 1px solid rgba(218, 227, 227, 0.7);
  content: '';
  display: inline-block;
  margin: 2vh 0 6vh;
  width: 100%;
}

.post iframe {
  height: 45vh;
  margin: 20px 0 30px;
  min-height: 500px;
  width: 100%;
}

@media screen and (max-width: 640px) {
  .post iframe {
    min-height: 0;
  }
}

.post .addthis_toolbox {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  float: right;
  margin: 0;
}

@media screen and (max-width: 700px) {
  .post .addthis_toolbox {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    float: none;
    margin: 50px 0 10px;
  }
}

.post .addthis_toolbox .social-container {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  margin: 0 0 10px;
}

@media screen and (max-width: 700px) {
  .post .addthis_toolbox .social-container {
    margin-right: 10px;
  }
}

.post .addthis_toolbox .social-container .social-content {
  margin: 0;
  max-width: none;
}

.post .addthis_toolbox .social-container .social-content a {
  margin: 0;
}

.post .addthis_toolbox img {
  margin: 0 5px 0 0;
  position: relative;
  top: -2px;
}

.post .addthis_toolbox iframe {
  margin: 0;
}

.post .image-post {
  background-color: #ecf1f1;
  display: inline-block;
  margin: 20px 0 30px;
  padding: 5%;
  width: 100%;
}

@media screen and (max-width: 640px) {
  .post .image-post {
    padding: 0;
  }
}

.post .image-post img {
  display: block;
  margin: 0 auto;
  width: auto;
}

.post p {
  margin-bottom: 20px;
}

.post h3 {
  font-family: "Typonine Sans Light", "Lucida Grande", Lucida, Verdana, sans-serif;
  font-size: 38px;
  font-weight: 200;
  letter-spacing: .4px;
  line-height: 1.13;
  margin: 0 0 30px;
}

.post h3.post-title {
  margin-top: 10px;
}

@media screen and (max-width: 600px) {
  .post h3 {
    font-size: 30px;
  }
}

.post h3 a {
  color: #434f54;
}

.post h3 a:hover {
  color: #0ca1a6;
}

.post blockquote {
  background-color: rgba(188, 172, 153, 0.1);
  border: 1px solid rgba(188, 172, 153, 0.4);
  color: #9e846d;
  margin: 0 0 40px;
  padding: 24px 30px 10px;
}

.post .more-link {
  display: block;
  letter-spacing: 1.28px;
  margin: 20px 0 0;
  text-transform: uppercase;
}

.post .info,
.post .postmetadata {
  font-size: 16px;
}

@media screen and (max-width: 600px) {
  .post .info,
  .post .postmetadata {
    font-size: 14px;
  }
}

.post .info {
  margin: 0 0 10px;
}

.post .info + .entry .image-post:first-child {
  margin-top: 10px;
}

.post .info .author {
  letter-spacing: 1.28px;
  text-transform: uppercase;
}

.post .info .author::before {
  content: 'Posted by: ';
  letter-spacing: .7px;
  text-transform: none;
}

.post .postmetadata {
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  margin: 0 0 20px;
  padding-right: 50px;
  width: calc(100% - 130px);
}

@media screen and (max-width: 700px) {
  .post .postmetadata {
    padding-right: 0;
    width: 100%;
  }
}

.post .postmetadata small {
  font-size: 16px;
}

@media screen and (max-width: 600px) {
  .post .postmetadata small {
    font-size: 14px;
  }
}

.post .postmetadata .categories {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  width: 70%;
}

@media screen and (max-width: 640px) {
  .post .postmetadata .categories {
    margin-bottom: 14px;
    width: 100%;
  }
}

.post .postmetadata .categories a {
  background-color: #bcac99;
  color: #fff;
  display: inline-block;
  letter-spacing: 1.28px;
  margin: 0 6px 6px 0;
  padding: 4px 10px;
  text-transform: uppercase;
  -webkit-transition: background-color .3s;
  transition: background-color .3s;
}

.post .postmetadata .categories a:hover {
  background-color: #f39c12;
}

.post .postmetadata .comments {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end;
  width: 30%;
}

@media screen and (max-width: 640px) {
  .post .postmetadata .comments {
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start;
    width: 100%;
  }
}

.post .postmetadata .comments a {
  border: 1px solid #bcac99;
  color: #9e846d;
  display: inline-block;
  letter-spacing: 1.28px;
  margin-bottom: 6px;
  padding: 3px 9px;
  text-transform: uppercase;
  -webkit-transition: border .3s, color .3s;
  transition: border .3s, color .3s;
}

.post .postmetadata .comments a:hover {
  border: 1px solid #0ca1a6;
  color: #0ca1a6;
}

.singlePost {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  margin: 35px 0 calc(6vh + 10px);
  -webkit-box-ordinal-group: 4;
      -ms-flex-order: 3;
          order: 3;
}

.singlePost .blog-home-btn {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  background-color: #ecf1f1;
  color: #9e846d;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  letter-spacing: 1.28px;
  padding: 35px;
  text-align: center;
  text-transform: uppercase;
  -webkit-transition: background-color .3s, color .3s;
  transition: background-color .3s, color .3s;
  width: 100%;
}

.singlePost .blog-home-btn:hover {
  background-color: #7fcbcd;
  color: #fff;
}

.singlePost .alignleft,
.singlePost .alignright {
  margin-bottom: 8px;
  width: calc(50% - 4px);
}

@media screen and (max-width: 740px) {
  .singlePost .alignleft,
  .singlePost .alignright {
    width: 100%;
  }
}

.singlePost .alignleft .thumb-navigation,
.singlePost .alignright .thumb-navigation {
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  border-radius: 3px;
  display: inline-block;
  height: 25vh;
  margin: 0 0 15px;
  max-height: 230px;
  min-height: 170px;
  width: 100%;
}

.singlePost .alignleft a,
.singlePost .alignright a {
  background-color: #ecf1f1;
  display: inline-block;
  height: 100%;
  padding: 20px 35px 30px;
  text-align: center;
  -webkit-transition: background-color .3s, color .3s;
  transition: background-color .3s, color .3s;
  width: 100%;
}

.singlePost .alignleft a:hover,
.singlePost .alignright a:hover {
  background-color: #7fcbcd;
  color: #fff;
}

.singlePost .alignleft a:hover::before,
.singlePost .alignright a:hover::before {
  color: #fff;
}

.singlePost .alignleft a:focus,
.singlePost .alignright a:focus {
  outline: none;
}

.singlePost .alignleft a::before,
.singlePost .alignright a::before {
  border: 0;
  color: #9e846d;
  display: inline-block;
  height: auto;
  letter-spacing: 1.28px;
  margin: 0 0 15px;
  text-transform: uppercase;
  -webkit-transform: none;
          transform: none;
  -webkit-transition: color .3s;
  transition: color .3s;
  width: 100%;
}

.singlePost .alignleft a::after,
.singlePost .alignright a::after {
  display: none;
}

.singlePost .alignleft a::before {
  content: 'Previous Blog Post';
}

.singlePost .alignright a::before {
  content: 'Next Blog Post';
}

.social-share {
  display: inline-block;
  margin: 0 0 30px;
  width: 100%;
}

.social-share iframe {
  margin: 0;
  max-height: 20px;
  min-height: 0;
}

.social-share ul {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  margin: 0;
  padding: 0;
  width: 100%;
}

.social-share ul img {
  border-radius: 100%;
  height: 28px;
  margin-right: 6px;
  width: 28px;
}

.social-share ul img.twitter {
  background-color: #54c1f2;
}

.social-share ul img.gplus {
  background-color: #d34836;
}

.social-share ul img.facebook {
  background-color: #3f65b6;
}

.social-share ul li {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  font-size: 16px;
  list-style: none;
  margin: 0 25px 0 0;
}

@media screen and (max-width: 480px) {
  .social-share ul li {
    margin: 0 0 10px;
    width: 100%;
  }
  .social-share ul li:last-child {
    margin: 0;
  }
}

.social-share ul li .fb-like {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
}

.social-share ul li a {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
}

.comments-wrapper {
  -webkit-box-ordinal-group: 3;
      -ms-flex-order: 2;
          order: 2;
}

.comments-wrapper::after {
  border-top: 1px solid rgba(218, 227, 227, 0.7);
  content: '';
  display: inline-block;
  margin: calc(4vh + 10px) 0 calc(6vh + 10px);
  width: 100%;
}

.comments-wrapper .logged-as {
  font-size: 16px;
}

.comments-wrapper .logged-as .logout {
  float: right;
  position: relative;
}

.comments-wrapper textarea {
  background-color: #ecf1f1;
  border: 0;
  color: #434f54;
  font-family: "Typonine Sans Light", "Lucida Grande", Lucida, Verdana, sans-serif;
  font-size: 16px;
  letter-spacing: .7px;
  line-height: 1.45;
  margin: 20px 0;
  max-width: 100%;
  min-height: 300px;
  min-width: 100%;
  padding: 24px 30px;
  width: 100%;
}

.comments-wrapper textarea:focus {
  outline: none;
}

.comments-wrapper #submit {
  background-color: #00979d;
  border: 0;
  border-radius: 2px 2px 0 0;
  -webkit-box-shadow: 0 4px #005c5f;
          box-shadow: 0 4px #005c5f;
  color: #fff;
  cursor: pointer;
  font-family: "Typonine Sans Regular", "Lucida Grande", Lucida, Verdana, sans-serif;
  font-size: 14px;
  letter-spacing: 1.28px;
  line-height: normal;
  outline: 0;
  padding: 9px 10px;
  position: relative;
  text-align: center;
  text-transform: uppercase;
  top: 0;
  -webkit-transition: top .1s ease-out, -webkit-box-shadow .1s ease-out;
  transition: top .1s ease-out, -webkit-box-shadow .1s ease-out;
  transition: top .1s ease-out, box-shadow .1s ease-out;
  transition: top .1s ease-out, box-shadow .1s ease-out, -webkit-box-shadow .1s ease-out;
  float: right;
  position: relative;
}

.comments-wrapper #submit:hover, .comments-wrapper #submit:focus {
  border: 0;
  -webkit-box-shadow: 0 2px #005c5f;
          box-shadow: 0 2px #005c5f;
  outline: none;
  top: 2px;
}

.comments-wrapper #submit:active {
  -webkit-box-shadow: none;
          box-shadow: none;
  top: 6px;
}

.comments-wrapper cite {
  font-style: normal;
}

.comments-wrapper h3 {
  color: #9e846d;
  font-size: 26px;
  font-weight: 200;
  letter-spacing: 1.28px;
  line-height: 1.2;
  margin: 0 0 20px;
  text-transform: uppercase;
}

.comments-wrapper .commentlist {
  margin: 0 0 calc(6vh + 10px);
  padding: 20px 0 0;
}

.comments-wrapper .commentlist li {
  margin: 0 0 30px;
}

.comments-wrapper .commentlist small {
  font-size: 16px;
}

.single-post .bottom-article {
  margin-top: 80px;
}

.single-post .info-wrapper {
  float: left;
  font-size: 16px;
  margin: 0 0 20px;
  padding-right: 50px;
  position: relative;
  width: calc(100% - 130px);
}

@media screen and (max-width: 700px) {
  .single-post .info-wrapper {
    float: none;
    padding-right: 0;
    width: 100%;
  }
}

.single-post .board {
  margin-bottom: 8px;
  padding: 0 10px;
}

.single-post .board .label {
  margin-left: -10px;
  margin-right: 18px;
}

.single-post .board a {
  background-color: #bcac99;
  -webkit-box-shadow: 10px 0 0 #bcac99, -10px 0 0 #bcac99;
          box-shadow: 10px 0 0 #bcac99, -10px 0 0 #bcac99;
  color: #fff;
  display: inline-block;
  letter-spacing: 1.28px;
  line-height: 1.2;
  margin: 0 25px 5px 0;
  padding: 4px 0;
  text-transform: uppercase;
  -webkit-transition: background-color .3s, -webkit-box-shadow .3s;
  transition: background-color .3s, -webkit-box-shadow .3s;
  transition: background-color .3s, box-shadow .3s;
  transition: background-color .3s, box-shadow .3s, -webkit-box-shadow .3s;
}

.single-post .board a:hover {
  background-color: #f39c12;
  -webkit-box-shadow: 10px 0 0 #f39c12, -10px 0 0 #f39c12;
          box-shadow: 10px 0 0 #f39c12, -10px 0 0 #f39c12;
}

#ais-wrapper {
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  width: 100%;
}

#ais-main {
  -webkit-box-ordinal-group: 3;
      -ms-flex-order: 2;
          order: 2;
  width: calc(75% - 40px);
}

#algolia-hits {
  overflow: hidden;
}

#ais-facets {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-ordinal-group: 2;
      -ms-flex-order: 1;
          order: 1;
  width: calc(25% - 40px);
}

@media screen and (max-width: 1024px) {
  #ais-facets {
    margin-bottom: 15px;
  }
}

#ais-main,
#ais-facets {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
}

@media screen and (max-width: 1024px) {
  #ais-main,
  #ais-facets {
    width: 100%;
  }
}

.ais-stats--time {
  display: none;
}

.ais-menu--list {
  padding-left: 10px;
}

.ais-hits__empty strong {
  font-family: "Typonine Sans Light", "Lucida Grande", Lucida, Verdana, sans-serif;
  letter-spacing: 1.28px;
  text-transform: uppercase;
}

.ais-facets {
  margin-bottom: 40px;
}

.ais-facets .ais-menu--item,
.ais-facets .ais-hierarchical-menu--item {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  line-height: 1.2;
  margin: 0 0 7px;
  width: 100%;
}

@media screen and (max-width: 1024px) {
  .ais-facets .ais-hierarchical-menu--item {
    margin-bottom: 8px;
    width: calc(33.333% - 6px);
  }
  .ais-facets .ais-hierarchical-menu--item div {
    height: 100%;
  }
}

@media screen and (max-width: 700px) {
  .ais-facets .ais-hierarchical-menu--item {
    width: calc(50% - 5px);
  }
}

@media screen and (max-width: 500px) {
  .ais-facets .ais-hierarchical-menu--item {
    width: 100%;
  }
}

.ais-facets .ais-hierarchical-menu--list {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  margin: 7px 0 0;
  padding-left: 10px;
}

@media screen and (max-width: 1024px) {
  .ais-facets .ais-hierarchical-menu--list {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    padding-left: 0;
  }
}

.ais-facets a .ais-hierarchical-menu--count,
.ais-facets a .ais-menu--count {
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
  margin-left: 3px;
  position: relative;
  top: -2px;
}

@media screen and (max-width: 1024px) {
  .ais-facets a .ais-hierarchical-menu--count,
  .ais-facets a .ais-menu--count {
    margin-left: 8px;
    top: 0;
  }
}

.ais-facets .ais-hierarchical-menu--item__active a,
.ais-facets .ais-menu--item__active a {
  background-color: #9e846d;
  -webkit-box-shadow: 10px 0 0 #9e846d, -10px 0 0 #9e846d;
          box-shadow: 10px 0 0 #9e846d, -10px 0 0 #9e846d;
}

@media screen and (max-width: 1024px) {
  .ais-facets .ais-hierarchical-menu--item__active a,
  .ais-facets .ais-menu--item__active a {
    -webkit-box-shadow: none;
            box-shadow: none;
  }
}

.sort-options-wrapper {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  margin: 7px 0 33px;
  padding-left: 10px;
}

@media screen and (max-width: 1024px) {
  .sort-options-wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    padding-left: 0;
  }
}

.sort-options-wrapper .sort-item-wrapper {
  line-height: 1.2;
  margin: 0 0 7px;
}

@media screen and (max-width: 1024px) {
  .sort-options-wrapper .sort-item-wrapper {
    margin-bottom: 8px;
    width: calc(33.333% - 6px);
  }
  .sort-options-wrapper .sort-item-wrapper div {
    height: 100%;
  }
}

@media screen and (max-width: 700px) {
  .sort-options-wrapper .sort-item-wrapper {
    width: calc(50% - 5px);
  }
}

@media screen and (max-width: 500px) {
  .sort-options-wrapper .sort-item-wrapper {
    width: 100%;
  }
}

.sort-options-wrapper .sort-item-wrapper.active a {
  background-color: #9e846d;
  -webkit-box-shadow: 10px 0 0 #9e846d, -10px 0 0 #9e846d;
          box-shadow: 10px 0 0 #9e846d, -10px 0 0 #9e846d;
}

@media screen and (max-width: 1024px) {
  .sort-options-wrapper .sort-item-wrapper.active a {
    -webkit-box-shadow: none;
            box-shadow: none;
  }
}

.ais-clear-all--link {
  color: #434f54;
  font-size: 18px;
  letter-spacing: 1.28px;
  line-height: 1.2;
  text-transform: uppercase;
}

.ais-clear-all--link:active, .ais-clear-all--link:focus {
  color: #434f54;
}

.ais-clear-all--link:hover {
  color: #da5b4a;
}

.ais-clear-all--link:hover::before {
  background-color: #da5b4a;
}

.ais-clear-all--link::before {
  background-color: #434f54;
  border-radius: 24px;
  color: #fff;
  content: '×';
  display: inline-block;
  float: left;
  font-size: 11px;
  height: 24px;
  margin-right: 8px;
  padding: 5px 8px;
  position: relative;
  top: -2px;
  -webkit-transition: background-color .3s;
  transition: background-color .3s;
  width: 24px;
}

#algolia-search-box {
  margin: 0 0 74px;
  position: relative;
  width: 100%;
}

@media screen and (max-width: 1024px) {
  #algolia-search-box {
    margin-top: 25px;
  }
}

#algolia-search-box input {
  background-color: #ecf1f1;
  border: 0;
  color: #434f54;
  font-family: "Typonine Sans Light", "Lucida Grande", Lucida, Verdana, sans-serif;
  font-size: 22px;
  height: auto;
  letter-spacing: .7px;
  line-height: 26px;
  margin: 0;
  outline: none;
  padding: 23px 65px 23px 30px;
  width: 100%;
}

@media screen and (max-width: 480px) {
  #algolia-search-box input {
    padding: 23px 65px 23px 18px;
  }
}

#algolia-search-box .search-icon {
  fill: #7f8c8d;
  position: absolute;
  right: 0;
  top: 21px;
}

@media screen and (max-width: 480px) {
  #algolia-search-box .search-icon {
    right: -8px;
  }
}

.ais-stats {
  font-size: 14px;
  position: absolute;
  top: 80px;
}

.ais-pagination--item {
  display: inline-block;
  padding: 3px;
}

.ais-pagination--item__disabled {
  display: none;
}

.ais-pagination--item__active {
  font-weight: bold;
}

.aa-dropdown-menu {
  background-color: #006d70;
  border-top: 1px solid #00979d;
  color: #fff;
  font-size: 16px;
  margin-top: 7px;
  padding: 18px 25px 25px;
}

.aa-dropdown-menu.aa-with-1 {
  width: calc(100vw - 36px);
}

.aa-dropdown-menu.aa-without-1 {
  width: calc(100vw - 36px);
}

.aa-dropdown-menu.aa-with-3 {
  -webkit-transform: translate(-40px);
          transform: translate(-40px);
  width: 290px;
}

.aa-dropdown-menu.aa-without-3 {
  -webkit-transform: translate(-40px);
          transform: translate(-40px);
  width: 290px;
}

.aa-dropdown-menu .suggestion-count-wrapper:hover {
  color: #f1c40f;
}

.aa-dropdown-menu a {
  color: #fff;
  line-height: 1.35;
}

.aa-dropdown-menu a.suggestion-link {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  width: 100%;
}

.aa-dropdown-menu .autocomplete-header {
  border-bottom: 1px solid rgba(255, 255, 255, 0.4);
  font-family: "Typonine Sans Regular", "Lucida Grande", Lucida, Verdana, sans-serif;
  font-size: 15px;
  padding-bottom: 16px;
}

.aa-dropdown-menu .autocomplete-header-title {
  float: left;
  letter-spacing: 1px;
  text-transform: uppercase;
}

.aa-dropdown-menu .suggestion-post-thumbnail {
  height: auto;
  margin-right: 16px;
  width: calc(35% - 8px);
}

.aa-dropdown-menu .suggestion-post-attributes {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-preferred-size: auto;
      flex-basis: auto;
  -webkit-box-flex: 1;
      -ms-flex-positive: 1;
          flex-grow: 1;
  width: calc(65% - 8px);
}

.aa-dropdown-menu .aa-suggestion {
  border-bottom: 1px solid rgba(255, 255, 255, 0.4);
  font-family: "Typonine Sans Regular", "Lucida Grande", Lucida, Verdana, sans-serif;
  font-size: 15px;
  padding: 14px 0;
}

.aa-dropdown-menu .aa-suggestion:last-child {
  border-bottom: 0;
  padding-bottom: 0;
}

.aa-dropdown-menu .aa-suggestion em {
  color: #f1c40f;
  font-style: normal;
  letter-spacing: 1.28px;
  text-transform: uppercase;
}

.aa-dropdown-menu .suggestion-count {
  margin-left: 3.3em;
}

.aa-dropdown-menu .autocomplete-empty {
  padding: 6px 0;
  word-wrap: break-word;
}

.aa-dropdown-menu .autocomplete-empty .empty-query {
  letter-spacing: 1.28px;
  text-transform: uppercase;
}

#sidebar {
  font-size: 16px;
}

@media screen and (max-width: 1024px) {
  #sidebar {
    margin-bottom: 40px;
  }
}

@media screen and (max-width: 1024px) {
  #sidebar #categories,
  #sidebar #archives {
    width: calc(50% - 15px);
  }
}

@media screen and (max-width: 600px) {
  #sidebar #categories,
  #sidebar #archives {
    width: 100%;
  }
}

#sidebar li {
  margin: 0 0 40px;
}

#sidebar .custom-select.open .dropdown-menu {
  max-height: 272px;
}

#sidebar .custom-select .dropdown-menu {
  max-height: 0;
  -webkit-transition: max-height .3s;
  transition: max-height .3s;
}

#sidebar .custom-select li {
  margin: 0;
}

#sidebar .widgettitle {
  color: #9e846d;
  font-size: 18px;
  letter-spacing: 1.28px;
  line-height: 1.2;
  margin: 0 0 12px;
  text-transform: uppercase;
}

#sidebar .widget .screen-reader-text {
  display: none;
}

#sidebar .submit-your-project {
  margin-bottom: 55px;
}

@media screen and (max-width: 1024px) {
  #sidebar .submit-your-project {
    border-top: 1px solid #dae3e3;
    margin: 10px 0 35px;
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2;
    padding-top: 30px;
  }
}

#sidebar .submit-your-project p {
  margin: 0 0 20px;
}

@media screen and (max-width: 1024px) {
  #sidebar .submit-your-project p {
    text-align: center;
  }
}

#sidebar .submit-your-project .btn-primary {
  display: inline-block;
  width: 100%;
}

@media screen and (max-width: 1024px) {
  #sidebar .submit-your-project .btn-primary {
    display: block;
    margin: 0 auto;
  }
}

@media screen and (max-width: 1024px) and (min-width: 480px) {
  #sidebar .submit-your-project .btn-primary {
    max-width: 200px;
  }
}

@media screen and (max-width: 1024px) {
  #sidebar .social-list {
    display: none;
  }
}

#sidebar .social-list ul {
  display: inline-block;
  margin-top: 6px;
  width: 100%;
}

#sidebar .social-list ul img {
  background-color: red;
  border-radius: 100%;
  height: 28px;
  margin-right: 10px;
  width: 28px;
}

#sidebar .social-list ul img.twitter {
  background-color: #54c1f2;
}

#sidebar .social-list ul img.gplus {
  background-color: #d34836;
}

#sidebar .social-list ul img.facebook {
  background-color: #3f65b6;
}

#sidebar .social-list ul img.youtube {
  background-color: #ec1e12;
}

#sidebar .social-list ul img.instagram {
  background: radial-gradient(circle farthest-corner at 35% 90%, #fec564, transparent 50%), radial-gradient(circle farthest-corner at 0 140%, #fec564, transparent 50%), radial-gradient(ellipse farthest-corner at 0 -25%, #5258cf, transparent 50%), radial-gradient(ellipse farthest-corner at 20% -50%, #5258cf, transparent 50%), radial-gradient(ellipse farthest-corner at 100% 0, #893dc2, transparent 50%), radial-gradient(ellipse farthest-corner at 60% -20%, #893dc2, transparent 50%), radial-gradient(ellipse farthest-corner at 100% 100%, #d9317a, transparent), -webkit-gradient(linear, left top, left bottom, from(#6559ca), color-stop(30%, #bc318f), color-stop(50%, #e33f5f), color-stop(70%, #f77638), to(#fec66d));
}

#sidebar .social-list ul img.flickr {
  background-color: #ff47a4;
}

#sidebar .social-list ul img.github {
  background-color: #000;
}

#sidebar .social-list ul li {
  font-size: 16px;
  margin: 0 0 10px;
  -webkit-transition: margin-left .3s;
  transition: margin-left .3s;
}

#sidebar .social-list ul li:hover {
  margin-left: 10px;
}

#sidebar .social-list ul li a {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
}

.sidebar-accordion-btn {
  background-color: rgba(127, 203, 205, 0.5);
  border: 0;
  border-radius: 0;
  color: #fff;
  font-size: 20px;
  margin: 0;
  padding: 16px 22px;
  -webkit-transition: background-color .3s;
  transition: background-color .3s;
  visibility: hidden;
  width: auto;
}

.sidebar-accordion-btn:hover {
  background-color: #7fcbcd;
  cursor: pointer;
}

.sidebar-accordion-btn:focus {
  outline: none;
}

@media screen and (max-width: 1024px) {
  .sidebar-accordion-btn {
    visibility: visible;
  }
}

.sidebar-block-menu .sidebar-accordion .sidebar-accordion-btn .arrow {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
}

.sidebar-block-menu .sidebar-accordion .sidebar-accordion-btn .arrow::after {
  color: #fff;
  content: '✕';
  display: inline-block;
  font-size: 18px;
  -webkit-transform: rotate(-45deg);
          transform: rotate(-45deg);
  -webkit-transition: -webkit-transform .3s;
  transition: -webkit-transform .3s;
  transition: transform .3s;
  transition: transform .3s, -webkit-transform .3s;
}

.sidebar-block-menu.open .sidebar-accordion .sidebar-accordion-btn .arrow::after {
  -webkit-transform: rotate(0deg);
          transform: rotate(0deg);
}

.sidebar-block-menu {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  height: -webkit-fit-content;
  height: -moz-fit-content;
  height: fit-content;
  width: 100%;
}

.sidebar-block-menu .block-menu {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
}

@media screen and (max-width: 1024px) {
  .sidebar-block-menu .block-menu {
    background-color: #ecf1f1;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    max-height: 0;
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1;
    overflow: hidden;
    padding: 0 30px;
    -webkit-transition: max-height .3s, padding .3s;
    transition: max-height .3s, padding .3s;
  }
}

@media screen and (max-width: 1024px) {
  .sidebar-block-menu.open .block-menu {
    max-height: 2000px;
    padding: 24px 30px;
  }
  .sidebar-block-menu .sidebar-accordion {
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2;
  }
}

@media screen and (max-width: 1024px) {
  .sidebar-block-menu nav {
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -ms-flex-pack: distribute;
        justify-content: space-around;
  }
}

.sidebar-block-menu h3 {
  color: #9e846d;
  font-size: 18px;
  letter-spacing: 1.28px;
  line-height: 1.2;
  margin: 0 0 12px;
  text-transform: uppercase;
}

.sidebar-block-menu h2 {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  background-color: #00979d;
  color: #fff;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  font-size: 18px;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  letter-spacing: 1.28px;
  line-height: 1.2;
  padding: 0 0 0 20px;
  text-transform: uppercase;
}

@media screen and (min-width: 1025px) {
  .sidebar-block-menu h2 {
    display: none;
  }
}

@media screen and (max-width: 1024px) {
  .sort-by-wrapper,
  #clear-all {
    width: 100%;
  }
}

@media screen and (max-width: 1024px) {
  .filter-categories-wrapper {
    width: 100%;
  }
}

.is-clear-icon {
  fill: #7f8c8d;
  position: absolute;
  right: 52px;
  top: 25px;
}

@media screen and (max-width: 480px) {
  .is-clear-icon {
    right: 46px;
  }
}

.is-clear-icon:hover {
  cursor: pointer;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlcyI6WyJzdHlsZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2FyZHVpbm8tc2Fzcy9zcmMvX2FyZHVpbm8tc2Fzcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2FyZHVpbm8tc2Fzcy9zcmMvX3ZhcmlhYmxlcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9fYm91cmJvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZGVwcmVjYXRpb24td2FybmluZ3Muc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3ByZWZpeGVyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL3NldHRpbmdzL19weC10by1lbS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fYXNzZXQtcGlwZWxpbmUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvX2JvdXJib24tZGVwcmVjYXRlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fYXNzaWduLWlucHV0cy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2NvbnRhaW5zLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fY29udGFpbnMtZmFsc3kuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19pcy1sZW5ndGguc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19pcy1saWdodC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2lzLW51bWJlci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2lzLXNpemUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19weC10by1lbS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3B4LXRvLXJlbS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3NoYWRlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fc3RyaXAtdW5pdHMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL190aW50LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fdW5wYWNrLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fbW9kdWxhci1zY2FsZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19jb252ZXJ0LXVuaXRzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX2RpcmVjdGlvbmFsLXZhbHVlcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19mb250LXNvdXJjZS1kZWNsYXJhdGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX2xpbmVhci1hbmdsZS1wYXJzZXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fbGluZWFyLWdyYWRpZW50LXBhcnNlci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19saW5lYXItcG9zaXRpb25zLXBhcnNlci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19saW5lYXItc2lkZS1jb3JuZXItcGFyc2VyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3JhZGlhbC1hcmctcGFyc2VyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3JhZGlhbC1wb3NpdGlvbnMtcGFyc2VyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3JhZGlhbC1ncmFkaWVudC1wYXJzZXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fcmVuZGVyLWdyYWRpZW50cy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19zaGFwZS1zaXplLXN0cmlwcGVyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3N0ci10by1udW0uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fYW5pbWF0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2FwcGVhcmFuY2Uuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fYmFja2ZhY2UtdmlzaWJpbGl0eS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19iYWNrZ3JvdW5kLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2JhY2tncm91bmQtaW1hZ2Uuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fYm9yZGVyLWltYWdlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2NhbGMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fY29sdW1ucy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19maWx0ZXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fZmxleC1ib3guc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fZm9udC1mYWNlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2ZvbnQtZmVhdHVyZS1zZXR0aW5ncy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19oaWRwaS1tZWRpYS1xdWVyeS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19oeXBoZW5zLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2ltYWdlLXJlbmRlcmluZy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19rZXlmcmFtZXMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fbGluZWFyLWdyYWRpZW50LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3BlcnNwZWN0aXZlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3BsYWNlaG9sZGVyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3JhZGlhbC1ncmFkaWVudC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19zZWxlY3Rpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fdGV4dC1kZWNvcmF0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3RyYW5zZm9ybS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL190cmFuc2l0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3VzZXItc2VsZWN0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fYm9yZGVyLWNvbG9yLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fYm9yZGVyLXJhZGl1cy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2JvcmRlci1zdHlsZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2JvcmRlci13aWR0aC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2J1dHRvbnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19jbGVhcmZpeC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2VsbGlwc2lzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fZm9udC1zdGFja3Muc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19oaWRlLXRleHQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19tYXJnaW4uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19wYWRkaW5nLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcG9zaXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19wcmVmaXhlci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX3JldGluYS1pbWFnZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX3NpemUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL190ZXh0LWlucHV0cy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX3RpbWluZy1mdW5jdGlvbnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL190cmlhbmdsZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX3dvcmQtd3JhcC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9fYm91cmJvbi1kZXByZWNhdGVkLXVwY29taW5nLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2NvcmUvX25lYXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvY29yZS9uZWF0L3NldHRpbmdzL19zZXR0aW5ncy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9jb3JlL25lYXQvZnVuY3Rpb25zL19yZXRyaWV2ZS1uZWF0LXNldHRpbmdzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2NvcmUvbmVhdC9mdW5jdGlvbnMvX25lYXQtY29sdW1uLWRlZmF1bHQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvY29yZS9uZWF0L2Z1bmN0aW9ucy9fbmVhdC1jb2x1bW4td2lkdGguc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvY29yZS9uZWF0L2Z1bmN0aW9ucy9fbmVhdC1jb2x1bW4tcmF0aW8uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvY29yZS9uZWF0L2Z1bmN0aW9ucy9fbmVhdC1mbG9hdC1kaXJlY3Rpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvY29yZS9uZWF0L2Z1bmN0aW9ucy9fbmVhdC1tZXJnZS1kZWZhdWx0cy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9jb3JlL25lYXQvZnVuY3Rpb25zL19uZWF0LW9wcG9zaXRlLWRpcmVjdGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9jb3JlL25lYXQvZnVuY3Rpb25zL19uZWF0LXBhcnNlLWNvbHVtbnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvY29yZS9uZWF0L2Z1bmN0aW9ucy9fbmVhdC1wYXJzZS1tZWRpYS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9jb3JlL25lYXQvZnVuY3Rpb25zL19uZWF0LWFwcGVuZC1ncmlkLXZpc3VhbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9jb3JlL25lYXQvbWl4aW5zL19ncmlkLWNvbGxhcHNlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2NvcmUvbmVhdC9taXhpbnMvX2dyaWQtY29sdW1uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2NvcmUvbmVhdC9taXhpbnMvX2dyaWQtY29udGFpbmVyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2NvcmUvbmVhdC9taXhpbnMvX2dyaWQtbWVkaWEuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvY29yZS9uZWF0L21peGlucy9fZ3JpZC1wdXNoLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2NvcmUvbmVhdC9taXhpbnMvX2dyaWQtc2hpZnQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvY29yZS9uZWF0L21peGlucy9fZ3JpZC12aXN1YWwuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9hcmR1aW5vLXNhc3Mvc3JjL190eXBvZ3JhcGh5LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYXJkdWluby1zYXNzL3NyYy9fYnJlYWtwb2ludHMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9hcmR1aW5vLXNhc3Mvc3JjL191dGlscy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2FyZHVpbm8tc2Fzcy9zcmMvX2J1dHRvbnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9hcmR1aW5vLXNhc3Mvc3JjL19jaGVja2JveC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2FyZHVpbm8tc2Fzcy9zcmMvX2lucHV0ZmllbGQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9hcmR1aW5vLXNhc3Mvc3JjL19ub3RpZmljYXRpb25zLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYXJkdWluby1zYXNzL3NyYy9fcmFkaW9idXR0b24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9hcmR1aW5vLXNhc3Mvc3JjL19zcGlubmVyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYXJkdWluby1zYXNzL3NyYy9fdG9nZ2xlLnNjc3MiLCJwYXJ0aWFscy9iYXNlLnNjc3MiLCJwYXJ0aWFscy9jb21wb25lbnRzLnNjc3MiLCJwYXJ0aWFscy90d28tY29sdW1ucy1sYXlvdXQuc2NzcyIsInBhcnRpYWxzL3NpbmdsZS1jb2x1bW4tbGF5b3V0LnNjc3MiLCJwYXJ0aWFscy9zZWFyY2gtcmVzdWx0cy5zY3NzIiwicGFydGlhbHMvc2VhcmNoLXN1Z2dlc3Rpb25zLnNjc3MiLCJwYXJ0aWFscy9zaWRlYmFyLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcIi4uLy4uL25vZGVfbW9kdWxlcy9hcmR1aW5vLXNhc3Mvc3JjL2FyZHVpbm8tc2Fzc1wiO1xuXG5AaW1wb3J0IFwicGFydGlhbHMvYmFzZVwiO1xuQGltcG9ydCBcInBhcnRpYWxzL2NvbXBvbmVudHNcIjtcbkBpbXBvcnQgXCJwYXJ0aWFscy90d28tY29sdW1ucy1sYXlvdXRcIjtcbkBpbXBvcnQgXCJwYXJ0aWFscy9zaW5nbGUtY29sdW1uLWxheW91dFwiO1xuQGltcG9ydCBcInBhcnRpYWxzL3NlYXJjaC1yZXN1bHRzXCI7XG5AaW1wb3J0IFwicGFydGlhbHMvc2VhcmNoLXN1Z2dlc3Rpb25zXCI7XG5AaW1wb3J0IFwicGFydGlhbHMvc2lkZWJhclwiOyIsIkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd0eXBvZ3JhcGh5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludHMnO1xuQGltcG9ydCAndXRpbHMnO1xuXG5AaW1wb3J0ICdidXR0b25zJztcbkBpbXBvcnQgJ2NoZWNrYm94JztcbkBpbXBvcnQgJ2lucHV0ZmllbGQnO1xuQGltcG9ydCAnbm90aWZpY2F0aW9ucyc7XG5AaW1wb3J0ICdyYWRpb2J1dHRvbic7XG5AaW1wb3J0ICdzcGlubmVyJztcbkBpbXBvcnQgJ3RvZ2dsZSc7XG4iLCJAaW1wb3J0ICdub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2JvdXJib24nO1xuQGltcG9ydCAnbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9jb3JlL25lYXQnO1xuXG4kYW5pbWF0aW9uLXRpbWluZy1iYXNlOiAuNnM7XG4kYW5pbWF0aW9uLXRpbWluZy1xdWljazogLjNzO1xuXG4kYW5pbWF0aW9uLWVhc2luZy1iYXNlOiBjdWJpYy1iZXppZXIoMSwgMCwgMCwgMSk7XG5cbiRoZWFkZXItei1pbmRleDogMTAwMDtcblxuLy8gQXJkdWlubyBDb2xvcnMgXG4kdGVhbDA6ICAgICAgICAgICAgICAgIzdmY2JjZDtcbiR0ZWFsMTogICAgICAgICAgICAgICAjMGNhMWE2O1xuJHRlYWwyOiAgICAgICAgICAgICAgICMwMDk3OWQ7XG4kdGVhbDM6ICAgICAgICAgICAgICAgIzAwODE4NDtcbiR0ZWFsNDogICAgICAgICAgICAgICAjMDA2ZDcwO1xuJHRlYWw1OiAgICAgICAgICAgICAgICMwMDVjNWY7XG4kdGVhbDY6ICAgICAgICAgICAgICAgIzgwY2JjZDtcbiR0ZWFsNzogICAgICAgICAgICAgICAjYTVmMmVlO1xuJGJhc2VncmF5OiAgICAgICAgICAgICNmNGY0ZjQ7XG4kZmVhdGhlcjogICAgICAgICAgICAgI2Y3ZjlmOTtcbiRjbG91ZHM6ICAgICAgICAgICAgICAjZWNmMWYxO1xuJGZvZzogICAgICAgICAgICAgICAgICNkYWUzZTM7XG4kc21va2U6ICAgICAgICAgICAgICAgI2M5ZDJkMjtcbiRzaWx2ZXI6ICAgICAgICAgICAgICAjYmRjN2M3O1xuJGNvbmNyZXRlOiAgICAgICAgICAgICM5NWE1YTY7XG4kYXNiZXN0b3M6ICAgICAgICAgICAgIzdmOGM4ZDtcbiRncmlzOiAgICAgICAgICAgICAgICAjNGU1YjYxO1xuJGR1c3Q6ICAgICAgICAgICAgICAgICM0MzRmNTQ7XG4kamV0OiAgICAgICAgICAgICAgICAgIzM3NDE0NjtcbiRjaGFyY29hbDogICAgICAgICAgICAjMmMzNTNhO1xuJG9ueXg6ICAgICAgICAgICAgICAgICMxNzFlMjE7XG4kc3VuZmxvd2VyOiAgICAgICAgICAgI2YxYzQwZjtcbiRjYXJyb3Q6ICAgICAgICAgICAgICAjZjM5YzEyO1xuJG9yYW5nZTogICAgICAgICAgICAgICNlNjdlMjI7XG4kcHVta2luOiAgICAgICAgICAgICAgI2QzNTQwMDtcbiRnb2xkOiAgICAgICAgICAgICAgICAjOWU4NDZkO1xuJGxpZ2h0YnJvbnplOiAgICAgICAgICNiY2FjOTk7XG4kbm90aWZ5c3VjY2VzczogICAgICAgIzFkYTA4NjtcbiRub3RpZnlzdWNjZXNzbGlnaHQ6ICByZ2JhKDI5LCAxNjAsIDEzNCwgLjg1KTtcbiRub3RpZnllcnJvcjogICAgICAgICAjZGE1YjRhO1xuJG5vdGlmeWVycm9ybGlnaHQ6ICAgIHJnYmEoMjE4LCA5MSwgNzQsIC44NSk7XG4kbm90aWZ5d2FybmluZzogICAgICAgI2YxYzQwZjtcbiRub3RpZnlpbmZvOiAgICAgICAgICAjOTVhNWE2O1xuJGJsYWNrOiAgICAgICAgICAgICAgICMwMDA7XG4kd2hpdGU6ICAgICAgICAgICAgICAgI2ZmZjtcblxuJGZhY2Vib29rOiAgICAgICAgICAgIzNmNjViNjtcbiR0d2l0dGVyOiAgICAgICAgICAgICM1NGMxZjI7XG4kZ3BsdXM6ICAgICAgICAgICAgICAjZDM0ODM2O1xuJGluc3RhZ3JhbTogICAgICAgICAgIzhhM2FiOTtcbiRmbGlja3I6ICAgICAgICAgICAgICNmZjQ3YTQ7XG4keW91dHViZTogICAgICAgICAgICAjZWMxZTEyO1xuIiwiLy8gQm91cmJvbiA0LjMuNFxuLy8gaHR0cDovL2JvdXJib24uaW9cbi8vIENvcHlyaWdodCAyMDExLTIwMTcgdGhvdWdodGJvdCwgaW5jLlxuLy8gTUlUIExpY2Vuc2VcblxuQGltcG9ydCBcInNldHRpbmdzL2RlcHJlY2F0aW9uLXdhcm5pbmdzXCI7XG5AaW1wb3J0IFwic2V0dGluZ3MvcHJlZml4ZXJcIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy9weC10by1lbVwiO1xuQGltcG9ydCBcInNldHRpbmdzL2Fzc2V0LXBpcGVsaW5lXCI7XG5cbkBpbXBvcnQgXCJib3VyYm9uLWRlcHJlY2F0ZVwiO1xuXG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Fzc2lnbi1pbnB1dHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29udGFpbnNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29udGFpbnMtZmFsc3lcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvaXMtbGVuZ3RoXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2lzLWxpZ2h0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2lzLW51bWJlclwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9pcy1zaXplXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3B4LXRvLWVtXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3B4LXRvLXJlbVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9zaGFkZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9zdHJpcC11bml0c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy90aW50XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3RyYW5zaXRpb24tcHJvcGVydHktbmFtZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy91bnBhY2tcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvbW9kdWxhci1zY2FsZVwiO1xuXG5AaW1wb3J0IFwiaGVscGVycy9jb252ZXJ0LXVuaXRzXCI7XG5AaW1wb3J0IFwiaGVscGVycy9kaXJlY3Rpb25hbC12YWx1ZXNcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL2ZvbnQtc291cmNlLWRlY2xhcmF0aW9uXCI7XG5AaW1wb3J0IFwiaGVscGVycy9ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItYW5nbGUtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItZ3JhZGllbnQtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItcG9zaXRpb25zLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLWFyZy1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3JhZGlhbC1wb3NpdGlvbnMtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9yZW5kZXItZ3JhZGllbnRzXCI7XG5AaW1wb3J0IFwiaGVscGVycy9zaGFwZS1zaXplLXN0cmlwcGVyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9zdHItdG8tbnVtXCI7XG5cbkBpbXBvcnQgXCJjc3MzL2FuaW1hdGlvblwiO1xuQGltcG9ydCBcImNzczMvYXBwZWFyYW5jZVwiO1xuQGltcG9ydCBcImNzczMvYmFja2ZhY2UtdmlzaWJpbGl0eVwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1pbWFnZVwiO1xuQGltcG9ydCBcImNzczMvYm9yZGVyLWltYWdlXCI7XG5AaW1wb3J0IFwiY3NzMy9jYWxjXCI7XG5AaW1wb3J0IFwiY3NzMy9jb2x1bW5zXCI7XG5AaW1wb3J0IFwiY3NzMy9maWx0ZXJcIjtcbkBpbXBvcnQgXCJjc3MzL2ZsZXgtYm94XCI7XG5AaW1wb3J0IFwiY3NzMy9mb250LWZhY2VcIjtcbkBpbXBvcnQgXCJjc3MzL2ZvbnQtZmVhdHVyZS1zZXR0aW5nc1wiO1xuQGltcG9ydCBcImNzczMvaGlkcGktbWVkaWEtcXVlcnlcIjtcbkBpbXBvcnQgXCJjc3MzL2h5cGhlbnNcIjtcbkBpbXBvcnQgXCJjc3MzL2ltYWdlLXJlbmRlcmluZ1wiO1xuQGltcG9ydCBcImNzczMva2V5ZnJhbWVzXCI7XG5AaW1wb3J0IFwiY3NzMy9saW5lYXItZ3JhZGllbnRcIjtcbkBpbXBvcnQgXCJjc3MzL3BlcnNwZWN0aXZlXCI7XG5AaW1wb3J0IFwiY3NzMy9wbGFjZWhvbGRlclwiO1xuQGltcG9ydCBcImNzczMvcmFkaWFsLWdyYWRpZW50XCI7XG5AaW1wb3J0IFwiY3NzMy9zZWxlY3Rpb25cIjtcbkBpbXBvcnQgXCJjc3MzL3RleHQtZGVjb3JhdGlvblwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNmb3JtXCI7XG5AaW1wb3J0IFwiY3NzMy90cmFuc2l0aW9uXCI7XG5AaW1wb3J0IFwiY3NzMy91c2VyLXNlbGVjdFwiO1xuXG5AaW1wb3J0IFwiYWRkb25zL2JvcmRlci1jb2xvclwiO1xuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItcmFkaXVzXCI7XG5AaW1wb3J0IFwiYWRkb25zL2JvcmRlci1zdHlsZVwiO1xuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItd2lkdGhcIjtcbkBpbXBvcnQgXCJhZGRvbnMvYnV0dG9uc1wiO1xuQGltcG9ydCBcImFkZG9ucy9jbGVhcmZpeFwiO1xuQGltcG9ydCBcImFkZG9ucy9lbGxpcHNpc1wiO1xuQGltcG9ydCBcImFkZG9ucy9mb250LXN0YWNrc1wiO1xuQGltcG9ydCBcImFkZG9ucy9oaWRlLXRleHRcIjtcbkBpbXBvcnQgXCJhZGRvbnMvbWFyZ2luXCI7XG5AaW1wb3J0IFwiYWRkb25zL3BhZGRpbmdcIjtcbkBpbXBvcnQgXCJhZGRvbnMvcG9zaXRpb25cIjtcbkBpbXBvcnQgXCJhZGRvbnMvcHJlZml4ZXJcIjtcbkBpbXBvcnQgXCJhZGRvbnMvcmV0aW5hLWltYWdlXCI7XG5AaW1wb3J0IFwiYWRkb25zL3NpemVcIjtcbkBpbXBvcnQgXCJhZGRvbnMvdGV4dC1pbnB1dHNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvdGltaW5nLWZ1bmN0aW9uc1wiO1xuQGltcG9ydCBcImFkZG9ucy90cmlhbmdsZVwiO1xuQGltcG9ydCBcImFkZG9ucy93b3JkLXdyYXBcIjtcblxuQGltcG9ydCBcImJvdXJib24tZGVwcmVjYXRlZC11cGNvbWluZ1wiO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gRW5hYmxlIG9yIGRpc2FibGUgb3V0cHV0IG9mIEJvdXJib27igJlzIGRlcHJlY2F0aW9uLXJlbGF0ZWQgU2FzcyB3YXJuaW5ncy5cbi8vLyBUaGlzIHZhcmlhYmxlIG11c3QgYmUgZGVjbGFyZWQgX2JlZm9yZV8gaW1wb3J0aW5nIEJvdXJib24uXG4vLy9cbi8vLyBAdHlwZSBCb29sXG5cbiRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogdHJ1ZSAhZGVmYXVsdDtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEdsb2JhbCB2YXJpYWJsZXMgdG8gZW5hYmxlIG9yIGRpc2FibGUgdmVuZG9yIHByZWZpeGVzXG5cbiRwcmVmaXgtZm9yLXdlYmtpdDogICAgdHJ1ZSAhZGVmYXVsdDtcbiRwcmVmaXgtZm9yLW1vemlsbGE6ICAgdHJ1ZSAhZGVmYXVsdDtcbiRwcmVmaXgtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcbiRwcmVmaXgtZm9yLW9wZXJhOiAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRwcmVmaXgtZm9yLXNwZWM6ICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiIsIiRlbS1iYXNlOiAxNnB4ICFkZWZhdWx0O1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQSBnbG9iYWwgc2V0dGluZyB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgYCRhc3NldC1waXBlbGluZWAgdmFyaWFibGUgZm9yIGFsbCBmdW5jdGlvbnMgdGhhdCBhY2NlcHQgaXQuXG4vLy9cbi8vLyBAdHlwZSBCb29sXG5cbiRhc3NldC1waXBlbGluZTogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBUaHJvd3MgU2FzcyB3YXJuaW5ncyB0byBhbm5vdW5jZSBsaWJyYXJ5IGRlcHJlY2F0aW9ucy4gWW91IGNhbiBkaXNhYmxlIHRoZW1cbi8vLyBieSBzZXR0aW5nIHRoZSBgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzYCB2YXJpYWJsZSB0byBgZmFsc2VgLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5cbkBtaXhpbiBfYm91cmJvbi1kZXByZWNhdGUoJGZlYXR1cmUsICRtZXNzYWdlOiBudWxsKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgI3skZmVhdHVyZX1gIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgXCIgK1xuICAgICAgXCJyZW1vdmVkIGluIDUuMC4wLiAjeyRtZXNzYWdlfVwiO1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZygkZmVhdHVyZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUoJGZlYXR1cmUsIFwiV2Ugc3VnZ2VzdCB1c2luZyBhbiBhdXRvbWF0ZWQgXCIgK1xuICAgIFwicHJlZml4aW5nIHRvb2wsIGxpa2UgQXV0b3ByZWZpeGVyLlwiKTtcbn1cbiIsIkBmdW5jdGlvbiBhc3NpZ24taW5wdXRzKCRpbnB1dHMsICRwc2V1ZG86IG51bGwpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBhc3NpZ24taW5wdXRzYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkbGlzdDogKCk7XG5cbiAgQGVhY2ggJGlucHV0IGluICRpbnB1dHMge1xuICAgICRpbnB1dDogdW5xdW90ZSgkaW5wdXQpO1xuICAgICRpbnB1dDogaWYoJHBzZXVkbywgJGlucHV0ICsgXCI6XCIgKyAkcHNldWRvLCAkaW5wdXQpO1xuICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRpbnB1dCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkbGlzdDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENoZWNrcyBpZiBhIGxpc3QgY29udGFpbnMgYSB2YWx1ZShzKS5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdFxuLy8vICAgVGhlIGxpc3QgdG8gY2hlY2sgYWdhaW5zdC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbHVlc1xuLy8vICAgQSBzaW5nbGUgdmFsdWUgb3IgbGlzdCBvZiB2YWx1ZXMgdG8gY2hlY2sgZm9yLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICBjb250YWlucygkbGlzdCwgJHZhbHVlKVxuLy8vXG4vLy8gQHJldHVybiB7Qm9vbH1cblxuQGZ1bmN0aW9uIGNvbnRhaW5zKCRsaXN0LCAkdmFsdWVzLi4uKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgY29udGFpbnNgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgXCIgK1xuICAgIFwicmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gIEBlYWNoICR2YWx1ZSBpbiAkdmFsdWVzIHtcbiAgICBAaWYgdHlwZS1vZihpbmRleCgkbGlzdCwgJHZhbHVlKSkgIT0gXCJudW1iZXJcIiB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENoZWNrcyBpZiBhIGxpc3QgZG9lcyBub3QgY29udGFpbnMgYSB2YWx1ZS5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdFxuLy8vICAgVGhlIGxpc3QgdG8gY2hlY2sgYWdhaW5zdC5cbi8vL1xuLy8vIEByZXR1cm4ge0Jvb2x9XG5cbkBmdW5jdGlvbiBjb250YWlucy1mYWxzeSgkbGlzdCkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGNvbnRhaW5zLWZhbHN5YCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgQGlmIG5vdCAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENoZWNrcyBmb3IgYSB2YWxpZCBDU1MgbGVuZ3RoLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR2YWx1ZVxuXG5AZnVuY3Rpb24gaXMtbGVuZ3RoKCR2YWx1ZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGlzLWxlbmd0aGAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBcIiArXG4gICAgXCJyZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgQHJldHVybiB0eXBlLW9mKCR2YWx1ZSkgIT0gXCJudWxsXCIgYW5kIChzdHItc2xpY2UoJHZhbHVlICsgXCJcIiwgMSwgNCkgPT0gXCJjYWxjXCJcbiAgICAgICBvciBpbmRleChhdXRvIGluaGVyaXQgaW5pdGlhbCAwLCAkdmFsdWUpXG4gICAgICAgb3IgKHR5cGUtb2YoJHZhbHVlKSA9PSBcIm51bWJlclwiIGFuZCBub3QodW5pdGxlc3MoJHZhbHVlKSkpKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb2dyYW1hdGljYWxseSBkZXRlcm1pbmVzIHdoZXRoZXIgYSBjb2xvciBpcyBsaWdodCBvciBkYXJrLlxuLy8vXG4vLy8gQGxpbmsgaHR0cDovL3JvYm90cy50aG91Z2h0Ym90LmNvbS9jbG9zZXItbG9vay1jb2xvci1saWdodG5lc3Ncbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3IgKEhleCl9ICRjb2xvclxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICBpcy1saWdodCgkY29sb3IpXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuXG5AZnVuY3Rpb24gaXMtbGlnaHQoJGhleC1jb2xvcikge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGlzLWxpZ2h0YCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkLWxvY2FsLXJlZDogcmVkKHJnYmEoJGhleC1jb2xvciwgMSkpO1xuICAkLWxvY2FsLWdyZWVuOiBncmVlbihyZ2JhKCRoZXgtY29sb3IsIDEpKTtcbiAgJC1sb2NhbC1ibHVlOiBibHVlKHJnYmEoJGhleC1jb2xvciwgMSkpO1xuICAkLWxvY2FsLWxpZ2h0bmVzczogKCQtbG9jYWwtcmVkICogMC4yMTI2ICsgJC1sb2NhbC1ncmVlbiAqIDAuNzE1MiArICQtbG9jYWwtYmx1ZSAqIDAuMDcyMikgLyAyNTU7XG5cbiAgQHJldHVybiAkLWxvY2FsLWxpZ2h0bmVzcyA+IDAuNjtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENoZWNrcyBmb3IgYSB2YWxpZCBudW1iZXIuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zXG5cbkBmdW5jdGlvbiBpcy1udW1iZXIoJHZhbHVlKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgaXMtbnVtYmVyYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICBAcmV0dXJuIGNvbnRhaW5zKFwiMFwiIFwiMVwiIFwiMlwiIFwiM1wiIFwiNFwiIFwiNVwiIFwiNlwiIFwiN1wiIFwiOFwiIFwiOVwiIDAgMSAyIDMgNCA1IDYgNyA4IDksICR2YWx1ZSk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgZm9yIGEgdmFsaWQgQ1NTIHNpemUuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHZhbHVlXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBpcy1sZW5ndGhcblxuQGZ1bmN0aW9uIGlzLXNpemUoJHZhbHVlKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgaXMtc2l6ZWAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBcIiArXG4gICAgXCJyZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlICFnbG9iYWw7XG5cbiAgQHJldHVybiBpcy1sZW5ndGgoJHZhbHVlKVxuICAgICAgICAgIG9yIGNvbnRhaW5zKFwiZmlsbFwiIFwiZml0LWNvbnRlbnRcIiBcIm1pbi1jb250ZW50XCIgXCJtYXgtY29udGVudFwiLCAkdmFsdWUpO1xuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xufVxuIiwiLy8gQ29udmVydCBwaXhlbHMgdG8gZW1zXG4vLyBlZy4gZm9yIGEgcmVsYXRpb25hbCB2YWx1ZSBvZiAxMnB4IHdyaXRlIGVtKDEyKSB3aGVuIHRoZSBwYXJlbnQgaXMgMTZweFxuLy8gaWYgdGhlIHBhcmVudCBpcyBhbm90aGVyIHZhbHVlIHNheSAyNHB4IHdyaXRlIGVtKDEyLCAyNClcblxuQGZ1bmN0aW9uIGVtKCRweHZhbCwgJGJhc2U6ICRlbS1iYXNlKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgZW1gIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgXCIgK1xuICAgIFwicmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuXG4gIEBpZiBub3QgdW5pdGxlc3MoJHB4dmFsKSB7XG4gICAgJHB4dmFsOiBzdHJpcC11bml0cygkcHh2YWwpO1xuICB9XG4gIEBpZiBub3QgdW5pdGxlc3MoJGJhc2UpIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdHMoJGJhc2UpO1xuICB9XG5cbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nICFnbG9iYWw7XG5cbiAgQHJldHVybiAoJHB4dmFsIC8gJGJhc2UpICogMWVtO1xufVxuIiwiLy8gQ29udmVydCBwaXhlbHMgdG8gcmVtc1xuLy8gZWcuIGZvciBhIHJlbGF0aW9uYWwgdmFsdWUgb2YgMTJweCB3cml0ZSByZW0oMTIpXG4vLyBBc3N1bWVzICRlbS1iYXNlIGlzIHRoZSBmb250LXNpemUgb2YgPGh0bWw+XG5cbkBmdW5jdGlvbiByZW0oJHB4dmFsKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgcmVtYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcblxuICBAaWYgbm90IHVuaXRsZXNzKCRweHZhbCkge1xuICAgICRweHZhbDogc3RyaXAtdW5pdHMoJHB4dmFsKTtcbiAgfVxuXG4gICRiYXNlOiAkZW0tYmFzZTtcbiAgQGlmIG5vdCB1bml0bGVzcygkYmFzZSkge1xuICAgICRiYXNlOiBzdHJpcC11bml0cygkYmFzZSk7XG4gIH1cblxuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmcgIWdsb2JhbDtcblxuICBAcmV0dXJuICgkcHh2YWwgLyAkYmFzZSkgKiAxcmVtO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gTWl4ZXMgYSBjb2xvciB3aXRoIGJsYWNrLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciAoUGVyY2VudGFnZSl9ICRwZXJjZW50XG4vLy8gICBUaGUgYW1vdW50IG9mIGJsYWNrIHRvIGJlIG1peGVkIGluLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6IHNoYWRlKCNmZmJiNTIsIDYwJSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICM2NjRhMjA7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmV0dXJuIHtDb2xvcn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnQpIHtcbiAgQHJldHVybiBtaXgoIzAwMCwgJGNvbG9yLCAkcGVyY2VudCk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBTdHJpcHMgdGhlIHVuaXQgZnJvbSBhIG51bWJlci5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIChXaXRoIFVuaXQpfSAkdmFsdWVcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgJGRpbWVuc2lvbjogc3RyaXAtdW5pdHMoMTBlbSk7XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAkZGltZW5zaW9uOiAxMDtcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlciAoVW5pdGxlc3MpfVxuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdHMoJHZhbHVlKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgc3RyaXAtdW5pdHNgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgXCIgK1xuICAgIFwicmVtb3ZlZCBpbiA1LjAuMCBhbmQgcmVwbGFjZWQgYnkgdGhlIGBzdHJpcC11bml0YCBmdW5jdGlvbi5cIjtcbiAgfVxuXG4gIEByZXR1cm4gKCR2YWx1ZSAvICgkdmFsdWUgKiAwICsgMSkpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gTWl4ZXMgYSBjb2xvciB3aXRoIHdoaXRlLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciAoUGVyY2VudGFnZSl9ICRwZXJjZW50XG4vLy8gICBUaGUgYW1vdW50IG9mIHdoaXRlIHRvIGJlIG1peGVkIGluLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6IHRpbnQoIzZlY2FhNiwgNDAlKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2E4ZGZjOTtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXR1cm4ge0NvbG9yfVxuXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRwZXJjZW50KSB7XG4gIEByZXR1cm4gbWl4KCNmZmYsICRjb2xvciwgJHBlcmNlbnQpO1xufVxuIiwiLy8gUmV0dXJuIHZlbmRvci1wcmVmaXhlZCBwcm9wZXJ0eSBuYW1lcyBpZiBhcHByb3ByaWF0ZVxuLy8gRXhhbXBsZTogdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygodHJhbnNmb3JtLCBjb2xvciwgYmFja2dyb3VuZCksIG1veikgLT4gLW1vei10cmFuc2Zvcm0sIGNvbG9yLCBiYWNrZ3JvdW5kXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygkcHJvcHMsICR2ZW5kb3I6IGZhbHNlKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lc2AgaXMgZGVwcmVjYXRlZCBcIiArXG4gICAgXCJhbmQgd2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlICFnbG9iYWw7XG5cbiAgJG5ldy1wcm9wczogKCk7XG5cbiAgQGVhY2ggJHByb3AgaW4gJHByb3BzIHtcbiAgICAkbmV3LXByb3BzOiBhcHBlbmQoJG5ldy1wcm9wcywgdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lKCRwcm9wLCAkdmVuZG9yKSwgY29tbWEpO1xuICB9XG5cbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nICFnbG9iYWw7XG5cbiAgQHJldHVybiAkbmV3LXByb3BzO1xufVxuXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lKCRwcm9wLCAkdmVuZG9yOiBmYWxzZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYHRyYW5zaXRpb24tcHJvcGVydHktbmFtZWAgaXMgZGVwcmVjYXRlZCBcIiArXG4gICAgXCJhbmQgd2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgLy8gcHV0IG90aGVyIHByb3BlcnRpZXMgdGhhdCBuZWVkIHRvIGJlIHByZWZpeGVkIGhlcmUgYXN3ZWxsXG4gIEBpZiAkdmVuZG9yIGFuZCAkcHJvcCA9PSB0cmFuc2Zvcm0ge1xuICAgIEByZXR1cm4gdW5xdW90ZSgnLScrJHZlbmRvcisnLScrJHByb3ApO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRwcm9wO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDb252ZXJ0cyBzaG9ydGhhbmQgdG8gdGhlIDQtdmFsdWUgc3ludGF4LlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2hvcnRoYW5kXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgbWFyZ2luOiB1bnBhY2soMWVtIDJlbSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG1hcmdpbjogMWVtIDJlbSAxZW0gMmVtO1xuLy8vICAgfVxuXG5AZnVuY3Rpb24gdW5wYWNrKCRzaG9ydGhhbmQpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGB1bnBhY2tgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgXCIgK1xuICAgIFwicmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHNob3J0aGFuZCkgPT0gMSB7XG4gICAgQHJldHVybiBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRzaG9ydGhhbmQpID09IDIge1xuICAgIEByZXR1cm4gbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAyKSBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDIpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkc2hvcnRoYW5kKSA9PSAzIHtcbiAgICBAcmV0dXJuIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMikgbnRoKCRzaG9ydGhhbmQsIDMpIG50aCgkc2hvcnRoYW5kLCAyKTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkc2hvcnRoYW5kO1xuICB9XG59XG4iLCIvLyBTY2FsaW5nIFZhcmlhYmxlc1xuJGdvbGRlbjogICAgICAgICAgIDEuNjE4O1xuJG1pbm9yLXNlY29uZDogICAgIDEuMDY3O1xuJG1ham9yLXNlY29uZDogICAgIDEuMTI1O1xuJG1pbm9yLXRoaXJkOiAgICAgIDEuMjtcbiRtYWpvci10aGlyZDogICAgICAxLjI1O1xuJHBlcmZlY3QtZm91cnRoOiAgIDEuMzMzO1xuJGF1Z21lbnRlZC1mb3VydGg6IDEuNDE0O1xuJHBlcmZlY3QtZmlmdGg6ICAgIDEuNTtcbiRtaW5vci1zaXh0aDogICAgICAxLjY7XG4kbWFqb3Itc2l4dGg6ICAgICAgMS42Njc7XG4kbWlub3Itc2V2ZW50aDogICAgMS43Nzg7XG4kbWFqb3Itc2V2ZW50aDogICAgMS44NzU7XG4kb2N0YXZlOiAgICAgICAgICAgMjtcbiRtYWpvci10ZW50aDogICAgICAyLjU7XG4kbWFqb3ItZWxldmVudGg6ICAgMi42Njc7XG4kbWFqb3ItdHdlbGZ0aDogICAgMztcbiRkb3VibGUtb2N0YXZlOiAgICA0O1xuXG4kdXNlci1vdXRwdXQtZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZTtcblxuJG1vZHVsYXItc2NhbGUtcmF0aW86ICRwZXJmZWN0LWZvdXJ0aCAhZGVmYXVsdDtcbiRtb2R1bGFyLXNjYWxlLWJhc2U6IGVtKCRlbS1iYXNlKSAhZGVmYXVsdDtcblxuJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiAkdXNlci1vdXRwdXQtZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZztcblxuQGZ1bmN0aW9uIG1vZHVsYXItc2NhbGUoJGluY3JlbWVudCwgJHZhbHVlOiAkbW9kdWxhci1zY2FsZS1iYXNlLCAkcmF0aW86ICRtb2R1bGFyLXNjYWxlLXJhdGlvKSB7XG4gICR2MTogbnRoKCR2YWx1ZSwgMSk7XG4gICR2MjogbnRoKCR2YWx1ZSwgbGVuZ3RoKCR2YWx1ZSkpO1xuICAkdmFsdWU6ICR2MTtcblxuICAvLyBzY2FsZSAkdjIgdG8ganVzdCBhYm92ZSAkdjFcbiAgQHdoaWxlICR2MiA+ICR2MSB7XG4gICAgJHYyOiAoJHYyIC8gJHJhdGlvKTsgLy8gd2lsbCBiZSBvZmYtYnktMVxuICB9XG4gIEB3aGlsZSAkdjIgPCAkdjEge1xuICAgICR2MjogKCR2MiAqICRyYXRpbyk7IC8vIHdpbGwgZml4IG9mZi1ieS0xXG4gIH1cblxuICAvLyBjaGVjayBBRlRFUiBzY2FsaW5nICR2MiB0byBwcmV2ZW50IGRvdWJsZS1jb3VudGluZyBjb3JuZXItY2FzZVxuICAkZG91YmxlLXN0cmFuZGVkOiAkdjIgPiAkdjE7XG5cbiAgQGlmICRpbmNyZW1lbnQgPiAwIHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRpbmNyZW1lbnQge1xuICAgICAgQGlmICRkb3VibGUtc3RyYW5kZWQgYW5kICgkdjEgKiAkcmF0aW8pID4gJHYyIHtcbiAgICAgICAgJHZhbHVlOiAkdjI7XG4gICAgICAgICR2MjogKCR2MiAqICRyYXRpbyk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJHYxOiAoJHYxICogJHJhdGlvKTtcbiAgICAgICAgJHZhbHVlOiAkdjE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRpbmNyZW1lbnQgPCAwIHtcbiAgICAvLyBhZGp1c3QgJHYyIHRvIGp1c3QgYmVsb3cgJHYxXG4gICAgQGlmICRkb3VibGUtc3RyYW5kZWQge1xuICAgICAgJHYyOiAoJHYyIC8gJHJhdGlvKTtcbiAgICB9XG5cbiAgICBAZm9yICRpIGZyb20gJGluY3JlbWVudCB0aHJvdWdoIC0xIHtcbiAgICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIGFuZCAoJHYxIC8gJHJhdGlvKSA8ICR2MiB7XG4gICAgICAgICR2YWx1ZTogJHYyO1xuICAgICAgICAkdjI6ICgkdjIgLyAkcmF0aW8pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICR2MTogKCR2MSAvICRyYXRpbyk7XG4gICAgICAgICR2YWx1ZTogJHYxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBzdHItdG8tbnVtIGZuLlxuLy8gU291cmNlOiBodHRwOi8vc2Fzc21laXN0ZXIuY29tL2dpc3QvOTY0NzQwOFxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuQGZ1bmN0aW9uIF9jb252ZXJ0LXVuaXRzKCRudW1iZXIsICR1bml0KSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgX2NvbnZlcnQtdW5pdHNgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgXCIgK1xuICAgIFwiYmUgcmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gICRzdHJpbmdzOiBcInB4XCIsIFwiY21cIiwgXCJtbVwiLCBcIiVcIiwgXCJjaFwiLCBcInBpY2FcIiwgXCJpblwiLCBcImVtXCIsIFwicmVtXCIsIFwicHRcIiwgXCJwY1wiLCBcImV4XCIsIFwidndcIiwgXCJ2aFwiLCBcInZtaW5cIiwgXCJ2bWF4XCIsIFwiZGVnXCIsIFwicmFkXCIsIFwiZ3JhZFwiLCBcInR1cm5cIjtcbiAgJHVuaXRzOiAgIDFweCwgMWNtLCAxbW0sIDElLCAxY2gsIDFwaWNhLCAxaW4sIDFlbSwgMXJlbSwgMXB0LCAxcGMsIDFleCwgMXZ3LCAxdmgsIDF2bWluLCAxdm1heCwgMWRlZywgMXJhZCwgMWdyYWQsIDF0dXJuO1xuICAkaW5kZXg6IGluZGV4KCRzdHJpbmdzLCAkdW5pdCk7XG5cbiAgQGlmIG5vdCAkaW5kZXgge1xuICAgIEB3YXJuIFwiVW5rbm93biB1bml0IGAjeyR1bml0fWAuXCI7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRudW1iZXIpICE9IFwibnVtYmVyXCIge1xuICAgIEB3YXJuIFwiYCN7JG51bWJlcn0gaXMgbm90IGEgbnVtYmVyYFwiO1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBAcmV0dXJuICRudW1iZXIgKiBudGgoJHVuaXRzLCAkaW5kZXgpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gRGlyZWN0aW9uYWwtcHJvcGVydHkgbWl4aW5zIGFyZSBzaG9ydGhhbmRzIGZvciB3cml0aW5nIHByb3BlcnRpZXMgbGlrZSB0aGUgZm9sbG93aW5nXG4vLy9cbi8vLyBAaWdub3JlIFlvdSBjYW4gYWxzbyB1c2UgYGZhbHNlYCBpbnN0ZWFkIG9mIGBudWxsYC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgZGlyZWN0aW9uYWwgdmFsdWVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLXN0eWxlKGRvdHRlZCBudWxsKTtcbi8vLyAgICAgQGluY2x1ZGUgbWFyZ2luKG51bGwgMCAxMHB4KTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogZG90dGVkO1xuLy8vICAgICBib3JkZXItdG9wLXN0eWxlOiBkb3R0ZWQ7XG4vLy8gICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4vLy8gICAgIG1hcmdpbi1sZWZ0OiAwO1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zLWZhbHN5XG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fVxuXG5AZnVuY3Rpb24gY29sbGFwc2UtZGlyZWN0aW9uYWxzKCR2YWxzKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgY29sbGFwc2UtZGlyZWN0aW9uYWxzYCBpcyBkZXByZWNhdGVkIGFuZCBcIiArXG4gICAgXCJ3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkb3V0cHV0OiBudWxsO1xuXG4gICRhOiBudGgoJHZhbHMsIDEpO1xuICAkYjogaWYobGVuZ3RoKCR2YWxzKSA8IDIsICRhLCBudGgoJHZhbHMsIDIpKTtcbiAgJGM6IGlmKGxlbmd0aCgkdmFscykgPCAzLCAkYSwgbnRoKCR2YWxzLCAzKSk7XG4gICRkOiBpZihsZW5ndGgoJHZhbHMpIDwgMiwgJGEsIG50aCgkdmFscywgaWYobGVuZ3RoKCR2YWxzKSA8IDQsIDIsIDQpKSk7XG5cbiAgQGlmICRhID09IDAgeyAkYTogMDsgfVxuICBAaWYgJGIgPT0gMCB7ICRiOiAwOyB9XG4gIEBpZiAkYyA9PSAwIHsgJGM6IDA7IH1cbiAgQGlmICRkID09IDAgeyAkZDogMDsgfVxuXG4gIEBpZiAkYSA9PSAkYiBhbmQgJGEgPT0gJGMgYW5kICRhID09ICRkIHsgJG91dHB1dDogJGE7ICAgICAgICAgIH1cbiAgQGVsc2UgaWYgJGEgPT0gJGMgYW5kICRiID09ICRkICAgICAgICAgeyAkb3V0cHV0OiAkYSAkYjsgICAgICAgfVxuICBAZWxzZSBpZiAkYiA9PSAkZCAgICAgICAgICAgICAgICAgICAgICB7ICRvdXRwdXQ6ICRhICRiICRjOyAgICB9XG4gIEBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJG91dHB1dDogJGEgJGIgJGMgJGQ7IH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cbi8vLyBPdXRwdXQgZGlyZWN0aW9uYWwgcHJvcGVydGllcywgZm9yIGluc3RhbmNlIGBtYXJnaW5gLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHByZVxuLy8vICAgUHJlZml4IHRvIHVzZVxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3VmXG4vLy8gICBTdWZmaXggdG8gdXNlXG4vLy8gQHBhcmFtIHtMaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiB2YWx1ZXNcbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29sbGFwc2UtZGlyZWN0aW9uYWxzXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBjb250YWlucy1mYWxzeVxuXG5AbWl4aW4gZGlyZWN0aW9uYWwtcHJvcGVydHkoJHByZSwgJHN1ZiwgJHZhbHMpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlKFwiZGlyZWN0aW9uYWwtcHJvcGVydHlcIik7XG5cbiAgJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlICFnbG9iYWw7XG5cbiAgLy8gUHJvcGVydHkgTmFtZXNcbiAgJHRvcDogICAgJHByZSArIFwiLXRvcFwiICAgICsgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcbiAgJGJvdHRvbTogJHByZSArIFwiLWJvdHRvbVwiICsgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcbiAgJGxlZnQ6ICAgJHByZSArIFwiLWxlZnRcIiAgICsgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcbiAgJHJpZ2h0OiAgJHByZSArIFwiLXJpZ2h0XCIgICsgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcbiAgJGFsbDogICAgJHByZSArICAgICAgICAgICAgIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG5cbiAgJHZhbHM6IGNvbGxhcHNlLWRpcmVjdGlvbmFscygkdmFscyk7XG5cbiAgQGlmIGNvbnRhaW5zLWZhbHN5KCR2YWxzKSB7XG4gICAgQGlmIG50aCgkdmFscywgMSkgeyAjeyR0b3B9OiBudGgoJHZhbHMsIDEpOyB9XG5cbiAgICBAaWYgbGVuZ3RoKCR2YWxzKSA9PSAxIHtcbiAgICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skcmlnaHR9OiBudGgoJHZhbHMsIDEpOyB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAyKSB7ICN7JHJpZ2h0fTogbnRoKCR2YWxzLCAyKTsgfVxuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJHZhbHMpID09IDIge1xuICAgICAgQGlmIG50aCgkdmFscywgMSkgeyAjeyRib3R0b219OiBudGgoJHZhbHMsIDEpOyB9XG4gICAgICBAaWYgbnRoKCR2YWxzLCAyKSB7ICN7JGxlZnR9OiAgIG50aCgkdmFscywgMik7IH1cbiAgICB9IEBlbHNlIGlmIGxlbmd0aCgkdmFscykgPT0gMyB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAzKSB7ICN7JGJvdHRvbX06IG50aCgkdmFscywgMyk7IH1cbiAgICAgIEBpZiBudGgoJHZhbHMsIDIpIHsgI3skbGVmdH06ICAgbnRoKCR2YWxzLCAyKTsgfVxuICAgIH0gQGVsc2UgaWYgbGVuZ3RoKCR2YWxzKSA9PSA0IHtcbiAgICAgIEBpZiBudGgoJHZhbHMsIDMpIHsgI3skYm90dG9tfTogbnRoKCR2YWxzLCAzKTsgfVxuICAgICAgQGlmIG50aCgkdmFscywgNCkgeyAjeyRsZWZ0fTogICBudGgoJHZhbHMsIDQpOyB9XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAjeyRhbGx9OiAkdmFscztcbiAgfVxuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xufVxuIiwiLy8gVXNlZCBmb3IgY3JlYXRpbmcgdGhlIHNvdXJjZSBzdHJpbmcgZm9yIGZvbnRzIHVzaW5nIEBmb250LWZhY2Vcbi8vIFJlZmVyZW5jZTogaHR0cDovL2dvby5nbC9SdTFiS1BcblxuQGZ1bmN0aW9uIGZvbnQtdXJsLXByZWZpeGVyKCRhc3NldC1waXBlbGluZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGZvbnQtdXJsLXByZWZpeGVyYCBpcyBkZXByZWNhdGVkIGFuZCBcIiArXG4gICAgXCJ3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICBAaWYgJGFzc2V0LXBpcGVsaW5lID09IHRydWUge1xuICAgIEByZXR1cm4gZm9udC11cmw7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gdXJsO1xuICB9XG59XG5cbkBmdW5jdGlvbiBmb250LXNvdXJjZS1kZWNsYXJhdGlvbihcbiAgJGZvbnQtZmFtaWx5LFxuICAkZmlsZS1wYXRoLFxuICAkYXNzZXQtcGlwZWxpbmUsXG4gICRmaWxlLWZvcm1hdHMsXG4gICRmb250LXVybCkge1xuXG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgZm9udC1zb3VyY2UtZGVjbGFyYXRpb25gIGlzIGRlcHJlY2F0ZWQgXCIgK1xuICAgIFwiYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gICRzcmM6ICgpO1xuXG4gICRmb3JtYXRzLW1hcDogKFxuICAgIGVvdDogICBcIiN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeFwiIGZvcm1hdChcImVtYmVkZGVkLW9wZW50eXBlXCIpLFxuICAgIHdvZmYyOiBcIiN7JGZpbGUtcGF0aH0ud29mZjJcIiBmb3JtYXQoXCJ3b2ZmMlwiKSxcbiAgICB3b2ZmOiAgXCIjeyRmaWxlLXBhdGh9LndvZmZcIiBmb3JtYXQoXCJ3b2ZmXCIpLFxuICAgIHR0ZjogICBcIiN7JGZpbGUtcGF0aH0udHRmXCIgZm9ybWF0KFwidHJ1ZXR5cGVcIiksXG4gICAgc3ZnOiAgIFwiI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9XCIgZm9ybWF0KFwic3ZnXCIpXG4gICk7XG5cbiAgQGVhY2ggJGtleSwgJHZhbHVlcyBpbiAkZm9ybWF0cy1tYXAge1xuICAgIEBpZiBjb250YWlucygkZmlsZS1mb3JtYXRzLCAka2V5KSB7XG4gICAgICAkZmlsZS1wYXRoOiBudGgoJHZhbHVlcywgMSk7XG4gICAgICAkZm9udC1mb3JtYXQ6IG50aCgkdmFsdWVzLCAyKTtcblxuICAgICAgQGlmICRhc3NldC1waXBlbGluZSA9PSB0cnVlIHtcbiAgICAgICAgJHNyYzogYXBwZW5kKCRzcmMsIGZvbnQtdXJsKCRmaWxlLXBhdGgpICRmb250LWZvcm1hdCwgY29tbWEpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRzcmM6IGFwcGVuZCgkc3JjLCB1cmwoJGZpbGUtcGF0aCkgJGZvbnQtZm9ybWF0LCBjb21tYSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3JjO1xufVxuIiwiQGZ1bmN0aW9uIF9ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyKCRncmFkaWVudC10eXBlLCAkZ3JhZGllbnQtcG9zaXRpb25zKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgX2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXJgIGlzIFwiICtcbiAgICBcImRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuXG4gIEBpZiAkZ3JhZGllbnQtcG9zaXRpb25zXG4gIGFuZCAoJGdyYWRpZW50LXR5cGUgPT0gbGluZWFyKVxuICBhbmQgKHR5cGUtb2YoJGdyYWRpZW50LXBvc2l0aW9ucykgIT0gY29sb3IpIHtcbiAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBfbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvc2l0aW9ucyk7XG4gIH1cbiAgQGVsc2UgaWYgJGdyYWRpZW50LXBvc2l0aW9uc1xuICBhbmQgKCRncmFkaWVudC10eXBlID09IHJhZGlhbClcbiAgYW5kICh0eXBlLW9mKCRncmFkaWVudC1wb3NpdGlvbnMpICE9IGNvbG9yKSB7XG4gICAgJGdyYWRpZW50LXBvc2l0aW9uczogX3JhZGlhbC1wb3NpdGlvbnMtcGFyc2VyKCRncmFkaWVudC1wb3NpdGlvbnMpO1xuICB9XG5cbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nICFnbG9iYWw7XG5cbiAgQHJldHVybiAkZ3JhZGllbnQtcG9zaXRpb25zO1xufVxuIiwiLy8gUHJpdmF0ZSBmdW5jdGlvbiBmb3IgbGluZWFyLWdyYWRpZW50LXBhcnNlclxuQGZ1bmN0aW9uIF9saW5lYXItYW5nbGUtcGFyc2VyKCRpbWFnZSwgJGZpcnN0LXZhbCwgJHByZWZpeCwgJHN1ZmZpeCkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9saW5lYXItYW5nbGUtcGFyc2VyYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkb2Zmc2V0OiBudWxsO1xuICAkdW5pdC1zaG9ydDogIHN0ci1zbGljZSgkZmlyc3QtdmFsLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpIC0gMiwgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XG4gICR1bml0LWxvbmc6ICAgc3RyLXNsaWNlKCRmaXJzdC12YWwsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkgLSAzLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcblxuICBAaWYgKCR1bml0LWxvbmcgPT0gXCJncmFkXCIpIG9yXG4gICAgICAoJHVuaXQtbG9uZyA9PSBcInR1cm5cIikge1xuICAgICRvZmZzZXQ6IGlmKCR1bml0LWxvbmcgPT0gXCJncmFkXCIsIC0xMDBncmFkICogMywgLTAuNzV0dXJuKTtcbiAgfVxuXG4gIEBlbHNlIGlmICgkdW5pdC1zaG9ydCA9PSBcImRlZ1wiKSBvclxuICAgICAgICAgICAoJHVuaXQtc2hvcnQgPT0gXCJyYWRcIikge1xuICAgICRvZmZzZXQ6IGlmKCR1bml0LXNob3J0ID09IFwiZGVnXCIsIC05MCAqIDMsIDEuNnJhZCk7XG4gIH1cblxuICBAaWYgJG9mZnNldCB7XG4gICAgJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuICAgICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcblxuICAgICRudW06IF9zdHItdG8tbnVtKCRmaXJzdC12YWwpO1xuXG4gICAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nICFnbG9iYWw7XG5cbiAgICBAcmV0dXJuIChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkcHJlZml4ICsgKCRvZmZzZXQgLSAkbnVtKSArICRzdWZmaXgsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG59XG4iLCJAZnVuY3Rpb24gX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoJGltYWdlKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgX2xpbmVhci1ncmFkaWVudC1wYXJzZXJgIGlzIFwiICtcbiAgICBcImRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuXG4gICRpbWFnZTogdW5xdW90ZSgkaW1hZ2UpO1xuICAkZ3JhZGllbnRzOiAoKTtcbiAgJHN0YXJ0OiBzdHItaW5kZXgoJGltYWdlLCBcIihcIik7XG4gICRlbmQ6IHN0ci1pbmRleCgkaW1hZ2UsIFwiLFwiKTtcbiAgJGZpcnN0LXZhbDogc3RyLXNsaWNlKCRpbWFnZSwgJHN0YXJ0ICsgMSwgJGVuZCAtIDEpO1xuXG4gICRwcmVmaXg6IHN0ci1zbGljZSgkaW1hZ2UsIDEsICRzdGFydCk7XG4gICRzdWZmaXg6IHN0ci1zbGljZSgkaW1hZ2UsICRlbmQsIHN0ci1sZW5ndGgoJGltYWdlKSk7XG5cbiAgJGhhcy1tdWx0aXBsZS12YWxzOiBzdHItaW5kZXgoJGZpcnN0LXZhbCwgXCIgXCIpO1xuICAkaGFzLXNpbmdsZS1wb3NpdGlvbjogdW5xdW90ZShfcG9zaXRpb24tZmxpcHBlcigkZmlyc3QtdmFsKSArIFwiXCIpO1xuICAkaGFzLWFuZ2xlOiBpcy1udW1iZXIoc3RyLXNsaWNlKCRmaXJzdC12YWwsIDEsIDEpKTtcblxuICBAaWYgJGhhcy1tdWx0aXBsZS12YWxzIHtcbiAgICAkZ3JhZGllbnRzOiBfbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlcigkaW1hZ2UsICRmaXJzdC12YWwsICRwcmVmaXgsICRzdWZmaXgsICRoYXMtbXVsdGlwbGUtdmFscyk7XG4gIH1cblxuICBAZWxzZSBpZiAkaGFzLXNpbmdsZS1wb3NpdGlvbiAhPSBcIlwiIHtcbiAgICAkcG9zOiB1bnF1b3RlKCRoYXMtc2luZ2xlLXBvc2l0aW9uICsgXCJcIik7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJGltYWdlLFxuICAgICAgc3BlYy1pbWFnZTogJHByZWZpeCArIFwidG8gXCIgKyAkcG9zICsgJHN1ZmZpeFxuICAgICk7XG4gIH1cblxuICBAZWxzZSBpZiAkaGFzLWFuZ2xlIHtcbiAgICAvLyBSb3RhdGUgZGVncmVlIGZvciB3ZWJraXRcbiAgICAkZ3JhZGllbnRzOiBfbGluZWFyLWFuZ2xlLXBhcnNlcigkaW1hZ2UsICRmaXJzdC12YWwsICRwcmVmaXgsICRzdWZmaXgpO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgICRncmFkaWVudHM6IChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG5cbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nICFnbG9iYWw7XG5cbiAgQHJldHVybiAkZ3JhZGllbnRzO1xufVxuIiwiQGZ1bmN0aW9uIF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkcG9zKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcblxuICAkdHlwZTogdHlwZS1vZihudGgoJHBvcywgMSkpO1xuICAkc3BlYzogbnVsbDtcbiAgJGRlZ3JlZTogbnVsbDtcbiAgJHNpZGU6IG51bGw7XG4gICRjb3JuZXI6IG51bGw7XG4gICRsZW5ndGg6IGxlbmd0aCgkcG9zKTtcbiAgLy8gUGFyc2UgU2lkZSBhbmQgY29ybmVyIHBvc2l0aW9uc1xuICBAaWYgKCRsZW5ndGggPiAxKSB7XG4gICAgQGlmIG50aCgkcG9zLCAxKSA9PSBcInRvXCIgeyAvLyBOZXdlciBzeW50YXhcbiAgICAgICRzaWRlOiBudGgoJHBvcywgMik7XG5cbiAgICAgIEBpZiAkbGVuZ3RoID09IDIgeyAvLyBlZy4gdG8gdG9wXG4gICAgICAgIC8vIFN3YXAgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKG50aCgkcG9zLCAyKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiAkbGVuZ3RoID09IDMgeyAvLyBlZy4gdG8gdG9wIGxlZnRcbiAgICAgICAgJGNvcm5lcjogbnRoKCRwb3MsIDMpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAkbGVuZ3RoID09IDIgeyAvLyBPbGRlciBzeW50YXggKFwidG9wIGxlZnRcIilcbiAgICAgICRzaWRlOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMSkpO1xuICAgICAgJGNvcm5lcjogX3Bvc2l0aW9uLWZsaXBwZXIobnRoKCRwb3MsIDIpKTtcbiAgICB9XG5cbiAgICBAaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwibGVmdCB0b3BcIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwidG9wIGxlZnRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJyaWdodCB0b3BcIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwidG9wIHJpZ2h0XCIpIHtcbiAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKCN7JHNpZGV9KSBfcG9zaXRpb24tZmxpcHBlcigjeyRjb3JuZXJ9KTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwicmlnaHQgYm90dG9tXCIpIG9yIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcImJvdHRvbSByaWdodFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgIEBlbHNlIGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcImxlZnQgYm90dG9tXCIpIG9yIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcImJvdHRvbSBsZWZ0XCIpIHtcbiAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKCN7JHNpZGV9KSBfcG9zaXRpb24tZmxpcHBlcigjeyRjb3JuZXJ9KTtcbiAgICB9XG4gICAgJHNwZWM6IHRvICRzaWRlICRjb3JuZXI7XG4gIH1cbiAgQGVsc2UgaWYgJGxlbmd0aCA9PSAxIHtcbiAgICAvLyBTd2FwIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgIEBpZiAkdHlwZSA9PSBzdHJpbmcge1xuICAgICAgJGRlZ3JlZTogJHBvcztcbiAgICAgICRzcGVjOiB0byBfcG9zaXRpb24tZmxpcHBlcigkcG9zKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGRlZ3JlZTogLTI3MCAtICRwb3M7IC8vcm90YXRlIHRoZSBncmFkaWVudCBvcHBvc2l0ZSBmcm9tIHNwZWNcbiAgICAgICRzcGVjOiAkcG9zO1xuICAgIH1cbiAgfVxuICAkZGVncmVlOiB1bnF1b3RlKCRkZWdyZWUgKyBcIixcIik7XG4gICRzcGVjOiAgIHVucXVvdGUoJHNwZWMgKyBcIixcIik7XG5cbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nICFnbG9iYWw7XG5cbiAgQHJldHVybiAkZGVncmVlICRzcGVjO1xufVxuXG5AZnVuY3Rpb24gX3Bvc2l0aW9uLWZsaXBwZXIoJHBvcykge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9wb3NpdGlvbi1mbGlwcGVyYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICBAcmV0dXJuIGlmKCRwb3MgPT0gbGVmdCwgcmlnaHQsIG51bGwpXG4gICAgICAgICBpZigkcG9zID09IHJpZ2h0LCBsZWZ0LCBudWxsKVxuICAgICAgICAgaWYoJHBvcyA9PSB0b3AsIGJvdHRvbSwgbnVsbClcbiAgICAgICAgIGlmKCRwb3MgPT0gYm90dG9tLCB0b3AsIG51bGwpO1xufVxuIiwiLy8gUHJpdmF0ZSBmdW5jdGlvbiBmb3IgbGluZWFyLWdyYWRpZW50LXBhcnNlclxuQGZ1bmN0aW9uIF9saW5lYXItc2lkZS1jb3JuZXItcGFyc2VyKCRpbWFnZSwgJGZpcnN0LXZhbCwgJHByZWZpeCwgJHN1ZmZpeCwgJGhhcy1tdWx0aXBsZS12YWxzKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgX2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXJgIGlzIFwiICtcbiAgICBcImRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuXG4gICR2YWwtMTogc3RyLXNsaWNlKCRmaXJzdC12YWwsIDEsICRoYXMtbXVsdGlwbGUtdmFscyAtIDEpO1xuICAkdmFsLTI6IHN0ci1zbGljZSgkZmlyc3QtdmFsLCAkaGFzLW11bHRpcGxlLXZhbHMgKyAxLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcbiAgJHZhbC0zOiBudWxsO1xuICAkaGFzLXZhbC0zOiBzdHItaW5kZXgoJHZhbC0yLCBcIiBcIik7XG5cbiAgQGlmICRoYXMtdmFsLTMge1xuICAgICR2YWwtMzogc3RyLXNsaWNlKCR2YWwtMiwgJGhhcy12YWwtMyArIDEsIHN0ci1sZW5ndGgoJHZhbC0yKSk7XG4gICAgJHZhbC0yOiBzdHItc2xpY2UoJHZhbC0yLCAxLCAkaGFzLXZhbC0zIC0gMSk7XG4gIH1cblxuICAkcG9zOiBfcG9zaXRpb24tZmxpcHBlcigkdmFsLTEpIF9wb3NpdGlvbi1mbGlwcGVyKCR2YWwtMikgX3Bvc2l0aW9uLWZsaXBwZXIoJHZhbC0zKTtcbiAgJHBvczogdW5xdW90ZSgkcG9zICsgXCJcIik7XG5cbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nICFnbG9iYWw7XG5cbiAgLy8gVXNlIG9sZCBzcGVjIGZvciB3ZWJraXRcbiAgQGlmICR2YWwtMSA9PSBcInRvXCIge1xuICAgIEByZXR1cm4gKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cblxuICAvLyBCcmluZyB0aGUgY29kZSB1cCB0byBzcGVjXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXG4gICAgICBzcGVjLWltYWdlOiAkcHJlZml4ICsgXCJ0byBcIiArICRwb3MgKyAkc3VmZml4XG4gICAgKTtcbiAgfVxufVxuIiwiQGZ1bmN0aW9uIF9yYWRpYWwtYXJnLXBhcnNlcigkZzEsICRnMiwgJHBvcywgJHNoYXBlLXNpemUpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBfcmFkaWFsLWFyZy1wYXJzZXJgIGlzIFwiICtcbiAgICBcImRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gIEBlYWNoICR2YWx1ZSBpbiAkZzEsICRnMiB7XG4gICAgJGZpcnN0LXZhbDogbnRoKCR2YWx1ZSwgMSk7XG4gICAgJHBvcy10eXBlOiAgdHlwZS1vZigkZmlyc3QtdmFsKTtcbiAgICAkc3BlYy1hdC1pbmRleDogbnVsbDtcblxuICAgIC8vIERldGVybWluZSBpZiBzcGVjIHdhcyBwYXNzZWQgdG8gbWl4aW5cbiAgICBAaWYgdHlwZS1vZigkdmFsdWUpID09IGxpc3Qge1xuICAgICAgJHNwZWMtYXQtaW5kZXg6IGlmKGluZGV4KCR2YWx1ZSwgYXQpLCBpbmRleCgkdmFsdWUsIGF0KSwgZmFsc2UpO1xuICAgIH1cbiAgICBAaWYgJHNwZWMtYXQtaW5kZXgge1xuICAgICAgQGlmICRzcGVjLWF0LWluZGV4ID4gMSB7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggKCRzcGVjLWF0LWluZGV4IC0gMSkge1xuICAgICAgICAgICRzaGFwZS1zaXplOiAkc2hhcGUtc2l6ZSBudGgoJHZhbHVlLCAkaSk7XG4gICAgICAgIH1cbiAgICAgICAgQGZvciAkaSBmcm9tICgkc3BlYy1hdC1pbmRleCArIDEpIHRocm91Z2ggbGVuZ3RoKCR2YWx1ZSkge1xuICAgICAgICAgICRwb3M6ICRwb3MgbnRoKCR2YWx1ZSwgJGkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiAkc3BlYy1hdC1pbmRleCA9PSAxIHtcbiAgICAgICAgQGZvciAkaSBmcm9tICgkc3BlYy1hdC1pbmRleCArIDEpIHRocm91Z2ggbGVuZ3RoKCR2YWx1ZSkge1xuICAgICAgICAgICRwb3M6ICRwb3MgbnRoKCR2YWx1ZSwgJGkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAkZzE6IG51bGw7XG4gICAgfVxuXG4gICAgLy8gSWYgbm90IHNwZWMgY2FsY3VsYXRlIGNvcnJlY3QgdmFsdWVzXG4gICAgQGVsc2Uge1xuICAgICAgQGlmICgkcG9zLXR5cGUgIT0gY29sb3IpIG9yICgkZmlyc3QtdmFsICE9IFwidHJhbnNwYXJlbnRcIikge1xuICAgICAgICBAaWYgKCRwb3MtdHlwZSA9PSBudW1iZXIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiY2VudGVyXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwidG9wXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwicmlnaHRcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJib3R0b21cIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJsZWZ0XCIpIHtcblxuICAgICAgICAgICRwb3M6ICR2YWx1ZTtcblxuICAgICAgICAgIEBpZiAkcG9zID09ICRnMSB7XG4gICAgICAgICAgICAkZzE6IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGVsc2UgaWZcbiAgICAgICAgICAgKCRmaXJzdC12YWwgPT0gXCJlbGxpcHNlXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiY2lyY2xlXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiY2xvc2VzdC1zaWRlXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiY2xvc2VzdC1jb3JuZXJcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJmYXJ0aGVzdC1zaWRlXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiZmFydGhlc3QtY29ybmVyXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiY29udGFpblwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNvdmVyXCIpIHtcblxuICAgICAgICAgICRzaGFwZS1zaXplOiAkdmFsdWU7XG5cbiAgICAgICAgICBAaWYgJHZhbHVlID09ICRnMSB7XG4gICAgICAgICAgICAkZzE6IG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGVsc2UgaWYgJHZhbHVlID09ICRnMiB7XG4gICAgICAgICAgICAkZzI6IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJGcxLCAkZzIsICRwb3MsICRzaGFwZS1zaXplO1xufVxuIiwiQGZ1bmN0aW9uIF9yYWRpYWwtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtcG9zKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgX3JhZGlhbC1wb3NpdGlvbnMtcGFyc2VyYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcblxuICAkc2hhcGUtc2l6ZTogbnRoKCRncmFkaWVudC1wb3MsIDEpO1xuICAkcG9zOiAgICAgICAgbnRoKCRncmFkaWVudC1wb3MsIDIpO1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSk7XG5cbiAgJHByZS1zcGVjOiB1bnF1b3RlKGlmKCRwb3MsIFwiI3skcG9zfSwgXCIsIG51bGwpKVxuICAgICAgICAgICAgIHVucXVvdGUoaWYoJHNoYXBlLXNpemUsIFwiI3skc2hhcGUtc2l6ZX0sXCIsIG51bGwpKTtcbiAgJHBvcy1zcGVjOiBpZigkcG9zLCBcImF0ICN7JHBvc31cIiwgbnVsbCk7XG5cbiAgJHNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyRwb3Mtc3BlY31cIjtcblxuICAvLyBBZGQgY29tbWFcbiAgQGlmICgkc3BlYyAhPSBcIiAgXCIpIHtcbiAgICAkc3BlYzogXCIjeyRzcGVjfSxcIjtcbiAgfVxuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xuXG4gIEByZXR1cm4gJHByZS1zcGVjICRzcGVjO1xufVxuIiwiQGZ1bmN0aW9uIF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKCRpbWFnZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkaW1hZ2U6IHVucXVvdGUoJGltYWdlKTtcbiAgJGdyYWRpZW50czogKCk7XG4gICRzdGFydDogc3RyLWluZGV4KCRpbWFnZSwgXCIoXCIpO1xuICAkZW5kOiBzdHItaW5kZXgoJGltYWdlLCBcIixcIik7XG4gICRmaXJzdC12YWw6IHN0ci1zbGljZSgkaW1hZ2UsICRzdGFydCArIDEsICRlbmQgLSAxKTtcblxuICAkcHJlZml4OiBzdHItc2xpY2UoJGltYWdlLCAxLCAkc3RhcnQpO1xuICAkc3VmZml4OiBzdHItc2xpY2UoJGltYWdlLCAkZW5kLCBzdHItbGVuZ3RoKCRpbWFnZSkpO1xuXG4gICRpcy1zcGVjLXN5bnRheDogc3RyLWluZGV4KCRmaXJzdC12YWwsIFwiYXRcIik7XG5cbiAgQGlmICRpcy1zcGVjLXN5bnRheCBhbmQgJGlzLXNwZWMtc3ludGF4ID4gMSB7XG4gICAgJGtleXdvcmQ6IHN0ci1zbGljZSgkZmlyc3QtdmFsLCAxLCAkaXMtc3BlYy1zeW50YXggLSAyKTtcbiAgICAkcG9zOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgJGlzLXNwZWMtc3ludGF4ICsgMywgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XG4gICAgJHBvczogYXBwZW5kKCRwb3MsICRrZXl3b3JkLCBjb21tYSk7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICRwb3MgKyAkc3VmZml4LFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIEBlbHNlIGlmICRpcy1zcGVjLXN5bnRheCA9PSAxIHtcbiAgICAkcG9zOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgJGlzLXNwZWMtc3ludGF4ICsgMywgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICRwb3MgKyAkc3VmZml4LFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIEBlbHNlIGlmIHN0ci1pbmRleCgkaW1hZ2UsIFwiY292ZXJcIikgb3Igc3RyLWluZGV4KCRpbWFnZSwgXCJjb250YWluXCIpIHtcbiAgICBAd2FybiBcIlJhZGlhbC1ncmFkaWVudCBuZWVkcyB0byBiZSB1cGRhdGVkIHRvIGNvbmZvcm0gdG8gbGF0ZXN0IHNwZWMuXCI7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IG51bGwsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgICRncmFkaWVudHM6IChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG5cbiAgQHJldHVybiAkZ3JhZGllbnRzO1xufVxuIiwiLy8gVXNlciBmb3IgbGluZWFyIGFuZCByYWRpYWwgZ3JhZGllbnRzIHdpdGhpbiBiYWNrZ3JvdW5kLWltYWdlIG9yIGJvcmRlci1pbWFnZSBwcm9wZXJ0aWVzXG5cbkBmdW5jdGlvbiBfcmVuZGVyLWdyYWRpZW50cygkZ3JhZGllbnQtcG9zaXRpb25zLCAkZ3JhZGllbnRzLCAkZ3JhZGllbnQtdHlwZSwgJHZlbmRvcjogZmFsc2UpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBfcmVuZGVyLWdyYWRpZW50c2AgaXMgXCIgK1xuICAgIFwiZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJHByZS1zcGVjOiBudWxsO1xuICAkc3BlYzogbnVsbDtcbiAgJHZlbmRvci1ncmFkaWVudHM6IG51bGw7XG4gIEBpZiAkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIge1xuICAgIEBpZiAkZ3JhZGllbnQtcG9zaXRpb25zIHtcbiAgICAgICRwcmUtc3BlYzogbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDEpO1xuICAgICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IHJhZGlhbCB7XG4gICAgJHByZS1zcGVjOiBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMSk7XG4gICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XG4gIH1cblxuICBAaWYgJHZlbmRvciB7XG4gICAgJHZlbmRvci1ncmFkaWVudHM6IC0jeyR2ZW5kb3J9LSN7JGdyYWRpZW50LXR5cGV9LWdyYWRpZW50KCN7JHByZS1zcGVjfSAkZ3JhZGllbnRzKTtcbiAgfVxuICBAZWxzZSBpZiAkdmVuZG9yID09IGZhbHNlIHtcbiAgICAkdmVuZG9yLWdyYWRpZW50czogXCIjeyRncmFkaWVudC10eXBlfS1ncmFkaWVudCgjeyRzcGVjfSAjeyRncmFkaWVudHN9KVwiO1xuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiB1bnF1b3RlKCR2ZW5kb3ItZ3JhZGllbnRzKTtcbiAgfVxuICBAcmV0dXJuICR2ZW5kb3ItZ3JhZGllbnRzO1xufVxuIiwiQGZ1bmN0aW9uIF9zaGFwZS1zaXplLXN0cmlwcGVyKCRzaGFwZS1zaXplKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgX3NoYXBlLXNpemUtc3RyaXBwZXJgIGlzIFwiICtcbiAgICBcImRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gICRzaGFwZS1zaXplLXNwZWM6IG51bGw7XG4gIEBlYWNoICR2YWx1ZSBpbiAkc2hhcGUtc2l6ZSB7XG4gICAgQGlmICgkdmFsdWUgPT0gXCJjb3ZlclwiKSBvciAoJHZhbHVlID09IFwiY29udGFpblwiKSB7XG4gICAgICAkdmFsdWU6IG51bGw7XG4gICAgfVxuICAgICRzaGFwZS1zaXplLXNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyR2YWx1ZX1cIjtcbiAgfVxuICBAcmV0dXJuICRzaGFwZS1zaXplLXNwZWM7XG59XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGxpbmVhci9yYWRpYWwtZ3JhZGllbnQtcGFyc2Vycy5cbi8vIFNvdXJjZTogaHR0cDovL3Nhc3NtZWlzdGVyLmNvbS9naXN0Lzk2NDc0MDhcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBmdW5jdGlvbiBfc3RyLXRvLW51bSgkc3RyaW5nKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgX3N0ci10by1udW1gIGlzIFwiICtcbiAgICBcImRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gIC8vIE1hdHJpY2VzXG4gICRzdHJpbmdzOiBcIjBcIiBcIjFcIiBcIjJcIiBcIjNcIiBcIjRcIiBcIjVcIiBcIjZcIiBcIjdcIiBcIjhcIiBcIjlcIjtcbiAgJG51bWJlcnM6ICAwICAgMSAgIDIgICAzICAgNCAgIDUgICA2ICAgNyAgIDggICA5O1xuXG4gIC8vIFJlc3VsdFxuICAkcmVzdWx0OiAwO1xuICAkZGl2aWRlcjogMDtcbiAgJG1pbnVzOiBmYWxzZTtcblxuICAvLyBMb29waW5nIHRocm91Z2ggYWxsIGNoYXJhY3RlcnNcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHItbGVuZ3RoKCRzdHJpbmcpIHtcbiAgICAkY2hhcmFjdGVyOiBzdHItc2xpY2UoJHN0cmluZywgJGksICRpKTtcbiAgICAkaW5kZXg6IGluZGV4KCRzdHJpbmdzLCAkY2hhcmFjdGVyKTtcblxuICAgIEBpZiAkY2hhcmFjdGVyID09IFwiLVwiIHtcbiAgICAgICRtaW51czogdHJ1ZTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkY2hhcmFjdGVyID09IFwiLlwiIHtcbiAgICAgICRkaXZpZGVyOiAxO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiBub3QgJGluZGV4IHtcbiAgICAgICAgJHJlc3VsdDogaWYoJG1pbnVzLCAkcmVzdWx0ICogLTEsICRyZXN1bHQpO1xuICAgICAgICBAcmV0dXJuIF9jb252ZXJ0LXVuaXRzKCRyZXN1bHQsIHN0ci1zbGljZSgkc3RyaW5nLCAkaSkpO1xuICAgICAgfVxuXG4gICAgICAkbnVtYmVyOiBudGgoJG51bWJlcnMsICRpbmRleCk7XG5cbiAgICAgIEBpZiAkZGl2aWRlciA9PSAwIHtcbiAgICAgICAgJHJlc3VsdDogJHJlc3VsdCAqIDEwO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSB7XG4gICAgICAgIC8vIE1vdmUgdGhlIGRlY2ltYWwgZG90IHRvIHRoZSBsZWZ0XG4gICAgICAgICRkaXZpZGVyOiAkZGl2aWRlciAqIDEwO1xuICAgICAgICAkbnVtYmVyOiAkbnVtYmVyIC8gJGRpdmlkZXI7XG4gICAgICB9XG5cbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKyAkbnVtYmVyO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGlmKCRtaW51cywgJHJlc3VsdCAqIC0xLCAkcmVzdWx0KTtcbn1cbiIsIi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtYW5pbWF0aW9ucy8jdGhlLWFuaW1hdGlvbi1uYW1lLXByb3BlcnR5LVxuLy8gRWFjaCBvZiB0aGVzZSBtaXhpbnMgc3VwcG9ydCBjb21tYSBzZXBhcmF0ZWQgbGlzdHMgb2YgdmFsdWVzLCB3aGljaCBhbGxvd3MgZGlmZmVyZW50IHRyYW5zaXRpb25zIGZvciBpbmRpdmlkdWFsIHByb3BlcnRpZXMgdG8gYmUgZGVzY3JpYmVkIGluIGEgc2luZ2xlIHN0eWxlIHJ1bGUuIEVhY2ggdmFsdWUgaW4gdGhlIGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIHZhbHVlIGF0IHRoYXQgc2FtZSBwb3NpdGlvbiBpbiB0aGUgb3RoZXIgcHJvcGVydGllcy5cblxuQG1peGluIGFuaW1hdGlvbigkYW5pbWF0aW9ucy4uLikge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImFuaW1hdGlvblwiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24sICRhbmltYXRpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLW5hbWUoJG5hbWVzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYW5pbWF0aW9uLW5hbWVcIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLW5hbWUsICRuYW1lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGFuaW1hdGlvbi1kdXJhdGlvbigkdGltZXMuLi4pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJhbmltYXRpb24tZHVyYXRpb25cIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWR1cmF0aW9uLCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uKCRtb3Rpb25zLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvblwiKTtcblxuICAvLyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiwgJG1vdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50KCR2YWx1ZXMuLi4pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50XCIpO1xuXG4gIC8vIGluZmluaXRlIHwgPG51bWJlcj5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgJHZhbHVlcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGFuaW1hdGlvbi1kaXJlY3Rpb24oJGRpcmVjdGlvbnMuLi4pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJhbmltYXRpb24tZGlyZWN0aW9uXCIpO1xuXG4gIC8vIG5vcm1hbCB8IGFsdGVybmF0ZVxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZGlyZWN0aW9uLCAkZGlyZWN0aW9ucywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGFuaW1hdGlvbi1wbGF5LXN0YXRlKCRzdGF0ZXMuLi4pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJhbmltYXRpb24tcGxheS1zdGF0ZVwiKTtcblxuICAvLyBydW5uaW5nIHwgcGF1c2VkXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1wbGF5LXN0YXRlLCAkc3RhdGVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLWRlbGF5KCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImFuaW1hdGlvbi1kZWxheVwiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZGVsYXksICR0aW1lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGFuaW1hdGlvbi1maWxsLW1vZGUoJG1vZGVzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYW5pbWF0aW9uLWZpbGwtbW9kZVwiKTtcblxuICAvLyBub25lIHwgZm9yd2FyZHMgfCBiYWNrd2FyZHMgfCBib3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1maWxsLW1vZGUsICRtb2Rlcywgd2Via2l0IG1veiBzcGVjKTtcbn1cbiIsIkBtaXhpbiBhcHBlYXJhbmNlKCR2YWx1ZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImFwcGVhcmFuY2VcIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYXBwZWFyYW5jZSwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG4iLCJAbWl4aW4gYmFja2ZhY2UtdmlzaWJpbGl0eSgkdmlzaWJpbGl0eSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImJhY2tmYWNlLXZpc2liaWxpdHlcIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYmFja2ZhY2UtdmlzaWJpbGl0eSwgJHZpc2liaWxpdHksIHdlYmtpdCBzcGVjKTtcbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIEJhY2tncm91bmQgcHJvcGVydHkgZm9yIGFkZGluZyBtdWx0aXBsZSBiYWNrZ3JvdW5kcyB1c2luZyBzaG9ydGhhbmRcbi8vIG5vdGF0aW9uLlxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuXG5AbWl4aW4gYmFja2dyb3VuZCgkYmFja2dyb3VuZHMuLi4pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJiYWNrZ3JvdW5kXCIpO1xuXG4gICR3ZWJraXQtYmFja2dyb3VuZHM6ICgpO1xuICAkc3BlYy1iYWNrZ3JvdW5kczogKCk7XG5cbiAgQGVhY2ggJGJhY2tncm91bmQgaW4gJGJhY2tncm91bmRzIHtcbiAgICAkd2Via2l0LWJhY2tncm91bmQ6ICgpO1xuICAgICRzcGVjLWJhY2tncm91bmQ6ICgpO1xuICAgICRiYWNrZ3JvdW5kLXR5cGU6IHR5cGUtb2YoJGJhY2tncm91bmQpO1xuXG4gICAgQGlmICRiYWNrZ3JvdW5kLXR5cGUgPT0gc3RyaW5nIG9yICRiYWNrZ3JvdW5kLXR5cGUgPT0gbGlzdCB7XG4gICAgICAkYmFja2dyb3VuZC1zdHI6IGlmKCRiYWNrZ3JvdW5kLXR5cGUgPT0gbGlzdCwgbnRoKCRiYWNrZ3JvdW5kLCAxKSwgJGJhY2tncm91bmQpO1xuXG4gICAgICAkdXJsLXN0cjogICAgICAgc3RyLXNsaWNlKCRiYWNrZ3JvdW5kLXN0ciwgMSwgMyk7XG4gICAgICAkZ3JhZGllbnQtdHlwZTogc3RyLXNsaWNlKCRiYWNrZ3JvdW5kLXN0ciwgMSwgNik7XG5cbiAgICAgIEBpZiAkdXJsLXN0ciA9PSBcInVybFwiIHtcbiAgICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgICAgICAgJHNwZWMtYmFja2dyb3VuZDogICAkYmFja2dyb3VuZDtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJsaW5lYXJcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9saW5lYXItZ3JhZGllbnQtcGFyc2VyKFwiI3skYmFja2dyb3VuZH1cIik7XG4gICAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xuICAgICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwicmFkaWFsXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcihcIiN7JGJhY2tncm91bmR9XCIpO1xuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtYmFja2dyb3VuZDogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSB7XG4gICAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgJGJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgJGJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJHdlYmtpdC1iYWNrZ3JvdW5kczogYXBwZW5kKCR3ZWJraXQtYmFja2dyb3VuZHMsICR3ZWJraXQtYmFja2dyb3VuZCwgY29tbWEpO1xuICAgICRzcGVjLWJhY2tncm91bmRzOiAgIGFwcGVuZCgkc3BlYy1iYWNrZ3JvdW5kcywgICAkc3BlYy1iYWNrZ3JvdW5kLCAgIGNvbW1hKTtcbiAgfVxuXG4gIGJhY2tncm91bmQ6ICR3ZWJraXQtYmFja2dyb3VuZHM7XG4gIGJhY2tncm91bmQ6ICRzcGVjLWJhY2tncm91bmRzO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gQmFja2dyb3VuZC1pbWFnZSBwcm9wZXJ0eSBmb3IgYWRkaW5nIG11bHRpcGxlIGJhY2tncm91bmQgaW1hZ2VzIHdpdGhcbi8vIGdyYWRpZW50cywgb3IgZm9yIHN0cmluZ2luZyBtdWx0aXBsZSBncmFkaWVudHMgdG9nZXRoZXIuXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5cbkBtaXhpbiBiYWNrZ3JvdW5kLWltYWdlKCRpbWFnZXMuLi4pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJiYWNrZ3JvdW5kLWltYWdlXCIpO1xuXG4gICR3ZWJraXQtaW1hZ2VzOiAoKTtcbiAgJHNwZWMtaW1hZ2VzOiAoKTtcblxuICBAZWFjaCAkaW1hZ2UgaW4gJGltYWdlcyB7XG4gICAgJHdlYmtpdC1pbWFnZTogKCk7XG4gICAgJHNwZWMtaW1hZ2U6ICgpO1xuXG4gICAgQGlmICh0eXBlLW9mKCRpbWFnZSkgPT0gc3RyaW5nKSB7XG4gICAgICAkdXJsLXN0cjogICAgICAgc3RyLXNsaWNlKCRpbWFnZSwgMSwgMyk7XG4gICAgICAkZ3JhZGllbnQtdHlwZTogc3RyLXNsaWNlKCRpbWFnZSwgMSwgNik7XG5cbiAgICAgIEBpZiAkdXJsLXN0ciA9PSBcInVybFwiIHtcbiAgICAgICAgJHdlYmtpdC1pbWFnZTogJGltYWdlO1xuICAgICAgICAkc3BlYy1pbWFnZTogICAkaW1hZ2U7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwibGluZWFyXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfbGluZWFyLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpO1xuICAgICAgICAkd2Via2l0LWltYWdlOiAgbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xuICAgICAgICAkc3BlYy1pbWFnZTogICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJyYWRpYWxcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKCRpbWFnZSk7XG4gICAgICAgICR3ZWJraXQtaW1hZ2U6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtaW1hZ2U6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkd2Via2l0LWltYWdlczogYXBwZW5kKCR3ZWJraXQtaW1hZ2VzLCAkd2Via2l0LWltYWdlLCBjb21tYSk7XG4gICAgJHNwZWMtaW1hZ2VzOiAgIGFwcGVuZCgkc3BlYy1pbWFnZXMsICAgJHNwZWMtaW1hZ2UsICAgY29tbWEpO1xuICB9XG5cbiAgYmFja2dyb3VuZC1pbWFnZTogJHdlYmtpdC1pbWFnZXM7XG4gIGJhY2tncm91bmQtaW1hZ2U6ICRzcGVjLWltYWdlcztcbn1cbiIsIkBtaXhpbiBib3JkZXItaW1hZ2UoJGJvcmRlcnMuLi4pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJib3JkZXItaW1hZ2VcIik7XG5cbiAgJHdlYmtpdC1ib3JkZXJzOiAoKTtcbiAgJHNwZWMtYm9yZGVyczogKCk7XG5cbiAgQGVhY2ggJGJvcmRlciBpbiAkYm9yZGVycyB7XG4gICAgJHdlYmtpdC1ib3JkZXI6ICgpO1xuICAgICRzcGVjLWJvcmRlcjogKCk7XG4gICAgJGJvcmRlci10eXBlOiB0eXBlLW9mKCRib3JkZXIpO1xuXG4gICAgQGlmICRib3JkZXItdHlwZSA9PSBzdHJpbmcgb3IgbGlzdCB7XG4gICAgICAkYm9yZGVyLXN0cjogaWYoJGJvcmRlci10eXBlID09IGxpc3QsIG50aCgkYm9yZGVyLCAxKSwgJGJvcmRlcik7XG5cbiAgICAgICR1cmwtc3RyOiAgICAgICBzdHItc2xpY2UoJGJvcmRlci1zdHIsIDEsIDMpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkYm9yZGVyLXN0ciwgMSwgNik7XG5cbiAgICAgIEBpZiAkdXJsLXN0ciA9PSBcInVybFwiIHtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6ICRib3JkZXI7XG4gICAgICAgICRzcGVjLWJvcmRlcjogICAkYm9yZGVyO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcImxpbmVhclwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoXCIjeyRib3JkZXJ9XCIpO1xuICAgICAgICAkd2Via2l0LWJvcmRlcjogbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xuICAgICAgICAkc3BlYy1ib3JkZXI6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJyYWRpYWxcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKFwiI3skYm9yZGVyfVwiKTtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtYm9yZGVyOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6ICRib3JkZXI7XG4gICAgICAgICRzcGVjLWJvcmRlcjogICAkYm9yZGVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQtYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgJHNwZWMtYm9yZGVyOiAgICRib3JkZXI7XG4gICAgfVxuXG4gICAgJHdlYmtpdC1ib3JkZXJzOiBhcHBlbmQoJHdlYmtpdC1ib3JkZXJzLCAkd2Via2l0LWJvcmRlciwgY29tbWEpO1xuICAgICRzcGVjLWJvcmRlcnM6ICAgYXBwZW5kKCRzcGVjLWJvcmRlcnMsICAgJHNwZWMtYm9yZGVyLCAgIGNvbW1hKTtcbiAgfVxuXG4gIC13ZWJraXQtYm9yZGVyLWltYWdlOiAkd2Via2l0LWJvcmRlcnM7XG4gICAgICAgICAgYm9yZGVyLWltYWdlOiAkc3BlYy1ib3JkZXJzO1xuICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG59XG5cbi8vRXhhbXBsZXM6XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UodXJsKFwiaW1hZ2UucG5nXCIpKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZSh1cmwoXCJpbWFnZS5wbmdcIikgMjAgc3RyZXRjaCk7XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UobGluZWFyLWdyYWRpZW50KDQ1ZGVnLCBvcmFuZ2UsIHllbGxvdykpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpIHN0cmV0Y2gpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpIDIwIDMwIDQwIDUwIHN0cmV0Y2ggcm91bmQpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKHJhZGlhbC1ncmFkaWVudCh0b3AsIGNvdmVyLCBvcmFuZ2UsIHllbGxvdywgb3JhbmdlKSk7XG4iLCJAbWl4aW4gY2FsYygkcHJvcGVydHksICR2YWx1ZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImNhbGNcIik7XG5cbiAgI3skcHJvcGVydHl9OiAtd2Via2l0LWNhbGMoI3skdmFsdWV9KTtcbiAgI3skcHJvcGVydHl9OiBjYWxjKCN7JHZhbHVlfSk7XG59XG4iLCJAbWl4aW4gY29sdW1ucygkYXJnOiBhdXRvKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiY29sdW1uc1wiKTtcblxuICAvLyA8Y29sdW1uLWNvdW50PiB8fCA8Y29sdW1uLXdpZHRoPlxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW5zLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLWNvdW50KCRpbnQ6IGF1dG8pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJjb2x1bW4tY291bnRcIik7XG5cbiAgLy8gYXV0byB8fCBpbnRlZ2VyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1jb3VudCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi1nYXAoJGxlbmd0aDogbm9ybWFsKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiY29sdW1uLWdhcFwiKTtcblxuICAvLyBub3JtYWwgfHwgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1nYXAsICRsZW5ndGgsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tZmlsbCgkYXJnOiBhdXRvKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiY29sdW1uLWZpbGxcIik7XG5cbiAgLy8gYXV0byB8fCBsZW5ndGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLWZpbGwsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZSgkYXJnKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiY29sdW1uLXJ1bGVcIik7XG5cbiAgLy8gPGJvcmRlci13aWR0aD4gfHwgPGJvcmRlci1zdHlsZT4gfHwgPGNvbG9yPlxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZSwgJGFyZywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi1ydWxlLWNvbG9yKCRjb2xvcikge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImNvbHVtbi1ydWxlLWNvbG9yXCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLWNvbG9yLCAkY29sb3IsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZS1zdHlsZSgkc3R5bGU6IG5vbmUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJjb2x1bW4tcnVsZS1zdHlsZVwiKTtcblxuICAvLyBub25lIHwgaGlkZGVuIHwgZGFzaGVkIHwgZG90dGVkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgaW5zZXQgfCBpbnNldCB8IG91dHNldCB8IHJpZGdlIHwgc29saWRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXJ1bGUtc3R5bGUsICRzdHlsZSwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi1ydWxlLXdpZHRoKCR3aWR0aDogbm9uZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImNvbHVtbi1ydWxlLXdpZHRoXCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLXdpZHRoLCAkd2lkdGgsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tc3BhbigkYXJnOiBub25lKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiY29sdW1uLXNwYW5cIik7XG5cbiAgLy8gbm9uZSB8fCBhbGxcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXNwYW4sICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4td2lkdGgoJGxlbmd0aDogYXV0bykge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImNvbHVtbi13aWR0aFwiKTtcblxuICAvLyBhdXRvIHx8IGxlbmd0aFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4td2lkdGgsICRsZW5ndGgsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gZmlsdGVyKCRmdW5jdGlvbjogbm9uZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImZpbHRlclwiKTtcblxuICAvLyA8ZmlsdGVyLWZ1bmN0aW9uPiBbPGZpbHRlci1mdW5jdGlvbl0qIHwgbm9uZVxuICBAaW5jbHVkZSBwcmVmaXhlcihmaWx0ZXIsICRmdW5jdGlvbiwgd2Via2l0IHNwZWMpO1xufVxuIiwiLy8gQ1NTMyBGbGV4aWJsZSBCb3ggTW9kZWwgYW5kIHByb3BlcnR5IGRlZmF1bHRzXG5cbi8vIEN1c3RvbSBzaG9ydGhhbmQgbm90YXRpb24gZm9yIGZsZXhib3hcbkBtaXhpbiBib3goJG9yaWVudDogaW5saW5lLWF4aXMsICRwYWNrOiBzdGFydCwgJGFsaWduOiBzdHJldGNoKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYm94XCIpO1xuXG4gIEBpbmNsdWRlIGRpc3BsYXktYm94O1xuICBAaW5jbHVkZSBib3gtb3JpZW50KCRvcmllbnQpO1xuICBAaW5jbHVkZSBib3gtcGFjaygkcGFjayk7XG4gIEBpbmNsdWRlIGJveC1hbGlnbigkYWxpZ24pO1xufVxuXG5AbWl4aW4gZGlzcGxheS1ib3gge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImRpc3BsYXktYm94XCIpO1xuXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBkaXNwbGF5OiAtbW96LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7IC8vIElFIDEwXG4gIGRpc3BsYXk6IGJveDtcbn1cblxuQG1peGluIGJveC1vcmllbnQoJG9yaWVudDogaW5saW5lLWF4aXMpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJib3gtb3JpZW50XCIpO1xuXG4vLyBob3Jpem9udGFsfHZlcnRpY2FsfGlubGluZS1heGlzfGJsb2NrLWF4aXN8aW5oZXJpdFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JpZW50LCAkb3JpZW50LCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYm94LXBhY2soJHBhY2s6IHN0YXJ0KSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYm94LXBhY2tcIik7XG5cbi8vIHN0YXJ0fGVuZHxjZW50ZXJ8anVzdGlmeVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtcGFjaywgJHBhY2ssIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LXBhY2s6ICRwYWNrOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWFsaWduKCRhbGlnbjogc3RyZXRjaCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImJveC1hbGlnblwiKTtcblxuLy8gc3RhcnR8ZW5kfGNlbnRlcnxiYXNlbGluZXxzdHJldGNoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1hbGlnbiwgJGFsaWduLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1hbGlnbjogJGFsaWduOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWRpcmVjdGlvbigkZGlyZWN0aW9uOiBub3JtYWwpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJib3gtZGlyZWN0aW9uXCIpO1xuXG4vLyBub3JtYWx8cmV2ZXJzZXxpbmhlcml0XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1kaXJlY3Rpb24sICRkaXJlY3Rpb24sIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbjsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1saW5lcygkbGluZXM6IHNpbmdsZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImJveC1saW5lc1wiKTtcblxuLy8gc2luZ2xlfG11bHRpcGxlXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1saW5lcywgJGxpbmVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYm94LW9yZGluYWwtZ3JvdXAoJGludDogMSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImJveC1vcmRpbmFsLWdyb3VwXCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmRpbmFsLWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1vcmRlcjogJGludDsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1mbGV4KCR2YWx1ZTogMCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImJveC1mbGV4XCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4OiAkdmFsdWU7IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtZmxleC1ncm91cCgkaW50OiAxKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYm94LWZsZXgtZ3JvdXBcIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbi8vIENTUzMgRmxleGlibGUgQm94IE1vZGVsIGFuZCBwcm9wZXJ0eSBkZWZhdWx0c1xuLy8gVW5pZmllZCBhdHRyaWJ1dGVzIGZvciAyMDA5LCAyMDExLCBhbmQgMjAxMiBmbGF2b3Vycy5cblxuLy8gMjAwOSAtIGRpc3BsYXkgKGJveCB8IGlubGluZS1ib3gpXG4vLyAyMDExIC0gZGlzcGxheSAoZmxleGJveCB8IGlubGluZS1mbGV4Ym94KVxuLy8gMjAxMiAtIGRpc3BsYXkgKGZsZXggfCBpbmxpbmUtZmxleClcbkBtaXhpbiBkaXNwbGF5KCR2YWx1ZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImRpc3BsYXlcIik7XG5cbi8vIGZsZXggfCBpbmxpbmUtZmxleFxuICBAaWYgJHZhbHVlID09IFwiZmxleFwiIHtcbiAgICAvLyAyMDA5XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgZGlzcGxheTogLW1vei1ib3g7XG4gICAgZGlzcGxheTogYm94O1xuXG4gICAgLy8gMjAxMlxuICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDtcbiAgICBkaXNwbGF5OiAtbW96LWZsZXg7XG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7IC8vIDIwMTEgKElFIDEwKVxuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiaW5saW5lLWZsZXhcIiB7XG4gICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94O1xuICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLWJveDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYm94O1xuXG4gICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1mbGV4O1xuICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgfSBAZWxzZSB7XG4gICAgZGlzcGxheTogJHZhbHVlO1xuICB9XG59XG5cbi8vIDIwMDkgLSBib3gtZmxleCAoaW50ZWdlcilcbi8vIDIwMTEgLSBmbGV4IChkZWNpbWFsIHwgd2lkdGggZGVjaW1hbClcbi8vIDIwMTIgLSBmbGV4IChpbnRlZ2VyIGludGVnZXIgd2lkdGgpXG5AbWl4aW4gZmxleCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJmbGV4XCIpO1xuXG4gIC8vIEdyYWIgZmxleC1ncm93IGZvciBvbGRlciBicm93c2Vycy5cbiAgJGZsZXgtZ3JvdzogbnRoKCR2YWx1ZSwgMSk7XG5cbiAgLy8gMjAwOVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleCwgJGZsZXgtZ3Jvdywgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMCksIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleCwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuXG4vLyAyMDA5IC0gYm94LW9yaWVudCAoIGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGlubGluZS1heGlzIHwgYmxvY2stYXhpcylcbi8vICAgICAgLSBib3gtZGlyZWN0aW9uIChub3JtYWwgfCByZXZlcnNlKVxuLy8gMjAxMSAtIGZsZXgtZGlyZWN0aW9uIChyb3cgfCByb3ctcmV2ZXJzZSB8IGNvbHVtbiB8IGNvbHVtbi1yZXZlcnNlKVxuLy8gMjAxMiAtIGZsZXgtZGlyZWN0aW9uIChyb3cgfCByb3ctcmV2ZXJzZSB8IGNvbHVtbiB8IGNvbHVtbi1yZXZlcnNlKVxuQG1peGluIGZsZXgtZGlyZWN0aW9uKCR2YWx1ZTogcm93KSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiZmxleC1kaXJlY3Rpb25cIik7XG5cbiAgLy8gQWx0IHZhbHVlcy5cbiAgJHZhbHVlLTIwMDk6ICR2YWx1ZTtcbiAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcbiAgJGRpcmVjdGlvbjogbm9ybWFsO1xuXG4gIEBpZiAkdmFsdWUgPT0gcm93IHtcbiAgICAkdmFsdWUtMjAwOTogaG9yaXpvbnRhbDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJyb3ctcmV2ZXJzZVwiIHtcbiAgICAkdmFsdWUtMjAwOTogaG9yaXpvbnRhbDtcbiAgICAkZGlyZWN0aW9uOiByZXZlcnNlO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBjb2x1bW4ge1xuICAgICR2YWx1ZS0yMDA5OiB2ZXJ0aWNhbDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJjb2x1bW4tcmV2ZXJzZVwiIHtcbiAgICAkdmFsdWUtMjAwOTogdmVydGljYWw7XG4gICAgJGRpcmVjdGlvbjogcmV2ZXJzZTtcbiAgfVxuXG4gIC8vIDIwMDlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yaWVudCwgJHZhbHVlLTIwMDksIHdlYmtpdCBtb3ogc3BlYyk7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1kaXJlY3Rpb24sICRkaXJlY3Rpb24sIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LWRpcmVjdGlvbiwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1kaXJlY3Rpb246ICR2YWx1ZTtcbn1cblxuLy8gMjAwOSAtIGJveC1saW5lcyAoc2luZ2xlIHwgbXVsdGlwbGUpXG4vLyAyMDExIC0gZmxleC13cmFwIChub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlKVxuLy8gMjAxMiAtIGZsZXgtd3JhcCAobm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZSlcbkBtaXhpbiBmbGV4LXdyYXAoJHZhbHVlOiBub3dyYXApIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJmbGV4LXdyYXBcIik7XG5cbiAgLy8gQWx0IHZhbHVlc1xuICAkYWx0LXZhbHVlOiAkdmFsdWU7XG4gIEBpZiAkdmFsdWUgPT0gbm93cmFwIHtcbiAgICAkYWx0LXZhbHVlOiBzaW5nbGU7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IHdyYXAge1xuICAgICRhbHQtdmFsdWU6IG11bHRpcGxlO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcIndyYXAtcmV2ZXJzZVwiIHtcbiAgICAkYWx0LXZhbHVlOiBtdWx0aXBsZTtcbiAgfVxuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1saW5lcywgJGFsdC12YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC13cmFwLCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG5cbi8vIDIwMDkgLSBUT0RPOiBwYXJzZSB2YWx1ZXMgaW50byBmbGV4LWRpcmVjdGlvbi9mbGV4LXdyYXBcbi8vIDIwMTEgLSBUT0RPOiBwYXJzZSB2YWx1ZXMgaW50byBmbGV4LWRpcmVjdGlvbi9mbGV4LXdyYXBcbi8vIDIwMTIgLSBmbGV4LWZsb3cgKGZsZXgtZGlyZWN0aW9uIHx8IGZsZXgtd3JhcClcbkBtaXhpbiBmbGV4LWZsb3coJHZhbHVlKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiZmxleC1mbG93XCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZmxvdywgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG4vLyAyMDA5IC0gYm94LW9yZGluYWwtZ3JvdXAgKGludGVnZXIpXG4vLyAyMDExIC0gZmxleC1vcmRlciAoaW50ZWdlcilcbi8vIDIwMTIgLSBvcmRlciAoaW50ZWdlcilcbkBtaXhpbiBvcmRlcigkaW50OiAwKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwib3JkZXJcIik7XG5cbiAgLy8gMjAwOVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JkaW5hbC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKG9yZGVyLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1vcmRlcjogJGludDtcbn1cblxuLy8gMjAxMiAtIGZsZXgtZ3JvdyAobnVtYmVyKVxuQG1peGluIGZsZXgtZ3JvdygkbnVtYmVyOiAwKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiZmxleC1ncm93XCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZ3JvdywgJG51bWJlciwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtcG9zaXRpdmU6ICRudW1iZXI7XG59XG5cbi8vIDIwMTIgLSBmbGV4LXNocmluayAobnVtYmVyKVxuQG1peGluIGZsZXgtc2hyaW5rKCRudW1iZXI6IDEpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJmbGV4LXNocmlua1wiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LXNocmluaywgJG51bWJlciwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtbmVnYXRpdmU6ICRudW1iZXI7XG59XG5cbi8vIDIwMTIgLSBmbGV4LWJhc2lzIChudW1iZXIpXG5AbWl4aW4gZmxleC1iYXNpcygkd2lkdGg6IGF1dG8pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJmbGV4LWJhc2lzXCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtYmFzaXMsICR3aWR0aCwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6ICR3aWR0aDtcbn1cblxuLy8gMjAwOSAtIGJveC1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkpXG4vLyAyMDExIC0gZmxleC1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkpXG4vLyAyMDEyIC0ganVzdGlmeS1jb250ZW50IChmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kKVxuQG1peGluIGp1c3RpZnktY29udGVudCgkdmFsdWU6IGZsZXgtc3RhcnQpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJqdXN0aWZ5LWNvbnRlbnRcIik7XG5cbiAgLy8gQWx0IHZhbHVlcy5cbiAgJGFsdC12YWx1ZTogJHZhbHVlO1xuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcbiAgICAkYWx0LXZhbHVlOiBzdGFydDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAkYWx0LXZhbHVlOiBlbmQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwic3BhY2UtYmV0d2VlblwiIHtcbiAgICAkYWx0LXZhbHVlOiBqdXN0aWZ5O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInNwYWNlLWFyb3VuZFwiIHtcbiAgICAkYWx0LXZhbHVlOiBkaXN0cmlidXRlO1xuICB9XG5cbiAgLy8gMjAwOVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtcGFjaywgJGFsdC12YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGp1c3RpZnktY29udGVudCwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LXBhY2s6ICRhbHQtdmFsdWU7XG59XG5cbi8vIDIwMDkgLSBib3gtYWxpZ24gKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuLy8gMjAxMSAtIGZsZXgtYWxpZ24gKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuLy8gMjAxMiAtIGFsaWduLWl0ZW1zIChmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG5AbWl4aW4gYWxpZ24taXRlbXMoJHZhbHVlOiBzdHJldGNoKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYWxpZ24taXRlbXNcIik7XG5cbiAgJGFsdC12YWx1ZTogJHZhbHVlO1xuXG4gIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xuICAgICRhbHQtdmFsdWU6IHN0YXJ0O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xuICAgICRhbHQtdmFsdWU6IGVuZDtcbiAgfVxuXG4gIC8vIDIwMDlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWFsaWduLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24taXRlbXMsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1hbGlnbjogJGFsdC12YWx1ZTtcbn1cblxuLy8gMjAxMSAtIGZsZXgtaXRlbS1hbGlnbiAoYXV0byB8IHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuLy8gMjAxMiAtIGFsaWduLXNlbGYgKGF1dG8gfCBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG5AbWl4aW4gYWxpZ24tc2VsZigkdmFsdWU6IGF1dG8pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJhbGlnbi1zZWxmXCIpO1xuXG4gICR2YWx1ZS0yMDExOiAkdmFsdWU7XG4gIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xuICAgICR2YWx1ZS0yMDExOiBzdGFydDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAkdmFsdWUtMjAxMTogZW5kO1xuICB9XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihhbGlnbi1zZWxmLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LWl0ZW0tYWxpZ246ICR2YWx1ZS0yMDExO1xufVxuXG4vLyAyMDExIC0gZmxleC1saW5lLXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSB8IGRpc3RyaWJ1dGUgfCBzdHJldGNoKVxuLy8gMjAxMiAtIGFsaWduLWNvbnRlbnQgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLWNvbnRlbnQoJHZhbHVlOiBzdHJldGNoKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYWxpZ24tY29udGVudFwiKTtcblxuICAkdmFsdWUtMjAxMTogJHZhbHVlO1xuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcbiAgICAkdmFsdWUtMjAxMTogc3RhcnQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IGVuZDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1iZXR3ZWVuXCIge1xuICAgICR2YWx1ZS0yMDExOiBqdXN0aWZ5O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInNwYWNlLWFyb3VuZFwiIHtcbiAgICAkdmFsdWUtMjAxMTogZGlzdHJpYnV0ZTtcbiAgfVxuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24tY29udGVudCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1saW5lLXBhY2s6ICR2YWx1ZS0yMDExO1xufVxuIiwiQG1peGluIGZvbnQtZmFjZShcbiAgJGZvbnQtZmFtaWx5LFxuICAkZmlsZS1wYXRoLFxuICAkd2VpZ2h0OiBub3JtYWwsXG4gICRzdHlsZTogbm9ybWFsLFxuICAkYXNzZXQtcGlwZWxpbmU6ICRhc3NldC1waXBlbGluZSxcbiAgJGZpbGUtZm9ybWF0czogZW90IHdvZmYyIHdvZmYgdHRmIHN2Zykge1xuXG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuXG4gICRmb250LXVybC1wcmVmaXg6IGZvbnQtdXJsLXByZWZpeGVyKCRhc3NldC1waXBlbGluZSk7XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG5cbiAgICBzcmM6IGZvbnQtc291cmNlLWRlY2xhcmF0aW9uKFxuICAgICAgJGZvbnQtZmFtaWx5LFxuICAgICAgJGZpbGUtcGF0aCxcbiAgICAgICRhc3NldC1waXBlbGluZSxcbiAgICAgICRmaWxlLWZvcm1hdHMsXG4gICAgICAkZm9udC11cmwtcHJlZml4XG4gICAgKTtcbiAgfVxuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xufVxuIiwiQG1peGluIGZvbnQtZmVhdHVyZS1zZXR0aW5ncygkc2V0dGluZ3MuLi4pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJmb250LWZlYXR1cmUtc2V0dGluZ3NcIik7XG5cbiAgQGlmIGxlbmd0aCgkc2V0dGluZ3MpID09IDAgeyAkc2V0dGluZ3M6IG5vbmU7IH1cbiAgQGluY2x1ZGUgcHJlZml4ZXIoZm9udC1mZWF0dXJlLXNldHRpbmdzLCAkc2V0dGluZ3MsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG4iLCIvLyBIaURQSSBtaXhpbi4gRGVmYXVsdCB2YWx1ZSBzZXQgdG8gMS4zIHRvIHRhcmdldCBHb29nbGUgTmV4dXMgNyAoaHR0cDovL2JqYW5nby5jb20vYXJ0aWNsZXMvbWluLWRldmljZS1waXhlbC1yYXRpby8pXG5AbWl4aW4gaGlkcGkoJHJhdGlvOiAxLjMpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJoaWRwaVwiKTtcblxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICBvbmx5IHNjcmVlbiBhbmQgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHJhdGlvfS8xKSxcbiAgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogcm91bmQoJHJhdGlvICogOTZkcGkpKSxcbiAgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogJHJhdGlvICogMWRwcHgpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiQG1peGluIGh5cGhlbnMoJGh5cGhlbmF0aW9uOiBub25lKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiaHlwaGVuc1wiKTtcblxuICAvLyBub25lIHwgbWFudWFsIHwgYXV0b1xuICBAaW5jbHVkZSBwcmVmaXhlcihoeXBoZW5zLCAkaHlwaGVuYXRpb24sIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG4iLCJAbWl4aW4gaW1hZ2UtcmVuZGVyaW5nICgkbW9kZTphdXRvKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiaW1hZ2UtcmVuZGVyaW5nXCIpO1xuXG4gIEBpZiAoJG1vZGUgPT0gY3Jpc3AtZWRnZXMpIHtcbiAgICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBuZWFyZXN0LW5laWdoYm9yOyAvLyBJRTgrXG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAtbW96LWNyaXNwLWVkZ2VzO1xuICAgIGltYWdlLXJlbmRlcmluZzogLW8tY3Jpc3AtZWRnZXM7XG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0O1xuICAgIGltYWdlLXJlbmRlcmluZzogY3Jpc3AtZWRnZXM7XG4gIH1cblxuICBAZWxzZSB7XG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAkbW9kZTtcbiAgfVxufVxuIiwiLy8gQWRkcyBrZXlmcmFtZXMgYmxvY2tzIGZvciBzdXBwb3J0ZWQgcHJlZml4ZXMsIHJlbW92aW5nIHJlZHVuZGFudCBwcmVmaXhlcyBpbiB0aGUgYmxvY2sncyBjb250ZW50XG5AbWl4aW4ga2V5ZnJhbWVzKCRuYW1lKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwia2V5ZnJhbWVzXCIpO1xuXG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdDogICAgJHByZWZpeC1mb3Itd2Via2l0O1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhOiAgICRwcmVmaXgtZm9yLW1vemlsbGE7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1pY3Jvc29mdDogJHByZWZpeC1mb3ItbWljcm9zb2Z0O1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1vcGVyYTogICAgICRwcmVmaXgtZm9yLW9wZXJhO1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjOiAgICAgICRwcmVmaXgtZm9yLXNwZWM7XG5cbiAgQGlmICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdCB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1wcmVmaXgtZm9yLWFsbCgpO1xuICAgICRwcmVmaXgtZm9yLXdlYmtpdDogdHJ1ZSAhZ2xvYmFsO1xuICAgIEAtd2Via2l0LWtleWZyYW1lcyAjeyRuYW1lfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgJG9yaWdpbmFsLXByZWZpeC1mb3ItbW96aWxsYSB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1wcmVmaXgtZm9yLWFsbCgpO1xuICAgICRwcmVmaXgtZm9yLW1vemlsbGE6IHRydWUgIWdsb2JhbDtcbiAgICBALW1vei1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgJHByZWZpeC1mb3Itd2Via2l0OiAgICAkb3JpZ2luYWwtcHJlZml4LWZvci13ZWJraXQgICAgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3ItbW96aWxsYTogICAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhICAgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3ItbWljcm9zb2Z0OiAkb3JpZ2luYWwtcHJlZml4LWZvci1taWNyb3NvZnQgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3Itb3BlcmE6ICAgICAkb3JpZ2luYWwtcHJlZml4LWZvci1vcGVyYSAgICAgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3Itc3BlYzogICAgICAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjICAgICAgIWdsb2JhbDtcblxuICBAaWYgJG9yaWdpbmFsLXByZWZpeC1mb3Itc3BlYyB7XG4gICAgQGtleWZyYW1lcyAjeyRuYW1lfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiBsaW5lYXItZ3JhZGllbnQoJHBvcywgJGcxLCAkZzI6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnMzogbnVsbCwgJGc0OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzU6IG51bGwsICRnNjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGc3OiBudWxsLCAkZzg6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnOTogbnVsbCwgJGcxMDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGZhbGxiYWNrOiBudWxsKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwibGluZWFyLWdyYWRpZW50XCIpO1xuXG4gIC8vIERldGVjdCB3aGF0IHR5cGUgb2YgdmFsdWUgZXhpc3RzIGluICRwb3NcbiAgJHBvcy10eXBlOiB0eXBlLW9mKG50aCgkcG9zLCAxKSk7XG4gICRwb3Mtc3BlYzogbnVsbDtcbiAgJHBvcy1kZWdyZWU6IG51bGw7XG5cbiAgLy8gSWYgJHBvcyBpcyBtaXNzaW5nIGZyb20gbWl4aW4sIHJlYXNzaWduIHZhcnMgYW5kIGFkZCBkZWZhdWx0IHBvc2l0aW9uXG4gIEBpZiAoJHBvcy10eXBlID09IGNvbG9yKSBvciAobnRoKCRwb3MsIDEpID09IFwidHJhbnNwYXJlbnRcIikgIHtcbiAgICAkZzEwOiAkZzk7ICRnOTogJGc4OyAkZzg6ICRnNzsgJGc3OiAkZzY7ICRnNjogJGc1O1xuICAgICRnNTogJGc0OyAkZzQ6ICRnMzsgJGczOiAkZzI7ICRnMjogJGcxOyAkZzE6ICRwb3M7XG4gICAgJHBvczogbnVsbDtcbiAgfVxuXG4gIEBpZiAkcG9zIHtcbiAgICAkcG9zaXRpb25zOiBfbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIoJHBvcyk7XG4gICAgJHBvcy1kZWdyZWU6IG50aCgkcG9zaXRpb25zLCAxKTtcbiAgICAkcG9zLXNwZWM6ICAgbnRoKCRwb3NpdGlvbnMsIDIpO1xuICB9XG5cbiAgJGZ1bGw6ICRnMSwgJGcyLCAkZzMsICRnNCwgJGc1LCAkZzYsICRnNywgJGc4LCAkZzksICRnMTA7XG5cbiAgLy8gU2V0ICRnMSBhcyB0aGUgZGVmYXVsdCBmYWxsYmFjayBjb2xvclxuICAkZmFsbGJhY2stY29sb3I6IG50aCgkZzEsIDEpO1xuXG4gIC8vIElmICRmYWxsYmFjayBpcyBhIGNvbG9yIHVzZSB0aGF0IGNvbG9yIGFzIHRoZSBmYWxsYmFjayBjb2xvclxuICBAaWYgKHR5cGUtb2YoJGZhbGxiYWNrKSA9PSBjb2xvcikgb3IgKCRmYWxsYmFjayA9PSBcInRyYW5zcGFyZW50XCIpIHtcbiAgICAkZmFsbGJhY2stY29sb3I6ICRmYWxsYmFjaztcbiAgfVxuXG4gIGJhY2tncm91bmQtY29sb3I6ICRmYWxsYmFjay1jb2xvcjtcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoJHBvcy1kZWdyZWUgJGZ1bGwpOyAvLyBTYWZhcmkgNS4xKywgQ2hyb21lXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVucXVvdGUoXCJsaW5lYXItZ3JhZGllbnQoI3skcG9zLXNwZWN9I3skZnVsbH0pXCIpO1xufVxuIiwiQG1peGluIHBlcnNwZWN0aXZlKCRkZXB0aDogbm9uZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInBlcnNwZWN0aXZlXCIpO1xuXG4gIC8vIG5vbmUgfCA8bGVuZ3RoPlxuICBAaW5jbHVkZSBwcmVmaXhlcihwZXJzcGVjdGl2ZSwgJGRlcHRoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gcGVyc3BlY3RpdmUtb3JpZ2luKCR2YWx1ZTogNTAlIDUwJSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInBlcnNwZWN0aXZlLW9yaWdpblwiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihwZXJzcGVjdGl2ZS1vcmlnaW4sICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcbn1cbiIsIkBtaXhpbiBwbGFjZWhvbGRlciB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwicGxhY2Vob2xkZXJcIik7XG5cbiAgJHBsYWNlaG9sZGVyczogXCI6LXdlYmtpdC1pbnB1dFwiIFwiOi1tb3pcIiBcIi1tb3pcIiBcIi1tcy1pbnB1dFwiO1xuICBAZWFjaCAkcGxhY2Vob2xkZXIgaW4gJHBsYWNlaG9sZGVycyB7XG4gICAgJjojeyRwbGFjZWhvbGRlcn0tcGxhY2Vob2xkZXIge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSZXF1aXJlcyBTYXNzIDMuMStcbkBtaXhpbiByYWRpYWwtZ3JhZGllbnQoJGcxLCAkZzIsXG4gICAgICAgICAgICAgICAgICAgICAgICRnMzogbnVsbCwgJGc0OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzU6IG51bGwsICRnNjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGc3OiBudWxsLCAkZzg6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnOTogbnVsbCwgJGcxMDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJHBvczogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJHNoYXBlLXNpemU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRmYWxsYmFjazogbnVsbCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInJhZGlhbC1ncmFkaWVudFwiKTtcblxuICAkZGF0YTogX3JhZGlhbC1hcmctcGFyc2VyKCRnMSwgJGcyLCAkcG9zLCAkc2hhcGUtc2l6ZSk7XG4gICRnMTogIG50aCgkZGF0YSwgMSk7XG4gICRnMjogIG50aCgkZGF0YSwgMik7XG4gICRwb3M6IG50aCgkZGF0YSwgMyk7XG4gICRzaGFwZS1zaXplOiBudGgoJGRhdGEsIDQpO1xuXG4gICRmdWxsOiAkZzEsICRnMiwgJGczLCAkZzQsICRnNSwgJGc2LCAkZzcsICRnOCwgJGc5LCAkZzEwO1xuXG4gIC8vIFN0cmlwIGRlcHJlY2F0ZWQgY292ZXIvY29udGFpbiBmb3Igc3BlY1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSk7XG5cbiAgLy8gU2V0ICRnMSBhcyB0aGUgZGVmYXVsdCBmYWxsYmFjayBjb2xvclxuICAkZmlyc3QtY29sb3I6IG50aCgkZnVsbCwgMSk7XG4gICRmYWxsYmFjay1jb2xvcjogbnRoKCRmaXJzdC1jb2xvciwgMSk7XG5cbiAgQGlmICh0eXBlLW9mKCRmYWxsYmFjaykgPT0gY29sb3IpIG9yICgkZmFsbGJhY2sgPT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgJGZhbGxiYWNrLWNvbG9yOiAkZmFsbGJhY2s7XG4gIH1cblxuICAvLyBBZGQgQ29tbWFzIGFuZCBzcGFjZXNcbiAgJHNoYXBlLXNpemU6IGlmKCRzaGFwZS1zaXplLCBcIiN7JHNoYXBlLXNpemV9LCBcIiwgbnVsbCk7XG4gICRwb3M6ICAgICAgICBpZigkcG9zLCBcIiN7JHBvc30sIFwiLCBudWxsKTtcbiAgJHBvcy1zcGVjOiAgIGlmKCRwb3MsIFwiYXQgI3skcG9zfVwiLCBudWxsKTtcbiAgJHNoYXBlLXNpemUtc3BlYzogaWYoKCRzaGFwZS1zaXplLXNwZWMgIT0gXCIgXCIpIGFuZCAoJHBvcyA9PSBudWxsKSwgXCIjeyRzaGFwZS1zaXplLXNwZWN9LCBcIiwgXCIjeyRzaGFwZS1zaXplLXNwZWN9IFwiKTtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAgJGZhbGxiYWNrLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudCgjeyRwb3N9I3skc2hhcGUtc2l6ZX0jeyRmdWxsfSk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudCgjeyRzaGFwZS1zaXplLXNwZWN9I3skcG9zLXNwZWN9I3skZnVsbH0pO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIE91dHB1dHMgdGhlIHNwZWMgYW5kIHByZWZpeGVkIHZlcnNpb25zIG9mIHRoZSBgOjpzZWxlY3Rpb25gIHBzZXVkby1lbGVtZW50LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Qm9vbH0gJGN1cnJlbnQtc2VsZWN0b3IgW2ZhbHNlXVxyXG4vLy8gICBJZiBzZXQgdG8gYHRydWVgLCBpdCB0YWtlcyB0aGUgY3VycmVudCBlbGVtZW50IGludG8gY29uc2lkZXJhdGlvbi5cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIEBpbmNsdWRlIHNlbGVjdGlvbih0cnVlKSB7XHJcbi8vLyAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiYjUyO1xyXG4vLy8gICAgIH1cclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcclxuLy8vICAgLmVsZW1lbnQ6Oi1tb3otc2VsZWN0aW9uIHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiYjUyO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICAuZWxlbWVudDo6c2VsZWN0aW9uIHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiYjUyO1xyXG4vLy8gICB9XHJcblxyXG5AbWl4aW4gc2VsZWN0aW9uKCRjdXJyZW50LXNlbGVjdG9yOiBmYWxzZSkge1xyXG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwic2VsZWN0aW9uXCIpO1xyXG5cclxuICBAaWYgJGN1cnJlbnQtc2VsZWN0b3Ige1xyXG4gICAgJjo6LW1vei1zZWxlY3Rpb24ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICAmOjpzZWxlY3Rpb24ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9IEBlbHNlIHtcclxuICAgIDo6LW1vei1zZWxlY3Rpb24ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICA6OnNlbGVjdGlvbiB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAbWl4aW4gdGV4dC1kZWNvcmF0aW9uKCR2YWx1ZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInRleHQtZGVjb3JhdGlvblwiKTtcblxuLy8gPHRleHQtZGVjb3JhdGlvbi1saW5lPiB8fCA8dGV4dC1kZWNvcmF0aW9uLXN0eWxlPiB8fCA8dGV4dC1kZWNvcmF0aW9uLWNvbG9yPlxuICBAaW5jbHVkZSBwcmVmaXhlcih0ZXh0LWRlY29yYXRpb24sICR2YWx1ZSwgbW96KTtcbn1cblxuQG1peGluIHRleHQtZGVjb3JhdGlvbi1saW5lKCRsaW5lOiBub25lKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwidGV4dC1kZWNvcmF0aW9uLWxpbmVcIik7XG5cbi8vIG5vbmUgfHwgdW5kZXJsaW5lIHx8IG92ZXJsaW5lIHx8IGxpbmUtdGhyb3VnaFxuICBAaW5jbHVkZSBwcmVmaXhlcih0ZXh0LWRlY29yYXRpb24tbGluZSwgJGxpbmUsIG1veik7XG59XG5cbkBtaXhpbiB0ZXh0LWRlY29yYXRpb24tc3R5bGUoJHN0eWxlOiBzb2xpZCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInRleHQtZGVjb3JhdGlvbi1zdHlsZVwiKTtcblxuLy8gc29saWQgfHwgZG91YmxlIHx8IGRvdHRlZCB8fCBkYXNoZWQgfHwgd2F2eVxuICBAaW5jbHVkZSBwcmVmaXhlcih0ZXh0LWRlY29yYXRpb24tc3R5bGUsICRzdHlsZSwgbW96IHdlYmtpdCk7XG59XG5cbkBtaXhpbiB0ZXh0LWRlY29yYXRpb24tY29sb3IoJGNvbG9yOiBjdXJyZW50Q29sb3IpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJ0ZXh0LWRlY29yYXRpb24tY29sb3JcIik7XG5cbi8vIGN1cnJlbnRDb2xvciB8fCA8Y29sb3I+XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRleHQtZGVjb3JhdGlvbi1jb2xvciwgJGNvbG9yLCBtb3opO1xufVxuIiwiQG1peGluIHRyYW5zZm9ybSgkcHJvcGVydHk6IG5vbmUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJ0cmFuc2Zvcm1cIik7XG5cbiAgLy8gbm9uZSB8IDx0cmFuc2Zvcm0tZnVuY3Rpb24+XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybSwgJHByb3BlcnR5LCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0tb3JpZ2luKCRheGVzOiA1MCUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJ0cmFuc2Zvcm0tb3JpZ2luXCIpO1xuXG4gIC8vIHgtYXhpcyAtIGxlZnQgfCBjZW50ZXIgfCByaWdodCAgfCBsZW5ndGggfCAlXG4gIC8vIHktYXhpcyAtIHRvcCAgfCBjZW50ZXIgfCBib3R0b20gfCBsZW5ndGggfCAlXG4gIC8vIHotYXhpcyAtICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNmb3JtLW9yaWdpbiwgJGF4ZXMsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcbn1cblxuQG1peGluIHRyYW5zZm9ybS1zdHlsZSgkc3R5bGU6IGZsYXQpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJ0cmFuc2Zvcm0tc3R5bGVcIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNmb3JtLXN0eWxlLCAkc3R5bGUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcbn1cbiIsIi8vIFNob3J0aGFuZCBtaXhpbi4gU3VwcG9ydHMgbXVsdGlwbGUgcGFyZW50aGVzZXMtZGVsaW1pbmF0ZWQgdmFsdWVzIGZvciBlYWNoIHZhcmlhYmxlLlxuLy8gRXhhbXBsZTogQGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDJzIGVhc2UtaW4tb3V0KTtcbi8vICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24gKG9wYWNpdHkgMXMgZWFzZS1pbiAycywgd2lkdGggMnMgZWFzZS1vdXQpO1xuLy8gICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbi1wcm9wZXJ0eSAodHJhbnNmb3JtLCBvcGFjaXR5KTtcblxuQG1peGluIHRyYW5zaXRpb24oJHByb3BlcnRpZXMuLi4pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJ0cmFuc2l0aW9uXCIpO1xuXG4gIC8vIEZpeCBmb3IgdmVuZG9yLXByZWZpeCB0cmFuc2Zvcm0gcHJvcGVydHlcbiAgJG5lZWRzLXByZWZpeGVzOiBmYWxzZTtcbiAgJHdlYmtpdDogKCk7XG4gICRtb3o6ICgpO1xuICAkc3BlYzogKCk7XG5cbiAgLy8gQ3JlYXRlIGxpc3RzIGZvciB2ZW5kb3ItcHJlZml4ZWQgdHJhbnNmb3JtXG4gIEBlYWNoICRsaXN0IGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgbnRoKCRsaXN0LCAxKSA9PSBcInRyYW5zZm9ybVwiIHtcbiAgICAgICRuZWVkcy1wcmVmaXhlczogdHJ1ZTtcbiAgICAgICRsaXN0MTogLXdlYmtpdC10cmFuc2Zvcm07XG4gICAgICAkbGlzdDI6IC1tb3otdHJhbnNmb3JtO1xuICAgICAgJGxpc3QzOiAoKTtcblxuICAgICAgQGVhY2ggJHZhciBpbiAkbGlzdCB7XG4gICAgICAgICRsaXN0Mzogam9pbigkbGlzdDMsICR2YXIpO1xuXG4gICAgICAgIEBpZiAkdmFyICE9IFwidHJhbnNmb3JtXCIge1xuICAgICAgICAgICRsaXN0MTogam9pbigkbGlzdDEsICR2YXIpO1xuICAgICAgICAgICRsaXN0Mjogam9pbigkbGlzdDIsICR2YXIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICR3ZWJraXQ6IGFwcGVuZCgkd2Via2l0LCAkbGlzdDEpO1xuICAgICAgJG1vejogICAgYXBwZW5kKCRtb3osICAgICRsaXN0Mik7XG4gICAgICAkc3BlYzogICBhcHBlbmQoJHNwZWMsICAgJGxpc3QzKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3ZWJraXQ6IGFwcGVuZCgkd2Via2l0LCAkbGlzdCwgY29tbWEpO1xuICAgICAgJG1vejogICAgYXBwZW5kKCRtb3osICAgICRsaXN0LCBjb21tYSk7XG4gICAgICAkc3BlYzogICBhcHBlbmQoJHNwZWMsICAgJGxpc3QsIGNvbW1hKTtcbiAgICB9XG4gIH1cblxuICBAaWYgJG5lZWRzLXByZWZpeGVzIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246ICR3ZWJraXQ7XG4gICAgICAgLW1vei10cmFuc2l0aW9uOiAkbW96O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogJHNwZWM7XG4gIH0gQGVsc2Uge1xuICAgIEBpZiBsZW5ndGgoJHByb3BlcnRpZXMpID49IDEge1xuICAgICAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbiwgJHByb3BlcnRpZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcHJvcGVydGllczogYWxsIDAuMTVzIGVhc2Utb3V0IDBzO1xuICAgICAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbiwgJHByb3BlcnRpZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLXByb3BlcnR5KCRwcm9wZXJ0aWVzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwidHJhbnNpdGlvbi1wcm9wZXJ0eVwiKTtcblxuICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BlcnRpZXMsIFwid2Via2l0XCIpO1xuICAgICAtbW96LXRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BlcnRpZXMsIFwibW96XCIpO1xuICAgICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BlcnRpZXMsIGZhbHNlKTtcbn1cblxuQG1peGluIHRyYW5zaXRpb24tZHVyYXRpb24oJHRpbWVzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwidHJhbnNpdGlvbi1kdXJhdGlvblwiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLWR1cmF0aW9uLCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbigkbW90aW9ucy4uLikge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uXCIpO1xuXG4gIC8vIGVhc2UgfCBsaW5lYXIgfCBlYXNlLWluIHwgZWFzZS1vdXQgfCBlYXNlLWluLW91dCB8IGN1YmljLWJlemllcigpXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLCAkbW90aW9ucywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIHRyYW5zaXRpb24tZGVsYXkoJHRpbWVzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwidHJhbnNpdGlvbi1kZWxheVwiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLWRlbGF5LCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gdXNlci1zZWxlY3QoJHZhbHVlOiBub25lKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwidXNlci1zZWxlY3RcIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIodXNlci1zZWxlY3QsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBzcGVjKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci1jb2xvcmAgb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLWNvbG9yKCNhNjBiNTUgIzc2Y2Q5YyBudWxsICNlOGFlMWEpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBib3JkZXItbGVmdC1jb2xvcjogI2U4YWUxYTtcbi8vLyAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjNzZjZDljO1xuLy8vICAgICBib3JkZXItdG9wLWNvbG9yOiAjYTYwYjU1O1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxuLy8vXG4vLy8gQG91dHB1dCBgYm9yZGVyLWNvbG9yYFxuXG5AbWl4aW4gYm9yZGVyLWNvbG9yKCR2YWxzLi4uKSB7XG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShib3JkZXIsIGNvbG9yLCAkdmFscy4uLik7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgYm9yZGVyLXJhZGl1c2Agb24gYm90aCBjb3JuZXJzIG9uIHRoZSBzaWRlIG9mIGEgYm94LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyYWRpaVxuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQtb25lIHtcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXMoNXB4KTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLmVsZW1lbnQtdHdvIHtcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLWxlZnQtcmFkaXVzKDNweCk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudC1vbmUge1xuLy8vICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA1cHg7XG4vLy8gICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHg7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5lbGVtZW50LXR3byB7XG4vLy8gICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDtcbi8vLyAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4O1xuLy8vICAgfVxuLy8vXG4vLy8gQG91dHB1dCBgYm9yZGVyLXJhZGl1c2BcblxuQG1peGluIGJvcmRlci10b3AtcmFkaXVzKCRyYWRpaSkge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkcmFkaWk7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkcmFkaWk7XG59XG5cbkBtaXhpbiBib3JkZXItcmlnaHQtcmFkaXVzKCRyYWRpaSkge1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGlpO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHJhZGlpO1xufVxuXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1yYWRpdXMoJHJhZGlpKSB7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpaTtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRyYWRpaTtcbn1cblxuQG1peGluIGJvcmRlci1sZWZ0LXJhZGl1cygkcmFkaWkpIHtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogJHJhZGlpO1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkcmFkaWk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBib3JkZXItc3R5bGVgIG9uIHNwZWNpZmljIHNpZGVzIG9mIGEgYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1zdHlsZShkYXNoZWQgbnVsbCBzb2xpZCk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuLy8vICAgICBib3JkZXItdG9wLXN0eWxlOiBkYXNoZWQ7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7bWl4aW59IGRpcmVjdGlvbmFsLXByb3BlcnR5XG4vLy9cbi8vLyBAb3V0cHV0IGBib3JkZXItc3R5bGVgXG5cbkBtaXhpbiBib3JkZXItc3R5bGUoJHZhbHMuLi4pIHtcbiAgJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlICFnbG9iYWw7XG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KGJvcmRlciwgc3R5bGUsICR2YWxzLi4uKTtcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nICFnbG9iYWw7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBib3JkZXItd2lkdGhgIG9uIHNwZWNpZmljIHNpZGVzIG9mIGEgYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci13aWR0aCgxZW0gbnVsbCAyMHB4KTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMjBweDtcbi8vLyAgICAgYm9yZGVyLXRvcC13aWR0aDogMWVtO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxuLy8vXG4vLy8gQG91dHB1dCBgYm9yZGVyLXdpZHRoYFxuXG5AbWl4aW4gYm9yZGVyLXdpZHRoKCR2YWxzLi4uKSB7XG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShib3JkZXIsIHdpZHRoLCAkdmFscy4uLik7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gR2VuZXJhdGVzIHZhcmlhYmxlcyBmb3IgYWxsIGJ1dHRvbnMuIFBsZWFzZSBub3RlIHRoYXQgeW91IG11c3QgdXNlIGludGVycG9sYXRpb24gb24gdGhlIHZhcmlhYmxlOiBgI3skYWxsLWJ1dHRvbnN9YC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgI3skYWxsLWJ1dHRvbnN9IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgI3skYWxsLWJ1dHRvbnMtZm9jdXN9LFxuLy8vICAgI3skYWxsLWJ1dHRvbnMtaG92ZXJ9IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzBmMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgI3skYWxsLWJ1dHRvbnMtYWN0aXZlfSB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICMwMGY7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICBidXR0b24sXG4vLy8gICBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmMDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIGJ1dHRvbjpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJidXR0b25cIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwicmVzZXRcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwic3VibWl0XCJdOmZvY3VzLFxuLy8vICAgYnV0dG9uOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJyZXNldFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJzdWJtaXRcIl06aG92ZXIge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGYwO1xuLy8vICAgfVxuLy8vXG4vLy8gICBidXR0b246YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwicmVzZXRcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXTphY3RpdmUge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUgYXNzaWduLWlucHV0c1xuLy8vXG4vLy8gQHR5cGUgTGlzdFxuLy8vXG4vLy8gQHRvZG8gUmVtb3ZlIGRvdWJsZSBhc3NpZ25lZCB2YXJpYWJsZXMgKExpbmVzIDU54oCTNjIpIGluIHY1LjAuMFxuXG4kYnV0dG9ucy1saXN0OiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiYnV0dG9uXCJdJyxcbiAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwicmVzZXRcIl0nLFxuICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJzdWJtaXRcIl0nO1xuXG4kdXNlci1vdXRwdXQtZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZTtcblxuJGFsbC1idXR0b25zOiAgICAgICAgYXNzaWduLWlucHV0cygkYnV0dG9ucy1saXN0KTtcbiRhbGwtYnV0dG9ucy1hY3RpdmU6IGFzc2lnbi1pbnB1dHMoJGJ1dHRvbnMtbGlzdCwgYWN0aXZlKTtcbiRhbGwtYnV0dG9ucy1mb2N1czogIGFzc2lnbi1pbnB1dHMoJGJ1dHRvbnMtbGlzdCwgZm9jdXMpO1xuJGFsbC1idXR0b25zLWhvdmVyOiAgYXNzaWduLWlucHV0cygkYnV0dG9ucy1saXN0LCBob3Zlcik7XG5cbiRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItb3V0cHV0LWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc7XG5cbiRhbGwtYnV0dG9uLWlucHV0czogICAgICAgICRhbGwtYnV0dG9ucztcbiRhbGwtYnV0dG9uLWlucHV0cy1hY3RpdmU6ICRhbGwtYnV0dG9ucy1hY3RpdmU7XG4kYWxsLWJ1dHRvbi1pbnB1dHMtZm9jdXM6ICAkYWxsLWJ1dHRvbnMtZm9jdXM7XG4kYWxsLWJ1dHRvbi1pbnB1dHMtaG92ZXI6ICAkYWxsLWJ1dHRvbnMtaG92ZXI7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhbiBlYXN5IHdheSB0byBpbmNsdWRlIGEgY2xlYXJmaXggZm9yIGNvbnRhaW5pbmcgZmxvYXRzLlxuLy8vXG4vLy8gQGxpbmsgaHR0cDovL2Nzc21vam8uY29tL2xhdGVzdF9uZXdfY2xlYXJmaXhfc29fZmFyL1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQ6OmFmdGVyIHtcbi8vLyAgICAgY2xlYXI6IGJvdGg7XG4vLy8gICAgIGNvbnRlbnQ6IFwiXCI7XG4vLy8gICAgIGRpc3BsYXk6IHRhYmxlO1xuLy8vICAgfVxuXG5AbWl4aW4gY2xlYXJmaXgge1xuICAmOjphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gVHJ1bmNhdGVzIHRleHQgYW5kIGFkZHMgYW4gZWxsaXBzaXMgdG8gcmVwcmVzZW50IG92ZXJmbG93LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbMTAwJV1cbi8vLyAgIE1heC13aWR0aCBmb3IgdGhlIHN0cmluZyB0byByZXNwZWN0IGJlZm9yZSBiZWluZyB0cnVuY2F0ZWRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBlbGxpcHNpcztcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuLy8vICAgICBtYXgtd2lkdGg6IDEwMCU7XG4vLy8gICAgIG92ZXJmbG93OiBoaWRkZW47XG4vLy8gICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuLy8vICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuLy8vICAgICB3b3JkLXdyYXA6IG5vcm1hbDtcbi8vLyAgIH1cblxuQG1peGluIGVsbGlwc2lzKCR3aWR0aDogMTAwJSkge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1heC13aWR0aDogJHdpZHRoO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgd29yZC13cmFwOiBub3JtYWw7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBHZW9yZ2lhIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiRnZW9yZ2lhOiBcIkdlb3JnaWFcIiwgXCJDYW1icmlhXCIsIFwiVGltZXMgTmV3IFJvbWFuXCIsIFwiVGltZXNcIiwgc2VyaWY7XG5cbi8vLyBIZWx2ZXRpY2EgZm9udCBzdGFjay5cbi8vL1xuLy8vIEB0eXBlIExpc3RcblxuJGhlbHZldGljYTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBcIkhlbHZldGljYVwiLCBcIlJvYm90b1wiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG5cbi8vLyBMdWNpZGEgR3JhbmRlIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiRsdWNpZGEtZ3JhbmRlOiBcIkx1Y2lkYSBHcmFuZGVcIiwgXCJUYWhvbWFcIiwgXCJWZXJkYW5hXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcblxuLy8vIE1vbm9zcGFjZSBmb250IHN0YWNrLlxuLy8vXG4vLy8gQHR5cGUgTGlzdFxuXG4kbW9ub3NwYWNlOiBcIkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ub1wiLCBcIkNvbnNvbGFzXCIsIFwiQ291cmllclwiLCBtb25vc3BhY2U7XG5cbi8vLyBWZXJkYW5hIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiR2ZXJkYW5hOiBcIlZlcmRhbmFcIiwgXCJHZW5ldmFcIiwgc2Fucy1zZXJpZjtcbiIsIi8vLyBIaWRlcyB0aGUgdGV4dCBpbiBhbiBlbGVtZW50LCBjb21tb25seSB1c2VkIHRvIHNob3cgYW4gaW1hZ2UuIFNvbWUgZWxlbWVudHMgd2lsbCBuZWVkIGJsb2NrLWxldmVsIHN0eWxlcyBhcHBsaWVkLlxuLy8vXG4vLy8gQGxpbmsgaHR0cDovL3plbGRtYW4uY29tLzIwMTIvMDMvMDEvcmVwbGFjaW5nLXRoZS05OTk5cHgtaGFjay1uZXctaW1hZ2UtcmVwbGFjZW1lbnRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBoaWRlLXRleHQ7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG92ZXJmbG93OiBoaWRkZW47XG4vLy8gICAgIHRleHQtaW5kZW50OiAxMDElO1xuLy8vICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuLy8vICAgfVxuLy8vXG4vLy8gQHRvZG8gUmVtb3ZlIGhlaWdodCBhcmd1bWVudCBpbiB2NS4wLjBcblxuQG1peGluIGhpZGUtdGV4dCgkaGVpZ2h0OiBudWxsKSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtaW5kZW50OiAxMDElO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gIEBpZiAkaGVpZ2h0IHtcbiAgICBAd2FybiBcIlRoZSBgaGlkZS10ZXh0YCBtaXhpbiBoYXMgY2hhbmdlZCBhbmQgbm8gbG9uZ2VyIHJlcXVpcmVzIGEgaGVpZ2h0LiBUaGUgaGVpZ2h0IGFyZ3VtZW50IHdpbGwgbm8gbG9uZ2VyIGJlIGFjY2VwdGVkIGluIHY1LjAuMFwiO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBtYXJnaW5gIG9uIHNwZWNpZmljIHNpZGVzIG9mIGEgYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIG1hcmdpbihudWxsIDEwcHggM2VtIDIwdmgpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW4tYm90dG9tOiAzZW07XG4vLy8gICAgIG1hcmdpbi1sZWZ0OiAyMHZoO1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7bWl4aW59IGRpcmVjdGlvbmFsLXByb3BlcnR5XG4vLy9cbi8vLyBAb3V0cHV0IGBtYXJnaW5gXG5cbkBtaXhpbiBtYXJnaW4oJHZhbHMuLi4pIHtcbiAgJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlICFnbG9iYWw7XG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KG1hcmdpbiwgZmFsc2UsICR2YWxzLi4uKTtcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nICFnbG9iYWw7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBwYWRkaW5nYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBwYWRkaW5nKDEydmggbnVsbCAxMHB4IDUlKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4vLy8gICAgIHBhZGRpbmctbGVmdDogNSU7XG4vLy8gICAgIHBhZGRpbmctdG9wOiAxMnZoO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxuLy8vXG4vLy8gQG91dHB1dCBgcGFkZGluZ2BcblxuQG1peGluIHBhZGRpbmcoJHZhbHMuLi4pIHtcbiAgJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlICFnbG9iYWw7XG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KHBhZGRpbmcsIGZhbHNlLCAkdmFscy4uLik7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHNldHRpbmcgYW4gZWxlbWVudOKAmXMgcG9zaXRpb24uIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cbi8vL1xuLy8vIEBwYXJhbSB7UG9zaXRpb259ICRwb3NpdGlvbiBbcmVsYXRpdmVdXG4vLy8gICBBIENTUyBwb3NpdGlvbiB2YWx1ZVxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkY29vcmRpbmF0ZXMgW251bGwgbnVsbCBudWxsIG51bGxdXG4vLy8gICBMaXN0IG9mIHZhbHVlcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlIDQtdmFsdWUgc3ludGF4IGZvciB0aGUgZWRnZXMgb2YgYSBib3hcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgMCBudWxsIG51bGwgMTBlbSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGxlZnQ6IDEwZW07XG4vLy8gICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbi8vLyAgICAgdG9wOiAwO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBpcy1sZW5ndGhcbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IHVucGFja1xuXG5AbWl4aW4gcG9zaXRpb24oJHBvc2l0aW9uOiByZWxhdGl2ZSwgJGNvb3JkaW5hdGVzOiBudWxsIG51bGwgbnVsbCBudWxsKSB7XG4gIEBpZiB0eXBlLW9mKCRwb3NpdGlvbikgPT0gbGlzdCB7XG4gICAgJGNvb3JkaW5hdGVzOiAkcG9zaXRpb247XG4gICAgJHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuICAkY29vcmRpbmF0ZXM6IHVucGFjaygkY29vcmRpbmF0ZXMpO1xuXG4gICRvZmZzZXRzOiAoXG4gICAgdG9wOiAgICBudGgoJGNvb3JkaW5hdGVzLCAxKSxcbiAgICByaWdodDogIG50aCgkY29vcmRpbmF0ZXMsIDIpLFxuICAgIGJvdHRvbTogbnRoKCRjb29yZGluYXRlcywgMyksXG4gICAgbGVmdDogICBudGgoJGNvb3JkaW5hdGVzLCA0KVxuICApO1xuXG4gIHBvc2l0aW9uOiAkcG9zaXRpb247XG5cbiAgQGVhY2ggJG9mZnNldCwgJHZhbHVlIGluICRvZmZzZXRzIHtcbiAgICBAaWYgaXMtbGVuZ3RoKCR2YWx1ZSkge1xuICAgICAgI3skb2Zmc2V0fTogJHZhbHVlO1xuICAgIH1cbiAgfVxuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmcgIWdsb2JhbDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEEgbWl4aW4gZm9yIGdlbmVyYXRpbmcgdmVuZG9yIHByZWZpeGVzIG9uIG5vbi1zdGFuZGFyZGl6ZWQgcHJvcGVydGllcy5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkcHJvcGVydHlcbi8vLyAgIFByb3BlcnR5IHRvIHByZWZpeFxuLy8vXG4vLy8gQHBhcmFtIHsqfSAkdmFsdWVcbi8vLyAgIFZhbHVlIHRvIHVzZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkcHJlZml4ZXNcbi8vLyAgIFByZWZpeGVzIHRvIGRlZmluZVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHByZWZpeGVyKGJvcmRlci1yYWRpdXMsIDEwcHgsIHdlYmtpdCBtcyBzcGVjKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4O1xuLy8vICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7XG4vLy8gICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLXdlYmtpdFxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3ItbW96aWxsYVxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3ItbWljcm9zb2Z0XG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci1vcGVyYVxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3Itc3BlY1xuXG5AbWl4aW4gcHJlZml4ZXIoJHByb3BlcnR5LCAkdmFsdWUsICRwcmVmaXhlcykge1xuICBAZWFjaCAkcHJlZml4IGluICRwcmVmaXhlcyB7XG4gICAgQGlmICRwcmVmaXggPT0gd2Via2l0IHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci13ZWJraXQge1xuICAgICAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBtb3oge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLW1vemlsbGEge1xuICAgICAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBtcyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3ItbWljcm9zb2Z0IHtcbiAgICAgICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBvIHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1vcGVyYSB7XG4gICAgICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBzcGVjIHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1zcGVjIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfSBAZWxzZSAge1xuICAgICAgQHdhcm4gXCJVbnJlY29nbml6ZWQgcHJlZml4OiAjeyRwcmVmaXh9XCI7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCkge1xuICAkcHJlZml4LWZvci13ZWJraXQ6ICAgIGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW1vemlsbGE6ICAgZmFsc2UgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3ItbWljcm9zb2Z0OiBmYWxzZSAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1vcGVyYTogICAgIGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLXNwZWM6ICAgICAgZmFsc2UgIWdsb2JhbDtcbn1cbiIsIkBtaXhpbiByZXRpbmEtaW1hZ2UoJGZpbGVuYW1lLCAkYmFja2dyb3VuZC1zaXplLCAkZXh0ZW5zaW9uOiBwbmcsICRyZXRpbmEtZmlsZW5hbWU6IG51bGwsICRyZXRpbmEtc3VmZml4OiBfMngsICRhc3NldC1waXBlbGluZTogJGFzc2V0LXBpcGVsaW5lKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZShcInJldGluYS1pbWFnZVwiKTtcblxuICBAaWYgJGFzc2V0LXBpcGVsaW5lIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWFnZS11cmwoXCIjeyRmaWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogICAgICAgdXJsKFwiI3skZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gIH1cblxuICBAaW5jbHVkZSBoaWRwaSB7XG4gICAgQGlmICRhc3NldC1waXBlbGluZSB7XG4gICAgICBAaWYgJHJldGluYS1maWxlbmFtZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlLXVybChcIiN7JHJldGluYS1maWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWFnZS11cmwoXCIjeyRmaWxlbmFtZX0jeyRyZXRpbmEtc3VmZml4fS4jeyRleHRlbnNpb259XCIpO1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGlmICRyZXRpbmEtZmlsZW5hbWUge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIjeyRyZXRpbmEtZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiI3skZmlsZW5hbWV9I3skcmV0aW5hLXN1ZmZpeH0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRiYWNrZ3JvdW5kLXNpemU7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFNldHMgdGhlIGB3aWR0aGAgYW5kIGBoZWlnaHRgIG9mIHRoZSBlbGVtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2l6ZVxuLy8vICAgQSBsaXN0IG9mIGF0IG1vc3QgMiBzaXplIHZhbHVlcy5cbi8vL1xuLy8vICAgSWYgdGhlcmUgaXMgb25seSBhIHNpbmdsZSB2YWx1ZSBpbiBgJHNpemVgIGl0IGlzIHVzZWQgZm9yIGJvdGggd2lkdGggYW5kIGhlaWdodC4gQWxsIHVuaXRzIGFyZSBzdXBwb3J0ZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5maXJzdC1lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgc2l6ZSgyZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuc2Vjb25kLWVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBzaXplKGF1dG8gMTBlbSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZmlyc3QtZWxlbWVudCB7XG4vLy8gICAgIHdpZHRoOiAyZW07XG4vLy8gICAgIGhlaWdodDogMmVtO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuc2Vjb25kLWVsZW1lbnQge1xuLy8vICAgICB3aWR0aDogYXV0bztcbi8vLyAgICAgaGVpZ2h0OiAxMGVtO1xuLy8vICAgfVxuLy8vXG4vLy8gQHRvZG8gUmVmYWN0b3IgaW4gNS4wLjAgdG8gdXNlIGEgY29tbWEtc2VwYXJhdGVkIGFyZ3VtZW50XG5cbkBtaXhpbiBzaXplKCR2YWx1ZSkge1xuICAkd2lkdGg6IG50aCgkdmFsdWUsIDEpO1xuICAkaGVpZ2h0OiAkd2lkdGg7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID4gMSB7XG4gICAgJGhlaWdodDogbnRoKCR2YWx1ZSwgMik7XG4gIH1cblxuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcblxuICBAaWYgaXMtc2l6ZSgkaGVpZ2h0KSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiBcImAjeyRoZWlnaHR9YCBpcyBub3QgYSB2YWxpZCBsZW5ndGggZm9yIHRoZSBgJGhlaWdodGAgcGFyYW1ldGVyIGluIHRoZSBgc2l6ZWAgbWl4aW4uXCI7XG4gIH1cblxuICBAaWYgaXMtc2l6ZSgkd2lkdGgpIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiBcImAjeyR3aWR0aH1gIGlzIG5vdCBhIHZhbGlkIGxlbmd0aCBmb3IgdGhlIGAkd2lkdGhgIHBhcmFtZXRlciBpbiB0aGUgYHNpemVgIG1peGluLlwiO1xuICB9XG5cbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nICFnbG9iYWw7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBHZW5lcmF0ZXMgdmFyaWFibGVzIGZvciBhbGwgdGV4dC1iYXNlZCBpbnB1dHMuIFBsZWFzZSBub3RlIHRoYXQgeW91IG11c3QgdXNlIGludGVycG9sYXRpb24gb24gdGhlIHZhcmlhYmxlOiBgI3skYWxsLXRleHQtaW5wdXRzfWAuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgICN7JGFsbC10ZXh0LWlucHV0c30ge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjZjAwO1xuLy8vICAgfVxuLy8vXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHMtZm9jdXN9LFxuLy8vICAgI3skYWxsLXRleHQtaW5wdXRzLWhvdmVyfSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICMwZjA7XG4vLy8gICB9XG4vLy9cbi8vLyAgICN7JGFsbC10ZXh0LWlucHV0cy1hY3RpdmV9IHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgIzAwZjtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIGlucHV0W3R5cGU9XCJjb2xvclwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRlXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cImVtYWlsXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwidGVsXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInRleHRcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwidGltZVwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ1cmxcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwid2Vla1wiXSxcbi8vLyAgIHRleHRhcmVhIHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgI2YwMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgaW5wdXRbdHlwZT1cImNvbG9yXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwibW9udGhcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZWxcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInVybFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdOmZvY3VzLFxuLy8vICAgdGV4dGFyZWE6Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwiY29sb3JcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZVwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZVwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJlbWFpbFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJtb250aFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwic2VhcmNoXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInRlbFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZXh0XCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInRpbWVcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwidXJsXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cIndlZWtcIl06aG92ZXIsXG4vLy8gICB0ZXh0YXJlYTpob3ZlciB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICMwZjA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIGlucHV0W3R5cGU9XCJjb2xvclwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZVwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJlbWFpbFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwibW9udGhcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwidGVsXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZXh0XCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ1cmxcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cIndlZWtcIl06YWN0aXZlLFxuLy8vICAgdGV4dGFyZWE6YWN0aXZlIHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgIzAwZjtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIGFzc2lnbi1pbnB1dHNcbi8vL1xuLy8vIEB0eXBlIExpc3RcblxuJHRleHQtaW5wdXRzLWxpc3Q6ICdpbnB1dFt0eXBlPVwiY29sb3JcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZVwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJkYXRldGltZVwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJlbWFpbFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJtb250aFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJudW1iZXJcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwic2VhcmNoXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInRlbFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInRpbWVcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidXJsXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cIndlZWtcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dDpub3QoW3R5cGVdKScsXG4gICAgICAgICAgICAgICAgICAgJ3RleHRhcmVhJztcblxuJHVzZXItb3V0cHV0LWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2U7XG5cbiRhbGwtdGV4dC1pbnB1dHM6ICAgICAgICBhc3NpZ24taW5wdXRzKCR0ZXh0LWlucHV0cy1saXN0KTtcbiRhbGwtdGV4dC1pbnB1dHMtYWN0aXZlOiBhc3NpZ24taW5wdXRzKCR0ZXh0LWlucHV0cy1saXN0LCBhY3RpdmUpO1xuJGFsbC10ZXh0LWlucHV0cy1mb2N1czogIGFzc2lnbi1pbnB1dHMoJHRleHQtaW5wdXRzLWxpc3QsIGZvY3VzKTtcbiRhbGwtdGV4dC1pbnB1dHMtaG92ZXI6ICBhc3NpZ24taW5wdXRzKCR0ZXh0LWlucHV0cy1saXN0LCBob3Zlcik7XG5cbiRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItb3V0cHV0LWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDU1MgY3ViaWMtYmV6aWVyIHRpbWluZyBmdW5jdGlvbnMuIFRpbWluZyBmdW5jdGlvbnMgY291cnRlc3kgb2YganF1ZXJ5LmVhc2llIChnaXRodWIuY29tL2phdWtpYS9lYXNpZSlcbi8vL1xuLy8vIFRpbWluZyBmdW5jdGlvbnMgYXJlIHRoZSBzYW1lIGFzIGRlbW9lZCBoZXJlOiBodHRwOi8vanF1ZXJ5dWkuY29tL3Jlc291cmNlcy9kZW1vcy9lZmZlY3QvZWFzaW5nLmh0bWxcbi8vL1xuLy8vIEB0eXBlIGN1YmljLWJlemllclxuXG4kZWFzZS1pbi1xdWFkOiAgICAgIGN1YmljLWJlemllcigwLjU1MCwgIDAuMDg1LCAwLjY4MCwgMC41MzApO1xuJGVhc2UtaW4tY3ViaWM6ICAgICBjdWJpYy1iZXppZXIoMC41NTAsICAwLjA1NSwgMC42NzUsIDAuMTkwKTtcbiRlYXNlLWluLXF1YXJ0OiAgICAgY3ViaWMtYmV6aWVyKDAuODk1LCAgMC4wMzAsIDAuNjg1LCAwLjIyMCk7XG4kZWFzZS1pbi1xdWludDogICAgIGN1YmljLWJlemllcigwLjc1NSwgIDAuMDUwLCAwLjg1NSwgMC4wNjApO1xuJGVhc2UtaW4tc2luZTogICAgICBjdWJpYy1iZXppZXIoMC40NzAsICAwLjAwMCwgMC43NDUsIDAuNzE1KTtcbiRlYXNlLWluLWV4cG86ICAgICAgY3ViaWMtYmV6aWVyKDAuOTUwLCAgMC4wNTAsIDAuNzk1LCAwLjAzNSk7XG4kZWFzZS1pbi1jaXJjOiAgICAgIGN1YmljLWJlemllcigwLjYwMCwgIDAuMDQwLCAwLjk4MCwgMC4zMzUpO1xuJGVhc2UtaW4tYmFjazogICAgICBjdWJpYy1iZXppZXIoMC42MDAsIC0wLjI4MCwgMC43MzUsIDAuMDQ1KTtcblxuJGVhc2Utb3V0LXF1YWQ6ICAgICBjdWJpYy1iZXppZXIoMC4yNTAsICAwLjQ2MCwgMC40NTAsIDAuOTQwKTtcbiRlYXNlLW91dC1jdWJpYzogICAgY3ViaWMtYmV6aWVyKDAuMjE1LCAgMC42MTAsIDAuMzU1LCAxLjAwMCk7XG4kZWFzZS1vdXQtcXVhcnQ6ICAgIGN1YmljLWJlemllcigwLjE2NSwgIDAuODQwLCAwLjQ0MCwgMS4wMDApO1xuJGVhc2Utb3V0LXF1aW50OiAgICBjdWJpYy1iZXppZXIoMC4yMzAsICAxLjAwMCwgMC4zMjAsIDEuMDAwKTtcbiRlYXNlLW91dC1zaW5lOiAgICAgY3ViaWMtYmV6aWVyKDAuMzkwLCAgMC41NzUsIDAuNTY1LCAxLjAwMCk7XG4kZWFzZS1vdXQtZXhwbzogICAgIGN1YmljLWJlemllcigwLjE5MCwgIDEuMDAwLCAwLjIyMCwgMS4wMDApO1xuJGVhc2Utb3V0LWNpcmM6ICAgICBjdWJpYy1iZXppZXIoMC4wNzUsICAwLjgyMCwgMC4xNjUsIDEuMDAwKTtcbiRlYXNlLW91dC1iYWNrOiAgICAgY3ViaWMtYmV6aWVyKDAuMTc1LCAgMC44ODUsIDAuMzIwLCAxLjI3NSk7XG5cbiRlYXNlLWluLW91dC1xdWFkOiAgY3ViaWMtYmV6aWVyKDAuNDU1LCAgMC4wMzAsIDAuNTE1LCAwLjk1NSk7XG4kZWFzZS1pbi1vdXQtY3ViaWM6IGN1YmljLWJlemllcigwLjY0NSwgIDAuMDQ1LCAwLjM1NSwgMS4wMDApO1xuJGVhc2UtaW4tb3V0LXF1YXJ0OiBjdWJpYy1iZXppZXIoMC43NzAsICAwLjAwMCwgMC4xNzUsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1xdWludDogY3ViaWMtYmV6aWVyKDAuODYwLCAgMC4wMDAsIDAuMDcwLCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtc2luZTogIGN1YmljLWJlemllcigwLjQ0NSwgIDAuMDUwLCAwLjU1MCwgMC45NTApO1xuJGVhc2UtaW4tb3V0LWV4cG86ICBjdWJpYy1iZXppZXIoMS4wMDAsICAwLjAwMCwgMC4wMDAsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1jaXJjOiAgY3ViaWMtYmV6aWVyKDAuNzg1LCAgMC4xMzUsIDAuMTUwLCAwLjg2MCk7XG4kZWFzZS1pbi1vdXQtYmFjazogIGN1YmljLWJlemllcigwLjY4MCwgLTAuNTUwLCAwLjI2NSwgMS41NTApO1xuIiwiQG1peGluIHRyaWFuZ2xlKCRzaXplLCAkY29sb3IsICRkaXJlY3Rpb24pIHtcbiAgJHdpZHRoOiBudGgoJHNpemUsIDEpO1xuICAkaGVpZ2h0OiBudGgoJHNpemUsIGxlbmd0aCgkc2l6ZSkpO1xuICAkZm9yZWdyb3VuZC1jb2xvcjogbnRoKCRjb2xvciwgMSk7XG4gICRiYWNrZ3JvdW5kLWNvbG9yOiBpZihsZW5ndGgoJGNvbG9yKSA9PSAyLCBudGgoJGNvbG9yLCAyKSwgdHJhbnNwYXJlbnQpO1xuICBoZWlnaHQ6IDA7XG4gIHdpZHRoOiAwO1xuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikgb3IgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAkd2lkdGg6ICR3aWR0aCAvIDI7XG4gICAgJGhlaWdodDogaWYobGVuZ3RoKCRzaXplKSA+IDEsICRoZWlnaHQsICRoZWlnaHQvMik7XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItbGVmdDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci10b3A6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItbGVmdDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItdG9wOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgIGJvcmRlci1ib3R0b206ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci10b3A6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9XG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdXAtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHVwLWxlZnQpIHtcbiAgICBib3JkZXItdG9wOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAtcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQ6ICAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHVwLWxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfVxuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGRvd24tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGRvd24tbGVmdCkge1xuICAgIGJvcmRlci1ib3R0b206ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBkb3duLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0OiAgJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duLWxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfVxuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LXVwKSB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci13aWR0aDogJGhlaWdodCAkd2lkdGg7XG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gaW5zZXQtZG93bikge1xuICAgIGJvcmRlci1jb2xvcjogJGZvcmVncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3I7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgJHdpZHRoO1xuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LXJpZ2h0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci13aWR0aDogJHdpZHRoICRoZWlnaHQ7XG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gaW5zZXQtbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3I7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICR3aWR0aCAkaGVpZ2h0O1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhbiBlYXN5IHdheSB0byBjaGFuZ2UgdGhlIGB3b3JkLXdyYXBgIHByb3BlcnR5LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR3cmFwIFticmVhay13b3JkXVxuLy8vICAgVmFsdWUgZm9yIHRoZSBgd29yZC1icmVha2AgcHJvcGVydHkuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC53cmFwcGVyIHtcbi8vLyAgICAgQGluY2x1ZGUgd29yZC13cmFwKGJyZWFrLXdvcmQpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLndyYXBwZXIge1xuLy8vICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuLy8vICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLy8gICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbi8vLyAgIH1cblxuQG1peGluIHdvcmQtd3JhcCgkd3JhcDogYnJlYWstd29yZCkge1xuICBvdmVyZmxvdy13cmFwOiAkd3JhcDtcbiAgd29yZC13cmFwOiAkd3JhcDtcblxuICBAaWYgJHdyYXAgPT0gYnJlYWstd29yZCB7XG4gICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuICB9IEBlbHNlIHtcbiAgICB3b3JkLWJyZWFrOiAkd3JhcDtcbiAgfVxufVxuIiwiLy8gVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBoYXZlIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IE1BSk9SIHZlcnNpb24gcmVsZWFzZVxuXG5AbWl4aW4gaW5saW5lLWJsb2NrIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlKFwiaW5saW5lLWJsb2NrXCIpO1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuQG1peGluIGJ1dHRvbiAoJHN0eWxlOiBzaW1wbGUsICRiYXNlLWNvbG9yOiAjNDI5NGYwLCAkdGV4dC1zaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlKFwiYnV0dG9uXCIpO1xuXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gc3RyaW5nIGFuZCB0eXBlLW9mKCRiYXNlLWNvbG9yKSA9PSBjb2xvciB7XG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBzdHJpbmcgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IG51bWJlciB7XG4gICAgJHBhZGRpbmc6ICR0ZXh0LXNpemU7XG4gICAgJHRleHQtc2l6ZTogJGJhc2UtY29sb3I7XG4gICAgJGJhc2UtY29sb3I6ICM0Mjk0ZjA7XG5cbiAgICBAaWYgJHBhZGRpbmcgPT0gaW5oZXJpdCB7XG4gICAgICAkcGFkZGluZzogN3B4IDE4cHg7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBjb2xvciBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gY29sb3Ige1xuICAgICRiYXNlLWNvbG9yOiAkc3R5bGU7XG4gICAgJHN0eWxlOiBzaW1wbGU7XG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBjb2xvciBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gbnVtYmVyIHtcbiAgICAkcGFkZGluZzogJHRleHQtc2l6ZTtcbiAgICAkdGV4dC1zaXplOiAkYmFzZS1jb2xvcjtcbiAgICAkYmFzZS1jb2xvcjogJHN0eWxlO1xuICAgICRzdHlsZTogc2ltcGxlO1xuXG4gICAgQGlmICRwYWRkaW5nID09IGluaGVyaXQge1xuICAgICAgJHBhZGRpbmc6IDdweCAxOHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gbnVtYmVyIHtcbiAgICAkcGFkZGluZzogJGJhc2UtY29sb3I7XG4gICAgJHRleHQtc2l6ZTogJHN0eWxlO1xuICAgICRiYXNlLWNvbG9yOiAjNDI5NGYwO1xuICAgICRzdHlsZTogc2ltcGxlO1xuXG4gICAgQGlmICRwYWRkaW5nID09ICM0Mjk0ZjAge1xuICAgICAgJHBhZGRpbmc6IDdweCAxOHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3BhY2l0eTogMC41O1xuICB9XG59XG5cbi8vIFNlbGVjdG9yIFN0eWxlIEJ1dHRvblxuQG1peGluIGJ1dHRvbnN0eWxlKCR0eXBlLCAkYi1jb2xvciwgJHQtc2l6ZSwgJHBhZCkge1xuICAvLyBHcmF5c2NhbGUgYnV0dG9uXG4gIEBpZiAkdHlwZSA9PSBzaW1wbGUgYW5kICRiLWNvbG9yID09IGdyYXlzY2FsZSgkYi1jb2xvcikge1xuICAgIEBpbmNsdWRlIHNpbXBsZSgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAaWYgJHR5cGUgPT0gc2hpbnkgYW5kICRiLWNvbG9yID09IGdyYXlzY2FsZSgkYi1jb2xvcikge1xuICAgIEBpbmNsdWRlIHNoaW55KCRiLWNvbG9yLCB0cnVlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIEBpZiAkdHlwZSA9PSBwaWxsIGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcbiAgICBAaW5jbHVkZSBwaWxsKCRiLWNvbG9yLCB0cnVlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIEBpZiAkdHlwZSA9PSBmbGF0IGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcbiAgICBAaW5jbHVkZSBmbGF0KCRiLWNvbG9yLCB0cnVlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIC8vIENvbG9yZWQgYnV0dG9uXG4gIEBpZiAkdHlwZSA9PSBzaW1wbGUge1xuICAgIEBpbmNsdWRlIHNpbXBsZSgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGVsc2UgaWYgJHR5cGUgPT0gc2hpbnkge1xuICAgIEBpbmNsdWRlIHNoaW55KCRiLWNvbG9yLCBmYWxzZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAZWxzZSBpZiAkdHlwZSA9PSBwaWxsIHtcbiAgICBAaW5jbHVkZSBwaWxsKCRiLWNvbG9yLCBmYWxzZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAZWxzZSBpZiAkdHlwZSA9PSBmbGF0IHtcbiAgICBAaW5jbHVkZSBmbGF0KCRiLWNvbG9yLCBmYWxzZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cbn1cblxuLy8gU2ltcGxlIEJ1dHRvblxuQG1peGluIHNpbXBsZSgkYmFzZS1jb2xvciwgJGdyYXlzY2FsZTogZmFsc2UsICR0ZXh0c2l6ZTogaW5oZXJpdCwgJHBhZGRpbmc6IDdweCAxOHB4KSB7XG4gICRjb2xvcjogICAgICAgICBoc2woMCwgMCwgMTAwJSk7XG4gICRib3JkZXI6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAgOSUsICAkbGlnaHRuZXNzOiAtMTQlKTtcbiAgJGluc2V0LXNoYWRvdzogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC04JSwgICRsaWdodG5lc3M6ICAxNSUpO1xuICAkc3RvcC1ncmFkaWVudDogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDklLCAgJGxpZ2h0bmVzczogLTExJSk7XG4gICR0ZXh0LXNoYWRvdzogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAgMTUlLCAkbGlnaHRuZXNzOiAtMTglKTtcblxuICBAaWYgaXMtbGlnaHQoJGJhc2UtY29sb3IpIHtcbiAgICAkY29sb3I6ICAgICAgIGhzbCgwLCAwLCAyMCUpO1xuICAgICR0ZXh0LXNoYWRvdzogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogMTAlLCAkbGlnaHRuZXNzOiA0JSk7XG4gIH1cblxuICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAkYm9yZGVyOiAgICAgICAgZ3JheXNjYWxlKCRib3JkZXIpO1xuICAgICRpbnNldC1zaGFkb3c6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdyk7XG4gICAgJHN0b3AtZ3JhZGllbnQ6IGdyYXlzY2FsZSgkc3RvcC1ncmFkaWVudCk7XG4gICAgJHRleHQtc2hhZG93OiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3cpO1xuICB9XG5cbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdztcbiAgY29sb3I6ICRjb2xvcjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6ICR0ZXh0c2l6ZTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3IsICRzdG9wLWdyYWRpZW50KTtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgJHRleHQtc2hhZG93O1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtNCUsICRsaWdodG5lc3M6IC01JSk7XG4gICAgJGluc2V0LXNoYWRvdy1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC03JSwgJGxpZ2h0bmVzczogIDUlKTtcbiAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDglLCAkbGlnaHRuZXNzOiAtMTQlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XG4gICAgICAkaW5zZXQtc2hhZG93LWhvdmVyOiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctaG92ZXIpO1xuICAgICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGdyYXlzY2FsZSgkc3RvcC1ncmFkaWVudC1ob3Zlcik7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvci1ob3ZlciwgJHN0b3AtZ3JhZGllbnQtaG92ZXIpO1xuXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3ctaG92ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCksXG4gICY6Zm9jdXM6bm90KDpkaXNhYmxlZCkge1xuICAgICRib3JkZXItYWN0aXZlOiAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA5JSwgJGxpZ2h0bmVzczogLTE0JSk7XG4gICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDclLCAkbGlnaHRuZXNzOiAtMTclKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJvcmRlci1hY3RpdmU6ICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLWFjdGl2ZSk7XG4gICAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctYWN0aXZlKTtcbiAgICB9XG5cbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWFjdGl2ZTtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgOHB4IDRweCAkaW5zZXQtc2hhZG93LWFjdGl2ZSwgaW5zZXQgMCAwIDhweCA0cHggJGluc2V0LXNoYWRvdy1hY3RpdmU7XG4gIH1cbn1cblxuLy8gU2hpbnkgQnV0dG9uXG5AbWl4aW4gc2hpbnkoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuICAkYm9yZGVyOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTE3LCAkZ3JlZW46IC0xMTEsICRibHVlOiAtODEpO1xuICAkYm9yZGVyLWJvdHRvbTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTI2LCAkZ3JlZW46IC0xMjcsICRibHVlOiAtMTIyKTtcbiAgJGZvdXJ0aC1zdG9wOiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTc5LCAgJGdyZWVuOiAtNzAsICAkYmx1ZTogLTQ2KTtcbiAgJGluc2V0LXNoYWRvdzogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogIDM3LCAgJGdyZWVuOiAgMjksICAkYmx1ZTogIDEyKTtcbiAgJHNlY29uZC1zdG9wOiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTU2LCAgJGdyZWVuOiAtNTAsICAkYmx1ZTogLTMzKTtcbiAgJHRleHQtc2hhZG93OiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTE0MCwgJGdyZWVuOiAtMTQxLCAkYmx1ZTogLTExNCk7XG4gICR0aGlyZC1zdG9wOiAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC04NiwgICRncmVlbjogLTc1LCAgJGJsdWU6IC00OCk7XG5cbiAgQGlmIGlzLWxpZ2h0KCRiYXNlLWNvbG9yKSB7XG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xuICB9XG5cbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgJGJvcmRlcjogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyKTtcbiAgICAkYm9yZGVyLWJvdHRvbTogZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcbiAgICAkZm91cnRoLXN0b3A6ICAgZ3JheXNjYWxlKCRmb3VydGgtc3RvcCk7XG4gICAgJGluc2V0LXNoYWRvdzogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93KTtcbiAgICAkc2Vjb25kLXN0b3A6ICAgZ3JheXNjYWxlKCRzZWNvbmQtc3RvcCk7XG4gICAgJHRleHQtc2hhZG93OiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3cpO1xuICAgICR0aGlyZC1zdG9wOiAgICBncmF5c2NhbGUoJHRoaXJkLXN0b3ApO1xuICB9XG5cbiAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50KHRvcCwgJGJhc2UtY29sb3IgMCUsICRzZWNvbmQtc3RvcCA1MCUsICR0aGlyZC1zdG9wIDUwJSwgJGZvdXJ0aC1zdG9wIDEwMCUpO1xuXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXI7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyLWJvdHRvbTtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdztcbiAgY29sb3I6ICRjb2xvcjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6ICR0ZXh0c2l6ZTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93O1xuXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICRmaXJzdC1zdG9wLWhvdmVyOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTMsICRncmVlbjogLTE1LCAkYmx1ZTogLTE4KTtcbiAgICAkc2Vjb25kLXN0b3AtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTY2LCAkZ3JlZW46IC02MiwgJGJsdWU6IC01MSk7XG4gICAgJHRoaXJkLXN0b3AtaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC05MywgJGdyZWVuOiAtODUsICRibHVlOiAtNjYpO1xuICAgICRmb3VydGgtc3RvcC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtODYsICRncmVlbjogLTgwLCAkYmx1ZTogLTYzKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGZpcnN0LXN0b3AtaG92ZXI6ICBncmF5c2NhbGUoJGZpcnN0LXN0b3AtaG92ZXIpO1xuICAgICAgJHNlY29uZC1zdG9wLWhvdmVyOiBncmF5c2NhbGUoJHNlY29uZC1zdG9wLWhvdmVyKTtcbiAgICAgICR0aGlyZC1zdG9wLWhvdmVyOiAgZ3JheXNjYWxlKCR0aGlyZC1zdG9wLWhvdmVyKTtcbiAgICAgICRmb3VydGgtc3RvcC1ob3ZlcjogZ3JheXNjYWxlKCRmb3VydGgtc3RvcC1ob3Zlcik7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50KHRvcCwgJGZpcnN0LXN0b3AtaG92ZXIgIDAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWNvbmQtc3RvcC1ob3ZlciA1MCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXJkLXN0b3AtaG92ZXIgIDUwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm91cnRoLXN0b3AtaG92ZXIgMTAwJSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCksXG4gICY6Zm9jdXM6bm90KDpkaXNhYmxlZCkge1xuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMTEsICRncmVlbjogLTExNiwgJGJsdWU6IC0xMjIpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctYWN0aXZlKTtcbiAgICB9XG5cbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMjBweCAwICRpbnNldC1zaGFkb3ctYWN0aXZlO1xuICB9XG59XG5cbi8vIFBpbGwgQnV0dG9uXG5AbWl4aW4gcGlsbCgkYmFzZS1jb2xvciwgJGdyYXlzY2FsZTogZmFsc2UsICR0ZXh0c2l6ZTogaW5oZXJpdCwgJHBhZGRpbmc6IDdweCAxOHB4KSB7XG4gICRjb2xvcjogICAgICAgICBoc2woMCwgMCwgMTAwJSk7XG4gICRib3JkZXItYm90dG9tOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogLTExJSwgJGxpZ2h0bmVzczogLTI2JSk7XG4gICRib3JkZXItc2lkZXM6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA0LCAkc2F0dXJhdGlvbjogLTIxJSwgJGxpZ2h0bmVzczogLTIxJSk7XG4gICRib3JkZXItdG9wOiAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IC0xLCAkc2F0dXJhdGlvbjogLTMwJSwgJGxpZ2h0bmVzczogLTE1JSk7XG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IC0xLCAkc2F0dXJhdGlvbjogLTElLCAgJGxpZ2h0bmVzczogIDclKTtcbiAgJHN0b3AtZ3JhZGllbnQ6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDgsICRzYXR1cmF0aW9uOiAgMTQlLCAkbGlnaHRuZXNzOiAtMTAlKTtcbiAgJHRleHQtc2hhZG93OiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDUsICRzYXR1cmF0aW9uOiAtMTklLCAkbGlnaHRuZXNzOiAtMTUlKTtcblxuICBAaWYgaXMtbGlnaHQoJGJhc2UtY29sb3IpIHtcbiAgICAkY29sb3I6ICAgICAgIGhzbCgwLCAwLCAyMCUpO1xuICAgICR0ZXh0LXNoYWRvdzogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogMTAlLCAkbGlnaHRuZXNzOiA0JSk7XG4gIH1cblxuICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAkYm9yZGVyLWJvdHRvbTogZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcbiAgICAkYm9yZGVyLXNpZGVzOiAgZ3JheXNjYWxlKCRib3JkZXItc2lkZXMpO1xuICAgICRib3JkZXItdG9wOiAgICBncmF5c2NhbGUoJGJvcmRlci10b3ApO1xuICAgICRpbnNldC1zaGFkb3c6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdyk7XG4gICAgJHN0b3AtZ3JhZGllbnQ6IGdyYXlzY2FsZSgkc3RvcC1ncmFkaWVudCk7XG4gICAgJHRleHQtc2hhZG93OiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3cpO1xuICB9XG5cbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci10b3A7XG4gIGJvcmRlci1jb2xvcjogJGJvcmRlci10b3AgJGJvcmRlci1zaWRlcyAkYm9yZGVyLWJvdHRvbTtcbiAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3c7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLCAkc3RvcC1ncmFkaWVudCk7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93O1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGlnaHRuZXNzOiAtNC41JSk7XG4gICAgJGJvcmRlci1ib3R0b206ICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDgsICRzYXR1cmF0aW9uOiAgMTMuNSUsICRsaWdodG5lc3M6IC0zMiUpO1xuICAgICRib3JkZXItc2lkZXM6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA0LCAkc2F0dXJhdGlvbjogLTIlLCAgICAkbGlnaHRuZXNzOiAtMjclKTtcbiAgICAkYm9yZGVyLXRvcDogICAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAtMSwgJHNhdHVyYXRpb246IC0xNyUsICAgJGxpZ2h0bmVzczogLTIxJSk7XG4gICAgJGluc2V0LXNoYWRvdy1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgICAgICAgICAgICRzYXR1cmF0aW9uOiAtMSUsICAgICRsaWdodG5lc3M6ICAzJSk7XG4gICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDgsICRzYXR1cmF0aW9uOiAtNCUsICAgICRsaWdodG5lc3M6IC0xNS41JSk7XG4gICAgJHRleHQtc2hhZG93LWhvdmVyOiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDUsICRzYXR1cmF0aW9uOiAtNSUsICAgICRsaWdodG5lc3M6IC0yMiUpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgZ3JheXNjYWxlKCRiYXNlLWNvbG9yLWhvdmVyKTtcbiAgICAgICRib3JkZXItYm90dG9tOiAgICAgICBncmF5c2NhbGUoJGJvcmRlci1ib3R0b20pO1xuICAgICAgJGJvcmRlci1zaWRlczogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLXNpZGVzKTtcbiAgICAgICRib3JkZXItdG9wOiAgICAgICAgICBncmF5c2NhbGUoJGJvcmRlci10b3ApO1xuICAgICAgJGluc2V0LXNoYWRvdy1ob3ZlcjogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWhvdmVyKTtcbiAgICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQtaG92ZXIpO1xuICAgICAgJHRleHQtc2hhZG93LWhvdmVyOiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3ctaG92ZXIpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3ItaG92ZXIsICRzdG9wLWdyYWRpZW50LWhvdmVyKTtcblxuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci10b3A7XG4gICAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLXRvcCAkYm9yZGVyLXNpZGVzICRib3JkZXItYm90dG9tO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93LWhvdmVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3ctaG92ZXI7XG4gIH1cblxuICAmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSxcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XG4gICAgJGFjdGl2ZS1jb2xvcjogICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDQsICAkc2F0dXJhdGlvbjogLTEyJSwgICRsaWdodG5lc3M6IC0xMCUpO1xuICAgICRib3JkZXItYWN0aXZlOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA2LCAgJHNhdHVyYXRpb246IC0yLjUlLCAkbGlnaHRuZXNzOiAtMzAlKTtcbiAgICAkYm9yZGVyLWJvdHRvbS1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogMTEsICRzYXR1cmF0aW9uOiAgNiUsICAgJGxpZ2h0bmVzczogLTMxJSk7XG4gICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDksICAkc2F0dXJhdGlvbjogIDIlLCAgICRsaWdodG5lc3M6IC0yMS41JSk7XG4gICAgJHRleHQtc2hhZG93LWFjdGl2ZTogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDUsICAkc2F0dXJhdGlvbjogLTEyJSwgICRsaWdodG5lc3M6IC0yMS41JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRhY3RpdmUtY29sb3I6ICAgICAgICAgZ3JheXNjYWxlKCRhY3RpdmUtY29sb3IpO1xuICAgICAgJGJvcmRlci1hY3RpdmU6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlci1hY3RpdmUpO1xuICAgICAgJGJvcmRlci1ib3R0b20tYWN0aXZlOiBncmF5c2NhbGUoJGJvcmRlci1ib3R0b20tYWN0aXZlKTtcbiAgICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctYWN0aXZlKTtcbiAgICAgICR0ZXh0LXNoYWRvdy1hY3RpdmU6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdy1hY3RpdmUpO1xuICAgIH1cblxuICAgIGJhY2tncm91bmQ6ICRhY3RpdmUtY29sb3I7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1hY3RpdmU7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItYm90dG9tLWFjdGl2ZTtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgNnB4IDNweCAkaW5zZXQtc2hhZG93LWFjdGl2ZTtcbiAgICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3ctYWN0aXZlO1xuICB9XG59XG5cbi8vIEZsYXQgQnV0dG9uXG5AbWl4aW4gZmxhdCgkYmFzZS1jb2xvciwgJGdyYXlzY2FsZTogZmFsc2UsICR0ZXh0c2l6ZTogaW5oZXJpdCwgJHBhZGRpbmc6IDdweCAxOHB4KSB7XG4gICRjb2xvcjogICAgICAgICBoc2woMCwgMCwgMTAwJSk7XG5cbiAgQGlmIGlzLWxpZ2h0KCRiYXNlLWNvbG9yKSB7XG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcbiAgfVxuXG4gIGJhY2tncm91bmQtY29sb3I6ICRiYXNlLWNvbG9yO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJvcmRlcjogMDtcbiAgY29sb3I6ICRjb2xvcjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6ICR0ZXh0c2l6ZTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG5cbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKXtcbiAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogNCUsICRsaWdodG5lc3M6IDUlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6IGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhc2UtY29sb3ItaG92ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCksXG4gICY6Zm9jdXM6bm90KDpkaXNhYmxlZCkge1xuICAgICRiYXNlLWNvbG9yLWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogLTQlLCAkbGlnaHRuZXNzOiAtNSUpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkYmFzZS1jb2xvci1hY3RpdmU6IGdyYXlzY2FsZSgkYmFzZS1jb2xvci1hY3RpdmUpO1xuICAgIH1cblxuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYXNlLWNvbG9yLWFjdGl2ZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuLy8gRmxleGlibGUgZ3JpZFxuQGZ1bmN0aW9uIGZsZXgtZ3JpZCgkY29sdW1ucywgJGNvbnRhaW5lci1jb2x1bW5zOiAkZmctbWF4LWNvbHVtbnMpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBmbGV4LWdyaWRgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgXCIgK1xuICAgIFwicmVtb3ZlZCBpbiA1LjAuMC4gRm9yIGdyaWQgZnVuY3Rpb25zLCBjaGVjayBvdXQgQm91cmJvbidzIHNpc3RlciBsaWJyYXJ5XCIgK1xuICAgIFwiTmVhdC5cIjtcbiAgfVxuXG4gICR3aWR0aDogJGNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICAkY29udGFpbmVyLXdpZHRoOiAkY29udGFpbmVyLWNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb250YWluZXItY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgQHJldHVybiBwZXJjZW50YWdlKCR3aWR0aCAvICRjb250YWluZXItd2lkdGgpO1xufVxuXG4vLyBGbGV4aWJsZSBndXR0ZXJcbkBmdW5jdGlvbiBmbGV4LWd1dHRlcigkY29udGFpbmVyLWNvbHVtbnM6ICRmZy1tYXgtY29sdW1ucywgJGd1dHRlcjogJGZnLWd1dHRlcikge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGZsZXgtZ3V0dGVyYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuIEZvciBncmlkIGZ1bmN0aW9ucywgY2hlY2sgb3V0IEJvdXJib24ncyBzaXN0ZXIgbGlicmFyeVwiICtcbiAgICBcIk5lYXQuXCI7XG4gIH1cblxuICAkY29udGFpbmVyLXdpZHRoOiAkY29udGFpbmVyLWNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb250YWluZXItY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgQHJldHVybiBwZXJjZW50YWdlKCRndXR0ZXIgLyAkY29udGFpbmVyLXdpZHRoKTtcbn1cblxuQGZ1bmN0aW9uIGdyaWQtd2lkdGgoJG4pIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBncmlkLXdpZHRoYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuIEZvciBncmlkIGZ1bmN0aW9ucywgY2hlY2sgb3V0IEJvdXJib24ncyBzaXN0ZXIgbGlicmFyeVwiICtcbiAgICBcIk5lYXQuXCI7XG4gIH1cblxuICBAcmV0dXJuICRuICogJGd3LWNvbHVtbiArICgkbiAtIDEpICogJGd3LWd1dHRlcjtcbn1cblxuQGZ1bmN0aW9uIGdvbGRlbi1yYXRpbygkdmFsdWUsICRpbmNyZW1lbnQpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBnb2xkZW4tcmF0aW9gIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgXCIgK1xuICAgIFwicmVtb3ZlZCBpbiA1LjAuMC4gWW91IGNhbiB1c2UgdGhlIGBtb2R1bGFyLXNjYWxlYCBmdW5jdGlvbiBpbnN0ZWFkLlwiO1xuICB9XG5cbiAgQHJldHVybiBtb2R1bGFyLXNjYWxlKCRpbmNyZW1lbnQsICR2YWx1ZSwgJHJhdGlvOiAkZ29sZGVuKTtcbn1cblxuQG1peGluIGJveC1zaXppbmcoJGJveCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImJveC1zaXppbmdcIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXNpemluZywgJGJveCwgd2Via2l0IG1veiBzcGVjKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcbi8vIE5lYXQgMi4wLjBcbi8vIGh0dHA6Ly9uZWF0LmJvdXJib24uaW9cbi8vIENvcHlyaWdodCAyMDEyIHRob3VnaHRib3QsIGluYy5cbi8vIE1JVCBMaWNlbnNlXG5cbkBpbXBvcnQgXCJuZWF0L3NldHRpbmdzL3NldHRpbmdzXCI7XG5cbkBpbXBvcnQgXCJuZWF0L2Z1bmN0aW9ucy9yZXRyaWV2ZS1uZWF0LXNldHRpbmdzXCI7XG5AaW1wb3J0IFwibmVhdC9mdW5jdGlvbnMvbmVhdC1jb2x1bW4tZGVmYXVsdFwiO1xuQGltcG9ydCBcIm5lYXQvZnVuY3Rpb25zL25lYXQtY29sdW1uLXdpZHRoXCI7XG5AaW1wb3J0IFwibmVhdC9mdW5jdGlvbnMvbmVhdC1jb2x1bW4tcmF0aW9cIjtcbkBpbXBvcnQgXCJuZWF0L2Z1bmN0aW9ucy9uZWF0LWZsb2F0LWRpcmVjdGlvblwiO1xuQGltcG9ydCBcIm5lYXQvZnVuY3Rpb25zL25lYXQtbWVyZ2UtZGVmYXVsdHNcIjtcbkBpbXBvcnQgXCJuZWF0L2Z1bmN0aW9ucy9uZWF0LW9wcG9zaXRlLWRpcmVjdGlvblwiO1xuQGltcG9ydCBcIm5lYXQvZnVuY3Rpb25zL25lYXQtcGFyc2UtY29sdW1uc1wiO1xuQGltcG9ydCBcIm5lYXQvZnVuY3Rpb25zL25lYXQtcGFyc2UtbWVkaWFcIjtcbkBpbXBvcnQgXCJuZWF0L2Z1bmN0aW9ucy9uZWF0LWFwcGVuZC1ncmlkLXZpc3VhbFwiO1xuXG5AaW1wb3J0IFwibmVhdC9taXhpbnMvZ3JpZC1jb2xsYXBzZVwiO1xuQGltcG9ydCBcIm5lYXQvbWl4aW5zL2dyaWQtY29sdW1uXCI7XG5AaW1wb3J0IFwibmVhdC9taXhpbnMvZ3JpZC1jb250YWluZXJcIjtcbkBpbXBvcnQgXCJuZWF0L21peGlucy9ncmlkLW1lZGlhXCI7XG5AaW1wb3J0IFwibmVhdC9taXhpbnMvZ3JpZC1wdXNoXCI7XG5AaW1wb3J0IFwibmVhdC9taXhpbnMvZ3JpZC1zaGlmdFwiO1xuQGltcG9ydCBcIm5lYXQvbWl4aW5zL2dyaWQtdmlzdWFsXCI7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG4vLy8gVGhpcyB2YXJpYWJsZSBpcyBhIHNhc3MgbWFwIHRoYXQgb3ZlcnJpZGVzIE5lYXQncyBkZWZhdWx0IGdyaWQgc2V0dGluZ3MuXG4vLy8gVXNlIHRoaXMgdG8gZGVmaW5lIHlvdXIgcHJvamVjdCdzIGdyaWQgcHJvcGVydGllcyBpbmNsdXRpbmcgZ3V0dGVycyBhbmRcbi8vLyB0b3RhbCBjb2x1bW4gY291bnQuXG4vLy9cbi8vLyBAdHlwZSBtYXBcbi8vL1xuLy8vIEBncm91cCBzZXR0aW5nc1xuLy8vXG4vLy8gQG5hbWUgTmVhdCBncmlkXG4vLy9cbi8vLyBAcHJvcGVydHkge251bWJlciAodW5pdGxlc3MpfSBjb2x1bW5zIFsxMl1cbi8vLyAgIERlZmF1bHQgbnVtYmVyIG9mIHRoZSB0b3RhbCBncmlkIGNvbHVtbnMuXG4vLy9cbi8vLyBAcHJvcGVydHkge251bWJlciAod2l0aCB1bml0KX0gZ3V0dGVyIFsyMHB4XVxuLy8vICAgRGVmYXVsdCBncmlkIGd1dHRlciB3aWR0aCBiZXR3ZWVuIGNvbHVtbnMuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAkbmVhdC1ncmlkOiAoXG4vLy8gICAgIGNvbHVtbnM6IDEyLFxuLy8vICAgICBndXR0ZXI6IDIwcHgsXG4vLy8gICApO1xuXG4kbmVhdC1ncmlkOiAoKSAhZGVmYXVsdDtcblxuLy8vIElmIHlvdSBuZWVkIG11bHRpcGxlIGdyaWRzIGluIGEgc2luZ2xlIHByb2plY3QsIHlvdSBjYW4gZG9cbi8vLyB0aGlzIGJ5IGRlZmluaW5nIGEgbmV3IG1hcCBzdG9yZWQgd2l0aGluIGEgdmFyaWFibGUgb2YgeW91ciBjaG9vc2luZy4gVGhpc1xuLy8vIHZhcmlhYmxlIGNhbiB0aGVuIGJlIHBhc3NlZCBkaXJlY3RseSBpbiB0byBhbnkgb2YgTmVhdCdzIG1peGlucyBsaWtlXG4vLy8gW2BncmlkLWNvbHVtbigxMiwgJG15LWN1c3RvbS1ncmlkKWBdKCNncmlkLWNvbHVtbikuXG4vLy9cbi8vLyBDdXN0b20gZ3JpZHMgYXJlIGVzcGVjaWFsbHkgdXNlZnVsIHdpdGggW2BncmlkLW1lZGlhYF0oI2dyaWQtbWVkaWEpLiBCeVxuLy8vIGRlZmluaW5nIGEgYG1lZGlhYCBhdHRyaWJ1dGUgd2l0aGluIHlvdXIgY3VzdG9tIGdyaWQsIHlvdSBhcmUgYWJsZSB0byBlYXNpbHlcbi8vLyBkZWZpbmUgZ3V0dGVyIHdpZHRoIGFuZCB0b3RhbCBjb2x1bW4gY291bnQgYXMgd2VsbCB0aGUgYnJlYWtwb2ludCBhdCB3aGljaFxuLy8vIHRoZXkgc2hvdWxkIGFjdGl2YXRlLlxuLy8vXG4vLy8gQHR5cGUgbWFwXG4vLy9cbi8vLyBAZ3JvdXAgc2V0dGluZ3Ncbi8vL1xuLy8vIEBuYW1lIEN1c3RvbSBncmlkc1xuLy8vXG4vLy8gQHByb3BlcnR5IHtudW1iZXIgKHVuaXRsZXNzKX0gY29sdW1ucyBbMTJdXG4vLy8gICBOdW1iZXIgb2YgdGhlIHRvdGFsIGdyaWQgY29sdW1ucy5cbi8vL1xuLy8vIEBwcm9wZXJ0eSB7bnVtYmVyICh3aXRoIHVuaXQpfSBndXR0ZXIgWzIwcHhdXG4vLy8gICBHcmlkIGd1dHRlciB3aWR0aCBiZXR3ZWVuIGNvbHVtbnMuXG4vLy9cbi8vLyBAcHJvcGVydHkge251bWJlciAod2l0aCB1bml0KSB8IHN0cmluZyB8IG51bGx9IG1lZGlhIFtudWxsXVxuLy8vICAgVGhlIGBAbWVkaWFgIGRlZmluaXRpb24gdGhhdCBpcyB1c2VkIGJ5IHRoZSBbYGdyaWQtbWVkaWFgXSgjZ3JpZC1tZWRpYSlcbi8vLyAgIG1peGluIHRvIGRldGlybWluZSB0aGUgbWVkaWEgcHJvcGVydGllcy5cbi8vL1xuLy8vIEBwcm9wZXJ0eSB7Y29sb3J9IGNvbG9yIFtudWxsXVxuLy8vICAgVGhlIGNvbG9yIHVzZWQgYnkgW2BncmlkLXZpc3VhbGBdKCNncmlkLXZpc3VhbCkgdG8gY3JlYXRlIHRoZSBndWlkZXMuXG4vLy9cbi8vLyBAcHJvcGVydHkge3N0cmluZ30gZGlyZWN0aW9uIFtsdHJdXG4vLy8gICBUaGUgZmxvYXQgZGlyZWN0aW9uIHVzZWQgdGhyb3VnaG91dCB0aGUgZ3JpZC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgICRteS1jdXN0b20tZ3JpZDogKFxuLy8vICAgICBjb2x1bW5zOiAxMixcbi8vLyAgICAgZ3V0dGVyOiAyMHB4LFxuLy8vICAgICBtZWRpYTogMTIwMHB4LFxuLy8vICAgICBjb2xvcjogcmdiYSgjMDBkNGZmLCAwLjI1KSxcbi8vLyAgICAgZGlyZWN0aW9uOiBsdHIsXG4vLy8gICApO1xuLy8vXG4vLy8gICAkb3RoZXItY3VzdG9tLWdyaWQtZm9yLXByaW50OiAoXG4vLy8gICAgIGNvbHVtbnM6IDE0LFxuLy8vICAgICBndXR0ZXI6IDEuNXJlbSxcbi8vLyAgICAgbWVkaWE6IHByaW50LFxuLy8vICAgKTtcbi8vL1xuXG4kbmVhdC1jdXN0b20tZ3JpZDogKCkgIWRlZmF1bHQ7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG4vLy8gVGhpcyBmdW5jdGlvbiByZWNpdmVzIGEgZ3JpZCBtYXAgYW5kIG1lcmdlcyBpdCB3aXRoIE5lYXQncyBkZWZhdWxzLlxuLy8vIEl0IHRoZW4gcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IHRoYXQgaGFzIGJlZW4gcGFzc2VkIHRvIGl0LlxuLy8vXG4vLy8gQGFyZ3VtZW50IHttYXB9ICRncmlkXG4vLy9cbi8vLyBAYXJndW1lbnQge3N0cmluZ30gJHNldHRpbmdcbi8vL1xuLy8vIEByZXR1cm4ge2Jvb2xlYW4gfCBjb2xvciB8IGxpc3QgfCBudW1iZXIgfCBzdHJpbmd9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICBfcmV0cmlldmUtbmVhdC1zZXR0aW5nKCRuZWF0LWdyaWQsIGNvbHVtbnMpXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcblxuQGZ1bmN0aW9uIF9yZXRyaWV2ZS1uZWF0LXNldHRpbmcoJGdyaWQsICRzZXR0aW5nKSB7XG4gICRfZ3JpZC1zZXR0aW5nczogbWFwLW1lcmdlKF9uZWF0LW1lcmdlLWRlZmF1bHRzKCRuZWF0LWdyaWQpLCAkZ3JpZCk7XG4gIEByZXR1cm4gbWFwLWdldCgkX2dyaWQtc2V0dGluZ3MsICRzZXR0aW5nKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcbi8vLyBEZXRlcm1pbmUgaWYgYSBjb2x1bW4gY291bnQgaGFzIGJlZW4gZ2l2ZW4uXG4vLy8gSWYgbm8gY29sdW1ucyBoYXZlIGJlZW4gZ2l2ZW4gcmV0dXJuIHRoZSBncmlkJ3MgdG90YWwgY29sdW1uIGNvdW50LlxuLy8vXG4vLy8gQGFyZ3VtZW50IHttYXB9ICRncmlkXG4vLy9cbi8vLyBAYXJndW1lbnQge251bWJlciAodW5pdGxlc3MpIHwgbnVsbH0gJGNvbHVtbnNcbi8vL1xuLy8vIEByZXR1cm4ge251bWJlcn1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIF9uZWF0LWNvbHVtbi1kZWZhdWx0KCRuZWF0LWdyaWQsIDQpXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcblxuQGZ1bmN0aW9uIF9uZWF0LWNvbHVtbi1kZWZhdWx0KCRncmlkLCAkY29sdW1ucykge1xuICBAaWYgJGNvbHVtbnMgPT0gbnVsbCB7XG4gICAgJF9ncmlkLWNvbHVtbnM6IF9yZXRyaWV2ZS1uZWF0LXNldHRpbmcoJGdyaWQsIGNvbHVtbnMpO1xuICAgIEByZXR1cm4gJF9ncmlkLWNvbHVtbnM7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJGNvbHVtbnM7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcbi8vLyBSZXR1cm4gYSBjYWx1bGF0ZWQgY29sdW1uIHdpZHRoIHRoYXQgY2FuIHRoZW4gYmUgcGFzc2VkIGluIHRvIGEgYGNhbGMoKWAuXG4vLy9cbi8vLyBAYXJndW1lbnQge21hcH0gJGdyaWRcbi8vL1xuLy8vIEBhcmd1bWVudCB7bnVtYmVyfSAkY29sdW1uc1xuLy8vXG4vLy8gQHJldHVybiB7c3RyaW5nfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgX25lYXQtY29sdW1uLXdpZHRoKCRuZWF0LWdyaWQsIDQpXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcblxuQGZ1bmN0aW9uIF9uZWF0LWNvbHVtbi13aWR0aCgkZ3JpZCwgJGNvbHVtbnMpIHtcbiAgJF9jb2x1bW4tcmF0aW86IF9uZWF0LWNvbHVtbi1yYXRpbygkZ3JpZCwgJGNvbHVtbnMpO1xuICAkX2d1dHRlcjogX3JldHJpZXZlLW5lYXQtc2V0dGluZygkZ3JpZCwgZ3V0dGVyKTtcblxuICBAaWYgJF9ndXR0ZXIgPT0gMCB7XG4gICAgQHJldHVybiB1bnF1b3RlKFwiI3twZXJjZW50YWdlKCRfY29sdW1uLXJhdGlvKX1cIik7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyLWFmZm9yZGFuY2U6ICRfZ3V0dGVyICsgKCRfZ3V0dGVyICogJF9jb2x1bW4tcmF0aW8pO1xuICAgIEByZXR1cm4gdW5xdW90ZShcIiN7cGVyY2VudGFnZSgkX2NvbHVtbi1yYXRpbyl9IC0gI3skX2d1dHRlci1hZmZvcmRhbmNlfVwiKTtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLy8vIERldGVybWluZSB0aGUgcmF0aW8gb2YgYCRjb2x1bW5zYCB0byB0aGUgdG90YWwgY29sdW1uIGNvdW50LlxuLy8vIElmIGAkY29sdW1uc2AgaXMgbW9yZSB0aGFuIG9uZSB2YWx1ZSwgdGhleSBhcmUgaGFuZGVkIHRvXG4vLy8gYF9uZWF0LXBhcnNlLWNvbHVtbnMoKWAgd2hpY2ggd2lsbCBkZXRpcm1pbmUgdGhlIHRvdGFsIGNvbHVtbnMgYW5kIHVzZSB0aGlzXG4vLy8gdmFsdWUgaW5zdGVhZCBvZiBgdG90YWwtY29sdW1uc2AuXG4vLy9cbi8vLyBAYXJndW1lbnQge21hcH0gJGdyaWRcbi8vL1xuLy8vIEBhcmd1bWVudCB7bnVtYmVyIHwgbGlzdH0gJGNvbHVtbnNcbi8vL1xuLy8vIEByZXR1cm4ge251bWJlcn1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIF9uZWF0LWNvbHVtbi1yYXRpbygkZ3JpZCwgMylcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuXG5AZnVuY3Rpb24gX25lYXQtY29sdW1uLXJhdGlvKCRncmlkLCAkY29sdW1ucykge1xuICBAaWYgbGVuZ3RoKCRjb2x1bW5zKSA+IDEge1xuICAgIEByZXR1cm4gbnRoKCRjb2x1bW5zLCAxKSAvIF9uZWF0LXBhcnNlLWNvbHVtbnMoJGNvbHVtbnMpO1xuICB9IEBlbHNlIGlmICRjb2x1bW5zIHtcbiAgICBAcmV0dXJuICRjb2x1bW5zIC8gX3JldHJpZXZlLW5lYXQtc2V0dGluZygkZ3JpZCwgY29sdW1ucyk7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcbi8vLyBSZXR1cm4gdGhlIGZsb2F0IGRpcmVjdGlvbiBvZiB0aGUgZ3JpZC5cbi8vL1xuLy8vIEBhcmd1bWVudCB7bWFwfSAkZ3JpZFxuLy8vXG4vLy8gQHJldHVybiB7c3RyaW5nfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgX25lYXQtZmxvYXQtZGlyZWN0aW9uKCRuZWF0LWdyaWQpXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcblxuQGZ1bmN0aW9uIF9uZWF0LWZsb2F0LWRpcmVjdGlvbigkZ3JpZCkge1xuICAkX2RpcmVjdGlvbjogX3JldHJpZXZlLW5lYXQtc2V0dGluZygkZ3JpZCwgZGlyZWN0aW9uKTtcbiAgJF9mbG9hdC1kaXJlY3Rpb246IG51bGw7XG4gIEBpZiAkX2RpcmVjdGlvbiA9PSBcImx0clwiIHtcbiAgICAgICRfZmxvYXQtZGlyZWN0aW9uOiBsZWZ0O1xuICB9IEBlbHNlIGlmICRfZGlyZWN0aW9uID09IFwicnRsXCIge1xuICAgICRfZmxvYXQtZGlyZWN0aW9uOiByaWdodDtcbiAgfVxuICBAcmV0dXJuICRfZmxvYXQtZGlyZWN0aW9uO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLy8vIEFwcGx5IE5lYXQncyBkZWZhdWx0IHByb3BlcnRpZXMgdG8gdW5kZWZpbmVkIHZhbHVlcyB3aXRoaW4gYSBtYXAuXG4vLy9cbi8vLyBAYXJndW1lbnQge21hcH0gJGdyaWRcbi8vL1xuLy8vIEByZXR1cm4ge21hcH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIF9yZXRyaWV2ZS1uZWF0LXNldHRpbmcoJG5lYXQtZ3JpZClcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuXG5AZnVuY3Rpb24gX25lYXQtbWVyZ2UtZGVmYXVsdHMoJGdyaWQpIHtcbiAgJF9tZXJnZWQtZ3JpZDogbWFwLW1lcmdlKChcbiAgICBjb2x1bW5zOiAxMixcbiAgICBndXR0ZXI6IDIwcHgsXG4gICAgbWVkaWE6IG51bGwsXG4gICAgY29sb3I6IHJnYmEoIzAwZDRmZiwgMC4yNSksXG4gICAgZGlyZWN0aW9uOiBsdHIsXG4gICksICRncmlkKTtcblxuICBAcmV0dXJuICRfbWVyZ2VkLWdyaWQ7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG4vLy8gUmV0dXJuIHRoZSBvcHBvaXRlIG9mIHRoZSBmbG9hdCBkaXJlY3Rpb24gb2YgdGhlIGdyaWQuXG4vLy9cbi8vLyBAYXJndW1lbnQge21hcH0gJGdyaWRcbi8vL1xuLy8vIEByZXR1cm4ge3N0cmluZ31cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIF9uZWF0LW9wcG9zaXRlLWRpcmVjdGlvbigkbmVhdC1ncmlkKVxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5cbkBmdW5jdGlvbiBfbmVhdC1vcHBvc2l0ZS1kaXJlY3Rpb24oJGdyaWQpIHtcbiAgJF9kaXJlY3Rpb246IF9yZXRyaWV2ZS1uZWF0LXNldHRpbmcoJGdyaWQsIGRpcmVjdGlvbik7XG4gICRfZmxvYXQtZGlyZWN0aW9uOiBudWxsO1xuICBAaWYgJF9kaXJlY3Rpb24gPT0gXCJsdHJcIiB7XG4gICAgICAkX2Zsb2F0LWRpcmVjdGlvbjogcmlnaHQ7XG4gIH0gQGVsc2UgaWYgJF9kaXJlY3Rpb24gPT0gXCJydGxcIiB7XG4gICAgJF9mbG9hdC1kaXJlY3Rpb246IGxlZnQ7XG4gIH1cbiAgQHJldHVybiAkX2Zsb2F0LWRpcmVjdGlvbjtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcbi8vLyBQYXJzZSBhIGNvbHVtbiBjb3VudCBsaWtlIGAzIG9mIDVgIGFuZCByZXR1ciB0aGUgdG90YWwgY29sb3VtbiBjb3VudC5cbi8vLyBUaGlzIGlzIHRvIGFsbG93IGEgc2hvcnRoYW5kIGZvciBjdXN0b20gZ3JpZHMgd2l0aG91dCB1c2luZyBhIHNldHRpbmdzIG1hcC5cbi8vL1xuLy8vXG4vLy8gQGFyZ3VtZW50IHtsaXN0fSAkc3BhblxuLy8vXG4vLy8gQHJldHVybiB7bnVtYmVyfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgX25lYXQtcGFyc2UtY29sdW1ucygzIG9mIDUpXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcblxuQGZ1bmN0aW9uIF9uZWF0LXBhcnNlLWNvbHVtbnMoJHNwYW4pIHtcbiAgQGlmIGxlbmd0aCgkc3BhbikgPT0gMyB7XG4gICAgJF90b3RhbC1jb2x1bW5zOiBudGgoJHNwYW4sIDMpO1xuICAgIEByZXR1cm4gJF90b3RhbC1jb2x1bW5zO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkc3BhbikgPT0gMiBvciBpZiBsZW5ndGgoJHNwYW4pID49IDMge1xuICAgIEBlcnJvciBcImAkY29sdW1uYCBzaG91bGQgY29udGFpbiAyIHZhbHVlcywgc2VwZXJhdGVkIGJ5IGFuIGBvZmBcIjtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLy8vIFBhcnNlIG1lZGlhIHR5cGVzLiBJZiB0aGUgcHJvcGVydHkgaXMgYSBzdHJpbmcgdGhlbiByZXR1cm4gaXQsIG90aGVyd2lzZVxuLy8vIGFzc3VtZSBzY3JlZW4gYW5kIG1pbi13aWR0aC5cbi8vL1xuLy8vIEBhcmd1bWVudCB7c3RyaW5nIHwgbnVtYmVyICh3aXRoIHVuaXQpfSAkbWVkaWFcbi8vL1xuLy8vIEByZXR1cm4ge251bWJlcn1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIF9uZWF0LXBhcnNlLW1lZGlhKCRncmlkLCAxMDAwcHgpXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcblxuQGZ1bmN0aW9uIF9uZWF0LXBhcnNlLW1lZGlhKCRtZWRpYSkge1xuICBAaWYgdHlwZS1vZigkbWVkaWEpID09IG51bWJlciB7XG4gICAgQHJldHVybiBcIm9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAjeyRtZWRpYX0pXCI7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkbWVkaWEpID09IHN0cmluZyB7XG4gICAgQHJldHVybiBcIiN7JG1lZGlhfVwiO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG4vLy8gQXBwZW5kIGF0dHJpYnV0ZXMgdG8gYSB0aGUgYCRfZ3JpZC12aXN1YWxgIHZhcmlhYmxlIGluIGBncmlkLXZpc3VhbGAgbWl4aW5cbi8vL1xuLy8vIEBhcmd1bWVudCB7bWFwfSAkZ3JpZFxuLy8vXG4vLy8gQGFyZ3VtZW50IHtudW1iZXIgKHVuaXRsZXNzKSB8IG51bGx9ICRjb2x1bW5zXG4vLy9cbi8vLyBAcmV0dXJuIHtudW1iZXJ9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICBfbmVhdC1jb2x1bW4tZGVmYXVsdCgkbmVhdC1ncmlkLCA0KVxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5cbkBmdW5jdGlvbiBfbmVhdC1hcHBlbmQtZ3JpZC12aXN1YWwoJGdyaWQtdmlzdWFsLWxpc3QsICRhdHRyaWJ1dGVzKSB7XG4gIEBlYWNoICRhdHRyaWJ1dGUgaW4gJGF0dHJpYnV0ZXMge1xuICAgICRncmlkLXZpc3VhbC1saXN0OiBhcHBlbmQoJGdyaWQtdmlzdWFsLWxpc3QsICRhdHRyaWJ1dGUsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJGdyaWQtdmlzdWFsLWxpc3Q7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG4vLy8gQ3JlYXRlcyBjb2xsYXBzZWQgZ3JpZCBvYmplY3QgdGhhdCBjb25zdW1lcyB0aGUgZ3V0dGVycyBvZiBpdHMgY29udGFpbmVyLFxuLy8vIGZvciB1c2UgaW4gbmVzdGVkIGxheW91dHMuXG4vLy9cbi8vLyBAZ3JvdXAgZmVhdHVyZXNcbi8vL1xuLy8vIEBuYW1lIEdyaWQgY29sbGFwc2Vcbi8vL1xuLy8vIEBhcmd1bWVudCB7bWFwfSAkZ3JpZCBbJG5lYXQtZ3JpZF1cbi8vLyAgIFRoZSBncmlkIHRvIGJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGNvbGxhcHNlZCBjb250YWluZXIuXG4vLy8gICBCeSBkZWZhdWx0LCB0aGUgZ2xvYmFsIGAkbmVhdC1ncmlkYCB3aWxsIGJlIHVzZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGdyaWQtY29sbGFwc2U7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3Ncbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZmxvYXQ6IGxlZnQ7XG4vLy8gICAgIG1hcmdpbi1sZWZ0OiAtMjBweDtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiAtMjBweDtcbi8vLyAgICAgd2lkdGg6IGNhbGMoMTAwJSArIDQwcHgpO1xuLy8vICAgfVxuXG5AbWl4aW4gZ3JpZC1jb2xsYXBzZSgkZ3JpZDogJG5lYXQtZ3JpZCkge1xuICAkX2dyaWQtZ3V0dGVyOiBfcmV0cmlldmUtbmVhdC1zZXR0aW5nKCRncmlkLCBndXR0ZXIpO1xuXG4gIEBpZiB1bml0KCRfZ3JpZC1ndXR0ZXIpID09IFwiJVwiIHtcbiAgICBAd2FybiBcImBncmlkLWNvbGxhcHNlYCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHBlcmNlbnRhZ2UgYmFzZWQgZ3V0dGVycy5cIjtcbiAgfVxuXG4gIG1hcmdpbi0je19uZWF0LWZsb2F0LWRpcmVjdGlvbigkZ3JpZCl9OiAtKCRfZ3JpZC1ndXR0ZXIpO1xuICBtYXJnaW4tI3tfbmVhdC1vcHBvc2l0ZS1kaXJlY3Rpb24oJGdyaWQpfTogLSgkX2dyaWQtZ3V0dGVyKTtcbiAgd2lkdGg6IGNhbGMoMTAwJSArICN7KCRfZ3JpZC1ndXR0ZXIgKiAyKX0pO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLy8vIENyZWF0ZXMgYSBncmlkIGNvbHVtbiBvZiByZXF1ZXN0ZWQgc2l6ZS5cbi8vL1xuLy8vIEBncm91cCBmZWF0dXJlc1xuLy8vXG4vLy8gQG5hbWUgR3JpZCBjb2x1bW5cbi8vL1xuLy8vIEBhcmd1bWVudCB7bnVtYmVyICh1bml0bGVzcyl9ICRjb2x1bW5zIFtudWxsXVxuLy8vICAgU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY29sdW1ucyBhbiBlbGVtZW50IHNob3VsZCBzcGFuIGJhc2VkIG9uIHRoZSB0b3RhbFxuLy8vICAgY29sdW1ucyBvZiB0aGUgZ3JpZC5cbi8vL1xuLy8vICAgVGhpcyBjYW4gYWxzbyBiZSBkZWZpbmVkIGluIGEgc2hvcnRoYW5kIHN5bnRheHQgd2hpY2ggYWxzbyBjb250YWlucyB0aGVcbi8vLyAgIHRvdGFsIGNvbHVtbiBjb3VudCBzdWNoIGFzIGAzIG9mIDVgLlxuLy8vXG4vLy8gQGFyZ3VtZW50IHttYXB9ICRncmlkIFskbmVhdC1ncmlkXVxuLy8vICAgVGhlIGdyaWQgdG8gYmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgY29sdW1uLlxuLy8vICAgQnkgZGVmYXVsdCwgdGhlIGdsb2JhbCBgJG5lYXQtZ3JpZGAgd2lsbCBiZSB1c2VkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBncmlkLWNvbHVtbigzKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICB3aWR0aDogY2FsYygyNSUgLSAyNXB4KTtcbi8vLyAgICAgZmxvYXQ6IGxlZnQ7XG4vLy8gICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuLy8vICAgfVxuXG5AbWl4aW4gZ3JpZC1jb2x1bW4oJGNvbHVtbnM6IG51bGwsICRncmlkOiAkbmVhdC1ncmlkKSB7XG4gICRjb2x1bW5zOiBfbmVhdC1jb2x1bW4tZGVmYXVsdCgkZ3JpZCwgJGNvbHVtbnMpO1xuICAkX2dyaWQtY29sdW1uczogX3JldHJpZXZlLW5lYXQtc2V0dGluZygkZ3JpZCwgY29sdW1ucyk7XG4gICRfZ3JpZC1ndXR0ZXI6IF9yZXRyaWV2ZS1uZWF0LXNldHRpbmcoJGdyaWQsIGd1dHRlcik7XG5cbiAgd2lkdGg6IGNhbGMoI3tfbmVhdC1jb2x1bW4td2lkdGgoJGdyaWQsICRjb2x1bW5zKX0pO1xuICBmbG9hdDogX25lYXQtZmxvYXQtZGlyZWN0aW9uKCRncmlkKTtcbiAgbWFyZ2luLSN7X25lYXQtZmxvYXQtZGlyZWN0aW9uKCRncmlkKX06ICRfZ3JpZC1ndXR0ZXI7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG4vLy8gQ3JlYXRlcyBhIGdyaWQgY29udGFpbmVyIHdpdGggY2xlYXJmaXguXG4vLy9cbi8vLyBAZ3JvdXAgZmVhdHVyZXNcbi8vL1xuLy8vIEBuYW1lIEdyaWQgY29udGFpbmVyXG4vLy9cbi8vLyBAYXJndW1lbnQge21hcH0gJGdyaWQgWyRuZWF0LWdyaWRdXG4vLy8gICBUaGUgZ3JpZCB0byBiZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSBjb250YWluZXIuXG4vLy8gICBCeSBkZWZhdWx0LCB0aGUgZ2xvYmFsIGAkbmVhdC1ncmlkYCB3aWxsIGJlIHVzZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGdyaWQtY29udGFpbmVyO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzXG4vLy8gICAuZWxlbWVudDo6YWZ0ZXIge1xuLy8vICAgICBjbGVhcjogYm90aDtcbi8vLyAgICAgY29udGVudDogXCJcIjtcbi8vLyAgICAgZGlzcGxheTogYmxvY2s7XG4vLy8gICB9XG5cbkBtaXhpbiBncmlkLWNvbnRhaW5lcigkZ3JpZDogJG5lYXQtZ3JpZCkge1xuICAmOjphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLy8vIGBncmlkLW1lZGlhYCBhbGxvd3MgeW91IHRvIGNoYW5nZSB5b3VyIGxheW91dCBiYXNlZCBvbiBhIG1lZGlhIHF1ZXJ5LlxuLy8vIEZvciBleGFtcGxlLCBhbiBvYmplY3QgY2FuIHNwYW4gMyBjb2x1bW5zIG9uIHNtYWxsIHNjcmVlbnMgYW5kIDYgY29sdW1uc1xuLy8vIG9uIGxhcmdlIHNjcmVlbnMuXG4vLy9cbi8vLyBZb3UgY2FuIHRha2UgdGhpcyBhIHN0ZXAgZnVydGhlciBhbmQgc2V0IGRpZmZlcmVudCBncmlkIGF0dHJpYnV0ZXMgbGlrZVxuLy8vIGd1dHRlciBzaXplIGFuZCB0b3RhbCBjb2x1bW4gY291bnQgZm9yIGVhY2ggbWVkaWEgcXVlcnkuIFNvLCBmb3IgZXhhbXBsZSxcbi8vLyB5b3UgY2FuIGhhdmUgYSBgMXJlbWAgZ3V0dGVyIG9uIHNtYWxsIHNjcmVlbnMsIGFuZCBhIGAycmVtYCBndXR0ZXIgb24gbGFyZ2Vcbi8vLyBzY3JlZW5zLlxuLy8vXG4vLy8gQGdyb3VwIGZlYXR1cmVzXG4vLy9cbi8vLyBAbmFtZSBHcmlkIG1lZGlhXG4vLy9cbi8vLyBAYXJndW1lbnQge21hcH0gJGdyaWRcbi8vLyAgIFRoZSBncmlkIHRvIGJlIHVzZWQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgYmxvY2suXG4vLy8gICBUaGlzIGdyaWQgc2hvdWxkIGluY2x1ZGUgdGhlIGBtZWRpYWAgcHJvcGVydHkgdG8gZGV0ZXJtaW5lIHRoZSBleHByZXNzaW9uXG4vLy8gICBmb3IgdGhlIG1lZGlhIHF1ZXJ5LlxuLy8vXG4vLy8gQGNvbnRlbnRcbi8vLyAgIEdyaWQgbWVkaWEgd2lsbCB0ZW1wb3JhcmlseSB0aGUgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgZ3JpZCB3aXRoIHRoZVxuLy8vICAgYXR0cmlidXRlcyBvZiB0aGUgY3VzdG9tIGdyaWQuIFRoaXMgY2hhbmdlIGlzIHNjb3BlZCB0byB3aXRoaW4gdGhlIG1peGluXG4vLy8gICBibG9jaywgYW5kIG9uY2UgdGhlIG1peGluIGhhcyBlbmRlZCB0aGUgZGVmYXVsdCBncmlkIHdpbGwgcmV2ZXJ0IHRvIGl0c1xuLy8vICAgb3JpZ2luYWwgc3RhdGUgYXMgZGVmaW5lZCBieSBgJG5lYXQtZ3JpZGAuIFRoaXMgYWxsb3dzIGZvciBkaWZmZXJlbnRcbi8vLyAgIGd1dHRlciB3aWR0aCBhbmQgY29sdW1uIGNvdW50IGJhc2VkIG9uIHNjcmVlbiBzaXplIG9yIG90aGVyIHByb3BlcnRpZXMuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAkY3VzdG9tLW5lYXQtZ3JpZDogKFxuLy8vICAgICBjb2x1bW5zOiAxMixcbi8vLyAgICAgZ3V0dGVyOiA1MHB4LFxuLy8vICAgICBtZWRpYTogMTAwMHB4LFxuLy8vICAgKTtcbi8vL1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBncmlkLWNvbHVtbigzKTtcbi8vL1xuLy8vICAgICBAaW5jbHVkZSBncmlkLW1lZGlhKCRjdXN0b20tbmVhdC1ncmlkKXtcbi8vLyAgICAgICBAaW5jbHVkZSBncmlkLWNvbHVtbig2KTtcbi8vLyAgICAgfVxuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIHdpZHRoOiBjYWxjKDI1JSAtIDI1cHgpO1xuLy8vICAgICBmbG9hdDogbGVmdDtcbi8vLyAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG4vLy8gICB9XG4vLy9cbi8vLyAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAwMHB4KSB7XG4vLy8gICAgIC5lbGVtZW50IHtcbi8vLyAgICAgICB3aWR0aDogY2FsYyg1MCUgLSA3NXB4KTtcbi8vLyAgICAgICBmbG9hdDogbGVmdDtcbi8vLyAgICAgICBtYXJnaW4tbGVmdDogNTBweDtcbi8vLyAgICAgfVxuLy8vICAgfVxuXG5AbWl4aW4gZ3JpZC1tZWRpYSgkZ3JpZCkge1xuICAkX21lZGlhOiBfcmV0cmlldmUtbmVhdC1zZXR0aW5nKCRncmlkLCBtZWRpYSk7XG4gICRfcXVlcnk6IF9uZWF0LXBhcnNlLW1lZGlhKCRfbWVkaWEpO1xuXG4gIEBtZWRpYSAjeyRfcXVlcnl9IHtcbiAgICAkX2RlZmF1bHQtbmVhdC1ncmlkOiAkbmVhdC1ncmlkO1xuICAgICRuZWF0LWdyaWQ6IG1hcC1tZXJnZSgkbmVhdC1ncmlkLCAkZ3JpZCkgIWdsb2JhbDtcbiAgICBAY29udGVudDtcbiAgICAkbmVhdC1ncmlkOiAkX2RlZmF1bHQtbmVhdC1ncmlkICFnbG9iYWw7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcbi8vLyBQdXNoIG9yIHB1bGwgYSBncmlkIGNvbHVtbiBieSBtYW5pcHVsYXRpbmcgaXRzIGxlZnQgbWFyZ2luLlxuLy8vXG4vLy8gQGdyb3VwIGZlYXR1cmVzXG4vLy9cbi8vLyBAbmFtZSBHcmlkIHB1c2hcbi8vL1xuLy8vIEBhcmd1bWVudCB7bnVtYmVyICh1bml0bGVzcyl9ICRwdXNoIFtmYWxzZV1cbi8vLyAgIFRoZSBudW1iZXIgb2YgY29sdW1ucyB0byBwdXNoIHRoZSBjb2x1bW4uXG4vLy9cbi8vLyBAYXJndW1lbnQge21hcH0gJGdyaWQgWyRuZWF0LWdyaWRdXG4vLy8gICBUaGUgZ3JpZCB0byBiZSB1c2VkIHRvIGRldGlybWluZSBob3cgZmFyIHRvIHB1c2ggdGhlIGNvbHVtbi5cbi8vLyAgIEJ5IGRlZmF1bHQsIHRoZSBnbG9iYWwgYCRuZWF0LWdyaWRgIHdpbGwgYmUgdXNlZC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgZ3JpZC1wdXNoKDMpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG1hcmdpbi1sZWZ0OiBjYWxjKDI1JSAtIDI1cHggKyA0MHB4KTtcbi8vLyAgIH1cblxuQG1peGluIGdyaWQtcHVzaCgkcHVzaDogZmFsc2UsICRncmlkOiAkbmVhdC1ncmlkKSB7XG4gICRfZ3JpZC1jb2x1bW5zOiBfcmV0cmlldmUtbmVhdC1zZXR0aW5nKCRncmlkLCBjb2x1bW5zKTtcbiAgJF9ncmlkLWd1dHRlcjogX3JldHJpZXZlLW5lYXQtc2V0dGluZygkZ3JpZCwgZ3V0dGVyKTtcblxuICBAaWYgJHB1c2gge1xuICAgICRfZ3V0dGVyLWFmZm9yZGFuY2U6ICRfZ3JpZC1ndXR0ZXIgKiAyO1xuICAgICRfbWFyZ2luLXZhbHVlOiBjYWxjKCN7X25lYXQtY29sdW1uLXdpZHRoKCRncmlkLCAkcHVzaCl9ICsgI3skX2d1dHRlci1hZmZvcmRhbmNlfSk7XG4gICAgbWFyZ2luLSN7X25lYXQtZmxvYXQtZGlyZWN0aW9uKCRncmlkKX06ICRfbWFyZ2luLXZhbHVlO1xuICB9IEBlbHNlIHtcbiAgICAkX21hcmdpbi12YWx1ZTogX3JldHJpZXZlLW5lYXQtc2V0dGluZygkZ3JpZCwgZ3V0dGVyKTtcbiAgICBtYXJnaW4tI3tfbmVhdC1mbG9hdC1kaXJlY3Rpb24oJGdyaWQpfTogJF9tYXJnaW4tdmFsdWU7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcbi8vLyBTaGlmdCBjb2x1bW5zIGFuZCByZW9yZGVyIHRoZW0gd2l0aGluIHRoZWlyIGNvbnRhaW5lciB1c2luZyByZWxhdGl2ZVxuLy8vIHBvc2l0aW9uaW5nLlxuLy8vXG4vLy8gQGdyb3VwIGZlYXR1cmVzXG4vLy9cbi8vLyBAbmFtZSBHcmlkIHNoaWZ0XG4vLy9cbi8vLyBAYXJndW1lbnQge251bWJlciAodW5pdGxlc3MpfSAkc2hpZnQgW2ZhbHNlXVxuLy8vICAgVGhlIG51bWJlciBvZiBjb2x1bW5zIHRvIHNoaWZ0IHRoZSBjb2x1bW4uXG4vLy9cbi8vLyBAYXJndW1lbnQge21hcH0gJGdyaWQgWyRuZWF0LWdyaWRdXG4vLy8gICBUaGUgZ3JpZCB0byBiZSB1c2VkIHRvIGRldGlybWluZSBob3cgZmFyIHRvIHNoaWZ0IHRoZSBjb2x1bW4uXG4vLy8gICBCeSBkZWZhdWx0LCB0aGUgZ2xvYmFsIGAkbmVhdC1ncmlkYCB3aWxsIGJlIHVzZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGdyaWQtc2hpZnQoMyk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3Ncbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgbGVmdDogY2FsYygyNSUgLSAyNXB4ICsgMjBweCk7XG4vLy8gICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbi8vLyAgIH1cblxuQG1peGluIGdyaWQtc2hpZnQoJHNoaWZ0OiBmYWxzZSwgJGdyaWQ6ICRuZWF0LWdyaWQpIHtcbiAgQGlmICRzaGlmdCB7XG4gICAgJF9zaGlmdC12YWx1ZTogY2FsYygje19uZWF0LWNvbHVtbi13aWR0aCgkZ3JpZCwgJHNoaWZ0KX0gKyAje19yZXRyaWV2ZS1uZWF0LXNldHRpbmcoJGdyaWQsIGd1dHRlcil9KTtcbiAgICAje19uZWF0LWZsb2F0LWRpcmVjdGlvbigkZ3JpZCl9OiAkX3NoaWZ0LXZhbHVlO1xuICB9IEBlbHNlIHtcbiAgICAje19uZWF0LWZsb2F0LWRpcmVjdGlvbigkZ3JpZCl9OiBhdXRvO1xuICB9XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLy8vIENyZWF0ZXMgYSBzZXJpZXMgb2YgZ3VpZGUgbGluZXMgdXNpbmcgdGhlIGBiYWNrZ3JvdW5kLWltYWdlYCBwcm9wZXJ0eSBvbiBhXG4vLy8gZ3JpZCBjb250YWluZXIgdG8gdmlzdWFsaXNlIHRoZSBjb2x1bW5zIGFuZCBndXR0ZXJzIG9mIHRoZSBncmlkLlxuLy8vXG4vLy8gQGdyb3VwIGZlYXR1cmVzXG4vLy9cbi8vLyBAbmFtZSBHcmlkIHZpc3VhbFxuLy8vXG4vLy8gQGFyZ3VtZW50IHtjb2xvcn0gJGNvbG9yXG4vLy8gICBUaGUgY29sb3Igb2YgdGhlIGd1aWRlIGxpbmVzIGNyZWF0ZWQuXG4vLy9cbi8vLyBAYXJndW1lbnQge21hcH0gJGdyaWQgWyRuZWF0LWdyaWRdXG4vLy8gICBUaGUgZ3JpZCB1c2VkIHRvIGRldGVybWluZSB0aGUgZ3VpZGVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGdyaWQtdmlzdWFsO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgg4oCmICkgO1xuLy8vICAgfVxuXG5AbWl4aW4gZ3JpZC12aXN1YWwoJGNvbG9yOiBudWxsLCAkZ3JpZDogJG5lYXQtZ3JpZCkge1xuICBAaWYgbm90ICRjb2xvciB7XG4gICAgJGNvbG9yOiBfcmV0cmlldmUtbmVhdC1zZXR0aW5nKCRncmlkLCBjb2xvcik7XG4gIH1cblxuICAkX2dyaWQtY29sdW1uczogX3JldHJpZXZlLW5lYXQtc2V0dGluZygkZ3JpZCwgY29sdW1ucyk7XG4gICRfZ3JpZC1ndXR0ZXI6IF9yZXRyaWV2ZS1uZWF0LXNldHRpbmcoJGdyaWQsIGd1dHRlcik7XG4gICRfZ3JpZC12aXN1YWwtb2JqZWN0OiAoKSAhZGVmYXVsdDtcbiAgJF9ncmlkLXZpc3VhbDpcbiAgICAkY29sb3IsXG4gICAgJGNvbG9yICRfZ3JpZC1ndXR0ZXIsXG4gICAgdHJhbnNwYXJlbnQgJF9ncmlkLWd1dHRlcixcbiAgO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRvICRfZ3JpZC1jb2x1bW5zIHtcbiAgICAkX2dyaWQtdmlzdWFsLWxvY2FsOiAoXG4gICAgICAjeyRpfTogXCIje19uZWF0LWNvbHVtbi13aWR0aCgkZ3JpZCwgJGkpfSArICN7JF9ncmlkLWd1dHRlcn1cIixcbiAgICApO1xuXG4gICAgJF9ncmlkLXZpc3VhbC1vYmplY3Q6IG1hcC1tZXJnZSgkX2dyaWQtdmlzdWFsLW9iamVjdCwgJF9ncmlkLXZpc3VhbC1sb2NhbCk7XG4gIH1cblxuICBAZWFjaCAkc3RvcCwgJGxvY2F0aW9uIGluICRfZ3JpZC12aXN1YWwtb2JqZWN0IHtcbiAgICAkX2dyaWQtdmlzdWFsLWxvb3AtbGlzdDpcbiAgICAgIHRyYW5zcGFyZW50IGNhbGMoI3skbG9jYXRpb259KSxcbiAgICAgICRjb2xvciBjYWxjKCN7JGxvY2F0aW9ufSksXG4gICAgICAkY29sb3IgY2FsYygjeyRsb2NhdGlvbn0gKyAjeyRfZ3JpZC1ndXR0ZXJ9KSxcbiAgICAgIHRyYW5zcGFyZW50IGNhbGMoI3skbG9jYXRpb259ICsgI3skX2dyaWQtZ3V0dGVyfSksXG4gICAgO1xuXG4gICAgJF9ncmlkLXZpc3VhbDogX25lYXQtYXBwZW5kLWdyaWQtdmlzdWFsKCRfZ3JpZC12aXN1YWwsICRfZ3JpZC12aXN1YWwtbG9vcC1saXN0KTtcbiAgfVxuXG4gICRfZ3JpZC12aXN1YWwtbG9vcC1saXN0OlxuICAgICAgdHJhbnNwYXJlbnQgY2FsYygxMDAlIC0gI3skX2dyaWQtZ3V0dGVyfSksXG4gICAgICAkY29sb3IgY2FsYygxMDAlIC0gI3skX2dyaWQtZ3V0dGVyfSksXG4gICAgICAkY29sb3IgY2FsYygxMDAlKSxcbiAgO1xuXG4gICRfZ3JpZC12aXN1YWw6IF9uZWF0LWFwcGVuZC1ncmlkLXZpc3VhbCgkX2dyaWQtdmlzdWFsLCAkX2dyaWQtdmlzdWFsLWxvb3AtbGlzdCk7XG5cbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkX2dyaWQtdmlzdWFsKTtcbn1cbiIsIkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1R5cG9uaW5lIE1vbm8gUmVndWxhcic7XG4gIHNyYzogdXJsKCdodHRwczovL2NvbnRlbnQuYXJkdWluby5jYy9mb250cy9XRi0wMjgwNzUtMDA5Nzk1LTAwMTcyMC5lb3QnKTtcbiAgc3JjOiB1cmwoJ2h0dHBzOi8vY29udGVudC5hcmR1aW5vLmNjL2ZvbnRzL1dGLTAyODA3NS0wMDk3OTUtMDAxNzIwLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksIHVybCgnaHR0cHM6Ly9jb250ZW50LmFyZHVpbm8uY2MvZm9udHMvV0YtMDI4MDc1LTAwOTc5NS0wMDE3MjAud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJ2h0dHBzOi8vY29udGVudC5hcmR1aW5vLmNjL2ZvbnRzL1dGLTAyODA3NS0wMDk3OTUtMDAxNzIwLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCdodHRwczovL2NvbnRlbnQuYXJkdWluby5jYy9mb250cy9XRi0wMjgwNzUtMDA5Nzk1LTAwMTcyMC5zdmcjVHlwb3RoZXF1ZV93ZWJmb250c19zZXJ2aWNlJykgZm9ybWF0KCdzdmcnKTtcbn1cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1R5cG9uaW5lIE1vbm8gTWVkaXVtJztcbiAgc3JjOiB1cmwoJ2h0dHBzOi8vY29udGVudC5hcmR1aW5vLmNjL2ZvbnRzL1dGLTAyODA3NS0wMDk3OTUtMDAxNzIyLmVvdCcpO1xuICBzcmM6IHVybCgnaHR0cHM6Ly9jb250ZW50LmFyZHVpbm8uY2MvZm9udHMvV0YtMDI4MDc1LTAwOTc5NS0wMDE3MjIuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSwgdXJsKCdodHRwczovL2NvbnRlbnQuYXJkdWluby5jYy9mb250cy9XRi0wMjgwNzUtMDA5Nzk1LTAwMTcyMi53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIHVybCgnaHR0cHM6Ly9jb250ZW50LmFyZHVpbm8uY2MvZm9udHMvV0YtMDI4MDc1LTAwOTc5NS0wMDE3MjIud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJ2h0dHBzOi8vY29udGVudC5hcmR1aW5vLmNjL2ZvbnRzL1dGLTAyODA3NS0wMDk3OTUtMDAxNzIyLnN2ZyNUeXBvdGhlcXVlX3dlYmZvbnRzX3NlcnZpY2UnKSBmb3JtYXQoJ3N2ZycpO1xufVxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnVHlwb25pbmUgU2FucyBMaWdodCc7XG4gIHNyYzogdXJsKCdodHRwczovL2NvbnRlbnQuYXJkdWluby5jYy9mb250cy9XRi0wMjgwNzUtMDA5Nzk1LTAwMTcyNi5lb3QnKTtcbiAgc3JjOiB1cmwoJ2h0dHBzOi8vY29udGVudC5hcmR1aW5vLmNjL2ZvbnRzL1dGLTAyODA3NS0wMDk3OTUtMDAxNzI2LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksIHVybCgnaHR0cHM6Ly9jb250ZW50LmFyZHVpbm8uY2MvZm9udHMvV0YtMDI4MDc1LTAwOTc5NS0wMDE3MjYud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJ2h0dHBzOi8vY29udGVudC5hcmR1aW5vLmNjL2ZvbnRzL1dGLTAyODA3NS0wMDk3OTUtMDAxNzI2LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCdodHRwczovL2NvbnRlbnQuYXJkdWluby5jYy9mb250cy9XRi0wMjgwNzUtMDA5Nzk1LTAwMTcyNi5zdmcjVHlwb3RoZXF1ZV93ZWJmb250c19zZXJ2aWNlJykgZm9ybWF0KCdzdmcnKTtcbn1cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1R5cG9uaW5lIFNhbnMgUmVndWxhcic7XG4gIHNyYzogdXJsKCdodHRwczovL2NvbnRlbnQuYXJkdWluby5jYy9mb250cy9XRi0wMjgwNzUtMDA5Nzk1LTAwMTcyOC5lb3QnKTtcbiAgc3JjOiB1cmwoJ2h0dHBzOi8vY29udGVudC5hcmR1aW5vLmNjL2ZvbnRzL1dGLTAyODA3NS0wMDk3OTUtMDAxNzI4LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksIHVybCgnaHR0cHM6Ly9jb250ZW50LmFyZHVpbm8uY2MvZm9udHMvV0YtMDI4MDc1LTAwOTc5NS0wMDE3Mjgud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJ2h0dHBzOi8vY29udGVudC5hcmR1aW5vLmNjL2ZvbnRzL1dGLTAyODA3NS0wMDk3OTUtMDAxNzI4LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCdodHRwczovL2NvbnRlbnQuYXJkdWluby5jYy9mb250cy9XRi0wMjgwNzUtMDA5Nzk1LTAwMTcyOC5zdmcjVHlwb3RoZXF1ZV93ZWJmb250c19zZXJ2aWNlJykgZm9ybWF0KCdzdmcnKTtcbn1cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1R5cG9uaW5lIFNhbnMgUmVndWxhciBJdGFsaWMnO1xuICBzcmM6IHVybCgnaHR0cHM6Ly9jb250ZW50LmFyZHVpbm8uY2MvZm9udHMvV0YtMDI4MDc1LTAwOTc5NS0wMDE3MjkuZW90Jyk7XG4gIHNyYzogdXJsKCdodHRwczovL2NvbnRlbnQuYXJkdWluby5jYy9mb250cy9XRi0wMjgwNzUtMDA5Nzk1LTAwMTcyOS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLCB1cmwoJ2h0dHBzOi8vY29udGVudC5hcmR1aW5vLmNjL2ZvbnRzL1dGLTAyODA3NS0wMDk3OTUtMDAxNzI5LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCdodHRwczovL2NvbnRlbnQuYXJkdWluby5jYy9mb250cy9XRi0wMjgwNzUtMDA5Nzk1LTAwMTcyOS53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIHVybCgnaHR0cHM6Ly9jb250ZW50LmFyZHVpbm8uY2MvZm9udHMvV0YtMDI4MDc1LTAwOTc5NS0wMDE3Mjkuc3ZnI1R5cG90aGVxdWVfd2ViZm9udHNfc2VydmljZScpIGZvcm1hdCgnc3ZnJyk7XG59XG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdUeXBvbmluZSBTYW5zIE1lZGl1bSc7XG4gIHNyYzogdXJsKCdodHRwczovL2NvbnRlbnQuYXJkdWluby5jYy9mb250cy9XRi0wMjgwNzUtMDA5Nzk1LTAwMTczMC5lb3QnKTtcbiAgc3JjOiB1cmwoJ2h0dHBzOi8vY29udGVudC5hcmR1aW5vLmNjL2ZvbnRzL1dGLTAyODA3NS0wMDk3OTUtMDAxNzMwLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksIHVybCgnaHR0cHM6Ly9jb250ZW50LmFyZHVpbm8uY2MvZm9udHMvV0YtMDI4MDc1LTAwOTc5NS0wMDE3MzAud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJ2h0dHBzOi8vY29udGVudC5hcmR1aW5vLmNjL2ZvbnRzL1dGLTAyODA3NS0wMDk3OTUtMDAxNzMwLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCdodHRwczovL2NvbnRlbnQuYXJkdWluby5jYy9mb250cy9XRi0wMjgwNzUtMDA5Nzk1LTAwMTczMC5zdmcjVHlwb3RoZXF1ZV93ZWJmb250c19zZXJ2aWNlJykgZm9ybWF0KCdzdmcnKTtcbn1cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1R5cG9uaW5lIFNhbnMgQm9sZCc7XG4gIHNyYzogdXJsKCdodHRwczovL2NvbnRlbnQuYXJkdWluby5jYy9mb250cy9XRi0wMjgwNzUtMDA5Nzk1LTAwMTczMi5lb3QnKTtcbiAgc3JjOiB1cmwoJ2h0dHBzOi8vY29udGVudC5hcmR1aW5vLmNjL2ZvbnRzL1dGLTAyODA3NS0wMDk3OTUtMDAxNzMyLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksIHVybCgnaHR0cHM6Ly9jb250ZW50LmFyZHVpbm8uY2MvZm9udHMvV0YtMDI4MDc1LTAwOTc5NS0wMDE3MzIud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJ2h0dHBzOi8vY29udGVudC5hcmR1aW5vLmNjL2ZvbnRzL1dGLTAyODA3NS0wMDk3OTUtMDAxNzMyLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCdodHRwczovL2NvbnRlbnQuYXJkdWluby5jYy9mb250cy9XRi0wMjgwNzUtMDA5Nzk1LTAwMTczMi5zdmcjVHlwb3RoZXF1ZV93ZWJmb250c19zZXJ2aWNlJykgZm9ybWF0KCdzdmcnKTtcbn1cblxuJHR5cG9uaW5lLW1vbm8tcmVndWxhcjogJ1R5cG9uaW5lIE1vbm8gUmVndWxhcicsICdMdWNpZGEgR3JhbmRlJywgTHVjaWRhLCBWZXJkYW5hLCBzYW5zLXNlcmlmO1xuJHR5cG9uaW5lLW1vbm8tbWVkaXVtOiAnVHlwb25pbmUgTW9ubyBNZWRpdW0nLCAnTHVjaWRhIEdyYW5kZScsIEx1Y2lkYSwgVmVyZGFuYSwgc2Fucy1zZXJpZjtcbiR0eXBvbmluZS1zYW5zLWxpZ2h0OiAnVHlwb25pbmUgU2FucyBMaWdodCcsICdMdWNpZGEgR3JhbmRlJywgTHVjaWRhLCBWZXJkYW5hLCBzYW5zLXNlcmlmO1xuJHR5cG9uaW5lLXNhbnMtcmVndWxhcjogJ1R5cG9uaW5lIFNhbnMgUmVndWxhcicsICdMdWNpZGEgR3JhbmRlJywgTHVjaWRhLCBWZXJkYW5hLCBzYW5zLXNlcmlmO1xuJHR5cG9uaW5lLXNhbnMtcmVndWxhci1pdGFsaWM6ICdUeXBvbmluZSBTYW5zIFJlZ3VsYXIgSXRhbGljJywgJ0x1Y2lkYSBHcmFuZGUnLCBMdWNpZGEsIFZlcmRhbmEsIHNhbnMtc2VyaWY7XG4kdHlwb25pbmUtc2Fucy1tZWRpdW06ICdUeXBvbmluZSBTYW5zIE1lZGl1bScsICdMdWNpZGEgR3JhbmRlJywgTHVjaWRhLCBWZXJkYW5hLCBzYW5zLXNlcmlmO1xuJHR5cG9uaW5lLXNhbnMtYm9sZDogJ1R5cG9uaW5lIFNhbnMgQm9sZCcsICdMdWNpZGEgR3JhbmRlJywgTHVjaWRhLCBWZXJkYW5hLCBzYW5zLXNlcmlmO1xuIiwiQG1peGluIGJyZWFrcG9pbnQoJHBvaW50LCAkdHlwZTogbWF4KSB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kICgjeyR0eXBlfS13aWR0aDogI3skcG9pbnR9cHgpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1ib3RoKCRwb2ludC1taW4sICRwb2ludC1tYXgpIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogI3skcG9pbnQtbWF4fXB4KSBhbmQgKG1pbi13aWR0aDogI3skcG9pbnQtbWlufXB4KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIkBtaXhpbiBiYXNlLXRleHQge1xuICBjb2xvcjogJGR1c3Q7XG4gIGxldHRlci1zcGFjaW5nOiAuNXB4O1xufVxuXG5AbWl4aW4gYmFzZS10ZXh0LXVwcGVyY2FzZSB7XG4gIGNvbG9yOiAkZHVzdDtcbiAgbGV0dGVyLXNwYWNpbmc6IC43NXB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG5AbWl4aW4gdGV4dC1saW5rIHtcbiAgY29sb3I6ICR0ZWFsMjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IGNvbG9yIC4ycyBlYXNlLW91dDtcblxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogJHRlYWwwO1xuICB9XG59XG4iLCJAbWl4aW4gYXJkdS1idXR0b24gKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yMTtcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItcmFkaXVzOiAycHggMnB4IDAgMDtcbiAgYm94LXNoYWRvdzogMCA0cHggJGNvbG9yMjtcbiAgY29sb3I6ICR3aGl0ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LWZhbWlseTogJHR5cG9uaW5lLXNhbnMtcmVndWxhcjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsZXR0ZXItc3BhY2luZzogMS4yOHB4O1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICBvdXRsaW5lOiAwO1xuICBwYWRkaW5nOiA5cHggMTBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIHRvcDogMDtcbiAgdHJhbnNpdGlvbjogdG9wIC4xcyBlYXNlLW91dCwgYm94LXNoYWRvdyAuMXMgZWFzZS1vdXQ7XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4ICRjb2xvcjI7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICB0b3A6IDJweDtcbiAgfVxuXG4gICY6YWN0aXZlIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIHRvcDogNnB4O1xuICB9XG59XG5cbkBtaXhpbiBpbmFjdGl2ZS1idXR0b24gKCRjb2xvcjEpIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICBvcGFjaXR5OiAuNzU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMsXG4gICY6YWN0aXZlIHtcbiAgICBib3gtc2hhZG93OiAwIDZweCAkY29sb3IxO1xuICAgIHRvcDogMDtcbiAgfVxufVxuIiwiQG1peGluIGFyZHUtY2hlY2tib3gge1xuXG4gICY6Y2hlY2tlZCArIGxhYmVsIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2h0dHBzOi8vY29udGVudC5hcmR1aW5vLmNjL3dlYnNpdGUvQ2hlY2tib3hfY2hlY2tlZC5zdmcnKTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgdG9wO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICtsYWJlbCB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdodHRwczovL2NvbnRlbnQuYXJkdWluby5jYy93ZWJzaXRlL0NoZWNrYm94X3VuY2hlY2tlZC5zdmcnKTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgYm90dG9tO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIHBhZGRpbmc6IDEycHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxufVxuIiwiQG1peGluIGlucHV0LWZpZWxkIHtcbiAgQGluY2x1ZGUgYmFzZS10ZXh0O1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlNWUzZTM7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGZvbnQtZmFtaWx5OiAkdHlwb25pbmUtc2Fucy1yZWd1bGFyO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gIG1hcmdpbi1ib3R0b206IDEycHg7XG4gIHBhZGRpbmc6IDdweCAxNHB4O1xuXG4gICY6Zm9jdXMge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRzbW9rZTtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBAaW5jbHVkZSBiYXNlLXRleHQtdXBwZXJjYXNlO1xuICAgIGNvbG9yOiAkZHVzdDtcbiAgfVxuXG4gICY6LXdlYmtpdC1hdXRvZmlsbCxcbiAgJjotd2Via2l0LWF1dG9maWxsOmhvdmVyLFxuICAmOi13ZWJraXQtYXV0b2ZpbGw6Zm9jdXMge1xuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiAkZHVzdDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkc21va2U7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMTAwMHB4ICR3aGl0ZSBpbnNldDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDUwMDBzIGVhc2UtaW4tb3V0IDBzO1xuICB9XG59XG4iLCJAbWl4aW4gZXJyb3Itbm90aWZpY2F0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJG5vdGlmeWVycm9yO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGNvbG9yOiAkd2hpdGU7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgbWFyZ2luLWJvdHRvbTogMjJweDtcbiAgcGFkZGluZzogMjBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG5AbWl4aW4gc3VjY2Vzcy1ub3RpZmljYXRpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkbm90aWZ5c3VjY2VzcztcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBjb2xvcjogJHdoaXRlO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxldHRlci1zcGFjaW5nOiAxLjVweDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIG1hcmdpbi1ib3R0b206IDIycHg7XG4gIHBhZGRpbmc6IDIwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cbiIsIkBtaXhpbiBhcmR1LXJhZGlvIHtcbiAgJjpjaGVja2VkICsgbGFiZWwge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkdGVhbDI7XG4gICAgfVxuICB9XG5cbiAgK2xhYmVsIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkc2lsdmVyO1xuICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAyMnB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMjJweDtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGhlaWdodDogMTJweDtcbiAgICAgIGxlZnQ6IDRweDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNHB4O1xuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAkYW5pbWF0aW9uLXRpbWluZy1xdWljayBsaW5lYXI7XG4gICAgICB3aWR0aDogMTJweDtcbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiBzcGlubmVyKCRjb2xvciwgJGJhY2tncm91bmQsICRzaXplLCAkYm9yZGVyOiAkc2l6ZSAvIDYsICRkdXJhdGlvbjogMnMpIHtcbiAgQGluY2x1ZGUgcG9zaXRpb24ocmVsYXRpdmUpO1xuICBAaW5jbHVkZSBzaXplKCRzaXplIC0gMiAqICRib3JkZXIpO1xuICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAkc2l6ZSAvIDEyO1xuICBjb2xvcjogJGJhY2tncm91bmQ7XG4gIGZvbnQtc2l6ZTogNnB4O1xuICBtYXJnaW46ICRib3JkZXI7XG4gIHRleHQtaW5kZW50OiAtOTk5OTllbTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xuICB6LWluZGV4OiBhdXRvO1xuXG4gICYsXG4gICY6OmJlZm9yZSxcbiAgJjo6YWZ0ZXIge1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgfVxuXG4gICY6OmJlZm9yZSxcbiAgJjo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIHBvc2l0aW9uKGFic29sdXRlKTtcbiAgICBAaW5jbHVkZSBzaXplKCRzaXplIC8gMiAkc2l6ZSk7XG4gICAgYW5pbWF0aW9uOiBzcGlubmVyLWFuaW1hdGlvbiAkZHVyYXRpb24gaW5maW5pdGUgZWFzZTtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgY29udGVudDogJyc7XG4gICAgdG9wOiAtJGJvcmRlcjtcbiAgICB6LWluZGV4OiAtMTtcbiAgfVxuXG4gICY6OmJlZm9yZSB7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAkZHVyYXRpb24gKiAuNzU7XG4gICAgYm9yZGVyLXJhZGl1czogJHNpemUgMCAwICRzaXplO1xuICAgIGxlZnQ6IC0kYm9yZGVyO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46ICgkc2l6ZSAvIDIpICgkc2l6ZSAvIDIpO1xuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIGJvcmRlci1yYWRpdXM6IDAgJHNpemUgJHNpemUgMDtcbiAgICBsZWZ0OiAkc2l6ZSAvIDIgLSAkYm9yZGVyO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgKCRzaXplIC8gMik7XG4gIH1cblxuXG4gIEBrZXlmcmFtZXMgc3Bpbm5lci1hbmltYXRpb24ge1xuICAgIDAlIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiB0b2dnbGUoJHdpZHRoOiA0MnB4LCAkbGFiZWx0cnVlOiAnJywgJGxhYmVsZmFsc2U6ICcnKSB7XG4gICRoZWlndGg6IDI0cHg7XG4gICRtYXJnaW46IDZweDtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogJGhlaWd0aDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogJHdpZHRoO1xuXG4gIGlucHV0IHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgJjpjaGVja2VkICsgLnNsaWRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGVhbDI7XG5cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIHJpZ2h0OiAyMXB4O1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMThweCk7XG4gICAgICB9XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgY29udGVudDogJGxhYmVsdHJ1ZTtcbiAgICAgICAgbGVmdDogJG1hcmdpbjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmZvY3VzICsgLnNsaWRlciB7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMXB4ICR0ZWFsMjtcbiAgICB9XG5cbiAgICAmOm5vdCg6Y2hlY2tlZCkgKyAuc2xpZGVyIHtcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGxlZnQ6ICRtYXJnaW4gLyAyO1xuICAgICAgfVxuXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIHJpZ2h0OiAkbWFyZ2luO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5zbGlkZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRzaWx2ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogJG1hcmdpbiAvIDI7XG4gICAgYm90dG9tOiAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBsZWZ0OiAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMDtcbiAgICB0b3A6IDA7XG4gICAgdHJhbnNpdGlvbjogLjRzO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgIGJvdHRvbTogJG1hcmdpbiAvIDI7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGhlaWdodDogJGhlaWd0aCAtICRtYXJnaW47XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0cmFuc2l0aW9uOiAuNHM7XG4gICAgICB3aWR0aDogJGhlaWd0aCAtICRtYXJnaW47XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29sb3I6ICRqZXQ7XG4gICAgICBjb250ZW50OiAkbGFiZWxmYWxzZTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgZm9udC1mYW1pbHk6ICR0eXBvbmluZS1zYW5zLXJlZ3VsYXI7XG4gICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICBsaW5lLWhlaWdodDogJGhlaWd0aDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB0b3A6IDA7XG4gICAgfVxuICB9XG59XG4iLCJib2R5IHtcbiAgY29sb3I6ICRkdXN0O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmb250LWZhbWlseTogJHR5cG9uaW5lLXNhbnMtbGlnaHQ7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgbGV0dGVyLXNwYWNpbmc6IC43cHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KDYwMCkge1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgfVxufVxuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC1mYW1pbHk6ICR0eXBvbmluZS1zYW5zLXJlZ3VsYXI7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbmJvZHksXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYsXG51bCxcbm9sLFxubGksXG5wIHtcbiAgbWFyZ2luOiAwO1xufVxuXG51bCxcbmxpIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nOiAwO1xufVxuXG5hIHtcbiAgY29sb3I6ICR0ZWFsMTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0cmFuc2l0aW9uOiBjb2xvciAuM3M7XG5cbiAgJjpob3ZlcixcbiAgJjphY3RpdmUge1xuICAgIGNvbG9yOiAkdGVhbDU7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgY29sb3I6ICR0ZWFsMTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG59XG5cbmltZyB7XG4gIGhlaWdodDogYXV0bztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLy8gUmVtb3ZlIGRlZmF1bHQgY2xlYXIgaWNvbiBvbiBJRSBicm93c2VyXG5pbnB1dFt0eXBlPXRleHRdOjotbXMtY2xlYXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4jcGFnZSB7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IHN1YnBpeGVsLWFudGlhbGlhc2VkO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWJhc2lzOiBhdXRvO1xuICBmbGV4LWdyb3c6IDE7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBtYXJnaW46IDQwcHggYXV0byAyMHB4O1xuICBtYXgtd2lkdGg6IDEyNjhweDtcbiAgcGFkZGluZzogMCA0MHB4O1xuICB3aWR0aDogMTAwJTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KDEwMjQpIHtcbiAgICBtYXgtd2lkdGg6IDgyMHB4O1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCg0ODApIHtcbiAgICBwYWRkaW5nOiAwIDIwcHg7XG4gIH1cbn1cblxuI2NvbnRlbnQge1xuICBvcmRlcjogMjtcbiAgd2lkdGg6IGNhbGMoNzUlIC0gNDBweCk7XG5cbiAgJi5zaW5nbGUtcG9zdCB7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgbWF4LXdpZHRoOiA4NTBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuXG4jc2lkZWJhciB7XG4gIG9yZGVyOiAxO1xuICB3aWR0aDogY2FsYygyNSUgLSA0MHB4KTtcbn1cblxuI2NvbnRlbnQsXG4jc2lkZWJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgxMDI0KSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cbiIsIi5idG4tcHJpbWFyeSB7XG4gIEBpbmNsdWRlIGFyZHUtYnV0dG9uKCR0ZWFsMiwgJHRlYWw1KTtcblxuICAmOmhvdmVyLFxuICAmOmFjdGl2ZSxcbiAgJjpmb2N1cyB7XG4gICAgY29sb3I6ICR3aGl0ZTtcbiAgfVxufVxuXG4vLyBTRUxFQ1RcbnNlbGVjdCxcbi5zZWxlY3QtYnRuIHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNsb3VkcztcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBjb2xvcjogJGR1c3Q7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1mYW1pbHk6ICR0eXBvbmluZS1zYW5zLWxpZ2h0O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGhlaWdodDogNDBweDtcbiAgbGV0dGVyLXNwYWNpbmc6IC43cHg7XG4gIHBhZGRpbmc6IDAgMzJweCAwIDE0cHg7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzLCBjb2xvciAuM3M7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoMTAyNCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRmb2c7XG4gICAgY29sb3I6ICRqZXQ7XG4gIH1cblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG59XG5cbi53cmFwcGVyLXNlbGVjdCxcbi5zZWxlY3QtYnRuIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICY6OmFmdGVyIHtcbiAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1yaWdodDogNXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci10b3A6IDVweCBzb2xpZCAjNDM0ZjU0O1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGhlaWdodDogMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDEycHg7XG4gICAgdG9wOiAxN3B4O1xuICAgIHdpZHRoOiAwO1xuICB9XG59XG5cbi5jdXN0b20tc2VsZWN0IHtcbiAgZGlzcGxheTogbm9uZTtcblxuICAuZHJvcGRvd24tbWVudSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNsb3VkcztcbiAgICBtYXgtaGVpZ2h0OiAyNzJweDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgxMDI0KSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgfVxuXG4gICAgLmNoaWxkcmVuIHtcblxuICAgICAgbGkge1xuXG4gICAgICAgIGEge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDI4cHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICBtYXJnaW46IDA7XG5cbiAgICAgIGEge1xuICAgICAgICBjb2xvcjogJGR1c3Q7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcGFkZGluZzogOHB4IDE0cHg7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzO1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9nO1xuICAgICAgICAgIGNvbG9yOiAkZHVzdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWVkaWEgKHBvaW50ZXI6IGZpbmUpIHtcblxuICAubmF0aXZlLXNlbGVjdCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5jdXN0b20tc2VsZWN0IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG5ALW1vei1kb2N1bWVudCB1cmwtcHJlZml4KCkge1xuXG4gIC5uYXRpdmUtc2VsZWN0IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLmN1c3RvbS1zZWxlY3Qge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgxMDI0KSB7XG5cbiAgICAubmF0aXZlLXNlbGVjdCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAuY3VzdG9tLXNlbGVjdCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuXG5AbWVkaWEgYWxsIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpLCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkge1xuXG4gIC5uYXRpdmUtc2VsZWN0IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLmN1c3RvbS1zZWxlY3Qge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgxMDI0KSB7XG5cbiAgICAubmF0aXZlLXNlbGVjdCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAuY3VzdG9tLXNlbGVjdCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuXG4vLyBFTkQgU0VMRUNUXG5cbi5uYXZpZ2F0aW9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbjogMCAwIDMwcHg7XG5cbiAgLmFsaWdubGVmdCB7XG5cbiAgICBhIHtcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkdGVhbDE7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkdGVhbDE7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTBweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRvcDogLTJweDtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcbiAgICAgICAgd2lkdGg6IDEwcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmFsaWducmlnaHQge1xuXG4gICAgYSB7XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJHRlYWwxO1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHRlYWwxO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDEwcHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRvcDogLTJweDtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgICAgICB3aWR0aDogMTBweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLnRhZy1idG4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRicm9uemU7XG4gIGJveC1zaGFkb3c6IDEwcHggMCAwICRsaWdodGJyb256ZSwgLTEwcHggMCAwICRsaWdodGJyb256ZTtcbiAgY29sb3I6ICR3aGl0ZTtcbiAgZGlzcGxheTogaW5saW5lO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxldHRlci1zcGFjaW5nOiAxLjI4cHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG4gIHBhZGRpbmc6IDRweCAwO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4zcywgYm94LXNoYWRvdyAuM3M7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNhcnJvdDtcbiAgICBib3gtc2hhZG93OiAxMHB4IDAgMCAkY2Fycm90LCAtMTBweCAwIDAgJGNhcnJvdDtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoMTAyNCkge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcGFkZGluZzogOHB4IDE0cHg7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbi8vIEJSRUFEQ1JVTUJTXG4uYnJlYWRjcnVtYnMge1xuICBtYXJnaW46IC0yMHB4IDAgNDBweDtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgxMDI0KSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgfVxuXG4gIHVsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgfVxuXG4gIGxpIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgc3BhbiB7XG4gICAgICBtYXJnaW46IDAgN3B4IDAgNHB4O1xuICAgIH1cbiAgfVxuXG4gIHN0cm9uZyB7XG4gICAgZm9udC1mYW1pbHk6ICR0eXBvbmluZS1zYW5zLWxpZ2h0O1xuICB9XG5cbiAgLmJyLXBvc3Qge1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgfVxuXG4gIGEge1xuICAgIGNvbG9yOiAkZHVzdDtcblxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICR0ZWFsMjtcbiAgICB9XG4gIH1cbn1cbi8vIEVORCBCUkVBRENSVU1CU1xuXG4iLCIucGFnZXRpdGxlIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjE4LCAyMjcsIDIyNywgMC43KTtcbiAgY29sb3I6ICRnb2xkO1xuICBmb250LXNpemU6IDI2cHg7XG4gIGZvbnQtd2VpZ2h0OiAyMDA7XG4gIGxldHRlci1zcGFjaW5nOiAxLjI4cHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG4gIG1hcmdpbjogMCAwIDYwcHg7XG4gIHBhZGRpbmc6IDAgMCAyMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgLmNhdGVnb3J5IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE1OCwgMTMyLCAxMDksIC42KTtcbiAgICBwYWRkaW5nOiAwIDVweDtcbiAgfVxufVxuXG4ubGF5b3V0LTItY29sdW1uLFxuLmFpcy1oaXRzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi5haXMtaGl0cy0taXRlbSxcbi5sYXlvdXQtMi1jb2x1bW4gLnBvc3Qge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2xvdWRzO1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbWFyZ2luOiAwIDAgMjBweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuM3M7XG4gIHdpZHRoOiBjYWxjKDUwJSAtIDEwcHgpO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoNzQwKSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICBhcnRpY2xlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgaDIge1xuICAgIGZvbnQtZmFtaWx5OiAkdHlwb25pbmUtc2Fucy1saWdodDtcbiAgICBmb250LXNpemU6IDIycHg7XG4gICAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgIG1hcmdpbjogMCAwIDIwcHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAuM3MgMDtcbiAgfVxuXG4gIGVtLFxuICBhIGVtIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBwYWRkaW5nOiAwIDNweDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4zcztcbiAgfVxuXG4gIC5hdXRob3IsXG4gIC5jYXRlZ29yeSxcbiAgLmV4Y2VycHQge1xuICAgIGNvbG9yOiAkZHVzdDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAuM3MgMDtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZWFsMDtcblxuICAgIGgyIHtcbiAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgfVxuXG4gICAgZW0sXG4gICAgYSBlbSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyLCAxNjEsIDE2NiwgMC40NSk7XG4gICAgfVxuXG4gICAgLmF1dGhvcixcbiAgICAuY2F0ZWdvcnksXG4gICAgLmV4Y2VycHQge1xuICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICB9XG5cbiAgICAuYWlzLWhpdHMtLXRodW1ibmFpbCxcbiAgICAuY2FyZC1jb3Zlci1pbWFnZSB7XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuYWlzLWhpdHMtLWNvbnRlbnQsXG4gIC5jYXJkLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1iYXNpczogYXV0bztcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBhZGRpbmc6IDI0cHggMzBweDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoNDgwKSB7XG4gICAgICBwYWRkaW5nOiAyMHB4O1xuICAgIH1cblxuICAgIC5leGNlcnB0IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgbWFyZ2luLWJvdHRvbTogNDVweDtcbiAgICB9XG5cbiAgICAuYXV0aG9yLFxuICAgIC5jYXRlZ29yeSB7XG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICBsZXR0ZXItc3BhY2luZzogMS4yOHB4O1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB9XG4gIH1cblxuICAuYWlzLWhpdHMtLXRodW1ibmFpbCxcbiAgLmNhcmQtY292ZXItaW1hZ2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIGltZyB7XG4gICAgICBkaXNwbGF5OiBpbmhlcml0O1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgLjE1KTtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgbGVmdDogMDtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMDtcbiAgICAgIHRvcDogMDtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjNzO1xuICAgIH1cblxuICAgIGEge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gIH1cbn1cblxuLmxheW91dC0yLWNvbHVtbiB7XG5cbiAgLmNhcmQtY292ZXItaW1hZ2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICAuY292ZXItaW1hZ2Uge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGhlaWdodDogMzV2aDtcbiAgICBtYXgtaGVpZ2h0OiAzMjVweDtcbiAgICBtaW4taGVpZ2h0OiAyMjBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC5wb3N0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAuY2FyZC1jb250ZW50IHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiA0cHg7XG5cbiAgICAgIC5leGNlcnB0IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gICAgICAuYXV0aG9yLFxuICAgICAgLmNhdGVnb3J5LFxuICAgICAgLmV4Y2VycHQge1xuICAgICAgICBjb2xvcjogJGR1c3Q7XG4gICAgICB9XG5cbiAgICAgIGgyIHtcbiAgICAgICAgY29sb3I6ICR0ZWFsMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC5ibG9nLWNhcmQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjbG91ZHM7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZmxleC1ncm93OiAxO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGVhbDA7XG5cbiAgICAgIC5leGNlcnB0LFxuICAgICAgaDIge1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgfVxuXG4gICAgICAmICsgLmluZm8td3JhcHBlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZWFsMDtcblxuICAgICAgICAuYm9hcmQge1xuICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG5cbiAgICAgICAgICBhIHtcbiAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwcztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuaW5mby13cmFwcGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2xvdWRzO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBsZXR0ZXItc3BhY2luZzogMS4yOHB4O1xuICAgIHBhZGRpbmc6IDI0cHggMzBweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzO1xuXG4gICAgLmJvYXJkIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAgIC5sYWJlbCB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNnB4O1xuICAgICAgfVxuXG4gICAgICBhIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gICAgICB9ICBcbiAgICB9XG4gIH1cbn1cbiIsIi5wb3N0IHtcbiAgbWFyZ2luOiAwIDAgMTBweDtcbiAgb3JkZXI6IDE7XG5cbiAgdWwge1xuICAgIHBhZGRpbmctYm90dG9tOiAyMHB4O1xuICAgIHBhZGRpbmctbGVmdDogMjBweDtcblxuICAgIGxpIHtcbiAgICAgIGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcbiAgICB9XG4gIH1cblxuICAmOjphZnRlciB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjE4LCAyMjcsIDIyNywgMC43KTtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luOiAydmggMCA2dmg7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICBpZnJhbWUge1xuICAgIGhlaWdodDogNDV2aDtcbiAgICBtYXJnaW46IDIwcHggMCAzMHB4O1xuICAgIG1pbi1oZWlnaHQ6IDUwMHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCg2NDApIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgfVxuICB9XG5cbiAgLmFkZHRoaXNfdG9vbGJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBtYXJnaW46IDA7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KDcwMCkge1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIGZsb2F0OiBub25lO1xuICAgICAgbWFyZ2luOiA1MHB4IDAgMTBweDtcbiAgICB9XG5cbiAgICAuc29jaWFsLWNvbnRhaW5lciB7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIG1hcmdpbjogMCAwIDEwcHg7XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoNzAwKSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgIH1cblxuICAgICAgLnNvY2lhbC1jb250ZW50IHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG5cbiAgICAgICAgYSB7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgIG1hcmdpbjogMCA1cHggMCAwO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgdG9wOiAtMnB4O1xuICAgIH1cblxuICAgIGlmcmFtZSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICB9XG5cbiAgLmltYWdlLXBvc3Qge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjbG91ZHM7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbjogMjBweCAwIDMwcHg7XG4gICAgcGFkZGluZzogNSU7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KDY0MCkge1xuICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICBpbWcge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbiAgfVxuXG4gIHAge1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gIH1cblxuICBoMyB7XG4gICAgZm9udC1mYW1pbHk6ICR0eXBvbmluZS1zYW5zLWxpZ2h0O1xuICAgIGZvbnQtc2l6ZTogMzhweDtcbiAgICBmb250LXdlaWdodDogMjAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAuNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjEzO1xuICAgIG1hcmdpbjogMCAwIDMwcHg7XG5cbiAgICAmLnBvc3QtdGl0bGUge1xuICAgICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KDYwMCkge1xuICAgICAgZm9udC1zaXplOiAzMHB4O1xuICAgIH1cblxuICAgIGEge1xuICAgICAgY29sb3I6ICRkdXN0O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICR0ZWFsMTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBibG9ja3F1b3RlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE4OCwgMTcyLCAxNTMsIDAuMSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxODgsIDE3MiwgMTUzLCAwLjQpO1xuICAgIGNvbG9yOiAkZ29sZDtcbiAgICBtYXJnaW46IDAgMCA0MHB4O1xuICAgIHBhZGRpbmc6IDI0cHggMzBweCAxMHB4O1xuICB9XG5cbiAgLm1vcmUtbGluayB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuMjhweDtcbiAgICBtYXJnaW46IDIwcHggMCAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIH1cblxuICAuaW5mbyxcbiAgLnBvc3RtZXRhZGF0YSB7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCg2MDApIHtcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICB9XG4gIH1cblxuICAuaW5mbyB7XG4gICAgbWFyZ2luOiAwIDAgMTBweDtcblxuICAgICYgKyAuZW50cnkge1xuXG4gICAgICAuaW1hZ2UtcG9zdCB7XG5cbiAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5hdXRob3Ige1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDEuMjhweDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICdQb3N0ZWQgYnk6ICc7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAuN3B4O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAucG9zdG1ldGFkYXRhIHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBtYXJnaW46IDAgMCAyMHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDUwcHg7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDEzMHB4KTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoNzAwKSB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgc21hbGwge1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KDYwMCkge1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmNhdGVnb3JpZXMge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIHdpZHRoOiA3MCU7XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoNjQwKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE0cHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICBhIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0YnJvbnplO1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAxLjI4cHg7XG4gICAgICAgIG1hcmdpbjogMCA2cHggNnB4IDA7XG4gICAgICAgIHBhZGRpbmc6IDRweCAxMHB4O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4zcztcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2Fycm90O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmNvbW1lbnRzIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgd2lkdGg6IDMwJTtcblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCg2NDApIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgYSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRsaWdodGJyb256ZTtcbiAgICAgICAgY29sb3I6ICRnb2xkO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAxLjI4cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDZweDtcbiAgICAgICAgcGFkZGluZzogM3B4IDlweDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyIC4zcywgY29sb3IgLjNzO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR0ZWFsMTtcbiAgICAgICAgICBjb2xvcjogJHRlYWwxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5zaW5nbGVQb3N0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbjogMzVweCAwIGNhbGMoNnZoICsgMTBweCk7XG4gIG9yZGVyOiAzO1xuXG4gIC5ibG9nLWhvbWUtYnRuIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjbG91ZHM7XG4gICAgY29sb3I6ICRnb2xkO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuMjhweDtcbiAgICBwYWRkaW5nOiAzNXB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzLCBjb2xvciAuM3M7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZWFsMDtcbiAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgfVxuICB9XG5cbiAgLmFsaWdubGVmdCxcbiAgLmFsaWducmlnaHQge1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICB3aWR0aDogY2FsYyg1MCUgLSA0cHgpO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCg3NDApIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC50aHVtYi1uYXZpZ2F0aW9uIHtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgaGVpZ2h0OiAyNXZoO1xuICAgICAgbWFyZ2luOiAwIDAgMTVweDtcbiAgICAgIG1heC1oZWlnaHQ6IDIzMHB4O1xuICAgICAgbWluLWhlaWdodDogMTcwcHg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjbG91ZHM7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBwYWRkaW5nOiAyMHB4IDM1cHggMzBweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzLCBjb2xvciAuM3M7XG4gICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZWFsMDtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgY29sb3I6ICRnb2xkO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDEuMjhweDtcbiAgICAgICAgbWFyZ2luOiAwIDAgMTVweDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAuM3M7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmFsaWdubGVmdCB7XG5cbiAgICBhIHtcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJ1ByZXZpb3VzIEJsb2cgUG9zdCc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmFsaWducmlnaHQge1xuXG4gICAgYSB7XG5cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICdOZXh0IEJsb2cgUG9zdCc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cblxuLnNvY2lhbC1zaGFyZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOiAwIDAgMzBweDtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgaWZyYW1lIHtcbiAgICBtYXJnaW46IDA7XG4gICAgbWF4LWhlaWdodDogMjBweDtcbiAgICBtaW4taGVpZ2h0OiAwO1xuICB9XG5cbiAgdWwge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICBpbWcge1xuICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgICAgIGhlaWdodDogMjhweDtcbiAgICAgIG1hcmdpbi1yaWdodDogNnB4O1xuICAgICAgd2lkdGg6IDI4cHg7XG5cbiAgICAgICYudHdpdHRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM1NGMxZjI7XG4gICAgICB9XG5cbiAgICAgICYuZ3BsdXMge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDM0ODM2O1xuICAgICAgfVxuXG4gICAgICAmLmZhY2Vib29rIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzNmNjViNjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICBtYXJnaW46IDAgMjVweCAwIDA7XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoNDgwKSB7XG4gICAgICAgIG1hcmdpbjogMCAwIDEwcHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5mYi1saWtlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIH1cblxuICAgICAgYSB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5jb21tZW50cy13cmFwcGVyIHtcbiAgb3JkZXI6IDI7XG5cbiAgJjo6YWZ0ZXIge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDIxOCwgMjI3LCAyMjcsIDAuNyk7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbjogY2FsYyg0dmggKyAxMHB4KSAwIGNhbGMoNnZoICsgMTBweCk7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAubG9nZ2VkLWFzIHtcbiAgICBmb250LXNpemU6IDE2cHg7XG5cbiAgICAubG9nb3V0IHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG4gIH1cblxuICB0ZXh0YXJlYSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNsb3VkcztcbiAgICBib3JkZXI6IDA7XG4gICAgY29sb3I6ICRkdXN0O1xuICAgIGZvbnQtZmFtaWx5OiAkdHlwb25pbmUtc2Fucy1saWdodDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC43cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgbWFyZ2luOiAyMHB4IDA7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG1pbi1oZWlnaHQ6IDMwMHB4O1xuICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAyNHB4IDMwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgI3N1Ym1pdCB7XG4gICAgQGluY2x1ZGUgYXJkdS1idXR0b24oJHRlYWwyLCAkdGVhbDUpO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICBjaXRlIHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gIH1cblxuICBoMyB7XG4gICAgY29sb3I6ICRnb2xkO1xuICAgIGZvbnQtc2l6ZTogMjZweDtcbiAgICBmb250LXdlaWdodDogMjAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAxLjI4cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBtYXJnaW46IDAgMCAyMHB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIH1cblxuICAuY29tbWVudGxpc3Qge1xuICAgIG1hcmdpbjogMCAwIGNhbGMoNnZoICsgMTBweCk7XG4gICAgcGFkZGluZzogMjBweCAwIDA7XG5cbiAgICBsaSB7XG4gICAgICBtYXJnaW46IDAgMCAzMHB4O1xuICAgIH1cblxuICAgIHNtYWxsIHtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB9XG4gIH1cbn1cblxuLnNpbmdsZS1wb3N0IHtcblxuICAuYm90dG9tLWFydGljbGUge1xuICAgIG1hcmdpbi10b3A6IDgwcHg7XG4gIH1cblxuICAuaW5mby13cmFwcGVyIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbWFyZ2luOiAwIDAgMjBweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiA1MHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gMTMwcHgpO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCg3MDApIHtcbiAgICAgIGZsb2F0OiBub25lO1xuICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5ib2FyZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgIHBhZGRpbmc6IDAgMTBweDtcblxuICAgIC5sYWJlbCB7XG4gICAgICBtYXJnaW4tbGVmdDogLTEwcHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDE4cHg7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRicm9uemU7XG4gICAgICBib3gtc2hhZG93OiAxMHB4IDAgMCAkbGlnaHRicm9uemUsIC0xMHB4IDAgMCAkbGlnaHRicm9uemU7XG4gICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDEuMjhweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICBtYXJnaW46IDAgMjVweCA1cHggMDtcbiAgICAgIHBhZGRpbmc6IDRweCAwO1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzLCBib3gtc2hhZG93IC4zcztcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjYXJyb3Q7XG4gICAgICAgIGJveC1zaGFkb3c6IDEwcHggMCAwICRjYXJyb3QsIC0xMHB4IDAgMCAkY2Fycm90O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiI2Fpcy13cmFwcGVyIHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB3aWR0aDogMTAwJTtcbn1cblxuI2Fpcy1tYWluIHtcbiAgb3JkZXI6IDI7XG4gIHdpZHRoOiBjYWxjKDc1JSAtIDQwcHgpO1xufVxuXG4jYWxnb2xpYS1oaXRzIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuI2Fpcy1mYWNldHMge1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBvcmRlcjogMTtcbiAgd2lkdGg6IGNhbGMoMjUlIC0gNDBweCk7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgxMDI0KSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgfVxufVxuXG4jYWlzLW1haW4sXG4jYWlzLWZhY2V0cyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KDEwMjQpIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuXG4uYWlzLXN0YXRzLS10aW1lIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmFpcy1tZW51LS1saXN0IHtcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xufVxuXG4uYWlzLWhpdHNfX2VtcHR5IHtcblxuICBzdHJvbmcge1xuICAgIGZvbnQtZmFtaWx5OiAkdHlwb25pbmUtc2Fucy1saWdodDtcbiAgICBsZXR0ZXItc3BhY2luZzogMS4yOHB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIH1cbn1cblxuLmFpcy1mYWNldHMge1xuICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuXG4gIC5haXMtbWVudS0taXRlbSxcbiAgLmFpcy1oaWVyYXJjaGljYWwtbWVudS0taXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgbWFyZ2luOiAwIDAgN3B4O1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLmFpcy1oaWVyYXJjaGljYWwtbWVudS0taXRlbSB7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KDEwMjQpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgIHdpZHRoOiBjYWxjKDMzLjMzMyUgLSA2cHgpO1xuXG4gICAgICBkaXYge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCg3MDApIHtcbiAgICAgIHdpZHRoOiBjYWxjKDUwJSAtIDVweCk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCg1MDApIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5haXMtaGllcmFyY2hpY2FsLW1lbnUtLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBtYXJnaW46IDdweCAwIDA7XG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgxMDI0KSB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIH1cbiAgfVxuXG4gIGEge1xuICAgIEBleHRlbmQgLnRhZy1idG47XG5cbiAgICAuYWlzLWhpZXJhcmNoaWNhbC1tZW51LS1jb3VudCxcbiAgICAuYWlzLW1lbnUtLWNvdW50IHtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAzcHg7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB0b3A6IC0ycHg7XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoMTAyNCkge1xuICAgICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICAgICAgICB0b3A6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmFpcy1oaWVyYXJjaGljYWwtbWVudS0taXRlbV9fYWN0aXZlLFxuICAuYWlzLW1lbnUtLWl0ZW1fX2FjdGl2ZSB7XG5cbiAgICBhIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRnb2xkO1xuICAgICAgYm94LXNoYWRvdzogMTBweCAwIDAgJGdvbGQsIC0xMHB4IDAgMCAkZ29sZDtcblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgxMDI0KSB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5zb3J0LW9wdGlvbnMtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG1hcmdpbjogN3B4IDAgMzNweDtcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoMTAyNCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxuXG4gIC5zb3J0LWl0ZW0td3JhcHBlciB7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBtYXJnaW46IDAgMCA3cHg7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KDEwMjQpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgIHdpZHRoOiBjYWxjKDMzLjMzMyUgLSA2cHgpO1xuXG4gICAgICBkaXYge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCg3MDApIHtcbiAgICAgIHdpZHRoOiBjYWxjKDUwJSAtIDVweCk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCg1MDApIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgICYuYWN0aXZlIHtcblxuICAgICAgYSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRnb2xkO1xuICAgICAgICBib3gtc2hhZG93OiAxMHB4IDAgMCAkZ29sZCwgLTEwcHggMCAwICRnb2xkO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoMTAyNCkge1xuICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBhIHtcbiAgICAgIEBleHRlbmQgLnRhZy1idG47XG4gICAgfVxuICB9XG59XG5cbi5haXMtY2xlYXItYWxsLS1saW5rIHtcbiAgY29sb3I6ICRkdXN0O1xuICBmb250LXNpemU6IDE4cHg7XG4gIGxldHRlci1zcGFjaW5nOiAxLjI4cHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgJjphY3RpdmUsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiAkZHVzdDtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiAkbm90aWZ5ZXJyb3I7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG5vdGlmeWVycm9yO1xuICAgIH1cbiAgfVxuXG4gICY6OmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGR1c3Q7XG4gICAgYm9yZGVyLXJhZGl1czogMjRweDtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIGNvbnRlbnQ6ICfDlyc7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gICAgcGFkZGluZzogNXB4IDhweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAtMnB4O1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzO1xuICAgIHdpZHRoOiAyNHB4O1xuICB9XG59XG5cbiNhbGdvbGlhLXNlYXJjaC1ib3gge1xuICBtYXJnaW46IDAgMCA3NHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoMTAyNCkge1xuICAgIG1hcmdpbi10b3A6IDI1cHg7XG4gIH1cblxuICBpbnB1dCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNsb3VkcztcbiAgICBib3JkZXI6IDA7XG4gICAgY29sb3I6ICRkdXN0O1xuICAgIGZvbnQtZmFtaWx5OiAkdHlwb25pbmUtc2Fucy1saWdodDtcbiAgICBmb250LXNpemU6IDIycHg7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIGxldHRlci1zcGFjaW5nOiAuN3B4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNnB4O1xuICAgIG1hcmdpbjogMDtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIHBhZGRpbmc6IDIzcHggNjVweCAyM3B4IDMwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KDQ4MCkge1xuICAgICAgcGFkZGluZzogMjNweCA2NXB4IDIzcHggMThweDtcbiAgICB9XG4gIH1cblxuICAuc2VhcmNoLWljb24ge1xuICAgIGZpbGw6ICRhc2Jlc3RvcztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDA7XG4gICAgdG9wOiAyMXB4O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCg0ODApIHtcbiAgICAgIHJpZ2h0OiAtOHB4O1xuICAgIH1cbiAgfVxufVxuXG4uYWlzLXN0YXRzIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogODBweDtcbn1cblxuLmFpcy1wYWdpbmF0aW9uLS1pdGVtIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAzcHg7XG59XG5cbi5haXMtcGFnaW5hdGlvbi0taXRlbV9fZGlzYWJsZWQge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uYWlzLXBhZ2luYXRpb24tLWl0ZW1fX2FjdGl2ZSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4iLCIuYWEtZHJvcGRvd24tbWVudSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICR0ZWFsNDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR0ZWFsMjtcbiAgY29sb3I6ICR3aGl0ZTtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBtYXJnaW4tdG9wOiA3cHg7XG4gIHBhZGRpbmc6IDE4cHggMjVweCAyNXB4O1xuXG4gICYuYWEtd2l0aC0xIHtcbiAgICB3aWR0aDogY2FsYygxMDB2dyAtIDM2cHgpO1xuICB9XG5cbiAgJi5hYS13aXRob3V0LTEge1xuICAgIHdpZHRoOiBjYWxjKDEwMHZ3IC0gMzZweCk7XG4gIH1cblxuICAmLmFhLXdpdGgtMyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTQwcHgpO1xuICAgIHdpZHRoOiAyOTBweDtcbiAgfVxuXG4gICYuYWEtd2l0aG91dC0zIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNDBweCk7XG4gICAgd2lkdGg6IDI5MHB4O1xuICB9XG5cbiAgLnN1Z2dlc3Rpb24tY291bnQtd3JhcHBlciB7XG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogI2YxYzQwZjtcbiAgICB9XG4gIH1cblxuICBhIHtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuXG4gICAgJi5zdWdnZXN0aW9uLWxpbmsge1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICAuYXV0b2NvbXBsZXRlLWhlYWRlciB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcbiAgICBmb250LWZhbWlseTogJHR5cG9uaW5lLXNhbnMtcmVndWxhcjtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgcGFkZGluZy1ib3R0b206IDE2cHg7XG4gIH1cblxuICAuYXV0b2NvbXBsZXRlLWhlYWRlci10aXRsZSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB9XG5cbiAgLnN1Z2dlc3Rpb24tcG9zdC10aHVtYm5haWwge1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gICAgd2lkdGg6IGNhbGMoMzUlIC0gOHB4KTtcbiAgfVxuXG4gIC5zdWdnZXN0aW9uLXBvc3QtYXR0cmlidXRlcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICB3aWR0aDogY2FsYyg2NSUgLSA4cHgpO1xuICB9XG5cbiAgLmFhLXN1Z2dlc3Rpb24ge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG4gICAgZm9udC1mYW1pbHk6ICR0eXBvbmluZS1zYW5zLXJlZ3VsYXI7XG4gICAgZm9udC1zaXplOiAxNXB4O1xuICAgIHBhZGRpbmc6IDE0cHggMDtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgZW0ge1xuICAgICAgY29sb3I6ICRzdW5mbG93ZXI7XG4gICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICBsZXR0ZXItc3BhY2luZzogMS4yOHB4O1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB9XG4gIH1cblxuICAuc3VnZ2VzdGlvbi1jb3VudCB7XG4gICAgbWFyZ2luLWxlZnQ6IDMuM2VtO1xuICB9XG5cbiAgLmF1dG9jb21wbGV0ZS1lbXB0eSB7XG4gICAgcGFkZGluZzogNnB4IDA7XG4gICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuXG4gICAgLmVtcHR5LXF1ZXJ5IHtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAxLjI4cHg7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cbiAgfVxufVxuIiwiI3NpZGViYXIge1xuICBmb250LXNpemU6IDE2cHg7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgxMDI0KSB7XG4gICAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgfVxuXG4gICNjYXRlZ29yaWVzLFxuICAjYXJjaGl2ZXMge1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgxMDI0KSB7XG4gICAgICB3aWR0aDogY2FsYyg1MCUgLSAxNXB4KTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KDYwMCkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgbGkge1xuICAgIG1hcmdpbjogMCAwIDQwcHg7XG4gIH1cblxuICAuY3VzdG9tLXNlbGVjdCB7XG5cbiAgICAmLm9wZW4ge1xuXG4gICAgICAuZHJvcGRvd24tbWVudSB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDI3MnB4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi1tZW51IHtcbiAgICAgIG1heC1oZWlnaHQ6IDA7XG4gICAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IC4zcztcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICB9XG5cbiAgLndpZGdldHRpdGxlIHtcbiAgICBjb2xvcjogJGdvbGQ7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGxldHRlci1zcGFjaW5nOiAxLjI4cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBtYXJnaW46IDAgMCAxMnB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIH1cblxuICAud2lkZ2V0IHtcblxuICAgIC5zY3JlZW4tcmVhZGVyLXRleHQge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAuc3VibWl0LXlvdXItcHJvamVjdCB7XG4gICAgbWFyZ2luLWJvdHRvbTogNTVweDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoMTAyNCkge1xuICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRmb2c7XG4gICAgICBtYXJnaW46IDEwcHggMCAzNXB4O1xuICAgICAgb3JkZXI6IDI7XG4gICAgICBwYWRkaW5nLXRvcDogMzBweDtcbiAgICB9XG5cbiAgICBwIHtcbiAgICAgIG1hcmdpbjogMCAwIDIwcHg7XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoMTAyNCkge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmJ0bi1wcmltYXJ5IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KDEwMjQpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50LWJvdGgoNDgwLCAxMDI0KSB7XG4gICAgICAgIG1heC13aWR0aDogMjAwcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnNvY2lhbC1saXN0IHtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoMTAyNCkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICB1bCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tdG9wOiA2cHg7XG4gICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgaW1nIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgd2lkdGg6IDI4cHg7XG5cbiAgICAgICAgJi50d2l0dGVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTRjMWYyO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5ncGx1cyB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2QzNDgzNjtcbiAgICAgICAgfVxuXG4gICAgICAgICYuZmFjZWJvb2sge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzZjY1YjY7XG4gICAgICAgIH1cblxuICAgICAgICAmLnlvdXR1YmUge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlYzFlMTI7XG4gICAgICAgIH1cblxuICAgICAgICAmLmluc3RhZ3JhbSB7XG4gICAgICAgICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBmYXJ0aGVzdC1jb3JuZXIgYXQgMzUlIDkwJSwjZmVjNTY0LHRyYW5zcGFyZW50IDUwJSkscmFkaWFsLWdyYWRpZW50KGNpcmNsZSBmYXJ0aGVzdC1jb3JuZXIgYXQgMCAxNDAlLCNmZWM1NjQsdHJhbnNwYXJlbnQgNTAlKSxyYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBmYXJ0aGVzdC1jb3JuZXIgYXQgMCAtMjUlLCM1MjU4Y2YsdHJhbnNwYXJlbnQgNTAlKSxyYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBmYXJ0aGVzdC1jb3JuZXIgYXQgMjAlIC01MCUsIzUyNThjZix0cmFuc3BhcmVudCA1MCUpLHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGZhcnRoZXN0LWNvcm5lciBhdCAxMDAlIDAsIzg5M2RjMix0cmFuc3BhcmVudCA1MCUpLHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGZhcnRoZXN0LWNvcm5lciBhdCA2MCUgLTIwJSwjODkzZGMyLHRyYW5zcGFyZW50IDUwJSkscmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgZmFydGhlc3QtY29ybmVyIGF0IDEwMCUgMTAwJSwjZDkzMTdhLHRyYW5zcGFyZW50KSwtd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxsZWZ0IGJvdHRvbSxmcm9tKCM2NTU5Y2EpLGNvbG9yLXN0b3AoMzAlLCNiYzMxOGYpLGNvbG9yLXN0b3AoNTAlLCNlMzNmNWYpLGNvbG9yLXN0b3AoNzAlLCNmNzc2MzgpLHRvKCNmZWM2NmQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuZmxpY2tyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY0N2E0O1xuICAgICAgICB9XG5cbiAgICAgICAgJi5naXRodWIge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGkge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIG1hcmdpbjogMCAwIDEwcHg7XG4gICAgICAgIHRyYW5zaXRpb246IG1hcmdpbi1sZWZ0IC4zcztcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGEge1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uc2lkZWJhci1hY2NvcmRpb24tYnRuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMjcsIDIwMywgMjA1LCAwLjUpO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGNvbG9yOiAkd2hpdGU7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAxNnB4IDIycHg7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHdpZHRoOiBhdXRvO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZWFsMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgxMDI0KSB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxufVxuXG4uc2lkZWJhci1ibG9jay1tZW51IHtcblxuICAuc2lkZWJhci1hY2NvcmRpb24ge1xuXG4gICAgLnNpZGViYXItYWNjb3JkaW9uLWJ0biB7XG5cbiAgICAgIC5hcnJvdyB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgIGNvbnRlbnQ6ICfinJUnO1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcbiAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5vcGVuIHtcblxuICAgIC5zaWRlYmFyLWFjY29yZGlvbiB7XG5cbiAgICAgIC5zaWRlYmFyLWFjY29yZGlvbi1idG4ge1xuICAgICAgICBcbiAgICAgICAgLmFycm93IHtcblxuICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uc2lkZWJhci1ibG9jay1tZW51IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgaGVpZ2h0OiBmaXQtY29udGVudDtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgLmJsb2NrLW1lbnUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoMTAyNCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNsb3VkcztcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBtYXgtaGVpZ2h0OiAwO1xuICAgICAgb3JkZXI6IDE7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgcGFkZGluZzogMCAzMHB4O1xuICAgICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAuM3MsIHBhZGRpbmcgLjNzO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoMTAyNCkge1xuXG4gICAgJi5vcGVuIHtcblxuICAgICAgLmJsb2NrLW1lbnUge1xuICAgICAgICBtYXgtaGVpZ2h0OiAyMDAwcHg7XG4gICAgICAgIHBhZGRpbmc6IDI0cHggMzBweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuc2lkZWJhci1hY2NvcmRpb24ge1xuICAgICAgb3JkZXI6IDI7XG4gICAgfVxuICB9XG5cbiAgbmF2IHtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoMTAyNCkge1xuICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gICAgfVxuICB9XG5cbiAgaDMge1xuICAgIGNvbG9yOiAkZ29sZDtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuMjhweDtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIG1hcmdpbjogMCAwIDEycHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgfVxuXG4gIGgyIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR0ZWFsMjtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBsZXR0ZXItc3BhY2luZzogMS4yOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgcGFkZGluZzogMCAwIDAgMjBweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgxMDI1LCAnbWluJykge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLnNvcnQtYnktd3JhcHBlcixcbiNjbGVhci1hbGwge1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoMTAyNCkge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG5cbi5maWx0ZXItY2F0ZWdvcmllcy13cmFwcGVyIHtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KDEwMjQpIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuXG4uaXMtY2xlYXItaWNvbiB7XG4gIGZpbGw6ICRhc2Jlc3RvcztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogNTJweDtcbiAgdG9wOiAyNXB4O1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoNDgwKSB7XG4gICAgcmlnaHQ6IDQ2cHg7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAg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 */
