/**
 * Foundation for Sites
 * Version 6.7.5
 * https://get.foundation
 * Licensed under MIT Open Source
 */
@-webkit-keyframes splide-loading {
  0% {
    -webkit-transform: rotate(0);
            transform: rotate(0); }
  to {
    -webkit-transform: rotate(1turn);
            transform: rotate(1turn); } }
@keyframes splide-loading {
  0% {
    -webkit-transform: rotate(0);
            transform: rotate(0); }
  to {
    -webkit-transform: rotate(1turn);
            transform: rotate(1turn); } }

.splide__track--draggable {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -ms-user-select: none;
  -moz-user-select: none;
       user-select: none; }

.splide__track--fade > .splide__list > .splide__slide {
  margin: 0 !important;
  opacity: 0;
  z-index: 0; }

.splide__track--fade > .splide__list > .splide__slide.is-active {
  opacity: 1;
  z-index: 1; }

.splide--rtl {
  direction: rtl; }

.splide__track--ttb > .splide__list {
  display: block; }

.splide__container {
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  position: relative; }

.splide__list {
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  display: -ms-flexbox;
  display: -webkit-box;
  display: flex;
  height: 100%;
  margin: 0 !important;
  padding: 0 !important; }

.splide.is-initialized:not(.is-active) .splide__list {
  display: block; }

.splide__pagination {
  -ms-flex-align: center;
  -webkit-box-align: center;
          align-items: center;
  display: -ms-flexbox;
  display: -webkit-box;
  display: flex;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  -ms-flex-pack: center;
  -webkit-box-pack: center;
          justify-content: center;
  margin: 0;
  pointer-events: none; }

.splide__pagination li {
  display: inline-block;
  line-height: 1;
  list-style-type: none;
  margin: 0;
  pointer-events: auto; }

.splide:not(.is-overflow) .splide__pagination {
  display: none; }

.splide__progress__bar {
  width: 0; }

.splide {
  position: relative;
  visibility: hidden; }

.splide.is-initialized, .splide.is-rendered {
  visibility: visible; }

.splide__slide {
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  -ms-flex-negative: 0;
  flex-shrink: 0;
  list-style-type: none !important;
  margin: 0;
  position: relative; }

.splide__slide img {
  vertical-align: bottom; }

.splide__spinner {
  -webkit-animation: splide-loading 1s linear infinite;
          animation: splide-loading 1s linear infinite;
  border: 2px solid #999;
  border-left-color: transparent;
  border-radius: 50%;
  bottom: 0;
  contain: strict;
  display: inline-block;
  height: 20px;
  left: 0;
  margin: auto;
  position: absolute;
  right: 0;
  top: 0;
  width: 20px; }

.splide__sr {
  clip: rect(0 0 0 0);
  border: 0;
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px; }

.splide__toggle.is-active .splide__toggle__play, .splide__toggle__pause {
  display: none; }

.splide__toggle.is-active .splide__toggle__pause {
  display: inline; }

.splide__track {
  overflow: hidden;
  position: relative;
  z-index: 0; }

.slider-arrows .slider-prev, .slider-arrows .splide__arrow--prev,
.slider-arrows .slider-next, .slider-arrows .splide__arrow--next,
.splide__arrows .slider-prev,
.splide__arrows .splide__arrow--prev,
.splide__arrows .slider-next,
.splide__arrows .splide__arrow--next {
  display: block;
  position: absolute;
  top: 50%;
  width: 20px;
  height: 20px;
  padding: 0;
  margin: 0;
  border: none;
  background: url("data:image/svg+xml,%3Csvg width='20px' height='20px' xmlns='http://www.w3.org/2000/svg' viewBox='7.38 0 17.25 32'%3E%3Cpath fill='%231A3137' d='M23.824 32l0.799-0.821c0 0-15.605-15.179-15.605-15.179l15.605-15.179-0.799-0.821-16.448 16 16.448 16z'/%3E%3C/svg%3E") center no-repeat;
  -webkit-transition: none;
  transition: none;
  cursor: pointer; }
  .slider-arrows .slider-prev[disabled], .slider-arrows .slider-prev.disabled, .slider-arrows .splide__arrow--prev[disabled], .slider-arrows .splide__arrow--prev.disabled,
  .slider-arrows .slider-next[disabled],
  .slider-arrows .slider-next.disabled, .slider-arrows .splide__arrow--next[disabled], .slider-arrows .splide__arrow--next.disabled,
  .splide__arrows .slider-prev[disabled],
  .splide__arrows .slider-prev.disabled,
  .splide__arrows .splide__arrow--prev[disabled],
  .splide__arrows .splide__arrow--prev.disabled,
  .splide__arrows .slider-next[disabled],
  .splide__arrows .slider-next.disabled,
  .splide__arrows .splide__arrow--next[disabled],
  .splide__arrows .splide__arrow--next.disabled {
    background-color: transparent !important;
    border: none !important;
    opacity: 1 !important;
    cursor: default !important; }
  @media screen and (min-width: 75em) {
    .slider-arrows .slider-prev, .slider-arrows .splide__arrow--prev,
    .slider-arrows .slider-next, .slider-arrows .splide__arrow--next,
    .splide__arrows .slider-prev,
    .splide__arrows .splide__arrow--prev,
    .splide__arrows .slider-next,
    .splide__arrows .splide__arrow--next {
      width: 24px;
      height: 24px;
      background: url("data:image/svg+xml,%3Csvg width='24px' height='24px' xmlns='http://www.w3.org/2000/svg' viewBox='7.38 0 17.25 32'%3E%3Cpath fill='%231A3137' d='M23.824 32l0.799-0.821c0 0-15.605-15.179-15.605-15.179l15.605-15.179-0.799-0.821-16.448 16 16.448 16z'/%3E%3C/svg%3E") center no-repeat; } }

.slider-arrows .slider-next, .slider-arrows .splide__arrow--next,
.splide__arrows .slider-next,
.splide__arrows .splide__arrow--next {
  -webkit-transform: rotate(180deg);
          transform: rotate(180deg);
  right: -24px; }
  @media screen and (min-width: 75em) {
    .slider-arrows .slider-next, .slider-arrows .splide__arrow--next,
    .splide__arrows .slider-next,
    .splide__arrows .splide__arrow--next {
      right: -40px; } }

.slider-arrows .slider-prev, .slider-arrows .splide__arrow--prev,
.splide__arrows .slider-prev,
.splide__arrows .splide__arrow--prev {
  left: -24px; }
  @media screen and (min-width: 75em) {
    .slider-arrows .slider-prev, .slider-arrows .splide__arrow--prev,
    .splide__arrows .slider-prev,
    .splide__arrows .splide__arrow--prev {
      left: -40px; } }

.slider-arrows .splide__arrow > svg,
.splide__arrows .splide__arrow > svg {
  display: none; }

.slider-item {
  text-decoration: none; }

.splide.is-initialized:not(.is-active) .splide__list {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }

