/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[4].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[3]!./assets/styles/front/pages/homepage.scss ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************/
.text-clamp-2 {
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  line-clamp: 2;
  -webkit-line-clamp: 2;
}

.text-clamp-3 {
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  line-clamp: 3;
  -webkit-line-clamp: 3;
}

.text-clamp-4 {
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  line-clamp: 4;
  -webkit-line-clamp: 4;
}

@media (max-width: 767.98px) {
  .block-primary .cookidoo-left img {
    width: 30% !important;
  }
}
.block-primary .cookidoo-right {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.block-primary .cookidoo-right p {
  font-size: calc(1.275rem + 0.3vw);
  line-height: calc(1.35rem + 1.2vw);
}
@media (min-width: 1200px) {
  .block-primary .cookidoo-right p {
    font-size: 1.5rem;
  }
}
@media (min-width: 1200px) {
  .block-primary .cookidoo-right p {
    line-height: 2.25rem;
  }
}
.block-newsletter__item, .block-tmx-ads__item {
  position: relative;
}
.block-newsletter__item__content, .block-tmx-ads__item__content {
  position: absolute;
  bottom: 1rem;
  left: 50%;
  transform: translateX(-50%);
}
.block-newsletter__item__content a, .block-tmx-ads__item__content a {
  font-size: 0.75rem;
  padding: 0.375rem 0.875rem;
  line-height: 1.25rem;
}
.block .list-recipes-highlight__left .recipe-highlight-main__item {
  align-items: center;
}
.block .list-recipes-highlight__left .recipe-highlight-main__item__title {
  font-size: 1rem;
  line-height: calc(1.275rem + 0.3vw);
  font-weight: 500;
  padding: 0.25rem 0;
}
@media (min-width: 1200px) {
  .block .list-recipes-highlight__left .recipe-highlight-main__item__title {
    line-height: 1.5rem;
  }
}
.block .list-recipes-highlight__left .recipe-highlight-main__item__user {
  font-size: 0.75rem;
}
.block .list-recipes-highlight__left .recipe-highlight-main__item__user .link--author {
  font-weight: 600;
  line-height: 1.25rem;
}
.block .list-recipes-highlight__left .recipe-highlight-main__item__info {
  padding-top: 1rem;
  padding-bottom: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
  .block .list-recipes-highlight__left .recipe-highlight-main__item__info {
    padding-bottom: 2rem;
  }
}
.block .list-recipes-highlight__left .recipe-highlight-main__item__info-row {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}
.block .list-recipes-highlight__left .recipe-highlight-main__item__info-icon {
  margin-right: 0.25rem;
}
.block .list-recipes-highlight__left .recipe-highlight-main__item__info-icon [class^=icon-] {
  font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
  .block .list-recipes-highlight__left .recipe-highlight-main__item__info-icon [class^=icon-] {
    font-size: 2rem;
  }
}
.block .list-recipes-highlight__left .recipe-highlight-main__item__info-icon img {
  width: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
  .block .list-recipes-highlight__left .recipe-highlight-main__item__info-icon img {
    width: 2.5rem;
  }
}
.block .list-recipes-highlight__left .recipe-highlight-main__item__info-label {
  font-weight: 400;
  font-size: 0.75rem;
}
.block .list-recipes-highlight__left .recipe-highlight-main__item__info-value {
  font-weight: 700;
  font-size: 0.75rem;
}
.block .list-recipes-highlight__left .recipe-highlight-main__item__link a {
  padding: 0.5rem 1rem;
  font-size: 1rem;
  line-height: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
  .block .list-recipes-highlight__left .recipe-highlight-main__item__link a {
    line-height: 1.5rem;
  }
}
.block .list-recipes-highlight__right h4 {
  font-size: calc(1.3125rem + 0.75vw);
  line-height: calc(1.35rem + 1.2vw);
  margin-left: auto;
  margin-right: auto;
}
@media (min-width: 1200px) {
  .block .list-recipes-highlight__right h4 {
    font-size: 1.875rem;
  }
}
@media (min-width: 1200px) {
  .block .list-recipes-highlight__right h4 {
    line-height: 2.25rem;
  }
}
.block .list-recipes-highlight__right .recipe-highlight:hover {
  background: #F3F5F3;
  transition: background-color 1s ease;
}
.block .list-recipes-highlight__right .recipe-highlight.active .recipe-highlight__left img {
  border: 2px solid #00AC46;
}
.block .list-recipes-highlight__right .recipe-highlight__left {
  flex-basis: 80px;
  flex-shrink: 0;
}
.block .list-recipes-highlight__right .recipe-highlight__left img {
  border: 2px solid transparent;
  object-fit: cover;
}
.block .list-recipes-highlight__right .recipe-highlight__left img:hover {
  border: 2px solid #00AC46;
}
@media (max-width: 991.98px) {
  .block .list-recipes-highlight__right .recipe-highlight:hover {
    background: transparent;
  }
}
.block .list-recipes-highlight__right .recipe-highlight__title {
  font-size: 0.875rem;
  line-height: calc(1.2625rem + 0.15vw);
  font-weight: 500;
  margin-bottom: 0.25rem;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  text-overflow: ellipsis;
}
@media (min-width: 1200px) {
  .block .list-recipes-highlight__right .recipe-highlight__title {
    line-height: 1.375rem;
  }
}
.block .list-recipes-highlight__right .recipe-highlight__date {
  font-size: 0.75rem;
  line-height: 1.25rem;
  font-weight: 400;
}
.block .list-recipes-highlight__right ul {
  display: grid !important;
  gap: 0 !important;
  row-gap: 1rem;
}
@media (max-width: 991.98px) {
  .block .list-recipes-highlight__right ul {
    grid-template-columns: repeat(4, 1fr);
    column-gap: 1rem !important;
  }
  .block .list-recipes-highlight__right ul img {
    width: 100% !important;
    aspect-ratio: 4/3;
  }
}
@media (max-width: 575.98px) {
  .block .list-recipes-highlight__right ul {
    column-gap: 0.6rem !important;
    row-gap: 0;
  }
  .block .list-recipes-highlight__right ul li {
    padding: 0;
    gap: 0 !important;
  }
  .block .list-recipes-highlight__right ul img {
    width: 100% !important;
    aspect-ratio: 4/3;
  }
}
.block .list-latest-members__item {
  background: white;
  padding: 1rem;
}
.block .list-latest-members__item__info {
  margin-left: 1rem;
}
.block .list-latest-members__item__info-name {
  font-size: 0.875rem;
  font-weight: 500;
}
.block .list-latest-members__item__info-name a {
  display: inline;
}
.block .list-latest-members__item__info-time {
  font-size: 0.75rem;
}
.block .list-latest-members__item__message, .block .list-latest-members__item__follow {
  cursor: pointer;
}
.block .list-latest-news__item {
  background: #F3F5F3;
}
.block .list-latest-news__item:hover {
  box-shadow: var(--bs-box-shadow) !important;
  transition: all 0.5s ease;
}
.block .list-latest-news__item__content {
  padding: 0 1.5rem 1.5rem 1.5rem;
  gap: 0.5rem;
}
.block .list-latest-news__item__image {
  max-height: 14rem;
  min-height: 14rem;
}
.block .list-latest-news__item__image img {
  aspect-ratio: 4/3;
  object-fit: cover;
  border-radius: 0 0 2.815rem 0;
}
.block .list-latest-news__item__title {
  font-weight: 500;
  font-size: 1.125rem;
  line-height: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
  .block .list-latest-news__item__title {
    line-height: 1.5rem;
  }
}
.block .list-latest-news__item__summary p {
  font-weight: 300;
  font-size: 0.75rem;
  line-height: 1.25rem;
}

@media (min-width: 992px) {
  .block-activity-stream__main {
    max-height: 740px;
  }
}
.block-activity-stream__item {
  background: #F3F5F3;
  padding: 5rem 2.5rem;
}
.block-activity-stream__item--right {
  max-height: 730px;
}
@media (min-width: 992px) {
  .block-activity-stream__item--left {
    height: 350px;
  }
  .block-activity-stream__item--right {
    height: 730px;
  }
}
.block-activity-stream__item__action a {
  font-weight: 600;
  font-size: 0.75rem;
  line-height: 1.25rem;
  padding: 0.375rem 0.875rem;
}
.block-activity-stream .list-active-users__name {
  font-weight: 700;
  line-height: 1.375rem;
  margin-top: 0.5rem;
}
.block-activity-stream .list-latest-forum__item {
  background: 0.75rem center no-repeat url(/recipe-assets/build/frontend/images/icon_edit.795ccbb8.svg);
  padding-left: 3rem;
}
.block-activity-stream .list-latest-forum__title {
  font-weight: 500;
  text-decoration: underline;
  font-size: 1rem;
  line-height: calc(1.2875rem + 0.45vw);
  overflow: hidden;
  display: block;
  text-overflow: ellipsis;
  white-space: nowrap;
}
@media (min-width: 1200px) {
  .block-activity-stream .list-latest-forum__title {
    line-height: 1.625rem;
  }
}
.block-activity-stream .list-searched-recipe__item a {
  padding: 6px 14px 6px 30px;
  color: #23282A;
  background: 10px center no-repeat rgba(0, 0, 0, 0.07) url(/recipe-assets/build/frontend/images/icon_search.c7de16bb.svg);
  font-size: 0.75rem;
  font-weight: 500;
  line-height: 1.25rem;
  border-radius: 4px;
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBaUJNO0VBQ0U7RUUvQkYsa0JBTEk7RUFLSixvQkFMSTtFRnVDRjtBQWZSO0FBcUJJO0VBQ0U7RUFDQTtFQUNBO0FBbkJOO0FBd0JJO0VBQ0U7RUFDQTtBQXRCTjtBQXlCSTtFQUNFO0VBQ0E7RUV2REEsZUFMSTtFQVNGO0VIbFNOO0VBQ0E7RUFDQTtFQUNBO0FDaVVGO0FFOUxJO0VGNk1BO0lFMUNJO0VGK0JOO0FBQ0Y7QUFxQk07RUFDRTtFQUNBLGNHaFdVO0VIaVdWO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFuQlIsQyIsInNvdXJjZXMiOlsid2VicGFjazovL3RtcmMvLi9hc3NldHMvc3R5bGVzL2Zyb250L21peGlucy9fdGV4dC5zY3NzIiwid2VicGFjazovL3RtcmMvLi9hc3NldHMvc3R5bGVzL2Zyb250L3BhZ2VzL2hvbWVwYWdlLnNjc3MiLCJ3ZWJwYWNrOi8vdG1yYy8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JyZWFrcG9pbnRzLnNjc3MiLCJ3ZWJwYWNrOi8vdG1yYy8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy92ZW5kb3IvX3Jmcy5zY3NzIiwid2VicGFjazovL3RtcmMvLi9hc3NldHMvc3R5bGVzL2Zyb250L2JzNS9fdmFyaWFibGVzLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQG1peGluIHRleHQtMy1kb3RzIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG5AbWl4aW4gdGV4dC1vdmVyZmxvdyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbn1cblxuLnRleHQtY2xhbXAtMntcbiAgQGluY2x1ZGUgdGV4dC1vdmVyZmxvdztcbiAgbGluZS1jbGFtcDogMjtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xufVxuLnRleHQtY2xhbXAtM3tcbiAgQGluY2x1ZGUgdGV4dC1vdmVyZmxvdztcbiAgbGluZS1jbGFtcDogMztcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAzO1xufVxuLnRleHQtY2xhbXAtNHtcbiAgQGluY2x1ZGUgdGV4dC1vdmVyZmxvdztcbiAgbGluZS1jbGFtcDogNDtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiA0O1xufSIsIkBpbXBvcnQgXCJib290c3RyYXAvc2Nzcy9mdW5jdGlvbnNcIjtcbkBpbXBvcnQgXCJib290c3RyYXAvc2Nzcy92YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCIuLi9iczUvdmFyaWFibGVzXCI7XG5AaW1wb3J0IFwiYm9vdHN0cmFwL3Njc3MvdmFyaWFibGVzLWRhcmtcIjtcbkBpbXBvcnQgXCJib290c3RyYXAvc2Nzcy9taXhpbnMvYnJlYWtwb2ludHNcIjtcbkBpbXBvcnQgXCJib290c3RyYXAvc2Nzcy92ZW5kb3IvcmZzXCI7XG5AaW1wb3J0IFwiLi4vbWl4aW5zL2Jsb2NrXCI7XG5AaW1wb3J0IFwiLi4vbWl4aW5zL3RleHRcIjtcblxuLmJsb2NrIHtcbiAgJi1wcmltYXJ5IHtcbiAgICAuY29va2lkb28ge1xuICAgICAgJi1sZWZ0IHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG4gICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIHdpZHRoOiAzMCUgIWltcG9ydGFudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICYtcmlnaHQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDFyZW07XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgQGluY2x1ZGUgcmZzKDEuNXJlbSk7XG4gICAgICAgICAgQGluY2x1ZGUgcmZzKDIuMjVyZW0sICdsaW5lLWhlaWdodCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi1uZXdzbGV0dGVyLFxuICAmLXRteC1hZHMge1xuICAgICZfX2l0ZW0ge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAmX19jb250ZW50IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBib3R0b206IDFyZW07XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuXG4gICAgICAgIGEge1xuICAgICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgwLjc1cmVtKTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjM3NXJlbSAwLjg3NXJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4yNXJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5saXN0LXJlY2lwZXMtaGlnaGxpZ2h0IHtcbiAgICAmX19sZWZ0IHtcbiAgICAgIC5yZWNpcGUtaGlnaGxpZ2h0LW1haW4ge1xuXG4gICAgICAgICZfX2l0ZW0ge1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgICAmX190aXRsZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMXJlbSk7XG4gICAgICAgICAgICBAaW5jbHVkZSByZnMoMS41cmVtLCAnbGluZS1oZWlnaHQnKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgJl9fdXNlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMC43NXJlbSk7XG5cbiAgICAgICAgICAgIC5saW5rIHtcbiAgICAgICAgICAgICAgJi0tYXV0aG9yIHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHJmcygxLjI1cmVtLCAnbGluZS1oZWlnaHQnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgICZfX2luZm8ge1xuICAgICAgICAgICAgQGluY2x1ZGUgcGFkZGluZy10b3AoMXJlbSk7XG4gICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nLWJvdHRvbSgycmVtKTtcblxuICAgICAgICAgICAgJi1yb3cge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nLXRvcCgwLjVyZW0pO1xuICAgICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nLWJvdHRvbSgwLjVyZW0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLWljb24ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBtYXJnaW4tcmlnaHQoNHB4KTtcbiAgICAgICAgICAgICAgW2NsYXNzXj0naWNvbi0nXSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDJyZW0pO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSByZnMoMi41cmVtLCAnd2lkdGgnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLWxhYmVsIHtcbiAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDAuNzVyZW0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLXZhbHVlIHtcbiAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDAuNzVyZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgICZfX2xpbmsge1xuICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgICAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMXJlbSk7XG4gICAgICAgICAgICAgICBAaW5jbHVkZSByZnMoMS41cmVtLCAnbGluZS1oZWlnaHQnKTtcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fcmlnaHQge1xuICAgICAgaDQge1xuICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMS44NzVyZW0pO1xuICAgICAgICBAaW5jbHVkZSByZnMoMi4yNXJlbSwgJ2xpbmUtaGVpZ2h0Jyk7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgICB9XG5cbiAgICAgIC5yZWNpcGUtaGlnaGxpZ2h0IHtcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJGJnLXNlY29uZGFyeTtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDFzIGVhc2U7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgLnJlY2lwZS1oaWdobGlnaHRfX2xlZnQge1xuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgJHByaW1hcnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICZfX2xlZnQge1xuICAgICAgICAgIGZsZXgtYmFzaXM6IDgwcHg7XG4gICAgICAgICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAkcHJpbWFyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvL0BpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihzbSkge1xuICAgICAgICAgIC8vICBpbWcge1xuICAgICAgICAgIC8vICAgIHdpZHRoOiA4MHB4O1xuICAgICAgICAgIC8vICAgIG1heC13aWR0aDogODBweDtcbiAgICAgICAgICAvLyAgICBtYXgtaGVpZ2h0OiA4MHB4O1xuICAgICAgICAgIC8vICB9XG4gICAgICAgICAgLy99XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obGcpIHtcbiAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICZfX3RpdGxlIHtcbiAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMC44NzVyZW0pO1xuICAgICAgICAgIEBpbmNsdWRlIHJmcygxLjM3NXJlbSwgJ2xpbmUtaGVpZ2h0Jyk7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xuICAgICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIH1cblxuICAgICAgICAmX19kYXRlIHtcbiAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMC43NXJlbSk7XG4gICAgICAgICAgQGluY2x1ZGUgcmZzKDEuMjVyZW0sICdsaW5lLWhlaWdodCcpO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBtaXhpbiBpbWFnZV9zaXplKCkge1xuICAgICAgICB3aWR0aDogMTAwJSFpbXBvcnRhbnQ7XG4gICAgICAgIGFzcGVjdC1yYXRpbzogNC8zO1xuICAgICAgfVxuICAgICAgdWwge1xuICAgICAgICBkaXNwbGF5OiBncmlkIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwIWltcG9ydGFudDtcbiAgICAgICAgcm93LWdhcDogMXJlbTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obGcpIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpO1xuICAgICAgICAgIGNvbHVtbi1nYXA6IDFyZW0haW1wb3J0YW50O1xuICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICBAaW5jbHVkZSBpbWFnZV9zaXplKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHNtKSB7XG4gICAgICAgICAgY29sdW1uLWdhcDogLjZyZW0haW1wb3J0YW50O1xuICAgICAgICAgIHJvdy1nYXA6IDA7XG4gICAgICAgICAgbGkge1xuICAgICAgICAgICAgQGluY2x1ZGUgcGFkZGluZygwKTtcbiAgICAgICAgICAgIGdhcDogMCFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAucmVjaXBlLWhpZ2hsaWdodF9fcmlnaHQge1xuICAgICAgICAgICAgICBAZXh0ZW5kIC5tdC1uMiAhb3B0aW9uYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICBAaW5jbHVkZSBpbWFnZV9zaXplKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICAubGlzdC1sYXRlc3QtbWVtYmVycyB7XG4gICAgJl9faXRlbSB7XG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgIHBhZGRpbmc6IDFyZW07XG5cbiAgICAgICZfX2luZm8ge1xuICAgICAgICBtYXJnaW4tbGVmdDogMXJlbTtcblxuICAgICAgICAmLW5hbWUge1xuICAgICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgwLjg3NXJlbSk7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgICAgICAgIGEge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtdGltZSB7XG4gICAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDAuNzVyZW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICZfX21lc3NhZ2UsXG4gICAgICAmX19mb2xsb3cge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmxpc3QtbGF0ZXN0LW5ld3Mge1xuXG4gICAgJl9faXRlbSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYmctc2Vjb25kYXJ5O1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLWJzLWJveC1zaGFkb3cpICFpbXBvcnRhbnQ7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAuNXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgJl9fY29udGVudCB7XG4gICAgICAgIHBhZGRpbmc6IDAgMS41cmVtIDEuNXJlbSAxLjVyZW07XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgfVxuXG4gICAgICAmX19pbWFnZSB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDE0cmVtO1xuICAgICAgICBtaW4taGVpZ2h0OiAxNHJlbTtcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICBhc3BlY3QtcmF0aW86IDQvMztcbiAgICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwIDAgMi44MTVyZW0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmX190aXRsZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxLjEyNXJlbSk7XG4gICAgICAgIEBpbmNsdWRlIHJmcygxLjVyZW0sICdsaW5lLWhlaWdodCcpO1xuICAgICAgfVxuXG4gICAgICAmX19zdW1tYXJ5IHtcbiAgICAgICAgcCB7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMC43NXJlbSk7XG4gICAgICAgICAgQGluY2x1ZGUgcmZzKDEuMjVyZW0sICdsaW5lLWhlaWdodCcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG4gIH1cbn1cblxuLmJsb2NrLWFjdGl2aXR5LXN0cmVhbSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobGcpIHtcbiAgICAmX19tYWluIHtcbiAgICAgIG1heC1oZWlnaHQ6IDc0MHB4O1xuICAgIH1cbiAgfVxuXG4gICZfX2l0ZW0ge1xuICAgIGJhY2tncm91bmQ6ICRiZy1zZWNvbmRhcnk7XG4gICAgcGFkZGluZzogNXJlbSAyLjVyZW07XG5cbiAgICAmLS1yaWdodCB7XG4gICAgICBtYXgtaGVpZ2h0OiA3MzBweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XG4gICAgICAmLS1sZWZ0IHtcbiAgICAgICAgaGVpZ2h0OiAzNTBweDtcbiAgICAgIH1cbiAgICAgICYtLXJpZ2h0IHtcbiAgICAgICAgICBoZWlnaHQ6IDczMHB4O1xuICAgICAgfVxuICAgIH1cblxuICAgICZfX2FjdGlvbiB7XG4gICAgICBhIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDAuNzVyZW0pO1xuICAgICAgICBAaW5jbHVkZSByZnMoMS4yNXJlbSwgJ2xpbmUtaGVpZ2h0Jyk7XG4gICAgICAgIHBhZGRpbmc6IDAuMzc1cmVtIDAuODc1cmVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5saXN0LWFjdGl2ZS11c2VycyB7XG4gICAgJl9fbmFtZSB7XG4gICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMzc1cmVtO1xuICAgICAgbWFyZ2luLXRvcDogMC41cmVtO1xuICAgIH1cbiAgfVxuXG4gIC5saXN0LWxhdGVzdC1mb3J1bSB7XG4gICAgJl9faXRlbSB7XG4gICAgICBiYWNrZ3JvdW5kOiAwLjc1cmVtIGNlbnRlciBuby1yZXBlYXQgdXJsKFwiLi4vLi4vLi4vaW1hZ2VzL2ljb25fZWRpdC5zdmdcIik7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDNyZW07XG4gICAgfVxuXG4gICAgJl9fdGl0bGUge1xuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDFyZW0pO1xuICAgICAgQGluY2x1ZGUgcmZzKDEuNjI1cmVtLCAnbGluZS1oZWlnaHQnKTtcbiAgICAgIEBpbmNsdWRlIHRleHQtMy1kb3RzKCk7XG4gICAgfVxuICB9XG5cbiAgLmxpc3Qtc2VhcmNoZWQtcmVjaXBlIHtcbiAgICAmX19pdGVtIHtcbiAgICAgIGEge1xuICAgICAgICBwYWRkaW5nOiA2cHggMTRweCA2cHggMzBweDtcbiAgICAgICAgY29sb3I6ICRjb250ZW50LXByaW1hcnk7XG4gICAgICAgIGJhY2tncm91bmQ6IDEwcHggY2VudGVyIG5vLXJlcGVhdCAkYmctYmxhY2stMDA3IHVybChcIi4uLy4uLy4uL2ltYWdlcy9pY29uX3NlYXJjaC5zdmdcIik7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuXG4vL1xuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxuLy9cbi8vICAgICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpXG4vL1xuLy8gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIGFzIHRoZSBgJGJyZWFrcG9pbnRzYCBhcmd1bWVudCBieSBkZWZhdWx0LlxuXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsIHh4bCkpXG4vLyAgICBtZFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC1rZXlzKCRicmVha3BvaW50cykpIHtcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XG4gIEBpZiBub3QgJG4ge1xuICAgIEBlcnJvciBcImJyZWFrcG9pbnQgYCN7JG5hbWV9YCBub3QgZm91bmQgaW4gYCN7JGJyZWFrcG9pbnRzfWBcIjtcbiAgfVxuICBAcmV0dXJuIGlmKCRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuLy8gTWluaW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgc21hbGxlc3QgKGZpcnN0KSBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWluKHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIDU3NnB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyByZWR1Y2VkIGJ5IDAuMDJweCB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMgb2Zcbi8vIGBtaW4tYCBhbmQgYG1heC1gIHByZWZpeGVzIGFuZCB2aWV3cG9ydHMgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy5cbi8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvbWVkaWFxdWVyaWVzLTQvI21xLW1pbi1tYXhcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cbi8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjYxXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgobWQsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgNzY3Ljk4cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtYXggYW5kICRtYXggPiAwLCAkbWF4IC0gLjAyLCBudWxsKTtcbn1cblxuLy8gUmV0dXJucyBhIGJsYW5rIHN0cmluZyBpZiBzbWFsbGVzdCBicmVha3BvaW50LCBvdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSB3aXRoIGEgZGFzaCBpbiBmcm9udC5cbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIFwiLXNtXCJcbkBmdW5jdGlvbiBicmVha3BvaW50LWluZml4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEByZXR1cm4gaWYoYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cykgPT0gbnVsbCwgXCJcIiwgXCItI3skbmFtZX1cIik7XG59XG5cbi8vIE1lZGlhIG9mIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgd2lkZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtaW4ge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIG9mIGF0IG1vc3QgdGhlIG1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBsYXJnZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtYXgge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIHRoYXQgc3BhbnMgbXVsdGlwbGUgYnJlYWtwb2ludCB3aWR0aHMuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgYmV0d2VlbiB0aGUgbWluIGFuZCBtYXggYnJlYWtwb2ludHNcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWJldHdlZW4oJGxvd2VyLCAkdXBwZXIsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJGxvd2VyLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkdXBwZXIsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGxvd2VyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkdXBwZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIE1lZGlhIGJldHdlZW4gdGhlIGJyZWFrcG9pbnQncyBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocy5cbi8vIE5vIG1pbmltdW0gZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LCBhbmQgbm8gbWF4aW11bSBmb3IgdGhlIGxhcmdlc3Qgb25lLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IG9ubHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQsIG5vdCB2aWV3cG9ydHMgYW55IHdpZGVyIG9yIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiAgYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRtYXg6ICBicmVha3BvaW50LW1heCgkbmV4dCwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5leHQsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RpbWVuc2lvbi1uby1ub24tbnVtZXJpYy12YWx1ZXNcblxuLy8gU0NTUyBSRlMgbWl4aW5cbi8vXG4vLyBBdXRvbWF0ZWQgcmVzcG9uc2l2ZSB2YWx1ZXMgZm9yIGZvbnQgc2l6ZXMsIHBhZGRpbmdzLCBtYXJnaW5zIGFuZCBtdWNoIG1vcmVcbi8vXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL3Jmcy9ibG9iL21haW4vTElDRU5TRSlcblxuLy8gQ29uZmlndXJhdGlvblxuXG4vLyBCYXNlIHZhbHVlXG4kcmZzLWJhc2UtdmFsdWU6IDEuMjVyZW0gIWRlZmF1bHQ7XG4kcmZzLXVuaXQ6IHJlbSAhZGVmYXVsdDtcblxuQGlmICRyZnMtdW5pdCAhPSByZW0gYW5kICRyZnMtdW5pdCAhPSBweCB7XG4gIEBlcnJvciBcImAjeyRyZnMtdW5pdH1gIGlzIG5vdCBhIHZhbGlkIHVuaXQgZm9yICRyZnMtdW5pdC4gVXNlIGBweGAgb3IgYHJlbWAuXCI7XG59XG5cbi8vIEJyZWFrcG9pbnQgYXQgd2hlcmUgdmFsdWVzIHN0YXJ0IGRlY3JlYXNpbmcgaWYgc2NyZWVuIHdpZHRoIGlzIHNtYWxsZXJcbiRyZnMtYnJlYWtwb2ludDogMTIwMHB4ICFkZWZhdWx0O1xuJHJmcy1icmVha3BvaW50LXVuaXQ6IHB4ICFkZWZhdWx0O1xuXG5AaWYgJHJmcy1icmVha3BvaW50LXVuaXQgIT0gcHggYW5kICRyZnMtYnJlYWtwb2ludC11bml0ICE9IGVtIGFuZCAkcmZzLWJyZWFrcG9pbnQtdW5pdCAhPSByZW0ge1xuICBAZXJyb3IgXCJgI3skcmZzLWJyZWFrcG9pbnQtdW5pdH1gIGlzIG5vdCBhIHZhbGlkIHVuaXQgZm9yICRyZnMtYnJlYWtwb2ludC11bml0LiBVc2UgYHB4YCwgYGVtYCBvciBgcmVtYC5cIjtcbn1cblxuLy8gUmVzaXplIHZhbHVlcyBiYXNlZCBvbiBzY3JlZW4gaGVpZ2h0IGFuZCB3aWR0aFxuJHJmcy10d28tZGltZW5zaW9uYWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBGYWN0b3Igb2YgZGVjcmVhc2VcbiRyZnMtZmFjdG9yOiAxMCAhZGVmYXVsdDtcblxuQGlmIHR5cGUtb2YoJHJmcy1mYWN0b3IpICE9IG51bWJlciBvciAkcmZzLWZhY3RvciA8PSAxIHtcbiAgQGVycm9yIFwiYCN7JHJmcy1mYWN0b3J9YCBpcyBub3QgYSB2YWxpZCAgJHJmcy1mYWN0b3IsIGl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIDEuXCI7XG59XG5cbi8vIE1vZGUuIFBvc3NpYmlsaXRpZXM6IFwibWluLW1lZGlhLXF1ZXJ5XCIsIFwibWF4LW1lZGlhLXF1ZXJ5XCJcbiRyZnMtbW9kZTogbWluLW1lZGlhLXF1ZXJ5ICFkZWZhdWx0O1xuXG4vLyBHZW5lcmF0ZSBlbmFibGUgb3IgZGlzYWJsZSBjbGFzc2VzLiBQb3NzaWJpbGl0aWVzOiBmYWxzZSwgXCJlbmFibGVcIiBvciBcImRpc2FibGVcIlxuJHJmcy1jbGFzczogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIDEgcmVtID0gJHJmcy1yZW0tdmFsdWUgcHhcbiRyZnMtcmVtLXZhbHVlOiAxNiAhZGVmYXVsdDtcblxuLy8gU2FmYXJpIGlmcmFtZSByZXNpemUgYnVnOiBodHRwczovL2dpdGh1Yi5jb20vdHdicy9yZnMvaXNzdWVzLzE0XG4kcmZzLXNhZmFyaS1pZnJhbWUtcmVzaXplLWJ1Zy1maXg6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBEaXNhYmxlIFJGUyBieSBzZXR0aW5nICRlbmFibGUtcmZzIHRvIGZhbHNlXG4kZW5hYmxlLXJmczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gQ2FjaGUgJHJmcy1iYXNlLXZhbHVlIHVuaXRcbiRyZnMtYmFzZS12YWx1ZS11bml0OiB1bml0KCRyZnMtYmFzZS12YWx1ZSk7XG5cbkBmdW5jdGlvbiBkaXZpZGUoJGRpdmlkZW5kLCAkZGl2aXNvciwgJHByZWNpc2lvbjogMTApIHtcbiAgJHNpZ246IGlmKCRkaXZpZGVuZCA+IDAgYW5kICRkaXZpc29yID4gMCBvciAkZGl2aWRlbmQgPCAwIGFuZCAkZGl2aXNvciA8IDAsIDEsIC0xKTtcbiAgJGRpdmlkZW5kOiBhYnMoJGRpdmlkZW5kKTtcbiAgJGRpdmlzb3I6IGFicygkZGl2aXNvcik7XG4gIEBpZiAkZGl2aWRlbmQgPT0gMCB7XG4gICAgQHJldHVybiAwO1xuICB9XG4gIEBpZiAkZGl2aXNvciA9PSAwIHtcbiAgICBAZXJyb3IgXCJDYW5ub3QgZGl2aWRlIGJ5IDBcIjtcbiAgfVxuICAkcmVtYWluZGVyOiAkZGl2aWRlbmQ7XG4gICRyZXN1bHQ6IDA7XG4gICRmYWN0b3I6IDEwO1xuICBAd2hpbGUgKCRyZW1haW5kZXIgPiAwIGFuZCAkcHJlY2lzaW9uID49IDApIHtcbiAgICAkcXVvdGllbnQ6IDA7XG4gICAgQHdoaWxlICgkcmVtYWluZGVyID49ICRkaXZpc29yKSB7XG4gICAgICAkcmVtYWluZGVyOiAkcmVtYWluZGVyIC0gJGRpdmlzb3I7XG4gICAgICAkcXVvdGllbnQ6ICRxdW90aWVudCArIDE7XG4gICAgfVxuICAgICRyZXN1bHQ6ICRyZXN1bHQgKiAxMCArICRxdW90aWVudDtcbiAgICAkZmFjdG9yOiAkZmFjdG9yICogLjE7XG4gICAgJHJlbWFpbmRlcjogJHJlbWFpbmRlciAqIDEwO1xuICAgICRwcmVjaXNpb246ICRwcmVjaXNpb24gLSAxO1xuICAgIEBpZiAoJHByZWNpc2lvbiA8IDAgYW5kICRyZW1haW5kZXIgPj0gJGRpdmlzb3IgKiA1KSB7XG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICsgMTtcbiAgICB9XG4gIH1cbiAgJHJlc3VsdDogJHJlc3VsdCAqICRmYWN0b3IgKiAkc2lnbjtcbiAgJGRpdmlkZW5kLXVuaXQ6IHVuaXQoJGRpdmlkZW5kKTtcbiAgJGRpdmlzb3ItdW5pdDogdW5pdCgkZGl2aXNvcik7XG4gICR1bml0LW1hcDogKFxuICAgIFwicHhcIjogMXB4LFxuICAgIFwicmVtXCI6IDFyZW0sXG4gICAgXCJlbVwiOiAxZW0sXG4gICAgXCIlXCI6IDElXG4gICk7XG4gIEBpZiAoJGRpdmlkZW5kLXVuaXQgIT0gJGRpdmlzb3ItdW5pdCBhbmQgbWFwLWhhcy1rZXkoJHVuaXQtbWFwLCAkZGl2aWRlbmQtdW5pdCkpIHtcbiAgICAkcmVzdWx0OiAkcmVzdWx0ICogbWFwLWdldCgkdW5pdC1tYXAsICRkaXZpZGVuZC11bml0KTtcbiAgfVxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbi8vIFJlbW92ZSBweC11bml0IGZyb20gJHJmcy1iYXNlLXZhbHVlIGZvciBjYWxjdWxhdGlvbnNcbkBpZiAkcmZzLWJhc2UtdmFsdWUtdW5pdCA9PSBweCB7XG4gICRyZnMtYmFzZS12YWx1ZTogZGl2aWRlKCRyZnMtYmFzZS12YWx1ZSwgJHJmcy1iYXNlLXZhbHVlICogMCArIDEpO1xufVxuQGVsc2UgaWYgJHJmcy1iYXNlLXZhbHVlLXVuaXQgPT0gcmVtIHtcbiAgJHJmcy1iYXNlLXZhbHVlOiBkaXZpZGUoJHJmcy1iYXNlLXZhbHVlLCBkaXZpZGUoJHJmcy1iYXNlLXZhbHVlICogMCArIDEsICRyZnMtcmVtLXZhbHVlKSk7XG59XG5cbi8vIENhY2hlICRyZnMtYnJlYWtwb2ludCB1bml0IHRvIHByZXZlbnQgbXVsdGlwbGUgY2FsbHNcbiRyZnMtYnJlYWtwb2ludC11bml0LWNhY2hlOiB1bml0KCRyZnMtYnJlYWtwb2ludCk7XG5cbi8vIFJlbW92ZSB1bml0IGZyb20gJHJmcy1icmVha3BvaW50IGZvciBjYWxjdWxhdGlvbnNcbkBpZiAkcmZzLWJyZWFrcG9pbnQtdW5pdC1jYWNoZSA9PSBweCB7XG4gICRyZnMtYnJlYWtwb2ludDogZGl2aWRlKCRyZnMtYnJlYWtwb2ludCwgJHJmcy1icmVha3BvaW50ICogMCArIDEpO1xufVxuQGVsc2UgaWYgJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGUgPT0gcmVtIG9yICRyZnMtYnJlYWtwb2ludC11bml0LWNhY2hlID09IFwiZW1cIiB7XG4gICRyZnMtYnJlYWtwb2ludDogZGl2aWRlKCRyZnMtYnJlYWtwb2ludCwgZGl2aWRlKCRyZnMtYnJlYWtwb2ludCAqIDAgKyAxLCAkcmZzLXJlbS12YWx1ZSkpO1xufVxuXG4vLyBDYWxjdWxhdGUgdGhlIG1lZGlhIHF1ZXJ5IHZhbHVlXG4kcmZzLW1xLXZhbHVlOiBpZigkcmZzLWJyZWFrcG9pbnQtdW5pdCA9PSBweCwgI3skcmZzLWJyZWFrcG9pbnR9cHgsICN7ZGl2aWRlKCRyZnMtYnJlYWtwb2ludCwgJHJmcy1yZW0tdmFsdWUpfSN7JHJmcy1icmVha3BvaW50LXVuaXR9KTtcbiRyZnMtbXEtcHJvcGVydHktd2lkdGg6IGlmKCRyZnMtbW9kZSA9PSBtYXgtbWVkaWEtcXVlcnksIG1heC13aWR0aCwgbWluLXdpZHRoKTtcbiRyZnMtbXEtcHJvcGVydHktaGVpZ2h0OiBpZigkcmZzLW1vZGUgPT0gbWF4LW1lZGlhLXF1ZXJ5LCBtYXgtaGVpZ2h0LCBtaW4taGVpZ2h0KTtcblxuLy8gSW50ZXJuYWwgbWl4aW4gdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggbWVkaWEgcXVlcnkgbmVlZHMgdG8gYmUgdXNlZFxuQG1peGluIF9yZnMtbWVkaWEtcXVlcnkge1xuICBAaWYgJHJmcy10d28tZGltZW5zaW9uYWwge1xuICAgIEBpZiAkcmZzLW1vZGUgPT0gbWF4LW1lZGlhLXF1ZXJ5IHtcbiAgICAgIEBtZWRpYSAoI3skcmZzLW1xLXByb3BlcnR5LXdpZHRofTogI3skcmZzLW1xLXZhbHVlfSksICgjeyRyZnMtbXEtcHJvcGVydHktaGVpZ2h0fTogI3skcmZzLW1xLXZhbHVlfSkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQG1lZGlhICgjeyRyZnMtbXEtcHJvcGVydHktd2lkdGh9OiAjeyRyZnMtbXEtdmFsdWV9KSBhbmQgKCN7JHJmcy1tcS1wcm9wZXJ0eS1oZWlnaHR9OiAjeyRyZnMtbXEtdmFsdWV9KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQG1lZGlhICgjeyRyZnMtbXEtcHJvcGVydHktd2lkdGh9OiAjeyRyZnMtbXEtdmFsdWV9KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gSW50ZXJuYWwgbWl4aW4gdGhhdCBhZGRzIGRpc2FibGUgY2xhc3NlcyB0byB0aGUgc2VsZWN0b3IgaWYgbmVlZGVkLlxuQG1peGluIF9yZnMtcnVsZSB7XG4gIEBpZiAkcmZzLWNsYXNzID09IGRpc2FibGUgYW5kICRyZnMtbW9kZSA9PSBtYXgtbWVkaWEtcXVlcnkge1xuICAgIC8vIEFkZGluZyBhbiBleHRyYSBjbGFzcyBpbmNyZWFzZXMgc3BlY2lmaWNpdHksIHdoaWNoIHByZXZlbnRzIHRoZSBtZWRpYSBxdWVyeSB0byBvdmVycmlkZSB0aGUgcHJvcGVydHlcbiAgICAmLFxuICAgIC5kaXNhYmxlLXJmcyAmLFxuICAgICYuZGlzYWJsZS1yZnMge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRyZnMtY2xhc3MgPT0gZW5hYmxlIGFuZCAkcmZzLW1vZGUgPT0gbWluLW1lZGlhLXF1ZXJ5IHtcbiAgICAuZW5hYmxlLXJmcyAmLFxuICAgICYuZW5hYmxlLXJmcyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIEludGVybmFsIG1peGluIHRoYXQgYWRkcyBlbmFibGUgY2xhc3NlcyB0byB0aGUgc2VsZWN0b3IgaWYgbmVlZGVkLlxuQG1peGluIF9yZnMtbWVkaWEtcXVlcnktcnVsZSB7XG5cbiAgQGlmICRyZnMtY2xhc3MgPT0gZW5hYmxlIHtcbiAgICBAaWYgJHJmcy1tb2RlID09IG1pbi1tZWRpYS1xdWVyeSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBfcmZzLW1lZGlhLXF1ZXJ5ICgpIHtcbiAgICAgIC5lbmFibGUtcmZzICYsXG4gICAgICAmLmVuYWJsZS1yZnMge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkcmZzLWNsYXNzID09IGRpc2FibGUgYW5kICRyZnMtbW9kZSA9PSBtaW4tbWVkaWEtcXVlcnkge1xuICAgICAgLmRpc2FibGUtcmZzICYsXG4gICAgICAmLmRpc2FibGUtcmZzIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIF9yZnMtbWVkaWEtcXVlcnkgKCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIGZvcm1hdHRlZCBub24tcmVzcG9uc2l2ZSB2YWx1ZVxuQGZ1bmN0aW9uIHJmcy12YWx1ZSgkdmFsdWVzKSB7XG4gIC8vIENvbnZlcnQgdG8gbGlzdFxuICAkdmFsdWVzOiBpZih0eXBlLW9mKCR2YWx1ZXMpICE9IGxpc3QsICgkdmFsdWVzLCksICR2YWx1ZXMpO1xuXG4gICR2YWw6IFwiXCI7XG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggdmFsdWUgYW5kIGNhbGN1bGF0ZSB2YWx1ZVxuICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlcyB7XG4gICAgQGlmICR2YWx1ZSA9PSAwIHtcbiAgICAgICR2YWw6ICR2YWwgKyBcIiAwXCI7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIENhY2hlICR2YWx1ZSB1bml0XG4gICAgICAkdW5pdDogaWYodHlwZS1vZigkdmFsdWUpID09IFwibnVtYmVyXCIsIHVuaXQoJHZhbHVlKSwgZmFsc2UpO1xuXG4gICAgICBAaWYgJHVuaXQgPT0gcHgge1xuICAgICAgICAvLyBDb252ZXJ0IHRvIHJlbSBpZiBuZWVkZWRcbiAgICAgICAgJHZhbDogJHZhbCArIFwiIFwiICsgaWYoJHJmcy11bml0ID09IHJlbSwgI3tkaXZpZGUoJHZhbHVlLCAkdmFsdWUgKiAwICsgJHJmcy1yZW0tdmFsdWUpfXJlbSwgJHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICR1bml0ID09IHJlbSB7XG4gICAgICAgIC8vIENvbnZlcnQgdG8gcHggaWYgbmVlZGVkXG4gICAgICAgICR2YWw6ICR2YWwgKyBcIiBcIiArIGlmKCRyZnMtdW5pdCA9PSBweCwgI3tkaXZpZGUoJHZhbHVlLCAkdmFsdWUgKiAwICsgMSkgKiAkcmZzLXJlbS12YWx1ZX1weCwgJHZhbHVlKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAvLyBJZiAkdmFsdWUgaXNuJ3QgYSBudW1iZXIgKGxpa2UgaW5oZXJpdCkgb3IgJHZhbHVlIGhhcyBhIHVuaXQgKG5vdCBweCBvciByZW0sIGxpa2UgMS41ZW0pIG9yICQgaXMgMCwganVzdCBwcmludCB0aGUgdmFsdWVcbiAgICAgICAgJHZhbDogJHZhbCArIFwiIFwiICsgJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbW92ZSBmaXJzdCBzcGFjZVxuICBAcmV0dXJuIHVucXVvdGUoc3RyLXNsaWNlKCR2YWwsIDIpKTtcbn1cblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgcmVzcG9uc2l2ZSB2YWx1ZSBjYWxjdWxhdGVkIGJ5IFJGU1xuQGZ1bmN0aW9uIHJmcy1mbHVpZC12YWx1ZSgkdmFsdWVzKSB7XG4gIC8vIENvbnZlcnQgdG8gbGlzdFxuICAkdmFsdWVzOiBpZih0eXBlLW9mKCR2YWx1ZXMpICE9IGxpc3QsICgkdmFsdWVzLCksICR2YWx1ZXMpO1xuXG4gICR2YWw6IFwiXCI7XG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggdmFsdWUgYW5kIGNhbGN1bGF0ZSB2YWx1ZVxuICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlcyB7XG4gICAgQGlmICR2YWx1ZSA9PSAwIHtcbiAgICAgICR2YWw6ICR2YWwgKyBcIiAwXCI7XG4gICAgfSBAZWxzZSB7XG4gICAgICAvLyBDYWNoZSAkdmFsdWUgdW5pdFxuICAgICAgJHVuaXQ6IGlmKHR5cGUtb2YoJHZhbHVlKSA9PSBcIm51bWJlclwiLCB1bml0KCR2YWx1ZSksIGZhbHNlKTtcblxuICAgICAgLy8gSWYgJHZhbHVlIGlzbid0IGEgbnVtYmVyIChsaWtlIGluaGVyaXQpIG9yICR2YWx1ZSBoYXMgYSB1bml0IChub3QgcHggb3IgcmVtLCBsaWtlIDEuNWVtKSBvciAkIGlzIDAsIGp1c3QgcHJpbnQgdGhlIHZhbHVlXG4gICAgICBAaWYgbm90ICR1bml0IG9yICR1bml0ICE9IHB4IGFuZCAkdW5pdCAhPSByZW0ge1xuICAgICAgICAkdmFsOiAkdmFsICsgXCIgXCIgKyAkdmFsdWU7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLy8gUmVtb3ZlIHVuaXQgZnJvbSAkdmFsdWUgZm9yIGNhbGN1bGF0aW9uc1xuICAgICAgICAkdmFsdWU6IGRpdmlkZSgkdmFsdWUsICR2YWx1ZSAqIDAgKyBpZigkdW5pdCA9PSBweCwgMSwgZGl2aWRlKDEsICRyZnMtcmVtLXZhbHVlKSkpO1xuXG4gICAgICAgIC8vIE9ubHkgYWRkIHRoZSBtZWRpYSBxdWVyeSBpZiB0aGUgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBtaW5pbXVtIHZhbHVlXG4gICAgICAgIEBpZiBhYnMoJHZhbHVlKSA8PSAkcmZzLWJhc2UtdmFsdWUgb3Igbm90ICRlbmFibGUtcmZzIHtcbiAgICAgICAgICAkdmFsOiAkdmFsICsgXCIgXCIgKyBpZigkcmZzLXVuaXQgPT0gcmVtLCAje2RpdmlkZSgkdmFsdWUsICRyZnMtcmVtLXZhbHVlKX1yZW0sICN7JHZhbHVlfXB4KTtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBtaW5pbXVtIHZhbHVlXG4gICAgICAgICAgJHZhbHVlLW1pbjogJHJmcy1iYXNlLXZhbHVlICsgZGl2aWRlKGFicygkdmFsdWUpIC0gJHJmcy1iYXNlLXZhbHVlLCAkcmZzLWZhY3Rvcik7XG5cbiAgICAgICAgICAvLyBDYWxjdWxhdGUgZGlmZmVyZW5jZSBiZXR3ZWVuICR2YWx1ZSBhbmQgdGhlIG1pbmltdW0gdmFsdWVcbiAgICAgICAgICAkdmFsdWUtZGlmZjogYWJzKCR2YWx1ZSkgLSAkdmFsdWUtbWluO1xuXG4gICAgICAgICAgLy8gQmFzZSB2YWx1ZSBmb3JtYXR0aW5nXG4gICAgICAgICAgJG1pbi13aWR0aDogaWYoJHJmcy11bml0ID09IHJlbSwgI3tkaXZpZGUoJHZhbHVlLW1pbiwgJHJmcy1yZW0tdmFsdWUpfXJlbSwgI3skdmFsdWUtbWlufXB4KTtcblxuICAgICAgICAgIC8vIFVzZSBuZWdhdGl2ZSB2YWx1ZSBpZiBuZWVkZWRcbiAgICAgICAgICAkbWluLXdpZHRoOiBpZigkdmFsdWUgPCAwLCAtJG1pbi13aWR0aCwgJG1pbi13aWR0aCk7XG5cbiAgICAgICAgICAvLyBVc2UgYHZtaW5gIGlmIHR3by1kaW1lbnNpb25hbCBpcyBlbmFibGVkXG4gICAgICAgICAgJHZhcmlhYmxlLXVuaXQ6IGlmKCRyZnMtdHdvLWRpbWVuc2lvbmFsLCB2bWluLCB2dyk7XG5cbiAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHZhcmlhYmxlIHdpZHRoIGJldHdlZW4gMCBhbmQgJHJmcy1icmVha3BvaW50XG4gICAgICAgICAgJHZhcmlhYmxlLXdpZHRoOiAje2RpdmlkZSgkdmFsdWUtZGlmZiAqIDEwMCwgJHJmcy1icmVha3BvaW50KX0jeyR2YXJpYWJsZS11bml0fTtcblxuICAgICAgICAgIC8vIFJldHVybiB0aGUgY2FsY3VsYXRlZCB2YWx1ZVxuICAgICAgICAgICR2YWw6ICR2YWwgKyBcIiBjYWxjKFwiICsgJG1pbi13aWR0aCArIGlmKCR2YWx1ZSA8IDAsIFwiIC0gXCIsIFwiICsgXCIpICsgJHZhcmlhYmxlLXdpZHRoICsgXCIpXCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZW1vdmUgZmlyc3Qgc3BhY2VcbiAgQHJldHVybiB1bnF1b3RlKHN0ci1zbGljZSgkdmFsLCAyKSk7XG59XG5cbi8vIFJGUyBtaXhpblxuQG1peGluIHJmcygkdmFsdWVzLCAkcHJvcGVydHk6IGZvbnQtc2l6ZSkge1xuICBAaWYgJHZhbHVlcyAhPSBudWxsIHtcbiAgICAkdmFsOiByZnMtdmFsdWUoJHZhbHVlcyk7XG4gICAgJGZsdWlkLXZhbDogcmZzLWZsdWlkLXZhbHVlKCR2YWx1ZXMpO1xuXG4gICAgLy8gRG8gbm90IHByaW50IHRoZSBtZWRpYSBxdWVyeSBpZiByZXNwb25zaXZlICYgbm9uLXJlc3BvbnNpdmUgdmFsdWVzIGFyZSB0aGUgc2FtZVxuICAgIEBpZiAkdmFsID09ICRmbHVpZC12YWwge1xuICAgICAgI3skcHJvcGVydHl9OiAkdmFsO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBfcmZzLXJ1bGUgKCkge1xuICAgICAgICAjeyRwcm9wZXJ0eX06IGlmKCRyZnMtbW9kZSA9PSBtYXgtbWVkaWEtcXVlcnksICR2YWwsICRmbHVpZC12YWwpO1xuXG4gICAgICAgIC8vIEluY2x1ZGUgc2FmYXJpIGlmcmFtZSByZXNpemUgZml4IGlmIG5lZWRlZFxuICAgICAgICBtaW4td2lkdGg6IGlmKCRyZnMtc2FmYXJpLWlmcmFtZS1yZXNpemUtYnVnLWZpeCwgKDAgKiAxdncpLCBudWxsKTtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgX3Jmcy1tZWRpYS1xdWVyeS1ydWxlICgpIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiBpZigkcmZzLW1vZGUgPT0gbWF4LW1lZGlhLXF1ZXJ5LCAkZmx1aWQtdmFsLCAkdmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gU2hvcnRoYW5kIGhlbHBlciBtaXhpbnNcbkBtaXhpbiBmb250LXNpemUoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUpO1xufVxuXG5AbWl4aW4gcGFkZGluZygkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgcGFkZGluZyk7XG59XG5cbkBtaXhpbiBwYWRkaW5nLXRvcCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgcGFkZGluZy10b3ApO1xufVxuXG5AbWl4aW4gcGFkZGluZy1yaWdodCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgcGFkZGluZy1yaWdodCk7XG59XG5cbkBtaXhpbiBwYWRkaW5nLWJvdHRvbSgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgcGFkZGluZy1ib3R0b20pO1xufVxuXG5AbWl4aW4gcGFkZGluZy1sZWZ0KCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nLWxlZnQpO1xufVxuXG5AbWl4aW4gbWFyZ2luKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBtYXJnaW4pO1xufVxuXG5AbWl4aW4gbWFyZ2luLXRvcCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgbWFyZ2luLXRvcCk7XG59XG5cbkBtaXhpbiBtYXJnaW4tcmlnaHQoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIG1hcmdpbi1yaWdodCk7XG59XG5cbkBtaXhpbiBtYXJnaW4tYm90dG9tKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBtYXJnaW4tYm90dG9tKTtcbn1cblxuQG1peGluIG1hcmdpbi1sZWZ0KCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBtYXJnaW4tbGVmdCk7XG59XG4iLCIvLyBjb2xvciAtIEN1c3RvbVxuJGNvbnRlbnQtcHJpbWFyeTogIzIzMjgyQTtcbiRiZy1wcmltYXJ5OiAjQjJCNEI1O1xuJGJnLXNlY29uZGFyeTogI0YzRjVGMztcbiRiZy1zZWNvbmRhcnktYm9sZDogI0UyRTRFMjtcbiRiZy10ZXJ0aWFyeTogI0VERUZFRTtcbiRiZy1ncmF5LTkwMDogIzNGNDQ0NztcbiRibGFjazogIzAwMDtcbiR3aGl0ZTogI2ZmZjtcbiRiZy1ibGFjay0wMDc6IHJnYmEoJGJsYWNrLCAuMDcpO1xuJGJnLWJsYWNrLTAyMDogcmdiYSgkYmxhY2ssIC4yMCk7XG4kcHJpbWFyeS1kYXJrOiAjMDE5YTNlO1xuJHByaW1hcnktZGFya2VyOiAjMDQ4ZTNiO1xuXG4vLyBjb2xvciAtIG92ZXJyaWRlXG4kcHJpbWFyeTogIzAwQUM0NjtcbiRwcmltYXJ5LTkwMDogIzhCREFBQjtcbiRzZWNvbmRhcnk6ICMzRjQ0NDc7XG4kc3VjY2VzczogJHByaW1hcnk7XG4kcHVycGxlOiAjNzM0QkE1O1xuJHJlZEJyYW5kOiAjRjA0MTVGO1xuJGJsdWU6ICMzNzgyQ0Q7XG4kZ3JlZW46ICMwZTNmMjE7XG4kb3JhbmdlOiAjRjVBMDFFO1xuJHllbGxvdzogI0ZBRDQwMDtcbiRncmF5LTYwMDogIzY1Njg2QjtcbiRib2R5LWNvbG9yOiAkY29udGVudC1wcmltYXJ5O1xuJGJvZHktc2Vjb25kYXJ5LWJnOiAkYmctc2Vjb25kYXJ5O1xuJGJvZHktdGVydGlhcnktYmc6ICRiZy10ZXJ0aWFyeTtcblxuLy8gQm9keVxuJGZvbnQtZmFtaWx5LWJhc2U6ICdWb3J3ZXJrJywgQXJpYWwsIFRhaG9tYSwgVmVyZGFuYSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xuJGZvbnQtc2l6ZS1iYXNlOiAxcmVtO1xuJGZvbnQtc2l6ZS1zbTogJGZvbnQtc2l6ZS1iYXNlICogLjc1MDtcbiRmb250LXdlaWdodC1iYXNlOiA0MDA7XG5cbi8vIGhlYWRpbmdcbiRmb250LXdlaWdodC1tZWRpdW06ICAgICAgICAgIDQwMCAhZGVmYXVsdDtcbiRoMS1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDQuNTtcbiRoMi1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAqIDMuNTtcbiRoZWFkaW5ncy1mb250LXdlaWdodDogNzAwO1xuJGhlYWRpbmdzLWxpbmUtaGVpZ2h0OiA0LjI1cmVtO1xuJGhlYWRpbmdzLW1hcmdpbi1ib3R0b206IDA7XG4kaGVhZGluZ3MtY29sb3I6ICRjb250ZW50LXByaW1hcnk7XG5cbi8vIGxpbmtcbiRsaW5rLWRlY29yYXRpb246IG5vbmU7XG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiBub25lO1xuJGxpbmstY29sb3I6ICRjb250ZW50LXByaW1hcnk7XG5cbi8vIEJ1dHRvblxuJGJ0bi1mb250LXNpemU6IDFyZW07XG4kYnRuLWZvbnQtd2VpZ2h0OiA2MDA7XG4kYnRuLWxpbmUtaGVpZ2h0OiAxLjc1cmVtO1xuJGJ0bi1ob3Zlci1iZy1zaGFkZS1hbW91bnQ6IDEwJTtcbiRidG4taG92ZXItYmctdGludC1hbW91bnQ6IDAlO1xuJGJ0bi1wYWRkaW5nLXg6IDFyZW07XG4kYnRuLXBhZGRpbmcteTogMC4zNzVyZW07XG4kYnRuLWJvcmRlci13aWR0aDogMS41cHg7XG5cbi8vIGdyaWRcbiRncmlkLWd1dHRlci13aWR0aDogMnJlbTtcbiRjb250YWluZXItbWF4LXdpZHRoczogKFxuICBzbTogNTQwcHgsXG4gIG1kOiA3MjBweCxcbiAgbGc6IDk2MHB4LFxuICB4bDogMTE0MHB4LFxuICB4eGw6IDEzMDRweFxuKTtcblxuLy8gdGFibGVcbiR0YWJsZS1ob3Zlci1iZzogJGJnLXNlY29uZGFyeTtcblxuLy8gU3BhY2VyXG4kZW5hYmxlLW5lZ2F0aXZlLW1hcmdpbnM6IHRydWU7XG5cbi8vIEN1c3RvbVxuJGN1c3RvbS1wcmVmaXg6ICd0bXgnO1xuJGN1c3RvbS1ncmlkLWNvbHVtbnM6IDk7XG5cbi8vIFBvcG92ZXJcbiRwb3BvdmVyLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuXG4vL0Nhcm91c2VsXG4kY2Fyb3VzZWwtdHJhbnNpdGlvbi1kdXJhdGlvbjogMG1zIWRlZmF1bHQ7XG5cbi8vIHotaW5kZXhcbiR6aW5kZXgtbGV2ZWxzOiAoXG4gIG4xOiAtMSxcbiAgMDogMCxcbiAgMTogMSxcbiAgMjogMixcbiAgMzogMyxcbiAgNDogNCxcbiAgNTogNSxcbiAgNjogNixcbiAgNzogNyxcbiAgODogOCxcbiAgOTogOSxcbiAgMTA6IDEwXG4pO1xuXG4vLyByYXRpbmdcbiRyYXRpbmctc2l6ZXM6IChcbiAgMTogMC44ICogJGZvbnQtc2l6ZS1iYXNlLFxuICAyOiAxICogJGZvbnQtc2l6ZS1iYXNlLFxuICAzOiAxLjI1ICogJGZvbnQtc2l6ZS1iYXNlLFxuICA0OiAxLjUgKiAkZm9udC1zaXplLWJhc2Vcbik7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/