/* -- Variables -- */
/* -- General styles -- */
body {
  margin: 0;
  padding: 0;
}

body > *:not(#wpforms-form-page-page):not(#wpadminbar):not(#query-monitor-main):not(.flatpickr-calendar):not(.iti.iti--container):not(#mce-modal-block):not(.mce-container):not(#sq-threeds-challenge-flow-modal) {
  position: absolute;
  top: -99999px;
  left: -99999px;
}

*, *::before, *::after {
  box-sizing: border-box;
}

.ui-timepicker-list,
.flatpickr-calendar {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}

/* -- Default form page design (modern) -- */
#wpforms-form-page-page {
  box-sizing: border-box;
  min-height: 100vh;
  border-top-style: solid;
  border-top-width: 191px;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  line-height: 1.5;
  font-size: 16px;
  padding: 0 25px;
  /* -- Signature field compatibility. -- */
  /* -- LikertScale and NetPromoter field compatibility. -- */
  /* -- Payment single item with quantities enabled. -- */
  /* -- Coupons and Order Summary. -- */
  /* -- DateTime. -- */
}

#wpforms-form-page-page h1, #wpforms-form-page-page h2, #wpforms-form-page-page h3, #wpforms-form-page-page h4, #wpforms-form-page-page h5, #wpforms-form-page-page h6 {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  line-height: 1.5em;
  font-weight: bold;
  color: #444;
}

#wpforms-form-page-page input[type="button"],
#wpforms-form-page-page input[type="checkbox"],
#wpforms-form-page-page input[type="email"],
#wpforms-form-page-page input[type="file"],
#wpforms-form-page-page input[type="submit"],
#wpforms-form-page-page input[type="tel"],
#wpforms-form-page-page input[type="text"],
#wpforms-form-page-page input[type="url"] {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 16px;
  font-weight: 400;
  max-width: 100%;
  line-height: normal;
  color: #444;
}

#wpforms-form-page-page ::-webkit-input-placeholder {
  color: inherit;
  opacity: 0.5;
}

#wpforms-form-page-page ::-moz-placeholder {
  color: inherit;
  opacity: 0.5;
}

#wpforms-form-page-page :-ms-input-placeholder {
  color: inherit;
  opacity: 0.5;
}

#wpforms-form-page-page button:not(.choices__button) {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 16px;
}

#wpforms-form-page-page label,
#wpforms-form-page-page span {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}

#wpforms-form-page-page a {
  text-decoration: underline;
}

#wpforms-form-page-page a:hover {
  text-decoration: none;
}

#wpforms-form-page-page .wpforms-form-page-wrap {
  box-sizing: border-box;
  max-width: 740px;
  margin: auto;
  margin-top: -91px;
  border-radius: 8.5px;
  padding: 32px 40px 11px;
  background-color: white;
  color: #444;
}

@media (max-width: 500px) {
  #wpforms-form-page-page .wpforms-form-page-wrap {
    margin-top: -160px;
  }
}

#wpforms-form-page-page .wpforms-custom-logo {
  margin-top: 12px;
  margin-bottom: 29px;
}

#wpforms-form-page-page .wpforms-custom-logo img {
  max-height: 125px;
  max-width: 100%;
  display: block;
  margin: 0 auto;
}

#wpforms-form-page-page .wpforms-title {
  margin: 0 0 9px 0;
  font-size: 30px;
  color: #444;
}

#wpforms-form-page-page .wpforms-description {
  border-bottom: 1px solid #e6e6e6;
  font-size: 16px;
  font-weight: 300;
  padding-bottom: 37px;
  margin-bottom: 29px;
  white-space: pre-wrap;
  color: #444;
}

#wpforms-form-page-page .wpforms-description ul {
  list-style: disc outside !important;
}

#wpforms-form-page-page .wpforms-description ol {
  list-style: decimal outside !important;
}

#wpforms-form-page-page .wpforms-description ul, #wpforms-form-page-page .wpforms-description ol {
  white-space: normal;
  width: fit-content;
}

#wpforms-form-page-page .wpforms-description > ul, #wpforms-form-page-page .wpforms-description > ol {
  padding-left: 28px !important;
}

#wpforms-form-page-page .wpforms-description li {
  text-align: left;
  list-style: inherit !important;
}

#wpforms-form-page-page .wpforms-description li > ul,
#wpforms-form-page-page .wpforms-description li > ol {
  margin-top: 5px !important;
  padding-left: 2em !important;
}

#wpforms-form-page-page .wpforms-description blockquote {
  font-style: italic;
}

#wpforms-form-page-page .wpforms-description del {
  text-decoration: line-through !important;
}

#wpforms-form-page-page .wpforms-preview-notice {
  box-sizing: border-box;
  max-width: 600px;
  padding: 15px;
  margin-top: -20px;
  margin-bottom: 30px;
  background-color: #fcf9e8;
  border: 1px solid #f5e6ab;
  color: rgba(0, 0, 0, 0.8);
  font-size: 16px;
}

#wpforms-form-page-page .wpforms-preview-notice p {
  margin: 0;
}

#wpforms-form-page-page div.wpforms-container-full .wpforms-form input.wpforms-field-medium,
#wpforms-form-page-page div.wpforms-container-full .wpforms-form select.wpforms-field-medium,
#wpforms-form-page-page div.wpforms-container-full .wpforms-form .wpforms-field-row.wpforms-field-medium {
  max-width: 100%;
}

#wpforms-form-page-page div.wpforms-container-full .wpforms-form input.wpforms-field-small,
#wpforms-form-page-page div.wpforms-container-full .wpforms-form select.wpforms-field-small,
#wpforms-form-page-page div.wpforms-container-full .wpforms-form .wpforms-field-row.wpforms-field-small {
  max-width: 100%;
}

#wpforms-form-page-page .wpforms-field-sublabel {
  color: #777;
}

#wpforms-form-page-page .wpforms-required-label {
  color: #9d0a0f;
}

#wpforms-form-page-page .wpforms-error,
#wpforms-form-page-page .dz-error-message span {
  color: #990000;
}

#wpforms-form-page-page textarea.wpforms-error {
  color: inherit;
}

#wpforms-form-page-page .wpforms-signature-wrap.wpforms-field-medium, #wpforms-form-page-page .wpforms-signature-wrap.wpforms-field-small {
  width: 100%;
}

#wpforms-form-page-page .wpforms-field-likert_scale table.wpforms-field-medium, #wpforms-form-page-page .wpforms-field-likert_scale table.wpforms-field-small,
#wpforms-form-page-page .wpforms-field-net_promoter_score table.wpforms-field-medium,
#wpforms-form-page-page .wpforms-field-net_promoter_score table.wpforms-field-small {
  max-width: 100%;
}

#wpforms-form-page-page .wpforms-payment-quantities-enabled.wpforms-field-payment-single .wpforms-single-item-price-content .wpforms-single-item-price {
  width: calc( 100% - 70px);
}

#wpforms-form-page-page .wpforms-field-payment-coupon-wrapper,
#wpforms-form-page-page .wpforms-order-summary-container {
  max-width: 100%;
}

#wpforms-form-page-page .wpforms-field-date-time .wpforms-field-date-dropdown-wrap.wpforms-field-medium, #wpforms-form-page-page .wpforms-field-date-time .wpforms-field-date-dropdown-wrap.wpforms-field-small {
  width: calc(100% + 12px);
}

#wpforms-form-page-page .wpforms-field-date-time .wpforms-field-row-block {
  width: 50%;
}

#wpforms-form-page-page .wpforms-field-date-time .wpforms-datepicker-wrap .wpforms-field-medium + .wpforms-datepicker-clear,
#wpforms-form-page-page .wpforms-field-date-time .wpforms-datepicker-wrap .wpforms-field-small + .wpforms-datepicker-clear {
  right: 10px;
}

#wpforms-form-page-page .wpforms-field-date-time .wpforms-field-row {
  gap: 0;
}

#wpforms-form-page-page .wpforms-field-date-time .wpforms-field-row .wpforms-field-row-block {
  padding: 0 10px;
}

#wpforms-form-page-page .wpforms-field-date-time .wpforms-field-row .wpforms-field-row-block:first-child {
  padding-inline-start: 0;
}

#wpforms-form-page-page .wpforms-field-date-time .wpforms-field-row .wpforms-field-row-block:last-child {
  padding-inline-end: 0;
}

#wpforms-form-page-page .wpforms-form-page-footer {
  text-align: center;
  font-size: 13px;
  padding: 77px 0 30px;
}

@media (max-width: 500px) {
  #wpforms-form-page-page .wpforms-form-page-footer {
    padding-top: 30px;
  }
}

#wpforms-form-page-page .wpforms-form-page-footer a {
  color: inherit;
  text-decoration: none;
}

