@charset "UTF-8";
/*リセット
--------------------------------------------*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
  font: inherit;
  font-size: 100%;
  vertical-align: baseline;
}

html {
  line-height: 1;
}

ol, ul {
  list-style: none;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

caption, th, td {
  text-align: left;
  font-weight: normal;
  vertical-align: middle;
}

q, blockquote {
  quotes: none;
}

q:before, q:after, blockquote:before, blockquote:after {
  content: "";
  content: none;
}

a img {
  border: none;
}

article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary {
  display: block;
}

/*フォント
---------------------------------------------*/
/*メディアクエリー
---------------------------------------------*/
/*変数
---------------------------------------------*/
/* コンテンツ
---------------------------------------------*/
html {
  font-size: 62.5%;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
}

body {
  font-family: noto-sans-cjk-jp, "游ゴシック体", YuGothic, "游ゴシック", "Yu Gothic", "メイリオ", sans-serif;
  font-feature-settings: "palt";
  line-height: 1.0;
  color: #524238;
  font-weight: normal;
  background-color: #F0E6DF;
}

img {
  width: 100%;
  vertical-align: bottom;
  display: block;
}

a {
  color: #000;
  text-decoration: none;
}

#loader {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  height: calc(var(--vh, 1vh) * 100);
  background-color: #fff;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 999;
}

#loader.loaded {
  opacity: 0;
  visibility: hidden;
  transition: .8s;
}

#loader div {
  width: 53%;
}

@media screen and (min-width: 1000px) {
  #loader div {
    max-width: 300px;
  }
}

/*#frame {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 999;
  pointer-events: none;
  &::before {
    content: "";
    display: block;
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    border: 2px solid #ccc;
  }
}*/
#wrapper {
  width: 100%;
  overflow: hidden;
  opacity: 1;
}

#wrapper.loaded {
  opacity: 1;
  transition: 2s 1s;
}

.logo {
  margin-bottom: 20px;
}

@media screen and (max-width: 999px) {
  .logo {
    width: 37.3%;
    position: absolute;
    top: 25px;
    left: 30px;
    z-index: 100;
  }
}

@media screen and (min-width: 1000px) {
  .logo {
    width: 34%;
    max-width: 430px;
    position: absolute;
    top: 40px;
    left: 40px;
    z-index: 100;
  }
}

.logo div {
  margin-bottom: 20px;
}

@media screen and (min-width: 1000px) {
  .logo div {
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
}

.logo div h1 {
  z-index: 100;
  width: 140px;
  margin-bottom: 15px;
  transition: .6s;
}

@media screen and (min-width: 1000px) {
  .logo div h1 {
    width: 40%;
    max-width: 170px;
  }
}

.logo div h1.small {
  position: fixed;
  top: 25px;
  left: 25px;
  width: 20%;
}

@media screen and (min-width: 1000px) {
  .logo div h1.small {
    max-width: 100px;
  }
}

.logo div h1 + span {
  display: block;
}

@media screen and (min-width: 1000px) {
  .logo div h1 + span {
    width: 52%;
  }
}

.logo p {
  font-family: 'noto-sans-cjk-jp';
  font-size: 2rem;
  font-style: italic;
  line-height: 1.0;
  display: flex;
}

@media screen and (min-width: 1000px) {
  .logo p {
    font-size: 2.8rem;
  }
}

.logo p span {
  display: inline-block;
}

.logo p span:nth-of-type(1) {
  font-size: 1.2rem;
  border-bottom: 1px solid #000;
  line-height: 1.6;
  margin-right: 3px;
  letter-spacing: 0.1em;
}

@media screen and (min-width: 1000px) {
  .logo p span:nth-of-type(1) {
    font-size: 1.8rem;
  }
}

.logo p span:nth-of-type(2) {
  font-weight: 500;
  letter-spacing: 0.05em;
}

#main_area {
  position: relative;
  margin-top: 170px;
  margin-bottom: 20px;
}

@media screen and (min-width: 1000px) {
  #main_area {
    margin-top: 230px;
    margin-bottom: 120px;
  }
}

#main_area figure {
  position: absolute;
  width: 44%;
  bottom: 100%;
  right: 2%;
  margin-bottom: -2%;
  z-index: 2;
}

@media screen and (min-width: 1000px) {
  #main_area figure {
    width: 22%;
    bottom: 100%;
    margin-bottom: -1%;
    right: 4%;
  }
}

#main_area .loop_wrap {
  opacity: 0;
}

#main_area .loop_wrap.on {
  opacity: 1;
  transition: 2s linear;
}

#main_area .loop_wrap .loop {
  display: flex;
  width: 100vw;
  height: 200px;
  overflow: hidden;
}

@media screen and (min-width: 1000px) {
  #main_area .loop_wrap .loop {
    height: 300px;
  }
}

#main_area .loop_wrap .loop img {
  width: auto;
  height: 100%;
}

#main_area .loop_wrap .loop.top img:nth-of-type(1) {
  animation: loop1 60s -30s linear infinite;
}

#main_area .loop_wrap .loop.top img:nth-of-type(2) {
  animation: loop2 60s linear infinite;
}

#main_area .loop_wrap .loop.bottom img:nth-of-type(1) {
  animation: loop3 60s -30s linear infinite;
}

#main_area .loop_wrap .loop.bottom img:nth-of-type(2) {
  animation: loop4 60s linear infinite;
}

#main_area .image_area {
  width: 100%;
  position: relative;
}

@media screen and (min-width: 1000px) {
  #main_area .image_area {
    max-width: 1200px;
    margin: 0 auto;
  }
}

#main_area .image_area:before {
  content: "";
  display: block;
  padding-top: 100%;
  background-color: #C4A48F;
}

@media screen and (min-width: 1000px) {
  #main_area .image_area:before {
    padding-top: calc(720 / 1200 * 100%);
  }
}

#main_area .image_area .flex_wrap {
  display: flex;
  justify-content: space-between;
  width: 84%;
  height: 71%;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

@media screen and (min-width: 1000px) {
  #main_area .image_area .flex_wrap {
    width: 85%;
    height: 74%;
  }
}

#main_area .image_area .flex_wrap div.box {
  width: 50%;
  position: relative;
}

#main_area .image_area .flex_wrap div.box.ama {
  background-color: #DEC2B6;
}

#main_area .image_area .flex_wrap div.box.ama.off::after {
  transform: scale(0, 1);
  transform-origin: right top;
  transition: .8s;
}

#main_area .image_area .flex_wrap div.box.ama::after {
  content: "";
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #C4A48F;
  transform: scale(1, 1);
  transform-origin: right top;
}

#main_area .image_area .flex_wrap div.box.ama div {
  opacity: 0;
  position: absolute;
}

#main_area .image_area .flex_wrap div.box.ama div:nth-of-type(1) {
  width: 50.1%;
  top: -15%;
  left: -27%;
}

@media screen and (min-width: 1000px) {
  #main_area .image_area .flex_wrap div.box.ama div:nth-of-type(1) {
    width: 36.8%;
    left: -25%;
    z-index: 1;
  }
}

#main_area .image_area .flex_wrap div.box.ama div:nth-of-type(2) {
  width: 53.3%;
  bottom: -11.3%;
  left: 8%;
  z-index: 1;
}

@media screen and (min-width: 1000px) {
  #main_area .image_area .flex_wrap div.box.ama div:nth-of-type(2) {
    width: 38.8%;
    left: 13%;
  }
}

#main_area .image_area .flex_wrap div.box.ama div:nth-of-type(3) {
  width: 56.5%;
  top: -15%;
  left: 47.6%;
}

@media screen and (min-width: 1000px) {
  #main_area .image_area .flex_wrap div.box.ama div:nth-of-type(3) {
    width: 42%;
    left: 55%;
  }
}

#main_area .image_area .flex_wrap div.box.ama span {
  opacity: 0;
  bottom: 20px;
  left: -37px;
}

@media screen and (max-width: 999px) {
  #main_area .image_area .flex_wrap div.box.ama span {
    transform: rotate(-90deg);
  }
}

@media screen and (min-width: 1000px) {
  #main_area .image_area .flex_wrap div.box.ama span {
    bottom: -10px;
    left: -55px;
  }
}

#main_area .image_area .flex_wrap div.box.kara {
  background-color: #99AABA;
}

#main_area .image_area .flex_wrap div.box.kara.off::after {
  transform: scale(0, 1);
  transform-origin: right top;
  transition: .8s;
}

#main_area .image_area .flex_wrap div.box.kara::after {
  content: "";
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #C4A48F;
  transform: scale(1, 1);
  transform-origin: right top;
}

#main_area .image_area .flex_wrap div.box.kara div {
  opacity: 0;
  position: absolute;
}

#main_area .image_area .flex_wrap div.box.kara div:nth-of-type(1) {
  width: 46.7%;
  bottom: -11.3%;
  left: -8.8%;
}

@media screen and (min-width: 1000px) {
  #main_area .image_area .flex_wrap div.box.kara div:nth-of-type(1) {
    width: 34.5%;
    left: 4%;
  }
}

#main_area .image_area .flex_wrap div.box.kara div:nth-of-type(2) {
  width: 47.3%;
  top: -15%;
  left: 35%;
}

@media screen and (min-width: 1000px) {
  #main_area .image_area .flex_wrap div.box.kara div:nth-of-type(2) {
    width: 35.6%;
    left: 44%;
  }
}

#main_area .image_area .flex_wrap div.box.kara div:nth-of-type(3) {
  width: 55.2%;
  bottom: -11.3%;
  right: -26%;
}

@media screen and (min-width: 1000px) {
  #main_area .image_area .flex_wrap div.box.kara div:nth-of-type(3) {
    width: 40.8%;
    right: -22%;
    z-index: 1;
  }
}

#main_area .image_area .flex_wrap div.box.kara span {
  opacity: 0;
  top: 20px;
  right: -40px;
}

@media screen and (max-width: 999px) {
  #main_area .image_area .flex_wrap div.box.kara span {
    transform: rotate(90deg);
  }
}

@media screen and (min-width: 1000px) {
  #main_area .image_area .flex_wrap div.box.kara span {
    right: -55px;
    top: -20px;
  }
}

#main_area .image_area .flex_wrap div.box span {
  position: absolute;
  display: block;
  color: #fff;
  font-family: futura-pt;
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.05em;
}

@media screen and (min-width: 1000px) {
  #main_area .image_area .flex_wrap div.box span {
    font-size: 28px;
  }
}

#main_area .image_area .flex_wrap div.box span::after {
  content: "";
  display: block;
  position: absolute;
  bottom: -4px;
  left: 0;
  width: 100%;
  height: 1px;
  background-color: #fff;
}

@media screen and (min-width: 1000px) {
  #main_area .image_area .flex_wrap div.box span::after {
    height: 2px;
  }
}

#main_area .image_area.off::after {
  transform: translateY(-100%);
  transition: .8s;
}

#main_area .title_area {
  text-align: center;
  margin-bottom: 20px;
  position: relative;
  bottom: 35px;
}

@media screen and (min-width: 1000px) {
  #main_area .title_area {
    margin-bottom: 60px;
    bottom: 80px;
  }
}

#main_area .title_area h2 {
  display: inline-block;
  font-family: 'noto-sans-cjk-jp';
  font-weight: 500;
  line-height: 1.3;
  padding: 20px;
}

@media screen and (min-width: 1000px) {
  #main_area .title_area h2 {
    padding: 40px 50px;
  }
}

#main_area .title_area h2 div.sub_wrap {
  position: relative;
  display: inline-block;
  font-size: 1.4rem;
  letter-spacing: 0.1em;
  background-color: #fff;
  padding: 6px 20px;
  margin-bottom: 12px;
}

@media screen and (min-width: 1000px) {
  #main_area .title_area h2 div.sub_wrap {
    padding: 10px 40px;
    font-size: 3.4rem;
    margin-bottom: 20px;
  }
}

#main_area .title_area h2 div.sub_wrap span {
  display: inline-block;
}

#main_area .title_area h2 div.sub_wrap span.ama {
  font-size: 1.6rem;
  color: #AD8B86;
  font-weight: 700;
}

@media screen and (min-width: 1000px) {
  #main_area .title_area h2 div.sub_wrap span.ama {
    font-size: 4rem;
  }
}

#main_area .title_area h2 div.sub_wrap span.kara {
  font-size: 1.6rem;
  color: #71758B;
  font-weight: 700;
}

@media screen and (min-width: 1000px) {
  #main_area .title_area h2 div.sub_wrap span.kara {
    font-size: 4rem;
  }
}

#main_area .title_area h2 div.sub_wrap::before, #main_area .title_area h2 div.sub_wrap::after {
  content: "";
  display: inline-block;
  position: absolute;
  bottom: 6px;
  width: 1px;
  height: 60%;
  background-color: #524238;
}

@media screen and (min-width: 1000px) {
  #main_area .title_area h2 div.sub_wrap::before, #main_area .title_area h2 div.sub_wrap::after {
    bottom: 10px;
    width: 2px;
  }
}

#main_area .title_area h2 div.sub_wrap::before {
  left: 12px;
  transform: rotate(-25deg);
}

@media screen and (min-width: 1000px) {
  #main_area .title_area h2 div.sub_wrap::before {
    left: 24px;
  }
}

#main_area .title_area h2 div.sub_wrap::after {
  right: 12px;
  transform: rotate(25deg);
}

@media screen and (min-width: 1000px) {
  #main_area .title_area h2 div.sub_wrap::after {
    right: 24px;
  }
}

#main_area .title_area h2 div.main_wrap {
  display: block;
  font-size: 0;
  font-style: italic;
  line-height: 1.5;
}

#main_area .title_area h2 div.main_wrap span {
  font-size: 2rem;
  letter-spacing: 0.1em;
  padding: 4px 10px;
  background-color: #fff;
}

@media screen and (min-width: 1000px) {
  #main_area .title_area h2 div.main_wrap span {
    font-size: 4.6rem;
  }
}

@media screen and (max-width: 999px) {
  #main_area .title_area h2 div.main_wrap span:nth-of-type(1) {
    display: block;
    margin-bottom: 10px;
  }
}

@media screen and (min-width: 1000px) {
  #main_area .title_area h2 div.main_wrap span:nth-of-type(1) {
    display: inline-block;
    padding: 8px 0 8px 24px;
  }
}

#main_area .title_area h2 div.main_wrap span:nth-of-type(2) {
  display: inline-block;
}

@media screen and (min-width: 1000px) {
  #main_area .title_area h2 div.main_wrap span:nth-of-type(2) {
    padding: 8px 32px 8px 0;
  }
}

#main_area .title_area h2 div.main_wrap span em {
  font-weight: bold;
  font-size: 3rem;
}

@media screen and (min-width: 1000px) {
  #main_area .title_area h2 div.main_wrap span em {
    font-size: 5.6rem;
  }
}

#main_area .title_area h2 div.main_wrap span em:nth-of-type(2) {
  /*@include mq(pc) {
                  margin-left: 8px;
                }*/
}

#main_area .intro_area {
  width: 84%;
  margin: 0 auto;
}

@media screen and (max-width: 999px) {
  #main_area .intro_area {
    margin: -20px auto 70px;
  }
}

@media screen and (min-width: 1000px) {
  #main_area .intro_area {
    margin: -60px auto 70px;
  }
}

#main_area .intro_area p {
  margin: 0 auto;
  font-size: 1.4rem;
  font-family: 'noto-sans-cjk-jp';
  letter-spacing: 0.025em;
  line-height: 2.0;
}

@media screen and (min-width: 1000px) {
  #main_area .intro_area p {
    width: 70%;
    text-align: center;
    font-size: 1.6rem;
    line-height: 2.2;
  }
}

#brand_area {
  background-color: #fff;
  padding: 60px 0;
}

@media screen and (min-width: 1000px) {
  #brand_area {
    margin: 0 auto 120px;
    padding: 100px 0;
  }
}

#brand_area h3 {
  text-align: center;
  position: relative;
  letter-spacing: .2rem;
}

@media screen and (max-width: 999px) {
  #brand_area h3 {
    font-size: 25px;
    margin-bottom: 25px;
  }
}

@media screen and (min-width: 1000px) {
  #brand_area h3 {
    font-size: 30px;
    margin-bottom: 30px;
  }
}

@media screen and (max-width: 999px) {
  #brand_area ul {
    width: 86%;
    margin: 0 auto;
    display: flex;
    flex-wrap: wrap;
    align-content: center;
    justify-content: space-between;
  }
}

@media screen and (min-width: 1000px) {
  #brand_area ul {
    width: 720px;
    margin: 0 auto;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    position: relative;
  }
}

@media screen and (max-width: 999px) {
  #brand_area ul li {
    width: calc((100% - 10px ) / 2);
    padding: 5px 0;
  }
}

@media screen and (min-width: 1000px) {
  #brand_area ul li {
    margin: 5px 0;
    width: calc((100% - 30px ) / 3);
  }
}

#brand_area ul li a {
  display: block;
  border: 1px solid #444;
}

@media screen and (max-width: 999px) {
  #brand_area ul li a {
    font-size: 12px;
  }
}

@media screen and (min-width: 1000px) {
  #brand_area ul li a {
    font-size: 16px;
  }
}

#brand_area ul li img {
  width: 92%;
  margin: 0 auto;
}

@media screen and (min-width: 1000px) {
  #brand_area ul li img {
    width: 94%;
  }
}

/*.loop {
    display: flex;
    flex-flow: row nowrap;
    //@debug: 50%;
    overflow: hidden; 
    width: 100%;
    z-index: 2;
    border-top: 1px solid #fff;
    border-bottom: 1px solid #fff;
    padding: 8px;
    ul {
      display: flex;
      white-space: nowrap;
      margin: 0;
      padding: 0;
      &:first-child {
        animation: loop 100s -50s linear infinite;
        backface-visibility: hidden;
        will-change: transform;
      }
      &:last-child {
          animation: loop2 100s  linear infinite;
      }
      li {
        display: inline;
        white-space: nowrap;
        font-size: 1.8rem;
        letter-spacing: 0.025em;
        font-weight: 500;
        padding: 0 10px 0 0;
        color: #fff;
        line-height: 1.4;
        position: relative;
        @include mq(pc) {
          font-size: 2.2rem;
        }
        span {
          display: inline-block;
          font-family: 'noto-sans-cjk-jp';
          font-weight: 500;
        }
      }
    }
  }*/
#content {
  width: 100%;
  margin: 0 auto;
}

@media screen and (max-width: 999px) {
  #content {
    margin: 60px auto 0;
  }
}

@media screen and (min-width: 1000px) {
  #content .section {
    max-width: 960px;
    margin: 0 auto;
    padding: 0 0;
  }
}

#content .section span.num {
  display: block;
  font-family: futura-pt;
  text-align: center;
  color: #C4A48F;
  font-size: 2rem;
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.025em;
  margin-top: 30px;
  margin-bottom: 15px;
  position: relative;
}

@media screen and (min-width: 1000px) {
  #content .section span.num {
    font-size: 2.6rem;
  }
}

#content .section span.num::after {
  content: "";
  display: block;
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  width: 20px;
  height: 1px;
  background-color: #C4A48F;
}

@media screen and (min-width: 1000px) {
  #content .section span.num::after {
    bottom: -3px;
    height: 1px;
  }
}

#content .section h3 {
  /*margin-bottom: 60px;
        @include mq(sp){
          margin-bottom: 30px;
        }*/
}

#content .section h3 span {
  display: block;
  text-align: center;
}

#content .section h3 span.brand {
  font-family: futura-pt;
  font-size: 3.4rem;
  letter-spacing: 0.05em;
  line-height: 0.75;
  margin-bottom: 13px;
}

@media screen and (min-width: 1000px) {
  #content .section h3 span.brand {
    font-size: 3.8rem;
    margin-bottom: 14px;
  }
}

#content .section h3 span.shop, #content .section h3 span.height {
  font-family: 'noto-sans-cjk-jp';
  font-size: 1.2rem;
  letter-spacing: 0.05em;
  margin-bottom: 20px;
}

@media screen and (min-width: 1000px) {
  #content .section h3 span.shop, #content .section h3 span.height {
    font-size: 1.6rem;
    margin-bottom: 24px;
  }
}

#content .section h3 span.name {
  font-family: 'noto-sans-cjk-jp';
  font-size: 1.8rem;
  font-weight: 500;
  letter-spacing: 0.05em;
  margin-bottom: 13px;
}

@media screen and (min-width: 1000px) {
  #content .section h3 span.name {
    font-size: 2.0rem;
    margin-bottom: 14px;
  }
}

#content .section h3 span.height {
  margin-bottom: 0;
}

#content .section .sec_inner .itemArea {
  text-align: center;
  background-color: #F0E6DF;
  padding: 30px 0 35px;
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .itemArea {
    padding: 50px 0;
  }
}

#content .section .sec_inner .itemArea h4 {
  display: inline-block;
  font-size: 1.4rem;
  color: #000;
  position: relative;
  margin-bottom: 25px;
  padding: 0 4px;
  position: relative;
  z-index: 1;
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .itemArea h4 {
    font-size: 1.6rem;
    margin-bottom: 30px;
  }
}

#content .section .sec_inner .itemArea h4::before {
  content: "";
  display: block;
  position: absolute;
  bottom: -5px;
  left: 0;
  width: 100%;
  height: 8px;
  background-color: #F0D888;
  z-index: -1;
}

#content .section .sec_inner .itemArea h4::after {
  content: "";
  display: block;
  position: absolute;
  bottom: -13px;
  left: 0;
  width: 100%;
  height: 9px;
  background-image: url(../img/line.png);
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
}

#content .section .sec_inner .itemArea div.itemPic {
  width: 44%;
  margin: 0 auto 20px;
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .itemArea div.itemPic {
    max-width: 320px;
    margin: 0 auto 30px;
  }
}

#content .section .sec_inner .itemArea p {
  text-align: center;
  font-size: 1.2rem;
  margin-bottom: 8px;
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .itemArea p {
    font-size: 1.4rem;
    margin-bottom: 12px;
  }
}

#content .section .sec_inner .itemArea p + a {
  display: inline-block;
  padding: 1px 10px 2px;
  border: 1px solid #524238;
  color: #524238;
  font-size: 1.2rem;
  letter-spacing: 0.1em;
  text-align: center;
  height: 15px;
  line-height: 15px;
  transition: .4s;
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .itemArea p + a {
    font-size: 1.4rem;
  }
}

@media screen and (max-width: 999px) {
  #content .section .sec_inner .slider {
    margin-top: 40px;
  }
}

#content .section .sec_inner .slider .slideWrap {
  padding: 27px 0 30px;
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .slider .slideWrap {
    padding: 60px 0;
  }
}

#content .section .sec_inner .slider .slideWrap.ama {
  background-color: #DEC2B6;
}

#content .section .sec_inner .slider .slideWrap.ama .picArea .wrap::after {
  background: no-repeat center/64% url(../img/back_ama.svg) #fff;
}

#content .section .sec_inner .slider .slideWrap.kara {
  background-color: #99AABA;
}

#content .section .sec_inner .slider .slideWrap.kara .picArea .wrap::after {
  background: no-repeat center/64% url(../img/back_kara.svg) #fff;
}

#content .section .sec_inner .slider .picArea {
  margin-bottom: 27px;
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .slider .picArea {
    margin-bottom: 60px;
  }
}

#content .section .sec_inner .slider .picArea .wrap {
  width: 92.8%;
  margin: 0 auto;
  position: relative;
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .slider .picArea .wrap {
    width: 78%;
  }
}

#content .section .sec_inner .slider .picArea .wrap::before {
  content: "";
  display: block;
  padding-top: calc(582 / 690 * 100%);
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .slider .picArea .wrap::before {
    padding-top: calc(586 / 750 * 100%);
  }
}

#content .section .sec_inner .slider .picArea .wrap::after {
  content: "";
  display: block;
  width: 72.4%;
  height: 86%;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 0;
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .slider .picArea .wrap::after {
    width: 66.6%;
    height: 85%;
  }
}

#content .section .sec_inner .slider .picArea .wrap div {
  opacity: 0;
  position: absolute;
  z-index: 1;
}

#content .section .sec_inner .slider .textArea {
  width: 92%;
  margin: 0 auto;
  padding: 20px;
  background-color: #fff;
  box-sizing: border-box;
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .slider .textArea {
    width: 89%;
    display: flex;
    align-items: center;
    padding: 50px;
  }
}

#content .section .sec_inner .slider .textArea p.comment {
  font-size: 1.2rem;
  line-height: 1.8;
  letter-spacing: 0.05em;
  text-align: justify;
  margin-bottom: 25px;
  padding: 10px;
  box-sizing: border-box;
  position: relative;
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .slider .textArea p.comment {
    width: 50%;
    font-size: 1.4rem;
    padding: 20px;
  }
}

#content .section .sec_inner .slider .textArea p.comment::before {
  content: "";
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 24px;
  height: 14px;
  border-top: 1px solid #524238;
  border-left: 1px solid #524238;
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .slider .textArea p.comment::before {
    width: 30px;
    height: 20px;
  }
}

#content .section .sec_inner .slider .textArea p.comment::after {
  content: "";
  display: block;
  position: absolute;
  bottom: 0;
  right: 0;
  width: 24px;
  height: 14px;
  border-right: 1px solid #524238;
  border-bottom: 1px solid #524238;
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .slider .textArea p.comment::after {
    width: 30px;
    height: 20px;
  }
}

@media screen and (max-width: 999px) {
  #content .section .sec_inner .slider .textArea .credit_area {
    width: 100%;
    margin: 0 auto;
  }
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .slider .textArea .credit_area {
    width: 50%;
    margin: 0 auto;
    padding-left: 50px;
  }
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .slider .textArea .credit_area ul {
    /*display: flex;
                  flex-wrap: wrap;*/
  }
}

#content .section .sec_inner .slider .textArea .credit_area ul li {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: 'noto-sans-cjk-jp';
  letter-spacing: 0.025em;
  line-height: 1.0;
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .slider .textArea .credit_area ul li {
    width: 96%;
    margin: 0 auto;
    box-sizing: border-box;
  }
}

@media screen and (max-width: 999px) {
  #content .section .sec_inner .slider .textArea .credit_area ul li:not(:last-of-type) {
    margin-bottom: 8px;
  }
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .slider .textArea .credit_area ul li {
    /*&:not(:nth-last-of-type(-n+2)) {
                      margin-bottom: 10px;
                    }*/
  }
  #content .section .sec_inner .slider .textArea .credit_area ul li:not(:last-of-type) {
    margin-bottom: 10px;
  }
}

#content .section .sec_inner .slider .textArea .credit_area ul li span {
  display: inline-block;
  font-size: 1.2rem;
  width: 80%;
}

@media screen and (max-width: 999px) {
  #content .section .sec_inner .slider .textArea .credit_area ul li span {
    line-height: 16px;
    width: 82%;
  }
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .slider .textArea .credit_area ul li span {
    font-size: 1.4rem;
    line-height: 1.4;
  }
}

#content .section .sec_inner .slider .textArea .credit_area ul li span.small {
  font-size: 1rem;
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .slider .textArea .credit_area ul li span.small {
    font-size: 1.1rem;
  }
}

#content .section .sec_inner .slider .textArea .credit_area ul li a {
  display: inline-block;
  padding: 0px 10px;
  font-size: 1rem;
  color: #524238;
  text-align: center;
  height: 15px;
  line-height: 15px;
  transition: .4s;
}

@media screen and (min-width: 1000px) {
  #content .section .sec_inner .slider .textArea .credit_area ul li a {
    font-size: 1.2rem;
    height: 20px;
    line-height: 20px;
  }
}

#content .section .sec_inner .slider .textArea .credit_area ul li a:not(.disabled) {
  border: 1px solid #524238;
}

#content .section .sec_inner .slider .textArea .credit_area ul li a:not(.disabled):hover {
  background-color: #524238;
  color: #fff;
}

#content .section .sec_inner .slider .textArea .credit_area ul li a.disabled {
  padding: 0px;
  text-align: right;
}

#content h4 {
  color: #C4A48F;
  font-size: 1.4rem;
  font-weight: 500;
  letter-spacing: 0.025em;
  line-height: 1.0;
  margin-bottom: 16px;
  text-align: center;
}

@media screen and (min-width: 1000px) {
  #content h4 {
    font-size: 1.4rem;
    margin-bottom: 24px;
  }
}

#content div.button {
  text-align: center;
}

@media screen and (max-width: 999px) {
  #content div.button {
    width: 70%;
    margin: 0 auto 0;
  }
}

@media screen and (min-width: 1000px) {
  #content div.button {
    width: 60%;
    margin: 60px auto 0;
  }
}

@media screen and (min-width: 1000px) {
  #content div.button .content_02 {
    display: flex;
  }
}

#content div.button a {
  display: block;
  line-height: 1.0;
  padding: 12px 0;
  box-sizing: border-box;
  border: 1px solid #524238;
  color: #524238;
  background-color: #ffffff;
  transition: .4s;
}

@media screen and (min-width: 1000px) {
  #content div.button a {
    width: 60%;
    max-width: 250px;
    margin: 0 auto;
    padding: 20px 0;
  }
}

#content div.button a:hover {
  opacity: 0.5;
}

#content div.button a:nth-of-type(1) {
  display: flex;
  align-items: center;
  justify-content: center;
}

@media screen and (max-width: 999px) {
  #content div.button a:nth-of-type(1) {
    margin-bottom: 15px;
  }
}

#content div.button a:nth-of-type(1) span.icon {
  display: inline-block;
  width: 14px;
  margin-left: 6px;
}

#content div.button a span:not(.icon) {
  font-family: 'noto-sans-cjk-jp';
  font-weight: 500;
  font-size: 1.2rem;
  letter-spacing: 0.025em;
  line-height: 1.0;
}

@media screen and (min-width: 1000px) {
  #content div.button a span:not(.icon) {
    font-size: 1.4rem;
  }
}

#content #line {
  width: 300px;
  height: 1px;
  background-color: #444;
  margin: 80px auto 0;
}

@media screen and (min-width: 1000px) {
  #content #line {
    width: 600px;
    height: 1px;
    margin: 120px auto 0;
  }
}

.slider .slideWrap .picArea .wrap div {
  opacity: 0;
  transition: .8s;
}

.slider .slick-slide.slick-current .slideWrap .picArea .wrap div,
.slider .slick-slide.is-active-next .slideWrap .picArea .wrap div {
  animation: show 1s ease forwards;
  opacity: 1;
}

.slider .slick-slide.slick-current .slideWrap .picArea .wrap div:nth-of-type(1),
.slider .slick-slide.is-active-next .slideWrap .picArea .wrap div:nth-of-type(1) {
  animation-delay: .1s;
}

.slider .slick-slide.slick-current .slideWrap .picArea .wrap div:nth-of-type(2),
.slider .slick-slide.is-active-next .slideWrap .picArea .wrap div:nth-of-type(2) {
  animation-delay: .2s;
}

.slider .slick-slide.slick-current .slideWrap .picArea .wrap div:nth-of-type(3),
.slider .slick-slide.is-active-next .slideWrap .picArea .wrap div:nth-of-type(3) {
  animation-delay: .3s;
}

#kastane {
  margin-bottom: 40px !important;
}

#mys .ama .picArea .wrap div:nth-of-type(1) {
  top: 0;
  left: 0;
  width: 28.4%;
}

@media screen and (min-width: 1000px) {
  #mys .ama .picArea .wrap div:nth-of-type(1) {
    left: 2.5%;
    width: 26%;
  }
}

#mys .ama .picArea .wrap div:nth-of-type(2) {
  top: 0;
  left: 26%;
  width: 36%;
}

@media screen and (min-width: 1000px) {
  #mys .ama .picArea .wrap div:nth-of-type(2) {
    left: 30%;
    width: 33%;
  }
}

#mys .ama .picArea .wrap div:nth-of-type(3) {
  top: 0;
  right: 0;
  width: 36%;
}

@media screen and (min-width: 1000px) {
  #mys .ama .picArea .wrap div:nth-of-type(3) {
    width: 33%;
  }
}

#mys .kara .picArea .wrap div:nth-of-type(1) {
  top: 0;
  left: 0;
  width: 34.5%;
}

@media screen and (min-width: 1000px) {
  #mys .kara .picArea .wrap div:nth-of-type(1) {
    left: 0;
    width: 32%;
  }
}

#mys .kara .picArea .wrap div:nth-of-type(2) {
  top: 0;
  left: 37.3%;
  width: 29.4%;
}

@media screen and (min-width: 1000px) {
  #mys .kara .picArea .wrap div:nth-of-type(2) {
    left: 38%;
    width: 27.2%;
  }
}

#mys .kara .picArea .wrap div:nth-of-type(3) {
  top: 0;
  right: 0;
  width: 32.4%;
}

@media screen and (min-width: 1000px) {
  #mys .kara .picArea .wrap div:nth-of-type(3) {
    width: 30%;
  }
}

#wwg .ama .picArea .wrap div:nth-of-type(1) {
  top: 0;
  left: 0;
  width: 31.1%;
}

@media screen and (min-width: 1000px) {
  #wwg .ama .picArea .wrap div:nth-of-type(1) {
    left: 0;
    width: 29.3%;
  }
}

#wwg .ama .picArea .wrap div:nth-of-type(2) {
  top: 0;
  left: 31.8%;
  width: 28.7%;
}

@media screen and (min-width: 1000px) {
  #wwg .ama .picArea .wrap div:nth-of-type(2) {
    left: 34.6%;
    width: 26.7%;
  }
}

#wwg .ama .picArea .wrap div:nth-of-type(3) {
  top: 0;
  right: -1%;
  width: 42.3%;
}

@media screen and (min-width: 1000px) {
  #wwg .ama .picArea .wrap div:nth-of-type(3) {
    right: -3%;
    width: 39.2%;
  }
}

#wwg .kara .picArea .wrap div:nth-of-type(1) {
  top: 0;
  left: 0;
  width: 26%;
}

@media screen and (min-width: 1000px) {
  #wwg .kara .picArea .wrap div:nth-of-type(1) {
    left: 0;
    width: 24%;
  }
}

#wwg .kara .picArea .wrap div:nth-of-type(2) {
  top: 0;
  left: 32.3%;
  width: 31.8%;
}

@media screen and (min-width: 1000px) {
  #wwg .kara .picArea .wrap div:nth-of-type(2) {
    left: 35.3%;
    width: 29.6%;
  }
}

#wwg .kara .picArea .wrap div:nth-of-type(3) {
  top: 0;
  right: 0;
  width: 29.5%;
}

@media screen and (min-width: 1000px) {
  #wwg .kara .picArea .wrap div:nth-of-type(3) {
    right: -3.6%;
    width: 27.3%;
  }
}

#chico .ama .picArea .wrap div:nth-of-type(1) {
  top: 0;
  left: 0;
  width: 31.1%;
}

@media screen and (min-width: 1000px) {
  #chico .ama .picArea .wrap div:nth-of-type(1) {
    left: 0;
    width: 28.8%;
  }
}

#chico .ama .picArea .wrap div:nth-of-type(2) {
  top: 0;
  left: 37%;
  width: 23.6%;
}

@media screen and (min-width: 1000px) {
  #chico .ama .picArea .wrap div:nth-of-type(2) {
    left: 38.4%;
    width: 22%;
  }
}

#chico .ama .picArea .wrap div:nth-of-type(3) {
  top: 0;
  right: 0;
  width: 34.5%;
}

@media screen and (min-width: 1000px) {
  #chico .ama .picArea .wrap div:nth-of-type(3) {
    width: 32%;
  }
}

#chico .kara .picArea .wrap div:nth-of-type(1) {
  top: 0;
  left: 0;
  width: 37%;
}

@media screen and (min-width: 1000px) {
  #chico .kara .picArea .wrap div:nth-of-type(1) {
    left: 0;
    width: 34.4%;
  }
}

#chico .kara .picArea .wrap div:nth-of-type(2) {
  top: 0;
  left: 39.4%;
  width: 26.7%;
}

@media screen and (min-width: 1000px) {
  #chico .kara .picArea .wrap div:nth-of-type(2) {
    left: 39.2%;
    width: 24.8%;
  }
}

#chico .kara .picArea .wrap div:nth-of-type(3) {
  top: 0;
  right: 0;
  width: 26.5%;
}

@media screen and (min-width: 1000px) {
  #chico .kara .picArea .wrap div:nth-of-type(3) {
    right: 2%;
    width: 24.5%;
  }
}

#discoat .ama .picArea .wrap div:nth-of-type(1) {
  top: 0;
  left: 0;
  width: 31.5%;
}

@media screen and (min-width: 1000px) {
  #discoat .ama .picArea .wrap div:nth-of-type(1) {
    left: 0;
    width: 29%;
  }
}

#discoat .ama .picArea .wrap div:nth-of-type(2) {
  top: 0;
  left: 37%;
  width: 29.7%;
}

@media screen and (min-width: 1000px) {
  #discoat .ama .picArea .wrap div:nth-of-type(2) {
    left: 37%;
    width: 27.6%;
  }
}

#discoat .ama .picArea .wrap div:nth-of-type(3) {
  top: 0;
  right: 0;
  width: 29.7%;
}

@media screen and (min-width: 1000px) {
  #discoat .ama .picArea .wrap div:nth-of-type(3) {
    width: 27.6%;
  }
}

#discoat .kara .picArea .wrap div:nth-of-type(1) {
  top: 0;
  left: 0;
  width: 33.4%;
}

@media screen and (min-width: 1000px) {
  #discoat .kara .picArea .wrap div:nth-of-type(1) {
    left: 0;
    width: 31%;
  }
}

#discoat .kara .picArea .wrap div:nth-of-type(2) {
  top: 0;
  left: 37.5%;
  width: 28.4%;
}

@media screen and (min-width: 1000px) {
  #discoat .kara .picArea .wrap div:nth-of-type(2) {
    left: 38.4%;
    width: 26.2%;
  }
}

#discoat .kara .picArea .wrap div:nth-of-type(3) {
  top: 0;
  right: 0;
  width: 30.7%;
}

@media screen and (min-width: 1000px) {
  #discoat .kara .picArea .wrap div:nth-of-type(3) {
    right: 0%;
    width: 28.4%;
  }
}

#luis .ama .picArea .wrap div:nth-of-type(1) {
  top: 0;
  left: 0;
  width: 32.6%;
}

@media screen and (min-width: 1000px) {
  #luis .ama .picArea .wrap div:nth-of-type(1) {
    left: 0;
    width: 30%;
  }
}

#luis .ama .picArea .wrap div:nth-of-type(2) {
  top: 0;
  left: 30.8%;
  width: 31.4%;
}

@media screen and (min-width: 1000px) {
  #luis .ama .picArea .wrap div:nth-of-type(2) {
    left: 32%;
    width: 29%;
  }
}

#luis .ama .picArea .wrap div:nth-of-type(3) {
  top: 0;
  right: 0;
  width: 43.4%;
}

@media screen and (min-width: 1000px) {
  #luis .ama .picArea .wrap div:nth-of-type(3) {
    right: -4%;
    width: 40%;
  }
}

#luis .kara .picArea .wrap div:nth-of-type(1) {
  top: 0;
  left: 0;
  width: 27.7%;
}

@media screen and (min-width: 1000px) {
  #luis .kara .picArea .wrap div:nth-of-type(1) {
    left: 0;
    width: 25.3%;
  }
}

#luis .kara .picArea .wrap div:nth-of-type(2) {
  top: 0;
  left: 35%;
  width: 27.3%;
}

@media screen and (min-width: 1000px) {
  #luis .kara .picArea .wrap div:nth-of-type(2) {
    left: 36%;
    width: 25.3%;
  }
}

#luis .kara .picArea .wrap div:nth-of-type(3) {
  top: 0;
  right: 0;
  width: 31.3%;
}

@media screen and (min-width: 1000px) {
  #luis .kara .picArea .wrap div:nth-of-type(3) {
    right: 0%;
    width: 29%;
  }
}

#kastane .ama .picArea .wrap div:nth-of-type(1) {
  top: 0;
  left: 0;
  width: 37.7%;
}

@media screen and (min-width: 1000px) {
  #kastane .ama .picArea .wrap div:nth-of-type(1) {
    left: -3.7%;
    width: 34.8%;
  }
}

#kastane .ama .picArea .wrap div:nth-of-type(2) {
  top: 0;
  left: 35.6%;
  width: 29.4%;
}

@media screen and (min-width: 1000px) {
  #kastane .ama .picArea .wrap div:nth-of-type(2) {
    left: 36.4%;
    width: 27.2%;
  }
}

#kastane .ama .picArea .wrap div:nth-of-type(3) {
  top: 0;
  right: 0;
  width: 28%;
}

@media screen and (min-width: 1000px) {
  #kastane .ama .picArea .wrap div:nth-of-type(3) {
    right: 0%;
    width: 25.9%;
  }
}

#kastane .kara .picArea .wrap div:nth-of-type(1) {
  top: 0;
  left: 0;
  width: 29%;
}

@media screen and (min-width: 1000px) {
  #kastane .kara .picArea .wrap div:nth-of-type(1) {
    left: 1.5%;
    width: 27%;
  }
}

#kastane .kara .picArea .wrap div:nth-of-type(2) {
  top: 0;
  left: 32.2%;
  width: 31.3%;
}

@media screen and (min-width: 1000px) {
  #kastane .kara .picArea .wrap div:nth-of-type(2) {
    left: 34.4%;
    width: 29%;
  }
}

#kastane .kara .picArea .wrap div:nth-of-type(3) {
  top: 0;
  right: 0;
  width: 31%;
}

@media screen and (min-width: 1000px) {
  #kastane .kara .picArea .wrap div:nth-of-type(3) {
    right: 0%;
    width: 28.8%;
  }
}

.obi {
  position: relative;
  overflow: hidden;
}

.obi::after {
  content: "";
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #fff;
}

.obi.off::after {
  transform: translateX(110%);
  transition: 0.8s 0.2s cubic-bezier(0, 0.83, 0.82, 0.97);
}

.navToggle {
  position: fixed;
  top: 35px;
  right: 25px;
  width: 50px;
  height: 50px;
  background-color: #fff;
  border-radius: 50%;
  z-index: 500;
  overflow: hidden;
}

@media screen and (min-width: 1000px) {
  .navToggle {
    width: 70px;
    height: 70px;
    top: 45px;
    right: 35px;
  }
}

.navToggle:hover {
  cursor: pointer;
}

.navToggle span {
  display: block;
  width: 20px;
  height: 1px;
  background-color: #000;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  transition: .4s;
}

@media screen and (min-width: 1000px) {
  .navToggle span {
    width: 30px;
  }
}

.navToggle span:nth-of-type(1) {
  top: 35%;
  transform: translate(-50%, -35%);
}

.navToggle span:nth-of-type(3) {
  top: 65%;
  transform: translate(-50%, -65%);
}

.navToggle.active span:nth-of-type(1) {
  top: 50%;
  transform: translate(-50%, -50%) rotate(135deg);
}

.navToggle.active span:nth-of-type(2) {
  transform: translateX(150%);
}

.navToggle.active span:nth-of-type(3) {
  top: 50%;
  transform: translate(-50%, -50%) rotate(-135deg);
}

.nav {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #fff;
  opacity: 0;
  visibility: hidden;
  transition: .8s;
  z-index: 400;
  overflow: scroll;
}

.nav.active {
  opacity: 1;
  visibility: visible;
}

.nav .wrap {
  width: 86.6%;
  margin: 0 auto;
  padding: 80px 0;
}

@media screen and (min-width: 1000px) {
  .nav .wrap {
    max-width: 1080px;
    margin: 0 auto;
    padding: 100px 0;
  }
}

.nav .wrap h4 {
  width: 60%;
  margin: 0 auto 30px;
}

@media screen and (min-width: 1000px) {
  .nav .wrap h4 {
    max-width: 320px;
    margin: 0 auto 50px;
  }
}

.nav .wrap p.concept {
  text-align: center;
  font-family: 'noto-sans-cjk-jp';
  font-size: 1rem;
  line-height: 2.1;
  letter-spacing: 0.025em;
  margin-bottom: 40px;
}

@media screen and (min-width: 1000px) {
  .nav .wrap p.concept {
    font-size: 1.2rem;
    margin-bottom: 60px;
  }
}

.nav .wrap ul {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
}

@media screen and (min-width: 1000px) {
  .nav .wrap ul {
    justify-content: flex-start;
    max-width: 1080px;
    margin: 0 auto;
  }
}

@media screen and (max-width: 999px) {
  .nav .wrap ul li {
    width: calc(50% - 12px);
  }
  .nav .wrap ul li:not(:last-of-type) {
    margin-bottom: 20px;
  }
}

@media screen and (min-width: 1000px) {
  .nav .wrap ul li {
    width: calc(25% - 20px);
    padding: 10px;
  }
  .nav .wrap ul li:nth-of-type(-n+4) {
    margin-bottom: 30px;
  }
}

.nav .wrap ul li a {
  display: block;
}

.nav .wrap ul li a:hover {
  opacity: 0.5;
}

.nav .wrap ul li a div {
  margin-bottom: 7px;
}

.nav .wrap ul li a p {
  text-align: left;
  font-family: 'noto-sans-cjk-jp';
  font-size: 1.3rem;
  letter-spacing: 0.025em;
  line-height: 1.4;
}

@media screen and (min-width: 1000px) {
  .nav .wrap ul li a p {
    line-height: 1.6;
    font-size: 1.5rem;
  }
}

.nav .wrap ul li a p span {
  display: block;
}

.nav .wrap ul li a p span:nth-of-type(1) {
  font-size: 1rem;
  margin-bottom: 4px;
}

@media screen and (min-width: 1000px) {
  .nav .wrap ul li a p span:nth-of-type(1) {
    margin-bottom: 6px;
    font-size: 1.1rem;
  }
}

.nav .wrap ul li a p span:nth-of-type(2) {
  color: #999999;
  font-size: 1rem;
  margin-top: 4px;
}

@media screen and (min-width: 1000px) {
  .nav .wrap ul li a p span:nth-of-type(2) {
    margin-top: 6px;
    font-size: 1.1rem;
  }
}

#footer {
  background-color: #F0E6DF !important;
}

#footer .insta {
  display: block;
  width: 10%;
  max-width: 20px;
  margin: 0 auto 40px;
}

@media screen and (min-width: 1000px) {
  #footer .insta {
    max-width: 24px;
    margin: 0 auto 50px;
  }
}

#footer .insta:hover {
  opacity: 0.5;
}

#page-top {
  position: fixed;
  bottom: 15px;
  right: 15px;
  z-index: 999;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 60px;
  height: 60px;
  background-color: rgba(166, 164, 164, 0.5);
}

@media screen and (max-width: 999px) {
  #page-top {
    right: 0;
    bottom: 0;
    width: 40px;
    height: 40px;
  }
}

.cover_anim:before {
  animation: cover_T 1.6s cubic-bezier(0.4, 0, 0.2, 1) forwards;
  background: #f8ced2;
  width: 120%;
  bottom: 0;
  content: '';
  left: 0;
  pointer-events: none;
  position: absolute;
  right: 0;
  top: 0;
  z-index: 1;
}

.cover_anim01:before {
  animation: cover_L 1.6s cubic-bezier(0.4, 0, 0.2, 1) forwards;
  background: #fff;
  bottom: 0;
  content: '';
  left: 0;
  pointer-events: none;
  position: absolute;
  right: 0;
  top: 0;
  z-index: 1;
}

.bg_color::after {
  content: "";
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  background-color: white;
  z-index: 100;
  animation: shrink 1.2s ease-in-out 0s 1 forwards;
}

.opacity {
  animation: opacity 1.6s ease-in-out 1 both;
}

/*.rotate {
  animation: rotate 1.6s ease-in-out .6s 1 forwards;
}*/
.opacity01 {
  opacity: 1 !important;
}

.logo_small {
  opacity: 0;
  transform: translateY(50px);
}

.logo_small.translate {
  opacity: 1 !important;
  transform: translateY(0);
  transition: all 2s;
}

h1.translate01 {
  opacity: 1 !important;
  transform: translate(-50%, -50%) !important;
  transition: all 1s 1s;
}

h3.translate02 {
  opacity: 1 !important;
  transform: translate(-90%, -95%) !important;
  transition: all 1s 1.6s;
}

.rotate {
  opacity: 0;
  transform: translate3d(0%, -35%, 0) rotate3d(1, 1, 0, -30deg);
  transition: transform 1.4s;
}

.rotate.in {
  opacity: 1;
  transform: translate3d(0, 0, 0) rotate3d(1, 1, 0, 0deg);
}

.filter {
  filter: blur(10px) brightness(2) saturate(1);
  -webkit-filter: blur(10px) brightness(2) saturate(1);
  -moz-filter: blur(10px) brightness(2) saturate(1);
  transition: filter 0.6s cubic-bezier(0.1, 0, 0.2, 1);
}

.filter.off {
  filter: blur(0) brightness(1) saturate(1);
  -webkit-filter: blur(0) brightness(1) saturate(1);
  -moz-filter: blur(0) brightness(1) saturate(1);
}

/*.scale {
  opacity: 1 !important;
  transform: scale(1) !important;
  transition: all 2s ease-in-out;
}*/
@media screen and (max-width: 999px) {
  .sp_none {
    display: none !important;
  }
}

@media screen and (min-width: 1000px) {
  .pc_none {
    display: none !important;
  }
}

div[class*="section"] {
  margin-bottom: 80px !important;
}

@media screen and (min-width: 1000px) {
  div[class*="section"] {
    margin-bottom: 130px !important;
  }
}

/*div[class*="section"]:not(:last-of-type) {
  @include mq(sp) {
    margin-bottom: 100px;
  }
  @include mq(pc) {
    margin-bottom: 100px;
  }
}*/
/*div[class*="section"]:nth-last-child(2) {
  @include mq(sp) {
    margin-bottom: 0;
  }
}*/
/*slick
_______________________________________*/
/*矢印*/
.slick-prev {
  left: 0 !important;
}

.slick-next {
  right: 0 !important;
}

.slick-prev, .slick-next {
  width: 30px !important;
  height: 30px !important;
  position: relative;
  transition: .4s;
}

@media screen and (min-width: 1000px) {
  .slick-prev, .slick-next {
    width: 50px !important;
    height: 50px !important;
  }
}

.slick-prev.pink, .slick-next.pink {
  background-color: #AD8B86 !important;
}

.slick-prev.purple, .slick-next.purple {
  background-color: #6F859A !important;
}

.slick-next::before {
  content: "" !important;
  display: block;
  position: absolute;
  top: 50%;
  right: 45%;
  transform: translateY(-50%) rotate(45deg);
  width: 8px;
  height: 8px;
  border-top: 1px solid #fff;
  border-right: 1px solid #fff;
  opacity: 1 !important;
}

.slick-prev::before {
  content: "" !important;
  display: block;
  position: absolute;
  top: 50%;
  left: 45%;
  transform: translateY(-50%) rotate(-135deg);
  width: 8px;
  height: 8px;
  border-top: 1px solid #fff;
  border-right: 1px solid #fff;
  opacity: 1 !important;
}

/*タブ*/
.slick-dots {
  top: -40px;
}

@media screen and (max-width: 999px) {
  .slick-dots {
    display: flex !important;
    justify-content: space-between;
    height: 40px;
  }
}

@media screen and (min-width: 1000px) {
  .slick-dots {
    display: block !important;
    top: 0;
    right: -50px !important;
    width: 50px !important;
  }
}

.slick-dots li {
  width: 49.6% !important;
  height: 40px !important;
  margin: 0 !important;
}

@media screen and (min-width: 1000px) {
  .slick-dots li {
    width: 100% !important;
    height: 374px !important;
  }
}

.slick-dots li button {
  width: 100% !important;
  height: 100% !important;
  padding: 0 !important;
}

.slick-dots li button:before {
  content: "" !important;
  opacity: 1 !important;
  width: 100% !important;
  height: 100% !important;
  transform: scale(1) !important;
}

@media screen and (max-width: 999px) {
  .slick-dots li button:before {
    border-radius: 7px 7px 0 0;
  }
}

@media screen and (min-width: 1000px) {
  .slick-dots li button:before {
    border-radius: 0px 14px 14px 0;
  }
}

@media screen and (min-width: 1000px) {
  .slick-dots li:nth-of-type(1) {
    margin-bottom: 2px !important;
  }
}

.slick-dots li:nth-of-type(1) button:before {
  background: no-repeat center/38.7% url(../img/ama.svg) #DEC2B6;
}

@media screen and (min-width: 1000px) {
  .slick-dots li:nth-of-type(1) button:before {
    background: no-repeat center/60% url(../img/ama_tate.svg) #DEC2B6;
  }
}

.slick-dots li:nth-of-type(2) button:before {
  background: no-repeat center/38.5% url(../img/kara.svg) #99AABA;
}

@media screen and (min-width: 1000px) {
  .slick-dots li:nth-of-type(2) button:before {
    background: no-repeat center/60% url(../img/kara_tate.svg) #99AABA;
  }
}

/*テキストアニメーション
_______________________________________*/
/* ANIMATION
--------------------------------------*/
.fuwatAnime {
  -webkit-animation-fill-mode: both;
  -ms-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-duration: .6s;
  -ms-animation-duration: .6s;
  animation-duration: .6s;
  -webkit-animation-name: fuwatAnime;
  -ms-animation-name: fuwatAnime;
  animation-name: fuwatAnime;
  visibility: visible !important;
}

@-webkit-keyframes fuwatAnime {
  0% {
    opacity: 0;
    -webkit-transform: translateY(50px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
  }
}

@keyframes fuwatAnime {
  0% {
    opacity: 0;
    -webkit-transform: translateY(50px);
    -ms-transform: translateY(50px);
    transform: translateY(50px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -ms-transform: translateY(0);
    transform: translateY(0);
  }
}

.fuwatAnimeFromTop {
  -webkit-animation-fill-mode: both;
  -ms-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-duration: 1.5s;
  -ms-animation-duration: 1.5s;
  animation-duration: 1.5s;
  -webkit-animation-name: fuwatAnimeFromTop;
  -ms-animation-name: fuwatAnimeFromTop;
  animation-name: fuwatAnimeFromTop;
  visibility: visible !important;
}

@-webkit-keyframes fuwatAnimeFromTop {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-50px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
  }
}

@keyframes fuwatAnimeFromTop {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-50px);
    -ms-transform: translateY(-50px);
    transform: translateY(-50px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -ms-transform: translateY(0);
    transform: translateY(0);
  }
}

.blink {
  animation: blink 2s ease 0s infinite normal;
  -webkit-animation: blink 2s ease 0s infinite normal;
}

@keyframes blink {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-webkit-keyframes blink {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@keyframes bounce {
  0% {
    opacity: 0;
    transform: scale(0.9);
  }
  50% {
    opacity: 1;
    transform: scale(1.03);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes show {
  0% {
    opacity: 0;
    transform: translateY(-15%);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes opacity {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@keyframes rotate {
  0% {
    opacity: 0;
    transform: scale(1.4) rotate(12deg);
  }
  100% {
    opacity: 1.0;
    transform: scale(1) rotate(0);
  }
}

@keyframes fadeIn01 {
  0% {
    opacity: 0.4;
    transform: matrix(1.5, 0.2, 0.2, 1.5, 0, -10);
  }
  30% {
    opacity: 0.4;
    transform: matrix(1.3, 0.1, 0.1, 1.3, 3, -7);
  }
  100% {
    opacity: 1.0;
    transform: matrix(1, 0, 0, 1, 0, 0);
  }
}

@keyframes zoomIn {
  0% {
    opacity: 0.1;
    transform: scale(1.4) translateY(-30px);
  }
  100% {
    opacity: 1.0;
    transform: scale(1) translateY(0px);
  }
}

@keyframes zoomIn01 {
  0% {
    transform: scale(1.4);
  }
  100% {
    transform: scale(1);
  }
}

/*.position {
  opacity: 0;
  -webkit-animation: position 2s ease-in-out 0s 1 forwards;
      animation: position 2s ease-in-out 0s 1 forwards;
}*/
@keyframes position {
  0% {
    opacity: 0.4;
    transform: translateX(0);
  }
  100% {
    opacity: 1.0;
    transform: translateX(8px);
  }
}

@keyframes position_01 {
  0% {
    opacity: 0;
    transform: translate(-50%, 100px);
  }
  100% {
    opacity: 1.0;
    transform: translate(-50%, 0px);
  }
}

@keyframes bg_size {
  0% {
    border: none;
  }
  100% {
    border: 1px solid;
  }
}

@keyframes cover_R {
  100% {
    transform: translateX(100%);
  }
}

@keyframes cover_L {
  100% {
    transform: translateX(-100%);
  }
}

@keyframes cover_T {
  100% {
    transform: translateY(-120%);
  }
}

@keyframes arrow_anime {
  0% {
    opacity: 0;
    transform: translate(-50%, -10px) rotate(180deg);
  }
  100% {
    opacity: 1;
    transform: translate(-50%, 50px) rotate(180deg);
  }
}

@keyframes bar_anim_y {
  0% {
    transform: translateY(-100%);
  }
  30% {
    transform: translateY(0%);
  }
  100% {
    transform: translateY(100%);
  }
}

/*左から右*/
@keyframes loop1 {
  0% {
    -webkit-transform: translateX(100%);
    -ms-transform: translateX(100%);
    transform: translateX(100%);
  }
  100% {
    -webkit-transform: translateX(-100%);
    -ms-transform: translateX(-100%);
    transform: translateX(-100%);
  }
}

@keyframes loop2 {
  0% {
    -webkit-transform: translateX(0%);
    -ms-transform: translateX(0%);
    transform: translateX(0%);
  }
  100% {
    -webkit-transform: translateX(-200%);
    -ms-transform: translateX(-200%);
    transform: translateX(-200%);
  }
}

/*右から左*/
@keyframes loop3 {
  0% {
    -webkit-transform: translateX(-100%);
    -ms-transform: translateX(-100%);
    transform: translateX(-100%);
  }
  100% {
    -webkit-transform: translateX(100%);
    -ms-transform: translateX(100%);
    transform: translateX(100%);
  }
}

@keyframes loop4 {
  0% {
    -webkit-transform: translateX(-200%);
    -ms-transform: translateX(-200%);
    transform: translateX(-200%);
  }
  100% {
    -webkit-transform: translateX(0%);
    -ms-transform: translateX(0%);
    transform: translateX(0%);
  }
}

@keyframes blur {
  0% {
    -webkit-filter: blur(10px);
    filter: blur(10px);
  }
  100% {
    -webkit-filter: blur(0px);
    filter: blur(0px);
  }
}

@keyframes animation-marquee {
  0% {
    transform: translate(0%);
  }
  100% {
    transform: translate(-100%);
  }
}

/*----- フェードイン -----*/
.inviewfadeInUp {
  opacity: 0;
  transform: translate(0, 20%);
  -webkit-transform: translate(0, 20%);
  transition: 1s;
  transition-delay: .4s;
}

.inviewfadeInUp01 {
  opacity: 0;
  transform: translate(0, 10px);
  -webkit-transform: translate(0, 10px);
  transition: 1s;
  transition-delay: 1s;
}

.inviewfadeInUp2 {
  opacity: 0;
  transform: translate(0, 40px);
  -webkit-transform: translate(0, 40px);
  transition: 1s;
  transition-delay: .4s;
}

.inviewfadeInUp3 {
  opacity: 0;
  transform: translate(0, 60px);
  -webkit-transform: translate(0, 60px);
  transition: 1.4s;
  transition-delay: .8s;
}

.inviewfadeIn {
  opacity: 0;
  transition: .8s;
}

.inviewfromTop {
  opacity: 0;
  transform: translate(0, -80px);
  -webkit-transform: translate(0, -80px);
  transition: 1s;
}

.inviewRight {
  opacity: 0;
  transform: translate(30px, -30px);
  -webkit-transform: translate(30px, -30px);
  transition: .8s;
  transition-delay: .8s;
}

.inviewLeft {
  opacity: 0;
  transform: translate(-30px, -30px);
  -webkit-transform: translate(-30px, -30px);
  transition: .8s;
  transition-delay: .8s;
}

/*.zoomIn {
      animation: zoomIn 1.2s 1s cubic-bezier(.3,1.59,.79,-0.64) 1 forwards;
    }*/
.fadeInUp {
  opacity: 1.0 !important;
  transform: translate(0, 0) !important;
  -webkit-transform: translate(0, 0) !important;
}

.fadeInUp01 {
  opacity: 1.0 !important;
}

/* loading
--------------------------------------*/
#loader-bg {
  position: fixed;
  width: 100%;
  height: 100vh;
  top: 0px;
  left: 0px;
  background: #FFF;
  z-index: 1;
  z-index: 99999;
}

#loader-bg #loading {
  display: flex;
  align-items: center;
  justify-content: center;
}

@media screen and (min-width: 1000px) {
  #loader-bg #loading {
    width: 100%;
    margin: auto;
    height: 100%;
  }
}

@media screen and (max-width: 999px) {
  #loader-bg #loading {
    width: 100%;
    margin: auto;
    height: 100%;
  }
}

@media screen and (min-width: 1000px) {
  #loader-bg #loading div {
    width: 20%;
    margin: auto;
  }
}

@media screen and (max-width: 999px) {
  #loader-bg #loading div {
    width: 40%;
    margin: auto;
  }
}

/*jQueryのCSS
--------------------------------------*/
#footer {
  background: #f6f6f6;
  padding: 50px 0;
}

@media screen and (min-width: 1000px) {
  #footer {
    width: 100%;
    margin: 0 auto;
    padding: 100px 0;
  }
}

@media screen and (min-width: 1000px) {
  #footer .wrap {
    /*width: 38%;
        max-width: 1280px;
        margin: 0 auto;*/
  }
}

#footer .wrap p {
  font-size: 14px;
  text-align: center;
  font-family: a-otf-futo-go-b101-pr6n, sans-serif;
  font-weight: 500;
  letter-spacing: 1px;
  text-indent: 1px;
}

#footer .wrap h4 {
  width: 46%;
  margin: 0 auto 25px;
  max-width: 200px;
}

@media screen and (min-width: 1000px) {
  #footer .wrap h4 {
    width: 14.8%;
    margin: 0 auto 40px;
  }
}

#footer .wrap a {
  display: block;
}

#footer .wrap a.casualTop {
  display: block;
  width: 180px;
  margin: 0 auto 60px;
  padding: 10px 0;
  box-sizing: border-box;
  border: 1px solid #444;
  font-size: 1.4rem;
  letter-spacing: 0.05em;
  text-align: center;
}

@media screen and (min-width: 1000px) {
  #footer .wrap a.casualTop {
    font-size: 1.6rem;
    width: 240px;
    padding: 14px 0;
    margin: 0 auto 120px;
  }
}

#footer .wrap a.casualTop:hover {
  opacity: 0.5;
}

#footer .wrap a.insta {
  width: 10%;
  max-width: 20px;
  margin: 0 auto 20px;
}

@media screen and (min-width: 1000px) {
  #footer .wrap a.insta {
    max-width: 24px;
    margin: 0 auto 40px;
  }
}

#footer .wrap a.insta:hover {
  opacity: 0.5;
}

@media screen and (min-width: 1000px) {
  #footer .wrap p {
    font-size: 14px;
    text-align: center;
    font-family: a-otf-futo-go-b101-pr6n, sans-serif;
    font-weight: 500;
    letter-spacing: 1px;
    text-indent: 1px;
  }
}

#footer .wrap p small {
  font-size: 10px;
  font-weight: normal;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlcyI6WyJzdHlsZS5zY3NzIiwiY29tcGFzcy9fY29tcGFzcy5zY3NzIiwiY29tcGFzcy9jb21wYXNzL19mdW5jdGlvbnMuc2NzcyIsImNvbXBhc3MvY29tcGFzcy9mdW5jdGlvbnMvX2xpc3RzLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvZnVuY3Rpb25zL19jcm9zc19icm93c2VyX3N1cHBvcnQuc2NzcyIsImNvbXBhc3MvY29tcGFzcy9mdW5jdGlvbnMvX2dyYWRpZW50X3N1cHBvcnQuc2NzcyIsImNvbXBhc3MvY29tcGFzcy9mdW5jdGlvbnMvX2NvbnN0YW50cy5zY3NzIiwiY29tcGFzcy9jb21wYXNzL2Z1bmN0aW9ucy9fZGlzcGxheS5zY3NzIiwiY29tcGFzcy9jb21wYXNzL2Z1bmN0aW9ucy9fY29sb3JzLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvX3V0aWxpdGllcy5zY3NzIiwiY29tcGFzcy9jb21wYXNzL3V0aWxpdGllcy9fY29sb3Iuc2NzcyIsImNvbXBhc3MvY29tcGFzcy91dGlsaXRpZXMvY29sb3IvX2NvbnRyYXN0LnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvdXRpbGl0aWVzL19nZW5lcmFsLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzIiwiY29tcGFzcy9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiY29tcGFzcy9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiY29tcGFzcy9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2Zsb2F0LnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3RhZy1jbG91ZC5zY3NzIiwiY29tcGFzcy9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19taW4uc2NzcyIsImNvbXBhc3MvY29tcGFzcy91dGlsaXRpZXMvX3Nwcml0ZXMuc2NzcyIsImNvbXBhc3MvY29tcGFzcy91dGlsaXRpZXMvc3ByaXRlcy9fYmFzZS5zY3NzIiwiY29tcGFzcy9jb21wYXNzL3V0aWxpdGllcy9zcHJpdGVzL19zcHJpdGUtaW1nLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvdXRpbGl0aWVzL190YWJsZXMuc2NzcyIsImNvbXBhc3MvY29tcGFzcy91dGlsaXRpZXMvdGFibGVzL19hbHRlcm5hdGluZy1yb3dzLWFuZC1jb2x1bW5zLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvdXRpbGl0aWVzL3RhYmxlcy9fYm9yZGVycy5zY3NzIiwiY29tcGFzcy9jb21wYXNzL3V0aWxpdGllcy90YWJsZXMvX3NjYWZmb2xkaW5nLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvdHlwb2dyYXBoeS9fbGlua3Muc2NzcyIsImNvbXBhc3MvY29tcGFzcy90eXBvZ3JhcGh5L2xpbmtzL19ob3Zlci1saW5rLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9fbGluay1jb2xvcnMuc2NzcyIsImNvbXBhc3MvY29tcGFzcy90eXBvZ3JhcGh5L2xpbmtzL191bnN0eWxlZC1saW5rLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvdHlwb2dyYXBoeS9fbGlzdHMuc2NzcyIsImNvbXBhc3MvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19ob3Jpem9udGFsLWxpc3Quc2NzcyIsImNvbXBhc3MvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faW5saW5lLWxpc3Quc2NzcyIsImNvbXBhc3MvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19pbmxpbmUtYmxvY2stbGlzdC5zY3NzIiwiY29tcGFzcy9jb21wYXNzL2NzczMvX2lubGluZS1ibG9jay5zY3NzIiwiY29tcGFzcy9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiY29tcGFzcy9jb21wYXNzL3R5cG9ncmFwaHkvX3RleHQuc2NzcyIsImNvbXBhc3MvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2VsbGlwc2lzLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0L19ub3dyYXAuc2NzcyIsImNvbXBhc3MvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX3JlcGxhY2VtZW50LnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0L19mb3JjZS13cmFwLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvX3R5cG9ncmFwaHkuc2NzcyIsImNvbXBhc3MvY29tcGFzcy90eXBvZ3JhcGh5L192ZXJ0aWNhbF9yaHl0aG0uc2NzcyIsImNvbXBhc3MvY29tcGFzcy9sYXlvdXQvX2dyaWQtYmFja2dyb3VuZC5zY3NzIiwiY29tcGFzcy9jb21wYXNzL2NzczMvX2ltYWdlcy5zY3NzIiwiY29tcGFzcy9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtc2l6ZS5zY3NzIiwiY29tcGFzcy9jb21wYXNzL19jc3MzLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvY3NzMy9fYm9yZGVyLXJhZGl1cy5zY3NzIiwiY29tcGFzcy9jb21wYXNzL2NzczMvX29wYWNpdHkuc2NzcyIsImNvbXBhc3MvY29tcGFzcy9jc3MzL19ib3gtc2hhZG93LnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvY3NzMy9fdGV4dC1zaGFkb3cuc2NzcyIsImNvbXBhc3MvY29tcGFzcy9jc3MzL19jb2x1bW5zLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvY3NzMy9fYm94LXNpemluZy5zY3NzIiwiY29tcGFzcy9jb21wYXNzL2NzczMvX2JveC5zY3NzIiwiY29tcGFzcy9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtY2xpcC5zY3NzIiwiY29tcGFzcy9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtb3JpZ2luLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvY3NzMy9fZm9udC1mYWNlLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvY3NzMy9fdHJhbnNmb3JtLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvY3NzMy9fdHJhbnNpdGlvbi5zY3NzIiwiY29tcGFzcy9jb21wYXNzL2NzczMvX2FwcGVhcmFuY2Uuc2NzcyIsImNvbXBhc3MvY29tcGFzcy9jc3MzL19yZWdpb25zLnNjc3MiLCJjb21wYXNzL2NvbXBhc3MvY3NzMy9faHlwaGVuYXRpb24uc2NzcyIsImNvbXBhc3MvY29tcGFzcy9jc3MzL19maWx0ZXIuc2NzcyIsImNvbXBhc3MvY29tcGFzcy9jc3MzL19waWUuc2NzcyIsImNvbXBhc3MvY29tcGFzcy9jc3MzL191c2VyLWludGVyZmFjZS5zY3NzIiwiY29tcGFzcy9jb21wYXNzL2NzczMvX2ZsZXhib3guc2NzcyIsIl9taXhpbi5zY3NzIiwiZm9vdGVyLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGNoYXJzZXQgXCJ1dGYtOFwiO1xuQGltcG9ydCBcImNvbXBhc3MvY29tcGFzc1wiO1xuQGltcG9ydCBcIm1peGluXCI7XG5cbi8q44Oq44K744OD44OIXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5AaW5jbHVkZSBnbG9iYWwtcmVzZXQ7XG5cbi8q44OV44Kp44Oz44OIXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cblxuLyrjg6Hjg4fjgqPjgqLjgq/jgqjjg6rjg7xcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4kYnJlYWtwb2ludHM6IChcbiAgJ3hzJzogJ3NjcmVlbiBhbmQgKG1pbi13aWR0aDogNDAwcHgpJyxcbiAgJ3NwJzogJ3NjcmVlbiBhbmQgKG1heC13aWR0aDogOTk5cHgpJyxcbiAgJ3BjJzogJ3NjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAwMHB4KScsXG4gICd4bCc6ICdzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCknLFxuKSAhZGVmYXVsdDtcblxuLyrlpInmlbBcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4kcGNGb250WHM6IDEwcHg7XG4kcGNGb250UzogMTJweDtcbiRwY0ZvbnRNOiAxNHB4O1xuJHBjRm9udEw6IDE2cHg7XG4kcGNGb250TEw6IDIycHg7XG4kcGNGb250WEw6IDI2cHg7XG4kcGNTcGFjZTE6IDE5cHg7XG4kcGNTcGFjZTI6IDM4cHg7XG4kcGNTcGFjZTM6IDU3cHg7XG4kc3BGb250UzogMTBweDtcbiRzcEZvbnRNOiAxMnB4O1xuJHNwRm9udEw6IDE0cHg7XG4kc3BGb250TEw6IDI0cHg7XG4kYmctd2lkdGg6IDMxOHB4O1xuJGJnLWhlaWdodDogMzE3cHg7XG5cbi8qIOOCs+ODs+ODhuODs+ODhFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbmh0bWwge1xuICBmb250LXNpemU6IDYyLjUlO1xuICBsaW5lLWhlaWdodDogMTtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG59XG5cbmJvZHkge1xuICBmb250LWZhbWlseTogbm90by1zYW5zLWNqay1qcCwgXCLmuLjjgrTjgrfjg4Pjgq/kvZNcIiwgWXVHb3RoaWMsIFwi5ri444K044K344OD44KvXCIsIFwiWXUgR290aGljXCIsIFwi44Oh44Kk44Oq44KqXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJwYWx0XCI7XG4gIGxpbmUtaGVpZ2h0OiAxLjA7XG4gIGNvbG9yOiAjNTI0MjM4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBFNkRGO1xufVxuXG5pbWcge1xuICB3aWR0aDogMTAwJTtcbiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbmEge1xuICBjb2xvcjogIzAwMDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4jbG9hZGVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMHZoO1xuICBoZWlnaHQ6IGNhbGModmFyKC0tdmgsIDF2aCkgKiAxMDApO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgei1pbmRleDogOTk5O1xuICAmLmxvYWRlZCB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjogLjhzO1xuICB9XG4gIGRpdiB7XG4gICAgd2lkdGg6IDUzJTtcbiAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgbWF4LXdpZHRoOiAzMDBweDtcbiAgICB9XG4gIH1cbn1cblxuLyojZnJhbWUge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgei1pbmRleDogOTk5O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgYm9yZGVyOiAycHggc29saWQgI2NjYztcbiAgfVxufSovXG5cblxuI3dyYXBwZXIge1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgb3BhY2l0eTogMTtcbiAgJi5sb2FkZWQge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNpdGlvbjogMnMgMXM7XG4gIH1cbn1cblxuLmxvZ28ge1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICBAaW5jbHVkZSBtcShzcCkge1xuICAgIHdpZHRoOiAzNy4zJTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAyNXB4O1xuICAgIGxlZnQ6IDMwcHg7XG4gICAgei1pbmRleDogMTAwO1xuICB9XG4gIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgd2lkdGg6IDM0JTtcbiAgICBtYXgtd2lkdGg6IDQzMHB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDQwcHg7XG4gICAgbGVmdDogNDBweDtcbiAgICB6LWluZGV4OiAxMDA7XG4gIH1cbiAgZGl2IHtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gICAgaDEge1xuICAgICAgei1pbmRleDogMTAwO1xuICAgICAgd2lkdGg6IDE0MHB4O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICAgIHRyYW5zaXRpb246IC42cztcbiAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgIHdpZHRoOiA0MCU7XG4gICAgICAgIG1heC13aWR0aDogMTcwcHg7XG4gICAgICB9XG4gICAgICAmLnNtYWxsIHtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICB0b3A6IDI1cHg7XG4gICAgICAgIGxlZnQ6IDI1cHg7XG4gICAgICAgIHdpZHRoOiAyMCU7XG4gICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgbWF4LXdpZHRoOiAxMDBweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBoMSArIHNwYW4ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICB3aWR0aDogNTIlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwIHtcbiAgICBmb250LWZhbWlseTogJ25vdG8tc2Fucy1jamstanAnO1xuICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgbGluZS1oZWlnaHQ6IDEuMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICBmb250LXNpemU6IDIuOHJlbTtcbiAgICB9XG4gICAgc3BhbiB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAmOm50aC1vZi10eXBlKDEpIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS42O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMWVtO1xuICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDIpIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG4jbWFpbl9hcmVhIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tdG9wOiAxNzBweDtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICBtYXJnaW4tdG9wOiAyMzBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMjBweDsgXG4gIH1cbiAgZmlndXJle1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogNDQlO1xuICAgIC8vIHRvcDogLTE2JTtcbiAgICBib3R0b206IDEwMCU7XG4gICAgcmlnaHQ6IDIlO1xuICAgIG1hcmdpbi1ib3R0b206IC0yJTtcbiAgICB6LWluZGV4OiAyO1xuICAgIEBpbmNsdWRlIG1xKHBjKXtcbiAgICAgIHdpZHRoOiAyMiU7XG4gICAgICAvLyB0b3A6IC0yNyU7XG4gICAgICBib3R0b206IDEwMCU7XG4gICAgICBtYXJnaW4tYm90dG9tOiAtMSU7XG4gICAgICByaWdodDogNCU7XG4gICAgfVxuICB9XG4gIC5sb29wX3dyYXAge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgJi5vbiB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgICAgdHJhbnNpdGlvbjogMnMgbGluZWFyO1xuICAgIH1cbiAgICAubG9vcCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgd2lkdGg6IDEwMHZ3O1xuICAgICAgaGVpZ2h0OiAyMDBweDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICBoZWlnaHQ6IDMwMHB4O1xuICAgICAgfVxuICAgICAgaW1nIHtcbiAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9XG4gICAgICAmLnRvcCB7XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgxKSB7XG4gICAgICAgICAgICBhbmltYXRpb246IGxvb3AxIDYwcyAtMzBzIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgyKSB7XG4gICAgICAgICAgICAgIGFuaW1hdGlvbjogbG9vcDIgNjBzIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICYuYm90dG9tIHtcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAmOm50aC1vZi10eXBlKDEpIHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogbG9vcDMgNjBzIC0zMHMgbGluZWFyIGluZmluaXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAmOm50aC1vZi10eXBlKDIpIHtcbiAgICAgICAgICAgICAgYW5pbWF0aW9uOiBsb29wNCA2MHMgbGluZWFyIGluZmluaXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4jbWFpbl9hcmVhIHtcbiAgLmltYWdlX2FyZWEge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgICBtYXJnaW46ICAwIGF1dG87XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBhZGRpbmctdG9wOiAxMDAlO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0M0QTQ4RjtcbiAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgIHBhZGRpbmctdG9wOiBjYWxjKDcyMCAvIDEyMDAgKiAxMDAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLmZsZXhfd3JhcCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgd2lkdGg6IDg0JTtcbiAgICAgIGhlaWdodDogNzElO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgIHdpZHRoOiA4NSU7XG4gICAgICAgIGhlaWdodDogNzQlO1xuICAgICAgfVxuICAgICAgZGl2IHtcbiAgICAgICAgJi5ib3gge1xuICAgICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICYuYW1hIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNERUMyQjY7XG4gICAgICAgICAgICAmLm9mZiB7XG4gICAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAsIDEpO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IHRvcDtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiAuOHM7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQzRBNDhGO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCB0b3A7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaXYge1xuICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICY6bnRoLW9mLXR5cGUoMSkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA1MC4xJTtcbiAgICAgICAgICAgICAgICB0b3A6IC0xNSU7XG4gICAgICAgICAgICAgICAgbGVmdDogLTI3JTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICAgICAgd2lkdGg6IDM2LjglO1xuICAgICAgICAgICAgICAgICAgbGVmdDogLTI1JTtcbiAgICAgICAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICY6bnRoLW9mLXR5cGUoMikge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA1My4zJTtcbiAgICAgICAgICAgICAgICBib3R0b206IC0xMS4zJTtcbiAgICAgICAgICAgICAgICBsZWZ0OiA4JTtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgICAgICB3aWR0aDogMzguOCU7XG4gICAgICAgICAgICAgICAgICBsZWZ0OiAxMyU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICY6bnRoLW9mLXR5cGUoMykge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA1Ni41JTtcbiAgICAgICAgICAgICAgICB0b3A6IC0xNSU7XG4gICAgICAgICAgICAgICAgbGVmdDogNDcuNiU7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiA0MiU7XG4gICAgICAgICAgICAgICAgICBsZWZ0OiA1NSU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgYm90dG9tOiAyMHB4O1xuICAgICAgICAgICAgICBsZWZ0OiAtMzdweDtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgbXEoc3ApIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAtMTBweDtcbiAgICAgICAgICAgICAgICBsZWZ0OiAtNTVweDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAmLmthcmEge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzk5QUFCQTtcbiAgICAgICAgICAgICYub2ZmIHtcbiAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCwgMSk7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgdG9wO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IC44cztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNDNEE0OEY7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSk7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IHRvcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpdiB7XG4gICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgJjpudGgtb2YtdHlwZSgxKSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDQ2LjclO1xuICAgICAgICAgICAgICAgIGJvdHRvbTogLTExLjMlO1xuICAgICAgICAgICAgICAgIGxlZnQ6IC04LjglO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgICAgICB3aWR0aDogMzQuNSU7XG4gICAgICAgICAgICAgICAgICBsZWZ0OiA0JTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJjpudGgtb2YtdHlwZSgyKSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDQ3LjMlO1xuICAgICAgICAgICAgICAgIHRvcDogLTE1JTtcbiAgICAgICAgICAgICAgICBsZWZ0OiAzNSU7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAzNS42JTtcbiAgICAgICAgICAgICAgICAgIGxlZnQ6IDQ0JTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJjpudGgtb2YtdHlwZSgzKSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDU1LjIlO1xuICAgICAgICAgICAgICAgIGJvdHRvbTogLTExLjMlO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAtMjYlO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgICAgICB3aWR0aDogNDAuOCU7XG4gICAgICAgICAgICAgICAgICByaWdodDogLTIyJTtcbiAgICAgICAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgdG9wOiAyMHB4O1xuICAgICAgICAgICAgICByaWdodDogLTQwcHg7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIG1xKHNwKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IC01NXB4O1xuICAgICAgICAgICAgICAgIHRvcDogLTIwcHg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IGZ1dHVyYS1wdDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAyOHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICBib3R0b206IC00cHg7XG4gICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDJweDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4jbWFpbl9hcmVhIHtcbiAgLmltYWdlX2FyZWEub2ZmIHtcbiAgICAmOjphZnRlciB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpO1xuICAgICAgdHJhbnNpdGlvbjogLjhzO1xuICAgIH1cbiAgfVxufVxuXG4jbWFpbl9hcmVhIHtcbiAgLnRpdGxlX2FyZWEge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3R0b206IDM1cHg7XG4gICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDYwcHg7XG4gICAgICBib3R0b206IDgwcHg7XG4gICAgfVxuICAgIGgyIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIGZvbnQtZmFtaWx5OiAnbm90by1zYW5zLWNqay1qcCc7XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICBwYWRkaW5nOiA0MHB4IDUwcHg7XG4gICAgICB9XG4gICAgICBkaXYge1xuICAgICAgICAmLnN1Yl93cmFwIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjFlbTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgICAgIHBhZGRpbmc6IDZweCAyMHB4O1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggNDBweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMy40cmVtO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAmLmFtYSB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS42cmVtO1xuICAgICAgICAgICAgICBjb2xvcjogI0FEOEI4NjtcbiAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDRyZW07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYua2FyYSB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS42cmVtO1xuICAgICAgICAgICAgICBjb2xvcjogIzcxNzU4QjtcbiAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDRyZW07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJjo6YmVmb3JlLCAmOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiA2cHg7XG4gICAgICAgICAgICB3aWR0aDogMXB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA2MCU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTI0MjM4O1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgICB3aWR0aDogMnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgbGVmdDogMTJweDtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0yNWRlZyk7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICBsZWZ0OiAyNHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICByaWdodDogMTJweDtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDI1ZGVnKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIHJpZ2h0OiAyNHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmLm1haW5fd3JhcCB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgZm9udC1zaXplOiAwO1xuICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMWVtO1xuICAgICAgICAgICAgcGFkZGluZzogNHB4IDEwcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiA0LjZyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOm50aC1vZi10eXBlKDEpIHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgbXEoc3ApIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweCAwIDhweCAyNHB4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOm50aC1vZi10eXBlKDIpIHtcbiAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweCAzMnB4IDhweCAwO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbSB7XG4gICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICBmb250LXNpemU6IDNyZW07XG4gICAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiA1LjZyZW07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJjpudGgtb2YtdHlwZSgyKSB7XG4gICAgICAgICAgICAgICAgLypAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICAgICAgICAgICAgICB9Ki9cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4jbWFpbl9hcmVhIHtcbiAgLmludHJvX2FyZWEge1xuICAgIHdpZHRoOiA4NCU7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgQGluY2x1ZGUgbXEoc3Ape1xuICAgICAgbWFyZ2luOiAtMjBweCBhdXRvIDcwcHg7XG4gICAgfVxuICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICBtYXJnaW46IC02MHB4IGF1dG8gNzBweDtcbiAgICB9XG4gICAgcCB7XG4gICAgLy93aWR0aDogODQlO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgIGZvbnQtZmFtaWx5OiAnbm90by1zYW5zLWNqay1qcCc7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDI1ZW07XG4gICAgbGluZS1oZWlnaHQ6IDIuMDtcbiAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgd2lkdGg6IDcwJTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIGZvbnQtc2l6ZTogMS42cmVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDIuMjtcbiAgICB9XG4gICAgfVxuICB9XG59XG5cbiNicmFuZF9hcmVhIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgcGFkZGluZzogNjBweCAwO1xuICBAaW5jbHVkZSBtcShwYyl7XG4gICAgLy8gd2lkdGg6IDg2MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvIDEyMHB4O1xuICAgIHBhZGRpbmc6IDEwMHB4IDA7XG4gIH1cbiAgaDN7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBcblxuICAgIGxldHRlci1zcGFjaW5nOiAuMnJlbTtcbiAgICBAaW5jbHVkZSBtcShzcCl7XG4gICAgICBmb250LXNpemU6IDI1cHg7XG4gICAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuICAgIH1cbiAgICBAaW5jbHVkZSBtcShwYyl7XG4gICAgICBmb250LXNpemU6IDMwcHg7XG4gICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgIH1cblxuXG4gIH1cbiAgdWx7XG4gICAgQGluY2x1ZGUgbXEoc3Ape1xuICAgICAgd2lkdGg6IDg2JTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICB9XG4gICAgQGluY2x1ZGUgbXEocGMpe1xuICAgICAgd2lkdGg6IDcyMHB4O1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cbiAgICBsaXtcbiAgICAgIEBpbmNsdWRlIG1xKHNwKXtcbiAgICAgICAgd2lkdGg6Y2FsYygoMTAwJSAtIDEwcHggKSAvIDIpO1xuICAgICAgICAvLyBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICMwMDVkNjI7XG4gICAgICAgIHBhZGRpbmc6IDVweCAwO1xuICAgICAgICAvLyBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgbXEocGMpe1xuICAgICAgICAvLyBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAvLyBwYWRkaW5nOiAwIDVweDtcbiAgICAgICAgbWFyZ2luOiA1cHggMDtcbiAgICAgICAgd2lkdGg6Y2FsYygoMTAwJSAtIDMwcHggKSAvIDMpO1xuICAgICAgfVxuICAgICAgYXtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM0NDQ7XG4gICAgICAgIEBpbmNsdWRlIG1xKHNwKXtcbiAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgbXEocGMpe1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaW1ne1xuICAgICAgICB3aWR0aDogOTIlO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgQGluY2x1ZGUgbXEocGMpe1xuICAgICAgICAgIHdpZHRoOiA5NCU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG5cblxuICAvKi5sb29wIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICAvL0BkZWJ1ZzogNTAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47IFxuICAgIHdpZHRoOiAxMDAlO1xuICAgIHotaW5kZXg6IDI7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNmZmY7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmZmY7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIHVsIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBhbmltYXRpb246IGxvb3AgMTAwcyAtNTBzIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICAgICAgfVxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICBhbmltYXRpb246IGxvb3AyIDEwMHMgIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgIH1cbiAgICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBmb250LXNpemU6IDEuOHJlbTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDI1ZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIHBhZGRpbmc6IDAgMTBweCAwIDA7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgZm9udC1zaXplOiAyLjJyZW07XG4gICAgICAgIH1cbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiAnbm90by1zYW5zLWNqay1qcCc7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSovXG5cbiAgI2NvbnRlbnQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIEBpbmNsdWRlIG1xKHNwKXtcbiAgICAgIG1hcmdpbjogNjBweCBhdXRvIDA7XG4gICAgfVxuICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAvL21heC13aWR0aDogMTI4MHB4O1xuICAgICAgLy9tYXgtd2lkdGg6IDEwNjBweDtcbiAgICB9XG4gIH1cblxuICAjY29udGVudCB7XG4gICAgLnNlY3Rpb24ge1xuICAgICAgLy9wYWRkaW5nOiAzMHB4IDA7XG4gICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICBtYXgtd2lkdGg6IDk2MHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgcGFkZGluZzogMCAwO1xuICAgICAgfVxuICAgICAgc3BhbiB7XG4gICAgICAgICYubnVtIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBmb250LWZhbWlseTogZnV0dXJhLXB0O1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICBjb2xvcjogI0M0QTQ4RjtcbiAgICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xuICAgICAgICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi42cmVtO1xuICAgICAgICAgICAgLy8gbWFyZ2luLWJvdHRvbTogNjBweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgLy8gYm90dG9tOiAtMjBweDtcbiAgICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQzRBNDhGO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgYm90dG9tOiAtM3B4O1xuICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGgzIHtcbiAgICAgICAgLyptYXJnaW4tYm90dG9tOiA2MHB4O1xuICAgICAgICBAaW5jbHVkZSBtcShzcCl7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICAgICAgfSovXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAmLmJyYW5kIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBmdXR1cmEtcHQ7XG4gICAgICAgICAgICBmb250LXNpemU6IDMuNHJlbTtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMC43NTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEzcHg7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICBmb250LXNpemU6IDMuOHJlbTtcbiAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTRweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJi5zaG9wLCAmLmhlaWdodCB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJ25vdG8tc2Fucy1jamstanAnO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS42cmVtO1xuICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAmLm5hbWUge1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdub3RvLXNhbnMtY2prLWpwJztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxM3B4O1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAyLjByZW07XG4gICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE0cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgICYuaGVpZ2h0IHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAuc2VjX2lubmVyIHtcbiAgICAgICAgLml0ZW1BcmVhIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0YwRTZERjtcbiAgICAgICAgICBwYWRkaW5nOiAzMHB4IDAgMzVweDtcbiAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgcGFkZGluZzogNTBweCAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBoNCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgICAgIGNvbG9yOiAjMDAwO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgNHB4O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS42cmVtO1xuICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgYm90dG9tOiAtNXB4O1xuICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgaGVpZ2h0OiA4cHg7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGMEQ4ODg7XG4gICAgICAgICAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICBib3R0b206IC0xM3B4O1xuICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgaGVpZ2h0OiA5cHg7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvbGluZS5wbmcpO1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBkaXYuaXRlbVBpYyB7XG4gICAgICAgICAgICB3aWR0aDogNDQlO1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gMjBweDtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIG1heC13aWR0aDogMzIwcHg7XG4gICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDMwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHAge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcCArIGEge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgcGFkZGluZzogMXB4IDEwcHggMnB4O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzUyNDIzODtcbiAgICAgICAgICAgIGNvbG9yOiAjNTI0MjM4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xZW07XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBoZWlnaHQ6IDE1cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTVweDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IC40cztcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuc2xpZGVye1xuICAgICAgICAgIEBpbmNsdWRlIG1xKHNwKSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA0MHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAuc2xpZGVXcmFwIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDI3cHggMCAzMHB4O1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgcGFkZGluZzogNjBweCAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5hbWEge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjREVDMkI2O1xuICAgICAgICAgICAgICAucGljQXJlYSB7XG4gICAgICAgICAgICAgICAgLndyYXAge1xuICAgICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBuby1yZXBlYXQgY2VudGVyIC8gNjQlIHVybCguLi9pbWcvYmFja19hbWEuc3ZnKSAjZmZmO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5rYXJhIHtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzk5QUFCQTtcbiAgICAgICAgICAgICAgLnBpY0FyZWEge1xuICAgICAgICAgICAgICAgIC53cmFwIHtcbiAgICAgICAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbm8tcmVwZWF0IGNlbnRlciAvIDY0JSB1cmwoLi4vaW1nL2JhY2tfa2FyYS5zdmcpICNmZmY7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IFxuICAgICAgICAgIH1cbiAgICAgICAgICAucGljQXJlYSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyN3B4O1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNjBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC53cmFwIHtcbiAgICAgICAgICAgICAgd2lkdGg6IDkyLjglO1xuICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA3OCU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiBjYWxjKDU4MiAvIDY5MCAqIDEwMCUpO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogY2FsYyg1ODYgLyA3NTAgKiAxMDAlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDcyLjQlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogODYlO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMDtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICAgICAgd2lkdGg6IDY2LjYlO1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA4NSU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGRpdiB7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAudGV4dEFyZWEge1xuICAgICAgICAgICAgd2lkdGg6IDkyJTtcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgcGFkZGluZzogMjBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgd2lkdGg6IDg5JTtcbiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgcGFkZGluZzogNTBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAuY29tbWVudCB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS44O1xuICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBqdXN0aWZ5O1xuICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDI0cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjNTI0MjM4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzUyNDIzODtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDI0cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICM1MjQyMzg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM1MjQyMzg7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmNyZWRpdF9hcmVhIHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgbXEoc3ApIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA1MHB4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHVsIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICAgICAgLypkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwOyovXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdub3RvLXNhbnMtY2prLWpwJztcbiAgICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xuICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDtcbiAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiA5NiU7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgICAgICAgICAgICAmOm50aC1vZi10eXBlKGV2ZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAvL3BhZGRpbmctbGVmdDogMzRweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbXEoc3ApIHtcbiAgICAgICAgICAgICAgICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgICAgICAgICY6bm90KDpsYXN0LW9mLXR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLyomOm5vdCg6bnRoLWxhc3Qtb2YtdHlwZSgtbisyKSkge1xuICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgIH0qL1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiA4MCU7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1xKHNwKXtcbiAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogODIlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOjEuNHJlbTtcbiAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICYuc21hbGwge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07IFxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgLy9ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwcHggMTBweDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzUyNDIzODtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICAvL2ZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE1cHg7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxNXB4O1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiAuNHM7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICY6bm90KC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM1MjQyMzg7XG4gICAgICAgICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTI0MjM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICYuZGlzYWJsZWQge1xuICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDBweDtcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBoNCB7XG4gICAgICBjb2xvcjogI0M0QTQ4RjtcbiAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgIH1cbiAgICB9XG4gICAgZGl2IHtcbiAgICAgICYuYnV0dG9uIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBAaW5jbHVkZSBtcShzcCkge1xuICAgICAgICAgIHdpZHRoOiA3MCU7XG4gICAgICAgICAgbWFyZ2luOiAwIGF1dG8gMDtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgIHdpZHRoOiA2MCU7XG4gICAgICAgICAgbWFyZ2luOiA2MHB4IGF1dG8gMDtcbiAgICAgICAgfVxuICAgICAgICAuY29udGVudF8wMntcbiAgICAgICAgICBAaW5jbHVkZSBtcShwYyl7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4wO1xuICAgICAgICAgIHBhZGRpbmc6IDEycHggMDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM1MjQyMzg7XG4gICAgICAgICAgY29sb3I6ICM1MjQyMzg7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICB0cmFuc2l0aW9uOiAuNHM7XG4gICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgIHdpZHRoOiA2MCU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDI1MHB4O1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICBwYWRkaW5nOiAyMHB4IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgICAgIH1cbiAgICAgICAgICAmOm50aC1vZi10eXBlKDEpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShzcCkge1xuICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgIC8vICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAmLmljb24ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogNnB4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgJjpub3QoLmljb24pIHtcbiAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdub3RvLXNhbnMtY2prLWpwJztcbiAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xuICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS4wO1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgI2xpbmV7XG4gICAgICB3aWR0aDogMzAwcHg7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0NDQ7XG4gICAgICBtYXJnaW46IDgwcHggYXV0byAwO1xuICAgICAgQGluY2x1ZGUgbXEocGMpe1xuICAgICAgICB3aWR0aDogNjAwcHg7XG4gICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICBtYXJnaW46IDEyMHB4IGF1dG8gMDtcbiAgICAgIH1cbiAgICB9XG4gIH0gXG5cbi8v44K544Op44Kk44OA44O844Ki44OL44Oh44O844K344On44OzXG4uc2xpZGVyIHtcbiAgLnNsaWRlV3JhcCB7XG4gICAgLnBpY0FyZWEge1xuICAgICAgLndyYXAge1xuICAgICAgICBkaXYge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNpdGlvbjogLjhzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5zbGljay1zbGlkZS5zbGljay1jdXJyZW50IC5zbGlkZVdyYXAgLnBpY0FyZWEgLndyYXAgZGl2LFxuICAuc2xpY2stc2xpZGUuaXMtYWN0aXZlLW5leHQgLnNsaWRlV3JhcCAucGljQXJlYSAud3JhcCBkaXYge1xuICAgIGFuaW1hdGlvbjogc2hvdyAxcyBlYXNlIGZvcndhcmRzO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgJjpudGgtb2YtdHlwZSgxKSB7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IC4xcztcbiAgICB9XG4gICAgJjpudGgtb2YtdHlwZSgyKSB7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IC4ycztcbiAgICB9XG4gICAgJjpudGgtb2YtdHlwZSgzKSB7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IC4zcztcbiAgICB9XG4gIH1cbn1cblxuI2thc3RhbmUge1xuICBtYXJnaW4tYm90dG9tOiA0MHB4ICFpbXBvcnRhbnQ7XG59XG5cbiNteXMge1xuICAuYW1hIHtcbiAgICAucGljQXJlYSB7XG4gICAgICAud3JhcCB7XG4gICAgICAgIGRpdiB7XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgxKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMjguNCU7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICBsZWZ0OiAyLjUlO1xuICAgICAgICAgICAgICB3aWR0aDogMjYlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAmOm50aC1vZi10eXBlKDIpe1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMjYlO1xuICAgICAgICAgICAgd2lkdGg6IDM2JTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIGxlZnQ6IDMwJTtcbiAgICAgICAgICAgICAgd2lkdGg6IDMzJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgzKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDM2JTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIHdpZHRoOiAzMyU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5rYXJhIHtcbiAgICAucGljQXJlYSB7XG4gICAgICAud3JhcCB7XG4gICAgICAgIGRpdiB7XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgxKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMzQuNSU7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICB3aWR0aDogMzIlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAmOm50aC1vZi10eXBlKDIpe1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMzcuMyU7XG4gICAgICAgICAgICB3aWR0aDogMjkuNCU7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICBsZWZ0OiAzOCU7XG4gICAgICAgICAgICAgIHdpZHRoOiAyNy4yJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgzKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDMyLjQlO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgd2lkdGg6IDMwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuI3d3ZyB7XG4gIC5hbWEge1xuICAgIC5waWNBcmVhIHtcbiAgICAgIC53cmFwIHtcbiAgICAgICAgZGl2IHtcbiAgICAgICAgICAmOm50aC1vZi10eXBlKDEpe1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAzMS4xJTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgIHdpZHRoOiAyOS4zJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgyKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDMxLjglO1xuICAgICAgICAgICAgd2lkdGg6IDI4LjclO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgbGVmdDogMzQuNiU7XG4gICAgICAgICAgICAgIHdpZHRoOiAyNi43JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgzKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIHJpZ2h0OiAtMSU7XG4gICAgICAgICAgICB3aWR0aDogNDIuMyU7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICByaWdodDogLTMlO1xuICAgICAgICAgICAgICB3aWR0aDogMzkuMiU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5rYXJhIHtcbiAgICAucGljQXJlYSB7XG4gICAgICAud3JhcCB7XG4gICAgICAgIGRpdiB7XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgxKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMjYlO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgd2lkdGg6IDI0JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgyKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDMyLjMlO1xuICAgICAgICAgICAgd2lkdGg6IDMxLjglO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgbGVmdDogMzUuMyU7XG4gICAgICAgICAgICAgIHdpZHRoOiAyOS42JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgzKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDI5LjUlO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgcmlnaHQ6IC0zLjYlO1xuICAgICAgICAgICAgICB3aWR0aDogMjcuMyU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbiNjaGljbyB7XG4gIC5hbWEge1xuICAgIC5waWNBcmVhIHtcbiAgICAgIC53cmFwIHtcbiAgICAgICAgZGl2IHtcbiAgICAgICAgICAmOm50aC1vZi10eXBlKDEpe1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAzMS4xJTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgIHdpZHRoOiAyOC44JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgyKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDM3JTtcbiAgICAgICAgICAgIHdpZHRoOiAyMy42JTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIGxlZnQ6IDM4LjQlO1xuICAgICAgICAgICAgICB3aWR0aDogMjIlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAmOm50aC1vZi10eXBlKDMpe1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMzQuNSU7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICB3aWR0aDogMzIlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAua2FyYSB7XG4gICAgLnBpY0FyZWEge1xuICAgICAgLndyYXAge1xuICAgICAgICBkaXYge1xuICAgICAgICAgICY6bnRoLW9mLXR5cGUoMSl7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDM3JTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgIHdpZHRoOiAzNC40JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgyKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDM5LjQlO1xuICAgICAgICAgICAgd2lkdGg6IDI2LjclO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgbGVmdDogMzkuMiU7XG4gICAgICAgICAgICAgIHdpZHRoOiAyNC44JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgzKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDI2LjUlO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgcmlnaHQ6IDIlO1xuICAgICAgICAgICAgICB3aWR0aDogMjQuNSU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbiNkaXNjb2F0IHtcbiAgLmFtYSB7XG4gICAgLnBpY0FyZWEge1xuICAgICAgLndyYXAge1xuICAgICAgICBkaXYge1xuICAgICAgICAgICY6bnRoLW9mLXR5cGUoMSl7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDMxLjUlO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgd2lkdGg6IDI5JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgyKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDM3JTtcbiAgICAgICAgICAgIHdpZHRoOiAyOS43JTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIGxlZnQ6IDM3JTtcbiAgICAgICAgICAgICAgd2lkdGg6IDI3LjYlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAmOm50aC1vZi10eXBlKDMpe1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMjkuNyU7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICB3aWR0aDogMjcuNiU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5rYXJhIHtcbiAgICAucGljQXJlYSB7XG4gICAgICAud3JhcCB7XG4gICAgICAgIGRpdiB7XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgxKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMzMuNCU7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICB3aWR0aDogMzElO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAmOm50aC1vZi10eXBlKDIpe1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMzcuNSU7XG4gICAgICAgICAgICB3aWR0aDogMjguNCU7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICBsZWZ0OiAzOC40JTtcbiAgICAgICAgICAgICAgd2lkdGg6IDI2LjIlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAmOm50aC1vZi10eXBlKDMpe1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMzAuNyU7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICByaWdodDogMCU7XG4gICAgICAgICAgICAgIHdpZHRoOiAyOC40JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuI2x1aXMge1xuICAuYW1hIHtcbiAgICAucGljQXJlYSB7XG4gICAgICAud3JhcCB7XG4gICAgICAgIGRpdiB7XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgxKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMzIuNiU7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICB3aWR0aDogMzAlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAmOm50aC1vZi10eXBlKDIpe1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMzAuOCU7XG4gICAgICAgICAgICB3aWR0aDogMzEuNCU7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICBsZWZ0OiAzMiU7XG4gICAgICAgICAgICAgIHdpZHRoOiAyOSU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgICY6bnRoLW9mLXR5cGUoMyl7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIHdpZHRoOiA0My40JTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIHJpZ2h0OiAtNCU7XG4gICAgICAgICAgICAgIHdpZHRoOiA0MCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5rYXJhIHtcbiAgICAucGljQXJlYSB7XG4gICAgICAud3JhcCB7XG4gICAgICAgIGRpdiB7XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgxKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMjcuNyU7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICB3aWR0aDogMjUuMyU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgICY6bnRoLW9mLXR5cGUoMil7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAzNSU7XG4gICAgICAgICAgICB3aWR0aDogMjcuMyU7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICBsZWZ0OiAzNiU7XG4gICAgICAgICAgICAgIHdpZHRoOiAyNS4zJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgzKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDMxLjMlO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgcmlnaHQ6IDAlO1xuICAgICAgICAgICAgICB3aWR0aDogMjklO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4ja2FzdGFuZSB7XG4gIC5hbWEge1xuICAgIC5waWNBcmVhIHtcbiAgICAgIC53cmFwIHtcbiAgICAgICAgZGl2IHtcbiAgICAgICAgICAmOm50aC1vZi10eXBlKDEpe1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAzNy43JTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIGxlZnQ6IC0zLjclO1xuICAgICAgICAgICAgICB3aWR0aDogMzQuOCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgICY6bnRoLW9mLXR5cGUoMil7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAzNS42JTtcbiAgICAgICAgICAgIHdpZHRoOiAyOS40JTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIGxlZnQ6IDM2LjQlO1xuICAgICAgICAgICAgICB3aWR0aDogMjcuMiU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgICY6bnRoLW9mLXR5cGUoMyl7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAyOCU7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICByaWdodDogMCU7XG4gICAgICAgICAgICAgIHdpZHRoOiAyNS45JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLmthcmEge1xuICAgIC5waWNBcmVhIHtcbiAgICAgIC53cmFwIHtcbiAgICAgICAgZGl2IHtcbiAgICAgICAgICAmOm50aC1vZi10eXBlKDEpe1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAyOSU7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICBsZWZ0OiAxLjUlO1xuICAgICAgICAgICAgICB3aWR0aDogMjclO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAmOm50aC1vZi10eXBlKDIpe1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMzIuMiU7XG4gICAgICAgICAgICB3aWR0aDogMzEuMyU7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICBsZWZ0OiAzNC40JTtcbiAgICAgICAgICAgICAgd2lkdGg6IDI5JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgzKXtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDMxJTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIHJpZ2h0OiAwJTtcbiAgICAgICAgICAgICAgd2lkdGg6IDI4LjglO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4ub2JpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAmOjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIH1cbiAgJi5vZmY6OmFmdGVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTEwJSk7XG4gICAgdHJhbnNpdGlvbjogLjhzIC4ycyBjdWJpYy1iZXppZXIoMCwuODMsLjgyLC45Nyk7XG4gIH1cbn1cblxuXG5cbi8vICNtb3ZpZSB7XG4vLyAgIHBhZGRpbmc6IDAgMCA5MHB4O1xuLy8gICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4vLyAgIEBpbmNsdWRlIG1xKHBjKSB7XG4vLyAgICAgcGFkZGluZzogMCAwIDc1cHg7XG4vLyAgIH1cbi8vICAgaDQge1xuLy8gICAgIGxpbmUtaGVpZ2h0OiAxLjA7XG4vLyAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuLy8gICAgIC8vYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMwMDA7XG4vLyAgICAgZm9udC1zaXplOiAycmVtO1xuLy8gICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4vLyAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDI1ZW07XG4vLyAgICAgbWFyZ2luLWJvdHRvbTogMzVweDtcbi8vICAgICBAaW5jbHVkZSBtcShwYykge1xuLy8gICAgICAgZm9udC1zaXplOiAyLjRyZW07XG4vLyAgICAgICBtYXJnaW4tYm90dG9tOiA1MHB4O1xuLy8gICAgIH1cbi8vICAgfVxuLy8gICBkaXZ7XG4vLyAgICAgJi53cmFwIHtcbi8vICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbi8vICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4vLyAgICAgICBAaW5jbHVkZSBtcShwYykge1xuLy8gICAgICAgICB3aWR0aDogNzUlO1xuLy8gICAgICAgICBtYXJnaW46IDAgYXV0byA2MHB4O1xuLy8gICAgICAgfVxuLy8gICAgICAgJjo6YmVmb3JlIHtcbi8vICAgICAgICAgY29udGVudCA6IFwiXCI7XG4vLyAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuLy8gICAgICAgICBwYWRkaW5nLXRvcDogY2FsYygzNjAgLyA2NDAgKiAxMDAlKTtcbi8vICAgICAgIH1cbi8vICAgICAgIGlmcmFtZSB7XG4vLyAgICAgICAgIHdpZHRoOiAxMDAlO1xuLy8gICAgICAgICBoZWlnaHQ6IDEwMCU7XG4vLyAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbi8vICAgICAgICAgdG9wOiAwO1xuLy8gICAgICAgICBsZWZ0OiAwO1xuLy8gICAgICAgfVxuLy8gICAgIH1cbi8vICAgfVxuLy8gICBwIHtcbi8vICAgICBmb250LXNpemU6IDEuMnJlbTtcbi8vICAgICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuLy8gICAgIGZvbnQtZmFtaWx5OiAnbm90by1zYW5zLWNqay1qcCc7XG4vLyAgICAgQGluY2x1ZGUgbXEocGMpIHtcbi8vICAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuLy8gICAgIH1cbi8vICAgfVxuLy8gfVxuXG4vLyAjYXJjaGl2ZSB7XG4vLyAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjMDAwO1xuLy8gICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzAwMDtcbi8vICAgcGFkZGluZzogOTBweCAwIDc1cHg7XG4vLyAgIHRleHQtYWxpZ246IGNlbnRlcjtcbi8vICAgQGluY2x1ZGUgbXEocGMpIHtcbi8vICAgICBwYWRkaW5nOiA3MHB4IDAgNjBweDtcbi8vICAgfVxuLy8gICBoNCB7XG4vLyAgICAgbGluZS1oZWlnaHQ6IDEuMDtcbi8vICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4vLyAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMwMDA7XG4vLyAgICAgZm9udC1zaXplOiAycmVtO1xuLy8gICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4vLyAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDI1ZW07XG4vLyAgICAgbWFyZ2luLWJvdHRvbTogMzVweDtcbi8vICAgICBAaW5jbHVkZSBtcShwYykge1xuLy8gICAgICAgZm9udC1zaXplOiAyLjRyZW07XG4vLyAgICAgfVxuLy8gICB9XG4vLyAgIGRpdiB7XG4vLyAgICAgJi5mbGV4IHtcbi8vICAgICAgIEBpbmNsdWRlIG1xKHNwKSB7XG4vLyAgICAgICAgIHdpZHRoOiA3OC42JTtcbi8vICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4vLyAgICAgICB9XG4vLyAgICAgICBAaW5jbHVkZSBtcShwYykge1xuLy8gICAgICAgICBkaXNwbGF5OiBmbGV4O1xuLy8gICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4vLyAgICAgICAgIHdpZHRoOiA3NiU7XG4vLyAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuLy8gICAgICAgICBtYXgtd2lkdGg6IDEwODBweDtcbi8vICAgICAgIH1cbi8vICAgICAgIC53cmFwIHtcbi8vICAgICAgICAgQGluY2x1ZGUgbXEoc3ApIHtcbi8vICAgICAgICAgICAmOm5vdCg6bGFzdC1vZi10eXBlKSB7XG4vLyAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuLy8gICAgICAgICAgIH1cbi8vICAgICAgICAgfVxuLy8gICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuLy8gICAgICAgICAgIHdpZHRoOiBjYWxjKDI1JSAtIDEwcHgpO1xuLy8gICAgICAgICB9XG4vLyAgICAgICAgIGEge1xuLy8gICAgICAgICAgIGRpdiB7XG4vLyAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuLy8gICAgICAgICAgIH1cbiAgICAgICAgICBcbi8vICAgICAgICAgfVxuLy8gICAgICAgfVxuLy8gICAgIH1cbi8vICAgfVxuLy8gfVxuXG5cbi5uYXZUb2dnbGUge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMzVweDtcbiAgcmlnaHQ6IDI1cHg7XG4gIHdpZHRoOiA1MHB4O1xuICBoZWlnaHQ6IDUwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgei1pbmRleDogNTAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBtcShwYykge1xuICAgIHdpZHRoOiA3MHB4O1xuICAgIGhlaWdodDogNzBweDtcbiAgICB0b3A6IDQ1cHg7XG4gICAgcmlnaHQ6IDM1cHg7XG4gIH1cbiAgJjpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG4gIHNwYW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMXB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICB0cmFuc2l0aW9uOiAuNHM7XG4gICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgIHdpZHRoOiAzMHB4O1xuICAgIH1cbiAgICAmOm50aC1vZi10eXBlKDEpIHtcbiAgICAgIHRvcDogMzUlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTM1JSk7XG4gICAgfVxuICAgICY6bnRoLW9mLXR5cGUoMykge1xuICAgICAgdG9wOiA2NSU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNjUlKTtcbiAgICB9XG4gIH1cbn1cblxuLm5hdlRvZ2dsZS5hY3RpdmUge1xuICBzcGFuIHtcbiAgICAmOm50aC1vZi10eXBlKDEpIHtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgcm90YXRlKDEzNWRlZyk7XG4gICAgfVxuICAgICY6bnRoLW9mLXR5cGUoMikge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDE1MCUpO1xuICAgIH1cbiAgICAmOm50aC1vZi10eXBlKDMpIHtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgcm90YXRlKC0xMzVkZWcpO1xuICAgIH1cbiAgfVxufVxuXG5cbi5uYXYge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiAuOHM7XG4gIHotaW5kZXg6IDQwMDtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuICAud3JhcCB7XG4gICAgd2lkdGg6IDg2LjYlO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDgwcHggMDtcbiAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgbWF4LXdpZHRoOiAxMDgwcHg7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgIHBhZGRpbmc6IDEwMHB4IDA7XG4gICAgfVxuICAgIGg0IHtcbiAgICAgIHdpZHRoOiA2MCU7XG4gICAgICBtYXJnaW46IDAgYXV0byAzMHB4O1xuICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgbWF4LXdpZHRoOiAzMjBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gNTBweDtcbiAgICAgIH1cbiAgICB9XG4gICAgcC5jb25jZXB0IHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIGZvbnQtZmFtaWx5OiAnbm90by1zYW5zLWNqay1qcCc7XG4gICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICBsaW5lLWhlaWdodDogMi4xO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDI1ZW07XG4gICAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDYwcHg7XG4gICAgICB9XG4gICAgfVxuICAgIHVsIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgIG1heC13aWR0aDogMTA4MHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgIH1cbiAgICAgIGxpIHtcbiAgICAgICAgQGluY2x1ZGUgbXEoc3ApIHtcbiAgICAgICAgICB3aWR0aDogY2FsYyg1MCUgLSAxMnB4KTtcbiAgICAgICAgICAmOm5vdCg6bGFzdC1vZi10eXBlKSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgIHdpZHRoOiBjYWxjKDI1JSAtIDIwcHgpO1xuICAgICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAgICAgJjpudGgtb2YtdHlwZSgtbis0KSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGl2ICB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA3cHg7XG4gICAgICAgICAgfVxuICAgICAgICAgIHAge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnbm90by1zYW5zLWNqay1qcCc7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtOyBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgJjpudGgtb2YtdHlwZSgxKSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNnB4O1xuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICY6bnRoLW9mLXR5cGUoMikge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjOTk5OTk5O1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDZweDtcbiAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbiNmb290ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBFNkRGICFpbXBvcnRhbnQ7XG4gIC5pbnN0YSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwJTtcbiAgICBtYXgtd2lkdGg6IDIwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG8gNDBweDtcbiAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgbWF4LXdpZHRoOiAyNHB4O1xuICAgICAgbWFyZ2luOiAwIGF1dG8gNTBweDtcbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICBvcGFjaXR5OiAwLjU7XG4gICAgfVxuICB9XG59XG5cbiNwYWdlLXRvcCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYm90dG9tOiAxNXB4O1xuICByaWdodDogMTVweDtcbiAgei1pbmRleDogOTk5O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IDYwcHg7XG4gIGhlaWdodDogNjBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNjYsIDE2NCwgMTY0LCAwLjUpO1xuICBAaW5jbHVkZSBtcSAoc3Ape1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gIH1cbn1cblxuLmNvdmVyX2FuaW06YmVmb3JlIHtcbiAgYW5pbWF0aW9uOiBjb3Zlcl9UIDEuNnMgY3ViaWMtYmV6aWVyKC40LCAwLCAuMiwgMSkgZm9yd2FyZHM7XG4gIGJhY2tncm91bmQ6ICNmOGNlZDI7XG4gIHdpZHRoOiAxMjAlO1xuICBib3R0b206IDA7XG4gIGNvbnRlbnQ6ICcnO1xuICBsZWZ0OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgdG9wOiAwO1xuICB6LWluZGV4OiAxO1xufVxuXG4uY292ZXJfYW5pbTAxOmJlZm9yZSB7XG4gIGFuaW1hdGlvbjogY292ZXJfTCAxLjZzIGN1YmljLWJlemllciguNCwgMCwgLjIsIDEpIGZvcndhcmRzO1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3R0b206IDA7XG4gIGNvbnRlbnQ6ICcnO1xuICBsZWZ0OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgdG9wOiAwO1xuICB6LWluZGV4OiAxO1xufVxuXG4uYmdfY29sb3I6OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMjU1LDI1NSk7XG4gIHotaW5kZXg6IDEwMDtcbiAgYW5pbWF0aW9uOiBzaHJpbmsgMS4ycyBlYXNlLWluLW91dCAwcyAxIGZvcndhcmRzO1xufVxuXG4ub3BhY2l0eSB7XG4gIGFuaW1hdGlvbjogb3BhY2l0eSAxLjZzIGVhc2UtaW4tb3V0IDEgYm90aDtcbn1cblxuLyoucm90YXRlIHtcbiAgYW5pbWF0aW9uOiByb3RhdGUgMS42cyBlYXNlLWluLW91dCAuNnMgMSBmb3J3YXJkcztcbn0qL1xuXG4ub3BhY2l0eTAxIHtcbiAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xufVxuXG4ubG9nb19zbWFsbCB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1MHB4KTtcbn1cblxuLmxvZ29fc21hbGwudHJhbnNsYXRlIHtcbiAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIHRyYW5zaXRpb246IGFsbCAycztcbn1cblxuaDEudHJhbnNsYXRlMDEge1xuICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpICFpbXBvcnRhbnQ7XG4gIHRyYW5zaXRpb246IGFsbCAxcyAxcztcbn1cblxuaDMudHJhbnNsYXRlMDIge1xuICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC05MCUsIC05NSUpICFpbXBvcnRhbnQ7XG4gIHRyYW5zaXRpb246IGFsbCAxcyAxLjZzO1xufVxuXG4ucm90YXRlIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwJSwgLTM1JSwgMCkgcm90YXRlM2QoMSwgMSwgMCwgLTMwZGVnKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDEuNHM7XG59XG4ucm90YXRlLmluIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKSByb3RhdGUzZCgxLCAxLCAwLCAwZGVnKTtcbn1cblxuLmZpbHRlciB7XG4gICAgZmlsdGVyOiBibHVyKDEwcHgpIGJyaWdodG5lc3MoMikgc2F0dXJhdGUoMSk7XG4gICAgLXdlYmtpdC1maWx0ZXI6IGJsdXIoMTBweCkgYnJpZ2h0bmVzcygyKSBzYXR1cmF0ZSgxKTtcbiAgICAtbW96LWZpbHRlcjogYmx1cigxMHB4KSBicmlnaHRuZXNzKDIpIHNhdHVyYXRlKDEpO1xuICAgIHRyYW5zaXRpb246IGZpbHRlciAuNnMgY3ViaWMtYmV6aWVyKDAuMSwgMCwgMC4yLCAxKTtcbn1cblxuLmZpbHRlci5vZmYge1xuICAgIGZpbHRlcjogYmx1cigwKSBicmlnaHRuZXNzKDEpIHNhdHVyYXRlKDEpO1xuICAgIC13ZWJraXQtZmlsdGVyOiBibHVyKDApIGJyaWdodG5lc3MoMSkgc2F0dXJhdGUoMSk7XG4gICAgLW1vei1maWx0ZXI6IGJsdXIoMCkgYnJpZ2h0bmVzcygxKSBzYXR1cmF0ZSgxKTtcbn1cblxuLyouc2NhbGUge1xuICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gIHRyYW5zZm9ybTogc2NhbGUoMSkgIWltcG9ydGFudDtcbiAgdHJhbnNpdGlvbjogYWxsIDJzIGVhc2UtaW4tb3V0O1xufSovXG5cblxuLnNwX25vbmUge1xuICBAaW5jbHVkZSBtcShzcCkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4ucGNfbm9uZSB7XG4gIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbmRpdltjbGFzcyo9XCJzZWN0aW9uXCJdIHtcbiAgbWFyZ2luLWJvdHRvbTogODBweCAhaW1wb3J0YW50O1xuICBAaW5jbHVkZSBtcShwYykge1xuICAgIG1hcmdpbi1ib3R0b206IDEzMHB4ICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLypkaXZbY2xhc3MqPVwic2VjdGlvblwiXTpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICBAaW5jbHVkZSBtcShzcCkge1xuICAgIG1hcmdpbi1ib3R0b206IDEwMHB4O1xuICB9XG4gIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTAwcHg7XG4gIH1cbn0qL1xuXG4vKmRpdltjbGFzcyo9XCJzZWN0aW9uXCJdOm50aC1sYXN0LWNoaWxkKDIpIHtcbiAgQGluY2x1ZGUgbXEoc3ApIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59Ki9cblxuLypzbGlja1xuX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fKi9cblxuLyrnn6LljbAqL1xuLnNsaWNrLXByZXYge1xuICBsZWZ0OiAwICFpbXBvcnRhbnQ7XG59XG5cbi5zbGljay1uZXh0IHtcbiAgcmlnaHQ6IDAgIWltcG9ydGFudDtcbn1cblxuLnNsaWNrLXByZXYsIC5zbGljay1uZXh0IHtcbiAgd2lkdGg6IDMwcHggIWltcG9ydGFudDtcbiAgaGVpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7XG4gIC8vYmFja2dyb3VuZC1jb2xvcjogI0FEOEI4NiAhaW1wb3J0YW50O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRyYW5zaXRpb246IC40cztcbiAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICB3aWR0aDogNTBweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogNTBweCAhaW1wb3J0YW50O1xuICB9XG4gICYucGluayB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0FEOEI4NiAhaW1wb3J0YW50O1xuICB9XG4gICYucHVycGxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNkY4NTlBICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLnNsaWNrLW5leHQ6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXCIgIWltcG9ydGFudDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIHJpZ2h0OiA0NSU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoNDVkZWcpO1xuICB3aWR0aDogOHB4O1xuICBoZWlnaHQ6IDhweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNmZmY7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNmZmY7XG4gIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbn1cblxuLnNsaWNrLXByZXY6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXCIgIWltcG9ydGFudDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDQ1JTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSgtMTM1ZGVnKTtcbiAgd2lkdGg6IDhweDtcbiAgaGVpZ2h0OiA4cHg7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZmZmO1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZmZmO1xuICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG59XG5cbi8q44K/44OWKi9cbi5zbGljay1kb3RzIHtcbiAgdG9wOiAtNDBweDtcbiAgQGluY2x1ZGUgbXEoc3ApIHtcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGhlaWdodDogNDBweDtcbiAgfVxuICBAaW5jbHVkZSBtcShwYykge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAtNTBweCAhaW1wb3J0YW50O1xuICAgIHdpZHRoOiA1MHB4ICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLnNsaWNrLWRvdHMgbGkge1xuICB3aWR0aDogNDkuNiUgIWltcG9ydGFudDtcbiAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICBAaW5jbHVkZSBtcShwYykge1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiAzNzRweCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5zbGljay1kb3RzIGxpIGJ1dHRvbiB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5zbGljay1kb3RzIGxpIGJ1dHRvbjpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiICFpbXBvcnRhbnQ7XG4gIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wKSAhaW1wb3J0YW50O1xuICBAaW5jbHVkZSBtcShzcCkge1xuICAgIGJvcmRlci1yYWRpdXM6IDdweCA3cHggMCAwO1xuICB9XG4gIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgYm9yZGVyLXJhZGl1czogMHB4IDE0cHggMTRweCAwO1xuICB9XG59XG5cbi5zbGljay1kb3RzIGxpOm50aC1vZi10eXBlKDEpIHtcbiAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICBtYXJnaW4tYm90dG9tOiAycHggIWltcG9ydGFudDtcbiAgfVxufVxuXG4uc2xpY2stZG90cyBsaTpudGgtb2YtdHlwZSgxKSBidXR0b246YmVmb3JlIHtcbiAgYmFja2dyb3VuZDogbm8tcmVwZWF0IGNlbnRlciAvIDM4LjclIHVybCguLi9pbWcvYW1hLnN2ZykgI0RFQzJCNjtcbiAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICBiYWNrZ3JvdW5kOiBuby1yZXBlYXQgY2VudGVyIC8gNjAlIHVybCguLi9pbWcvYW1hX3RhdGUuc3ZnKSAjREVDMkI2O1xuICB9XG59XG5cbi5zbGljay1kb3RzIGxpOm50aC1vZi10eXBlKDIpIGJ1dHRvbjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kOiBuby1yZXBlYXQgY2VudGVyIC8gMzguNSUgdXJsKC4uL2ltZy9rYXJhLnN2ZykgIzk5QUFCQTtcbiAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICBiYWNrZ3JvdW5kOiBuby1yZXBlYXQgY2VudGVyIC8gNjAlIHVybCguLi9pbWcva2FyYV90YXRlLnN2ZykgIzk5QUFCQTtcbiAgfVxufVxuLyrjg4bjgq3jgrnjg4jjgqLjg4vjg6Hjg7zjgrfjg6fjg7Ncbl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyovXG5cblxuXG5cblxuLyogQU5JTUFUSU9OXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5AaW5jbHVkZSBhbmltZS1mdXdhdDtcbkBpbmNsdWRlIGFuaW1lLWZ1d2F0X2Zyb21Ub3A7XG5AaW5jbHVkZSBhbmltZS1ibGluaztcblxuQGtleWZyYW1lcyBib3VuY2Uge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKC45KVxufVxuXG41MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAzKVxufVxuMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpXG59XG59XG5cblxuQGtleWZyYW1lcyBzaG93IHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNSUpO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG59XG5cblxuQGtleWZyYW1lcyBvcGFjaXR5IHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG59XG5cblxuXG5Aa2V5ZnJhbWVzIHJvdGF0ZSB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS40KSByb3RhdGUoMTJkZWcpO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDEuMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGZhZGVJbjAxIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeCgxLjUsIDAuMiwgMC4yLCAxLjUsIDAsIC0xMCk7XG4gIH1cbiAgMzAlIHtcbiAgICBvcGFjaXR5OiAwLjQ7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgoMS4zLCAwLjEsIDAuMSwgMS4zLCAzLCAtNyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMS4wO1xuICAgIHRyYW5zZm9ybTogbWF0cml4KDEsIDAsIDAsIDEsIDAsIDApO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgem9vbUluIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDAuMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNCkgdHJhbnNsYXRlWSgtMzBweCk7XG4gICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDEuMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMCkgdHJhbnNsYXRlWSgwcHgpO1xuICAgICB9XG5cbn1cblxuQGtleWZyYW1lcyB6b29tSW4wMSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNCk7XG4gICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wKTtcbiAgICAgfVxuXG59XG5cbi8qLnBvc2l0aW9uIHtcbiAgb3BhY2l0eTogMDtcbiAgLXdlYmtpdC1hbmltYXRpb246IHBvc2l0aW9uIDJzIGVhc2UtaW4tb3V0IDBzIDEgZm9yd2FyZHM7XG4gICAgICBhbmltYXRpb246IHBvc2l0aW9uIDJzIGVhc2UtaW4tb3V0IDBzIDEgZm9yd2FyZHM7XG59Ki9cblxuQGtleWZyYW1lcyBwb3NpdGlvbiB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwLjQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuXG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMS4wO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg4cHgpO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgcG9zaXRpb25fMDEge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAxMDBweCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMS4wO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDBweCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBiZ19zaXplIHtcbiAgMCUge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgfVxuICAxMDAlIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZDtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGNvdmVyX1Ige1xuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBjb3Zlcl9MIHtcbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGNvdmVyX1Qge1xuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEyMCUpO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgYXJyb3dfYW5pbWUge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtMTBweCkgcm90YXRlKDE4MGRlZyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCA1MHB4KSByb3RhdGUoMTgwZGVnKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGJhcl9hbmltX3kge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcbn1cblxuMzAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xufVxuMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xufVxufVxuXG4vKuW3puOBi+OCieWPsyovXG5Aa2V5ZnJhbWVzIGxvb3AxIHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICB9XG4gIDEwMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgbG9vcDIge1xuICAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMCUpO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMCUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAwJSk7XG4gIH1cbn1cblxuLyrlj7PjgYvjgonlt6YqL1xuQGtleWZyYW1lcyBsb29wMyB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgfVxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGxvb3A0IHtcbiAgMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMDAlKTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMDAlKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMCUpO1xuICB9XG4gIDEwMCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgYmx1ciB7XG4gIDAlIHtcbiAgICAgLXdlYmtpdC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gICAgIGZpbHRlcjogYmx1cigxMHB4KTsgXG4gICB9XG4gIDEwMCUge1xuICAgIC13ZWJraXQtZmlsdGVyOiBibHVyKDBweCk7IFxuICAgICBmaWx0ZXI6IGJsdXIoMHB4KTsgXG4gICB9XG59XG5cbkBrZXlmcmFtZXMgYW5pbWF0aW9uLW1hcnF1ZWUge1xuICAwJSB7IFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAlKTsgXG4gIH1cbiAgMTAwJSB7IFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDAlKTsgXG4gIH1cbn1cblxuXG4vKi0tLS0tIOODleOCp+ODvOODieOCpOODsyAtLS0tLSovXG5cblxuICAgLmludmlld2ZhZGVJblVwIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMjAlKTtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAyMCUpO1xuICAgICAgICB0cmFuc2l0aW9uOiAxcztcbiAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogLjRzO1xuICAgIH1cblxuICAgIC5pbnZpZXdmYWRlSW5VcDAxIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxMHB4KTtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMTBweCk7XG4gICAgICB0cmFuc2l0aW9uOiAxcztcbiAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDFzO1xuICB9XG5cbiAgICAuaW52aWV3ZmFkZUluVXAyIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgNDBweCk7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgNDBweCk7XG4gICAgICAgIHRyYW5zaXRpb246IDFzO1xuICAgICAgICB0cmFuc2l0aW9uLWRlbGF5OiAuNHM7XG4gICAgfVxuXG4gICAgLmludmlld2ZhZGVJblVwMyB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDYwcHgpO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDYwcHgpO1xuICAgICAgICB0cmFuc2l0aW9uOiAxLjRzO1xuICAgICAgICB0cmFuc2l0aW9uLWRlbGF5OiAuOHM7XG4gICAgfVxuXG4gICAgLmludmlld2ZhZGVJbiB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgdHJhbnNpdGlvbjogLjhzO1xuICAgIH1cblxuICAgIC5pbnZpZXdmcm9tVG9wIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTgwcHgpO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC04MHB4KTtcbiAgICAgICAgdHJhbnNpdGlvbjogMXM7XG4gICAgfVxuXG5cbiAgICAuaW52aWV3UmlnaHQge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgzMHB4LCAtMzBweCk7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMzBweCwgLTMwcHgpO1xuICAgICAgICB0cmFuc2l0aW9uOiAuOHM7XG4gICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IC44cztcbiAgICB9XG5cbiAgICAuaW52aWV3TGVmdCB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0zMHB4LCAtMzBweCk7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTMwcHgsIC0zMHB4KTtcbiAgICAgICAgdHJhbnNpdGlvbjogLjhzO1xuICAgICAgICB0cmFuc2l0aW9uLWRlbGF5OiAuOHM7XG4gICAgfVxuXG4gICAgXG5cbiAgICAvKi56b29tSW4ge1xuICAgICAgYW5pbWF0aW9uOiB6b29tSW4gMS4ycyAxcyBjdWJpYy1iZXppZXIoLjMsMS41OSwuNzksLTAuNjQpIDEgZm9yd2FyZHM7XG4gICAgfSovXG5cbiAgICAuZmFkZUluVXAge1xuICAgICAgICBvcGFjaXR5OiAxLjAgIWltcG9ydGFudDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCkgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5mYWRlSW5VcDAxIHtcbiAgICAgIG9wYWNpdHk6IDEuMCAhaW1wb3J0YW50O1xuICAgIH1cblxuXG5cblxuXG5cbi8qIGxvYWRpbmdcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbkBpbmNsdWRlIGxvYWRpbmc7XG5cbi8qalF1ZXJ544GuQ1NTXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vLyBAaW1wb3J0IFwiZmxleHNsaWRlclwiO1xuLy8gQGltcG9ydCBcInZlbm9ib3hcIjtcbkBpbXBvcnQgXCJmb290ZXJcIjtcbiIsIkBpbXBvcnQgXCJjb21wYXNzL2Z1bmN0aW9uc1wiO1xuQGltcG9ydCBcImNvbXBhc3MvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwiY29tcGFzcy90eXBvZ3JhcGh5XCI7XG5AaW1wb3J0IFwiY29tcGFzcy9jc3MzXCI7XG4iLCJAaW1wb3J0IFwiZnVuY3Rpb25zL2xpc3RzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnN0YW50c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9kaXNwbGF5XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbG9yc1wiO1xuIiwiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBsaXN0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvbGlzdHMucmJcbi8vXG5cblxuLy8gY29tcGFjdCBpcyBwYXJ0IG9mIGxpYnNhc3NcblxuQGZ1bmN0aW9uIC1jb21wYXNzLW50aCgkbGlzdCwgJHBsYWNlKSB7XG4gIC8vIFllcCwgU2Fzcy1saXN0cyBhcmUgMS1pbmRleGVkLlxuICBAaWYgJHBsYWNlID09IFwiZmlyc3RcIiB7XG4gICAgJHBsYWNlOiAxO1xuICB9XG4gIEBpZiAkcGxhY2UgPT0gXCJsYXN0XCIge1xuICAgICRwbGFjZTogbGVuZ3RoKCRsaXN0KTtcbiAgfVxuICBAcmV0dXJuIG50aCgkbGlzdCwgJHBsYWNlKTtcbn1cblxuLy8gY29tcGFzc19saXN0IGNhbid0IGJlIGltcGxlbWVudGVkIGluIHNhc3Mgc2NyaXB0XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1zcGFjZS1saXN0KCRpdGVtMSwgJGl0ZW0yOm51bGwsICRpdGVtMzpudWxsLCAkaXRlbTQ6bnVsbCwgJGl0ZW01Om51bGwsICRpdGVtNjpudWxsLCAkaXRlbTc6bnVsbCwgJGl0ZW04Om51bGwsICRpdGVtOTpudWxsKSB7XG4gICRpdGVtczogKCk7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJGl0ZW0xKSA9PSAnbGlzdCcge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkaXRlbXM6ICRpdGVtMTtcbiAgfSBAZWxzZSB7XG4gICAgJGl0ZW1zOiAkaXRlbTEgJGl0ZW0yICRpdGVtMyAkaXRlbTQgJGl0ZW01ICRpdGVtNiAkaXRlbTcgJGl0ZW04ICRpdGVtOTtcbiAgfVxuXG4gICRmdWxsOiBmaXJzdC12YWx1ZS1vZigkaXRlbXMpO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggbGVuZ3RoKCRpdGVtcykge1xuICAgICRpdGVtOiBudGgoJGl0ZW1zLCAkaSk7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsICRpdGVtO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGZ1bGw7XG59XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1saXN0LXNpemUoJGxpc3QpIHtcbiAgQHJldHVybiBsZW5ndGgoJGxpc3QpO1xufVxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc2xpY2UoJGxpc3QsICRzdGFydCwgJGVuZDogZmFsc2UpIHtcbiAgQGlmICRlbmQgPT0gZmFsc2Uge1xuICAgICRlbmQ6IGxlbmd0aCgkbGlzdCk7XG4gIH1cbiAgJGZ1bGw6IG50aCgkbGlzdCwgJHN0YXJ0KTtcbiAgQGZvciAkaSBmcm9tICRzdGFydCArIDEgdGhyb3VnaCAkZW5kIHtcbiAgICAkZnVsbDogJGZ1bGwsIG50aCgkbGlzdCwgJGkpO1xuICB9XG4gIEByZXR1cm4gJGZ1bGw7XG59XG5cbkBmdW5jdGlvbiByZWplY3QoJGxpc3QsICRyZWplY3QxLCAkcmVqZWN0MjpudWxsLCAkcmVqZWN0MzpudWxsLCAkcmVqZWN0NDpudWxsLCAkcmVqZWN0NTpudWxsLCAkcmVqZWN0NjpudWxsLCAkcmVqZWN0NzpudWxsLCAkcmVqZWN0ODpudWxsLCAkcmVqZWN0OTpudWxsKSB7XG4gICRyZWplY3RzOiAkcmVqZWN0MSwgJHJlamVjdDIsICRyZWplY3QzLCAkcmVqZWN0NCwgJHJlamVjdDUsICRyZWplY3Q2LCAkcmVqZWN0NywgJHJlamVjdDgsICRyZWplY3Q5O1xuXG4gICRmdWxsOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBpbmRleCgkcmVqZWN0cywgJGl0ZW0pIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmICRmdWxsIHtcbiAgICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZ1bGw6ICRpdGVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRmdWxsO1xufVxuXG5AZnVuY3Rpb24gZmlyc3QtdmFsdWUtb2YoJGxpc3QpIHtcbiAgQHJldHVybiBudGgoJGxpc3QsIDEpO1xufVxuXG5AZnVuY3Rpb24gY29tcGFjdCgkdmFycy4uLikge1xuICAkc2VwYXJhdG9yOiBsaXN0LXNlcGFyYXRvcigkdmFycyk7XG4gICRsaXN0OiAoKTtcbiAgQGVhY2ggJHZhciBpbiAkdmFycyB7XG4gICAgICBAaWYgJHZhciB7XG4gICAgICAgICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJHZhciwgJHNlcGFyYXRvcik7XG4gICAgICB9XG4gIH1cbiAgQHJldHVybiAkbGlzdDtcbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNyb3NzIGJyb3dzZXIgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydC5yYlxuLy8gXG5cbkBmdW5jdGlvbiBwcmVmaXhlZCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTtcbiAgJHByZWZpeGVkOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSAnc3RyaW5nJyB7XG4gICAgICAkcHJlZml4ZWQ6ICRwcmVmaXhlZCBvciBzdHItaW5kZXgoJGl0ZW0sICd1cmwnKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sICdyZ2InKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sICcjJykgIT0gMTtcbiAgICB9IEBlbHNlaWYgdHlwZS1vZigkaXRlbSkgPT0gJ2NvbG9yJyB7XG4gICAgfSBAZWxzZWlmICRpdGVtICE9IG51bGwge1xuICAgICAgJHByZWZpeGVkOiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuICRwcmVmaXhlZDtcbn1cblxuQGZ1bmN0aW9uIHByZWZpeCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICAkcHJvcGVydGllczogXCJcIjtcblxuICAvLyBTdXBwb3J0IGZvciBwb2x5bW9ycGhpc20uXG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eTEpID09ICdsaXN0JyB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxO1xuICB9IEBlbHNlIHtcbiAgICAvLyBQYXNzaW5nIG11bHRpcGxlIHByb3BlcnRpZXMuXG4gICAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTk7XG4gIH1cblxuICAkcHJvcHM6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmICRpdGVtID09IG51bGwge31cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgcHJlZml4ZWQoJHByZWZpeCwgJGl0ZW0pIHtcbiAgICAgICAgJGl0ZW06ICN7JHByZWZpeH0tI3skaXRlbX07XG4gICAgICB9XG4gICAgICBAaWYgJHByb3BzIHtcbiAgICAgICAgJHByb3BzOiAkcHJvcHMsICRpdGVtO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcHJvcHM6ICRpdGVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRwcm9wcztcbn1cblxuQGZ1bmN0aW9uIC1zdmcoJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1zdmcnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1vd2coJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1vd2cnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC13ZWJraXQoJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy13ZWJraXQnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1tb3ooJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1tb3onLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1vKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctbycsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLXBpZSgkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLXBpZScsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZ3JhZGllbnQgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3YwLjEyLjIvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0LnJiXG4vLyBcblxuQGZ1bmN0aW9uIGNvbG9yLXN0b3BzKCRpdGVtMSwgJGl0ZW0yOm51bGwsICRpdGVtMzpudWxsLCAkaXRlbTQ6bnVsbCwgJGl0ZW01Om51bGwsICRpdGVtNjpudWxsLCAkaXRlbTc6bnVsbCwgJGl0ZW04Om51bGwsICRpdGVtOTpudWxsKSB7XG4gICRpdGVtczogJGl0ZW0yLCAkaXRlbTMsICRpdGVtNCwgJGl0ZW01LCAkaXRlbTYsICRpdGVtNywgJGl0ZW04LCAkaXRlbTk7XG4gICRmdWxsOiAkaXRlbTE7XG4gIEBlYWNoICRpdGVtIGluICRpdGVtcyB7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTtcbiAgICB9ICAgIFxuICB9XG4gIEByZXR1cm4gJGZ1bGw7XG59IiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29uc3RhbnRzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY29uc3RhbnRzLnJiXG4vLyBcblxuQGZ1bmN0aW9uIG9wcG9zaXRlLXBvc2l0aW9uKCRmcm9tKSB7XG4gICAgQGlmICgkZnJvbSA9PSB0b3ApIHtcbiAgICAgICAgQHJldHVybiBib3R0b207XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gYm90dG9tKSB7XG4gICAgICAgIEByZXR1cm4gdG9wO1xuICAgIH0gQGVsc2UgaWYgKCRmcm9tID09IGxlZnQpIHtcbiAgICAgICAgQHJldHVybiByaWdodDtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSByaWdodCkge1xuICAgICAgICBAcmV0dXJuIGxlZnQ7XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gY2VudGVyKSB7XG4gICAgICAgIEByZXR1cm4gY2VudGVyO1xuICAgIH1cbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGRpc3BsYXkgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvY29yZS9saWIvY29tcGFzcy9jb3JlL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZGlzcGxheS5yYlxuLy8gXG5cbkBmdW5jdGlvbiBlbGVtZW50cy1vZi10eXBlKCR0eXBlKXtcbiAgICBAaWYgKCR0eXBlID09IGJsb2NrKXtcbiAgICAgICAgQHJldHVybiBhZGRyZXNzLCBhcnRpY2xlLCBhc2lkZSwgYmxvY2txdW90ZSwgY2VudGVyLCBkaXIsIGRpdiwgZGQsIGRldGFpbHMsIGRsLCBkdCwgZmllbGRzZXQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9ybSwgZm9vdGVyLCBmcmFtZXNldCwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgaHIsIGhlYWRlciwgaGdyb3VwLCBpc2luZGV4LCBtYWluLCBtZW51LCBuYXYsIG5vZnJhbWVzLCBub3NjcmlwdCwgb2wsIHAsIHByZSwgc2VjdGlvbiwgc3VtbWFyeSwgdWw7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaW5saW5lKXtcbiAgICAgICAgQHJldHVybiBhLCBhYmJyLCBhY3JvbnltLCBhdWRpbywgYiwgYmFzZWZvbnQsIGJkbywgYmlnLCBiciwgY2FudmFzLCBjaXRlLCBjb2RlLCBjb21tYW5kLCBkYXRhbGlzdCwgZGZuLCBlbSwgZW1iZWQsIGZvbnQsIGksIGltZywgaW5wdXQsIGtleWdlbiwga2JkLCBsYWJlbCwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHEsIHJwLCBydCwgcnVieSwgcywgc2FtcCwgc2VsZWN0LCBzbWFsbCwgc3Bhbiwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0ZXh0YXJlYSwgdGltZSwgdHQsIHUsIHZhciwgdmlkZW8sIHdicjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBpbmxpbmUtYmxvY2spe1xuICAgICAgICBAcmV0dXJuIGltZztcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZSl7XG4gICAgICAgIEByZXR1cm4gdGFibGU7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gbGlzdC1pdGVtKXtcbiAgICAgICAgQHJldHVybiBsaTtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1yb3ctZ3JvdXApe1xuICAgICAgICBAcmV0dXJuIHRib2R5O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLWhlYWRlci1ncm91cCl7XG4gICAgICAgIEByZXR1cm4gdGhlYWQ7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtZm9vdGVyLWdyb3VwKXtcbiAgICAgICAgQHJldHVybiB0Zm9vdDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1yb3cpe1xuICAgICAgICBAcmV0dXJuIHRyO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLWNlbGwpe1xuICAgICAgICBAcmV0dXJuIHRoLCB0ZDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBodG1sNS1ibG9jayl7XG4gICAgICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGh0bWw1LWlubGluZSl7XG4gICAgICAgIEByZXR1cm4gYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGVtYmVkLCBrZXlnZW4sIG1hcmssIG1ldGVyLCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHRpbWUsIHZpZGVvLCB3YnI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaHRtbDUpe1xuICAgICAgICBAcmV0dXJuIGFydGljbGUsIGFzaWRlLCBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZGV0YWlscywgZW1iZWQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwga2V5Z2VuLCBtYWluLCBtYXJrLCBtZW51LCBtZXRlciwgbmF2LCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksIHRpbWUsIHZpZGVvLCB3YnI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGV4dC1pbnB1dCl7XG4gICAgICAgIEByZXR1cm4gaW5wdXQsIHRleHRhcmVhO1xuICAgIH1cbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNvbG9ycyBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb2xvcnMucmJcbi8vXG5cbi8vIGEgZ2VuZXJpY2l6ZWQgdmVyc2lvbiBvZiBsaWdodGVuL2RhcmtlbiBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3QtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7XG59XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3MgbGlnaHRuZXNzIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBzY2FsZWQgZGFya2VyLCBpZiBwb3NpdGl2ZSwgaXQgaXMgc2NhbGVkIGxpZ2h0ZXIuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBsaWdodCBvciBkYXJrIGNvbG9yIHVubGVzcyB0aGUgYW1vdW50IGlzIDEwMCUuXG5AZnVuY3Rpb24gc2NhbGUtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTtcbn1cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIHNhdHVyYXRlL2Rlc2F0dXJhdGUgc28gdGhhdCBuZWdhdGl2ZSB2YWx1ZXMgY2FuIGJlIHVzZWQuXG5AZnVuY3Rpb24gYWRqdXN0LXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7XG59XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3Mgc2F0dXJhdGlvbiBieSBzb21lIHBlcmNlbnRhZ2UuXG4vLyBJZiB0aGUgYW1vdW50IGlzIG5lZ2F0aXZlLCB0aGUgY29sb3IgaXMgZGVzYXR1cmF0ZWQsIGlmIHBvc2l0aXZlLCBpdCBpcyBzYXR1cmF0ZWQuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBzYXR1cmF0ZWQgb3IgZGVzYXR1cmF0ZWQgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1zYXR1cmF0aW9uKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7XG59XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gICAgQHJldHVybiBtaXgoIzAwMDAwMCwgJGNvbG9yLCAkcGVyY2VudGFnZSk7XG59XG5cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgICBAcmV0dXJuIG1peCgjZmZmZmZmLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuIiwiQGltcG9ydCBcInV0aWxpdGllcy9jb2xvclwiO1xuQGltcG9ydCBcInV0aWxpdGllcy9nZW5lcmFsXCI7XG5AaW1wb3J0IFwidXRpbGl0aWVzL3Nwcml0ZXNcIjtcbkBpbXBvcnQgXCJ1dGlsaXRpZXMvdGFibGVzXCI7XG5cbi8vIGRlcHJlY2F0ZWRcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L2xpbmtzXCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeS9saXN0c1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvdGV4dFwiO1xuIiwiQGltcG9ydCBcImNvbG9yL2NvbnRyYXN0XCI7IiwiJGNvbnRyYXN0ZWQtZGFyay1kZWZhdWx0OiAgICMwMDAgIWRlZmF1bHQ7XG4kY29udHJhc3RlZC1saWdodC1kZWZhdWx0OiAgI2ZmZiAhZGVmYXVsdDtcbiRjb250cmFzdGVkLWxpZ2h0bmVzcy10aHJlc2hvbGQ6IDMwJSAhZGVmYXVsdDtcblxuLy8gUmV0dXJucyB0aGUgYCRsaWdodGAgY29sb3Igd2hlbiB0aGUgYCRjb2xvcmAgaXMgZGFya1xuLy8gYW5kIHRoZSBgJGRhcmtgIGNvbG9yIHdoZW4gdGhlIGAkY29sb3JgIGlzIGxpZ2h0LlxuLy8gVGhlIGAkdGhyZXNob2xkYCBpcyBhIHBlcmNlbnQgYmV0d2VlbiBgMCVgIGFuZCBgMTAwJWAgYW5kIGl0IGRldGVybWluZXNcbi8vIHdoZW4gdGhlIGxpZ2h0bmVzcyBvZiBgJGNvbG9yYCBjaGFuZ2VzIGZyb20gXCJkYXJrXCIgdG8gXCJsaWdodFwiLlxuQGZ1bmN0aW9uIGNvbnRyYXN0LWNvbG9yKFxuICAkY29sb3IsXG4gICRkYXJrOiAkY29udHJhc3RlZC1kYXJrLWRlZmF1bHQsXG4gICRsaWdodDogJGNvbnRyYXN0ZWQtbGlnaHQtZGVmYXVsdCxcbiAgJHRocmVzaG9sZDogJGNvbnRyYXN0ZWQtbGlnaHRuZXNzLXRocmVzaG9sZFxuKSB7XG4gIEByZXR1cm4gaWYobGlnaHRuZXNzKCRjb2xvcikgPCAkdGhyZXNob2xkLCAkbGlnaHQsICRkYXJrKVxufVxuXG4vLyBTZXRzIHRoZSBzcGVjaWZpZWQgYmFja2dyb3VuZCBjb2xvciBhbmQgY2FsY3VsYXRlcyBhIGRhcmsgb3IgbGlnaHQgY29udHJhc3RlZCB0ZXh0IGNvbG9yLlxuLy8gVGhlIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRocm91Z2ggdG8gdGhlIFtjb250cmFzdC1jb2xvciBmdW5jdGlvbl0oI2Z1bmN0aW9uLWNvbnRyYXN0LWNvbG9yKS5cbkBtaXhpbiBjb250cmFzdGVkKFxuICAkYmFja2dyb3VuZC1jb2xvcixcbiAgJGRhcms6ICRjb250cmFzdGVkLWRhcmstZGVmYXVsdCxcbiAgJGxpZ2h0OiAkY29udHJhc3RlZC1saWdodC1kZWZhdWx0LFxuICAkdGhyZXNob2xkOiAkY29udHJhc3RlZC1saWdodG5lc3MtdGhyZXNob2xkXG4pIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3I7XG4gIGNvbG9yOiBjb250cmFzdC1jb2xvcigkYmFja2dyb3VuZC1jb2xvciwgJGRhcmssICRsaWdodCwgJHRocmVzaG9sZCk7XG59IiwiQGltcG9ydCBcImdlbmVyYWwvcmVzZXRcIjtcbkBpbXBvcnQgXCJnZW5lcmFsL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC9mbG9hdFwiO1xuQGltcG9ydCBcImdlbmVyYWwvdGFnLWNsb3VkXCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC9oYWNrc1wiO1xuQGltcG9ydCBcImdlbmVyYWwvbWluXCI7XG4iLCIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLCIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLCBcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgLy8gVW5saWtlIEVyaWMncyBvcmlnaW5hbCByZXNldCwgd2UgcmVzZXQgdGhlIGh0bWwgZWxlbWVudCB0byBiZSBjb21wYXRpYmxlXG4gIC8vIHdpdGggdGhlIHZlcnRpY2FsIHJoeXRobSBtaXhpbnMuXG4gIGh0bWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJvZHk7IH1cbiAgb2wsIHVsIHtcbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlOyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9XG4gIEBpbmNsdWRlIHJlc2V0LWh0bWw1OyB9XG5cbi8vIFJlc2V0IGFsbCBlbGVtZW50cyB3aXRoaW4gc29tZSBzZWxlY3RvciBzY29wZS4gVG8gcmVzZXQgdGhlIHNlbGVjdG9yIGl0c2VsZixcbi8vIG1peGluIHRoZSBhcHByb3ByaWF0ZSByZXNldCBtaXhpbiBmb3IgdGhhdCBlbGVtZW50IHR5cGUgYXMgd2VsbC4gVGhpcyBjb3VsZCBiZVxuLy8gdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN0eWxlIGEgcGFydCBvZiB5b3VyIHBhZ2UgaW4gYSBkcmFtYXRpY2FsbHkgZGlmZmVyZW50IHdheS5cbkBtaXhpbiBuZXN0ZWQtcmVzZXQge1xuICBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCwgXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7IFxuICAgIGNvbnRlbnQ6IG5vbmU7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGJvcmRlci5cbkBtaXhpbiByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8vIFVucmVjb2duaXplZCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGlubGluZS5cbi8vIFRoaXMgcmVzZXQgcHJvdmlkZXMgYSBiYXNpYyByZXNldCBmb3IgYmxvY2sgaHRtbDUgZWxlbWVudHNcbi8vIHNvIHRoZXkgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBpbiBicm93c2VycyB0aGF0IGRvbid0IHJlY29nbml6ZSB0aGVtXG4vLyBhbmQgcmVzZXQgaW4gYnJvd3NlcnMgdGhhdCBoYXZlIGRlZmF1bHQgc3R5bGVzIGZvciB0aGVtLlxuQG1peGluIHJlc2V0LWh0bWw1IHtcbiAgI3tlbGVtZW50cy1vZi10eXBlKGh0bWw1LWJsb2NrKX0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBkaXNwbGF5IG9mIGlubGluZSBhbmQgYmxvY2sgZWxlbWVudHMgdG8gdGhlaXIgZGVmYXVsdCBkaXNwbGF5XG4vLyBhY2NvcmRpbmcgdG8gdGhlaXIgdGFnIHR5cGUuIEVsZW1lbnRzIHRoYXQgaGF2ZSBhIGRlZmF1bHQgZGlzcGxheSB0aGF0IHZhcmllcyBhY3Jvc3Ncbi8vIHZlcnNpb25zIG9mIGh0bWwgb3IgYnJvd3NlciBhcmUgbm90IGhhbmRsZWQgaGVyZSwgYnV0IHRoaXMgY292ZXJzIHRoZSA5MCUgdXNlIGNhc2UuXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICAvLyBUdXJuIG9mZiB0aGUgZGlzcGxheSBmb3IgYm90aCBvZiB0aGVzZSBjbGFzc2VzXG4vLyAgICAgLnVucmVnaXN0ZXJlZC1vbmx5LCAucmVnaXN0ZXJlZC1vbmx5XG4vLyAgICAgICBkaXNwbGF5OiBub25lXG4vLyAgICAgLy8gTm93IHR1cm4gb25seSBvbmUgb2YgdGhlbSBiYWNrIG9uIGRlcGVuZGluZyBvbiBzb21lIG90aGVyIGNvbnRleHQuXG4vLyAgICAgYm9keS5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi5yZWdpc3RlcmVkLW9ubHlcIilcbi8vICAgICBib2R5LnVucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIudW5yZWdpc3RlcmVkLW9ubHlcIilcbkBtaXhpbiByZXNldC1kaXNwbGF5KCRzZWxlY3RvcjogXCJcIiwgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImlubGluZVwiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImJsb2NrXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuIiwiLy8gQGRvYyBvZmZcbi8vIEV4dGVuZHMgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB0byBlbmNsb3NlIGFueSBmbG9hdHMgaXQgY29udGFpbnMuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyBUaGlzIGJhc2ljIG1ldGhvZCBpcyBwcmVmZXJyZWQgZm9yIHRoZSB1c3VhbCBjYXNlLCB3aGVuIHBvc2l0aW9uZWRcbi8vIGNvbnRlbnQgd2lsbCBub3Qgc2hvdyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lci5cbi8vXG4vLyBSZWNvbW1lbmRhdGlvbnMgaW5jbHVkZSB1c2luZyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWR0aC5cbi8vIENyZWRpdDogW3F1aXJrc21vZGUub3JnXShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAwNS8wMy9jbGVhcmluZ19mbG9hdHMuaHRtbClcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50ICAgIDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5ICAgIDogYmxvY2s7XG4gICAgaGVpZ2h0ICAgICA6IDA7XG4gICAgY2xlYXIgICAgICA6IGJvdGg7XG4gICAgb3ZlcmZsb3cgICA6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5IDogaGlkZGVuO1xuICB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cbiIsIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9IEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTtcbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYgeyBkaXNwbGF5OiBibG9jazsgfVxuICB9XG59XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTtcbiAgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfSIsIi8vIEVtaXRzIHN0eWxlcyBmb3IgYSB0YWcgY2xvdWRcbkBtaXhpbiB0YWctY2xvdWQoJGJhc2Utc2l6ZTogMWVtKSB7XG4gIGZvbnQtc2l6ZTogJGJhc2Utc2l6ZTtcbiAgbGluZS1oZWlnaHQ6IDEuMiAqICRiYXNlLXNpemU7XG4gIC54eHMsIC54cywgLnMsIC5sLCAueGwsIC54eGwge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjIgKiAkYmFzZS1zaXplOyB9XG4gIC54eHMge1xuICAgIGZvbnQtc2l6ZTogJGJhc2Utc2l6ZSAvIDI7IH1cbiAgLnhzIHtcbiAgICBmb250LXNpemU6IDIgKiAkYmFzZS1zaXplIC8gMzsgfVxuICAucyB7XG4gICAgZm9udC1zaXplOiAzICogJGJhc2Utc2l6ZSAvIDQ7IH1cbiAgLmwge1xuICAgIGZvbnQtc2l6ZTogNCAqICRiYXNlLXNpemUgLyAzOyB9XG4gIC54bCB7XG4gICAgZm9udC1zaXplOiAzICogJGJhc2Utc2l6ZSAvIDI7IH1cbiAgLnh4bCB7XG4gICAgZm9udC1zaXplOiAyICogJGJhc2Utc2l6ZTsgfSB9XG4iLCJAaW1wb3J0IFwiaGFja3NcIjtcblxuLy8qKlxuLy8gQ3Jvc3MgYnJvd3NlciBtaW4taGVpZ2h0IG1peGluLlxuQG1peGluIG1pbi1oZWlnaHQoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGhhY2tlZC1taW5pbXVtKGhlaWdodCwgJHZhbHVlKTsgfVxuXG4vLyoqXG4vLyBDcm9zcyBicm93c2VyIG1pbi13aWR0aCBtaXhpbi5cbkBtaXhpbiBtaW4td2lkdGgoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGhhY2tlZC1taW5pbXVtKHdpZHRoLCAkdmFsdWUpOyB9XG5cbi8vIEBwcml2YXRlIFRoaXMgbWl4aW4gaXMgbm90IG1lYW50IHRvIGJlIHVzZWQgZGlyZWN0bHkuXG5AbWl4aW4gaGFja2VkLW1pbmltdW0oJHByb3BlcnR5LCAkdmFsdWUpIHtcbiAgbWluLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICBAaW5jbHVkZSBiYW5nLWhhY2soJHByb3BlcnR5LCBhdXRvLCAkdmFsdWUpOyB9XG4iLCJAaW1wb3J0IFwic3ByaXRlcy9iYXNlXCI7XG5AaW1wb3J0IFwic3ByaXRlcy9zcHJpdGUtaW1nXCI7XG4iLCIvLyBEZXRlcm1pbmVzIHRob3NlIHN0YXRlcyBmb3Igd2hpY2ggeW91IHdhbnQgdG8gZW5hYmxlIG1hZ2ljIHNwcml0ZSBzZWxlY3RvcnNcbiRzcHJpdGUtc2VsZWN0b3JzOiBob3ZlciwgdGFyZ2V0LCBhY3RpdmUgIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiBhbiBlbGVtZW50IHRvIHRoZSBvcmlnaW5hbFxuLy8gZGltZW5zaW9ucyBvZiBhbiBpbWFnZSBiZWZvcmUgaXQgd2FzIGluY2x1ZGVkIGluIHRoZSBzcHJpdGUuXG5AbWl4aW4gc3ByaXRlLWRpbWVuc2lvbnMoJG1hcCwgJHNwcml0ZSkge1xuICBoZWlnaHQ6IGltYWdlLWhlaWdodChzcHJpdGUtZmlsZSgkbWFwLCAkc3ByaXRlKSk7XG4gIHdpZHRoOiBpbWFnZS13aWR0aChzcHJpdGUtZmlsZSgkbWFwLCAkc3ByaXRlKSk7XG59XG5cbi8vIFNldCB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbiBvZiB0aGUgZ2l2ZW4gc3ByaXRlIGAkbWFwYCB0byBkaXNwbGF5IHRoZVxuLy8gc3ByaXRlIG9mIHRoZSBnaXZlbiBgJHNwcml0ZWAgbmFtZS4gWW91IGNhbiBtb3ZlIHRoZSBpbWFnZSByZWxhdGl2ZSB0byBpdHNcbi8vIG5hdHVyYWwgcG9zaXRpb24gYnkgcGFzc2luZyBgJG9mZnNldC14YCBhbmQgYCRvZmZzZXQteWAuXG5AbWl4aW4gc3ByaXRlLWJhY2tncm91bmQtcG9zaXRpb24oJG1hcCwgJHNwcml0ZSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogc3ByaXRlLXBvc2l0aW9uKCRtYXAsICRzcHJpdGUsICRvZmZzZXQteCwgJG9mZnNldC15KTsgIFxufVxuXG5cbi8vIERldGVybWluZXMgaWYgeW91IHdhbnQgdG8gaW5jbHVkZSBtYWdpYyBzZWxlY3RvcnMgaW4geW91ciBzcHJpdGVzXG4kZGlzYWJsZS1tYWdpYy1zcHJpdGUtc2VsZWN0b3JzOmZhbHNlICFkZWZhdWx0O1xuXG4vLyBJbmNsdWRlIHRoZSBwb3NpdGlvbiBhbmQgKG9wdGlvbmFsbHkpIGRpbWVuc2lvbnMgb2YgdGhpcyBgJHNwcml0ZWBcbi8vIGluIHRoZSBnaXZlbiBzcHJpdGUgYCRtYXBgLiBUaGUgc3ByaXRlIHVybCBzaG91bGQgY29tZSBmcm9tIGVpdGhlciBhIGJhc2Vcbi8vIGNsYXNzIG9yIHlvdSBjYW4gc3BlY2lmeSB0aGUgYHNwcml0ZS11cmxgIGV4cGxpY2l0bHkgbGlrZSB0aGlzOlxuLy9cbi8vICAgICBiYWNrZ3JvdW5kOiAkbWFwIG5vLXJlcGVhdDtcbkBtaXhpbiBzcHJpdGUoJG1hcCwgJHNwcml0ZSwgJGRpbWVuc2lvbnM6IGZhbHNlLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBAaW5jbHVkZSBzcHJpdGUtYmFja2dyb3VuZC1wb3NpdGlvbigkbWFwLCAkc3ByaXRlLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7XG4gIEBpZiAkZGltZW5zaW9ucyB7XG4gICAgQGluY2x1ZGUgc3ByaXRlLWRpbWVuc2lvbnMoJG1hcCwgJHNwcml0ZSk7XG4gIH1cbiAgQGlmIG5vdCgkZGlzYWJsZS1tYWdpYy1zcHJpdGUtc2VsZWN0b3JzKSB7XG4gICAgQGluY2x1ZGUgc3ByaXRlLXNlbGVjdG9ycygkbWFwLCAkc3ByaXRlLCAkc3ByaXRlLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7XG4gIH1cbn1cblxuLy8gSW5jbHVkZSB0aGUgc2VsZWN0b3JzIGZvciB0aGUgYCRzcHJpdGVgIGdpdmVuIHRoZSBgJG1hcGAgYW5kIHRoZSBcbi8vIGAkZnVsbC1zcHJpdGUtbmFtZWBcbi8vIEBwcml2YXRlXG5AbWl4aW4gc3ByaXRlLXNlbGVjdG9ycygkbWFwLCAkc3ByaXRlLW5hbWUsICRmdWxsLXNwcml0ZS1uYW1lLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBAZWFjaCAkc2VsZWN0b3IgaW4gJHNwcml0ZS1zZWxlY3RvcnMge1xuICAgIEBpZiBzcHJpdGVfaGFzX3NlbGVjdG9yKCRtYXAsICRzcHJpdGUtbmFtZSwgJHNlbGVjdG9yKSB7XG4gICAgICAmOiN7JHNlbGVjdG9yfSwgJi4jeyRmdWxsLXNwcml0ZS1uYW1lfV8jeyRzZWxlY3Rvcn0sICYuI3skZnVsbC1zcHJpdGUtbmFtZX0tI3skc2VsZWN0b3J9IHtcbiAgICAgICAgICBAaW5jbHVkZSBzcHJpdGUtYmFja2dyb3VuZC1wb3NpdGlvbigkbWFwLCBcIiN7JHNwcml0ZS1uYW1lfV8jeyRzZWxlY3Rvcn1cIiwgJG9mZnNldC14LCAkb2Zmc2V0LXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBHZW5lcmF0ZXMgYSBjbGFzcyBmb3IgZWFjaCBzcGFjZSBzZXBhcmF0ZWQgbmFtZSBpbiBgJHNwcml0ZS1uYW1lc2AuXG4vLyBUaGUgY2xhc3Mgd2lsbCBiZSBvZiB0aGUgZm9ybSAuPG1hcC1uYW1lPi08c3ByaXRlLW5hbWU+LlxuLy9cbi8vIElmIGEgYmFzZSBjbGFzcyBpcyBwcm92aWRlZCwgdGhlbiBlYWNoIGNsYXNzIHdpbGwgZXh0ZW5kIGl0LlxuLy9cbi8vIElmIGAkZGltZW5zaW9uc2AgaXMgYHRydWVgLCB0aGUgc3ByaXRlIGRpbWVuc2lvbnMgd2lsbCBzcGVjaWZpZWQuXG5AbWl4aW4gc3ByaXRlcygkbWFwLCAkc3ByaXRlLW5hbWVzLCAkYmFzZS1jbGFzczogZmFsc2UsICRkaW1lbnNpb25zOiBmYWxzZSwgJHByZWZpeDogc3ByaXRlLW1hcC1uYW1lKCRtYXApLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBAZWFjaCAkc3ByaXRlLW5hbWUgaW4gJHNwcml0ZS1uYW1lcyB7XG4gICAgQGlmIHNwcml0ZV9kb2VzX25vdF9oYXZlX3BhcmVudCgkbWFwLCAkc3ByaXRlLW5hbWUpIHtcbiAgICAgICRmdWxsLXNwcml0ZS1uYW1lOiBcIiN7JHByZWZpeH0tI3skc3ByaXRlLW5hbWV9XCI7XG4gICAgICAuI3skZnVsbC1zcHJpdGUtbmFtZX0ge1xuICAgICAgICBAaWYgJGJhc2UtY2xhc3MgeyBAZXh0ZW5kICN7JGJhc2UtY2xhc3N9OyB9XG4gICAgICAgIEBpbmNsdWRlIHNwcml0ZSgkbWFwLCAkc3ByaXRlLW5hbWUsICRkaW1lbnNpb25zLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiLy8gQGRvYyBvZmZcbi8vIEV4YW1wbGUgMTpcbi8vXG4vLyAgICAgYS50d2l0dGVyXG4vLyAgICAgICArc3ByaXRlLWltZyhcImljb25zLTMyLnBuZ1wiLCAxKVxuLy8gICAgIGEuZmFjZWJvb2tcbi8vICAgICAgICtzcHJpdGUtaW1nKFwiaWNvbnMtMzJwbmdcIiwgMilcbi8vXG4vLyBFeGFtcGxlIDI6XG4vL1xuLy8gICAgIGFcbi8vICAgICAgICtzcHJpdGUtYmFja2dyb3VuZChcImljb25zLTMyLnBuZ1wiKVxuLy8gICAgICAgYS50d2l0dGVyXG4vLyAgICAgICAgICtzcHJpdGUtY29sdW1uKDEpXG4vLyAgICAgICBhLmZhY2Vib29rXG4vLyAgICAgICAgICtzcHJpdGUtcm93KDIpXG4vLyBAZG9jIG9uXG5cbiRzcHJpdGUtZGVmYXVsdC1zaXplOiAzMnB4ICFkZWZhdWx0O1xuXG4kc3ByaXRlLWRlZmF1bHQtbWFyZ2luOiAwcHggIWRlZmF1bHQ7XG5cbiRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aDogJHNwcml0ZS1kZWZhdWx0LXNpemUgIWRlZmF1bHQ7XG5cbiRzcHJpdGUtaW1hZ2UtZGVmYXVsdC1oZWlnaHQ6ICRzcHJpdGUtZGVmYXVsdC1zaXplICFkZWZhdWx0O1xuXG4vLyBTZXRzIGFsbCB0aGUgcnVsZXMgZm9yIGEgc3ByaXRlIGZyb20gYSBnaXZlbiBzcHJpdGUgaW1hZ2UgdG8gc2hvdyBqdXN0IG9uZSBvZiB0aGUgc3ByaXRlcy5cbi8vIFRvIHJlZHVjZSBkdXBsaWNhdGlvbiB1c2UgYSBzcHJpdGUtYmcgbWl4aW4gZm9yIGNvbW1vbiBwcm9wZXJ0aWVzIGFuZCBhIHNwcml0ZS1zZWxlY3QgbWl4aW4gZm9yIHBvc2l0aW9uaW5nLlxuQG1peGluIHNwcml0ZS1pbWcoJGltZywgJGNvbCwgJHJvdzogMSwgJHdpZHRoOiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtd2lkdGgsICRoZWlnaHQ6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC1oZWlnaHQsICRtYXJnaW46ICRzcHJpdGUtZGVmYXVsdC1tYXJnaW4pIHtcbiAgQGluY2x1ZGUgc3ByaXRlLWJhY2tncm91bmQoJGltZywgJHdpZHRoLCAkaGVpZ2h0KTtcbiAgQGluY2x1ZGUgc3ByaXRlLXBvc2l0aW9uKCRjb2wsICRyb3csICR3aWR0aCwgJGhlaWdodCwgJG1hcmdpbik7IFxufVxuXG4vLyBTZXRzIHJ1bGVzIGNvbW1vbiBmb3IgYWxsIHNwcml0ZXMsIGFzc3VtZXMgeW91IHdhbnQgYSBzcXVhcmUsIGJ1dCBhbGxvd3MgYSByZWN0YW5ndWxhciByZWdpb24uXG5AbWl4aW4gc3ByaXRlLWJhY2tncm91bmQoJGltZywgJHdpZHRoOiAkc3ByaXRlLWRlZmF1bHQtc2l6ZSwgJGhlaWdodDogJHdpZHRoKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1iYWNrZ3JvdW5kLXJlY3RhbmdsZSgkaW1nLCAkd2lkdGgsICRoZWlnaHQpOyBcbn1cblxuLy8gU2V0cyBydWxlcyBjb21tb24gZm9yIGFsbCBzcHJpdGVzLCBhc3N1bWVzIGEgcmVjdGFuZ3VsYXIgcmVnaW9uLlxuQG1peGluIHNwcml0ZS1iYWNrZ3JvdW5kLXJlY3RhbmdsZSgkaW1nLCAkd2lkdGg6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aCwgJGhlaWdodDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodCkge1xuICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGltZykgbm8tcmVwZWF0O1xuICB3aWR0aDogJHdpZHRoO1xuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIG92ZXJmbG93OiBoaWRkZW47IFxufVxuXG4vLyBBbGxvd3MgaG9yaXpvbnRhbCBzcHJpdGUgcG9zaXRpb25pbmcgb3B0aW1pemVkIGZvciBhIHNpbmdsZSByb3cgb2Ygc3ByaXRlcy5cbkBtaXhpbiBzcHJpdGUtY29sdW1uKCRjb2wsICR3aWR0aDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LXdpZHRoLCAkbWFyZ2luOiAkc3ByaXRlLWRlZmF1bHQtbWFyZ2luKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1wb3NpdGlvbigkY29sLCAxLCAkd2lkdGgsIDBweCwgJG1hcmdpbik7IFxufVxuXG4vLyBBbGxvd3MgdmVydGljYWwgc3ByaXRlIHBvc2l0aW9uaW5nIG9wdGltaXplZCBmb3IgYSBzaW5nbGUgY29sdW1uIG9mIHNwcml0ZXMuXG5AbWl4aW4gc3ByaXRlLXJvdygkcm93LCAkaGVpZ2h0OiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtaGVpZ2h0LCAkbWFyZ2luOiAkc3ByaXRlLWRlZmF1bHQtbWFyZ2luKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1wb3NpdGlvbigxLCAkcm93LCAwcHgsICRoZWlnaHQsICRtYXJnaW4pOyBcbn1cblxuLy8gQWxsb3dzIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNwcml0ZSBwb3NpdGlvbmluZyBmcm9tIGEgZ3JpZCBvZiBlcXVhbCBkaW1lbnNpb25lZCBzcHJpdGVzLlxuQG1peGluIHNwcml0ZS1wb3NpdGlvbigkY29sLCAkcm93OiAxLCAkd2lkdGg6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aCwgJGhlaWdodDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodCwgJG1hcmdpbjogJHNwcml0ZS1kZWZhdWx0LW1hcmdpbikge1xuICAkeDogKCRjb2wgLSAxKSAqIC0kd2lkdGggLSAoJGNvbCAtIDEpICogJG1hcmdpbjtcbiAgJHk6ICgkcm93IC0gMSkgKiAtJGhlaWdodCAtICgkcm93IC0gMSkgKiAkbWFyZ2luO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkeCAkeTsgXG59XG5cblxuXG4vLyBTaW1pbGFyIHRvICdzcHJpdGUtcmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucycgYnV0IGRvZXMgbm90IGF1dG1hdGljbHkgc2V0IHRoZSBkZW1lbnNpb25zXG5AbWl4aW4gc3ByaXRlLXJlcGxhY2UtdGV4dCAoJG1hcCwgJHNwcml0ZSwgJGRpbWVuc2lvbnM6IGZhbHNlLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkgeyAgICBcbiAgQGluY2x1ZGUgaGlkZS10ZXh0O1xuICBAaW5jbHVkZSBzcHJpdGUoJG1hcCwgJHNwcml0ZSwgJGRpbWVuc2lvbnMsICRvZmZzZXQteCwgJG9mZnNldC15KTtcbiAgYmFja2dyb3VuZC1pbWFnZTogJG1hcDtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbn1cblxuLy8gU2ltaWxhciB0byAncmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucycgYnV0IHdpdGggc3ByaXRlc1xuLy8gVG8gdXNlLCBjcmVhdGUgeW91ciBzcHJpdGUgYW5kIHRoZW4gcGFzcyBpdCBpbiB0aGUgYCRtYXBgIHBhcmFtXG4vLyBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgaW4gdGhlIHNwcml0ZSBmb2xkZXIgc2hvdWxkIGJlIGAkaW1nLW5hbWVgXG5AbWl4aW4gc3ByaXRlLXJlcGxhY2UtdGV4dC13aXRoLWRpbWVuc2lvbnMgKCRtYXAsICRzcHJpdGUsICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKXsgICAgXG4gIEBpbmNsdWRlIHNwcml0ZS1yZXBsYWNlLXRleHQgKCRtYXAsICRzcHJpdGUsIHRydWUsICRvZmZzZXQteCwgJG9mZnNldC15KTtcbn0iLCJAaW1wb3J0IFwidGFibGVzL2FsdGVybmF0aW5nLXJvd3MtYW5kLWNvbHVtbnNcIjtcbkBpbXBvcnQgXCJ0YWJsZXMvYm9yZGVyc1wiO1xuQGltcG9ydCBcInRhYmxlcy9zY2FmZm9sZGluZ1wiO1xuIiwiQG1peGluIGFsdGVybmF0aW5nLXJvd3MtYW5kLWNvbHVtbnMoJGV2ZW4tcm93LWNvbG9yLCAkb2RkLXJvdy1jb2xvciwgJGRhcmstaW50ZXJzZWN0aW9uLCAkaGVhZGVyLWNvbG9yOiB3aGl0ZSwgJGZvb3Rlci1jb2xvcjogd2hpdGUpIHtcbiAgdGgge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItY29sb3I7XG4gICAgJi5ldmVuLCAmOm50aC1jaGlsZCgybikge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1jb2xvciAtICRkYXJrLWludGVyc2VjdGlvbjsgfSB9XG4gIHRyIHtcbiAgICAmLm9kZCwgJjpudGgtY2hpbGQoMm4rMSkge1xuICAgICAgdGQge1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvZGQtcm93LWNvbG9yO1xuICAgICAgICYuZXZlbiwgJjpudGgtY2hpbGQoMm4pIHtcbiAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvZGQtcm93LWNvbG9yIC0gJGRhcmstaW50ZXJzZWN0aW9uOyB9IH0gfVxuICAgIH1cbiAgdHIuZXZlbiB7XG4gICAgdGQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGV2ZW4tcm93LWNvbG9yO1xuICAgICAgJi5ldmVuLCAmOm50aC1jaGlsZCgybikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXZlbi1yb3ctY29sb3IgLSAkZGFyay1pbnRlcnNlY3Rpb247IH0gfSB9XG4gIHRmb290IHtcbiAgICB0aCwgdGQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZvb3Rlci1jb2xvcjtcbiAgICAgICYuZXZlbiwgJjpudGgtY2hpbGQoMm4pIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZvb3Rlci1jb2xvciAtICRkYXJrLWludGVyc2VjdGlvbjsgfSB9IH0gfVxuIiwiQG1peGluIG91dGVyLXRhYmxlLWJvcmRlcnMoJHdpZHRoOiAycHgsICRjb2xvcjogYmxhY2spIHtcbiAgYm9yZGVyOiAkd2lkdGggc29saWQgJGNvbG9yO1xuICB0aGVhZCB7XG4gICAgdGgge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHdpZHRoIHNvbGlkICRjb2xvcjsgfSB9XG4gIHRmb290IHtcbiAgICB0aCwgdGQge1xuICAgICAgYm9yZGVyLXRvcDogJHdpZHRoIHNvbGlkICRjb2xvcjsgfSB9XG4gIHRoIHtcbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRjb2xvcjsgfSB9IH1cblxuQG1peGluIGlubmVyLXRhYmxlLWJvcmRlcnMoJHdpZHRoOiAycHgsICRjb2xvcjogYmxhY2spIHtcbiAgdGgsIHRkIHtcbiAgICBib3JkZXI6IHtcbiAgICAgIHJpZ2h0OiAkd2lkdGggc29saWQgJGNvbG9yO1xuICAgICAgYm90dG9tOiAkd2lkdGggc29saWQgJGNvbG9yO1xuICAgICAgbGVmdC13aWR0aDogMHB4O1xuICAgICAgdG9wLXdpZHRoOiAwcHg7IH07XG4gICAgJjpsYXN0LWNoaWxkLFxuICAgICYubGFzdCB7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDBweDsgfSB9XG5cbi8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbi8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuXG4gIHRib2R5LCB0Zm9vdCB7XG4gICAgdHI6bGFzdC1jaGlsZCB7XG4gICAgICB0aCwgdGQge1xuICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwcHg7IH0gfVxuICAgIHRyLmxhc3Qge1xuICAgICAgdGgsIHRkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMHB4OyB9IH0gfSB9XG4iLCJAbWl4aW4gdGFibGUtc2NhZmZvbGRpbmcge1xuICB0aCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9XG4gIHRkLFxuICB0aCB7XG4gICAgcGFkZGluZzogMnB4O1xuICAgICYubnVtZXJpYyB7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDsgfSB9IH1cbiIsIkBpbXBvcnQgXCJsaW5rcy9ob3Zlci1saW5rXCI7XG5AaW1wb3J0IFwibGlua3MvbGluay1jb2xvcnNcIjtcbkBpbXBvcnQgXCJsaW5rcy91bnN0eWxlZC1saW5rXCI7XG4iLCIvLyBhIGxpbmsgdGhhdCBvbmx5IGhhcyBhbiB1bmRlcmxpbmUgd2hlbiB5b3UgaG92ZXIgb3ZlciBpdFxuQG1peGluIGhvdmVyLWxpbmsge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICY6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9IH1cbiIsIi8vIFNldCBhbGwgdGhlIGNvbG9ycyBmb3IgYSBsaW5rIHdpdGggb25lIG1peGluIGNhbGwuXG4vLyBPcmRlciBvZiBhcmd1bWVudHMgaXM6XG4vL1xuLy8gMS4gbm9ybWFsXG4vLyAyLiBob3ZlclxuLy8gMy4gYWN0aXZlXG4vLyA0LiB2aXNpdGVkXG4vLyA1LiBmb2N1c1xuLy9cbi8vIFRob3NlIHN0YXRlcyBub3Qgc3BlY2lmaWVkIHdpbGwgaW5oZXJpdC5cbi8vIE1peGluIHRvIGFuIGFuY2hvciBsaW5rIGxpa2Ugc286XG4vLyAgICAgYVxuLy8gICAgICAgK2xpbmstY29sb3JzKCMwMGMsICMwY2MsICNjMGMsICNjY2MsICNjYzApXG5cbkBtaXhpbiBsaW5rLWNvbG9ycygkbm9ybWFsLCAkaG92ZXI6IGZhbHNlLCAkYWN0aXZlOiBmYWxzZSwgJHZpc2l0ZWQ6IGZhbHNlLCAkZm9jdXM6IGZhbHNlKSB7XG4gIGNvbG9yOiAkbm9ybWFsO1xuICBAaWYgJHZpc2l0ZWQge1xuICAgICY6dmlzaXRlZCB7XG4gICAgICBjb2xvcjogJHZpc2l0ZWQ7IH0gfVxuICBAaWYgJGZvY3VzIHtcbiAgICAmOmZvY3VzIHtcbiAgICAgIGNvbG9yOiAkZm9jdXM7IH0gfVxuICBAaWYgJGhvdmVyIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkaG92ZXI7IH0gfVxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjphY3RpdmUge1xuICAgICAgY29sb3I6ICRhY3RpdmU7IH0gfSB9XG4iLCIvLyBBIGxpbmsgdGhhdCBsb29rcyBhbmQgYWN0cyBsaWtlIHRoZSB0ZXh0IGl0IGlzIGNvbnRhaW5lZCB3aXRoaW5cbkBtaXhpbiB1bnN0eWxlZC1saW5rIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDtcbiAgY3Vyc29yOiBpbmhlcml0O1xuICAmOmFjdGl2ZSwgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTsgfSB9XG4iLCJAaW1wb3J0IFwibGlzdHMvaG9yaXpvbnRhbC1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvaW5saW5lLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9pbmxpbmUtYmxvY2stbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2J1bGxldHNcIjtcbiIsIi8vIEhvcml6b250YWwgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gK2hvcml6b250YWwtbGlzdC1jb250YWluZXIgb24geW91ciB1bC9vbCBhbmQgK2hvcml6b250YWwtbGlzdC1pdGVtIG9uIHlvdXIgbGkuXG4vLyBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdC1jb250YWluZXJcbi8vICAgICA+IGxpXG4vLyAgICAgICAraG9yaXpvbnRhbC1saXN0LWl0ZW1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhIGhvcml6b250YWwgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuQG1peGluIGhvcml6b250YWwtbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gIEBpbmNsdWRlIGNsZWFyZml4OyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuLy9cbi8vIDpsYXN0LWNoaWxkIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWRcbi8vIHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSBmb3IgdGhlIHN1cHBvcnQgbWF0cml4XG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpbmNsdWRlIGZsb2F0KCRkaXJlY3Rpb24pO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nO1xuICAgIH1cbiAgICAmOmZpcnN0LWNoaWxkLCAmLmZpcnN0IHsgcGFkZGluZy0jeyRkaXJlY3Rpb259OiAwOyB9XG4gICAgJjpsYXN0LWNoaWxkIHsgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICAgICYubGFzdCB7IHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgfVxufVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGZsb2F0ZWQgbGVmdCBhbmQgd29uJ3Qgd3JhcC5cbi8vIFRoaXMgaXMgbm90IGFuIGlubGluZSBsaXN0LlxuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdCgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZywgJGRpcmVjdGlvbik7IH0gfVxuIiwiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlIDogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlICA6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0ICAgICAgOiAwO1xufVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHsgQGluY2x1ZGUgbm8tYnVsbGV0OyB9XG59XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMiAoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgfVxufVxuIiwiLy8gbWFrZXMgYSBsaXN0IGlubGluZS5cblxuQG1peGluIGlubGluZS1saXN0IHtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAmLCAmIGxpIHtcbiAgICBtYXJnaW46IDBweDtcbiAgICBwYWRkaW5nOiAwcHg7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICB9XG59XG5cbi8vIG1ha2VzIGFuIGlubGluZSBsaXN0IGRlbGltaXRlZCB3aXRoIHRoZSBwYXNzZWQgc3RyaW5nLlxuLy8gRGVmYXVsdHMgdG8gbWFraW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QuXG4vL1xuLy8gUGxlYXNlIG1ha2Ugbm90ZSBvZiB0aGUgYnJvd3NlciBzdXBwb3J0IGlzc3VlcyBiZWZvcmUgdXNpbmcgdGhpcyBtaXhpbjpcbi8vXG4vLyB1c2Ugb2YgYGNvbnRlbnRgIGFuZCBgOmFmdGVyYCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkIGluIGFsbCBicm93c2Vycy5cbi8vIFNlZSBxdWlya3Ntb2RlIGZvciB0aGUgW3N1cHBvcnQgbWF0cml4XShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QxNSlcbi8vXG4vLyBgOmxhc3QtY2hpbGRgIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWQuXG4vLyBzZWUgcXVpcmtzbW9kZSBmb3IgdGhlIFtzdXBwb3J0IG1hdHJpeF0oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MjkpLlxuLy9cbi8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbi8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuXG5AbWl4aW4gZGVsaW1pdGVkLWxpc3QoJHNlcGFyYXRvcjogXCIsIFwiKSB7XG4gIEBpbmNsdWRlIGlubGluZS1saXN0O1xuICBsaSB7XG4gICAgJjphZnRlciB7IGNvbnRlbnQ6ICRzZXBhcmF0b3I7IH1cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgJjphZnRlciB7IGNvbnRlbnQ6IFwiXCI7IH1cbiAgICB9XG4gICAgJi5sYXN0IHtcbiAgICAgICY6YWZ0ZXIgeyBjb250ZW50OiBcIlwiOyB9XG4gICAgfVxuICB9XG59XG5cbi8vIFNlZSBbZGVsaW1pdGVkLWxpc3RdKCNtaXhpbi1kZWxpbWl0ZWQtbGlzdClcbi8vIEBkZXByZWNhdGVkXG5AbWl4aW4gY29tbWEtZGVsaW1pdGVkLWxpc3Qge1xuICBAd2FybiBcImNvbW1hLWRlbGltaXRlZC1saXN0IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgZGVsaW1pdGVkLWxpc3QgaW5zdGVhZC5cIjtcbiAgQGluY2x1ZGUgZGVsaW1pdGVkLWxpc3Q7XG59XG4iLCIvLyBJbmxpbmUtQmxvY2sgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICAgIHVsLm5hdiB7XG4vLyAgICAgICBAaW1wb3J0IGlubGluZS1ibG9jay1saXN0O1xuLy8gICAgIH1cbi8vXG4vLyBBZHZhbmNlZCBtb2RlOlxuLy8gSWYgeW91IG5lZWQgdG8gdGFyZ2V0IHRoZSBsaXN0IGl0ZW1zIHVzaW5nIGEgZGlmZmVyZW50IHNlbGVjdG9yIHRoZW4gdXNlXG4vLyBgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyYCBvbiB5b3VyIHVsL29sIGFuZFxuLy8gYEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWl0ZW1gIG9uIHlvdXIgbGkuIFRoaXMgbWF5IGhlbHAgd2hlbiB3b3JraW5nXG4vLyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgICB1bC5uYXYge1xuLy8gICAgICAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyO1xuLy8gICAgICAgPiBsaSB7XG4vLyAgICAgICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWl0ZW07XG4vLyAgICAgICB9XG4vLyAgICAgfVxuXG5AaW1wb3J0IFwiYnVsbGV0c1wiO1xuQGltcG9ydCBcImhvcml6b250YWwtbGlzdFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2Zsb2F0XCI7XG5AaW1wb3J0IFwiLi4vLi4vY3NzMy9pbmxpbmUtYmxvY2tcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhbiBpbmxpbmUtYmxvY2sgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCBgaW5saW5lLWJsb2NrLWxpc3RgLlxuQG1peGluIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7IH1cblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IGxpIHNlbGVjdG9yIHRoYXQgaXMgbWVhbnQgdG8gcGFydGljaXBhdGUgaW4gYSBob3Jpem9udGFsIGxheW91dC5cbi8vIFVzZWQgdG8gaW1wbGVtZW50IGBpbmxpbmUtYmxvY2stbGlzdGAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QtaXRlbSgkcGFkZGluZzogZmFsc2UpIHtcbiAgQGluY2x1ZGUgbm8tYnVsbGV0O1xuICBAaW5jbHVkZSBpbmxpbmUtYmxvY2s7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpZiAkcGFkZGluZyB7XG4gICAgcGFkZGluZzoge1xuICAgICAgbGVmdDogJHBhZGRpbmc7XG4gICAgICByaWdodDogJHBhZGRpbmc7XG4gICAgfTtcbiAgfVxufVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGlubGluZS1ibG9jayBhbmQgd29uJ3Qgd3JhcC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdCgkcGFkZGluZzogZmFsc2UpIHtcbiAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtaXRlbSgkcGFkZGluZyk7IH0gfVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBTZXQgYCRpbmxpbmUtYmxvY2stYWxpZ25tZW50YCB0byBgbm9uZWAgb3IgYGZhbHNlYCB0byBkaXNhYmxlIHRoZSBvdXRwdXRcbi8vIG9mIGEgdmVydGljYWwtYWxpZ24gcHJvcGVydHkgaW4gdGhlIGlubGluZS1ibG9jayBtaXhpbi5cbi8vIE9yIHNldCBpdCB0byBhIGxlZ2FsIHZhbHVlIGZvciBgdmVydGljYWwtYWxpZ25gIHRvIGNoYW5nZSB0aGUgZGVmYXVsdC5cbiRpbmxpbmUtYmxvY2stYWxpZ25tZW50OiBtaWRkbGUgIWRlZmF1bHQ7XG5cbi8vIFByb3ZpZGVzIGEgY3Jvc3MtYnJvd3NlciBtZXRob2QgdG8gaW1wbGVtZW50IGBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7YFxuQG1peGluIGlubGluZS1ibG9jaygkYWxpZ25tZW50OiAkaW5saW5lLWJsb2NrLWFsaWdubWVudCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1zdGFjaztcbiAgfVxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIEBpZiAkYWxpZ25tZW50IGFuZCAkYWxpZ25tZW50ICE9IG5vbmUge1xuICAgIHZlcnRpY2FsLWFsaWduOiAkYWxpZ25tZW50O1xuICB9XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAqdmVydGljYWwtYWxpZ246IGF1dG87XG4gICAgem9vbTogMTtcbiAgICAqZGlzcGxheTogaW5saW5lO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIkBpbXBvcnQgXCJ0ZXh0L2VsbGlwc2lzXCI7XG5AaW1wb3J0IFwidGV4dC9ub3dyYXBcIjtcbkBpbXBvcnQgXCJ0ZXh0L3JlcGxhY2VtZW50XCI7XG5AaW1wb3J0IFwidGV4dC9mb3JjZS13cmFwXCI7XG4iLCJAaW1wb3J0IFwiLi4vLi4vY3NzMy9zaGFyZWRcIjtcblxuLy8gVG8gZ2V0IGZ1bGwgZmlyZWZveCBzdXBwb3J0LCB5b3UgbXVzdCBpbnN0YWxsIHRoZSBlbGxpcHNpcyBwYXR0ZXJuOlxuLy9cbi8vICAgICBjb21wYXNzIGluc3RhbGwgY29tcGFzcy9lbGxpcHNpc1xuJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGlzIHRlY2huaXF1ZSwgYnkgW0p1c3RpbiBNYXh3ZWxsXShodHRwOi8vY29kZTQwNC5jb20vKSwgd2FzIG9yaWdpbmFsbHlcbi8vIHB1Ymxpc2hlZCBbaGVyZV0oaHR0cDovL21hdHRzbmlkZXIuY29tL2Nzcy9jc3Mtc3RyaW5nLXRydW5jYXRpb24td2l0aC1lbGxpcHNpcy8pLlxuLy8gRmlyZWZveCBpbXBsZW1lbnRhdGlvbiBieSBbUmlra2VydCBLb3BwZXNdKGh0dHA6Ly93d3cucmlra2VydGtvcHBlcy5jb20vdGhvdWdodHMvMjAwOC82LykuXG5AbWl4aW4gZWxsaXBzaXMoJG5vLXdyYXA6IHRydWUpIHtcbiAgQGlmICRuby13cmFwIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodGV4dC1vdmVyZmxvdywgZWxsaXBzaXMsXG4gICAgbm90KC1tb3opLFxuICAgIG5vdCgtd2Via2l0KSxcbiAgICAtbyxcbiAgICAtbXMsXG4gICAgbm90KC1raHRtbCksXG4gICAgb2ZmaWNpYWxcbiAgKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmcge1xuICAgIC1tb3otYmluZGluZzogc3R5bGVzaGVldC11cmwodW5xdW90ZShcInhtbC9lbGxpcHNpcy54bWwjZWxsaXBzaXNcIikpO1xuICB9XG59XG4iLCIvLyBXaGVuIHJlbWVtYmVyaW5nIHdoZXRoZXIgb3Igbm90IHRoZXJlJ3MgYSBoeXBoZW4gaW4gd2hpdGUtc3BhY2UgaXMgdG9vIGhhcmRcbkBtaXhpbiBub3dyYXAgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG4iLCIvLyBJbmRpY2F0ZXMgdGhlIGRpcmVjdGlvbiB5b3UgcHJlZmVyIHRvIG1vdmUgeW91ciB0ZXh0XG4vLyB3aGVuIGhpZGluZyBpdC5cbi8vXG4vLyBgbGVmdGAgaXMgbW9yZSByb2J1c3QsIGVzcGVjaWFsbHkgaW4gb2xkZXIgYnJvd3NlcnMuXG4vLyBgcmlnaHRgIHNlZW1zIGhhdmUgYmV0dGVyIHJ1bnRpbWUgcGVyZm9ybWFuY2UuXG4kaGlkZS10ZXh0LWRpcmVjdGlvbjogbGVmdCAhZGVmYXVsdDtcblxuLy8gSGlkZXMgaHRtbCB0ZXh0IGFuZCByZXBsYWNlcyBpdCB3aXRoIGFuIGltYWdlLlxuLy8gSWYgeW91IHVzZSB0aGlzIG9uIGFuIGlubGluZSBlbGVtZW50LCB5b3Ugd2lsbCBuZWVkIHRvIGNoYW5nZSB0aGUgZGlzcGxheSB0byBibG9jayBvciBpbmxpbmUtYmxvY2suXG4vLyBBbHNvLCBpZiB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgZGlmZmVycyBzaWduaWZpY2FudGx5IGZyb20gdGhlIGZvbnQgc2l6ZSwgeW91J2xsIG5lZWQgdG8gc2V0IHRoZSB3aWR0aCBhbmQvb3IgaGVpZ2h0LlxuLy9cbi8vIFBhcmFtZXRlcnM6XG4vL1xuLy8gKiBgaW1nYCAtLSB0aGUgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSBwcm9qZWN0IGltYWdlIGRpcmVjdG9yeSB0byB0aGUgaW1hZ2UsIG9yIGEgdXJsIGxpdGVyYWwuXG4vLyAqIGB4YCAtLSB0aGUgeCBwb3NpdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZS5cbi8vICogYHlgIC0tIHRoZSB5IHBvc2l0aW9uIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlLlxuQG1peGluIHJlcGxhY2UtdGV4dCgkaW1nLCAkeDogNTAlLCAkeTogNTAlKSB7XG4gIEBpbmNsdWRlIGhpZGUtdGV4dDtcbiAgYmFja2dyb3VuZDoge1xuICAgIEBpZiBpcy11cmwoJGltZykge1xuICAgICAgaW1hZ2U6IHVybCgkaW1nKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIGltYWdlOiBpbWFnZS11cmwoJGltZyk7XG4gICAgfVxuICAgIHJlcGVhdDogbm8tcmVwZWF0O1xuICAgIHBvc2l0aW9uOiAkeCAkeTtcbiAgfTtcbn1cblxuLy8gTGlrZSB0aGUgYHJlcGxhY2UtdGV4dGAgbWl4aW4sIGJ1dCBhbHNvIHNldHMgdGhlIHdpZHRoXG4vLyBhbmQgaGVpZ2h0IG9mIHRoZSBlbGVtZW50IGFjY29yZGluZyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgaW1hZ2UuXG4vL1xuLy8gSWYgeW91IHNldCBgJGlubGluZWAgdG8gdHJ1ZSwgdGhlbiBhbiBpbmxpbmUgaW1hZ2UgKGRhdGEgdXJpKSB3aWxsIGJlIHVzZWQuXG5AbWl4aW4gcmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucygkaW1nLCAkeDogNTAlLCAkeTogNTAlLCAkaW5saW5lOiBmYWxzZSkge1xuICBAaW5jbHVkZSByZXBsYWNlLXRleHQoaWYoJGlubGluZSwgaW5saW5lLWltYWdlKCRpbWcpLCAkaW1nKSwgJHgsICR5KTtcbiAgd2lkdGg6IGltYWdlLXdpZHRoKCRpbWcpO1xuICBoZWlnaHQ6IGltYWdlLWhlaWdodCgkaW1nKTtcbn1cblxuLy8gSGlkZXMgdGV4dCBpbiBhbiBlbGVtZW50IHNvIHlvdSBjYW4gc2VlIHRoZSBiYWNrZ3JvdW5kLlxuLy9cbi8vIFRoZSBkaXJlY3Rpb24gaW5kaWNhdGVzIGhvdyB0aGUgdGV4dCBzaG91bGQgYmUgbW92ZWQgb3V0IG9mIHZpZXcuXG4vL1xuLy8gU2VlIGAkaGlkZS10ZXh0LWRpcmVjdGlvbmAgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIHRvIHNldCB0aGlzIGdsb2JhbGx5XG4vLyBmb3IgeW91ciBhcHBsaWNhdGlvbi5cbkBtaXhpbiBoaWRlLXRleHQoJGRpcmVjdGlvbjogJGhpZGUtdGV4dC1kaXJlY3Rpb24pIHtcbiAgQGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgJGFwcHJveGltYXRlLWVtLXZhbHVlOiAxMnB4O1xuICAgICR3aWRlci10aGFuLWFueS1zY3JlZW46IC05OTk5O1xuICAgIHRleHQtaW5kZW50OiAkd2lkZXItdGhhbi1hbnktc2NyZWVuICogJGFwcHJveGltYXRlLWVtLXZhbHVlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgfSBAZWxzZSB7XG4gICAgLy8gc2xpZ2h0bHkgd2lkZXIgdGhhbiB0aGUgYm94IHByZXZlbnRzIGlzc3VlcyB3aXRoIGlubGluZS1ibG9jayBlbGVtZW50c1xuICAgIHRleHQtaW5kZW50OiAxMTAlO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxufVxuXG4vLyBIaWRlcyB0ZXh0IGluIGFuIGVsZW1lbnQgYnkgc3F1aXNoaW5nIHRoZSB0ZXh0IGludG8gb2JsaXZpb24uXG4vLyBVc2UgdGhpcyBpZiB5b3UgbmVlZCB0byBoaWRlIHRleHQgY29udGFpbmVkIGluIGFuIGlubGluZSBlbGVtZW50XG4vLyBidXQgc3RpbGwgaGF2ZSBpdCByZWFkIGJ5IGEgc2NyZWVuIHJlYWRlci5cbkBtaXhpbiBzcXVpc2gtdGV4dCB7XG4gIGZvbnQ6IDAvMCBzZXJpZjtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbiIsIi8vIFByZXZlbnQgbG9uZyB1cmxzIGFuZCB0ZXh0IGZyb20gYnJlYWtpbmcgbGF5b3V0c1xuLy8gW29yaWdpbmFsbHkgZnJvbSBwZXJpc2hhYmxlcHJlc3MuY29tXShodHRwOi8vcGVyaXNoYWJsZXByZXNzLmNvbS9wcmVzcy8yMDEwLzA2LzAxL3dyYXBwaW5nLWNvbnRlbnQvKVxuQG1peGluIGZvcmNlLXdyYXAge1xuICB3aGl0ZS1zcGFjZTogcHJlOyAgICAgICAgICAgLy8gQ1NTIDIuMFxuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7ICAgICAgLy8gQ1NTIDIuMVxuICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7ICAgICAgLy8gQ1NTIDMuMFxuICB3aGl0ZS1zcGFjZTogLXByZS13cmFwOyAgICAgLy8gT3BlcmEgNC02XG4gIHdoaXRlLXNwYWNlOiAtby1wcmUtd3JhcDsgICAvLyBPcGVyYSA3XG4gIHdoaXRlLXNwYWNlOiAtbW96LXByZS13cmFwOyAvLyBNb3ppbGxhXG4gIHdoaXRlLXNwYWNlOiAtaHAtcHJlLXdyYXA7ICAvLyBIUCBQcmludGVyc1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7ICAgICAgLy8gSUUgNStcbn1cbiIsIkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L2xpbmtzXCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeS9saXN0c1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvdGV4dFwiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvdmVydGljYWxfcmh5dGhtXCI7XG4iLCJAaW1wb3J0IFwiLi4vbGF5b3V0L2dyaWQtYmFja2dyb3VuZFwiO1xuXG4vLyBUaGUgYmFzZSBmb250IHNpemUuXG4kYmFzZS1mb250LXNpemU6IDE2cHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBiYXNlIGxpbmUgaGVpZ2h0IGRldGVybWluZXMgdGhlIGJhc2ljIHVuaXQgb2YgdmVydGljYWwgcmh5dGhtLlxuJGJhc2UtbGluZS1oZWlnaHQ6IDI0cHggIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgZGVmYXVsdCBib3JkZXIgc3R5bGUgZm9yIHJoeXRobSBib3JkZXJzLlxuJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZTogc29saWQgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4kYnJvd3Nlci1kZWZhdWx0LWZvbnQtc2l6ZTogMTZweDtcblxuLy8gU2V0IHRvIGZhbHNlIGlmIHlvdSB3YW50IHRvIHVzZSBhYnNvbHV0ZSBwaXhlbHMgaW4gc2l6aW5nIHlvdXIgdHlwb2dyYXBoeS5cbiRyZWxhdGl2ZS1mb250LXNpemluZzogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gQWxsb3dzIHRoZSBgYWRqdXN0LWZvbnQtc2l6ZS10b2AgbWl4aW4gYW5kIHRoZSBgbGluZXMtZm9yLWZvbnQtc2l6ZWAgZnVuY3Rpb25cbi8vIHRvIHJvdW5kIHRoZSBsaW5lIGhlaWdodCB0byB0aGUgbmVhcmVzdCBoYWxmIGxpbmUgaGVpZ2h0IGluc3RlYWQgb2YgdGhlXG4vLyBuZWFyZXN0IGludGVncmFsIGxpbmUgaGVpZ2h0IHRvIGF2b2lkIGxhcmdlIHNwYWNpbmcgYmV0d2VlbiBsaW5lcy5cbiRyb3VuZC10by1uZWFyZXN0LWhhbGYtbGluZTogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEVuc3VyZSB0aGVyZSBpcyBhdCBsZWFzdCB0aGlzIG1hbnkgcGl4ZWxzXG4vLyBvZiB2ZXJ0aWNhbCBwYWRkaW5nIGFib3ZlIGFuZCBiZWxvdyB0aGUgdGV4dC5cbiRtaW4tbGluZS1wYWRkaW5nOiAycHggIWRlZmF1bHQ7XG5cbi8vICRiYXNlLWZvbnQtc2l6ZSBidXQgaW4geW91ciBvdXRwdXQgdW5pdCBvZiBjaG9pY2UuXG4vLyBEZWZhdWx0cyB0byAxZW0gd2hlbiBgJHJlbGF0aXZlLWZvbnQtc2l6aW5nYCBpcyB0cnVlLlxuJGZvbnQtdW5pdDogaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAxZW0sICRiYXNlLWZvbnQtc2l6ZSkgIWRlZmF1bHQ7XG5cbi8vIFRoZSBiYXNpYyB1bml0IG9mIGZvbnQgcmh5dGhtLlxuJGJhc2Utcmh5dGhtLXVuaXQ6ICRiYXNlLWxpbmUtaGVpZ2h0IC8gJGJhc2UtZm9udC1zaXplICogJGZvbnQtdW5pdDtcblxuLy8gVGhlIGxlYWRlciBpcyB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgaW4gYSBsaW5lLlxuLy8gSXQgbWlnaHQgYmUgdXNlZnVsIGluIHlvdXIgY2FsY3VsYXRpb25zLlxuJGJhc2UtbGVhZGVyOiAoJGJhc2UtbGluZS1oZWlnaHQgLSAkYmFzZS1mb250LXNpemUpICogJGZvbnQtdW5pdCAvICRiYXNlLWZvbnQtc2l6ZTtcblxuLy8gVGhlIGhhbGYtbGVhZGVyIGlzIHRoZSBhbW91bnQgb2Ygd2hpdGVzcGFjZSBhYm92ZSBhbmQgYmVsb3cgYSBsaW5lLlxuLy8gSXQgbWlnaHQgYmUgdXNlZnVsIGluIHlvdXIgY2FsY3VsYXRpb25zLlxuJGJhc2UtaGFsZi1sZWFkZXI6ICRiYXNlLWxlYWRlciAvIDI7XG5cbi8vIFRydWUgaWYgYSBudW1iZXIgaGFzIGEgcmVsYXRpdmUgdW5pdC5cbkBmdW5jdGlvbiByZWxhdGl2ZS11bml0KCRudW1iZXIpIHtcbiAgQHJldHVybiB1bml0KCRudW1iZXIpID09IFwiJVwiIG9yIHVuaXQoJG51bWJlcikgPT0gXCJlbVwiIG9yIHVuaXQoJG51bWJlcikgPT0gXCJyZW1cIlxufVxuXG4vLyBUcnVlIGlmIGEgbnVtYmVyIGhhcyBhbiBhYnNvbHV0ZSB1bml0LlxuQGZ1bmN0aW9uIGFic29sdXRlLXVuaXQoJG51bWJlcikge1xuICBAcmV0dXJuIG5vdChyZWxhdGl2ZS11bml0KCRudW1iZXIpIG9yIHVuaXRsZXNzKCRudW1iZXIpKTtcbn1cblxuQGlmICRyZWxhdGl2ZS1mb250LXNpemluZyBhbmQgbm90KHJlbGF0aXZlLXVuaXQoJGZvbnQtdW5pdCkpIHtcbiAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgdHJ1ZSBidXQgJGZvbnQtdW5pdCBpcyBzZXQgdG8gI3skZm9udC11bml0fSB3aGljaCBpcyBub3QgYSByZWxhdGl2ZSB1bml0LlwiO1xufVxuXG4vLyBFc3RhYmxpc2hlcyBhIGZvbnQgYmFzZWxpbmUgZm9yIHRoZSBnaXZlbiBmb250LXNpemUuXG5AbWl4aW4gZXN0YWJsaXNoLWJhc2VsaW5lKCRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICAvLyBJRSA2IHJlZnVzZXMgdG8gcmVzaXplIGZvbnRzIHNldCBpbiBwaXhlbHMgYW5kIGl0IHdlaXJkbHkgcmVzaXplcyBmb250c1xuICAvLyB3aG9zZSByb290IGlzIHNldCBpbiBlbXMuIFNvIHdlIHNldCB0aGUgcm9vdCBmb250IHNpemUgaW4gcGVyY2VudGFnZXMgb2ZcbiAgLy8gdGhlIGRlZmF1bHQgZm9udCBzaXplLlxuICAqIGh0bWwge1xuICAgIGZvbnQtc2l6ZTogMTAwJSAqICgkZm9udC1zaXplIC8gJGJyb3dzZXItZGVmYXVsdC1mb250LXNpemUpO1xuICB9XG4gIGh0bWwge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10bygxLCBpZigkcmVsYXRpdmUtZm9udC1zaXppbmcsICRmb250LXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpO1xuICB9XG59XG5cbi8vIFJlc2V0cyB0aGUgbGluZS1oZWlnaHQgdG8gMSB2ZXJ0aWNhbCByaHl0aG0gdW5pdC5cbi8vIERvZXMgbm90IHdvcmsgb24gZWxlbWVudHMgd2hvc2UgZm9udC1zaXplIGlzIGRpZmZlcmVudCBmcm9tICRiYXNlLWZvbnQtc2l6ZS5cbi8vXG4vLyBAZGVwcmVjYXRlZCBUaGlzIG1peGluIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLlxuLy8gUGxlYXNlIHVzZSB0aGUgYGFkanVzdC1sZWFkaW5nLXRvYCBtaXhpbiBpbnN0ZWFkLlxuQG1peGluIHJlc2V0LWJhc2VsaW5lIHtcbiAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8oMSwgaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAkYmFzZS1mb250LXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpO1xufVxuXG4vLyBTaG93IGEgYmFja2dyb3VuZCBpbWFnZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlYnVnIHlvdXIgYWxpZ25tZW50cy5cbi8vIEluY2x1ZGUgdGhlICRpbWcgYXJndW1lbnQgaWYgeW91IHdvdWxkIHJhdGhlciB1c2UgeW91ciBvd24gaW1hZ2UgdGhhbiB0aGVcbi8vIENvbXBhc3MgZGVmYXVsdCBncmFkaWVudCBpbWFnZS5cbkBtaXhpbiBkZWJ1Zy12ZXJ0aWNhbC1hbGlnbm1lbnQoJGltZzogZmFsc2UpIHtcbiAgQGlmICRpbWcge1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkaW1nKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kKCRiYXNlLXJoeXRobS11bml0KTtcbiAgfVxufVxuXG4vLyBBZGp1c3QgYSBibG9jayB0byBoYXZlIGEgZGlmZmVyZW50IGZvbnQgc2l6ZSBhbmQgbGluZSBoZWlnaHQgdG8gbWFpbnRhaW4gdGhlXG4vLyByaHl0aG0uICRsaW5lcyBzcGVjaWZpZXMgaG93IG1hbnkgbXVsdGlwbGVzIG9mIHRoZSBiYXNlbGluZSByaHl0aG0gZWFjaCBsaW5lXG4vLyBvZiB0aGlzIGZvbnQgc2hvdWxkIHVzZSB1cC4gSXQgZG9lcyBub3QgaGF2ZSB0byBiZSBhbiBpbnRlZ2VyLCBidXQgaXRcbi8vIGRlZmF1bHRzIHRvIHRoZSBzbWFsbGVzdCBpbnRlZ2VyIHRoYXQgaXMgbGFyZ2UgZW5vdWdoIHRvIGZpdCB0aGUgZm9udC5cbi8vIFVzZSAkZnJvbS1zaXplIHRvIGFkanVzdCBmcm9tIGEgZm9udC1zaXplIG90aGVyIHRoYW4gdGhlIGJhc2UgZm9udC1zaXplLlxuQG1peGluIGFkanVzdC1mb250LXNpemUtdG8oJHRvLXNpemUsICRsaW5lczogbGluZXMtZm9yLWZvbnQtc2l6ZSgkdG8tc2l6ZSksICRmcm9tLXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaWYgbm90KCRyZWxhdGl2ZS1mb250LXNpemluZykgYW5kICRmcm9tLXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byBhZGp1c3QtZm9udC1zaXplLXRvXCI7XG4gIH1cbiAgZm9udC1zaXplOiAkZm9udC11bml0ICogJHRvLXNpemUgLyAkZnJvbS1zaXplO1xuICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10bygkbGluZXMsIGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgJHRvLXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpO1xufVxuXG4vLyBBZGp1c3QgYSBibG9jayB0byBoYXZlIGRpZmZlcmVudCBsaW5lIGhlaWdodCB0byBtYWludGFpbiB0aGUgcmh5dGhtLlxuLy8gJGxpbmVzIHNwZWNpZmllcyBob3cgbWFueSBtdWx0aXBsZXMgb2YgdGhlIGJhc2VsaW5lIHJoeXRobSBlYWNoIGxpbmUgb2YgdGhpc1xuLy8gZm9udCBzaG91bGQgdXNlIHVwLiBJdCBkb2VzIG5vdCBoYXZlIHRvIGJlIGFuIGludGVnZXIsIGJ1dCBpdCBkZWZhdWx0cyB0byB0aGVcbi8vIHNtYWxsZXN0IGludGVnZXIgdGhhdCBpcyBsYXJnZSBlbm91Z2ggdG8gZml0IHRoZSBmb250LlxuQG1peGluIGFkanVzdC1sZWFkaW5nLXRvKCRsaW5lcywgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIGxpbmUtaGVpZ2h0OiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gQ2FsY3VsYXRlIHJoeXRobSB1bml0cy5cbkBmdW5jdGlvbiByaHl0aG0oXG4gICRsaW5lczogMSxcbiAgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLFxuICAkb2Zmc2V0OiAwXG4pIHtcbiAgQGlmIG5vdCgkcmVsYXRpdmUtZm9udC1zaXppbmcpIGFuZCAkZm9udC1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gdGhlIHJoeXRobSBmdW5jdGlvblwiO1xuICB9XG4gICRyaHl0aG06ICRmb250LXVuaXQgKiAoJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkb2Zmc2V0KSAvICRmb250LXNpemU7XG4gIC8vIFJvdW5kIHRoZSBwaXhlbHMgZG93biB0byBuZWFyZXN0IGludGVnZXIuXG4gIEBpZiB1bml0KCRyaHl0aG0pID09IHB4IHtcbiAgICAkcmh5dGhtOiBmbG9vcigkcmh5dGhtKTtcbiAgfVxuICBAcmV0dXJuICRyaHl0aG07XG59XG5cbi8vIENhbGN1bGF0ZSB0aGUgbWluaW11bSBtdWx0aXBsZSBvZiByaHl0aG0gdW5pdHMgbmVlZGVkIHRvIGNvbnRhaW4gdGhlIGZvbnQtc2l6ZS5cbkBmdW5jdGlvbiBsaW5lcy1mb3ItZm9udC1zaXplKCRmb250LXNpemUpIHtcbiAgJGxpbmVzOiBpZigkcm91bmQtdG8tbmVhcmVzdC1oYWxmLWxpbmUsXG4gICAgICAgICAgICAgIGNlaWwoMiAqICRmb250LXNpemUgLyAkYmFzZS1saW5lLWhlaWdodCkgLyAyLFxuICAgICAgICAgICAgICBjZWlsKCRmb250LXNpemUgLyAkYmFzZS1saW5lLWhlaWdodCkpO1xuICBAaWYgJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkZm9udC1zaXplIDwgJG1pbi1saW5lLXBhZGRpbmcgKiAyIHtcbiAgICAkbGluZXM6ICRsaW5lcyArIGlmKCRyb3VuZC10by1uZWFyZXN0LWhhbGYtbGluZSwgMC41LCAxKTtcbiAgfVxuICBAcmV0dXJuICRsaW5lcztcbn1cblxuLy8gQXBwbHkgbGVhZGluZyB3aGl0ZXNwYWNlLiBUaGUgJHByb3BlcnR5IGNhbiBiZSBtYXJnaW4gb3IgcGFkZGluZy5cbkBtaXhpbiBsZWFkZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRwcm9wZXJ0eTogbWFyZ2luKSB7XG4gICN7JHByb3BlcnR5fS10b3A6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSBsZWFkaW5nIHdoaXRlc3BhY2UgYXMgcGFkZGluZy5cbkBtaXhpbiBwYWRkaW5nLWxlYWRlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBwYWRkaW5nLXRvcDogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IGxlYWRpbmcgd2hpdGVzcGFjZSBhcyBtYXJnaW4uXG5AbWl4aW4gbWFyZ2luLWxlYWRlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBtYXJnaW4tdG9wOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gQXBwbHkgdHJhaWxpbmcgd2hpdGVzcGFjZS4gVGhlICRwcm9wZXJ0eSBjYW4gYmUgbWFyZ2luIG9yIHBhZGRpbmcuXG5AbWl4aW4gdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJHByb3BlcnR5OiBtYXJnaW4pIHtcbiAgI3skcHJvcGVydHl9LWJvdHRvbTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IHRyYWlsaW5nIHdoaXRlc3BhY2UgYXMgcGFkZGluZy5cbkBtaXhpbiBwYWRkaW5nLXRyYWlsZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgcGFkZGluZy1ib3R0b206IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFzIG1hcmdpbi5cbkBtaXhpbiBtYXJnaW4tdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBtYXJnaW4tYm90dG9tOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gU2hvcnRoYW5kIG1peGluIHRvIGFwcGx5IHdoaXRlc3BhY2UgZm9yIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgYW5kIHBhZGRpbmcuXG5AbWl4aW4gcmh5dGhtKCRsZWFkZXI6IDAsICRwYWRkaW5nLWxlYWRlcjogMCwgJHBhZGRpbmctdHJhaWxlcjogMCwgJHRyYWlsZXI6IDAsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaW5jbHVkZSBsZWFkZXIoJGxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctbGVhZGVyKCRwYWRkaW5nLWxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctdHJhaWxlcigkcGFkZGluZy10cmFpbGVyLCAkZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgdHJhaWxlcigkdHJhaWxlciwgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IGEgYm9yZGVyIGFuZCB3aGl0ZXNwYWNlIHRvIGFueSBzaWRlIHdpdGhvdXQgZGVzdHJveWluZyB0aGUgdmVydGljYWxcbi8vIHJoeXRobS4gVGhlIHdoaXRlc3BhY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIuXG5AbWl4aW4gYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyKCRzaWRlLCAkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGlmIG5vdCgkcmVsYXRpdmUtZm9udC1zaXppbmcpIGFuZCAkZm9udC1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyXCI7XG4gIH1cbiAgYm9yZGVyLSN7JHNpZGV9LXN0eWxlOiAkYm9yZGVyLXN0eWxlO1xuICBib3JkZXItI3skc2lkZX0td2lkdGg6ICRmb250LXVuaXQgKiAkd2lkdGggLyAkZm9udC1zaXplO1xuICBwYWRkaW5nLSN7JHNpZGV9OiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplLCAkb2Zmc2V0OiAkd2lkdGgpO1xufVxuXG4vLyBBcHBseSBib3JkZXJzIGFuZCB3aGl0ZXNwYWNlIGVxdWFsbHkgdG8gYWxsIHNpZGVzLlxuQG1peGluIHJoeXRobS1ib3JkZXJzKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaWYgbm90KCRyZWxhdGl2ZS1mb250LXNpemluZykgYW5kICRmb250LXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byByaHl0aG0tYm9yZGVyc1wiO1xuICB9XG4gIGJvcmRlcjoge1xuICAgIHN0eWxlOiAkYm9yZGVyLXN0eWxlO1xuICAgIHdpZHRoOiAkZm9udC11bml0ICogJHdpZHRoIC8gJGZvbnQtc2l6ZTtcbiAgfTtcbiAgcGFkZGluZzogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSwgJG9mZnNldDogJHdpZHRoKTtcbn1cblxuLy8gQXBwbHkgYSBsZWFkaW5nIGJvcmRlci5cbkBtaXhpbiBsZWFkaW5nLWJvcmRlcigkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyKHRvcCwgJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xufVxuXG4vLyBBcHBseSBhIHRyYWlsaW5nIGJvcmRlci5cbkBtaXhpbiB0cmFpbGluZy1ib3JkZXIoJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpbmNsdWRlIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlcihib3R0b20sICR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbn1cblxuLy8gQXBwbHkgYm90aCBsZWFkaW5nIGFuZCB0cmFpbGluZyBib3JkZXJzLlxuQG1peGluIGhvcml6b250YWwtYm9yZGVycygkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgbGVhZGluZy1ib3JkZXIoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xuICBAaW5jbHVkZSB0cmFpbGluZy1ib3JkZXIoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xufVxuXG4vLyBBbGlhcyBmb3IgYGhvcml6b250YWwtYm9yZGVyc2AgbWl4aW4uXG5AbWl4aW4gaC1ib3JkZXJzKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWJvcmRlcnMoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xufVxuIiwiQGltcG9ydCBcIi4uL2NzczMvaW1hZ2VzXCI7XG5AaW1wb3J0IFwiLi4vY3NzMy9iYWNrZ3JvdW5kLXNpemVcIjtcblxuLy8gU2V0IHRoZSBjb2xvciBvZiB5b3VyIGNvbHVtbnNcbiRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yICAgICA6IHJnYmEoMTAwLCAxMDAsIDIyNSwgMC4yNSkgICAhZGVmYXVsdDtcbi8vIFNldCB0aGUgY29sb3Igb2YgeW91ciBndXR0ZXJzXG4kZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvciAgICAgOiByZ2JhKDAsIDAsIDAsIDApICAgICAgICAgICAgIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgaW4geW91ciBncmlkXG4kZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMgICAgOiAyNCAgICAgICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBTZXQgdGhlIHdpZHRoIG9mIHlvdXIgY29sdW1uc1xuJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGggICAgIDogMzBweCAgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gU2V0IHRoZSB3aWR0aCBvZiB5b3VyIGd1dHRlcnNcbiRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoICAgICA6IDEwcHggICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFNldCB0aGUgb2Zmc2V0LCBpZiB5b3VyIGNvbHVtbnMgYXJlIHBhZGRlZCBpbiBmcm9tIHRoZSBjb250YWluZXIgZWRnZVxuJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQgICAgICAgICAgIDogMHB4ICAgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIGNvbG9yIG9mIHlvdXIgYmFzZWxpbmVcbiRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IgICA6IHJnYmEoMCwgMCwgMCwgMC41KSAgICAgICAgICAhZGVmYXVsdDtcbi8vIFNldCB0aGUgaGVpZ2h0IG9mIHlvdXIgYmFzZWxpbmUgZ3JpZFxuJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1oZWlnaHQgIDogMS41ZW0gICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG4vLyB0b2dnbGUgeW91ciBjb2x1bW5zIGdyaWRzIG9uIGFuZCBvZmZcbiRzaG93LWNvbHVtbi1ncmlkLWJhY2tncm91bmRzICAgICA6IHRydWUgICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIHRvZ2dsZSB5b3VyIHZlcnRpY2FsIGdyaWRzIG9uIGFuZCBvZmZcbiRzaG93LWJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZHMgICA6IHRydWUgICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIHRvZ2dsZSBhbGwgeW91ciBncmlkcyBvbiBhbmQgb2ZmXG4kc2hvdy1ncmlkLWJhY2tncm91bmRzICAgICAgICAgICAgOiB0cnVlICAgICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG5cbi8vIG9wdGlvbmFsbHkgZm9yY2UgeW91ciBncmlkLWltYWdlIHRvIHJlbWFpbiBmbHVpZFxuLy8gbm8gbWF0dGVyIHdoYXQgdW5pdHMgeW91IHVzZWQgdG8gZGVjbGFyZWQgeW91ciBncmlkLlxuJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZCAgICAgIDogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG5cbi8vIENyZWF0ZSB0aGUgZ3JhZGllbnQgbmVlZGVkIGZvciBiYXNlbGluZSBncmlkc1xuQGZ1bmN0aW9uIGdldC1iYXNlbGluZS1ncmFkaWVudChcbiAgJGNvbG9yIDogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvclxuKSB7XG4gICRncmFkaWVudDogbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgJGNvbG9yIDUlLCByZ2JhKCRjb2xvciwwKSA1JSk7XG4gIEByZXR1cm4gJGdyYWRpZW50O1xufVxuXG4vLyBDcmVhdGUgdGhlIGNvbG9yLXN0b3BzIG5lZWRlZCBmb3IgaG9yaXpvbnRhbCBncmlkc1xuQGZ1bmN0aW9uIGJ1aWxkLWdyaWQtYmFja2dyb3VuZChcbiAgJHRvdGFsICAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLFxuICAkY29sdW1uICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCxcbiAgJGd1dHRlciAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsXG4gICRvZmZzZXQgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LFxuICAkY29sdW1uLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvcixcbiAgJGd1dHRlci1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3Jcbikge1xuICAkZ3JpZDogY29tcGFjdCgpO1xuICAkZ3JpZDogYXBwZW5kKCRncmlkLCAkZ3V0dGVyLWNvbG9yICRvZmZzZXQsIGNvbW1hKTtcbiAgQGZvciAkaSBmcm9tIDAgdG8gJHRvdGFsIHtcblxuICAgIC8vICRhIHJlcHJlc2VudHMgdGhlIHN0YXJ0IG9mIHRoaXMgY29sdW1uLCBpbml0aWFsbHkgZXF1YWwgdG8gdGhlIG9mZnNldFxuICAgICRhOiAkb2Zmc2V0O1xuICAgIEBpZiAkaSA+IDAgeyAkYTogJGEgKyAoKCRjb2x1bW4gKyAkZ3V0dGVyKSAqICRpKTsgfVxuXG4gICAgLy8gJGcgcmVwcmVzZW50cyB0aGUgc3RhcnQgb2YgdGhpcyBndXR0ZXIsIGVxdWFsIHRvICRhIHBsdXMgb25lIGNvbHVtbi13aWR0aFxuICAgICRnOiAkYSArICRjb2x1bW47XG5cbiAgICAvLyAkeiByZXByZXNlbnRzIHRoZSBlbmQgb2YgYSBndXR0ZXIsIGVxdWFsIHRvICRnIHBsdXMgb25lIGd1dHRlci13aWR0aFxuICAgICR6OiAkZyArICRndXR0ZXI7XG5cbiAgICBAaWYgKHVuaXQoJGEpID09IFwiJVwiKSBhbmQgKCRpID09ICgkdG90YWwgLSAxKSkge1xuICAgICAgJHo6IDEwMCU7XG4gICAgfVxuXG4gICAgLy8gYW5kIHdlIGFkZCB0aGlzIGNvbHVtbi9ndXR0ZXIgcGFpciB0byBvdXIgZ3JpZFxuICAgICRncmlkOiBqb2luKCRncmlkLCAoJGNvbHVtbi1jb2xvciAkYSwgJGNvbHVtbi1jb2xvciAkZywgJGd1dHRlci1jb2xvciAkZywgJGd1dHRlci1jb2xvciAkeikpO1xuICB9XG5cbiAgQHJldHVybiAkZ3JpZDtcbn1cblxuLy8gUmV0dXJuIHRoZSBncmFkaWVudCBuZWVkZWQgZm9yIGhvcml6b250YWwgZ3JpZHNcbkBmdW5jdGlvbiBnZXQtY29sdW1uLWdyYWRpZW50KFxuICAkdG90YWwgICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMsXG4gICRjb2x1bW4gICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoLFxuICAkZ3V0dGVyICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCxcbiAgJG9mZnNldCAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsXG4gICRjb2x1bW4tY29sb3IgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLFxuICAkZ3V0dGVyLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvcixcbiAgJGZvcmNlLWZsdWlkICAgIDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZFxuKSB7XG4gICRncmlkOiB1bnF1b3RlKFwiXCIpO1xuXG4gIC8vIGRvbid0IGZvcmNlIGZsdWlkIGdyaWRzIHdoZW4gdGhleSBhcmUgYWxyZWFkeSBmbHVpZC5cbiAgQGlmIHVuaXQoJGNvbHVtbikgPT0gXCIlXCIgeyAkZm9yY2UtZmx1aWQ6IGZhbHNlOyB9XG5cbiAgQGlmICRmb3JjZS1mbHVpZCB7XG4gICAgJGdyaWQ6IGdldC1jb2x1bW4tZmx1aWQtZ3JpZCgkdG90YWwsJGNvbHVtbiwkZ3V0dGVyLCRvZmZzZXQsJGNvbHVtbi1jb2xvciwkZ3V0dGVyLWNvbG9yKTtcbiAgfSBAZWxzZSB7XG4gICAgJGdyaWQ6IGJ1aWxkLWdyaWQtYmFja2dyb3VuZCgkdG90YWwsJGNvbHVtbiwkZ3V0dGVyLCRvZmZzZXQsJGNvbHVtbi1jb2xvciwkZ3V0dGVyLWNvbG9yKTtcbiAgfVxuXG4gIC8vIHJldHVybiB0aGUgaG9yaXpvbnRhbCBncmlkIGFzIGEgZ3JhZGllbnRcbiAgJGdyYWRpZW50OiBsaW5lYXItZ3JhZGllbnQobGVmdCwgJGdyaWQpO1xuICBAcmV0dXJuICRncmFkaWVudDtcbn1cblxuLy8gQ29udmVydCBhIGdyaWQgZnJvbSBmaXhlZCB1bml0cyBpbnRvIHBlcmNlbnRhZ2VzLlxuQGZ1bmN0aW9uIGdldC1jb2x1bW4tZmx1aWQtZ3JpZChcbiAgJHRvdGFsICAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLFxuICAkY29sdW1uICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCxcbiAgJGd1dHRlciAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsXG4gICRvZmZzZXQgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LFxuICAkY29sdW1uLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvcixcbiAgJGd1dHRlci1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3Jcbikge1xuICAkY29udGV4dDogKCRjb2x1bW4gKiAkdG90YWwpICsgKCRndXR0ZXIgKiAoJHRvdGFsIC0gMSkgKyAoJG9mZnNldCAqIDIpKTtcbiAgJG9mZnNldDogJG9mZnNldCAvICRjb250ZXh0ICogMTAwJTtcbiAgJGNvbHVtbjogJGNvbHVtbiAvICRjb250ZXh0ICogMTAwJTtcbiAgJGd1dHRlcjogJGd1dHRlciAvICRjb250ZXh0ICogMTAwJTtcblxuICAvLyByZXR1cm4gdGhlIGhvcml6b250YWwgZ3JpZCBhcyBhIHNldCBvZiBjb2xvci1zdG9wc1xuICAkZ3JpZDogYnVpbGQtZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbCwkY29sdW1uLCRndXR0ZXIsJG9mZnNldCwkY29sdW1uLWNvbG9yLCRndXR0ZXItY29sb3IpO1xuICBAcmV0dXJuICRncmlkO1xufVxuXG5cbi8vIEFkZCBqdXN0IHRoZSBiYXNlbGluZSBncmlkIHRvIGFuIGVsZW1lbnQncyBiYWNrZ3JvdW5kXG5AbWl4aW4gYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kKFxuICAkYmFzZWxpbmUgOiAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWhlaWdodCxcbiAgJGNvbG9yICAgIDogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvclxuKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIGFuZCAkc2hvdy1iYXNlbGluZS1ncmlkLWJhY2tncm91bmRzIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKGdldC1iYXNlbGluZS1ncmFkaWVudCgkY29sb3IpKTtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoMTAwJSAkYmFzZWxpbmUpO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wO1xuICB9XG59XG5cbi8vIEFkZCBqdXN0IHRoZSBob3Jpem9udGFsIGdyaWQgdG8gYW4gZWxlbWVudCdzIGJhY2tncm91bmRcbkBtaXhpbiBjb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kKFxuICAkdG90YWwgICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMsXG4gICRjb2x1bW4gICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoLFxuICAkZ3V0dGVyICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCxcbiAgJG9mZnNldCAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsXG4gICRjb2x1bW4tY29sb3IgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLFxuICAkZ3V0dGVyLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvcixcbiAgJGZvcmNlLWZsdWlkICAgIDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZFxuKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIGFuZCAkc2hvdy1jb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kcyB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShcbiAgICAgIGdldC1jb2x1bW4tZ3JhZGllbnQoJHRvdGFsLCRjb2x1bW4sJGd1dHRlciwkb2Zmc2V0LCRjb2x1bW4tY29sb3IsJGd1dHRlci1jb2xvciwgJGZvcmNlLWZsdWlkKVxuICAgICk7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCB0b3A7XG4gIH1cbn1cblxuLy8gQWRkIGJvdGggaG9yaXpvbnRhbCBhbmQgYmFzZWxpbmUgZ3JpZHMgdG8gYW4gZWxlbWVudCdzIGJhY2tncm91bmRcbkBtaXhpbiBncmlkLWJhY2tncm91bmQoXG4gICR0b3RhbCAgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1ucyxcbiAgJGNvbHVtbiAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGgsXG4gICRndXR0ZXIgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoLFxuICAkYmFzZWxpbmUgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWhlaWdodCxcbiAgJG9mZnNldCAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsXG4gICRjb2x1bW4tY29sb3IgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLFxuICAkZ3V0dGVyLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvcixcbiAgJGJhc2VsaW5lLWNvbG9yIDogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcixcbiAgJGZvcmNlLWZsdWlkICAgIDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZFxuKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIHtcbiAgICBAaWYgJHNob3ctYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kcyBhbmQgJHNob3ctY29sdW1uLWdyaWQtYmFja2dyb3VuZHMge1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShcbiAgICAgICAgZ2V0LWJhc2VsaW5lLWdyYWRpZW50KCRiYXNlbGluZS1jb2xvciksXG4gICAgICAgIGdldC1jb2x1bW4tZ3JhZGllbnQoJHRvdGFsLCRjb2x1bW4sJGd1dHRlciwkb2Zmc2V0LCRjb2x1bW4tY29sb3IsJGd1dHRlci1jb2xvciwgJGZvcmNlLWZsdWlkKVxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgxMDAlICRiYXNlbGluZSwgYXV0byk7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZCgkYmFzZWxpbmUsICRiYXNlbGluZS1jb2xvcik7XG4gICAgICBAaW5jbHVkZSBjb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbCwkY29sdW1uLCRndXR0ZXIsJG9mZnNldCwkY29sdW1uLWNvbG9yLCRndXR0ZXItY29sb3IsICRmb3JjZS1mbHVpZCk7XG4gICAgfVxuICB9XG59XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5AaW1wb3J0IFwiLi4vdXRpbGl0aWVzL2dlbmVyYWwvaGFja3NcIjtcbkBpbXBvcnQgXCIuLi9mdW5jdGlvbnNcIjtcblxuLy8gQmFja2dyb3VuZCBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gYmFja2dyb3VuZChcbiAgJGJhY2tncm91bmQtMSxcbiAgJGJhY2tncm91bmQtMjogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTM6IGZhbHNlLFxuICAkYmFja2dyb3VuZC00OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNTogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTY6IGZhbHNlLFxuICAkYmFja2dyb3VuZC03OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtODogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTk6IGZhbHNlLFxuICAkYmFja2dyb3VuZC0xMDogZmFsc2Vcbikge1xuICAkYmFja2dyb3VuZHM6IGNvbXBhY3QoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTtcbiAgJG11bHQtYmdzOiAtY29tcGFzcy1saXN0LXNpemUoJGJhY2tncm91bmRzKSA+IDE7XG4gICRhZGQtcGllLWJnOiBwcmVmaXhlZCgtcGllLCAgICRiYWNrZ3JvdW5kcykgb3IgJG11bHQtYmdzO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1zdmcoJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1vd2coJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6IC13ZWJraXQoJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1tb3ooJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgICAgLW8oJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgYW5kICRhZGQtcGllLWJnICAgICAgICAgICAgICAgICAgICAgeyAtcGllLWJhY2tncm91bmQ6ICAgIC1waWUoJGJhY2tncm91bmRzKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICAgICAgICAgJGJhY2tncm91bmRzIDtcbn1cblxuQG1peGluIGJhY2tncm91bmQtd2l0aC1jc3MyLWZhbGxiYWNrKFxuICAkYmFja2dyb3VuZC0xLFxuICAkYmFja2dyb3VuZC0yOiBmYWxzZSxcbiAgJGJhY2tncm91bmQtMzogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTQ6IGZhbHNlLFxuICAkYmFja2dyb3VuZC01OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNjogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTc6IGZhbHNlLFxuICAkYmFja2dyb3VuZC04OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtOTogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTEwOiBmYWxzZVxuKSB7XG4gICRiYWNrZ3JvdW5kczogY29tcGFjdCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yLCAkYmFja2dyb3VuZC0zLCAkYmFja2dyb3VuZC00LCAkYmFja2dyb3VuZC01LFxuICAgICAgICAgICAgICAgICAgICAgICAgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApO1xuICAkbXVsdC1iZ3M6IC1jb21wYXNzLWxpc3Qtc2l6ZSgkYmFja2dyb3VuZHMpID4gMTtcbiAgJHNpbXBsZS1iYWNrZ3JvdW5kOiBpZigkbXVsdC1iZ3Mgb3IgcHJlZml4ZWQoLWNzczIsICRiYWNrZ3JvdW5kcyksIC1jc3MyKC1jb21wYXNzLW50aCgkYmFja2dyb3VuZHMsIGxhc3QpKSwgZmFsc2UpO1xuICBAaWYgbm90KGJsYW5rKCRzaW1wbGUtYmFja2dyb3VuZCkpIHsgYmFja2dyb3VuZDogJHNpbXBsZS1iYWNrZ3JvdW5kOyB9XG4gIEBpbmNsdWRlIGJhY2tncm91bmQoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSxcbiAgICAgICAgICAgICAgICAgICAgICAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7XG59XG5cblxuLy8gQmFja2dyb3VuZCBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gYmFja2dyb3VuZC1pbWFnZShcbiAgJGltYWdlLTEsXG4gICRpbWFnZS0yOiBmYWxzZSxcbiAgJGltYWdlLTM6IGZhbHNlLFxuICAkaW1hZ2UtNDogZmFsc2UsXG4gICRpbWFnZS01OiBmYWxzZSxcbiAgJGltYWdlLTY6IGZhbHNlLFxuICAkaW1hZ2UtNzogZmFsc2UsXG4gICRpbWFnZS04OiBmYWxzZSxcbiAgJGltYWdlLTk6IGZhbHNlLFxuICAkaW1hZ2UtMTA6IGZhbHNlXG4pIHtcbiAgJGltYWdlczogY29tcGFjdCgkaW1hZ2UtMSwgJGltYWdlLTIsICRpbWFnZS0zLCAkaW1hZ2UtNCwgJGltYWdlLTUsICRpbWFnZS02LCAkaW1hZ2UtNywgJGltYWdlLTgsICRpbWFnZS05LCAkaW1hZ2UtMTApO1xuICAkYWRkLXBpZS1iZzogcHJlZml4ZWQoLXBpZSwgICAkaW1hZ2VzKSBvciAtY29tcGFzcy1saXN0LXNpemUoJGltYWdlcykgPiAxO1xuXG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAgICAtc3ZnKCRpbWFnZXMpOyBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgIC1vd2coJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQoJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgIC1tb3ooJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgICAgLW8oJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIGFuZCAkYWRkLXBpZS1iZyAgICAgICAgICAgICAgICB7IEB3YXJuIFwiUElFIGRvZXMgbm90IHN1cHBvcnQgYmFja2dyb3VuZC1pbWFnZS4gVXNlIEBpbmNsdWRlIGJhY2tncm91bmQoI3skaW1hZ2VzfSkgaW5zdGVhZC5cIiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgICAgICRpbWFnZXMgO1xufVxuXG4vLyBFbWl0IGEgSUUtU3BlY2lmaWMgZmlsdGVycyB0aGF0IHJlbmRlcnMgYSBzaW1wbGUgbGluZWFyIGdyYWRpZW50LlxuLy8gRm9yIHVzZSBpbiBJRSA2IC0gOC4gQmVzdCBwcmFjdGljZSB3b3VsZCBoYXZlIHlvdSBhcHBseSB0aGlzIHZpYSBhXG4vLyBjb25kaXRpb25hbCBJRSBzdHlsZXNoZWV0LCBidXQgaWYgeW91IG11c3QsIHlvdSBzaG91bGQgcGxhY2UgdGhpcyBiZWZvcmVcbi8vIGFueSBiYWNrZ3JvdW5kLWltYWdlIHByb3BlcnRpZXMgdGhhdCB5b3UgaGF2ZSBzcGVjaWZpZWQuXG4vL1xuLy8gRm9yIHRoZSBgJG9yaWVudGF0aW9uYCBwYXJhbWV0ZXIsIHlvdSBjYW4gcGFzcyBgdmVydGljYWxgIG9yIGBob3Jpem9udGFsYC5cbkBtaXhpbiBmaWx0ZXItZ3JhZGllbnQoJHN0YXJ0LWNvbG9yLCAkZW5kLWNvbG9yLCAkb3JpZW50YXRpb246IHZlcnRpY2FsKSB7XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG4gICRncmFkaWVudC10eXBlOiBpZigkb3JpZW50YXRpb24gPT0gdmVydGljYWwsIDAsIDEpO1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTgge1xuICAgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGdyYWRpZW50VHlwZT0jeyRncmFkaWVudC10eXBlfSwgc3RhcnRDb2xvcnN0cj0nI3tpZS1oZXgtc3RyKCRzdGFydC1jb2xvcil9JywgZW5kQ29sb3JzdHI9JyN7aWUtaGV4LXN0cigkZW5kLWNvbG9yKX0nKTtcbiAgfVxufVxuXG5cbi8vIEJvcmRlciBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHByb3BlcnRpZXMgYW5kIHZhbHVlcy5cbkBtaXhpbiBib3JkZXItaW1hZ2UoJHZhbHVlKSB7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICB7ICAgIC1tb3otYm9yZGVyLWltYWdlOiAgICAtbW96KHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgeyAtd2Via2l0LWJvcmRlci1pbWFnZTogICAgLW93ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIHsgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IC13ZWJraXQocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICB7ICAgICAgLW8tYm9yZGVyLWltYWdlOiAgICAgIC1vKHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgeyAgICAgICAgIGJvcmRlci1pbWFnZTogICAgLXN2ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItaW1hZ2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlO1xufVxuXG4vLyBMaXN0IHN0eWxlIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBsaXN0LXN0eWxlLWltYWdlKCRpbWFnZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtbW96KCRpbWFnZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLW93ZygkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGltYWdlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6IC13ZWJraXQoJGltYWdlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAgIC1vKCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIGFuZCBwcmVmaXhlZCgtc3ZnLCAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLXN2ZygkaW1hZ2UpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGUtaW1hZ2U6ICAgICAgICAgJGltYWdlIDtcbn1cblxuLy8gTGlzdCBzdHlsZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gbGlzdC1zdHlsZSgkdmFsdWUpIHtcbiAgJHZhbHVlOiAtY29tcGFzcy1saXN0KCR2YWx1ZSk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICBhbmQgcHJlZml4ZWQoLW1veiwgICAgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgIC1tb3ooJHZhbHVlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtb3dnKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkdmFsdWUpIHsgbGlzdC1zdHlsZS1pbWFnZTogLXdlYmtpdCgkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICBhbmQgcHJlZml4ZWQoLW8sICAgICAgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgICAgLW8oJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtc3ZnKCR2YWx1ZSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC1zdHlsZS1pbWFnZTogICAgICAgICAkdmFsdWUgO1xufVxuXG4vLyBjb250ZW50IHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBjb250ZW50KCR2YWx1ZSkge1xuICAkdmFsdWU6IC1jb21wYXNzLWxpc3QoJHZhbHVlKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkdmFsdWUpIHsgY29udGVudDogICAgLW1veigkdmFsdWUpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgIC1vd2coJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICR2YWx1ZSkgeyBjb250ZW50OiAtd2Via2l0KCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkdmFsdWUpIHsgY29udGVudDogICAgICAtbygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgIC1zdmcoJHZhbHVlKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAgICAgICAgICR2YWx1ZSA7XG59XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vICBvdmVycmlkZSB0byBjaGFuZ2UgdGhlIGRlZmF1bHRcbiRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIHNpemUgb2YgYmFja2dyb3VuZCBpbWFnZXMgdXNpbmcgcHgsIHdpZHRoIGFuZCBoZWlnaHQsIG9yIHBlcmNlbnRhZ2VzLlxuLy8gQ3VycmVudGx5IHN1cHBvcnRlZCBpbjogT3BlcmEsIEdlY2tvLCBXZWJraXQuXG4vL1xuLy8gKiBwZXJjZW50YWdlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJhY2tncm91bmQtb3JpZ2luIChkZWZhdWx0ID0gcGFkZGluZy1ib3gpXG4vLyAqIG1peGluIGRlZmF1bHRzIHRvOiBgJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplYFxuQG1peGluIGJhY2tncm91bmQtc2l6ZShcbiAgJHNpemUtMTogJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplLFxuICAkc2l6ZS0yOiBmYWxzZSxcbiAgJHNpemUtMzogZmFsc2UsXG4gICRzaXplLTQ6IGZhbHNlLFxuICAkc2l6ZS01OiBmYWxzZSxcbiAgJHNpemUtNjogZmFsc2UsXG4gICRzaXplLTc6IGZhbHNlLFxuICAkc2l6ZS04OiBmYWxzZSxcbiAgJHNpemUtOTogZmFsc2UsXG4gICRzaXplLTEwOiBmYWxzZVxuKSB7XG4gICRzaXplLTE6IGlmKHR5cGUtb2YoJHNpemUtMSkgPT0gc3RyaW5nLCB1bnF1b3RlKCRzaXplLTEpLCAkc2l6ZS0xKTtcbiAgJHNpemVzOiBjb21wYWN0KCRzaXplLTEsICRzaXplLTIsICRzaXplLTMsICRzaXplLTQsICRzaXplLTUsICRzaXplLTYsICRzaXplLTcsICRzaXplLTgsICRzaXplLTksICRzaXplLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtc2l6ZSwgJHNpemVzLCAtbW96LCAtd2Via2l0LCAtbywgbm90KC1tcyksIG5vdCgta2h0bWwpKTtcbn1cbiIsIkBpbXBvcnQgXCJjc3MzL2JvcmRlci1yYWRpdXNcIjtcbkBpbXBvcnQgXCJjc3MzL2lubGluZS1ibG9ja1wiO1xuQGltcG9ydCBcImNzczMvb3BhY2l0eVwiO1xuQGltcG9ydCBcImNzczMvYm94LXNoYWRvd1wiO1xuQGltcG9ydCBcImNzczMvdGV4dC1zaGFkb3dcIjtcbkBpbXBvcnQgXCJjc3MzL2NvbHVtbnNcIjtcbkBpbXBvcnQgXCJjc3MzL2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJjc3MzL2JveFwiO1xuQGltcG9ydCBcImNzczMvaW1hZ2VzXCI7XG5AaW1wb3J0IFwiY3NzMy9iYWNrZ3JvdW5kLWNsaXBcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmQtb3JpZ2luXCI7XG5AaW1wb3J0IFwiY3NzMy9iYWNrZ3JvdW5kLXNpemVcIjtcbkBpbXBvcnQgXCJjc3MzL2ZvbnQtZmFjZVwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNmb3JtXCI7XG5AaW1wb3J0IFwiY3NzMy90cmFuc2l0aW9uXCI7XG5AaW1wb3J0IFwiY3NzMy9hcHBlYXJhbmNlXCI7XG5AaW1wb3J0IFwiY3NzMy9yZWdpb25zXCI7XG5AaW1wb3J0IFwiY3NzMy9oeXBoZW5hdGlvblwiO1xuQGltcG9ydCBcImNzczMvZmlsdGVyXCI7XG5AaW1wb3J0IFwiY3NzMy9waWVcIjtcbkBpbXBvcnQgXCJjc3MzL3VzZXItaW50ZXJmYWNlXCI7XG5AaW1wb3J0IFwiY3NzMy9mbGV4Ym94XCI7IiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4kZGVmYXVsdC1ib3JkZXItcmFkaXVzOiA1cHggIWRlZmF1bHQ7XG5cbi8vIFJvdW5kIGFsbCBjb3JuZXJzIGJ5IGEgc3BlY2lmaWMgYW1vdW50LCBkZWZhdWx0cyB0byB2YWx1ZSBvZiBgJGRlZmF1bHQtYm9yZGVyLXJhZGl1c2AuXG4vL1xuLy8gV2hlbiB0d28gdmFsdWVzIGFyZSBwYXNzZWQsIHRoZSBmaXJzdCBpcyB0aGUgaG9yaXpvbnRhbCByYWRpdXNcbi8vIGFuZCB0aGUgc2Vjb25kIGlzIHRoZSB2ZXJ0aWNhbCByYWRpdXMuXG4vL1xuLy8gTm90ZTogd2Via2l0IGRvZXMgbm90IHN1cHBvcnQgc2hvcnRoYW5kIHN5bnRheCBmb3Igc2V2ZXJhbCBjb3JuZXJzIGF0IG9uY2UuXG4vLyBTbyBpbiB0aGUgY2FzZSB3aGVyZSB5b3UgcGFzcyBzZXZlcmFsIHZhbHVlcyBvbmx5IHRoZSBmaXJzdCB3aWxsIGJlIHBhc3NlZCB0byB3ZWJraXQuXG4vL1xuLy8gRXhhbXBsZXM6XG4vL1xuLy8gICAgIC5zaW1wbGUgICB7IEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoNHB4LCA0cHgpOyB9XG4vLyAgICAgLmNvbXBvdW5kIHsgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygycHggNXB4LCAzcHggNnB4KTsgfVxuLy8gICAgIC5jcmF6eSAgICB7IEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMXB4IDNweCA1cHggN3B4LCAycHggNHB4IDZweCA4cHgpfVxuLy9cbi8vIFdoaWNoIGdlbmVyYXRlczpcbi8vXG4vLyAgICAuc2ltcGxlIHtcbi8vICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHggNHB4O1xuLy8gICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDRweCAvIDRweDtcbi8vICAgICAgLWtodG1sLWJvcmRlci1yYWRpdXM6IDRweCAvIDRweDtcbi8vICAgICAgYm9yZGVyLXJhZGl1czogNHB4IC8gNHB4OyB9XG4vLyAgICBcbi8vICAgIC5jb21wb3VuZCB7XG4vLyAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMnB4IDNweDtcbi8vICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAycHggNXB4IC8gM3B4IDZweDtcbi8vICAgICAgLWtodG1sLWJvcmRlci1yYWRpdXM6IDJweCA1cHggLyAzcHggNnB4O1xuLy8gICAgICBib3JkZXItcmFkaXVzOiAycHggNXB4IC8gM3B4IDZweDsgfVxuLy8gICAgXG4vLyAgICAuY3Jhenkge1xuLy8gICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDFweCAycHg7XG4vLyAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogMXB4IDNweCA1cHggN3B4IC8gMnB4IDRweCA2cHggOHB4O1xuLy8gICAgICAta2h0bWwtYm9yZGVyLXJhZGl1czogMXB4IDNweCA1cHggN3B4IC8gMnB4IDRweCA2cHggOHB4O1xuLy8gICAgICBib3JkZXItcmFkaXVzOiAxcHggM3B4IDVweCA3cHggLyAycHggNHB4IDZweCA4cHg7IH1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cywgJHZlcnRpY2FsLXJhZGl1czogZmFsc2UpIHtcblxuICBAaWYgJHZlcnRpY2FsLXJhZGl1cyB7XG4gICAgLy8gV2Via2l0IGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUgb2ZmaWNpYWwgc2hvcnRoYW5kIHN5bnRheCBmb3Igc3BlY2lmeWluZ1xuICAgIC8vIGEgdmVydGljYWwgcmFkaXVzIHVubGVzcyBzbyBpbiBjYXNlIHRoZXJlJ3Mgc2V2ZXJhbCB3ZSBvbmx5IHRha2UgdGhlIGZpcnN0LlxuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3JkZXItcmFkaXVzLCBmaXJzdC12YWx1ZS1vZigkcmFkaXVzKSBmaXJzdC12YWx1ZS1vZigkdmVydGljYWwtcmFkaXVzKSxcbiAgICAgIG5vdCgtbW96KSxcbiAgICAgIC13ZWJraXQsXG4gICAgICBub3QoLW8pLFxuICAgICAgbm90KC1tcyksXG4gICAgICBub3QoLWtodG1sKSxcbiAgICAgIG5vdChvZmZpY2lhbClcbiAgICApO1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChcImJvcmRlci1yYWRpdXNcIiwgJHJhZGl1cyB1bnF1b3RlKFwiL1wiKSAkdmVydGljYWwtcmFkaXVzLFxuICAgICAgLW1veixcbiAgICAgIG5vdCgtd2Via2l0KSxcbiAgICAgIG5vdCgtbyksXG4gICAgICBub3QoLW1zKSxcbiAgICAgIC1raHRtbCxcbiAgICAgIG9mZmljaWFsXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJvcmRlci1yYWRpdXMsICRyYWRpdXMpO1xuICB9XG59XG5cbi8vIFJvdW5kIHJhZGl1cyBhdCBwb3NpdGlvbiBieSBhbW91bnQuXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yIGAkdmVydGA6IGB0b3BgLCBgYm90dG9tYFxuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yIGAkaG9yemA6IGBsZWZ0YCwgYHJpZ2h0YFxuXG5AbWl4aW4gYm9yZGVyLWNvcm5lci1yYWRpdXMoJHZlcnQsICRob3J6LCAkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIC8vIFN1cHBvcnQgZm9yIG1vemlsbGEncyBzeW50YXggZm9yIHNwZWNpZnlpbmcgYSBjb3JuZXJcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKFwiYm9yZGVyLXJhZGl1cy0jeyR2ZXJ0fSN7JGhvcnp9XCIsICRyYWRpdXMsXG4gICAgLW1veixcbiAgICBub3QoLXdlYmtpdCksXG4gICAgbm90KC1vKSxcbiAgICBub3QoLW1zKSxcbiAgICBub3QoLWtodG1sKSxcbiAgICBub3Qob2ZmaWNpYWwpXG4gICk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChcImJvcmRlci0jeyR2ZXJ0fS0jeyRob3J6fS1yYWRpdXNcIiwgJHJhZGl1cyxcbiAgICBub3QoLW1veiksXG4gICAgLXdlYmtpdCxcbiAgICBub3QoLW8pLFxuICAgIG5vdCgtbXMpLFxuICAgIC1raHRtbCxcbiAgICBvZmZpY2lhbFxuICApO1xuICBcbn1cblxuLy8gUm91bmQgdG9wLWxlZnQgY29ybmVyIG9ubHlcblxuQG1peGluIGJvcmRlci10b3AtbGVmdC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItY29ybmVyLXJhZGl1cyh0b3AsIGxlZnQsICRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIHRvcC1yaWdodCBjb3JuZXIgb25seVxuXG5AbWl4aW4gYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItY29ybmVyLXJhZGl1cyh0b3AsIHJpZ2h0LCAkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3R0b20tbGVmdCBjb3JuZXIgb25seVxuXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1jb3JuZXItcmFkaXVzKGJvdHRvbSwgbGVmdCwgJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90dG9tLXJpZ2h0IGNvcm5lciBvbmx5XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1jb3JuZXItcmFkaXVzKGJvdHRvbSwgcmlnaHQsICRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdGggdG9wIGNvcm5lcnMgYnkgYW1vdW50XG5AbWl4aW4gYm9yZGVyLXRvcC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItdG9wLWxlZnQtcmFkaXVzKCRyYWRpdXMpO1xuICBAaW5jbHVkZSBib3JkZXItdG9wLXJpZ2h0LXJhZGl1cygkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3RoIHJpZ2h0IGNvcm5lcnMgYnkgYW1vdW50XG5AbWl4aW4gYm9yZGVyLXJpZ2h0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzKCRyYWRpdXMpO1xuICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cygkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3RoIGJvdHRvbSBjb3JuZXJzIGJ5IGFtb3VudFxuQG1peGluIGJvcmRlci1ib3R0b20tcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cygkcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMoJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90aCBsZWZ0IGNvcm5lcnMgYnkgYW1vdW50XG5AbWl4aW4gYm9yZGVyLWxlZnQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cygkcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cygkcmFkaXVzKTsgfVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBQcm92aWRlcyBjcm9zcy1icm93c2VyIENTUyBvcGFjaXR5LiBUYWtlcyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEgYXMgdGhlIGFyZ3VtZW50LCBlLmcuIDAuNSBmb3IgNTAlIG9wYWNpdHkuXG4vL1xuLy8gICAgIEBwYXJhbSAkb3BhY2l0eVxuLy8gICAgICAgICBBIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEsIHdoZXJlIDAgaXMgdHJhbnNwYXJlbnQgYW5kIDEgaXMgb3BhcXVlLlxuXG5AbWl4aW4gb3BhY2l0eSgkb3BhY2l0eSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTgge1xuICAgIGZpbHRlcjogdW5xdW90ZShcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PSN7cm91bmQoJG9wYWNpdHkgKiAxMDApfSlcIik7XG4gIH1cbiAgb3BhY2l0eTogJG9wYWNpdHk7XG59XG5cbi8vIE1ha2UgYW4gZWxlbWVudCBjb21wbGV0ZWx5IHRyYW5zcGFyZW50LlxuQG1peGluIHRyYW5zcGFyZW50IHsgQGluY2x1ZGUgb3BhY2l0eSgwKTsgfVxuXG4vLyBNYWtlIGFuIGVsZW1lbnQgY29tcGxldGVseSBvcGFxdWUuXG5AbWl4aW4gb3BhcXVlIHsgQGluY2x1ZGUgb3BhY2l0eSgxKTsgfVxuIiwiLy8gQGRvYyBvZmZcbi8vIFRoZXNlIGRlZmF1bHRzIG1ha2UgdGhlIGFyZ3VtZW50cyBvcHRpb25hbCBmb3IgdGhpcyBtaXhpblxuLy8gSWYgeW91IGxpa2UsIHNldCBkaWZmZXJlbnQgZGVmYXVsdHMgYmVmb3JlIGltcG9ydGluZy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5cbi8vIFRoZSBkZWZhdWx0IGNvbG9yIGZvciBib3ggc2hhZG93c1xuJGRlZmF1bHQtYm94LXNoYWRvdy1jb2xvcjogIzMzMzMzMyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgaG9yaXpvbnRhbCBvZmZzZXQuIFBvc2l0aXZlIGlzIHRvIHRoZSByaWdodC5cbiRkZWZhdWx0LWJveC1zaGFkb3ctaC1vZmZzZXQ6IDBweCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgdmVydGljYWwgb2Zmc2V0LiBQb3NpdGl2ZSBpcyBkb3duLlxuJGRlZmF1bHQtYm94LXNoYWRvdy12LW9mZnNldDogMHB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBibHVyIGxlbmd0aC5cbiRkZWZhdWx0LWJveC1zaGFkb3ctYmx1cjogNXB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBzcHJlYWQgbGVuZ3RoLlxuJGRlZmF1bHQtYm94LXNoYWRvdy1zcHJlYWQgOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgc2hhZG93IGluc2V0OiBpbnNldCBvciBmYWxzZSAoZm9yIHN0YW5kYXJkIHNoYWRvdykuXG4kZGVmYXVsdC1ib3gtc2hhZG93LWluc2V0IDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFByb3ZpZGVzIGNyb3NzLWJyb3dzZXIgZm9yIFdlYmtpdCwgR2Vja28sIGFuZCBDU1MzIGJveCBzaGFkb3dzIHdoZW4gb25lIG9yIG1vcmUgYm94XG4vLyBzaGFkb3dzIGFyZSBuZWVkZWQuXG4vLyBFYWNoIHNoYWRvdyBhcmd1bWVudCBzaG91bGQgYWRoZXJlIHRvIHRoZSBzdGFuZGFyZCBjc3MzIHN5bnRheCBmb3IgdGhlXG4vLyBib3gtc2hhZG93IHByb3BlcnR5LlxuQG1peGluIGJveC1zaGFkb3coXG4gICRzaGFkb3ctMSA6IGRlZmF1bHQsXG4gICRzaGFkb3ctMiA6IGZhbHNlLFxuICAkc2hhZG93LTMgOiBmYWxzZSxcbiAgJHNoYWRvdy00IDogZmFsc2UsXG4gICRzaGFkb3ctNSA6IGZhbHNlLFxuICAkc2hhZG93LTYgOiBmYWxzZSxcbiAgJHNoYWRvdy03IDogZmFsc2UsXG4gICRzaGFkb3ctOCA6IGZhbHNlLFxuICAkc2hhZG93LTkgOiBmYWxzZSxcbiAgJHNoYWRvdy0xMDogZmFsc2Vcbikge1xuICBAaWYgJHNoYWRvdy0xID09IGRlZmF1bHQge1xuICAgICRzaGFkb3ctMSA6IC1jb21wYXNzLXNwYWNlLWxpc3QoY29tcGFjdChpZigkZGVmYXVsdC1ib3gtc2hhZG93LWluc2V0LCBpbnNldCwgZmFsc2UpLCAkZGVmYXVsdC1ib3gtc2hhZG93LWgtb2Zmc2V0LCAkZGVmYXVsdC1ib3gtc2hhZG93LXYtb2Zmc2V0LCAkZGVmYXVsdC1ib3gtc2hhZG93LWJsdXIsICRkZWZhdWx0LWJveC1zaGFkb3ctc3ByZWFkLCAkZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yKSk7XG4gIH1cbiAgJHNoYWRvdyA6IGNvbXBhY3QoJHNoYWRvdy0xLCAkc2hhZG93LTIsICRzaGFkb3ctMywgJHNoYWRvdy00LCAkc2hhZG93LTUsICRzaGFkb3ctNiwgJHNoYWRvdy03LCAkc2hhZG93LTgsICRzaGFkb3ctOSwgJHNoYWRvdy0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtc2hhZG93LCAkc2hhZG93LFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gUHJvdmlkZXMgYSBzaW5nbGUgY3Jvc3MtYnJvd3NlciBDU1MgYm94IHNoYWRvdyBmb3IgV2Via2l0LCBHZWNrbywgYW5kIENTUzMuXG4vLyBJbmNsdWRlcyBkZWZhdWx0IGFyZ3VtZW50cyBmb3IgaG9yaXpvbnRhbCBvZmZzZXQsIHZlcnRpY2FsIG9mZnNldCwgYmx1ciBsZW5ndGgsIHNwcmVhZCBsZW5ndGgsIGNvbG9yIGFuZCBpbnNldC5cbkBtaXhpbiBzaW5nbGUtYm94LXNoYWRvdyhcbiAgJGhvZmYgICA6ICRkZWZhdWx0LWJveC1zaGFkb3ctaC1vZmZzZXQsXG4gICR2b2ZmICAgOiAkZGVmYXVsdC1ib3gtc2hhZG93LXYtb2Zmc2V0LFxuICAkYmx1ciAgIDogJGRlZmF1bHQtYm94LXNoYWRvdy1ibHVyLFxuICAkc3ByZWFkIDogJGRlZmF1bHQtYm94LXNoYWRvdy1zcHJlYWQsXG4gICRjb2xvciAgOiAkZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yLFxuICAkaW5zZXQgIDogJGRlZmF1bHQtYm94LXNoYWRvdy1pbnNldFxuKSB7XG4gIEBpZiBub3QgKCRpbnNldCA9PSB0cnVlIG9yICRpbnNldCA9PSBmYWxzZSBvciAkaW5zZXQgPT0gaW5zZXQpIHtcbiAgICBAd2FybiBcIiRpbnNldCBleHBlY3RlZCB0byBiZSB0cnVlIG9yIHRoZSBpbnNldCBrZXl3b3JkLiBHb3QgI3skaW5zZXR9IGluc3RlYWQuIFVzaW5nOiBpbnNldFwiO1xuICB9XG5cbiAgQGlmICRjb2xvciA9PSBub25lIHtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KG5vbmUpO1xuICB9IEBlbHNlIHtcbiAgICAkZnVsbCAgIDogJGhvZmYgJHZvZmY7XG4gICAgQGlmICRibHVyICAgeyAkZnVsbDogJGZ1bGwgJGJsdXI7ICAgfVxuICAgIEBpZiAkc3ByZWFkIHsgJGZ1bGw6ICRmdWxsICRzcHJlYWQ7IH1cbiAgICBAaWYgJGNvbG9yICB7ICRmdWxsOiAkZnVsbCAkY29sb3I7ICB9XG4gICAgQGlmICRpbnNldCAgeyAkZnVsbDogaW5zZXQgJGZ1bGw7ICAgfVxuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGZ1bGwpO1xuICB9XG59XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFRoZXNlIGRlZmF1bHRzIG1ha2UgdGhlIGFyZ3VtZW50cyBvcHRpb25hbCBmb3IgdGhpcyBtaXhpblxuLy8gSWYgeW91IGxpa2UsIHNldCBkaWZmZXJlbnQgZGVmYXVsdHMgaW4geW91ciBwcm9qZWN0XG5cbiRkZWZhdWx0LXRleHQtc2hhZG93LWNvbG9yOiAgICAjYWFhICFkZWZhdWx0O1xuJGRlZmF1bHQtdGV4dC1zaGFkb3ctaC1vZmZzZXQ6IDBweCAgIWRlZmF1bHQ7XG4kZGVmYXVsdC10ZXh0LXNoYWRvdy12LW9mZnNldDogMHB4ICAhZGVmYXVsdDtcbiRkZWZhdWx0LXRleHQtc2hhZG93LWJsdXI6ICAgICAxcHggICFkZWZhdWx0O1xuJGRlZmF1bHQtdGV4dC1zaGFkb3ctc3ByZWFkOiAgIGZhbHNlICAhZGVmYXVsdDtcblxuLy8gUHJvdmlkZXMgY3Jvc3MtYnJvd3NlciB0ZXh0IHNoYWRvd3Mgd2hlbiBvbmUgb3IgbW9yZSBzaGFkb3dzIGFyZSBuZWVkZWQuXG4vLyBFYWNoIHNoYWRvdyBhcmd1bWVudCBzaG91bGQgYWRoZXJlIHRvIHRoZSBzdGFuZGFyZCBjc3MzIHN5bnRheCBmb3IgdGhlXG4vLyB0ZXh0LXNoYWRvdyBwcm9wZXJ0eS5cbi8vXG4vLyBOb3RlOiBpZiBhbnkgc2hhZG93IGhhcyBhIHNwcmVhZCBwYXJhbWV0ZXIsIHRoaXMgd2lsbCBjYXVzZSB0aGUgbWl4aW5cbi8vIHRvIGVtaXQgdGhlIHNoYWRvdyBkZWNsYXJhdGlvbiB0d2ljZSwgZmlyc3Qgd2l0aG91dCB0aGUgc3ByZWFkLFxuLy8gdGhlbiB3aXRoIHRoZSBzcHJlYWQgaW5jbHVkZWQuIFRoaXMgYWxsb3dzIHlvdSB0byBwcm9ncmVzc2l2ZWx5XG4vLyBlbmhhbmNlIHRoZSBicm93c2VycyB0aGF0IGRvIHN1cHBvcnQgdGhlIHNwcmVhZCBwYXJhbWV0ZXIuXG5AbWl4aW4gdGV4dC1zaGFkb3coXG4gICRzaGFkb3ctMSA6IGRlZmF1bHQsXG4gICRzaGFkb3ctMiA6IGZhbHNlLFxuICAkc2hhZG93LTMgOiBmYWxzZSxcbiAgJHNoYWRvdy00IDogZmFsc2UsXG4gICRzaGFkb3ctNSA6IGZhbHNlLFxuICAkc2hhZG93LTYgOiBmYWxzZSxcbiAgJHNoYWRvdy03IDogZmFsc2UsXG4gICRzaGFkb3ctOCA6IGZhbHNlLFxuICAkc2hhZG93LTkgOiBmYWxzZSxcbiAgJHNoYWRvdy0xMDogZmFsc2Vcbikge1xuICBAaWYgJHNoYWRvdy0xID09IGRlZmF1bHQge1xuICAgICRzaGFkb3ctMTogY29tcGFjdCgkZGVmYXVsdC10ZXh0LXNoYWRvdy1oLW9mZnNldCAkZGVmYXVsdC10ZXh0LXNoYWRvdy12LW9mZnNldCAkZGVmYXVsdC10ZXh0LXNoYWRvdy1ibHVyICRkZWZhdWx0LXRleHQtc2hhZG93LXNwcmVhZCAkZGVmYXVsdC10ZXh0LXNoYWRvdy1jb2xvcik7XG4gIH1cbiAgJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQ6IGpvaW4oKCksKCksY29tbWEpO1xuICAkc2hhZG93czogam9pbigoKSwoKSxjb21tYSk7XG4gICRoYXMtc3ByZWFkOiBmYWxzZTtcbiAgQGVhY2ggJHNoYWRvdyBpbiBjb21wYWN0KCRzaGFkb3ctMSwgJHNoYWRvdy0yLCAkc2hhZG93LTMsICRzaGFkb3ctNCwgJHNoYWRvdy01LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNoYWRvdy02LCAkc2hhZG93LTcsICRzaGFkb3ctOCwgJHNoYWRvdy05LCAkc2hhZG93LTEwKSB7XG4gICAgQGlmIGxlbmd0aCgkc2hhZG93KSA+IDQge1xuICAgICAgJGhhcy1zcHJlYWQ6IHRydWU7XG4gICAgICAkc2hhZG93cy13aXRob3V0LXNwcmVhZDogYXBwZW5kKCRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkLCBudGgoJHNoYWRvdywxKSBudGgoJHNoYWRvdywyKSBudGgoJHNoYWRvdywzKSBudGgoJHNoYWRvdyw1KSk7XG4gICAgICAkc2hhZG93czogYXBwZW5kKCRzaGFkb3dzLCAkc2hhZG93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQ6IGFwcGVuZCgkc2hhZG93cy13aXRob3V0LXNwcmVhZCwgJHNoYWRvdyk7XG4gICAgICAkc2hhZG93czogYXBwZW5kKCRzaGFkb3dzLCAkc2hhZG93KTtcbiAgICB9XG4gIH1cbiAgQGlmICRoYXMtc3ByZWFkIHtcbiAgICB0ZXh0LXNoYWRvdzogJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQ7XG4gIH1cbiAgdGV4dC1zaGFkb3c6ICRzaGFkb3dzO1xufVxuXG4vLyBQcm92aWRlcyBhIHNpbmdsZSBjcm9zcy1icm93c2VyIENTUyB0ZXh0IHNoYWRvdy5cbi8vXG4vLyBQcm92aWRlcyBzZW5zaWJsZSBkZWZhdWx0cyBmb3IgdGhlIGNvbG9yLCBob3Jpem9udGFsIG9mZnNldCwgdmVydGljYWwgb2Zmc2V0LCBibHVyLCBhbmQgc3ByZWFkXG4vLyBhY2NvcmRpbmcgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZGVmYXVsdHMgYWJvdmUuXG5AbWl4aW4gc2luZ2xlLXRleHQtc2hhZG93KFxuICAkaG9mZjogZmFsc2UsXG4gICR2b2ZmOiBmYWxzZSxcbiAgJGJsdXI6IGZhbHNlLFxuICAkc3ByZWFkOiBmYWxzZSxcbiAgJGNvbG9yOiBmYWxzZVxuKSB7XG4gIC8vIEEgbG90IG9mIHBlb3BsZSB0aGluayB0aGUgY29sb3IgY29tZXMgZmlyc3QuIEl0IGRvZXNuJ3QuXG4gIEBpZiB0eXBlLW9mKCRob2ZmKSA9PSBjb2xvciB7XG4gICAgJHRlbXAtY29sb3I6ICRob2ZmO1xuICAgICRob2ZmOiAkdm9mZjtcbiAgICAkdm9mZjogJGJsdXI7XG4gICAgJGJsdXI6ICRzcHJlYWQ7XG4gICAgJHNwcmVhZDogJGNvbG9yO1xuICAgICRjb2xvcjogJHRlbXAtY29sb3I7XG4gIH1cbiAgLy8gQ2FuJ3QgcmVseSBvbiBkZWZhdWx0IGFzc2lnbm1lbnQgd2l0aCBtdWx0aXBsZSBzdXBwb3J0ZWQgYXJndW1lbnQgb3JkZXJzLlxuICAkaG9mZjogICBpZigkaG9mZiwgICAkaG9mZiwgICAkZGVmYXVsdC10ZXh0LXNoYWRvdy1oLW9mZnNldCk7XG4gICR2b2ZmOiAgIGlmKCR2b2ZmLCAgICR2b2ZmLCAgICRkZWZhdWx0LXRleHQtc2hhZG93LXYtb2Zmc2V0KTtcbiAgJGJsdXI6ICAgaWYoJGJsdXIsICAgJGJsdXIsICAgJGRlZmF1bHQtdGV4dC1zaGFkb3ctYmx1ciAgICApO1xuICAkc3ByZWFkOiBpZigkc3ByZWFkLCAkc3ByZWFkLCAkZGVmYXVsdC10ZXh0LXNoYWRvdy1zcHJlYWQgICk7XG4gICRjb2xvcjogIGlmKCRjb2xvciwgICRjb2xvciwgICRkZWZhdWx0LXRleHQtc2hhZG93LWNvbG9yICAgKTtcbiAgLy8gV2UgZG9uJ3QgbmVlZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgdGhpcyBwcm9wZXJ0eS5cbiAgQGlmICRjb2xvciA9PSBub25lIG9yICRob2ZmID09IG5vbmUge1xuICAgIEBpbmNsdWRlIHRleHQtc2hhZG93KG5vbmUpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNoYWRvdyhjb21wYWN0KCRob2ZmICR2b2ZmICRibHVyICRzcHJlYWQgJGNvbG9yKSk7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gU3BlY2lmeSB0aGUgc2hvcnRoYW5kIGBjb2x1bW5zYCBwcm9wZXJ0eS5cbi8vXG4vLyBFeGFtcGxlOlxuLy9cbi8vICAgICBAaW5jbHVkZSBjb2x1bW5zKDIwZW0gMilcbkBtaXhpbiBjb2x1bW5zKCR3aWR0aC1hbmQtY291bnQpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbnMsICR3aWR0aC1hbmQtY291bnQsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFNwZWNpZnkgdGhlIG51bWJlciBvZiBjb2x1bW5zXG5AbWl4aW4gY29sdW1uLWNvdW50KCRjb3VudCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWNvdW50LCAkY291bnQsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFNwZWNpZnkgdGhlIGdhcCBiZXR3ZWVuIGNvbHVtbnMgZS5nLiBgMjBweGBcbkBtaXhpbiBjb2x1bW4tZ2FwKCR3aWR0aCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWdhcCwgJHdpZHRoLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBTcGVjaWZ5IHRoZSB3aWR0aCBvZiBjb2x1bW5zIGUuZy4gYDEwMHB4YFxuQG1peGluIGNvbHVtbi13aWR0aCgkd2lkdGgpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi13aWR0aCwgJHdpZHRoLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBTcGVjaWZ5IHRoZSB3aWR0aCBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMgZS5nLiBgMXB4YFxuQG1peGluIGNvbHVtbi1ydWxlLXdpZHRoKCR3aWR0aCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUtd2lkdGgsICR3aWR0aCxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gU3BlY2lmeSB0aGUgc3R5bGUgb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zIGUuZy4gYGRvdHRlZGAuXG4vLyBUaGlzIHdvcmtzIGxpa2UgYm9yZGVyLXN0eWxlLlxuQG1peGluIGNvbHVtbi1ydWxlLXN0eWxlKCRzdHlsZSkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUtc3R5bGUsIHVucXVvdGUoJHN0eWxlKSxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gU3BlY2lmeSB0aGUgY29sb3Igb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zIGUuZy4gYGJsdWVgLlxuLy8gVGhpcyB3b3JrcyBsaWtlIGJvcmRlci1jb2xvci5cbkBtaXhpbiBjb2x1bW4tcnVsZS1jb2xvcigkY29sb3IpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1ydWxlLWNvbG9yLCAkY29sb3IsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIE1peGluIGVuY29tcGFzc2luZyBhbGwgY29sdW1uIHJ1bGUgcHJvcGVydGllc1xuLy8gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICAgIEBpbmNsdWRlIGNvbHVtbi1ydWxlKDFweCwgc29saWQsICNjMDApXG4vL1xuLy8gT3IgdGhlIHZhbHVlcyBjYW4gYmUgc3BhY2Ugc2VwYXJhdGVkOlxuLy9cbi8vICAgICBAaW5jbHVkZSBjb2x1bW4tcnVsZSgxcHggc29saWQgI2MwMClcbkBtaXhpbiBjb2x1bW4tcnVsZSgkd2lkdGgsICRzdHlsZTogZmFsc2UsICRjb2xvcjogZmFsc2UpIHtcbiAgJGZ1bGwgOiAtY29tcGFzcy1zcGFjZS1saXN0KGNvbXBhY3QoJHdpZHRoLCAkc3R5bGUsICRjb2xvcikpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUsICRmdWxsLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBNaXhpbiBmb3Igc2V0dGluZyBjb2x1bW4tYnJlYWstYmVmb3JlXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGFsd2F5cywgYXZvaWQsIGxlZnQsIHJpZ2h0LCBwYWdlLCBjb2x1bW4sIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy9cbi8vICBFeGFtcGxlOiBcbi8vICAgIGgyLmJlZm9yZSB7QGluY2x1ZGUgY29sdW1uLWJyZWFrLWJlZm9yZShhbHdheXMpO31cbi8vXG4vLyAgV2hpY2ggZ2VuZXJhdGVzOiBcbi8vXG4vLyAgaDIuYmVmb3JlIHsgICAgXG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1iZWZvcmU6IGFsd2F5cztcbi8vICAgIGNvbHVtbi1icmVhay1iZWZvcmU6IGFsd2F5czt9XG5AbWl4aW4gY29sdW1uLWJyZWFrLWJlZm9yZSgkdmFsdWU6IGF1dG8pe1xuICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1icmVhay1iZWZvcmUsICR2YWx1ZSwgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsICk7XG59XG5cbi8vIE1peGluIGZvciBzZXR0aW5nIGNvbHVtbi1icmVhay1hZnRlclxuLy9cbi8vICogbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhbHdheXMsIGF2b2lkLCBsZWZ0LCByaWdodCwgcGFnZSwgY29sdW1uLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vXG4vLyAgRXhhbXBsZTogXG4vLyAgICBoMi5hZnRlciB7QGluY2x1ZGUgY29sdW1uLWJyZWFrLWFmdGVyKGFsd2F5cyk7IH1cbi8vXG4vLyAgV2hpY2ggZ2VuZXJhdGVzOiBcbi8vXG4vLyAgaDIuYWZ0ZXIge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstYWZ0ZXI6IGFsd2F5cztcbi8vICAgIGNvbHVtbi1icmVhay1hZnRlcjogYWx3YXlzOyB9XG5AbWl4aW4gY29sdW1uLWJyZWFrLWFmdGVyKCR2YWx1ZTogYXV0byl7XG4gICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWJyZWFrLWFmdGVyLCAkdmFsdWUsIG5vdCgtbW96KSwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbCApO1xufVxuXG4vLyBNaXhpbiBmb3Igc2V0dGluZyBjb2x1bW4tYnJlYWstaW5zaWRlXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGF2b2lkLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vXG4vLyAgRXhhbXBsZTogXG4vLyAgICBoMi5pbnNpZGUge0BpbmNsdWRlIGNvbHVtbi1icmVhay1pbnNpZGUoKTt9XG4vLyAgV2hpY2ggZ2VuZXJhdGVzOiBcbi8vICBcbi8vICBoMi5pbnNpZGUge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO1xuLy8gICAgY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bzt9XG5AbWl4aW4gY29sdW1uLWJyZWFrLWluc2lkZSgkdmFsdWU6IGF1dG8pe1xuICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1icmVhay1pbnNpZGUsICR2YWx1ZSwgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsICk7XG59XG5cbi8vIEFsbC1wdXJwb3NlIG1peGluIGZvciBzZXR0aW5nIGNvbHVtbiBicmVha3MuXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICR0eXBlIDogYmVmb3JlLCBhZnRlciwgaW5zaWRlIFxuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICckdmFsdWUnIGFyZSBkZXBlbmRlbnQgb24gJHR5cGVcbi8vICAgICogd2hlbiAkdHlwZSA9IGJlZm9yZSwgbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhbHdheXMsIGF2b2lkLCBsZWZ0LCByaWdodCwgcGFnZSwgY29sdW1uLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vICAgICogd2hlbiAkdHlwZSA9IGFmdGVyLCBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGFsd2F5cywgYXZvaWQsIGxlZnQsIHJpZ2h0LCBwYWdlLCBjb2x1bW4sIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy8gICAgKiB3aGVuICR0eXBlID0gaW5zaWRlLCBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGF2b2lkLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vICBcbi8vICBFeGFtcGxlczogXG4vLyAgICBoMi5iZWZvcmUge0BpbmNsdWRlIGNvbHVtbi1icmVhayhiZWZvcmUsIGFsd2F5cyk7fVxuLy8gICAgaDIuYWZ0ZXIge0BpbmNsdWRlIGNvbHVtbi1icmVhayhhZnRlciwgYWx3YXlzKTsgfVxuLy8gICAgaDIuaW5zaWRlIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWsoaW5zaWRlKTsgfVxuLy9cbi8vICBXaGljaCBnZW5lcmF0ZXM6IFxuLy8gIGgyLmJlZm9yZSB7ICAgIFxuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstYmVmb3JlOiBhbHdheXM7XG4vLyAgICBjb2x1bW4tYnJlYWstYmVmb3JlOiBhbHdheXM7fVxuLy8gIFxuLy8gIGgyLmFmdGVyIHtcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWFmdGVyOiBhbHdheXM7XG4vLyAgICBjb2x1bW4tYnJlYWstYWZ0ZXI6IGFsd2F5czsgfVxuLy9cbi8vICBoMi5pbnNpZGUge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO1xuLy8gICAgY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bzt9XG4gXG5AbWl4aW4gY29sdW1uLWJyZWFrKCR0eXBlOiBiZWZvcmUsICR2YWx1ZTogYXV0byl7XG4gICBAaW5jbHVkZSBleHBlcmltZW50YWwoXCJjb2x1bW4tYnJlYWstI3skdHlwZX1cIiwgJHZhbHVlLCBub3QoLW1veiksIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWwgKTtcbn0iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENoYW5nZSB0aGUgYm94IG1vZGVsIGZvciBNb3ppbGxhLCBXZWJraXQsIElFOCBhbmQgdGhlIGZ1dHVyZVxuLy9cbi8vIEBwYXJhbSAkYnNcbi8vICAgWyBjb250ZW50LWJveCB8IGJvcmRlci1ib3ggXVxuXG5AbWl4aW4gYm94LXNpemluZygkYnMpIHtcbiAgJGJzOiB1bnF1b3RlKCRicyk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtc2l6aW5nLCAkYnMsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBkaXNwbGF5OmJveDsgbXVzdCBiZSB1c2VkIGZvciBhbnkgb2YgdGhlIG90aGVyIGZsZXhib3ggbWl4aW5zIHRvIHdvcmsgcHJvcGVybHlcbkBtaXhpbiBkaXNwbGF5LWJveCB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbC12YWx1ZShkaXNwbGF5LCBib3gsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gRGVmYXVsdCBib3ggb3JpZW50YXRpb24sIGFzc3VtaW5nIHRoYXQgdGhlIHVzZXIgd2FudHMgc29tZXRoaW5nIGxlc3MgYmxvY2stbGlrZVxuJGRlZmF1bHQtYm94LW9yaWVudDogaG9yaXpvbnRhbCAhZGVmYXVsdDtcblxuLy8gQm94IG9yaWVudGF0aW9uIFsgaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgaW5saW5lLWF4aXMgfCBibG9jay1heGlzIHwgaW5oZXJpdCBdXG5AbWl4aW4gYm94LW9yaWVudChcbiAgJG9yaWVudGF0aW9uOiAkZGVmYXVsdC1ib3gtb3JpZW50XG4pIHtcbiAgJG9yaWVudGF0aW9uIDogdW5xdW90ZSgkb3JpZW50YXRpb24pO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LW9yaWVudCwgJG9yaWVudGF0aW9uLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIERlZmF1bHQgYm94LWFsaWduXG4kZGVmYXVsdC1ib3gtYWxpZ246IHN0cmV0Y2ggIWRlZmF1bHQ7XG5cbi8vIEJveCBhbGlnbiBbIHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoIF1cbkBtaXhpbiBib3gtYWxpZ24oXG4gICRhbGlnbm1lbnQ6ICRkZWZhdWx0LWJveC1hbGlnblxuKSB7XG4gICRhbGlnbm1lbnQgOiB1bnF1b3RlKCRhbGlnbm1lbnQpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LWFsaWduLCAkYWxpZ25tZW50LFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIERlZmF1bHQgYm94IGZsZXhcbiRkZWZhdWx0LWJveC1mbGV4OiAwICFkZWZhdWx0O1xuXG4vLyBtaXhpbiB3aGljaCB0YWtlcyBhbiBpbnQgYXJndW1lbnQgZm9yIGJveCBmbGV4LiBBcHBseSB0aGlzIHRvIHRoZSBjaGlsZHJlbiBpbnNpZGUgdGhlIGJveC5cbi8vXG4vLyBGb3IgZXhhbXBsZTogXCJkaXYuZGlzcGxheS1ib3ggPiBkaXYuY2hpbGQtYm94XCIgd291bGQgZ2V0IHRoZSBib3ggZmxleCBtaXhpbi5cbkBtaXhpbiBib3gtZmxleChcbiAgJGZsZXg6ICRkZWZhdWx0LWJveC1mbGV4XG4pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1mbGV4LCAkZmxleCxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBEZWZhdWx0IGZsZXggZ3JvdXBcbiRkZWZhdWx0LWJveC1mbGV4LWdyb3VwOiAxICFkZWZhdWx0O1xuXG4vLyBtaXhpbiB3aGljaCB0YWtlcyBhbiBpbnQgYXJndW1lbnQgZm9yIGZsZXhpYmxlIGdyb3VwaW5nXG5AbWl4aW4gYm94LWZsZXgtZ3JvdXAoXG4gICRncm91cDogJGRlZmF1bHQtYm94LWZsZXgtZ3JvdXBcbikge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LWZsZXgtZ3JvdXAsICRncm91cCxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBkZWZhdWx0IGZvciBvcmRpbmFsIGdyb3VwXG4kZGVmYXVsdC1ib3gtb3JkaW5hbC1ncm91cDogMSAhZGVmYXVsdDtcblxuLy8gbWl4aW4gd2hpY2ggdGFrZXMgYW4gaW50IGFyZ3VtZW50IGZvciBvcmRpbmFsIGdyb3VwaW5nIGFuZCByZWFycmFuZ2luZyB0aGUgb3JkZXJcbkBtaXhpbiBib3gtb3JkaW5hbC1ncm91cChcbiAgJGdyb3VwOiAkZGVmYXVsdC1vcmRpbmFsLWZsZXgtZ3JvdXBcbikge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LW9yZGluYWwtZ3JvdXAsICRncm91cCxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBCb3ggZGlyZWN0aW9uIGRlZmF1bHQgdmFsdWVcbiRkZWZhdWx0LWJveC1kaXJlY3Rpb246IG5vcm1hbCAhZGVmYXVsdDtcblxuLy8gbWl4aW4gZm9yIGJveC1kaXJlY3Rpb24gWyBub3JtYWwgfCByZXZlcnNlIHwgaW5oZXJpdCBdXG5AbWl4aW4gYm94LWRpcmVjdGlvbihcbiAgJGRpcmVjdGlvbjogJGRlZmF1bHQtYm94LWRpcmVjdGlvblxuKSB7XG4gICRkaXJlY3Rpb246IHVucXVvdGUoJGRpcmVjdGlvbik7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIGRlZmF1bHQgZm9yIGJveCBsaW5lc1xuJGRlZmF1bHQtYm94LWxpbmVzOiBzaW5nbGUgIWRlZmF1bHQ7XG5cbi8vIG1peGluIGZvciBib3ggbGluZXMgWyBzaW5nbGUgfCBtdWx0aXBsZSBdXG5AbWl4aW4gYm94LWxpbmVzKFxuICAkbGluZXM6ICRkZWZhdWx0LWJveC1saW5lc1xuKSB7XG4gICRsaW5lczogdW5xdW90ZSgkbGluZXMpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LWxpbmVzLCAkbGluZXMsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gZGVmYXVsdCBmb3IgYm94IHBhY2tcbiRkZWZhdWx0LWJveC1wYWNrOiBzdGFydCAhZGVmYXVsdDtcblxuLy8gbWl4aW4gZm9yIGJveCBwYWNrIFsgc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5IF1cbkBtaXhpbiBib3gtcGFjayhcbiAgJHBhY2s6ICRkZWZhdWx0LWJveC1wYWNrXG4pIHtcbiAgJHBhY2s6IHVucXVvdGUoJHBhY2spO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LXBhY2ssICRwYWNrLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59IiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgcGFkZGluZy1ib3hgIC0tIHRoZSBib3ggbW9kZWwgdXNlZCBieSBtb2Rlcm4gYnJvd3NlcnMuXG4vL1xuLy8gSWYgeW91IHdpc2ggdG8gZG8gc28sIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY29uc3RhbnQgd2l0aCBgYm9yZGVyLWJveGBcbi8vXG4vLyBUbyBvdmVycmlkZSB0byB0aGUgZGVmYXVsdCBib3JkZXItYm94IG1vZGVsLCB1c2UgdGhpcyBjb2RlOlxuLy8gICAgICRkZWZhdWx0LWJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveFxuXG4kZGVmYXVsdC1iYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94ICFkZWZhdWx0O1xuXG4vLyBDbGlwIHRoZSBiYWNrZ3JvdW5kIChpbWFnZSBhbmQgY29sb3IpIGF0IHRoZSBlZGdlIG9mIHRoZSBwYWRkaW5nIG9yIGJvcmRlci5cbi8vXG4vLyBMZWdhbCBWYWx1ZXM6XG4vL1xuLy8gICAqIHBhZGRpbmctYm94XG4vLyAgICogYm9yZGVyLWJveFxuLy8gICAqIHRleHRcblxuQG1peGluIGJhY2tncm91bmQtY2xpcCgkY2xpcDogJGRlZmF1bHQtYmFja2dyb3VuZC1jbGlwKSB7XG4gIC8vIHdlYmtpdCBhbmQgbW96aWxsYSB1c2UgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgW2JvcmRlciB8IHBhZGRpbmddXG4gICRjbGlwOiB1bnF1b3RlKCRjbGlwKTtcbiAgJGRlcHJlY2F0ZWQ6ICRjbGlwO1xuICBAaWYgJGNsaXAgPT0gcGFkZGluZy1ib3ggeyAkZGVwcmVjYXRlZDogcGFkZGluZzsgfVxuICBAaWYgJGNsaXAgPT0gYm9yZGVyLWJveCB7ICRkZXByZWNhdGVkOiBib3JkZXI7IH1cbiAgLy8gU3VwcG9ydCBmb3Igd2Via2l0IGFuZCBtb3ppbGxhJ3MgdXNlIG9mIHRoZSBkZXByZWNhdGVkIHNob3J0IGZvcm1cbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtY2xpcCwgJGRlcHJlY2F0ZWQsXG4gICAgLW1veixcbiAgICAtd2Via2l0LFxuICAgIG5vdCgtbyksXG4gICAgbm90KC1tcyksXG4gICAgbm90KC1raHRtbCksXG4gICAgbm90IG9mZmljaWFsXG4gICk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLWNsaXAsICRjbGlwLFxuICAgIG5vdCgtbW96KSxcbiAgICBub3QoLXdlYmtpdCksXG4gICAgbm90KC1vKSxcbiAgICBub3QoLW1zKSxcbiAgICAta2h0bWwsXG4gICAgb2ZmaWNpYWxcbiAgKTtcbn1cbiIsIi8vIE92ZXJyaWRlIGAkZGVmYXVsdC1iYWNrZ3JvdW5kLW9yaWdpbmAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LlxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbiRkZWZhdWx0LWJhY2tncm91bmQtb3JpZ2luOiBjb250ZW50LWJveCAhZGVmYXVsdDtcblxuLy8gUG9zaXRpb24gdGhlIGJhY2tncm91bmQgb2ZmIHRoZSBlZGdlIG9mIHRoZSBwYWRkaW5nLCBib3JkZXIgb3IgY29udGVudFxuLy9cbi8vICogUG9zc2libGUgdmFsdWVzOlxuLy8gICAqIGBwYWRkaW5nLWJveGBcbi8vICAgKiBgYm9yZGVyLWJveGBcbi8vICAgKiBgY29udGVudC1ib3hgXG4vLyAqIGJyb3dzZXIgZGVmYXVsdHMgdG8gYHBhZGRpbmctYm94YFxuLy8gKiBtaXhpbiBkZWZhdWx0cyB0byBgY29udGVudC1ib3hgXG5cblxuQG1peGluIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW46ICRkZWZhdWx0LWJhY2tncm91bmQtb3JpZ2luKSB7XG4gICRvcmlnaW46IHVucXVvdGUoJG9yaWdpbik7XG4gIC8vIHdlYmtpdCBhbmQgbW96aWxsYSB1c2UgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgW2JvcmRlciB8IHBhZGRpbmcgfCBjb250ZW50XVxuICAkZGVwcmVjYXRlZDogJG9yaWdpbjtcbiAgQGlmICRvcmlnaW4gPT0gcGFkZGluZy1ib3ggeyAkZGVwcmVjYXRlZDogcGFkZGluZzsgfVxuICBAaWYgJG9yaWdpbiA9PSBib3JkZXItYm94ICB7ICRkZXByZWNhdGVkOiBib3JkZXI7ICB9XG4gIEBpZiAkb3JpZ2luID09IGNvbnRlbnQtYm94IHsgJGRlcHJlY2F0ZWQ6IGNvbnRlbnQ7IH1cblxuICAvLyBTdXBwb3J0IGZvciB3ZWJraXQgYW5kIG1vemlsbGEncyB1c2Ugb2YgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgZm9ybVxuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1vcmlnaW4sICRkZXByZWNhdGVkLFxuICAgIC1tb3osXG4gICAgLXdlYmtpdCxcbiAgICBub3QoLW8pLFxuICAgIG5vdCgtbXMpLFxuICAgIG5vdCgta2h0bWwpLFxuICAgIG5vdCBvZmZpY2lhbFxuICApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1vcmlnaW4sICRvcmlnaW4sXG4gICAgbm90KC1tb3opLFxuICAgIG5vdCgtd2Via2l0KSxcbiAgICAtbyxcbiAgICAtbXMsXG4gICAgLWtodG1sLFxuICAgIG9mZmljaWFsXG4gICk7XG59XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENyb3NzLWJyb3dzZXIgc3VwcG9ydCBmb3IgQGZvbnQtZmFjZS4gU3VwcG9ydHMgSUUsIEdlY2tvLCBXZWJraXQsIE9wZXJhLlxuLy9cbi8vICogJG5hbWUgaXMgcmVxdWlyZWQsIGFyYml0cmFyeSwgYW5kIHdoYXQgeW91IHdpbGwgdXNlIGluIGZvbnQgc3RhY2tzLlxuLy8gKiAkZm9udC1maWxlcyBpcyByZXF1aXJlZCB1c2luZyBmb250LWZpbGVzKCdyZWxhdGl2ZS9sb2NhdGlvbicsICdmb3JtYXQnKS5cbi8vICAgZm9yIGJlc3QgcmVzdWx0cyB1c2UgdGhpcyBvcmRlcjogd29mZiwgb3BlbnR5cGUvdHJ1ZXR5cGUsIHN2Z1xuLy8gKiAkZW90IGlzIHJlcXVpcmVkIGJ5IElFLCBhbmQgaXMgYSByZWxhdGl2ZSBsb2NhdGlvbiBvZiB0aGUgZW90IGZpbGUuXG4vLyAqICR3ZWlnaHQgc2hvd3MgaWYgdGhlIGZvbnQgaXMgYm9sZCwgZGVmYXVsdHMgdG8gbm9ybWFsXG4vLyAqICRzdHlsZSBkZWZhdWx0cyB0byBub3JtYWwsIG1pZ2h0IGJlIGFsc28gaXRhbGljXG4vLyAqIEZvciBhbmRyb2lkIDIuMiBDb21wYXRpYmxpdHksIHBsZWFzZSBlbnN1cmUgdGhhdCB5b3VyIHdlYiBwYWdlIGhhc1xuLy8gICBhIG1ldGEgdmlld3BvcnQgdGFnLlxuLy8gKiBUbyBzdXBwb3J0IGlPUyA8IDQuMiwgYW4gU1ZHIGZpbGUgbXVzdCBiZSBwcm92aWRlZFxuLy9cbi8vIElmIHlvdSBuZWVkIHRvIGdlbmVyYXRlIG90aGVyIGZvcm1hdHMgY2hlY2sgb3V0IHRoZSBGb250IFNxdWlycmVsXG4vLyBbZm9udCBnZW5lcmF0b3JdKGh0dHA6Ly93d3cuZm9udHNxdWlycmVsLmNvbS9mb250ZmFjZS9nZW5lcmF0b3IpXG4vL1xuXG4vLyBJbiBvcmRlciB0byByZWZlciB0byBhIHNwZWNpZmljIHN0eWxlIG9mIHRoZSBmb250IGluIHlvdXIgc3R5bGVzaGVldHMgYXMgXG4vLyBlLmcuIFwiZm9udC1zdHlsZTogaXRhbGljO1wiLCAgeW91IG1heSBhZGQgYSBjb3VwbGUgb2YgQGZvbnQtZmFjZSBpbmNsdWRlc1xuLy8gY29udGFpbmluZyB0aGUgcmVzcGVjdGl2ZSBmb250IGZpbGVzIGZvciBlYWNoIHN0eWxlIGFuZCBzcGVjeWluZ1xuLy8gcmVzcGVjdGl2ZSB0aGUgJHN0eWxlIHBhcmFtZXRlci5cblxuLy8gT3JkZXIgb2YgdGhlIGluY2x1ZGVzIG1hdHRlcnMsIGFuZCBpdCBpczogbm9ybWFsLCBib2xkLCBpdGFsaWMsIGJvbGQraXRhbGljLlxuXG5AbWl4aW4gZm9udC1mYWNlKFxuICAkbmFtZSwgXG4gICRmb250LWZpbGVzLCBcbiAgJGVvdDogZmFsc2UsXG4gICR3ZWlnaHQ6IGZhbHNlLFxuICAkc3R5bGU6IGZhbHNlXG4pIHtcbiAgJGllZm9udDogdW5xdW90ZShcIiN7JGVvdH0/I2llZml4XCIpO1xuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogcXVvdGUoJG5hbWUpO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogZm9udC11cmwoJGVvdCk7XG4gICAgICAkZm9udC1maWxlczogZm9udC11cmwoJGllZm9udCkgdW5xdW90ZShcImZvcm1hdCgnZW90JylcIiksICRmb250LWZpbGVzOyBcbiAgICB9XG4gICAgc3JjOiAkZm9udC1maWxlcztcbiAgICBAaWYgJHdlaWdodCB7XG4gICAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICB9XG4gICAgQGlmICRzdHlsZSB7XG4gICAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgfVxuICB9XG59XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIEBkb2Mgb2ZmXG4vLyBOb3RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNhZmFyaSwgQ2hyb21lLCBhbmQgRmlyZWZveCBhbGwgc3VwcG9ydCAzRCB0cmFuc2Zvcm1zLiBIb3dldmVyLFxuLy8gb25seSBpbiB0aGUgbW9zdCByZWNlbnQgYnVpbGRzLiBZb3Ugc2hvdWxkIGFsc28gcHJvdmlkZSBmYWxsYmFjayAyZCBzdXBwb3J0IGZvclxuLy8gT3BlcmEgYW5kIElFLiBJRTEwIGlzIHNsYXRlZCB0byBoYXZlIDNkIGVuYWJsZWQsIGJ1dCBpcyBjdXJyZW50bHkgdW5yZWxlYXNlZC5cbi8vIFRvIG1ha2UgdGhhdCBlYXN5LCBhbGwgMkQgdHJhbnNmb3JtcyBpbmNsdWRlIGFuIGJyb3dzZXItdGFyZ2V0aW5nIHRvZ2dsZSAoJG9ubHkzZClcbi8vIHRvIHN3aXRjaCBiZXR3ZWVuIHRoZSB0d28gc3VwcG9ydCBsaXN0cy4gVGhlIHRvZ2dsZSBkZWZhdWx0cyB0byAnZmFsc2UnICgyRCksXG4vLyBhbmQgYWxzbyBhY2NlcHRzICd0cnVlJyAoM0QpLiBDdXJyZW50bHkgdGhlIGxpc3RzIGFyZSBhcyBmb2xsb3dzOlxuLy8gMkQ6IE1vemlsbGEsIFdlYmtpdCwgT3BlcmEsIE9mZmljaWFsXG4vLyAzRDogV2Via2l0LCBGaXJlZm94LlxuXG4vLyBBdmFpbGFibGUgVHJhbnNmb3JtcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gU2NhbGUgKDJkIGFuZCAzZClcbi8vIC0gUm90YXRlICgyZCBhbmQgM2QpXG4vLyAtIFRyYW5zbGF0ZSAoMmQgYW5kIDNkKVxuLy8gLSBTa2V3ICgyZCBvbmx5KVxuXG4vLyBUcmFuc2Zvcm0gUGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gVHJhbnNmb3JtIE9yaWdpbiAoMmQgYW5kIDNkKVxuLy8gLSBQZXJzcGVjdGl2ZSAoM2QpXG4vLyAtIFBlcnNwZWN0aXZlIE9yaWdpbiAoM2QpXG4vLyAtIFRyYW5zZm9ybSBTdHlsZSAoM2QpXG4vLyAtIEJhY2tmYWNlIFZpc2liaWxpdHkgKDNkKVxuXG4vLyBNaXhpbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHRyYW5zZm9ybS1vcmlnaW5cbi8vICAtIHNob3J0Y3V0czogIHRyYW5zZm9ybS1vcmlnaW4yZCwgdHJhbnNmb3JtLW9yaWdpbjNkXG4vLyAgLSBoZWxwZXJzOiAgICBhcHBseS1vcmlnaW5cbi8vIHRyYW5zZm9ybVxuLy8gIC0gc2hvcnRjdXRzOiAgdHJhbnNmb3JtMmQsIHRyYW5zZm9ybTNkXG4vLyAgLSBoZWxwZXJzOiAgICBzaW1wbGUtdHJhbnNmb3JtLCBjcmVhdGUtdHJhbnNmb3JtXG4vLyBwZXJzcGVjdGl2ZVxuLy8gIC0gaGVscGVyczogICAgcGVyc3BlY3RpdmUtb3JpZ2luXG4vLyB0cmFuc2Zvcm0tc3R5bGVcbi8vIGJhY2tmYWNlLXZpc2liaWxpdHlcbi8vIHNjYWxlXG4vLyAgLSBzaG9ydGN1dHM6ICBzY2FsZVgsIHNjYWxlWSwgc2NhbGVaLCBzY2FsZTNkXG4vLyByb3RhdGVcbi8vICAtIHNob3J0Y3V0czogIHJvdGF0ZVgsIHJvdGF0ZVksIHJvdGF0ZTNkXG4vLyB0cmFuc2xhdGVcbi8vICAtIHNob3J0Y3V0czogIHRyYW5zbGF0ZVgsIHRyYW5zbGF0ZVksIHRyYW5zbGF0ZVosIHRyYW5zbGF0ZTNkXG4vLyBza2V3XG4vLyAgLSBzaG9ydGN1dHM6ICBza2V3WCwgc2tld1lcblxuLy8gRGVmYXVsdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFRoZSBkZWZhdWx0IHgtb3JpZ2luIGZvciB0cmFuc2Zvcm1zXG4kZGVmYXVsdC1vcmlnaW4teCAgICA6IDUwJSAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHktb3JpZ2luIGZvciB0cmFuc2Zvcm1zXG4kZGVmYXVsdC1vcmlnaW4teSAgICA6IDUwJSAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHotb3JpZ2luIGZvciB0cmFuc2Zvcm1zXG4kZGVmYXVsdC1vcmlnaW4teiAgICA6IDUwJSAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcblxuXG4vLyBUaGUgZGVmYXVsdCB4LW11bHRpcGxpZXIgZm9yIHNjYWxpbmdcbiRkZWZhdWx0LXNjYWxlLXggICAgIDogMS4yNSAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgeS1tdWx0aXBsaWVyIGZvciBzY2FsaW5nXG4kZGVmYXVsdC1zY2FsZS15ICAgICA6ICRkZWZhdWx0LXNjYWxlLXggICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHotbXVsdGlwbGllciBmb3Igc2NhbGluZ1xuJGRlZmF1bHQtc2NhbGUteiAgICAgOiAkZGVmYXVsdC1zY2FsZS14ICAgICAgIWRlZmF1bHQ7XG5cblxuLy8gVGhlIGRlZmF1bHQgYW5nbGUgZm9yIHJvdGF0aW9uc1xuJGRlZmF1bHQtcm90YXRlICAgICAgOiA0NWRlZyAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG5cblxuLy8gVGhlIGRlZmF1bHQgeC12ZWN0b3IgZm9yIHRoZSBheGlzIG9mIDNkIHJvdGF0aW9uc1xuJGRlZmF1bHQtdmVjdG9yLXggICAgOiAxICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBUaGUgZGVmYXVsdCB5LXZlY3RvciBmb3IgdGhlIGF4aXMgb2YgM2Qgcm90YXRpb25zXG4kZGVmYXVsdC12ZWN0b3IteSAgICA6IDEgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHotdmVjdG9yIGZvciB0aGUgYXhpcyBvZiAzZCByb3RhdGlvbnNcbiRkZWZhdWx0LXZlY3Rvci16ICAgIDogMSAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG5cbi8vIFRoZSBkZWZhdWx0IHgtbGVuZ3RoIGZvciB0cmFuc2xhdGlvbnNcbiRkZWZhdWx0LXRyYW5zbGF0ZS14IDogMWVtICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgeS1sZW5ndGggZm9yIHRyYW5zbGF0aW9uc1xuJGRlZmF1bHQtdHJhbnNsYXRlLXkgOiAkZGVmYXVsdC10cmFuc2xhdGUteCAgIWRlZmF1bHQ7XG4vLyBUaGUgZGVmYXVsdCB6LWxlbmd0aCBmb3IgdHJhbnNsYXRpb25zXG4kZGVmYXVsdC10cmFuc2xhdGUteiA6ICRkZWZhdWx0LXRyYW5zbGF0ZS14ICAhZGVmYXVsdDtcblxuXG4vLyBUaGUgZGVmYXVsdCB4LWFuZ2xlIGZvciBza2V3aW5nXG4kZGVmYXVsdC1za2V3LXggICAgICA6IDVkZWcgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHktYW5nbGUgZm9yIHNrZXdpbmdcbiRkZWZhdWx0LXNrZXcteSAgICAgIDogNWRlZyAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG5cbi8vICoqVHJhbnNmb3JtLW9yaWdpbioqXG4vLyBUcmFuc2Zvcm0tb3JpZ2luIHNlbnQgYXMgYSBjb21wbGV0ZSBzdHJpbmdcbi8vXG4vLyAgICAgQGluY2x1ZGUgYXBwbHktb3JpZ2luKCBvcmlnaW4gWywgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSAnb3JpZ2luJyBpcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IGNvbnRhaW5pbmcgMS0zICh4L3kveikgY29vcmRpbmF0ZXNcbi8vIGluIHBlcmNlbnRhZ2VzLCBhYnNvbHV0ZSAocHgsIGNtLCBpbiwgZW0gZXRjLi4pIG9yIHJlbGF0aXZlXG4vLyAobGVmdCwgdG9wLCByaWdodCwgYm90dG9tLCBjZW50ZXIpIHVuaXRzXG4vL1xuLy8gQHBhcmFtIG9ubHkzZCBTZXQgdGhpcyB0byB0cnVlIHRvIG9ubHkgYXBwbHkgdGhpc1xuLy8gbWl4aW4gd2hlcmUgYnJvd3NlcnMgaGF2ZSAzRCBzdXBwb3J0LlxuQG1peGluIGFwcGx5LW9yaWdpbigkb3JpZ2luLCAkb25seTNkKSB7XG4gICRvbmx5M2Q6ICRvbmx5M2Qgb3IgLWNvbXBhc3MtbGlzdC1zaXplKC1jb21wYXNzLWxpc3QoJG9yaWdpbikpID4gMjtcbiAgQGlmICRvbmx5M2Qge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0tb3JpZ2luLCAkb3JpZ2luLFxuICAgICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICAgKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybS1vcmlnaW4sICRvcmlnaW4sXG4gICAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgICApO1xuICB9XG59XG5cbi8vIFRyYW5zZm9ybS1vcmlnaW4gc2VudCBhcyBpbmRpdmlkdWFsIGFyZ3VtZW50czpcbi8vXG4vLyAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbiggWyBvcmlnaW4teCwgb3JpZ2luLXksIG9yaWdpbi16LCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlIHRoZSAzICdvcmlnaW4tJyBhcmd1bWVudHMgcmVwcmVzZW50IHgveS96IGNvb3JkaW5hdGVzLlxuLy9cbi8vICoqTk9URToqKiBzZXR0aW5nIHogY29vcmRpbmF0ZXMgdHJpZ2dlcnMgM0Qgc3VwcG9ydCBsaXN0LCBsZWF2ZSBmYWxzZSBmb3IgMkQgc3VwcG9ydFxuQG1peGluIHRyYW5zZm9ybS1vcmlnaW4oXG4gICRvcmlnaW4teDogJGRlZmF1bHQtb3JpZ2luLXgsXG4gICRvcmlnaW4teTogJGRlZmF1bHQtb3JpZ2luLXksXG4gICRvcmlnaW4tejogZmFsc2UsXG4gICRvbmx5M2Q6ICAgaWYoJG9yaWdpbi16LCB0cnVlLCBmYWxzZSlcbikge1xuICAkb3JpZ2luOiB1bnF1b3RlKCcnKTtcbiAgQGlmICRvcmlnaW4teCBvciAkb3JpZ2luLXkgb3IgJG9yaWdpbi16IHtcbiAgICBAaWYgJG9yaWdpbi14IHsgJG9yaWdpbjogJG9yaWdpbi14OyB9IEBlbHNlIHsgJG9yaWdpbjogNTAlOyB9XG4gICAgQGlmICRvcmlnaW4teSB7ICRvcmlnaW46ICRvcmlnaW4gJG9yaWdpbi15OyB9IEBlbHNlIHsgQGlmICRvcmlnaW4teiB7ICRvcmlnaW46ICRvcmlnaW4gNTAlOyB9fVxuICAgIEBpZiAkb3JpZ2luLXogeyAkb3JpZ2luOiAkb3JpZ2luICRvcmlnaW4tejsgfVxuICAgIEBpbmNsdWRlIGFwcGx5LW9yaWdpbigkb3JpZ2luLCAkb25seTNkKTtcbiAgfVxufVxuXG5cbi8vIFRyYW5zZm9ybSBzZW50IGFzIGEgY29tcGxldGUgc3RyaW5nOlxuLy9cbi8vICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oIHRyYW5zZm9ybXMgWywgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSAndHJhbnNmb3JtcycgaXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBhbGwgdGhlIHRyYW5zZm9ybXMgdG8gYmUgYXBwbGllZC5cbkBtaXhpbiB0cmFuc2Zvcm0oXG4gICR0cmFuc2Zvcm0sXG4gICRvbmx5M2Q6IGZhbHNlXG4pIHtcbiAgQGlmICRvbmx5M2Qge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0sICR0cmFuc2Zvcm0sXG4gICAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNmb3JtLCAkdHJhbnNmb3JtLFxuICAgICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICAgKTtcbiAgfVxufVxuXG4vLyBTaG9ydGN1dCB0byB0YXJnZXQgYWxsIGJyb3dzZXJzIHdpdGggMkQgdHJhbnNmb3JtIHN1cHBvcnRcbkBtaXhpbiB0cmFuc2Zvcm0yZCgkdHJhbnMpIHtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgZmFsc2UpO1xufVxuXG4vLyBTaG9ydGN1dCB0byB0YXJnZXQgb25seSBicm93c2VycyB3aXRoIDNEIHRyYW5zZm9ybSBzdXBwb3J0XG5AbWl4aW4gdHJhbnNmb3JtM2QoJHRyYW5zKSB7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsIHRydWUpO1xufVxuXG4vLyBAZG9jIG9mZlxuLy8gM0QgUGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFNldCB0aGUgcGVyc3BlY3RpdmUgb2YgM0QgdHJhbnNmb3JtcyBvbiB0aGUgY2hpbGRyZW4gb2YgYW4gZWxlbWVudDpcbi8vXG4vLyAgICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlKCBwZXJzcGVjdGl2ZSApXG4vL1xuLy8gd2hlcmUgJ3BlcnNwZWN0aXZlJyBpcyBhIHVuaXRsZXNzIG51bWJlciByZXByZXNlbnRpbmcgdGhlIGRlcHRoIG9mIHRoZVxuLy8gei1heGlzLiBUaGUgaGlnaGVyIHRoZSBwZXJzcGVjdGl2ZSwgdGhlIG1vcmUgZXhhZ2dlcmF0ZWQgdGhlIGZvcmVzaG9ydGVuaW5nLlxuLy8gdmFsdWVzIGZyb20gNTAwIHRvIDEwMDAgYXJlIG1vcmUtb3ItbGVzcyBcIm5vcm1hbFwiIC0gYSBnb29kIHN0YXJ0aW5nLXBvaW50LlxuQG1peGluIHBlcnNwZWN0aXZlKCRwKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChwZXJzcGVjdGl2ZSwgJHAsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFNldCB0aGUgb3JpZ2luIHBvc2l0aW9uIGZvciB0aGUgcGVyc3BlY3RpdmVcbi8vXG4vLyAgICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlLW9yaWdpbihvcmlnaW4teCBbb3JpZ2luLXldKVxuLy9cbi8vIHdoZXJlIHRoZSB0d28gYXJndW1lbnRzIHJlcHJlc2VudCB4L3kgY29vcmRpbmF0ZXNcbkBtaXhpbiBwZXJzcGVjdGl2ZS1vcmlnaW4oJG9yaWdpbjogNTAlKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChwZXJzcGVjdGl2ZS1vcmlnaW4sICRvcmlnaW4sXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIERldGVybWluZSB3aGV0aGVyIGEgM0Qgb2JqZWN0cyBjaGlsZHJlbiBhbHNvIGxpdmUgaW4gdGhlIGdpdmVuIDNEIHNwYWNlXG4vL1xuLy8gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tc3R5bGUoIFsgc3R5bGUgXSApXG4vL1xuLy8gd2hlcmUgYHN0eWxlYCBjYW4gYmUgZWl0aGVyIGBmbGF0YCBvciBgcHJlc2VydmUtM2RgLlxuLy8gQnJvd3NlcnMgZGVmYXVsdCB0byBgZmxhdGAsIG1peGluIGRlZmF1bHRzIHRvIGBwcmVzZXJ2ZS0zZGAuXG5AbWl4aW4gdHJhbnNmb3JtLXN0eWxlKCRzdHlsZTogcHJlc2VydmUtM2QpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybS1zdHlsZSwgJHN0eWxlLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBEZXRlcm1pbmUgdGhlIHZpc2liaWxpdHkgb2YgYW4gZWxlbWVudCB3aGVuIGl0J3MgYmFjayBpcyB0dXJuZWRcbi8vXG4vLyAgICAgQGluY2x1ZGUgYmFja2ZhY2UtdmlzaWJpbGl0eSggWyB2aXNpYmlsaXR5IF0gKVxuLy9cbi8vIHdoZXJlIGB2aXNpYmlsaXR5YCBjYW4gYmUgZWl0aGVyIGB2aXNpYmxlYCBvciBgaGlkZGVuYC5cbi8vIEJyb3dzZXJzIGRlZmF1bHQgdG8gdmlzaWJsZSwgbWl4aW4gZGVmYXVsdHMgdG8gaGlkZGVuXG5AbWl4aW4gYmFja2ZhY2UtdmlzaWJpbGl0eSgkdmlzaWJpbGl0eTogaGlkZGVuKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZmFjZS12aXNpYmlsaXR5LCAkdmlzaWJpbGl0eSxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gQGRvYyBvZmZcbi8vIFRyYW5zZm9ybSBQYXJ0aWFscyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGhlc2Ugd29yayB3ZWxsIG9uIHRoZWlyIG93biwgYnV0IHRoZXkgZG9uJ3QgYWRkIHRvIGVhY2ggb3RoZXIsIHRoZXkgb3ZlcnJpZGUuXG4vLyBVc2UgYWxvbmcgd2l0aCB0cmFuc2Zvcm0gcGFyYW1ldGVyIG1peGlucyB0byBhZGp1c3Qgb3JpZ2luLCBwZXJzcGVjdGl2ZSBhbmQgc3R5bGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cbi8vIFNjYWxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBTY2FsZSBhbiBvYmplY3QgYWxvbmcgdGhlIHggYW5kIHkgYXhpczpcbi8vXG4vLyAgICAgIEBpbmNsdWRlIHNjYWxlKCBbIHNjYWxlLXgsIHNjYWxlLXksIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlIHRoZSAnc2NhbGUtJyBhcmd1bWVudHMgYXJlIHVuaXRsZXNzIG11bHRpcGxpZXJzIG9mIHRoZSB4IGFuZCB5IGRpbWVuc2lvbnNcbi8vIGFuZCBwZXJzcGVjdGl2ZSwgd2hpY2ggd29ya3MgdGhlIHNhbWUgYXMgdGhlIHN0YW5kLWFsb25lIHBlcnNwZWN0aXZlIHByb3BlcnR5L21peGluXG4vLyBidXQgYXBwbGllcyB0byB0aGUgaW5kaXZpZHVhbCBlbGVtZW50IChtdWx0aXBsaWVkIHdpdGggYW55IHBhcmVudCBwZXJzcGVjdGl2ZSlcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGUoXG4gICRzY2FsZS14OiAgICAgJGRlZmF1bHQtc2NhbGUteCxcbiAgJHNjYWxlLXk6ICAgICAkc2NhbGUteCxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gICR0cmFuczogc2NhbGUoJHNjYWxlLXgsICRzY2FsZS15KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIFNjYWxlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZVgoIFsgc2NhbGUteCwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlWChcbiAgJHNjYWxlOiAgICAgICAkZGVmYXVsdC1zY2FsZS14LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBzY2FsZVgoJHNjYWxlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIFNjYWxlIGFuIG9iamVjdCBhbG9uZyB0aGUgeSBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZVkoIFsgc2NhbGUteSwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlWShcbiAgJHNjYWxlOiAgICAgICAkZGVmYXVsdC1zY2FsZS15LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBzY2FsZVkoJHNjYWxlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIFNjYWxlIGFuIG9iamVjdCBhbG9uZyB0aGUgeiBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZVooIFsgc2NhbGUteiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlWihcbiAgJHNjYWxlOiAkZGVmYXVsdC1zY2FsZS16LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBzY2FsZVooJHNjYWxlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTtcbn1cblxuLy8gU2NhbGUgYW5kIG9iamVjdCBhbG9uZyBhbGwgdGhyZWUgYXhpc1xuLy8gQGluY2x1ZGUgc2NhbGUzZCggWyBzY2FsZS14LCBzY2FsZS15LCBzY2FsZS16LCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGUzZChcbiAgJHNjYWxlLXg6ICAgICAkZGVmYXVsdC1zY2FsZS14LFxuICAkc2NhbGUteTogICAgICRkZWZhdWx0LXNjYWxlLXksXG4gICRzY2FsZS16OiAgICAgJGRlZmF1bHQtc2NhbGUteixcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZVxuKSB7XG4gICR0cmFuczogc2NhbGUzZCgkc2NhbGUteCwgJHNjYWxlLXksICRzY2FsZS16KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTtcbn1cblxuLy8gQGRvYyBvZmZcbi8vIFJvdGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBSb3RhdGUgYW4gb2JqZWN0IGFyb3VuZCB0aGUgeiBheGlzICAoMkQpXG4vLyBAaW5jbHVkZSByb3RhdGUoIFsgcm90YXRpb24sIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy8gd2hlcmUgJ3JvdGF0aW9uJyBpcyBhbiBhbmdsZSBzZXQgaW4gZGVncmVlcyAoZGVnKSBvciByYWRpYW4gKHJhZCkgdW5pdHNcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlKFxuICAkcm90YXRlOiAgICAgICRkZWZhdWx0LXJvdGF0ZSxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gICR0cmFuczogcm90YXRlKCRyb3RhdGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gQSBsb25nY3V0IGZvciAncm90YXRlJyBpbiBjYXNlIHlvdSBmb3JnZXQgdGhhdCAneicgaXMgaW1wbGllZFxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGVaKFxuICAkcm90YXRlOiAgICAgICRkZWZhdWx0LXJvdGF0ZSxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gIEBpbmNsdWRlIHJvdGF0ZSgkcm90YXRlLCAkcGVyc3BlY3RpdmUsICRvbmx5M2QpO1xufVxuXG4vLyBSb3RhdGUgYW4gb2JqZWN0IGFyb3VuZCB0aGUgeCBheGlzICgzRClcbi8vIEBpbmNsdWRlIHJvdGF0ZVgoIFsgcm90YXRpb24sIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGVYKFxuICAkcm90YXRlOiAkZGVmYXVsdC1yb3RhdGUsXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHJvdGF0ZVgoJHJvdGF0ZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7XG59XG5cbi8vIFJvdGF0ZSBhbiBvYmplY3QgYXJvdW5kIHRoZSB5IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgcm90YXRlKCBbIHJvdGF0aW9uLCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlWShcbiAgJHJvdGF0ZTogJGRlZmF1bHQtcm90YXRlLFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiByb3RhdGVZKCRyb3RhdGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBSb3RhdGUgYW4gb2JqZWN0IGFyb3VuZCBhbiBhcmJpdHJhcnkgYXhpcyAoM0QpXG4vLyBAaW5jbHVkZSByb3RhdGUoIFsgdmVjdG9yLXgsIHZlY3Rvci15LCB2ZWN0b3Iteiwgcm90YXRpb24sIHBlcnNwZWN0aXZlIF0gKVxuLy8gd2hlcmUgdGhlICd2ZWN0b3ItJyBhcmd1bWVudHMgYWNjZXB0IHVuaXRsZXNzIG51bWJlcnMuXG4vLyBUaGVzZSBudW1iZXJzIGFyZSBub3QgaW1wb3J0YW50IG9uIHRoZWlyIG93biwgYnV0IGluIHJlbGF0aW9uIHRvIG9uZSBhbm90aGVyXG4vLyBjcmVhdGluZyBhbiBheGlzIGZyb20geW91ciB0cmFuc2Zvcm0tb3JpZ2luLCBhbG9uZyB0aGUgYXhpcyBvZiBYeCA9IFl5ID0gWnouXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHJvdGF0ZTNkKFxuICAkdmVjdG9yLXg6ICRkZWZhdWx0LXZlY3Rvci14LFxuICAkdmVjdG9yLXk6ICRkZWZhdWx0LXZlY3Rvci15LFxuICAkdmVjdG9yLXo6ICRkZWZhdWx0LXZlY3Rvci16LFxuICAkcm90YXRlOiAkZGVmYXVsdC1yb3RhdGUsXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHJvdGF0ZTNkKCR2ZWN0b3IteCwgJHZlY3Rvci15LCAkdmVjdG9yLXosICRyb3RhdGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBAZG9jIG9mZlxuLy8gVHJhbnNsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB4IG9yIHkgYXhpcyAoMkQpXG4vLyBAaW5jbHVkZSB0cmFuc2xhdGUoIFsgdHJhbnNsYXRlLXgsIHRyYW5zbGF0ZS15LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vIHdoZXJlIHRoZSAndHJhbnNsYXRlLScgYXJndW1lbnRzIGFjY2VwdCBhbnkgZGlzdGFuY2UgaW4gcGVyY2VudGFnZXMgb3IgYWJzb2x1dGUgKHB4LCBjbSwgaW4sIGVtIGV0Yy4uKSB1bml0cy5cbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlKFxuICAkdHJhbnNsYXRlLXg6ICRkZWZhdWx0LXRyYW5zbGF0ZS14LFxuICAkdHJhbnNsYXRlLXk6ICRkZWZhdWx0LXRyYW5zbGF0ZS15LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGUoJHRyYW5zbGF0ZS14LCAkdHJhbnNsYXRlLXkpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gTW92ZSBhbiBvYmplY3QgYWxvbmcgdGhlIHggYXhpcyAoMkQpXG4vLyBAaW5jbHVkZSB0cmFuc2xhdGUoIFsgdHJhbnNsYXRlLXgsIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGVYKFxuICAkdHJhbnMteDogICAgICRkZWZhdWx0LXRyYW5zbGF0ZS14LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGVYKCR0cmFucy14KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB5IGF4aXMgKDJEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS15LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlWShcbiAgJHRyYW5zLXk6ICAgICAkZGVmYXVsdC10cmFuc2xhdGUteSxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gICR0cmFuczogdHJhbnNsYXRlWSgkdHJhbnMteSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeiBheGlzICgzRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHRyYW5zbGF0ZVooXG4gICR0cmFucy16OiAgICAgJGRlZmF1bHQtdHJhbnNsYXRlLXosXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHRyYW5zbGF0ZVooJHRyYW5zLXopO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCwgeSBhbmQgeiBheGlzICgzRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteCwgdHJhbnNsYXRlLXksIHRyYW5zbGF0ZS16LCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlM2QoXG4gICR0cmFuc2xhdGUteDogJGRlZmF1bHQtdHJhbnNsYXRlLXgsXG4gICR0cmFuc2xhdGUteTogJGRlZmF1bHQtdHJhbnNsYXRlLXksXG4gICR0cmFuc2xhdGUtejogJGRlZmF1bHQtdHJhbnNsYXRlLXosXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHRyYW5zbGF0ZTNkKCR0cmFuc2xhdGUteCwgJHRyYW5zbGF0ZS15LCAkdHJhbnNsYXRlLXopO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBAZG9jIG9mZlxuLy8gU2tldyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFNrZXcgYW4gZWxlbWVudDpcbi8vXG4vLyAgICAgQGluY2x1ZGUgc2tldyggWyBza2V3LXgsIHNrZXcteSwgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSB0aGUgJ3NrZXctJyBhcmd1bWVudHMgYWNjZXB0IGNzcyBhbmdsZXMgaW4gZGVncmVlcyAoZGVnKSBvciByYWRpYW4gKHJhZCkgdW5pdHMuXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNrZXcoXG4gICRza2V3LXg6ICRkZWZhdWx0LXNrZXcteCxcbiAgJHNrZXcteTogJGRlZmF1bHQtc2tldy15LFxuICAkb25seTNkOiBmYWxzZVxuKSB7XG4gICR0cmFuczogc2tldygkc2tldy14LCAkc2tldy15KTtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIFNrZXcgYW4gZWxlbWVudCBhbG9uZyB0aGUgeCBheGl6XG4vL1xuLy8gICAgIEBpbmNsdWRlIHNrZXcoIFsgc2tldy14LCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBza2V3WChcbiAgJHNrZXcteDogJGRlZmF1bHQtc2tldy14LFxuICAkb25seTNkOiBmYWxzZVxuKSB7XG4gICR0cmFuczogc2tld1goJHNrZXcteCk7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG4vLyBTa2V3IGFuIGVsZW1lbnQgYWxvbmcgdGhlIHkgYXhpc1xuLy9cbi8vICAgICBAaW5jbHVkZSBza2V3KCBbIHNrZXcteSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2tld1koXG4gICRza2V3LXk6ICRkZWZhdWx0LXNrZXcteSxcbiAgJG9ubHkzZDogZmFsc2Vcbikge1xuICAkdHJhbnM6IHNrZXdZKCRza2V3LXkpO1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuXG4vLyBGdWxsIHRyYW5zZm9ybSBtaXhpbnNcbi8vIEZvciBzZXR0aW5ncyBhbnkgY29tYmluYXRpb24gb2YgdHJhbnNmb3JtcyBhcyBhcmd1bWVudHNcbi8vIFRoZXNlIGFyZSBjb21wbGV4IGFuZCBub3QgaGlnaGx5IHJlY29tbWVuZGVkIGZvciBkYWlseSB1c2UuIFRoZXkgYXJlIG1haW5seVxuLy8gaGVyZSBmb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBwdXJwb3Nlcy5cbi8vXG4vLyAqIHRoZXkgaW5jbHVkZSBvcmlnaW4gYWRqdXN0bWVudHNcbi8vICogc2NhbGUgdGFrZXMgYSBtdWx0aXBsaWVyICh1bml0bGVzcyksIHJvdGF0ZSBhbmQgc2tldyB0YWtlIGRlZ3JlZXMgKGRlZylcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gY3JlYXRlLXRyYW5zZm9ybShcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJHNjYWxlLXg6ICAgICBmYWxzZSxcbiAgJHNjYWxlLXk6ICAgICBmYWxzZSxcbiAgJHNjYWxlLXo6ICAgICBmYWxzZSxcbiAgJHJvdGF0ZS14OiAgICBmYWxzZSxcbiAgJHJvdGF0ZS15OiAgICBmYWxzZSxcbiAgJHJvdGF0ZS16OiAgICBmYWxzZSxcbiAgJHJvdGF0ZTNkOiAgICBmYWxzZSxcbiAgJHRyYW5zLXg6ICAgICBmYWxzZSxcbiAgJHRyYW5zLXk6ICAgICBmYWxzZSxcbiAgJHRyYW5zLXo6ICAgICBmYWxzZSxcbiAgJHNrZXcteDogICAgICBmYWxzZSxcbiAgJHNrZXcteTogICAgICBmYWxzZSxcbiAgJG9yaWdpbi14OiAgICBmYWxzZSxcbiAgJG9yaWdpbi15OiAgICBmYWxzZSxcbiAgJG9yaWdpbi16OiAgICBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gICR0cmFuczogdW5xdW90ZShcIlwiKTtcblxuICAvLyBwZXJzcGVjdGl2ZVxuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpIDsgfVxuXG4gIC8vIHNjYWxlXG4gIEBpZiAkc2NhbGUteCBhbmQgJHNjYWxlLXkge1xuICAgIEBpZiAkc2NhbGUteiB7ICR0cmFuczogJHRyYW5zIHNjYWxlM2QoJHNjYWxlLXgsICRzY2FsZS15LCAkc2NhbGUteik7IH1cbiAgICBAZWxzZSB7ICR0cmFuczogJHRyYW5zIHNjYWxlKCRzY2FsZS14LCAkc2NhbGUteSk7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmICRzY2FsZS14IHsgJHRyYW5zOiAkdHJhbnMgc2NhbGVYKCRzY2FsZS14KTsgfVxuICAgIEBpZiAkc2NhbGUteSB7ICR0cmFuczogJHRyYW5zIHNjYWxlWSgkc2NhbGUteSk7IH1cbiAgICBAaWYgJHNjYWxlLXogeyAkdHJhbnM6ICR0cmFucyBzY2FsZVooJHNjYWxlLXopOyB9XG4gIH1cblxuICAvLyByb3RhdGVcbiAgQGlmICRyb3RhdGUteCB7ICR0cmFuczogJHRyYW5zIHJvdGF0ZVgoJHJvdGF0ZS14KTsgfVxuICBAaWYgJHJvdGF0ZS15IHsgJHRyYW5zOiAkdHJhbnMgcm90YXRlWSgkcm90YXRlLXkpOyB9XG4gIEBpZiAkcm90YXRlLXogeyAkdHJhbnM6ICR0cmFucyByb3RhdGVaKCRyb3RhdGUteik7IH1cbiAgQGlmICRyb3RhdGUzZCB7ICR0cmFuczogJHRyYW5zIHJvdGF0ZTNkKCRyb3RhdGUzZCk7IH1cblxuICAvLyB0cmFuc2xhdGVcbiAgQGlmICR0cmFucy14IGFuZCAkdHJhbnMteSB7XG4gICAgQGlmICR0cmFucy16IHsgJHRyYW5zOiAkdHJhbnMgdHJhbnNsYXRlM2QoJHRyYW5zLXgsICR0cmFucy15LCAkdHJhbnMteik7IH1cbiAgICBAZWxzZSB7ICR0cmFuczogJHRyYW5zIHRyYW5zbGF0ZSgkdHJhbnMteCwgJHRyYW5zLXkpOyB9XG4gIH0gQGVsc2Uge1xuICAgIEBpZiAkdHJhbnMteCB7ICR0cmFuczogJHRyYW5zIHRyYW5zbGF0ZVgoJHRyYW5zLXgpOyB9XG4gICAgQGlmICR0cmFucy15IHsgJHRyYW5zOiAkdHJhbnMgdHJhbnNsYXRlWSgkdHJhbnMteSk7IH1cbiAgICBAaWYgJHRyYW5zLXogeyAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGVaKCR0cmFucy16KTsgfVxuICB9XG5cbiAgLy8gc2tld1xuICBAaWYgJHNrZXcteCBhbmQgJHNrZXcteSB7ICR0cmFuczogJHRyYW5zIHNrZXcoJHNrZXcteCwgJHNrZXcteSk7IH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkc2tldy14IHsgJHRyYW5zOiAkdHJhbnMgc2tld1goJHNrZXcteCk7IH1cbiAgICBAaWYgJHNrZXcteSB7ICR0cmFuczogJHRyYW5zIHNrZXdZKCRza2V3LXkpOyB9XG4gIH1cblxuICAvLyBhcHBseSBpdCFcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4oJG9yaWdpbi14LCAkb3JpZ2luLXksICRvcmlnaW4teiwgJG9ubHkzZCk7XG59XG5cblxuLy8gQSBzaW1wbGlmaWVkIHNldCBvZiBvcHRpb25zXG4vLyBiYWNrd2FyZHMtY29tcGF0aWJsZSB3aXRoIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZSAndHJhbnNmb3JtJyBtaXhpblxuQG1peGluIHNpbXBsZS10cmFuc2Zvcm0oXG4gICRzY2FsZTogICAgZmFsc2UsXG4gICRyb3RhdGU6ICAgZmFsc2UsXG4gICR0cmFucy14OiAgZmFsc2UsXG4gICR0cmFucy15OiAgZmFsc2UsXG4gICRza2V3LXg6ICAgZmFsc2UsXG4gICRza2V3LXk6ICAgZmFsc2UsXG4gICRvcmlnaW4teDogZmFsc2UsXG4gICRvcmlnaW4teTogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBjcmVhdGUtdHJhbnNmb3JtKFxuICAgIGZhbHNlLFxuICAgICRzY2FsZSwgJHNjYWxlLCBmYWxzZSxcbiAgICBmYWxzZSwgZmFsc2UsICRyb3RhdGUsIGZhbHNlLFxuICAgICR0cmFucy14LCAkdHJhbnMteSwgZmFsc2UsXG4gICAgJHNrZXcteCwgJHNrZXcteSxcbiAgICAkb3JpZ2luLXgsICRvcmlnaW4teSwgZmFsc2UsXG4gICAgZmFsc2VcbiAgKTtcbn1cbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQ1NTIFRyYW5zaXRpb25zXG4vLyBDdXJyZW50bHkgb25seSB3b3JrcyBpbiBXZWJraXQuXG4vL1xuLy8gKiBleHBlY3RlZCBpbiBDU1MzLCBGaXJlRm94IDMuNi83IGFuZCBPcGVyYSBQcmVzdG8gMi4zXG4vLyAqIFdlJ2xsIGJlIHByZXBhcmVkLlxuLy9cbi8vIEluY2x1ZGluZyB0aGlzIHN1Ym1vZHVsZSBzZXRzIGZvbGxvd2luZyBkZWZhdWx0cyBmb3IgdGhlIG1peGluczpcbi8vXG4vLyAgICAgJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSA6IGFsbFxuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24gOiAxc1xuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24gOiBmYWxzZVxuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXkgICAgOiBmYWxzZVxuLy9cbi8vIE92ZXJyaWRlIHRoZW0gaWYgeW91IGxpa2UuIFRpbWluZy1mdW5jdGlvbiBhbmQgZGVsYXkgYXJlIHNldCB0byBmYWxzZSBmb3IgYnJvd3NlciBkZWZhdWx0cyAoZWFzZSwgMHMpLlxuXG4kZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5OiBhbGwgIWRlZmF1bHQ7XG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb246IDFzICFkZWZhdWx0O1xuXG4kZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uOiBmYWxzZSAhZGVmYXVsdDtcblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheTogZmFsc2UgIWRlZmF1bHQ7XG5cbiR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXM6IHRyYW5zZm9ybSwgdHJhbnNmb3JtLW9yaWdpbiAhZGVmYXVsdDtcblxuLy8gT25lIG9yIG1vcmUgcHJvcGVydGllcyB0byB0cmFuc2l0aW9uXG4vL1xuLy8gKiBmb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIGFsc28gYWNjZXB0cyBcImFsbFwiIG9yIFwibm9uZVwiXG5cbkBtaXhpbiB0cmFuc2l0aW9uLXByb3BlcnR5KCRwcm9wZXJ0eS0xOiAkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5LFxuICAkcHJvcGVydHktMiA6IGZhbHNlLFxuICAkcHJvcGVydHktMyA6IGZhbHNlLFxuICAkcHJvcGVydHktNCA6IGZhbHNlLFxuICAkcHJvcGVydHktNSA6IGZhbHNlLFxuICAkcHJvcGVydHktNiA6IGZhbHNlLFxuICAkcHJvcGVydHktNyA6IGZhbHNlLFxuICAkcHJvcGVydHktOCA6IGZhbHNlLFxuICAkcHJvcGVydHktOSA6IGZhbHNlLFxuICAkcHJvcGVydHktMTA6IGZhbHNlXG4pIHtcbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5LTEpID09IHN0cmluZyB7ICRwcm9wZXJ0eS0xOiB1bnF1b3RlKCRwcm9wZXJ0eS0xKTsgfVxuICAkcHJvcGVydGllczogY29tcGFjdCgkcHJvcGVydHktMSwgJHByb3BlcnR5LTIsICRwcm9wZXJ0eS0zLCAkcHJvcGVydHktNCwgJHByb3BlcnR5LTUsICRwcm9wZXJ0eS02LCAkcHJvcGVydHktNywgJHByb3BlcnR5LTgsICRwcm9wZXJ0eS05LCAkcHJvcGVydHktMTApO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHkgOiBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigtd2Via2l0LCAkcHJvcGVydGllcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgICAgICAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5IDogcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLW1veiwgICAgJHByb3BlcnRpZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgICAgICAgLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eSA6IHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC1vLCAgICAgICRwcm9wZXJ0aWVzKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHkgOiAkcHJvcGVydGllcztcbn1cblxuLy8gT25lIG9yIG1vcmUgZHVyYXRpb25zIGluIHNlY29uZHNcbi8vXG4vLyAqIGZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogdGhlc2UgZHVyYXRpb25zIHdpbGwgYWZmZWN0IHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIGxpc3QgcG9zaXRpb25cblxuQG1peGluIHRyYW5zaXRpb24tZHVyYXRpb24oJGR1cmF0aW9uLTE6ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24sXG4gICRkdXJhdGlvbi0yIDogZmFsc2UsXG4gICRkdXJhdGlvbi0zIDogZmFsc2UsXG4gICRkdXJhdGlvbi00IDogZmFsc2UsXG4gICRkdXJhdGlvbi01IDogZmFsc2UsXG4gICRkdXJhdGlvbi02IDogZmFsc2UsXG4gICRkdXJhdGlvbi03IDogZmFsc2UsXG4gICRkdXJhdGlvbi04IDogZmFsc2UsXG4gICRkdXJhdGlvbi05IDogZmFsc2UsXG4gICRkdXJhdGlvbi0xMDogZmFsc2Vcbikge1xuICBAaWYgdHlwZS1vZigkZHVyYXRpb24tMSkgPT0gc3RyaW5nIHsgJGR1cmF0aW9uLTE6IHVucXVvdGUoJGR1cmF0aW9uLTEpOyB9XG4gICRkdXJhdGlvbnM6IGNvbXBhY3QoJGR1cmF0aW9uLTEsICRkdXJhdGlvbi0yLCAkZHVyYXRpb24tMywgJGR1cmF0aW9uLTQsICRkdXJhdGlvbi01LCAkZHVyYXRpb24tNiwgJGR1cmF0aW9uLTcsICRkdXJhdGlvbi04LCAkZHVyYXRpb24tOSwgJGR1cmF0aW9uLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zaXRpb24tZHVyYXRpb24sICRkdXJhdGlvbnMsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gT25lIG9yIG1vcmUgdGltaW5nIGZ1bmN0aW9uc1xuLy9cbi8vICogWyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXQgfCBjdWJpYy1iZXppZXIoeDEsIHkxLCB4MiwgeTIpXVxuLy8gKiBGb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIGVmZmVjdCB0aGUgcHJvcGVydGllcyBpbiB0aGUgc2FtZSBsaXN0IHBvc2l0aW9uXG5cbkBtaXhpbiB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbigkZnVuY3Rpb24tMTogJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbixcbiAgJGZ1bmN0aW9uLTIgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTMgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTQgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTUgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTYgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTcgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTggOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTkgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTEwOiBmYWxzZVxuKSB7XG4gICRmdW5jdGlvbi0xOiB1bnF1b3RlKCRmdW5jdGlvbi0xKTtcbiAgJGZ1bmN0aW9uczogY29tcGFjdCgkZnVuY3Rpb24tMSwgJGZ1bmN0aW9uLTIsICRmdW5jdGlvbi0zLCAkZnVuY3Rpb24tNCwgJGZ1bmN0aW9uLTUsICRmdW5jdGlvbi02LCAkZnVuY3Rpb24tNywgJGZ1bmN0aW9uLTgsICRmdW5jdGlvbi05LCAkZnVuY3Rpb24tMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24sICRmdW5jdGlvbnMsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gT25lIG9yIG1vcmUgdHJhbnNpdGlvbi1kZWxheXMgaW4gc2Vjb25kc1xuLy9cbi8vICogZm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiB0aGVzZSBkZWxheXMgd2lsbCBlZmZlY3QgdGhlIHByb3BlcnRpZXMgaW4gdGhlIHNhbWUgbGlzdCBwb3NpdGlvblxuXG5AbWl4aW4gdHJhbnNpdGlvbi1kZWxheSgkZGVsYXktMTogJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheSxcbiAgJGRlbGF5LTIgOiBmYWxzZSxcbiAgJGRlbGF5LTMgOiBmYWxzZSxcbiAgJGRlbGF5LTQgOiBmYWxzZSxcbiAgJGRlbGF5LTUgOiBmYWxzZSxcbiAgJGRlbGF5LTYgOiBmYWxzZSxcbiAgJGRlbGF5LTcgOiBmYWxzZSxcbiAgJGRlbGF5LTggOiBmYWxzZSxcbiAgJGRlbGF5LTkgOiBmYWxzZSxcbiAgJGRlbGF5LTEwOiBmYWxzZVxuKSB7XG4gIEBpZiB0eXBlLW9mKCRkZWxheS0xKSA9PSBzdHJpbmcgeyAkZGVsYXktMTogdW5xdW90ZSgkZGVsYXktMSk7IH1cbiAgJGRlbGF5czogY29tcGFjdCgkZGVsYXktMSwgJGRlbGF5LTIsICRkZWxheS0zLCAkZGVsYXktNCwgJGRlbGF5LTUsICRkZWxheS02LCAkZGVsYXktNywgJGRlbGF5LTgsICRkZWxheS05LCAkZGVsYXktMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNpdGlvbi1kZWxheSwgJGRlbGF5cyxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBUcmFuc2l0aW9uIGFsbC1pbi1vbmUgc2hvcnRoYW5kXG5cbkBtaXhpbiBzaW5nbGUtdHJhbnNpdGlvbihcbiAgJHByb3BlcnR5OiAkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5LFxuICAkZHVyYXRpb246ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24sXG4gICRmdW5jdGlvbjogJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbixcbiAgJGRlbGF5OiAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5XG4pIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb21wYWN0KCRwcm9wZXJ0eSAkZHVyYXRpb24gJGZ1bmN0aW9uICRkZWxheSkpO1xufVxuXG5AbWl4aW4gdHJhbnNpdGlvbihcbiAgJHRyYW5zaXRpb24tMSA6IGRlZmF1bHQsXG4gICR0cmFuc2l0aW9uLTIgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tMyA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi00IDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTUgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tNiA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi03IDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTggOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tOSA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi0xMDogZmFsc2Vcbikge1xuICBAaWYgJHRyYW5zaXRpb24tMSA9PSBkZWZhdWx0IHtcbiAgICAkdHJhbnNpdGlvbi0xIDogY29tcGFjdCgkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24gJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbiAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5KTtcbiAgfVxuICAkdHJhbnNpdGlvbnM6IGZhbHNlO1xuICBAaWYgdHlwZS1vZigkdHJhbnNpdGlvbi0xKSA9PSBsaXN0IGFuZCB0eXBlLW9mKG50aCgkdHJhbnNpdGlvbi0xLDEpKSA9PSBsaXN0IHtcbiAgICAkdHJhbnNpdGlvbnM6IGpvaW4oJHRyYW5zaXRpb24tMSwgY29tcGFjdCgkdHJhbnNpdGlvbi0yLCAkdHJhbnNpdGlvbi0zLCAkdHJhbnNpdGlvbi00LCAkdHJhbnNpdGlvbi01LCAkdHJhbnNpdGlvbi02LCAkdHJhbnNpdGlvbi03LCAkdHJhbnNpdGlvbi04LCAkdHJhbnNpdGlvbi05LCAkdHJhbnNpdGlvbi0xMCksIGNvbW1hKTtcbiAgfSBAZWxzZSB7XG4gICAgJHRyYW5zaXRpb25zIDogY29tcGFjdCgkdHJhbnNpdGlvbi0xLCAkdHJhbnNpdGlvbi0yLCAkdHJhbnNpdGlvbi0zLCAkdHJhbnNpdGlvbi00LCAkdHJhbnNpdGlvbi01LCAkdHJhbnNpdGlvbi02LCAkdHJhbnNpdGlvbi03LCAkdHJhbnNpdGlvbi04LCAkdHJhbnNpdGlvbi05LCAkdHJhbnNpdGlvbi0xMCk7XG4gIH1cbiAgJGRlbGF5czogY29tbWEtbGlzdCgpO1xuICAkaGFzLWRlbGF5czogZmFsc2U7XG4gICR3ZWJraXQtdmFsdWU6IGNvbW1hLWxpc3QoKTtcbiAgJG1vei12YWx1ZTogY29tbWEtbGlzdCgpO1xuICAkby12YWx1ZTogY29tbWEtbGlzdCgpO1xuXG4gIC8vIFRoaXMgYmxvY2sgY2FuIGJlIG1hZGUgY29uc2lkZXJhYmx5IHNpbXBsZXIgYXQgdGhlIHBvaW50IGluIHRpbWUgdGhhdFxuICAvLyB3ZSBubyBsb25nZXIgbmVlZCB0byBkZWFsIHdpdGggdGhlIGRpZmZlcmVuY2VzIGluIGhvdyBkZWxheXMgYXJlIHRyZWF0ZWQuXG4gIEBlYWNoICR0cmFuc2l0aW9uIGluICR0cmFuc2l0aW9ucyB7XG4gICAgLy8gRXh0cmFjdCB0aGUgdmFsdWVzIGZyb20gdGhlIGxpc3RcbiAgICAvLyAodGhpcyB3b3VsZCBiZSBjbGVhbmVyIGlmIG50aCB0b29rIGEgM3JkIGFyZ3VtZW50IHRvIHByb3ZpZGUgYSBkZWZhdWx0IHZhbHVlKS5cbiAgICAkcHJvcGVydHk6IG50aCgkdHJhbnNpdGlvbiwgMSk7XG4gICAgJGR1cmF0aW9uOiBmYWxzZTtcbiAgICAkdGltaW5nLWZ1bmN0aW9uOiBmYWxzZTtcbiAgICAkZGVsYXk6IGZhbHNlO1xuICAgIEBpZiBsZW5ndGgoJHRyYW5zaXRpb24pID4gMSB7ICRkdXJhdGlvbjogICAgICAgIG50aCgkdHJhbnNpdGlvbiwgMik7IH1cbiAgICBAaWYgbGVuZ3RoKCR0cmFuc2l0aW9uKSA+IDIgeyAkdGltaW5nLWZ1bmN0aW9uOiBudGgoJHRyYW5zaXRpb24sIDMpOyB9XG4gICAgQGlmIGxlbmd0aCgkdHJhbnNpdGlvbikgPiAzIHsgJGRlbGF5OiAgICAgICAgICAgbnRoKCR0cmFuc2l0aW9uLCA0KTsgJGhhcy1kZWxheXM6IHRydWU7IH1cblxuICAgIC8vIElmIGEgZGVsYXkgaXMgcHJvdmlkZWQgd2l0aG91dCBhIHRpbWluZyBmdW5jdGlvblxuICAgIEBpZiBpcy10aW1lKCR0aW1pbmctZnVuY3Rpb24pIGFuZCBub3QoJGRlbGF5KSB7ICRkZWxheTogJHRpbWluZy1mdW5jdGlvbjsgJHRpbWluZy1mdW5jdGlvbjogZmFsc2U7ICRoYXMtZGVsYXlzOiB0cnVlOyB9XG5cbiAgICAvLyBLZWVwIGEgbGlzdCBvZiBkZWxheXMgaW4gY2FzZSBvbmUgaXMgc3BlY2lmaWVkXG4gICAgJGRlbGF5czogYXBwZW5kKCRkZWxheXMsIGlmKCRkZWxheSwgJGRlbGF5LCAwcykpO1xuXG4gICAgJHdlYmtpdC12YWx1ZTogYXBwZW5kKCR3ZWJraXQtdmFsdWUsIGNvbXBhY3QoKHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC13ZWJraXQsICRwcm9wZXJ0eSkgJGR1cmF0aW9uICR0aW1pbmctZnVuY3Rpb24pLi4uKSk7XG4gICAgICAgJG1vei12YWx1ZTogYXBwZW5kKCAgICRtb3otdmFsdWUsIGNvbXBhY3QoKHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCAgIC1tb3osICRwcm9wZXJ0eSkgJGR1cmF0aW9uICR0aW1pbmctZnVuY3Rpb24gJGRlbGF5KS4uLikpO1xuICAgICAgICAgJG8tdmFsdWU6IGFwcGVuZCggICAgICRvLXZhbHVlLCBjb21wYWN0KChwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbiggICAgIC1vLCAkcHJvcGVydHkpICRkdXJhdGlvbiAkdGltaW5nLWZ1bmN0aW9uICRkZWxheSkuLi4pKTtcbiAgfVxuXG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbiA6ICR3ZWJraXQtdmFsdWU7XG4gICAgLy8gb2xkIHdlYmtpdCBkb2Vzbid0IHN1cHBvcnQgdGhlIGRlbGF5IHBhcmFtZXRlciBpbiB0aGUgc2hvcnRoYW5kIHNvIHdlIHByb2dyZXNzaXZlbHkgZW5oYW5jZSBpdC5cbiAgICBAaWYgJGhhcy1kZWxheXMgICAgICAgICAgICAgICAgICAgICAgIHsgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5IDogJGRlbGF5czsgICAgICAgfSB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgICAgICAgIC1tb3otdHJhbnNpdGlvbiA6ICRtb3otdmFsdWU7ICAgIH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAgICAgICAtby10cmFuc2l0aW9uIDogJG8tdmFsdWU7ICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24gOiAkdHJhbnNpdGlvbnM7XG59XG5cbi8vIGNvZXJjZSBhIGxpc3QgdG8gYmUgY29tbWEgZGVsaW1pdGVkIG9yIG1ha2UgYSBuZXcsIGVtcHR5IGNvbW1hIGRlbGltaXRlZCBsaXN0LlxuQGZ1bmN0aW9uIGNvbW1hLWxpc3QoJGxpc3Q6ICgpKSB7XG4gIEByZXR1cm4gam9pbigoKSwgJGxpc3QsIGNvbW1hKTtcbn1cblxuLy8gUmV0dXJucyBgJHByb3BlcnR5YCB3aXRoIHRoZSBnaXZlbiBwcmVmaXggaWYgaXQgaXMgZm91bmQgaW4gYCR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXNgLlxuQGZ1bmN0aW9uIHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCRwcmVmaXgsICRwcm9wZXJ0eSkge1xuICBAaWYgdHlwZS1vZigkcHJvcGVydHkpID09IGxpc3Qge1xuICAgICRuZXctbGlzdDogY29tbWEtbGlzdCgpO1xuICAgIEBlYWNoICR2IGluICRwcm9wZXJ0eSB7XG4gICAgICAkbmV3LWxpc3Q6IGFwcGVuZCgkbmV3LWxpc3QsIHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCRwcmVmaXgsICR2KSk7XG4gICAgfVxuICAgIEByZXR1cm4gJG5ldy1saXN0O1xuICB9IEBlbHNlIHtcbiAgICBAaWYgaW5kZXgoJHRyYW5zaXRpb25hYmxlLXByZWZpeGVkLXZhbHVlcywgJHByb3BlcnR5KSB7XG4gICAgICBAcmV0dXJuICN7JHByZWZpeH0tI3skcHJvcGVydHl9O1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHJldHVybiAkcHJvcGVydHk7XG4gICAgfVxuICB9XG59XG5cbi8vIENoZWNrcyBpZiB0aGUgdmFsdWUgZ2l2ZW4gaXMgYSB1bml0IG9mIHRpbWUuXG5AZnVuY3Rpb24gaXMtdGltZSgkdmFsdWUpIHtcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBudW1iZXIge1xuICAgIEByZXR1cm4gbm90KG5vdChpbmRleChzIG1zLCB1bml0KCR2YWx1ZSkpKSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQ2hhbmdlIHRoZSBhcHBlYXJhbmNlIGZvciBNb3ppbGxhLCBXZWJraXQgYW5kIHBvc3NpYmx5IHRoZSBmdXR1cmUuXG4vLyBUaGUgYXBwZWFyYW5jZSBwcm9wZXJ0eSBpcyBjdXJyZW50bHkgbm90IHByZXNlbnQgaW4gYW55IG5ld2VyIENTUyBzcGVjaWZpY2F0aW9uLlxuLy9cbi8vIFRoZXJlIGlzIG5vIG9mZmljaWFsIGxpc3Qgb2YgYWNjZXB0ZWQgdmFsdWVzLCBidXQgeW91IG1pZ2h0IGNoZWNrIHRoZXNlIHNvdXJjZTpcbi8vICAgTW96aWxsYSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL0NTUy8tbW96LWFwcGVhcmFuY2Vcbi8vICAgV2Via2l0ICA6IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC93ZWJraXQtbWlycm9yL3NvdXJjZS9icm93c2UvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4/c3BlYz1zdm5mMWFlYTU1OWRjZDAyNWE4OTQ2YWE3ZGE2ZTRlODMwNmY1YzFiNjA0JnI9NjNjN2QxYWY0NDQzMGIzMTQyMzNmZWEzNDJjM2RkYjJhMDUyZTM2NVxuLy8gICAoc2VhcmNoIGZvciAnYXBwZWFyYW5jZScgd2l0aGluIHRoZSBwYWdlKVxuXG5AbWl4aW4gYXBwZWFyYW5jZSgkYXApIHtcbiAgJGFwOiB1bnF1b3RlKCRhcCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChhcHBlYXJhbmNlLCAkYXAsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBXZWJraXQsIElFMTAgYW5kIGZ1dHVyZSBzdXBwb3J0IGZvciBbQ1NTIFJlZ2lvbnNdKGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtcmVnaW9ucy8pXG4vL1xuLy8gJHRhcmdldCBpcyBhIHZhbHVlIHlvdSB1c2UgdG8gbGluayB0d28gcmVnaW9ucyBvZiB5b3VyIGNzcy4gR2l2ZSB0aGUgc291cmNlIG9mIHlvdXIgY29udGVudCB0aGUgZmxvdy1pbnRvIHByb3BlcnR5LCBhbmQgZ2l2ZSB5b3VyIHRhcmdldCBjb250YWluZXIgdGhlIGZsb3ctZnJvbSBwcm9wZXJ0eS5cbi8vXG4vLyBGb3IgYSB2aXN1YWwgZXhwbGFuYXRpb24sIHNlZSB0aGUgZGlhZ3JhbXMgYXQgQ2hyaXMgQ295aWVyJ3Ncbi8vIFtDU1MtVHJpY2tzXShodHRwOi8vY3NzLXRyaWNrcy5jb20vY29udGVudC1mb2xkaW5nLylcblxuQG1peGluIGZsb3ctaW50bygkdGFyZ2V0KSB7XG4gICR0YXJnZXQ6IHVucXVvdGUoJHRhcmdldCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChmbG93LWludG8sICR0YXJnZXQsXG4gICAgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBub3Qgb2ZmaWNpYWxcbiAgKTtcbn1cblxuQG1peGluIGZsb3ctZnJvbSgkdGFyZ2V0KSB7XG4gICR0YXJnZXQ6IHVucXVvdGUoJHRhcmdldCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChmbG93LWZyb20sICR0YXJnZXQsXG4gICAgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBub3Qgb2ZmaWNpYWxcbiAgKTtcbn0iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIE1peGlucyB0byBzdXBwb3J0IHNwZWNpZmljIENTUyBUZXh0IExldmVsIDMgZWxlbWVudHNcbi8vXG4vL1xuLy9cbi8vIE1peGluIGZvciB3b3JkLWJyZWFrIHByb3BlcnRpZXNcbi8vIGh0dHA6Ly93d3cudzMub3JnL2NzczMtdGV4dC8jd29yZC1icmVha1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICR0eXBlIDogbm9ybWFsLCBrZWVwLWFsbCwgYnJlYWstYWxsXG4vL1xuLy8gRXhhbXBsZTpcbi8vICAgIHAud29yZEJyZWFrIHtAaW5jbHVkZSB3b3JkLWJyZWFrKGJyZWFrLWFsbCk7fVxuLy9cbi8vIFdoaWNoIGdlbmVyYXRlczpcbi8vICAgIHAud29yZEJyZWFrIHtcbi8vICAgICAgLW1zLXdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbi8vICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuLy8gICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO31cbi8vXG5AbWl4aW4gd29yZC1icmVhaygkdmFsdWU6IG5vcm1hbCl7XG4gIEBpZiAkdmFsdWUgPT0gYnJlYWstYWxsIHtcbiAgICAvL01vc3QgYnJvd3NlcnMgaGFuZGxlIHRoZSBicmVhay1hbGwgY2FzZSB0aGUgc2FtZS4uLlxuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh3b3JkLWJyZWFrLCAkdmFsdWUsXG4gICAgICBub3QoLW1veiksIG5vdCgtd2Via2l0KSwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgICApO1xuICAgIC8vV2Via2l0IGhhbmRsZXMgYnJlYWstYWxsIGRpZmZlcmVudGx5Li4uIGFzIGJyZWFrLXdvcmRcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwod29yZC1icmVhaywgYnJlYWstd29yZCxcbiAgICAgIG5vdCgtbW96KSwgbm90KC13ZWJraXQpLCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHdvcmQtYnJlYWssICR2YWx1ZSxcbiAgICAgIG5vdCgtbW96KSwgbm90KC13ZWJraXQpLCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICAgICk7XG4gIH1cbn1cblxuLy8gTWl4aW4gZm9yIHRoZSBoeXBoZW5zIHByb3BlcnR5XG4vL1xuLy8gVzNDIHNwZWNpZmljYXRpb246IGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdGV4dC8jaHlwaGVuc1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICR0eXBlIDogYXV0bywgbWFudWFsLCBub25lXG4vL1xuLy8gRXhhbXBsZTpcbi8vICBwIHtcbi8vICAgIEBpbmNsdWRlIGh5cGhlbnMoYXV0byk7fVxuLy8gV2hpY2ggZ2VuZXJhdGVzOlxuLy8gIHAge1xuLy8gICAgLW1vei1oeXBoZW5zOiBhdXRvO1xuLy8gICAgLXdlYmtpdC1oeXBoZW5zOiBhdXRvO1xuLy8gICAgaHlwaGVuczogYXV0bzt9XG4vL1xuQG1peGluIGh5cGhlbnMoJHZhbHVlOiBhdXRvKXtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGh5cGhlbnMsICR2YWx1ZSxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIE1peGluIGZvciB4LWJyb3dzZXIgaHlwaGVuYXRpb24gYmFzZWQgb24gQGF1Y2hlbmJlcmcncyBwb3N0OlxuLy8gUmVtb3ZlcyB0aGUgbmVlZCBmb3IgdGhlIDx3YnIvPiBIVE1MIHRhZ1xuLy8gaHR0cDovL2Jsb2cua2VubmV0aC5pby9ibG9nLzIwMTIvMDMvMDQvd29yZC13cmFwcGluZy1oeXBlcm5hdGlvbi11c2luZy1jc3MvXG4vL1xuLy8gIEV4YW1wbGU6XG4vLyAgZGl2IHtAaW5jbHVkZSBoeXBoZW5hdGlvbjt9XG4vL1xuLy8gIFdoaWNoIGdlbmVyYXRlczpcbi8vICAgIGRpdiB7XG4vLyAgICAgIC1tcy13b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLyAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbi8vICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbi8vICAgICAgLW1vei1oeXBoZW5zOiBhdXRvO1xuLy8gICAgICAtd2Via2l0LWh5cGhlbnM6IGF1dG87XG4vLyAgICAgIGh5cGhlbnM6IGF1dG87fVxuLy9cbkBtaXhpbiBoeXBoZW5hdGlvbntcbiAgQGluY2x1ZGUgd29yZC1icmVhayhicmVhay1hbGwpO1xuICBAaW5jbHVkZSBoeXBoZW5zO1xufVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBQcm92aWRlcyBjcm9zcy1icm93c2VyIHN1cHBvcnQgZm9yIHRoZSB1cGNvbWluZyAoPykgY3NzMyBmaWx0ZXIgcHJvcGVydHkuXG4vL1xuLy8gRWFjaCBmaWx0ZXIgYXJndW1lbnQgc2hvdWxkIGFkaGVyZSB0byB0aGUgc3RhbmRhcmQgY3NzMyBzeW50YXggZm9yIHRoZVxuLy8gZmlsdGVyIHByb3BlcnR5LlxuQG1peGluIGZpbHRlciAoXG4gICRmaWx0ZXItMSxcbiAgJGZpbHRlci0yIDogZmFsc2UsXG4gICRmaWx0ZXItMyA6IGZhbHNlLFxuICAkZmlsdGVyLTQgOiBmYWxzZSxcbiAgJGZpbHRlci01IDogZmFsc2UsXG4gICRmaWx0ZXItNiA6IGZhbHNlLFxuICAkZmlsdGVyLTcgOiBmYWxzZSxcbiAgJGZpbHRlci04IDogZmFsc2UsXG4gICRmaWx0ZXItOSA6IGZhbHNlLFxuICAkZmlsdGVyLTEwOiBmYWxzZVxuKSB7XG4gICRmaWx0ZXIgOiBjb21wYWN0KCRmaWx0ZXItMSwgJGZpbHRlci0yLCAkZmlsdGVyLTMsICRmaWx0ZXItNCwgJGZpbHRlci01LCAkZmlsdGVyLTYsICRmaWx0ZXItNywgJGZpbHRlci04LCAkZmlsdGVyLTksICRmaWx0ZXItMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoZmlsdGVyLCAkZmlsdGVyLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cbiIsIiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgU2FzcydzIEBleHRlbmQgZGlyZWN0aXZlIHRvIGFwcGx5IHRoZSBiZWhhdmlvclxuLy8gdG8geW91ciBQSUUgZWxlbWVudHMuIFRvIGFzc2lzdCB5b3UsIENvbXBhc3MgcHJvdmlkZXMgdGhpcyB2YXJpYWJsZS5cbi8vIFdoZW4gc2V0LCBpdCB3aWxsIGNhdXNlIHRoZSBgQGluY2x1ZGUgcGllYCBtaXhpbiB0byBleHRlbmQgdGhpcyBjbGFzcy5cbi8vIFRoZSBjbGFzcyBuYW1lIHlvdSBwcm92aWRlIHNob3VsZCAqKm5vdCoqIGluY2x1ZGUgdGhlIGAuYC5cbiRwaWUtYmFzZS1jbGFzczogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGFwcHJvYWNoIHRvIHVzaW5nIFBJRS5cbi8vIENhbiBiZSBvbmUgb2Y6XG4vL1xuLy8gKiByZWxhdGl2ZSAoZGVmYXVsdClcbi8vICogei1pbmRleFxuLy8gKiBub25lXG4kcGllLWRlZmF1bHQtYXBwcm9hY2g6IHJlbGF0aXZlICFkZWZhdWx0O1xuXG4vLyBUaGUgbG9jYXRpb24gb2YgeW91ciBQSUUgYmVoYXZpb3IgZmlsZVxuLy8gVGhpcyBzaG91bGQgYmUgcm9vdC1yZWxhdGl2ZSB0byB5b3VyIHdlYiBzZXJ2ZXJcbi8vIHJlbGF0aXZlIGFzc2V0cyBkb24ndCB3b3JrLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0XG4vLyB5b3Ugc2V0IHRoaXMgeW91cnNlbGYuXG4kcGllLWJlaGF2aW9yOiBzdHlsZXNoZWV0LXVybChcIlBJRS5odGNcIikgIWRlZmF1bHQ7XG5cbi8vIFdoZW4gdXNpbmcgdGhlIHotaW5kZXggYXBwcm9hY2gsIHRoZVxuLy8gZmlyc3QgYW5jZXN0b3Igb2YgdGhlIFBJRSBlbGVtZW50IGF0XG4vLyBvciBiZWZvcmUgdGhlIGNvbnRhaW5lcidzIG9wYXF1ZSBiYWNrZ3JvdW5kXG4vLyBzaG91bGQgaGF2ZSBhIHotaW5kZXggc2V0IGFzIHdlbGwgdG8gZW5zdXJlXG4vLyBwcm9wZXJ0IHotaW5kZXggc3RhY2tpbmcuXG4vL1xuLy8gVGhlIGAkcG9zaXRpb25gIGFyZ3VtZW50IG11c3QgYmUgc29tZSBub24tc3RhdGljXG4vLyB2YWx1ZSAoYWJzb2x1dGUsIHJlbGF0aXZlLCBldGMuKVxuQG1peGluIHBpZS1jb250YWluZXIoJHotaW5kZXg6IDAsICRwb3NpdGlvbjogcmVsYXRpdmUpIHtcbiAgei1pbmRleDogJHotaW5kZXg7XG4gIHBvc2l0aW9uOiAkcG9zaXRpb247XG59XG5cbi8vIFBJRSBlbGVtZW50cyBtdXN0IGhhdmUgdGhpcyBiZWhhdmlvciBhdHRhY2hlZCB0byB0aGVtLlxuLy8gSUUgaXMgYnJva2VuIC0tIGl0IGRvZXNuJ3QgdGhpbmsgb2YgYmVoYXZpb3IgdXJscyBhc1xuLy8gcmVsYXRpdmUgdG8gdGhlIHN0eWxlc2hlZXQuIEl0IGNvbnNpZGVycyB0aGVtIHJlbGF0aXZlXG4vLyB0byB0aGUgd2VicGFnZS4gQXMgYSByZXN1bHQsIHlvdSBjYW5ub3QgcmVsaWFibHkgdXNlXG4vLyBjb21wYXNzJ3MgcmVsYXRpdmVfYXNzZXRzIHdpdGggUElFLlxuLy9cbi8vICogYCRhcHByb2FjaGAgLSBvbmUgb2Y6IHJlbGF0aXZlLCB6LWluZGV4LCBvciBub25lXG4vLyAqIGAkei1pbmRleGAgLSB3aGVuIHVzaW5nIHRoZSB6LWluZGV4IGFwcHJvYWNoLCB0aGlzXG4vLyAgICAgICAgICAgICAgICBpcyB0aGUgei1pbmRleCB0aGF0IGlzIGFwcGxpZWQuXG5AbWl4aW4gcGllLWVsZW1lbnQoXG4gICRhcHByb2FjaDogJHBpZS1kZWZhdWx0LWFwcHJvYWNoLFxuICAkei1pbmRleDogMFxuKSB7XG4gIGJlaGF2aW9yOiAkcGllLWJlaGF2aW9yO1xuICBAaWYgJGFwcHJvYWNoID09IHJlbGF0aXZlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cbiAgQGVsc2UgaWYgJGFwcHJvYWNoID09IHotaW5kZXgge1xuICAgIHotaW5kZXg6ICR6LWluZGV4O1xuICB9XG59XG5cbi8vIGEgc21hcnQgbWl4aW4gdGhhdCBrbm93cyB0byBleHRlbmQgb3IgaW5jbHVkZSBwaWUtZWxlbWVudCBhY2NvcmRpbmdcbi8vIHRvIHlvdXIgc3R5bGVzaGVldCdzIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLlxuQG1peGluIHBpZSgkYmFzZS1jbGFzczogJHBpZS1iYXNlLWNsYXNzKSB7XG4gIEBpZiAkYmFzZS1jbGFzcyB7XG4gICAgQGV4dGVuZCAuI3skYmFzZS1jbGFzc307XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHBpZS1lbGVtZW50O1xuICB9XG59XG5cbi8vIFdhdGNoIGAkbmAgbGV2ZWxzIG9mIGFuY2VzdG9ycyBmb3IgY2hhbmdlcyB0byB0aGVpciBjbGFzcyBhdHRyaWJ1dGVcbi8vIFNvIHRoYXQgY2FzY2FkaW5nIHN0eWxlcyB3aWxsIHdvcmsgY29ycmVjdGx5IG9uIHRoZSBQSUUgZWxlbWVudC5cbkBtaXhpbiBwaWUtd2F0Y2gtYW5jZXN0b3JzKCRuKSB7XG4gIC1waWUtd2F0Y2gtYW5jZXN0b3JzOiAkbjtcbn1cbiIsIi8vIFVzZXIgSW50ZXJmYWNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGhpcyBmaWxlIGNhbiBiZSBleHBhbmRlZCB0byBoYW5kbGUgYWxsIHRoZSB1c2VyIGludGVyZmFjZSBwcm9wZXJ0aWVzIGFzXG4vLyB0aGV5IGJlY29tZSBhdmFpbGFibGUgaW4gYnJvd3NlcnM6XG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL1dELWNzczMtdXNlcmludC0yMDAwMDIxNlxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5cbi8vIFRoaXMgcHJvcGVydHkgY29udHJvbHMgdGhlIHNlbGVjdGlvbiBtb2RlbCBhbmQgZ3JhbnVsYXJpdHkgb2YgYW4gZWxlbWVudC5cbi8vXG4vLyBAcGFyYW0gJHNlbGVjdFxuLy8gICBbIG5vbmUgfCB0ZXh0IHwgdG9nZ2xlIHwgZWxlbWVudCB8IGVsZW1lbnRzIHwgYWxsIHwgaW5oZXJpdCBdXG5AbWl4aW4gdXNlci1zZWxlY3QoJHNlbGVjdCkge1xuICAkc2VsZWN0OiB1bnF1b3RlKCRzZWxlY3QpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodXNlci1zZWxlY3QsICRzZWxlY3QsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCAta2h0bWwsIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFN0eWxlIHRoZSBodG1sNSBpbnB1dCBwbGFjZWhvbGRlciBpbiBicm93c2VycyB0aGF0IHN1cHBvcnQgaXQuXG4vL1xuLy8gVGhlIHN0eWxlcyBmb3IgdGhlIGlucHV0IHBsYWNlaG9sZGVyIGFyZSBwYXNzZWQgYXMgbWl4aW4gY29udGVudFxuLy8gYW5kIHRoZSBzZWxlY3RvciBjb21lcyBmcm9tIHRoZSBtaXhpbidzIGNvbnRleHQuXG4vL1xuLy8gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICAgICN7ZWxlbWVudHMtb2YtdHlwZSh0ZXh0LWlucHV0KX0ge1xuLy8gICAgICAgQGluY2x1ZGUgaW5wdXQtcGxhY2Vob2xkZXIge1xuLy8gICAgICAgICBjb2xvcjogI2JmYmZiZjtcbi8vICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuLy8gICAgICAgfVxuLy8gICAgIH1cbi8vXG4vLyBpZiB5b3Ugd2FudCB0byBhcHBseSB0aGUgcGxhY2Vob2xkZXIgc3R5bGVzIHRvIGFsbCBlbGVtZW50cyBzdXBwb3J0aW5nXG4vLyB0aGUgYGlucHV0LXBsYWNlaG9sZGVyYCBwc2V1ZG8gY2xhc3MgKGJld2FyZSBvZiBwZXJmb3JtYW5jZSBpbXBhY3RzKTpcbi8vXG4vLyAgICAgKiB7XG4vLyAgICAgICBAaW5jbHVkZSBpbnB1dC1wbGFjZWhvbGRlciB7XG4vLyAgICAgICAgIGNvbG9yOiAjYmZiZmJmO1xuLy8gICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4vLyAgICAgICB9XG4vLyAgICAgfVxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyIHtcbiAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxuICAmOi1tb3otcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxuICAmOjotbW96LXBsYWNlaG9sZGVyIHsgQGNvbnRlbnQ7IH1cbiAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBUaGlzIGlzIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIGZvciBhbGwgdGhlIG90aGVyIG1peGlucyBpbiB0aGlzIG1vZHVsZS5cbi8vIEl0IGlzIHRoZSBvbmx5IHdheSB0byBhY2Nlc3MgcHJlZml4IHN1cHBvcnQgZm9yIG9sZGVyIHZlcnNpb25zIG9mIHRoZSBzcGVjLlxuLy8gRGV2aWF0ZXMgZnJvbSBjYW5vbmljYWwgQ29tcGFzcyBpbXBsZW1lbnRhdGlvbiBieSBkcm9wcGluZyBzdXBwb3J0IGZvclxuLy8gb2xkZXIgdmVyc2lvbnMgb2YgdGhlIEZsZXhib3ggc3BlYy5cbi8vXG4vLyBgJHByb3BlcnRpZXNgOiBtYXAgb2YgcHJvcGVydHktdmFsdWUgcGFpcnMgdGhhdCBzaG91bGQgYmUgcHJlZml4ZWRcbkBtaXhpbiBmbGV4Ym94KCRwcm9wZXJ0aWVzKSB7XG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiAkcHJvcCA9PSBkaXNwbGF5IHtcbiAgICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbC12YWx1ZShkaXNwbGF5LCAkdmFsdWUsIG5vdCgtbW96KSwgLXdlYmtpdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCgkcHJvcCwgJHZhbHVlLCBub3QoLW1veiksIC13ZWJraXQsIG5vdCgtbyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbCk7XG4gICAgfVxuICB9XG59XG5cbi8vIFZhbHVlcyBmb3IgJGRpc3BsYXkgYXJlOiBmbGV4IChkZWZhdWx0KSwgaW5saW5lLWZsZXhcbkBtaXhpbiBkaXNwbGF5LWZsZXgoJGRpc3BsYXk6IGZsZXgpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZGlzcGxheTogJGRpc3BsYXkpKTtcbn1cblxuLy8gVmFsdWVzOiByb3cgfCByb3ctcmV2ZXJzZSB8IGNvbHVtbiB8IGNvbHVtbi1yZXZlcnNlXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJGRpcmVjdGlvbikge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbikpO1xufVxuXG4vLyBWYWx1ZXM6IG5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2VcbkBtaXhpbiBmbGV4LXdyYXAoJHdyYXApIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC13cmFwOiAkd3JhcCkpO1xufVxuXG4vLyBTaG9ydGhhbmQgZm9yIGZsZXgtZGlyZWN0aW9uIGFuZCBmbGV4LXdyYXAuXG5AbWl4aW4gZmxleC1mbG93KCRmbG93KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtZmxvdzogJGZsb3cpKTtcbn1cblxuLy8gQWNjZXB0cyBhbiBpbnRlZ2VyXG5AbWl4aW4gb3JkZXIoJG9yZGVyKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKG9yZGVyOiAkb3JkZXIpKTtcbn1cblxuLy8gU2hvcnRoYW5kIGZvciBmbGV4LWdyb3csIGZsZXgtc2hyaW5rIGFuZCBvcHRpb25hbGx5IGZsZXgtYmFzaXMuXG4vLyBTcGFjZSBzZXBhcmF0ZWQsIGluIHRoYXQgb3JkZXIuXG5AbWl4aW4gZmxleCgkZmxleCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4OiAkZmxleCkpO1xufVxuXG4vLyBBY2NlcHRzIGEgbnVtYmVyLlxuQG1peGluIGZsZXgtZ3JvdygkZmxleC1ncm93KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtZ3JvdzogJGZsZXgtZ3JvdykpO1xufVxuXG4vLyBBY2NlcHRzIGEgbnVtYmVyLlxuQG1peGluIGZsZXgtc2hyaW5rKCRmbGV4LXNocmluaykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LXNocmluazogJGZsZXgtc2hyaW5rKSk7XG59XG5cbi8vIEFjY2VwdHMgYW55IGxlZ2FsIHZhbHVlIGZvciB0aGUgd2lkdGggcHJvcGVydHkuXG5AbWl4aW4gZmxleC1iYXNpcygkZmxleC1iYXNpcykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWJhc2lzOiAkZmxleC1iYXNpcykpO1xufVxuXG4vLyBMZWdhbCB2YWx1ZXM6IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmRcbkBtaXhpbiBqdXN0aWZ5LWNvbnRlbnQoJGp1c3RpZnktY29udGVudCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChqdXN0aWZ5LWNvbnRlbnQ6ICRqdXN0aWZ5LWNvbnRlbnQpKTtcbn1cblxuLy8gTGVnYWwgdmFsdWVzOiBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2hcbkBtaXhpbiBhbGlnbi1pdGVtcygkYWxpZ24taXRlbXMpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoYWxpZ24taXRlbXM6ICRhbGlnbi1pdGVtcykpO1xufVxuXG4vLyBMZWdhbCB2YWx1ZXM6IGF1dG8gfCBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2hcbkBtaXhpbiBhbGlnbi1zZWxmKCRhbGlnbi1zZWxmKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGFsaWduLXNlbGY6ICRhbGlnbi1zZWxmKSk7XG59XG5cbi8vIExlZ2FsIHZhbHVlczogZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZCB8IHN0cmV0Y2hcbkBtaXhpbiBhbGlnbi1jb250ZW50KCRhbGlnbi1jb250ZW50KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGFsaWduLWNvbnRlbnQ6ICRhbGlnbi1jb250ZW50KSk7XG59XG4iLCJAbWl4aW4gbXEoJGJyZWFrcG9pbnQ6IHNwKSB7XG4gIEBtZWRpYSAje21hcC1nZXQoJGJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludCl9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuQG1peGluIGNsZWFyZml4IHtcblx0Knpvb206IDE7XG5cdCY6OmFmdGVyIHtcblx0Y29udGVudDogJyc7XG5cdGRpc3BsYXk6IHRhYmxlO1xuXHRjbGVhcjogYm90aDtcblx0fVxufVxuQG1peGluIGltZ1pvb20ge1xuXHQtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7XG5cdHRyYW5zZm9ybTogc2NhbGUoMSk7XG5cdC13ZWJraXQtdHJhbnNpdGlvbjogLjNzIGVhc2UtaW4tb3V0O1xuXHR0cmFuc2l0aW9uOiAuM3MgZWFzZS1pbi1vdXQ7XG5cdCY6OmhvdmVye1xuXHRcdC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjIpO1xuXHRcdHRyYW5zZm9ybTogc2NhbGUoMS4yKTtcblx0fVxufVxuQG1peGluIGZvbnQtZmFjZSgkZmFtaWx5LCAkcGF0aCwgJHdlaWdodDogbm9ybWFsLCAkc3R5bGU6IG5vcm1hbCkge1xuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJGZhbWlseTtcbiAgICBzcmM6IHVybCgnI3skcGF0aH0ud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksXG4gICAgICAgICB1cmwoJyN7JHBhdGh9LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcbiAgICAgICAgIHVybCgnI3skcGF0aH0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcbiAgfVxufVxuQG1peGluIGxpbmstY29sb3IoJGNvbG9yKSB7XG4gICAgIGNvbG9yOiAkY29sb3I7XG4gICAgICBcbiAgICAgJjpob3ZlciwgJjphY3RpdmUsICY6Zm9jdXMge1xuICAgICAgICAgY29sb3I6IGxpZ2h0ZW4oJGNvbG9yLCAyMCUpO1xuICAgICB9XG59XG5AbWl4aW4gbGluay1iZy1jb2xvcigkY29sb3IpIHtcbiAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgICB0cmFuc2l0aW9uOiAxcztcbiAgICAgIFxuICAgICAmOmhvdmVyLCAmOmFjdGl2ZSwgJjpmb2N1cyB7XG4gICAgICAgICBiYWNrZ3JvdW5kOiBsaWdodGVuKCRjb2xvciwgMjAlKTtcbiAgICAgfVxufVxuQG1peGluIGxpbmstYm9yZGVyLWNvbG9yKCRjb2xvcikge1xuICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgICB0cmFuc2l0aW9uOiAxcztcbiAgICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yO1xuICAgICAmOmhvdmVyLCAmOmFjdGl2ZSwgJjpmb2N1cyB7XG4gICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgfVxufVxuQG1peGluIGZsZXh7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtd3JhcDogd3JhcDtcbn1cbkBtaXhpbiBmbGV4LWNlbnRlcntcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC13cmFwOiB3cmFwO1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbkBtaXhpbiBtYXJrZXIoJGNvbG9yKXtcblx0YmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQocmdiYSgyNTUsMjU1LDI1NSwwKSA2MCUsICRjb2xvciAwJSk7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwyNTUsMjU1LDApIDYwJSwgJGNvbG9yIDAlKTtcblxufVxuQG1peGluIHBvc2l0aW9uLWNlbnRlcntcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiAwO1xuXHRib3R0b206IDA7XG5cdG1hcmdpbjogYXV0bztcbn1cblxuXG5cbkBtaXhpbiBhbmltZS1ibGlua3tcblx0LmJsaW5rIHtcblx0ICAgIGFuaW1hdGlvbjogYmxpbmsgMnMgZWFzZSAwcyBpbmZpbml0ZSBub3JtYWw7XG5cdCAgICAtd2Via2l0LWFuaW1hdGlvbjogYmxpbmsgMnMgZWFzZSAwcyBpbmZpbml0ZSBub3JtYWwgO1xuXHR9XG5cdEBrZXlmcmFtZXMgYmxpbmsge1xuXHQgICAgMCUgeyBvcGFjaXR5OiAwIH1cblx0ICAgIFxuXHQgICAgMTAwJSB7IG9wYWNpdHk6IDEgfVxuXHR9XG5cdEAtd2Via2l0LWtleWZyYW1lcyBibGluayB7XG5cdCAgICAwJSB7IG9wYWNpdHk6IDAgfVxuXHQgICAgXG5cdCAgICAxMDAlIHsgb3BhY2l0eTogMSB9XG5cdH1cbn1cbkBtaXhpbiBhbmltZS1mdXdhdHtcblx0LmZ1d2F0QW5pbWUge1xuXHQgIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcblx0ICAtbXMtYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcblx0ICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuXHQgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAuNnM7XG5cdCAgLW1zLWFuaW1hdGlvbi1kdXJhdGlvbjogLjZzO1xuXHQgIGFuaW1hdGlvbi1kdXJhdGlvbjogLjZzO1xuXHQgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZ1d2F0QW5pbWU7XG5cdCAgLW1zLWFuaW1hdGlvbi1uYW1lOiBmdXdhdEFuaW1lO1xuXHQgIGFuaW1hdGlvbi1uYW1lOiBmdXdhdEFuaW1lO1xuXHQgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcbiAgXHR9XG5cdEAtd2Via2l0LWtleWZyYW1lcyBmdXdhdEFuaW1lIHtcblx0ICAwJSB7IG9wYWNpdHk6IDA7LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNTBweCk7fVxuXHQgIDEwMCUgeyBvcGFjaXR5OiAxOy13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9XG5cdH1cblx0QGtleWZyYW1lcyBmdXdhdEFuaW1lIHtcblx0ICAwJSB7IG9wYWNpdHk6IDA7LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNTBweCk7LW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg1MHB4KTt0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNTBweCk7fVxuXHQgIDEwMCUgeyBvcGFjaXR5OiAxOy13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOy1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO31cblx0fVxufVxuXG5AbWl4aW4gYW5pbWUtZnV3YXRfZnJvbVRvcHtcblx0LmZ1d2F0QW5pbWVGcm9tVG9wIHtcblx0ICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG5cdCAgLW1zLWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG5cdCAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcblx0ICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMS41cztcblx0ICAtbXMtYW5pbWF0aW9uLWR1cmF0aW9uOiAxLjVzO1xuXHQgIGFuaW1hdGlvbi1kdXJhdGlvbjogMS41cztcblx0ICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmdXdhdEFuaW1lRnJvbVRvcDtcblx0ICAtbXMtYW5pbWF0aW9uLW5hbWU6IGZ1d2F0QW5pbWVGcm9tVG9wO1xuXHQgIGFuaW1hdGlvbi1uYW1lOiBmdXdhdEFuaW1lRnJvbVRvcDtcblx0ICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIFx0fVxuXHRALXdlYmtpdC1rZXlmcmFtZXMgZnV3YXRBbmltZUZyb21Ub3Age1xuXHQgIDAlIHsgb3BhY2l0eTogMDstd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTBweCk7fVxuXHQgIDEwMCUgeyBvcGFjaXR5OiAxOy13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9XG5cdH1cblx0QGtleWZyYW1lcyBmdXdhdEFuaW1lRnJvbVRvcCB7XG5cdCAgMCUgeyBvcGFjaXR5OiAwOy13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MHB4KTstbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MHB4KTt0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwcHgpO31cblx0ICAxMDAlIHsgb3BhY2l0eTogMTstd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTstbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO3RyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTt9XG5cdH1cbn1cblxuQG1peGluIGFuaW1lLXN2ZygkY29sb3Ipe1xuXHQuZHJhd2luZ1RleHR7ICAgIFxuXHQgICAgc3Ryb2tlOiRjb2xvcjtcblx0ICAgIGZpbGw6JGNvbG9yO1xuXHQgICAgc3Ryb2tlLXdpZHRoOjE7XG5cdCAgICBzdHJva2UtZGFzaGFycmF5OiAzMDAwO1xuXHQgICAgc3Ryb2tlLWRhc2hvZmZzZXQ6MzAwMDtcblx0ICAgIGFuaW1hdGlvbjogREFTSCAycyBlYXNlLWluIGFsdGVybmF0ZSBmb3J3YXJkcztcblx0ICAgIC13ZWJraXQtYW5pbWF0aW9uOkRBU0ggMnMgZWFzZS1pbiBhbHRlcm5hdGUgZm9yd2FyZHM7XG5cdCAgICAtby1hbmltYXRpb246REFTSCAycyBlYXNlLWluIGFsdGVybmF0ZSBmb3J3YXJkcztcblx0ICAgIGFuaW1hdGlvbjpEQVNIIDJzIGVhc2UtaW4gYWx0ZXJuYXRlIGZvcndhcmRzO1xuXHR9XG5cdEAtd2Via2l0LWtleWZyYW1lcyBEQVNIe1xuXHRcdDAle3N0cm9rZS1kYXNob2Zmc2V0OjMwMDA7ZmlsbC1vcGFjaXR5OiAwO31cblx0XHQ4MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtmaWxsLW9wYWNpdHk6IDA7fVxuXHRcdDEwMCV7ZmlsbC1vcGFjaXR5OiAxO31cblx0fVxuXHRAa2V5ZnJhbWVzIERBU0h7XG5cdFx0MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MzAwMDtmaWxsLW9wYWNpdHk6IDA7fVxuXHRcdDgwJXtzdHJva2UtZGFzaG9mZnNldDowO2ZpbGwtb3BhY2l0eTogMDt9XG5cdFx0MTAwJXtmaWxsLW9wYWNpdHk6IDE7fVxuXHR9XG59XG5AbWl4aW4gbG9hZGluZ3tcblx0I2xvYWRlci1iZyB7XG5cdFx0cG9zaXRpb246IGZpeGVkO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogMTAwdmg7XG5cdFx0dG9wOiAwcHg7XG5cdFx0bGVmdDogMHB4O1xuXHRcdGJhY2tncm91bmQ6ICNGRkY7XG5cdFx0ei1pbmRleDogMTtcblx0XHR6LWluZGV4OiA5OTk5OTtcblx0XHRcblx0XHQjbG9hZGluZ3tcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRAaW5jbHVkZSBtcShwYyl7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRtYXJnaW46IGF1dG87XG5cdFx0XHRcdGhlaWdodDoxMDAlXG5cdFx0XHR9XG5cdFx0XHRAaW5jbHVkZSBtcShzcCl7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRtYXJnaW46IGF1dG87XG5cdFx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdH1cblx0XHRcdGRpdntcblx0XHRcdFx0QGluY2x1ZGUgbXEocGMpe1xuXHRcdFx0XHRcdHdpZHRoOiAyMCU7XG5cdFx0XHRcdFx0bWFyZ2luOiBhdXRvO1xuXHRcdFx0XHR9XG5cdFx0XHRcdEBpbmNsdWRlIG1xKHNwKXtcblx0XHRcdFx0XHR3aWR0aDogNDAlO1xuXHRcdFx0XHRcdG1hcmdpbjogYXV0bztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuQG1peGluIG1vbm9xbG97XG5cdC5tb25vcWxve1xuXHRcdC13ZWJraXQtZmlsdGVyOiBncmF5c2NhbGUoMTAwJSk7XG4gIFx0XHRmaWx0ZXI6IGdyYXlzY2FsZSgxMDAlKTtcblx0fVxufVxuQG1peGluIGFuaW1lLWRyYXdUaGVMaW5le1xuXHRALXdlYmtpdC1rZXlmcmFtZXMgIGRyYXdUaGVMaW5le1xuXHQgIGZyb217XG5cdCAgICAgIGJhY2tncm91bmQtc2l6ZTogMCUgMTAwJTtcblx0ICAgICAgXG5cdCAgICB9XG5cdCAgMTAwJXtcblx0ICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XG5cdCAgICAgIFxuXHQgIH1cblx0fVxuXG5cdEBrZXlmcmFtZXMgIGRyYXdUaGVMaW5le1xuXHQgIGZyb217XG5cdCAgICAgIGJhY2tncm91bmQtc2l6ZTogMCUgMTAwJTtcblx0ICAgICAgLW1zLWJhY2tncm91bmQtc2l6ZTogMCUgMTAwJTtcblx0ICAgIH1cblx0ICAxMDAle1xuXHQgICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcblx0ICAgICAgLW1zLWJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xuXHQgIH1cblx0fVxuXG59IiwiI2Zvb3RlciB7XG4gIGJhY2tncm91bmQ6ICNmNmY2ZjY7XG4gICAgcGFkZGluZzogNTBweCAwO1xuICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgcGFkZGluZzogMTAwcHggMDtcbiAgICB9XG4gICAgLndyYXAge1xuICAgICAgQGluY2x1ZGUgbXEocGMpIHtcbiAgICAgICAgLyp3aWR0aDogMzglO1xuICAgICAgICBtYXgtd2lkdGg6IDEyODBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87Ki9cbiAgICAgIH1cbiAgICAgIHAge1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZm9udC1mYW1pbHk6IGEtb3RmLWZ1dG8tZ28tYjEwMS1wcjZuLCBzYW5zLXNlcmlmO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4O1xuICAgICAgICB0ZXh0LWluZGVudDogMXB4O1xuICAgICAgICAvL21hcmdpbi1ib3R0b206IDguOCU7XG4gICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgLy9tYXJnaW4tYm90dG9tOiAxMC41JTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaDQge1xuICAgICAgICB3aWR0aDogNDYlO1xuICAgICAgICBtYXJnaW46IDAgYXV0byAyNXB4O1xuICAgICAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgIHdpZHRoOiAxNC44JTtcbiAgICAgICAgICBtYXJnaW46IDAgYXV0byA0MHB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICYuY2FzdWFsVG9wIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICB3aWR0aDogMTgwcHg7XG4gICAgICAgICAgbWFyZ2luOiAwIGF1dG8gNjBweDtcbiAgICAgICAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjNDQ0O1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIEBpbmNsdWRlIG1xKHBjKSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuNnJlbTtcbiAgICAgICAgICAgIHdpZHRoOiAyNDBweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE0cHggMDtcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDEyMHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJi5pbnN0YSB7XG4gICAgICAgICAgd2lkdGg6IDEwJTtcbiAgICAgICAgICBtYXgtd2lkdGg6IDIwcHg7XG4gICAgICAgICAgbWFyZ2luOiAwIGF1dG8gMjBweDtcbiAgICAgICAgICBAaW5jbHVkZSBtcShwYykge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gNDBweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBwIHtcbiAgICAgICAgXG4gICAgICAgIEBpbmNsdWRlIG1xKHBjKXtcbiAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiBhLW90Zi1mdXRvLWdvLWIxMDEtcHI2biwgc2Fucy1zZXJpZjtcbiAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gICAgICAgICAgdGV4dC1pbmRlbnQ6IDFweDtcbiAgICAgICAgfVxuICAgICAgICBzbWFsbCB7XG4gICAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUlBOzhDQUM4QztBY0Q1QyxBQUFBLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU07QUFDN0MsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFF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 */
