@media (min-width: 900px) {
  body header {
    min-height: 350px;
    width: 100%;
  }
}
body navigation-bar {
  background-color: initial !important;
}
body navigation-bar::before {
  display: none;
}
body > gallery-container {
  z-index: -1;
  grid-row: 1/span 2;
  grid-column: 1/-1;
  --background-theme-one: #1e1c1c;
  --background-theme-two: var(--primary, #131f6b);
}
body > gallery-container .slide.image {
  filter: saturate(0.4);
}
body > gallery-container::after {
  content: "";
  position: absolute;
  pointer-events: none;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(to bottom, var(--background-theme-one) 5%, rgba(19, 31, 107, 0.5), var(--background-theme-two) 80%);
}

.header {
  display: flex;
  flex-direction: column;
  place-items: center;
  place-content: center;
  place-self: center;
  max-width: 1400px;
  text-align: center;
  align-self: flex-start;
  position: relative;
  --translate-y: -20px;
}
@media (max-width: 900px) {
  .header {
    padding-bottom: 0;
  }
}
@media (min-width: 901px) {
  .header .heading,
  .header .sub-heading {
    max-width: 50%;
    margin: 0 auto;
  }
}
.header .heading {
  color: white;
}
.header .sub-heading {
  font-size: 18px;
}
.header .sub-heading,
.header tag-line {
  margin: var(--gutter1) auto;
}
.header tag-line {
  padding-bottom: 10px;
}
@media (max-width: 400px) {
  .header tag-line {
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--gap);
  }
}
.header .heading,
.header .sub-heading,
.header search-bar {
  opacity: 0;
  transform: translateY(var(--translate-y));
}
.header.in-view .heading,
.header.in-view .sub-heading,
.header.in-view search-bar {
  --translate-y: 0;
  opacity: 1;
  transition: opacity 1.2s cubic-bezier(0.165, 0.84, 0.44, 1) 0.2s, transform 1.2s cubic-bezier(0.165, 0.84, 0.44, 1) 0.2s;
}
.header.in-view .sub-heading {
  transition-delay: 0.4s, 0.4s;
}
.header.in-view search-bar {
  transition-delay: 0.6s, 0.6s;
}
.header .header-grid {
  display: grid;
  grid-template-columns: 2fr 1fr;
  margin-bottom: var(--spacer0);
  align-items: center;
}
.header .header-grid .heading,
.header .header-grid .sub-heading {
  max-width: 75%;
  text-align: left;
  margin-left: 0;
}
@media (max-width: 768px) {
  .header .header-grid {
    grid-template-columns: 1fr;
  }
  .header .header-grid .heading,
  .header .header-grid .sub-heading {
    text-align: center;
    margin-left: auto;
    margin-right: auto;
  }
}

.iso-banner {
  grid-row: 3;
  width: 100vw;
  left: calc(-50vw + 50%);
  background-color: #76bb28;
  text-align: center;
  color: white;
  padding-top: calc(var(--gap) * 2);
  padding-bottom: calc(var(--gap) * 2);
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.iso-banner h2 {
  margin-bottom: var(--gap);
  color: white;
}
.iso-banner h2 span {
  display: block;
  font-size: 16px;
  font-weight: 300;
  padding: 0 calc(var(--gap) * 2);
  font-family: "montserrat", sans-serif;
}
.iso-banner ~ main {
  --row-main: 4;
}
@media (min-width: 768px) {
  .iso-banner {
    position: absolute;
    height: 180px;
    width: auto;
    aspect-ratio: 1;
    border-radius: 50%;
    top: 20vh;
    right: 10vw;
    left: unset;
    transform: rotate(15deg);
    grid-row: unset;
    padding: var(--gap) calc(var(--gap) * 0.5);
  }
  .iso-banner h2 {
    margin-bottom: 0;
  }
  .iso-banner ~ main {
    --row-main: 3;
  }
}

.ecovadis-top-banner {
  display: none;
  position: absolute;
  height: 150px;
  width: auto;
  aspect-ratio: 1;
  border-radius: 50%;
  top: 2em;
  left: 0;
}
.ecovadis-top-banner img {
  width: 100%;
}
@media (min-width: 901px) {
  .ecovadis-top-banner {
    display: block;
  }
}

navigation-bar {
  background-color: initial;
  background: initial;
  align-self: flex-start;
  padding-top: var(--spacer0);
  padding-bottom: var(--spacer0);
}
navigation-bar::before {
  display: none;
}

#hero.promos {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  width: 100vw;
  margin-left: -50vw;
  left: 50%;
  box-shadow: initial;
  grid-template-rows: repeat(2, 1fr);
  grid-template-columns: 100%;
  grid-gap: 0;
  overflow-y: clip;
}
#hero.promos .promo tag-line {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
}
@media (min-width: 769px) {
  #hero.promos {
    grid-template-columns: repeat(2, 1fr);
    grid-template-rows: 100%;
  }
}
#hero.promos > .image,
#hero.promos .simpleParallax {
  position: absolute;
  max-height: 100vh;
  height: 100%;
  width: 100%;
  top: 0;
}
#hero.promos .quote {
  --quote-icon-size: 40px;
  position: relative;
  grid-row: 1;
  background-color: rgba(19, 31, 107, 0.9);
  border-radius: 0;
  border: none;
  height: -moz-fit-content;
  height: fit-content;
  padding: calc(var(--spacer1) + var(--quote-icon-size)) var(--gutter4) var(--spacer1) var(--gutter4);
  display: flex;
  flex-direction: column;
}
#hero.promos .quote blockquote {
  color: white;
}
#hero.promos .quote blockquote::before, #hero.promos .quote blockquote::after {
  opacity: 0.2;
  width: var(--quote-icon-size);
  height: var(--quote-icon-size);
  top: calc(-1 * var(--quote-icon-size));
}
#hero.promos .quote blockquote::after {
  display: none;
}
#hero.promos .quote img {
  margin-top: var(--gap);
  max-width: 130px;
}
#hero.promos .quote figcaption {
  color: #df3035;
  width: 100%;
  text-transform: uppercase;
}
#hero.promos .quote figcaption cite {
  font-style: normal;
  font-family: lato, sans-serif;
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
#hero.promos .quote figcaption cite svg {
  display: none;
}
#hero.promos .quote figcaption cite::before {
  content: initial;
}
@media (hover: hover) {
  #hero.promos .quote figcaption cite a:hover {
    color: white;
  }
}
#hero.promos .metal-links {
  grid-row: 1/-1;
  padding: var(--gutter2);
  display: grid;
  grid-gap: 0 var(--gutter1);
  grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
}
@media (max-width: 480px) {
  #hero.promos .metal-links {
    grid-template-columns: 1fr;
  }
}
#hero.promos .metal-links .text {
  grid-column: 1/-1;
}
#hero.promos .metal-links .text > h3 {
  font-size: 2em;
  line-height: 1.3;
  margin-bottom: calc(var(--gap) * 0.5);
  color: #131f6b;
}
#hero.promos .metal-links .text > h3 + p {
  color: #df3035;
  max-width: 600px;
  font-size: 1.0625em;
  line-height: 1.6;
}
#hero.promos .metal-links p.contains-button {
  margin-top: var(--gutter1);
  color: #131f6b;
  display: block;
  font-size: 1.0625em;
  line-height: 1.6;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
}
#hero.promos .metal-links p.contains-button .button {
  width: -moz-fit-content;
  width: fit-content;
  white-space: nowrap;
}
#hero.promos .metal-links .list-dropdowns {
  margin-top: var(--gutter1);
}
#hero.promos .metal-links .list-dropdowns .heading {
  font-size: 1.5625em;
  line-height: 1.6;
  text-transform: uppercase;
  color: #3d3f7f;
}
#hero.promos .metal-links button-container {
  margin-top: var(--spacer0);
  grid-column: 1/-1;
}
@media (min-width: 1681px) {
  #hero.promos .quote {
    padding-left: calc(var(--computed-gutter) + var(--gutter6));
  }
}
@media (max-width: 1400px) {
  #hero.promos .quote {
    --quote-icon-size: 20px;
    padding-left: var(--gutter2);
    padding-right: var(--gutter2);
  }
}
@media (max-width: 1120px) {
  #hero.promos {
    grid-template-rows: auto;
    grid-gap: 0;
  }
  #hero.promos .quote {
    align-items: center;
    text-align: center;
    position: relative;
  }
  #hero.promos .quote blockquote {
    position: relative;
    max-width: 700px;
  }
  #hero.promos .quote blockquote::before, #hero.promos .quote blockquote::after {
    padding: 0;
    width: 20px;
    height: 20px;
    position: absolute;
  }
  #hero.promos .quote blockquote::before {
    left: calc(var(--gap) * 0.5);
  }
  #hero.promos .quote blockquote::after {
    right: calc(var(--gap) * 0.5);
    display: block;
  }
  #hero.promos .metal-links button-container {
    justify-content: center;
  }
}