#wpforms-form-page-page .wpforms-form-page-footer .wpforms-form-page-created-with a:hover span {
  text-decoration: none;
}

#wpforms-form-page-page .wpforms-form-page-footer .wpforms-form-page-created-with a span {
  text-decoration: underline;
}

#wpforms-form-page-page .wpforms-form-page-footer p {
  margin-bottom: 17px;
}

#wpforms-form-page-page .wpforms-form-page-footer p,
#wpforms-form-page-page .wpforms-form-page-footer span {
  opacity: 0.5;
  color: inherit !important;
}

#wpforms-form-page-page .wpforms-form-page-footer svg {
  width: 100px;
  margin-left: 3px;
  margin-top: -4px;
  vertical-align: middle;
}

#wpforms-form-page-page .wpforms-form-page-footer .cls-1 {
  opacity: 0.75;
}

/* -- Classic form page design -- */
.wpforms-form-page-classic #wpforms-form-page-page {
  border-top-width: 278px;
}

.wpforms-form-page-classic #wpforms-form-page-page .wpforms-form-page-wrap {
  max-width: 640px;
  margin-top: -180px;
  padding: 41px 35px 10px;
  border-radius: 0;
}

@media (max-width: 500px) {
  .wpforms-form-page-classic #wpforms-form-page-page .wpforms-form-page-wrap {
    margin-top: -240px;
  }
}

.wpforms-form-page-classic #wpforms-form-page-page .wpforms-custom-logo {
  margin-top: 6px;
  margin-bottom: 29px;
}

.wpforms-form-page-classic #wpforms-form-page-page .wpforms-description {
  border-bottom: 0;
  padding-bottom: 0;
  margin-bottom: 27px;
}

.wpforms-form-page-classic .wpforms-form-page-footer {
  padding: 37px 0 30px;
}

/* -- Form has a custom logo -- */
.wpforms-form-page-custom-logo #wpforms-form-page-page {
  border-top-width: 357px;
}

.wpforms-form-page-custom-logo #wpforms-form-page-page .wpforms-form-page-wrap {
  margin-top: -257px;
}

@media (max-width: 500px) {
  .wpforms-form-page-custom-logo #wpforms-form-page-page .wpforms-form-page-wrap {
    margin-top: -320px;
  }
}

.wpforms-form-page-custom-logo.wpforms-form-page-classic #wpforms-form-page-page {
  border-top-width: 438px;
}

.wpforms-form-page-custom-logo.wpforms-form-page-classic #wpforms-form-page-page .wpforms-form-page-wrap {
  margin-top: -340px;
}

@media (max-width: 500px) {
  .wpforms-form-page-custom-logo.wpforms-form-page-classic #wpforms-form-page-page .wpforms-form-page-wrap {
    margin-top: -400px;
  }
}

