ctt-babylon 0.26.29 → 0.26.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -115,10 +115,6 @@ export class BabylonSlidersDirective {
|
|
|
115
115
|
const newWidth = window.innerWidth;
|
|
116
116
|
if (Math.abs(newWidth - lastWidth) > 50) {
|
|
117
117
|
lastWidth = newWidth;
|
|
118
|
-
const $slider = $(this.el.nativeElement).find('.cs_slider_wrapper');
|
|
119
|
-
if ($slider.hasClass('slick-initialized')) {
|
|
120
|
-
$slider.slick('unslick');
|
|
121
|
-
}
|
|
122
118
|
this.initializeSlider();
|
|
123
119
|
}
|
|
124
120
|
}, 300);
|
|
@@ -133,14 +129,65 @@ export class BabylonSlidersDirective {
|
|
|
133
129
|
$.fn &&
|
|
134
130
|
typeof $.fn.slick !== 'undefined'), true), switchMap(() => of(undefined)));
|
|
135
131
|
}
|
|
132
|
+
// Angular puede re-renderizar el DOM (cookies, resize) dejando slick a medias:
|
|
133
|
+
// la clase sigue puesta pero $list/$dots son null y unslick() rompe.
|
|
134
|
+
safeUnslick($slider) {
|
|
135
|
+
if (!$slider?.length || !$slider.hasClass('slick-initialized'))
|
|
136
|
+
return;
|
|
137
|
+
const instance = $slider[0]?.slick;
|
|
138
|
+
if (instance && instance.$list && instance.$slides) {
|
|
139
|
+
try {
|
|
140
|
+
$slider.slick('unslick');
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
catch (e) {
|
|
144
|
+
// instancia rota: se desmonta a mano abajo
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
this.forceUnwrapSlick($slider);
|
|
148
|
+
}
|
|
149
|
+
/** Restaura el DOM original (slides directos en el wrapper) sin pasar por slick. */
|
|
150
|
+
forceUnwrapSlick($slider) {
|
|
151
|
+
const el = $slider[0];
|
|
152
|
+
const slides = Array.from(el.querySelectorAll('.slick-track > .slick-slide:not(.slick-cloned)'));
|
|
153
|
+
const originals = slides.map((slide) => {
|
|
154
|
+
// slick envuelve cada slide en un <div> sin clase (buildRows)
|
|
155
|
+
const inner = slide.firstElementChild;
|
|
156
|
+
if (inner &&
|
|
157
|
+
inner.tagName === 'DIV' &&
|
|
158
|
+
!inner.className &&
|
|
159
|
+
slide.children.length === 1 &&
|
|
160
|
+
inner.children.length === 1) {
|
|
161
|
+
return inner.firstElementChild;
|
|
162
|
+
}
|
|
163
|
+
return slide;
|
|
164
|
+
});
|
|
165
|
+
originals.forEach((slide) => {
|
|
166
|
+
slide.classList.remove('slick-slide', 'slick-active', 'slick-current', 'slick-center');
|
|
167
|
+
slide.removeAttribute('data-slick-index');
|
|
168
|
+
slide.removeAttribute('aria-hidden');
|
|
169
|
+
slide.removeAttribute('tabindex');
|
|
170
|
+
slide.removeAttribute('role');
|
|
171
|
+
slide.removeAttribute('aria-describedby');
|
|
172
|
+
slide.style.width = '';
|
|
173
|
+
slide.style.display = '';
|
|
174
|
+
});
|
|
175
|
+
if (originals.length) {
|
|
176
|
+
el.replaceChildren(...originals);
|
|
177
|
+
}
|
|
178
|
+
$slider.off('.slick');
|
|
179
|
+
$slider.removeClass('slick-initialized slick-slider slick-dotted slick-vertical');
|
|
180
|
+
try {
|
|
181
|
+
delete el.slick;
|
|
182
|
+
}
|
|
183
|
+
catch { }
|
|
184
|
+
}
|
|
136
185
|
initializeSlider() {
|
|
137
186
|
const $slider = $(this.el.nativeElement);
|
|
138
187
|
if (!$slider.length)
|
|
139
188
|
return;
|
|
140
189
|
const $slickActive = $slider.find('.cs_slider_wrapper');
|
|
141
|
-
|
|
142
|
-
$slickActive.slick('unslick'); // Destruye el slider actual
|
|
143
|
-
}
|
|
190
|
+
this.safeUnslick($slickActive); // Destruye el slider actual
|
|
144
191
|
switch (this.sliders) {
|
|
145
192
|
case 'cs_slider_container':
|
|
146
193
|
this.initSlickSlider($slider);
|
|
@@ -458,4 +505,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
458
505
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { sliders: [{
|
|
459
506
|
type: Input
|
|
460
507
|
}] } });
|
|
461
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1zbGlkZXJzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2JhYnlsb24tc2xpZGVycy9iYWJ5bG9uLXNsaWRlcnMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFFSCxTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFFTCxXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBRUgsRUFBRSxFQUNGLFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxFQUNULEdBQUcsRUFDSCxPQUFPLEVBQ1AsS0FBSyxHQUNSLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFRcEMsTUFBTSxPQUFPLHVCQUF1QjtJQW1CaEMsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFOakIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUkxQyxnQkFBVyxHQUE0QixJQUFJLENBQUM7SUFFZixDQUFDO0lBRXRDLGVBQWU7UUFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxjQUFjO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJ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Q1YsUUFBUSxFQUFFLFdBQVc7aUJBQ3hCLENBQUMsQ0FBQzthQUNOO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRTtnQkFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQztvQkFDUCxZQUFZLEVBQUUsQ0FBQztvQkFDZixjQUFjLEVBQUUsQ0FBQztvQkFDakIsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLGFBQWEsRUFBRSxJQUFJO29CQUNuQixNQUFNLEVBQUUsS0FBSztvQkFDYixRQUFRLEVBQUUsSUFBSTtvQkFDZCxVQUFVLEVBQUUsS0FBSztpQkFDcEIsQ0FBQyxDQUFDO2FBQ047U0FDSjtJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDcEMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzlCO1NBQ0o7SUFDTCxDQUFDOytHQTVrQlEsdUJBQXVCO21HQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjsrRUFFWSxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBQTEFURk9STV9JRCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGNhdGNoRXJyb3IsXG4gICAgZGVmZXIsXG4gICAgZmlsdGVyLFxuICAgIGZvcmtKb2luLFxuICAgIG1hcCxcbiAgICBPYnNlcnZhYmxlLFxuICAgIG9mLFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlLFxuICAgIHRha2VXaGlsZSxcbiAgICB0YXAsXG4gICAgdGltZW91dCxcbiAgICB0aW1lcixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuZGVjbGFyZSBjb25zdCAkOiBhbnk7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3NsaWRlcnNdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBCYWJ5bG9uU2xpZGVyc0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgc2xpZGVycyE6XG4gICAgICAgIHwgJ2NzX3NsaWRlcl9jb250YWluZXInXG4gICAgICAgIHwgJ2NzX2dhbGxlcnlfc2xpZGVyX25hdidcbiAgICAgICAgfCAnY3NfZ2FsbGVyeV9zbGlkZXJfbmF2XzInXG4gICAgICAgIHwgJ2NzX2dhbGxlcnlfc2xpZGVyX3RodW1iJ1xuICAgICAgICB8ICdjc19nYWxsZXJ5X3NsaWRlcl90aHVtYl8yJ1xuICAgICAgICB8ICdjc19zbGlkZXJfY29udGFpbmVyMidcbiAgICAgICAgfCAnY3Nfc2xpZGVyX2NvbnRhaW5lcjMnXG4gICAgICAgIHwgJ2NzX3NsaWRlcl9jb250YWluZXI0J1xuICAgICAgICB8ICdjc19zbGlkZXJfY29udGFpbmVyNSc7XG5cbiAgICBwcml2YXRlIHJlc2l6ZVRpbWVvdXQhOiBOb2RlSlMuVGltZW91dDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gICAgcHJpdmF0ZSByZXNpemVGbiE6ICgpID0+IHZvaWQ7XG5cbiAgICBwcml2YXRlIGRvbU9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgICAgICB0aGlzLmVuc3VyZUpRdWVyeUFuZFNsaWNrJCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVJbml0aWFsaXplU2xpZGVyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgd2FpdEZvckpRdWVyeSQoKSB7XG4gICAgICAgIHJldHVybiB0aW1lcigwLCA0MCkucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiAod2luZG93IGFzIGFueSkualF1ZXJ5IHx8ICh3aW5kb3cgYXMgYW55KS4kKSxcbiAgICAgICAgICAgIGZpbHRlcihCb29sZWFuKSxcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICB0aW1lb3V0KHsgZmlyc3Q6IDUwMDAgfSksXG4gICAgICAgICAgICAvLyBleHBvbmUgJCAvIGpRdWVyeSBnbG9iYWwgcG9yIHNpIGVsIGJ1bmRsZSBubyBsbyBoaXpvXG4gICAgICAgICAgICBtYXAoKGpxKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdyA9IHdpbmRvdyBhcyBhbnk7XG4gICAgICAgICAgICAgICAgaWYgKCF3LiQpIHcuJCA9IGpxO1xuICAgICAgICAgICAgICAgIGlmICghdy5qUXVlcnkpIHcualF1ZXJ5ID0ganE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGpxO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcHJpdmF0ZSB3YWl0Rm9yU2xpY2skKCkge1xuICAgICAgICByZXR1cm4gdGltZXIoMCwgNDApLnBpcGUoXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHcgPSB3aW5kb3cgYXMgYW55O1xuICAgICAgICAgICAgICAgIGNvbnN0IGpxID0gdy5qUXVlcnkgfHwgdy4kO1xuICAgICAgICAgICAgICAgIHJldHVybiBqcSAmJiBqcS5mbiAmJiBqcS5mbi5zbGljaztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHRpbWVvdXQoeyBmaXJzdDogMTAwMDAgfSksXG4gICAgICAgICAgICBtYXAoKCkgPT4gdm9pZCAwKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBDYXJnYSBqUXVlcnkgKyBzbGljayBlbiBvcmRlbiB5IGVzcGVyYSBhIHF1ZSBlc3TDqW4gbGlzdG9zICovXG4gICAgcHJpdmF0ZSBlbnN1cmVKUXVlcnlBbmRTbGljayQoKSB7XG4gICAgICAgIHJldHVybiBkZWZlcigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3ID0gd2luZG93IGFzIGFueTtcbiAgICAgICAgICAgIGNvbnN0IGhhc0pRID0gISEody5qUXVlcnkgfHwgdy4kKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1NsaWNrID0gISEody5qUXVlcnk/LmZuPy5zbGljayB8fCB3LiQ/LmZuPy5zbGljayk7XG5cbiAgICAgICAgICAgIGlmIChoYXNKUSAmJiBoYXNTbGljaykgcmV0dXJuIG9mKHZvaWQgMCk7XG5cbiAgICAgICAgICAgIC8vIEFncmVnYW1vcyBmb3JrSm9pbiBwYXJhIGRlc2NhcmdhciBzY3JpcHQgZGUgc2xpY2sgeSBDU1MgZW4gcGFyYWxlbG9cbiAgICAgICAgICAgIHJldHVybiBVdGlscy5sb2FkU2NyaXB0JCgnYXNzZXRzL2JhYnlsb24vanMvanF1ZXJ5Lm1pbi5qcycpLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMud2FpdEZvckpRdWVyeSQoKSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgIGZvcmtKb2luKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTY3JpcHQkKCdhc3NldHMvYmFieWxvbi9zbGljay9zbGljay5taW4uanMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTdHlsZSQoJ2Fzc2V0cy9iYWJ5bG9uL3NsaWNrL3NsaWNrLmNzcycpLCAvLyA8LS0gwqFDUlVDSUFMIVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMud2FpdEZvclNsaWNrJCgpKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNhcmdhbmRvIGpRdWVyeS9zbGljaycsIGUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Yodm9pZCAwKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5yZXNpemVUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplVGltZW91dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5yZXNpemVGbikge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUZuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIPCfm5EgUG9yIHNpIGVsIGNvbXBvbmVudGUgc2UgZGVzdHJ1eWUgYW50ZXMgZGUgcXVlIGxsZWdhcmFuIGxvcyBkYXRvc1xuICAgICAgICAgICAgaWYgKHRoaXMuZG9tT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRvbU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZERlcGVuZGVuY2llc0FuZEluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBVdGlscy5sb2FkU2NyaXB0JCgnYXNzZXRzL2JhYnlsb24vanMvanF1ZXJ5Lm1pbi5qcycpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53YWl0Rm9yU2xpY2tBdmFpbGFiaWxpdHkoKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JrSm9pbihbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5sb2FkU2NyaXB0JChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNzZXRzL2JhYnlsb24vc2xpY2svc2xpY2subWluLmpzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTdHlsZSQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fzc2V0cy9iYWJ5bG9uL3NsaWNrL3NsaWNrLmNzcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUluaXRpYWxpemVTbGlkZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGV4ZWN1dGVJbml0aWFsaXplU2xpZGVyKCk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgICAgICBjb25zdCBuYXRpdmVFbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcblxuICAgICAgICAvLyDwn5KhIExBIENMQVZFOiBGdW5jacOzbiBwYXJhIGRldGVjdGFyIGVsIGNvbnRlbmVkb3IgcmVhbCBkZSBsYXMgaW3DoWdlbmVzXG4gICAgICAgIGNvbnN0IGdldFNsaWRlckNvbnRhaW5lciA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0ICR3cmFwcGVyID0gJChuYXRpdmVFbCkuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG4gICAgICAgICAgICAvLyBTaSBlbmN1ZW50cmEgZWwgd3JhcHBlciwgbG8gZGV2dWVsdmUuIFNpIG5vLCBkZXZ1ZWx2ZSBlbCBlbGVtZW50byBwcmluY2lwYWwuXG4gICAgICAgICAgICByZXR1cm4gJHdyYXBwZXIubGVuZ3RoID4gMCA/ICR3cmFwcGVyIDogJChuYXRpdmVFbCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gUHJlZ3VudGFtb3MgY2FkYSAxMDBtcyBzaSBlbCBjb250ZW5lZG9yIGNvcnJlY3RvIHlhIHRpZW5lIGVsZW1lbnRvcyBoaWpvc1xuICAgICAgICAvLyBFbiBBcmltYSBzZSByb21wZSAtPiB0aW1lcigxMDAwLCAxMDApIFxuICAgICAgICB0aW1lcigwLCAxMDApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT4gZ2V0U2xpZGVyQ29udGFpbmVyKCkuY2hpbGRyZW4oKS5sZW5ndGggPiAwKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGhhc0NoaWxkcmVuKSA9PiBoYXNDaGlsZHJlbiA9PT0gdHJ1ZSksXG4gICAgICAgICAgICAgICAgdGFrZSgxKSwgLy8gU2UgYXV0by1kZXN0cnV5ZSBhbCBjdW1wbGlyc2VcbiAgICAgICAgICAgICAgICB0aW1lb3V0KHsgZmlyc3Q6IDUwMDAsIHdpdGg6ICgpID0+IG9mKGZhbHNlKSB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIExsYW1hbW9zIGEgdHUgbcOpdG9kbyBvcmlnaW5hbCBxdWUgeWEgdGllbmUgZWwgc3dpdGNoIHBhcmEgY2FkYSB0aXBvIGRlIHNsaWRlclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVTbGlkZXIoKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBJbmljaWFtb3MgZWwgbGlzdGVuZXIgZGVsIHJlc2l6ZSAodXNhbmRvIGVsIG3DqXRvZG8gc2VwYXJhZG8gcXVlIHRlIHBhc8OpKVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmVzaXplRm4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gSGUgc2FjYWRvIHR1IGzDs2dpY2EgZGVsIHJlc2l6ZSBhIHVuIG3DqXRvZG8gcHJvcGlvIHBhcmEgcXVlIHF1ZWRlIG3DoXMgb3JkZW5hZG86XG4gICAgcHJpdmF0ZSBzZXR1cFJlc2l6ZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgICAgICBsZXQgbGFzdFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIGlmICghdGhpcy5yZXNpemVGbikge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVGbiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lb3V0KTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKG5ld1dpZHRoIC0gbGFzdFdpZHRoKSA+IDUwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0V2lkdGggPSBuZXdXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0ICRzbGlkZXIgPSAkKHRoaXMuZWwubmF0aXZlRWxlbWVudCkuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLmNzX3NsaWRlcl93cmFwcGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2xpZGVyLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNsaWRlci5zbGljaygndW5zbGljaycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplU2xpZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUZuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgd2FpdEZvclNsaWNrQXZhaWxhYmlsaXR5KCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGltZXIoMCwgMTAwKS5waXBlKFxuICAgICAgICAgICAgLy8gUG9sbGluZyBjYWRhIDcwbXNcbiAgICAgICAgICAgIHRha2VXaGlsZShcbiAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mICQgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAkLmZuICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgJC5mbi5zbGljayAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IG9mKHVuZGVmaW5lZCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplU2xpZGVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpZGVyID0gJCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpIGFzIGFueTtcblxuICAgICAgICBpZiAoISRzbGlkZXIubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgJHNsaWNrQWN0aXZlID0gJHNsaWRlci5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcbiAgICAgICAgaWYgKCRzbGlja0FjdGl2ZS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgJHNsaWNrQWN0aXZlLnNsaWNrKCd1bnNsaWNrJyk7IC8vIERlc3RydXllIGVsIHNsaWRlciBhY3R1YWxcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodGhpcy5zbGlkZXJzKSB7XG4gICAgICAgICAgICBjYXNlICdjc19zbGlkZXJfY29udGFpbmVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlcigkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX2dhbGxlcnlfc2xpZGVyX25hdic6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXJOYXYoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19nYWxsZXJ5X3NsaWRlcl9uYXZfMic6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXJOYXZfMigkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX2dhbGxlcnlfc2xpZGVyX3RodW1iJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlclRodW1iKCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3luY1NsaWRlcnMoXG4gICAgICAgICAgICAgICAgICAgICcuY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWInLFxuICAgICAgICAgICAgICAgICAgICAnLmNzX2dhbGxlcnlfc2xpZGVyX25hdidcbiAgICAgICAgICAgICAgICApOyAvLyBTaW5jcm9uaXphIGxvcyBzbGlkZXJzIHBvciB0ZW1hIGRlIHJlbmRhcml6YWRvIGVuIGVsIERPTVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWJfMic6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXJUaHVtYl8yKCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3luY1NsaWRlcnMoXG4gICAgICAgICAgICAgICAgICAgICcuY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWJfMicsXG4gICAgICAgICAgICAgICAgICAgICcuY3NfZ2FsbGVyeV9zbGlkZXJfbmF2XzInXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX3NsaWRlcl9jb250YWluZXIyJzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlcjIoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19zbGlkZXJfY29udGFpbmVyMyc6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXIzKCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3Nfc2xpZGVyX2NvbnRhaW5lcjQnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyNCgkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX3NsaWRlcl9jb250YWluZXI1JzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlcjUoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXIoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlja0FjdGl2ZSA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG5cbiAgICAgICAgaWYgKCRzbGlja0FjdGl2ZS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX2xlZnRfYXJyb3cnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX3JpZ2h0X2Fycm93Jyk7XG5cbiAgICAgICAgKCRzbGlja0FjdGl2ZSBhcyBhbnkpLnNsaWNrKHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtYXV0b3BsYXknLCAxKSxcbiAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZyhcbiAgICAgICAgICAgICAgICAkc2xpZGVyLFxuICAgICAgICAgICAgICAgICdkYXRhLWF1dG9wbGF5JyxcbiAgICAgICAgICAgICAgICAzMDAwXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1zcGVlZCcsIDYwMCksXG4gICAgICAgICAgICBpbmZpbml0ZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWxvb3AnLCAwKSA9PT0gMCxcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogdGhpcy5nZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXIpLFxuICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiB0cnVlLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGNlbnRlck1vZGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1jZW50ZXInLCAxMCkgPT09IDEsXG4gICAgICAgICAgICB2YXJpYWJsZVdpZHRoOlxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS12YXJpYWJsZS13aWR0aCcsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIGRvdHM6IHRydWUsXG4gICAgICAgICAgICBhcHBlbmREb3RzOiAkc2xpZGVyLnBhcmVudCgpLmZpbmQoJy5jc19wYWdpbmF0aW9uJyksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyMigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWNrQWN0aXZlID0gJHNsaWRlci5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcblxuICAgICAgICBpZiAoJHNsaWNrQWN0aXZlLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfbGVmdF9hcnJvdycpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfcmlnaHRfYXJyb3cnKTtcblxuICAgICAgICAoJHNsaWNrQWN0aXZlIGFzIGFueSkuc2xpY2soe1xuICAgICAgICAgICAgYXV0b3BsYXk6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1hdXRvcGxheScsIDEpLFxuICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAgICAgICAgICRzbGlkZXIsXG4gICAgICAgICAgICAgICAgJ2RhdGEtYXV0b3BsYXknLFxuICAgICAgICAgICAgICAgIDMwMDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXNwZWVkJywgNjAwKSxcbiAgICAgICAgICAgIGluZmluaXRlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtbG9vcCcsIDApID09PSAwLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiB0aGlzLmdldFNsaWRlc1BlclZpZXcoJHNsaWRlciksXG4gICAgICAgICAgICBzd2lwZVRvU2xpZGU6IHRydWUsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWNlbnRlcicsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXZhcmlhYmxlLXdpZHRoJywgMTApID09PSAxLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlcjMoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlja0FjdGl2ZSA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG5cbiAgICAgICAgaWYgKCRzbGlja0FjdGl2ZS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLnNpYmxpbmdzKCcuY3Nfc2xpZGVyX2Fycm93cycpXG4gICAgICAgICAgICAuZmluZCgnLmNzX2xlZnRfYXJyb3cnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLnNpYmxpbmdzKCcuY3Nfc2xpZGVyX2Fycm93cycpXG4gICAgICAgICAgICAuZmluZCgnLmNzX3JpZ2h0X2Fycm93Jyk7XG5cbiAgICAgICAgKCRzbGlja0FjdGl2ZSBhcyBhbnkpLnNsaWNrKHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtYXV0b3BsYXknLCAwKSxcbiAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZyhcbiAgICAgICAgICAgICAgICAkc2xpZGVyLFxuICAgICAgICAgICAgICAgICdkYXRhLWF1dG9wbGF5JyxcbiAgICAgICAgICAgICAgICAzMDAwXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1zcGVlZCcsIDYwMCksXG4gICAgICAgICAgICBpbmZpbml0ZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWxvb3AnLCAwKSA9PT0gMCxcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogdGhpcy5nZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXIpLFxuICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiB0cnVlLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGNlbnRlck1vZGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1jZW50ZXInLCAwKSA9PT0gMSxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXZhcmlhYmxlLXdpZHRoJywgMCkgPT09IDEsXG4gICAgICAgICAgICBkb3RzOiBmYWxzZSxcbiAgICAgICAgICAgIGFwcGVuZERvdHM6ICRzbGlkZXIucGFyZW50KCkuZmluZCgnLmNzX3BhZ2luYXRpb25fc2VydmljZXMnKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXJOYXYoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICgkc2xpZGVyLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICRzbGlkZXIuc2xpY2soe1xuICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMyxcbiAgICAgICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgICAgICBhc05hdkZvcjogJCgnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iX21pbmknKS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iX21pbmknXG4gICAgICAgICAgICAgICAgICAgIDogJy5jc19nYWxsZXJ5X3NsaWRlcl90aHVtYicsXG4gICAgICAgICAgICAgICAgZm9jdXNPblNlbGVjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhcnJvd3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZlcnRpY2FsOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbnRlck1vZGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VudGVyUGFkZGluZzogJzBweCcsXG4gICAgICAgICAgICAgICAgc3BlZWQ6IDEwMDAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXJOYXZfMigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRzbGlkZXIuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgICRzbGlkZXIuc2xpY2soe1xuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAzLFxuICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICBhc05hdkZvcjogJy5jc19nYWxsZXJ5X3NsaWRlcl90aHVtYl8yJyxcbiAgICAgICAgICAgIGZvY3VzT25TZWxlY3Q6IHRydWUsXG4gICAgICAgICAgICBhcnJvd3M6IGZhbHNlLFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdHJ1ZSxcbiAgICAgICAgICAgIGNlbnRlclBhZGRpbmc6ICcwcHgnLFxuICAgICAgICAgICAgc3BlZWQ6IDEwMDAsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyVGh1bWIoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICgkc2xpZGVyLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuY2xvc2VzdCgnLmNzX2dhbGxlcnlfaG92ZXJfc2hvd19uYXYnKVxuICAgICAgICAgICAgLmZpbmQoJy5jc19sZWZ0X2Fycm93X2dhbGxlcnknKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLmNsb3Nlc3QoJy5jc19nYWxsZXJ5X2hvdmVyX3Nob3dfbmF2JylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfcmlnaHRfYXJyb3dfZ2FsbGVyeScpO1xuXG4gICAgICAgICRzbGlkZXIuc2xpY2soe1xuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAxLFxuICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgYXNOYXZGb3I6ICcuY3NfZ2FsbGVyeV9zbGlkZXJfbmF2LnNsaWNrLXNsaWRlcicsXG4gICAgICAgICAgICBpbmZpbml0ZTogdHJ1ZSxcbiAgICAgICAgICAgIHNwZWVkOiA2MDAsXG4gICAgICAgICAgICBhdXRvcGxheTogZmFsc2UsXG4gICAgICAgICAgICBmYWRlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlclRodW1iXzIoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICgkc2xpZGVyLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuY2xvc2VzdCgnLmNzX2dhbGxlcnlfaG92ZXJfc2hvd19uYXYnKVxuICAgICAgICAgICAgLmZpbmQoJy5jc19sZWZ0X2Fycm93X2dhbGxlcnlfMiAuY3Nfc3dpcGVyX2J1dHRvbl9wcmV2Jyk7XG4gICAgICAgIGNvbnN0IG5leHRBcnJvdyA9ICRzbGlkZXJcbiAgICAgICAgICAgIC5jbG9zZXN0KCcuY3NfZ2FsbGVyeV9ob3Zlcl9zaG93X25hdicpXG4gICAgICAgICAgICAuZmluZCgnLmNzX3JpZ2h0X2Fycm93X2dhbGxlcnlfMiAuY3Nfc3dpcGVyX2J1dHRvbl9uZXh0Jyk7XG5cbiAgICAgICAgJHNsaWRlci5zbGljayh7XG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IDEsXG4gICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgIHByZXZBcnJvdzogcHJldkFycm93LFxuICAgICAgICAgICAgbmV4dEFycm93OiBuZXh0QXJyb3csXG4gICAgICAgICAgICBhc05hdkZvcjogJy5jc19nYWxsZXJ5X3NsaWRlcl9uYXZfMi5zbGljay1zbGlkZXInLFxuICAgICAgICAgICAgaW5maW5pdGU6IGZhbHNlLFxuICAgICAgICAgICAgc3BlZWQ6IDYwMCxcbiAgICAgICAgICAgIGF1dG9wbGF5OiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXI0KCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuXG4gICAgICAgIGlmICgkc2xpY2tBY3RpdmUuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19sZWZ0X2Fycm93Jyk7XG4gICAgICAgIGNvbnN0IG5leHRBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19yaWdodF9hcnJvdycpO1xuXG4gICAgICAgIGNvbnN0IHNsaWRlc1RvU2hvdyA9IHRoaXMuZ2V0U2xpZGVzUGVyVmlldygkc2xpZGVyKTtcblxuICAgICAgICAoJHNsaWNrQWN0aXZlIGFzIGFueSkuc2xpY2soe1xuICAgICAgICAgICAgYXV0b3BsYXk6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1hdXRvcGxheScsIDEpLFxuICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAgICAgICAgICRzbGlkZXIsXG4gICAgICAgICAgICAgICAgJ2RhdGEtYXV0b3BsYXknLFxuICAgICAgICAgICAgICAgIDMwMDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXNwZWVkJywgNjAwKSxcbiAgICAgICAgICAgIGluZmluaXRlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtbG9vcCcsIDApID09PSAwLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiBzbGlkZXNUb1Nob3csXG4gICAgICAgICAgICBzd2lwZVRvU2xpZGU6IHRydWUsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWNlbnRlcicsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXZhcmlhYmxlLXdpZHRoJywgMTApID09PSAxLFxuICAgICAgICAgICAgZG90czogdHJ1ZSxcbiAgICAgICAgICAgIGFwcGVuZERvdHM6ICRzbGlkZXIucGFyZW50KCkuZmluZCgnLmNzX3BhZ2luYXRpb24nKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudG9nZ2xlU2xpZGVyQXJyb3dzKCRzbGlkZXIsIHNsaWRlc1RvU2hvdyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXI1KCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuXG4gICAgICAgIGlmICgkc2xpY2tBY3RpdmUuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19sZWZ0X2Fycm93Jyk7XG4gICAgICAgIGNvbnN0IG5leHRBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19yaWdodF9hcnJvdycpO1xuXG4gICAgICAgICgkc2xpY2tBY3RpdmUgYXMgYW55KS5zbGljayh7XG4gICAgICAgICAgICBhdXRvcGxheTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWF1dG9wbGF5JywgMSksXG4gICAgICAgICAgICBhdXRvcGxheVNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoXG4gICAgICAgICAgICAgICAgJHNsaWRlcixcbiAgICAgICAgICAgICAgICAnZGF0YS1hdXRvcGxheScsXG4gICAgICAgICAgICAgICAgMzAwMFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtc3BlZWQnLCA2MDApLFxuICAgICAgICAgICAgaW5maW5pdGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1sb29wJywgMCkgPT09IDAsXG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IHRoaXMuZ2V0U2xpZGVzUGVyVmlldygkc2xpZGVyKSxcbiAgICAgICAgICAgIHN3aXBlVG9TbGlkZTogdHJ1ZSxcbiAgICAgICAgICAgIHByZXZBcnJvdzogcHJldkFycm93LFxuICAgICAgICAgICAgbmV4dEFycm93OiBuZXh0QXJyb3csXG4gICAgICAgICAgICBjZW50ZXJNb2RlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtY2VudGVyJywgMTApID09PSAxLFxuICAgICAgICAgICAgdmFyaWFibGVXaWR0aDpcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtdmFyaWFibGUtd2lkdGgnLCAxMCkgPT09IDEsXG4gICAgICAgICAgICBkb3RzOiB0cnVlLFxuICAgICAgICAgICAgYXBwZW5kRG90czogJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX3BhZ2luYXRpb24nKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAkc2xpZGVyOiBhbnksXG4gICAgICAgIHNldHRpbmdOYW1lOiBzdHJpbmcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogYW55XG4gICAgKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KCRzbGlkZXIuYXR0cihzZXR0aW5nTmFtZSksIDEwKSB8fCBkZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXI6IGFueSk6IG51bWJlciB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBjb25zdCBzbGlkZXNQZXJWaWV3VHlwZSA9ICRzbGlkZXIuYXR0cignZGF0YS1zbGlkZXMtcGVyLXZpZXcnKTtcbiAgICAgICAgICAgIGNvbnN0IHhzU2xpZGVzID0gcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLXhzLXNsaWRlcycpLCAxMCkgfHwgMTtcbiAgICAgICAgICAgIGNvbnN0IHNtU2xpZGVzID0gcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLXNtLXNsaWRlcycpLCAxMCkgfHwgMjtcbiAgICAgICAgICAgIGNvbnN0IG1kU2xpZGVzID0gcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLW1kLXNsaWRlcycpLCAxMCkgfHwgMjtcbiAgICAgICAgICAgIGNvbnN0IG1sZ1NsaWRlcyA9XG4gICAgICAgICAgICAgICAgcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLW1sZy1zbGlkZXMnKSwgMTApIHx8IDM7XG4gICAgICAgICAgICBjb25zdCBsZ1NsaWRlcyA9IHBhcnNlSW50KCRzbGlkZXIuYXR0cignZGF0YS1sZy1zbGlkZXMnKSwgMTApIHx8IDM7XG4gICAgICAgICAgICBjb25zdCB4bFNsaWRlcyA9XG4gICAgICAgICAgICAgICAgcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLXhsLXNsaWRlcycpLCAxMCkgfHwgbGdTbGlkZXM7XG5cbiAgICAgICAgICAgIGlmIChzbGlkZXNQZXJWaWV3VHlwZSA9PT0gJ3Jlc3BvbnNpdmUnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNTc2KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB4c1NsaWRlcztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzbVNsaWRlcztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTAyNCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWRTbGlkZXM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDEyODApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1sZ1NsaWRlcztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTQwMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGdTbGlkZXM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHhsU2xpZGVzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHNsaWRlc1BlclZpZXdUeXBlLCAxMCkgfHwgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLXNsaWRlcy1wZXItdmlldycpLCAxMCkgfHwgMztcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZVNsaWRlckFycm93cygkc2xpZGVyOiBhbnksIHNsaWRlc1RvU2hvdzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlkZXMgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZScpO1xuICAgICAgICBjb25zdCB0b3RhbFNsaWRlcyA9ICRzbGlkZXMubGVuZ3RoO1xuXG4gICAgICAgIGNvbnN0ICRzbGlkZXJDb250YWluZXIgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKTtcbiAgICAgICAgY29uc3Qgc2hvdWxkSGlkZSA9IHRvdGFsU2xpZGVzIDw9IHNsaWRlc1RvU2hvdztcblxuICAgICAgICAkc2xpZGVyQ29udGFpbmVyLnRvZ2dsZUNsYXNzKCdoaWRlLWFycm93cycsIHNob3VsZEhpZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3luY1NsaWRlcnMobWFpblNlbGVjdG9yOiBzdHJpbmcsIG5hdlNlbGVjdG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJG1haW4gPSAkKG1haW5TZWxlY3Rvcik7XG4gICAgICAgIGNvbnN0ICRuYXYgPSAkKG5hdlNlbGVjdG9yKTtcblxuICAgICAgICBpZiAoJG1haW4ubGVuZ3RoICYmICRuYXYubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoISRtYWluLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICAgICAgJG1haW4uc2xpY2soe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Nob3c6IDEsXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgICAgICAgICBhcnJvd3M6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGZhZGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGFzTmF2Rm9yOiBuYXZTZWxlY3RvcixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCEkbmF2Lmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICAgICAgJG5hdi5zbGljayh7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMyxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICAgICAgICAgIGFzTmF2Rm9yOiBtYWluU2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzT25TZWxlY3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGFycm93czogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjZW50ZXJNb2RlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVUb05leHRTbGlkZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGNvbnN0ICRzbGlkZXIgPSAkKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoJHNsaWRlci5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAkc2xpZGVyLnNsaWNrKCdzbGlja05leHQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
508
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1zbGlkZXJzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2JhYnlsb24tc2xpZGVycy9iYWJ5bG9uLXNsaWRlcnMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFFSCxTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFFTCxXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBRUgsRUFBRSxFQUNGLFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxFQUNULEdBQUcsRUFDSCxPQUFPLEVBQ1AsS0FBSyxHQUNSLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFRcEMsTUFBTSxPQUFPLHVCQUF1QjtJQW1CaEMsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFOakIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUkxQyxnQkFBVyxHQUE0QixJQUFJLENBQUM7SUFFZixDQUFDO0lBRXRDLGVBQWU7UUFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxjQUFjO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJ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LENBQUMsQ0FBQztZQUN6QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDOUI7U0FDSjtJQUNMLENBQUM7K0dBcm9CUSx1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsV0FBVztvQkFDckIsVUFBVSxFQUFFLElBQUk7aUJBQ25COytFQUVZLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIFBMQVRGT1JNX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgY2F0Y2hFcnJvcixcbiAgICBkZWZlcixcbiAgICBmaWx0ZXIsXG4gICAgZm9ya0pvaW4sXG4gICAgbWFwLFxuICAgIE9ic2VydmFibGUsXG4gICAgb2YsXG4gICAgc3dpdGNoTWFwLFxuICAgIHRha2UsXG4gICAgdGFrZVdoaWxlLFxuICAgIHRhcCxcbiAgICB0aW1lb3V0LFxuICAgIHRpbWVyLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5kZWNsYXJlIGNvbnN0ICQ6IGFueTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbc2xpZGVyc10nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEJhYnlsb25TbGlkZXJzRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBzbGlkZXJzITpcbiAgICAgICAgfCAnY3Nfc2xpZGVyX2NvbnRhaW5lcidcbiAgICAgICAgfCAnY3NfZ2FsbGVyeV9zbGlkZXJfbmF2J1xuICAgICAgICB8ICdjc19nYWxsZXJ5X3NsaWRlcl9uYXZfMidcbiAgICAgICAgfCAnY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWInXG4gICAgICAgIHwgJ2NzX2dhbGxlcnlfc2xpZGVyX3RodW1iXzInXG4gICAgICAgIHwgJ2NzX3NsaWRlcl9jb250YWluZXIyJ1xuICAgICAgICB8ICdjc19zbGlkZXJfY29udGFpbmVyMydcbiAgICAgICAgfCAnY3Nfc2xpZGVyX2NvbnRhaW5lcjQnXG4gICAgICAgIHwgJ2NzX3NsaWRlcl9jb250YWluZXI1JztcblxuICAgIHByaXZhdGUgcmVzaXplVGltZW91dCE6IE5vZGVKUy5UaW1lb3V0O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgICBwcml2YXRlIHJlc2l6ZUZuITogKCkgPT4gdm9pZDtcblxuICAgIHByaXZhdGUgZG9tT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuZW5zdXJlSlF1ZXJ5QW5kU2xpY2skKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUluaXRpYWxpemVTbGlkZXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3YWl0Rm9ySlF1ZXJ5JCgpIHtcbiAgICAgICAgcmV0dXJuIHRpbWVyKDAsIDQwKS5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+ICh3aW5kb3cgYXMgYW55KS5qUXVlcnkgfHwgKHdpbmRvdyBhcyBhbnkpLiQpLFxuICAgICAgICAgICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHRpbWVvdXQoeyBmaXJzdDogNTAwMCB9KSxcbiAgICAgICAgICAgIC8vIGV4cG9uZSAkIC8galF1ZXJ5IGdsb2JhbCBwb3Igc2kgZWwgYnVuZGxlIG5vIGxvIGhpem9cbiAgICAgICAgICAgIG1hcCgoanEpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB3ID0gd2luZG93IGFzIGFueTtcbiAgICAgICAgICAgICAgICBpZiAoIXcuJCkgdy4kID0ganE7XG4gICAgICAgICAgICAgICAgaWYgKCF3LmpRdWVyeSkgdy5qUXVlcnkgPSBqcTtcbiAgICAgICAgICAgICAgICByZXR1cm4ganE7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbiAgICBwcml2YXRlIHdhaXRGb3JTbGljayQoKSB7XG4gICAgICAgIHJldHVybiB0aW1lcigwLCA0MCkucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdyA9IHdpbmRvdyBhcyBhbnk7XG4gICAgICAgICAgICAgICAgY29uc3QganEgPSB3LmpRdWVyeSB8fCB3LiQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGpxICYmIGpxLmZuICYmIGpxLmZuLnNsaWNrO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgdGltZW91dCh7IGZpcnN0OiAxMDAwMCB9KSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB2b2lkIDApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIENhcmdhIGpRdWVyeSArIHNsaWNrIGVuIG9yZGVuIHkgZXNwZXJhIGEgcXVlIGVzdMOpbiBsaXN0b3MgKi9cbiAgICBwcml2YXRlIGVuc3VyZUpRdWVyeUFuZFNsaWNrJCgpIHtcbiAgICAgICAgcmV0dXJuIGRlZmVyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHcgPSB3aW5kb3cgYXMgYW55O1xuICAgICAgICAgICAgY29uc3QgaGFzSlEgPSAhISh3LmpRdWVyeSB8fCB3LiQpO1xuICAgICAgICAgICAgY29uc3QgaGFzU2xpY2sgPSAhISh3LmpRdWVyeT8uZm4/LnNsaWNrIHx8IHcuJD8uZm4/LnNsaWNrKTtcblxuICAgICAgICAgICAgaWYgKGhhc0pRICYmIGhhc1NsaWNrKSByZXR1cm4gb2Yodm9pZCAwKTtcblxuICAgICAgICAgICAgLy8gQWdyZWdhbW9zIGZvcmtKb2luIHBhcmEgZGVzY2FyZ2FyIHNjcmlwdCBkZSBzbGljayB5IENTUyBlbiBwYXJhbGVsb1xuICAgICAgICAgICAgcmV0dXJuIFV0aWxzLmxvYWRTY3JpcHQkKCdhc3NldHMvYmFieWxvbi9qcy9qcXVlcnkubWluLmpzJykucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy53YWl0Rm9ySlF1ZXJ5JCgpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgZm9ya0pvaW4oW1xuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubG9hZFNjcmlwdCQoJ2Fzc2V0cy9iYWJ5bG9uL3NsaWNrL3NsaWNrLm1pbi5qcycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubG9hZFN0eWxlJCgnYXNzZXRzL2JhYnlsb24vc2xpY2svc2xpY2suY3NzJyksIC8vIDwtLSDCoUNSVUNJQUwhXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy53YWl0Rm9yU2xpY2skKCkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY2FyZ2FuZG8galF1ZXJ5L3NsaWNrJywgZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih2b2lkIDApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlc2l6ZVRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lb3V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnJlc2l6ZUZuKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplRm4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g8J+bkSBQb3Igc2kgZWwgY29tcG9uZW50ZSBzZSBkZXN0cnV5ZSBhbnRlcyBkZSBxdWUgbGxlZ2FyYW4gbG9zIGRhdG9zXG4gICAgICAgICAgICBpZiAodGhpcy5kb21PYnNlcnZlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9tT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkRGVwZW5kZW5jaWVzQW5kSW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIFV0aWxzLmxvYWRTY3JpcHQkKCdhc3NldHMvYmFieWxvbi9qcy9qcXVlcnkubWluLmpzJylcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndhaXRGb3JTbGlja0F2YWlsYWJpbGl0eSgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmtKb2luKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTY3JpcHQkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3NldHMvYmFieWxvbi9zbGljay9zbGljay5taW4uanMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubG9hZFN0eWxlJChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNzZXRzL2JhYnlsb24vc2xpY2svc2xpY2suY3NzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlSW5pdGlhbGl6ZVNsaWRlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZXhlY3V0ZUluaXRpYWxpemVTbGlkZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG5hdGl2ZUVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIC8vIPCfkqEgTEEgQ0xBVkU6IEZ1bmNpw7NuIHBhcmEgZGV0ZWN0YXIgZWwgY29udGVuZWRvciByZWFsIGRlIGxhcyBpbcOhZ2VuZXNcbiAgICAgICAgY29uc3QgZ2V0U2xpZGVyQ29udGFpbmVyID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgJHdyYXBwZXIgPSAkKG5hdGl2ZUVsKS5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcbiAgICAgICAgICAgIC8vIFNpIGVuY3VlbnRyYSBlbCB3cmFwcGVyLCBsbyBkZXZ1ZWx2ZS4gU2kgbm8sIGRldnVlbHZlIGVsIGVsZW1lbnRvIHByaW5jaXBhbC5cbiAgICAgICAgICAgIHJldHVybiAkd3JhcHBlci5sZW5ndGggPiAwID8gJHdyYXBwZXIgOiAkKG5hdGl2ZUVsKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBQcmVndW50YW1vcyBjYWRhIDEwMG1zIHNpIGVsIGNvbnRlbmVkb3IgY29ycmVjdG8geWEgdGllbmUgZWxlbWVudG9zIGhpam9zXG4gICAgICAgIC8vIEVuIEFyaW1hIHNlIHJvbXBlIC0+IHRpbWVyKDEwMDAsIDEwMCkgXG4gICAgICAgIHRpbWVyKDAsIDEwMClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiBnZXRTbGlkZXJDb250YWluZXIoKS5jaGlsZHJlbigpLmxlbmd0aCA+IDApLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoaGFzQ2hpbGRyZW4pID0+IGhhc0NoaWxkcmVuID09PSB0cnVlKSxcbiAgICAgICAgICAgICAgICB0YWtlKDEpLCAvLyBTZSBhdXRvLWRlc3RydXllIGFsIGN1bXBsaXJzZVxuICAgICAgICAgICAgICAgIHRpbWVvdXQoeyBmaXJzdDogNTAwMCwgd2l0aDogKCkgPT4gb2YoZmFsc2UpIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTGxhbWFtb3MgYSB0dSBtw6l0b2RvIG9yaWdpbmFsIHF1ZSB5YSB0aWVuZSBlbCBzd2l0Y2ggcGFyYSBjYWRhIHRpcG8gZGUgc2xpZGVyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVNsaWRlcigpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEluaWNpYW1vcyBlbCBsaXN0ZW5lciBkZWwgcmVzaXplICh1c2FuZG8gZWwgbcOpdG9kbyBzZXBhcmFkbyBxdWUgdGUgcGFzw6kpXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5yZXNpemVGbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBIZSBzYWNhZG8gdHUgbMOzZ2ljYSBkZWwgcmVzaXplIGEgdW4gbcOpdG9kbyBwcm9waW8gcGFyYSBxdWUgcXVlZGUgbcOhcyBvcmRlbmFkbzpcbiAgICBwcml2YXRlIHNldHVwUmVzaXplTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICAgIGxldCBsYXN0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgaWYgKCF0aGlzLnJlc2l6ZUZuKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUZuID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMobmV3V2lkdGggLSBsYXN0V2lkdGgpID4gNTApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RXaWR0aCA9IG5ld1dpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplU2xpZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUZuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgd2FpdEZvclNsaWNrQXZhaWxhYmlsaXR5KCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGltZXIoMCwgMTAwKS5waXBlKFxuICAgICAgICAgICAgLy8gUG9sbGluZyBjYWRhIDcwbXNcbiAgICAgICAgICAgIHRha2VXaGlsZShcbiAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mICQgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAkLmZuICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgJC5mbi5zbGljayAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IG9mKHVuZGVmaW5lZCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQW5ndWxhciBwdWVkZSByZS1yZW5kZXJpemFyIGVsIERPTSAoY29va2llcywgcmVzaXplKSBkZWphbmRvIHNsaWNrIGEgbWVkaWFzOlxuICAgIC8vIGxhIGNsYXNlIHNpZ3VlIHB1ZXN0YSBwZXJvICRsaXN0LyRkb3RzIHNvbiBudWxsIHkgdW5zbGljaygpIHJvbXBlLlxuICAgIHByaXZhdGUgc2FmZVVuc2xpY2soJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICghJHNsaWRlcj8ubGVuZ3RoIHx8ICEkc2xpZGVyLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gJHNsaWRlclswXT8uc2xpY2s7XG4gICAgICAgIGlmIChpbnN0YW5jZSAmJiBpbnN0YW5jZS4kbGlzdCAmJiBpbnN0YW5jZS4kc2xpZGVzKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICRzbGlkZXIuc2xpY2soJ3Vuc2xpY2snKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgLy8gaW5zdGFuY2lhIHJvdGE6IHNlIGRlc21vbnRhIGEgbWFubyBhYmFqb1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9yY2VVbndyYXBTbGljaygkc2xpZGVyKTtcbiAgICB9XG5cbiAgICAvKiogUmVzdGF1cmEgZWwgRE9NIG9yaWdpbmFsIChzbGlkZXMgZGlyZWN0b3MgZW4gZWwgd3JhcHBlcikgc2luIHBhc2FyIHBvciBzbGljay4gKi9cbiAgICBwcml2YXRlIGZvcmNlVW53cmFwU2xpY2soJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsID0gJHNsaWRlclswXSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3Qgc2xpZGVzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgIGVsLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KFxuICAgICAgICAgICAgICAgICcuc2xpY2stdHJhY2sgPiAuc2xpY2stc2xpZGU6bm90KC5zbGljay1jbG9uZWQpJ1xuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBvcmlnaW5hbHMgPSBzbGlkZXMubWFwKChzbGlkZSkgPT4ge1xuICAgICAgICAgICAgLy8gc2xpY2sgZW52dWVsdmUgY2FkYSBzbGlkZSBlbiB1biA8ZGl2PiBzaW4gY2xhc2UgKGJ1aWxkUm93cylcbiAgICAgICAgICAgIGNvbnN0IGlubmVyID0gc2xpZGUuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgaW5uZXIgJiZcbiAgICAgICAgICAgICAgICBpbm5lci50YWdOYW1lID09PSAnRElWJyAmJlxuICAgICAgICAgICAgICAgICFpbm5lci5jbGFzc05hbWUgJiZcbiAgICAgICAgICAgICAgICBzbGlkZS5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICAgICAgICBpbm5lci5jaGlsZHJlbi5sZW5ndGggPT09IDFcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbm5lci5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzbGlkZTtcbiAgICAgICAgfSk7XG4gICAgICAgIG9yaWdpbmFscy5mb3JFYWNoKChzbGlkZSkgPT4ge1xuICAgICAgICAgICAgc2xpZGUuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgICAgICAgICAnc2xpY2stc2xpZGUnLFxuICAgICAgICAgICAgICAgICdzbGljay1hY3RpdmUnLFxuICAgICAgICAgICAgICAgICdzbGljay1jdXJyZW50JyxcbiAgICAgICAgICAgICAgICAnc2xpY2stY2VudGVyJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHNsaWRlLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1zbGljay1pbmRleCcpO1xuICAgICAgICAgICAgc2xpZGUucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWhpZGRlbicpO1xuICAgICAgICAgICAgc2xpZGUucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpO1xuICAgICAgICAgICAgc2xpZGUucmVtb3ZlQXR0cmlidXRlKCdyb2xlJyk7XG4gICAgICAgICAgICBzbGlkZS5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICAgICAgICAgIHNsaWRlLnN0eWxlLndpZHRoID0gJyc7XG4gICAgICAgICAgICBzbGlkZS5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3JpZ2luYWxzLmxlbmd0aCkge1xuICAgICAgICAgICAgZWwucmVwbGFjZUNoaWxkcmVuKC4uLm9yaWdpbmFscyk7XG4gICAgICAgIH1cbiAgICAgICAgJHNsaWRlci5vZmYoJy5zbGljaycpO1xuICAgICAgICAkc2xpZGVyLnJlbW92ZUNsYXNzKFxuICAgICAgICAgICAgJ3NsaWNrLWluaXRpYWxpemVkIHNsaWNrLXNsaWRlciBzbGljay1kb3R0ZWQgc2xpY2stdmVydGljYWwnXG4gICAgICAgICk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBkZWxldGUgKGVsIGFzIGFueSkuc2xpY2s7XG4gICAgICAgIH0gY2F0Y2gge31cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVTbGlkZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlkZXIgPSAkKHRoaXMuZWwubmF0aXZlRWxlbWVudCkgYXMgYW55O1xuXG4gICAgICAgIGlmICghJHNsaWRlci5sZW5ndGgpIHJldHVybjtcblxuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuICAgICAgICB0aGlzLnNhZmVVbnNsaWNrKCRzbGlja0FjdGl2ZSk7IC8vIERlc3RydXllIGVsIHNsaWRlciBhY3R1YWxcblxuICAgICAgICBzd2l0Y2ggKHRoaXMuc2xpZGVycykge1xuICAgICAgICAgICAgY2FzZSAnY3Nfc2xpZGVyX2NvbnRhaW5lcic6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXIoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19nYWxsZXJ5X3NsaWRlcl9uYXYnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyTmF2KCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3NfZ2FsbGVyeV9zbGlkZXJfbmF2XzInOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyTmF2XzIoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19nYWxsZXJ5X3NsaWRlcl90aHVtYic6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXJUaHVtYigkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNTbGlkZXJzKFxuICAgICAgICAgICAgICAgICAgICAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iJyxcbiAgICAgICAgICAgICAgICAgICAgJy5jc19nYWxsZXJ5X3NsaWRlcl9uYXYnXG4gICAgICAgICAgICAgICAgKTsgLy8gU2luY3Jvbml6YSBsb3Mgc2xpZGVycyBwb3IgdGVtYSBkZSByZW5kYXJpemFkbyBlbiBlbCBET01cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX2dhbGxlcnlfc2xpZGVyX3RodW1iXzInOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyVGh1bWJfMigkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNTbGlkZXJzKFxuICAgICAgICAgICAgICAgICAgICAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iXzInLFxuICAgICAgICAgICAgICAgICAgICAnLmNzX2dhbGxlcnlfc2xpZGVyX25hdl8yJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19zbGlkZXJfY29udGFpbmVyMic6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXIyKCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3Nfc2xpZGVyX2NvbnRhaW5lcjMnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyMygkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX3NsaWRlcl9jb250YWluZXI0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlcjQoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19zbGlkZXJfY29udGFpbmVyNSc6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXI1KCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyKCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuXG4gICAgICAgIGlmICgkc2xpY2tBY3RpdmUuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19sZWZ0X2Fycm93Jyk7XG4gICAgICAgIGNvbnN0IG5leHRBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19yaWdodF9hcnJvdycpO1xuXG4gICAgICAgICgkc2xpY2tBY3RpdmUgYXMgYW55KS5zbGljayh7XG4gICAgICAgICAgICBhdXRvcGxheTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWF1dG9wbGF5JywgMSksXG4gICAgICAgICAgICBhdXRvcGxheVNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoXG4gICAgICAgICAgICAgICAgJHNsaWRlcixcbiAgICAgICAgICAgICAgICAnZGF0YS1hdXRvcGxheScsXG4gICAgICAgICAgICAgICAgMzAwMFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtc3BlZWQnLCA2MDApLFxuICAgICAgICAgICAgaW5maW5pdGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1sb29wJywgMCkgPT09IDAsXG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IHRoaXMuZ2V0U2xpZGVzUGVyVmlldygkc2xpZGVyKSxcbiAgICAgICAgICAgIHN3aXBlVG9TbGlkZTogdHJ1ZSxcbiAgICAgICAgICAgIHByZXZBcnJvdzogcHJldkFycm93LFxuICAgICAgICAgICAgbmV4dEFycm93OiBuZXh0QXJyb3csXG4gICAgICAgICAgICBjZW50ZXJNb2RlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtY2VudGVyJywgMTApID09PSAxLFxuICAgICAgICAgICAgdmFyaWFibGVXaWR0aDpcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtdmFyaWFibGUtd2lkdGgnLCAxMCkgPT09IDEsXG4gICAgICAgICAgICBkb3RzOiB0cnVlLFxuICAgICAgICAgICAgYXBwZW5kRG90czogJHNsaWRlci5wYXJlbnQoKS5maW5kKCcuY3NfcGFnaW5hdGlvbicpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlcjIoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlja0FjdGl2ZSA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG5cbiAgICAgICAgaWYgKCRzbGlja0FjdGl2ZS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX2xlZnRfYXJyb3cnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX3JpZ2h0X2Fycm93Jyk7XG5cbiAgICAgICAgKCRzbGlja0FjdGl2ZSBhcyBhbnkpLnNsaWNrKHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtYXV0b3BsYXknLCAxKSxcbiAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZyhcbiAgICAgICAgICAgICAgICAkc2xpZGVyLFxuICAgICAgICAgICAgICAgICdkYXRhLWF1dG9wbGF5JyxcbiAgICAgICAgICAgICAgICAzMDAwXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1zcGVlZCcsIDYwMCksXG4gICAgICAgICAgICBpbmZpbml0ZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWxvb3AnLCAwKSA9PT0gMCxcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogdGhpcy5nZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXIpLFxuICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiB0cnVlLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGNlbnRlck1vZGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1jZW50ZXInLCAxMCkgPT09IDEsXG4gICAgICAgICAgICB2YXJpYWJsZVdpZHRoOlxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS12YXJpYWJsZS13aWR0aCcsIDEwKSA9PT0gMSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXIzKCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuXG4gICAgICAgIGlmICgkc2xpY2tBY3RpdmUuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXJcbiAgICAgICAgICAgIC5zaWJsaW5ncygnLmNzX3NsaWRlcl9hcnJvd3MnKVxuICAgICAgICAgICAgLmZpbmQoJy5jc19sZWZ0X2Fycm93Jyk7XG4gICAgICAgIGNvbnN0IG5leHRBcnJvdyA9ICRzbGlkZXJcbiAgICAgICAgICAgIC5zaWJsaW5ncygnLmNzX3NsaWRlcl9hcnJvd3MnKVxuICAgICAgICAgICAgLmZpbmQoJy5jc19yaWdodF9hcnJvdycpO1xuXG4gICAgICAgICgkc2xpY2tBY3RpdmUgYXMgYW55KS5zbGljayh7XG4gICAgICAgICAgICBhdXRvcGxheTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWF1dG9wbGF5JywgMCksXG4gICAgICAgICAgICBhdXRvcGxheVNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoXG4gICAgICAgICAgICAgICAgJHNsaWRlcixcbiAgICAgICAgICAgICAgICAnZGF0YS1hdXRvcGxheScsXG4gICAgICAgICAgICAgICAgMzAwMFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHNwZWVkOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtc3BlZWQnLCA2MDApLFxuICAgICAgICAgICAgaW5maW5pdGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1sb29wJywgMCkgPT09IDAsXG4gICAgICAgICAgICBzbGlkZXNUb1Nob3c6IHRoaXMuZ2V0U2xpZGVzUGVyVmlldygkc2xpZGVyKSxcbiAgICAgICAgICAgIHN3aXBlVG9TbGlkZTogdHJ1ZSxcbiAgICAgICAgICAgIHByZXZBcnJvdzogcHJldkFycm93LFxuICAgICAgICAgICAgbmV4dEFycm93OiBuZXh0QXJyb3csXG4gICAgICAgICAgICBjZW50ZXJNb2RlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtY2VudGVyJywgMCkgPT09IDEsXG4gICAgICAgICAgICB2YXJpYWJsZVdpZHRoOlxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS12YXJpYWJsZS13aWR0aCcsIDApID09PSAxLFxuICAgICAgICAgICAgZG90czogZmFsc2UsXG4gICAgICAgICAgICBhcHBlbmREb3RzOiAkc2xpZGVyLnBhcmVudCgpLmZpbmQoJy5jc19wYWdpbmF0aW9uX3NlcnZpY2VzJyksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyTmF2KCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoJHNsaWRlci5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAkc2xpZGVyLnNsaWNrKHtcbiAgICAgICAgICAgICAgICBzbGlkZXNUb1Nob3c6IDMsXG4gICAgICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICAgICAgYXNOYXZGb3I6ICQoJy5jc19nYWxsZXJ5X3NsaWRlcl90aHVtYl9taW5pJykubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gJy5jc19nYWxsZXJ5X3NsaWRlcl90aHVtYl9taW5pJ1xuICAgICAgICAgICAgICAgICAgICA6ICcuY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWInLFxuICAgICAgICAgICAgICAgIGZvY3VzT25TZWxlY3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgYXJyb3dzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZW50ZXJNb2RlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbnRlclBhZGRpbmc6ICcwcHgnLFxuICAgICAgICAgICAgICAgIHNwZWVkOiAxMDAwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIDEwMDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyTmF2XzIoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICgkc2xpZGVyLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAkc2xpZGVyLnNsaWNrKHtcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMyxcbiAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgYXNOYXZGb3I6ICcuY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWJfMicsXG4gICAgICAgICAgICBmb2N1c09uU2VsZWN0OiB0cnVlLFxuICAgICAgICAgICAgYXJyb3dzOiBmYWxzZSxcbiAgICAgICAgICAgIGNlbnRlck1vZGU6IHRydWUsXG4gICAgICAgICAgICBjZW50ZXJQYWRkaW5nOiAnMHB4JyxcbiAgICAgICAgICAgIHNwZWVkOiAxMDAwLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlja1NsaWRlclRodW1iKCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoJHNsaWRlci5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLmNsb3Nlc3QoJy5jc19nYWxsZXJ5X2hvdmVyX3Nob3dfbmF2JylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfbGVmdF9hcnJvd19nYWxsZXJ5Jyk7XG4gICAgICAgIGNvbnN0IG5leHRBcnJvdyA9ICRzbGlkZXJcbiAgICAgICAgICAgIC5jbG9zZXN0KCcuY3NfZ2FsbGVyeV9ob3Zlcl9zaG93X25hdicpXG4gICAgICAgICAgICAuZmluZCgnLmNzX3JpZ2h0X2Fycm93X2dhbGxlcnknKTtcblxuICAgICAgICAkc2xpZGVyLnNsaWNrKHtcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMSxcbiAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGFzTmF2Rm9yOiAnLmNzX2dhbGxlcnlfc2xpZGVyX25hdi5zbGljay1zbGlkZXInLFxuICAgICAgICAgICAgaW5maW5pdGU6IHRydWUsXG4gICAgICAgICAgICBzcGVlZDogNjAwLFxuICAgICAgICAgICAgYXV0b3BsYXk6IGZhbHNlLFxuICAgICAgICAgICAgZmFkZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXJUaHVtYl8yKCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoJHNsaWRlci5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLmNsb3Nlc3QoJy5jc19nYWxsZXJ5X2hvdmVyX3Nob3dfbmF2JylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfbGVmdF9hcnJvd19nYWxsZXJ5XzIgLmNzX3N3aXBlcl9idXR0b25fcHJldicpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuY2xvc2VzdCgnLmNzX2dhbGxlcnlfaG92ZXJfc2hvd19uYXYnKVxuICAgICAgICAgICAgLmZpbmQoJy5jc19yaWdodF9hcnJvd19nYWxsZXJ5XzIgLmNzX3N3aXBlcl9idXR0b25fbmV4dCcpO1xuXG4gICAgICAgICRzbGlkZXIuc2xpY2soe1xuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAxLFxuICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgYXNOYXZGb3I6ICcuY3NfZ2FsbGVyeV9zbGlkZXJfbmF2XzIuc2xpY2stc2xpZGVyJyxcbiAgICAgICAgICAgIGluZmluaXRlOiBmYWxzZSxcbiAgICAgICAgICAgIHNwZWVkOiA2MDAsXG4gICAgICAgICAgICBhdXRvcGxheTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyNCgkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWNrQWN0aXZlID0gJHNsaWRlci5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcblxuICAgICAgICBpZiAoJHNsaWNrQWN0aXZlLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfbGVmdF9hcnJvdycpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfcmlnaHRfYXJyb3cnKTtcblxuICAgICAgICBjb25zdCBzbGlkZXNUb1Nob3cgPSB0aGlzLmdldFNsaWRlc1BlclZpZXcoJHNsaWRlcik7XG5cbiAgICAgICAgKCRzbGlja0FjdGl2ZSBhcyBhbnkpLnNsaWNrKHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtYXV0b3BsYXknLCAxKSxcbiAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZyhcbiAgICAgICAgICAgICAgICAkc2xpZGVyLFxuICAgICAgICAgICAgICAgICdkYXRhLWF1dG9wbGF5JyxcbiAgICAgICAgICAgICAgICAzMDAwXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1zcGVlZCcsIDYwMCksXG4gICAgICAgICAgICBpbmZpbml0ZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWxvb3AnLCAwKSA9PT0gMCxcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogc2xpZGVzVG9TaG93LFxuICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiB0cnVlLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGNlbnRlck1vZGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1jZW50ZXInLCAxMCkgPT09IDEsXG4gICAgICAgICAgICB2YXJpYWJsZVdpZHRoOlxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS12YXJpYWJsZS13aWR0aCcsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIGRvdHM6IHRydWUsXG4gICAgICAgICAgICBhcHBlbmREb3RzOiAkc2xpZGVyLnBhcmVudCgpLmZpbmQoJy5jc19wYWdpbmF0aW9uJyksXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRvZ2dsZVNsaWRlckFycm93cygkc2xpZGVyLCBzbGlkZXNUb1Nob3cpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyNSgkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWNrQWN0aXZlID0gJHNsaWRlci5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcblxuICAgICAgICBpZiAoJHNsaWNrQWN0aXZlLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfbGVmdF9hcnJvdycpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfcmlnaHRfYXJyb3cnKTtcblxuICAgICAgICAoJHNsaWNrQWN0aXZlIGFzIGFueSkuc2xpY2soe1xuICAgICAgICAgICAgYXV0b3BsYXk6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1hdXRvcGxheScsIDEpLFxuICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAgICAgICAgICRzbGlkZXIsXG4gICAgICAgICAgICAgICAgJ2RhdGEtYXV0b3BsYXknLFxuICAgICAgICAgICAgICAgIDMwMDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXNwZWVkJywgNjAwKSxcbiAgICAgICAgICAgIGluZmluaXRlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtbG9vcCcsIDApID09PSAwLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiB0aGlzLmdldFNsaWRlc1BlclZpZXcoJHNsaWRlciksXG4gICAgICAgICAgICBzd2lwZVRvU2xpZGU6IHRydWUsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWNlbnRlcicsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXZhcmlhYmxlLXdpZHRoJywgMTApID09PSAxLFxuICAgICAgICAgICAgZG90czogdHJ1ZSxcbiAgICAgICAgICAgIGFwcGVuZERvdHM6ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19wYWdpbmF0aW9uJyksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2xpZGVyU2V0dGluZyhcbiAgICAgICAgJHNsaWRlcjogYW55LFxuICAgICAgICBzZXR0aW5nTmFtZTogc3RyaW5nLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGFueVxuICAgICk6IGFueSB7XG4gICAgICAgIHJldHVybiBwYXJzZUludCgkc2xpZGVyLmF0dHIoc2V0dGluZ05hbWUpLCAxMCkgfHwgZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2xpZGVzUGVyVmlldygkc2xpZGVyOiBhbnkpOiBudW1iZXIge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgY29uc3Qgc2xpZGVzUGVyVmlld1R5cGUgPSAkc2xpZGVyLmF0dHIoJ2RhdGEtc2xpZGVzLXBlci12aWV3Jyk7XG4gICAgICAgICAgICBjb25zdCB4c1NsaWRlcyA9IHBhcnNlSW50KCRzbGlkZXIuYXR0cignZGF0YS14cy1zbGlkZXMnKSwgMTApIHx8IDE7XG4gICAgICAgICAgICBjb25zdCBzbVNsaWRlcyA9IHBhcnNlSW50KCRzbGlkZXIuYXR0cignZGF0YS1zbS1zbGlkZXMnKSwgMTApIHx8IDI7XG4gICAgICAgICAgICBjb25zdCBtZFNsaWRlcyA9IHBhcnNlSW50KCRzbGlkZXIuYXR0cignZGF0YS1tZC1zbGlkZXMnKSwgMTApIHx8IDI7XG4gICAgICAgICAgICBjb25zdCBtbGdTbGlkZXMgPVxuICAgICAgICAgICAgICAgIHBhcnNlSW50KCRzbGlkZXIuYXR0cignZGF0YS1tbGctc2xpZGVzJyksIDEwKSB8fCAzO1xuICAgICAgICAgICAgY29uc3QgbGdTbGlkZXMgPSBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtbGctc2xpZGVzJyksIDEwKSB8fCAzO1xuICAgICAgICAgICAgY29uc3QgeGxTbGlkZXMgPVxuICAgICAgICAgICAgICAgIHBhcnNlSW50KCRzbGlkZXIuYXR0cignZGF0YS14bC1zbGlkZXMnKSwgMTApIHx8IGxnU2xpZGVzO1xuXG4gICAgICAgICAgICBpZiAoc2xpZGVzUGVyVmlld1R5cGUgPT09ICdyZXNwb25zaXZlJykge1xuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDU3Nikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geHNTbGlkZXM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc21TbGlkZXM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDEwMjQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1kU2xpZGVzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPCAxMjgwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtbGdTbGlkZXM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDE0MDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxnU2xpZGVzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB4bFNsaWRlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChzbGlkZXNQZXJWaWV3VHlwZSwgMTApIHx8IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KCRzbGlkZXIuYXR0cignZGF0YS1zbGlkZXMtcGVyLXZpZXcnKSwgMTApIHx8IDM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b2dnbGVTbGlkZXJBcnJvd3MoJHNsaWRlcjogYW55LCBzbGlkZXNUb1Nob3c6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpZGVzID0gJHNsaWRlci5maW5kKCcuY3Nfc2xpZGUnKTtcbiAgICAgICAgY29uc3QgdG90YWxTbGlkZXMgPSAkc2xpZGVzLmxlbmd0aDtcblxuICAgICAgICBjb25zdCAkc2xpZGVyQ29udGFpbmVyID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJyk7XG4gICAgICAgIGNvbnN0IHNob3VsZEhpZGUgPSB0b3RhbFNsaWRlcyA8PSBzbGlkZXNUb1Nob3c7XG5cbiAgICAgICAgJHNsaWRlckNvbnRhaW5lci50b2dnbGVDbGFzcygnaGlkZS1hcnJvd3MnLCBzaG91bGRIaWRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bmNTbGlkZXJzKG1haW5TZWxlY3Rvcjogc3RyaW5nLCBuYXZTZWxlY3Rvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRtYWluID0gJChtYWluU2VsZWN0b3IpO1xuICAgICAgICBjb25zdCAkbmF2ID0gJChuYXZTZWxlY3Rvcik7XG5cbiAgICAgICAgaWYgKCRtYWluLmxlbmd0aCAmJiAkbmF2Lmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKCEkbWFpbi5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgICAgICRtYWluLnNsaWNrKHtcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAxLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Njcm9sbDogMSxcbiAgICAgICAgICAgICAgICAgICAgYXJyb3dzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBmYWRlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBhc05hdkZvcjogbmF2U2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghJG5hdi5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgICAgICRuYXYuc2xpY2soe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Nob3c6IDMsXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgICAgICAgICBhc05hdkZvcjogbWFpblNlbGVjdG9yLFxuICAgICAgICAgICAgICAgICAgICBmb2N1c09uU2VsZWN0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBhcnJvd3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY2VudGVyTW9kZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlVG9OZXh0U2xpZGUoKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBjb25zdCAkc2xpZGVyID0gJCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKCRzbGlkZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgJHNsaWRlci5zbGljaygnc2xpY2tOZXh0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
package/fesm2022/ctt-babylon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
[diffend] Oversized file quarantined before diffing.
|
|
2
2
|
name: package/fesm2022/ctt-babylon.mjs
|
|
3
|
-
size:
|
|
4
|
-
sha256:
|
|
3
|
+
size: 57914856 bytes
|
|
4
|
+
sha256: 9234a09db2d326bea3d9dab8489fadca2daeac01ee9cf91a244e3eeafbb547d9
|