markets-summary {
  margin-top: 1px;
  box-shadow: 0px -1px var(--border-top-colour, #46528a);
}
markets-summary::before {
  box-shadow: inherit;
  border: initial;
}
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhZ2VzL2hvbWUuc2NzcyIsInBhZ2VzL2hvbWUuY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bkb2dnaXN0eWxlL3Nhc3MvbGlicmFyeS9zcmMvaGVscGVycy9fYnJlYWsuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZG9nZ2lzdHlsZS9zYXNzL2xpYnJhcnkvc3JjL2NyZWF0ZS9fdW5pdHMuc2NzcyIsIl92YXJpYWJsZXMvY29sb3Vycy5zY3NzIiwiX3ZhcmlhYmxlcy9mb250cy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bkb2dnaXN0eWxlL3Nhc3MvbGlicmFyeS9zcmMvY29sbGVjdGlvbnMvc3R5bGluZy9faG92ZXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZG9nZ2lzdHlsZS9zYXNzL2xpYnJhcnkvc3JjL2NyZWF0ZS9faGVhZGluZ3Muc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJSTtFQURGO0lBRUksaUJBQUE7SUFDQSxXQUFBO0VDRko7QUFDRjtBREtFO0VBQ0Usb0NBQUE7QUNISjtBRElJO0VBQ0UsYUFBQTtBQ0ZOO0FETUU7RUFDRSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtFQUVBLCtCQUFBO0VBQ0EsK0NBQUE7QUNMSjtBRFFNO0VBQ0UscUJBQUE7QUNOUjtBRFVJO0VBQ0UsV0FBQTtFQUNBLGtCQUFBO0VBQ0Esb0JBQUE7RUFDQSxNQUFBO0VBQ0EsT0FBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsK0hBQUE7QUNSTjs7QURhQTtFQUNFLGFBQUE7RUFDQSxzQkFBQTtFQUNBLG1CQUFBO0VBQ0EscUJBQUE7RUFDQSxrQkFBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxzQkFBQTtFQUNBLGtCQUFBO0VBc0NBLG9CQUFBO0FDL0NGO0FDakNFO0VGaUNGO0lBWUksaUJBQUE7RUNSRjtBQUNGO0FDNUNFO0VGdURFOztJQUVFLGNBQUE7SUFDQSxjQUFBO0VDUko7QUFDRjtBRFdFO0VBQ0UsWUFBQTtBQ1RKO0FEWUU7RUFDRSxlQUFBO0FDVko7QURhRTs7RUFFRSwyQkFBQTtBQ1hKO0FEY0U7RUFDRSxvQkFBQTtBQ1pKO0FDMURFO0VGcUVBO0lBR0ksZUFBQTtJQUNBLHVCQUFBO0lBQ0EsZUdsQ0U7RUZ3Qk47QUFDRjtBRGlCRTs7O0VBR0UsVUFBQTtFQUNBLHlDQUFBO0FDZko7QURtQkk7OztFQUdFLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLHdIQUFBO0FDakJOO0FEbUJJO0VBQ0UsNEJBQUE7QUNqQk47QURtQkk7RUFDRSw0QkFBQTtBQ2pCTjtBRHFCRTtFQUNFLGFBQUE7RUFDQSw4QkFBQTtFQUNBLDZCR2ZPO0VIZ0JQLG1CQUFBO0FDbkJKO0FEb0JJOztFQUVFLGNBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7QUNsQk47QURvQkk7RUFYRjtJQVlJLDBCQUFBO0VDakJKO0VEa0JJOztJQUVFLGtCQUFBO0lBQ0EsaUJBQUE7SUFDQSxrQkFBQTtFQ2hCTjtBQUNGOztBRHFCQTtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0EsdUJBQUE7RUFDQSx5QkkvR087RUpnSFAsa0JBQUE7RUFDQSxZQUFBO0VBQ0EsaUNHOUZNO0VIK0ZOLG9DRy9GTTtFSGdHTixrQkFBQTtFQUNBLGFBQUE7RUFDQSxzQkFBQTtFQUNBLHVCQUFBO0FDbEJGO0FEbUJFO0VBQ0UseUJHdEdJO0VIdUdKLFlBQUE7QUNqQko7QURrQkk7RUFDRSxjQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0VBQ0EsK0JBQUE7RUFDQSxxQ0FBQTtBQ2hCTjtBRG9CRTtFQUNFLGFBQUE7QUNsQko7QURxQkU7RUE3QkY7SUE4Qkksa0JBQUE7SUFDQSxhQUFBO0lBQ0EsV0FBQTtJQUNBLGVBQUE7SUFDQSxrQkFBQTtJQUNBLFNBQUE7SUFDQSxXQUFBO0lBQ0EsV0FBQTtJQUNBLHdCQUFBO0lBQ0EsZUFBQTtJQUNBLDBDQUFBO0VDbEJGO0VEbUJFO0lBQ0UsZ0JBQUE7RUNqQko7RURvQkU7SUFDRSxhQUFBO0VDbEJKO0FBQ0Y7O0FEc0JBO0VBQ0UsYUFBQTtFQUNBLGtCQUFBO0VBQ0EsYUFBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxRQUFBO0VBQ0EsT0FBQTtBQ25CRjtBRHFCRTtFQUNFLFdBQUE7QUNuQko7QUNqTEU7RUZ5TEY7SUFlSSxjQUFBO0VDbkJGO0FBQ0Y7O0FEc0JBO0VBQ0UseUJBQUE7RUFDQSxtQkFBQTtFQUNBLHNCQUFBO0VBQ0EsMkJHN0dTO0VIOEdULDhCRzlHUztBRjJGWDtBRG9CRTtFQUNFLGFBQUE7QUNsQko7O0FEd0JBO0VBQ0UseUJBQUE7RUFDQSw0QkFBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxtQkFBQTtFQUNBLGtDQUFBO0VBQ0EsMkJBQUE7RUFDQSxXQUFBO0VBQ0EsZ0JBQUE7QUNyQkY7QUR1Qkk7RUFDRSxhQUFBO0VBQ0EsZUFBQTtFQUNBLHVCQUFBO0FDckJOO0FDbk5FO0VGeU5GO0lBb0JJLHFDQUFBO0lBQ0Esd0JBQUE7RUN0QkY7QUFDRjtBRHdCRTs7RUFFRSxrQkFBQTtFQUNBLGlCQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQSxNQUFBO0FDdEJKO0FEd0JFO0VBQ0UsdUJBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSx3Q0FBQTtFQUNBLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLHdCQUFBO0VBQUEsbUJBQUE7RUFDQSxtR0FBQTtFQUNBLGFBQUE7RUFDQSxzQkFBQTtBQ3RCSjtBRHdCSTtFQUNFLFlBQUE7QUN0Qk47QUR1Qk07RUFFRSxZQUFBO0VBQ0EsNkJBQUE7RUFDQSw4QkFBQTtFQUNBLHNDQUFBO0FDdEJSO0FEd0JNO0VBQ0UsYUFBQTtBQ3RCUjtBRHlCSTtFQUNFLHNCR3JPRTtFSHNPRixnQkFBQTtBQ3ZCTjtBRHlCSTtFQUNFLGNJcFFBO0VKcVFBLFdBQUE7RUFDQSx5QkFBQTtBQ3ZCTjtBRHdCTTtFQUNFLGtCQUFBO0VLcFFOLDZCQUFBO0VBQ0Esa0JBQUE7RUFPRSxnQkFBQTtFQUdGLGtCQUFBO0VBQ0EsbUNBQUE7RUFDRCxrQ0FBQTtBSnVPRDtBRGtCUTtFQUNFLGFBQUE7QUNoQlY7QURrQlE7RUFDRSxnQkFBQTtBQ2hCVjtBS2pSRTtFQUNFO0lOb1NRLFlBQUE7RUNoQlY7QUFDRjtBRHNCRTtFQUNFLGNBQUE7RUFDQSx1Qkc5S087RUgrS1AsYUFBQTtFQUNBLDBCQUFBO0VBQ0EsMkRBQUE7QUNwQko7QUN2UkU7RUZzU0E7SUFRSSwwQkFBQTtFQ25CSjtBQUNGO0FEcUJJO0VBQ0UsaUJBQUE7QUNuQk47QURvQk07RU85S0osY0FBQTtFQVdJLGdCQTNGYztFUGdRWixxQ0c5UUE7RUgrUUEsY0kvU0Q7QUg4UlA7QURrQlE7RUFDRSxjSTNTSjtFSjRTSSxnQkFBQTtFTzVJUixtQkFBQTtFQVdJLGdCQXpIYztBTjRPcEI7QURvQkk7RUFDRSwwQkd2TUs7RUh3TUwsY0kxVEM7RUoyVEQsY0FBQTtFT3JKSixtQkFBQTtFQVdJLGdCQXpIYztFUHFRZCxhQUFBO0VBQ0EsZUFBQTtFQUVBLG1CQUFBO0FDbEJOO0FEbUJNO0VBQ0UsdUJBQUE7RUFBQSxrQkFBQTtFQUNBLG1CQUFBO0FDakJSO0FEb0JJO0VBQ0UsMEJHck5LO0FGbU1YO0FEbUJNO0VPdExKLG1CQUFBO0VBV0ksZ0JBMUdjO0VQdVJaLHlCQUFBO0VBQ0EsY0l6VUE7QUh5VFI7QURvQkk7RUFDRSwwQkcxUEs7RUgyUEwsaUJBQUE7QUNsQk47QUM1VUU7RUZrV0U7SUFDRSwyREFBQTtFQ25CSjtBQUNGO0FDM1VFO0VGaVdFO0lBQ0UsdUJBQUE7SUFDQSw0Qkd6T0s7SUgwT0wsNkJHMU9LO0VGdU5UO0FBQ0Y7QUNsVkU7RUZtTkY7SUFxSkksd0JBQUE7SUFDQSxXQUFBO0VDbEJGO0VEbUJFO0lBQ0UsbUJBQUE7SUFDQSxrQkFBQTtJQUNBLGtCQUFBO0VDakJKO0VEbUJJO0lBQ0Usa0JBQUE7SUFDQSxnQkFBQTtFQ2pCTjtFRGtCTTtJQUVFLFVBQUE7SUFDQSxXQUFBO0lBQ0EsWUFBQTtJQUNBLGtCQUFBO0VDakJSO0VEbUJNO0lBQ0UsNEJHblZGO0VGa1VOO0VEbUJNO0lBQ0UsNkJHdFZGO0lIdVZFLGNBQUE7RUNqQlI7RURxQkU7SUFDRSx1QkFBQTtFQ25CSjtBQUNGOztBRHVCQTtFQUNFLGVBQUE7RUFDQSxzREFBQTtBQ3BCRjtBRHFCRTtFQUNFLG1CQUFBO0VBQ0EsZUFBQTtBQ25CSiIsImZpbGUiOiJwYWdlcy9ob21lLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJ19tb2R1bGVzJyBhcyAqO1xuXG5ib2R5IHtcbiAgaGVhZGVyIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogOTAwcHgpIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDM1MHB4O1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGlvbi1iYXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICA+IGdhbGxlcnktY29udGFpbmVyIHtcbiAgICB6LWluZGV4OiAtMTtcbiAgICBncmlkLXJvdzogMSAvIHNwYW4gMjtcbiAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xuXG4gICAgLS1iYWNrZ3JvdW5kLXRoZW1lLW9uZTogI3skYmxhY2t9O1xuICAgIC0tYmFja2dyb3VuZC10aGVtZS10d286ICN7JHByaW1hcnl9O1xuXG4gICAgLnNsaWRlIHtcbiAgICAgICYuaW1hZ2Uge1xuICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDAuNCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHZhcigtLWJhY2tncm91bmQtdGhlbWUtb25lKSA1JSwgcmdiYSgxOSwgMzEsIDEwNywgMC41KSwgdmFyKC0tYmFja2dyb3VuZC10aGVtZS10d28pIDgwJSk7XG4gICAgfVxuICB9XG59XG5cbi5oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwbGFjZS1pdGVtczogY2VudGVyO1xuICBwbGFjZS1jb250ZW50OiBjZW50ZXI7XG4gIHBsYWNlLXNlbGY6IGNlbnRlcjtcbiAgbWF4LXdpZHRoOiAxNDAwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIEBpbmNsdWRlIGJyZWFrLWluKDkwMCkge1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWstb3V0KDkwMCkge1xuICAgIC5oZWFkaW5nLFxuICAgIC5zdWItaGVhZGluZyB7XG4gICAgICBtYXgtd2lkdGg6IDUwJTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxuXG4gIC5oZWFkaW5nIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gIH1cblxuICAuc3ViLWhlYWRpbmcge1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgfVxuXG4gIC5zdWItaGVhZGluZyxcbiAgdGFnLWxpbmUge1xuICAgIG1hcmdpbjogJGd1dHRlciBhdXRvO1xuICB9XG5cbiAgdGFnLWxpbmUge1xuICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICAgIEBpbmNsdWRlIGJyZWFrLWluKDQwMHB4KSB7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGdhcDogJGdhcDtcbiAgICB9XG4gIH1cblxuICAvLyBUcmFuc2l0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAtLXRyYW5zbGF0ZS15OiAtMjBweDtcblxuICAuaGVhZGluZyxcbiAgLnN1Yi1oZWFkaW5nLFxuICBzZWFyY2gtYmFyIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS10cmFuc2xhdGUteSkpO1xuICB9XG5cbiAgJi5pbi12aWV3IHtcbiAgICAuaGVhZGluZyxcbiAgICAuc3ViLWhlYWRpbmcsXG4gICAgc2VhcmNoLWJhciB7XG4gICAgICAtLXRyYW5zbGF0ZS15OiAwO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMS4ycyAkZWFzZS1vdXQtcXVhcnQgMC4ycywgdHJhbnNmb3JtIDEuMnMgJGVhc2Utb3V0LXF1YXJ0IDAuMnM7XG4gICAgfVxuICAgIC5zdWItaGVhZGluZyB7XG4gICAgICB0cmFuc2l0aW9uLWRlbGF5OiAwLjRzLCAwLjRzO1xuICAgIH1cbiAgICBzZWFyY2gtYmFyIHtcbiAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuNnMsIDAuNnM7XG4gICAgfVxuICB9XG5cbiAgLmhlYWRlci1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMmZyIDFmcjtcbiAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2VyMDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIC5oZWFkaW5nLFxuICAgIC5zdWItaGVhZGluZyB7XG4gICAgICBtYXgtd2lkdGg6IDc1JTtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgIC5oZWFkaW5nLFxuICAgICAgLnN1Yi1oZWFkaW5nIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uaXNvLWJhbm5lciB7XG4gIGdyaWQtcm93OiAzO1xuICB3aWR0aDogMTAwdnc7XG4gIGxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW4yO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgcGFkZGluZy10b3A6ICRnYXAyO1xuICBwYWRkaW5nLWJvdHRvbTogJGdhcDI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGgyIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkZ2FwO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBzcGFuIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICAgIHBhZGRpbmc6IDAgJGdhcDI7XG4gICAgICBmb250LWZhbWlseTogJ21vbnRzZXJyYXQnLCBzYW5zLXNlcmlmO1xuICAgIH1cbiAgfVxuXG4gICYgfiBtYWluIHtcbiAgICAtLXJvdy1tYWluOiA0O1xuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogMTgwcHg7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgYXNwZWN0LXJhdGlvOiAxO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB0b3A6IDIwdmg7XG4gICAgcmlnaHQ6IDEwdnc7XG4gICAgbGVmdDogdW5zZXQ7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTVkZWcpO1xuICAgIGdyaWQtcm93OiB1bnNldDtcbiAgICBwYWRkaW5nOiAkZ2FwICRnYXAwO1xuICAgIGgyIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgJiB+IG1haW4ge1xuICAgICAgLS1yb3ctbWFpbjogMztcbiAgICB9XG4gIH1cbn1cblxuLmVjb3ZhZGlzLXRvcC1iYW5uZXIge1xuICBkaXNwbGF5OiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGhlaWdodDogMTUwcHg7XG4gIHdpZHRoOiBhdXRvO1xuICBhc3BlY3QtcmF0aW86IDE7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgdG9wOiAyZW07XG4gIGxlZnQ6IDA7XG5cbiAgaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrLW91dCg5MDApIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG5uYXZpZ2F0aW9uLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7XG4gIGJhY2tncm91bmQ6IGluaXRpYWw7XG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gIHBhZGRpbmctdG9wOiAkc3BhY2VyMDtcbiAgcGFkZGluZy1ib3R0b206ICRzcGFjZXIwO1xuICAmOjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLy8gSGVybyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuI2hlcm8ucHJvbW9zIHtcbiAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcbiAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgd2lkdGg6IDEwMHZ3O1xuICBtYXJnaW4tbGVmdDogLTUwdnc7XG4gIGxlZnQ6IDUwJTtcbiAgYm94LXNoYWRvdzogaW5pdGlhbDtcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoMiwgMWZyKTtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxMDAlO1xuICBncmlkLWdhcDogMDtcbiAgb3ZlcmZsb3cteTogY2xpcDtcbiAgLnByb21vIHtcbiAgICB0YWctbGluZSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWstb3V0KDc2OCkge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxMDAlO1xuICB9XG5cbiAgPiAuaW1hZ2UsXG4gIC5zaW1wbGVQYXJhbGxheCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG1heC1oZWlnaHQ6IDEwMHZoO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB0b3A6IDA7XG4gIH1cbiAgLnF1b3RlIHtcbiAgICAtLXF1b3RlLWljb24tc2l6ZTogNDBweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZ3JpZC1yb3c6IDE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkYmx1ZSwgMC45KTtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICAgIHBhZGRpbmc6IGNhbGMoI3skc3BhY2VyfSArIHZhcigtLXF1b3RlLWljb24tc2l6ZSkpICRndXR0ZXI0ICRzcGFjZXIgJGd1dHRlcjQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgYmxvY2txdW90ZSB7XG4gICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAmOjpiZWZvcmUsXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIG9wYWNpdHk6IDAuMjtcbiAgICAgICAgd2lkdGg6IHZhcigtLXF1b3RlLWljb24tc2l6ZSk7XG4gICAgICAgIGhlaWdodDogdmFyKC0tcXVvdGUtaWNvbi1zaXplKTtcbiAgICAgICAgdG9wOiBjYWxjKC0xICogdmFyKC0tcXVvdGUtaWNvbi1zaXplKSk7XG4gICAgICB9XG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICAgIGltZyB7XG4gICAgICBtYXJnaW4tdG9wOiAkZ2FwO1xuICAgICAgbWF4LXdpZHRoOiAxMzBweDtcbiAgICB9XG4gICAgZmlnY2FwdGlvbiB7XG4gICAgICBjb2xvcjogJHJlZDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIGNpdGUge1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtbGF0byhib2xkKTtcbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgY29udGVudDogaW5pdGlhbDtcbiAgICAgICAgfVxuICAgICAgICBhIHtcbiAgICAgICAgICBAaW5jbHVkZSBob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1ldGFsLWxpbmtzIHtcbiAgICBncmlkLXJvdzogMSAvIC0xO1xuICAgIHBhZGRpbmc6ICRndXR0ZXIyO1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC1nYXA6IDAgJGd1dHRlcjtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDM0MHB4LCAxZnIpKTtcblxuICAgIEBpbmNsdWRlIGJyZWFrLWluKHNtYWxsKSB7XG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG5cbiAgICAudGV4dCB7XG4gICAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xuICAgICAgPiBoMyB7XG4gICAgICAgIEBpbmNsdWRlIGhlYWRpbmctaDI7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRnYXAwO1xuICAgICAgICBjb2xvcjogJGJsdWU7XG4gICAgICAgICsgcCB7XG4gICAgICAgICAgY29sb3I6ICRyZWQ7XG4gICAgICAgICAgbWF4LXdpZHRoOiA2MDBweDtcbiAgICAgICAgICBAaW5jbHVkZSBoZWFkaW5nLWg0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcC5jb250YWlucy1idXR0b24ge1xuICAgICAgbWFyZ2luLXRvcDogJGd1dHRlcjtcbiAgICAgIGNvbG9yOiAkYmx1ZTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgQGluY2x1ZGUgaGVhZGluZy1oNDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAvLyBnYXA6JGdhcDAgJGdhcDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAuYnV0dG9uIHtcbiAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuICAgIH1cbiAgICAubGlzdC1kcm9wZG93bnMge1xuICAgICAgbWFyZ2luLXRvcDogJGd1dHRlcjtcbiAgICAgIC5oZWFkaW5nIHtcbiAgICAgICAgQGluY2x1ZGUgaGVhZGluZy1oMztcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgY29sb3I6ICRibHVlMztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBidXR0b24tY29udGFpbmVyIHtcbiAgICAgIG1hcmdpbi10b3A6ICRzcGFjZXIwO1xuICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgYnJlYWstb3V0KG1heCkge1xuICAgIC5xdW90ZSB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tY29tcHV0ZWQtZ3V0dGVyKSArICN7JGd1dHRlcjZ9KTtcbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgYnJlYWstaW4obGFyZ2UpIHtcbiAgICAucXVvdGUge1xuICAgICAgLS1xdW90ZS1pY29uLXNpemU6IDIwcHg7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRndXR0ZXIyO1xuICAgICAgcGFkZGluZy1yaWdodDogJGd1dHRlcjI7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIGJyZWFrLWluKG1lZGl1bSkge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0bztcbiAgICBncmlkLWdhcDogMDtcbiAgICAucXVvdGUge1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgYmxvY2txdW90ZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWF4LXdpZHRoOiA3MDBweDtcbiAgICAgICAgJjo6YmVmb3JlLFxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB9XG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgbGVmdDogJGdhcDA7XG4gICAgICAgIH1cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIHJpZ2h0OiAkZ2FwMDtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAubWV0YWwtbGlua3MgYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG4gIH1cbn1cblxubWFya2V0cy1zdW1tYXJ5IHtcbiAgbWFyZ2luLXRvcDogMXB4O1xuICBib3gtc2hhZG93OiAwcHggLTFweCB2YXIoLS1ib3JkZXItdG9wLWNvbG91ciwgIzQ2NTI4YSk7XG4gICY6OmJlZm9yZSB7XG4gICAgYm94LXNoYWRvdzogaW5oZXJpdDtcbiAgICBib3JkZXI6IGluaXRpYWw7XG4gIH1cbn1cbiIsIkBtZWRpYSAobWluLXdpZHRoOiA5MDBweCkge1xuICBib2R5IGhlYWRlciB7XG4gICAgbWluLWhlaWdodDogMzUwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cbmJvZHkgbmF2aWdhdGlvbi1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsICFpbXBvcnRhbnQ7XG59XG5ib2R5IG5hdmlnYXRpb24tYmFyOjpiZWZvcmUge1xuICBkaXNwbGF5OiBub25lO1xufVxuYm9keSA+IGdhbGxlcnktY29udGFpbmVyIHtcbiAgei1pbmRleDogLTE7XG4gIGdyaWQtcm93OiAxL3NwYW4gMjtcbiAgZ3JpZC1jb2x1bW46IDEvLTE7XG4gIC0tYmFja2dyb3VuZC10aGVtZS1vbmU6ICMxZTFjMWM7XG4gIC0tYmFja2dyb3VuZC10aGVtZS10d286IHZhcigtLXByaW1hcnksICMxMzFmNmIpO1xufVxuYm9keSA+IGdhbGxlcnktY29udGFpbmVyIC5zbGlkZS5pbWFnZSB7XG4gIGZpbHRlcjogc2F0dXJhdGUoMC40KTtcbn1cbmJvZHkgPiBnYWxsZXJ5LWNvbnRhaW5lcjo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHZhcigtLWJhY2tncm91bmQtdGhlbWUtb25lKSA1JSwgcmdiYSgxOSwgMzEsIDEwNywgMC41KSwgdmFyKC0tYmFja2dyb3VuZC10aGVtZS10d28pIDgwJSk7XG59XG5cbi5oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwbGFjZS1pdGVtczogY2VudGVyO1xuICBwbGFjZS1jb250ZW50OiBjZW50ZXI7XG4gIHBsYWNlLXNlbGY6IGNlbnRlcjtcbiAgbWF4LXdpZHRoOiAxNDAwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAtLXRyYW5zbGF0ZS15OiAtMjBweDtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkge1xuICAuaGVhZGVyIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDkwMXB4KSB7XG4gIC5oZWFkZXIgLmhlYWRpbmcsXG4gIC5oZWFkZXIgLnN1Yi1oZWFkaW5nIHtcbiAgICBtYXgtd2lkdGg6IDUwJTtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgfVxufVxuLmhlYWRlciAuaGVhZGluZyB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi5oZWFkZXIgLnN1Yi1oZWFkaW5nIHtcbiAgZm9udC1zaXplOiAxOHB4O1xufVxuLmhlYWRlciAuc3ViLWhlYWRpbmcsXG4uaGVhZGVyIHRhZy1saW5lIHtcbiAgbWFyZ2luOiB2YXIoLS1ndXR0ZXIxKSBhdXRvO1xufVxuLmhlYWRlciB0YWctbGluZSB7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xufVxuQG1lZGlhIChtYXgtd2lkdGg6IDQwMHB4KSB7XG4gIC5oZWFkZXIgdGFnLWxpbmUge1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLWdhcCk7XG4gIH1cbn1cbi5oZWFkZXIgLmhlYWRpbmcsXG4uaGVhZGVyIC5zdWItaGVhZGluZyxcbi5oZWFkZXIgc2VhcmNoLWJhciB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS10cmFuc2xhdGUteSkpO1xufVxuLmhlYWRlci5pbi12aWV3IC5oZWFkaW5nLFxuLmhlYWRlci5pbi12aWV3IC5zdWItaGVhZGluZyxcbi5oZWFkZXIuaW4tdmlldyBzZWFyY2gtYmFyIHtcbiAgLS10cmFuc2xhdGUteTogMDtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAxLjJzIGN1YmljLWJlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSkgMC4ycywgdHJhbnNmb3JtIDEuMnMgY3ViaWMtYmV6aWVyKDAuMTY1LCAwLjg0LCAwLjQ0LCAxKSAwLjJzO1xufVxuLmhlYWRlci5pbi12aWV3IC5zdWItaGVhZGluZyB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDAuNHMsIDAuNHM7XG59XG4uaGVhZGVyLmluLXZpZXcgc2VhcmNoLWJhciB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDAuNnMsIDAuNnM7XG59XG4uaGVhZGVyIC5oZWFkZXItZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMmZyIDFmcjtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2VyMCk7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4uaGVhZGVyIC5oZWFkZXItZ3JpZCAuaGVhZGluZyxcbi5oZWFkZXIgLmhlYWRlci1ncmlkIC5zdWItaGVhZGluZyB7XG4gIG1heC13aWR0aDogNzUlO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tbGVmdDogMDtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuaGVhZGVyIC5oZWFkZXItZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cbiAgLmhlYWRlciAuaGVhZGVyLWdyaWQgLmhlYWRpbmcsXG4gIC5oZWFkZXIgLmhlYWRlci1ncmlkIC5zdWItaGVhZGluZyB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgfVxufVxuXG4uaXNvLWJhbm5lciB7XG4gIGdyaWQtcm93OiAzO1xuICB3aWR0aDogMTAwdnc7XG4gIGxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzZiYjI4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgcGFkZGluZy10b3A6IGNhbGModmFyKC0tZ2FwKSAqIDIpO1xuICBwYWRkaW5nLWJvdHRvbTogY2FsYyh2YXIoLS1nYXApICogMik7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4uaXNvLWJhbm5lciBoMiB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLWdhcCk7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi5pc28tYmFubmVyIGgyIHNwYW4ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogMzAwO1xuICBwYWRkaW5nOiAwIGNhbGModmFyKC0tZ2FwKSAqIDIpO1xuICBmb250LWZhbWlseTogXCJtb250c2VycmF0XCIsIHNhbnMtc2VyaWY7XG59XG4uaXNvLWJhbm5lciB+IG1haW4ge1xuICAtLXJvdy1tYWluOiA0O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5pc28tYmFubmVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaGVpZ2h0OiAxODBweDtcbiAgICB3aWR0aDogYXV0bztcbiAgICBhc3BlY3QtcmF0aW86IDE7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIHRvcDogMjB2aDtcbiAgICByaWdodDogMTB2dztcbiAgICBsZWZ0OiB1bnNldDtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxNWRlZyk7XG4gICAgZ3JpZC1yb3c6IHVuc2V0O1xuICAgIHBhZGRpbmc6IHZhcigtLWdhcCkgY2FsYyh2YXIoLS1nYXApICogMC41KTtcbiAgfVxuICAuaXNvLWJhbm5lciBoMiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuICAuaXNvLWJhbm5lciB+IG1haW4ge1xuICAgIC0tcm93LW1haW46IDM7XG4gIH1cbn1cblxuLmVjb3ZhZGlzLXRvcC1iYW5uZXIge1xuICBkaXNwbGF5OiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGhlaWdodDogMTUwcHg7XG4gIHdpZHRoOiBhdXRvO1xuICBhc3BlY3QtcmF0aW86IDE7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgdG9wOiAyZW07XG4gIGxlZnQ6IDA7XG59XG4uZWNvdmFkaXMtdG9wLWJhbm5lciBpbWcge1xuICB3aWR0aDogMTAwJTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5MDFweCkge1xuICAuZWNvdmFkaXMtdG9wLWJhbm5lciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cblxubmF2aWdhdGlvbi1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsO1xuICBiYWNrZ3JvdW5kOiBpbml0aWFsO1xuICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2VyMCk7XG4gIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZXIwKTtcbn1cbm5hdmlnYXRpb24tYmFyOjpiZWZvcmUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4jaGVyby5wcm9tb3Mge1xuICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xuICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICB3aWR0aDogMTAwdnc7XG4gIG1hcmdpbi1sZWZ0OiAtNTB2dztcbiAgbGVmdDogNTAlO1xuICBib3gtc2hhZG93OiBpbml0aWFsO1xuICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCgyLCAxZnIpO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDEwMCU7XG4gIGdyaWQtZ2FwOiAwO1xuICBvdmVyZmxvdy15OiBjbGlwO1xufVxuI2hlcm8ucHJvbW9zIC5wcm9tbyB0YWctbGluZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgI2hlcm8ucHJvbW9zIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogMTAwJTtcbiAgfVxufVxuI2hlcm8ucHJvbW9zID4gLmltYWdlLFxuI2hlcm8ucHJvbW9zIC5zaW1wbGVQYXJhbGxheCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWF4LWhlaWdodDogMTAwdmg7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIHRvcDogMDtcbn1cbiNoZXJvLnByb21vcyAucXVvdGUge1xuICAtLXF1b3RlLWljb24tc2l6ZTogNDBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBncmlkLXJvdzogMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxOSwgMzEsIDEwNywgMC45KTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgYm9yZGVyOiBub25lO1xuICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlcjEpICsgdmFyKC0tcXVvdGUtaWNvbi1zaXplKSkgdmFyKC0tZ3V0dGVyNCkgdmFyKC0tc3BhY2VyMSkgdmFyKC0tZ3V0dGVyNCk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG4jaGVyby5wcm9tb3MgLnF1b3RlIGJsb2NrcXVvdGUge1xuICBjb2xvcjogd2hpdGU7XG59XG4jaGVyby5wcm9tb3MgLnF1b3RlIGJsb2NrcXVvdGU6OmJlZm9yZSwgI2hlcm8ucHJvbW9zIC5xdW90ZSBibG9ja3F1b3RlOjphZnRlciB7XG4gIG9wYWNpdHk6IDAuMjtcbiAgd2lkdGg6IHZhcigtLXF1b3RlLWljb24tc2l6ZSk7XG4gIGhlaWdodDogdmFyKC0tcXVvdGUtaWNvbi1zaXplKTtcbiAgdG9wOiBjYWxjKC0xICogdmFyKC0tcXVvdGUtaWNvbi1zaXplKSk7XG59XG4jaGVyby5wcm9tb3MgLnF1b3RlIGJsb2NrcXVvdGU6OmFmdGVyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbiNoZXJvLnByb21vcyAucXVvdGUgaW1nIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tZ2FwKTtcbiAgbWF4LXdpZHRoOiAxMzBweDtcbn1cbiNoZXJvLnByb21vcyAucXVvdGUgZmlnY2FwdGlvbiB7XG4gIGNvbG9yOiAjZGYzMDM1O1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cbiNoZXJvLnByb21vcyAucXVvdGUgZmlnY2FwdGlvbiBjaXRlIHtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LWZhbWlseTogbGF0bywgc2Fucy1zZXJpZjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNzAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuI2hlcm8ucHJvbW9zIC5xdW90ZSBmaWdjYXB0aW9uIGNpdGUgc3ZnIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbiNoZXJvLnByb21vcyAucXVvdGUgZmlnY2FwdGlvbiBjaXRlOjpiZWZvcmUge1xuICBjb250ZW50OiBpbml0aWFsO1xufVxuQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgI2hlcm8ucHJvbW9zIC5xdW90ZSBmaWdjYXB0aW9uIGNpdGUgYTpob3ZlciB7XG4gICAgY29sb3I6IHdoaXRlO1xuICB9XG59XG4jaGVyby5wcm9tb3MgLm1ldGFsLWxpbmtzIHtcbiAgZ3JpZC1yb3c6IDEvLTE7XG4gIHBhZGRpbmc6IHZhcigtLWd1dHRlcjIpO1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLWdhcDogMCB2YXIoLS1ndXR0ZXIxKTtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgzNDBweCwgMWZyKSk7XG59XG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgI2hlcm8ucHJvbW9zIC5tZXRhbC1saW5rcyB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cbn1cbiNoZXJvLnByb21vcyAubWV0YWwtbGlua3MgLnRleHQge1xuICBncmlkLWNvbHVtbjogMS8tMTtcbn1cbiNoZXJvLnByb21vcyAubWV0YWwtbGlua3MgLnRleHQgPiBoMyB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBsaW5lLWhlaWdodDogMS4zO1xuICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLWdhcCkgKiAwLjUpO1xuICBjb2xvcjogIzEzMWY2Yjtcbn1cbiNoZXJvLnByb21vcyAubWV0YWwtbGlua3MgLnRleHQgPiBoMyArIHAge1xuICBjb2xvcjogI2RmMzAzNTtcbiAgbWF4LXdpZHRoOiA2MDBweDtcbiAgZm9udC1zaXplOiAxLjA2MjVlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbn1cbiNoZXJvLnByb21vcyAubWV0YWwtbGlua3MgcC5jb250YWlucy1idXR0b24ge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1ndXR0ZXIxKTtcbiAgY29sb3I6ICMxMzFmNmI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEuMDYyNWVtO1xuICBsaW5lLWhlaWdodDogMS42O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4jaGVyby5wcm9tb3MgLm1ldGFsLWxpbmtzIHAuY29udGFpbnMtYnV0dG9uIC5idXR0b24ge1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4jaGVyby5wcm9tb3MgLm1ldGFsLWxpbmtzIC5saXN0LWRyb3Bkb3ducyB7XG4gIG1hcmdpbi10b3A6IHZhcigtLWd1dHRlcjEpO1xufVxuI2hlcm8ucHJvbW9zIC5tZXRhbC1saW5rcyAubGlzdC1kcm9wZG93bnMgLmhlYWRpbmcge1xuICBmb250LXNpemU6IDEuNTYyNWVtO1xuICBsaW5lLWhlaWdodDogMS42O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogIzNkM2Y3Zjtcbn1cbiNoZXJvLnByb21vcyAubWV0YWwtbGlua3MgYnV0dG9uLWNvbnRhaW5lciB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlcjApO1xuICBncmlkLWNvbHVtbjogMS8tMTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxNjgxcHgpIHtcbiAgI2hlcm8ucHJvbW9zIC5xdW90ZSB7XG4gICAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLWNvbXB1dGVkLWd1dHRlcikgKyB2YXIoLS1ndXR0ZXI2KSk7XG4gIH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiAxNDAwcHgpIHtcbiAgI2hlcm8ucHJvbW9zIC5xdW90ZSB7XG4gICAgLS1xdW90ZS1pY29uLXNpemU6IDIwcHg7XG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1ndXR0ZXIyKTtcbiAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1ndXR0ZXIyKTtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDExMjBweCkge1xuICAjaGVyby5wcm9tb3Mge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0bztcbiAgICBncmlkLWdhcDogMDtcbiAgfVxuICAjaGVyby5wcm9tb3MgLnF1b3RlIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cbiAgI2hlcm8ucHJvbW9zIC5xdW90ZSBibG9ja3F1b3RlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWF4LXdpZHRoOiA3MDBweDtcbiAgfVxuICAjaGVyby5wcm9tb3MgLnF1b3RlIGJsb2NrcXVvdGU6OmJlZm9yZSwgI2hlcm8ucHJvbW9zIC5xdW90ZSBibG9ja3F1b3RlOjphZnRlciB7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG4gICNoZXJvLnByb21vcyAucXVvdGUgYmxvY2txdW90ZTo6YmVmb3JlIHtcbiAgICBsZWZ0OiBjYWxjKHZhcigtLWdhcCkgKiAwLjUpO1xuICB9XG4gICNoZXJvLnByb21vcyAucXVvdGUgYmxvY2txdW90ZTo6YWZ0ZXIge1xuICAgIHJpZ2h0OiBjYWxjKHZhcigtLWdhcCkgKiAwLjUpO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG4gICNoZXJvLnByb21vcyAubWV0YWwtbGlua3MgYnV0dG9uLWNvbnRhaW5lciB7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbn1cblxubWFya2V0cy1zdW1tYXJ5IHtcbiAgbWFyZ2luLXRvcDogMXB4O1xuICBib3gtc2hhZG93OiAwcHggLTFweCB2YXIoLS1ib3JkZXItdG9wLWNvbG91ciwgIzQ2NTI4YSk7XG59XG5tYXJrZXRzLXN1bW1hcnk6OmJlZm9yZSB7XG4gIGJveC1zaGFkb3c6IGluaGVyaXQ7XG4gIGJvcmRlcjogaW5pdGlhbDtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vIEJyZWFrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYnJlYWtcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBvdXQoJGJyZWFrcG9pbnQpIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6I3skYnJlYWtwb2ludCArIDF9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGluKCRicmVha3BvaW50KSB7XG4gIEBtZWRpYSAobWF4LXdpZHRoOiN7JGJyZWFrcG9pbnR9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGJldHdlZW4oJG1pbiwgJG1heCkge1xuICBAbWVkaWEgKG1pbi13aWR0aDojeyRtaW59KSBhbmQgKG1heC13aWR0aDojeyRtYXh9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVW5pdHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkB1c2UgXCJzYXNzOm1hdGhcIjtcbkB1c2UgJ3Nhc3M6c3RyaW5nJztcbkB1c2UgJ3Nhc3M6bWV0YSc7XG5cbi8vIFRoaXMgdW5pdHMgY3JlYXRvciB3aWxsIHJlbmRlciBzaXggcG9zaXRpdmUgYW5kIHNpeCBuZWdhdGl2ZSBzYXNzIHZhcmlhYmxlcyBmb3IgXG4vLyBnYXBzLCBzcGFjZXJzLCBhbmQgZ3V0dGVycyByZWxhdGl2ZSB0byB0aGUgYmFzZXYgdmFsdWVzIGRlZmluZWQgYmVsb3cuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQmFzZSBWYWx1ZXMgXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLy8gQHNlZSBodHRwczovL2NvZGVwZW4uaW8vbWFya25vdHRvbi9wZW4vRXhQYk5HZVxuXG4vLyBUaGVzZSB0aHJlZSB2YWx1ZXMgd2lsbCBhY3QgYSBjb25zdGFudCBiYXNlbGluZSBmb3IgYWxsIGZvbGxvd2luZyB1bml0IGRlbGNhcmF0aW9ucy5cblxuLy8gR2FwcyBtdXN0IHVzZSBhbiBhYnNvbHV0ZSBhbmQgc3RhdGljICdweCcgdW5pdC4gSXQgc2hvdWxkIG5vdCBiZSByZWxhdGl2ZSB0byBhbnlcbi8vIHBhcmVudCBjb250YWluZXIgYW5kIGlzIG5vdCBpbnRlbmRlZCBmb3IgZm9udCBzaXplcywgc28geW91IHNob3VsZCBub3QgdXNlICdyZW0nIG9yICdlbScuIFxuJGdhcCA6IDE2cHggIWRlZmF1bHQ7XG4kYmFzZS1nYXAgOiAkZ2FwO1xuXG4vLyBTcGFjZXJzIG11c3QgdXNlIGEgJ3ZoJyB1bml0IHNvIHRoZXkgYXJlIHJlbGF0aXZlIHRvIHRoZSB1c2VycyB2aWV3cG9ydCBoZWlnaHQtd2lzZS5cbi8vIFRoZXkgc2hvdWxkIHByaW1hcmlseSBiZSB1c2VkIGZvciB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2lucyBvbiBhIGNvbXBvbmVudCBsZXZlbC5cbiRzcGFjZXIgOiA0dmggIWRlZmF1bHQ7IFxuJGJhc2Utc3BhY2VyIDogJHNwYWNlcjsgXG5cbi8vIEd1dHRlcnMgbXVzdCB1c2UgYSAndncnIHVuaXQgc28gdGhleSBhcmUgcmVsYXRpdmUgdG8gdGhlIHVzZXJzIHZpZXdwb3J0IHdpZHRoLXdpc2UuIFxuLy8gVGhleSBzaG91bGQgcHJpbWFyaWx5IGJlIHVzZWQgZm9yIHRoZSBsZWZ0IGFuZCByaWdodCBwYWRkaW5nIG9yIG1hcmdpbiBvbiBhIHBhcmVudCBsZXZlbC5cbi8vIEFzIGEgc3VnZ2VzdGlvbiwgdGhpcyBndXR0ZXIgY29uc3RhbnQgc2hvdWxkIGJlIGhhbGYgdGhlIHNpemUgb2YgdGhlIHNwYWNlciB2YWx1ZS5cbiRndXR0ZXIgOiAzdncgIWRlZmF1bHQ7XG4kYmFzZS1ndXR0ZXIgOiAkZ3V0dGVyOyBcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFzYm9sdXRlIFVuaXRzIFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gR2FwcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEdhcHMgYXJlIGFuIGFic29sdXRlIHVuaXQgKHB4KSBpbnRlbmRlZCB0byBiZSB1c2VkIG9uIGluZGl2aWR1YWwgZWxlbWVudHMgd2l0aGluIGEgY29tcG9uZW50ZWQuIFxuLy8gVGhlIGFpbSBpcyB0byByZXRhaW4gY29uc2lzdGFudCBzcGFjaW5nIGFtb25nc3QgYmxvY2ssIGlubGluZSwgdGFibGUgYW5kIGdyb3VwIGh0bWwgZWxlbWVudHMuXG5cbkBmdW5jdGlvbiBnYXAoJGFtb3VudCA6IDEpIHtcbiAgQGlmICggJGFtb3VudCA9PSAxICkgeyBcbiAgICBAcmV0dXJuIHZhcigtLWdhcCk7IFxuICB9IEBlbHNlIHsgXG4gICAgQHJldHVybiBjYWxjKHZhcigtLWdhcCkgKiAjeyRhbW91bnR9KTsgXG4gIH1cbn1cblxuJGdhcDAgOiBnYXAoMC41KTsgJGdhcDAtIDogZ2FwKC0wLjUpO1xuJGdhcCAgOiBnYXAoMSk7ICAgJGdhcC0gIDogZ2FwKC0xKTtcbiRnYXAyIDogZ2FwKDIpOyAgICRnYXAyLSA6IGdhcCgtMik7XG4kZ2FwMyA6IGdhcCgzKTsgICAkZ2FwMy0gOiBnYXAoLTMpO1xuJGdhcDQgOiBnYXAoNCk7ICAgJGdhcDQtIDogZ2FwKC00KTtcbiRnYXA1IDogZ2FwKDUpOyAgICRnYXA1LSA6IGdhcCgtNSk7XG4kZ2FwNiA6IGdhcCg2KTsgICAkZ2FwNi0gOiBnYXAoLTYpO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUmVsYXRpdmUgVW5pdHMgXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AZnVuY3Rpb24gX2R5bmFtaWMtdW5pdCgkY3VzdG9tLXByb3BlcnR5LCAkYW1vdW50LCAkbWluLCAkbWF4LCAkdXNlLW5lZ2F0aXZlIDogZmFsc2UsICR1c2UtY2xhbXAgOiB0cnVlKSB7XG5cbiAgLy8gQ2FsYyBNZXRob2RcbiAgJHJlc3VsdCA6IGNhbGMoKCN7JGN1c3RvbS1wcm9wZXJ0eX0gKiAjeyRhbW91bnR9KSArICN7aWYoJG1pbiA9PSAwLCAwcHgsICRtaW4pfSk7XG4gIFxuICAvLyBDbGFtcCBNZXRob2RcbiAgQGlmICggJHVzZS1jbGFtcCApIHtcbiAgICBAaWYgKCAkYW1vdW50ID09IDAgKSB7XG4gICAgICAkcmVzdWx0IDogY2xhbXAoI3ttYXRoLmRpdigkbWluLCAyKX0sICN7JGN1c3RvbS1wcm9wZXJ0eX0gKiAwLjUsICN7JG1heH0pO1xuICAgIH0gQGVsc2UgaWYgKCAkYW1vdW50ID09IDEgKSB7XG4gICAgICAkcmVzdWx0IDogY2xhbXAoI3skbWlufSwgI3skY3VzdG9tLXByb3BlcnR5fSwgI3skbWF4fSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmVzdWx0IDogY2xhbXAoI3skbWlufSwgI3skY3VzdG9tLXByb3BlcnR5fSAqICN7JGFtb3VudH0sICN7JG1heH0pO1xuICAgIH1cbiAgfSBcblxuICBAaWYgKCAkdXNlLW5lZ2F0aXZlICkge1xuICAgICRyZXN1bHQgOiBjYWxjKC0xICogI3skcmVzdWx0fSk7XG4gIH1cblxuICBAcmV0dXJuICRyZXN1bHQ7XG5cbn0gXG5cbi8vIFNwYWNlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTcGFjZXJzIGFyZSBhIHJlbGF0aXZlIHZpZXdwb3J0IGhlaWdodCAodmgpIHVuaXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBhIGNvbXBvbmVudGVkIGxldmVsLlxuLy8gVGhlIGFpbSBpcyB0byByZXRhaW4gY29uc2lzdGFudCB0b3AgYW5kIGJvdHRvbSBzcGFjaW5nIGFtb25nc3QgJ3NlY3Rpb24nIGFuZCAnY3VzdG9tJyBlbGVtZW50cy5cbi8vIFNwYWNlcnMgd2lsbCBlcXVhdGUgdG8gc29tZXRoaW5nIGxpa2U6IGAoJHNwYWNlciAqIHgpICsgJGdhcGAuIFxuLy8gVGhlICckZ2FwJyBpcyBhZGRlZCBzbyB0aGF0IHZoIHNwYWNpbmcgd2lsbCBuZXZlciBzY2FsZSB0b28gY2xvc2UgdG8gMHB4LiBcblxuQGZ1bmN0aW9uIHNwYWNlcigkYW1vdW50IDogMSwgJG1pbiA6ICRiYXNlLWdhcCwgJG1heCA6IG51bGwsICR1c2UtbmVnYXRpdmUgOiBmYWxzZSwgJHVzZS1jbGFtcCA6IHRydWUpIHtcbiAgQGlmICggJGFtb3VudCA9PSAwKSB7ICRhbW91bnQgOiAwLjU7ICRtaW4gOiBtYXRoLmRpdigkbWluLCAyKTsgfVxuICBAaWYgKCBtZXRhLnR5cGUtb2YoJG1heCkgPT0gJ251bGwnICkgeyBcbiAgICBAaWYgKCBtZXRhLnR5cGUtb2YoJG1pbikgPT0gJ3N0cmluZycgYW5kIHN0cmluZy5pbmRleCgkbWluLCAndmFyJykgKSB7XG4gICAgICAkbWF4IDogY2FsYygjeyRtaW59ICogI3skYW1vdW50ICsgMX0pOyBcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtYXggOiAjeyRtaW4gKiAoJGFtb3VudCArIDEpfTsgXG4gICAgfVxuICB9XG4gIEByZXR1cm4gX2R5bmFtaWMtdW5pdCh2YXIoLS1zcGFjZXIpLCAkYW1vdW50LCAkbWluLCAkbWF4LCAkdXNlLW5lZ2F0aXZlLCAkdXNlLWNsYW1wKTtcbn1cblxuJHNwYWNlcjAgOiB2YXIoLS1zcGFjZXIwKTsgJHNwYWNlcjAtIDogdmFyKC0tc3BhY2VyMC0pO1xuJHNwYWNlciAgOiB2YXIoLS1zcGFjZXIxKTsgJHNwYWNlci0gIDogdmFyKC0tc3BhY2VyMS0pO1xuJHNwYWNlcjIgOiB2YXIoLS1zcGFjZXIyKTsgJHNwYWNlcjItIDogdmFyKC0tc3BhY2VyMi0pO1xuJHNwYWNlcjMgOiB2YXIoLS1zcGFjZXIzKTsgJHNwYWNlcjMtIDogdmFyKC0tc3BhY2VyMy0pO1xuJHNwYWNlcjQgOiB2YXIoLS1zcGFjZXI0KTsgJHNwYWNlcjQtIDogdmFyKC0tc3BhY2VyNC0pO1xuJHNwYWNlcjUgOiB2YXIoLS1zcGFjZXI1KTsgJHNwYWNlcjUtIDogdmFyKC0tc3BhY2VyNS0pO1xuJHNwYWNlcjYgOiB2YXIoLS1zcGFjZXI2KTsgJHNwYWNlcjYtIDogdmFyKC0tc3BhY2VyNi0pO1xuXG4vLyBHdXR0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gR3V0dGVycyBhcmUgYSByZWxhdGl2ZSB2aWV3cG9ydCB3aWR0aCAodncpIHVuaXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBhIHBhcmVudCBsZXZlbDtcbi8vIGZvciBleGFtcGxlLCBhIHdyYXBwZXIgY29udGFpbmVyIG9yIGJvZHkgd2l0aCBuZXN0ZWQgY29tcG9uZW50cy4gXG4vLyBUaGUgYWltIGlzIHRvIHJldGFpbiBjb25zaXN0YW50IGxlZnQgYW5kIHJpZ2h0IHNwYWNpbmcgYW1vbmdzdCAnc2VjdGlvbicgYW5kICdjdXN0b20nIGVsZW1lbnRzLlxuLy8gR3V0dGVycyB3aWxsIGVxdWF0ZSB0byBzb21ldGhpbmcgbGlrZTogYCgkZ3V0dGVyICogeCkgKyAkZ2FwYC4gXG4vLyBUaGUgJyRnYXAnIGlzIGFkZGVkIHNvIHRoYXQgdncgc3BhY2luZyB3aWxsIG5ldmVyIHNjYWxlIHRvbyBjbG9zZSB0byAwcHguIFxuXG5AZnVuY3Rpb24gZ3V0dGVyKCRhbW91bnQgOiAxLCAkbWluIDogJGJhc2UtZ2FwLCAkbWF4IDogbnVsbCwgJHVzZS1uZWdhdGl2ZSA6IGZhbHNlLCAkdXNlLWNsYW1wIDogdHJ1ZSkge1xuICBAaWYgKCAkYW1vdW50ID09IDApIHsgJGFtb3VudCA6IDAuNTsgJG1pbiA6IG1hdGguZGl2KCRtaW4sIDIpOyB9XG4gIEBpZiAoIG1ldGEudHlwZS1vZigkbWF4KSA9PSAnbnVsbCcgKSB7IFxuICAgIEBpZiAoIG1ldGEudHlwZS1vZigkbWluKSA9PSAnc3RyaW5nJyBhbmQgc3RyaW5nLmluZGV4KCRtaW4sICd2YXInKSApIHtcbiAgICAgICRtYXggOiBjYWxjKCN7JG1pbn0gKiAjeyRhbW91bnQgKyAxfSk7IFxuICAgIH0gQGVsc2Uge1xuICAgICAgJG1heCA6ICN7JG1pbiAqICgkYW1vdW50ICsgMSl9OyBcbiAgICB9XG4gIH1cbiAgQHJldHVybiBfZHluYW1pYy11bml0KHZhcigtLWd1dHRlciksICRhbW91bnQsICRtaW4sICRtYXgsICR1c2UtbmVnYXRpdmUsICR1c2UtY2xhbXApO1xufVxuXG4kZ3V0dGVyMCA6IHZhcigtLWd1dHRlcjApOyAkZ3V0dGVyMC0gOiB2YXIoLS1ndXR0ZXIwLSk7XG4kZ3V0dGVyICA6IHZhcigtLWd1dHRlcjEpOyAkZ3V0dGVyLSAgOiB2YXIoLS1ndXR0ZXIxLSk7XG4kZ3V0dGVyMiA6IHZhcigtLWd1dHRlcjIpOyAkZ3V0dGVyMi0gOiB2YXIoLS1ndXR0ZXIyLSk7XG4kZ3V0dGVyMyA6IHZhcigtLWd1dHRlcjMpOyAkZ3V0dGVyMy0gOiB2YXIoLS1ndXR0ZXIzLSk7XG4kZ3V0dGVyNCA6IHZhcigtLWd1dHRlcjQpOyAkZ3V0dGVyNC0gOiB2YXIoLS1ndXR0ZXI0LSk7XG4kZ3V0dGVyNSA6IHZhcigtLWd1dHRlcjUpOyAkZ3V0dGVyNS0gOiB2YXIoLS1ndXR0ZXI1LSk7XG4kZ3V0dGVyNiA6IHZhcigtLWd1dHRlcjYpOyAkZ3V0dGVyNi0gOiB2YXIoLS1ndXR0ZXI2LSk7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3Vyc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8vIEV4cGxpY2l0IENvbG91cnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vLyBFeHBsaWNpdCBjb2xvdXJzIGFyZSBhIHdoYXQgdGhleSBhcmUuIEdyZWVuIGlzIGdyZWVuLCBibHVlIGlzIGJsdWUuLi4gbm8gb2JzY3VyaXR5LlxuLy8vIFdlIHN1ZmZpeCBudW1iZXJzIHRvIGRlZmluZSB2YXJpYXRpb25zIG9mIGNvbG91cnMgaW4gbm8gcGFydGljdWxhciBvcmRlciBvZiBzaGFkZS5cbi8vLyBFeGFtcGxlOiBncmVlbjEsIGdyZWVuMiwgZ3JlZW4zLCBncmVlbjQuIFRoaXMgaXMgc28gd2UgY2FuIGltbWlkaWF0ZWx5IHNlZSBob3dcbi8vLyBtYW55IG9wdGlvbnMgd2UgaGF2ZSBmb3IgYSBzaW5nbGUgY29sb3VyIGF0IGEgZ2xhbmNlLiBJZiB5b3Ugc2VlICRncmVlbjQsIHlvdSBrbm93IHRoaXNcbi8vLyBwcm9qZWN0IGlzIHVzaW5nIGZvdXIgdmFyaWF0aW9ucyBvZiBncmVlbi4gVGhpcyBpcyBhbHNvIG9mdGVuIHVzZWZ1bCBiZWNhdXNlIG1hbnkgZGV2ZWxvcG1lbnRcbi8vLyB0b29scyB3aWxsIGF1dG8tc3VnZ2VzdCBjb2xvdXJzIHdpdGggYWN0dWFsIGV4YW1wbGVzIG9mIHRoZSBjb2xvdXIuXG4vLy8gVGhlIFBhbGxldGVzIG1vZHVsZSAoYXQgdGhlIGJvdHRvbSBvZiB0aGlzIGZpbGUpIHdpbGwgb3V0cHV0IHNoYWRlZCBuYW1lZCB2YXJpYXRpb25zLFxuLy8vLyA8Y29sb3VyPi1kYXJrIGFuZCA8Y29sb3VyPi1saWdodC4gSWYgeW91IG5lZWQgYWRkaXRpb25hbCBzaGFkZXMgcGxlYXNlIHJlZnJhaW0gZnJvbSBnb2luZyBkb3duXG4vLy8gdGhlICdsaWdodGVyJywgJ2xpZ2h0ZXN0JywgJ2RhcmtlcicsICdkYXJrZXN0JyBjb252ZW50aW9uLiBUaGVzZSBhcmUgbm90IHBhcnRpY3Vhcmx5IGxlZ2lhYmxlXG4vLy8gYW5kIHRoZXkgYXJlIGxpbWl0ZWQgYnkgaG93IGNyZWF0aXZlIChjb25mdXNpbmcpIHlvdXIgd29yZGluZyBjYW4gYmUuXG4vLy8gSXQgaXMgYmV0dGVyIHRvIGRlZmluZSBhIG5ldyBleHBsY2l0IGNvbG91ciBlbnRpcmVseS5cbi8vLyBAc2VlIGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vd2hhdC1kby15b3UtbmFtZS1jb2xvci12YXJpYWJsZXMvXG5cbiRibHVlOiAjMTMxZjZiOyAvLyBQcmltYXJ5XG4kYmx1ZTI6ICMyOTJiNjg7IC8vIE5ha2VkIExpbmtcbiRibHVlMzogIzNkM2Y3ZjsgLy8gTGlnbnQgR3JhZGllbnRcbiRibHVlNDogIzEwMTI0ZDsgLy8gRGFyayBHcmFkaWVudFxuJGJsdWU1OiAjMDA5NWZmOyAvLyBOYXZpZ2F0aW9uIGxpbmsgaG92ZXJcbi8vICRyZWQgICAgOiAjRTAzQTQwOyAvLyBTZWNvbmRhcnlcbiRyZWQ6ICNkZjMwMzU7IC8vIFNlY29uZGFyeSAtIFRoaXMgcGFzc2VzIHRoZSBjb250cmFzdCByYXRpbyBhY2Nlc3NpYmlsaXR5IHRlc3QgaW4gR29vZ2xlcyBMaWdodGhvdXNlXG4kZ3JleTogIzk2OTY5NTtcbiRncmV5MjogIzZhNmE2YTsgLy8gRm9udFxuJGdyZXkzOiAjZjRmNGY0OyAvLyBMaWdodGVyIEdyZXkgQmFja2dyb3VuZFxuJGdyZXk0OiAjZGNkY2RjO1xuJGdyZXk1OiAjYjFiMWIxOyAvLyBTcGFjZXJzIDxocj5cbiRncmV5NjogIzMzMzIzNjsgLy8gTmF2aWdhdGlvbiBsaW5rIGhvdmVyXG4kZ3JlZW46ICM1MGJjMDg7XG4kZ3JlZW4yOiAjNzZiYjI4OyAvLyBFU0cgZ3JlZW5cbiR5ZWxsb3c6ICNmNmY0ZGI7IC8vIERpc2NsYWltZXIgQmFja2dyb3VuZFxuJHllbGxvdzI6ICNmY2IwMDI7XG4kb3JhbmdlOiAjZmY2YTAwO1xuJG9yYW5nZTI6ICNkYThiMGY7XG4kYmxhY2s6ICMxZTFjMWM7XG5cbiRtYXJrOiAkYmx1ZTU7IC8vIGJhY2tncm91bmQgY29sb3VyIGZvciA8bWFyaz4gdGFnc1xuXG4kcHJpbWFyeTogdmFyKC0tcHJpbWFyeSwgI3skYmx1ZX0pO1xuJHNlY29uZGFyeTogdmFyKC0tc2Vjb25kYXJ5LCAjeyRyZWR9KTtcblxuLy8vIFBhbGV0dGUgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vLyBCeSBsb2FkaW5nIGNvbmZpZ3VyYXRpb25zIGludG8gdGhpcyAncGFsbGV0ZScgbW9kdWxlLCB3ZSB3aWxsIGJlIGFibGVcbi8vLyB0byBkZWNsYXJlIHZhcmlhbnRzIG9mIGEgZmV3IGNvbW1vbiBjb2xvdXJzLiBZb3UgY2FuIGFsc28gYWRqdXN0IHRoZSBsaWdodG5lc3Ncbi8vLyBvciBkYXJrbmVzcyBvZiBlYWNoIHZhcmlhbnQgYnkgcGFzc2luZyBpbiB0aGUgcmVsZXZhbnQgcHJpdmF0ZSBydWxlcy5cbi8vLyBQYWxldHRlIHdpbGwgYWxzbyBleHBvc2UgcG9wdWxhciBzb2NpYWwgbWVkaWEgY29sb3VycyBhbmQgdGhlIFllbGxvIGJyYW5kIGNvbG91ci5cbi8vLyBAc2VlIGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL2F0LXJ1bGVzL2ZvcndhcmQjY29uZmlndXJpbmctbW9kdWxlc1xuLy8vIEBvdXRwdXQgJGdyZWVuIDogIzAyOTI5QTsgJGdyZWVuLWRhcmsgOiAjMjU2NTY5OyAkZ3JlZW4tbGlnaHQ6ICMwNGI5YzQ7XG5cbkBmb3J3YXJkICdjcmVhdGUvcGFsZXR0ZScgd2l0aCAoXG4gICRibHVlOiAkYmx1ZSxcbiAgJHJlZDogJHJlZCxcbiAgJGdyZXk6ICRncmV5LFxuICAkeWVsbG93OiAkeWVsbG93LFxuICAkb3JhbmdlOiAkb3JhbmdlLFxuICAkZ3JlZW46ICRncmVlbixcbiAgJGJsYWNrOiAkYmxhY2tcbik7XG5cbiRtYXA6IChcbiAgYmx1ZTogJGJsdWUsXG4gIHJlZDogJHJlZCxcbiAgZ3JleTogJGdyZXkzLFxuICB5ZWxsb3c6ICR5ZWxsb3csXG4gIG9yYW5nZTogJG9yYW5nZSxcbiAgZ3JlZW46ICRncmVlbixcbiAgYmxhY2s6ICRibGFjayxcbik7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vIEZvbnRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkB1c2UgJ2NvbG91cnMnIGFzICo7XG5cbiRjb2xvdXIgICAgICA6ICRncmV5MjtcbiRzaXplICAgICAgICA6IDEuNXJlbSAhZGVmYXVsdDtcbiRzaXplLW1pbiAgICA6IDEuNHJlbSAhZGVmYXVsdDsgXG4kc2l6ZS1tYXggICAgOiAxLjZyZW0gIWRlZmF1bHQ7IFxuJGxpbmUtaGVpZ2h0IDogMS42ICFkZWZhdWx0OyBcblxuJHNpemUtaDEgICAgIDogNi4xZW0gIWRlZmF1bHQ7XG4kc2l6ZS1oMS1taW4gOiA0ZW0gIWRlZmF1bHQ7XG4kc2l6ZS1oMiAgICAgOiAzLjJlbSAhZGVmYXVsdDtcbiRzaXplLWgzICAgICA6IDIuNWVtICFkZWZhdWx0O1xuJHNpemUtaDQgICAgIDogMS43ZW0gIWRlZmF1bHQ7XG4kc2l6ZS1oNSAgICAgOiAxLjdlbSAhZGVmYXVsdDtcbiRzaXplLWg2ICAgICA6IDEuN2VtICFkZWZhdWx0O1xuICBcbi8vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLy8gTGF0byBGb250XG4vLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8vIFRoaXMgZm9udCBpdCBwcmltYXJpbHkgdXNlZCBmb3IgaGVhZGluZ3MgKDxoKj4gdGFncylcbi8vLyBAZXhhbXBsZSBAaW5jbHVkZSBmb250LWxhdG8oYm9sZClcblxuQG1peGluIGxhdG8oJHdlaWdodDpyZWd1bGFyKSB7XG5cbiAgZm9udC1mYW1pbHk6bGF0bywgc2Fucy1zZXJpZjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuXG4gIEBpZiAoICR3ZWlnaHQgPT0gJ3JlZ3VsYXInKSB7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgfSBAZWxzZSBpZiAoICR3ZWlnaHQgPT0gJ3NlbWktYm9sZCcgb3IgJHdlaWdodCA9PSAnc2VtaWJvbGQnKSB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgfSBAZWxzZSBpZiAoICR3ZWlnaHQgPT0gJ2JvbGQnKSB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgfVxuXG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG5cdC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG59XG5cbi8vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLy8gTW9udHNlcnJhdCBGb250XG4vLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8vIFRoaXMgaXMgdGhlIGJhc2UgZm9udCB1c2VkIGZvciBhbGwgc3RhbmRhcmQgY29weSB0aHJvdWdob3V0IHRoZSBzaXRlLlxuLy8vIEBleGFtcGxlIEBpbmNsdWRlIGZvbnQtbW9udHNlcnJhdCgpXG5cbkBtaXhpbiBtb250c2VycmF0KCR3ZWlnaHQ6cmVndWxhcikge1xuXG4gIGZvbnQtZmFtaWx5Om1vbnRzZXJyYXQsIHNhbnMtc2VyaWY7XG4gIFxuICBAaWYgKCAkd2VpZ2h0ID09ICdyZWd1bGFyJykge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICB9IEBlbHNlIGlmICggJHdlaWdodCA9PSAnaXRhbGljJykge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICB9IEBlbHNlIGlmICggJHdlaWdodCA9PSAnYm9sZCcpIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG5cdC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG5cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vIEhvdmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaG92ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBob3Zlcigkc2VsZWN0b3IgOiBudWxsKSB7XG4gIEBtZWRpYSAoIGhvdmVyIDogaG92ZXIgKSB7XG4gICAgJjpob3ZlciB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNlbGVjdG9yIHtcbiAgICAmI3skc2VsZWN0b3J9IHsgXG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIZWFkaW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQHVzZSAnc2FzczpzdHJpbmcnO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICcuL2NvbGxlY3Rpb25zL2ZvbnQnO1xuQHVzZSAnLi9tb2R1bGVzL3VuaXQnO1xuXG4vLyBEZWZhdWx0IEhlYWRpbmcgVmFsdWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kaDEgOiAoXG4gICdmb250LXNpemUnICAgOiAzLjByZW0sXG4gICdsaW5lLWhlaWdodCcgOiAxLjFcbikgIWRlZmF1bHQ7XG5cbiRoMiA6IChcbiAgJ2ZvbnQtc2l6ZScgICA6IDIuNXJlbSxcbiAgJ2xpbmUtaGVpZ2h0JyA6IDEuM1xuKSAhZGVmYXVsdDtcblxuJGgzIDogKFxuICAnZm9udC1zaXplJyAgIDogMi4ycmVtLFxuICAnbGluZS1oZWlnaHQnIDogMS40XG4pICFkZWZhdWx0O1xuXG4kaDQgOiAoXG4gICdmb250LXNpemUnICAgOiAyLjByZW0sXG4gICdsaW5lLWhlaWdodCcgOiAxLjRcbikgIWRlZmF1bHQ7XG5cbiRoNSA6IChcbiAgJ2ZvbnQtc2l6ZScgICA6IDEuOHJlbSxcbiAgJ2xpbmUtaGVpZ2h0JyA6IDEuNFxuKSAhZGVmYXVsdDtcblxuJGg2IDogKFxuICAnZm9udC1zaXplJyAgIDogMS42cmVtLFxuICAnbGluZS1oZWlnaHQnIDogMS40XG4pICFkZWZhdWx0O1xuXG4kYmFzZSA6IDYyLjUgIWRlZmF1bHQ7XG4kc2NhbGVyIDogMS41dncgIWRlZmF1bHQ7XG4kZW5hYmxlLWNyb3BwaW5nIDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEZhbGxiYWNrIExpbmUtaGVpZ2h0cyBzaG91bGQgdGhleSBub3QgaGF2ZSBiZWVuIHBhc3NlZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGgxLCBcImxpbmUtaGVpZ2h0XCIpIHsgJGgxIDogbWFwLnNldCgkaDEsICdsaW5lLWhlaWdodCcsIDEuMSk7IH1cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGgyLCBcImxpbmUtaGVpZ2h0XCIpIHsgJGgyIDogbWFwLnNldCgkaDIsICdsaW5lLWhlaWdodCcsIDEuMyk7IH1cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGgzLCBcImxpbmUtaGVpZ2h0XCIpIHsgJGgzIDogbWFwLnNldCgkaDMsICdsaW5lLWhlaWdodCcsIDEuNCk7IH1cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGg0LCBcImxpbmUtaGVpZ2h0XCIpIHsgJGg0IDogbWFwLnNldCgkaDQsICdsaW5lLWhlaWdodCcsIDEuNCk7IH1cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGg1LCBcImxpbmUtaGVpZ2h0XCIpIHsgJGg1IDogbWFwLnNldCgkaDUsICdsaW5lLWhlaWdodCcsIDEuNCk7IH1cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGg2LCBcImxpbmUtaGVpZ2h0XCIpIHsgJGg2IDogbWFwLnNldCgkaDYsICdsaW5lLWhlaWdodCcsIDEuNCk7IH1cblxuLy8gRGVmaW5lIHRoZSB2YXJpYWJsZXMgc28gdGhleSBhcmUgc3RpbGwgYWNjZXNpYmxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJGgxLWZvbnQtc2l6ZSAgICAgOiBtYXAtZ2V0KCRoMSwgJ2ZvbnQtc2l6ZScpO1xuJGgxLWxpbmUtaGVpZ2h0ICAgOiBtYXAtZ2V0KCRoMSwgJ2xpbmUtaGVpZ2h0Jyk7XG4kaDEtZm9udC1zaXplLW1pbiA6IGlmKG1hcC5oYXMta2V5KCRoMSwgXCJmb250LXNpemUtbWluXCIpLCBtYXAtZ2V0KCRoMSwgXCJmb250LXNpemUtbWluXCIpLCBmYWxzZSk7XG4kaDEtc2NhbGVyICAgICAgICA6IGlmKG1hcC5oYXMta2V5KCRoMSwgXCJzY2FsZXJcIiksIG1hcC1nZXQoJGgxLCBcInNjYWxlclwiKSwgJHNjYWxlcik7XG5cbiRoMi1mb250LXNpemUgICAgIDogbWFwLWdldCgkaDIsICdmb250LXNpemUnKTtcbiRoMi1saW5lLWhlaWdodCAgIDogbWFwLWdldCgkaDIsICdsaW5lLWhlaWdodCcpO1xuJGgyLWZvbnQtc2l6ZS1taW4gOiBpZihtYXAuaGFzLWtleSgkaDIsIFwiZm9udC1zaXplLW1pblwiKSwgbWFwLWdldCgkaDIsIFwiZm9udC1zaXplLW1pblwiKSwgZmFsc2UpO1xuJGgyLXNjYWxlciAgICAgICAgOiBpZihtYXAuaGFzLWtleSgkaDIsIFwic2NhbGVyXCIpLCBtYXAtZ2V0KCRoMiwgXCJzY2FsZXJcIiksICRzY2FsZXIpO1xuXG4kaDMtZm9udC1zaXplICAgICA6IG1hcC1nZXQoJGgzLCAnZm9udC1zaXplJyk7XG4kaDMtbGluZS1oZWlnaHQgICA6IG1hcC1nZXQoJGgzLCAnbGluZS1oZWlnaHQnKTtcbiRoMy1mb250LXNpemUtbWluIDogaWYobWFwLmhhcy1rZXkoJGgzLCBcImZvbnQtc2l6ZS1taW5cIiksIG1hcC1nZXQoJGgzLCBcImZvbnQtc2l6ZS1taW5cIiksIGZhbHNlKTtcbiRoMy1zY2FsZXIgICAgICAgIDogaWYobWFwLmhhcy1rZXkoJGgzLCBcInNjYWxlclwiKSwgbWFwLWdldCgkaDMsIFwic2NhbGVyXCIpLCAkc2NhbGVyKTtcblxuJGg0LWZvbnQtc2l6ZSAgICAgOiBtYXAtZ2V0KCRoNCwgJ2ZvbnQtc2l6ZScpO1xuJGg0LWxpbmUtaGVpZ2h0ICAgOiBtYXAtZ2V0KCRoNCwgJ2xpbmUtaGVpZ2h0Jyk7XG4kaDQtZm9udC1zaXplLW1pbiA6IGlmKG1hcC5oYXMta2V5KCRoNCwgXCJmb250LXNpemUtbWluXCIpLCBtYXAtZ2V0KCRoNCwgXCJmb250LXNpemUtbWluXCIpLCBmYWxzZSk7XG4kaDQtc2NhbGVyICAgICAgICA6IGlmKG1hcC5oYXMta2V5KCRoNCwgXCJzY2FsZXJcIiksIG1hcC1nZXQoJGg0LCBcInNjYWxlclwiKSwgJHNjYWxlcik7XG5cbiRoNS1mb250LXNpemUgICAgIDogbWFwLWdldCgkaDUsICdmb250LXNpemUnKTtcbiRoNS1saW5lLWhlaWdodCAgIDogbWFwLWdldCgkaDUsICdsaW5lLWhlaWdodCcpO1xuJGg1LWZvbnQtc2l6ZS1taW4gOiBpZihtYXAuaGFzLWtleSgkaDUsIFwiZm9udC1zaXplLW1pblwiKSwgbWFwLWdldCgkaDUsIFwiZm9udC1zaXplLW1pblwiKSwgZmFsc2UpO1xuJGg1LXNjYWxlciAgICAgICAgOiBpZihtYXAuaGFzLWtleSgkaDUsIFwic2NhbGVyXCIpLCBtYXAtZ2V0KCRoNSwgXCJzY2FsZXJcIiksICRzY2FsZXIpO1xuXG4kaDYtZm9udC1zaXplICAgICA6IG1hcC1nZXQoJGg2LCAnZm9udC1zaXplJyk7XG4kaDYtbGluZS1oZWlnaHQgICA6IG1hcC1nZXQoJGg2LCAnbGluZS1oZWlnaHQnKTtcbiRoNi1mb250LXNpemUtbWluIDogaWYobWFwLmhhcy1rZXkoJGg2LCBcImZvbnQtc2l6ZS1taW5cIiksIG1hcC1nZXQoJGg2LCBcImZvbnQtc2l6ZS1taW5cIiksIGZhbHNlKTtcbiRoNi1zY2FsZXIgICAgICAgIDogaWYobWFwLmhhcy1rZXkoJGg2LCBcInNjYWxlclwiKSwgbWFwLWdldCgkaDYsIFwic2NhbGVyXCIpLCAkc2NhbGVyKTtcblxuLy8gSGFuZGxlcyBDcm9wcyBzaG91bGQgdGhleSBub3QgaGF2ZSBiZWVuIHBhc3NlZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJF9oMS1jcm9wLXRvcCAgICA6IGlmKG1hcC5oYXMta2V5KCRoMSwgXCJjcm9wLXRvcFwiKSwgbWFwLWdldCgkaDEsIFwiY3JvcC10b3BcIiksIGZhbHNlKTtcbiRfaDItY3JvcC10b3AgICAgOiBpZihtYXAuaGFzLWtleSgkaDIsIFwiY3JvcC10b3BcIiksIG1hcC1nZXQoJGgyLCBcImNyb3AtdG9wXCIpLCBmYWxzZSk7XG4kX2gzLWNyb3AtdG9wICAgIDogaWYobWFwLmhhcy1rZXkoJGgzLCBcImNyb3AtdG9wXCIpLCBtYXAtZ2V0KCRoMywgXCJjcm9wLXRvcFwiKSwgZmFsc2UpO1xuJF9oNC1jcm9wLXRvcCAgICA6IGlmKG1hcC5oYXMta2V5KCRoNCwgXCJjcm9wLXRvcFwiKSwgbWFwLWdldCgkaDQsIFwiY3JvcC10b3BcIiksIGZhbHNlKTtcbiRfaDUtY3JvcC10b3AgICAgOiBpZihtYXAuaGFzLWtleSgkaDUsIFwiY3JvcC10b3BcIiksIG1hcC1nZXQoJGg1LCBcImNyb3AtdG9wXCIpLCBmYWxzZSk7XG4kX2g2LWNyb3AtdG9wICAgIDogaWYobWFwLmhhcy1rZXkoJGg2LCBcImNyb3AtdG9wXCIpLCBtYXAtZ2V0KCRoNiwgXCJjcm9wLXRvcFwiKSwgZmFsc2UpO1xuXG4kX2gxLWNyb3AtYm90dG9tIDogaWYobWFwLmhhcy1rZXkoJGgxLCBcImNyb3AtYm90dG9tXCIpLCBtYXAtZ2V0KCRoMSwgXCJjcm9wLWJvdHRvbVwiKSwgZmFsc2UpO1xuJF9oMi1jcm9wLWJvdHRvbSA6IGlmKG1hcC5oYXMta2V5KCRoMiwgXCJjcm9wLWJvdHRvbVwiKSwgbWFwLWdldCgkaDIsIFwiY3JvcC1ib3R0b21cIiksIGZhbHNlKTtcbiRfaDMtY3JvcC1ib3R0b20gOiBpZihtYXAuaGFzLWtleSgkaDMsIFwiY3JvcC1ib3R0b21cIiksIG1hcC1nZXQoJGgzLCBcImNyb3AtYm90dG9tXCIpLCBmYWxzZSk7XG4kX2g0LWNyb3AtYm90dG9tIDogaWYobWFwLmhhcy1rZXkoJGg0LCBcImNyb3AtYm90dG9tXCIpLCBtYXAtZ2V0KCRoNCwgXCJjcm9wLWJvdHRvbVwiKSwgZmFsc2UpO1xuJF9oNS1jcm9wLWJvdHRvbSA6IGlmKG1hcC5oYXMta2V5KCRoNSwgXCJjcm9wLWJvdHRvbVwiKSwgbWFwLWdldCgkaDUsIFwiY3JvcC1ib3R0b21cIiksIGZhbHNlKTtcbiRfaDYtY3JvcC1ib3R0b20gOiBpZihtYXAuaGFzLWtleSgkaDYsIFwiY3JvcC1ib3R0b21cIiksIG1hcC1nZXQoJGg2LCBcImNyb3AtYm90dG9tXCIpLCBmYWxzZSk7XG5cblxuLy8gTWl4aW5zIGZvciBlYWNoIGhlYWRpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQG1peGluIF9zZXQtY3JvcCgkZm9udC1zaXplLCAkbGluZS1oZWlnaHQsICRjcm9wKSB7XG5cbiAgQGlmIChtZXRhLnR5cGUtb2YoJGNyb3ApID09ICdtYXAnKSB7XG5cbiAgICAkZm9udC1zaXplICAgOiB1bml0LnN0cmlwKCRmb250LXNpemUpICogMTA7XG4gICAgJGxpbmUtaGVpZ2h0IDogdW5pdC5zdHJpcCgkbGluZS1oZWlnaHQpO1xuICAgICR0b3AgICAgICAgICA6IGlmKG1hcC5oYXMta2V5KCRjcm9wLCBcInRvcFwiKSwgdW5pdC5zdHJpcChtYXAuZ2V0KCRjcm9wLCBcInRvcFwiKSksIDApO1xuICAgICRib3R0b20gICAgICA6IGlmKG1hcC5oYXMta2V5KCRjcm9wLCBcImJvdHRvbVwiKSwgdW5pdC5zdHJpcChtYXAuZ2V0KCRjcm9wLCBcImJvdHRvbVwiKSksIDApO1xuXG4gICAgQGluY2x1ZGUgZm9udC5jcm9wKCRmb250LXNpemUsICRsaW5lLWhlaWdodCwgJHRvcCwgJGJvdHRvbSk7XG5cbiAgfVxuXG59XG5cbkBtaXhpbiBoMSgkZm9udC1zaXplLW9ubHkgOiBmYWxzZSwgJGNyb3AgOiAkZW5hYmxlLWNyb3BwaW5nKSB7XG5cbiAgZm9udC1zaXplIDogZm9udC5zaXplKCRoMS1mb250LXNpemUpO1xuXG4gIEBpZiAoICRoMS1mb250LXNpemUtbWluIGFuZCAkaDEtZm9udC1zaXplLW1pbiA8ICRoMS1mb250LXNpemUgKSB7XG4gICAgZm9udC1zaXplIDogY2xhbXAoI3tmb250LnNpemUoJGgxLWZvbnQtc2l6ZS1taW4pfSwgI3skaDEtc2NhbGVyfSwgI3tmb250LnNpemUoJGgxLWZvbnQtc2l6ZSl9KTtcbiAgfVxuXG4gIEBpZiBub3QgJGZvbnQtc2l6ZS1vbmx5IHsgXG5cbiAgICBAaWYgKCAkY3JvcCApIHsgXG4gICAgICBAaW5jbHVkZSBmb250LmNyb3AoJGgxLWZvbnQtc2l6ZSwgJGgxLWxpbmUtaGVpZ2h0LCAkX2gxLWNyb3AtdG9wLCAkX2gxLWNyb3AtYm90dG9tICk7IFxuICAgIH0gQGVsc2Uge1xuICAgICAgbGluZS1oZWlnaHQgOiAkaDEtbGluZS1oZWlnaHQ7IFxuICAgIH1cblxuICB9XG5cbn1cblxuQG1peGluIGgyKCRmb250LXNpemUtb25seSA6IGZhbHNlLCAkY3JvcCA6ICRlbmFibGUtY3JvcHBpbmcpIHtcblxuICBmb250LXNpemUgOiBmb250LnNpemUoJGgyLWZvbnQtc2l6ZSk7XG5cbiAgQGlmICggJGgyLWZvbnQtc2l6ZS1taW4gYW5kICRoMi1mb250LXNpemUtbWluIDwgJGgyLWZvbnQtc2l6ZSApIHtcbiAgICBmb250LXNpemUgOiBjbGFtcCgje2ZvbnQuc2l6ZSgkaDItZm9udC1zaXplLW1pbil9LCAjeyRoMi1zY2FsZXJ9LCAje2ZvbnQuc2l6ZSgkaDItZm9udC1zaXplKX0pO1xuICB9XG5cbiAgQGlmIG5vdCAkZm9udC1zaXplLW9ubHkgeyBcblxuICAgIEBpZiAoICRjcm9wICkgeyBcbiAgICAgIEBpbmNsdWRlIGZvbnQuY3JvcCgkaDItZm9udC1zaXplLCAkaDItbGluZS1oZWlnaHQsICRfaDItY3JvcC10b3AsICRfaDItY3JvcC1ib3R0b20gKTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICBsaW5lLWhlaWdodCA6ICRoMi1saW5lLWhlaWdodDsgXG4gICAgfVxuICAgIFxuICB9XG5cbn1cblxuQG1peGluIGgzKCRmb250LXNpemUtb25seSA6IGZhbHNlLCAkY3JvcCA6ICRlbmFibGUtY3JvcHBpbmcpIHtcblxuICBmb250LXNpemUgOiBmb250LnNpemUoJGgzLWZvbnQtc2l6ZSk7XG5cbiAgQGlmICggJGgzLWZvbnQtc2l6ZS1taW4gYW5kICRoMy1mb250LXNpemUtbWluIDwgJGgzLWZvbnQtc2l6ZSApIHtcbiAgICBmb250LXNpemUgOiBjbGFtcCgje2ZvbnQuc2l6ZSgkaDMtZm9udC1zaXplLW1pbil9LCAjeyRoMy1zY2FsZXJ9LCAje2ZvbnQuc2l6ZSgkaDMtZm9udC1zaXplKX0pO1xuICB9XG5cbiAgQGlmIG5vdCAkZm9udC1zaXplLW9ubHkgeyBcblxuICAgIEBpZiAoICRjcm9wICkgeyBcbiAgICAgIEBpbmNsdWRlIGZvbnQuY3JvcCgkaDMtZm9udC1zaXplLCAkaDMtbGluZS1oZWlnaHQsICRfaDMtY3JvcC10b3AsICRfaDMtY3JvcC1ib3R0b20gKTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICBsaW5lLWhlaWdodCA6ICRoMy1saW5lLWhlaWdodDsgXG4gICAgfVxuICAgIFxuICB9XG5cbn1cblxuQG1peGluIGg0KCRmb250LXNpemUtb25seSA6IGZhbHNlLCAkY3JvcCA6ICRlbmFibGUtY3JvcHBpbmcpIHtcblxuICBmb250LXNpemUgOiBmb250LnNpemUoJGg0LWZvbnQtc2l6ZSk7XG5cbiAgQGlmICggJGg0LWZvbnQtc2l6ZS1taW4gYW5kICRoNC1mb250LXNpemUtbWluIDwgJGg0LWZvbnQtc2l6ZSApIHtcbiAgICBmb250LXNpemUgOiBjbGFtcCgje2ZvbnQuc2l6ZSgkaDQtZm9udC1zaXplLW1pbil9LCAjeyRoNC1zY2FsZXJ9LCAje2ZvbnQuc2l6ZSgkaDQtZm9udC1zaXplKX0pO1xuICB9XG5cbiAgQGlmIG5vdCAkZm9udC1zaXplLW9ubHkgeyBcblxuICAgIEBpZiAoICRjcm9wICkgeyBcbiAgICAgIEBpbmNsdWRlIGZvbnQuY3JvcCgkaDQtZm9udC1zaXplLCAkaDQtbGluZS1oZWlnaHQsICRfaDQtY3JvcC10b3AsICRfaDQtY3JvcC1ib3R0b20gKTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICBsaW5lLWhlaWdodCA6ICRoNC1saW5lLWhlaWdodDsgXG4gICAgfVxuICAgIFxuICB9XG5cbn1cblxuQG1peGluIGg1KCRmb250LXNpemUtb25seSA6IGZhbHNlLCAkY3JvcCA6ICRlbmFibGUtY3JvcHBpbmcpIHtcblxuICBmb250LXNpemUgOiBmb250LnNpemUoJGg1LWZvbnQtc2l6ZSk7XG5cbiAgQGlmICggJGg1LWZvbnQtc2l6ZS1taW4gYW5kICRoNS1mb250LXNpemUtbWluIDwgJGg1LWZvbnQtc2l6ZSApIHtcbiAgICBmb250LXNpemUgOiBjbGFtcCgje2ZvbnQuc2l6ZSgkaDUtZm9udC1zaXplLW1pbil9LCAjeyRoNS1zY2FsZXJ9LCAje2ZvbnQuc2l6ZSgkaDUtZm9udC1zaXplKX0pO1xuICB9XG5cbiAgQGlmIG5vdCAkZm9udC1zaXplLW9ubHkgeyBcblxuICAgIEBpZiAoICRjcm9wICkgeyBcbiAgICAgIEBpbmNsdWRlIGZvbnQuY3JvcCgkaDUtZm9udC1zaXplLCAkaDUtbGluZS1oZWlnaHQsICRfaDUtY3JvcC10b3AsICRfaDUtY3JvcC1ib3R0b20gKTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICBsaW5lLWhlaWdodCA6ICRoNS1saW5lLWhlaWdodDsgXG4gICAgfVxuICAgIFxuICB9XG5cbn1cblxuQG1peGluIGg2KCRmb250LXNpemUtb25seSA6IGZhbHNlLCAkY3JvcCA6ICRlbmFibGUtY3JvcHBpbmcpIHtcblxuICBmb250LXNpemUgOiBmb250LnNpemUoJGg2LWZvbnQtc2l6ZSk7XG5cbiAgQGlmICggJGg2LWZvbnQtc2l6ZS1taW4gYW5kICRoNi1mb250LXNpemUtbWluIDwgJGg2LWZvbnQtc2l6ZSApIHtcbiAgICBmb250LXNpemUgOiBjbGFtcCgje2ZvbnQuc2l6ZSgkaDYtZm9udC1zaXplLW1pbil9LCAjeyRoNi1zY2FsZXJ9LCAje2ZvbnQuc2l6ZSgkaDYtZm9udC1zaXplKX0pO1xuICB9XG5cbiAgQGlmIG5vdCAkZm9udC1zaXplLW9ubHkgeyBcblxuICAgIEBpZiAoICRjcm9wICkgeyBcbiAgICAgIEBpbmNsdWRlIGZvbnQuY3JvcDIoJGg2LWZvbnQtc2l6ZSwgJGg2LWxpbmUtaGVpZ2h0LCAkX2g2LWNyb3AtdG9wLCAkX2g2LWNyb3AtYm90dG9tICk7IFxuICAgIH0gQGVsc2Uge1xuICAgICAgbGluZS1oZWlnaHQgOiAkaDYtbGluZS1oZWlnaHQ7IFxuICAgIH1cbiAgICBcbiAgfVxuXG59XG5cblxuIl19 */