/* START: VENDOR */
/**
 * Foundation for Sites by ZURB
 * Version 6.3.1
 * foundation.zurb.com
 * Licensed under MIT Open Source
 */
/* END: VENDOR */
/* START: COMPONENTS (KEEP THIS ONE AT THE BOTTOM ALL THE TIME) */
/*=================================
  ADD ALL THE MIXINS TO THIS FILE
  =================================*/
/* Start: Transitions */
/* End: Transitions */
.bakery-block-testimonials-1__testimonials-slider-block-title {
  margin-bottom: 1.875rem; }

.bakery-block-testimonials-1__testimonial-image-wrapper {
  -ms-flex-positive: 0;
      flex-grow: 0;
  -ms-flex-negative: 0;
      flex-shrink: 0; }

.bakery-block-testimonials-1__testimonial-image {
  height: auto !important;
  width: auto !important; }

.bakery-block-testimonials-1__testimonial-avatar {
  width: 4.5rem;
  height: 4.5rem;
  border-radius: 2.25rem;
  background-size: cover;
  margin-bottom: 2.5rem; }

.bakery-block-testimonials-1__testimonial-title {
  margin-bottom: 2.5rem; }

.bakery-block-testimonials-1__testimonial-text {
  margin-bottom: 2.5rem; }

.bakery-block-testimonials-1__arrows {
  text-align: left;
  position: relative; }
  .bakery-block-testimonials-1__arrows .flo-bakery-icon-line-arrow-right,
  .bakery-block-testimonials-1__arrows .flo-bakery-icon-line-arrow-left {
    display: inline-block;
    width: 50px; }

.bakery-block-testimonials-1__arrow {
  font-size: 0.6875rem;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  cursor: pointer;
  outline: none; }
  .bakery-block-testimonials-1__arrow--left {
    margin-right: 4.375rem;
    left: 0 !important;
    position: relative !important;
    margin-right: 15px; }
  .bakery-block-testimonials-1__arrow--right {
    position: relative !important;
    margin-left: 15px;
    right: auto !important; }

@media screen and (min-width: 40em) {
  .bakery-block-testimonials-1 {
    padding: 0 6.375rem; }
    .bakery-block-testimonials-1__testimonial_slide {
      display: -ms-inline-flexbox !important;
      display: inline-flex !important;
      -ms-flex-align: stretch;
          align-items: stretch; }
    .bakery-block-testimonials-1__testimonial-image {
      -ms-flex-negative: 0;
          flex-shrink: 0;
      max-width: 26.3125rem; }
    .bakery-block-testimonials-1__testimonial-text-area {
      padding: 0 0 0.625rem 4.6875rem;
      display: -ms-flexbox;
      display: flex;
      -ms-flex-direction: column;
          flex-direction: column;
      -ms-flex-pack: justify;
          justify-content: space-between; }
    .bakery-block-testimonials-1__testimonial-title {
      text-align: left; }
    .bakery-block-testimonials-1__testimonial-text {
      text-align: left; } }

@media screen and (max-width: 39.9375em) {
  .bakery-block-testimonials-1 {
    text-align: center;
    margin-bottom: 30px; }
    .bakery-block-testimonials-1__testimonial_slide {
      display: -ms-inline-flexbox;
      display: inline-flex;
      -ms-flex-direction: column;
          flex-direction: column;
      width: 100%; }
    .bakery-block-testimonials-1__testimonial-image {
      width: 100%;
      margin-bottom: 1.25rem;
      text-align: center; }
      .bakery-block-testimonials-1__testimonial-image img {
        margin: 0 auto; }
    .bakery-block-testimonials-1__testimonial-avatar {
      margin: 0 auto; }
    .bakery-block-testimonials-1__testimonial-text {
      margin-bottom: 1.25rem; }
    .bakery-block-testimonials-1__arrows {
      text-align: center; }
    .bakery-block-testimonials-1__arrow--left {
      text-align: left; }
    .bakery-block-testimonials-1__arrow--right {
      text-align: left; } }

.bakery-block-travel-dates {
  display: -ms-flexbox;
  display: flex; }
  .bakery-block-travel-dates__text-area {
    text-align: center; }
  .bakery-block-travel-dates__block-title {
    margin-bottom: 1.5625rem; }
  .bakery-block-travel-dates__title-line {
    width: 1.875rem;
    border-top: 1px solid;
    margin: 0 auto; }
  .bakery-block-travel-dates__travel-items-wrap:not(:first-child) {
    margin-top: 2rem; }
  .bakery-block-travel-dates__travel-item {
    position: relative; }
  .bakery-block-travel-dates__travel-link {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%; }
  @media screen and (min-width: 40em) {
    .bakery-block-travel-dates {
      -ms-flex-align: center;
          align-items: center; }
      .bakery-block-travel-dates--image-left {
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
        .bakery-block-travel-dates--image-left .bakery-block-travel-dates__image-area {
          margin-left: 2.8125rem;
          padding-right: 0; }
      .bakery-block-travel-dates--image-right {
        -ms-flex-direction: row;
            flex-direction: row; }
        .bakery-block-travel-dates--image-right .bakery-block-travel-dates__image-area {
          padding-left: 0; }
      .bakery-block-travel-dates__text-area {
        padding: 0 5.625rem;
        -ms-flex-positive: 1;
            flex-grow: 1; }
      .bakery-block-travel-dates__travel-items-wrap:hover .bakery-block-travel-dates__travel-item {
        opacity: 0.5; }
        .bakery-block-travel-dates__travel-items-wrap:hover .bakery-block-travel-dates__travel-item:hover {
          opacity: 1; }
      .bakery-block-travel-dates__travel-item {
        transition: opacity 0.24s;
        transition-timing-function: cubic-bezier(0.445, 0.05, 0.55, 0.95); }
        .bakery-block-travel-dates__travel-item:not(:last-child) {
          margin-bottom: 1.25rem; }
      .bakery-block-travel-dates__image-area {
        width: 28.125rem;
        height: auto;
        padding: 5rem; }
      .bakery-block-travel-dates__image {
        width: 22.5rem;
        height: auto; } }
  @media screen and (max-width: 39.9375em) {
    .bakery-block-travel-dates--image-left {
      -ms-flex-direction: column-reverse;
          flex-direction: column-reverse; }
      .bakery-block-travel-dates--image-left .bakery-block-travel-dates__text-area {
        padding-bottom: 2.8125rem; }
    .bakery-block-travel-dates--image-right {
      -ms-flex-direction: column;
          flex-direction: column; }
      .bakery-block-travel-dates--image-right .bakery-block-travel-dates__text-area {
        padding-top: 2.8125rem; }
    .bakery-block-travel-dates__travel-item:not(:last-child) {
      margin-bottom: 1.875rem; }
    .bakery-block-travel-dates__image-area {
      padding: 5rem; } }

.bakery-block-faq-block-2 {
  max-width: 50rem;
  margin-left: auto;
  margin-right: auto; }
  .bakery-block-faq-block-2__title-area {
    text-align: center;
    position: relative;
    margin-bottom: 3.125rem; }
  .bakery-block-faq-block-2__title {
    position: relative;
    z-index: 2; }
  .bakery-block-faq-block-2__title-decorative-icon {
    position: absolute;
    z-index: 1;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%); }
  .bakery-block-faq-block-2__faq-slide-content {
    display: -ms-flexbox;
    display: flex;
    overflow: visible; }
  .bakery-block-faq-block-2__questions-wrap {
    position: relative; }
  .bakery-block-faq-block-2__question {
    margin-bottom: 0.625rem;
    position: relative; }
    .bakery-block-faq-block-2__question:before {
      content: "+";
      position: absolute;
      top: 0;
      left: -0.9375rem; }
  .bakery-block-faq-block-2__answer p:last-child {
    margin-bottom: 0; }
  .bakery-block-faq-block-2__faq-counter {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center; }
  .bakery-block-faq-block-2__number-divider {
    width: 1px;
    height: 1.875rem;
    margin: 0 0.625rem;
    transform: rotate(28deg); }
  .bakery-block-faq-block-2__arrows {
    text-align: center;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    -ms-flex-align: center;
        align-items: center; }
    .bakery-block-faq-block-2__arrows--hide-arrows {
      display: none; }
  .bakery-block-faq-block-2__arrow {
    transition: transform 0.24s;
    transition-timing-function: cubic-bezier(0.445, 0.05, 0.55, 0.95);
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
    cursor: pointer;
    outline: none; }
    .bakery-block-faq-block-2__arrow--left {
      margin-right: 1.625rem; }
    .bakery-block-faq-block-2__arrow:hover {
      transform: scale(2) !important; }
  @media screen and (min-width: 40em) {
    .bakery-block-faq-block-2__questions-wrap {
      -ms-flex-positive: 1;
          flex-grow: 1;
      min-height: 34.3125rem;
      margin-right: 8.6875rem; }
    .bakery-block-faq-block-2__single-qa {
      margin-bottom: 3.75rem; }
    .bakery-block-faq-block-2__faq-counter {
      position: absolute;
      left: 0;
      bottom: 0; }
    .bakery-block-faq-block-2__arrows {
      position: absolute;
      right: 1.625rem;
      bottom: 0; }
    .bakery-block-faq-block-2__arrow {
      font-size: 0.5625rem; }
    .bakery-block-faq-block-2__faq-image {
      -ms-flex-negative: 0;
          flex-shrink: 0;
      -ms-flex-preferred-size: 22.4375rem;
          flex-basis: 22.4375rem;
      -ms-flex-positive: 0;
          flex-grow: 0; } }
  @media screen and (max-width: 39.9375em) {
    .bakery-block-faq-block-2 {
      max-width: 85vw;
      margin: 0 auto; }
      .bakery-block-faq-block-2__faq-slide-content {
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse; }
      .bakery-block-faq-block-2__questions-wrap {
        margin-bottom: 1.875rem; }
      .bakery-block-faq-block-2__single-qa {
        margin-bottom: 1.875rem; }
      .bakery-block-faq-block-2__faq-counter {
        margin-bottom: 1.875rem; }
      .bakery-block-faq-block-2__arrow {
        font-size: 0.9375rem; }
      .bakery-block-faq-block-2__faq-image {
        width: 100%;
        margin-bottom: 1.875rem; } }