/* Scrollbar */
.scrollbar {
  width: 100%;
  height: 1px;
  position: relative; }
  .scrollbar .handle {
    height: 5px;
    -webkit-transition: width 400ms ease;
    transition: width 400ms ease;
    position: absolute;
    top: -4px;
    cursor: pointer; }
    .scrollbar .handle .mousearea {
      width: 100%; }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm91bmRhdGlvbi5zY3NzIiwic3RhbmRhbG9uZS9ibG9ja3Mvc2xpZGVyLWNvcmUuY3NzIiwic3RhbmRhbG9uZS9ibG9ja3Mvc2xpZGVyLWNvcmUuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fYnJlYWtwb2ludC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztFQ0tFO0FDQ0Y7RUFBMEI7SUFBRyw0QkFBbUI7WUFBbkIsb0JBQW1CLEVBQUE7RUFBQztJQUFHLGdDQUF1QjtZQUF2Qix3QkFBdUIsRUFBQSxFQUFBO0FBQTNFO0VBQTBCO0lBQUcsNEJBQW1CO1lBQW5CLG9CQUFtQixFQUFBO0VBQUM7SUFBRyxnQ0FBdUI7WUFBdkIsd0JBQXVCLEVBQUEsRUFBQTs7QUFBRTtFQUEwQiwyQkFBMEI7RUFBQyx5QkFBd0I7RUFBQyxxQkFBb0I7RUFBQyxzQkFBZ0I7T0FBaEIsaUJBQWdCLEVBQUE7O0FBQUM7RUFBa0Qsb0JBQWtCO0VBQUMsVUFBUztFQUFDLFVBQVMsRUFBQTs7QUFBQztFQUE0RCxVQUFTO0VBQUMsVUFBUyxFQUFBOztBQUFDO0VBQWEsY0FBYSxFQUFBOztBQUFDO0VBQWtDLGNBQWEsRUFBQTs7QUFBQztFQUFtQiw4QkFBcUI7VUFBckIsc0JBQXFCO0VBQUMsa0JBQWlCLEVBQUE7O0FBQUM7RUFBYyxtQ0FBMEI7VUFBMUIsMkJBQTBCO0VBQUMsb0JBQW1CO0VBQUMsb0JBQVk7RUFBWixhQUFZO0VBQUMsWUFBVztFQUFDLG9CQUFrQjtFQUFDLHFCQUFtQixFQUFBOztBQUFDO0VBQXFELGNBQWEsRUFBQTs7QUFBQztFQUFvQixzQkFBcUI7RUFBQyx5QkFBa0I7VUFBbEIsbUJBQWtCO0VBQUMsb0JBQW1CO0VBQUMsb0JBQVk7RUFBWixhQUFZO0VBQUMsbUJBQWtCO0VBQUMsZUFBYztFQUFDLHFCQUFvQjtFQUFDLHdCQUFzQjtVQUF0Qix1QkFBc0I7RUFBQyxTQUFRO0VBQUMsb0JBQW1CLEVBQUE7O0FBQUM7RUFBdUIscUJBQW9CO0VBQUMsY0FBYTtFQUFDLHFCQUFvQjtFQUFDLFNBQVE7RUFBQyxvQkFBbUIsRUFBQTs7QUFBQztFQUE4QyxhQUFZLEVBQUE7O0FBQUM7RUFBdUIsUUFBTyxFQUFBOztBQUFDO0VBQVEsa0JBQWlCO0VBQUMsa0JBQWlCLEVBQUE7O0FBQUM7RUFBMkMsbUJBQWtCLEVBQUE7O0FBQUM7RUFBZSxtQ0FBMEI7VUFBMUIsMkJBQTBCO0VBQUMsOEJBQXFCO1VBQXJCLHNCQUFxQjtFQUFDLG9CQUFtQjtFQUFDLGNBQWE7RUFBQyxnQ0FBOEI7RUFBQyxTQUFRO0VBQUMsa0JBQWlCLEVBQUE7O0FBQUM7RUFBbUIsc0JBQXFCLEVBQUE7O0FBQUM7RUFBaUIsb0RBQTJDO1VBQTNDLDRDQUEyQztFQUFDLHNCQUFxQjtFQUFDLDhCQUE2QjtFQUFDLGtCQUFpQjtFQUFDLFNBQVE7RUFBQyxlQUFjO0VBQUMscUJBQW9CO0VBQUMsWUFBVztFQUFDLE9BQU07RUFBQyxZQUFXO0VBQUMsa0JBQWlCO0VBQUMsUUFBTztFQUFDLE1BQUs7RUFBQyxXQUFVLEVBQUE7O0FBQUM7RUFBWSxtQkFBa0I7RUFBQyxTQUFRO0VBQUMsV0FBVTtFQUFDLFlBQVc7RUFBQyxnQkFBZTtFQUFDLFVBQVM7RUFBQyxrQkFBaUI7RUFBQyxVQUFTLEVBQUE7O0FBQUM7RUFBdUUsYUFBWSxFQUFBOztBQUFDO0VBQWlELGVBQWMsRUFBQTs7QUFBQztFQUFlLGdCQUFlO0VBQUMsa0JBQWlCO0VBQUMsVUFBUyxFQUFBOztBQUUzNkQ7Ozs7OztFQUlRLGNBQWM7RUFDZCxrQkFBa0I7RUFDbEIsUUFBUTtFQUNSLFdBQVc7RUFDWCxZQUFZO0VBQ1osVUFBVTtFQUNWLFNBQVM7RUFDVCxZQUFZO0VBQ1osd1NBQWlGO0VBQ2pGLHdCQUFnQjtFQUFoQixnQkFBZ0I7RUFDaEIsZUFBZSxFQUFBO0VBZHZCOzs7Ozs7Ozs7OztJQWdCWSx3Q0FBd0M7SUFDeEMsdUJBQXVCO0lBQ3ZCLHFCQUFxQjtJQUNyQiwwQkFBMEIsRUFBQTtFQzZKOUI7SURoTFI7Ozs7OztNQXNCWSxXQUFXO01BQ1gsWUFBWTtNQUNaLHdTQUFpRixFQUFBLEVBRXhGOztBQTFCTDs7O0VBNEJRLGlDQUF5QjtVQUF6Qix5QkFBeUI7RUFDekIsWUFBWSxFQUFBO0VDbUpaO0lEaExSOzs7TUErQlksWUFBWSxFQUFBLEVBRW5COztBQWpDTDs7O0VBb0NRLFdBQVcsRUFBQTtFQzRJWDtJRGhMUjs7O01Bc0NZLFdBQVcsRUFBQSxFQUVsQjs7QUF4Q0w7O0VBMkNRLGFBQWEsRUFBQTs7QUFJckI7RUFDSSxxQkFBcUIsRUFBQTs7QUFHekI7RUFDSSxvQkFBYTtFQUFiLG9CQUFhO0VBQWIsYUFBYSxFQUFBOztBQUdqQixjQUFBO0FBQ0E7RUFDSSxXQUFXO0VBQ1gsV0FBVztFQUNYLGtCQUFrQixFQUFBO0VBSHRCO0lBTVEsV0FBVztJQUNYLG9DQUE0QjtJQUE1Qiw0QkFBNEI7SUFFNUIsa0JBQWtCO0lBQ2xCLFNBQVM7SUFFVCxlQUFlLEVBQUE7SUFadkI7TUFlWSxXQUFXLEVBQUEiLCJmaWxlIjoic3RhbmRhbG9uZS9ibG9ja3Mvc2xpZGVyLWNvcmUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3VuZGF0aW9uIGZvciBTaXRlc1xuICogVmVyc2lvbiA2LjcuNVxuICogaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG4gKi9cblxuLy8gLS0tIERlcGVuZGVuY2llcyAtLS1cbkBpbXBvcnQgJ3ZlbmRvci9ub3JtYWxpemUnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL21pc3NpbmctZGVwZW5kZW5jaWVzJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvaGVscGVycy90cnVlJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL2NvbnRhaW4nO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvcHVyZ2UnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvcmVtb3ZlJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3JlcGxhY2UnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvdG8tbGlzdCc7XG5cbi8vIC0tLSBTZXR0aW5ncyAtLS1cbi8vIGltcG9ydCB5b3VyIG93biBgc2V0dGluZ3NgIGhlcmUgb3Jcbi8vIGltcG9ydCBhbmQgbW9kaWZ5IHRoZSBkZWZhdWx0IHNldHRpbmdzIHRocm91Z2hcbi8vIEBpbXBvcnQgJ3NldHRpbmdzL3NldHRpbmdzJztcblxuLy8gLS0tIENvbXBvbmVudHMgLS0tXG4vLyBVdGlsaXRpZXNcbkBpbXBvcnQgJ3V0aWwvdXRpbCc7XG4vLyBHbG9iYWwgc3R5bGVzXG5AaW1wb3J0ICdnbG9iYWwnO1xuQGltcG9ydCAnZm9ybXMvZm9ybXMnO1xuQGltcG9ydCAndHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcblxuLy8gR3JpZHNcbkBpbXBvcnQgJ2dyaWQvZ3JpZCc7XG5AaW1wb3J0ICd4eS1ncmlkL3h5LWdyaWQnO1xuLy8gR2VuZXJpYyBjb21wb25lbnRzXG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbi1ncm91cCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Nsb3NlLWJ1dHRvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2xhYmVsJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcHJvZ3Jlc3MtYmFyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc2xpZGVyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc3dpdGNoJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGFibGUnO1xuLy8gQmFzaWMgY29tcG9uZW50c1xuQGltcG9ydCAnY29tcG9uZW50cy9iYWRnZSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2JyZWFkY3J1bWJzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY2FsbG91dCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2NhcmQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9kcm9wZG93bic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3BhZ2luYXRpb24nO1xuQGltcG9ydCAnY29tcG9uZW50cy90b29sdGlwJztcblxuLy8gQ29udGFpbmVyc1xuQGltcG9ydCAnY29tcG9uZW50cy9hY2NvcmRpb24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9tZWRpYS1vYmplY3QnO1xuQGltcG9ydCAnY29tcG9uZW50cy9vcmJpdCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Jlc3BvbnNpdmUtZW1iZWQnO1xuQGltcG9ydCAnY29tcG9uZW50cy90YWJzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGh1bWJuYWlsJztcbi8vIE1lbnUtYmFzZWQgY29udGFpbmVyc1xuQGltcG9ydCAnY29tcG9uZW50cy9tZW51JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWVudS1pY29uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYWNjb3JkaW9uLW1lbnUnO1xuQGltcG9ydCAnY29tcG9uZW50cy9kcmlsbGRvd24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9kcm9wZG93bi1tZW51JztcblxuLy8gTGF5b3V0IGNvbXBvbmVudHNcbkBpbXBvcnQgJ2NvbXBvbmVudHMvb2ZmLWNhbnZhcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3JldmVhbCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3N0aWNreSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RpdGxlLWJhcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RvcC1iYXInO1xuXG4vLyBIZWxwZXJzXG5AaW1wb3J0ICdjb21wb25lbnRzL2Zsb2F0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZmxleCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Zpc2liaWxpdHknO1xuQGltcG9ydCAncHJvdG90eXBlL3Byb3RvdHlwZSc7XG5cblxuQG1peGluIGZvdW5kYXRpb24tZXZlcnl0aGluZyhcbiAgJGZsZXg6IHRydWUsXG4gICRwcm90b3R5cGU6IGZhbHNlLFxuICAkeHktZ3JpZDogJHh5LWdyaWRcbikge1xuICBAaWYgJGZsZXgge1xuICAgICRnbG9iYWwtZmxleGJveDogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgQGlmICR4eS1ncmlkIHtcbiAgICAkeHktZ3JpZDogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgLy8gR2xvYmFsIHN0eWxlc1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWdsb2JhbC1zdHlsZXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdHlwb2dyYXBoeTtcblxuICAvLyBHcmlkc1xuICBAaWYgbm90ICRmbGV4IHtcbiAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLWdyaWQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkeHktZ3JpZCB7XG4gICAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLXh5LWdyaWQtY2xhc3NlcztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LWdyaWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gR2VuZXJpYyBjb21wb25lbnRzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnV0dG9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJ1dHRvbi1ncm91cDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1jbG9zZS1idXR0b247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbGFiZWw7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvZ3Jlc3MtYmFyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXNsaWRlcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zd2l0Y2g7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGFibGU7XG4gIC8vIEJhc2ljIGNvbXBvbmVudHNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1iYWRnZTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1icmVhZGNydW1icztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1jYWxsb3V0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWNhcmQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJvcGRvd247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcGFnaW5hdGlvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10b29sdGlwO1xuXG4gIC8vIENvbnRhaW5lcnNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1hY2NvcmRpb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbWVkaWEtb2JqZWN0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW9yYml0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXJlc3BvbnNpdmUtZW1iZWQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGFicztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10aHVtYm5haWw7XG4gIC8vIE1lbnUtYmFzZWQgY29udGFpbmVyc1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbWVudS1pY29uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWFjY29yZGlvbi1tZW51O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyaWxsZG93bi1tZW51O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyb3Bkb3duLW1lbnU7XG5cbiAgLy8gTGF5b3V0IGNvbXBvbmVudHNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1vZmYtY2FudmFzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXJldmVhbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zdGlja3k7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGl0bGUtYmFyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRvcC1iYXI7XG5cbiAgLy8gSGVscGVyc1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZsb2F0LWNsYXNzZXM7XG4gIEBpZiAkZmxleCB7IEBpbmNsdWRlIGZvdW5kYXRpb24tZmxleC1jbGFzc2VzOyB9XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdmlzaWJpbGl0eS1jbGFzc2VzO1xuICBAaWYgJHByb3RvdHlwZSB7IEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWNsYXNzZXM7IH1cbn1cbiIsIi8qKlxuICogRm91bmRhdGlvbiBmb3IgU2l0ZXNcbiAqIFZlcnNpb24gNi43LjVcbiAqIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuICovXG5Aa2V5ZnJhbWVzIHNwbGlkZS1sb2FkaW5nIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDApOyB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxdHVybik7IH0gfVxuXG4uc3BsaWRlX190cmFjay0tZHJhZ2dhYmxlIHtcbiAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lOyB9XG5cbi5zcGxpZGVfX3RyYWNrLS1mYWRlID4gLnNwbGlkZV9fbGlzdCA+IC5zcGxpZGVfX3NsaWRlIHtcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IDA7IH1cblxuLnNwbGlkZV9fdHJhY2stLWZhZGUgPiAuc3BsaWRlX19saXN0ID4gLnNwbGlkZV9fc2xpZGUuaXMtYWN0aXZlIHtcbiAgb3BhY2l0eTogMTtcbiAgei1pbmRleDogMTsgfVxuXG4uc3BsaWRlLS1ydGwge1xuICBkaXJlY3Rpb246IHJ0bDsgfVxuXG4uc3BsaWRlX190cmFjay0tdHRiID4gLnNwbGlkZV9fbGlzdCB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi5zcGxpZGVfX2NvbnRhaW5lciB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuXG4uc3BsaWRlX19saXN0IHtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50OyB9XG5cbi5zcGxpZGUuaXMtaW5pdGlhbGl6ZWQ6bm90KC5pcy1hY3RpdmUpIC5zcGxpZGVfX2xpc3Qge1xuICBkaXNwbGF5OiBibG9jazsgfVxuXG4uc3BsaWRlX19wYWdpbmF0aW9uIHtcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC1tcy1mbGV4LXdyYXA6IHdyYXA7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWFyZ2luOiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxuXG4uc3BsaWRlX19wYWdpbmF0aW9uIGxpIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvOyB9XG5cbi5zcGxpZGU6bm90KC5pcy1vdmVyZmxvdykgLnNwbGlkZV9fcGFnaW5hdGlvbiB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLnNwbGlkZV9fcHJvZ3Jlc3NfX2JhciB7XG4gIHdpZHRoOiAwOyB9XG5cbi5zcGxpZGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuXG4uc3BsaWRlLmlzLWluaXRpYWxpemVkLCAuc3BsaWRlLmlzLXJlbmRlcmVkIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTsgfVxuXG4uc3BsaWRlX19zbGlkZSB7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLW1zLWZsZXgtbmVnYXRpdmU6IDA7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmUgIWltcG9ydGFudDtcbiAgbWFyZ2luOiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cblxuLnNwbGlkZV9fc2xpZGUgaW1nIHtcbiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsgfVxuXG4uc3BsaWRlX19zcGlubmVyIHtcbiAgYW5pbWF0aW9uOiBzcGxpZGUtbG9hZGluZyAxcyBsaW5lYXIgaW5maW5pdGU7XG4gIGJvcmRlcjogMnB4IHNvbGlkICM5OTk7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3R0b206IDA7XG4gIGNvbnRhaW46IHN0cmljdDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDIwcHg7XG4gIGxlZnQ6IDA7XG4gIG1hcmdpbjogYXV0bztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgdG9wOiAwO1xuICB3aWR0aDogMjBweDsgfVxuXG4uc3BsaWRlX19zciB7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGJvcmRlcjogMDtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4OyB9XG5cbi5zcGxpZGVfX3RvZ2dsZS5pcy1hY3RpdmUgLnNwbGlkZV9fdG9nZ2xlX19wbGF5LCAuc3BsaWRlX190b2dnbGVfX3BhdXNlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4uc3BsaWRlX190b2dnbGUuaXMtYWN0aXZlIC5zcGxpZGVfX3RvZ2dsZV9fcGF1c2Uge1xuICBkaXNwbGF5OiBpbmxpbmU7IH1cblxuLnNwbGlkZV9fdHJhY2sge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDA7IH1cblxuLnNsaWRlci1hcnJvd3MgLnNsaWRlci1wcmV2LCAuc2xpZGVyLWFycm93cyAuc3BsaWRlX19hcnJvdy0tcHJldixcbi5zbGlkZXItYXJyb3dzIC5zbGlkZXItbmV4dCwgLnNsaWRlci1hcnJvd3MgLnNwbGlkZV9fYXJyb3ctLW5leHQsXG4uc3BsaWRlX19hcnJvd3MgLnNsaWRlci1wcmV2LFxuLnNwbGlkZV9fYXJyb3dzIC5zcGxpZGVfX2Fycm93LS1wcmV2LFxuLnNwbGlkZV9fYXJyb3dzIC5zbGlkZXItbmV4dCxcbi5zcGxpZGVfX2Fycm93cyAuc3BsaWRlX19hcnJvdy0tbmV4dCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZDogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB3aWR0aD0nMjBweCcgaGVpZ2h0PScyMHB4JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzcuMzggMCAxNy4yNSAzMiclM0UlM0NwYXRoIGZpbGw9JyUyMzFBMzEzNycgZD0nTTIzLjgyNCAzMmwwLjc5OS0wLjgyMWMwIDAtMTUuNjA1LTE1LjE3OS0xNS42MDUtMTUuMTc5bDE1LjYwNS0xNS4xNzktMC43OTktMC44MjEtMTYuNDQ4IDE2IDE2LjQ0OCAxNnonLyUzRSUzQy9zdmclM0VcIikgY2VudGVyIG5vLXJlcGVhdDtcbiAgdHJhbnNpdGlvbjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG4gIC5zbGlkZXItYXJyb3dzIC5zbGlkZXItcHJldltkaXNhYmxlZF0sIC5zbGlkZXItYXJyb3dzIC5zbGlkZXItcHJldi5kaXNhYmxlZCwgLnNsaWRlci1hcnJvd3MgLnNwbGlkZV9fYXJyb3ctLXByZXZbZGlzYWJsZWRdLCAuc2xpZGVyLWFycm93cyAuc3BsaWRlX19hcnJvdy0tcHJldi5kaXNhYmxlZCxcbiAgLnNsaWRlci1hcnJvd3MgLnNsaWRlci1uZXh0W2Rpc2FibGVkXSxcbiAgLnNsaWRlci1hcnJvd3MgLnNsaWRlci1uZXh0LmRpc2FibGVkLCAuc2xpZGVyLWFycm93cyAuc3BsaWRlX19hcnJvdy0tbmV4dFtkaXNhYmxlZF0sIC5zbGlkZXItYXJyb3dzIC5zcGxpZGVfX2Fycm93LS1uZXh0LmRpc2FibGVkLFxuICAuc3BsaWRlX19hcnJvd3MgLnNsaWRlci1wcmV2W2Rpc2FibGVkXSxcbiAgLnNwbGlkZV9fYXJyb3dzIC5zbGlkZXItcHJldi5kaXNhYmxlZCxcbiAgLnNwbGlkZV9fYXJyb3dzIC5zcGxpZGVfX2Fycm93LS1wcmV2W2Rpc2FibGVkXSxcbiAgLnNwbGlkZV9fYXJyb3dzIC5zcGxpZGVfX2Fycm93LS1wcmV2LmRpc2FibGVkLFxuICAuc3BsaWRlX19hcnJvd3MgLnNsaWRlci1uZXh0W2Rpc2FibGVkXSxcbiAgLnNwbGlkZV9fYXJyb3dzIC5zbGlkZXItbmV4dC5kaXNhYmxlZCxcbiAgLnNwbGlkZV9fYXJyb3dzIC5zcGxpZGVfX2Fycm93LS1uZXh0W2Rpc2FibGVkXSxcbiAgLnNwbGlkZV9fYXJyb3dzIC5zcGxpZGVfX2Fycm93LS1uZXh0LmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICBjdXJzb3I6IGRlZmF1bHQgIWltcG9ydGFudDsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NWVtKSB7XG4gICAgLnNsaWRlci1hcnJvd3MgLnNsaWRlci1wcmV2LCAuc2xpZGVyLWFycm93cyAuc3BsaWRlX19hcnJvdy0tcHJldixcbiAgICAuc2xpZGVyLWFycm93cyAuc2xpZGVyLW5leHQsIC5zbGlkZXItYXJyb3dzIC5zcGxpZGVfX2Fycm93LS1uZXh0LFxuICAgIC5zcGxpZGVfX2Fycm93cyAuc2xpZGVyLXByZXYsXG4gICAgLnNwbGlkZV9fYXJyb3dzIC5zcGxpZGVfX2Fycm93LS1wcmV2LFxuICAgIC5zcGxpZGVfX2Fycm93cyAuc2xpZGVyLW5leHQsXG4gICAgLnNwbGlkZV9fYXJyb3dzIC5zcGxpZGVfX2Fycm93LS1uZXh0IHtcbiAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgYmFja2dyb3VuZDogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB3aWR0aD0nMjRweCcgaGVpZ2h0PScyNHB4JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzcuMzggMCAxNy4yNSAzMiclM0UlM0NwYXRoIGZpbGw9JyUyMzFBMzEzNycgZD0nTTIzLjgyNCAzMmwwLjc5OS0wLjgyMWMwIDAtMTUuNjA1LTE1LjE3OS0xNS42MDUtMTUuMTc5bDE1LjYwNS0xNS4xNzktMC43OTktMC44MjEtMTYuNDQ4IDE2IDE2LjQ0OCAxNnonLyUzRSUzQy9zdmclM0VcIikgY2VudGVyIG5vLXJlcGVhdDsgfSB9XG5cbi5zbGlkZXItYXJyb3dzIC5zbGlkZXItbmV4dCwgLnNsaWRlci1hcnJvd3MgLnNwbGlkZV9fYXJyb3ctLW5leHQsXG4uc3BsaWRlX19hcnJvd3MgLnNsaWRlci1uZXh0LFxuLnNwbGlkZV9fYXJyb3dzIC5zcGxpZGVfX2Fycm93LS1uZXh0IHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgcmlnaHQ6IC0yNHB4OyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc1ZW0pIHtcbiAgICAuc2xpZGVyLWFycm93cyAuc2xpZGVyLW5leHQsIC5zbGlkZXItYXJyb3dzIC5zcGxpZGVfX2Fycm93LS1uZXh0LFxuICAgIC5zcGxpZGVfX2Fycm93cyAuc2xpZGVyLW5leHQsXG4gICAgLnNwbGlkZV9fYXJyb3dzIC5zcGxpZGVfX2Fycm93LS1uZXh0IHtcbiAgICAgIHJpZ2h0OiAtNDBweDsgfSB9XG5cbi5zbGlkZXItYXJyb3dzIC5zbGlkZXItcHJldiwgLnNsaWRlci1hcnJvd3MgLnNwbGlkZV9fYXJyb3ctLXByZXYsXG4uc3BsaWRlX19hcnJvd3MgLnNsaWRlci1wcmV2LFxuLnNwbGlkZV9fYXJyb3dzIC5zcGxpZGVfX2Fycm93LS1wcmV2IHtcbiAgbGVmdDogLTI0cHg7IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzVlbSkge1xuICAgIC5zbGlkZXItYXJyb3dzIC5zbGlkZXItcHJldiwgLnNsaWRlci1hcnJvd3MgLnNwbGlkZV9fYXJyb3ctLXByZXYsXG4gICAgLnNwbGlkZV9fYXJyb3dzIC5zbGlkZXItcHJldixcbiAgICAuc3BsaWRlX19hcnJvd3MgLnNwbGlkZV9fYXJyb3ctLXByZXYge1xuICAgICAgbGVmdDogLTQwcHg7IH0gfVxuXG4uc2xpZGVyLWFycm93cyAuc3BsaWRlX19hcnJvdyA+IHN2Zyxcbi5zcGxpZGVfX2Fycm93cyAuc3BsaWRlX19hcnJvdyA+IHN2ZyB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLnNsaWRlci1pdGVtIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG5cbi5zcGxpZGUuaXMtaW5pdGlhbGl6ZWQ6bm90KC5pcy1hY3RpdmUpIC5zcGxpZGVfX2xpc3Qge1xuICBkaXNwbGF5OiBmbGV4OyB9XG5cbi8qIFNjcm9sbGJhciAqL1xuLnNjcm9sbGJhciB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDFweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gIC5zY3JvbGxiYXIgLmhhbmRsZSB7XG4gICAgaGVpZ2h0OiA1cHg7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggNDAwbXMgZWFzZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtNHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjsgfVxuICAgIC5zY3JvbGxiYXIgLmhhbmRsZSAubW91c2VhcmVhIHtcbiAgICAgIHdpZHRoOiAxMDAlOyB9XG4iLCJAY2hhcnNldCBcInV0Zi04XCI7XG5AaW1wb3J0IFwiLi4vLi4vc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCIuLi8uLi9taXhpbnNcIjtcbkBpbXBvcnQgXCIuLi8uLi9mdW5jdGlvbnNcIjtcbkBpbXBvcnQgXCJmb3VuZGF0aW9uXCI7XG4vLyBTcGxpZGVqcyBjb3JlXG5Aa2V5ZnJhbWVzIHNwbGlkZS1sb2FkaW5nezAle3RyYW5zZm9ybTpyb3RhdGUoMCl9dG97dHJhbnNmb3JtOnJvdGF0ZSgxdHVybil9fS5zcGxpZGVfX3RyYWNrLS1kcmFnZ2FibGV7LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LnNwbGlkZV9fdHJhY2stLWZhZGU+LnNwbGlkZV9fbGlzdD4uc3BsaWRlX19zbGlkZXttYXJnaW46MCFpbXBvcnRhbnQ7b3BhY2l0eTowO3otaW5kZXg6MH0uc3BsaWRlX190cmFjay0tZmFkZT4uc3BsaWRlX19saXN0Pi5zcGxpZGVfX3NsaWRlLmlzLWFjdGl2ZXtvcGFjaXR5OjE7ei1pbmRleDoxfS5zcGxpZGUtLXJ0bHtkaXJlY3Rpb246cnRsfS5zcGxpZGVfX3RyYWNrLS10dGI+LnNwbGlkZV9fbGlzdHtkaXNwbGF5OmJsb2NrfS5zcGxpZGVfX2NvbnRhaW5lcntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmV9LnNwbGlkZV9fbGlzdHtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJTttYXJnaW46MCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudH0uc3BsaWRlLmlzLWluaXRpYWxpemVkOm5vdCguaXMtYWN0aXZlKSAuc3BsaWRlX19saXN0e2Rpc3BsYXk6YmxvY2t9LnNwbGlkZV9fcGFnaW5hdGlvbnstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy1tcy1mbGV4LXdyYXA6d3JhcDtmbGV4LXdyYXA6d3JhcDstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbjowO3BvaW50ZXItZXZlbnRzOm5vbmV9LnNwbGlkZV9fcGFnaW5hdGlvbiBsaXtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoxO2xpc3Qtc3R5bGUtdHlwZTpub25lO21hcmdpbjowO3BvaW50ZXItZXZlbnRzOmF1dG99LnNwbGlkZTpub3QoLmlzLW92ZXJmbG93KSAuc3BsaWRlX19wYWdpbmF0aW9ue2Rpc3BsYXk6bm9uZX0uc3BsaWRlX19wcm9ncmVzc19fYmFye3dpZHRoOjB9LnNwbGlkZXtwb3NpdGlvbjpyZWxhdGl2ZTt2aXNpYmlsaXR5OmhpZGRlbn0uc3BsaWRlLmlzLWluaXRpYWxpemVkLC5zcGxpZGUuaXMtcmVuZGVyZWR7dmlzaWJpbGl0eTp2aXNpYmxlfS5zcGxpZGVfX3NsaWRle2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JveC1zaXppbmc6Ym9yZGVyLWJveDstbXMtZmxleC1uZWdhdGl2ZTowO2ZsZXgtc2hyaW5rOjA7bGlzdC1zdHlsZS10eXBlOm5vbmUhaW1wb3J0YW50O21hcmdpbjowO3Bvc2l0aW9uOnJlbGF0aXZlfS5zcGxpZGVfX3NsaWRlIGltZ3t2ZXJ0aWNhbC1hbGlnbjpib3R0b219LnNwbGlkZV9fc3Bpbm5lcnthbmltYXRpb246c3BsaWRlLWxvYWRpbmcgMXMgbGluZWFyIGluZmluaXRlO2JvcmRlcjoycHggc29saWQgIzk5OTtib3JkZXItbGVmdC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjUwJTtib3R0b206MDtjb250YWluOnN0cmljdDtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MjBweDtsZWZ0OjA7bWFyZ2luOmF1dG87cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDt3aWR0aDoyMHB4fS5zcGxpZGVfX3Nye2NsaXA6cmVjdCgwIDAgMCAwKTtib3JkZXI6MDtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4fS5zcGxpZGVfX3RvZ2dsZS5pcy1hY3RpdmUgLnNwbGlkZV9fdG9nZ2xlX19wbGF5LC5zcGxpZGVfX3RvZ2dsZV9fcGF1c2V7ZGlzcGxheTpub25lfS5zcGxpZGVfX3RvZ2dsZS5pcy1hY3RpdmUgLnNwbGlkZV9fdG9nZ2xlX19wYXVzZXtkaXNwbGF5OmlubGluZX0uc3BsaWRlX190cmFja3tvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDowfVxuLy8gU2xpZGVyIGFycm93c1xuLnNsaWRlci1hcnJvd3MsXG4uc3BsaWRlX19hcnJvd3Mge1xuICAgIC5zbGlkZXItcHJldiwgLnNwbGlkZV9fYXJyb3ctLXByZXYsXG4gICAgLnNsaWRlci1uZXh0LCAuc3BsaWRlX19hcnJvdy0tbmV4dCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKHN2Zy1pbWFnZSgnY2FyZXQtbGlnaHQtbGVmdCcsICRncmF5LWRhcmssIDIwcHgpKSBjZW50ZXIgbm8tcmVwZWF0O1xuICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICZbZGlzYWJsZWRdLCAmLmRpc2FibGVkIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoeGxhcmdlKXtcbiAgICAgICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdXJsKHN2Zy1pbWFnZSgnY2FyZXQtbGlnaHQtbGVmdCcsICRncmF5LWRhcmssIDI0cHgpKSBjZW50ZXIgbm8tcmVwZWF0O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5zbGlkZXItbmV4dCwgLnNwbGlkZV9fYXJyb3ctLW5leHQge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgICByaWdodDogLTI0cHg7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoeGxhcmdlKSB7XG4gICAgICAgICAgICByaWdodDogLTQwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2xpZGVyLXByZXYsIC5zcGxpZGVfX2Fycm93LS1wcmV2IHtcbiAgICAgICAgbGVmdDogLTI0cHg7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoeGxhcmdlKXtcbiAgICAgICAgICAgIGxlZnQ6IC00MHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNwbGlkZV9fYXJyb3cgPiBzdmcge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLnNsaWRlci1pdGVtIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5zcGxpZGUuaXMtaW5pdGlhbGl6ZWQ6bm90KC5pcy1hY3RpdmUpIC5zcGxpZGVfX2xpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG59XG5cbi8qIFNjcm9sbGJhciAqL1xuLnNjcm9sbGJhciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLmhhbmRsZSB7XG4gICAgICAgIGhlaWdodDogNXB4O1xuICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCA0MDBtcyBlYXNlO1xuXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtNHB4O1xuXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAubW91c2VhcmVhIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxufSIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBicmVha3BvaW50c1xuLy8vL1xuXG4vLy8gUGF0Y2ggdG8gZml4IGlzc3VlICMxMjA4MFxuJC16Zi1zaXplOiBudWxsO1xuXG4vLy8gQSBsaXN0IG9mIG5hbWVkIGJyZWFrcG9pbnRzLiBZb3UgY2FuIHVzZSB0aGVzZSB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBxdWlja2x5IGNyZWF0ZSBtZWRpYSBxdWVyaWVzLlxuLy8vIEB0eXBlIE1hcFxuJGJyZWFrcG9pbnRzOiAoXG4gIFwic21hbGxcIjogMCxcbiAgXCJtZWRpdW1cIjogNjQwcHgsXG4gIFwibGFyZ2VcIjogMTAyNHB4LFxuICBcInhsYXJnZVwiOiAxMjAwcHgsXG4gIFwieHhsYXJnZVwiOiAxNDQwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gQSBsaXN0IG9mIG5hbWVkIEhpRFBJIGJyZWFrcG9pbnRzLiBZb3UgY2FuIHVzZSB0aGVzZSB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBxdWlja2x5IGNyZWF0ZSBtZWRpYSBxdWVyaWVzIGZvciByZXNvbHV0aW9ucy5cbi8vLyBWYWx1ZXMgbXVzdCByZXByZXNlbnQgdGhlIGRldmljZSBwaXhlbHMgLyB3ZWIgcGl4ZWxzIHJhdGlvbiBhbmQgYmUgdW5pdGxlc3Mgb3IgaW4gRFBQWC5cbi8vLyBAdHlwZSBNYXBcbiRicmVha3BvaW50cy1oaWRwaTogKFxuICBcImhpZHBpLTFcIjogMSxcbiAgXCJoaWRwaS0xLTVcIjogMS41LFxuICBcImhpZHBpLTJcIjogMixcbiAgXCJyZXRpbmFcIjogMixcbiAgXCJoaWRwaS0zXCI6IDNcbikgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbGFyZ2VzdCBuYW1lZCBicmVha3BvaW50IGluIHdoaWNoIHRvIGluY2x1ZGUgcHJpbnQgYXMgYSBtZWRpYSB0eXBlXG4vLy8gQHR5cGUgS2V5d29yZFxuJHByaW50LWJyZWFrcG9pbnQ6IGxhcmdlICFkZWZhdWx0O1xuXG4kLXpmLXplcm8tYnJlYWtwb2ludDogc21hbGwgIWRlZmF1bHQ7XG5cbiQtemYtYnJlYWtwb2ludHMta2V5czogbWFwLXRvLWxpc3QoJGJyZWFrcG9pbnRzLCAna2V5cycpO1xuXG5AaWYgbnRoKG1hcC12YWx1ZXMoJGJyZWFrcG9pbnRzKSwgMSkgIT0gMCB7XG4gIEBlcnJvciAnVGhlIGZpcnN0IGtleSBpbiB0aGUgJGJyZWFrcG9pbnRzIG1hcCBtdXN0IGhhdmUgYSB2YWx1ZSBvZiBcIjBcIi4nO1xufVxuQGVsc2Uge1xuICAkLXpmLXplcm8tYnJlYWtwb2ludDogbnRoKG1hcC1rZXlzKCRicmVha3BvaW50cyksIDEpO1xufVxuXG4vLy8gQWxsIG9mIHRoZSBuYW1lcyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBvdXRwdXQgYXMgY2xhc3NlcyBpbiB5b3VyIENTUywgbGlrZSBgLnNtYWxsLTEyYCwgYC5tZWRpdW0tNmAsIGFuZCBzbyBvbi4gRWFjaCB2YWx1ZSBpbiB0aGlzIGxpc3QgbXVzdCBhbHNvIGJlIGluIHRoZSBgJGJyZWFrcG9pbnRzYCBtYXAuXG4vLy8gQHR5cGUgTGlzdFxuJGJyZWFrcG9pbnQtY2xhc3NlczogKHNtYWxsIG1lZGl1bSBsYXJnZSkgIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgYSBtZWRpYSBxdWVyeSBzdHJpbmcgbWF0Y2hpbmcgdGhlIGlucHV0IHZhbHVlLiBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHNlZSB3aGF0IHRoZSBwb3NzaWJsZSBpbnB1dHMgYXJlLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbCBbc21hbGxdIC0gQnJlYWtwb2ludCBuYW1lLCBvciBweCwgcmVtLCBvciBlbSB2YWx1ZSB0byBwcm9jZXNzLlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHZhbDogJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcbiAgLy8gV2ViIHN0YW5kYXJkIFBpeGVscyBwZXIgaW5jaC4gKDFkZHB4IC8gJHN0ZC13ZWItZHBpKSA9IDFkcGlcbiAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdmFsdWVzLTMvI2Fic29sdXRlLWxlbmd0aHNcbiAgJHN0ZC13ZWItZHBpOiA5NjtcblxuICAvLyBTaXplIG9yIGtleXdvcmRcbiAgJGJwOiBudGgoJHZhbCwgMSk7XG4gIC8vIFZhbHVlIG9mIHRoZSBmb2xsb3dpbmcgYnJlYWtwb2ludFxuICAkYnAtbmV4dDogbnVsbDtcbiAgLy8gVmFsdWUgZm9yIG1heC13aWR0aCBtZWRpYSBxdWVyaWVzXG4gICRicC1taW46IG51bGw7XG4gIC8vIFZhbHVlIGZvciBtaW4td2lkdGggbWVkaWEgcXVlcmllc1xuICAkYnAtbWF4OiBudWxsO1xuICAvLyBEaXJlY3Rpb24gb2YgbWVkaWEgcXVlcnkgKHVwLCBkb3duLCBvciBvbmx5KVxuICAkZGlyOiBpZihsZW5ndGgoJHZhbCkgPiAxLCBudGgoJHZhbCwgMiksIHVwKTtcbiAgLy8gSWYgbmFtZWQsIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnRcbiAgJG5hbWU6IG51bGw7XG4gIC8vIElmIHRoZSBicmVha3BvaW50IGlzIGEgSGlEUEkgYnJlYWtwb2ludFxuICAkaGlkcGk6IGZhbHNlO1xuXG4gIC8vIE9yaWVudGF0aW9uIG1lZGlhIHF1ZXJpZXMgaGF2ZSBhIHVuaXF1ZSBzeW50YXhcbiAgQGlmICRicCA9PSAnbGFuZHNjYXBlJyBvciAkYnAgPT0gJ3BvcnRyYWl0JyB7XG4gICAgQHJldHVybiAnKG9yaWVudGF0aW9uOiAjeyRicH0pJztcbiAgfVxuXG4gIC8vIElmIGEgYnJlYWtwb2ludCBuYW1lIGlzIGdpdmVuLCBnZXQgaXRzIHZhbHVlIGZyb20gdGhlICRicmVha3BvaW50cy8kYnJlYWtwb2ludHMtaGlkcGkgbWFwLlxuICBAaWYgdHlwZS1vZigkYnApID09ICdzdHJpbmcnIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnApIHtcbiAgICAgICRuYW1lOiAkYnA7XG4gICAgICAkYnA6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gICAgICAkYnAtbmV4dDogLXpmLW1hcC1uZXh0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMtaGlkcGksICRicCkge1xuICAgICAgJG5hbWU6ICRicDtcbiAgICAgICRicDogbWFwLWdldCgkYnJlYWtwb2ludHMtaGlkcGksICRuYW1lKTtcbiAgICAgICRicC1uZXh0OiAtemYtbWFwLW5leHQtbnVtYmVyKCRicmVha3BvaW50cy1oaWRwaSwgJGJwKTtcbiAgICAgICRoaWRwaTogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGJwOiAwO1xuICAgICAgQHdhcm4gJ2JyZWFrcG9pbnQoKTogXCIjeyR2YWx9XCIgaXMgbm90IGRlZmluZWQgaW4geW91ciBgJGJyZWFrcG9pbnRzYCBvciBgJGJyZWFrcG9pbnRzLWhpZHBpYCBzZXR0aW5nLic7XG4gICAgfVxuICB9XG5cbiAgQGlmIG5vdCAkbmFtZSBhbmQgJGRpciA9PSAnb25seScge1xuICAgIEB3YXJuICdicmVha3BvaW50KCk6IE9ubHkgbmFtZWQgbWVkaWEgcXVlcmllcyBjYW4gaGF2ZSBhbiBgb25seWAgcmFuZ2UuJztcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBPbmx5ICdvbmx5JyBhbmQgJ3VwJyBoYXZlIGEgbWluIGxpbWl0LlxuICBAaWYgJGRpciA9PSAnb25seScgb3IgJGRpciA9PSAndXAnIHtcbiAgICAkYnAtbWluOiBpZigkaGlkcGksIHN0cmlwLXVuaXQoJGJwKSwgLXpmLWJwLXRvLWVtKCRicCkpO1xuICB9XG4gIC8vIE9ubHkgJ29ubHknIGFuZCAnZG93bicgaGF2ZSBhIG1heCBsaW1pdC5cbiAgQGlmICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ2Rvd24nIHtcbiAgICAvLyBJZiB0aGUgYnJlYWtwb2ludCBpcyBhIHZhbHVlLCB1c2UgaXQgYXMgbWF4IGxpbWl0LlxuICAgIEBpZiBub3QgJG5hbWUge1xuICAgICAgJGJwLW1heDogaWYoJGhpZHBpLCBzdHJpcC11bml0KCRicCksIC16Zi1icC10by1lbSgkYnApKTtcbiAgICB9XG4gICAgLy8gSWYgdGhlIGJyZWFrcG9pbnQgaXMgbmFtZWQsIHRoZSBtYXggbGltaXQgaXMgdGhlIGZvbGxvd2luZyBicmVha3BvaW50IC0gMXB4LlxuICAgIEBlbHNlIGlmICRicC1uZXh0IHtcbiAgICAgIC8vIE1heCB2YWx1ZSBpcyAwLjJweCB1bmRlciB0aGUgbmV4dCBicmVha3BvaW50ICgwLjAyIC8gMTYgPSAwLjAwMTI1KS5cbiAgICAgIC8vIFVzZSBhIHByZWNpc2lvbiB1bmRlciAxcHggdG8gc3VwcG9ydCBicm93c2VyIHpvb20sIGJ1dCBub3QgdG8gbG93IHRvIGF2b2lkIHJvdW5kaW5nLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvaXNzdWVzLzExMzEzXG4gICAgICAkYnAtbWF4OiBpZigkaGlkcGksICRicC1uZXh0IC0gZGl2aWRlKDEsICRzdGQtd2ViLWRwaSksIC16Zi1icC10by1lbSgkYnAtbmV4dCkgLSAwLjAwMTI1KTtcbiAgICB9XG4gIH1cblxuICAvLyBHZW5lcmF0ZSB0aGUgbWVkaWEgcXVlcnkgc3RyaW5nIGZyb20gbWluIGFuZCBtYXggbGltaXRzLlxuICBAaWYgJGhpZHBpIHtcbiAgICAvLyBHZW5lcmF0ZSB2YWx1ZXMgaW4gRFBJIGluc3RlYWQgb2YgRFBQWCBmb3IgYW4gSUU5LTExL09wZXJhIG1pbmkgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBTZWUgaHR0cHM6Ly9jYW5pdXNlLmNvbS8jZmVhdD1jc3MtbWVkaWEtcmVzb2x1dGlvblxuICAgICRicC1taW4tZHBpOiBpZigkYnAtbWluLCAkYnAtbWluICogJHN0ZC13ZWItZHBpICogMWRwaSwgJGJwLW1pbik7XG4gICAgJGJwLW1heC1kcGk6IGlmKCRicC1tYXgsICRicC1tYXggKiAkc3RkLXdlYi1kcGkgKiAxZHBpLCAkYnAtbWF4KTtcbiAgICBAcmV0dXJuIHpmLXN0ci1qb2luKFxuICAgICAgLXpmLWJwLWpvaW4oJGJwLW1pbiwgJGJwLW1heCwgJy13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbycsICctd2Via2l0LW1heC1kZXZpY2UtcGl4ZWwtcmF0aW8nKSxcbiAgICAgIC16Zi1icC1qb2luKCRicC1taW4tZHBpLCAkYnAtbWF4LWRwaSwgJ21pbi1yZXNvbHV0aW9uJywgJ21heC1yZXNvbHV0aW9uJyksXG4gICAgICAnLCAnKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAtemYtYnAtam9pbigkYnAtbWluLCAkYnAtbWF4KTtcbiAgfVxufVxuXG4vLy8gV3JhcHMgYSBtZWRpYSBxdWVyeSBhcm91bmQgdGhlIGNvbnRlbnQgeW91IHB1dCBpbnNpZGUgdGhlIG1peGluLiBUaGlzIG1peGluIGFjY2VwdHMgYSBudW1iZXIgb2YgdmFsdWVzOlxuLy8vICAtIElmIGEgc3RyaW5nIGlzIHBhc3NlZCwgdGhlIG1peGluIHdpbGwgbG9vayBmb3IgaXQgaW4gdGhlIGAkYnJlYWtwb2ludHNgIGFuZCBgJGJyZWFrcG9pbnRzLWhpZHBpYCBtYXBzLCBhbmQgdXNlIGEgbWVkaWEgcXVlcnkgdGhlcmUuXG4vLy8gIC0gSWYgYSBwaXhlbCB2YWx1ZSBpcyBwYXNzZWQsIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGFuIGVtIHZhbHVlIHVzaW5nIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgYXMgdGhlIGJhc2UuXG4vLy8gIC0gSWYgYSByZW0gdmFsdWUgaXMgcGFzc2VkLCB0aGUgdW5pdCB3aWxsIGJlIGNoYW5nZWQgdG8gZW0uXG4vLy8gIC0gSWYgYW4gZW0gdmFsdWUgaXMgcGFzc2VkLCB0aGUgdmFsdWUgd2lsbCBiZSB1c2VkIGFzLWlzLlxuLy8vXG4vLy8gSWYgbXVsdGlwbGUgdmFsdWVzIGFyZSBwYXNzZWQsIHRoZSBtaXhpbiB3aWxsIGdlbmVyYXRlIGEgbWVkaWEgcXVlcnkgZm9yIGVhY2ggb2YgdGhlbSBhcyBkZXNjcmliZWQgYWJvdmUuXG4vLy8gU2luY2UgdGhlIGNvbnRlbnQgaXMgZHVwbGljYXRlZCBmb3IgZWFjaCBicmVha3BvaW50LCB0aGlzIG1peGluIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCBwcm9wZXJ0aWVzIHRoYXRcbi8vLyBjaGFuZ2UgYWNyb3NzIGJyZWFrcG9pbnRzLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbHVlcy4uLiAtIEJyZWFrcG9pbnQgbmFtZSBvciBweC9yZW0vZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbi8vL1xuLy8vIEBvdXRwdXQgSWYgdGhlIGJyZWFrcG9pbnQgaXMgXCIwcHggYW5kIGxhcmdlclwiLCBvdXRwdXRzIHRoZSBjb250ZW50IGFzLWlzLiBPdGhlcndpc2UsIG91dHB1dHMgdGhlIGNvbnRlbnQgd3JhcHBlZCBpbiBhIG1lZGlhIHF1ZXJ5LlxuQG1peGluIGJyZWFrcG9pbnQoJHZhbHVlcy4uLikge1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkdmFsdWVzKSB7XG4gICAgJHZhbHVlOiBudGgoJHZhbHVlcywgJGkpO1xuICAgICRzdHI6IGJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgICAkYnA6IGluZGV4KCQtemYtYnJlYWtwb2ludHMta2V5cywgbnRoKCR2YWx1ZSwgMSkpO1xuICAgICRwYnA6IGluZGV4KCQtemYtYnJlYWtwb2ludHMta2V5cywgJHByaW50LWJyZWFrcG9pbnQpO1xuICAgIC8vIERpcmVjdGlvbiBvZiBtZWRpYSBxdWVyeSAodXAsIGRvd24sIG9yIG9ubHkpXG4gICAgJGRpcjogaWYobGVuZ3RoKCR2YWx1ZSkgPiAxLCBudGgoJHZhbHVlLCAyKSwgdXApO1xuXG4gICAgJG9sZC16Zi1zaXplOiBudWxsO1xuXG4gICAgLy8gTWFrZSBicmVha3BvaW50IHNpemUgYXZhaWxhYmxlIGFzIGEgdmFyaWFibGVcbiAgICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygtemYtc2l6ZSkge1xuICAgICAgJG9sZC16Zi1zaXplOiAkLXpmLXNpemU7XG4gICAgfVxuICAgICQtemYtc2l6ZTogbnRoKCR2YWx1ZSwgMSkgIWdsb2JhbDsgLy8gZ2V0IHRoZSBmaXJzdCB2YWx1ZSB0byBhY2NvdW50IGZvciBgb25seWAgYW5kIGBkb3duYCBrZXl3b3Jkc1xuXG4gICAgLy8gSWYgJHN0ciBpcyBzdGlsbCBhbiBlbXB0eSBzdHJpbmcsIG5vIG1lZGlhIHF1ZXJ5IGlzIG5lZWRlZFxuICAgIEBpZiAkc3RyID09ICcnIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIC8vIE90aGVyd2lzZSwgd3JhcCB0aGUgY29udGVudCBpbiBhIG1lZGlhIHF1ZXJ5XG4gICAgQGVsc2Uge1xuICAgICAgLy8gRm9yIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAkcHJpbnQtYnJlYWtwb2ludCwgYWRkIHByaW50IHRvIHRoZSBtZWRpYSB0eXBlc1xuICAgICAgLy8gZ2VuZXJhdGUgcHJpbnQgaWYgdGhlIGJyZWFrcG9pbnQgYWZmZWN0cyB0aGUgcHJpbnQtYnJlYWtwb2ludCAob3Igc21hbGxlcikuXG4gICAgICAvLyBUaGlzIG1lYW5zIHRoZSBjdXJyZW50IGNvbmRpdGlvbiBvbmx5IG5lZWRzIHRvIGJlIGV4dGVuZGVkIHNvICdkb3duJyBhbHdheXMgZ2VuZXJhdGVzIHByaW50LlxuICAgICAgQGlmICRicCAhPSBudWxsIGFuZCAoJGJwIDw9ICRwYnAgb3IgJGRpciA9PSBkb3duKSB7XG4gICAgICAgIEBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICQtemYtc2l6ZTogJG9sZC16Zi1zaXplICFnbG9iYWw7XG4gIH1cbn1cblxuLy8vIENvbnZlcnRzIHRoZSBicmVha3BvaW50cyBtYXAgdG8gYSBVUkwtZW5jb2RlZCBzdHJpbmcsIGxpa2UgdGhpczogYGtleTE9dmFsdWUxJmtleTI9dmFsdWUyYC4gVGhlIHZhbHVlIGlzIHRoZW4gZHJvcHBlZCBpbnRvIHRoZSBDU1MgZm9yIGEgc3BlY2lhbCBgPG1ldGE+YCB0YWcsIHdoaWNoIGlzIHJlYWQgYnkgdGhlIEZvdW5kYXRpb24gSmF2YVNjcmlwdC4gVGhpcyBpcyBob3cgd2UgdHJhbnNmZXIgdmFsdWVzIGZyb20gU2FzcyB0byBKYXZhU2NyaXB0LCBzbyB0aGV5IGNhbiBiZSBkZWZpbmVkIGluIG9uZSBwbGFjZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIGNvbnZlcnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7U3RyaW5nfSBBIHN0cmluZyBjb250YWluaW5nIHRoZSBtYXAncyBjb250ZW50cy5cbkBmdW5jdGlvbiAtemYtYnAtc2VyaWFsaXplKCRtYXApIHtcbiAgJHN0cjogJyc7XG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICAkc3RyOiAkc3RyICsgJGtleSArICc9JyArIC16Zi1icC10by1lbSgkdmFsdWUpICsgJyYnO1xuICB9XG4gICRzdHI6IHN0ci1zbGljZSgkc3RyLCAxLCAtMik7XG5cbiAgQHJldHVybiAkc3RyO1xufVxuXG4vLy8gRmluZCB0aGUgbmV4dCBrZXkgaW4gYSBtYXAuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byB0cmF2ZXJzZS5cbi8vLyBAcGFyYW0ge01peGVkfSAka2V5IC0gS2V5IHRvIHVzZSBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgdmFsdWUgZm9yIHRoZSBrZXkgYWZ0ZXIgYCRrZXlgLCBpZiBgJGtleWAgd2FzIGZvdW5kLiBJZiBgJGtleWAgd2FzIG5vdCBmb3VuZCwgb3IgYCRrZXlgIHdhcyB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgbWFwLCByZXR1cm5zIGBudWxsYC5cbkBmdW5jdGlvbiAtemYtbWFwLW5leHQoJG1hcCwgJGtleSkge1xuXG4gIC8vIFN0b3JlIHRoZSBrZXlzIG9mIHRoZSBtYXAgYXMgYSBsaXN0XG4gICR2YWx1ZXM6IG1hcC1rZXlzKCRtYXApO1xuXG4gICRpOiAwO1xuXG4gIC8vIElmIHRoZSBLZXkgRXhpc3RzLCBHZXQgdGhlIGluZGV4IG9mIHRoZSBrZXkgd2l0aGluIHRoZSBtYXAgYW5kIGFkZCAxIHRvIGl0IGZvciB0aGUgbmV4dCBicmVha3BvaW50IGluIHRoZSBtYXBcbiAgQGlmIChtYXAtaGFzLWtleSgkbWFwLCAka2V5KSkge1xuICAgICRpOiBpbmRleCgkdmFsdWVzLCAka2V5KSArIDE7XG4gIH1cblxuICAvLyBJZiB0aGUga2V5IGRvZXNuJ3QgZXhpc3QsIG9yIGl0J3MgdGhlIGxhc3Qga2V5IGluIHRoZSBtYXAsIHJldHVybiBudWxsXG4gIEBpZiAoJGkgPiBsZW5ndGgoJG1hcCkgb3IgJGkgPT0gMCkge1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBPdGhlcndpc2UsIHJldHVybiB0aGUgdmFsdWVcbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCBudGgoJHZhbHVlcywgJGkpKTtcbiAgfVxuXG59XG5cbi8vLyBGaW5kIHRoZSBuZXh0IG51bWJlciBpbiBhIG1hcC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHRyYXZlcnNlLlxuLy8vIEBwYXJhbSB7TWl4ZWR9ICRudW1iZXIgLSBOdW1iZXIgdG8gdXNlIGFzIGEgc3RhcnRpbmcgcG9pbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TWl4ZWR9IFRoZSBudW1iZXIgZm9sbG93aW5nIGAkbnVtYmVyYCwgaWYgYCRudW1iZXJgIHdhcyBmb3VuZC4gSWYgYCRudW1iZXJgIHdhcyBub3QgZm91bmQsIG9yIGAkbnVtYmVyYCB3YXMgdGhlIGJpZ2dlc3QgbnVtYmVyIGluIHRoZSBtYXAsIHJldHVybnMgYG51bGxgLlxuQGZ1bmN0aW9uIC16Zi1tYXAtbmV4dC1udW1iZXIoJG1hcCwgJG51bWJlcikge1xuXG4gICRuZXh0LW51bWJlcjogbnVsbDtcblxuICBAZWFjaCAkaywgJHYgaW4gJG1hcCB7XG4gICAgQGlmIHR5cGUtb2YoJHYpID09ICdudW1iZXInIGFuZCAkdiA+ICRudW1iZXIgYW5kICgkbmV4dC1udW1iZXIgPT0gbnVsbCBvciAkdiA8ICRuZXh0LW51bWJlcikge1xuICAgICAgJG5leHQtbnVtYmVyOiAkdjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRuZXh0LW51bWJlcjtcbn1cblxuLy8vIFJldHVybiBhIGxpc3Qgb2Ygb3VyIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiAka2V5LiBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aFxuLy8vIHJlc3BvbnNpdmUgZ3V0dGVycyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleSAtIEtleSB0byB1c2UgYXMgbGFzdCBicmVha3BvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge0FycmF5fSBUaGUgbGlzdCBvZiBicmVha3BvaW50cyB1cCB0byBhbmQuIElmICRrZXkgaXMgYXV0bywgcmV0dXJucyBicmVha3BvaW50cyBhYm92ZSB0aGUgemVyb1xuQGZ1bmN0aW9uIC16Zi1icmVha3BvaW50cy1sZXNzLXRoYW4oJGtleSkge1xuICAkbGlzdDogKCk7XG4gICRmb3VuZC1rZXk6IGZhbHNlO1xuXG4gIEBlYWNoICRuYW1lIGluICQtemYtYnJlYWtwb2ludHMta2V5cyB7XG4gICAgQGlmICgkbmFtZSA9PSAka2V5KSB7XG4gICAgICAkZm91bmQta2V5OiB0cnVlO1xuICAgIH1cbiAgICBAaWYgbm90ICRmb3VuZC1rZXkge1xuICAgICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJG5hbWUpO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4vLy8gUmV0dXJuIGEgbGlzdCBvZiBvdXIgbmFtZWQgYnJlYWtwb2ludHMgbGVzcyB0aGFuICRrZXkuIFVzZWZ1bCBmb3IgZGVhbGluZyB3aXRoXG4vLy8gcmVzcG9uc2l2ZSBndXR0ZXJzIGZvciB0aGUgZ3JpZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCAtIGEgbmFtZWQgb3Igbm9uLW5hbWVkIGJyZWFrcG9pbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7QXJyYXl9IFRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIHVwIHRvIGFuZC4gSWYgJGtleSBpcyBhdXRvLCByZXR1cm5zIGJyZWFrcG9pbnRzIGFib3ZlIHRoZSB6ZXJvXG5AZnVuY3Rpb24gLXpmLWNsb3Nlc3QtbmFtZWQtYnJlYWtwb2ludCgkYnJlYWtwb2ludCkge1xuICAkbGFzdDogJC16Zi16ZXJvLWJyZWFrcG9pbnQ7XG4gICRmb3VuZDogZmFsc2U7XG5cbiAgJHZhbHVlOiB1bml0bGVzcy1jYWxjKCRicmVha3BvaW50LCAxcHgpO1xuICBAZWFjaCAka2V5LCAkdmFsIGluICRicmVha3BvaW50cyB7XG4gICAgQGlmIG5vdCAkZm91bmQge1xuICAgICAgQGlmIHVuaXRsZXNzLWNhbGMoJHZhbCkgPiAkdmFsdWUge1xuICAgICAgICAkZm91bmQ6IHRydWU7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJGxhc3Q6ICRrZXk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbGFzdDtcbn1cblxuLy8vIEdldCBhIHZhbHVlIGZvciBhIGJyZWFrcG9pbnQgZnJvbSBhIHJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgc2luZ2xlIHZhbHVlLCByZXR1cm4gaXQgcmVnYXJkbGVzcyBvZiBgJHZhbHVlYC5cbi8vLyAtIElmIHRoZSBjb25maWcgaXMgYSBtYXAgYW5kIGhhcyB0aGUga2V5IGAkdmFsdWVgLCB0aGUgZXhhY3QgYnJlYWtwb2ludCB2YWx1ZSBpcyByZXR1cm5lZC5cbi8vLyAtIElmIHRoZSBjb25maWcgaXMgYSBtYXAgYW5kIGRvZXMgKm5vdCogaGF2ZSB0aGUgYnJlYWtwb2ludCwgdGhlIHZhbHVlIG1hdGNoaW5nIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGluIHRoZSBjb25maWcgbWFwIGlzIHJldHVybmVkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkbWFwIC0gUmVzcG9uc2l2ZSBjb25maWcgbWFwIG9yIHNpbmdsZSB2YWx1ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR2YWx1ZSAtIEJyZWFrcG9pbnQgbmFtZSB0byB1c2UuXG4vLy9cbi8vLyBAcmV0dXJuIHtNaXhlZH0gVGhlIGNvcnJlc3BvbmRpbmcgYnJlYWtwb2ludCB2YWx1ZS5cbkBmdW5jdGlvbiAtemYtZ2V0LWJwLXZhbCgkbWFwLCAkdmFsdWUpIHtcbiAgLy8gSWYgdGhlIGdpdmVuIG1hcCBpcyBhIHNpbmdsZSB2YWx1ZSwgcmV0dXJuIGl0XG4gIEBpZiB0eXBlLW9mKCRtYXApID09ICdudW1iZXInIHtcbiAgICBAcmV0dXJuICRtYXA7XG4gIH1cblxuXG4gIC8vIENoZWNrIGlmIHRoZSBicmVha3BvaW50IG5hbWUgZXhpc3RzIGdsb2JhbGx5XG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkdmFsdWUpIHtcbiAgICBAaWYgdHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInIHtcbiAgICAgICR2YWx1ZTogLXpmLWNsb3Nlc3QtbmFtZWQtYnJlYWtwb2ludCgkdmFsdWUpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBpbiB0aGUgbG9jYWwgY29uZmlnIG1hcFxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkbWFwLCAkdmFsdWUpIHtcbiAgICAvLyBJZiBpdCBkb2VzLCBqdXN0IHJldHVybiB0aGUgdmFsdWVcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJHZhbHVlKTtcbiAgfVxuICAvLyBPdGhlcndpc2UsIGZpbmQgdGhlIG5leHQgbG93ZXN0IGJyZWFrcG9pbnQgYW5kIHJldHVybiB0aGF0IHZhbHVlXG4gIEBlbHNlIHtcbiAgICAkYW5jaG9yOiBudWxsO1xuICAgICRmb3VuZDogZmFsc2U7XG5cbiAgICBAZWFjaCAka2V5LCAkdmFsIGluICRicmVha3BvaW50cyB7XG4gICAgICBAaWYgbm90ICRmb3VuZCB7XG4gICAgICAgIEBpZiBtYXAtaGFzLWtleSgkbWFwLCAka2V5KSB7XG4gICAgICAgICAgJGFuY2hvcjogJGtleTtcbiAgICAgICAgfVxuICAgICAgICBAaWYgJGtleSA9PSAkdmFsdWUge1xuICAgICAgICAgICRmb3VuZDogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCAkYW5jaG9yKTtcbiAgfVxufVxuXG4vLy8gUmV0dXJuIHRoZSBiZXN0IGJyZWFrcG9pbnQgdG8gdXNlIGFjY29yZGluZyB0byB0aGUgY2FsbGluZyBjb250ZXh0LiBJdCByZXR1cm5zIGluIG9yZGVyOlxuLy8vIDEuIHRoZSBnaXZlbiBgJHZhbHVlYCBhcmd1bWVudCBpZiBpdCBpcyBub3QgbnVsbC5cbi8vLyAyLiB0aGUgZ2xvYmFsIGJyZWFrcG9pbnQgY29udGV4dCBgJC16Zi1zaXplYCBpZiBpdCBpcyBub3QgbnVsbCAobGlrZSBpZiBjYWxsZWQgaW5zaWRlIHRoZW4gYGJyZWFrcG9pbnQoKWAgbWl4aW4pXG4vLy8gMy4gdGhlIGdpdmVuIGAkZGVmYXVsdGAgYXJndW1lbnQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR2YWx1ZSBbbnVsbF0gLSBCcmVha3BvaW50IHRvIHVzZSBpbiBwcmlvcml0eSBpZiBub24tbnVsbC5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkZWZhdWx0IFtudWxsXSAtIEJyZWFrcG9pbnQgdG8gdXNlIGJ5IGRlZmF1bHQgaWYgbm8gb3RoZXIgdmFsdWUgY2FuIGJlIHVzZWQuXG4vLy9cbi8vLyBAcmV0dXJuIHtLZXl3b3JkfSBUaGUgcmVzb2x2ZWQgYnJlYWtwb2ludC5cbkBmdW5jdGlvbiAtemYtY3VycmVudC1icmVha3BvaW50KCR2YWx1ZTogbnVsbCwgJGRlZmF1bHQ6IG51bGwpIHtcbiAgQGlmICgkdmFsdWUgIT0gbnVsbCkge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG4gIEBlbHNlIGlmICh2YXJpYWJsZS1leGlzdHMoLXpmLXNpemUpIGFuZCB0eXBlLW9mKCQtemYtc2l6ZSkgIT0gJ251bWJlcicpIGFuZCAkLXpmLXNpemUgIT0gbnVsbCB7XG4gICAgQHJldHVybiAkLXpmLXNpemU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJGRlZmF1bHQ7XG4gIH1cbn1cblxuLy8vIFJldHVybiBtZWRpYSBxdWVyeSBzdHJpbmcgZnJvbSB0aGUgZ2l2ZW4gbWluIGFuZC9vciBtYXggbGltaXRzLlxuLy8vIElmIGEgbGltaXQgaXMgZXF1YWwgdG8gYG51bGxgIG9yIGAwYCwgaXQgaXMgaWdub3JlZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWluIFswXSAtIE1pbiBtZWRpYSBxdWVyeSBsaW1pdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1heCBbMF0gLSBNYXggbWVkaWEgcXVlcnkgbGltaXQuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtaW4tbmFtZSBbJ21pbi13aWR0aCddIC0gTmFtZSBvZiB0aGUgbWluIG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGVsaW1pdGVyIFsnbWF4LXdpZHRoJ10gLSBOYW1lIG9mIHRoZSBtYXggbWVkaWEgcXVlcnkgbGltaXQuXG4vLy9cbi8vLyBAcmV0dXJucyB7U3RyaW5nfSBNZWRpYSBRdWVyeSBzdHJpbmcuXG5AZnVuY3Rpb24gLXpmLWJwLWpvaW4oXG4gICRtaW46IDAsXG4gICRtYXg6IDAsXG4gICRtaW4tbmFtZTogJ21pbi13aWR0aCcsXG4gICRtYXgtbmFtZTogJ21heC13aWR0aCdcbikge1xuICBAcmV0dXJuIHpmLXN0ci1qb2luKFxuICAgIGlmKCRtaW4gYW5kICRtaW4gPiAwLCAnKCN7JG1pbi1uYW1lfTogI3skbWlufSknLCBudWxsKSxcbiAgICBpZigkbWF4IGFuZCAkbWF4ID4gMCwgJygjeyRtYXgtbmFtZX06ICN7JG1heH0pJywgbnVsbCksXG4gICAgJyBhbmQgJyk7XG59XG5cbiRzbWFsbC11cDogJyc7XG4kc21hbGwtb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHNtYWxsKSB7XG4gICRzbWFsbC11cDogc2NyZWVuO1xuICAkc21hbGwtb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoc21hbGwgb25seSl9Jyk7XG59XG5cbiRtZWRpdW0tdXA6ICcnO1xuJG1lZGl1bS1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgbWVkaXVtKSB7XG4gICRtZWRpdW0tdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KG1lZGl1bSl9Jyk7XG4gICRtZWRpdW0tb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobWVkaXVtIG9ubHkpfScpO1xufVxuXG4kbGFyZ2UtdXA6ICcnO1xuJGxhcmdlLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBsYXJnZSkge1xuICAkbGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KGxhcmdlKX0nKTtcbiAgJGxhcmdlLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KGxhcmdlIG9ubHkpfScpO1xufVxuXG4keGxhcmdlLXVwOiAnJztcbiR4bGFyZ2Utb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHhsYXJnZSkge1xuICAkeGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2UpfScpO1xuICAkeGxhcmdlLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHhsYXJnZSBvbmx5KX0nKTtcbn1cblxuJHh4bGFyZ2UtdXA6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4eGxhcmdlKSB7XG4gICR4eGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4eGxhcmdlKX0nKTtcbn1cbiJdfQ== */