/* -- Admin bar is active -- */
.admin-bar #wpforms-form-page-page {
  min-height: calc(100vh - 32px);
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1wYWdlcy5jc3MiLCJzb3VyY2VzIjpbImZvcm0tcGFnZXMuc2NzcyIsInZlbmRvci9faW5jbHVkZS1tZWRpYS5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCJ2ZW5kb3IvX2luY2x1ZGUtbWVkaWFcIjtcblxuLyogLS0gVmFyaWFibGVzIC0tICovXG5cbiRmb250LWZhbWlseTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuJGZvbnQtY29sb3I6ICM0NDQ7XG4kYnJlYWtwb2ludHM6IChzbWFsbDogNTAwcHgpO1xuXG4vKiAtLSBHZW5lcmFsIHN0eWxlcyAtLSAqL1xuXG5ib2R5IHtcblx0bWFyZ2luOiAwO1xuXHRwYWRkaW5nOiAwO1xuXG5cdD4qOm5vdCgjd3Bmb3Jtcy1mb3JtLXBhZ2UtcGFnZSk6bm90KCN3cGFkbWluYmFyKTpub3QoI3F1ZXJ5LW1vbml0b3ItbWFpbik6bm90KC5mbGF0cGlja3ItY2FsZW5kYXIpOm5vdCguaXRpLml0aS0tY29udGFpbmVyKTpub3QoI21jZS1tb2RhbC1ibG9jayk6bm90KC5tY2UtY29udGFpbmVyKTpub3QoI3NxLXRocmVlZHMtY2hhbGxlbmdlLWZsb3ctbW9kYWwpIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAtOTk5OTlweDtcblx0XHRsZWZ0OiAtOTk5OTlweDtcblx0fVxufVxuXG4qLCAqOjpiZWZvcmUsICo6OmFmdGVyIHtcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLnVpLXRpbWVwaWNrZXItbGlzdCxcbi5mbGF0cGlja3ItY2FsZW5kYXIge1xuXHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xufVxuXG4vKiAtLSBEZWZhdWx0IGZvcm0gcGFnZSBkZXNpZ24gKG1vZGVybikgLS0gKi9cblxuI3dwZm9ybXMtZm9ybS1wYWdlLXBhZ2Uge1xuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRtaW4taGVpZ2h0OiAxMDB2aDtcblx0Ym9yZGVyLXRvcC1zdHlsZTogc29saWQ7XG5cdGJvcmRlci10b3Atd2lkdGg6IDE5MXB4O1xuXHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuXHRsaW5lLWhlaWdodDogMS41O1xuXHRmb250LXNpemU6IDE2cHg7XG5cdHBhZGRpbmc6IDAgMjVweDtcblxuXHRoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcblx0XHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuXHRcdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0XHRsaW5lLWhlaWdodDogMS41ZW07XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0Y29sb3I6ICRmb250LWNvbG9yO1xuXHR9XG5cblx0aW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcblx0aW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuXHRpbnB1dFt0eXBlPVwiZW1haWxcIl0sXG5cdGlucHV0W3R5cGU9XCJmaWxlXCJdLFxuXHRpbnB1dFt0eXBlPVwic3VibWl0XCJdLFxuXHRpbnB1dFt0eXBlPVwidGVsXCJdLFxuXHRpbnB1dFt0eXBlPVwidGV4dFwiXSxcblx0aW5wdXRbdHlwZT1cInVybFwiXSB7XG5cdFx0Zm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0bGluZS1oZWlnaHQ6IG5vcm1hbDtcblx0XHRjb2xvcjogJGZvbnQtY29sb3I7XG5cdH1cblxuXHQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuXHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdG9wYWNpdHk6IDAuNTtcblx0fVxuXG5cdDo6LW1vei1wbGFjZWhvbGRlciB7XG5cdFx0Y29sb3I6IGluaGVyaXQ7XG5cdFx0b3BhY2l0eTogMC41O1xuXHR9XG5cblx0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XG5cdFx0Y29sb3I6IGluaGVyaXQ7XG5cdFx0b3BhY2l0eTogMC41O1xuXHR9XG5cblx0YnV0dG9uOm5vdCguY2hvaWNlc19fYnV0dG9uKSB7XG5cdFx0Zm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdH1cblxuXHRsYWJlbCxcblx0c3BhbiB7XG5cdFx0Zm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcblx0fVxuXG5cdGEge1xuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0LndwZm9ybXMtZm9ybS1wYWdlLXdyYXAge1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0bWF4LXdpZHRoOiA3NDBweDtcblx0XHRtYXJnaW46IGF1dG87XG5cdFx0bWFyZ2luLXRvcDogLTkxcHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogOC41cHg7XG5cdFx0cGFkZGluZzogMzJweCA0MHB4IDExcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG5cdFx0Y29sb3I6ICRmb250LWNvbG9yO1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoXCI8PXNtYWxsXCIpIHtcblx0XHRcdG1hcmdpbi10b3A6IC0xNjBweDtcblx0XHR9XG5cdH1cblxuXHQud3Bmb3Jtcy1jdXN0b20tbG9nbyB7XG5cdFx0bWFyZ2luLXRvcDogMTJweDtcblx0XHRtYXJnaW4tYm90dG9tOiAyOXB4O1xuXG5cdFx0aW1nIHtcblx0XHRcdG1heC1oZWlnaHQ6IDEyNXB4O1xuXHRcdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRtYXJnaW46IDAgYXV0bztcblx0XHR9XG5cdH1cblxuXHQud3Bmb3Jtcy10aXRsZSB7XG5cdFx0bWFyZ2luOiAwIDAgOXB4IDA7XG5cdFx0Zm9udC1zaXplOiAzMHB4O1xuXHRcdGNvbG9yOiAkZm9udC1jb2xvcjtcblx0fVxuXG5cdC53cGZvcm1zLWRlc2NyaXB0aW9uIHtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U2ZTZlNjtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDMwMDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMzdweDtcblx0XHRtYXJnaW4tYm90dG9tOiAyOXB4O1xuXHRcdHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcblx0XHRjb2xvcjogJGZvbnQtY29sb3I7XG5cblx0XHR1bCB7XG5cdFx0XHRsaXN0LXN0eWxlOiBkaXNjIG91dHNpZGUgIWltcG9ydGFudDtcblx0XHR9XG5cblx0XHRvbCB7XG5cdFx0XHRsaXN0LXN0eWxlOiBkZWNpbWFsIG91dHNpZGUgIWltcG9ydGFudDtcblx0XHR9XG5cblx0XHR1bCwgb2wge1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vcm1hbDtcblx0XHRcdHdpZHRoOiBmaXQtY29udGVudDtcblx0XHR9XG5cblx0XHQmID4gdWwsICYgPiBvbCB7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDI4cHggIWltcG9ydGFudDtcblx0XHR9XG5cblx0XHRsaSB7XG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdFx0bGlzdC1zdHlsZTogaW5oZXJpdCAhaW1wb3J0YW50O1xuXG5cdFx0XHQ+IHVsLFxuXHRcdFx0PiBvbCB7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDVweCAhaW1wb3J0YW50O1xuXHRcdFx0XHRwYWRkaW5nLWxlZnQ6IDJlbSAhaW1wb3J0YW50O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGJsb2NrcXVvdGUge1xuXHRcdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRcdH1cblxuXHRcdGRlbCB7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaCAhaW1wb3J0YW50O1xuXHRcdH1cblx0fVxuXG5cdC53cGZvcm1zLXByZXZpZXctbm90aWNlIHtcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdG1heC13aWR0aDogNjAwcHg7XG5cdFx0cGFkZGluZzogMTVweDtcblx0XHRtYXJnaW4tdG9wOiAtMjBweDtcblx0XHRtYXJnaW4tYm90dG9tOiAzMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmY2Y5ZTg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI2Y1ZTZhYjtcblx0XHRjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjgpO1xuXHRcdGZvbnQtc2l6ZTogMTZweDtcblxuXHRcdHAge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdGRpdi53cGZvcm1zLWNvbnRhaW5lci1mdWxsIC53cGZvcm1zLWZvcm0gaW5wdXQud3Bmb3Jtcy1maWVsZC1tZWRpdW0sXG5cdGRpdi53cGZvcm1zLWNvbnRhaW5lci1mdWxsIC53cGZvcm1zLWZvcm0gc2VsZWN0LndwZm9ybXMtZmllbGQtbWVkaXVtLFxuXHRkaXYud3Bmb3Jtcy1jb250YWluZXItZnVsbCAud3Bmb3Jtcy1mb3JtIC53cGZvcm1zLWZpZWxkLXJvdy53cGZvcm1zLWZpZWxkLW1lZGl1bSB7XG5cdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHR9XG5cblx0ZGl2LndwZm9ybXMtY29udGFpbmVyLWZ1bGwgLndwZm9ybXMtZm9ybSBpbnB1dC53cGZvcm1zLWZpZWxkLXNtYWxsLFxuXHRkaXYud3Bmb3Jtcy1jb250YWluZXItZnVsbCAud3Bmb3Jtcy1mb3JtIHNlbGVjdC53cGZvcm1zLWZpZWxkLXNtYWxsLFxuXHRkaXYud3Bmb3Jtcy1jb250YWluZXItZnVsbCAud3Bmb3Jtcy1mb3JtIC53cGZvcm1zLWZpZWxkLXJvdy53cGZvcm1zLWZpZWxkLXNtYWxsIHtcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdH1cblxuXHQud3Bmb3Jtcy1maWVsZC1zdWJsYWJlbCB7XG5cdFx0Y29sb3I6ICM3Nzc7XG5cdH1cblxuXHQud3Bmb3Jtcy1yZXF1aXJlZC1sYWJlbCB7XG5cdFx0Y29sb3I6ICM5ZDBhMGY7XG5cdH1cblxuXHQud3Bmb3Jtcy1lcnJvcixcblx0LmR6LWVycm9yLW1lc3NhZ2Ugc3BhbiB7XG5cdFx0Y29sb3I6ICM5OTAwMDA7XG5cdH1cblxuXHR0ZXh0YXJlYS53cGZvcm1zLWVycm9yIHtcblx0XHRjb2xvcjogaW5oZXJpdDtcblx0fVxuXG5cdC8qIC0tIFNpZ25hdHVyZSBmaWVsZCBjb21wYXRpYmlsaXR5LiAtLSAqL1xuXG5cdC53cGZvcm1zLXNpZ25hdHVyZS13cmFwIHtcblx0XHQmLndwZm9ybXMtZmllbGQtbWVkaXVtLFxuXHRcdCYud3Bmb3Jtcy1maWVsZC1zbWFsbCB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cdH1cblxuXHQvKiAtLSBMaWtlcnRTY2FsZSBhbmQgTmV0UHJvbW90ZXIgZmllbGQgY29tcGF0aWJpbGl0eS4gLS0gKi9cblxuXHQud3Bmb3Jtcy1maWVsZC1saWtlcnRfc2NhbGUsXG5cdC53cGZvcm1zLWZpZWxkLW5ldF9wcm9tb3Rlcl9zY29yZSB7XG5cdFx0dGFibGUge1xuXHRcdFx0Ji53cGZvcm1zLWZpZWxkLW1lZGl1bSxcblx0XHRcdCYud3Bmb3Jtcy1maWVsZC1zbWFsbCB7XG5cdFx0XHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKiAtLSBQYXltZW50IHNpbmdsZSBpdGVtIHdpdGggcXVhbnRpdGllcyBlbmFibGVkLiAtLSAqL1xuXHQud3Bmb3Jtcy1wYXltZW50LXF1YW50aXRpZXMtZW5hYmxlZC53cGZvcm1zLWZpZWxkLXBheW1lbnQtc2luZ2xlIC53cGZvcm1zLXNpbmdsZS1pdGVtLXByaWNlLWNvbnRlbnQgLndwZm9ybXMtc2luZ2xlLWl0ZW0tcHJpY2Uge1xuXHRcdHdpZHRoOiBjYWxjKCAxMDAlIC0gNzBweCApO1xuXHR9XG5cblx0LyogLS0gQ291cG9ucyBhbmQgT3JkZXIgU3VtbWFyeS4gLS0gKi9cblx0LndwZm9ybXMtZmllbGQtcGF5bWVudC1jb3Vwb24td3JhcHBlcixcblx0LndwZm9ybXMtb3JkZXItc3VtbWFyeS1jb250YWluZXIge1xuXHRcdG1heC13aWR0aDogMTAwJTtcblx0fVxuXG5cdC8qIC0tIERhdGVUaW1lLiAtLSAqL1xuXHQud3Bmb3Jtcy1maWVsZC1kYXRlLXRpbWUge1xuXHRcdC53cGZvcm1zLWZpZWxkLWRhdGUtZHJvcGRvd24td3JhcCB7XG5cdFx0XHQmLndwZm9ybXMtZmllbGQtbWVkaXVtLFxuXHRcdFx0Ji53cGZvcm1zLWZpZWxkLXNtYWxsIHtcblx0XHRcdFx0d2lkdGg6IGNhbGMoMTAwJSArIDEycHgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC53cGZvcm1zLWZpZWxkLXJvdy1ibG9jayB7XG5cdFx0XHR3aWR0aDogNTAlO1xuXHRcdH1cblxuXHRcdC53cGZvcm1zLWRhdGVwaWNrZXItd3JhcCB7XG5cdFx0XHQud3Bmb3Jtcy1maWVsZC1tZWRpdW0sXG5cdFx0XHQud3Bmb3Jtcy1maWVsZC1zbWFsbCB7XG5cdFx0XHRcdCsgLndwZm9ybXMtZGF0ZXBpY2tlci1jbGVhciB7XG5cdFx0XHRcdFx0cmlnaHQ6IDEwcHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQud3Bmb3Jtcy1maWVsZC1yb3cge1xuXHRcdFx0Z2FwOiAwO1xuXG5cdFx0XHQud3Bmb3Jtcy1maWVsZC1yb3ctYmxvY2sge1xuXHRcdFx0XHRwYWRkaW5nOiAwIDEwcHg7XG5cblx0XHRcdFx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRcdFx0cGFkZGluZy1pbmxpbmUtc3RhcnQ6IDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRcdHBhZGRpbmctaW5saW5lLWVuZDogMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4jd3Bmb3Jtcy1mb3JtLXBhZ2UtcGFnZSAud3Bmb3Jtcy1mb3JtLXBhZ2UtZm9vdGVyIHtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRmb250LXNpemU6IDEzcHg7XG5cdHBhZGRpbmc6IDc3cHggMCAzMHB4O1xuXG5cdEBpbmNsdWRlIG1lZGlhKFwiPD1zbWFsbFwiKSB7XG5cdFx0cGFkZGluZy10b3A6IDMwcHg7XG5cdH1cblxuXHRhIHtcblx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdH1cblxuXHQud3Bmb3Jtcy1mb3JtLXBhZ2UtY3JlYXRlZC13aXRoIHtcblx0XHRhIHtcblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRzcGFuIHtcblx0XHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0c3BhbiB7XG5cdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHAge1xuXHRcdG1hcmdpbi1ib3R0b206IDE3cHg7XG5cdH1cblxuXHRwLFxuXHRzcGFuIHtcblx0XHRvcGFjaXR5OiAwLjU7XG5cdFx0Y29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcblx0fVxuXG5cdHN2ZyB7XG5cdFx0d2lkdGg6IDEwMHB4O1xuXHRcdG1hcmdpbi1sZWZ0OiAzcHg7XG5cdFx0bWFyZ2luLXRvcDogLTRweDtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHR9XG5cblx0LmNscy0xIHtcblx0XHRvcGFjaXR5OiAwLjc1O1xuXHR9XG59XG5cblxuLyogLS0gQ2xhc3NpYyBmb3JtIHBhZ2UgZGVzaWduIC0tICovXG5cbi53cGZvcm1zLWZvcm0tcGFnZS1jbGFzc2ljIHtcblxuXHQjd3Bmb3Jtcy1mb3JtLXBhZ2UtcGFnZSB7XG5cdFx0Ym9yZGVyLXRvcC13aWR0aDogMjc4cHg7XG5cblx0XHQud3Bmb3Jtcy1mb3JtLXBhZ2Utd3JhcCB7XG5cdFx0XHRtYXgtd2lkdGg6IDY0MHB4O1xuXHRcdFx0bWFyZ2luLXRvcDogLTE4MHB4O1xuXHRcdFx0cGFkZGluZzogNDFweCAzNXB4IDEwcHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAwO1xuXG5cdFx0XHRAaW5jbHVkZSBtZWRpYShcIjw9c21hbGxcIikge1xuXHRcdFx0XHRtYXJnaW4tdG9wOiAtMjQwcHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndwZm9ybXMtY3VzdG9tLWxvZ28ge1xuXHRcdFx0bWFyZ2luLXRvcDogNnB4O1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMjlweDtcblx0XHR9XG5cblx0XHQud3Bmb3Jtcy1kZXNjcmlwdGlvbiB7XG5cdFx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdFx0cGFkZGluZy1ib3R0b206IDA7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAyN3B4O1xuXHRcdH1cblx0fVxuXG5cdC53cGZvcm1zLWZvcm0tcGFnZS1mb290ZXIge1xuXHRcdCBwYWRkaW5nOiAzN3B4IDAgMzBweDtcblx0fVxufVxuXG5cbi8qIC0tIEZvcm0gaGFzIGEgY3VzdG9tIGxvZ28gLS0gKi9cblxuLndwZm9ybXMtZm9ybS1wYWdlLWN1c3RvbS1sb2dvIHtcblxuXHQjd3Bmb3Jtcy1mb3JtLXBhZ2UtcGFnZSB7XG5cdFx0Ym9yZGVyLXRvcC13aWR0aDogMzU3cHg7XG5cblx0XHQud3Bmb3Jtcy1mb3JtLXBhZ2Utd3JhcCB7XG5cdFx0XHRtYXJnaW4tdG9wOiAtMjU3cHg7XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPD1zbWFsbFwiKSB7XG5cdFx0XHRcdG1hcmdpbi10b3A6IC0zMjBweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQmLndwZm9ybXMtZm9ybS1wYWdlLWNsYXNzaWMge1xuXG5cdFx0I3dwZm9ybXMtZm9ybS1wYWdlLXBhZ2Uge1xuXHRcdFx0Ym9yZGVyLXRvcC13aWR0aDogNDM4cHg7XG5cblx0XHRcdC53cGZvcm1zLWZvcm0tcGFnZS13cmFwIHtcblx0XHRcdFx0bWFyZ2luLXRvcDogLTM0MHB4O1xuXG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPD1zbWFsbFwiKSB7XG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogLTQwMHB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cblxuLyogLS0gQWRtaW4gYmFyIGlzIGFjdGl2ZSAtLSAqL1xuXG4uYWRtaW4tYmFyICN3cGZvcm1zLWZvcm0tcGFnZS1wYWdlIHtcblx0bWluLWhlaWdodDogY2FsYygxMDB2aCAtIDMycHgpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLyAgICAgXyAgICAgICAgICAgIF8gICAgICAgICAgIF8gICAgICAgICAgICAgICAgICAgICAgICAgICBfIF9cbi8vICAgIChfKSAgICAgICAgICB8IHwgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAoXylcbi8vICAgICBfIF8gX18gICBfX198IHxfICAgXyAgX198IHwgX19fICAgXyBfXyBfX18gICBfX18gIF9ffCB8XyAgX18gX1xuLy8gICAgfCB8ICdfIFxcIC8gX198IHwgfCB8IHwvIF9gIHwvIF8gXFwgfCAnXyBgIF8gXFwgLyBfIFxcLyBfYCB8IHwvIF9gIHxcbi8vICAgIHwgfCB8IHwgfCAoX198IHwgfF98IHwgKF98IHwgIF9fLyB8IHwgfCB8IHwgfCAgX18vIChffCB8IHwgKF98IHxcbi8vICAgIHxffF98IHxffFxcX19ffF98XFxfXyxffFxcX18sX3xcXF9fX3wgfF98IHxffCB8X3xcXF9fX3xcXF9fLF98X3xcXF9fLF98XG4vL1xuLy8gICAgICBTaW1wbGUsIGVsZWdhbnQgYW5kIG1haW50YWluYWJsZSBtZWRpYSBxdWVyaWVzIGluIFNhc3Ncbi8vICAgICAgICAgICAgICAgICAgICAgICAgdjEuNC45XG4vL1xuLy8gICAgICAgICAgICAgICAgaHR0cDovL2luY2x1ZGUtbWVkaWEuY29tXG4vL1xuLy8gICAgICAgICBBdXRob3JzOiBFZHVhcmRvIEJvdWNhcyAoQGVkdWFyZG9ib3VjYXMpXG4vLyAgICAgICAgICAgICAgICAgIEh1Z28gR2lyYXVkZWwgKEBodWdvZ2lyYXVkZWwpXG4vL1xuLy8gICAgICBUaGlzIHByb2plY3QgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBNSVQgbGljZW5zZVxuXG5cbi8vLy9cbi8vLyBpbmNsdWRlLW1lZGlhIGxpYnJhcnkgcHVibGljIGNvbmZpZ3VyYXRpb25cbi8vLyBAYXV0aG9yIEVkdWFyZG8gQm91Y2FzXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLy9cblxuXG4vLy9cbi8vLyBDcmVhdGVzIGEgbGlzdCBvZiBnbG9iYWwgYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBDcmVhdGVzIGEgc2luZ2xlIGJyZWFrcG9pbnQgd2l0aCB0aGUgbGFiZWwgYHBob25lYFxuLy8vICAkYnJlYWtwb2ludHM6ICgncGhvbmUnOiAzMjBweCk7XG4vLy9cbiRicmVha3BvaW50czogKFxuICAncGhvbmUnOiAzMjBweCxcbiAgJ3RhYmxldCc6IDc2OHB4LFxuICAnZGVza3RvcCc6IDEwMjRweFxuKSAhZGVmYXVsdDtcblxuXG4vLy9cbi8vLyBDcmVhdGVzIGEgbGlzdCBvZiBzdGF0aWMgZXhwcmVzc2lvbnMgb3IgbWVkaWEgdHlwZXNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBDcmVhdGVzIGEgc2luZ2xlIG1lZGlhIHR5cGUgKHNjcmVlbilcbi8vLyAgJG1lZGlhLWV4cHJlc3Npb25zOiAoJ3NjcmVlbic6ICdzY3JlZW4nKTtcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBDcmVhdGVzIGEgc3RhdGljIGV4cHJlc3Npb24gd2l0aCBsb2dpY2FsIGRpc2p1bmN0aW9uIChPUiBvcGVyYXRvcilcbi8vLyAgJG1lZGlhLWV4cHJlc3Npb25zOiAoXG4vLy8gICAgJ3JldGluYTJ4JzogJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAobWluLXJlc29sdXRpb246IDE5MmRwaSknXG4vLy8gICk7XG4vLy9cbiRtZWRpYS1leHByZXNzaW9uczogKFxuICAnc2NyZWVuJzogJ3NjcmVlbicsXG4gICdwcmludCc6ICdwcmludCcsXG4gICdoYW5kaGVsZCc6ICdoYW5kaGVsZCcsXG4gICdsYW5kc2NhcGUnOiAnKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ3BvcnRyYWl0JzogJyhvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3JldGluYTJ4JzogJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAobWluLXJlc29sdXRpb246IDE5MmRwaSksIChtaW4tcmVzb2x1dGlvbjogMmRwcHgpJyxcbiAgJ3JldGluYTN4JzogJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDMpLCAobWluLXJlc29sdXRpb246IDM1MGRwaSksIChtaW4tcmVzb2x1dGlvbjogM2RwcHgpJ1xuKSAhZGVmYXVsdDtcblxuXG4vLy9cbi8vLyBEZWZpbmVzIGEgbnVtYmVyIHRvIGJlIGFkZGVkIG9yIHN1YnRyYWN0ZWQgZnJvbSBlYWNoIHVuaXQgd2hlbiBkZWNsYXJpbmcgYnJlYWtwb2ludHMgd2l0aCBleGNsdXNpdmUgaW50ZXJ2YWxzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gSW50ZXJ2YWwgZm9yIHBpeGVscyBpcyBkZWZpbmVkIGFzIGAxYCBieSBkZWZhdWx0XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+MTI4cHgnKSB7fVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IDEyOXB4KSB7fVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEludGVydmFsIGZvciBlbXMgaXMgZGVmaW5lZCBhcyBgMC4wMWAgYnkgZGVmYXVsdFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPjIwZW0nKSB7fVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IDIwLjAxZW0pIHt9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gSW50ZXJ2YWwgZm9yIHJlbXMgaXMgZGVmaW5lZCBhcyBgMC4xYCBieSBkZWZhdWx0LCB0byBiZSB1c2VkIHdpdGggYGZvbnQtc2l6ZTogNjIuNSU7YFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPjIuMHJlbScpIHt9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogMi4xcmVtKSB7fVxuLy8vXG4kdW5pdC1pbnRlcnZhbHM6IChcbiAgJ3B4JzogMSxcbiAgJ2VtJzogMC4wMSxcbiAgJ3JlbSc6IDAuMSxcbiAgJyc6IDBcbikgIWRlZmF1bHQ7XG5cbi8vL1xuLy8vIERlZmluZXMgd2hldGhlciBzdXBwb3J0IGZvciBtZWRpYSBxdWVyaWVzIGlzIGF2YWlsYWJsZSwgdXNlZnVsIGZvciBjcmVhdGluZyBzZXBhcmF0ZSBzdHlsZXNoZWV0c1xuLy8vIGZvciBicm93c2VycyB0aGF0IGRvbid0IHN1cHBvcnQgbWVkaWEgcXVlcmllcy5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBEaXNhYmxlcyBzdXBwb3J0IGZvciBtZWRpYSBxdWVyaWVzXG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgY29sb3I6IHRvbWF0bztcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIC5mb28ge1xuLy8vICAgIGNvbG9yOiB0b21hdG87XG4vLy8gIH1cbi8vL1xuJGltLW1lZGlhLXN1cHBvcnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vL1xuLy8vIFNlbGVjdHMgd2hpY2ggYnJlYWtwb2ludCB0byBlbXVsYXRlIHdoZW4gc3VwcG9ydCBmb3IgbWVkaWEgcXVlcmllcyBpcyBkaXNhYmxlZC4gTWVkaWEgcXVlcmllcyB0aGF0IHN0YXJ0IGF0IG9yXG4vLy8gaW50ZXJjZXB0IHRoZSBicmVha3BvaW50IHdpbGwgYmUgZGlzcGxheWVkLCBhbnkgb3RoZXJzIHdpbGwgYmUgaWdub3JlZC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBUaGlzIG1lZGlhIHF1ZXJ5IHdpbGwgc2hvdyBiZWNhdXNlIGl0IGludGVyY2VwdHMgdGhlIHN0YXRpYyBicmVha3BvaW50XG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcbi8vLyAgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICdkZXNrdG9wJztcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgY29sb3I6IHRvbWF0bztcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIC5mb28ge1xuLy8vICAgIGNvbG9yOiB0b21hdG87XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBUaGlzIG1lZGlhIHF1ZXJ5IHdpbGwgTk9UIHNob3cgYmVjYXVzZSBpdCBkb2VzIG5vdCBpbnRlcmNlcHQgdGhlIGRlc2t0b3AgYnJlYWtwb2ludFxuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAndGFibGV0Jztcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49ZGVza3RvcCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogTm8gb3V0cHV0ICovXG4vLy9cbiRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCcgIWRlZmF1bHQ7XG5cbi8vL1xuLy8vIFNlbGVjdHMgd2hpY2ggbWVkaWEgZXhwcmVzc2lvbnMgYXJlIGFsbG93ZWQgaW4gYW4gZXhwcmVzc2lvbiBmb3IgaXQgdG8gYmUgdXNlZCB3aGVuIG1lZGlhIHF1ZXJpZXNcbi8vLyBhcmUgbm90IHN1cHBvcnRlZC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBUaGlzIG1lZGlhIHF1ZXJ5IHdpbGwgc2hvdyBiZWNhdXNlIGl0IGludGVyY2VwdHMgdGhlIHN0YXRpYyBicmVha3BvaW50IGFuZCBjb250YWlucyBvbmx5IGFjY2VwdGVkIG1lZGlhIGV4cHJlc3Npb25zXG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcbi8vLyAgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICdkZXNrdG9wJztcbi8vLyAgJGltLW5vLW1lZGlhLWV4cHJlc3Npb25zOiAoJ3NjcmVlbicpO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnLCAnc2NyZWVuJykge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgY29sb3I6IHRvbWF0bztcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vICAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICAgLmZvbyB7XG4vLy8gICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIE5PVCBzaG93IGJlY2F1c2UgaXQgaW50ZXJjZXB0cyB0aGUgc3RhdGljIGJyZWFrcG9pbnQgYnV0IGNvbnRhaW5zIGEgbWVkaWEgZXhwcmVzc2lvbiB0aGF0IGlzIG5vdCBhY2NlcHRlZFxuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XG4vLy8gICRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nKTtcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0JywgJ3JldGluYTJ4Jykge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgY29sb3I6IHRvbWF0bztcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vICAvKiBObyBvdXRwdXQgKi9cbi8vL1xuJGltLW5vLW1lZGlhLWV4cHJlc3Npb25zOiAoJ3NjcmVlbicsICdwb3J0cmFpdCcsICdsYW5kc2NhcGUnKSAhZGVmYXVsdDtcblxuLy8vL1xuLy8vIENyb3NzLWVuZ2luZSBsb2dnaW5nIGVuZ2luZVxuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vL1xuXG5cbi8vL1xuLy8vIExvZyBhIG1lc3NhZ2UgZWl0aGVyIHdpdGggYEBlcnJvcmAgaWYgc3VwcG9ydGVkXG4vLy8gZWxzZSB3aXRoIGBAd2FybmAsIHVzaW5nIGBmZWF0dXJlLWV4aXN0cygnYXQtZXJyb3InKWBcbi8vLyB0byBkZXRlY3Qgc3VwcG9ydC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVzc2FnZSAtIE1lc3NhZ2UgdG8gbG9nXG4vLy9cbkBmdW5jdGlvbiBpbS1sb2coJG1lc3NhZ2UpIHtcbiAgQGlmIGZlYXR1cmUtZXhpc3RzKCdhdC1lcnJvcicpIHtcbiAgICBAZXJyb3IgJG1lc3NhZ2U7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICRtZXNzYWdlO1xuICAgICRfOiBub29wKCk7XG4gIH1cblxuICBAcmV0dXJuICRtZXNzYWdlO1xufVxuXG5cbi8vL1xuLy8vIFdyYXBwZXIgbWl4aW4gZm9yIHRoZSBsb2cgZnVuY3Rpb24gc28gaXQgY2FuIGJlIHVzZWQgd2l0aCBhIG1vcmUgZnJpZW5kbHlcbi8vLyBBUEkgdGhhbiBgQGlmIGltLWxvZygnLi4nKSB7fWAgb3IgYCRfOiBpbS1sb2coJy4uJylgLiBCYXNpY2FsbHksIHVzZSB0aGUgZnVuY3Rpb25cbi8vLyB3aXRoaW4gZnVuY3Rpb25zIGJlY2F1c2UgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbiBhIGZ1bmN0aW9uXG4vLy8gYW5kIHVzZSB0aGUgbWl4aW4gZXZlcnl3aGVyZSBlbHNlIGJlY2F1c2UgaXQncyBtdWNoIG1vcmUgZWxlZ2FudC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVzc2FnZSAtIE1lc3NhZ2UgdG8gbG9nXG4vLy9cbkBtaXhpbiBsb2coJG1lc3NhZ2UpIHtcbiAgQGlmIGltLWxvZygkbWVzc2FnZSkge31cbn1cblxuXG4vLy9cbi8vLyBGdW5jdGlvbiB3aXRoIG5vIGBAcmV0dXJuYCBjYWxsZWQgbmV4dCB0byBgQHdhcm5gIGluIFNhc3MgMy4zXG4vLy8gdG8gdHJpZ2dlciBhIGNvbXBpbGluZyBlcnJvciBhbmQgc3RvcCB0aGUgcHJvY2Vzcy5cbi8vL1xuQGZ1bmN0aW9uIG5vb3AoKSB7fVxuXG4vLy9cbi8vLyBEZXRlcm1pbmVzIHdoZXRoZXIgYSBsaXN0IG9mIGNvbmRpdGlvbnMgaXMgaW50ZXJjZXB0ZWQgYnkgdGhlIHN0YXRpYyBicmVha3BvaW50LlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAgICRjb25kaXRpb25zICAtIE1lZGlhIHF1ZXJ5IGNvbmRpdGlvbnNcbi8vL1xuLy8vIEByZXR1cm4ge0Jvb2xlYW59IC0gUmV0dXJucyB0cnVlIGlmIHRoZSBjb25kaXRpb25zIGFyZSBpbnRlcmNlcHRlZCBieSB0aGUgc3RhdGljIGJyZWFrcG9pbnRcbi8vL1xuQGZ1bmN0aW9uIGltLWludGVyY2VwdHMtc3RhdGljLWJyZWFrcG9pbnQoJGNvbmRpdGlvbnMuLi4pIHtcbiAgJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludCk7XG5cbiAgQGlmIG5vdCAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZSB7XG4gICAgQGlmIGltLWxvZygnYCN7JGltLW5vLW1lZGlhLWJyZWFrcG9pbnR9YCBpcyBub3QgYSB2YWxpZCBicmVha3BvaW50LicpIHt9XG4gIH1cblxuICBAZWFjaCAkY29uZGl0aW9uIGluICRjb25kaXRpb25zIHtcbiAgICBAaWYgbm90IG1hcC1oYXMta2V5KCRtZWRpYS1leHByZXNzaW9ucywgJGNvbmRpdGlvbikge1xuICAgICAgJG9wZXJhdG9yOiBnZXQtZXhwcmVzc2lvbi1vcGVyYXRvcigkY29uZGl0aW9uKTtcbiAgICAgICRwcmVmaXg6IGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpO1xuICAgICAgJHZhbHVlOiBnZXQtZXhwcmVzc2lvbi12YWx1ZSgkY29uZGl0aW9uLCAkb3BlcmF0b3IpO1xuXG4gICAgICBAaWYgKCRwcmVmaXggPT0gJ21heCcgYW5kICR2YWx1ZSA8PSAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZSkgb3JcbiAgICAgICAgICAoJHByZWZpeCA9PSAnbWluJyBhbmQgJHZhbHVlID4gJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUpIHtcbiAgICAgICAgQHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmIG5vdCBpbmRleCgkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnMsICRjb25kaXRpb24pIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuXG4vLy8vXG4vLy8gUGFyc2luZyBlbmdpbmVcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLy9cblxuXG4vLy9cbi8vLyBHZXQgb3BlcmF0b3Igb2YgYW4gZXhwcmVzc2lvblxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBleHRyYWN0IG9wZXJhdG9yIGZyb21cbi8vL1xuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBBbnkgb2YgYD49YCwgYD5gLCBgPD1gLCBgPGAsIGDiiaVgLCBg4omkYFxuLy8vXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tb3BlcmF0b3IoJGV4cHJlc3Npb24pIHtcbiAgQGVhY2ggJG9wZXJhdG9yIGluICgnPj0nLCAnPicsICc8PScsICc8JywgJ+KJpScsICfiiaQnKSB7XG4gICAgQGlmIHN0ci1pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKSB7XG4gICAgICBAcmV0dXJuICRvcGVyYXRvcjtcbiAgICB9XG4gIH1cblxuICAvLyBJdCBpcyBub3QgcG9zc2libGUgdG8gaW5jbHVkZSBhIG1peGluIGluc2lkZSBhIGZ1bmN0aW9uLCBzbyB3ZSBoYXZlIHRvXG4gIC8vIHJlbHkgb24gdGhlIGBpbS1sb2coLi4pYCBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aGUgYGxvZyguLilgIG1peGluLiBCZWNhdXNlXG4gIC8vIGZ1bmN0aW9ucyBjYW5ub3QgYmUgY2FsbGVkIGFueXdoZXJlIGluIFNhc3MsIHdlIG5lZWQgdG8gaGFjayB0aGUgY2FsbCBpblxuICAvLyBhIGR1bW15IHZhcmlhYmxlLCBzdWNoIGFzIGAkX2AuIElmIGFueWJvZHkgZXZlciByYWlzZSBhIHNjb3BpbmcgaXNzdWUgd2l0aFxuICAvLyBTYXNzIDMuMywgY2hhbmdlIHRoaXMgbGluZSBpbiBgQGlmIGltLWxvZyguLikge31gIGluc3RlYWQuXG4gICRfOiBpbS1sb2coJ05vIG9wZXJhdG9yIGZvdW5kIGluIGAjeyRleHByZXNzaW9ufWAuJyk7XG59XG5cblxuLy8vXG4vLy8gR2V0IGRpbWVuc2lvbiBvZiBhbiBleHByZXNzaW9uLCBiYXNlZCBvbiBhIGZvdW5kIG9wZXJhdG9yXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGV4cHJlc3Npb24gLSBFeHByZXNzaW9uIHRvIGV4dHJhY3QgZGltZW5zaW9uIGZyb21cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG9wZXJhdG9yIC0gT3BlcmF0b3IgZnJvbSBgJGV4cHJlc3Npb25gXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gYHdpZHRoYCBvciBgaGVpZ2h0YCAob3IgcG90ZW50aWFsbHkgYW55dGhpbmcgZWxzZSlcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLWRpbWVuc2lvbigkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKSB7XG4gICRvcGVyYXRvci1pbmRleDogc3RyLWluZGV4KCRleHByZXNzaW9uLCAkb3BlcmF0b3IpO1xuICAkcGFyc2VkLWRpbWVuc2lvbjogc3RyLXNsaWNlKCRleHByZXNzaW9uLCAwLCAkb3BlcmF0b3ItaW5kZXggLSAxKTtcbiAgJGRpbWVuc2lvbjogJ3dpZHRoJztcblxuICBAaWYgc3RyLWxlbmd0aCgkcGFyc2VkLWRpbWVuc2lvbikgPiAwIHtcbiAgICAkZGltZW5zaW9uOiAkcGFyc2VkLWRpbWVuc2lvbjtcbiAgfVxuXG4gIEByZXR1cm4gJGRpbWVuc2lvbjtcbn1cblxuXG4vLy9cbi8vLyBHZXQgZGltZW5zaW9uIHByZWZpeCBiYXNlZCBvbiBhbiBvcGVyYXRvclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gYG1pbmAgb3IgYG1heGBcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpIHtcbiAgQHJldHVybiBpZihpbmRleCgoJzwnLCAnPD0nLCAn4omkJyksICRvcGVyYXRvciksICdtYXgnLCAnbWluJyk7XG59XG5cblxuLy8vXG4vLy8gR2V0IHZhbHVlIG9mIGFuIGV4cHJlc3Npb24sIGJhc2VkIG9uIGEgZm91bmQgb3BlcmF0b3Jcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCB2YWx1ZSBmcm9tXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yIGZyb20gYCRleHByZXNzaW9uYFxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIEEgbnVtZXJpYyB2YWx1ZVxuLy8vXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAkb3BlcmF0b3ItaW5kZXg6IHN0ci1pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHZhbHVlOiBzdHItc2xpY2UoJGV4cHJlc3Npb24sICRvcGVyYXRvci1pbmRleCArIHN0ci1sZW5ndGgoJG9wZXJhdG9yKSk7XG5cbiAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgJHZhbHVlOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJHZhbHVlKTtcbiAgfSBAZWxzZSB7XG4gICAgJHZhbHVlOiB0by1udW1iZXIoJHZhbHVlKTtcbiAgfVxuXG4gICRpbnRlcnZhbDogbWFwLWdldCgkdW5pdC1pbnRlcnZhbHMsIHVuaXQoJHZhbHVlKSk7XG5cbiAgQGlmIG5vdCAkaW50ZXJ2YWwge1xuICAgIC8vIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBpbmNsdWRlIGEgbWl4aW4gaW5zaWRlIGEgZnVuY3Rpb24sIHNvIHdlIGhhdmUgdG9cbiAgICAvLyByZWx5IG9uIHRoZSBgaW0tbG9nKC4uKWAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIGBsb2coLi4pYCBtaXhpbi4gQmVjYXVzZVxuICAgIC8vIGZ1bmN0aW9ucyBjYW5ub3QgYmUgY2FsbGVkIGFueXdoZXJlIGluIFNhc3MsIHdlIG5lZWQgdG8gaGFjayB0aGUgY2FsbCBpblxuICAgIC8vIGEgZHVtbXkgdmFyaWFibGUsIHN1Y2ggYXMgYCRfYC4gSWYgYW55Ym9keSBldmVyIHJhaXNlIGEgc2NvcGluZyBpc3N1ZSB3aXRoXG4gICAgLy8gU2FzcyAzLjMsIGNoYW5nZSB0aGlzIGxpbmUgaW4gYEBpZiBpbS1sb2coLi4pIHt9YCBpbnN0ZWFkLlxuICAgICRfOiBpbS1sb2coJ1Vua25vd24gdW5pdCBgI3t1bml0KCR2YWx1ZSl9YC4nKTtcbiAgfVxuXG4gIEBpZiAkb3BlcmF0b3IgPT0gJz4nIHtcbiAgICAkdmFsdWU6ICR2YWx1ZSArICRpbnRlcnZhbDtcbiAgfSBAZWxzZSBpZiAkb3BlcmF0b3IgPT0gJzwnIHtcbiAgICAkdmFsdWU6ICR2YWx1ZSAtICRpbnRlcnZhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuXG5cbi8vL1xuLy8vIFBhcnNlIGFuIGV4cHJlc3Npb24gdG8gcmV0dXJuIGEgdmFsaWQgbWVkaWEtcXVlcnkgZXhwcmVzc2lvblxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBwYXJzZVxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIFZhbGlkIG1lZGlhIHF1ZXJ5XG4vLy9cbkBmdW5jdGlvbiBwYXJzZS1leHByZXNzaW9uKCRleHByZXNzaW9uKSB7XG4gIC8vIElmIGl0IGlzIHBhcnQgb2YgJG1lZGlhLWV4cHJlc3Npb25zLCBpdCBoYXMgbm8gb3BlcmF0b3JcbiAgLy8gdGhlbiB0aGVyZSBpcyBubyBuZWVkIHRvIGdvIGFueSBmdXJ0aGVyLCBqdXN0IHJldHVybiB0aGUgdmFsdWVcbiAgQGlmIG1hcC1oYXMta2V5KCRtZWRpYS1leHByZXNzaW9ucywgJGV4cHJlc3Npb24pIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1lZGlhLWV4cHJlc3Npb25zLCAkZXhwcmVzc2lvbik7XG4gIH1cblxuICAkb3BlcmF0b3I6IGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRleHByZXNzaW9uKTtcbiAgJGRpbWVuc2lvbjogZ2V0LWV4cHJlc3Npb24tZGltZW5zaW9uKCRleHByZXNzaW9uLCAkb3BlcmF0b3IpO1xuICAkcHJlZml4OiBnZXQtZXhwcmVzc2lvbi1wcmVmaXgoJG9wZXJhdG9yKTtcbiAgJHZhbHVlOiBnZXQtZXhwcmVzc2lvbi12YWx1ZSgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcblxuICBAcmV0dXJuICcoI3skcHJlZml4fS0jeyRkaW1lbnNpb259OiAjeyR2YWx1ZX0pJztcbn1cblxuLy8vXG4vLy8gU2xpY2UgYCRsaXN0YCBiZXR3ZWVuIGAkc3RhcnRgIGFuZCBgJGVuZGAgaW5kZXhlc1xuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0IC0gTGlzdCB0byBzbGljZVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc3RhcnQgWzFdIC0gU3RhcnQgaW5kZXhcbi8vLyBAcGFyYW0ge051bWJlcn0gJGVuZCBbbGVuZ3RoKCRsaXN0KV0gLSBFbmQgaW5kZXhcbi8vL1xuLy8vIEByZXR1cm4ge0xpc3R9IFNsaWNlZCBsaXN0XG4vLy9cbkBmdW5jdGlvbiBzbGljZSgkbGlzdCwgJHN0YXJ0OiAxLCAkZW5kOiBsZW5ndGgoJGxpc3QpKSB7XG4gIEBpZiBsZW5ndGgoJGxpc3QpIDwgMSBvciAkc3RhcnQgPiAkZW5kIHtcbiAgICBAcmV0dXJuICgpO1xuICB9XG5cbiAgJHJlc3VsdDogKCk7XG5cbiAgQGZvciAkaSBmcm9tICRzdGFydCB0aHJvdWdoICRlbmQge1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCBudGgoJGxpc3QsICRpKSk7XG4gIH1cblxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbi8vLy9cbi8vLyBTdHJpbmcgdG8gbnVtYmVyIGNvbnZlcnRlclxuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vL1xuXG5cbi8vL1xuLy8vIENhc3RzIGEgc3RyaW5nIGludG8gYSBudW1iZXJcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBiZSBwYXJzZWRcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn1cbi8vL1xuQGZ1bmN0aW9uIHRvLW51bWJlcigkdmFsdWUpIHtcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkdmFsdWUpICE9ICdzdHJpbmcnIHtcbiAgICAkXzogaW0tbG9nKCdWYWx1ZSBmb3IgYHRvLW51bWJlcmAgc2hvdWxkIGJlIGEgbnVtYmVyIG9yIGEgc3RyaW5nLicpO1xuICB9XG5cbiAgJGZpcnN0LWNoYXJhY3Rlcjogc3RyLXNsaWNlKCR2YWx1ZSwgMSwgMSk7XG4gICRyZXN1bHQ6IDA7XG4gICRkaWdpdHM6IDA7XG4gICRtaW51czogKCRmaXJzdC1jaGFyYWN0ZXIgPT0gJy0nKTtcbiAgJG51bWJlcnM6ICgnMCc6IDAsICcxJzogMSwgJzInOiAyLCAnMyc6IDMsICc0JzogNCwgJzUnOiA1LCAnNic6IDYsICc3JzogNywgJzgnOiA4LCAnOSc6IDkpO1xuXG4gIC8vIFJlbW92ZSArLy0gc2lnbiBpZiBwcmVzZW50IGF0IGZpcnN0IGNoYXJhY3RlclxuICBAaWYgKCRmaXJzdC1jaGFyYWN0ZXIgPT0gJysnIG9yICRmaXJzdC1jaGFyYWN0ZXIgPT0gJy0nKSB7XG4gICAgJHZhbHVlOiBzdHItc2xpY2UoJHZhbHVlLCAyKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyLWxlbmd0aCgkdmFsdWUpIHtcbiAgICAkY2hhcmFjdGVyOiBzdHItc2xpY2UoJHZhbHVlLCAkaSwgJGkpO1xuXG4gICAgQGlmIG5vdCAoaW5kZXgobWFwLWtleXMoJG51bWJlcnMpLCAkY2hhcmFjdGVyKSBvciAkY2hhcmFjdGVyID09ICcuJykge1xuICAgICAgQHJldHVybiB0by1sZW5ndGgoaWYoJG1pbnVzLCAtJHJlc3VsdCwgJHJlc3VsdCksIHN0ci1zbGljZSgkdmFsdWUsICRpKSlcbiAgICB9XG5cbiAgICBAaWYgJGNoYXJhY3RlciA9PSAnLicge1xuICAgICAgJGRpZ2l0czogMTtcbiAgICB9IEBlbHNlIGlmICRkaWdpdHMgPT0gMCB7XG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICogMTAgKyBtYXAtZ2V0KCRudW1iZXJzLCAkY2hhcmFjdGVyKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRkaWdpdHM6ICRkaWdpdHMgKiAxMDtcbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKyBtYXAtZ2V0KCRudW1iZXJzLCAkY2hhcmFjdGVyKSAvICRkaWdpdHM7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBpZigkbWludXMsIC0kcmVzdWx0LCAkcmVzdWx0KTtcbn1cblxuXG4vLy9cbi8vLyBBZGQgYCR1bml0YCB0byBgJHZhbHVlYFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGFkZCB1bml0IHRvXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR1bml0IC0gU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB1bml0XG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gYCR2YWx1ZWAgZXhwcmVzc2VkIGluIGAkdW5pdGBcbi8vL1xuQGZ1bmN0aW9uIHRvLWxlbmd0aCgkdmFsdWUsICR1bml0KSB7XG4gICR1bml0czogKCdweCc6IDFweCwgJ2NtJzogMWNtLCAnbW0nOiAxbW0sICclJzogMSUsICdjaCc6IDFjaCwgJ3BjJzogMXBjLCAnaW4nOiAxaW4sICdlbSc6IDFlbSwgJ3JlbSc6IDFyZW0sICdwdCc6IDFwdCwgJ2V4JzogMWV4LCAndncnOiAxdncsICd2aCc6IDF2aCwgJ3ZtaW4nOiAxdm1pbiwgJ3ZtYXgnOiAxdm1heCk7XG5cbiAgQGlmIG5vdCBpbmRleChtYXAta2V5cygkdW5pdHMpLCAkdW5pdCkge1xuICAgICRfOiBpbS1sb2coJ0ludmFsaWQgdW5pdCBgI3skdW5pdH1gLicpO1xuICB9XG5cbiAgQHJldHVybiAkdmFsdWUgKiBtYXAtZ2V0KCR1bml0cywgJHVuaXQpO1xufVxuXG4vLy9cbi8vLyBUaGlzIG1peGluIGFpbXMgYXQgcmVkZWZpbmluZyB0aGUgY29uZmlndXJhdGlvbiBqdXN0IGZvciB0aGUgc2NvcGUgb2Zcbi8vLyB0aGUgY2FsbC4gSXQgaXMgaGVscGZ1bCB3aGVuIGhhdmluZyBhIGNvbXBvbmVudCBuZWVkaW5nIGFuIGV4dGVuZGVkXG4vLy8gY29uZmlndXJhdGlvbiBzdWNoIGFzIGN1c3RvbSBicmVha3BvaW50cyAocmVmZXJyZWQgdG8gYXMgdHdlYWtwb2ludHMpXG4vLy8gZm9yIGluc3RhbmNlLlxuLy8vXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJHR3ZWFrcG9pbnRzIFsoKV0gLSBNYXAgb2YgdHdlYWtwb2ludHMgdG8gYmUgbWVyZ2VkIHdpdGggYCRicmVha3BvaW50c2Bcbi8vLyBAcGFyYW0ge01hcH0gJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zIFsoKV0gLSBNYXAgb2YgdHdlYWtlZCBtZWRpYSBleHByZXNzaW9ucyB0byBiZSBtZXJnZWQgd2l0aCBgJG1lZGlhLWV4cHJlc3Npb25gXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRXh0ZW5kIHRoZSBnbG9iYWwgYnJlYWtwb2ludHMgd2l0aCBhIHR3ZWFrcG9pbnRcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgoJ2N1c3RvbSc6IDY3OHB4KSkge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJz5waG9uZScsICc8PWN1c3RvbScpIHtcbi8vLyAgICAgICAvLyAuLi5cbi8vLyAgICAgIH1cbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBFeHRlbmQgdGhlIGdsb2JhbCBtZWRpYSBleHByZXNzaW9ucyB3aXRoIGEgY3VzdG9tIG9uZVxuLy8vICBAaW5jbHVkZSBtZWRpYS1jb250ZXh0KCR0d2Vhay1tZWRpYS1leHByZXNzaW9uczogKCdhbGwnOiAnYWxsJykpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCdhbGwnLCAnPnBob25lJykge1xuLy8vICAgICAgIC8vIC4uLlxuLy8vICAgICAgfVxuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEV4dGVuZCBib3RoIGNvbmZpZ3VyYXRpb24gbWFwc1xuLy8vICBAaW5jbHVkZSBtZWRpYS1jb250ZXh0KCgnY3VzdG9tJzogNjc4cHgpLCAoJ2FsbCc6ICdhbGwnKSkge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJ2FsbCcsICc+cGhvbmUnLCAnPD1jdXN0b20nKSB7XG4vLy8gICAgICAgLy8gLi4uXG4vLy8gICAgICB9XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbkBtaXhpbiBtZWRpYS1jb250ZXh0KCR0d2Vha3BvaW50czogKCksICR0d2Vhay1tZWRpYS1leHByZXNzaW9uczogKCkpIHtcbiAgLy8gU2F2ZSBnbG9iYWwgY29uZmlndXJhdGlvblxuICAkZ2xvYmFsLWJyZWFrcG9pbnRzOiAkYnJlYWtwb2ludHM7XG4gICRnbG9iYWwtbWVkaWEtZXhwcmVzc2lvbnM6ICRtZWRpYS1leHByZXNzaW9ucztcblxuICAvLyBVcGRhdGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGJyZWFrcG9pbnRzOiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkdHdlYWtwb2ludHMpICFnbG9iYWw7XG4gICRtZWRpYS1leHByZXNzaW9uczogbWFwLW1lcmdlKCRtZWRpYS1leHByZXNzaW9ucywgJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zKSAhZ2xvYmFsO1xuXG4gIEBjb250ZW50O1xuXG4gIC8vIFJlc3RvcmUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGJyZWFrcG9pbnRzOiAkZ2xvYmFsLWJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICRtZWRpYS1leHByZXNzaW9uczogJGdsb2JhbC1tZWRpYS1leHByZXNzaW9ucyAhZ2xvYmFsO1xufVxuXG4vLy8vXG4vLy8gaW5jbHVkZS1tZWRpYSBwdWJsaWMgZXhwb3NlZCBBUElcbi8vLyBAYXV0aG9yIEVkdWFyZG8gQm91Y2FzXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLy9cblxuXG4vLy9cbi8vLyBHZW5lcmF0ZXMgYSBtZWRpYSBxdWVyeSBiYXNlZCBvbiBhIGxpc3Qgb2YgY29uZGl0aW9uc1xuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAgICRjb25kaXRpb25zICAtIE1lZGlhIHF1ZXJ5IGNvbmRpdGlvbnNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIGEgc2luZ2xlIHNldCBicmVha3BvaW50XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIHR3byBzZXQgYnJlYWtwb2ludHNcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz5waG9uZScsICc8PXRhYmxldCcpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggY3VzdG9tIHZhbHVlc1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj0zNThweCcsICc8ODUwcHgnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIHNldCBicmVha3BvaW50cyB3aXRoIGN1c3RvbSB2YWx1ZXNcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz5kZXNrdG9wJywgJzw9MTM1MHB4JykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBhIHN0YXRpYyBleHByZXNzaW9uXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCdyZXRpbmEyeCcpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIE1peGluZyBldmVyeXRoaW5nXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PTM1MHB4JywgJzx0YWJsZXQnLCAncmV0aW5hM3gnKSB7IH1cbi8vL1xuQG1peGluIG1lZGlhKCRjb25kaXRpb25zLi4uKSB7XG4gIEBpZiAoJGltLW1lZGlhLXN1cHBvcnQgYW5kIGxlbmd0aCgkY29uZGl0aW9ucykgPT0gMCkgb3JcbiAgICAgIChub3QgJGltLW1lZGlhLXN1cHBvcnQgYW5kIGltLWludGVyY2VwdHMtc3RhdGljLWJyZWFrcG9pbnQoJGNvbmRpdGlvbnMuLi4pKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2UgaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsZW5ndGgoJGNvbmRpdGlvbnMpID4gMCkge1xuICAgIEBtZWRpYSAje3VucXVvdGUocGFyc2UtZXhwcmVzc2lvbihudGgoJGNvbmRpdGlvbnMsIDEpKSl9IHtcbiAgICAgIC8vIFJlY3Vyc2l2ZSBjYWxsXG4gICAgICBAaW5jbHVkZSBtZWRpYShzbGljZSgkY29uZGl0aW9ucywgMikuLi4pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLHFCQUFxQjtBQU1yQiwwQkFBMEI7QUFFMUIsQUFBQSxJQUFJLENBQUM7RUFDSixNQUFNLEVBQUUsQ0FBQztFQUNULE9BQU8sRUFBRSxDQUFDO0NBT1Y7O0FBVEQsQUFJQyxJQUpHLEdBSUYsQ0FBQyxBQUFBLElBQUssQ0FBQSx1QkFBdUIsQ0FBQyxJQUFLLENBQUEsV0FBVyxDQUFDLElBQUssQ0FBQSxtQkFBbUIsQ0FBQyxJQUFLLENBQUEsbUJBQW1CLENBQUMsSUFBSyxDQUFBLElBQUksQUFBQSxlQUFlLENBQUMsSUFBSyxDQUFBLGdCQUFnQixDQUFDLElBQUssQ0FBQSxjQUFjLENBQUMsSUFBSyxDQUFBLGdDQUFnQyxFQUFFO0VBQzNNLFFBQVEsRUFBRSxRQUFRO0VBQ2xCLEdBQUcsRUFBRSxRQUFRO0VBQ2IsSUFBSSxFQUFF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 */