.bakery-contact-block-1 {
  display: none;
  display: -ms-flexbox;
  display: flex;
  position: relative;
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat; }
  .bakery-contact-block-1:before {
    content: " ";
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    z-index: 0; }
  .bakery-contact-block-1__form-description {
    z-index: 1; }
  .bakery-contact-block-1__title-paragraph p:last-child {
    margin-bottom: 0; }
  .bakery-contact-block-1__phone-number {
    display: block; }
  .bakery-contact-block-1__email {
    display: block; }
  .bakery-contact-block-1__social-links .flo-social-links__link {
    margin-right: 1.5625rem; }
  .bakery-contact-block-1__form-wrap {
    text-align: center;
    z-index: 1; }
  .bakery-contact-block-1__form-field, .bakery-contact-block-1 textarea {
    height: 9.375rem; }
  .bakery-contact-block-1__form-field, .bakery-contact-block-1 input, .bakery-contact-block-1 textarea {
    border-bottom: 1px solid !important;
    text-align: center; }
    .bakery-contact-block-1__form-field:not(:last-child), .bakery-contact-block-1 input:not(:last-child), .bakery-contact-block-1 textarea:not(:last-child) {
      margin-bottom: 1.25rem !important; }
  .bakery-contact-block-1__form-submit {
    color: inherit;
    cursor: pointer; }
  @media screen and (min-width: 40em) {
    .bakery-contact-block-1 {
      padding: 4.625rem 5.9375rem; }
      .bakery-contact-block-1__form-description {
        padding: 2.8125rem 8.90625rem 2.8125rem 2.96875rem;
        width: 50%; }
      .bakery-contact-block-1__title {
        margin-bottom: 2.875rem; }
      .bakery-contact-block-1__title-paragraph {
        margin-bottom: 3.375rem; }
      .bakery-contact-block-1__phone-number-label {
        margin-bottom: 1.25rem; }
      .bakery-contact-block-1__phone-number {
        margin-bottom: 3.9375rem;
        -webkit-user-select: none;
           -moz-user-select: none;
            -ms-user-select: none;
                user-select: none; }
      .bakery-contact-block-1__email-label {
        margin-bottom: 1.25rem; }
      .bakery-contact-block-1__email {
        margin-bottom: 3.9375rem;
        -webkit-user-select: none;
           -moz-user-select: none;
            -ms-user-select: none;
                user-select: none; }
      .bakery-contact-block-1__social-links-label {
        margin-bottom: 1.25rem; }
      .bakery-contact-block-1__form-wrap {
        padding: 2.8125rem 2.96875rem 2.8125rem 8.90625rem;
        width: 50%; }
      .bakery-contact-block-1__form-title {
        margin-bottom: 4rem; } }
  @media screen and (max-width: 39.9375em) {
    .bakery-contact-block-1 {
      -ms-flex-direction: column;
          flex-direction: column;
      padding: 1.875rem 2rem; }
      .bakery-contact-block-1__form-description {
        margin-bottom: 3.125rem; }
      .bakery-contact-block-1__title {
        margin-bottom: 1.4375rem; }
      .bakery-contact-block-1__title-paragraph {
        margin-bottom: 1.625rem; }
      .bakery-contact-block-1__phone-number-label {
        margin-bottom: 1.25rem; }
      .bakery-contact-block-1__phone-number {
        margin-bottom: 1.875rem; }
      .bakery-contact-block-1__email-label {
        margin-bottom: 1.25rem; }
      .bakery-contact-block-1__email {
        margin-bottom: 1.875rem; }
      .bakery-contact-block-1__social-links-label {
        margin-bottom: 1.25rem; }
      .bakery-contact-block-1__form-title {
        margin-bottom: 2rem; } }

