.frame.svelte-1k0u4gw{background-color:white}
.frame.svelte-3hm264.svelte-3hm264{display:flex;flex-wrap:nowrap;justify-content:space-between;background-color:#ecf0f1;padding:5px 5px 0}.frame.svelte-3hm264 .category.svelte-3hm264{height:24px;width:24px;background-image:url(/kategorije/16x16px/orange/pin.svg);background-repeat:no-repeat;background-size:contain;background-position:center center;text-align:center;color:white;font-weight:bold;font-size:12px;font-style:italic;padding-top:4px}.active.svelte-3hm264.svelte-3hm264{cursor:pointer}
.frame.svelte-ab3chs.svelte-ab3chs{--searchbox-ht:33px;height:var(--searchbox-ht);background-color:#ecf0f1;display:flex;align-items:center;flex:1 1 auto}.frame.svelte-ab3chs .search-icon.svelte-ab3chs{position:relative;height:30px;width:30px}.frame.svelte-ab3chs .search-icon img.svelte-ab3chs{height:15px;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.frame.svelte-ab3chs .text.svelte-ab3chs{width:100%;font-size:15px;margin:0 5px 0 0;padding:0;color:gray}.frame.svelte-ab3chs .text-active.svelte-ab3chs{color:black}
.frame.svelte-tt7rj6.svelte-tt7rj6{flex:1;padding:1px;display:flex;overflow-x:scroll;align-items:center}.frame.svelte-tt7rj6 .brand-item.svelte-tt7rj6{height:30px;width:28px;border:1px solid red;border-radius:3px;margin:0px 2px;overflow:hidden;cursor:pointer}.frame.svelte-tt7rj6 .isNotSelected.svelte-tt7rj6{background:black}.frame.svelte-tt7rj6 .isSelected.svelte-tt7rj6{background:yellow}
.frame.svelte-1cbmxfj.svelte-1cbmxfj{display:flex;flex-direction:column;justify-content:space-between;max-width:calc(100vw - 20px)}.frame.svelte-1cbmxfj .categories-and-keyword-frame.svelte-1cbmxfj{display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.frame.svelte-1cbmxfj .categories-and-keyword-frame .full-width.svelte-1cbmxfj{width:100%;margin:0;padding:10px 0 0}.frame.svelte-1cbmxfj .categories-and-keyword-frame .keyword-filter-frame.svelte-1cbmxfj{display:flex;flex-wrap:nowrap;align-items:center;min-width:300px;margin:0 3px 0 0;flex:1}.frame.svelte-1cbmxfj .categories-and-keyword-frame .keyword-filter-frame .icon.svelte-1cbmxfj{position:relative;height:33px;width:33px;margin:0 3px 0 0;background-color:rgba(236, 240, 240, 1);border-radius:3px}.frame.svelte-1cbmxfj .categories-and-keyword-frame .keyword-filter-frame .icon img.svelte-1cbmxfj{position:absolute;height:22px;top:50%;left:50%;transform:translate(-50%, -50%)}.frame.svelte-1cbmxfj .categories-and-keyword-frame .categories-filter-frame.svelte-1cbmxfj{flex:1}.frame.svelte-1cbmxfj .dsa-filter-frame.svelte-1cbmxfj{flex:1;margin:10px 0 0;padding:5px;background-color:#ecf0f1;display:flex}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-action-buttons.svelte-1cbmxfj{display:flex}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-action-buttons .button.svelte-1cbmxfj{height:35px;width:40px;margin-right:5px;border:1px solid white;background-color:white;padding:3px;border-radius:3px;overflow:hidden;cursor:pointer}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-action-buttons .button--inactive.svelte-1cbmxfj{cursor:default;opacity:0.5}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-action-buttons .button img.svelte-1cbmxfj{height:25px;width:30px;object-fit:contain}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel.svelte-1cbmxfj{flex:1;background-color:rgb(255, 255, 255);padding:1px;display:flex;overflow-x:scroll;justify-content:flex-start;align-items:center}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel--inactive.svelte-1cbmxfj{opacity:0.5;cursor:pointer;pointer-events:none}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel .dsa.svelte-1cbmxfj{flex:0 0 auto;cursor:pointer;margin:1px 2px;padding:1px;border-radius:3px;color:white;font-weight:bold;font-size:12px;opacity:0.5;height:fit-content}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel .dsa--m.svelte-1cbmxfj{background-color:#5289d1}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel .dsa--w.svelte-1cbmxfj{background-color:#eb5c5c}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel .dsa--x.svelte-1cbmxfj{background-color:#daa520}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel .dsa--hovered.svelte-1cbmxfj{color:white;opacity:1}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel .dsa--selected.svelte-1cbmxfj{color:white;opacity:1}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel .text.svelte-1cbmxfj{font-size:15px;margin:0 5px;user-select:none;opacity:0.6}{}
tr.svelte-fkgv8{background-color:grey;line-height:16px}th.svelte-fkgv8{width:14px;font-size:10px;text-align:center;color:white;background-color:grey;padding:0px}.isWeekend.svelte-fkgv8{color:black;background-color:lightgray}.null.svelte-fkgv8{background-color:white}.separator.svelte-fkgv8{width:1px;background-color:white}
td.svelte-1ip3p4u{position:relative;width:14px;font-size:10px;text-align:center;height:12px;color:darkslategrey;border:1px dotted lightgray;cursor:pointer;padding:0px}.isEvenYear.svelte-1ip3p4u{color:darkslategrey}.isWithinSelectedDateRange.svelte-1ip3p4u{background:rgba(128, 128, 128, 0.616);color:whitesmoke;font-weight:bold}.isToday.svelte-1ip3p4u{background:slategrey;color:whitesmoke}.isTodayInEvenYear.svelte-1ip3p4u{background:slategrey;color:whitesmoke}.isHighlighted.svelte-1ip3p4u{background:#e22c3b;color:white}.isDSAHighlighted.svelte-1ip3p4u{background:#e22c3b63;color:white}.hasEvents.svelte-1ip3p4u{background:#545ad260}.hasEventsAndIsWithinSelectedDateRange.svelte-1ip3p4u{background:#545bd2;color:white}.hasListedEvents.svelte-1ip3p4u{background:#f5a0205d}.hasListedEventsAndIsWithinSelectedDateRange.svelte-1ip3p4u{background:#f5a020;color:white}.tooltiptext.svelte-1ip3p4u{width:70px;background-color:darkslategrey;color:white;text-align:center;padding:3px 0;border-radius:6px;font-size:12px;font-weight:normal;position:absolute;top:-35px;left:-65px;z-index:1}
tr.svelte-16p9zxv{height:16px}td.svelte-16p9zxv{width:14px;font-size:11px;text-align:end;padding:0px}.separator.svelte-16p9zxv{width:1px}.monthName.svelte-16p9zxv{color:darkslategrey;width:50px;border-bottom:1px solid lightgrey;cursor:pointer}.isEvenYear.svelte-16p9zxv{color:darkslategrey}.bolder.svelte-16p9zxv{font-weight:bolder}
:root{--calendar-width:739px}.main.svelte-1phwrkj.svelte-1phwrkj{width:var(--calendar-width)}.season-picker.svelte-1phwrkj.svelte-1phwrkj{display:flex;justify-content:center;padding:2px 0;user-select:none}.season-picker.svelte-1phwrkj .season.svelte-1phwrkj{display:flex;width:80px;font-weight:bold;justify-content:center}.season-picker.svelte-1phwrkj .unselected.svelte-1phwrkj{color:lightslategray}.season-picker.svelte-1phwrkj .unselected.svelte-1phwrkj:hover{color:darkslategrey}.season-picker.svelte-1phwrkj .selected.svelte-1phwrkj{color:white;background-color:#f58b20;border-radius:3px}table.svelte-1phwrkj.svelte-1phwrkj{width:100%;border:1px solid slategray;padding:0px;background:white;user-select:none}
.datepickers-frame.svelte-1i08p23{margin-top:5px;display:flex;justify-content:space-between;background-color:white;flex-wrap:wrap}.datepicker.svelte-1i08p23{width:49%;height:36px;background-color:#ecf0f1;border-radius:3px;display:flex}img.svelte-1i08p23{align-self:center;height:25px;padding:0 2vw 0 1vw}.date.svelte-1i08p23{flex:1;font-size:12px;text-align:center;background-color:#ecf0f1}
.frame--no-sidepane.svelte-1t5wawv{background-color:white}.frame--sidepane-on.svelte-1t5wawv{background-color:rgba(255, 255, 255, 0.7)}
.mapdiv.svelte-1kj6swc{position:absolute;width:100%;top:0;bottom:0}.markerIcon{background-image:url(/kategorije/16x16px/orange/pin.svg);background-repeat:no-repeat;background-size:contain;background-position:center center;text-align:center;color:white;font-weight:bold;font-size:12px;font-style:italic;padding-top:2px}.highlightedMarkerIcon{background-image:url(/kategorije/16x16px/red/pin.svg);background-repeat:no-repeat;background-size:contain;background-position:center center;text-align:center;color:white;font-weight:bold;font-size:12px;font-style:italic;padding-top:2px}
:root{--flag-width:45px;--flag-height:32px}.event-card.svelte-1fi46q8.svelte-1fi46q8{margin:10px;background-color:whitesmoke;border-radius:3px;box-shadow:0 0 5px 5px var(--color-backg-mid);display:flex;flex-direction:column}.isHighlighted.svelte-1fi46q8.svelte-1fi46q8{box-shadow:0 0 5px 5px rgba(221, 11, 11, 0.5)}.event-card.svelte-1fi46q8 .isUnpublished.svelte-1fi46q8{background-color:darkslategrey;color:white}.event-card.svelte-1fi46q8 .body.svelte-1fi46q8{position:relative;width:100%;padding:10px 10px 5px 10px;display:flex;flex-direction:row;overflow:hidden}.event-card.svelte-1fi46q8 .body .brand-bg.svelte-1fi46q8{position:absolute;left:0;top:0;object-fit:cover;width:100%;opacity:0.15}.event-card.svelte-1fi46q8 .body .event-info.svelte-1fi46q8{width:calc(100% - 28px);flex:1 0 auto;display:flex;flex-direction:column;justify-content:flex-start;cursor:pointer;z-index:2}.event-card.svelte-1fi46q8 .body .event-info .flag-place-date.svelte-1fi46q8{height:var(--flag-height);display:flex}.event-card.svelte-1fi46q8 .body .event-info .flag-place-date .flag.svelte-1fi46q8{height:var(--flag-height);width:var(--flag-width);overflow:hidden;box-shadow:0 0 5px 5px var(--color-backg-mid)}.event-card.svelte-1fi46q8 .body .event-info .flag-place-date .flag img.svelte-1fi46q8{height:var(--flag-height);width:var(--flag-width);object-fit:cover}.event-card.svelte-1fi46q8 .body .event-info .place-date.svelte-1fi46q8{flex:1 1 auto;padding-left:5px;display:flex;flex-direction:column}.event-card.svelte-1fi46q8 .body .event-info .place-date .place.svelte-1fi46q8{font-size:15px;font-weight:bolder}.event-card.svelte-1fi46q8 .body .event-info .place-date .date.svelte-1fi46q8{}.event-card.svelte-1fi46q8 .body .event-info .event-title.svelte-1fi46q8{height:55px;padding:10px 0;display:flex;flex-direction:column;justify-content:center;align-items:center}.event-card.svelte-1fi46q8 .body .event-info .event-title .text.svelte-1fi46q8{font-size:16px;text-align:center}.event-card.svelte-1fi46q8 .body .categories.svelte-1fi46q8{width:28px;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-end;font-size:8px;z-index:2}.EventCard__category.svelte-1fi46q8.svelte-1fi46q8{height:26px;width:26px;background-image:url(/kategorije/16x16px/orange/pin.svg);background-repeat:no-repeat;background-size:contain;background-position:center center;text-align:center;color:white;font-weight:bold;font-size:14px;font-style:italic;padding-top:4px}.event-card.svelte-1fi46q8 .footer.svelte-1fi46q8{height:40px;padding:0 10px;background-color:var(--color-foreg-shadow);border-radius:3px;display:flex;justify-content:space-between;align-items:center}.event-card.svelte-1fi46q8 .footer .brands.svelte-1fi46q8{display:flex;flex:1 0 auto;justify-content:flex-start;align-items:center}.event-card.svelte-1fi46q8 .footer .brands .warrantor-icon.svelte-1fi46q8{height:30px;width:30px;margin:0 3px 0 0;cursor:pointer}.event-card.svelte-1fi46q8 .footer .brands .warrantor-icon img.svelte-1fi46q8{width:100%;object-fit:contain;border-radius:3px}.event-card.svelte-1fi46q8 .footer .brands .brand-icon.svelte-1fi46q8{height:30px;width:30px;margin:0 3px 0 0;cursor:pointer}.event-card.svelte-1fi46q8 .footer .brands .brand-icon img.svelte-1fi46q8{width:100%;object-fit:contain}.event-card.svelte-1fi46q8 .footer .actions.svelte-1fi46q8{display:flex;justify-content:flex-end;align-items:center}.event-card.svelte-1fi46q8 .footer .actions .action-button.svelte-1fi46q8{height:30px;width:30px;padding:3px;margin:0 0 0 5px;border-radius:3px;background-color:var(--color-action-main);cursor:pointer}.event-card.svelte-1fi46q8 .footer .actions .action-button.svelte-1fi46q8:hover{background-color:var(--color-action-hover)}.event-card.svelte-1fi46q8 .footer .actions .action-button img.svelte-1fi46q8{width:100%;object-fit:contain}
.grid.svelte-1kb97n6{padding:10px;display:grid}.bottom-line.svelte-1kb97n6{min-height:20px;padding:5px;background-color:var(--color-foreg-shadow)}
.event-details.svelte-1r4eptt.svelte-1r4eptt{position:relative;z-index:3}.dsa-filter.svelte-1r4eptt.svelte-1r4eptt{position:relative;z-index:3}.frame.svelte-1r4eptt.svelte-1r4eptt{position:relative;z-index:1;height:calc(100vh - var(--navbar-ht));overflow:hidden}.frame.svelte-1r4eptt .geomap.svelte-1r4eptt{position:relative;z-index:1;height:calc(100vh - var(--navbar-ht) - 390px);min-height:300px;box-shadow:0 0 15px rgba(0, 0, 0, 0.2)}.frame.svelte-1r4eptt .geomap-on-narrow-screen.svelte-1r4eptt{position:relative;z-index:2;height:35vh;min-height:0;box-shadow:0 0 15px rgba(0, 0, 0, 0.2)}.frame.svelte-1r4eptt .lower-section.svelte-1r4eptt{position:absolute;display:flex;flex-direction:column;align-items:center;width:100%;z-index:2;bottom:10px}.frame.svelte-1r4eptt .lower-section-on-narrow-screen.svelte-1r4eptt{position:absolute;display:flex;flex-direction:column;align-items:center;width:100%;justify-content:flex-start;z-index:1;top:calc(35vh + 10px);bottom:0}.events-list-sidepane.svelte-1r4eptt.svelte-1r4eptt{position:fixed;top:var(--navbar-ht);bottom:0;right:0;box-shadow:0 0 15px rgba(0, 0, 0, 0.1);overflow-y:auto}.frame.svelte-1r4eptt .filters-and-events.svelte-1r4eptt{position:relative;display:flex;flex-wrap:wrap;margin:0 auto;top:0;overflow-y:auto}.frame.svelte-1r4eptt .filters-and-events .filters-frame.svelte-1r4eptt{position:sticky;z-index:3;top:-160px;margin:10px;padding:10px;max-width:calc(var(--calendar-width) + 40px);background-color:rgba(255, 255, 255, 0.8);border-radius:5px;box-shadow:0 0 15px rgba(0, 0, 0, 0.2)}
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguYWI0OTU1YzIuY3NzIiwic291cmNlcyI6WyIuLi8uLi8uLi9Ec2FGaWx0ZXIuc3ZlbHRlIiwiLi4vLi4vLi4vQ2F0ZWdvcmllc0ZpbHRlci5zdmVsdGUiLCIuLi8uLi8uLi9LZXl3b3JkRmlsdGVyLnN2ZWx0ZSIsIi4uLy4uLy4uL0JyYW5kc0ZpbHRlci5zdmVsdGUiLCIuLi8uLi8uLi9LZXl3b3JkQW5kUHJvZ3JhbUZpbHRlci5zdmVsdGUiLCIuLi8uLi8uLi9EYXlzT2ZXZWVrLnN2ZWx0ZSIsIi4uLy4uLy4uL0RheS5zdmVsdGUiLCIuLi8uLi8uLi9Nb250aC5zdmVsdGUiLCIuLi8uLi8uLi9pbmRleC5zdmVsdGUiLCIuLi8uLi8uLi9pbmRleC5zdmVsdGUiLCIuLi8uLi8uLi9EYXRlUmFuZ2VGaWx0ZXIuc3ZlbHRlIiwiLi4vLi4vLi4vR2VvTWFwLnN2ZWx0ZSIsIi4uLy4uLy4uL0V2ZW50Q2FyZC5zdmVsdGUiLCIuLi8uLi8uLi9FdmVudHNMaXN0LnN2ZWx0ZSIsIi4uLy4uLy4uL2luZGV4LnN2ZWx0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8c2NyaXB0PlxuICBpbXBvcnQgQ29tcGV0aXRpb25zUGlja2VyIGZyb20gXCIuLi8uLi91aS9Db21wZXRpdGlvbnNQaWNrZXIvaW5kZXguc3ZlbHRlXCI7XG5cbiAgZXhwb3J0IGxldCBkc2FGaWx0ZXIgPSBbXTtcbiAgZXhwb3J0IGNvbnN0IGRzYUZpbHRlck1vZGFsVyA9IDEzMTE7XG48L3NjcmlwdD5cblxuPHN0eWxlPlxuICAuZnJhbWUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICB9XG48L3N0eWxlPlxuXG48ZGl2IGNsYXNzPVwiZnJhbWVcIj5cbiAgPENvbXBldGl0aW9uc1BpY2tlciBiaW5kOnNlbGVjdGVkRHNhSXRlbXM9e2RzYUZpbHRlcn0gLz5cbjwvZGl2PlxuIiwiPHNjcmlwdD5cbiAgaW1wb3J0IHsgYXBwZW5kIH0gZnJvbSBcInJhbWRhL3NyY1wiO1xuXG4gIGltcG9ydCB7IGdldEV2ZW50Q2F0ZWdvcmllc0Zyb21EQiB9IGZyb20gXCIuLi8uLi9wYWdlcy9FdmVudEVkaXRvclwiO1xuXG4gIGV4cG9ydCBsZXQgY2F0ZWdvcmllc0luRGF0YXNldCA9IFtdO1xuICBleHBvcnQgbGV0IGNhdGVnb3JpZXNGaWx0ZXIgPSBbXTtcbiAgbGV0IGFsbENhdGVnb3JpZXMgPSBnZXRFdmVudENhdGVnb3JpZXNGcm9tREIoKTtcblxuICBjb25zdCB0b2dnbGVDYXRlZ29yeUZpbHRlcmVkID0gKGNhdGVnb3J5KSA9PiB7XG4gICAgY2F0ZWdvcmllc0ZpbHRlciA9IGNhdGVnb3JpZXNGaWx0ZXIuaW5jbHVkZXMoY2F0ZWdvcnkpXG4gICAgICA/IGNhdGVnb3JpZXNGaWx0ZXIuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSBjYXRlZ29yeSlcbiAgICAgIDogYXBwZW5kKGNhdGVnb3J5LCBjYXRlZ29yaWVzRmlsdGVyKTtcbiAgfTtcblxuICBjYXRlZ29yaWVzRmlsdGVyID0gW1wiZlwiLCBcImVcIiwgXCJkXCIsIFwiY1wiLCBcImJcIiwgXCJhXCJdO1xuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJmcmFtZVwiPlxuICB7I2VhY2ggYWxsQ2F0ZWdvcmllcyBhcyBjYXRlZ29yeX1cbiAgICA8ZGl2XG4gICAgICBvbjpjbGljaz17KCkgPT4gdG9nZ2xlQ2F0ZWdvcnlGaWx0ZXJlZChjYXRlZ29yeS5uYW1lKX1cbiAgICAgIGNsYXNzPVwiY2F0ZWdvcnkge2NhdGVnb3JpZXNJbkRhdGFzZXQuaW5jbHVkZXMoY2F0ZWdvcnkubmFtZSlcbiAgICAgICAgPyAnYWN0aXZlJ1xuICAgICAgICA6ICcnfVwiXG4gICAgICBzdHlsZT1cIm9wYWNpdHk6IHtjYXRlZ29yaWVzSW5EYXRhc2V0LmluY2x1ZGVzKGNhdGVnb3J5Lm5hbWUpXG4gICAgICAgID8gY2F0ZWdvcmllc0ZpbHRlci5pbmNsdWRlcyhjYXRlZ29yeS5uYW1lKVxuICAgICAgICAgID8gJzEnXG4gICAgICAgICAgOiAnMC41J1xuICAgICAgICA6ICcwLjInfVwiXG4gICAgICBhbHQ9e2NhdGVnb3J5LmRlc2NyaXB0aW9ufVxuICAgICAgdGl0bGU9e2NhdGVnb3J5LmRlc2NyaXB0aW9ufVxuICAgID5cbiAgICAgIHtjYXRlZ29yeS5uYW1lLnRvVXBwZXJDYXNlKCl9XG4gICAgPC9kaXY+XG4gIHsvZWFjaH1cbjwvZGl2PlxuXG48c3R5bGU+XG4gIC5mcmFtZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VjZjBmMTtcbiAgICBwYWRkaW5nOiA1cHggNXB4IDA7XG4gIH1cbiAgLmZyYW1lIC5jYXRlZ29yeSB7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgva2F0ZWdvcmlqZS8xNngxNnB4L29yYW5nZS9waW4uc3ZnKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gIH1cblxuICAvKiAuZnJhbWUgLmNhdGVnb3J5IGltZyB7XG4gICAgaGVpZ2h0OiAyNXB4O1xuICAgIHdpZHRoOiAyNXg7XG4gIH0gKi9cbiAgLmFjdGl2ZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdD5cbiAgZXhwb3J0IGxldCBrZXl3b3JkRmlsdGVyID0gXCJcIjtcblxuICBsZXQga2V5d29yZCA9IFwiXCI7XG4gIGxldCBtaW5LZXl3b3JkTGVuZ3RoID0gMztcbiAgbGV0IHByZXZpb3VzS2V5d29yZExlbmd0aCA9IDA7XG4gIGxldCBpc0lpbml0aWFsS2V5d29yZEZpeGVkID0gZmFsc2U7XG5cbiAgbGV0IGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBjb25zdCBjaGVja0tleXdvcmRDaGFuZ2VkID0gKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIGtleXdvcmQubGVuZ3RoICsgMSA9PT0gbWluS2V5d29yZExlbmd0aCAmJlxuICAgICAga2V5d29yZC5sZW5ndGggPCBwcmV2aW91c0tleXdvcmRMZW5ndGhcbiAgICApIHtcbiAgICAgIGtleXdvcmRGaWx0ZXIgPSBcIlwiO1xuICAgIH1cbiAgICBpZiAoIShrZXl3b3JkLmxlbmd0aCA8IG1pbktleXdvcmRMZW5ndGgpKSB7XG4gICAgICBrZXl3b3JkRmlsdGVyID0ga2V5d29yZDtcbiAgICB9XG4gICAgcHJldmlvdXNLZXl3b3JkTGVuZ3RoID0ga2V5d29yZC5sZW5ndGg7XG4gIH07XG5cbiAgJDogaWYgKCFpc0lpbml0aWFsS2V5d29yZEZpeGVkICYmIGtleXdvcmRGaWx0ZXIgIT0gXCJcIikge1xuICAgIGtleXdvcmQgPSBrZXl3b3JkRmlsdGVyO1xuICAgIGlzSWluaXRpYWxLZXl3b3JkRml4ZWQgPSB0cnVlO1xuICB9XG4gICQ6IG1pbktleXdvcmRMZW5ndGggPSBrZXl3b3JkLmluY2x1ZGVzKFwiOlwiKSA/IDQgOiAzO1xuICAkOiBpZiAoIWlzSW5pdGlhbGl6ZWQgJiYga2V5d29yZEZpbHRlci5sZW5ndGggPiAwKSB7XG4gICAgcHJldmlvdXNLZXl3b3JkTGVuZ3RoID0ga2V5d29yZEZpbHRlci5sZW5ndGg7XG4gICAgaXNJbml0aWFsaXplZCA9IHRydWU7XG4gIH1cbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwiZnJhbWVcIj5cbiAgPGRpdiBjbGFzcz1cInNlYXJjaC1pY29uXCI+PGltZyBzcmM9XCJpY29ucy9zZWFyY2gucG5nXCIgLz48L2Rpdj5cbiAgPGlucHV0XG4gICAgYmluZDp2YWx1ZT17a2V5d29yZH1cbiAgICBvbjppbnB1dD17Y2hlY2tLZXl3b3JkQ2hhbmdlZH1cbiAgICB0eXBlPVwidGV4dFwiXG4gICAgY2xhc3M9XCJ0ZXh0XCJcbiAgICBjbGFzczp0ZXh0LWFjdGl2ZT17a2V5d29yZC5sZW5ndGggPj0gbWluS2V5d29yZExlbmd0aH1cbiAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBldmVudCB0aXRsZSBvciB2ZW51ZVwiXG4gIC8+XG48L2Rpdj5cblxuPHN0eWxlPlxuICAuZnJhbWUge1xuICAgIC0tc2VhcmNoYm94LWh0OiAzM3B4O1xuICAgIGhlaWdodDogdmFyKC0tc2VhcmNoYm94LWh0KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNmMGYxO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxuICAuZnJhbWUgLnNlYXJjaC1pY29uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICB9XG4gIC5mcmFtZSAuc2VhcmNoLWljb24gaW1nIHtcbiAgICBoZWlnaHQ6IDE1cHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxuICAuZnJhbWUgLnRleHQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBtYXJnaW46IDAgNXB4IDAgMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGNvbG9yOiBncmF5O1xuICB9XG4gIC5mcmFtZSAudGV4dC1hY3RpdmUge1xuICAgIGNvbG9yOiBibGFjaztcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCB7IGNyZWF0ZUV2ZW50RGlzcGF0Y2hlciB9IGZyb20gXCJzdmVsdGVcIjtcblxuICBpbXBvcnQgeyBnZXRFdmVudEJyYW5kc0Zyb21EQiB9IGZyb20gXCIuLi9FdmVudEVkaXRvci9pbmRleFwiO1xuICBpbXBvcnQgeyBhcHBlbmQgfSBmcm9tIFwicmFtZGEvc3JjXCI7XG5cbiAgZXhwb3J0IGxldCBicmFuZHNGaWx0ZXIgPSBbXTtcblxuICBsZXQgYnJhbmRzID0gZ2V0RXZlbnRCcmFuZHNGcm9tREIoKTtcblxuICBjb25zdCBkaXNwYXRjaCA9IGNyZWF0ZUV2ZW50RGlzcGF0Y2hlcigpO1xuXG4gIGNvbnN0IHRvZ2dsZUJyYW5kc0ZpbHRlcmVkID0gKGJyYW5kKSA9PiB7XG4gICAgYnJhbmRzRmlsdGVyID0gYnJhbmRzRmlsdGVyLmluY2x1ZGVzKGJyYW5kLmlkKVxuICAgICAgPyBicmFuZHNGaWx0ZXIuZmlsdGVyKChpZCkgPT4gaWQgIT09IGJyYW5kLmlkKVxuICAgICAgOiBhcHBlbmQoYnJhbmQuaWQsIGJyYW5kc0ZpbHRlcik7XG4gICAgY29uc29sZS5sb2coYnJhbmRzRmlsdGVyKTtcbiAgfTtcblxuICBjb25zdCByZXF1ZXN0SGlnaGxpZ2h0QnJhbmQgPSAoYnJhbmQpID0+IHtcbiAgICBkaXNwYXRjaChcImhpZ2hsaWdodEJyYW5kUmVxdWVzdGVkXCIsIGJyYW5kKTtcbiAgfTtcbiAgY29uc3QgcmVxdWVzdFVuaGlnaGxpZ2h0QnJhbmQgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goXCJoaWdobGlnaHRCcmFuZFJlcXVlc3RlZFwiKTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48c3R5bGU+XG4gIC5mcmFtZSB7XG4gICAgZmxleDogMTtcbiAgICBwYWRkaW5nOiAxcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBvdmVyZmxvdy14OiBzY3JvbGw7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuICAuZnJhbWUgLmJyYW5kLWl0ZW0ge1xuICAgIGhlaWdodDogMzBweDtcbiAgICB3aWR0aDogMjhweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZWQ7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIG1hcmdpbjogMHB4IDJweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIC5mcmFtZSAuaXNOb3RTZWxlY3RlZCB7XG4gICAgYmFja2dyb3VuZDogYmxhY2s7XG4gIH1cbiAgLmZyYW1lIC5pc1NlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiB5ZWxsb3c7XG4gIH1cbjwvc3R5bGU+XG5cbjxkaXYgY2xhc3M9XCJmcmFtZVwiPlxuICB7I2VhY2ggYnJhbmRzIGFzIGJyYW5kfVxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYnJhbmQtaXRlbSB7YnJhbmRzRmlsdGVyLmluY2x1ZGVzKGJyYW5kLmlkKSA/ICdpc1NlbGVjdGVkJyA6ICdpc05vdFNlbGVjdGVkJ31cIlxuICAgICAgb246bW91c2VlbnRlcj17KCkgPT4gcmVxdWVzdEhpZ2hsaWdodEJyYW5kKGJyYW5kKX1cbiAgICAgIG9uOm1vdXNlbGVhdmU9e3JlcXVlc3RVbmhpZ2hsaWdodEJyYW5kfVxuICAgICAgb246Y2xpY2s9eygpID0+IHRvZ2dsZUJyYW5kc0ZpbHRlcmVkKGJyYW5kKX1cbiAgICAgIHRpdGxlPVwie2JyYW5kLm93bmVyfSAtIHticmFuZFticmFuZC5wcF19XCI+XG4gICAgICB7YnJhbmRbYnJhbmQucHBdfTxiciAvPlxuICAgIDwvZGl2PlxuICB7L2VhY2h9XG48L2Rpdj5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCBDYXRlZ29yaWVzRmlsdGVyIGZyb20gXCIuL0NhdGVnb3JpZXNGaWx0ZXIuc3ZlbHRlXCI7XG4gIGltcG9ydCBLZXl3b3JkRmlsdGVyIGZyb20gXCIuL0tleXdvcmRGaWx0ZXIuc3ZlbHRlXCI7XG4gIGltcG9ydCBCcmFuZHNGaWx0ZXIgZnJvbSBcIi4vQnJhbmRzRmlsdGVyLnN2ZWx0ZVwiO1xuXG4gIGltcG9ydCB7IGNyZWF0ZUV2ZW50RGlzcGF0Y2hlciB9IGZyb20gXCJzdmVsdGVcIjtcblxuICBpbXBvcnQgeyBwcmVwZW5kLCBjbG9uZSwgcmVtb3ZlIH0gZnJvbSBcInJhbWRhL3NyY1wiO1xuXG4gIGltcG9ydCB7IHVzZXIgfSBmcm9tIFwiLi4vLi4vc3RvcmVzXCI7XG5cbiAgZXhwb3J0IGxldCBpc0V2ZW50c1NpZGVwYW5lT247XG4gIGV4cG9ydCBsZXQgZHNhRmlsdGVyQWN0aXZlID0gZmFsc2U7XG4gIGV4cG9ydCBsZXQgZHNhRmlsdGVyID0gW107XG4gIGV4cG9ydCBsZXQgY2F0ZWdvcmllc0luRGF0YXNldDtcbiAgZXhwb3J0IGxldCBjYXRlZ29yaWVzRmlsdGVyO1xuICBleHBvcnQgbGV0IGJyYW5kc0ZpbHRlcjtcbiAgZXhwb3J0IGxldCBoaWdobGlnaHRlZEJyYW5kO1xuICBleHBvcnQgbGV0IGtleXdvcmRGaWx0ZXI7XG4gIGV4cG9ydCBsZXQgaXNOZXdzRmlsdGVyO1xuICBleHBvcnQgbGV0IGlzVmFjYW5jeUZpbHRlciA9IGZhbHNlXG4gIGV4cG9ydCBsZXQgaXNGb2xsb3dlZEZpbHRlcjtcbiAgZXhwb3J0IGxldCBpc0dyYW50ZWRGaWx0ZXI7XG4gIGV4cG9ydCBsZXQgZHNhSG92ZXJlZDtcbiAgZXhwb3J0IGxldCBkc2FTZWxlY3RlZCA9IFtdO1xuXG4gIGNvbnN0IGRpc3BhdGNoID0gY3JlYXRlRXZlbnREaXNwYXRjaGVyKCk7XG4gIGNvbnN0IHRvZ2dsZURzYUZpbHRlckFjdGl2ZSA9ICgpID0+IHtcbiAgICBkc2FGaWx0ZXJBY3RpdmUgPSAhZHNhRmlsdGVyQWN0aXZlO1xuICB9O1xuICBjb25zdCByZXF1ZXN0VG9nZ2xlRHNhRmlsdGVyU2hvd24gPSAoKSA9PiB7XG4gICAgaWYgKGRzYUZpbHRlckFjdGl2ZSkgZGlzcGF0Y2goXCJ0b2dnbGVEc2FGaWx0ZXJTaG93blJlcXVlc3RlZFwiKTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlRHNhSG92ZXJlZCA9IChkc2EpID0+IHtcbiAgICBkc2FIb3ZlcmVkID0gZHNhO1xuICB9O1xuICBjb25zdCBoYW5kbGVEc2FVbmhvdmVyZWQgPSAoKSA9PiB7XG4gICAgZHNhSG92ZXJlZCA9IG51bGw7XG4gIH07XG4gIGNvbnN0IHRvZ2dsZURzYVNlbGVjdGVkID0gKGRzYSkgPT4ge1xuICAgIGRzYVNlbGVjdGVkID0gZHNhU2VsZWN0ZWQuaW5jbHVkZXMoZHNhKVxuICAgICAgPyBkc2FTZWxlY3RlZC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT09IGRzYSlcbiAgICAgIDogcHJlcGVuZChkc2EsIGRzYVNlbGVjdGVkKTtcbiAgfTtcbiAgY29uc3QgdG9nZ2xlTmV3c0ZpbHRlciA9ICgpID0+IHtcbiAgICBpc05ld3NGaWx0ZXIgPSAhaXNOZXdzRmlsdGVyO1xuICB9O1xuICBjb25zdCB0b2dnbGVJc0ZvbGxvd2VkRmlsdGVyID0gKCkgPT4ge1xuICAgIGlzRm9sbG93ZWRGaWx0ZXIgPSAhaXNGb2xsb3dlZEZpbHRlcjtcbiAgfTtcbiAgY29uc3QgdG9nZ2xlSXNHcmFudGVkRmlsdGVyID0gKCkgPT4ge1xuICAgIGlzR3JhbnRlZEZpbHRlciA9ICFpc0dyYW50ZWRGaWx0ZXI7XG4gIH07XG4gIGNvbnN0IHRvZ2dsZVZhY2FuY3lGaWx0ZXIgPSAoKSA9PiB7XG4gICAgaXNWYWNhbmN5RmlsdGVyID0gIWlzVmFjYW5jeUZpbHRlclxuICB9XG48L3NjcmlwdD5cblxuPHN0eWxlPlxuICAuZnJhbWUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgLyogbWFyZ2luOiAwIDAgNXB4O1xuICAgIHBhZGRpbmc6IDAgMCA1cHg7ICovXG4gICAgbWF4LXdpZHRoOiBjYWxjKDEwMHZ3IC0gMjBweCk7XG4gIH1cbiAgLmZyYW1lIC5jYXRlZ29yaWVzLWFuZC1rZXl3b3JkLWZyYW1lIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG4gIC5mcmFtZSAuY2F0ZWdvcmllcy1hbmQta2V5d29yZC1mcmFtZSAuZnVsbC13aWR0aCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDEwcHggMCAwO1xuICB9XG4gIC5mcmFtZSAuY2F0ZWdvcmllcy1hbmQta2V5d29yZC1mcmFtZSAua2V5d29yZC1maWx0ZXItZnJhbWUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtaW4td2lkdGg6IDMwMHB4O1xuICAgIG1hcmdpbjogMCAzcHggMCAwO1xuICAgIGZsZXg6IDE7XG4gIH1cbiAgLmZyYW1lIC5jYXRlZ29yaWVzLWFuZC1rZXl3b3JkLWZyYW1lIC5rZXl3b3JkLWZpbHRlci1mcmFtZSAuaWNvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMzNweDtcbiAgICB3aWR0aDogMzNweDtcbiAgICBtYXJnaW46IDAgM3B4IDAgMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzNiwgMjQwLCAyNDAsIDEpO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgfVxuICAuZnJhbWUgLmNhdGVnb3JpZXMtYW5kLWtleXdvcmQtZnJhbWUgLmtleXdvcmQtZmlsdGVyLWZyYW1lIC5pY29uIGltZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogMjJweDtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIH1cbiAgLmZyYW1lIC5jYXRlZ29yaWVzLWFuZC1rZXl3b3JkLWZyYW1lIC5jYXRlZ29yaWVzLWZpbHRlci1mcmFtZSB7XG4gICAgZmxleDogMTtcbiAgfVxuICAuZnJhbWUgLmRzYS1maWx0ZXItZnJhbWUge1xuICAgIGZsZXg6IDE7XG4gICAgbWFyZ2luOiAxMHB4IDAgMDtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VjZjBmMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG4gIC5mcmFtZSAuZHNhLWZpbHRlci1mcmFtZSAuZHNhLWZpbHRlci1hY3Rpb24tYnV0dG9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuICAuZnJhbWUgLmRzYS1maWx0ZXItZnJhbWUgLmRzYS1maWx0ZXItYWN0aW9uLWJ1dHRvbnMgLmJ1dHRvbiB7XG4gICAgaGVpZ2h0OiAzNXB4O1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHdoaXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHBhZGRpbmc6IDNweDtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgLmZyYW1lIC5kc2EtZmlsdGVyLWZyYW1lIC5kc2EtZmlsdGVyLWFjdGlvbi1idXR0b25zIC5idXR0b24tLWluYWN0aXZlIHtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgb3BhY2l0eTogMC41O1xuICB9XG4gIC5mcmFtZSAuZHNhLWZpbHRlci1mcmFtZSAuZHNhLWZpbHRlci1hY3Rpb24tYnV0dG9ucyAuYnV0dG9uIGltZyB7XG4gICAgaGVpZ2h0OiAyNXB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gIH1cbiAgLmZyYW1lIC5kc2EtZmlsdGVyLWZyYW1lIC5kc2EtZmlsdGVyLWNhcm91c2VsIHtcbiAgICBmbGV4OiAxO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTtcbiAgICBwYWRkaW5nOiAxcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBvdmVyZmxvdy14OiBzY3JvbGw7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbiAgLmZyYW1lIC5kc2EtZmlsdGVyLWZyYW1lIC5kc2EtZmlsdGVyLWNhcm91c2VsLS1pbmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuICAuZnJhbWUgLmRzYS1maWx0ZXItZnJhbWUgLmRzYS1maWx0ZXItY2Fyb3VzZWwgLmRzYSB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG1hcmdpbjogMXB4IDJweDtcbiAgICBwYWRkaW5nOiAxcHg7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGhlaWdodDogZml0LWNvbnRlbnQ7XG4gIH1cbiAgLmZyYW1lIC5kc2EtZmlsdGVyLWZyYW1lIC5kc2EtZmlsdGVyLWNhcm91c2VsIC5kc2EtLW0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1Mjg5ZDE7XG4gIH1cbiAgLmZyYW1lIC5kc2EtZmlsdGVyLWZyYW1lIC5kc2EtZmlsdGVyLWNhcm91c2VsIC5kc2EtLXcge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlYjVjNWM7XG4gIH1cbiAgLmZyYW1lIC5kc2EtZmlsdGVyLWZyYW1lIC5kc2EtZmlsdGVyLWNhcm91c2VsIC5kc2EtLXgge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNkYWE1MjA7XG4gIH1cbiAgLmZyYW1lIC5kc2EtZmlsdGVyLWZyYW1lIC5kc2EtZmlsdGVyLWNhcm91c2VsIC5kc2EtLWhvdmVyZWQge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIC5mcmFtZSAuZHNhLWZpbHRlci1mcmFtZSAuZHNhLWZpbHRlci1jYXJvdXNlbCAuZHNhLS1zZWxlY3RlZCB7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgLmZyYW1lIC5kc2EtZmlsdGVyLWZyYW1lIC5kc2EtZmlsdGVyLWNhcm91c2VsIC50ZXh0IHtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgbWFyZ2luOiAwIDVweDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICBvcGFjaXR5OiAwLjY7XG4gIH1cbiAgLmZyYW1lIC5icmFuZC1maWx0ZXJzLWZyYW1lIHtcbiAgfVxuPC9zdHlsZT5cblxuPGRpdiBjbGFzcz1cImZyYW1lXCI+XG4gIDxkaXYgY2xhc3M9XCJjYXRlZ29yaWVzLWFuZC1rZXl3b3JkLWZyYW1lXCI+XG4gICAgPGRpdiBjbGFzcz1cImtleXdvcmQtZmlsdGVyLWZyYW1lIHshaXNFdmVudHNTaWRlcGFuZU9uID8gJ2Z1bGwtd2lkdGgnIDogJyd9XCI+XG4gICAgICB7I2lmICR1c2VyLnJvbGUgIT09ICdndWVzdCd9XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImljb25cIiBvbjpjbGljaz17dG9nZ2xlTmV3c0ZpbHRlcn0+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgc3JjPXtpc05ld3NGaWx0ZXIgPyAnaWNvbnMvbmV3cy1hY3RpdmUucG5nJyA6ICdpY29ucy9uZXdzLnBuZyd9IC8+XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIiBvbjpjbGljaz17dG9nZ2xlSXNGb2xsb3dlZEZpbHRlcn0+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgc3JjPXtpc0ZvbGxvd2VkRmlsdGVyID8gJ2ljb25zL2ZvbGxvd2luZy5wbmcnIDogJ2ljb25zL2ZvbGxvdy5wbmcnfSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIiBvbjpjbGljaz17dG9nZ2xlSXNHcmFudGVkRmlsdGVyfT5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBzcmM9e2lzR3JhbnRlZEZpbHRlciA/ICdpY29ucy9pc2dyYW50ZWQucG5nJyA6ICdpY29ucy9ncmFudGVkLnBuZyd9IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgey9pZn1cbiAgICAgIDxLZXl3b3JkRmlsdGVyIGJpbmQ6a2V5d29yZEZpbHRlciAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY2F0ZWdvcmllcy1maWx0ZXItZnJhbWUgeyFpc0V2ZW50c1NpZGVwYW5lT24gPyAnZnVsbC13aWR0aCcgOiAnJ31cIj5cbiAgICAgIDxDYXRlZ29yaWVzRmlsdGVyIHtjYXRlZ29yaWVzSW5EYXRhc2V0fSBiaW5kOmNhdGVnb3JpZXNGaWx0ZXIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkc2EtZmlsdGVyLWZyYW1lXCI+XG4gICAgPGRpdiBjbGFzcz1cImRzYS1maWx0ZXItYWN0aW9uLWJ1dHRvbnNcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJidXR0b25cIlxuICAgICAgICBvbjpjbGljaz17dG9nZ2xlVmFjYW5jeUZpbHRlcn1cbiAgICAgICAgdGl0bGU9XCJUb2dnbGUgdmFjYW5jeSBmaWx0ZXJcIj5cbiAgICAgICAgPGltZyBzcmM9XCJpY29ucy9oaXJpbmd7aXNWYWNhbmN5RmlsdGVyID8gJy0tYWN0aXZlJyA6ICcnfS5wbmdcIiBhbHQ9XCJcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcbiAgICAgICAgb246Y2xpY2s9e3RvZ2dsZURzYUZpbHRlckFjdGl2ZX1cbiAgICAgICAgdGl0bGU9XCJUb2dnbGUgcHJvZ3JhbSBmaWx0ZXIgYWN0aXZlXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiL2ljb25zL3N3aXRjaF97ZHNhRmlsdGVyQWN0aXZlID8gJ29uJyA6ICdvZmYnfS5wbmdcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYnV0dG9uIHshZHNhRmlsdGVyQWN0aXZlID8gJ2J1dHRvbi0taW5hY3RpdmUnIDogJyd9XCJcbiAgICAgICAgb246Y2xpY2s9e3JlcXVlc3RUb2dnbGVEc2FGaWx0ZXJTaG93bn1cbiAgICAgICAgdGl0bGU9XCJPcGVuIHByb2dyYW0gcGlja2VyXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiaWNvbnMvZXF1aWxpemVye2RzYUZpbHRlckFjdGl2ZSA/ICctLWFjdGl2ZScgOiAnJ30ucG5nXCIgYWx0PVwiXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZHNhLWZpbHRlci1jYXJvdXNlbCB7IWRzYUZpbHRlckFjdGl2ZSA/ICdkc2EtZmlsdGVyLWNhcm91c2VsLS1pbmFjdGl2ZScgOiAnJ31cIj5cbiAgICAgIHsjaWYgZHNhRmlsdGVyQWN0aXZlICYmIGRzYUZpbHRlci5sZW5ndGggPiAwfVxuICAgICAgICB7I2VhY2ggZHNhRmlsdGVyIGFzIGRzYX1cbiAgICAgICAgICB7I2lmIGlzRXZlbnRzU2lkZXBhbmVPbn1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJkc2FcIlxuICAgICAgICAgICAgICBjbGFzczpkc2EtLW09e2RzYS5pbmNsdWRlcygnLW0tJyl9XG4gICAgICAgICAgICAgIGNsYXNzOmRzYS0tdz17ZHNhLmluY2x1ZGVzKCctdy0nKX1cbiAgICAgICAgICAgICAgY2xhc3M6ZHNhLS14PXtkc2EuaW5jbHVkZXMoJy14LScpfVxuICAgICAgICAgICAgICBjbGFzczpkc2EtLWhvdmVyZWQ9e2RzYSA9PT0gZHNhSG92ZXJlZH1cbiAgICAgICAgICAgICAgY2xhc3M6ZHNhLS1zZWxlY3RlZD17ZHNhU2VsZWN0ZWQuaW5jbHVkZXMoZHNhKX1cbiAgICAgICAgICAgICAgb246bW91c2VlbnRlcj17KCkgPT4gaGFuZGxlRHNhSG92ZXJlZChkc2EpfVxuICAgICAgICAgICAgICBvbjptb3VzZWxlYXZlPXtoYW5kbGVEc2FVbmhvdmVyZWR9XG4gICAgICAgICAgICAgIG9uOmNsaWNrPXsoKSA9PiB0b2dnbGVEc2FTZWxlY3RlZChkc2EpfT5cbiAgICAgICAgICAgICAge2RzYVxuICAgICAgICAgICAgICAgIC50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoJy1NJywgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoJy1XJywgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoJy1YJywgJycpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgezplbHNlfVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImRzYVwiXG4gICAgICAgICAgICAgIGNsYXNzOmRzYS0tbT17ZHNhLmluY2x1ZGVzKCctbS0nKX1cbiAgICAgICAgICAgICAgY2xhc3M6ZHNhLS13PXtkc2EuaW5jbHVkZXMoJy13LScpfVxuICAgICAgICAgICAgICBjbGFzczpkc2EtLXg9e2RzYS5pbmNsdWRlcygnLXgtJyl9XG4gICAgICAgICAgICAgIGNsYXNzOmRzYS0taG92ZXJlZD17ZHNhID09PSBkc2FIb3ZlcmVkfVxuICAgICAgICAgICAgICBjbGFzczpkc2EtLXNlbGVjdGVkPXtkc2FTZWxlY3RlZC5pbmNsdWRlcyhkc2EpfVxuICAgICAgICAgICAgICBvbjpjbGljaz17KCkgPT4gdG9nZ2xlRHNhU2VsZWN0ZWQoZHNhKX0+XG4gICAgICAgICAgICAgIHtkc2FcbiAgICAgICAgICAgICAgICAudG9VcHBlckNhc2UoKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKCctTScsICcnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKCctVycsICcnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKCctWCcsICcnKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHsvaWZ9XG4gICAgICAgIHsvZWFjaH1cbiAgICAgIHs6ZWxzZX1cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIj5GaWx0ZXIgYnkgZGlzY2lwbGluZXMgaW4gcHJvZ3JhbTwvZGl2PlxuICAgICAgey9pZn1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDwhLS0gPGRpdiBjbGFzcz1cImJyYW5kLWZpbHRlcnMtZnJhbWVcIj5cbiAgICA8QnJhbmRzRmlsdGVyIGJpbmQ6aGlnaGxpZ2h0ZWRCcmFuZCBiaW5kOmJyYW5kc0ZpbHRlciAvPlxuICA8L2Rpdj4gLS0+XG48L2Rpdj5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCB7IGdldERheU5hbWUsIGNoZWNrSXNTbG90V2Vla2VuZCB9IGZyb20gXCIuL0RheXNPZldlZWtcIjtcblxuICBleHBvcnQgbGV0IG1vbnRoRGF5c1Nsb3RzO1xuICBleHBvcnQgbGV0IGZpcnN0RGF5T2ZXZWVrO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cbiAgdHIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gICAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gIH1cbiAgdGgge1xuICAgIHdpZHRoOiAxNHB4O1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gICAgcGFkZGluZzogMHB4O1xuICB9XG4gIC5pc1dlZWtlbmQge1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyYXk7XG4gIH1cbiAgLm51bGwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICB9XG4gIC5zZXBhcmF0b3Ige1xuICAgIHdpZHRoOiAxcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIH1cbjwvc3R5bGU+XG5cbjx0cj5cbiAgPHRoIGNsYXNzPVwibnVsbFwiIC8+XG4gIHsjZWFjaCBtb250aERheXNTbG90cyBhcyBzbG90fVxuICAgIHsjaWYgc2xvdC53ZWVrRGF5ID09PSBmaXJzdERheU9mV2Vla31cbiAgICAgIDx0aCBjbGFzczpzZXBhcmF0b3I9e3RydWV9IC8+XG4gICAgey9pZn1cbiAgICA8IS0tIDx0aCBrZXk9e2B3ZWVrZGF5LSR7c2xvdC5pZH1gfSBjbGFzczpib2xkZXI9e3Nsb3Qud2Vla0RheU5vID09PSAwfT5cbiAgICAgIHtnZXREYXlOYW1lKGRheSl9XG4gICAgPC90aD4gLS0+XG4gICAgPHRoIGNsYXNzOmlzV2Vla2VuZD17Y2hlY2tJc1Nsb3RXZWVrZW5kKHNsb3QpfT5cbiAgICAgIHtnZXREYXlOYW1lKHNsb3QpfVxuICAgIDwvdGg+XG4gIHsvZWFjaH1cbjwvdHI+XG4iLCI8c2NyaXB0PlxuICBpbXBvcnQge1xuICAgIGNoZWNrSWZEYXlJc1dpdGhpbkRhdGVSYW5nZSxcbiAgICBjaGVja0lmRGF5aXNUb2RheSxcbiAgICBnZXROb09mSXRlbXNGb3JEYXksXG4gIH0gZnJvbSBcIi4vRGF5XCI7XG5cbiAgZXhwb3J0IGxldCBkYXk7XG4gIGV4cG9ydCBsZXQgdG9kYXk7XG4gIGV4cG9ydCBsZXQgaXRlbXNCeURhdGU7XG4gIGV4cG9ydCBsZXQgZHNhSG92ZXJlZEl0ZW1zQnlEYXRlO1xuICBleHBvcnQgbGV0IGxpc3RlZEl0ZW1zQnlEYXRlO1xuICBleHBvcnQgbGV0IHNob3J0bGlzdGVkSXRlbXNCeURhdGU7XG4gIGV4cG9ydCBsZXQgaXNFdmVuWWVhcjtcbiAgZXhwb3J0IGxldCBoaWdobGlnaHRlZERhdGVSYW5nZTtcbiAgZXhwb3J0IGxldCBzZWxlY3RlZFllYXJEYXRlUmFuZ2U7XG4gIGV4cG9ydCBsZXQgaG92ZXJlZERhdGU7XG4gIGxldCBpc0hvdmVyZWQgPSBmYWxzZTtcblxuICBjb25zdCB1cGRhdGVTZWxlY3RlZERhdGVSYW5nZSA9ICgpID0+IHtcbiAgICBzZWxlY3RlZFllYXJEYXRlUmFuZ2Uuc3RhcnQgPT09IHNlbGVjdGVkWWVhckRhdGVSYW5nZS5lbmRcbiAgICAgID8gZGF5LnllYXJEYXkgPj0gc2VsZWN0ZWRZZWFyRGF0ZVJhbmdlLnN0YXJ0XG4gICAgICAgID8gKHNlbGVjdGVkWWVhckRhdGVSYW5nZS5lbmQgPSBkYXkueWVhckRheSlcbiAgICAgICAgOiAoc2VsZWN0ZWRZZWFyRGF0ZVJhbmdlLnN0YXJ0ID0gZGF5LnllYXJEYXkpXG4gICAgICA6IChzZWxlY3RlZFllYXJEYXRlUmFuZ2Uuc3RhcnQgPSBzZWxlY3RlZFllYXJEYXRlUmFuZ2UuZW5kID0gZGF5LnllYXJEYXkpO1xuICB9O1xuICBjb25zdCB0b2dnbGVEYXlJc0hvdmVyZWQgPSAoKSA9PiB7XG4gICAgaXNIb3ZlcmVkID0gIWlzSG92ZXJlZDtcbiAgICBob3ZlcmVkRGF0ZSA9IGlzSG92ZXJlZCA/IGRheS55ZWFyRGF5IDogdW5kZWZpbmVkO1xuICB9O1xuXG4gICQ6IGlzV2l0aGluU2VsZWN0ZWREYXRlUmFuZ2UgPSBjaGVja0lmRGF5SXNXaXRoaW5EYXRlUmFuZ2UoXG4gICAgZGF5LFxuICAgIHNlbGVjdGVkWWVhckRhdGVSYW5nZVxuICApO1xuICAkOiBpc1RvZGF5ID0gZGF5Lm1vbnRoLnllYXIgPyBjaGVja0lmRGF5aXNUb2RheShkYXksIHRvZGF5KSA6IGZhbHNlO1xuICAvLyoqKipcbiAgJDogaXNEU0FIaWdobGlnaHRlZCA9IGdldE5vT2ZJdGVtc0ZvckRheShkYXksIGRzYUhvdmVyZWRJdGVtc0J5RGF0ZSkgPiAwO1xuICAvLyoqKipcbiAgJDogaXNIaWdobGlnaHRlZCA9XG4gICAgaXNIb3ZlcmVkIHx8IGNoZWNrSWZEYXlJc1dpdGhpbkRhdGVSYW5nZShkYXksIGhpZ2hsaWdodGVkRGF0ZVJhbmdlKTtcbiAgLy8gfHwgZ2V0Tm9PZkl0ZW1zRm9yRGF5KGRheSwgc2hvcnRsaXN0ZWRJdGVtc0J5RGF0ZSkgPiAwO1xuICAkOiBub09mRXZlbnRzID0gZ2V0Tm9PZkl0ZW1zRm9yRGF5KGRheSwgaXRlbXNCeURhdGUpO1xuICAkOiBub09mTGlzdGVkRXZlbnRzID0gZ2V0Tm9PZkl0ZW1zRm9yRGF5KGRheSwgbGlzdGVkSXRlbXNCeURhdGUpO1xuPC9zY3JpcHQ+XG5cbjx0ZFxuICBvbjpjbGljaz17dXBkYXRlU2VsZWN0ZWREYXRlUmFuZ2V9XG4gIG9uOm1vdXNlZW50ZXI9e3RvZ2dsZURheUlzSG92ZXJlZH1cbiAgb246bW91c2VsZWF2ZT17dG9nZ2xlRGF5SXNIb3ZlcmVkfVxuICBjbGFzczppc0V2ZW5ZZWFyXG4gIGNsYXNzOmlzSGlnaGxpZ2h0ZWRcbiAgY2xhc3M6aXNEU0FIaWdobGlnaHRlZD17IWlzSGlnaGxpZ2h0ZWQgJiYgaXNEU0FIaWdobGlnaHRlZH1cbiAgY2xhc3M6aXNXaXRoaW5TZWxlY3RlZERhdGVSYW5nZVxuICBjbGFzczpoYXNFdmVudHM9eyFpc0hpZ2hsaWdodGVkICYmXG4gICAgIWlzRFNBSGlnaGxpZ2h0ZWQgJiZcbiAgICAhaXNUb2RheSAmJlxuICAgIG5vT2ZFdmVudHMgPiAwfVxuICBjbGFzczpoYXNFdmVudHNBbmRJc1dpdGhpblNlbGVjdGVkRGF0ZVJhbmdlPXshaXNIaWdobGlnaHRlZCAmJlxuICAgICFpc0RTQUhpZ2hsaWdodGVkICYmXG4gICAgIWlzVG9kYXkgJiZcbiAgICBub09mRXZlbnRzID4gMCAmJlxuICAgIGlzV2l0aGluU2VsZWN0ZWREYXRlUmFuZ2V9XG4gIGNsYXNzOmhhc0xpc3RlZEV2ZW50cz17IWlzSGlnaGxpZ2h0ZWQgJiZcbiAgICAhaXNEU0FIaWdobGlnaHRlZCAmJlxuICAgICFpc1RvZGF5ICYmXG4gICAgbm9PZkxpc3RlZEV2ZW50cyA+IDB9XG4gIGNsYXNzOmhhc0xpc3RlZEV2ZW50c0FuZElzV2l0aGluU2VsZWN0ZWREYXRlUmFuZ2U9eyFpc0hpZ2hsaWdodGVkICYmXG4gICAgIWlzRFNBSGlnaGxpZ2h0ZWQgJiZcbiAgICAhaXNUb2RheSAmJlxuICAgIG5vT2ZMaXN0ZWRFdmVudHMgPiAwICYmXG4gICAgaXNXaXRoaW5TZWxlY3RlZERhdGVSYW5nZX1cbiAgY2xhc3M9e2lzVG9kYXkgPyAoaXNFdmVuWWVhciA/IFwiaXNUb2RheUluRXZlblllYXJcIiA6IFwiaXNUb2RheVwiKSA6IFwiXCJ9XG4+XG4gIHtkYXkubW9udGhEYXl9XG4gIHsjaWYgaXNIb3ZlcmVkICYmIG5vT2ZFdmVudHMgPiAwfVxuICAgIDxzcGFuIGNsYXNzPVwidG9vbHRpcHRleHRcIj5cbiAgICAgIHtgJHtkYXkubW9udGhEYXl9LyR7ZGF5Lm1vbnRoLm1vbnRoTm99LyR7ZGF5Lm1vbnRoLnllYXJ9YH08YnIgLz5cbiAgICAgIHsjaWYgaXNXaXRoaW5TZWxlY3RlZERhdGVSYW5nZX17bm9PZkxpc3RlZEV2ZW50c30vey9pZn17bm9PZkV2ZW50c31cbiAgICAgIGV2ZW50e25vT2ZFdmVudHMgPiAxID8gXCJzXCIgOiBcIlwifTwvc3BhblxuICAgID5cbiAgey9pZn1cbjwvdGQ+XG5cbjxzdHlsZT5cbiAgdGQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTRweDtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGhlaWdodDogMTJweDtcbiAgICAvKiBjb2xvcjogYmxhY2s7ICovXG4gICAgY29sb3I6IGRhcmtzbGF0ZWdyZXk7XG4gICAgYm9yZGVyOiAxcHggZG90dGVkIGxpZ2h0Z3JheTtcbiAgICAvKiBwYWRkaW5nOiAwcHggMXB4OyAqL1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiAwcHg7XG4gIH1cblxuICAuaXNFdmVuWWVhciB7XG4gICAgY29sb3I6IGRhcmtzbGF0ZWdyZXk7XG4gIH1cblxuICAuaXNXaXRoaW5TZWxlY3RlZERhdGVSYW5nZSB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjgsIDEyOCwgMTI4LCAwLjYxNik7XG4gICAgLyogYm9yZGVyOiAxcHggc29saWQgZGFya3NsYXRlZ3JleTsgKi9cbiAgICBjb2xvcjogd2hpdGVzbW9rZTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIC5pc1RvZGF5IHtcbiAgICBiYWNrZ3JvdW5kOiBzbGF0ZWdyZXk7XG4gICAgY29sb3I6IHdoaXRlc21va2U7XG4gICAgLyogZm9udC13ZWlnaHQ6IGJvbGQ7ICovXG4gIH1cblxuICAuaXNUb2RheUluRXZlblllYXIge1xuICAgIGJhY2tncm91bmQ6IHNsYXRlZ3JleTtcbiAgICBjb2xvcjogd2hpdGVzbW9rZTtcbiAgICAvKiBmb250LXdlaWdodDogYm9sZGVyOyAqL1xuICB9XG5cbiAgLmlzSGlnaGxpZ2h0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNlMjJjM2I7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIC8qIGZvbnQtd2VpZ2h0OiBib2xkOyAqL1xuICB9XG5cbiAgLmlzRFNBSGlnaGxpZ2h0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNlMjJjM2I2MztcbiAgICBjb2xvcjogd2hpdGU7XG4gIH1cblxuICAuaGFzRXZlbnRzIHtcbiAgICBiYWNrZ3JvdW5kOiAjNTQ1YWQyNjA7XG4gICAgLyogY29sb3I6IGRhcmtzbGF0ZWdyZXk7ICovXG4gICAgLyogZm9udC13ZWlnaHQ6IGJvbGQ7ICovXG4gICAgLyogYm9yZGVyOiAxcHggc29saWQgcmVkOyAqL1xuICB9XG5cbiAgLmhhc0V2ZW50c0FuZElzV2l0aGluU2VsZWN0ZWREYXRlUmFuZ2Uge1xuICAgIGJhY2tncm91bmQ6ICM1NDViZDI7XG4gICAgY29sb3I6IHdoaXRlO1xuICB9XG5cbiAgLmhhc0xpc3RlZEV2ZW50cyB7XG4gICAgYmFja2dyb3VuZDogI2Y1YTAyMDVkO1xuICAgIC8qIGNvbG9yOiBibGFjazsgKi9cbiAgICAvKiBmb250LXN0eWxlOiBpdGFsaWM7ICovXG4gICAgLyogZm9udC13ZWlnaHQ6IGJvbGQ7ICovXG4gICAgLyogYm9yZGVyOiAxcHggc29saWQgcmVkOyAqL1xuICB9XG5cbiAgLmhhc0xpc3RlZEV2ZW50c0FuZElzV2l0aGluU2VsZWN0ZWREYXRlUmFuZ2Uge1xuICAgIGJhY2tncm91bmQ6ICNmNWEwMjA7XG4gICAgY29sb3I6IHdoaXRlO1xuICB9XG5cbiAgLnRvb2x0aXB0ZXh0IHtcbiAgICB3aWR0aDogNzBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrc2xhdGVncmV5O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogM3B4IDA7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuXG4gICAgLyogUG9zaXRpb24gdGhlIHRvb2x0aXAgdGV4dCAtIHNlZSBleGFtcGxlcyBiZWxvdyEgKi9cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtMzVweDtcbiAgICBsZWZ0OiAtNjVweDtcbiAgICB6LWluZGV4OiAxO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdD5cbiAgaW1wb3J0IHsgbWFrZU1vbnRoRGF5cyB9IGZyb20gXCIuL01vbnRoXCI7XG5cbiAgaW1wb3J0IERheSBmcm9tIFwiLi9EYXkuc3ZlbHRlXCI7XG5cbiAgZXhwb3J0IGxldCBtb250aDtcbiAgZXhwb3J0IGxldCBtb250aERheXNTbG90cztcbiAgZXhwb3J0IGxldCBmaXJzdERheU9mV2VlaztcbiAgZXhwb3J0IGxldCB0b2RheTtcbiAgZXhwb3J0IGxldCBpdGVtc0J5RGF0ZTtcbiAgZXhwb3J0IGxldCBkc2FIb3ZlcmVkSXRlbXNCeURhdGU7XG4gIGV4cG9ydCBsZXQgbGlzdGVkSXRlbXNCeURhdGU7XG4gIGV4cG9ydCBsZXQgc2hvcnRsaXN0ZWRJdGVtc0J5RGF0ZTtcbiAgZXhwb3J0IGxldCBpc0V2ZW5ZZWFyO1xuICBleHBvcnQgbGV0IGhpZ2hsaWdodGVkRGF0ZVJhbmdlO1xuICBleHBvcnQgbGV0IHNlbGVjdGVkWWVhckRhdGVSYW5nZTtcbiAgZXhwb3J0IGxldCBob3ZlcmVkRGF0ZTtcblxuICBjb25zdCBzZWxlY3RNb250aCA9ICgpID0+IHtcbiAgICBzZWxlY3RlZFllYXJEYXRlUmFuZ2Uuc3RhcnQgPSBtb250aC5maXJzdERheVllYXJEYXk7XG4gICAgc2VsZWN0ZWRZZWFyRGF0ZVJhbmdlLmVuZCA9IG1vbnRoLmxhc3REYXlZZWFyRGF5O1xuICB9O1xuXG4gICQ6IG1vbnRoRGF5cyA9IG1ha2VNb250aERheXMobW9udGgsIG1vbnRoRGF5c1Nsb3RzKTtcbjwvc2NyaXB0PlxuXG48c3R5bGU+XG4gIHRyIHtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gIH1cbiAgdGQge1xuICAgIHdpZHRoOiAxNHB4O1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICB0ZXh0LWFsaWduOiBlbmQ7XG4gICAgcGFkZGluZzogMHB4O1xuICB9XG4gIC5zZXBhcmF0b3Ige1xuICAgIHdpZHRoOiAxcHg7XG4gIH1cbiAgLm1vbnRoTmFtZSB7XG4gICAgY29sb3I6IGRhcmtzbGF0ZWdyZXk7XG4gICAgd2lkdGg6IDUwcHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgLmlzRXZlblllYXIge1xuICAgIGNvbG9yOiBkYXJrc2xhdGVncmV5O1xuICB9XG4gIC5ib2xkZXIge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG4gIH1cbjwvc3R5bGU+XG5cbjx0cj5cbiAgPHRkIGNsYXNzPVwiYm9sZGVyIG1vbnRoTmFtZVwiIGNsYXNzOmlzRXZlblllYXIgb246Y2xpY2s9e3NlbGVjdE1vbnRofT5cbiAgICB7bW9udGgubW9udGhZZWFyVGl0bGV9XG4gIDwvdGQ+XG4gIHsjZWFjaCBtb250aERheXMgYXMgZGF5fVxuICAgIHsjaWYgZGF5LndlZWtEYXkgPT09IGZpcnN0RGF5T2ZXZWVrfVxuICAgICAgPHRkIGNsYXNzOnNlcGFyYXRvcj17dHJ1ZX0gLz5cbiAgICB7L2lmfVxuICAgIHsjaWYgZGF5Lm1vbnRoRGF5fVxuICAgICAgPERheVxuICAgICAgICB7ZGF5fVxuICAgICAgICB7dG9kYXl9XG4gICAgICAgIHtpdGVtc0J5RGF0ZX1cbiAgICAgICAge2RzYUhvdmVyZWRJdGVtc0J5RGF0ZX1cbiAgICAgICAge2xpc3RlZEl0ZW1zQnlEYXRlfVxuICAgICAgICB7c2hvcnRsaXN0ZWRJdGVtc0J5RGF0ZX1cbiAgICAgICAge2lzRXZlblllYXJ9XG4gICAgICAgIHtoaWdobGlnaHRlZERhdGVSYW5nZX1cbiAgICAgICAgYmluZDpzZWxlY3RlZFllYXJEYXRlUmFuZ2VcbiAgICAgICAgYmluZDpob3ZlcmVkRGF0ZSAvPlxuICAgIHs6ZWxzZX1cbiAgICAgIDx0ZCAvPlxuICAgIHsvaWZ9XG4gIHsvZWFjaH1cbjwvdHI+XG4iLCI8c2NyaXB0PlxuICBpbXBvcnQgRGF5c09mV2VlayBmcm9tIFwiLi9EYXlzT2ZXZWVrLnN2ZWx0ZVwiO1xuICBpbXBvcnQgTW9udGggZnJvbSBcIi4vTW9udGguc3ZlbHRlXCI7XG5cbiAgaW1wb3J0IHtcbiAgICBtYWtlVG9kYXksXG4gICAgZ2V0V2Vla2VuZEluTldlZWtzLFxuICAgIG1ha2VNb250aHMsXG4gICAgbWFrZU1vbnRoRGF5c1Nsb3RzLFxuICB9IGZyb20gXCIuL2luZGV4XCI7XG5cbiAgbGV0IHRvZGF5ID0gbWFrZVRvZGF5KCk7XG4gIC8qIGNhbGVuZGFyIGRhdGEgKi9cbiAgZXhwb3J0IGxldCBpdGVtc0J5RGF0ZTtcbiAgZXhwb3J0IGxldCBkc2FIb3ZlcmVkSXRlbXNCeURhdGU7XG4gIGV4cG9ydCBsZXQgbGlzdGVkSXRlbXNCeURhdGU7XG4gIGV4cG9ydCBsZXQgc2hvcnRsaXN0ZWRJdGVtc0J5RGF0ZTtcbiAgZXhwb3J0IGxldCBoaWdobGlnaHRlZERhdGVSYW5nZTtcbiAgZXhwb3J0IGxldCB5ZWFyID0gMjAyNTsgLy90b2RheS55ZWFyO1xuICBleHBvcnQgbGV0IHNlbGVjdGVkRGF0ZVJhbmdlO1xuICBleHBvcnQgbGV0IGhvdmVyZWREYXRlO1xuICAvKiByZW5kZXIgb3B0aW9ucyAqL1xuICBleHBvcnQgbGV0IGZpcnN0RGF5T2ZXZWVrID0gMTtcbiAgZXhwb3J0IGxldCBmb3JjZUZ1bGxXZWVrcyA9IGZhbHNlO1xuICBleHBvcnQgbGV0IHNob3dEYXlzT2ZXZWVrID0gdHJ1ZTtcbiAgY29uc3QgdG90YWxNb250aERheXNTbG90cyA9IGZvcmNlRnVsbFdlZWtzID8gNDIgOiAzNztcbiAgY29uc3QgbW9udGhEYXlzU2xvdHMgPSBtYWtlTW9udGhEYXlzU2xvdHMoXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgdG90YWxNb250aERheXNTbG90c1xuICApO1xuXG4gIGNvbnN0IHNlbGVjdFByZXZpb3VzWWVhciA9ICgpID0+IHtcbiAgICB5ZWFyID0geWVhciAtIDE7XG4gIH07XG4gIGNvbnN0IHNlbGVjdE5leHRZZWFyID0gKCkgPT4ge1xuICAgIHllYXIgPSB5ZWFyICsgMTtcbiAgfTtcblxuICAkOiBzZWxlY3RlZERhdGVSYW5nZSA9IHtcbiAgICAuLi5zZWxlY3RlZERhdGVSYW5nZSxcbiAgICBbeWVhcl06XG4gICAgICBzZWxlY3RlZERhdGVSYW5nZSAmJiBzZWxlY3RlZERhdGVSYW5nZVt5ZWFyXVxuICAgICAgICA/IHNlbGVjdGVkRGF0ZVJhbmdlW3llYXJdXG4gICAgICAgIDogeWVhciA9PT0gdG9kYXkueWVhclxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHN0YXJ0OiBnZXRXZWVrZW5kSW5OV2Vla3ModG9kYXkuZGF0ZSwgLTEpLFxuICAgICAgICAgICAgZW5kOiBnZXRXZWVrZW5kSW5OV2Vla3ModG9kYXkuZGF0ZSwgMiksXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIHN0YXJ0OiAxLFxuICAgICAgICAgICAgZW5kOiAyMCxcbiAgICAgICAgICB9LFxuICB9O1xuICAkOiBtb250aHMgPSBtYWtlTW9udGhzKHllYXIpO1xuICAkOiBpc0V2ZW5ZZWFyID0gISh5ZWFyICUgMik7XG48L3NjcmlwdD5cblxuPGRpdiBjbGFzcz1cIm1haW5cIj5cbiAgPGRpdiBjbGFzcz1cInNlYXNvbi1waWNrZXJcIj5cbiAgICB7I2lmIHllYXIgPiAyMDIwfVxuICAgICAgPGRpdiBjbGFzcz1cInNlYXNvbiB1bnNlbGVjdGVkXCIgb246Y2xpY2s9e3NlbGVjdFByZXZpb3VzWWVhcn0+XG4gICAgICAgIHtgJHt5ZWFyIC0gMX0gPDxgfVxuICAgICAgPC9kaXY+XG4gICAgey9pZn1cbiAgICA8ZGl2IGNsYXNzPVwic2Vhc29uIHNlbGVjdGVkXCI+e3llYXJ9PC9kaXY+XG4gICAgeyNpZiB5ZWFyIDwgMjAyNX1cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFzb24gdW5zZWxlY3RlZFwiIG9uOmNsaWNrPXtzZWxlY3ROZXh0WWVhcn0+XG4gICAgICAgIHtgPj4gJHt5ZWFyICsgMX1gfVxuICAgICAgPC9kaXY+XG4gICAgey9pZn1cbiAgPC9kaXY+XG4gIDx0YWJsZT5cbiAgICA8dGhlYWQ+XG4gICAgICB7I2lmIHNob3dEYXlzT2ZXZWVrfVxuICAgICAgICA8RGF5c09mV2VlayB7bW9udGhEYXlzU2xvdHN9IHtmaXJzdERheU9mV2Vla30gLz5cbiAgICAgIHsvaWZ9XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHk+XG4gICAgICB7I2VhY2ggbW9udGhzIGFzIG1vbnRofVxuICAgICAgICA8TW9udGhcbiAgICAgICAgICB7bW9udGh9XG4gICAgICAgICAge21vbnRoRGF5c1Nsb3RzfVxuICAgICAgICAgIHtmaXJzdERheU9mV2Vla31cbiAgICAgICAgICB7dG9kYXl9XG4gICAgICAgICAge2l0ZW1zQnlEYXRlfVxuICAgICAgICAgIHtkc2FIb3ZlcmVkSXRlbXNCeURhdGV9XG4gICAgICAgICAge2xpc3RlZEl0ZW1zQnlEYXRlfVxuICAgICAgICAgIHtzaG9ydGxpc3RlZEl0ZW1zQnlEYXRlfVxuICAgICAgICAgIHtpc0V2ZW5ZZWFyfVxuICAgICAgICAgIHtoaWdobGlnaHRlZERhdGVSYW5nZX1cbiAgICAgICAgICBiaW5kOnNlbGVjdGVkWWVhckRhdGVSYW5nZT17c2VsZWN0ZWREYXRlUmFuZ2VbeWVhcl19XG4gICAgICAgICAgYmluZDpob3ZlcmVkRGF0ZVxuICAgICAgICAvPlxuICAgICAgey9lYWNofVxuICAgIDwvdGJvZHk+XG4gIDwvdGFibGU+XG48L2Rpdj5cblxuPHN0eWxlPlxuICA6cm9vdCB7XG4gICAgLS1jYWxlbmRhci13aWR0aDogNzM5cHg7XG4gIH1cbiAgLm1haW4ge1xuICAgIHdpZHRoOiB2YXIoLS1jYWxlbmRhci13aWR0aCk7XG4gIH1cbiAgLnNlYXNvbi1waWNrZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMnB4IDA7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIH1cbiAgLnNlYXNvbi1waWNrZXIgLnNlYXNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB3aWR0aDogODBweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuICAuc2Vhc29uLXBpY2tlciAudW5zZWxlY3RlZCB7XG4gICAgY29sb3I6IGxpZ2h0c2xhdGVncmF5O1xuICB9XG4gIC5zZWFzb24tcGlja2VyIC51bnNlbGVjdGVkOmhvdmVyIHtcbiAgICBjb2xvcjogZGFya3NsYXRlZ3JleTtcbiAgfVxuICAuc2Vhc29uLXBpY2tlciAuc2Vhc29uIC51bnNlbGVjdGVkOmhvdmVyIC5pc0luRXZlblllYXIge1xuICAgIGNvbG9yOiBnb2xkZW5yb2Q7XG4gIH1cbiAgLnNlYXNvbi1waWNrZXIgLnNlbGVjdGVkIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1OGIyMDtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgLyogZmxleDogMSAwIGF1dG87ICovXG4gIH1cbiAgLnNlYXNvbi1waWNrZXIgLnNlbGVjdGVkIC5pc0luRXZlblllYXIge1xuICAgIGNvbG9yOiBnb2xkZW5yb2Q7XG4gIH1cbiAgdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHNsYXRlZ3JheTtcbiAgICBwYWRkaW5nOiAwcHg7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0PlxuICBpbXBvcnQgeyB0b0RhdGUsIGdldERheU9mWWVhciwgZm9ybWF0LCBnZXRXZWVrZW5kSW5OV2Vla3MgfSBmcm9tIFwiLi9pbmRleFwiO1xuXG4gIC8qIGNhbGVuZGFyIGRhdGEgKi9cbiAgLy8gZXhwb3J0IGxldCBpdGVtc0J5RGF0ZTtcbiAgLy8gZXhwb3J0IGxldCBsaXN0ZWRJdGVtc0J5RGF0ZTtcbiAgLy8gZXhwb3J0IGxldCBoaWdobGlnaHRlZERhdGVSYW5nZTtcbiAgbGV0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgZXhwb3J0IGxldCB5ZWFyID0gdG9kYXkuZ2V0RnVsbFllYXIoKTtcbiAgZXhwb3J0IGxldCBzZWxlY3RlZERhdGVSYW5nZSA9IHsgW3llYXJdOiB7fSB9O1xuICBjb25zb2xlLmxvZyh5ZWFyKTtcbiAgbGV0IGRhdGVSYW5nZSA9IHtcbiAgICBzdGFydERhdGU6IGdldFdlZWtlbmRJbk5XZWVrcyh0b2RheSwgLTEpLFxuICAgIGVuZERhdGU6IGdldFdlZWtlbmRJbk5XZWVrcyh0b2RheSwgMiksXG4gIH07XG5cbiAgY29uc3Qgc3RhcnREYXRlQ2hhbmdlZCA9ICgpID0+IHtcbiAgICBpZiAoZGF0ZVJhbmdlLnN0YXJ0RGF0ZSA+IGRhdGVSYW5nZS5lbmREYXRlKVxuICAgICAgZGF0ZVJhbmdlLmVuZERhdGUgPSBkYXRlUmFuZ2Uuc3RhcnREYXRlO1xuICAgIGlmIChkYXRlUmFuZ2Uuc3RhcnREYXRlLnN1YnN0cmluZygwLCA0KSAhPT0geWVhci50b1N0cmluZygpKSB7XG4gICAgICB5ZWFyID0gZGF0ZVJhbmdlLnN0YXJ0RGF0ZS5zdWJzdHJpbmcoMCwgNCk7XG4gICAgICBkYXRlUmFuZ2UuZW5kRGF0ZSA9IGRhdGVSYW5nZS5zdGFydERhdGU7XG4gICAgfVxuICB9O1xuICBjb25zdCBlbmREYXRlQ2hhbmdlZCA9ICgpID0+IHtcbiAgICBpZiAoZGF0ZVJhbmdlLmVuZERhdGUgPCBkYXRlUmFuZ2Uuc3RhcnREYXRlKVxuICAgICAgZGF0ZVJhbmdlLnN0YXJ0RGF0ZSA9IGRhdGVSYW5nZS5lbmREYXRlO1xuICAgIGlmIChkYXRlUmFuZ2UuZW5kRGF0ZS5zdWJzdHJpbmcoMCwgNCkgIT09IHllYXIudG9TdHJpbmcoKSkge1xuICAgICAgeWVhciA9IGRhdGVSYW5nZS5lbmREYXRlLnN1YnN0cmluZygwLCA0KTtcbiAgICAgIGRhdGVSYW5nZS5zdGFydERhdGUgPSBkYXRlUmFuZ2UuZW5kRGF0ZTtcbiAgICB9XG4gIH07XG5cbiAgJDogaWYgKHNlbGVjdGVkRGF0ZVJhbmdlW3llYXJdKVxuICAgIHNlbGVjdGVkRGF0ZVJhbmdlW3llYXJdLnN0YXJ0ID0gZ2V0RGF5T2ZZZWFyKG5ldyBEYXRlKGRhdGVSYW5nZS5zdGFydERhdGUpKTtcbiAgJDogaWYgKHNlbGVjdGVkRGF0ZVJhbmdlW3llYXJdKVxuICAgIHNlbGVjdGVkRGF0ZVJhbmdlW3llYXJdLmVuZCA9IGdldERheU9mWWVhcihuZXcgRGF0ZShkYXRlUmFuZ2UuZW5kRGF0ZSkpO1xuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJkYXRlcGlja2Vycy1mcmFtZVwiPlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlclwiIHRpdGxlPVwic3RhcnQgZGF0ZVwiPlxuICAgIDxpbWcgc3JjPVwiaWNvbnMvc3RhcnRkYXRlLnBuZ1wiIC8+XG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cImRhdGVcIlxuICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgbWluPVwiMjAyMC0wMS0wMVwiXG4gICAgICBtYXg9XCIyMDI1LTEyLTMxXCJcbiAgICAgIGJpbmQ6dmFsdWU9e2RhdGVSYW5nZS5zdGFydERhdGV9XG4gICAgICBvbjppbnB1dD17c3RhcnREYXRlQ2hhbmdlZH1cbiAgICAvPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJcIiB0aXRsZT1cImVuZCBkYXRlXCI+XG4gICAgPGltZyBzcmM9XCJpY29ucy9lbmRkYXRlLnBuZ1wiIC8+XG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cImRhdGVcIlxuICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgbWluPVwiMjAyMC0wMS0wMVwiXG4gICAgICBtYXg9XCIyMDI1LTEyLTMxXCJcbiAgICAgIGJpbmQ6dmFsdWU9e2RhdGVSYW5nZS5lbmREYXRlfVxuICAgICAgb246aW5wdXQ9e2VuZERhdGVDaGFuZ2VkfVxuICAgIC8+XG4gIDwvZGl2PlxuICA8IS0tIDxkaXYgY2xhc3M9XCJ0b2dnbGVGaWx0ZXJzXCI+XG4gICAgICA8aW1nIHNyYz1cImljb25zL2ZpbHRlci5wbmdcIiAvPlxuICAgIDwvZGl2PiAtLT5cbjwvZGl2PlxuXG48c3R5bGU+XG4gIC5kYXRlcGlja2Vycy1mcmFtZSB7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgfVxuICAudG9nZ2xlRmlsdGVycyB7XG4gICAgd2lkdGg6IDclO1xuICAgIGhlaWdodDogMzZweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNmMGYxO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG4gIC5kYXRlcGlja2VyIHtcbiAgICB3aWR0aDogNDklO1xuICAgIGhlaWdodDogMzZweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNmMGYxO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG4gIGltZyB7XG4gICAgLyogZmxleDogbm9uZTsgKi9cbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgaGVpZ2h0OiAyNXB4O1xuICAgIHBhZGRpbmc6IDAgMnZ3IDAgMXZ3O1xuICB9XG4gIC5kYXRlIHtcbiAgICBmbGV4OiAxO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VjZjBmMTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCBZZWFybHlDYWxlbmRhciBmcm9tIFwiLi4vLi4vdWkvWWVhcmx5Q2FsZW5kYXIvaW5kZXguc3ZlbHRlXCI7XG4gIGltcG9ydCBEYXRlQnJvd3NlciBmcm9tIFwiLi4vLi4vdWkvRGF0ZUJyb3dzZXIvaW5kZXguc3ZlbHRlXCI7XG5cbiAgZXhwb3J0IGxldCBpc0V2ZW50c1NpZGVwYW5lT247XG4gIGV4cG9ydCBsZXQgZXZlbnRzQnlEYXRlO1xuICBleHBvcnQgbGV0IGRzYUhvdmVyZWRFdmVudHNCeURhdGU7XG4gIGV4cG9ydCBsZXQgbGlzdGVkRXZlbnRzQnlEYXRlO1xuICBleHBvcnQgbGV0IGhpZ2hsaWdodGVkRGF0ZVJhbmdlO1xuICBleHBvcnQgbGV0IHNob3J0bGlzdGVkRXZlbnRzQnlEYXRlO1xuICBleHBvcnQgbGV0IHNlbGVjdGVkU2Vhc29uO1xuICBleHBvcnQgbGV0IGRhdGVSYW5nZUZpbHRlcjtcbiAgZXhwb3J0IGxldCBob3ZlcmVkRGF0ZTtcbjwvc2NyaXB0PlxuXG48c3R5bGU+XG4gIC8qIC5mcmFtZSB7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgbWF4LXdpZHRoOiBjYWxjKHZhcigtLWNhbGVuZGFyLXdpZHRoKSArIDQwcHgpO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICBib3gtc2hhZG93OiAwIDAgMTVweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gIH0gKi9cbiAgLmZyYW1lLS1uby1zaWRlcGFuZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIH1cbiAgLmZyYW1lLS1zaWRlcGFuZS1vbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICB9XG48L3N0eWxlPlxuXG48ZGl2XG4gIGNsYXNzOmZyYW1lLS1uby1zaWRlcGFuZT17IWlzRXZlbnRzU2lkZXBhbmVPbn1cbiAgY2xhc3M6ZnJhbWUtLXNpZGVwYW5lLW9uPXtpc0V2ZW50c1NpZGVwYW5lT259PlxuICB7I2lmIGlzRXZlbnRzU2lkZXBhbmVPbiAhPT0gdW5kZWZpbmVkfVxuICAgIHsjaWYgaXNFdmVudHNTaWRlcGFuZU9ufVxuICAgICAgPFllYXJseUNhbGVuZGFyXG4gICAgICAgIGl0ZW1zQnlEYXRlPXtldmVudHNCeURhdGV9XG4gICAgICAgIGRzYUhvdmVyZWRJdGVtc0J5RGF0ZT17ZHNhSG92ZXJlZEV2ZW50c0J5RGF0ZX1cbiAgICAgICAgbGlzdGVkSXRlbXNCeURhdGU9e2xpc3RlZEV2ZW50c0J5RGF0ZX1cbiAgICAgICAgc2hvcnRsaXN0ZWRJdGVtc0J5RGF0ZT17c2hvcnRsaXN0ZWRFdmVudHNCeURhdGV9XG4gICAgICAgIHtoaWdobGlnaHRlZERhdGVSYW5nZX1cbiAgICAgICAgYmluZDp5ZWFyPXtzZWxlY3RlZFNlYXNvbn1cbiAgICAgICAgYmluZDpzZWxlY3RlZERhdGVSYW5nZT17ZGF0ZVJhbmdlRmlsdGVyfVxuICAgICAgICBiaW5kOmhvdmVyZWREYXRlIC8+XG4gICAgezplbHNlfVxuICAgICAgPERhdGVCcm93c2VyXG4gICAgICAgIGJpbmQ6eWVhcj17c2VsZWN0ZWRTZWFzb259XG4gICAgICAgIGJpbmQ6c2VsZWN0ZWREYXRlUmFuZ2U9e2RhdGVSYW5nZUZpbHRlcn0gLz5cbiAgICB7L2lmfVxuICB7L2lmfVxuPC9kaXY+XG4iLCI8c2NyaXB0PlxuICBpbXBvcnQgeyBjcmVhdGVFdmVudERpc3BhdGNoZXIsIG9uTW91bnQgfSBmcm9tIFwic3ZlbHRlXCI7XG5cbiAgY29uc3QgZGlzcGF0Y2ggPSBjcmVhdGVFdmVudERpc3BhdGNoZXIoKTtcblxuICBleHBvcnQgbGV0IGhvbWVMb2NhdGlvbjtcbiAgZXhwb3J0IGxldCBib3VuZHM7XG4gIGV4cG9ydCBsZXQgY3VycmVudExvY2F0aW9uO1xuICBleHBvcnQgbGV0IGZlYXR1cmVzO1xuICBleHBvcnQgbGV0IHNob3J0bGlzdGVkRmVhdHVyZXM7XG4gIGV4cG9ydCBsZXQgaGlnaGxpZ2h0ZWRGZWF0dXJlID0ge307XG4gIGV4cG9ydCBsZXQgdmlld3BvcnRXSDtcbiAgbGV0IG1hcDtcbiAgbGV0IG1pbmlNYXA7XG4gIGxldCBtaW5pbWFwVztcbiAgbGV0IG1pbmlNYXBUaWxlO1xuICBsZXQgbW91bnRlZCA9IGZhbHNlO1xuICBsZXQgZmVhdHVyZXNMYXllcjtcbiAgbGV0IG1pbmlNYXBGZWF0dXJlc0xheWVyO1xuICBsZXQgc2hvcnRsaXN0ZWRGZWF0dXJlc0xheWVyO1xuICBsZXQgaGlnaGxpZ2h0ZWRGZWF0dXJlTGF5ZXI7XG4gIGxldCBleHRlcm5hbEhpZ2hsaWdodCA9IHRydWU7XG4gIGNvbnN0IGluaXRpYWxpemVNYXAgPSAoKSA9PiB7XG4gICAgLy8gYXR0YWNoIG1hcCB0byBkaXZcbiAgICBtYXAgPSBMLm1hcChcIm1hcGRpdlwiLCB7XG4gICAgICAvLyBjZW50ZXIsXG4gICAgICAvLyB6b29tLFxuICAgICAgc2Nyb2xsV2hlZWxab29tOiB0cnVlLFxuICAgICAgd2hlZWxQeFBlclpvb21MZXZlbDogMjQwLFxuICAgICAgem9vbUNvbnRyb2w6IGZhbHNlLFxuICAgICAgYXR0cmlidXRpb25Db250cm9sOiBmYWxzZSxcblx0XHRcdG1heEJvdW5kc1Zpc2Nvc2l0eTogMCxcblx0XHRcdG1heFpvb206IDE2LFxuXHRcdFx0bWluWm9vbTogNFxuICAgICAgLy8gZ2VzdHVyZUhhbmRsaW5nOiB0cnVlXG4gICAgfSk7XG4gICAgLy8gRGVmaW5lIHRoZSBnZW9ncmFwaGljYWwgYm91bmRzIChsYXRpdHVkZSBhbmQgbG9uZ2l0dWRlKSB0byBsaW1pdCB0aGUgbWFwIHBhbm5pbmdcblx0XHQvLyBhbmQgbGltaXQgdGhlIG1hcCB0byB0aGlzIGJvdW5kaW5nIGJveCBzbyB0aGF0IHRoZSBtYXAgY2Fubm90IGJlIHBhbm5lZCBvdXRzaWRlIGl0XG5cdFx0Y29uc3QgbWF4Qm91bmRzID0gTC5sYXRMbmdCb3VuZHMoXG5cdFx0XHRMLmxhdExuZygtNjAuMCwgLTE5MC4wKSwgLy8gU291dGh3ZXN0IGNvcm5lciBbbGF0aXR1ZGUsIGxvbmdpdHVkZV1cblx0XHRcdEwubGF0TG5nKDcwLjAsIDE5MC4wKSAvLyBOb3J0aGVhc3QgY29ybmVyIFtsYXRpdHVkZSwgbG9uZ2l0dWRlXVxuXHRcdCk7XG5cdFx0bWFwLnNldE1heEJvdW5kcyhtYXhCb3VuZHMpO1xuXHRcdC8vIGRldGVybWluZSBtYXAgY2VudGVyIGFuZCB6b29tXG4gICAgLy8gZGV0ZXJtaW5lIG1hcCBjZW50ZXIgYW5kIHpvb21cbiAgICBsZXQgY2VudGVyO1xuICAgIGxldCB6b29tO1xuICAgIGlmIChib3VuZHMuX3NvdXRoV2VzdCkge1xuICAgICAgLy8gdXNlIGV4aXN0aW5nIGJvdW5kcywgaWYgc2V0Li4uXG4gICAgICBsZXQgc3dDb3JuZXIgPSBMLmxhdExuZyhib3VuZHMuX3NvdXRoV2VzdC5sYXQsIGJvdW5kcy5fc291dGhXZXN0LmxuZyk7XG4gICAgICBsZXQgbmVDb3JuZXIgPSBMLmxhdExuZyhib3VuZHMuX25vcnRoRWFzdC5sYXQsIGJvdW5kcy5fbm9ydGhFYXN0LmxuZyk7XG4gICAgICBib3VuZHMgPSBMLmxhdExuZ0JvdW5kcyhbc3dDb3JuZXIsIG5lQ29ybmVyXSk7XG4gICAgICBjZW50ZXIgPSBib3VuZHMuZ2V0Q2VudGVyKCk7XG4gICAgICB6b29tID0gbWFwLmdldEJvdW5kc1pvb20oYm91bmRzKTtcbiAgICAgIC8vIG1hcC5maXRCb3VuZHMoYm91bmRzKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBvdGhlcndpc2UgZ2V0IGJvdW5kcyBmcm9tIGN1cnJlbnQgdXNlciBsb2NhdGlvblxuICAgICAgY2VudGVyID1cbiAgICAgICAgY3VycmVudExvY2F0aW9uICYmXG4gICAgICAgIGN1cnJlbnRMb2NhdGlvbi5nZW9tZXRyeSAmJlxuICAgICAgICBjdXJyZW50TG9jYXRpb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoID4gMFxuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICBjdXJyZW50TG9jYXRpb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0sXG4gICAgICAgICAgICAgIGN1cnJlbnRMb2NhdGlvbi5nZW9tZXRyeS5jb29yZGluYXRlc1swXSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IFs0NSwgMTVdOyAvLyBnZW9sb2thY2lqYSBaYWdyZWJhLFxuICAgICAgem9vbSA9IDY7XG4gICAgfVxuICAgIC8vIHJlZHJhdyBtYXAgb24gbGFzdCBwb3NpdGlvblxuICAgIG1hcC5zZXRWaWV3KGNlbnRlcik7XG4gICAgbWFwLnNldFpvb20oem9vbSk7XG4gICAgYm91bmRzID0gbWFwLmdldEJvdW5kcygpO1xuICAgIC8vIHNldCBtYXAgdmFyaWFibGVzXG4gICAgbGV0IG1hcFVSTCA9IFwiaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmdcIjtcbiAgICB2YXIgY2FydG9VcmwgPSBcImh0dHA6Ly97c30uYmFzZW1hcHMuY2FydG9jZG4uY29tL2RhcmtfYWxsL3t6fS97eH0ve3l9LnBuZ1wiO1xuICAgIGxldCBhdHRyaWJ1dGlvbiA9IGAmY29weTsgPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiPk9wZW5TdHJlZXRNYXA8L2E+IGNvbnRyaWJ1dG9yc2A7XG4gICAgLy8gYXR0YWNoIGJhc2UgdGlsZSBsYXllciB0byBtYXBcbiAgICBsZXQgbWFwVGlsZSA9IEwudGlsZUxheWVyKG1hcFVSTCwge1xuICAgICAgYXR0cmlidXRpb24sXG4gICAgfSk7XG4gICAgbWFwLmFkZExheWVyKG1hcFRpbGUpO1xuICAgIC8vIGFkZCBhdHRyYnV0aW9uXG4gICAgTC5jb250cm9sLmF0dHJpYnV0aW9uKHsgcG9zaXRpb246IFwidG9wbGVmdFwiIH0pLmFkZFRvKG1hcCk7XG4gICAgLy8gaGFuZGxlIHZpZXcgY2hhbmdlc1xuICAgIG1hcC5vbihcInJlc2l6ZSBtb3ZlZW5kIHpvb21lbmRcIiwgKCkgPT4ge1xuICAgICAgYm91bmRzID0gbWFwLmdldEJvdW5kcygpO1xuICAgIH0pO1xuICAgIC8vIGFkZCBtaW5pbWFwXG4gICAgbWluaU1hcFRpbGUgPSBMLnRpbGVMYXllcihtYXBVUkwsIHtcbiAgICAgIG1pblpvb206IDAsXG4gICAgICBtYXhab29tOiAwLFxuICAgIH0pO1xuICAgIG1pbmlNYXAgPSBuZXcgTC5Db250cm9sLk1pbmlNYXAobWluaU1hcFRpbGUsIHtcbiAgICAgIHBvc2l0aW9uOiBcInRvcHJpZ2h0XCIsXG4gICAgICB0b2dnbGVEaXNwbGF5OiB0cnVlLFxuICAgICAgaGVpZ2h0OiBtaW5pbWFwVyAqICgyIC8gMyksXG4gICAgICB3aWR0aDogbWluaW1hcFcsXG4gICAgICB6b29tTGV2ZWxGaXhlZDogMCxcbiAgICAgIC8vIGNlbnRlckZpeGVkOiBbMzAsIDEwXSxcbiAgICAgIGFpbWluZ1JlY3RPcHRpb25zOiB7IGNvbG9yOiBcInNsYXRlZ3JleVwiLCB3ZWlnaHQ6IDIgfSxcbiAgICAgIHNoYWRvd1JlY3RPcHRpb25zOiB7XG4gICAgICAgIGNvbG9yOiBcIiMwMDAwQUFcIixcbiAgICAgICAgd2VpZ2h0OiAxLFxuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICBmaWxsT3BhY2l0eTogMCxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgbWFwLmFkZENvbnRyb2wobWluaU1hcCk7XG4gIH07XG5cbiAgY29uc3QgZ2V0SWNvbiA9IChmZWF0dXJlKSA9PiB7XG4gICAgbGV0IGljb25Vcmw7XG4gICAgc3dpdGNoIChmZWF0dXJlLnByb3BlcnRpZXMuYnJhbmQpIHtcbiAgICAgIGNhc2UgXCJlYXBjaXJjdWl0XCI6XG4gICAgICAgIGljb25VcmwgPSBcImJyYW5kcy9lYXAtaW5hY3RpdmUuc3ZnXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImdvbGRlbmZseVwiOlxuICAgICAgICBpY29uVXJsID0gXCJicmFuZHMvZ29sZGVuZmx5LWluYWN0aXZlLnBuZ1wiO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGljb25VcmxcbiAgICAgID8gTC5pY29uKHtcbiAgICAgICAgICBpY29uVXJsOiBpY29uVXJsLFxuICAgICAgICAgIGljb25TaXplOiBbMjIsIDIyXSwgLy8gc2l6ZSBvZiB0aGUgaWNvblxuICAgICAgICAgIGljb25BbmNob3I6IFsxMiwgMjRdLCAvLyBwb2ludCBvZiB0aGUgaWNvbiB3aGljaCB3aWxsIGNvcnJlc3BvbmQgdG8gbWFya2VyJ3MgbG9jYXRpb25cbiAgICAgICAgICBwb3B1cEFuY2hvcjogWzI0LCAwXSwgLy8gcG9pbnQgZnJvbSB3aGljaCB0aGUgcG9wdXAgc2hvdWxkIG9wZW4gcmVsYXRpdmUgdG8gdGhlIGljb25BbmNob3JcbiAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICB9KVxuICAgICAgOiBMLmRpdkljb24oe1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJtYXJrZXJJY29uXCIsXG4gICAgICAgICAgaHRtbDogZmVhdHVyZS5wcm9wZXJ0aWVzLmNhdGVnb3J5LnRvVXBwZXJDYXNlKCksXG4gICAgICAgICAgaWNvblNpemU6IFsyNCwgMjRdLCAvLyBzaXplIG9mIHRoZSBpY29uXG4gICAgICAgICAgaWNvbkFuY2hvcjogWzEyLCAyNF0sIC8vIHBvaW50IG9mIHRoZSBpY29uIHdoaWNoIHdpbGwgY29ycmVzcG9uZCB0byBtYXJrZXIncyBsb2NhdGlvblxuICAgICAgICAgIHBvcHVwQW5jaG9yOiBbMjQsIDBdLCAvLyBwb2ludCBmcm9tIHdoaWNoIHRoZSBwb3B1cCBzaG91bGQgb3BlbiByZWxhdGl2ZSB0byB0aGUgaWNvbkFuY2hvclxuICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgIH0pO1xuICB9O1xuICBjb25zdCBnZXRIb3ZlcmVkSWNvbiA9IChmZWF0dXJlKSA9PiB7XG4gICAgbGV0IGFjdGl2ZUljb25Vcmw7XG4gICAgc3dpdGNoIChmZWF0dXJlLnByb3BlcnRpZXMuYnJhbmQpIHtcbiAgICAgIGNhc2UgXCJlYXBjaXJjdWl0XCI6XG4gICAgICAgIGFjdGl2ZUljb25VcmwgPSBcImJyYW5kcy9lYXAtYWN0aXZlLnN2Z1wiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJnb2xkZW5mbHlcIjpcbiAgICAgICAgYWN0aXZlSWNvblVybCA9IFwiYnJhbmRzL2dvbGRlbmZseS1hY3RpdmUucG5nXCI7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gYWN0aXZlSWNvblVybFxuICAgICAgPyBMLmljb24oe1xuICAgICAgICAgIGljb25Vcmw6IGFjdGl2ZUljb25VcmwsXG4gICAgICAgICAgaWNvblNpemU6IFsyMiwgMjJdLCAvLyBzaXplIG9mIHRoZSBpY29uXG4gICAgICAgICAgaWNvbkFuY2hvcjogWzEyLCAyNF0sIC8vIHBvaW50IG9mIHRoZSBpY29uIHdoaWNoIHdpbGwgY29ycmVzcG9uZCB0byBtYXJrZXIncyBsb2NhdGlvblxuICAgICAgICAgIHBvcHVwQW5jaG9yOiBbMjQsIDBdLCAvLyBwb2ludCBmcm9tIHdoaWNoIHRoZSBwb3B1cCBzaG91bGQgb3BlbiByZWxhdGl2ZSB0byB0aGUgaWNvbkFuY2hvclxuICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgIH0pXG4gICAgICA6IEwuZGl2SWNvbih7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcImhpZ2hsaWdodGVkTWFya2VySWNvblwiLFxuICAgICAgICAgIGh0bWw6IGZlYXR1cmUucHJvcGVydGllcy5jYXRlZ29yeS50b1VwcGVyQ2FzZSgpLFxuICAgICAgICAgIGljb25TaXplOiBbMjQsIDI0XSwgLy8gc2l6ZSBvZiB0aGUgaWNvblxuICAgICAgICAgIGljb25BbmNob3I6IFsxMiwgMjRdLCAvLyBwb2ludCBvZiB0aGUgaWNvbiB3aGljaCB3aWxsIGNvcnJlc3BvbmQgdG8gbWFya2VyJ3MgbG9jYXRpb25cbiAgICAgICAgICBwb3B1cEFuY2hvcjogWzI0LCAwXSwgLy8gcG9pbnQgZnJvbSB3aGljaCB0aGUgcG9wdXAgc2hvdWxkIG9wZW4gcmVsYXRpdmUgdG8gdGhlIGljb25BbmNob3JcbiAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICB9KTtcbiAgfTtcbiAgY29uc3QgZ2V0U2hvcnRsaXN0ZWRJY29uID0gKGZlYXR1cmUpID0+IGdldEhvdmVyZWRJY29uKGZlYXR1cmUpO1xuICBjb25zdCBnZXRIaWdobGlnaHRlZEljb24gPSAoZmVhdHVyZSkgPT4gZ2V0SG92ZXJlZEljb24oZmVhdHVyZSk7XG5cbiAgY29uc3QgaGFuZGxlSG92ZXJBbmRDbGljayA9IChtYXJrZXIsIGZlYXR1cmUpID0+IHtcbiAgICBtYXJrZXIub24oXCJtb3VzZW92ZXJcIiwgKCkgPT4ge1xuICAgICAgZXh0ZXJuYWxIaWdobGlnaHQgPSBmYWxzZTtcbiAgICAgIGRpc3BhdGNoKFwiZmVhdHVyZUhvdmVyZWRcIiwgZmVhdHVyZSk7XG4gICAgICBtYXJrZXIuc2V0SWNvbihnZXRIb3ZlcmVkSWNvbihmZWF0dXJlKSk7XG4gICAgfSk7XG4gICAgbWFya2VyLm9uKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goXCJmZWF0dXJlQ2xpY2tlZFwiLCBmZWF0dXJlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbWFya2VyO1xuICB9O1xuICBjb25zdCBmZWF0dXJlVG9MYXllciA9IChmZWF0dXJlLCBsYXRsbmcpID0+IHtcbiAgICBjb25zdCB6SW5kZXhPZmZzZXQgPSA2MDA7XG4gICAgbGV0IG1hcmtlciA9IEwubWFya2VyKGxhdGxuZyk7XG4gICAgbWFya2VyLnNldEljb24oZ2V0SWNvbihmZWF0dXJlKSk7XG4gICAgbWFya2VyLnNldFpJbmRleE9mZnNldCh6SW5kZXhPZmZzZXQpO1xuICAgIG1hcmtlci5vbihcIm1vdXNlb3V0XCIsICgpID0+IHtcbiAgICAgIGV4dGVybmFsSGlnaGxpZ2h0ID0gdHJ1ZTtcbiAgICAgIG1hcmtlci5zZXRJY29uKGdldEljb24oZmVhdHVyZSkpO1xuICAgICAgZGlzcGF0Y2goXCJmZWF0dXJlSG92ZXJlZFwiKTtcbiAgICB9KTtcbiAgICByZXR1cm4gaGFuZGxlSG92ZXJBbmRDbGljayhtYXJrZXIsIGZlYXR1cmUpO1xuICB9O1xuICBjb25zdCBzaG9ydGxpc3RlZEZlYXR1cmVUb0xheWVyID0gKGZlYXR1cmUsIGxhdGxuZykgPT4ge1xuICAgIGNvbnN0IHpJbmRleE9mZnNldCA9IDYxMDtcbiAgICBsZXQgbWFya2VyID0gTC5tYXJrZXIobGF0bG5nKTtcbiAgICBtYXJrZXIuc2V0SWNvbihnZXRTaG9ydGxpc3RlZEljb24oZmVhdHVyZSkpO1xuICAgIG1hcmtlci5zZXRaSW5kZXhPZmZzZXQoekluZGV4T2Zmc2V0KTtcbiAgICBtYXJrZXIub24oXCJtb3VzZW91dFwiLCAoKSA9PiB7XG4gICAgICBkaXNwYXRjaChcImZlYXR1cmVIb3ZlcmVkXCIpO1xuICAgICAgbWFya2VyLnNldEljb24oZ2V0U2hvcnRsaXN0ZWRJY29uKGZlYXR1cmUpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gaGFuZGxlSG92ZXJBbmRDbGljayhtYXJrZXIsIGZlYXR1cmUpO1xuICB9O1xuICBjb25zdCBoaWdobGlnaHRlZEZlYXR1cmVUb0xheWVyID0gKGZlYXR1cmUsIGxhdGxuZykgPT4ge1xuICAgIGNvbnN0IHpJbmRleE9mZnNldCA9IDYyMDtcbiAgICBsZXQgbWFya2VyID0gTC5tYXJrZXIobGF0bG5nKTtcbiAgICBtYXJrZXIuc2V0SWNvbihnZXRIaWdobGlnaHRlZEljb24oZmVhdHVyZSkpO1xuICAgIG1hcmtlci5zZXRaSW5kZXhPZmZzZXQoekluZGV4T2Zmc2V0KTtcbiAgICByZXR1cm4gaGFuZGxlSG92ZXJBbmRDbGljayhtYXJrZXIsIGZlYXR1cmUpO1xuICB9O1xuICBjb25zdCBkaXNwbGF5RmVhdHVyZXMgPSAoKSA9PiB7XG4gICAgaWYgKGZlYXR1cmVzTGF5ZXIpIGZlYXR1cmVzTGF5ZXIuY2xlYXJMYXllcnMoKTtcbiAgICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gZHJhdyBtYWluIG1hcFxuICAgICAgZmVhdHVyZXNMYXllciA9IEwuZ2VvSlNPTihmZWF0dXJlcywge1xuICAgICAgICAvLyBmaWx0ZXIgb3V0IGl0ZW1zIHdpdGggbm8gZ2VvbG9jYXRpb24gZGF0YSwgbGVzdCB0aGV5IHdvdWxkIGJyZWFrIG1hcCByZW5kZXJcbiAgICAgICAgZmlsdGVyOiBmdW5jdGlvbiAoZmVhdHVyZSkge1xuICAgICAgICAgIGlmICghZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc1swXSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBwb2ludFRvTGF5ZXI6IGZlYXR1cmVUb0xheWVyLFxuICAgICAgfSk7XG4gICAgICBmZWF0dXJlc0xheWVyLmFkZFRvKG1hcCk7XG4gICAgICAvLyBkcmF3IG1pbmltYXBcbiAgICAgIGxldCBwdWJzMiA9IEwuZ2VvSnNvbihmZWF0dXJlcywge1xuICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uIChmZWF0dXJlKSB7XG4gICAgICAgICAgaWYgKCFmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIHBvaW50VG9MYXllcjogZnVuY3Rpb24gKGZlYXR1cmUsIGxhdGxuZykge1xuICAgICAgICAgIC8vIHJldHVybiBuZXcgTC5DaXJjbGVNYXJrZXIobGF0bG5nLCB7IHJhZGl1czogMSwgY29sb3I6IFwiI2YwYjA1NFwiIH0pO1xuICAgICAgICAgIHJldHVybiBuZXcgTC5DaXJjbGVNYXJrZXIobGF0bG5nLCB7XG4gICAgICAgICAgICByYWRpdXM6IDEsXG4gICAgICAgICAgICBjb2xvcjogXCIjZjVhMDIwXCIsXG4gICAgICAgICAgICAvLyBjb2xvcjogc2hvcnRsaXN0ZWRGZWF0dXJlcy5zb21lKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAvLyAgIGl0ZW0ucHJvcGVydGllcy5pZCA9PT0gZmVhdHVyZS5wcm9wZXJ0aWVzLmlkO1xuICAgICAgICAgICAgLy8gfSlcbiAgICAgICAgICAgIC8vICAgPyBcIiNmNWEwMjBcIlxuICAgICAgICAgICAgLy8gICA6IFwiIzU0NWJkMlwiLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBsZXQgbGF5ZXJzID0gbmV3IEwuTGF5ZXJHcm91cChbbWluaU1hcFRpbGUsIHB1YnMyXSk7XG4gICAgICBtaW5pTWFwLmNoYW5nZUxheWVyKGxheWVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNsZWFyIHVwIG1pbmltYXAgaWYgbm8gZmVhdHVyZXMgYXJlIHByb3ZpZGVkXG4gICAgICBsZXQgbGF5ZXJzID0gbmV3IEwuTGF5ZXJHcm91cChbbWluaU1hcFRpbGUsIEwuZ2VvSnNvbihbXSldKTtcbiAgICAgIG1pbmlNYXAuY2hhbmdlTGF5ZXIobGF5ZXJzKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGRpc3BsYXlTaG9ydGxpc3RlZEZlYXR1cmVzID0gKCkgPT4ge1xuICAgIGlmIChzaG9ydGxpc3RlZEZlYXR1cmVzTGF5ZXIpIHNob3J0bGlzdGVkRmVhdHVyZXNMYXllci5jbGVhckxheWVycygpO1xuICAgIGlmIChzaG9ydGxpc3RlZEZlYXR1cmVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHNob3J0bGlzdGVkRmVhdHVyZXNMYXllciA9IEwuZ2VvSlNPTihzaG9ydGxpc3RlZEZlYXR1cmVzLCB7XG4gICAgICAgIC8vIGZpbHRlciBvdXQgaXRlbXMgd2l0aCBubyBnZW9sb2NhdGlvbiBkYXRhLCBsZXN0IHRoZXkgd291bGQgYnJlYWsgbWFwIHJlbmRlclxuICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uIChmZWF0dXJlKSB7XG4gICAgICAgICAgaWYgKCFmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIHBvaW50VG9MYXllcjogc2hvcnRsaXN0ZWRGZWF0dXJlVG9MYXllcixcbiAgICAgIH0pO1xuICAgICAgc2hvcnRsaXN0ZWRGZWF0dXJlc0xheWVyLmFkZFRvKG1hcCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBkaXNwbGF5SGlnaGxpZ2h0ZWRGZWF0dXJlID0gKCkgPT4ge1xuICAgIGlmIChoaWdobGlnaHRlZEZlYXR1cmVMYXllcikgaGlnaGxpZ2h0ZWRGZWF0dXJlTGF5ZXIuY2xlYXJMYXllcnMoKTtcbiAgICBpZiAoaGlnaGxpZ2h0ZWRGZWF0dXJlKSB7XG4gICAgICBoaWdobGlnaHRlZEZlYXR1cmVMYXllciA9IEwuZ2VvSlNPTihoaWdobGlnaHRlZEZlYXR1cmUsIHtcbiAgICAgICAgLy8gZmlsdGVyIG91dCBpdGVtcyB3aXRoIG5vIGdlb2xvY2F0aW9uIGRhdGEsIGxlc3QgdGhleSB3b3VsZCBicmVhayBtYXAgcmVuZGVyXG4gICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKGZlYXR1cmUpIHtcbiAgICAgICAgICBpZiAoIWZlYXR1cmUuZ2VvbWV0cnkgfHwgIWZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0pXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIHBvaW50VG9MYXllcjogaGlnaGxpZ2h0ZWRGZWF0dXJlVG9MYXllcixcbiAgICAgIH0pO1xuICAgICAgaGlnaGxpZ2h0ZWRGZWF0dXJlTGF5ZXIuYWRkVG8obWFwKTtcbiAgICB9XG4gIH07XG5cbiAgb25Nb3VudChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgaW1wb3J0KFwibGVhZmxldFwiKTtcbiAgICBhd2FpdCBpbXBvcnQoXCJsZWFmbGV0L2Rpc3QvbGVhZmxldC5jc3NcIik7XG4gICAgYXdhaXQgaW1wb3J0KFwibGVhZmxldC1taW5pbWFwXCIpO1xuICAgIGF3YWl0IGltcG9ydChcImxlYWZsZXQtbWluaW1hcC9kaXN0L0NvbnRyb2wuTWluaU1hcC5taW4uY3NzXCIpO1xuICAgIGF3YWl0IGltcG9ydChcImxlYWZsZXQtZ2VzdHVyZS1oYW5kbGluZ1wiKTtcbiAgICBhd2FpdCBpbXBvcnQoXCJsZWFmbGV0LWdlc3R1cmUtaGFuZGxpbmcvZGlzdC9sZWFmbGV0LWdlc3R1cmUtaGFuZGxpbmcuY3NzXCIpO1xuICAgIC8vIGF3YWl0IGltcG9ydChcImxlYWZsZXQubWFya2VyY2x1c3RlclwiKTtcbiAgICBpbml0aWFsaXplTWFwKCk7XG4gICAgbW91bnRlZCA9IHRydWU7XG4gIH0pO1xuXG4gICQ6IG1pbmltYXBXID0gTWF0aC5taW4odmlld3BvcnRXSC53IC8gMywgMjAwKTtcblxuICAkOiB7XG4gICAgZmVhdHVyZXM7XG4gICAgaWYgKG1vdW50ZWQpIGRpc3BsYXlGZWF0dXJlcygpO1xuICB9XG4gICQ6IHtcbiAgICBzaG9ydGxpc3RlZEZlYXR1cmVzO1xuICAgIGlmIChtb3VudGVkKSBkaXNwbGF5U2hvcnRsaXN0ZWRGZWF0dXJlcygpO1xuICB9XG4gICQ6IHtcbiAgICBoaWdobGlnaHRlZEZlYXR1cmU7XG4gICAgaWYgKG1vdW50ZWQgJiYgZXh0ZXJuYWxIaWdobGlnaHQpIGRpc3BsYXlIaWdobGlnaHRlZEZlYXR1cmUoKTtcbiAgfVxuPC9zY3JpcHQ+XG5cbjxtYXAgY2xhc3M9XCJtYXBkaXZcIiBpZD1cIm1hcGRpdlwiIC8+XG5cbjxzdHlsZT5cbiAgLm1hcGRpdiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRvcDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cbiAgOmdsb2JhbCgubWFya2VySWNvbikge1xuICAgIC8qIGhlaWdodDogMjZweDtcbiAgICB3aWR0aDogMjZweDsgKi9cbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoL2thdGVnb3JpamUvMTZ4MTZweC9vcmFuZ2UvcGluLnN2Zyk7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgcGFkZGluZy10b3A6IDJweDtcbiAgfVxuICA6Z2xvYmFsKC5oaWdobGlnaHRlZE1hcmtlckljb24pIHtcbiAgICAvKiBoZWlnaHQ6IDI2cHg7XG4gICAgd2lkdGg6IDI2cHg7ICovXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC9rYXRlZ29yaWplLzE2eDE2cHgvcmVkL3Bpbi5zdmcpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIHBhZGRpbmctdG9wOiAycHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0PlxuICBpbXBvcnQgeyBjcmVhdGVFdmVudERpc3BhdGNoZXIgfSBmcm9tIFwic3ZlbHRlXCI7XG4gIGltcG9ydCB7IHRyaW1Mb25nVGl0bGUgfSBmcm9tIFwiLi9FdmVudENhcmRcIjtcbiAgaW1wb3J0IHsgZ2V0RXZlbnRDYXRlZ29yaWVzRnJvbURCIH0gZnJvbSBcIi4uL0V2ZW50RWRpdG9yL2luZGV4XCI7XG5cbiAgY29uc3QgZGlzcGF0Y2ggPSBjcmVhdGVFdmVudERpc3BhdGNoZXIoKTtcblxuICBpbXBvcnQgeyB1c2VyIH0gZnJvbSBcIi4uLy4uL3N0b3Jlc1wiO1xuICBleHBvcnQgbGV0IGV2ZW50ID0ge307XG4gIGV4cG9ydCBsZXQgaXNIaWdobGlnaHRlZCA9IGZhbHNlO1xuICAvLyBsZXQgaXNVbnB1Ymxpc2hlZCA9ICFldmVudC5wcm9wZXJ0aWVzLmlzUHVibGlzaGVkO1xuICAvLyBsZXQgaXNGb2xsb3dlZCA9IGV2ZW50LnByb3BlcnRpZXMuaXNGb2xsb3dlZDtcbiAgbGV0IGNhdGVnb3JpZXNMaXN0ID0gZ2V0RXZlbnRDYXRlZ29yaWVzRnJvbURCKCkucmV2ZXJzZSgpO1xuICBsZXQgaXNCcmFuZEhpZ2hsaWdodGVkID0gZmFsc2U7XG5cbiAgY29uc3QgcmVxdWVzdEhpZ2hsaWdodEV2ZW50ID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKFwiaGlnaGxpZ2h0RXZlbnRSZXF1ZXN0ZWRcIiwgZXZlbnQpO1xuICB9O1xuICBjb25zdCByZXF1ZXN0VW5oaWdobGlnaHRFdmVudCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChcImhpZ2hsaWdodEV2ZW50UmVxdWVzdGVkXCIpO1xuICB9O1xuICBjb25zdCByZXF1ZXN0SGlnaGxpZ2h0QnJhbmQgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goXCJoaWdobGlnaHRCcmFuZFJlcXVlc3RlZFwiLCBldmVudC5wcm9wZXJ0aWVzLmJyYW5kKTtcbiAgICBpc0JyYW5kSGlnaGxpZ2h0ZWQgPSB0cnVlO1xuICB9O1xuICBjb25zdCByZXF1ZXN0VW5oaWdobGlnaHRCcmFuZCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChcImhpZ2hsaWdodEJyYW5kUmVxdWVzdGVkXCIpO1xuICAgIGlzQnJhbmRIaWdobGlnaHRlZCA9IGZhbHNlO1xuICB9O1xuICBjb25zdCByZXF1ZXN0U2VsZWN0RXZlbnQgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goXCJzZWxlY3RFdmVudFJlcXVlc3RlZFwiLCBldmVudCk7XG4gIH07XG4gIGNvbnN0IHRvZ2dsZVJlcXVlc3RGb2xsb3dFdmVudCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChcInRvZ2dsZUZvbGxvd0V2ZW50UmVxdWVzdGVkXCIsIGV2ZW50KTtcbiAgfTtcblxuICAkOiBpc1VucHVibGlzaGVkID0gIWV2ZW50LnByb3BlcnRpZXMuaXNQdWJsaXNoZWQ7XG4gICQ6IGlzRm9sbG93ZWQgPSBldmVudC5wcm9wZXJ0aWVzLmlzRm9sbG93ZWQ7XG48L3NjcmlwdD5cblxuPGRpdlxuICBjbGFzcz1cImV2ZW50LWNhcmRcIlxuICBjbGFzczppc0hpZ2hsaWdodGVkXG4gIG9uOm1vdXNlZW50ZXI9e3JlcXVlc3RIaWdobGlnaHRFdmVudH1cbiAgb246bW91c2VsZWF2ZT17cmVxdWVzdFVuaGlnaGxpZ2h0RXZlbnR9XG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImJvZHlcIlxuICAgIGNsYXNzOmlzVW5wdWJsaXNoZWRcbiAgICBvbjpjbGlja3xzdG9wUHJvcGFnYXRpb249e3JlcXVlc3RTZWxlY3RFdmVudH1cbiAgPlxuICAgIHsjaWYgZXZlbnQucHJvcGVydGllcy5icmFuZCA9PT0gXCJlYXBjaXJjdWl0XCJ9XG4gICAgICA8aW1nIGNsYXNzPVwiYnJhbmQtYmdcIiBzcmM9XCJicmFuZHMvZWFwY2lyY3VpdC5wbmdcIiAvPlxuICAgIHsvaWZ9XG4gICAgeyNpZiBldmVudC5wcm9wZXJ0aWVzLmJyYW5kID09PSBcImdvbGRlbmZ5XCJ9XG4gICAgICA8aW1nIGNsYXNzPVwiYnJhbmQtYmdcIiBzcmM9XCJicmFuZHMvZ29sZGVuZmx5LWluYWN0aXZlLnBuZ1wiIC8+XG4gICAgey9pZn1cbiAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtaW5mb1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZsYWctcGxhY2UtZGF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxhZ1wiPlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIHNyYz1cImZsYWdzL3N2Zy97ZXZlbnQucHJvcGVydGllcy52ZW51ZS5jb3VudHJ5fS5zdmdcIlxuICAgICAgICAgICAgYWx0PXtldmVudC5wcm9wZXJ0aWVzLnZlbnVlLmNvdW50cnl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGxhY2UtZGF0ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZVwiPlxuICAgICAgICAgICAge3RyaW1Mb25nVGl0bGUoXG4gICAgICAgICAgICAgIGV2ZW50LnByb3BlcnRpZXMudmVudWUucGxhY2VbZXZlbnQucHJvcGVydGllcy52ZW51ZS5wbGFjZS5wcF0sXG4gICAgICAgICAgICAgIDI0XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlXCI+e2V2ZW50LnByb3BlcnRpZXMuZGF0ZUZvckRpc3BsYXl9PC9kaXY+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXRpdGxlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XG4gICAgICAgICAge3RyaW1Mb25nVGl0bGUoZXZlbnQucHJvcGVydGllcy50aXRsZVtldmVudC5wcm9wZXJ0aWVzLnRpdGxlLnBwXSwgNTcpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yaWVzXCI+XG4gICAgICB7I2VhY2ggZXZlbnQucHJvcGVydGllcy5wcm9ncmFtLmNhdGVnb3JpZXMgYXMgY2F0ZWdvcnl9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJFdmVudENhcmRfX2NhdGVnb3J5XCI+e2NhdGVnb3J5LnRvVXBwZXJDYXNlKCl9PC9kaXY+XG4gICAgICB7L2VhY2h9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCIgY2xhc3M6aXNVbnB1Ymxpc2hlZD5cbiAgICA8ZGl2IGNsYXNzPVwiYnJhbmRzXCI+XG4gICAgICB7I2lmIGV2ZW50LnByb3BlcnRpZXMucHJvZ3JhbS52YWNhbmN5QWxlcnRzfVxuICAgICAgICA8ZGl2IGNsYXNzPVwid2FycmFudG9yLWljb25cIj5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIHNyYz1cImljb25zL2hpcmluZy0tYWN0aXZlLnBuZ1wiXG4gICAgICAgICAgICAgIHRpdGxlPVwiVmFjYW5jeSBBbGVydFwiXG4gICAgICAgICAgICAgIGFsdD1cIlZhY2FuY3kgQWxlcnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB7L2lmfVxuICAgICAgeyNpZiBldmVudC5wcm9wZXJ0aWVzLmV2ZW50V2FycmFudG9yICYmIGV2ZW50LnByb3BlcnRpZXMuZXZlbnRXYXJyYW50b3IuaWQgIT09IFwiLVwifVxuICAgICAgICA8ZGl2IGNsYXNzPVwid2FycmFudG9yLWljb25cIj5cbiAgICAgICAgICA8YSBocmVmPXtldmVudC5wcm9wZXJ0aWVzLmV2ZW50V2FycmFudG9yLnd3d30gdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIHNyYz1cIndhcnJhbnRvcnMve2V2ZW50LnByb3BlcnRpZXMuZXZlbnRXYXJyYW50b3IuaWR9LnBuZ1wiXG4gICAgICAgICAgICAgIHRpdGxlPVwiRXZlbnQgaW5mbyBtYWludGFpbmVkIGJ5IHtldmVudC5wcm9wZXJ0aWVzLmV2ZW50V2FycmFudG9yXG4gICAgICAgICAgICAgICAgLmVuZ31cIlxuICAgICAgICAgICAgICBhbHQ9e2V2ZW50LnByb3BlcnRpZXMuZXZlbnRXYXJyYW50b3IuZW5nfVxuICAgICAgICAgICAgLz48L2FcbiAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgey9pZn1cbiAgICAgIHsjZWFjaCBldmVudC5wcm9wZXJ0aWVzLmV2ZW50QnJhbmRzIGFzIGJyYW5kfVxuICAgICAgICB7I2lmIGV2ZW50LnByb3BlcnRpZXMuYnJhbmQgPT09IFwiZWFwY2lyY3VpdFwifVxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYnJhbmQtaWNvblwiXG4gICAgICAgICAgICBvbjptb3VzZWVudGVyPXtyZXF1ZXN0SGlnaGxpZ2h0QnJhbmR9XG4gICAgICAgICAgICBvbjptb3VzZWxlYXZlPXtyZXF1ZXN0VW5oaWdobGlnaHRCcmFuZH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YSBocmVmPVwiaHR0cDovL2VhcC1jaXJjdWl0Lm9yZ1wiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgc3JjPVwiYnJhbmRzL3tpc0JyYW5kSGlnaGxpZ2h0ZWRcbiAgICAgICAgICAgICAgICAgID8gJ2VhcC1hY3RpdmUnXG4gICAgICAgICAgICAgICAgICA6ICdlYXAtaW5hY3RpdmUnfS5zdmdcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiRUFQIENpcmN1aXRcIlxuICAgICAgICAgICAgICAgIGFsdD1cIkVBUCBDaXJjdWl0XCJcbiAgICAgICAgICAgICAgLz48L2FcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgey9pZn1cbiAgICAgICAgeyNpZiBldmVudC5wcm9wZXJ0aWVzLmJyYW5kID09PSBcImdvbGRlbmZseVwifVxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYnJhbmQtaWNvblwiXG4gICAgICAgICAgICBvbjptb3VzZWVudGVyPXtyZXF1ZXN0SGlnaGxpZ2h0QnJhbmR9XG4gICAgICAgICAgICBvbjptb3VzZWxlYXZlPXtyZXF1ZXN0VW5oaWdobGlnaHRCcmFuZH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cuZ29sZGVuZmx5c2VyaWVzLmNvbS9cIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIHNyYz1cImJyYW5kcy97aXNCcmFuZEhpZ2hsaWdodGVkXG4gICAgICAgICAgICAgICAgICA/ICdnb2xkZW5mbHktYWN0aXZlJ1xuICAgICAgICAgICAgICAgICAgOiAnZ29sZGVuZmx5LWluYWN0aXZlJ30ucG5nXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIkdvbGRlbiBGbHkgU2VyaWVzXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJHb2xkZW4gRmx5IFNlcmllc1wiXG4gICAgICAgICAgICAgIC8+PC9hXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIHsvaWZ9XG4gICAgICB7L2VhY2h9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgIDwhLS0gaW52aXRhdGlvbiAvIHN0YXJ0IGxpc3RzIC8gcmVzdWx0cyAtLT5cbiAgICAgIHsjaWYgZXZlbnQucHJvcGVydGllcy5saW5rcy5yZXN1bHRzfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiPlxuICAgICAgICAgIDxhIGhyZWY9e2V2ZW50LnByb3BlcnRpZXMubGlua3MucmVzdWx0c30gdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cImljb25zL3Jlc3VsdHMuc3ZnXCIgYWx0PVwiUmVzdWx0c1wiIC8+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIHs6ZWxzZSBpZiBldmVudC5wcm9wZXJ0aWVzLmxpbmtzLnN0YXJ0bGlzdCAmJiBldmVudC5wcm9wZXJ0aWVzLmRhdGVSYW5nZS5kYXlzVG9TdGFydCA+PSAwfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiPlxuICAgICAgICAgIDxhIGhyZWY9e2V2ZW50LnByb3BlcnRpZXMubGlua3Muc3RhcnRsaXN0fSB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaWNvbnMvbGlzdC5wbmdcIiBhbHQ9XCJTdGFydCBsaXN0c1wiIC8+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIHs6ZWxzZSBpZiBldmVudC5wcm9wZXJ0aWVzLmxpbmtzLmludml0YXRpb24gJiYgZXZlbnQucHJvcGVydGllcy5kYXRlUmFuZ2UuZGF5c1RvU3RhcnQgPj0gMH1cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25cIj5cbiAgICAgICAgICA8YSBocmVmPXtldmVudC5wcm9wZXJ0aWVzLmxpbmtzLmludml0YXRpb259IHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJpY29ucy9pbmZvLnBuZ1wiIGFsdD1cIkludml0YXRpb24vUHJvZ3JhbVwiIC8+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIHsvaWZ9XG5cbiAgICAgIDwhLS0gcmVhbCB0aW1lIHZpZGVvIHN0cmVhbWluZyAtLT5cbiAgICAgIHsjaWYgZXZlbnQucHJvcGVydGllcy5saW5rcy52aWRlb2NoYW5uZWwgJiYgZXZlbnQucHJvcGVydGllcy5kYXRlUmFuZ2UuZGF5c1RvU3RhcnQgPCAyICYmIGV2ZW50LnByb3BlcnRpZXMuZGF0ZVJhbmdlLmRheXNUb0VuZCA+IC0yfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiPlxuICAgICAgICAgIDxhIGhyZWY9e2V2ZW50LnByb3BlcnRpZXMubGlua3Muc3RyZWFtfSB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaWNvbnMvbGl2ZXN0cmVhbS5wbmdcIiBhbHQ9XCJMaXZlIFN0cmVhbVwiIC8+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIHsvaWZ9XG4gICAgICA8IS0tIHBvc3QtY29tcGV0aXRpb24gcmVjb3JkaW5ncyAtIHZpZGVvcy9waG90b3MgLS0+XG4gICAgICB7I2lmIGV2ZW50LnByb3BlcnRpZXMubGlua3MudmlkZW99XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCI+XG4gICAgICAgICAgPGEgaHJlZj17ZXZlbnQucHJvcGVydGllcy5saW5rcy52aWRlb30gdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cImljb25zL3ZpZGVvLnBuZ1wiIGFsdD1cIlZpZGVvIENoYW5uZWxcIiAvPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICB7L2lmfVxuICAgICAgeyNpZiBldmVudC5wcm9wZXJ0aWVzLmxpbmtzLmdhbGxlcnl9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCI+XG4gICAgICAgICAgPGEgaHJlZj17ZXZlbnQucHJvcGVydGllcy5saW5rcy5nYWxsZXJ5fSB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaWNvbnMvZ2FsbGVyeS5wbmdcIiBhbHQ9XCJHYWxsZXJ5XCIgLz5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgey9pZn1cbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25cIiBvbjpjbGlja3xzdG9wUHJvcGFnYXRpb249e3JlcXVlc3RTZWxlY3RFdmVudH0+XG4gICAgICAgIDxpbWcgc3JjPVwiaWNvbnMvc2VlLW1vcmUuc3ZnXCIgLz5cbiAgICAgIDwvZGl2PiAtLT5cbiAgICAgIHsjaWYgJHVzZXIucm9sZSAhPT0gXCJndWVzdFwifVxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiIG9uOmNsaWNrPXt0b2dnbGVSZXF1ZXN0Rm9sbG93RXZlbnR9PlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIHNyYz17aXNGb2xsb3dlZCA/IFwiaWNvbnMvZm9sbG93aW5nLnBuZ1wiIDogXCJpY29ucy9mb2xsb3cucG5nXCJ9XG4gICAgICAgICAgICBoZWlnaHQ9XCIyMnB4XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIHsvaWZ9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxzdHlsZT5cbiAgOnJvb3Qge1xuICAgIC0tZmxhZy13aWR0aDogNDVweDtcbiAgICAtLWZsYWctaGVpZ2h0OiAzMnB4O1xuICB9XG4gIC5ldmVudC1jYXJkIHtcbiAgICBtYXJnaW46IDEwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGVzbW9rZTtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgYm94LXNoYWRvdzogMCAwIDVweCA1cHggdmFyKC0tY29sb3ItYmFja2ctbWlkKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIH1cbiAgLmlzSGlnaGxpZ2h0ZWQge1xuICAgIGJveC1zaGFkb3c6IDAgMCA1cHggNXB4IHJnYmEoMjIxLCAxMSwgMTEsIDAuNSk7XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmlzRHJhZnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z29sZGVucm9keWVsbG93O1xuICAgIGNvbG9yOiBuYXZ5O1xuICB9XG4gIC5ldmVudC1jYXJkIC5pc0NhbmNlbGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrc2xhdGVncmV5O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxuICAuZXZlbnQtY2FyZCAuaXNVbnB1Ymxpc2hlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogZGFya3NsYXRlZ3JleTtcbiAgICBjb2xvcjogd2hpdGU7XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmJvZHkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxMHB4IDEwcHggNXB4IDEwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmJvZHkgLmJyYW5kLWJnIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDA7XG4gICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgd2lkdGg6IDEwMCU7IC8qXG4gICAgaGVpZ2h0OiBhdXRvOyAqL1xuICAgIG9wYWNpdHk6IDAuMTU7XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmJvZHkgLmV2ZW50LWluZm8ge1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAyOHB4KTtcbiAgICBmbGV4OiAxIDAgYXV0bztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB6LWluZGV4OiAyO1xuICB9XG4gIC5ldmVudC1jYXJkIC5ib2R5IC5ldmVudC1pbmZvIC5mbGFnLXBsYWNlLWRhdGUge1xuICAgIGhlaWdodDogdmFyKC0tZmxhZy1oZWlnaHQpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmJvZHkgLmV2ZW50LWluZm8gLmZsYWctcGxhY2UtZGF0ZSAuZmxhZyB7XG4gICAgaGVpZ2h0OiB2YXIoLS1mbGFnLWhlaWdodCk7XG4gICAgd2lkdGg6IHZhcigtLWZsYWctd2lkdGgpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm94LXNoYWRvdzogMCAwIDVweCA1cHggdmFyKC0tY29sb3ItYmFja2ctbWlkKTtcbiAgfVxuICAuZXZlbnQtY2FyZCAuYm9keSAuZXZlbnQtaW5mbyAuZmxhZy1wbGFjZS1kYXRlIC5mbGFnIGltZyB7XG4gICAgaGVpZ2h0OiB2YXIoLS1mbGFnLWhlaWdodCk7XG4gICAgd2lkdGg6IHZhcigtLWZsYWctd2lkdGgpO1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICB9XG4gIC5ldmVudC1jYXJkIC5ib2R5IC5ldmVudC1pbmZvIC5wbGFjZS1kYXRlIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBwYWRkaW5nLWxlZnQ6IDVweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmJvZHkgLmV2ZW50LWluZm8gLnBsYWNlLWRhdGUgLnBsYWNlIHtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbiAgfVxuICAuZXZlbnQtY2FyZCAuYm9keSAuZXZlbnQtaW5mbyAucGxhY2UtZGF0ZSAuZGF0ZSB7XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmJvZHkgLmV2ZW50LWluZm8gLmV2ZW50LXRpdGxlIHtcbiAgICBoZWlnaHQ6IDU1cHg7XG4gICAgcGFkZGluZzogMTBweCAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG4gIC5ldmVudC1jYXJkIC5ib2R5IC5ldmVudC1pbmZvIC5ldmVudC10aXRsZSAudGV4dCB7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAvKiB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGhlaWdodDogMmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxZW07ICovXG4gIH1cbiAgLmV2ZW50LWNhcmQgLmJvZHkgLmNhdGVnb3JpZXMge1xuICAgIC8qIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyAqL1xuICAgIHdpZHRoOiAyOHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIGZvbnQtc2l6ZTogOHB4O1xuICAgIHotaW5kZXg6IDI7XG4gIH1cbiAgLkV2ZW50Q2FyZF9fY2F0ZWdvcnkge1xuICAgIGhlaWdodDogMjZweDtcbiAgICB3aWR0aDogMjZweDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoL2thdGVnb3JpamUvMTZ4MTZweC9vcmFuZ2UvcGluLnN2Zyk7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgICAvKiBib3gtc2hhZG93OiAwIDAgNXB4IDVweCB2YXIoLS1jb2xvci1iYWNrZy1taWQpOyAqL1xuXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gIH1cbiAgLyogLmV2ZW50LWNhcmQgLmJvZHkgLmNhdGVnb3JpZXMgLmNhdGVnb3J5LWljb24ge1xuICAgIGhlaWdodDogMjhweDtcbiAgICB3aWR0aDogMjZweDtcbiAgfVxuICAuZXZlbnQtY2FyZCAuYm9keSAuY2F0ZWdvcmllcyAuY2F0ZWdvcnkgaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgfSAqL1xuICAuZXZlbnQtY2FyZCAuZm9vdGVyIHtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgcGFkZGluZzogMCAxMHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWZvcmVnLXNoYWRvdyk7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmZvb3RlciAuYnJhbmRzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXg6IDEgMCBhdXRvO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG4gIC5ldmVudC1jYXJkIC5mb290ZXIgLmJyYW5kcyAud2FycmFudG9yLWljb24ge1xuICAgIGhlaWdodDogMzBweDtcbiAgICB3aWR0aDogMzBweDtcbiAgICBtYXJnaW46IDAgM3B4IDAgMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmZvb3RlciAuYnJhbmRzIC53YXJyYW50b3ItaWNvbiBpbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICB9XG4gIC5ldmVudC1jYXJkIC5mb290ZXIgLmJyYW5kcyAuYnJhbmQtaWNvbiB7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIG1hcmdpbjogMCAzcHggMCAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAvKiBib3JkZXI6IDFweCBzb2xpZCBibGFjazsgKi9cbiAgfVxuICAuZXZlbnQtY2FyZCAuZm9vdGVyIC5icmFuZHMgLmJyYW5kLWljb24gaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvYmplY3QtZml0OiBjb250YWluO1xuICB9XG4gIC5ldmVudC1jYXJkIC5mb290ZXIgLmFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG4gIC5ldmVudC1jYXJkIC5mb290ZXIgLmFjdGlvbnMgLmFjdGlvbi1idXR0b24ge1xuICAgIGhlaWdodDogMzBweDtcbiAgICB3aWR0aDogMzBweDtcbiAgICBwYWRkaW5nOiAzcHg7XG4gICAgbWFyZ2luOiAwIDAgMCA1cHg7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFjdGlvbi1tYWluKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmZvb3RlciAuYWN0aW9ucyAuYWN0aW9uLWJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYWN0aW9uLWhvdmVyKTtcbiAgfVxuICAuZXZlbnQtY2FyZCAuZm9vdGVyIC5hY3Rpb25zIC5hY3Rpb24tYnV0dG9uIGltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCBFdmVudENhcmQgZnJvbSBcIi4vRXZlbnRDYXJkLnN2ZWx0ZVwiO1xuXG4gIGltcG9ydCB7IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cywgYWRkIH0gZnJvbSBcImRhdGUtZm5zXCI7XG5cbiAgaW1wb3J0IHtcbiAgICBjaGVja0lmRXZlbnRJc0hpZ2hsaWdodGVkLFxuICAgIGNoZWNrSWZFdmVudElzU2hvcnRsaXN0ZWQsXG4gIH0gZnJvbSBcIi4vRXZlbnRzTGlzdFwiO1xuXG4gIGV4cG9ydCBsZXQgdG90YWxFdmVudHNMaXN0Q29sdW1ucztcbiAgZXhwb3J0IGxldCBldmVudHMgPSBbXTtcbiAgZXhwb3J0IGxldCBzaG9ydGxpc3RlZEV2ZW50cztcbiAgZXhwb3J0IGxldCBoaWdobGlnaHRlZEV2ZW50O1xuICAvLyBsZXQgZnJhbWVTdHlsZTtcblxuICBjb25zdCBoaWdobGlnaHRFdmVudCA9IChlKSA9PiB7XG4gICAgaGlnaGxpZ2h0ZWRFdmVudCA9IGUuZGV0YWlsO1xuICB9O1xuXG4gICQ6IGdyaWRDb2x1bW5zID0gYGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KCR7dG90YWxFdmVudHNMaXN0Q29sdW1uc30sIDFmcik7YDtcbjwvc2NyaXB0PlxuXG48ZGl2PlxuICB7I2lmIGV2ZW50cyAmJiBldmVudHMubGVuZ3RoID4gMH1cbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiIHN0eWxlPXtncmlkQ29sdW1uc30+XG4gICAgICB7I2VhY2ggZXZlbnRzIGFzIGV2ZW50fVxuICAgICAgICA8RXZlbnRDYXJkXG4gICAgICAgICAge2V2ZW50fVxuICAgICAgICAgIGlzSGlnaGxpZ2h0ZWQ9e2NoZWNrSWZFdmVudElzSGlnaGxpZ2h0ZWQoZXZlbnQsIGhpZ2hsaWdodGVkRXZlbnQpIHx8XG4gICAgICAgICAgICBjaGVja0lmRXZlbnRJc1Nob3J0bGlzdGVkKGV2ZW50LCBzaG9ydGxpc3RlZEV2ZW50cyl9XG4gICAgICAgICAgb246aGlnaGxpZ2h0RXZlbnRSZXF1ZXN0ZWQ9e2hpZ2hsaWdodEV2ZW50fVxuICAgICAgICAgIG9uOmhpZ2hsaWdodEJyYW5kUmVxdWVzdGVkXG4gICAgICAgICAgb246c2VsZWN0RXZlbnRSZXF1ZXN0ZWRcbiAgICAgICAgICBvbjp0b2dnbGVGb2xsb3dFdmVudFJlcXVlc3RlZFxuICAgICAgICAvPlxuICAgICAgey9lYWNofVxuICAgIDwvZGl2PlxuICB7OmVsc2V9XG4gICAgPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IDEwcHg7IGZvbnQtd2VpZ2h0OiBib2xkZXI7XCI+XG4gICAgICBObyBldmVudCBtYXRjaGVzIHRoZSBzZXQgY3JpdGVyaWFcbiAgICA8L3A+XG4gIHsvaWZ9XG5cbiAgPGRpdiBjbGFzcz1cImJvdHRvbS1saW5lXCI+XG4gICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XG4gICAgICA8cCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zaXplOiAxMnB4XCI+XG4gICAgICAgIDxiIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4XCI+Y3JlZGl0czo8L2I+XG4gICAgICAgIEZsYWcgaWNvbnMgbWFkZSBieVxuICAgICAgICA8YVxuICAgICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5mbGF0aWNvbi5jb20vYXV0aG9ycy9mcmVlcGlrXCJcbiAgICAgICAgICB0aXRsZT1cIkZyZWVwaWtcIlxuICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4XCJcbiAgICAgICAgPlxuICAgICAgICAgIEZyZWVwaWtcbiAgICAgICAgPC9hPlxuICAgICAgICBmcm9tXG4gICAgICAgIDxhXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vd3d3LmZsYXRpY29uLmNvbS9cIlxuICAgICAgICAgIHRpdGxlPVwiRmxhdGljb25cIlxuICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHd3dy5mbGF0aWNvbi5jb21cbiAgICAgICAgPC9hPlxuICAgICAgICB7XCIgLyBcIn1cbiAgICAgICAgT3RoZXIgaWNvbnMgYnlcbiAgICAgICAgPGFcbiAgICAgICAgICBocmVmPVwiaHR0cHM6Ly90aGVub3VucHJvamVjdC5jb20vXCJcbiAgICAgICAgICB0aXRsZT1cIk5vdW4gcHJvamVjdFwiXG4gICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDEycHhcIlxuICAgICAgICA+XG4gICAgICAgICAgVGhlIE5vdW4gUHJvamVjdFxuICAgICAgICA8L2E+XG4gICAgICAgIGNvbGxhYm9yYXRvcnNcbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPHN0eWxlPlxuICAuZ3JpZCB7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICBkaXNwbGF5OiBncmlkO1xuICB9XG4gIC5ib3R0b20tbGluZSB7XG4gICAgbWluLWhlaWdodDogMjBweDtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZm9yZWctc2hhZG93KTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCB7IG9uTW91bnQgfSBmcm9tIFwic3ZlbHRlXCI7XG5cbiAgaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi91aS9Nb2RhbC5zdmVsdGVcIjtcbiAgaW1wb3J0IEV2ZW50RGV0YWlscyBmcm9tIFwiLi4vRXZlbnREZXRhaWxzL2luZGV4LnN2ZWx0ZVwiO1xuICAvLyBpbXBvcnQgRXZlbnRFZGl0b3IgZnJvbSBcIi4uL0V2ZW50RWRpdG9yL2luZGV4LnN2ZWx0ZVwiO1xuICBpbXBvcnQgRHNhRmlsdGVyIGZyb20gXCIuL0RzYUZpbHRlci5zdmVsdGVcIjtcbiAgaW1wb3J0IEtleXdvcmRBbmRQcm9ncmFtRmlsdGVyIGZyb20gXCIuL0tleXdvcmRBbmRQcm9ncmFtRmlsdGVyLnN2ZWx0ZVwiO1xuICBpbXBvcnQgRGF0ZVJhbmdlRmlsdGVyIGZyb20gXCIuL0RhdGVSYW5nZUZpbHRlci5zdmVsdGVcIjtcbiAgaW1wb3J0IEdlb21hcEZpbHRlciBmcm9tIFwiLi9HZW9tYXBGaWx0ZXIuc3ZlbHRlXCI7XG4gIGltcG9ydCBFdmVudHNMaXN0IGZyb20gXCIuL0V2ZW50c0xpc3Quc3ZlbHRlXCI7XG5cbiAgaW1wb3J0IHtcbiAgICBmZXRjaEV2ZW50c0Zyb21EQixcbiAgICB0b2dnbGVGb2xsb3dFdmVudEluREIsXG4gICAgcmVnaXN0ZXJBY3Rpdml0eSxcbiAgICBleHRyYWN0UHJvZ3JhbUZpbHRlcnNGcm9tRXZlbnRzLFxuICAgIGZpbHRlckV2ZW50c0J5SXNGb2xsb3dlZEZpbHRlcixcbiAgICBmaWx0ZXJFdmVudHNCeUtleXdvcmRGaWx0ZXIsXG4gICAgZmlsdGVyRXZlbnRzQnlEU0FGaWx0ZXIsXG4gICAgZmlsdGVyRXZlbnRzQnlEU0FIb3ZlcmVkLFxuICAgIGZpbHRlckV2ZW50c0J5RFNBU2VsZWN0ZWQsXG4gICAgZmlsdGVyRXZlbnRzQnlIaWdobGlnaHRlZEJyYW5kLFxuICAgIGZpbHRlckV2ZW50c0J5Q2F0ZWdvcmllc0ZpbHRlcixcbiAgICBjb3VudEV2ZW50c0J5RGF0ZSxcbiAgICBmaWx0ZXJFdmVudHNCeURhdGVSYW5nZUZpbHRlcixcbiAgICBmaWx0ZXJFdmVudHNCeUhvdmVyZWREYXRlLFxuICAgIGZpbHRlckV2ZW50c0J5R2VvRmlsdGVyLFxuICAgIGdldEhpZ2hsaWdodGVkRGF0ZVJhbmdlLFxuICAgIGFkYXB0RGlzcGxheSxcbiAgfSBmcm9tIFwiLi9pbmRleFwiO1xuXG4gIGltcG9ydCB7IHVzZXIsIHZpZXdwb3J0V0ggfSBmcm9tIFwiLi4vLi4vc3RvcmVzXCI7XG5cbiAgbGV0IHNlbGVjdGVkU2Vhc29uO1xuICBsZXQgaG92ZXJlZERhdGU7XG5cbiAgbGV0IG1hcFdpZHRoO1xuICBsZXQgdXNlckhvbWVMb2NhdGlvbiA9IHt9O1xuICBsZXQgdXNlckN1cnJlbnRMb2NhdGlvbiA9IHt9O1xuXG4gIGxldCBrZXl3b3JkRmlsdGVyID0gXCJcIjtcbiAgbGV0IGJyYW5kc0ZpbHRlciA9IFtdO1xuICBsZXQgaXNWYWNhbmN5RmlsdGVyID0gZmFsc2U7XG4gIGxldCBpc05ld3NGaWx0ZXIgPSBmYWxzZTtcbiAgbGV0IGlzRm9sbG93ZWRGaWx0ZXIgPSBmYWxzZTtcbiAgbGV0IGlzR3JhbnRlZEZpbHRlciA9IGZhbHNlO1xuICBsZXQgZHNhRmlsdGVyID0gW107XG4gIGxldCBjYXRlZ29yaWVzRmlsdGVyID0gW107XG4gIGxldCBkYXRlUmFuZ2VGaWx0ZXIgPSB7fTtcbiAgbGV0IGdlb0ZpbHRlciA9IHt9O1xuICBsZXQgaGlnaGxpZ2h0ZWREYXRlUmFuZ2UgPSB7fTtcblxuICBsZXQgdW5maWx0ZXJlZEV2ZW50cztcbiAgbGV0IGV2ZW50c0J5RGF0ZSA9IHt9O1xuICAvLyBsZXQgZHNhRmlsdGVyZWRFdmVudHMgPSBbXTtcbiAgLy8gbGV0IGNhdGVnb3JpZXNGaWx0ZXJlZEV2ZW50cyA9IFtdO1xuICBsZXQga2V5d29yZEZpbHRlcmVkRXZlbnRzID0gW107XG4gIC8vIGxldCBpc0ZvbGxvd2VkRmlsdGVyZWRFdmVudHMgPSBbXTtcbiAgbGV0IGRhdGVSYW5nZUZpbHRlcmVkRXZlbnRzID0gW107XG4gIC8vIGxldCBnZW9GaWx0ZXJlZEV2ZW50cyA9IFtdO1xuICBsZXQgc2hvcnRsaXN0ZWRFdmVudHMgPSBbXTtcbiAgLy8gbGV0IGZpbHRlcmVkRXZlbnRzID0gW107XG4gIC8vIGxldCBsaXN0ZWRFdmVudHMgPSBbXTtcblxuICBsZXQgZHNhRmlsdGVyU2hvd24gPSBmYWxzZTtcbiAgbGV0IGRzYUZpbHRlckFjdGl2ZSA9IGZhbHNlO1xuICBsZXQgZHNhRmlsdGVyTW9kYWxXO1xuICBsZXQgZHNhSG92ZXJlZDtcbiAgbGV0IGRzYVNlbGVjdGVkO1xuXG4gIGxldCBoaWdobGlnaHRlZEJyYW5kO1xuXG4gIGxldCBjYXRlZ29yaWVzSW5VbmZpbHRlcmVkRXZlbnRzID0gW107XG4gIGxldCBjb21wZXRpdGlvbnNJblVuZmlsdGVyZWRFdmVudHMgPSBbXTtcblxuICBsZXQgaGlnaGxpZ2h0ZWRFdmVudDtcbiAgbGV0IHNlbGVjdGVkRXZlbnQ7XG5cbiAgbGV0IGV2ZW50RGV0YWlsc1Nob3duID0gZmFsc2U7XG4gIGxldCBldmVudERldGFpbHNNb2RhbFcgPSAxMDAwO1xuXG4gIC8vIGxldCBpZGI7XG4gIGxldCBtb3VudGVkID0gZmFsc2U7XG5cbiAgbGV0IGV2ZW50c0xpc3RXaWR0aDtcbiAgbGV0IHRvdGFsRXZlbnRzTGlzdENvbHVtbnM7XG4gIGxldCBpc0V2ZW50c1NpZGVwYW5lT247XG5cbiAgY29uc3QgaW5pdGlhbGl6ZVVzZXJCcm93c2luZ1NldHRpbmdzID0gKHNlYXNvbiwgaWRVc2VyKSA9PiB7XG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGlkVXNlcikpIHtcbiAgICAgIGxldCBicm93c2luZyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oaWRVc2VyKSk7XG4gICAgICBrZXl3b3JkRmlsdGVyID0gYnJvd3Npbmcua2V5d29yZEZpbHRlciB8fCBrZXl3b3JkRmlsdGVyO1xuICAgICAgZHNhRmlsdGVyID0gYnJvd3NpbmcuZHNhRmlsdGVyIHx8IGRzYUZpbHRlcjtcbiAgICAgIGNhdGVnb3JpZXNGaWx0ZXIgPSBicm93c2luZy5jYXRlZ29yaWVzRmlsdGVyIHx8IGNhdGVnb3JpZXNGaWx0ZXI7XG4gICAgICBpZiAoc2Vhc29uICYmIGJyb3dzaW5nLmRhdGVSYW5nZXMgJiYgYnJvd3NpbmcuZGF0ZVJhbmdlc1tzZWFzb25dKVxuICAgICAgICBkYXRlUmFuZ2VGaWx0ZXJbc2Vhc29uXSA9IHtcbiAgICAgICAgICBzdGFydDogYnJvd3NpbmcuZGF0ZVJhbmdlc1tzZWFzb25dLnN0YXJ0LFxuICAgICAgICAgIGVuZDogYnJvd3NpbmcuZGF0ZVJhbmdlc1tzZWFzb25dLmVuZCxcbiAgICAgICAgfTtcbiAgICAgIGdlb0ZpbHRlciA9IGJyb3dzaW5nLmdlb0ZpbHRlciB8fCB7fTtcbiAgICAgIGlzR3JhbnRlZEZpbHRlciA9IGJyb3dzaW5nLmlzR3JhbnRlZEZpbHRlciB8fCBmYWxzZTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlZnJlc2hVbmZpbHRlcmVkRXZlbnRzID0gYXN5bmMgKFxuICAgIHNlYXNvbixcbiAgICBpc0dyYW50ZWRGaWx0ZXIsXG4gICAgZGF0YXNldFJlZnJlc2hcbiAgKSA9PiB7XG4gICAgaWYgKCFzZWFzb24pIHJldHVybjtcbiAgICBjb25zdCBldmVudHNUeXBlID0gaXNHcmFudGVkRmlsdGVyID8gXCJncmFudGVkXCIgOiBcInB1YmxpY1wiO1xuICAgIGNhdGVnb3JpZXNJblVuZmlsdGVyZWRFdmVudHMgPSBbXTtcbiAgICB1bmZpbHRlcmVkRXZlbnRzID0gW107XG4gICAgbGV0IGFjY2Vzc0Zyb207XG4gICAgbGV0IHtcbiAgICAgIHdoZW5MYXN0VXBkYXRlLFxuICAgICAgbGlzdDogZmV0Y2hlZEV2ZW50cyxcbiAgICAgIGNhdGVnb3JpZXNJbkRhdGFzZXQsXG4gICAgICAuLi5sb2dpblxuICAgIH0gPSBhd2FpdCBmZXRjaEV2ZW50c0Zyb21EQih7XG4gICAgICB1c2VyOiAkdXNlcixcbiAgICAgIGV2ZW50c1R5cGUsXG4gICAgICBzZWFzb24sXG4gICAgICBhY2Nlc3NGcm9tLFxuICAgIH0pO1xuICAgIGlmICghZmV0Y2hlZEV2ZW50cykge1xuICAgICAgLy8gaWYgbG9naW4gZGF0YSBmZXRjaGVkXG4gICAgICByZWdpc3RlckFjdGl2aXR5KFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJ1c2VyIGxvZ2luIHVzaW5nIGNvb2tpZVwiLFxuICAgICAgICB9LFxuICAgICAgICAkdXNlci50b2tlblxuICAgICAgKTtcbiAgICAgICR1c2VyID0gbG9naW47XG4gICAgICBhd2FpdCByZWZyZXNoVW5maWx0ZXJlZEV2ZW50cyhzZWFzb24sIGlzR3JhbnRlZEZpbHRlcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGlmIGV2ZW50IGRhdGEgZmV0Y2hlZFxuICAgIHVuZmlsdGVyZWRFdmVudHMgPSBmZXRjaGVkRXZlbnRzO1xuICAgIGNhdGVnb3JpZXNJblVuZmlsdGVyZWRFdmVudHMgPSBjYXRlZ29yaWVzSW5EYXRhc2V0O1xuICAgIHJlZ2lzdGVyQWN0aXZpdHkoXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZXZlbnRzIGRhdGFzZXQgZGVsaXZlcmVkXCIsXG4gICAgICAgIGRhdGFzZXQ6XG4gICAgICAgICAgJHVzZXIuZXZlbnRzW3NlYXNvbl0gJiYgJHVzZXIuZXZlbnRzW3NlYXNvbl1bZXZlbnRzVHlwZV1cbiAgICAgICAgICAgID8gXCJ1cGRhdGVcIlxuICAgICAgICAgICAgOiBcImZ1bGxcIixcbiAgICAgICAgZXZlbnRzRGVsaXZlcmVkOiBmZXRjaGVkRXZlbnRzLmxlbmd0aCxcbiAgICAgIH0sXG4gICAgICAkdXNlci50b2tlblxuICAgICk7XG4gIH07XG5cbiAgLy8gY29uc3QgaGFuZGxlRXZlbnRTYXZlZCA9IGFzeW5jIGUgPT4ge1xuICAvLyAgIHNlbGVjdGVkRXZlbnQgPSBlLmRldGFpbDtcbiAgLy8gICBhd2FpdCByZWZyZXNoVW5maWx0ZXJlZEV2ZW50cyh0cnVlKTtcbiAgLy8gfTtcbiAgY29uc3QgaGFuZGxlRXZlbnREZWxldGVkID0gYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlZnJlc2hVbmZpbHRlcmVkRXZlbnRzKHNlbGVjdGVkU2Vhc29uLCB0cnVlKTtcbiAgICBldmVudERldGFpbHNTaG93biA9IGZhbHNlO1xuICB9O1xuICBjb25zdCB0b2dnbGVFdmVudERldGFpbHNTaG93biA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0eXBlID0gZXZlbnREZXRhaWxzU2hvd24gPyBcImV2ZW50IGRpc21pc3NlZFwiIDogXCJldmVudCBzZWxlY3RlZFwiO1xuICAgIGNvbnN0IGV2ZW50SWQgPSBzZWxlY3RlZEV2ZW50LnByb3BlcnRpZXMuaWQ7XG4gICAgcmVnaXN0ZXJBY3Rpdml0eSh7IHR5cGUsIGV2ZW50SWQgfSwgJHVzZXIudG9rZW4pO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBcImV2ZW50IHNlbGVjdGVkXCI6XG4gICAgICAgIC8vIFRPRE8gcHJvYmFqIHXEjWl0YXRpIGZyacWha2UgcG9kYXRrZSBvIHByaXJlZGJpIHByaWplIG5lZ28ganUgcHJpa2HFvmXFoVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJldmVudCBkaXNtaXNzZWRcIjpcbiAgICAgICAgLy8gcHJvYmFqIHXEjWl0YXRpIHBvZGF0a2UgbyBzdmltIHByaXJlZGJhbWEgaXptaWplbmplbmltIHUgbWXEkXV2cmVtZW51XG4gICAgICAgIC8vIC0gemEgc2FkYSBvdm8gcmFkaSBzYW1vIHphIHNsdcSNYWogYWRtaW4gaXptamVuZSBwb2RhdGFrYSxcbiAgICAgICAgLy8gb3N2amXFvmF2YW5qZSB6YSBvYmnEjW5lIGtvcmlzbmlrZSDEh2XFoSByaWplxaFpdGkga3JveiB3ZWJzb2NrZXRcbiAgICAgICAgaWYgKGlzR3JhbnRlZEZpbHRlcilcbiAgICAgICAgICBhd2FpdCByZWZyZXNoVW5maWx0ZXJlZEV2ZW50cyhzZWxlY3RlZFNlYXNvbiwgaXNHcmFudGVkRmlsdGVyLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGV2ZW50RGV0YWlsc1Nob3duID0gIWV2ZW50RGV0YWlsc1Nob3duO1xuICB9O1xuICBjb25zdCB0b2dnbGVFdmVudEVkaXRvclNob3duID0gKCkgPT4ge1xuICAgIGV2ZW50RWRpdG9yU2hvd24gPSAhZXZlbnRFZGl0b3JTaG93bjtcbiAgfTtcbiAgY29uc3QgdG9nZ2xlRHNhRmlsdGVyU2hvd24gPSAoKSA9PiB7XG4gICAgZHNhRmlsdGVyU2hvd24gPSAhZHNhRmlsdGVyU2hvd247XG4gIH07XG4gIGNvbnN0IHNlbGVjdEV2ZW50ID0gKGUpID0+IHtcbiAgICBzZWxlY3RlZEV2ZW50ID0gZS5kZXRhaWw7XG4gICAgdG9nZ2xlRXZlbnREZXRhaWxzU2hvd24oKTtcbiAgfTtcbiAgY29uc3QgdG9nZ2xlRm9sbG93RXZlbnQgPSAoZSkgPT4ge1xuICAgIGNvbnN0IGV2ZW50VG9Ub2dnbGUgPSBlLmRldGFpbDtcbiAgICB1bmZpbHRlcmVkRXZlbnRzID0gdW5maWx0ZXJlZEV2ZW50cy5tYXAoKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQucHJvcGVydGllcy5pZCA9PT0gZXZlbnRUb1RvZ2dsZS5wcm9wZXJ0aWVzLmlkKVxuICAgICAgICBldmVudC5wcm9wZXJ0aWVzLmlzRm9sbG93ZWQgPSAhZXZlbnQucHJvcGVydGllcy5pc0ZvbGxvd2VkO1xuICAgICAgaWYgKCFldmVudC5wcm9wZXJ0aWVzLmlzRm9sbG93ZWQpIHtcbiAgICAgICAgaGlnaGxpZ2h0ZWRFdmVudCA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gZXZlbnQ7XG4gICAgfSk7XG4gICAgdG9nZ2xlRm9sbG93RXZlbnRJbkRCKCR1c2VyLCBldmVudFRvVG9nZ2xlKTtcbiAgfTtcbiAgY29uc3QgaGlnaGxpZ2h0QnJhbmQgPSAoZSkgPT4ge1xuICAgIGhpZ2hsaWdodGVkQnJhbmQgPSBlLmRldGFpbDtcbiAgfTtcblxuICAkOiBpZiAoc2VsZWN0ZWRTZWFzb24pIHtcbiAgICAvLyBldmVudHNCeURhdGUgPSBsaXN0ZWRFdmVudHNCeURhdGUgPSB7fTtcbiAgICBrZXl3b3JkRmlsdGVyZWRFdmVudHMgPSBbXTtcbiAgfVxuICAkOiBpZiAoc2VsZWN0ZWRTZWFzb24pIHtcbiAgICByZWZyZXNoVW5maWx0ZXJlZEV2ZW50cyhzZWxlY3RlZFNlYXNvbiwgaXNHcmFudGVkRmlsdGVyKTtcbiAgfVxuICAkOiBpc0ZvbGxvd2VkRmlsdGVyZWRFdmVudHMgPSBpc0ZvbGxvd2VkRmlsdGVyXG4gICAgPyBmaWx0ZXJFdmVudHNCeUlzRm9sbG93ZWRGaWx0ZXIodW5maWx0ZXJlZEV2ZW50cylcbiAgICA6IHVuZmlsdGVyZWRFdmVudHM7XG4gIGNvbnN0IGZpbHRlckV2ZW50c0J5VmFjYW5jeUZpbHRlciA9IChldmVudHMpID0+IHtcbiAgICBjb25zdCBvcmlnRXZlbnRzID0gZXZlbnRzXG4gICAgY29uc3Qgb3V0RXZlbnRzID0gZXZlbnRzLmZpbHRlcihldmVudCA9PiBldmVudC5wcm9wZXJ0aWVzLnByb2dyYW0udmFjYW5jeUFsZXJ0cylcbiAgICByZXR1cm4gb3V0RXZlbnRzXG4gICAgfVxuICAkOiBpc1ZhY2FuY3lGaWx0ZXJlZEV2ZW50cyA9IGlzVmFjYW5jeUZpbHRlciBcbiAgICA/IGZpbHRlckV2ZW50c0J5VmFjYW5jeUZpbHRlcih1bmZpbHRlcmVkRXZlbnRzKSBcbiAgICA6IHVuZmlsdGVyZWRFdmVudHNcbiAgJDogZHNhRmlsdGVyZWRFdmVudHMgPSBkc2FGaWx0ZXJBY3RpdmVcbiAgICA/IGZpbHRlckV2ZW50c0J5RFNBRmlsdGVyKGlzVmFjYW5jeUZpbHRlcmVkRXZlbnRzLCBkc2FGaWx0ZXIpXG4gICAgOiBpc1ZhY2FuY3lGaWx0ZXJlZEV2ZW50cztcbiAgJDogZHNhU2VsZWN0ZWRFdmVudHMgPSBkc2FGaWx0ZXJBY3RpdmVcbiAgICA/IGZpbHRlckV2ZW50c0J5RFNBU2VsZWN0ZWQoZHNhRmlsdGVyZWRFdmVudHMsIGRzYVNlbGVjdGVkKVxuICAgIDogZHNhRmlsdGVyZWRFdmVudHM7XG4gICQ6IGRzYUhvdmVyZWRFdmVudHMgPSBmaWx0ZXJFdmVudHNCeURTQUhvdmVyZWQoZHNhU2VsZWN0ZWRFdmVudHMsIGRzYUhvdmVyZWQpO1xuICAvLyAqKioqXG4gICQ6IGRzYUhvdmVyZWRFdmVudHNCeURhdGUgPSB7fTtcbiAgLy8gJDogZHNhSG92ZXJlZEV2ZW50c0J5RGF0ZSA9IGlzRXZlbnRzU2lkZXBhbmVPblxuICAvLyAgID8gY291bnRFdmVudHNCeURhdGUoZHNhSG92ZXJlZEV2ZW50cylcbiAgLy8gICA6IHt9O1xuICAvLyAqKioqXG5cbiAgJDogY2F0ZWdvcmllc0ZpbHRlcmVkRXZlbnRzID0gZmlsdGVyRXZlbnRzQnlDYXRlZ29yaWVzRmlsdGVyKFxuICAgIGRzYVNlbGVjdGVkRXZlbnRzLFxuICAgIGNhdGVnb3JpZXNGaWx0ZXJcbiAgKTtcbiAgJDoga2V5d29yZEZpbHRlcmVkRXZlbnRzID1cbiAgICBmaWx0ZXJFdmVudHNCeUtleXdvcmRGaWx0ZXIoY2F0ZWdvcmllc0ZpbHRlcmVkRXZlbnRzLCBrZXl3b3JkRmlsdGVyKSB8fFxuICAgIGNhdGVnb3JpZXNGaWx0ZXJlZEV2ZW50cztcblxuICAkOiBldmVudHNCeURhdGUgPSBpc0V2ZW50c1NpZGVwYW5lT25cbiAgICA/IGNvdW50RXZlbnRzQnlEYXRlKGtleXdvcmRGaWx0ZXJlZEV2ZW50cylcbiAgICA6IHt9O1xuICAkOiBnZW9GaWx0ZXJlZEV2ZW50cyA9IGZpbHRlckV2ZW50c0J5R2VvRmlsdGVyKFxuICAgIGtleXdvcmRGaWx0ZXJlZEV2ZW50cyxcbiAgICBnZW9GaWx0ZXJcbiAgKTtcbiAgJDogbGlzdGVkRXZlbnRzQnlEYXRlID0gaXNFdmVudHNTaWRlcGFuZU9uXG4gICAgPyBjb3VudEV2ZW50c0J5RGF0ZShnZW9GaWx0ZXJlZEV2ZW50cylcbiAgICA6IHt9O1xuICAkOiBpZiAoc2VsZWN0ZWRTZWFzb24pXG4gICAgZGF0ZVJhbmdlRmlsdGVyZWRFdmVudHMgPVxuICAgICAgIWlzRXZlbnRzU2lkZXBhbmVPbiAmJiBrZXl3b3JkRmlsdGVyICE9IFwiXCJcbiAgICAgICAgPyBrZXl3b3JkRmlsdGVyZWRFdmVudHNcbiAgICAgICAgOiBzZWxlY3RlZFNlYXNvbiAmJiBkYXRlUmFuZ2VGaWx0ZXJcbiAgICAgICAgPyBmaWx0ZXJFdmVudHNCeURhdGVSYW5nZUZpbHRlcihcbiAgICAgICAgICAgIGtleXdvcmRGaWx0ZXJlZEV2ZW50cyxcbiAgICAgICAgICAgIGRhdGVSYW5nZUZpbHRlcltzZWxlY3RlZFNlYXNvbl1cbiAgICAgICAgICApXG4gICAgICAgIDogW107XG4gICQ6IGxpc3RlZEV2ZW50cyA9XG4gICAgIWlzRXZlbnRzU2lkZXBhbmVPbiAmJiBrZXl3b3JkRmlsdGVyICE9IFwiXCJcbiAgICAgID8ga2V5d29yZEZpbHRlcmVkRXZlbnRzXG4gICAgICA6IGZpbHRlckV2ZW50c0J5R2VvRmlsdGVyKGRhdGVSYW5nZUZpbHRlcmVkRXZlbnRzLCBnZW9GaWx0ZXIpO1xuICAkOiBzaG9ydGxpc3RlZEV2ZW50cyA9IGZpbHRlckV2ZW50c0J5SG92ZXJlZERhdGUobGlzdGVkRXZlbnRzLCBob3ZlcmVkRGF0ZSk7XG4gICQ6IHNob3J0bGlzdGVkRXZlbnRzID0gZmlsdGVyRXZlbnRzQnlEU0FIb3ZlcmVkKGxpc3RlZEV2ZW50cywgZHNhSG92ZXJlZCk7XG4gICQ6IHNob3J0bGlzdGVkRXZlbnRzID0gZmlsdGVyRXZlbnRzQnlIaWdobGlnaHRlZEJyYW5kKFxuICAgIGxpc3RlZEV2ZW50cyxcbiAgICBoaWdobGlnaHRlZEJyYW5kXG4gICk7XG4gICQ6IHNob3J0bGlzdGVkRXZlbnRzQnlEYXRlID0gaXNFdmVudHNTaWRlcGFuZU9uXG4gICAgPyBjb3VudEV2ZW50c0J5RGF0ZShzaG9ydGxpc3RlZEV2ZW50cylcbiAgICA6IHt9O1xuXG4gICQ6IGhpZ2hsaWdodGVkRGF0ZVJhbmdlID0gZ2V0SGlnaGxpZ2h0ZWREYXRlUmFuZ2UoaGlnaGxpZ2h0ZWRFdmVudCk7XG5cbiAgb25Nb3VudCgoKSA9PiB7XG4gICAgbW91bnRlZCA9IHRydWU7XG4gIH0pO1xuXG4gICQ6IGlmIChtb3VudGVkKSB7XG4gICAgKHsgdG90YWxFdmVudHNMaXN0Q29sdW1ucywgaXNFdmVudHNTaWRlcGFuZU9uLCBtYXBXaWR0aCwgZXZlbnRzTGlzdFdpZHRoIH0gPVxuICAgICAgYWRhcHREaXNwbGF5KCR2aWV3cG9ydFdILncpKTtcbiAgfVxuXG4gICQ6IGlmIChtb3VudGVkICYmIHNlbGVjdGVkU2Vhc29uKVxuICAgIGluaXRpYWxpemVVc2VyQnJvd3NpbmdTZXR0aW5ncyhzZWxlY3RlZFNlYXNvbiwgJHVzZXIuaWQpO1xuICAkOiBpZiAobW91bnRlZCAmJiBzZWxlY3RlZFNlYXNvbikge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgJHVzZXIuaWQsXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHNlbGVjdGVkU2Vhc29uLFxuICAgICAgICBrZXl3b3JkRmlsdGVyLFxuICAgICAgICBkc2FGaWx0ZXIsXG4gICAgICAgIGNhdGVnb3JpZXNGaWx0ZXIsXG4gICAgICAgIGRhdGVSYW5nZXM6IHtcbiAgICAgICAgICAuLi4obG9jYWxTdG9yYWdlLmdldEl0ZW0oJHVzZXIuaWQpXG4gICAgICAgICAgICA/IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJHVzZXIuaWQpKS5kYXRlUmFuZ2VzXG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICBbc2VsZWN0ZWRTZWFzb25dOiB7XG4gICAgICAgICAgICBzdGFydDpcbiAgICAgICAgICAgICAgZGF0ZVJhbmdlRmlsdGVyW3NlbGVjdGVkU2Vhc29uXSAmJlxuICAgICAgICAgICAgICBkYXRlUmFuZ2VGaWx0ZXJbc2VsZWN0ZWRTZWFzb25dLnN0YXJ0LFxuICAgICAgICAgICAgZW5kOlxuICAgICAgICAgICAgICBkYXRlUmFuZ2VGaWx0ZXJbc2VsZWN0ZWRTZWFzb25dICYmXG4gICAgICAgICAgICAgIGRhdGVSYW5nZUZpbHRlcltzZWxlY3RlZFNlYXNvbl0uZW5kLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGdlb0ZpbHRlcixcbiAgICAgICAgaXNHcmFudGVkRmlsdGVyLFxuICAgICAgfSlcbiAgICApO1xuICB9XG48L3NjcmlwdD5cblxueyNpZiBldmVudERldGFpbHNTaG93bn1cbiAgPGRpdiBjbGFzcz1cImV2ZW50LWRldGFpbHNcIj5cbiAgICA8TW9kYWxcbiAgICAgIG9uOmhpZGVNb2RhbFJlcXVlc3RlZD17dG9nZ2xlRXZlbnREZXRhaWxzU2hvd259XG4gICAgICBtb2RhbFdpZHRoPXtldmVudERldGFpbHNNb2RhbFd9XG4gICAgPlxuICAgICAgPEV2ZW50RGV0YWlsc1xuICAgICAgICBldmVudD17c2VsZWN0ZWRFdmVudH1cbiAgICAgICAgdXNlckxvY2F0aW9uPXt1c2VyQ3VycmVudExvY2F0aW9ufVxuICAgICAgICB7aXNHcmFudGVkRmlsdGVyfVxuICAgICAgICBiaW5kOmRzYUZpbHRlclxuICAgICAgICBvbjplZGl0RXZlbnQ9e3RvZ2dsZUV2ZW50RWRpdG9yU2hvd259XG4gICAgICAgIG9uOmV2ZW50RGVsZXRlZD17aGFuZGxlRXZlbnREZWxldGVkfVxuICAgICAgLz5cbiAgICA8L01vZGFsPlxuICA8L2Rpdj5cbnsvaWZ9XG5cbnsjaWYgZHNhRmlsdGVyU2hvd259XG4gIDxkaXYgY2xhc3M9XCJkc2EtZmlsdGVyXCI+XG4gICAgPE1vZGFsXG4gICAgICBtb2RhbFdpZHRoPXtkc2FGaWx0ZXJNb2RhbFd9XG4gICAgICBvbjpoaWRlTW9kYWxSZXF1ZXN0ZWQ9e3RvZ2dsZURzYUZpbHRlclNob3dufVxuICAgID5cbiAgICAgIDxEc2FGaWx0ZXIgYmluZDpkc2FGaWx0ZXIgYmluZDpkc2FGaWx0ZXJNb2RhbFcgLz5cbiAgICA8L01vZGFsPlxuICA8L2Rpdj5cbnsvaWZ9XG5cbnsjaWYgbW91bnRlZH1cbiAgPGRpdiBjbGFzcz1cImZyYW1lXCIgc3R5bGU9XCJ3aWR0aDoge21hcFdpZHRofXB4XCI+XG4gICAgPGRpdiBjbGFzcz1cImdlb21hcHtpc0V2ZW50c1NpZGVwYW5lT24gPyAnJyA6ICctb24tbmFycm93LXNjcmVlbid9XCI+XG4gICAgICA8R2VvbWFwRmlsdGVyXG4gICAgICAgIG9uOnNlbGVjdEV2ZW50UmVxdWVzdGVkPXtzZWxlY3RFdmVudH1cbiAgICAgICAgdmlld3BvcnRXSD17JHZpZXdwb3J0V0h9XG4gICAgICAgIHt1c2VySG9tZUxvY2F0aW9ufVxuICAgICAgICB7dXNlckN1cnJlbnRMb2NhdGlvbn1cbiAgICAgICAgZXZlbnRzPXtkYXRlUmFuZ2VGaWx0ZXJlZEV2ZW50c31cbiAgICAgICAge3Nob3J0bGlzdGVkRXZlbnRzfVxuICAgICAgICBiaW5kOmhpZ2hsaWdodGVkRXZlbnRcbiAgICAgICAgYmluZDpnZW9GaWx0ZXJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxvd2VyLXNlY3Rpb257aXNFdmVudHNTaWRlcGFuZU9uID8gJycgOiAnLW9uLW5hcnJvdy1zY3JlZW4nfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlcnMtYW5kLWV2ZW50c1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVycy1mcmFtZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmFtLWZpbHRlcnNcIj5cbiAgICAgICAgICAgIDxLZXl3b3JkQW5kUHJvZ3JhbUZpbHRlclxuICAgICAgICAgICAgICB7aXNFdmVudHNTaWRlcGFuZU9ufVxuICAgICAgICAgICAgICBjYXRlZ29yaWVzSW5EYXRhc2V0PXtjYXRlZ29yaWVzSW5VbmZpbHRlcmVkRXZlbnRzfVxuICAgICAgICAgICAgICB7ZHNhRmlsdGVyfVxuICAgICAgICAgICAgICBiaW5kOmNhdGVnb3JpZXNGaWx0ZXJcbiAgICAgICAgICAgICAgYmluZDpicmFuZHNGaWx0ZXJcbiAgICAgICAgICAgICAgYmluZDpoaWdobGlnaHRlZEJyYW5kXG4gICAgICAgICAgICAgIGJpbmQ6a2V5d29yZEZpbHRlclxuICAgICAgICAgICAgICBiaW5kOmlzVmFjYW5jeUZpbHRlclxuICAgICAgICAgICAgICBiaW5kOmlzTmV3c0ZpbHRlclxuICAgICAgICAgICAgICBiaW5kOmlzRm9sbG93ZWRGaWx0ZXJcbiAgICAgICAgICAgICAgYmluZDppc0dyYW50ZWRGaWx0ZXJcbiAgICAgICAgICAgICAgYmluZDpkc2FGaWx0ZXJBY3RpdmVcbiAgICAgICAgICAgICAgYmluZDpkc2FIb3ZlcmVkXG4gICAgICAgICAgICAgIGJpbmQ6ZHNhU2VsZWN0ZWRcbiAgICAgICAgICAgICAgb246dG9nZ2xlRHNhRmlsdGVyU2hvd25SZXF1ZXN0ZWQ9e3RvZ2dsZURzYUZpbHRlclNob3dufVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1yYW5nZS1maWx0ZXJcIj5cbiAgICAgICAgICAgIDxEYXRlUmFuZ2VGaWx0ZXJcbiAgICAgICAgICAgICAge2lzRXZlbnRzU2lkZXBhbmVPbn1cbiAgICAgICAgICAgICAge2V2ZW50c0J5RGF0ZX1cbiAgICAgICAgICAgICAge2RzYUhvdmVyZWRFdmVudHNCeURhdGV9XG4gICAgICAgICAgICAgIHtsaXN0ZWRFdmVudHNCeURhdGV9XG4gICAgICAgICAgICAgIHtzaG9ydGxpc3RlZEV2ZW50c0J5RGF0ZX1cbiAgICAgICAgICAgICAge2hpZ2hsaWdodGVkRGF0ZVJhbmdlfVxuICAgICAgICAgICAgICBiaW5kOnNlbGVjdGVkU2Vhc29uXG4gICAgICAgICAgICAgIGJpbmQ6ZGF0ZVJhbmdlRmlsdGVyXG4gICAgICAgICAgICAgIGJpbmQ6aG92ZXJlZERhdGVcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M6ZXZlbnRzLWxpc3Qtc2lkZXBhbmU9e2lzRXZlbnRzU2lkZXBhbmVPbn1cbiAgICAgICAgICBzdHlsZT1cIndpZHRoOiB7ZXZlbnRzTGlzdFdpZHRofXB4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxFdmVudHNMaXN0XG4gICAgICAgICAgICBvbjpzZWxlY3RFdmVudFJlcXVlc3RlZD17c2VsZWN0RXZlbnR9XG4gICAgICAgICAgICBvbjp0b2dnbGVGb2xsb3dFdmVudFJlcXVlc3RlZD17dG9nZ2xlRm9sbG93RXZlbnR9XG4gICAgICAgICAgICBvbjpoaWdobGlnaHRCcmFuZFJlcXVlc3RlZD17aGlnaGxpZ2h0QnJhbmR9XG4gICAgICAgICAgICB7aXNFdmVudHNTaWRlcGFuZU9ufVxuICAgICAgICAgICAge3RvdGFsRXZlbnRzTGlzdENvbHVtbnN9XG4gICAgICAgICAgICBldmVudHM9e2xpc3RlZEV2ZW50c31cbiAgICAgICAgICAgIHtzaG9ydGxpc3RlZEV2ZW50c31cbiAgICAgICAgICAgIGJpbmQ6aGlnaGxpZ2h0ZWRFdmVudFxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2Plxuey9pZn1cblxuPHN0eWxlPlxuICAuZXZlbnQtZGV0YWlscyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDM7XG4gIH1cbiAgLmRzYS1maWx0ZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAzO1xuICB9XG4gIC5mcmFtZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7IC8qKi9cbiAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS1uYXZiYXItaHQpKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG4gIC5mcmFtZSAuZ2VvbWFwIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS1uYXZiYXItaHQpIC0gMzkwcHgpO1xuICAgIG1pbi1oZWlnaHQ6IDMwMHB4O1xuICAgIGJveC1zaGFkb3c6IDAgMCAxNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgfVxuICAuZnJhbWUgLmdlb21hcC1vbi1uYXJyb3ctc2NyZWVuIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMjtcbiAgICBoZWlnaHQ6IDM1dmg7XG4gICAgbWluLWhlaWdodDogMDtcbiAgICBib3gtc2hhZG93OiAwIDAgMTVweCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIH1cbiAgLmZyYW1lIC5sb3dlci1zZWN0aW9uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgei1pbmRleDogMjtcbiAgICBib3R0b206IDEwcHg7XG4gIH1cbiAgLmZyYW1lIC5sb3dlci1zZWN0aW9uLW9uLW5hcnJvdy1zY3JlZW4ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgei1pbmRleDogMTtcbiAgICB0b3A6IGNhbGMoMzV2aCArIDEwcHgpO1xuICAgIGJvdHRvbTogMDtcblxuICAgIC8qIHotaW5kZXg6IDM7XG4gICAgYm9yZGVyOiAzcHggc29saWQgcmVkOyAqL1xuICB9XG4gIC5ldmVudHMtbGlzdC1zaWRlcGFuZSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogdmFyKC0tbmF2YmFyLWh0KTtcbiAgICBib3R0b206IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm94LXNoYWRvdzogMCAwIDE1cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gIH1cbiAgLmZyYW1lIC5maWx0ZXJzLWFuZC1ldmVudHMge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBtYXJnaW46IDAgYXV0bzsgLyogb3ZhIHRpIG9zaWd1cmF2YSBkYSBpbWHFoSBza3JvbGFuamUgYWxpIGRhIG5lbWHFoSBzY3JvbGxiYXIgKi9cbiAgICAvKiB3aWR0aDogMTAwJTsgKi8gLyogb3ZvZ2EgTkUgU01JSkXFoCBpbWF0aSwgamVyIHRpIHJhemJpamEgc2tyb2xhbmplIGJleiBzY3JvbGxiYXJhKi9cbiAgICB0b3A6IDA7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgfVxuICAuZnJhbWUgLmZpbHRlcnMtYW5kLWV2ZW50cyAuZmlsdGVycy1mcmFtZSB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB6LWluZGV4OiAzO1xuICAgIHRvcDogLTE2MHB4O1xuICAgIG1hcmdpbjogMTBweDtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIG1heC13aWR0aDogY2FsYyh2YXIoLS1jYWxlbmRhci13aWR0aCkgKyA0MHB4KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGJveC1zaGFkb3c6IDAgMCAxNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgfVxuPC9zdHlsZT5cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRRSxNQUFNLGVBQUMsQ0FBQyxBQUNOLGdCQUFnQixDQUFFLEtBQUssQUFDekIsQ0FBQztBQzZCRCxNQUFNLDRCQUFDLENBQUMsQUFDTixPQUFPLENBQUUsSUFBSSxDQUNiLFNBQVMsQ0FBRSxNQUFNLENBQ2pCLGVBQWUsQ0FBRSxhQUFhLENBQzlCLGdCQUFnQixDQUFFLE9BQU8sQ0FDekIsT0FBTyxDQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxBQUNwQixDQUFDLEFBQ0Qsb0JBQU0sQ0FBQyxTQUFTLGNBQUMsQ0FBQyxBQUNoQixNQUFNLENBQUUsSUFBSSxDQUNaLEtBQUssQ0FBRSxJQUFJLENBQ1gsZ0JBQWdCLENBQUUsSUFBSSxrQ0FBa0MsQ0FBQyxDQUN6RCxpQkFBaUIsQ0FBRSxTQUFTLENBQzVCLGVBQWUsQ0FBRSxPQUFPLENBQ3hCLG1CQUFtQixDQUFFLE1BQU0sQ0FBQyxNQUFNLENBRWxDLFVBQVUsQ0FBRSxNQUFNLENBQ2xCLEtBQUssQ0FBRSxLQUFLLENBQ1osV0FBVyxDQUFFLElBQUksQ0FDakIsU0FBUyxDQUFFLElBQUksQ0FDZixVQUFVLENBQUUsTUFBTSxDQUNsQixXQUFXLENBQUUsR0FBRyxBQUNsQixDQUFDLEFBTUQsT0FBTyw0QkFBQyxDQUFDLEFBQ1AsTUFBTSxDQUFFLE9BQU8sQUFDakIsQ0FBQztBQ3JCRCxNQUFNLDRCQUFDLENBQUMsQUFDTixjQUFjLENBQUUsSUFBSSxDQUNwQixNQUFNLENBQUUsSUFBSSxjQUFjLENBQUMsQ0FDM0IsZ0JBQWdCLENBQUUsT0FBTyxDQUN6QixPQUFPLENBQUUsSUFBSSxDQUNiLFdBQVcsQ0FBRSxNQUFNLENBQ25CLElBQUksQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQUFDaEIsQ0FBQyxBQUNELG9CQUFNLENBQUMsWUFBWSxjQUFDLENBQUMsQUFDbkIsUUFBUSxDQUFFLFFBQVEsQ0FDbEIsTUFBTSxDQUFFLElBQUksQ0FDWixLQUFLLENBQUUsSUFBSSxBQUNiLENBQUMsQUFDRCxvQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLGNBQUMsQ0FBQyxBQUN2QixNQUFNLENBQUUsSUFBSSxDQUNaLFFBQVEsQ0FBRSxRQUFRLENBQ2xCLEdBQUcsQ0FBRSxHQUFHLENBQ1IsSUFBSSxDQUFFLEdBQUcsQ0FDVCxTQUFTLENBQUUsVUFBVSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQUFDbEMsQ0FBQyxBQUNELG9CQUFNLENBQUMsS0FBSyxjQUFDLENBQUMsQUFDWixLQUFLLENBQUUsSUFBSSxDQUNYLFNBQVMsQ0FBRSxJQUFJLENBQ2YsTUFBTSxDQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDakIsT0FBTyxDQUFFLENBQUMsQ0FDVixLQUFLLENBQUUsSUFBSSxBQUNiLENBQUMsQUFDRCxvQkFBTSxDQUFDLFlBQVksY0FBQyxDQUFDLEFBQ25CLEtBQUssQ0FBRSxLQUFLLEFBQ2QsQ0FBQztBQ2hERCxNQUFNLDRCQUFDLENBQUMsQUFDTixJQUFJLENBQUUsQ0FBQyxDQUNQLE9BQU8sQ0FBRSxHQUFHLENBQ1osT0FBTyxDQUFFLElBQUksQ0FDYixVQUFVLENBQUUsTUFBTSxDQUNsQixXQUFXLENBQUUsTUFBTSxBQUNyQixDQUFDLEFBQ0Qsb0JBQU0sQ0FBQyxXQUFXLGNBQUMsQ0FBQyxBQUNsQixNQUFNLENBQUUsSUFBSSxDQUNaLEtBQUssQ0FBRSxJQUFJLENBQ1gsTUFBTSxDQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNyQixhQUFhLENBQUUsR0FBRyxDQUNsQixNQUFNLENBQUUsR0FBRyxDQUFDLEdBQUcsQ0FDZixRQUFRLENBQUUsTUFBTSxDQUNoQixNQUFNLENBQUUsT0FBTyxBQUNqQixDQUFDLEFBRUQsb0JBQU0sQ0FBQyxjQUFjLGNBQUMsQ0FBQyxBQUNyQixVQUFVLENBQUUsS0FBSyxBQUNuQixDQUFDLEFBQ0Qsb0JBQU0sQ0FBQyxXQUFXLGNBQUMsQ0FBQyxBQUNsQixVQUFVLENBQUUsTUFBTSxBQUNwQixDQUFDO0FDU0QsTUFBTSw4QkFBQyxDQUFDLEFBQ04sT0FBTyxDQUFFLElBQUksQ0FDYixjQUFjLENBQUUsTUFBTSxDQUN0QixlQUFlLENBQUUsYUFBYSxDQUc5QixTQUFTLENBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxBQUMvQixDQUFDLEFBQ0QscUJBQU0sQ0FBQyw2QkFBNkIsZUFBQyxDQUFDLEFBQ3BDLE9BQU8sQ0FBRSxJQUFJLENBQ2IsU0FBUyxDQUFFLElBQUksQ0FDZixXQUFXLENBQUUsTUFBTSxDQUNuQixlQUFlLENBQUUsTUFBTSxBQUN6QixDQUFDLEFBQ0QscUJBQU0sQ0FBQyw2QkFBNkIsQ0FBQyxXQUFXLGVBQUMsQ0FBQyxBQUNoRCxLQUFLLENBQUUsSUFBSSxDQUNYLE1BQU0sQ0FBRSxDQUFDLENBQ1QsT0FBTyxDQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxBQUNuQixDQUFDLEFBQ0QscUJBQU0sQ0FBQyw2QkFBNkIsQ0FBQyxxQkFBcUIsZUFBQyxDQUFDLEFBQzFELE9BQU8sQ0FBRSxJQUFJLENBQ2IsU0FBUyxDQUFFLE1BQU0sQ0FDakIsV0FBVyxDQUFFLE1BQU0sQ0FDbkIsU0FBUyxDQUFFLEtBQUssQ0FDaEIsTUFBTSxDQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDakIsSUFBSSxDQUFFLENBQUMsQUFDVCxDQUFDLEFBQ0QscUJBQU0sQ0FBQyw2QkFBNkIsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLGVBQUMsQ0FBQyxBQUNoRSxRQUFRLENBQUUsUUFBUSxDQUNsQixNQUFNLENBQUUsSUFBSSxDQUNaLEtBQUssQ0FBRSxJQUFJLENBQ1gsTUFBTSxDQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDakIsZ0JBQWdCLENBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDeEMsYUFBYSxDQUFFLEdBQUcsQUFDcEIsQ0FBQyxBQUNELHFCQUFNLENBQUMsNkJBQTZCLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEdBQUcsZUFBQyxDQUFDLEFBQ3BFLFFBQVEsQ0FBRSxRQUFRLENBQ2xCLE1BQU0sQ0FBRSxJQUFJLENBQ1osR0FBRyxDQUFFLEdBQUcsQ0FDUixJQUFJLENBQUUsR0FBRyxDQUNULFNBQVMsQ0FBRSxVQUFVLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxBQUNsQyxDQUFDLEFBQ0QscUJBQU0sQ0FBQyw2QkFBNkIsQ0FBQyx3QkFBd0IsZUFBQyxDQUFDLEFBQzdELElBQUksQ0FBRSxDQUFDLEFBQ1QsQ0FBQyxBQUNELHFCQUFNLENBQUMsaUJBQWlCLGVBQUMsQ0FBQyxBQUN4QixJQUFJLENBQUUsQ0FBQyxDQUNQLE1BQU0sQ0FBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDaEIsT0FBTyxDQUFFLEdBQUcsQ0FDWixnQkFBZ0IsQ0FBRSxPQUFPLENBQ3pCLE9BQU8sQ0FBRSxJQUFJLEFBQ2YsQ0FBQyxBQUNELHFCQUFNLENBQUMsaUJBQWlCLENBQUMsMEJBQTBCLGVBQUMsQ0FBQyxBQUNuRCxPQUFPLENBQUUsSUFBSSxBQUNmLENBQUMsQUFDRCxxQkFBTSxDQUFDLGlCQUFpQixDQUFDLDBCQUEwQixDQUFDLE9BQU8sZUFBQyxDQUFDLEFBQzNELE1BQU0sQ0FBRSxJQUFJLENBQ1osS0FBSyxDQUFFLElBQUksQ0FDWCxZQUFZLENBQUUsR0FBRyxDQUNqQixNQUFNLENBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQ3ZCLGdCQUFnQixDQUFFLEtBQUssQ0FDdkIsT0FBTyxDQUFFLEdBQUcsQ0FDWixhQUFhLENBQUUsR0FBRyxDQUNsQixRQUFRLENBQUUsTUFBTSxDQUNoQixNQUFNLENBQUUsT0FBTyxBQUNqQixDQUFDLEFBQ0QscUJBQU0sQ0FBQyxpQkFBaUIsQ0FBQywwQkFBMEIsQ0FBQyxpQkFBaUIsZUFBQyxDQUFDLEFBQ3JFLE1BQU0sQ0FBRSxPQUFPLENBQ2YsT0FBTyxDQUFFLEdBQUcsQUFDZCxDQUFDLEFBQ0QscUJBQU0sQ0FBQyxpQkFBaUIsQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsR0FBRyxlQUFDLENBQUMsQUFDL0QsTUFBTSxDQUFFLElBQUksQ0FDWixLQUFLLENBQUUsSUFBSSxDQUNYLFVBQVUsQ0FBRSxPQUFPLEFBQ3JCLENBQUMsQUFDRCxxQkFBTSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixlQUFDLENBQUMsQUFDN0MsSUFBSSxDQUFFLENBQUMsQ0FDUCxnQkFBZ0IsQ0FBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUNwQyxPQUFPLENBQUUsR0FBRyxDQUNaLE9BQU8sQ0FBRSxJQUFJLENBQ2IsVUFBVSxDQUFFLE1BQU0sQ0FDbEIsZUFBZSxDQUFFLFVBQVUsQ0FDM0IsV0FBVyxDQUFFLE1BQU0sQUFDckIsQ0FBQyxBQUNELHFCQUFNLENBQUMsaUJBQWlCLENBQUMsOEJBQThCLGVBQUMsQ0FBQyxBQUN2RCxPQUFPLENBQUUsR0FBRyxDQUNaLE1BQU0sQ0FBRSxPQUFPLENBQ2YsY0FBYyxDQUFFLElBQUksQUFDdEIsQ0FBQyxBQUNELHFCQUFNLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxlQUFDLENBQUMsQUFDbEQsSUFBSSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNkLE1BQU0sQ0FBRSxPQUFPLENBQ2YsTUFBTSxDQUFFLEdBQUcsQ0FBQyxHQUFHLENBQ2YsT0FBTyxDQUFFLEdBQUcsQ0FDWixhQUFhLENBQUUsR0FBRyxDQUNsQixLQUFLLENBQUUsS0FBSyxDQUNaLFdBQVcsQ0FBRSxJQUFJLENBQ2pCLFNBQVMsQ0FBRSxJQUFJLENBQ2YsT0FBTyxDQUFFLEdBQUcsQ0FDWixNQUFNLENBQUUsV0FBVyxBQUNyQixDQUFDLEFBQ0QscUJBQU0sQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLGVBQUMsQ0FBQyxBQUNyRCxnQkFBZ0IsQ0FBRSxPQUFPLEFBQzNCLENBQUMsQUFDRCxxQkFBTSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLE9BQU8sZUFBQyxDQUFDLEFBQ3JELGdCQUFnQixDQUFFLE9BQU8sQUFDM0IsQ0FBQyxBQUNELHFCQUFNLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsT0FBTyxlQUFDLENBQUMsQUFDckQsZ0JBQWdCLENBQUUsT0FBTyxBQUMzQixDQUFDLEFBQ0QscUJBQU0sQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLGVBQUMsQ0FBQyxBQUMzRCxLQUFLLENBQUUsS0FBSyxDQUNaLE9BQU8sQ0FBRSxDQUFDLEFBQ1osQ0FBQyxBQUNELHFCQUFNLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsY0FBYyxlQUFDLENBQUMsQUFDNUQsS0FBSyxDQUFFLEtBQUssQ0FDWixPQUFPLENBQUUsQ0FBQyxBQUNaLENBQUMsQUFDRCxxQkFBTSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLEtBQUssZUFBQyxDQUFDLEFBQ25ELFNBQVMsQ0FBRSxJQUFJLENBQ2YsTUFBTSxDQUFFLENBQUMsQ0FBQyxHQUFHLENBQ2IsV0FBVyxDQUFFLElBQUksQ0FDakIsT0FBTyxDQUFFLEdBQUcsQUFDZCxDQUFDLEFBQzJCLENBQUMsQUFDN0IsQ0FBQztBQ2hMRCxFQUFFLGFBQUMsQ0FBQyxBQUNGLGdCQUFnQixDQUFFLElBQUksQ0FDdEIsV0FBVyxDQUFFLElBQUksQUFDbkIsQ0FBQyxBQUNELEVBQUUsYUFBQyxDQUFDLEFBQ0YsS0FBSyxDQUFFLElBQUksQ0FDWCxTQUFTLENBQUUsSUFBSSxDQUNmLFVBQVUsQ0FBRSxNQUFNLENBQ2xCLEtBQUssQ0FBRSxLQUFLLENBQ1osZ0JBQWdCLENBQUUsSUFBSSxDQUN0QixPQUFPLENBQUUsR0FBRyxBQUNkLENBQUMsQUFDRCxVQUFVLGFBQUMsQ0FBQyxBQUNWLEtBQUssQ0FBRSxLQUFLLENBQ1osZ0JBQWdCLENBQUUsU0FBUyxBQUM3QixDQUFDLEFBQ0QsS0FBSyxhQUFDLENBQUMsQUFDTCxnQkFBZ0IsQ0FBRSxLQUFLLEFBQ3pCLENBQUMsQUFDRCxVQUFVLGFBQUMsQ0FBQyxBQUNWLEtBQUssQ0FBRSxHQUFHLENBQ1YsZ0JBQWdCLENBQUUsS0FBSyxBQUN6QixDQUFDO0FDdURELEVBQUUsZUFBQyxDQUFDLEFBQ0YsUUFBUSxDQUFFLFFBQVEsQ0FDbEIsS0FBSyxDQUFFLElBQUksQ0FDWCxTQUFTLENBQUUsSUFBSSxDQUNmLFVBQVUsQ0FBRSxNQUFNLENBQ2xCLE1BQU0sQ0FBRSxJQUFJLENBRVosS0FBSyxDQUFFLGFBQWEsQ0FDcEIsTUFBTSxDQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUU1QixNQUFNLENBQUUsT0FBTyxDQUNmLE9BQU8sQ0FBRSxHQUFHLEFBQ2QsQ0FBQyxBQUVELFdBQVcsZUFBQyxDQUFDLEFBQ1gsS0FBSyxDQUFFLGFBQWEsQUFDdEIsQ0FBQyxBQUVELDBCQUEwQixlQUFDLENBQUMsQUFDMUIsVUFBVSxDQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBRXRDLEtBQUssQ0FBRSxVQUFVLENBQ2pCLFdBQVcsQ0FBRSxJQUFJLEFBQ25CLENBQUMsQUFFRCxRQUFRLGVBQUMsQ0FBQyxBQUNSLFVBQVUsQ0FBRSxTQUFTLENBQ3JCLEtBQUssQ0FBRSxVQUFVLEFBRW5CLENBQUMsQUFFRCxrQkFBa0IsZUFBQyxDQUFDLEFBQ2xCLFVBQVUsQ0FBRSxTQUFTLENBQ3JCLEtBQUssQ0FBRSxVQUFVLEFBRW5CLENBQUMsQUFFRCxjQUFjLGVBQUMsQ0FBQyxBQUNkLFVBQVUsQ0FBRSxPQUFPLENBQ25CLEtBQUssQ0FBRSxLQUFLLEFBRWQsQ0FBQyxBQUVELGlCQUFpQixlQUFDLENBQUMsQUFDakIsVUFBVSxDQUFFLFNBQVMsQ0FDckIsS0FBSyxDQUFFLEtBQUssQUFDZCxDQUFDLEFBRUQsVUFBVSxlQUFDLENBQUMsQUFDVixVQUFVLENBQUUsU0FBUyxBQUl2QixDQUFDLEFBRUQsc0NBQXNDLGVBQUMsQ0FBQyxBQUN0QyxVQUFVLENBQUUsT0FBTyxDQUNuQixLQUFLLENBQUUsS0FBSyxBQUNkLENBQUMsQUFFRCxnQkFBZ0IsZUFBQyxDQUFDLEFBQ2hCLFVBQVUsQ0FBRSxTQUFTLEFBS3ZCLENBQUMsQUFFRCw0Q0FBNEMsZUFBQyxDQUFDLEFBQzVDLFVBQVUsQ0FBRSxPQUFPLENBQ25CLEtBQUssQ0FBRSxLQUFLLEFBQ2QsQ0FBQyxBQUVELFlBQVksZUFBQyxDQUFDLEFBQ1osS0FBSyxDQUFFLElBQUksQ0FDWCxnQkFBZ0IsQ0FBRSxhQUFhLENBQy9CLEtBQUssQ0FBRSxLQUFLLENBQ1osVUFBVSxDQUFFLE1BQU0sQ0FDbEIsT0FBTyxDQUFFLEdBQUcsQ0FBQyxDQUFDLENBQ2QsYUFBYSxDQUFFLEdBQUcsQ0FDbEIsU0FBUyxDQUFFLElBQUksQ0FDZixXQUFXLENBQUUsTUFBTSxDQUduQixRQUFRLENBQUUsUUFBUSxDQUNsQixHQUFHLENBQUUsS0FBSyxDQUNWLElBQUksQ0FBRSxLQUFLLENBQ1gsT0FBTyxDQUFFLENBQUMsQUFDWixDQUFDO0FDbEpELEVBQUUsZUFBQyxDQUFDLEFBQ0YsTUFBTSxDQUFFLElBQUksQUFDZCxDQUFDLEFBQ0QsRUFBRSxlQUFDLENBQUMsQUFDRixLQUFLLENBQUUsSUFBSSxDQUNYLFNBQVMsQ0FBRSxJQUFJLENBQ2YsVUFBVSxDQUFFLEdBQUcsQ0FDZixPQUFPLENBQUUsR0FBRyxBQUNkLENBQUMsQUFDRCxVQUFVLGVBQUMsQ0FBQyxBQUNWLEtBQUssQ0FBRSxHQUFHLEFBQ1osQ0FBQyxBQUNELFVBQVUsZUFBQyxDQUFDLEFBQ1YsS0FBSyxDQUFFLGFBQWEsQ0FDcEIsS0FBSyxDQUFFLElBQUksQ0FDWCxhQUFhLENBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQ2xDLE1BQU0sQ0FBRSxPQUFPLEFBQ2pCLENBQUMsQUFDRCxXQUFXLGVBQUMsQ0FBQyxBQUNYLEtBQUssQ0FBRSxhQUFhLEFBQ3RCLENBQUMsQUFDRCxPQUFPLGVBQUMsQ0FBQyxBQUNQLFdBQVcsQ0FBRSxNQUFNLEFBQ3JCLENBQUM7QUNpREQsS0FBSyxBQUFDLENBQUMsQUFDTCxnQkFBZ0IsQ0FBRSxLQUFLLEFBQ3pCLENBQUMsQUFDRCxLQUFLLDhCQUFDLENBQUMsQUFDTCxLQUFLLENBQUUsSUFBSSxnQkFBZ0IsQ0FBQyxBQUM5QixDQUFDLEFBQ0QsY0FBYyw4QkFBQyxDQUFDLEFBQ2QsT0FBTyxDQUFFLElBQUksQ0FDYixlQUFlLENBQUUsTUFBTSxDQUN2QixPQUFPLENBQUUsR0FBRyxDQUFDLENBQUMsQ0FDZCxXQUFXLENBQUUsSUFBSSxBQUNuQixDQUFDLEFBQ0QsNkJBQWMsQ0FBQyxPQUFPLGVBQUMsQ0FBQyxBQUN0QixPQUFPLENBQUUsSUFBSSxDQUNiLEtBQUssQ0FBRSxJQUFJLENBQ1gsV0FBVyxDQUFFLElBQUksQ0FDakIsZUFBZSxDQUFFLE1BQU0sQUFDekIsQ0FBQyxBQUNELDZCQUFjLENBQUMsV0FBVyxlQUFDLENBQUMsQUFDMUIsS0FBSyxDQUFFLGNBQWMsQUFDdkIsQ0FBQyxBQUNELDZCQUFjLENBQUMsMEJBQVcsTUFBTSxBQUFDLENBQUMsQUFDaEMsS0FBSyxDQUFFLGFBQWEsQUFDdEIsQ0FBQyxBQUlELDZCQUFjLENBQUMsU0FBUyxlQUFDLENBQUMsQUFDeEIsS0FBSyxDQUFFLEtBQUssQ0FDWixnQkFBZ0IsQ0FBRSxPQUFPLENBQ3pCLGFBQWEsQ0FBRSxHQUFHLEFBRXBCLENBQUMsQUFJRCxLQUFLLDhCQUFDLENBQUMsQUFDTCxLQUFLLENBQUUsSUFBSSxDQUNYLE1BQU0sQ0FBRSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FDM0IsT0FBTyxDQUFFLEdBQUcsQ0FDWixVQUFVLENBQUUsS0FBSyxDQUNqQixXQUFXLENBQUUsSUFBSSxBQUNuQixDQUFDO0FDekVELGtCQUFrQixlQUFDLENBQUMsQUFDbEIsVUFBVSxDQUFFLEdBQUcsQ0FDZixPQUFPLENBQUUsSUFBSSxDQUNiLGVBQWUsQ0FBRSxhQUFhLENBQzlCLGdCQUFnQixDQUFFLEtBQUssQ0FDdkIsU0FBUyxDQUFFLElBQUksQUFDakIsQ0FBQyxBQVFELFdBQVcsZUFBQyxDQUFDLEFBQ1gsS0FBSyxDQUFFLEdBQUcsQ0FDVixNQUFNLENBQUUsSUFBSSxDQUNaLGdCQUFnQixDQUFFLE9BQU8sQ0FDekIsYUFBYSxDQUFFLEdBQUcsQ0FDbEIsT0FBTyxDQUFFLElBQUksQUFDZixDQUFDLEFBQ0QsR0FBRyxlQUFDLENBQUMsQUFFSCxVQUFVLENBQUUsTUFBTSxDQUNsQixNQUFNLENBQUUsSUFBSSxDQUNaLE9BQU8sQ0FBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEFBQ3RCLENBQUMsQUFDRCxLQUFLLGVBQUMsQ0FBQyxBQUNMLElBQUksQ0FBRSxDQUFDLENBQ1AsU0FBUyxDQUFFLElBQUksQ0FDZixVQUFVLENBQUUsTUFBTSxDQUNsQixnQkFBZ0IsQ0FBRSxPQUFPLEFBQzNCLENBQUM7QUMxRUQsbUJBQW1CLGVBQUMsQ0FBQyxBQUNuQixnQkFBZ0IsQ0FBRSxLQUFLLEFBQ3pCLENBQUMsQUFDRCxtQkFBbUIsZUFBQyxDQUFDLEFBQ25CLGdCQUFnQixDQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEFBQzVDLENBQUM7QUNzUkQsT0FBTyxlQUFDLENBQUMsQUFDUCxRQUFRLENBQUUsUUFBUSxDQUNsQixLQUFLLENBQUUsSUFBSSxDQUNYLEdBQUcsQ0FBRSxDQUFDLENBQ04sTUFBTSxDQUFFLENBQUMsQUFDWCxDQUFDLEFBQ08sV0FBVyxBQUFFLENBQUMsQUFHcEIsZ0JBQWdCLENBQUUsSUFBSSxrQ0FBa0MsQ0FBQyxDQUN6RCxpQkFBaUIsQ0FBRSxTQUFTLENBQzVCLGVBQWUsQ0FBRSxPQUFPLENBQ3hCLG1CQUFtQixDQUFFLE1BQU0sQ0FBQyxNQUFNLENBQ2xDLFVBQVUsQ0FBRSxNQUFNLENBQ2xCLEtBQUssQ0FBRSxLQUFLLENBQ1osV0FBVyxDQUFFLElBQUksQ0FDakIsU0FBUyxDQUFFLElBQUksQ0FDZixVQUFVLENBQUUsTUFBTSxDQUNsQixXQUFXLENBQUUsR0FBRyxBQUNsQixDQUFDLEFBQ08sc0JBQXNCLEFBQUUsQ0FBQyxBQUcvQixnQkFBZ0IsQ0FBRSxJQUFJLCtCQUErQixDQUFDLENBQ3RELGlCQUFpQixDQUFFLFNBQVMsQ0FDNUIsZUFBZSxDQUFFLE9BQU8sQ0FDeEIsbUJBQW1CLENBQUUsTUFBTSxDQUFDLE1BQU0sQ0FDbEMsVUFBVSxDQUFFLE1BQU0sQ0FDbEIsS0FBSyxDQUFFLEtBQUssQ0FDWixXQUFXLENBQUUsSUFBSSxDQUNqQixTQUFTLENBQUUsSUFBSSxDQUNmLFVBQVUsQ0FBRSxNQUFNLENBQ2xCLFdBQVcsQ0FBRSxHQUFHLEFBQ2xCLENBQUM7QUN0SUQsS0FBSyxBQUFDLENBQUMsQUFDTCxZQUFZLENBQUUsSUFBSSxDQUNsQixhQUFhLENBQUUsSUFBSSxBQUNyQixDQUFDLEFBQ0QsV0FBVyw4QkFBQyxDQUFDLEFBQ1gsTUFBTSxDQUFFLElBQUksQ0FDWixnQkFBZ0IsQ0FBRSxVQUFVLENBQzVCLGFBQWEsQ0FBRSxHQUFHLENBQ2xCLFVBQVUsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxDQUM5QyxPQUFPLENBQUUsSUFBSSxDQUNiLGNBQWMsQ0FBRSxNQUFNLEFBQ3hCLENBQUMsQUFDRCxjQUFjLDhCQUFDLENBQUMsQUFDZCxVQUFVLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEFBQ2hELENBQUMsQUFTRCwwQkFBVyxDQUFDLGNBQWMsZUFBQyxDQUFDLEFBQzFCLGdCQUFnQixDQUFFLGFBQWEsQ0FDL0IsS0FBSyxDQUFFLEtBQUssQUFDZCxDQUFDLEFBQ0QsMEJBQVcsQ0FBQyxLQUFLLGVBQUMsQ0FBQyxBQUNqQixRQUFRLENBQUUsUUFBUSxDQUNsQixLQUFLLENBQUUsSUFBSSxDQUNYLE9BQU8sQ0FBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQzNCLE9BQU8sQ0FBRSxJQUFJLENBQ2IsY0FBYyxDQUFFLEdBQUcsQ0FDbkIsUUFBUSxDQUFFLE1BQU0sQUFDbEIsQ0FBQyxBQUNELDBCQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsZUFBQyxDQUFDLEFBQzNCLFFBQVEsQ0FBRSxRQUFRLENBQ2xCLElBQUksQ0FBRSxDQUFDLENBQ1AsR0FBRyxDQUFFLENBQUMsQ0FDTixVQUFVLENBQUUsS0FBSyxDQUNqQixLQUFLLENBQUUsSUFBSSxDQUVYLE9BQU8sQ0FBRSxJQUFJLEFBQ2YsQ0FBQyxBQUNELDBCQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsZUFBQyxDQUFDLEFBQzdCLEtBQUssQ0FBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ3hCLElBQUksQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDZCxPQUFPLENBQUUsSUFBSSxDQUNiLGNBQWMsQ0FBRSxNQUFNLENBQ3RCLGVBQWUsQ0FBRSxVQUFVLENBQzNCLE1BQU0sQ0FBRSxPQUFPLENBQ2YsT0FBTyxDQUFFLENBQUMsQUFDWixDQUFDLEFBQ0QsMEJBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLGdCQUFnQixlQUFDLENBQUMsQUFDOUMsTUFBTSxDQUFFLElBQUksYUFBYSxDQUFDLENBQzFCLE9BQU8sQ0FBRSxJQUFJLEFBQ2YsQ0FBQyxBQUNELDBCQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLGVBQUMsQ0FBQyxBQUNwRCxNQUFNLENBQUUsSUFBSSxhQUFhLENBQUMsQ0FDMUIsS0FBSyxDQUFFLElBQUksWUFBWSxDQUFDLENBQ3hCLFFBQVEsQ0FBRSxNQUFNLENBQ2hCLFVBQVUsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxBQUNoRCxDQUFDLEFBQ0QsMEJBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLGVBQUMsQ0FBQyxBQUN4RCxNQUFNLENBQUUsSUFBSSxhQUFhLENBQUMsQ0FDMUIsS0FBSyxDQUFFLElBQUksWUFBWSxDQUFDLENBQ3hCLFVBQVUsQ0FBRSxLQUFLLEFBQ25CLENBQUMsQUFDRCwwQkFBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsV0FBVyxlQUFDLENBQUMsQUFDekMsSUFBSSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNkLFlBQVksQ0FBRSxHQUFHLENBQ2pCLE9BQU8sQ0FBRSxJQUFJLENBQ2IsY0FBYyxDQUFFLE1BQU0sQUFDeEIsQ0FBQyxBQUNELDBCQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxlQUFDLENBQUMsQUFDaEQsU0FBUyxDQUFFLElBQUksQ0FDZixXQUFXLENBQUUsTUFBTSxBQUNyQixDQUFDLEFBQ0QsMEJBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLGVBQUMsQ0FBQyxBQUNqRCxDQUFDLEFBQ0QsMEJBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFlBQVksZUFBQyxDQUFDLEFBQzFDLE1BQU0sQ0FBRSxJQUFJLENBQ1osT0FBTyxDQUFFLElBQUksQ0FBQyxDQUFDLENBQ2YsT0FBTyxDQUFFLElBQUksQ0FDYixjQUFjLENBQUUsTUFBTSxDQUN0QixlQUFlLENBQUUsTUFBTSxDQUN2QixXQUFXLENBQUUsTUFBTSxBQUNyQixDQUFDLEFBQ0QsMEJBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxLQUFLLGVBQUMsQ0FBQyxBQUNoRCxTQUFTLENBQUUsSUFBSSxDQUNmLFVBQVUsQ0FBRSxNQUFNLEFBS3BCLENBQUMsQUFDRCwwQkFBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLGVBQUMsQ0FBQyxBQUU3QixLQUFLLENBQUUsSUFBSSxDQUNYLE9BQU8sQ0FBRSxJQUFJLENBQ2IsY0FBYyxDQUFFLE1BQU0sQ0FDdEIsZUFBZSxDQUFFLFVBQVUsQ0FDM0IsV0FBVyxDQUFFLFFBQVEsQ0FDckIsU0FBUyxDQUFFLEdBQUcsQ0FDZCxPQUFPLENBQUUsQ0FBQyxBQUNaLENBQUMsQUFDRCxvQkFBb0IsOEJBQUMsQ0FBQyxBQUNwQixNQUFNLENBQUUsSUFBSSxDQUNaLEtBQUssQ0FBRSxJQUFJLENBQ1gsZ0JBQWdCLENBQUUsSUFBSSxrQ0FBa0MsQ0FBQyxDQUN6RCxpQkFBaUIsQ0FBRSxTQUFTLENBQzVCLGVBQWUsQ0FBRSxPQUFPLENBQ3hCLG1CQUFtQixDQUFFLE1BQU0sQ0FBQyxNQUFNLENBR2xDLFVBQVUsQ0FBRSxNQUFNLENBQ2xCLEtBQUssQ0FBRSxLQUFLLENBQ1osV0FBVyxDQUFFLElBQUksQ0FDakIsU0FBUyxDQUFFLElBQUksQ0FDZixVQUFVLENBQUUsTUFBTSxDQUNsQixXQUFXLENBQUUsR0FBRyxBQUNsQixDQUFDLEFBU0QsMEJBQVcsQ0FBQyxPQUFPLGVBQUMsQ0FBQyxBQUNuQixNQUFNLENBQUUsSUFBSSxDQUNaLE9BQU8sQ0FBRSxDQUFDLENBQUMsSUFBSSxDQUNmLGdCQUFnQixDQUFFLElBQUksb0JBQW9CLENBQUMsQ0FDM0MsYUFBYSxDQUFFLEdBQUcsQ0FDbEIsT0FBTyxDQUFFLElBQUksQ0FDYixlQUFlLENBQUUsYUFBYSxDQUM5QixXQUFXLENBQUUsTUFBTSxBQUNyQixDQUFDLEFBQ0QsMEJBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxlQUFDLENBQUMsQUFDM0IsT0FBTyxDQUFFLElBQUksQ0FDYixJQUFJLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2QsZUFBZSxDQUFFLFVBQVUsQ0FDM0IsV0FBVyxDQUFFLE1BQU0sQUFDckIsQ0FBQyxBQUNELDBCQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxlQUFlLGVBQUMsQ0FBQyxBQUMzQyxNQUFNLENBQUUsSUFBSSxDQUNaLEtBQUssQ0FBRSxJQUFJLENBQ1gsTUFBTSxDQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDakIsTUFBTSxDQUFFLE9BQU8sQUFDakIsQ0FBQyxBQUNELDBCQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxlQUFDLENBQUMsQUFDL0MsS0FBSyxDQUFFLElBQUksQ0FDWCxVQUFVLENBQUUsT0FBTyxDQUNuQixhQUFhLENBQUUsR0FBRyxBQUNwQixDQUFDLEFBQ0QsMEJBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsZUFBQyxDQUFDLEFBQ3ZDLE1BQU0sQ0FBRSxJQUFJLENBQ1osS0FBSyxDQUFFLElBQUksQ0FDWCxNQUFNLENBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNqQixNQUFNLENBQUUsT0FBTyxBQUVqQixDQUFDLEFBQ0QsMEJBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLGVBQUMsQ0FBQyxBQUMzQyxLQUFLLENBQUUsSUFBSSxDQUNYLFVBQVUsQ0FBRSxPQUFPLEFBQ3JCLENBQUMsQUFDRCwwQkFBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLGVBQUMsQ0FBQyxBQUM1QixPQUFPLENBQUUsSUFBSSxDQUNiLGVBQWUsQ0FBRSxRQUFRLENBQ3pCLFdBQVcsQ0FBRSxNQUFNLEFBQ3JCLENBQUMsQUFDRCwwQkFBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYyxlQUFDLENBQUMsQUFDM0MsTUFBTSxDQUFFLElBQUksQ0FDWixLQUFLLENBQUUsSUFBSSxDQUNYLE9BQU8sQ0FBRSxHQUFHLENBQ1osTUFBTSxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FDakIsYUFBYSxDQUFFLEdBQUcsQ0FDbEIsZ0JBQWdCLENBQUUsSUFBSSxtQkFBbUIsQ0FBQyxDQUMxQyxNQUFNLENBQUUsT0FBTyxBQUNqQixDQUFDLEFBQ0QsMEJBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLDZCQUFjLE1BQU0sQUFBQyxDQUFDLEFBQ2pELGdCQUFnQixDQUFFLElBQUksb0JBQW9CLENBQUMsQUFDN0MsQ0FBQyxBQUNELDBCQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxlQUFDLENBQUMsQUFDL0MsS0FBSyxDQUFFLElBQUksQ0FDWCxVQUFVLENBQUUsT0FBTyxBQUNyQixDQUFDO0FDM1RELEtBQUssZUFBQyxDQUFDLEFBQ0wsT0FBTyxDQUFFLElBQUksQ0FDYixPQUFPLENBQUUsSUFBSSxBQUNmLENBQUMsQUFDRCxZQUFZLGVBQUMsQ0FBQyxBQUNaLFVBQVUsQ0FBRSxJQUFJLENBQ2hCLE9BQU8sQ0FBRSxHQUFHLENBQ1osZ0JBQWdCLENBQUUsSUFBSSxvQkFBb0IsQ0FBQyxBQUM3QyxDQUFDO0FDNFVELGNBQWMsOEJBQUMsQ0FBQyxBQUNkLFFBQVEsQ0FBRSxRQUFRLENBQ2xCLE9BQU8sQ0FBRSxDQUFDLEFBQ1osQ0FBQyxBQUNELFdBQVcsOEJBQUMsQ0FBQyxBQUNYLFFBQVEsQ0FBRSxRQUFRLENBQ2xCLE9BQU8sQ0FBRSxDQUFDLEFBQ1osQ0FBQyxBQUNELE1BQU0sOEJBQUMsQ0FBQyxBQUNOLFFBQVEsQ0FBRSxRQUFRLENBQ2xCLE9BQU8sQ0FBRSxDQUFDLENBQ1YsTUFBTSxDQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQ3RDLFFBQVEsQ0FBRSxNQUFNLEFBQ2xCLENBQUMsQUFDRCxxQkFBTSxDQUFDLE9BQU8sZUFBQyxDQUFDLEFBQ2QsUUFBUSxDQUFFLFFBQVEsQ0FDbEIsT0FBTyxDQUFFLENBQUMsQ0FDVixNQUFNLENBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUM5QyxVQUFVLENBQUUsS0FBSyxDQUNqQixVQUFVLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQUFDekMsQ0FBQyxBQUNELHFCQUFNLENBQUMsd0JBQXdCLGVBQUMsQ0FBQyxBQUMvQixRQUFRLENBQUUsUUFBUSxDQUNsQixPQUFPLENBQUUsQ0FBQyxDQUNWLE1BQU0sQ0FBRSxJQUFJLENBQ1osVUFBVSxDQUFFLENBQUMsQ0FDYixVQUFVLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQUFDekMsQ0FBQyxBQUNELHFCQUFNLENBQUMsY0FBYyxlQUFDLENBQUMsQUFDckIsUUFBUSxDQUFFLFFBQVEsQ0FDbEIsT0FBTyxDQUFFLElBQUksQ0FDYixjQUFjLENBQUUsTUFBTSxDQUN0QixXQUFXLENBQUUsTUFBTSxDQUNuQixLQUFLLENBQUUsSUFBSSxDQUNYLE9BQU8sQ0FBRSxDQUFDLENBQ1YsTUFBTSxDQUFFLElBQUksQUFDZCxDQUFDLEFBQ0QscUJBQU0sQ0FBQywrQkFBK0IsZUFBQyxDQUFDLEFBQ3RDLFFBQVEsQ0FBRSxRQUFRLENBQ2xCLE9BQU8sQ0FBRSxJQUFJLENBQ2IsY0FBYyxDQUFFLE1BQU0sQ0FDdEIsV0FBVyxDQUFFLE1BQU0sQ0FDbkIsS0FBSyxDQUFFLElBQUksQ0FDWCxlQUFlLENBQUUsVUFBVSxDQUMzQixPQUFPLENBQUUsQ0FBQyxDQUNWLEdBQUcsQ0FBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ3RCLE1BQU0sQ0FBRSxDQUFDLEFBSVgsQ0FBQyxBQUNELHFCQUFxQiw4QkFBQyxDQUFDLEFBQ3JCLFFBQVEsQ0FBRSxLQUFLLENBQ2YsR0FBRyxDQUFFLElBQUksV0FBVyxDQUFDLENBQ3JCLE1BQU0sQ0FBRSxDQUFDLENBQ1QsS0FBSyxDQUFFLENBQUMsQ0FDUixVQUFVLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FDdkMsVUFBVSxDQUFFLElBQUksQUFDbEIsQ0FBQyxBQUNELHFCQUFNLENBQUMsbUJBQW1CLGVBQUMsQ0FBQyxBQUMxQixRQUFRLENBQUUsUUFBUSxDQUNsQixPQUFPLENBQUUsSUFBSSxDQUNiLFNBQVMsQ0FBRSxJQUFJLENBQ2YsTUFBTSxDQUFFLENBQUMsQ0FBQyxJQUFJLENBRWQsR0FBRyxDQUFFLENBQUMsQ0FDTixVQUFVLENBQUUsSUFBSSxBQUNsQixDQUFDLEFBQ0QscUJBQU0sQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLGVBQUMsQ0FBQyxBQUN6QyxRQUFRLENBQUUsTUFBTSxDQUNoQixPQUFPLENBQUUsQ0FBQyxDQUNWLEdBQUcsQ0FBRSxNQUFNLENBQ1gsTUFBTSxDQUFFLElBQUksQ0FDWixPQUFPLENBQUUsSUFBSSxDQUNiLFNBQVMsQ0FBRSxLQUFLLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQzdDLGdCQUFnQixDQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQzFDLGFBQWEsQ0FBRSxHQUFHLENBQ2xCLFVBQVUsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxBQUN6QyxDQUFDIn0= */