.flo-modal {
  color: #000; }

.bakery-pricing-packages {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  -ms-flex-align: center;
      align-items: center; }
  .bakery-pricing-packages__package-image {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-pack: end;
        justify-content: flex-end;
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat; }
  .bakery-pricing-packages__button {
    background-color: #e5e5e5;
    padding: 0.5rem 1.25rem; }
  @media screen and (min-width: 40em) {
    .bakery-pricing-packages {
      margin: 0 auto;
      max-width: 67.5rem; }
      .bakery-pricing-packages__packages {
        display: -ms-flexbox;
        display: flex;
        -ms-flex-pack: center;
            justify-content: center;
        width: 100%; }
      .bakery-pricing-packages__package {
        padding-bottom: 6.25rem;
        position: relative;
        width: calc(100% / 3 - 1.40625rem);
        text-align: center; }
        .bakery-pricing-packages__package:nth-child(4) {
          margin-left: 2.8125rem; }
        .bakery-pricing-packages__package:nth-child(3) {
          margin-left: 2.8125rem; }
        .bakery-pricing-packages__package:nth-child(2) {
          margin-left: 2.8125rem; }
      .bakery-pricing-packages__package-image {
        height: 33.40625rem;
        padding-bottom: 3.84375rem; }
        .bakery-pricing-packages__package-image-4-cols {
          height: 25rem; }
      .bakery-pricing-packages__package-subtitle {
        margin-top: 0.75rem; }
      .bakery-pricing-packages__package-description {
        padding-top: 4.6875rem; }
        .bakery-pricing-packages__package-description p:last-child {
          margin-bottom: 0; }
      .bakery-pricing-packages__package-price {
        padding-top: 3.125rem;
        padding-bottom: 1.875rem;
        position: absolute;
        bottom: 0;
        left: 50%;
        transform: translate(-50%, 0); }
      .bakery-pricing-packages__button {
        margin-top: 2.8125rem; } }
  @media screen and (max-width: 39.9375em) {
    .bakery-pricing-packages {
      margin-bottom: 3.125rem; }
      .bakery-pricing-packages__package {
        text-align: center;
        margin-bottom: 3.125rem; }
      .bakery-pricing-packages__package-image {
        height: 18.75rem;
        padding-bottom: 1.875rem; }
      .bakery-pricing-packages__package-description {
        margin-top: 1.25rem; } }

.bakery-question-answer-area {
  max-width: 47.5rem;
  margin: 0 auto; }
  .bakery-question-answer-area__top {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: center;
        align-items: center;
    padding-bottom: 2rem;
    border-bottom: 1px solid; }
  .bakery-question-answer-area__field {
    display: -ms-flexbox;
    display: flex;
    border-bottom: 1px solid;
    padding: 1.6875rem 0;
    -ms-flex-align: start;
        align-items: flex-start;
    transition: height 0.24s;
    transition-timing-function: cubic-bezier(0.445, 0.05, 0.55, 0.95); }
  .bakery-question-answer-area__qa {
    -ms-flex: 1;
        flex: 1;
    -ms-flex-positive: 1;
        flex-grow: 1; }
  .bakery-question-answer-area__arrow {
    font-size: 2.25rem;
    width: 5.9375rem;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    cursor: pointer;
    font-size: 1.125rem;
    transition: transform 0.24s, align-self 0.24s;
    transition: transform 0.24s, align-self 0.24s, -ms-flex-item-align 0.24s;
    transition-timing-function: cubic-bezier(0.445, 0.05, 0.55, 0.95); }
    .bakery-question-answer-area__arrow--active {
      transform: rotate(90deg); }
  .bakery-question-answer-area__answer {
    padding-top: 2.5rem;
    display: none; }
  @media screen and (min-width: 40em) {
    .bakery-question-answer-area__answer {
      padding-left: 5.9375rem; } }
  @media screen and (max-width: 39.9375em) {
    .bakery-question-answer-area {
      max-width: 90vw; } }

@media screen and (max-width: 39.9375em) {
  .dummy {
    color: blue; } }

/* END: COMPONENTS (KEEP THIS ONE AT THE BOTTOM ALL THE TIME) */

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3VuZGF0aW9uLnNjc3MiLCIuLi9ibG9ja3MvYV9jc3MtbWl4aW5zL21peGlucy5tYWluLnNjc3MiLCIuLi9ibG9ja3MvYmFrZXJ5X3Rlc3RpbW9uaWFsc18xL2Jha2VyeV90ZXN0aW1vbmlhbHNfMS5tYWluLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3VuaXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fYnJlYWtwb2ludC5zY3NzIiwiLi4vYmxvY2tzL2Jha2VyeV90cmF2ZWxfZGF0ZXMtYmxvY2svYmFrZXJ5X3RyYXZlbF9kYXRlcy5tYWluLnNjc3MiLCIuLi9ibG9ja3MvYmFrZXJ5LWJsb2NrLWZhcS1ibG9jay0yL2Jha2VyeS1ibG9jay1mYXEtYmxvY2stMi5tYWluLnNjc3MiLCIuLi9ibG9ja3MvYmFrZXJ5LWNvbnRhY3QtYmxvY2stMS9iYWtlcnktY29udGFjdC1ibG9jay0xLm1haW4uc2NzcyIsIi4uL2Jsb2Nrcy9iYWtlcnktcHJpY2luZy1wYWNrYWdlcy9iYWtlcnktcHJpY2luZy1wYWNrYWdlcy5tYWluLnNjc3MiLCIuLi9ibG9ja3MvYmFrZXJ5LXF1ZXN0aW9uLWFuc3dlci1hcmVhL2Jha2VyeS1xdWVzdGlvbi1hbnN3ZXItYXJlYS5tYWluLnNjc3MiLCIuLi9ibG9ja3MvZHVtbXktYmxvY2svZHVtbXkubWFpbi5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQjtBQ0FuQjs7Ozs7R0FLRztBREhILGlCQUFpQjtBQUNqQixrRUFBa0U7QUVIbEU7O3FDQUVxQztBQUVyQyx3QkFBd0I7QUFheEIsc0JBQXNCO0FDZHBCO0VBQ0Usd0JDb0ZxRCxFRG5GdEQ7O0FBUUc7RUFDRSxxQkFBWTtNQUFaLGFBQVk7RUFDWixxQkFB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QUNiLHlCQUF3QjtJQUN4QixxQkFBdUI7SUFDdkIsc0JBQXVCO1FBQXZCLHdCQUF1QjtJUkh2Qix5QkFGMkU7SUFHM0Usa0VBVHNELEVRY3ZEO0VBQ0Q7SUFDRSxZQUFPO1FBQVAsUUFBTztJQUNQLHFCQUFZO1FBQVosYUFBWSxFQUNiO0VBQ0Q7SUFDRSxtQk44RHFEO0lNN0RyRCxpQk42RHFEO0lNNURyRCxxQkFBYTtJQUFiLGNBQWE7SUFDYix1QkFBbUI7UUFBbkIsb0JBQW1CO0lBQ25CLHNCQUF1QjtRQUF2Qix3QkFBdUI7SUFDdkIsZ0JBQWU7SUFDZixvQk53RHFEO0lGMUVyRCw4Q0FGMkU7SUFFM0UseUVBRjJFO0lBRzNFLGtFQVRzRCxFUWlDdkQ7SUFKQztNQUNFLHlCQUF3QixFQUV6QjtFQUVIO0lBQ0Usb0JOK0NxRDtJTTlDckQsY0FBYSxFQUNkO0VMcUhHO0lLbkhGO01BQ0Usd0JOMENtRCxFTXpDcEQsRUFBQTtFTGlIQztJS2hLTjtNQWtESSxnQkFBZSxFQUVsQixFQUFBOztBTDRHSztFTWhLTjtJQVFJLFlBQVcsRUFFZCxFQUFBOztBWEVELGdFQUFnRSIsImZpbGUiOiJhcHAuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogU1RBUlQ6IFZFTkRPUiAqL1xuICBAaW1wb3J0IFwiZm91bmRhdGlvbi5zY3NzXCI7XG4vKiBFTkQ6IFZFTkRPUiAqL1xuLyogU1RBUlQ6IENPTVBPTkVOVFMgKEtFRVAgVEhJUyBPTkUgQVQgVEhFIEJPVFRPTSBBTEwgVEhFIFRJTUUpICovXG5AaW1wb3J0IFwiL0FwcGxpY2F0aW9ucy9NQU1QL2h0ZG9jcy9mbG8vd3AtY29udGVudC9wbHVnaW5zL2Zsby1wYWNrLTEvZGV2L2Jsb2Nrcy9hX2Nzcy1taXhpbnMvbWl4aW5zLm1haW4uc2Nzc1wiO1xuQGltcG9ydCBcIi9BcHBsaWNhdGlvbnMvTUFNUC9odGRvY3MvZmxvL3dwLWNvbnRlbnQvcGx1Z2lucy9mbG8tcGFjay0xL2Rldi9ibG9ja3MvYmFrZXJ5X3Rlc3RpbW9uaWFsc18xL2Jha2VyeV90ZXN0aW1vbmlhbHNfMS5tYWluLnNjc3NcIjtcbkBpbXBvcnQgXCIvQXBwbGljYXRpb25zL01BTVAvaHRkb2NzL2Zsby93cC1jb250ZW50L3BsdWdpbnMvZmxvLXBhY2stMS9kZXYvYmxvY2tzL2Jha2VyeV90cmF2ZWxfZGF0ZXMtYmxvY2svYmFrZXJ5X3RyYXZlbF9kYXRlcy5tYWluLnNjc3NcIjtcbkBpbXBvcnQgXCIvQXBwbGljYXRpb25zL01BTVAvaHRkb2NzL2Zsby93cC1jb250ZW50L3BsdWdpbnMvZmxvLXBhY2stMS9kZXYvYmxvY2tzL2Jha2VyeS1ibG9jay1mYXEtYmxvY2stMi9iYWtlcnktYmxvY2stZmFxLWJsb2NrLTIubWFpbi5zY3NzXCI7XG5AaW1wb3J0IFwiL0FwcGxpY2F0aW9ucy9NQU1QL2h0ZG9jcy9mbG8vd3AtY29udGVudC9wbHVnaW5zL2Zsby1wYWNrLTEvZGV2L2Jsb2Nrcy9iYWtlcnktY29udGFjdC1ibG9jay0xL2Jha2VyeS1jb250YWN0LWJsb2NrLTEubWFpbi5zY3NzXCI7XG5AaW1wb3J0IFwiL0FwcGxpY2F0aW9ucy9NQU1QL2h0ZG9jcy9mbG8vd3AtY29udGVudC9wbHVnaW5zL2Zsby1wYWNrLTEvZGV2L2Jsb2Nrcy9iYWtlcnktcHJpY2luZy1wYWNrYWdlcy9iYWtlcnktcHJpY2luZy1wYWNrYWdlcy5tYWluLnNjc3NcIjtcbkBpbXBvcnQgXCIvQXBwbGljYXRpb25zL01BTVAvaHRkb2NzL2Zsby93cC1jb250ZW50L3BsdWdpbnMvZmxvLXBhY2stMS9kZXYvYmxvY2tzL2Jha2VyeS1xdWVzdGlvbi1hbnN3ZXItYXJlYS9iYWtlcnktcXVlc3Rpb24tYW5zd2VyLWFyZWEubWFpbi5zY3NzXCI7XG5AaW1wb3J0IFwiL0FwcGxpY2F0aW9ucy9NQU1QL2h0ZG9jcy9mbG8vd3AtY29udGVudC9wbHVnaW5zL2Zsby1wYWNrLTEvZGV2L2Jsb2Nrcy9kdW1teS1ibG9jay9kdW1teS5tYWluLnNjc3NcIjtcbi8qIEVORDogQ09NUE9ORU5UUyAoS0VFUCBUSElTIE9ORSBBVCBUSEUgQk9UVE9NIEFMTCBUSEUgVElNRSkgKi9cbiIsIi8qKlxuICogRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuICogVmVyc2lvbiA2LjMuMVxuICogZm91bmRhdGlvbi56dXJiLmNvbVxuICogTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG4gKi9cblxuLy8gRGVwZW5kZW5jaWVzXG5AaW1wb3J0ICcuLi9fdmVuZG9yL25vcm1hbGl6ZS1zY3NzL3Nhc3Mvbm9ybWFsaXplJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvaGVscGVycy9taXNzaW5nLWRlcGVuZGVuY2llcyc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2hlbHBlcnMvdHJ1ZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9wdXJnZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9yZW1vdmUnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvcmVwbGFjZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy90by1saXN0JztcblxuLy8gU2V0dGluZ3Ncbi8vIGltcG9ydCB5b3VyIG93biBgc2V0dGluZ3NgIGhlcmUgb3Jcbi8vIGltcG9ydCBhbmQgbW9kaWZ5IHRoZSBkZWZhdWx0IHNldHRpbmdzIHRocm91Z2hcbi8vIEBpbXBvcnQgJ3NldHRpbmdzL3NldHRpbmdzJztcblxuLy8gU2FzcyB1dGlsaXRpZXNcbkBpbXBvcnQgJ3V0aWwvdXRpbCc7XG5cbi8vIEdsb2JhbCB2YXJpYWJsZXMgYW5kIHN0eWxlc1xuQGltcG9ydCAnZ2xvYmFsJztcblxuLy8gQ29tcG9uZW50c1xuQGltcG9ydCAnZ3JpZC9ncmlkJztcbkBpbXBvcnQgJ3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AaW1wb3J0ICdmb3Jtcy9mb3Jtcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Zpc2liaWxpdHknO1xuQGltcG9ydCAnY29tcG9uZW50cy9mbG9hdCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbi1ncm91cCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2FjY29yZGlvbi1tZW51JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYWNjb3JkaW9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYmFkZ2UnO1xuQGltcG9ydCAnY29tcG9uZW50cy9icmVhZGNydW1icyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2NhbGxvdXQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9jYXJkJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY2xvc2UtYnV0dG9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJpbGxkb3duJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJvcGRvd24tbWVudSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Ryb3Bkb3duJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZmxleCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Jlc3BvbnNpdmUtZW1iZWQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9sYWJlbCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL21lZGlhLW9iamVjdCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL21lbnUnO1xuQGltcG9ydCAnY29tcG9uZW50cy9tZW51LWljb24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9vZmYtY2FudmFzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvb3JiaXQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9wYWdpbmF0aW9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcHJvZ3Jlc3MtYmFyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcmV2ZWFsJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc2xpZGVyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc3RpY2t5JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc3dpdGNoJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGFibGUnO1xuQGltcG9ydCAnY29tcG9uZW50cy90YWJzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGl0bGUtYmFyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdG9wLWJhcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RodW1ibmFpbCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Rvb2x0aXAnO1xuXG5AbWl4aW4gZm91bmRhdGlvbi1ldmVyeXRoaW5nKCRmbGV4OiBmYWxzZSkge1xuICBAaWYgJGZsZXgge1xuICAgICRnbG9iYWwtZmxleGJveDogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1nbG9iYWwtc3R5bGVzO1xuICBAaWYgbm90ICRmbGV4IHtcbiAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLWdyaWQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGZvdW5kYXRpb24tZmxleC1ncmlkO1xuICB9XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdHlwb2dyYXBoeTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1idXR0b247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYWNjb3JkaW9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWFjY29yZGlvbi1tZW51O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJhZGdlO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJyZWFkY3J1bWJzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJ1dHRvbi1ncm91cDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1jYWxsb3V0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWNhcmQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tY2xvc2UtYnV0dG9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbWVudS1pY29uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyaWxsZG93bi1tZW51O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyb3Bkb3duO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyb3Bkb3duLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcmVzcG9uc2l2ZS1lbWJlZDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1sYWJlbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZWRpYS1vYmplY3Q7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tb2ZmLWNhbnZhcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1vcmJpdDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wYWdpbmF0aW9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb2dyZXNzLWJhcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zbGlkZXI7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tc3RpY2t5O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXJldmVhbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zd2l0Y2g7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGFibGU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGFicztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10aHVtYm5haWw7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGl0bGUtYmFyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRvb2x0aXA7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdG9wLWJhcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi12aXNpYmlsaXR5LWNsYXNzZXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZmxvYXQtY2xhc3NlcztcblxuICBAaWYgJGZsZXgge1xuICAgIEBpbmNsdWRlIGZvdW5kYXRpb24tZmxleC1jbGFzc2VzO1xuICB9XG59XG4iLCIvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICBBREQgQUxMIFRIRSBNSVhJTlMgVE8gVEhJUyBGSUxFXG4gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cbi8qIFN0YXJ0OiBUcmFuc2l0aW9ucyAqL1xuICAkZ2xvYmFsLXRyYW5zaXRpb24tc3BlZWQ6IDAuMjRzO1xuICAkZ2xvYmFsLWVhc2luZzogY3ViaWMtYmV6aWVyKDAuNDQ1LCAwLjA1MCwgMC41NTAsIDAuOTUwKTtcblxuICBAbWl4aW4gZ2xvYmFsLXRyYW5zaXRpb24oJHRyYW5zaXRpb25zLi4uKSB7XG4gICAgJHM6ICRnbG9iYWwtdHJhbnNpdGlvbi1zcGVlZDtcbiAgICAkdW5mb2xkZWRUcmFuc2l0aW9uczogKCk7XG4gICAgQGVhY2ggJHRyYW5zaXRpb24gaW4gJHRyYW5zaXRpb25zIHtcbiAgICAgICR1bmZvbGRlZFRyYW5zaXRpb25zOiBhcHBlbmQoJHVuZm9sZGVkVHJhbnNpdGlvbnMsICR0cmFuc2l0aW9uICsgXCIgXCIgKyAkcywgY29tbWEpXG4gICAgfVxuICAgIHRyYW5zaXRpb246ICR1bmZvbGRlZFRyYW5zaXRpb25zO1xuICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiAkZ2xvYmFsLWVhc2luZztcbiAgfVxuLyogRW5kOiBUcmFuc2l0aW9ucyAqL1xuXG5AbWl4aW4gZ2xvYmFsLWJnaS1jb3ZlciB7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5cbkBtaXhpbiBnbG9iYWwtY2xpY2thYmxlKCRhbmltYXRlOiBmYWxzZSkge1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBub25lO1xuICBAaWYgKCRhbmltYXRlKSB7XG4gICAgQGluY2x1ZGUgZ2xvYmFsLXRyYW5zaXRpb24odHJhbnNmb3JtLCBjb2xvciwgb3BhY2l0eSk7XG4gICAgJjpob3ZlciB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xuICAgIH1cbiAgfVxufSIsIi5iYWtlcnktYmxvY2stdGVzdGltb25pYWxzLTEge1xuICAkYjogXCIuYmFrZXJ5LWJsb2NrLXRlc3RpbW9uaWFscy0xXCI7XG5cbiAgJl9fdGVzdGltb25pYWxzLXNsaWRlci1ibG9jay10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMzApO1xuICB9XG5cbiAgJl9fdGVzdGltb25pYWxzLTEtd3JhcCB7XG4gIH1cbiAgICAmX190ZXN0aW1vbmlhbF9zbGlkZSB7XG4gICAgfVxuXG4gICAgXG4gICAgICAmX190ZXN0aW1vbmlhbC1pbWFnZS13cmFwcGVyIHtcbiAgICAgICAgZmxleC1ncm93OiAwO1xuICAgICAgICBmbGV4LXNocmluazogMDsgICAgXG4gICAgICB9XG4gICAgICAmX190ZXN0aW1vbmlhbC1pbWFnZSB7XG4gICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgICAgJl9fdGVzdGltb25pYWwtdGV4dC1hcmVhIHtcbiAgICAgIH1cbiAgICAgICAgJl9fdGVzdGltb25pYWwtYXZhdGFyIHtcbiAgICAgICAgICB3aWR0aDogNC41cmVtO1xuICAgICAgICAgIGhlaWdodDogNC41cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIuMjVyZW07XG4gICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg0MCk7XG4gICAgICAgIH1cblxuICAgICAgICAmX190ZXN0aW1vbmlhbC10aXRsZSB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNDApO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fdGVzdGltb25pYWwtdGV4dCB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNDApO1xuICAgICAgICAgIFxuICAgICAgICB9XG5cbiAgICAgICAgJl9fYXJyb3dzIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgIC5mbG8tYmFrZXJ5LWljb24tbGluZS1hcnJvdy1yaWdodCxcbiAgICAgICAgICAuZmxvLWJha2VyeS1pY29uLWxpbmUtYXJyb3ctbGVmdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogNTBweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgICAmX19hcnJvdyB7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDExKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdsb2JhbC1jbGlja2FibGU7XG4gICAgICAgICAgICAmLS1sZWZ0IHtcbiAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiByZW0tY2FsYyg3MCk7XG4gICAgICAgICAgICAgIGxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTVweFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi0tcmlnaHQge1xuICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gICAgICAgICAgICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSB1cCkge1xuICAgIHBhZGRpbmc6IDAgcmVtLWNhbGMoMTAyKTtcbiAgICAmX190ZXN0aW1vbmlhbHMtc2xpZGVyIHtcbiAgICB9XG4gICAgICAmX190ZXN0aW1vbmlhbF9zbGlkZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4IWltcG9ydGFudDtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICB9XG4gICAgICAgICZfX3Rlc3RpbW9uaWFsLWltYWdlIHtcbiAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgICBtYXgtd2lkdGg6IHJlbS1jYWxjKDQyMSk7XG4gICAgICAgIH1cbiAgICAgICAgJl9fdGVzdGltb25pYWwtdGV4dC1hcmVhIHtcbiAgICAgICAgICBwYWRkaW5nOiAwIDAgcmVtLWNhbGMoMTApIHJlbS1jYWxjKDc1KTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICB9XG5cbiAgICAgICAgICAmX190ZXN0aW1vbmlhbC10aXRsZSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgIH1cbiAgICAgICAgICAmX190ZXN0aW1vbmlhbC10ZXh0IHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgICZfX2Fycm93cyB7XG4gICAgICAgICAgfVxuICAgICAgICAgICAgJl9fYXJyb3cge1xuICAgICAgICAgICAgICAmLS1sZWZ0IHtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAmLS1yaWdodCB7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuXG4gICAgJl9fdGVzdGltb25pYWxzLTEtc2xpZGVyIHtcbiAgICB9XG4gICAgICAmX190ZXN0aW1vbmlhbF9zbGlkZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICAgICAgJl9fdGVzdGltb25pYWwtaW1hZ2Uge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIC8vIGhlaWdodDogcmVtLWNhbGMoMjEwKTtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygyMCk7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmX190ZXN0aW1vbmlhbC10ZXh0LWFyZWEge1xuICAgICAgICAgIC8vdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG4gICAgICAgICAgJl9fdGVzdGltb25pYWwtYXZhdGFyIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgIH1cbiAgICAgICAgICAmX190ZXN0aW1vbmlhbC10ZXh0IHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgJl9fYXJyb3dzIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgICAmX19hcnJvdyB7XG4gICAgICAgICAgICAgICYtLWxlZnQge1xuICAgICAgICAgICAgICAgIC8vbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJi0tcmlnaHQge1xuICAgICAgICAgICAgICAgIC8vbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuJGdsb2JhbC1mb250LXNpemU6IDEwMCUgIWRlZmF1bHQ7XG5cbi8vLyBSZW1vdmVzIHRoZSB1bml0IChlLmcuIHB4LCBlbSwgcmVtKSBmcm9tIGEgdmFsdWUsIHJldHVybmluZyB0aGUgbnVtYmVyIG9ubHkuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bSAtIE51bWJlciB0byBzdHJpcCB1bml0IGZyb20uXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgc2FtZSBudW1iZXIsIHNhbnMgdW5pdC5cbkBmdW5jdGlvbiBzdHJpcC11bml0KCRudW0pIHtcbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG59XG5cbi8vLyBDb252ZXJ0cyBvbmUgb3IgbW9yZSBwaXhlbCB2YWx1ZXMgaW50byBtYXRjaGluZyByZW0gdmFsdWVzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJHZhbHVlcyAtIE9uZSBvciBtb3JlIHZhbHVlcyB0byBjb252ZXJ0LiBCZSBzdXJlIHRvIHNlcGFyYXRlIHRoZW0gd2l0aCBzcGFjZXMgYW5kIG5vdCBjb21tYXMuIElmIHlvdSBuZWVkIHRvIGNvbnZlcnQgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgd3JhcCB0aGUgbGlzdCBpbiBwYXJlbnRoZXNlcy5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgW251bGxdIC0gVGhlIGJhc2UgdmFsdWUgdG8gdXNlIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGByZW1gLiBJZiB5b3UncmUgdXNpbmcgRm91bmRhdGlvbiBvdXQgb2YgdGhlIGJveCwgdGhpcyBpcyAxNnB4LiBJZiB0aGlzIHBhcmFtZXRlciBpcyBgbnVsbGAsIHRoZSBmdW5jdGlvbiB3aWxsIHJlZmVyZW5jZSB0aGUgYCRiYXNlLWZvbnQtc2l6ZWAgdmFyaWFibGUgYXMgdGhlIGJhc2UuXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gQSBsaXN0IG9mIGNvbnZlcnRlZCB2YWx1ZXMuXG5AZnVuY3Rpb24gcmVtLWNhbGMoJHZhbHVlcywgJGJhc2U6IG51bGwpIHtcbiAgJHJlbS12YWx1ZXM6ICgpO1xuICAkY291bnQ6IGxlbmd0aCgkdmFsdWVzKTtcblxuICAvLyBJZiBubyBiYXNlIGlzIGRlZmluZWQsIGRlZmVyIHRvIHRoZSBnbG9iYWwgZm9udCBzaXplXG4gIEBpZiAkYmFzZSA9PSBudWxsIHtcbiAgICAkYmFzZTogJGdsb2JhbC1mb250LXNpemU7XG4gIH1cblxuICAvLyBJZiB0aGUgYmFzZSBmb250IHNpemUgaXMgYSAlLCB0aGVuIG11bHRpcGx5IGl0IGJ5IDE2cHhcbiAgLy8gVGhpcyBpcyBiZWNhdXNlIDEwMCUgZm9udCBzaXplID0gMTZweCBpbiBtb3N0IGFsbCBicm93c2Vyc1xuICBAaWYgdW5pdCgkYmFzZSkgPT0gJyUnIHtcbiAgICAkYmFzZTogKCRiYXNlIC8gMTAwJSkgKiAxNnB4O1xuICB9XG5cbiAgLy8gVXNpbmcgcmVtIGFzIGJhc2UgYWxsb3dzIGNvcnJlY3Qgc2NhbGluZ1xuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ3JlbScge1xuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XG4gIH1cblxuICBAaWYgJGNvdW50ID09IDEge1xuICAgIEByZXR1cm4gLXpmLXRvLXJlbSgkdmFsdWVzLCAkYmFzZSk7XG4gIH1cblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRjb3VudCB7XG4gICAgJHJlbS12YWx1ZXM6IGFwcGVuZCgkcmVtLXZhbHVlcywgLXpmLXRvLXJlbShudGgoJHZhbHVlcywgJGkpLCAkYmFzZSkpO1xuICB9XG5cbiAgQHJldHVybiAkcmVtLXZhbHVlcztcbn1cblxuLy8gQ29udmVydHMgYSB1bml0bGVzcywgcGl4ZWwsIG9yIHJlbSB2YWx1ZSB0byBlbSwgZm9yIHVzZSBpbiBicmVha3BvaW50cy5cbkBmdW5jdGlvbiAtemYtYnAtdG8tZW0oJHZhbHVlKSB7XG4gIC8vIFBpeGVsIGFuZCB1bml0bGVzcyB2YWx1ZXMgYXJlIGNvbnZlcnRlZCB0byByZW1zXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3B4JyBvciB1bml0bGVzcygkdmFsdWUpIHtcbiAgICAkdmFsdWU6IHJlbS1jYWxjKCR2YWx1ZSwgJGJhc2U6IDE2cHgpO1xuICB9XG5cbiAgLy8gVGhlbiB0aGUgdmFsdWUgaXMgY29udmVydGVkIHRvIGVtc1xuICBAcmV0dXJuIHN0cmlwLXVuaXQoJHZhbHVlKSAqIDFlbTtcbn1cblxuLy8vIENvbnZlcnRzIGEgcGl4ZWwgdmFsdWUgdG8gbWF0Y2hpbmcgcmVtIHZhbHVlLiAqQW55KiB2YWx1ZSBwYXNzZWQsIHJlZ2FyZGxlc3Mgb2YgdW5pdCwgaXMgYXNzdW1lZCB0byBiZSBhIHBpeGVsIHZhbHVlLiBCeSBkZWZhdWx0LCB0aGUgYmFzZSBwaXhlbCB2YWx1ZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgcmVtIHZhbHVlIGlzIHRha2VuIGZyb20gdGhlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgdmFyaWFibGUuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gUGl4ZWwgdmFsdWUgdG8gY29udmVydC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgW251bGxdIC0gQmFzZSBmb3IgcGl4ZWwgY29udmVyc2lvbi5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgbnVtYmVyIGluIHJlbXMsIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIGdpdmVuIHZhbHVlIGFuZCB0aGUgYmFzZSBwaXhlbCB2YWx1ZS4gcmVtIHZhbHVlcyBhcmUgcGFzc2VkIHRocm91Z2ggYXMgaXMuXG5AZnVuY3Rpb24gLXpmLXRvLXJlbSgkdmFsdWUsICRiYXNlOiBudWxsKSB7XG4gIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkdmFsdWUpICE9ICdudW1iZXInIHtcbiAgICBAd2FybiBpbnNwZWN0KCR2YWx1ZSkgKyAnIHdhcyBwYXNzZWQgdG8gcmVtLWNhbGMoKSwgd2hpY2ggaXMgbm90IGEgbnVtYmVyLic7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cblxuICAvLyBUcmFuc2Zvcm0gZW0gaW50byByZW0gaWYgc29tZW9uZSBoYW5kcyBvdmVyICdlbSdzXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2VtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAxcmVtO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHJlbSBpZiB1bml0cyBmb3IgJHZhbHVlIGlzIG5vdCByZW0gb3IgZW1cbiAgQGlmIHVuaXQoJHZhbHVlKSAhPSAncmVtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgLyBzdHJpcC11bml0KCRiYXNlKSAqIDFyZW07XG4gIH1cblxuICAvLyBUdXJuIDByZW0gaW50byAwXG4gIEBpZiAkdmFsdWUgPT0gMHJlbSB7XG4gICAgJHZhbHVlOiAwO1xuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG5cbi8vLyBDb252ZXJ0cyBhIHBpeGVsLCBwZXJjZW50YWdlLCByZW0gb3IgZW0gdmFsdWUgdG8gYSB1bml0bGVzcyB2YWx1ZSBiYXNlZCBvbiBhIGdpdmVuIGZvbnQgc2l6ZS4gSWRlYWwgZm9yIHdvcmtpbmcgb3V0IHVuaXRsZXNzIGxpbmUgaGVpZ2h0cy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBjb252ZXJ0IHRvIGEgdW5pdGxlc3MgbGluZSBoZWlnaHRcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgLSBUaGUgZm9udCBzaXplIHRvIHVzZSB0byB3b3JrIG91dCB0aGUgbGluZSBoZWlnaHQgLSBkZWZhdWx0cyB0byAkZ2xvYmFsLWZvbnQtc2l6ZVxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIFVuaXRsZXNzIG51bWJlclxuQGZ1bmN0aW9uIHVuaXRsZXNzLWNhbGMoJHZhbHVlLCAkYmFzZTogbnVsbCkge1xuXG4gIC8vIElmIG5vIGJhc2UgaXMgZGVmaW5lZCwgZGVmZXIgdG8gdGhlIGdsb2JhbCBmb250IHNpemVcbiAgQGlmICRiYXNlID09IG51bGwge1xuICAgICRiYXNlOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC8vIEZpcnN0LCBsZXRzIGNvbnZlcnQgb3VyICRiYXNlIHRvIHBpeGVsc1xuXG4gIC8vIElmIHRoZSBiYXNlIGZvbnQgc2l6ZSBpcyBhICUsIHRoZW4gbXVsdGlwbHkgaXQgYnkgMTZweFxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJyUnIHtcbiAgICAkYmFzZTogKCRiYXNlIC8gMTAwJSkgKiAxNnB4O1xuICB9XG5cbiAgQGlmIHVuaXQoJGJhc2UpID09ICdyZW0nIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xuICB9XG5cbiAgQGlmIHVuaXQoJGJhc2UpID09ICdlbScge1xuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XG4gIH1cblxuICAvLyBOb3cgbGV0cyBjb252ZXJ0IG91ciB2YWx1ZSB0byBwaXhlbHMgdG9vXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJyUnIHtcbiAgICAkdmFsdWU6ICgkdmFsdWUgLyAxMDAlKSAqICRiYXNlO1xuICB9XG5cbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncmVtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAkYmFzZTtcbiAgfVxuXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2VtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAkYmFzZTtcbiAgfVxuXG4gIC8vICdweCdcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncHgnIHtcbiAgICBAcmV0dXJuIHN0cmlwLXVuaXQoJHZhbHVlKSAvIHN0cmlwLXVuaXQoJGJhc2UpO1xuICB9XG5cbiAgLy8gYXNzdW1lIHRoYXQgbGluZS1oZWlnaHRzIGdyZWF0ZXJuIHRoZW4gMTAgYXJlIG1lYW50IHRvIGJlIGFic29sdXRlIGluICdweCdcbiAgQGlmIHVuaXRsZXNzKCR2YWx1ZSkgYW5kICgkdmFsdWUgPiAxMCkge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gc3RyaXAtdW5pdCgkYmFzZSk7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGJyZWFrcG9pbnRzXG4vLy8vXG5cbi8vLyBBIGxpc3Qgb2YgbmFtZWQgYnJlYWtwb2ludHMuIFlvdSBjYW4gdXNlIHRoZXNlIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHF1aWNrbHkgY3JlYXRlIG1lZGlhIHF1ZXJpZXMuXG4vLy8gQHR5cGUgTWFwXG4kYnJlYWtwb2ludHM6IChcbiAgc21hbGw6IDAsXG4gIG1lZGl1bTogNjQwcHgsXG4gIGxhcmdlOiAxMDI0cHgsXG4gIHhsYXJnZTogMTIwMHB4LFxuICB4eGxhcmdlOiAxNDQwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gVGhlIGxhcmdlc3QgbmFtZWQgYnJlYWtwb2ludCBpbiB3aGljaCB0byBpbmNsdWRlIHByaW50IGFzIGEgbWVkaWEgdHlwZVxuLy8vIEB0eXBlIEtleXdvcmRcbiRwcmludC1icmVha3BvaW50OiBsYXJnZSAhZGVmYXVsdDtcblxuJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IHNtYWxsICFkZWZhdWx0O1xuXG4kLXpmLWJyZWFrcG9pbnRzLWtleXM6IG1hcC10by1saXN0KCRicmVha3BvaW50cywgJ2tleXMnKTtcblxuQGlmIG50aChtYXAtdmFsdWVzKCRicmVha3BvaW50cyksIDEpICE9IDAge1xuICBAZXJyb3IgJ1lvdXIgc21hbGxlc3QgYnJlYWtwb2ludCAoZGVmaW5lZCBpbiAkYnJlYWtwb2ludHMpIG11c3QgYmUgc2V0IHRvIFwiMFwiLic7XG59XG5AZWxzZSB7XG4gICQtemYtemVyby1icmVha3BvaW50OiBudGgobWFwLWtleXMoJGJyZWFrcG9pbnRzKSwgMSk7XG59XG5cbi8vLyBBbGwgb2YgdGhlIG5hbWVzIGluIHRoaXMgbGlzdCB3aWxsIGJlIG91dHB1dCBhcyBjbGFzc2VzIGluIHlvdXIgQ1NTLCBsaWtlIGAuc21hbGwtMTJgLCBgLm1lZGl1bS02YCwgYW5kIHNvIG9uLiBFYWNoIHZhbHVlIGluIHRoaXMgbGlzdCBtdXN0IGFsc28gYmUgaW4gdGhlIGAkYnJlYWtwb2ludHNgIG1hcC5cbi8vLyBAdHlwZSBMaXN0XG4kYnJlYWtwb2ludC1jbGFzc2VzOiAoc21hbGwgbWVkaXVtIGxhcmdlKSAhZGVmYXVsdDtcblxuLy8vIEdlbmVyYXRlcyBhIG1lZGlhIHF1ZXJ5IHN0cmluZyBtYXRjaGluZyB0aGUgaW5wdXQgdmFsdWUuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gc2VlIHdoYXQgdGhlIHBvc3NpYmxlIGlucHV0cyBhcmUuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkdmFsIFtzbWFsbF0gLSBCcmVha3BvaW50IG5hbWUsIG9yIHB4LCByZW0sIG9yIGVtIHZhbHVlIHRvIHByb2Nlc3MuXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkdmFsOiAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAvLyBTaXplIG9yIGtleXdvcmRcbiAgJGJwOiBudGgoJHZhbCwgMSk7XG4gIC8vIFZhbHVlIGZvciBtYXgtd2lkdGggbWVkaWEgcXVlcmllc1xuICAkYnAtbWF4OiAwO1xuICAvLyBEaXJlY3Rpb24gb2YgbWVkaWEgcXVlcnkgKHVwLCBkb3duLCBvciBvbmx5KVxuICAkZGlyOiBpZihsZW5ndGgoJHZhbCkgPiAxLCBudGgoJHZhbCwgMiksIHVwKTtcbiAgLy8gRXZlbnR1YWwgb3V0cHV0XG4gICRzdHI6ICcnO1xuICAvLyBJcyBpdCBhIG5hbWVkIG1lZGlhIHF1ZXJ5P1xuICAkbmFtZWQ6IGZhbHNlO1xuXG4gIC8vIE9yaWVudGF0aW9uIG1lZGlhIHF1ZXJpZXMgaGF2ZSBhIHVuaXF1ZSBzeW50YXhcbiAgQGlmICRicCA9PSAnbGFuZHNjYXBlJyBvciAkYnAgPT0gJ3BvcnRyYWl0JyB7XG4gICAgQHJldHVybiAnKG9yaWVudGF0aW9uOiAjeyRicH0pJztcbiAgfVxuICBAZWxzZSBpZiAkYnAgPT0gJ3JldGluYScge1xuICAgIEByZXR1cm4gJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAobWluLXJlc29sdXRpb246IDE5MmRwaSknO1xuICB9XG5cbiAgLy8gVHJ5IHRvIHB1bGwgYSBuYW1lZCBicmVha3BvaW50IG91dCBvZiB0aGUgJGJyZWFrcG9pbnRzIG1hcFxuICBAaWYgdHlwZS1vZigkYnApID09ICdzdHJpbmcnIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnApIHtcbiAgICAgIEBpZiAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICdkb3duJyB7XG4gICAgICAgICRicC1tYXg6IC16Zi1tYXAtbmV4dCgkYnJlYWtwb2ludHMsICRicCk7XG4gICAgICB9XG5cbiAgICAgICRicDogbWFwLWdldCgkYnJlYWtwb2ludHMsICRicCk7XG4gICAgICAkbmFtZWQ6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRicDogMDtcbiAgICAgIEB3YXJuICdicmVha3BvaW50KCk6IFwiI3skdmFsfVwiIGlzIG5vdCBkZWZpbmVkIGluIHlvdXIgJGJyZWFrcG9pbnRzIHNldHRpbmcuJztcbiAgICB9XG4gIH1cblxuICAvLyBDb252ZXJ0IGFueSBwaXhlbCwgcmVtLCBvciB1bml0bGVzcyB2YWx1ZSB0byBlbVxuICAkYnA6IC16Zi1icC10by1lbSgkYnApO1xuICBAaWYgJGJwLW1heCB7XG4gICAgJGJwLW1heDogLXpmLWJwLXRvLWVtKCRicC1tYXgpIC0gKDEvMTYpO1xuICB9XG5cbiAgLy8gQ29uZGl0aW9ucyB0byBza2lwIG1lZGlhIHF1ZXJ5IGNyZWF0aW9uXG4gIC8vIC0gSXQncyBhIG5hbWVkIGJyZWFrcG9pbnQgdGhhdCByZXNvbHZlZCB0byBcIjAgZG93blwiIG9yIFwiMCB1cFwiXG4gIC8vIC0gSXQncyBhIG51bWVyaWMgYnJlYWtwb2ludCB0aGF0IHJlc29sdmVkIHRvIFwiMCBcIiArIGFueXRoaW5nXG4gIEBpZiAkYnAgPiAwZW0gb3IgJGRpciA9PSAnb25seScgb3IgJGRpciA9PSAnZG93bicge1xuICAgIC8vIGBvbmx5YCByYW5nZXMgdXNlIHRoZSBmb3JtYXQgYChtaW4td2lkdGg6IG4pIGFuZCAobWF4LXdpZHRoOiBuKWBcbiAgICBAaWYgJGRpciA9PSAnb25seScge1xuICAgICAgLy8gT25seSBuYW1lZCBtZWRpYSBxdWVyaWVzIGNhbiBoYXZlIGFuIFwib25seVwiIHJhbmdlXG4gICAgICBAaWYgJG5hbWVkID09IHRydWUge1xuICAgICAgICAvLyBPbmx5IHVzZSBcIm1pbi13aWR0aFwiIGlmIHRoZSBmbG9vciBpcyBncmVhdGVyIHRoYW4gMFxuICAgICAgICBAaWYgJGJwID4gMGVtIHtcbiAgICAgICAgICAkc3RyOiAkc3RyICsgJyhtaW4td2lkdGg6ICN7JGJwfSknO1xuXG4gICAgICAgICAgLy8gT25seSBhZGQgXCJhbmRcIiB0byB0aGUgbWVkaWEgcXVlcnkgaWYgdGhlcmUncyBhIGNlaWxpbmdcbiAgICAgICAgICBAaWYgJGJwLW1heCAhPSBudWxsIHtcbiAgICAgICAgICAgICRzdHI6ICRzdHIgKyAnIGFuZCAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9ubHkgdXNlIFwibWF4LXdpZHRoXCIgaWYgdGhlcmUncyBhIGNlaWxpbmdcbiAgICAgICAgQGlmICRicC1tYXggIT0gbnVsbCB7XG4gICAgICAgICAgJHN0cjogJHN0ciArICcobWF4LXdpZHRoOiAjeyRicC1tYXh9KSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQHdhcm4gJ2JyZWFrcG9pbnQoKTogT25seSBuYW1lZCBtZWRpYSBxdWVyaWVzIGNhbiBoYXZlIGFuIGBvbmx5YCByYW5nZS4nO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGBkb3duYCByYW5nZXMgdXNlIHRoZSBmb3JtYXQgYChtYXgtd2lkdGg6IG4pYFxuICAgIEBlbHNlIGlmICRkaXIgPT0gJ2Rvd24nIHtcbiAgICAgICRtYXg6IGlmKCRuYW1lZCwgJGJwLW1heCwgJGJwKTtcblxuICAgICAgLy8gU2tpcCBtZWRpYSBxdWVyeSBjcmVhdGlvbiBpZiBpbnB1dCB2YWx1ZSBpcyBleGFjdGx5IFwiMCBkb3duXCIsXG4gICAgICAvLyB1bmxlc3MgdGhlIGZ1bmN0aW9uIHdhcyBjYWxsZWQgYXMgXCJzbWFsbCBkb3duXCIsIGluIHdoaWNoIGNhc2UgaXQncyBqdXN0IFwic21hbGwgb25seVwiXG4gICAgICBAaWYgJG5hbWVkIG9yICRicCA+IDBlbSB7XG4gICAgICAgIEBpZiAkbWF4ICE9IG51bGwge1xuICAgICAgICAgICRzdHI6ICRzdHIgKyAnKG1heC13aWR0aDogI3skbWF4fSknO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYHVwYCByYW5nZXMgdXNlIHRoZSBmb3JtYXQgYChtaW4td2lkdGg6IG4pYFxuICAgIEBlbHNlIGlmICRicCA+IDBlbSB7XG4gICAgICAkc3RyOiAkc3RyICsgJyhtaW4td2lkdGg6ICN7JGJwfSknO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN0cjtcbn1cblxuLy8vIFdyYXBzIGEgbWVkaWEgcXVlcnkgYXJvdW5kIHRoZSBjb250ZW50IHlvdSBwdXQgaW5zaWRlIHRoZSBtaXhpbi4gVGhpcyBtaXhpbiBhY2NlcHRzIGEgbnVtYmVyIG9mIHZhbHVlczpcbi8vLyAgLSBJZiBhIHN0cmluZyBpcyBwYXNzZWQsIHRoZSBtaXhpbiB3aWxsIGxvb2sgZm9yIGl0IGluIHRoZSBgJGJyZWFrcG9pbnRzYCBtYXAsIGFuZCB1c2UgYSBtZWRpYSBxdWVyeSB0aGVyZS5cbi8vLyAgLSBJZiBhIHBpeGVsIHZhbHVlIGlzIHBhc3NlZCwgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYW4gZW0gdmFsdWUgdXNpbmcgYCRnbG9iYWwtZm9udC1zaXplYCBhcyB0aGUgYmFzZS5cbi8vLyAgLSBJZiBhIHJlbSB2YWx1ZSBpcyBwYXNzZWQsIHRoZSB1bml0IHdpbGwgYmUgY2hhbmdlZCB0byBlbS5cbi8vLyAgLSBJZiBhbiBlbSB2YWx1ZSBpcyBwYXNzZWQsIHRoZSB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMtaXMuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkdmFsdWUgLSBCcmVha3BvaW50IG5hbWUsIG9yIHB4LCByZW0sIG9yIGVtIHZhbHVlIHRvIHByb2Nlc3MuXG4vLy9cbi8vLyBAb3V0cHV0IElmIHRoZSBicmVha3BvaW50IGlzIFwiMHB4IGFuZCBsYXJnZXJcIiwgb3V0cHV0cyB0aGUgY29udGVudCBhcy1pcy4gT3RoZXJ3aXNlLCBvdXRwdXRzIHRoZSBjb250ZW50IHdyYXBwZWQgaW4gYSBtZWRpYSBxdWVyeS5cbkBtaXhpbiBicmVha3BvaW50KCR2YWx1ZSkge1xuICAkc3RyOiBicmVha3BvaW50KCR2YWx1ZSk7XG4gICRicDogaW5kZXgoJC16Zi1icmVha3BvaW50cy1rZXlzLCAkdmFsdWUpO1xuICAkcGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsICRwcmludC1icmVha3BvaW50KTtcblxuICAvLyBJZiAkc3RyIGlzIHN0aWxsIGFuIGVtcHR5IHN0cmluZywgbm8gbWVkaWEgcXVlcnkgaXMgbmVlZGVkXG4gIEBpZiAkc3RyID09ICcnIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gIC8vIE90aGVyd2lzZSwgd3JhcCB0aGUgY29udGVudCBpbiBhIG1lZGlhIHF1ZXJ5XG4gIEBlbHNlIHtcbiAgICAvLyBGb3IgbmFtZWQgYnJlYWtwb2ludHMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICRwcmludC1icmVha3BvaW50LCBhZGQgcHJpbnQgdG8gdGhlIG1lZGlhIHR5cGVzXG4gICAgQGlmICRicCAhPSBudWxsIGFuZCAkYnAgPD0gJHBicCB7XG4gICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgI3skc3RyfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgI3skc3RyfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gQ29udmVycyB0aGUgYnJlYWtwb2ludHMgbWFwIHRvIGEgVVJMLWVuY29kZWQgc3RyaW5nLCBsaWtlIHRoaXM6IGBrZXkxPXZhbHVlMSZrZXkyPXZhbHVlMmAuIFRoZSB2YWx1ZSBpcyB0aGVuIGRyb3BwZWQgaW50byB0aGUgQ1NTIGZvciBhIHNwZWNpYWwgYDxtZXRhPmAgdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHQuIFRoaXMgaXMgaG93IHdlIHRyYW5zZmVyIHZhbHVlcyBmcm9tIFNhc3MgdG8gSmF2YVNjcmlwdCwgc28gdGhleSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgcGxhY2UuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBjb252ZXJ0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbWFwJ3MgY29udGVudHMuXG5AZnVuY3Rpb24gLXpmLWJwLXNlcmlhbGl6ZSgkbWFwKSB7XG4gICRzdHI6ICcnO1xuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgJHN0cjogJHN0ciArICRrZXkgKyAnPScgKyAtemYtYnAtdG8tZW0oJHZhbHVlKSArICcmJztcbiAgfVxuICAkc3RyOiBzdHItc2xpY2UoJHN0ciwgMSwgLTIpO1xuXG4gIEByZXR1cm4gJHN0cjtcbn1cblxuLy8vIEZpbmQgdGhlIG5leHQga2V5IGluIGEgbWFwLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gdHJhdmVyc2UuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGtleSAtIEtleSB0byB1c2UgYXMgYSBzdGFydGluZyBwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gVGhlIHZhbHVlIGZvciB0aGUga2V5IGFmdGVyIGAka2V5YCwgaWYgYCRrZXlgIHdhcyBmb3VuZC4gSWYgYCRrZXlgIHdhcyBub3QgZm91bmQsIG9yIGAka2V5YCB3YXMgdGhlIGxhc3QgdmFsdWUgaW4gdGhlIG1hcCwgcmV0dXJucyBgbnVsbGAuXG5AZnVuY3Rpb24gLXpmLW1hcC1uZXh0KCRtYXAsICRrZXkpIHtcblxuICAvLyBTdG9yZSB0aGUga2V5cyBvZiB0aGUgbWFwIGFzIGEgbGlzdFxuICAkdmFsdWVzOiBtYXAta2V5cygkbWFwKTtcblxuICAkaTogMDtcblxuICAvLyBJZiB0aGUgS2V5IEV4aXN0cywgR2V0IHRoZSBpbmRleCBvZiB0aGUga2V5IHdpdGhpbiB0aGUgbWFwIGFuZCBhZGQgMSB0byBpdCBmb3IgdGhlIG5leHQgYnJlYWtwb2ludCBpbiB0aGUgbWFwXG4gIEBpZiAobWFwLWhhcy1rZXkoJG1hcCwgJGtleSkpIHtcbiAgICAkaTogaW5kZXgoJHZhbHVlcywgJGtleSkgKyAxO1xuICB9XG5cbiAgLy8gSWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0LCBvciBpdCdzIHRoZSBsYXN0IGtleSBpbiB0aGUgbWFwLCByZXR1cm4gbnVsbFxuICBAaWYgKCRpID4gbGVuZ3RoKCRtYXApIG9yICRpID09IDApIHtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHZhbHVlXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgbnRoKCR2YWx1ZXMsICRpKSk7XG4gIH1cblxufVxuXG4vLy8gR2V0IGEgdmFsdWUgZm9yIGEgYnJlYWtwb2ludCBmcm9tIGEgcmVzcG9uc2l2ZSBjb25maWcgbWFwIG9yIHNpbmdsZSB2YWx1ZS5cbi8vLyAtIElmIHRoZSBjb25maWcgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdCByZWdhcmRsZXNzIG9mIGAkdmFsdWVgLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIG1hcCBhbmQgaGFzIHRoZSBrZXkgYCR2YWx1ZWAsIHRoZSBleGFjdCBicmVha3BvaW50IHZhbHVlIGlzIHJldHVybmVkLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIG1hcCBhbmQgZG9lcyAqbm90KiBoYXZlIHRoZSBicmVha3BvaW50LCB0aGUgdmFsdWUgbWF0Y2hpbmcgdGhlIG5leHQgbG93ZXN0IGJyZWFrcG9pbnQgaW4gdGhlIGNvbmZpZyBtYXAgaXMgcmV0dXJuZWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRtYXAgLSBSZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHZhbHVlIC0gQnJlYWtwb2ludCBuYW1lIHRvIHVzZS5cbi8vL1xuLy8vIEByZXR1cm4ge01peGVkfSBUaGUgY29ycmVzcG9uZGluZyBicmVha3BvaW50IHZhbHVlLlxuQGZ1bmN0aW9uIC16Zi1nZXQtYnAtdmFsKCRtYXAsICR2YWx1ZSkge1xuICAvLyBJZiB0aGUgZ2l2ZW4gbWFwIGlzIGEgc2luZ2xlIHZhbHVlLCByZXR1cm4gaXRcbiAgQGlmIHR5cGUtb2YoJG1hcCkgPT0gJ251bWJlcicge1xuICAgIEByZXR1cm4gJG1hcDtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBicmVha3BvaW50IG5hbWUgZXhpc3RzIGdsb2JhbGx5XG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkdmFsdWUpIHtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgaW4gdGhlIGxvY2FsIGNvbmZpZyBtYXBcbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJG1hcCwgJHZhbHVlKSB7XG4gICAgLy8gSWYgaXQgZG9lcywganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICR2YWx1ZSk7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCBmaW5kIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGFuZCByZXR1cm4gdGhhdCB2YWx1ZVxuICBAZWxzZSB7XG4gICAgJGFuY2hvcjogbnVsbDtcbiAgICAkZm91bmQ6IGZhbHNlO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgICAgQGlmIG5vdCAkZm91bmQge1xuICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJG1hcCwgJGtleSkge1xuICAgICAgICAgICRhbmNob3I6ICRrZXk7XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRrZXkgPT0gJHZhbHVlIHtcbiAgICAgICAgICAkZm91bmQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJGFuY2hvcik7XG4gIH1cbn1cblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgc21hbGwpIHtcbiAgJHNtYWxsLXVwOiBzY3JlZW47XG4gICRzbWFsbC1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChzbWFsbCBvbmx5KX0nKTtcbn1cblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgbWVkaXVtKSB7XG4gICRtZWRpdW0tdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KG1lZGl1bSl9Jyk7XG4gICRtZWRpdW0tb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobWVkaXVtIG9ubHkpfScpO1xufVxuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBsYXJnZSkge1xuICAkbGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KGxhcmdlKX0nKTtcbiAgJGxhcmdlLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KGxhcmdlIG9ubHkpfScpO1xufVxuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4bGFyZ2UpIHtcbiAgJHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlKX0nKTtcbiAgJHhsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2Ugb25seSl9Jyk7XG59XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHh4bGFyZ2UpIHtcbiAgJHh4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHh4bGFyZ2UpfScpO1xufVxuIiwiJGdjdzogcmVtLWNhbGMoNDUpO1xuXG4uYmFrZXJ5LWJsb2NrLXRyYXZlbC1kYXRlcyB7XG4gICRiOiBcIi5iYWtlcnktYmxvY2stdHJhdmVsLWRhdGVzXCI7XG5cbiAgZGlzcGxheTogZmxleDtcblxuICAmX190ZXh0LWFyZWEge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuICAgICZfX2Jsb2NrLXRpdGxlIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDI1KTtcbiAgICB9XG4gICAgJl9fdGl0bGUtbGluZSB7XG4gICAgICB3aWR0aDogcmVtLWNhbGMoMzApO1xuICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkO1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICAgICZfX3RyYXZlbC1pdGVtcy13cmFwIHtcblxuICAgICAgJjpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDMyKTtcbiAgICAgIH1cblxuICAgIH1cbiAgICAgICZfX3RyYXZlbC1pdGVtIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuICAgICAgICAmX190cmF2ZWwtZGF0ZSB7XG4gICAgICAgIH1cbiAgICAgICAgJl9fdHJhdmVsLWRlc3RpbmF0aW9uIHtcbiAgICAgICAgfVxuICAgICAgICAmX190cmF2ZWwtbGluayB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuXG4gICZfX2ltYWdlLWFyZWEge1xuICB9XG4gICAgJl9faW1hZ2Uge1xuICAgIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSB1cCkge1xuXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICYtLWltYWdlLWxlZnQge1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuXG4gICAgICAjeyRifV9faW1hZ2UtYXJlYSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkZ2N3O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgfVxuICAgIH1cbiAgICAmLS1pbWFnZS1yaWdodCB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuXG4gICAgICAjeyRifV9faW1hZ2UtYXJlYSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG4gICAgJl9fdGV4dC1hcmVhIHtcbiAgICAgIHBhZGRpbmc6IDAgJGdjdyAqIDI7XG4gICAgICBmbGV4LWdyb3c6IDE7XG4gICAgfVxuICAgICAgJl9fYmxvY2stdGl0bGUge1xuICAgICAgfVxuICAgICAgJl9fdGl0bGUtbGluZSB7XG4gICAgICB9XG4gICAgICAmX190cmF2ZWwtaXRlbXMtd3JhcCB7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgI3skYn1fX3RyYXZlbC1pdGVtIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgICAgICZfX3RyYXZlbC1pdGVtIHtcblxuICAgICAgICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygyMCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGluY2x1ZGUgZ2xvYmFsLXRyYW5zaXRpb24ob3BhY2l0eSk7XG4gICAgICAgIH1cbiAgICAgICAgICAmX190cmF2ZWwtZGF0ZSB7XG4gICAgICAgICAgfVxuICAgICAgICAgICZfX3RyYXZlbC1kZXN0aW5hdGlvbiB7XG4gICAgICAgICAgfVxuICAgICAgICAgICZfX3RyYXZlbC1saW5rIHtcbiAgICAgICAgICB9XG5cbiAgICAmX19pbWFnZS1hcmVhIHtcbiAgICAgIHdpZHRoOiAkZ2N3ICogMTA7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICBwYWRkaW5nOiByZW0tY2FsYyg4MCk7XG4gICAgfVxuICAgICAgJl9faW1hZ2Uge1xuICAgICAgICB3aWR0aDogJGdjdyAqIDg7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgIH1cblxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG5cbiAgICAmLS1pbWFnZS1sZWZ0IHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcblxuICAgICAgI3skYn1fX2ltYWdlLWFyZWEge1xuICAgICAgICAvL21hcmdpbi1ib3R0b206ICRnY3c7XG4gICAgICB9XG5cbiAgICAgICN7JGJ9X190ZXh0LWFyZWEge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJGdjdztcbiAgICAgIH1cbiAgICB9XG4gICAgJi0taW1hZ2UtcmlnaHQge1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgI3skYn1fX2ltYWdlLWFyZWEge1xuICAgICAgICAvL21hcmdpbi10b3A6ICRnY3c7XG4gICAgICB9XG5cbiAgICAgICN7JGJ9X190ZXh0LWFyZWEge1xuICAgICAgICBwYWRkaW5nLXRvcDogJGdjdztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX190ZXh0LWFyZWEge1xuICAgIH1cbiAgICAgICZfX2Jsb2NrLXRpdGxlIHtcbiAgICAgIH1cbiAgICAgICZfX3RpdGxlLWxpbmUge1xuICAgICAgfVxuICAgICAgJl9fdHJhdmVsLWl0ZW1zLXdyYXAge1xuICAgICAgfVxuICAgICAgICAmX190cmF2ZWwtaXRlbSB7XG5cbiAgICAgICAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMzApO1xuICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgICAgICAgJl9fdHJhdmVsLWRhdGUge1xuICAgICAgICAgIH1cbiAgICAgICAgICAmX190cmF2ZWwtZGVzdGluYXRpb24ge1xuICAgICAgICAgIH1cbiAgICAgICAgICAmX190cmF2ZWwtbGluayB7XG4gICAgICAgICAgfVxuXG4gICAgJl9faW1hZ2UtYXJlYSB7XG4gICAgICBwYWRkaW5nOiByZW0tY2FsYyg4MCk7XG4gICAgfVxuICAgICAgJl9faW1hZ2Uge1xuICAgICAgfVxuXG4gIH1cbn1cbiIsIi5iYWtlcnktYmxvY2stZmFxLWJsb2NrLTIge1xuICAkYjogXCIuYmFrZXJ5LWJsb2NrLWZhcS1ibG9jay0xXCI7XG4gIC8vIHBhZGRpbmctbGVmdDogY2FsYygoMTAwdncgLSA2MS44OHJlbSkgLyAyKTtcbiAgLy8gcGFkZGluZy1yaWdodDogY2FsYygoMTAwdncgLSA2MS44OHJlbSkgLyAyKTtcbiAgbWF4LXdpZHRoOiA1MHJlbTtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcblxuICAmX190aXRsZS1hcmVhIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDUwKTtcbiAgfVxuICAgICZfX3RpdGxlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHotaW5kZXg6IDI7XG4gICAgfVxuICAgICZfX3RpdGxlLWRlY29yYXRpdmUtaWNvbiB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB6LWluZGV4OiAxO1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICB9XG4gIC8vICZfX2ZhcS1zbGlkZXIge1xuICAvLyAgICYgLnNsaWNrLWxpc3Qge1xuICAvLyAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIC8vICAgfVxuICAvLyB9XG4gICAgJl9fZmFxLXNsaWRlIHtcbiAgICB9XG4gICAgICAmX19mYXEtc2xpZGUtY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgfVxuICAgICAgICAmX19xdWVzdGlvbnMtd3JhcCB7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB9XG4gICAgICAgICAgJl9fc2luZ2xlLXFhIHtcbiAgICAgICAgICB9XG4gICAgICAgICAgICAmX19xdWVzdGlvbiB7XG4gICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDEwKTtcbiAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCIrXCI7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBsZWZ0OiByZW0tY2FsYygtMTUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmX19hbnN3ZXIge1xuICAgICAgICAgICAgICAmIHA6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICZfX2ZhcS1jb3VudGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgfVxuICAgICAgICAgICAgJl9fY3VycmVudC1pdGVtLW51bWJlciB7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmX19udW1iZXItZGl2aWRlciB7XG4gICAgICAgICAgICAgIHdpZHRoOiAxcHg7XG4gICAgICAgICAgICAgIGhlaWdodDogcmVtLWNhbGMoMzApO1xuICAgICAgICAgICAgICBtYXJnaW46IDAgcmVtLWNhbGMoMTApO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyOGRlZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmX190b3RhbC1pdGVtLW51bWJlciB7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgJl9fYXJyb3dzIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAmLS1oaWRlLWFycm93cyB7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgICAgJl9fYXJyb3cge1xuICAgICAgICAgICAgICAmLS1sZWZ0IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDI2KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAmLS1yaWdodCB7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgyKSFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGluY2x1ZGUgZ2xvYmFsLXRyYW5zaXRpb24odHJhbnNmb3JtKTtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgZ2xvYmFsLWNsaWNrYWJsZTtcbiAgICAgICAgICAgIH1cbiAgICAgIFxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSB1cCkge1xuICAgICZfX3RpdGxlLWFyZWEge1xuICAgIH1cbiAgICAgICZfX3RpdGxlIHtcbiAgICAgIH1cbiAgICAgICZfX3RpdGxlLWRlY29yYXRpdmUtaWNvbiB7XG4gICAgICB9XG4gICAgJl9fZmFxLXNsaWRlciB7XG4gICAgfVxuICAgICAgJl9fZmFxLXNsaWRlIHtcbiAgICAgIH1cbiAgICAgICAgJl9fZmFxLXNsaWRlLWNvbnRlbnQge1xuICAgICAgICB9XG4gICAgICAgICAgJl9fcXVlc3Rpb25zLXdyYXAge1xuICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgbWluLWhlaWdodDogcmVtLWNhbGMoNTQ5KTtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogcmVtLWNhbGMoMTM5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgICAmX19zaW5nbGUtcWEge1xuICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg2MCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAgICZfX3F1ZXN0aW9uIHtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAmX19hbnN3ZXIge1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgJl9fZmFxLWNvdW50ZXIge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgICAmX19jdXJyZW50LWl0ZW0tbnVtYmVyIHtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICZfX251bWJlci1kaXZpZGVyIHtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICZfX3RvdGFsLWl0ZW0tbnVtYmVyIHtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAmX19hcnJvd3Mge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgcmlnaHQ6IHJlbS1jYWxjKDI2KTtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgICAmX19hcnJvdyB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoOSk7XG4gICAgICAgICAgICAgICYtLWxlZnQge1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICYtLXJpZ2h0IHtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAmX19mYXEtaW1hZ2Uge1xuICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAgIC8vd2lkdGg6IHJlbS1jYWxjKDM1OSk7XG4gICAgICAgICAgLy9oZWlnaHQ6IHJlbS1jYWxjKDU0OSk7XG4gICAgICAgICAgZmxleC1iYXNpczogcmVtLWNhbGMoMzU5KTtcbiAgICAgICAgICBmbGV4LWdyb3c6IDA7XG4gICAgICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuICAgIG1heC13aWR0aDogODV2dztcbiAgICBtYXJnaW46IDAgYXV0bztcblxuICAgICZfX3RpdGxlLWFyZWEge1xuICAgIH1cbiAgICAgICZfX3RpdGxlIHtcbiAgICAgIH1cbiAgICAgICZfX3RpdGxlLWRlY29yYXRpdmUtaWNvbiB7XG4gICAgICB9XG4gICAgICAmX19mYXEtc2xpZGVyIHtcbiAgICAgIH1cbiAgICAgICAgJl9fZmFxLXNsaWRlIHtcbiAgICAgICAgfVxuICAgICAgICAmX19mYXEtc2xpZGUtY29udGVudCB7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xuICAgICAgICB9XG4gICAgICAgICAgJl9fcXVlc3Rpb25zLXdyYXAge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMzApO1xuICAgICAgICAgIH1cbiAgICAgICAgICAgICZfX3NpbmdsZS1xYSB7XG4gICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDMwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJl9fcXVlc3Rpb24ge1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICZfX2Fuc3dlciB7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAmX19mYXEtY291bnRlciB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygzMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgICAgJl9fY3VycmVudC1pdGVtLW51bWJlciB7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmX19udW1iZXItZGl2aWRlciB7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmX190b3RhbC1pdGVtLW51bWJlciB7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgJl9fYXJyb3dzIHtcbiAgICAgICAgICB9XG4gICAgICAgICAgICAmX19hcnJvdyB7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTUpO1xuICAgICAgICAgICAgICAmLS1sZWZ0IHtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAmLS1yaWdodCB7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgJl9fZmFxLWltYWdlIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygzMCk7XG4gICAgICAgIH1cbiAgfVxufVxuIiwiJGJha2VyeS1jb250YWN0LWNvbHVtbi13aWR0aDogcmVtLWNhbGMoOTUpO1xuJGJha2VyeS1jb250YWN0LXBhZGRpbmctbW9iaWxlLS12ZXJ0aWNhbDogcmVtLWNhbGMoMzApO1xuJGJha2VyeS1jb250YWN0LXBhZGRpbmctbW9iaWxlLS1ob3Jpem9udGFsOiByZW0tY2FsYygzMik7XG5cbi5iYWtlcnktY29udGFjdC1ibG9jay0xIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgJGI6IFwiLmJha2VyeS1jb250YWN0LWJsb2NrLTFcIjtcbiAgZGlzcGxheTogZmxleDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBAaW5jbHVkZSBnbG9iYWwtYmdpLWNvdmVyO1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCIgXCI7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiAwO1xuICB9XG4gICZfX2Zvcm0tZGVzY3JpcHRpb24ge1xuICAgIHotaW5kZXg6IDE7XG4gIH1cbiAgICAmX190aXRsZSB7XG4gICAgfVxuICAgICZfX3RpdGxlLXBhcmFncmFwaCB7XG4gICAgICAmIHA6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICB9XG4gICAgfVxuICAgICZfX3Bob25lLW51bWJlci1sYWJlbCB7XG4gICAgfVxuICAgICZfX3Bob25lLW51bWJlciB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gICAgJl9fZW1haWwtbGFiZWwge1xuICAgIH1cbiAgICAmX19lbWFpbCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gICAgJl9fc29jaWFsLWxpbmtzIHtcbiAgICAgIC5mbG8tc29jaWFsLWxpbmtzX19saW5rIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiByZW0tY2FsYygyNSk7XG4gICAgICB9XG4gICAgfVxuICAgICAgJl9fc29jaWFsLWxpbmtzLWxhYmVsIHtcbiAgICAgIH1cbiAgJl9fZm9ybS13cmFwIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgei1pbmRleDogMTtcbiAgfVxuICAgICZfX2Zvcm0tcHJlLXRpdGxlIHtcbiAgICB9XG4gICAgJl9fZm9ybS10aXRsZSB7XG4gICAgfVxuICAgICZfX2Zvcm0tc2VjdGlvbiB7XG4gICAgfVxuICAgICAgJl9fZm9ybS1maWVsZCx0ZXh0YXJlYSB7XG4gICAgICAgIGhlaWdodDogcmVtLWNhbGMoMTUwKTtcbiAgICAgIH1cbiAgICAgICZfX2Zvcm0tZmllbGQsIGlucHV0LHRleHRhcmVhIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIWltcG9ydGFudDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIwKSFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICZfX2Zvcm0tc3VibWl0IHtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSB1cCkge1xuICAgICRvbmVfY29sdW1uX2FuZF9oYWxmOiAkYmFrZXJ5LWNvbnRhY3QtY29sdW1uLXdpZHRoICsgJGJha2VyeS1jb250YWN0LWNvbHVtbi13aWR0aCAvIDI7XG4gICAgJGhhbGZfY29sdW1uOiAkYmFrZXJ5LWNvbnRhY3QtY29sdW1uLXdpZHRoIC8gMjtcbiAgICBwYWRkaW5nOiByZW0tY2FsYyg3NCkgJGJha2VyeS1jb250YWN0LWNvbHVtbi13aWR0aDtcbiAgICAmX19mb3JtLWRlc2NyaXB0aW9uIHtcbiAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDQ1KSAkb25lX2NvbHVtbl9hbmRfaGFsZiByZW0tY2FsYyg0NSkgJGhhbGZfY29sdW1uO1xuICAgICAgd2lkdGg6IDUwJTtcbiAgICB9XG4gICAgICAmX190aXRsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQ2KTtcbiAgICAgIH1cbiAgICAgICZfX3RpdGxlLXBhcmFncmFwaCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDU0KTtcbiAgICAgIH1cbiAgICAgICZfX3Bob25lLW51bWJlci1sYWJlbCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIwKTtcbiAgICAgIH1cbiAgICAgICZfX3Bob25lLW51bWJlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDYzKTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICB9XG4gICAgICAmX19lbWFpbC1sYWJlbCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIwKTtcbiAgICAgIH1cbiAgICAgICZfX2VtYWlsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNjMpO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgIH1cbiAgICAgICZfX3NvY2lhbC1saW5rcyB7XG4gICAgICB9XG4gICAgICAgICZfX3NvY2lhbC1saW5rcy1sYWJlbCB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMjApO1xuICAgICAgICB9XG4gICAgJl9fZm9ybS13cmFwIHtcbiAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDQ1KSAkaGFsZl9jb2x1bW4gcmVtLWNhbGMoNDUpICRvbmVfY29sdW1uX2FuZF9oYWxmO1xuICAgICAgd2lkdGg6IDUwJTtcbiAgICB9XG4gICAgICAmX19mb3JtLXByZS10aXRsZSB7XG4gICAgICB9XG4gICAgICAmX19mb3JtLXRpdGxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNjQpO1xuICAgICAgfVxuICAgICAgJl9fZm9ybS1zZWN0aW9uIHtcbiAgICAgIH1cbiAgICAgICAgJl9fZm9ybS1maWVsZCwgaW5wdXQsdGV4dGFyZWEge1xuICAgICAgICB9XG4gICAgICAgICZfX2Zvcm0tc3VibWl0IHtcbiAgICAgICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBwYWRkaW5nOiAkYmFrZXJ5LWNvbnRhY3QtcGFkZGluZy1tb2JpbGUtLXZlcnRpY2FsICRiYWtlcnktY29udGFjdC1wYWRkaW5nLW1vYmlsZS0taG9yaXpvbnRhbDtcbiAgICAmX19mb3JtLWRlc2NyaXB0aW9uIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDUwKTtcbiAgICB9XG4gICAgICAmX190aXRsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIzKTtcbiAgICAgIH1cbiAgICAgICZfX3RpdGxlLXBhcmFncmFwaCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDI2KTtcbiAgICAgIH1cbiAgICAgICZfX3Bob25lLW51bWJlci1sYWJlbCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIwKTtcbiAgICAgIH1cbiAgICAgICZfX3Bob25lLW51bWJlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDMwKTtcbiAgICAgIH1cbiAgICAgICZfX2VtYWlsLWxhYmVsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMjApO1xuICAgICAgfVxuICAgICAgJl9fZW1haWwge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygzMCk7XG4gICAgICB9XG4gICAgICAmX19zb2NpYWwtbGlua3Mge1xuICAgICAgfVxuICAgICAgICAmX19zb2NpYWwtbGlua3MtbGFiZWwge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgfVxuICAgICZfX2Zvcm0td3JhcCB7XG4gICAgfVxuICAgICAgJl9fZm9ybS1wcmUtdGl0bGUge1xuICAgICAgfVxuICAgICAgJl9fZm9ybS10aXRsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDMyKTtcbiAgICAgIH1cbiAgICAgICZfX2Zvcm0tc2VjdGlvbiB7XG4gICAgICB9XG4gICAgICAgICZfX2Zvcm0tZmllbGQge1xuICAgICAgICB9XG4gICAgICAgICZfX2Zvcm0tc3VibWl0IHtcbiAgICAgICAgfVxuICB9XG59XG5cbi5mbG8tbW9kYWwge1xuICBjb2xvcjogIzAwMDtcbn0iLCIuYmFrZXJ5LXByaWNpbmctcGFja2FnZXMge1xuICAkYjogXCIuYmFrZXJ5LXByaWNpbmctcGFja2FnZXNcIjtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmX19wYWNrYWdlcyB7XG5cbiAgfVxuICAgICZfX3BhY2thZ2Uge1xuICAgICAgXG4gICAgfVxuICAgICAgJl9fcGFja2FnZS1pbWFnZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIEBpbmNsdWRlIGdsb2JhbC1iZ2ktY292ZXI7XG4gICAgICB9XG4gICAgICAgICZfX3BhY2thZ2UtdGl0bGUge1xuXG4gICAgICAgIH1cbiAgICAgICAgJl9fcGFja2FnZS1zdWJ0aXRsZSB7XG5cbiAgICAgICAgfVxuICAgICAgJl9fcGFja2FnZS1kZXNjcmlwdGlvbiB7XG5cbiAgICAgIH1cbiAgICAgICZfX3BhY2thZ2UtcHJpY2Uge1xuICAgICAgICBcbiAgICAgIH1cbiAgICAmX19idXR0b24ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U1ZTVlNTtcbiAgICAgIHBhZGRpbmc6IDAuNXJlbSAxLjI1cmVtO1xuICAgIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSB1cCkge1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIG1heC13aWR0aDogcmVtLWNhbGMoMTA4MCk7XG4gICAgJl9fcGFja2FnZXMge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICAgICAgJGdhcDogcmVtLWNhbGMoNDUpO1xuICAgICAgJl9fcGFja2FnZSB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiByZW0tY2FsYygxMDApO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAzIC0gI3skZ2FwIC8gMn0pO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICY6bnRoLWNoaWxkKDQpIHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogJGdhcDtcbiAgICAgICAgfVxuICAgICAgICAmOm50aC1jaGlsZCgzKSB7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6ICRnYXA7XG4gICAgICAgIH1cbiAgICAgICAgJjpudGgtY2hpbGQoMikge1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAkZ2FwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAgICZfX3BhY2thZ2UtaW1hZ2Uge1xuICAgICAgICAgIGhlaWdodDogcmVtLWNhbGMoNTM0LjUpO1xuICAgICAgICAgIHBhZGRpbmctYm90dG9tOiByZW0tY2FsYyg2MS41KTtcbiAgICAgICAgICAmLTQtY29sc3tcbiAgICAgICAgICAgIGhlaWdodDogcmVtLWNhbGMoNDAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgICAmX19wYWNrYWdlLXRpdGxlIHtcblxuICAgICAgICAgIH1cbiAgICAgICAgICAmX19wYWNrYWdlLXN1YnRpdGxlIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDEyKTtcbiAgICAgICAgICB9XG4gICAgICAgICZfX3BhY2thZ2UtZGVzY3JpcHRpb24ge1xuICAgICAgICAgIHBhZGRpbmctdG9wOiByZW0tY2FsYyg3NSk7XG4gICAgICAgICAgcDpsYXN0LWNoaWxke1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJl9fcGFja2FnZS1wcmljZSB7XG4gICAgICAgICAgcGFkZGluZy10b3A6IHJlbS1jYWxjKDUwKTtcbiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogcmVtLWNhbGMoMzApO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDApO1xuICAgICAgICB9XG4gICAgICAmX19idXR0b24ge1xuICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyg0NSk7XG4gICAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg1MCk7XG4gICAgJl9fcGFja2FnZXMge1xuXG4gICAgfVxuICAgICAgJl9fcGFja2FnZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNTApO1xuICAgICAgfVxuICAgICAgICAmX19wYWNrYWdlLWltYWdlIHtcbiAgICAgICAgICBoZWlnaHQ6IHJlbS1jYWxjKDMwMCk7XG4gICAgICAgICAgcGFkZGluZy1ib3R0b206IHJlbS1jYWxjKDMwKTtcbiAgICAgICAgfVxuICAgICAgICAgICZfX3BhY2thZ2UtdGl0bGUge1xuXG4gICAgICAgICAgfVxuICAgICAgICAgICZfX3BhY2thZ2Utc3VidGl0bGUge1xuXG4gICAgICAgICAgfVxuICAgICAgICAmX19wYWNrYWdlLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYygyMCk7XG4gICAgICAgIH1cbiAgICAgICAgJl9fcGFja2FnZS1wcmljZSB7XG5cbiAgICAgICAgfVxuICAgICAgJl9fYnV0dG9uIHtcblxuICAgICAgfVxuICB9XG5cbn1cbiIsIi5iYWtlcnktcXVlc3Rpb24tYW5zd2VyLWFyZWF7XG4gICRiOiBcIi5iYWtlcnktcXVlc3Rpb24tYW5zd2VyLWFyZWFcIjtcbiAgLy9wYWRkaW5nLXRvcDogcmVtLWNhbGMoODApO1xuICBtYXgtd2lkdGg6IDQ3LjVyZW07XG4gIG1hcmdpbjogMCBhdXRvO1xuXG4gICZfX3RvcHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmctYm90dG9tOiByZW0tY2FsYygzMik7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkO1xuICB9XG4gICZfX2ZpZWxke1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkO1xuICAgIHBhZGRpbmc6IHJlbS1jYWxjKDI3KSAwO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXG4gICAgQGluY2x1ZGUgZ2xvYmFsLXRyYW5zaXRpb24oaGVpZ2h0KTtcbiAgfVxuICAmX19xYXtcbiAgICBmbGV4OiAxO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgfVxuICAmX19hcnJvd3tcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDM2KTtcbiAgICB3aWR0aDogcmVtLWNhbGMoOTUpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxOCk7XG4gICAgQGluY2x1ZGUgZ2xvYmFsLXRyYW5zaXRpb24odHJhbnNmb3JtLCBhbGlnbi1zZWxmKTtcblxuICAgICYtLWFjdGl2ZXtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbiAgICAgIC8vIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xuICAgIH1cbiAgfVxuICAmX19hbnN3ZXJ7XG4gICAgcGFkZGluZy10b3A6IHJlbS1jYWxjKDQwKTtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIHVwKXtcbiAgICAmX19hbnN3ZXJ7XG4gICAgICBwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDk1KTtcbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcbiAgICBtYXgtd2lkdGg6IDkwdnc7XG4gIH1cbn0iLCIuZHVtbXkge1xuICAkYjogXCIuZHVtbXlcIjtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSB1cCkge1xuICAgIFxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG4gICAgY29sb3I6IGJsdWU7XG4gIH1cbn0iXX0= */
