ctt-babylon 0.22.119 → 0.22.122

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.
@@ -0,0 +1,162 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, inject, Input, PLATFORM_ID, ViewChild, ViewEncapsulation, } from '@angular/core';
3
+ import { isPlatformBrowser } from '@angular/common';
4
+ import { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';
5
+ import * as i0 from "@angular/core";
6
+ const EMPTY_VIEW_MODEL = {
7
+ hasContent: false,
8
+ };
9
+ export class C2TxtImgV4Component {
10
+ constructor() {
11
+ this.platformId = inject(PLATFORM_ID);
12
+ this.handleDesktopChange = () => {
13
+ this.initializeRevealEffect();
14
+ };
15
+ this.vm = { ...EMPTY_VIEW_MODEL };
16
+ this.viewInitialized = false;
17
+ }
18
+ ngOnChanges() {
19
+ this.rebuildViewModel();
20
+ if (this.viewInitialized) {
21
+ queueMicrotask(() => this.initializeRevealEffect());
22
+ }
23
+ }
24
+ ngAfterViewInit() {
25
+ this.viewInitialized = true;
26
+ this.initializeRevealEffect();
27
+ }
28
+ ngOnDestroy() {
29
+ this.cleanupRevealEffect();
30
+ }
31
+ rebuildViewModel() {
32
+ const image = this.getPrimaryImage();
33
+ const imageSrc = image ? this.getImageSrc(image) : '';
34
+ const pretitle = this.resolveText(image?.pretitle ?? image?.texts?.pretitle);
35
+ const title = this.resolveText(image?.title ?? image?.texts?.title);
36
+ const description = this.resolveText(image?.description ?? image?.texts?.description);
37
+ const button = this.getPrimaryButton(image);
38
+ this.vm.image = imageSrc
39
+ ? {
40
+ src: imageSrc,
41
+ alt: this.resolveText(image?.alt ?? image?.img?.alt) ?? '',
42
+ }
43
+ : undefined;
44
+ this.vm.pretitle = pretitle;
45
+ this.vm.title = title;
46
+ this.vm.description = description;
47
+ this.vm.button = button;
48
+ this.vm.hasContent = !!(imageSrc ||
49
+ pretitle ||
50
+ title ||
51
+ description ||
52
+ button);
53
+ }
54
+ getPrimaryImage() {
55
+ const images = this.props?.multimedia?.imagenes ?? [];
56
+ const activeImage = images.find((image) => image?.active !== false);
57
+ return activeImage ?? images[0];
58
+ }
59
+ getPrimaryButton(image) {
60
+ const button = image?.buttons?.[0];
61
+ const label = this.resolveText(button?.label ?? button?.name);
62
+ const href = this.resolveButtonHref(button);
63
+ if (!label || !href) {
64
+ return undefined;
65
+ }
66
+ return {
67
+ label,
68
+ href,
69
+ linkType: button?.linkType ?? button?.link_type ?? 'external_link',
70
+ target: button?.target,
71
+ };
72
+ }
73
+ getImageSrc(image) {
74
+ const rawSrc = image?.img?.src ??
75
+ image?.src ??
76
+ image?.path?.webp ??
77
+ image?.path?.original ??
78
+ image?.thumbnails?.[1366]?.webp ??
79
+ image?.thumbnails?.[1280]?.webp ??
80
+ image?.thumbnails?.[1024]?.webp ??
81
+ image?.thumbnails?.[768]?.webp ??
82
+ image?.thumbnails?.[540]?.webp ??
83
+ image?.thumbnails?.[375]?.webp ??
84
+ image?.thumbnails?.[1366]?.original ??
85
+ image?.thumbnails?.[1280]?.original ??
86
+ image?.thumbnails?.[1024]?.original ??
87
+ image?.thumbnails?.[768]?.original ??
88
+ image?.thumbnails?.[540]?.original ??
89
+ image?.thumbnails?.[375]?.original ??
90
+ '';
91
+ if (!rawSrc) {
92
+ return '';
93
+ }
94
+ if (rawSrc.startsWith('http://') ||
95
+ rawSrc.startsWith('https://') ||
96
+ rawSrc.startsWith('//') ||
97
+ rawSrc.startsWith('data:') ||
98
+ rawSrc.startsWith('blob:') ||
99
+ rawSrc.startsWith('/')) {
100
+ return rawSrc;
101
+ }
102
+ return `/${rawSrc.replace(/^\/+/, '')}`;
103
+ }
104
+ resolveButtonHref(button) {
105
+ const href = button?.url ?? button?.link_value ?? button?.linkValue ?? '';
106
+ return href.trim();
107
+ }
108
+ resolveText(value) {
109
+ const text = value?.trim();
110
+ return text ? text : undefined;
111
+ }
112
+ initializeRevealEffect() {
113
+ if (!isPlatformBrowser(this.platformId)) {
114
+ return;
115
+ }
116
+ const moduleElement = this.moduleSection?.nativeElement;
117
+ if (!moduleElement) {
118
+ return;
119
+ }
120
+ this.cleanupRevealEffect();
121
+ this.desktopQuery = window.matchMedia('(min-width: 1001px)');
122
+ moduleElement.classList.remove('is-open');
123
+ if (!this.desktopQuery.matches) {
124
+ moduleElement.classList.add('is-open');
125
+ return;
126
+ }
127
+ const isCentered = (entry) => {
128
+ const viewportCenter = window.innerHeight / 2;
129
+ const moduleCenter = entry.boundingClientRect.top +
130
+ entry.boundingClientRect.height / 2;
131
+ return (Math.abs(moduleCenter - viewportCenter) <=
132
+ entry.boundingClientRect.height / 2);
133
+ };
134
+ this.intersectionObserver = new IntersectionObserver(([entry]) => {
135
+ if (entry.isIntersecting && isCentered(entry)) {
136
+ moduleElement.classList.add('is-open');
137
+ this.cleanupRevealEffect();
138
+ }
139
+ }, { threshold: [0, 0.25, 0.5, 0.75, 1] });
140
+ this.intersectionObserver.observe(moduleElement);
141
+ this.desktopQuery.addEventListener('change', this.handleDesktopChange);
142
+ }
143
+ cleanupRevealEffect(removeListener = true) {
144
+ this.intersectionObserver?.disconnect();
145
+ this.intersectionObserver = undefined;
146
+ if (removeListener && this.desktopQuery) {
147
+ this.desktopQuery.removeEventListener('change', this.handleDesktopChange);
148
+ }
149
+ }
150
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: C2TxtImgV4Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
151
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: C2TxtImgV4Component, isStandalone: true, selector: "c2-txt-img-v4", inputs: { props: "props" }, viewQueries: [{ propertyName: "moduleSection", first: true, predicate: ["moduleSection"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (vm.hasContent) {\n <section class=\"mdl-module\" #moduleSection>\n <div class=\"mdl-container\">\n <div class=\"m-left\">\n <div class=\"m-content\">\n @if (vm.pretitle) {\n <div class=\"m-pretitulo\" [innerHTML]=\"vm.pretitle\"></div>\n }\n @if (vm.title) {\n <div class=\"m-titulo\" [innerHTML]=\"vm.title\"></div>\n }\n @if (vm.description) {\n <div class=\"m-texto\" [innerHTML]=\"vm.description\"></div>\n }\n @if (vm.button; as button) {\n <a\n class=\"m-buttonD\"\n [href]=\"button.href\"\n [linkType]=\"button.linkType\"\n [attr.target]=\"button.target\"\n [attr.rel]=\"\n button.target === '_blank'\n ? 'noopener noreferrer'\n : null\n \"\n [attr.aria-label]=\"button.label\"\n >\n <span>{{ button.label }}</span>\n </a>\n }\n </div>\n </div>\n\n @if (vm.image; as image) {\n <div class=\"m-right\">\n <img [src]=\"image.src\" [alt]=\"image.alt\" loading=\"lazy\" />\n </div>\n }\n </div>\n </section>\n}\n", styles: [".mdl-module{background-color:var(--cl_blue);overflow:hidden}.mdl-module .mdl-container{max-width:1700px;margin:0 auto;display:flex;align-items:center;justify-content:center;gap:0;padding:100px 50px;transition:gap .6s ease}.mdl-module .mdl-container .m-left{max-width:0;width:0;height:100%;display:flex;overflow:hidden;opacity:0;transform:translate(-40px);transition:max-width .9s cubic-bezier(.22,1,.36,1),width .9s cubic-bezier(.22,1,.36,1),opacity .35s ease,transform 2.9s cubic-bezier(.22,1,.36,1)}.mdl-module .mdl-container .m-left .m-content{display:flex;gap:20px;flex-direction:column;min-width:600px;transform:translate(-20px);opacity:0;transition:opacity .35s ease,transform 2.9s cubic-bezier(.22,1,.36,1)}.mdl-module .mdl-container .m-left .m-content .m-pretitulo{text-transform:uppercase;color:var(--cl_pretitle);font-family:var(--font-pretitle);font-size:16px}.mdl-module .mdl-container .m-left .m-content .m-titulo{color:var(--cl_corp);font-family:var(--font-title);font-size:60px}.mdl-module .mdl-container .m-left .m-content .m-texto{color:var(--cl_text);font-family:var(--font-text);font-size:18px;line-height:34px}.mdl-module .mdl-container .m-left .m-content .m-buttonD{max-width:260px;height:50px;background-color:transparent;border:1px solid var(--cl_corp);color:var(--cl_corp);text-transform:uppercase;font-size:16px;font-family:var(--font-pretitle)}.mdl-module .mdl-container .m-right{width:min(760px,100%);flex:0 0 auto;transform:translate(0);will-change:transform,width;transition:width .9s cubic-bezier(.22,1,.36,1),transform 2.9s cubic-bezier(.22,1,.36,1),opacity .35s ease}.mdl-module .mdl-container .m-right img{width:100%;display:block}.mdl-module.is-open .mdl-container{gap:40px;justify-content:center}.mdl-module.is-open .mdl-container .m-left{max-width:600px;width:100%;opacity:1;transform:translate(0)}.mdl-module.is-open .mdl-container .m-left .m-content{opacity:1;transform:translate(0);transition-delay:.2s}.mdl-module.is-open .mdl-container .m-right{width:min(760px,100%);transform:translate(16px);transition-delay:1s}@media (max-width: 1000px){.mdl-module .mdl-container{padding:70px 20px;flex-direction:column-reverse;gap:30px;justify-content:flex-start}.mdl-module .mdl-container .m-left{max-width:600px;width:100%;opacity:1;overflow:visible;transform:none}.mdl-module .mdl-container .m-left .m-content{min-width:0;opacity:1;transform:none}.mdl-module .mdl-container .m-right{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: BabylonLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick", "clickPopup", "disablePointerNone"], outputs: ["anchorClicked"] }] }); }
152
+ }
153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: C2TxtImgV4Component, decorators: [{
154
+ type: Component,
155
+ args: [{ selector: 'c2-txt-img-v4', standalone: true, imports: [CommonModule, BabylonLinkTypeDirective], encapsulation: ViewEncapsulation.Emulated, template: "@if (vm.hasContent) {\n <section class=\"mdl-module\" #moduleSection>\n <div class=\"mdl-container\">\n <div class=\"m-left\">\n <div class=\"m-content\">\n @if (vm.pretitle) {\n <div class=\"m-pretitulo\" [innerHTML]=\"vm.pretitle\"></div>\n }\n @if (vm.title) {\n <div class=\"m-titulo\" [innerHTML]=\"vm.title\"></div>\n }\n @if (vm.description) {\n <div class=\"m-texto\" [innerHTML]=\"vm.description\"></div>\n }\n @if (vm.button; as button) {\n <a\n class=\"m-buttonD\"\n [href]=\"button.href\"\n [linkType]=\"button.linkType\"\n [attr.target]=\"button.target\"\n [attr.rel]=\"\n button.target === '_blank'\n ? 'noopener noreferrer'\n : null\n \"\n [attr.aria-label]=\"button.label\"\n >\n <span>{{ button.label }}</span>\n </a>\n }\n </div>\n </div>\n\n @if (vm.image; as image) {\n <div class=\"m-right\">\n <img [src]=\"image.src\" [alt]=\"image.alt\" loading=\"lazy\" />\n </div>\n }\n </div>\n </section>\n}\n", styles: [".mdl-module{background-color:var(--cl_blue);overflow:hidden}.mdl-module .mdl-container{max-width:1700px;margin:0 auto;display:flex;align-items:center;justify-content:center;gap:0;padding:100px 50px;transition:gap .6s ease}.mdl-module .mdl-container .m-left{max-width:0;width:0;height:100%;display:flex;overflow:hidden;opacity:0;transform:translate(-40px);transition:max-width .9s cubic-bezier(.22,1,.36,1),width .9s cubic-bezier(.22,1,.36,1),opacity .35s ease,transform 2.9s cubic-bezier(.22,1,.36,1)}.mdl-module .mdl-container .m-left .m-content{display:flex;gap:20px;flex-direction:column;min-width:600px;transform:translate(-20px);opacity:0;transition:opacity .35s ease,transform 2.9s cubic-bezier(.22,1,.36,1)}.mdl-module .mdl-container .m-left .m-content .m-pretitulo{text-transform:uppercase;color:var(--cl_pretitle);font-family:var(--font-pretitle);font-size:16px}.mdl-module .mdl-container .m-left .m-content .m-titulo{color:var(--cl_corp);font-family:var(--font-title);font-size:60px}.mdl-module .mdl-container .m-left .m-content .m-texto{color:var(--cl_text);font-family:var(--font-text);font-size:18px;line-height:34px}.mdl-module .mdl-container .m-left .m-content .m-buttonD{max-width:260px;height:50px;background-color:transparent;border:1px solid var(--cl_corp);color:var(--cl_corp);text-transform:uppercase;font-size:16px;font-family:var(--font-pretitle)}.mdl-module .mdl-container .m-right{width:min(760px,100%);flex:0 0 auto;transform:translate(0);will-change:transform,width;transition:width .9s cubic-bezier(.22,1,.36,1),transform 2.9s cubic-bezier(.22,1,.36,1),opacity .35s ease}.mdl-module .mdl-container .m-right img{width:100%;display:block}.mdl-module.is-open .mdl-container{gap:40px;justify-content:center}.mdl-module.is-open .mdl-container .m-left{max-width:600px;width:100%;opacity:1;transform:translate(0)}.mdl-module.is-open .mdl-container .m-left .m-content{opacity:1;transform:translate(0);transition-delay:.2s}.mdl-module.is-open .mdl-container .m-right{width:min(760px,100%);transform:translate(16px);transition-delay:1s}@media (max-width: 1000px){.mdl-module .mdl-container{padding:70px 20px;flex-direction:column-reverse;gap:30px;justify-content:flex-start}.mdl-module .mdl-container .m-left{max-width:600px;width:100%;opacity:1;overflow:visible;transform:none}.mdl-module .mdl-container .m-left .m-content{min-width:0;opacity:1;transform:none}.mdl-module .mdl-container .m-right{width:100%}}\n"] }]
156
+ }], propDecorators: { props: [{
157
+ type: Input
158
+ }], moduleSection: [{
159
+ type: ViewChild,
160
+ args: ['moduleSection']
161
+ }] } });
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYzItdHh0LWltZy12NC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL2MyLXR4dC1pbWctdjQvYzItdHh0LWltZy12NC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL2MyLXR4dC1pbWctdjQvYzItdHh0LWltZy12NC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVILFNBQVMsRUFFVCxNQUFNLEVBQ04sS0FBSyxFQUdMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOztBQVNoRyxNQUFNLGdCQUFnQixHQUF3QjtJQUMxQyxVQUFVLEVBQUUsS0FBSztDQUNwQixDQUFDO0FBVUYsTUFBTSxPQUFPLG1CQUFtQjtJQVJoQztRQVlxQixlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBR2pDLHdCQUFtQixHQUFHLEdBQVMsRUFBRTtZQUM5QyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNsQyxDQUFDLENBQUM7UUFFTyxPQUFFLEdBQXdCLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25ELG9CQUFlLEdBQUcsS0FBSyxDQUFDO0tBK0tuQztJQTdLRyxXQUFXO1FBQ1AsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJ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Q2pELElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxjQUFjLEdBQUcsSUFBSTtRQUM3QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFNBQVMsQ0FBQztRQUV0QyxJQUFJLGNBQWMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQzdFO0lBQ0wsQ0FBQzsrR0ExTFEsbUJBQW1CO21HQUFuQixtQkFBbUIsME9DbkNoQyx3b0RBeUNBLHM3RURYYyxZQUFZLCtCQUFFLHdCQUF3Qjs7NEZBS3ZDLG1CQUFtQjtrQkFSL0IsU0FBUzsrQkFDSSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHdCQUF3QixDQUFDLGlCQUdsQyxpQkFBaUIsQ0FBQyxRQUFROzhCQUdoQyxLQUFLO3NCQUFiLEtBQUs7Z0JBQzhCLGFBQWE7c0JBQWhELFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgUExBVEZPUk1fSUQsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJhYnlsb25MaW5rVHlwZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvbGluay10eXBlL2xpbmstdHlwZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQmFieWxvbkJ1dHRvbkkgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgQzJUeHRJbWdWNEJ1dHRvbixcbiAgICBDMlR4dEltZ1Y0SW1hZ2UsXG4gICAgQzJUeHRJbWdWNFByb3BzLFxuICAgIEMyVHh0SW1nVjRWaWV3TW9kZWwsXG59IGZyb20gJy4vYzItdHh0LWltZy12NC5pbnRlcmZhY2VzJztcblxuY29uc3QgRU1QVFlfVklFV19NT0RFTDogQzJUeHRJbWdWNFZpZXdNb2RlbCA9IHtcbiAgICBoYXNDb250ZW50OiBmYWxzZSxcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYzItdHh0LWltZy12NCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCYWJ5bG9uTGlua1R5cGVEaXJlY3RpdmVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jMi10eHQtaW1nLXY0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYzItdHh0LWltZy12NC5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWQsXG59KVxuZXhwb3J0IGNsYXNzIEMyVHh0SW1nVjRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgcHJvcHM/OiBDMlR4dEltZ1Y0UHJvcHM7XG4gICAgQFZpZXdDaGlsZCgnbW9kdWxlU2VjdGlvbicpIHByaXZhdGUgbW9kdWxlU2VjdGlvbj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgICBwcml2YXRlIGRlc2t0b3BRdWVyeT86IE1lZGlhUXVlcnlMaXN0O1xuICAgIHByaXZhdGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXI/OiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZURlc2t0b3BDaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVJldmVhbEVmZmVjdCgpO1xuICAgIH07XG5cbiAgICByZWFkb25seSB2bTogQzJUeHRJbWdWNFZpZXdNb2RlbCA9IHsgLi4uRU1QVFlfVklFV19NT0RFTCB9O1xuICAgIHByaXZhdGUgdmlld0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWJ1aWxkVmlld01vZGVsKCk7XG4gICAgICAgIGlmICh0aGlzLnZpZXdJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gdGhpcy5pbml0aWFsaXplUmV2ZWFsRWZmZWN0KCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVJldmVhbEVmZmVjdCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFudXBSZXZlYWxFZmZlY3QoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYnVpbGRWaWV3TW9kZWwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGltYWdlID0gdGhpcy5nZXRQcmltYXJ5SW1hZ2UoKTtcbiAgICAgICAgY29uc3QgaW1hZ2VTcmMgPSBpbWFnZSA/IHRoaXMuZ2V0SW1hZ2VTcmMoaW1hZ2UpIDogJyc7XG4gICAgICAgIGNvbnN0IHByZXRpdGxlID0gdGhpcy5yZXNvbHZlVGV4dChpbWFnZT8ucHJldGl0bGUgPz8gaW1hZ2U/LnRleHRzPy5wcmV0aXRsZSk7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gdGhpcy5yZXNvbHZlVGV4dChpbWFnZT8udGl0bGUgPz8gaW1hZ2U/LnRleHRzPy50aXRsZSk7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5yZXNvbHZlVGV4dChcbiAgICAgICAgICAgIGltYWdlPy5kZXNjcmlwdGlvbiA/PyBpbWFnZT8udGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuZ2V0UHJpbWFyeUJ1dHRvbihpbWFnZSk7XG5cbiAgICAgICAgdGhpcy52bS5pbWFnZSA9IGltYWdlU3JjXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIHNyYzogaW1hZ2VTcmMsXG4gICAgICAgICAgICAgICAgICBhbHQ6IHRoaXMucmVzb2x2ZVRleHQoaW1hZ2U/LmFsdCA/PyBpbWFnZT8uaW1nPy5hbHQpID8/ICcnLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy52bS5wcmV0aXRsZSA9IHByZXRpdGxlO1xuICAgICAgICB0aGlzLnZtLnRpdGxlID0gdGl0bGU7XG4gICAgICAgIHRoaXMudm0uZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgICAgdGhpcy52bS5idXR0b24gPSBidXR0b247XG4gICAgICAgIHRoaXMudm0uaGFzQ29udGVudCA9ICEhKFxuICAgICAgICAgICAgaW1hZ2VTcmMgfHxcbiAgICAgICAgICAgIHByZXRpdGxlIHx8XG4gICAgICAgICAgICB0aXRsZSB8fFxuICAgICAgICAgICAgZGVzY3JpcHRpb24gfHxcbiAgICAgICAgICAgIGJ1dHRvblxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UHJpbWFyeUltYWdlKCk6IEMyVHh0SW1nVjRJbWFnZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGltYWdlcyA9IHRoaXMucHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzID8/IFtdO1xuICAgICAgICBjb25zdCBhY3RpdmVJbWFnZSA9IGltYWdlcy5maW5kKChpbWFnZSkgPT4gaW1hZ2U/LmFjdGl2ZSAhPT0gZmFsc2UpO1xuICAgICAgICByZXR1cm4gYWN0aXZlSW1hZ2UgPz8gaW1hZ2VzWzBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UHJpbWFyeUJ1dHRvbihcbiAgICAgICAgaW1hZ2U/OiBDMlR4dEltZ1Y0SW1hZ2VcbiAgICApOiBDMlR4dEltZ1Y0QnV0dG9uIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgYnV0dG9uID0gaW1hZ2U/LmJ1dHRvbnM/LlswXTtcbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLnJlc29sdmVUZXh0KGJ1dHRvbj8ubGFiZWwgPz8gYnV0dG9uPy5uYW1lKTtcbiAgICAgICAgY29uc3QgaHJlZiA9IHRoaXMucmVzb2x2ZUJ1dHRvbkhyZWYoYnV0dG9uKTtcblxuICAgICAgICBpZiAoIWxhYmVsIHx8ICFocmVmKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgICAgaHJlZixcbiAgICAgICAgICAgIGxpbmtUeXBlOiBidXR0b24/LmxpbmtUeXBlID8/IGJ1dHRvbj8ubGlua190eXBlID8/ICdleHRlcm5hbF9saW5rJyxcbiAgICAgICAgICAgIHRhcmdldDogYnV0dG9uPy50YXJnZXQsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRJbWFnZVNyYyhpbWFnZT86IEMyVHh0SW1nVjRJbWFnZSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJhd1NyYyA9XG4gICAgICAgICAgICBpbWFnZT8uaW1nPy5zcmMgPz9cbiAgICAgICAgICAgIGltYWdlPy5zcmMgPz9cbiAgICAgICAgICAgIGltYWdlPy5wYXRoPy53ZWJwID8/XG4gICAgICAgICAgICBpbWFnZT8ucGF0aD8ub3JpZ2luYWwgPz9cbiAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTM2Nl0/LndlYnAgPz9cbiAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/LndlYnAgPz9cbiAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTAyNF0/LndlYnAgPz9cbiAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ud2VicCA/P1xuICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/Lls1NDBdPy53ZWJwID8/XG4gICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzM3NV0/LndlYnAgPz9cbiAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTM2Nl0/Lm9yaWdpbmFsID8/XG4gICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzEyODBdPy5vcmlnaW5hbCA/P1xuICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/LlsxMDI0XT8ub3JpZ2luYWwgPz9cbiAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ub3JpZ2luYWwgPz9cbiAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bNTQwXT8ub3JpZ2luYWwgPz9cbiAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMzc1XT8ub3JpZ2luYWwgPz9cbiAgICAgICAgICAgICcnO1xuXG4gICAgICAgIGlmICghcmF3U3JjKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICByYXdTcmMuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8XG4gICAgICAgICAgICByYXdTcmMuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSB8fFxuICAgICAgICAgICAgcmF3U3JjLnN0YXJ0c1dpdGgoJy8vJykgfHxcbiAgICAgICAgICAgIHJhd1NyYy5zdGFydHNXaXRoKCdkYXRhOicpIHx8XG4gICAgICAgICAgICByYXdTcmMuc3RhcnRzV2l0aCgnYmxvYjonKSB8fFxuICAgICAgICAgICAgcmF3U3JjLnN0YXJ0c1dpdGgoJy8nKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiByYXdTcmM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYC8ke3Jhd1NyYy5yZXBsYWNlKC9eXFwvKy8sICcnKX1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZUJ1dHRvbkhyZWYoYnV0dG9uPzogQmFieWxvbkJ1dHRvbkkpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBocmVmID1cbiAgICAgICAgICAgIGJ1dHRvbj8udXJsID8/IGJ1dHRvbj8ubGlua192YWx1ZSA/PyBidXR0b24/LmxpbmtWYWx1ZSA/PyAnJztcbiAgICAgICAgcmV0dXJuIGhyZWYudHJpbSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZVRleHQodmFsdWU/OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IHZhbHVlPy50cmltKCk7XG4gICAgICAgIHJldHVybiB0ZXh0ID8gdGV4dCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVSZXZlYWxFZmZlY3QoKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbW9kdWxlRWxlbWVudCA9IHRoaXMubW9kdWxlU2VjdGlvbj8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKCFtb2R1bGVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsZWFudXBSZXZlYWxFZmZlY3QoKTtcblxuICAgICAgICB0aGlzLmRlc2t0b3BRdWVyeSA9IHdpbmRvdy5tYXRjaE1lZGlhKCcobWluLXdpZHRoOiAxMDAxcHgpJyk7XG4gICAgICAgIG1vZHVsZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnaXMtb3BlbicpO1xuXG4gICAgICAgIGlmICghdGhpcy5kZXNrdG9wUXVlcnkubWF0Y2hlcykge1xuICAgICAgICAgICAgbW9kdWxlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdpcy1vcGVuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc0NlbnRlcmVkID0gKGVudHJ5OiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydENlbnRlciA9IHdpbmRvdy5pbm5lckhlaWdodCAvIDI7XG4gICAgICAgICAgICBjb25zdCBtb2R1bGVDZW50ZXIgPVxuICAgICAgICAgICAgICAgIGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC50b3AgK1xuICAgICAgICAgICAgICAgIGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC5oZWlnaHQgLyAyO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIE1hdGguYWJzKG1vZHVsZUNlbnRlciAtIHZpZXdwb3J0Q2VudGVyKSA8PVxuICAgICAgICAgICAgICAgIGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC5oZWlnaHQgLyAyXG4gICAgICAgICAgICApO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAgICAgICAoW2VudHJ5XSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZyAmJiBpc0NlbnRlcmVkKGVudHJ5KSkge1xuICAgICAgICAgICAgICAgICAgICBtb2R1bGVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2lzLW9wZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhbnVwUmV2ZWFsRWZmZWN0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgdGhyZXNob2xkOiBbMCwgMC4yNSwgMC41LCAwLjc1LCAxXSB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5vYnNlcnZlKG1vZHVsZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLmRlc2t0b3BRdWVyeS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGlzLmhhbmRsZURlc2t0b3BDaGFuZ2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYW51cFJldmVhbEVmZmVjdChyZW1vdmVMaXN0ZW5lciA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChyZW1vdmVMaXN0ZW5lciAmJiB0aGlzLmRlc2t0b3BRdWVyeSkge1xuICAgICAgICAgICAgdGhpcy5kZXNrdG9wUXVlcnkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5oYW5kbGVEZXNrdG9wQ2hhbmdlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpZiAodm0uaGFzQ29udGVudCkge1xuICAgIDxzZWN0aW9uIGNsYXNzPVwibWRsLW1vZHVsZVwiICNtb2R1bGVTZWN0aW9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tbGVmdFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmICh2bS5wcmV0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tcHJldGl0dWxvXCIgW2lubmVySFRNTF09XCJ2bS5wcmV0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAodm0udGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXRpdHVsb1wiIFtpbm5lckhUTUxdPVwidm0udGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKHZtLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS10ZXh0b1wiIFtpbm5lckhUTUxdPVwidm0uZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKHZtLmJ1dHRvbjsgYXMgYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1idXR0b25EXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJidXR0b24uaHJlZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImJ1dHRvbi5saW5rVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFyZ2V0XT1cImJ1dHRvbi50YXJnZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnRhcmdldCA9PT0gJ19ibGFuaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ25vb3BlbmVyIG5vcmVmZXJyZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBidXR0b24ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICBAaWYgKHZtLmltYWdlOyBhcyBpbWFnZSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZS5zcmNcIiBbYWx0XT1cImltYWdlLmFsdFwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYzItdHh0LWltZy12NC5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZXJuYWwvY29yZS9jMi10eHQtaW1nLXY0L2MyLXR4dC1pbWctdjQuaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFieWxvbkJ1dHRvbkksIEJhYnlsb25JbWFnZUksIEJhYnlsb25NdWx0aW1lZGlhSSB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEMyVHh0SW1nVjRJbWFnZSBleHRlbmRzIEJhYnlsb25JbWFnZUkge1xuICAgIGFjdGl2ZT86IGJvb2xlYW47XG4gICAgY292ZXI/OiBib29sZWFuO1xuICAgIG1vYmlsZT86IGJvb2xlYW47XG4gICAgcGF0aD86IHtcbiAgICAgICAgb3JpZ2luYWw/OiBzdHJpbmc7XG4gICAgICAgIHdlYnA/OiBzdHJpbmc7XG4gICAgfTtcbiAgICB0aHVtYm5haWxzPzogUmVjb3JkPFxuICAgICAgICBzdHJpbmcgfCBudW1iZXIsXG4gICAgICAgIHtcbiAgICAgICAgICAgIG9yaWdpbmFsPzogc3RyaW5nO1xuICAgICAgICAgICAgd2VicD86IHN0cmluZztcbiAgICAgICAgfVxuICAgID47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQzJUeHRJbWdWNE11bHRpbWVkaWEgZXh0ZW5kcyBCYWJ5bG9uTXVsdGltZWRpYUkge1xuICAgIGltYWdlbmVzPzogQzJUeHRJbWdWNEltYWdlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQzJUeHRJbWdWNFByb3BzIHtcbiAgICBtdWx0aW1lZGlhPzogQzJUeHRJbWdWNE11bHRpbWVkaWE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQzJUeHRJbWdWNEJ1dHRvbiB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBocmVmOiBzdHJpbmc7XG4gICAgbGlua1R5cGU6IHN0cmluZztcbiAgICB0YXJnZXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQzJUeHRJbWdWNFZpZXdNb2RlbCB7XG4gICAgaGFzQ29udGVudDogYm9vbGVhbjtcbiAgICBpbWFnZT86IHtcbiAgICAgICAgc3JjOiBzdHJpbmc7XG4gICAgICAgIGFsdDogc3RyaW5nO1xuICAgIH07XG4gICAgcHJldGl0bGU/OiBzdHJpbmc7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgYnV0dG9uPzogQzJUeHRJbWdWNEJ1dHRvbjtcbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './c2-txt-img-v4.component';
2
+ export * from './c2-txt-img-v4.interfaces';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL2MyLXR4dC1pbWctdjQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jMi10eHQtaW1nLXY0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2MyLXR4dC1pbWctdjQuaW50ZXJmYWNlcyc7XG4iXX0=
@@ -3,6 +3,7 @@ export * from './c2-txt-cta';
3
3
  export * from './c2-txt-cta-des';
4
4
  export * from './c2-txt-img-v2';
5
5
  export * from './c2-txt-img-v3';
6
+ export * from './c2-txt-img-v4';
6
7
  export * from './c2-txt-rrss';
7
8
  export * from './c2-txt-svg-img-cta';
8
9
  export * from './c2-txt-svg-v2';
@@ -76,4 +77,4 @@ export * from './fo-c3-txt-ico-v2';
76
77
  export * from './lis-c3-img-txt-cta';
77
78
  export * from './grid-c2-img-txt';
78
79
  export * from './map-txt-v2';
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYzItaW1nLXR4dC1zdmcnO1xuZXhwb3J0ICogZnJvbSAnLi9jMi10eHQtY3RhJztcbmV4cG9ydCAqIGZyb20gJy4vYzItdHh0LWN0YS1kZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9jMi10eHQtaW1nLXYyJztcbmV4cG9ydCAqIGZyb20gJy4vYzItdHh0LWltZy12Myc7XG5leHBvcnQgKiBmcm9tICcuL2MyLXR4dC1ycnNzJztcbmV4cG9ydCAqIGZyb20gJy4vYzItdHh0LXN2Zy1pbWctY3RhJztcbmV4cG9ydCAqIGZyb20gJy4vYzItdHh0LXN2Zy12Mic7XG5leHBvcnQgKiBmcm9tICcuL2MzLXR4dC1pbWctY3RhJztcbmV4cG9ydCAqIGZyb20gJy4vYzQtYzEtaW1nLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL2M0LWMxLWltZy10eHQtYyc7XG5leHBvcnQgKiBmcm9tICcuL2M0LWMxLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL2M0LWZvLWxpbmstc3ZnJztcbmV4cG9ydCAqIGZyb20gJy4vYzQtZm9yLWMyLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL2M0LWhlLWltZy10eHQnO1xuZXhwb3J0ICogZnJvbSAnLi9jNC1saXMtYzItaW1nLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL2M0LWxpcy1jMi1pbWctdHh0LWMnO1xuZXhwb3J0ICogZnJvbSAnLi9jNC1tZS10eHQtc3ZnLWN0YSc7XG5leHBvcnQgKiBmcm9tICcuL2M0LXNsaS1jMS1pbWctdHh0JztcbmV4cG9ydCAqIGZyb20gJy4vYzQtc2xpLWMyLWltZy10eHQtYyc7XG5leHBvcnQgKiBmcm9tICcuL2M0LXNsaS1jMi10eHQtaW1nJztcbmV4cG9ydCAqIGZyb20gJy4vYzQtdHh0LXN2Zyc7XG5leHBvcnQgKiBmcm9tICcuL2Nhci1jMi10eHQtY3RhJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMyLWltZy10eHQtY3Y0JztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMxLWltZy10eHQnO1xuZXhwb3J0ICogZnJvbSAnLi9saXMtYzItaW1nLXR4dC1jdGEtdjQnO1xuZXhwb3J0ICogZnJvbSAnLi9saXMtYzItdHh0LWltZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpcy1jMi10eHQtaW1nLXN2Zy1jJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMzLXR4dC1pbWctY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saXMtYzQtdHh0LWRlcy1jdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzEtaW1nLXN2Zyc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMi1pbWcnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItaW1nLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMi1pbWctdHh0LWN0YS12Myc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMi1pbWctdHh0LWN2NSc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMi1pbWctdjInO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItdHh0LWNhci1pbWctYyc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMi10eHQtaW1nLXN2Zy1jJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMyLWltZy10eHQtY3RhLXYzJztcbmV4cG9ydCAqIGZyb20gJy4vc2xpLWM0LWltZy10eHQtY3RhJztcbmV4cG9ydCAqIGZyb20gJy4vcG9ydGFkYS1ob21lJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcGxleC1tb2R1bGUtc2xpZGVyLXItdjInO1xuZXhwb3J0ICogZnJvbSAnLi9jYXItY3UtaW1nLXR4dC1jdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9mby1jNC10eHQtc3ZnJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMyLWltZy10eHQtY3RhJztcbmV4cG9ydCAqIGZyb20gJy4vcG9ydGFkYS1ob3RlbC12MSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbGxhcHNhYmxlLWluZm8tdjInO1xuZXhwb3J0ICogZnJvbSAnLi9jb2xsYXBzYWJsZS1pbmZvLXYzJztcbmV4cG9ydCAqIGZyb20gJy4vYWR2YW50YWdlcy1ib3gtdjInO1xuZXhwb3J0ICogZnJvbSAnLi9jMS10eHQnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItaW1nLXR4dC1jdGEtdjQnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItaW1nLXR4dC1yJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMyLWltZy10eHQtY3RhLXYyJztcbmV4cG9ydCAqIGZyb20gJy4vZXF1aXBtZW50LXYyJztcbmV4cG9ydCAqIGZyb20gJy4vaW5uZXItYmFubmVyLXNsaWRlci12Mic7XG5leHBvcnQgKiBmcm9tICcuL2ZvLWMyLWltZy10eHQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3ItYzAtdHh0LWltZy12Yyc7XG5leHBvcnQgKiBmcm9tICcuL21vZHVsby1tZW51LWhvbWUnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItaW1nLXR4dC1sLXYyJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMzLWZpbC1pbWctdHgnO1xuZXhwb3J0ICogZnJvbSAnLi9mYXFzLW1vZHVsZS1yJztcbmV4cG9ydCAqIGZyb20gJy4vZm8tYzAtc3ZnLWxpbmsnO1xuZXhwb3J0ICogZnJvbSAnLi9oZS1jMy1pbWctaWNvJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcGxleC1tb2R1bGUtc2xpZGVyLWwtdjInO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItaW1nLXR4dC1yLXYyJztcbmV4cG9ydCAqIGZyb20gJy4vc2xpLWMyLWltZy10eHQtdjInO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzUtaW1nLXR4dC12Mic7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jNi1pbWctdHh0JztcbmV4cG9ydCAqIGZyb20gJy4vbW9kdWxvLW1lbnUtaG90ZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saXMtYzMtaW1nLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMy1pbWctdHh0JztcbmV4cG9ydCAqIGZyb20gJy4vb2ZmZXItZGV0YWlsLXYyJztcbmV4cG9ydCAqIGZyb20gJy4vZm9yLWMwLXR4dC1pbWctdmgnO1xuZXhwb3J0ICogZnJvbSAnLi90b3AtYzItaW1nLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL2ZvLWMzLXR4dC1pY28tdjInO1xuZXhwb3J0ICogZnJvbSAnLi9saXMtYzMtaW1nLXR4dC1jdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkLWMyLWltZy10eHQnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXAtdHh0LXYyJztcbiJdfQ==
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jMi1pbWctdHh0LXN2Zyc7XG5leHBvcnQgKiBmcm9tICcuL2MyLXR4dC1jdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9jMi10eHQtY3RhLWRlcyc7XG5leHBvcnQgKiBmcm9tICcuL2MyLXR4dC1pbWctdjInO1xuZXhwb3J0ICogZnJvbSAnLi9jMi10eHQtaW1nLXYzJztcbmV4cG9ydCAqIGZyb20gJy4vYzItdHh0LWltZy12NCc7XG5leHBvcnQgKiBmcm9tICcuL2MyLXR4dC1ycnNzJztcbmV4cG9ydCAqIGZyb20gJy4vYzItdHh0LXN2Zy1pbWctY3RhJztcbmV4cG9ydCAqIGZyb20gJy4vYzItdHh0LXN2Zy12Mic7XG5leHBvcnQgKiBmcm9tICcuL2MzLXR4dC1pbWctY3RhJztcbmV4cG9ydCAqIGZyb20gJy4vYzQtYzEtaW1nLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL2M0LWMxLWltZy10eHQtYyc7XG5leHBvcnQgKiBmcm9tICcuL2M0LWMxLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL2M0LWZvLWxpbmstc3ZnJztcbmV4cG9ydCAqIGZyb20gJy4vYzQtZm9yLWMyLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL2M0LWhlLWltZy10eHQnO1xuZXhwb3J0ICogZnJvbSAnLi9jNC1saXMtYzItaW1nLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL2M0LWxpcy1jMi1pbWctdHh0LWMnO1xuZXhwb3J0ICogZnJvbSAnLi9jNC1tZS10eHQtc3ZnLWN0YSc7XG5leHBvcnQgKiBmcm9tICcuL2M0LXNsaS1jMS1pbWctdHh0JztcbmV4cG9ydCAqIGZyb20gJy4vYzQtc2xpLWMyLWltZy10eHQtYyc7XG5leHBvcnQgKiBmcm9tICcuL2M0LXNsaS1jMi10eHQtaW1nJztcbmV4cG9ydCAqIGZyb20gJy4vYzQtdHh0LXN2Zyc7XG5leHBvcnQgKiBmcm9tICcuL2Nhci1jMi10eHQtY3RhJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMyLWltZy10eHQtY3Y0JztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMxLWltZy10eHQnO1xuZXhwb3J0ICogZnJvbSAnLi9saXMtYzItaW1nLXR4dC1jdGEtdjQnO1xuZXhwb3J0ICogZnJvbSAnLi9saXMtYzItdHh0LWltZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpcy1jMi10eHQtaW1nLXN2Zy1jJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMzLXR4dC1pbWctY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saXMtYzQtdHh0LWRlcy1jdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzEtaW1nLXN2Zyc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMi1pbWcnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItaW1nLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMi1pbWctdHh0LWN0YS12Myc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMi1pbWctdHh0LWN2NSc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMi1pbWctdjInO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItdHh0LWNhci1pbWctYyc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMi10eHQtaW1nLXN2Zy1jJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMyLWltZy10eHQtY3RhLXYzJztcbmV4cG9ydCAqIGZyb20gJy4vc2xpLWM0LWltZy10eHQtY3RhJztcbmV4cG9ydCAqIGZyb20gJy4vcG9ydGFkYS1ob21lJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcGxleC1tb2R1bGUtc2xpZGVyLXItdjInO1xuZXhwb3J0ICogZnJvbSAnLi9jYXItY3UtaW1nLXR4dC1jdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9mby1jNC10eHQtc3ZnJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMyLWltZy10eHQtY3RhJztcbmV4cG9ydCAqIGZyb20gJy4vcG9ydGFkYS1ob3RlbC12MSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbGxhcHNhYmxlLWluZm8tdjInO1xuZXhwb3J0ICogZnJvbSAnLi9jb2xsYXBzYWJsZS1pbmZvLXYzJztcbmV4cG9ydCAqIGZyb20gJy4vYWR2YW50YWdlcy1ib3gtdjInO1xuZXhwb3J0ICogZnJvbSAnLi9jMS10eHQnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItaW1nLXR4dC1jdGEtdjQnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItaW1nLXR4dC1yJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMyLWltZy10eHQtY3RhLXYyJztcbmV4cG9ydCAqIGZyb20gJy4vZXF1aXBtZW50LXYyJztcbmV4cG9ydCAqIGZyb20gJy4vaW5uZXItYmFubmVyLXNsaWRlci12Mic7XG5leHBvcnQgKiBmcm9tICcuL2ZvLWMyLWltZy10eHQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3ItYzAtdHh0LWltZy12Yyc7XG5leHBvcnQgKiBmcm9tICcuL21vZHVsby1tZW51LWhvbWUnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItaW1nLXR4dC1sLXYyJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMzLWZpbC1pbWctdHgnO1xuZXhwb3J0ICogZnJvbSAnLi9mYXFzLW1vZHVsZS1yJztcbmV4cG9ydCAqIGZyb20gJy4vZm8tYzAtc3ZnLWxpbmsnO1xuZXhwb3J0ICogZnJvbSAnLi9oZS1jMy1pbWctaWNvJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcGxleC1tb2R1bGUtc2xpZGVyLWwtdjInO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItaW1nLXR4dC1yLXYyJztcbmV4cG9ydCAqIGZyb20gJy4vc2xpLWMyLWltZy10eHQtdjInO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzUtaW1nLXR4dC12Mic7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jNi1pbWctdHh0JztcbmV4cG9ydCAqIGZyb20gJy4vbW9kdWxvLW1lbnUtaG90ZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saXMtYzMtaW1nLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMy1pbWctdHh0JztcbmV4cG9ydCAqIGZyb20gJy4vb2ZmZXItZGV0YWlsLXYyJztcbmV4cG9ydCAqIGZyb20gJy4vZm9yLWMwLXR4dC1pbWctdmgnO1xuZXhwb3J0ICogZnJvbSAnLi90b3AtYzItaW1nLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL2ZvLWMzLXR4dC1pY28tdjInO1xuZXhwb3J0ICogZnJvbSAnLi9saXMtYzMtaW1nLXR4dC1jdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkLWMyLWltZy10eHQnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXAtdHh0LXYyJztcbiJdfQ==
@@ -169,7 +169,8 @@ export class SliC2ImgTxtLV2Component {
169
169
  const hasCTA = !!this.activeButton;
170
170
  const overflowThreshold = totalAvailable - (hasCTA ? CTA_HEIGHT : 0);
171
171
  const availableForText = totalAvailable - TOGGLE_HEIGHT - (hasCTA ? CTA_HEIGHT : 0);
172
- this.textCollapsedHeight = Math.max(availableForText, 0);
172
+ const MIN_TEXT_HEIGHT = 60;
173
+ this.textCollapsedHeight = Math.max(availableForText, MIN_TEXT_HEIGHT);
173
174
  this.textOverflows = descHeight > overflowThreshold;
174
175
  if (!this.textOverflows) {
175
176
  this.collapsedLinks = true;
@@ -437,4 +438,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
437
438
  }], data: [{
438
439
  type: Input
439
440
  }] } });
440
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpLWMyLWltZy10eHQtbC12Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL3NsaS1jMi1pbWctdHh0LWwtdjIvc2xpLWMyLWltZy10eHQtbC12Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL3NsaS1jMi1pbWctdHh0LWwtdjIvc2xpLWMyLWltZy10eHQtbC12Mi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUdILFNBQVMsRUFFVCxNQUFNLEVBQ04sS0FBSyxFQUtMLFdBQVcsRUFHWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw0RUFBNEUsQ0FBQzs7O0FBYTdILE1BQU0sV0FBVyxHQUEwQjtJQUN2QyxZQUFZLEVBQUUseUNBQXlDO0lBQ3ZELFlBQVksRUFBRSxhQUFhO0lBQzNCLE1BQU0sRUFBRTtRQUNKLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLElBQUk7UUFDakIsWUFBWSxFQUFFLGtCQUFrQjtRQUNoQyxRQUFRLEVBQUUsS0FBSztRQUNmLElBQUksRUFBRSxJQUFJO1FBQ1YsUUFBUSxFQUFF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TW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBQTEFURk9STV9JRCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBTd2lwZXIsIHsgQXV0b3BsYXksIEVmZmVjdEZhZGUsIE5hdmlnYXRpb24sIFBhZ2luYXRpb24gfSBmcm9tICdzd2lwZXInO1xuaW1wb3J0IHsgQmFieWxvbkxpbmtUeXBlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGlyZWN0aXZlcy9saW5rLXR5cGUvbGluay10eXBlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCYWJ5bG9uU3dpcGVyQ3NzTG9hZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGlyZWN0aXZlcy9iYWJ5bG9uLXNsaWRlcnMvYmFieWxvbi1zd2lwZXItY3NzLWxvYWRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgQmFieWxvbkJ1dHRvbkksXG4gICAgQmFieWxvbkltYWdlSSxcbiAgICBCYWJ5bG9uSXRlbUksXG4gICAgQmFieWxvbk11bHRpbWVkaWFJLFxuICAgIEJhYnlsb25UZXh0SW5mb0ksXG59IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgICBTbGlDMkltZ1R4dExWMkNvbnRlbnQsXG4gICAgU2xpQzJJbWdUeHRMVjJTbGlkZSxcbn0gZnJvbSAnLi9zbGktYzItaW1nLXR4dC1sLXYyLmludGVyZmFjZXMnO1xuXG5jb25zdCBkZWZhdWx0RGF0YTogU2xpQzJJbWdUeHRMVjJDb250ZW50ID0ge1xuICAgIHNlY3Rpb25DbGFzczogJ3NlY3Rpb24tZ2FsbGVyeSBpbmZvLWxlZnQgbW9kdWxlLXNwYWNlcicsXG4gICAgd3JhcHBlckNsYXNzOiAnYmlnLXdyYXBwZXInLFxuICAgIHNsaWRlcjoge1xuICAgICAgICBuYW1lOiAnanMtc2VjdGlvbi1zbGlkZXInLFxuICAgICAgICBzaG93QnV0dG9uczogdHJ1ZSxcbiAgICAgICAgYnV0dG9uc0NsYXNzOiAnYnRuLXNsaWRlLWNpcmNsZScsXG4gICAgICAgIHNob3dEb3RzOiBmYWxzZSxcbiAgICAgICAgZmFkZTogdHJ1ZSxcbiAgICAgICAgYXV0b3BsYXk6IHRydWUsXG4gICAgICAgIHNsaWRlc1BjOiAxLFxuICAgICAgICBzbGlkZXNMYXB0b3A6IDEsXG4gICAgICAgIHNsaWRlc1RhYmxldDogMSxcbiAgICAgICAgc2xpZGVzTW9iaWxlOiAxLFxuICAgIH0sXG4gICAgbWVkaWE6IHtcbiAgICAgICAgc2xpZGVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlOiAnJyxcbiAgICAgICAgICAgICAgICBkYXRhTGF6eWltZzogJycsXG4gICAgICAgICAgICAgICAgYXJpYUxhYmVsOiAnJyxcbiAgICAgICAgICAgICAgICBkYXRhRmlsZW5hbWU6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICB9LFxuICAgIGluZm86IHtcbiAgICAgICAgc3VidGl0bGU6ICcnLFxuICAgICAgICB0aXRsZTogJycsXG4gICAgICAgIHRleHQ6ICcnLFxuICAgIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NsaS1jMi1pbWctdHh0LWwtdjInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEJhYnlsb25Td2lwZXJDc3NMb2FkZXJEaXJlY3RpdmUsXG4gICAgICAgIEJhYnlsb25MaW5rVHlwZURpcmVjdGl2ZSxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zbGktYzItaW1nLXR4dC1sLXYyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc2xpLWMyLWltZy10eHQtbC12Mi5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWQsXG59KVxuZXhwb3J0IGNsYXNzIFNsaUMySW1nVHh0TFYyQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95XG57XG4gICAgcHJpdmF0ZSBfZGF0YTogU2xpQzJJbWdUeHRMVjJDb250ZW50ID0gZGVmYXVsdERhdGE7XG4gICAgcHJpdmF0ZSBzbGlkZXJJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgdmlld0luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBzd2lwZXJJbnN0YW5jZT86IFN3aXBlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAgIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcjtcbiAgICBwcml2YXRlIG92ZXJmbG93Q2hlY2tTY2hlZHVsZWQgPSBmYWxzZTtcbiAgICBjdXJyZW50U2xpZGUgPSAxO1xuICAgIHRvdGFsU2xpZGVzID0gdGhpcy5fZGF0YS5tZWRpYS5zbGlkZXMubGVuZ3RoO1xuICAgIGFjdGl2ZVRleHRzPzogQmFieWxvblRleHRJbmZvSTtcbiAgICBjb2xsYXBzZWRMaW5rcyA9IHRydWU7XG4gICAgdGV4dENvbGxhcHNlZEhlaWdodCA9IDA7XG4gICAgdGV4dE92ZXJmbG93cyA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgdGV4dHM/OiBCYWJ5bG9uVGV4dEluZm9JO1xuICAgIEBJbnB1dCgpIGl0ZW1zPzogQmFieWxvbkl0ZW1JW107XG4gICAgQElucHV0KCkgbXVsdGltZWRpYT86IEJhYnlsb25NdWx0aW1lZGlhSTtcbiAgICBASW5wdXQoKSBidXR0b25zPzogQmFieWxvbkJ1dHRvbklbXTtcblxuICAgIEBWaWV3Q2hpbGQoJ3NlY3Rpb25TbGlkZXInLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBzZWN0aW9uU2xpZGVyPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnc2xpZGVyUHJldicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHNsaWRlclByZXY/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCdzbGlkZXJOZXh0JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgc2xpZGVyTmV4dD86IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ3NsaWRlclBhZ2luYXRpb24nLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBzbGlkZXJQYWdpbmF0aW9uPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZHJlbignaW1hZ2VSZWYnKVxuICAgIGltYWdlUmVmcz86IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG4gICAgQFZpZXdDaGlsZCgndGV4dENvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHRleHRDb250YWluZXI/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCdoZWFkZXJSZWYnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBoZWFkZXJSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBkYXRhKHZhbHVlOiBTbGlDMkltZ1R4dExWMkNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5fZGF0YSA9IHZhbHVlID8/IGRlZmF1bHREYXRhO1xuICAgICAgICB0aGlzLnN5bmNTbGlkZXNTdGF0ZSgpO1xuICAgICAgICBpZiAodGhpcy5zbGlkZXJJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95U2xpZGVyKCk7XG4gICAgICAgICAgICB0aGlzLmluaXRTbGlkZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBoYXNWYWxpZFNsaWRlcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkodGhpcy5zbGlkZXMpICYmXG4gICAgICAgICAgICB0aGlzLnNsaWRlcy5zb21lKFxuICAgICAgICAgICAgICAgIChzbGlkZSkgPT4gISEoc2xpZGU/LmRhdGFMYXp5aW1nIHx8IHNsaWRlPy5iYWNrZ3JvdW5kSW1hZ2UpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGRhdGEoKTogU2xpQzJJbWdUeHRMVjJDb250ZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gICAgfVxuXG4gICAgZ2V0IHNsaWRlcygpOiBTbGlDMkltZ1R4dExWMlNsaWRlW10ge1xuICAgICAgICBjb25zdCBtdWx0aW1lZGlhU2xpZGVzID0gdGhpcy5tYXBNdWx0aW1lZGlhVG9TbGlkZXMoXG4gICAgICAgICAgICB0aGlzLm11bHRpbWVkaWE/LmltYWdlbmVzXG4gICAgICAgICk7XG4gICAgICAgIGlmIChtdWx0aW1lZGlhU2xpZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBtdWx0aW1lZGlhU2xpZGVzO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXRlbVNsaWRlcyA9IHRoaXMubWFwSXRlbXNUb1NsaWRlcyh0aGlzLml0ZW1zKTtcbiAgICAgICAgaWYgKGl0ZW1TbGlkZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1TbGlkZXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm1lZGlhLnNsaWRlcyA/PyBbXTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zeW5jU2xpZGVzU3RhdGUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVUZXh0cygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3SW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnN5bmNTbGlkZXNTdGF0ZSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZVRleHRzKCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5jaGVja092ZXJmbG93KCk7XG4gICAgICAgIHRoaXMuaW5pdFNsaWRlcigpO1xuXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50SW5mbyA9IHRoaXMudGV4dENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgID8uY2xvc2VzdCgnLndyYXAtY29udGVudC1pbmZvJyk7XG4gICAgICAgICAgICBpZiAoY29udGVudEluZm8pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU92ZXJmbG93Q2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoY29udGVudEluZm8pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBzaG91bGRSZWZyZXNoID1cbiAgICAgICAgICAgICEhY2hhbmdlc1snbXVsdGltZWRpYSddIHx8ICEhY2hhbmdlc1snaXRlbXMnXSB8fCAhIWNoYW5nZXNbJ2RhdGEnXTtcbiAgICAgICAgaWYgKCFzaG91bGRSZWZyZXNoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN5bmNTbGlkZXNTdGF0ZSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZVRleHRzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMudmlld0luaXRpYWxpemVkICYmIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveVNsaWRlcigpO1xuICAgICAgICAgICAgdGhpcy5pbml0U2xpZGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95U2xpZGVyKCk7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB9XG5cbiAgICB0cmFja1NsaWRlKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgZm9ybWF0Q291bnRlcih2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIDwgMTAgPyBgMCR7dmFsdWV9YCA6IGAke3ZhbHVlfWA7XG4gICAgfVxuXG4gICAgdG9nZ2xlVGV4dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb2xsYXBzZWRMaW5rcyA9ICF0aGlzLmNvbGxhcHNlZExpbmtzO1xuICAgIH1cblxuICAgIGdldCBhY3RpdmVTbGlkZUxpbmtMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBzbGlkZXMgPSB0aGlzLnNsaWRlcztcbiAgICAgICAgaWYgKCFzbGlkZXMubGVuZ3RoKSByZXR1cm4gJ1ZlciBtw6FzJztcbiAgICAgICAgY29uc3QgaWR4ID0gTWF0aC5taW4odGhpcy5jdXJyZW50U2xpZGUgLSAxLCBzbGlkZXMubGVuZ3RoIC0gMSk7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBzbGlkZXNbaWR4XT8ubGlua3M/LlswXTtcbiAgICAgICAgcmV0dXJuIGxpbms/LmxhYmVsIHx8IGxpbms/Lm5hbWUgfHwgJ1ZlciBtw6FzJztcbiAgICB9XG5cbiAgICBnZXQgYWN0aXZlQnV0dG9uKCk6IEJhYnlsb25CdXR0b25JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuYnV0dG9ucz8ubGVuZ3RoICYmIHRoaXMuYnV0dG9uc1swXT8udXJsKSByZXR1cm4gdGhpcy5idXR0b25zWzBdO1xuICAgICAgICBjb25zdCBzbGlkZXMgPSB0aGlzLnNsaWRlcztcbiAgICAgICAgaWYgKCFzbGlkZXMubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBpZHggPSBNYXRoLm1pbih0aGlzLmN1cnJlbnRTbGlkZSAtIDEsIHNsaWRlcy5sZW5ndGggLSAxKTtcbiAgICAgICAgcmV0dXJuIHNsaWRlc1tpZHhdPy5idXR0b25zPy5bMF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY2hlZHVsZU92ZXJmbG93Q2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJmbG93Q2hlY2tTY2hlZHVsZWQpIHJldHVybjtcbiAgICAgICAgdGhpcy5vdmVyZmxvd0NoZWNrU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmZsb3dDaGVja1NjaGVkdWxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jaGVja092ZXJmbG93KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tPdmVyZmxvdygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW1hZ2VzID0gdGhpcy5pbWFnZVJlZnM/LnRvQXJyYXkoKTtcbiAgICAgICAgY29uc3QgdGV4dEVsID0gdGhpcy50ZXh0Q29udGFpbmVyPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBoZWFkZXJFbCA9IHRoaXMuaGVhZGVyUmVmPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpZiAoIWltYWdlcz8ubGVuZ3RoIHx8ICF0ZXh0RWwgfHwgIWhlYWRlckVsKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgaWR4ID0gTWF0aC5taW4odGhpcy5jdXJyZW50U2xpZGUgLSAxLCBpbWFnZXMubGVuZ3RoIC0gMSk7XG4gICAgICAgIGNvbnN0IGltYWdlRWwgPSBpbWFnZXNbaWR4XT8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKCFpbWFnZUVsKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgaW1hZ2VIZWlnaHQgPSBpbWFnZUVsLm9mZnNldEhlaWdodDtcbiAgICAgICAgY29uc3QgaGVhZGVySGVpZ2h0ID0gaGVhZGVyRWwub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBjb25zdCBkZXNjSGVpZ2h0ID0gdGV4dEVsLnNjcm9sbEhlaWdodDtcbiAgICAgICAgY29uc3QgdG90YWxBdmFpbGFibGUgPSAoaW1hZ2VIZWlnaHQgLSBoZWFkZXJIZWlnaHQpICogMC45MDtcbiAgICAgICAgY29uc3QgVE9HR0xFX0hFSUdIVCA9IDY1O1xuICAgICAgICBjb25zdCBDVEFfSEVJR0hUID0gMTIwO1xuICAgICAgICBjb25zdCBoYXNDVEEgPSAhIXRoaXMuYWN0aXZlQnV0dG9uO1xuXG4gICAgICAgIGNvbnN0IG92ZXJmbG93VGhyZXNob2xkID0gdG90YWxBdmFpbGFibGUgLSAoaGFzQ1RBID8gQ1RBX0hFSUdIVCA6IDApO1xuICAgICAgICBjb25zdCBhdmFpbGFibGVGb3JUZXh0ID0gdG90YWxBdmFpbGFibGUgLSBUT0dHTEVfSEVJR0hUIC0gKGhhc0NUQSA/IENUQV9IRUlHSFQgOiAwKTtcblxuICAgICAgICB0aGlzLnRleHRDb2xsYXBzZWRIZWlnaHQgPSBNYXRoLm1heChhdmFpbGFibGVGb3JUZXh0LCAwKTtcbiAgICAgICAgdGhpcy50ZXh0T3ZlcmZsb3dzID0gZGVzY0hlaWdodCA+IG92ZXJmbG93VGhyZXNob2xkO1xuICAgICAgICBpZiAoIXRoaXMudGV4dE92ZXJmbG93cykge1xuICAgICAgICAgICAgdGhpcy5jb2xsYXBzZWRMaW5rcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kSW1hZ2Uoc2xpZGU6IFNsaUMySW1nVHh0TFYyU2xpZGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBpbWFnZVVybCA9IHNsaWRlLmRhdGFMYXp5aW1nIHx8IHNsaWRlLmJhY2tncm91bmRJbWFnZTtcbiAgICAgICAgcmV0dXJuIGB1cmwoJHtpbWFnZVVybH0pYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlkZXIoKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuc2xpZGVySW5pdGlhbGl6ZWQgfHxcbiAgICAgICAgICAgIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICAgICAgICAhdGhpcy5zZWN0aW9uU2xpZGVyXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2xpZGVySW5pdGlhbGl6ZWQgfHwgIXRoaXMuc2VjdGlvblNsaWRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2xpZGVzID0gdGhpcy5zbGlkZXM7XG4gICAgICAgICAgICBpZiAoc2xpZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZG9tU2xpZGVzID1cbiAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25TbGlkZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgICAgICAgICAnLnN3aXBlci1zbGlkZSdcbiAgICAgICAgICAgICAgICApLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChkb21TbGlkZXMgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNsaWRlckNvbmZpZyA9IHRoaXMuZGF0YS5zbGlkZXI7XG4gICAgICAgICAgICBjb25zdCBtYXhTbGlkZXNQZXJWaWV3ID0gTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgc2xpZGVyQ29uZmlnLnNsaWRlc1BjLFxuICAgICAgICAgICAgICAgIHNsaWRlckNvbmZpZy5zbGlkZXNMYXB0b3AsXG4gICAgICAgICAgICAgICAgc2xpZGVyQ29uZmlnLnNsaWRlc1RhYmxldCxcbiAgICAgICAgICAgICAgICBzbGlkZXJDb25maWcuc2xpZGVzTW9iaWxlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgaGFzTXVsdGlwbGVTbGlkZXMgPSBzbGlkZXMubGVuZ3RoID4gMTtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZExvb3AgPVxuICAgICAgICAgICAgICAgIGhhc011bHRpcGxlU2xpZGVzICYmIHNsaWRlcy5sZW5ndGggPiBtYXhTbGlkZXNQZXJWaWV3O1xuICAgICAgICAgICAgY29uc3QgaGFzTmF2aWdhdGlvbiA9XG4gICAgICAgICAgICAgICAgaGFzTXVsdGlwbGVTbGlkZXMgJiZcbiAgICAgICAgICAgICAgICBzbGlkZXJDb25maWcuc2hvd0J1dHRvbnMgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlclByZXYgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlck5leHQ7XG4gICAgICAgICAgICBjb25zdCBoYXNQYWdpbmF0aW9uID1cbiAgICAgICAgICAgICAgICBoYXNNdWx0aXBsZVNsaWRlcyAmJlxuICAgICAgICAgICAgICAgIHNsaWRlckNvbmZpZy5zaG93RG90cyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVyUGFnaW5hdGlvbjtcblxuICAgICAgICAgICAgdGhpcy50b3RhbFNsaWRlcyA9IHNsaWRlcy5sZW5ndGg7XG5cbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN3aXBlckluc3RhbmNlID0gbmV3IFN3aXBlcihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9uU2xpZGVyIS5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzOiBbTmF2aWdhdGlvbiwgUGFnaW5hdGlvbiwgQXV0b3BsYXksIEVmZmVjdEZhZGVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogc2xpZGVyQ29uZmlnLnNsaWRlc01vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1Blckdyb3VwOiBzbGlkZXJDb25maWcuc2xpZGVzTW9iaWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlZWQ6IDMwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A6IHNob3VsZExvb3AsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvSGVpZ2h0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWZmZWN0OiAnc2xpZGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFkZUVmZmVjdDogc2xpZGVyQ29uZmlnLmZhZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY3Jvc3NGYWRlOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5OiBzbGlkZXJDb25maWcuYXV0b3BsYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheTogMzAwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlT25JbnRlcmFjdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb246IGhhc05hdmlnYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0RWw6IHRoaXMuc2xpZGVyTmV4dCEubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2RWw6IHRoaXMuc2xpZGVyUHJldiEubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogaGFzUGFnaW5hdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsOiB0aGlzLnNsaWRlclBhZ2luYXRpb24hLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2thYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc2ODoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiBzbGlkZXJDb25maWcuc2xpZGVzVGFibGV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJHcm91cDogc2xpZGVyQ29uZmlnLnNsaWRlc1RhYmxldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyODA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogc2xpZGVyQ29uZmlnLnNsaWRlc0xhcHRvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyR3JvdXA6IHNsaWRlckNvbmZpZy5zbGlkZXNMYXB0b3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjgwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IHNsaWRlckNvbmZpZy5zbGlkZXNQYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyR3JvdXA6IHNsaWRlckNvbmZpZy5zbGlkZXNQYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdDogKHN3aXBlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbFNsaWRlcyA9IHRoaXMuc2xpZGVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gc3dpcGVyPy5yZWFsSW5kZXggPz8gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNsaWRlID0gYWN0aXZlSW5kZXggKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVUZXh0cyhhY3RpdmVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrT3ZlcmZsb3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja092ZXJmbG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUNoYW5nZTogKHN3aXBlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlSW5kZXggPSBzd2lwZXI/LnJlYWxJbmRleCA/PyAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U2xpZGUgPSBhY3RpdmVJbmRleCArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZVRleHRzKGFjdGl2ZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tPdmVyZmxvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU92ZXJmbG93Q2hlY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVySW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveVNsaWRlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnNsaWRlckluaXRpYWxpemVkIHx8ICF0aGlzLnN3aXBlckluc3RhbmNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN3aXBlckluc3RhbmNlLmRlc3Ryb3kodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuc3dpcGVySW5zdGFuY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc2xpZGVySW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bmNTbGlkZXNTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b3RhbFNsaWRlcyA9IHRoaXMuc2xpZGVzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5jdXJyZW50U2xpZGUgPSBNYXRoLm1pbih0aGlzLmN1cnJlbnRTbGlkZSwgdGhpcy50b3RhbFNsaWRlcykgfHwgMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcE11bHRpbWVkaWFUb1NsaWRlcyhcbiAgICAgICAgaW1hZ2VzPzogQmFieWxvbkltYWdlSVtdXG4gICAgKTogU2xpQzJJbWdUeHRMVjJTbGlkZVtdIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGltYWdlcykpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbWFnZXMucmVkdWNlPFNsaUMySW1nVHh0TFYyU2xpZGVbXT4oKGFjYywgaW1hZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNyYyA9IHRoaXMucmVzb2x2ZUltYWdlU3JjKGltYWdlKTtcbiAgICAgICAgICAgIGNvbnN0IGFsdCA9IGltYWdlPy5pbWc/LmFsdCA/PyBpbWFnZT8uYWx0ID8/ICcnO1xuICAgICAgICAgICAgaWYgKCFzcmMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhY2MucHVzaCh7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlOiBzcmMsXG4gICAgICAgICAgICAgICAgYXJpYUxhYmVsOiBhbHQsXG4gICAgICAgICAgICAgICAgZGF0YUZpbGVuYW1lOiBhbHQsXG4gICAgICAgICAgICAgICAgZGF0YUxhenlpbWc6IHNyYyxcbiAgICAgICAgICAgICAgICB0ZXh0czogdGhpcy5leHRyYWN0VGV4dHNGcm9tSW1hZ2UoaW1hZ2UpLFxuICAgICAgICAgICAgICAgIGxpbmtzOiBpbWFnZS5saW5rcyxcbiAgICAgICAgICAgICAgICBidXR0b25zOiBpbWFnZS5idXR0b25zXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIFtdKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcEl0ZW1zVG9TbGlkZXMoXG4gICAgICAgIGl0ZW1zPzogQmFieWxvbkl0ZW1JW10gfCBCYWJ5bG9uSW1hZ2VJW11cbiAgICApOiBTbGlDMkltZ1R4dExWMlNsaWRlW10ge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbXMpIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlyc3QgPSBpdGVtc1swXSBhcyBCYWJ5bG9uSXRlbUkgJiBCYWJ5bG9uSW1hZ2VJO1xuICAgICAgICBpZiAoKGZpcnN0IGFzIEJhYnlsb25JdGVtSSk/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiAoaXRlbXMgYXMgQmFieWxvbkl0ZW1JW10pLmZsYXRNYXAoKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgdGhpcy5tYXBNdWx0aW1lZGlhVG9TbGlkZXMoaXRlbT8ubXVsdGltZWRpYT8uaW1hZ2VuZXMpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWFwTXVsdGltZWRpYVRvU2xpZGVzKGl0ZW1zIGFzIEJhYnlsb25JbWFnZUlbXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNvbHZlSW1hZ2VTcmMoaW1hZ2U6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJhd1NyYyA9XG4gICAgICAgICAgICBpbWFnZT8uaW1nPy5zcmMgPz9cbiAgICAgICAgICAgIGltYWdlPy5zcmMgPz9cbiAgICAgICAgICAgIGltYWdlPy5wYXRoPy53ZWJwID8/XG4gICAgICAgICAgICBpbWFnZT8ucGF0aD8ub3JpZ2luYWwgPz9cbiAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTM2Nl0/LndlYnAgPz9cbiAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/LndlYnAgPz9cbiAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTAyNF0/LndlYnAgPz9cbiAgICAgICAgICAgICcnO1xuXG4gICAgICAgIGlmICghcmF3U3JjIHx8IHR5cGVvZiByYXdTcmMgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICByYXdTcmMuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8XG4gICAgICAgICAgICByYXdTcmMuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSB8fFxuICAgICAgICAgICAgcmF3U3JjLnN0YXJ0c1dpdGgoJy8vJykgfHxcbiAgICAgICAgICAgIHJhd1NyYy5zdGFydHNXaXRoKCdkYXRhOicpIHx8XG4gICAgICAgICAgICByYXdTcmMuc3RhcnRzV2l0aCgnYmxvYjonKSB8fFxuICAgICAgICAgICAgcmF3U3JjLnN0YXJ0c1dpdGgoJy8nKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiByYXdTcmM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYC8ke3Jhd1NyY31gO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQWN0aXZlVGV4dHMoYWN0aXZlSW5kZXg/OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2xpZGVzID0gdGhpcy5zbGlkZXM7XG4gICAgICAgIGlmIChzbGlkZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRleHRzID0gdGhpcy50ZXh0cztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluZGV4ID1cbiAgICAgICAgICAgIHR5cGVvZiBhY3RpdmVJbmRleCA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgICA/IGFjdGl2ZUluZGV4XG4gICAgICAgICAgICAgICAgOiBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWluKHRoaXMuY3VycmVudFNsaWRlIC0gMSwgc2xpZGVzLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICBjb25zdCBzbGlkZVRleHRzID0gc2xpZGVzW2luZGV4XT8udGV4dHM7XG4gICAgICAgIHRoaXMuYWN0aXZlVGV4dHMgPSB0aGlzLmhhc0FueVRleHQoc2xpZGVUZXh0cylcbiAgICAgICAgICAgID8gc2xpZGVUZXh0c1xuICAgICAgICAgICAgOiB0aGlzLnRleHRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzQW55VGV4dCh0ZXh0cz86IEJhYnlsb25UZXh0SW5mb0kpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0ZXh0cykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICAgICAgICB0ZXh0cy5wcmV0aXRsZSB8fFxuICAgICAgICAgICAgICAgIHRleHRzLnN1YnRpdGxlIHx8XG4gICAgICAgICAgICAgICAgdGV4dHMudGl0bGUgfHxcbiAgICAgICAgICAgICAgICB0ZXh0cy5kZXNjcmlwdGlvbiB8fFxuICAgICAgICAgICAgICAgIHRleHRzLnRleHRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dHJhY3RUZXh0c0Zyb21JbWFnZShcbiAgICAgICAgaW1hZ2U6IEJhYnlsb25JbWFnZUlcbiAgICApOiBCYWJ5bG9uVGV4dEluZm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcHJldGl0bGUgPVxuICAgICAgICAgICAgaW1hZ2U/LnByZXRpdGxlID8/XG4gICAgICAgICAgICBpbWFnZT8ubmRQcmV0aXRsZSA/P1xuICAgICAgICAgICAgKGltYWdlIGFzIGFueSk/Lm5kX3ByZXRpdGxlID8/XG4gICAgICAgICAgICAnJztcbiAgICAgICAgY29uc3Qgc3VidGl0bGUgPVxuICAgICAgICAgICAgaW1hZ2U/LnN1YnRpdGxlID8/XG4gICAgICAgICAgICBpbWFnZT8ubmRTdWJ0aXRsZSA/P1xuICAgICAgICAgICAgKGltYWdlIGFzIGFueSk/Lm5kX3N1YnRpdGxlID8/XG4gICAgICAgICAgICAnJztcbiAgICAgICAgY29uc3QgdGl0bGUgPVxuICAgICAgICAgICAgaW1hZ2U/LnRpdGxlID8/IGltYWdlPy5uZFRpdGxlID8/IChpbWFnZSBhcyBhbnkpPy5uZF90aXRsZSA/PyAnJztcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBpbWFnZT8uZGVzY3JpcHRpb24gPz8gJyc7XG5cbiAgICAgICAgY29uc3QgdGV4dHM6IEJhYnlsb25UZXh0SW5mb0kgPSB7XG4gICAgICAgICAgICBzdWJ0aXRsZTogc3VidGl0bGUgfHwgcHJldGl0bGUgfHwgJycsXG4gICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmhhc0FueVRleHQodGV4dHMpID8gdGV4dHMgOiB1bmRlZmluZWQ7XG4gICAgfVxufVxuIiwiICA8c2VjdGlvbiBbYXR0ci5jbGFzc109XCJkYXRhLnNlY3Rpb25DbGFzc1wiICpuZ0lmPVwiaGFzVmFsaWRTbGlkZXNcIj5cbiAgICA8ZGl2IFthdHRyLmNsYXNzXT1cImRhdGEud3JhcHBlckNsYXNzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcC1zZWN0aW9uLWdhbGxlcnkgZXN0aWxvdmFyaWFudGVcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VjdGlvbi1nYWxsZXJ5LWNvbnRlbnQganMtYWN0aXZlLXNsaWRlclwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1zbGlkZXJfbmFtZV09XCJkYXRhLnNsaWRlcj8ubmFtZVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1zbGlkZXJfc2hvd2J0bnNdPVwiZGF0YS5zbGlkZXI/LnNob3dCdXR0b25zXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXNsaWRlcl9idG5zXT1cImRhdGEuc2xpZGVyPy5idXR0b25zQ2xhc3NcIlxuICAgICAgICAgIFthdHRyLmRhdGEtc2xpZGVyX3Nob3dkb3RzXT1cImRhdGEuc2xpZGVyPy5zaG93RG90c1wiXG4gICAgICAgICAgW2F0dHIuZGF0YS1zbGlkZXJfZmFkZV09XCJkYXRhLnNsaWRlcj8uZmFkZVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1zbGlkZXJfYXV0b3BsYXldPVwiZGF0YS5zbGlkZXI/LmF1dG9wbGF5XCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXNsaWRlc19wY109XCJkYXRhLnNsaWRlcj8uc2xpZGVzUGNcIlxuICAgICAgICAgIFthdHRyLmRhdGEtc2xpZGVzX2xhcHRvcF09XCJkYXRhLnNsaWRlcj8uc2xpZGVzTGFwdG9wXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXNsaWRlc190YWJsZXRdPVwiZGF0YS5zbGlkZXI/LnNsaWRlc1RhYmxldFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1zbGlkZXNfbW9iaWxlXT1cImRhdGEuc2xpZGVyPy5zbGlkZXNNb2JpbGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXAtZ2FsbGVyeS1jb250ZW50XCIgKm5nSWY9XCJzbGlkZXM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktY29udGVudC1lbGVtZW50XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnYWxsZXJ5LWNvbnRlbnQtbXVsdGltZWRpYVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwLWNvbnRlbnQtbXVsdGltZWRpYVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tc2xpZGVyLWNvdW50ZXIgY291bnRlclwiICpuZ0lmPVwidG90YWxTbGlkZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGVyLW51bSBhY3R1YWxcIj57eyBmb3JtYXRDb3VudGVyKGN1cnJlbnRTbGlkZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRlci1udW0gdG90YWxcIj57eyBmb3JtYXRDb3VudGVyKHRvdGFsU2xpZGVzKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tc2xpZGVyLWFycm93cyBqcy1zbGlkZXItYXJyb3dzXCIgKm5nSWY9XCJzbGlkZXMubGVuZ3RoID4gMSAmJiBkYXRhLnNsaWRlcj8uc2hvd0J1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBsZXgtaW5mby1tZWRpYV9jb3VudGVyIGNvdW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZXItbnVtIGFjdHVhbFwiPnt7IGZvcm1hdENvdW50ZXIoY3VycmVudFNsaWRlKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZXItbnVtIHRvdGFsXCI+e3sgZm9ybWF0Q291bnRlcih0b3RhbFNsaWRlcykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzd2lwZXItYnRuIHN3aXBlci1hcnJvdyBzd2lwZXItYnV0dG9uLXByZXZcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGEuc2xpZGVyPy5idXR0b25zQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJBbnRlcmlvclwiXG4gICAgICAgICAgICAgICAgICAgICAgI3NsaWRlclByZXZcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzd2lwZXItYnRuIHN3aXBlci1hcnJvdyBzd2lwZXItYnV0dG9uLW5leHRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGEuc2xpZGVyPy5idXR0b25zQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTaWd1aWVudGVcIlxuICAgICAgICAgICAgICAgICAgICAgICNzbGlkZXJOZXh0XG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtbXVsdGltZWRpYS1waG90b3MganMtc2VjdGlvbi1zbGlkZXIgc3dpcGVyXCIgI3NlY3Rpb25TbGlkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2lwZXItd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHNsaWRlIG9mIHNsaWRlczsgdHJhY2sgdHJhY2tTbGlkZSgkaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGltZWRpYS1waG90b3MtZWxlbWVudCBzd2lwZXItc2xpZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXAtcGhvdG9zLWVsZW1lbnQganMtc2VjdGlvbi1hcnJvd3Mtem9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWd1cmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbWFnZVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaG90b3MtZWxlbWVudC1pbWcgcmVzcG9uc2l2ZS1yZXNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImltZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInNsaWRlLmFyaWFMYWJlbCB8fCBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtZmlsZW5hbWVdPVwic2xpZGUuZGF0YUZpbGVuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtc3JjXT1cInNsaWRlLmRhdGFMYXp5aW1nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kSW1hZ2VdPVwiKHNsaWRlPy5kYXRhTGF6eWltZyB8fCBzbGlkZT8uYmFja2dyb3VuZEltYWdlKSA/ICd1cmwoJyArIChzbGlkZS5kYXRhTGF6eWltZyB8fCBzbGlkZS5iYWNrZ3JvdW5kSW1hZ2UpICsgJyknIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmlndXJlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2xpZGVzLmxlbmd0aCA+IDEgJiYgZGF0YS5zbGlkZXI/LnNob3dEb3RzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN3aXBlci1wYWdpbmF0aW9uXCIgI3NsaWRlclBhZ2luYXRpb24+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktY29udGVudC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXAtY29udGVudC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1pbmZvLWJveFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcC1pbmZvLWJveFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgI2hlYWRlclJlZj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlVGV4dHM/LnN1YnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiaW5mby1ib3gtc3VidGl0bGVcIj57eyBhY3RpdmVUZXh0cz8uc3VidGl0bGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZVRleHRzPy50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJpbmZvLWJveC10aXRsZVwiPnt7IGFjdGl2ZVRleHRzPy50aXRsZSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVUZXh0cz8uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAjdGV4dENvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbmZvLWJveC10ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50ZXh0LWNvbGxhcHNlXT1cInRleHRPdmVyZmxvd3MgJiYgY29sbGFwc2VkTGlua3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwidGV4dE92ZXJmbG93cyAmJiBjb2xsYXBzZWRMaW5rcyA/IHRleHRDb2xsYXBzZWRIZWlnaHQgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFjdGl2ZVRleHRzPy5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKHRleHRPdmVyZmxvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaW5mby1ib3gtdG9nZ2xlXCIgKGNsaWNrKT1cInRvZ2dsZVRleHQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sbGFwc2VkTGlua3MgPyBhY3RpdmVTbGlkZUxpbmtMYWJlbCA6ICdPY3VsdGFyJyB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVCdXR0b24/LnVybCAmJiBhY3RpdmVCdXR0b24/LmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWJ1dHRvbkRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm5vLW1hcmdpbl09XCJ0ZXh0T3ZlcmZsb3dzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImFjdGl2ZUJ1dHRvbj8udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJhY3RpdmVCdXR0b24/LmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhcmdldF09XCJhY3RpdmVCdXR0b24/LnRhcmdldCB8fCAnX3NlbGYnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWN0aXZlQnV0dG9uPy50YXJnZXQgfHwgJ19zZWxmJykgPT09ICdfYmxhbmsnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ25vb3BlbmVyIG5vcmVmZXJyZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWN0aXZlQnV0dG9uPy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFjdGl2ZUJ1dHRvbj8ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG5cbiJdfQ==
441
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpLWMyLWltZy10eHQtbC12Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL3NsaS1jMi1pbWctdHh0LWwtdjIvc2xpLWMyLWltZy10eHQtbC12Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL3NsaS1jMi1pbWctdHh0LWwtdjIvc2xpLWMyLWltZy10eHQtbC12Mi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUdILFNBQVMsRUFFVCxNQUFNLEVBQ04sS0FBSyxFQUtMLFdBQVcsRUFHWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw0RUFBNEUsQ0FBQzs7O0FBYTdILE1BQU0sV0FBVyxHQUEwQjtJQUN2QyxZQUFZLEVBQUUseUNBQXlDO0lBQ3ZELFlBQVksRUFBRSxhQUFhO0lBQzNCLE1BQU0sRUFBRTtRQUNKLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLElBQUk7UUFDakIsWUFBWSxFQUFFLGtCQUFrQjtRQUNoQyxRQUFRLEVBQUUsS0FBSztRQUNmLElBQUksRUFBRSxJQUFJO1FBQ1YsUUFBUSxFQUFFLElBQUk7UUFDZCxRQUFRLEVBQUUsQ0FBQztRQUNYLFlBQVksRUFBRSxDQUFDO1FBQ2YsWUFBWSxFQUFFLENBQUM7UUFDZixZQUFZLEVBQUUsQ0FBQztLQUNsQjtJQUNELEtBQUssRUFBRTtRQUNILE1BQU0sRUFBRTtZQUNKO2dCQUNJLGVBQWUsRUFBRSxFQUFFO2dCQUNuQixXQUFXLEVBQUUsRUFBRTtnQkFDZixTQUFTLEVBQUUsRUFBRTtnQkFDYixZQUFZLEVBQUUsRUFBRTthQUNuQjtTQUNKO0tBQ0o7SUFDRCxJQUFJLEVBQUU7UUFDRixRQUFRLEVBQUUsRUFBRTtRQUNaLEtBQUssRUFBRSxFQUFFO1FBQ1QsSUFBSSxFQUFFLEVBQUU7S0FDWDtDQUNKLENBQUM7QUFjRixNQUFNLE9BQU8sdUJBQXVCO0lBcUNoQyxZQUNxQixNQUFjLEVBQ2QsR0FBc0I7UUFEdEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBcENuQyxVQUFLLEdBQTBCLFdBQVcsQ0FBQztRQUMzQyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFZixlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTFDLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUN2QyxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixnQkFBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFFN0MsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsd0JBQW1CLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBeUJuQixDQUFDO0lBRUosSUFDSSxJQUFJLENBQUMsS0FBNEI7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksV0FBVyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztJQUVELElBQUksY0FBYztRQUNkLE9BQU8sQ0FDSCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ1osQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxXQUFXLElBQUksS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUM5RCxDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FDL0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQzVCLENBQUM7UUFDRixJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDN0IsT0FBTyxnQkFBZ0IsQ0FBQztTQUMzQjtRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN2QixPQUFPLFVBQVUsQ0FBQztTQUNyQjtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEIsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDcEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxhQUFhO2dCQUNqRCxFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3BDLElBQUksV0FBVyxFQUFFO2dCQUNiLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsR0FBRyxFQUFFO29CQUMxQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDakMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDNUM7U0FDSjtJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsTUFBTSxhQUFhLEdBQ2YsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNoQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFekIsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM1RCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3ZCLE9BQU8sS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLG9CQUFvQjtRQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksU0FBUyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDWixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8scUJBQXFCO1FBQ3pCLElBQUksSUFBSSxDQUFDLHNCQUFzQjtZQUFFLE9BQU87UUFDeEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztRQUNuQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7WUFDdkIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztZQUNwQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sYUFBYTtRQUNqQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3pDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDO1FBQ2pELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDO1FBQy9DLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFcEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxhQUFhLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRXJCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDekMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUMzQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMzRCxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDekIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRW5DLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxHQUFHLGFBQWEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVwRixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLEdBQUcsaUJBQWlCLENBQUM7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDckIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7U0FDOUI7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQTBCO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQztRQUM1RCxPQUFPLE9BQU8sUUFBUSxHQUFHLENBQUM7SUFDOUIsQ0FBQztJQUVPLFVBQVU7UUFDZCxJQUNJLElBQUksQ0FBQyxpQkFBaUI7WUFDdEIsT0FBTyxNQUFNLEtBQUssV0FBVztZQUM3QixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQ3JCO1lBQ0UsT0FBTztTQUNWO1FBRUQsY0FBYyxDQUFDLEdBQUcsRUFBRTtZQUNoQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQy9DLE9BQU87YUFDVjtZQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDM0IsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDckIsT0FBTzthQUNWO1lBRUQsTUFBTSxTQUFTLEdBQ1gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQzdDLGVBQWUsQ0FDbEIsQ0FBQyxNQUFNLENBQUM7WUFDYixJQUFJLFNBQVMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pCLE9BQU87YUFDVjtZQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3RDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDN0IsWUFBWSxDQUFDLFFBQVEsRUFDckIsWUFBWSxDQUFDLFlBQVksRUFDekIsWUFBWSxDQUFDLFlBQVksRUFDekIsWUFBWSxDQUFDLFlBQVksQ0FDNUIsQ0FBQztZQUNGLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDNUMsTUFBTSxVQUFVLEdBQ1osaUJBQWlCLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQztZQUMxRCxNQUFNLGFBQWEsR0FDZixpQkFBaUI7Z0JBQ2pCLFlBQVksQ0FBQyxXQUFXO2dCQUN4QixJQUFJLENBQUMsVUFBVTtnQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ3BCLE1BQU0sYUFBYSxHQUNmLGlCQUFpQjtnQkFDakIsWUFBWSxDQUFDLFFBQVE7Z0JBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUUxQixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFFakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxNQUFNLENBQzVCLElBQUksQ0FBQyxhQUFjLENBQUMsYUFBYSxFQUNqQztvQkFDSSxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUM7b0JBQ3ZELGFBQWEsRUFBRSxZQUFZLENBQUMsWUFBWTtvQkFDeEMsY0FBYyxFQUFFLFlBQVksQ0FBQyxZQUFZO29CQUN6QyxLQUFLLEVBQUUsR0FBRztvQkFDVixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE1BQU0sRUFBRSxPQUFPO29CQUNmLFVBQVUsRUFBRSxZQUFZLENBQUMsSUFBSTt3QkFDekIsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRTt3QkFDckIsQ0FBQyxDQUFDLFNBQVM7b0JBQ2YsUUFBUSxFQUFFLFlBQVksQ0FBQyxRQUFRO3dCQUMzQixDQUFDLENBQUM7NEJBQ0ksS0FBSyxFQUFFLElBQUk7NEJBQ1gsb0JBQW9CLEVBQUUsS0FBSzt5QkFDOUI7d0JBQ0gsQ0FBQyxDQUFDLEtBQUs7b0JBQ1gsVUFBVSxFQUFFLGFBQWE7d0JBQ3JCLENBQUMsQ0FBQzs0QkFDSSxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVcsQ0FBQyxhQUFhOzRCQUN0QyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVcsQ0FBQyxhQUFhO3lCQUN6Qzt3QkFDSCxDQUFDLENBQUMsS0FBSztvQkFDWCxVQUFVLEVBQUUsYUFBYTt3QkFDckIsQ0FBQyxDQUFDOzRCQUNJLEVBQUUsRUFBRSxJQUFJLENBQUMsZ0JBQWlCLENBQUMsYUFBYTs0QkFDeEMsU0FBUyxFQUFFLElBQUk7eUJBQ2xCO3dCQUNILENBQUMsQ0FBQyxLQUFLO29CQUNYLFdBQVcsRUFBRTt3QkFDVCxHQUFHLEVBQUU7NEJBQ0QsYUFBYSxFQUFFLFlBQVksQ0FBQyxZQUFZOzRCQUN4QyxjQUFjLEVBQUUsWUFBWSxDQUFDLFlBQVk7eUJBQzVDO3dCQUNELElBQUksRUFBRTs0QkFDRixhQUFhLEVBQUUsWUFBWSxDQUFDLFlBQVk7NEJBQ3hDLGNBQWMsRUFBRSxZQUFZLENBQUMsWUFBWTt5QkFDNUM7d0JBQ0QsSUFBSSxFQUFFOzRCQUNGLGFBQWEsRUFBRSxZQUFZLENBQUMsUUFBUTs0QkFDcEMsY0FBYyxFQUFFLFlBQVksQ0FBQyxRQUFRO3lCQUN4QztxQkFDSjtvQkFDRCxFQUFFLEVBQUU7d0JBQ0EsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7NEJBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dDQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO2dDQUN0QyxNQUFNLFdBQVcsR0FBRyxNQUFNLEVBQUUsU0FBUyxJQUFJLENBQUMsQ0FBQztnQ0FDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDO2dDQUNwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7Z0NBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7Z0NBQ3pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDckIscUJBQXFCLENBQUMsR0FBRyxFQUFFO29DQUN2QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0NBQ3pCLENBQUMsQ0FBQyxDQUFDOzRCQUNQLENBQUMsQ0FBQyxDQUFDO3dCQUNQLENBQUM7d0JBQ0QsV0FBVyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7NEJBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQ0FDakIsTUFBTSxXQUFXLEdBQUcsTUFBTSxFQUFFLFNBQVMsSUFBSSxDQUFDLENBQUM7Z0NBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQztnQ0FDcEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO2dDQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dDQUN6QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7NEJBQ3pCLENBQUMsQ0FBQyxDQUFDO3dCQUNQLENBQUM7d0JBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRTs0QkFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0NBQ2pCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDOzRCQUNqQyxDQUFDLENBQUMsQ0FBQzt3QkFDUCxDQUFDO3FCQUNKO2lCQUNKLENBQ0osQ0FBQztnQkFDRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sYUFBYTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNqRCxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRU8sZUFBZTtRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVPLHFCQUFxQixDQUN6QixNQUF3QjtRQUV4QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN4QixPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUF3QixDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN2RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLEtBQUssRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ04sT0FBTyxHQUFHLENBQUM7YUFDZDtZQUVELEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQ0wsZUFBZSxFQUFFLEdBQUc7Z0JBQ3BCLFNBQVMsRUFBRSxHQUFHO2dCQUNkLFlBQVksRUFBRSxHQUFHO2dCQUNqQixXQUFXLEVBQUUsR0FBRztnQkFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7Z0JBQ3hDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztnQkFDbEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2FBQ3pCLENBQUMsQ0FBQztZQUNILE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLGdCQUFnQixDQUNwQixLQUF3QztRQUV4QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM3QyxPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBaUMsQ0FBQztRQUN2RCxJQUFLLEtBQXNCLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7WUFDdkQsT0FBUSxLQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQzlDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUN6RCxDQUFDO1NBQ0w7UUFFRCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUF3QixDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFVO1FBQzlCLE1BQU0sTUFBTSxHQUNSLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRztZQUNmLEtBQUssRUFBRSxHQUFHO1lBQ1YsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJO1lBQ2pCLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUTtZQUNyQixLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSTtZQUMvQixLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSTtZQUMvQixLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSTtZQUMvQixFQUFFLENBQUM7UUFFUCxJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtZQUN2QyxPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsSUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztZQUM1QixNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUM3QixNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUN2QixNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUMxQixNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUMxQixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUN4QjtZQUNFLE9BQU8sTUFBTSxDQUFDO1NBQ2pCO1FBRUQsT0FBTyxJQUFJLE1BQU0sRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxXQUFvQjtRQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzlCLE9BQU87U0FDVjtRQUVELE1BQU0sS0FBSyxHQUNQLE9BQU8sV0FBVyxLQUFLLFFBQVE7WUFDM0IsQ0FBQyxDQUFDLFdBQVc7WUFDYixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDSixDQUFDLEVBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUNyRCxDQUFDO1FBQ1osTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBQzFDLENBQUMsQ0FBQyxVQUFVO1lBQ1osQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUF3QjtRQUN2QyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1IsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxPQUFPLE9BQU8sQ0FDVixLQUFLLENBQUMsUUFBUTtZQUNWLEtBQUssQ0FBQyxRQUFRO1lBQ2QsS0FBSyxDQUFDLEtBQUs7WUFDWCxLQUFLLENBQUMsV0FBVztZQUNqQixLQUFLLENBQUMsSUFBSSxDQUNqQixDQUFDO0lBQ04sQ0FBQztJQUVPLHFCQUFxQixDQUN6QixLQUFvQjtRQUVwQixNQUFNLFFBQVEsR0FDVixLQUFLLEVBQUUsUUFBUTtZQUNmLEtBQUssRUFBRSxVQUFVO1lBQ2hCLEtBQWEsRUFBRSxXQUFXO1lBQzNCLEVBQUUsQ0FBQztRQUNQLE1BQU0sUUFBUSxHQUNWLEtBQUssRUFBRSxRQUFRO1lBQ2YsS0FBSyxFQUFFLFVBQVU7WUFDaEIsS0FBYSxFQUFFLFdBQVc7WUFDM0IsRUFBRSxDQUFDO1FBQ1AsTUFBTSxLQUFLLEdBQ1AsS0FBSyxFQUFFLEtBQUssSUFBSSxLQUFLLEVBQUUsT0FBTyxJQUFLLEtBQWEsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ3JFLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO1FBRTdDLE1BQU0sS0FBSyxHQUFxQjtZQUM1QixRQUFRLEVBQUUsUUFBUSxJQUFJLFFBQVEsSUFBSSxFQUFFO1lBQ3BDLEtBQUs7WUFDTCxXQUFXO1NBQ2QsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdEQsQ0FBQzsrR0E1ZFEsdUJBQXVCO21HQUF2Qix1QkFBdUIsODFCQzlFcEMseXlNQTJIQSx1MGoyQkRyRFEsWUFBWSxpT0FFWix3QkFBd0I7OzRGQU1uQix1QkFBdUI7a0JBWm5DLFNBQVM7K0JBQ0kscUJBQXFCLGNBQ25CLElBQUksV0FDUDt3QkFDTCxZQUFZO3dCQUNaLCtCQUErQjt3QkFDL0Isd0JBQXdCO3FCQUMzQixpQkFHYyxpQkFBaUIsQ0FBQyxRQUFROzJHQW1CaEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFHTixhQUFhO3NCQURaLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHN0MsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRzFDLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUcxQyxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR2hELFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxVQUFVO2dCQUd4QixhQUFhO3NCQURaLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHN0MsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBU3JDLElBQUk7c0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgU3dpcGVyLCB7IEF1dG9wbGF5LCBFZmZlY3RGYWRlLCBOYXZpZ2F0aW9uLCBQYWdpbmF0aW9uIH0gZnJvbSAnc3dpcGVyJztcbmltcG9ydCB7IEJhYnlsb25MaW5rVHlwZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvbGluay10eXBlL2xpbmstdHlwZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQmFieWxvblN3aXBlckNzc0xvYWRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvYmFieWxvbi1zbGlkZXJzL2JhYnlsb24tc3dpcGVyLWNzcy1sb2FkZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gIEJhYnlsb25CdXR0b25JLFxuICAgIEJhYnlsb25JbWFnZUksXG4gICAgQmFieWxvbkl0ZW1JLFxuICAgIEJhYnlsb25NdWx0aW1lZGlhSSxcbiAgICBCYWJ5bG9uVGV4dEluZm9JLFxufSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgU2xpQzJJbWdUeHRMVjJDb250ZW50LFxuICAgIFNsaUMySW1nVHh0TFYyU2xpZGUsXG59IGZyb20gJy4vc2xpLWMyLWltZy10eHQtbC12Mi5pbnRlcmZhY2VzJztcblxuY29uc3QgZGVmYXVsdERhdGE6IFNsaUMySW1nVHh0TFYyQ29udGVudCA9IHtcbiAgICBzZWN0aW9uQ2xhc3M6ICdzZWN0aW9uLWdhbGxlcnkgaW5mby1sZWZ0IG1vZHVsZS1zcGFjZXInLFxuICAgIHdyYXBwZXJDbGFzczogJ2JpZy13cmFwcGVyJyxcbiAgICBzbGlkZXI6IHtcbiAgICAgICAgbmFtZTogJ2pzLXNlY3Rpb24tc2xpZGVyJyxcbiAgICAgICAgc2hvd0J1dHRvbnM6IHRydWUsXG4gICAgICAgIGJ1dHRvbnNDbGFzczogJ2J0bi1zbGlkZS1jaXJjbGUnLFxuICAgICAgICBzaG93RG90czogZmFsc2UsXG4gICAgICAgIGZhZGU6IHRydWUsXG4gICAgICAgIGF1dG9wbGF5OiB0cnVlLFxuICAgICAgICBzbGlkZXNQYzogMSxcbiAgICAgICAgc2xpZGVzTGFwdG9wOiAxLFxuICAgICAgICBzbGlkZXNUYWJsZXQ6IDEsXG4gICAgICAgIHNsaWRlc01vYmlsZTogMSxcbiAgICB9LFxuICAgIG1lZGlhOiB7XG4gICAgICAgIHNsaWRlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogJycsXG4gICAgICAgICAgICAgICAgZGF0YUxhenlpbWc6ICcnLFxuICAgICAgICAgICAgICAgIGFyaWFMYWJlbDogJycsXG4gICAgICAgICAgICAgICAgZGF0YUZpbGVuYW1lOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgfSxcbiAgICBpbmZvOiB7XG4gICAgICAgIHN1YnRpdGxlOiAnJyxcbiAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICB0ZXh0OiAnJyxcbiAgICB9LFxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzbGktYzItaW1nLXR4dC1sLXYyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBCYWJ5bG9uU3dpcGVyQ3NzTG9hZGVyRGlyZWN0aXZlLFxuICAgICAgICBCYWJ5bG9uTGlua1R5cGVEaXJlY3RpdmUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2xpLWMyLWltZy10eHQtbC12Mi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3NsaS1jMi1pbWctdHh0LWwtdjIuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkLFxufSlcbmV4cG9ydCBjbGFzcyBTbGlDMkltZ1R4dExWMkNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICAgIHByaXZhdGUgX2RhdGE6IFNsaUMySW1nVHh0TFYyQ29udGVudCA9IGRlZmF1bHREYXRhO1xuICAgIHByaXZhdGUgc2xpZGVySW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHZpZXdJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgc3dpcGVySW5zdGFuY2U/OiBTd2lwZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gICAgcHJpdmF0ZSBvdmVyZmxvd0NoZWNrU2NoZWR1bGVkID0gZmFsc2U7XG4gICAgY3VycmVudFNsaWRlID0gMTtcbiAgICB0b3RhbFNsaWRlcyA9IHRoaXMuX2RhdGEubWVkaWEuc2xpZGVzLmxlbmd0aDtcbiAgICBhY3RpdmVUZXh0cz86IEJhYnlsb25UZXh0SW5mb0k7XG4gICAgY29sbGFwc2VkTGlua3MgPSB0cnVlO1xuICAgIHRleHRDb2xsYXBzZWRIZWlnaHQgPSAwO1xuICAgIHRleHRPdmVyZmxvd3MgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHRleHRzPzogQmFieWxvblRleHRJbmZvSTtcbiAgICBASW5wdXQoKSBpdGVtcz86IEJhYnlsb25JdGVtSVtdO1xuICAgIEBJbnB1dCgpIG11bHRpbWVkaWE/OiBCYWJ5bG9uTXVsdGltZWRpYUk7XG4gICAgQElucHV0KCkgYnV0dG9ucz86IEJhYnlsb25CdXR0b25JW107XG5cbiAgICBAVmlld0NoaWxkKCdzZWN0aW9uU2xpZGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgc2VjdGlvblNsaWRlcj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ3NsaWRlclByZXYnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBzbGlkZXJQcmV2PzogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnc2xpZGVyTmV4dCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHNsaWRlck5leHQ/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCdzbGlkZXJQYWdpbmF0aW9uJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgc2xpZGVyUGFnaW5hdGlvbj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGRyZW4oJ2ltYWdlUmVmJylcbiAgICBpbWFnZVJlZnM/OiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+O1xuICAgIEBWaWV3Q2hpbGQoJ3RleHRDb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICB0ZXh0Q29udGFpbmVyPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnaGVhZGVyUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgaGVhZGVyUmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZGF0YSh2YWx1ZTogU2xpQzJJbWdUeHRMVjJDb250ZW50KSB7XG4gICAgICAgIHRoaXMuX2RhdGEgPSB2YWx1ZSA/PyBkZWZhdWx0RGF0YTtcbiAgICAgICAgdGhpcy5zeW5jU2xpZGVzU3RhdGUoKTtcbiAgICAgICAgaWYgKHRoaXMuc2xpZGVySW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveVNsaWRlcigpO1xuICAgICAgICAgICAgdGhpcy5pbml0U2xpZGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgaGFzVmFsaWRTbGlkZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KHRoaXMuc2xpZGVzKSAmJlxuICAgICAgICAgICAgdGhpcy5zbGlkZXMuc29tZShcbiAgICAgICAgICAgICAgICAoc2xpZGUpID0+ICEhKHNsaWRlPy5kYXRhTGF6eWltZyB8fCBzbGlkZT8uYmFja2dyb3VuZEltYWdlKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBkYXRhKCk6IFNsaUMySW1nVHh0TFYyQ29udGVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICAgIH1cblxuICAgIGdldCBzbGlkZXMoKTogU2xpQzJJbWdUeHRMVjJTbGlkZVtdIHtcbiAgICAgICAgY29uc3QgbXVsdGltZWRpYVNsaWRlcyA9IHRoaXMubWFwTXVsdGltZWRpYVRvU2xpZGVzKFxuICAgICAgICAgICAgdGhpcy5tdWx0aW1lZGlhPy5pbWFnZW5lc1xuICAgICAgICApO1xuICAgICAgICBpZiAobXVsdGltZWRpYVNsaWRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbXVsdGltZWRpYVNsaWRlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGl0ZW1TbGlkZXMgPSB0aGlzLm1hcEl0ZW1zVG9TbGlkZXModGhpcy5pdGVtcyk7XG4gICAgICAgIGlmIChpdGVtU2xpZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtU2xpZGVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5tZWRpYS5zbGlkZXMgPz8gW107XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3luY1NsaWRlc1N0YXRlKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQWN0aXZlVGV4dHMoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zeW5jU2xpZGVzU3RhdGUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVUZXh0cygpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuY2hlY2tPdmVyZmxvdygpO1xuICAgICAgICB0aGlzLmluaXRTbGlkZXIoKTtcblxuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudEluZm8gPSB0aGlzLnRleHRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgICAgICA/LmNsb3Nlc3QoJy53cmFwLWNvbnRlbnQtaW5mbycpO1xuICAgICAgICAgICAgaWYgKGNvbnRlbnRJbmZvKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2NoZWR1bGVPdmVyZmxvd0NoZWNrKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKGNvbnRlbnRJbmZvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2hvdWxkUmVmcmVzaCA9XG4gICAgICAgICAgICAhIWNoYW5nZXNbJ211bHRpbWVkaWEnXSB8fCAhIWNoYW5nZXNbJ2l0ZW1zJ10gfHwgISFjaGFuZ2VzWydkYXRhJ107XG4gICAgICAgIGlmICghc2hvdWxkUmVmcmVzaCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zeW5jU2xpZGVzU3RhdGUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVUZXh0cygpO1xuXG4gICAgICAgIGlmICh0aGlzLnZpZXdJbml0aWFsaXplZCAmJiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3lTbGlkZXIoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdFNsaWRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveVNsaWRlcigpO1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgfVxuXG4gICAgdHJhY2tTbGlkZShpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIGZvcm1hdENvdW50ZXIodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA8IDEwID8gYDAke3ZhbHVlfWAgOiBgJHt2YWx1ZX1gO1xuICAgIH1cblxuICAgIHRvZ2dsZVRleHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkTGlua3MgPSAhdGhpcy5jb2xsYXBzZWRMaW5rcztcbiAgICB9XG5cbiAgICBnZXQgYWN0aXZlU2xpZGVMaW5rTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qgc2xpZGVzID0gdGhpcy5zbGlkZXM7XG4gICAgICAgIGlmICghc2xpZGVzLmxlbmd0aCkgcmV0dXJuICdWZXIgbcOhcyc7XG4gICAgICAgIGNvbnN0IGlkeCA9IE1hdGgubWluKHRoaXMuY3VycmVudFNsaWRlIC0gMSwgc2xpZGVzLmxlbmd0aCAtIDEpO1xuICAgICAgICBjb25zdCBsaW5rID0gc2xpZGVzW2lkeF0/LmxpbmtzPy5bMF07XG4gICAgICAgIHJldHVybiBsaW5rPy5sYWJlbCB8fCBsaW5rPy5uYW1lIHx8ICdWZXIgbcOhcyc7XG4gICAgfVxuXG4gICAgZ2V0IGFjdGl2ZUJ1dHRvbigpOiBCYWJ5bG9uQnV0dG9uSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLmJ1dHRvbnM/Lmxlbmd0aCAmJiB0aGlzLmJ1dHRvbnNbMF0/LnVybCkgcmV0dXJuIHRoaXMuYnV0dG9uc1swXTtcbiAgICAgICAgY29uc3Qgc2xpZGVzID0gdGhpcy5zbGlkZXM7XG4gICAgICAgIGlmICghc2xpZGVzLmxlbmd0aCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgaWR4ID0gTWF0aC5taW4odGhpcy5jdXJyZW50U2xpZGUgLSAxLCBzbGlkZXMubGVuZ3RoIC0gMSk7XG4gICAgICAgIHJldHVybiBzbGlkZXNbaWR4XT8uYnV0dG9ucz8uWzBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2NoZWR1bGVPdmVyZmxvd0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vdmVyZmxvd0NoZWNrU2NoZWR1bGVkKSByZXR1cm47XG4gICAgICAgIHRoaXMub3ZlcmZsb3dDaGVja1NjaGVkdWxlZCA9IHRydWU7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm92ZXJmbG93Q2hlY2tTY2hlZHVsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tPdmVyZmxvdygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrT3ZlcmZsb3coKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGltYWdlcyA9IHRoaXMuaW1hZ2VSZWZzPy50b0FycmF5KCk7XG4gICAgICAgIGNvbnN0IHRleHRFbCA9IHRoaXMudGV4dENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgaGVhZGVyRWwgPSB0aGlzLmhlYWRlclJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKCFpbWFnZXM/Lmxlbmd0aCB8fCAhdGV4dEVsIHx8ICFoZWFkZXJFbCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGlkeCA9IE1hdGgubWluKHRoaXMuY3VycmVudFNsaWRlIC0gMSwgaW1hZ2VzLmxlbmd0aCAtIDEpO1xuICAgICAgICBjb25zdCBpbWFnZUVsID0gaW1hZ2VzW2lkeF0/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmICghaW1hZ2VFbCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGltYWdlSGVpZ2h0ID0gaW1hZ2VFbC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGhlYWRlckhlaWdodCA9IGhlYWRlckVsLm9mZnNldEhlaWdodDtcbiAgICAgICAgY29uc3QgZGVzY0hlaWdodCA9IHRleHRFbC5zY3JvbGxIZWlnaHQ7XG4gICAgICAgIGNvbnN0IHRvdGFsQXZhaWxhYmxlID0gKGltYWdlSGVpZ2h0IC0gaGVhZGVySGVpZ2h0KSAqIDAuOTA7XG4gICAgICAgIGNvbnN0IFRPR0dMRV9IRUlHSFQgPSA2NTtcbiAgICAgICAgY29uc3QgQ1RBX0hFSUdIVCA9IDEyMDtcbiAgICAgICAgY29uc3QgaGFzQ1RBID0gISF0aGlzLmFjdGl2ZUJ1dHRvbjtcblxuICAgICAgICBjb25zdCBvdmVyZmxvd1RocmVzaG9sZCA9IHRvdGFsQXZhaWxhYmxlIC0gKGhhc0NUQSA/IENUQV9IRUlHSFQgOiAwKTtcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlRm9yVGV4dCA9IHRvdGFsQXZhaWxhYmxlIC0gVE9HR0xFX0hFSUdIVCAtIChoYXNDVEEgPyBDVEFfSEVJR0hUIDogMCk7XG5cbiAgICAgICAgY29uc3QgTUlOX1RFWFRfSEVJR0hUID0gNjA7XG5cbiAgICAgICAgdGhpcy50ZXh0Q29sbGFwc2VkSGVpZ2h0ID0gTWF0aC5tYXgoYXZhaWxhYmxlRm9yVGV4dCwgTUlOX1RFWFRfSEVJR0hUKTtcbiAgICAgICAgdGhpcy50ZXh0T3ZlcmZsb3dzID0gZGVzY0hlaWdodCA+IG92ZXJmbG93VGhyZXNob2xkO1xuICAgICAgICBpZiAoIXRoaXMudGV4dE92ZXJmbG93cykge1xuICAgICAgICAgICAgdGhpcy5jb2xsYXBzZWRMaW5rcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kSW1hZ2Uoc2xpZGU6IFNsaUMySW1nVHh0TFYyU2xpZGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBpbWFnZVVybCA9IHNsaWRlLmRhdGFMYXp5aW1nIHx8IHNsaWRlLmJhY2tncm91bmRJbWFnZTtcbiAgICAgICAgcmV0dXJuIGB1cmwoJHtpbWFnZVVybH0pYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTbGlkZXIoKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuc2xpZGVySW5pdGlhbGl6ZWQgfHxcbiAgICAgICAgICAgIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICAgICAgICAhdGhpcy5zZWN0aW9uU2xpZGVyXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2xpZGVySW5pdGlhbGl6ZWQgfHwgIXRoaXMuc2VjdGlvblNsaWRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2xpZGVzID0gdGhpcy5zbGlkZXM7XG4gICAgICAgICAgICBpZiAoc2xpZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZG9tU2xpZGVzID1cbiAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25TbGlkZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgICAgICAgICAnLnN3aXBlci1zbGlkZSdcbiAgICAgICAgICAgICAgICApLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChkb21TbGlkZXMgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNsaWRlckNvbmZpZyA9IHRoaXMuZGF0YS5zbGlkZXI7XG4gICAgICAgICAgICBjb25zdCBtYXhTbGlkZXNQZXJWaWV3ID0gTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgc2xpZGVyQ29uZmlnLnNsaWRlc1BjLFxuICAgICAgICAgICAgICAgIHNsaWRlckNvbmZpZy5zbGlkZXNMYXB0b3AsXG4gICAgICAgICAgICAgICAgc2xpZGVyQ29uZmlnLnNsaWRlc1RhYmxldCxcbiAgICAgICAgICAgICAgICBzbGlkZXJDb25maWcuc2xpZGVzTW9iaWxlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgaGFzTXVsdGlwbGVTbGlkZXMgPSBzbGlkZXMubGVuZ3RoID4gMTtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZExvb3AgPVxuICAgICAgICAgICAgICAgIGhhc011bHRpcGxlU2xpZGVzICYmIHNsaWRlcy5sZW5ndGggPiBtYXhTbGlkZXNQZXJWaWV3O1xuICAgICAgICAgICAgY29uc3QgaGFzTmF2aWdhdGlvbiA9XG4gICAgICAgICAgICAgICAgaGFzTXVsdGlwbGVTbGlkZXMgJiZcbiAgICAgICAgICAgICAgICBzbGlkZXJDb25maWcuc2hvd0J1dHRvbnMgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlclByZXYgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlck5leHQ7XG4gICAgICAgICAgICBjb25zdCBoYXNQYWdpbmF0aW9uID1cbiAgICAgICAgICAgICAgICBoYXNNdWx0aXBsZVNsaWRlcyAmJlxuICAgICAgICAgICAgICAgIHNsaWRlckNvbmZpZy5zaG93RG90cyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVyUGFnaW5hdGlvbjtcblxuICAgICAgICAgICAgdGhpcy50b3RhbFNsaWRlcyA9IHNsaWRlcy5sZW5ndGg7XG5cbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN3aXBlckluc3RhbmNlID0gbmV3IFN3aXBlcihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9uU2xpZGVyIS5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzOiBbTmF2aWdhdGlvbiwgUGFnaW5hdGlvbiwgQXV0b3BsYXksIEVmZmVjdEZhZGVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogc2xpZGVyQ29uZmlnLnNsaWRlc01vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1Blckdyb3VwOiBzbGlkZXJDb25maWcuc2xpZGVzTW9iaWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlZWQ6IDMwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A6IHNob3VsZExvb3AsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvSGVpZ2h0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWZmZWN0OiAnc2xpZGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFkZUVmZmVjdDogc2xpZGVyQ29uZmlnLmZhZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY3Jvc3NGYWRlOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5OiBzbGlkZXJDb25maWcuYXV0b3BsYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheTogMzAwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlT25JbnRlcmFjdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb246IGhhc05hdmlnYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0RWw6IHRoaXMuc2xpZGVyTmV4dCEubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2RWw6IHRoaXMuc2xpZGVyUHJldiEubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogaGFzUGFnaW5hdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsOiB0aGlzLnNsaWRlclBhZ2luYXRpb24hLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2thYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc2ODoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiBzbGlkZXJDb25maWcuc2xpZGVzVGFibGV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJHcm91cDogc2xpZGVyQ29uZmlnLnNsaWRlc1RhYmxldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyODA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogc2xpZGVyQ29uZmlnLnNsaWRlc0xhcHRvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyR3JvdXA6IHNsaWRlckNvbmZpZy5zbGlkZXNMYXB0b3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjgwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IHNsaWRlckNvbmZpZy5zbGlkZXNQYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyR3JvdXA6IHNsaWRlckNvbmZpZy5zbGlkZXNQYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdDogKHN3aXBlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbFNsaWRlcyA9IHRoaXMuc2xpZGVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gc3dpcGVyPy5yZWFsSW5kZXggPz8gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNsaWRlID0gYWN0aXZlSW5kZXggKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVUZXh0cyhhY3RpdmVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrT3ZlcmZsb3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja092ZXJmbG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUNoYW5nZTogKHN3aXBlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlSW5kZXggPSBzd2lwZXI/LnJlYWxJbmRleCA/PyAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U2xpZGUgPSBhY3RpdmVJbmRleCArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZVRleHRzKGFjdGl2ZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tPdmVyZmxvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU92ZXJmbG93Q2hlY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVySW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveVNsaWRlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnNsaWRlckluaXRpYWxpemVkIHx8ICF0aGlzLnN3aXBlckluc3RhbmNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN3aXBlckluc3RhbmNlLmRlc3Ryb3kodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuc3dpcGVySW5zdGFuY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc2xpZGVySW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bmNTbGlkZXNTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b3RhbFNsaWRlcyA9IHRoaXMuc2xpZGVzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5jdXJyZW50U2xpZGUgPSBNYXRoLm1pbih0aGlzLmN1cnJlbnRTbGlkZSwgdGhpcy50b3RhbFNsaWRlcykgfHwgMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcE11bHRpbWVkaWFUb1NsaWRlcyhcbiAgICAgICAgaW1hZ2VzPzogQmFieWxvbkltYWdlSVtdXG4gICAgKTogU2xpQzJJbWdUeHRMVjJTbGlkZVtdIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGltYWdlcykpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbWFnZXMucmVkdWNlPFNsaUMySW1nVHh0TFYyU2xpZGVbXT4oKGFjYywgaW1hZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNyYyA9IHRoaXMucmVzb2x2ZUltYWdlU3JjKGltYWdlKTtcbiAgICAgICAgICAgIGNvbnN0IGFsdCA9IGltYWdlPy5pbWc/LmFsdCA/PyBpbWFnZT8uYWx0ID8/ICcnO1xuICAgICAgICAgICAgaWYgKCFzcmMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhY2MucHVzaCh7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlOiBzcmMsXG4gICAgICAgICAgICAgICAgYXJpYUxhYmVsOiBhbHQsXG4gICAgICAgICAgICAgICAgZGF0YUZpbGVuYW1lOiBhbHQsXG4gICAgICAgICAgICAgICAgZGF0YUxhenlpbWc6IHNyYyxcbiAgICAgICAgICAgICAgICB0ZXh0czogdGhpcy5leHRyYWN0VGV4dHNGcm9tSW1hZ2UoaW1hZ2UpLFxuICAgICAgICAgICAgICAgIGxpbmtzOiBpbWFnZS5saW5rcyxcbiAgICAgICAgICAgICAgICBidXR0b25zOiBpbWFnZS5idXR0b25zXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIFtdKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcEl0ZW1zVG9TbGlkZXMoXG4gICAgICAgIGl0ZW1zPzogQmFieWxvbkl0ZW1JW10gfCBCYWJ5bG9uSW1hZ2VJW11cbiAgICApOiBTbGlDMkltZ1R4dExWMlNsaWRlW10ge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbXMpIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlyc3QgPSBpdGVtc1swXSBhcyBCYWJ5bG9uSXRlbUkgJiBCYWJ5bG9uSW1hZ2VJO1xuICAgICAgICBpZiAoKGZpcnN0IGFzIEJhYnlsb25JdGVtSSk/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiAoaXRlbXMgYXMgQmFieWxvbkl0ZW1JW10pLmZsYXRNYXAoKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgdGhpcy5tYXBNdWx0aW1lZGlhVG9TbGlkZXMoaXRlbT8ubXVsdGltZWRpYT8uaW1hZ2VuZXMpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWFwTXVsdGltZWRpYVRvU2xpZGVzKGl0ZW1zIGFzIEJhYnlsb25JbWFnZUlbXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNvbHZlSW1hZ2VTcmMoaW1hZ2U6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJhd1NyYyA9XG4gICAgICAgICAgICBpbWFnZT8uaW1nPy5zcmMgPz9cbiAgICAgICAgICAgIGltYWdlPy5zcmMgPz9cbiAgICAgICAgICAgIGltYWdlPy5wYXRoPy53ZWJwID8/XG4gICAgICAgICAgICBpbWFnZT8ucGF0aD8ub3JpZ2luYWwgPz9cbiAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTM2Nl0/LndlYnAgPz9cbiAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/LndlYnAgPz9cbiAgICAgICAgICAgIGltYWdlPy50aHVtYm5haWxzPy5bMTAyNF0/LndlYnAgPz9cbiAgICAgICAgICAgICcnO1xuXG4gICAgICAgIGlmICghcmF3U3JjIHx8IHR5cGVvZiByYXdTcmMgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICByYXdTcmMuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8XG4gICAgICAgICAgICByYXdTcmMuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSB8fFxuICAgICAgICAgICAgcmF3U3JjLnN0YXJ0c1dpdGgoJy8vJykgfHxcbiAgICAgICAgICAgIHJhd1NyYy5zdGFydHNXaXRoKCdkYXRhOicpIHx8XG4gICAgICAgICAgICByYXdTcmMuc3RhcnRzV2l0aCgnYmxvYjonKSB8fFxuICAgICAgICAgICAgcmF3U3JjLnN0YXJ0c1dpdGgoJy8nKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiByYXdTcmM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYC8ke3Jhd1NyY31gO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQWN0aXZlVGV4dHMoYWN0aXZlSW5kZXg/OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2xpZGVzID0gdGhpcy5zbGlkZXM7XG4gICAgICAgIGlmIChzbGlkZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRleHRzID0gdGhpcy50ZXh0cztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluZGV4ID1cbiAgICAgICAgICAgIHR5cGVvZiBhY3RpdmVJbmRleCA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgICA/IGFjdGl2ZUluZGV4XG4gICAgICAgICAgICAgICAgOiBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWluKHRoaXMuY3VycmVudFNsaWRlIC0gMSwgc2xpZGVzLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICBjb25zdCBzbGlkZVRleHRzID0gc2xpZGVzW2luZGV4XT8udGV4dHM7XG4gICAgICAgIHRoaXMuYWN0aXZlVGV4dHMgPSB0aGlzLmhhc0FueVRleHQoc2xpZGVUZXh0cylcbiAgICAgICAgICAgID8gc2xpZGVUZXh0c1xuICAgICAgICAgICAgOiB0aGlzLnRleHRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzQW55VGV4dCh0ZXh0cz86IEJhYnlsb25UZXh0SW5mb0kpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0ZXh0cykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICAgICAgICB0ZXh0cy5wcmV0aXRsZSB8fFxuICAgICAgICAgICAgICAgIHRleHRzLnN1YnRpdGxlIHx8XG4gICAgICAgICAgICAgICAgdGV4dHMudGl0bGUgfHxcbiAgICAgICAgICAgICAgICB0ZXh0cy5kZXNjcmlwdGlvbiB8fFxuICAgICAgICAgICAgICAgIHRleHRzLnRleHRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dHJhY3RUZXh0c0Zyb21JbWFnZShcbiAgICAgICAgaW1hZ2U6IEJhYnlsb25JbWFnZUlcbiAgICApOiBCYWJ5bG9uVGV4dEluZm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcHJldGl0bGUgPVxuICAgICAgICAgICAgaW1hZ2U/LnByZXRpdGxlID8/XG4gICAgICAgICAgICBpbWFnZT8ubmRQcmV0aXRsZSA/P1xuICAgICAgICAgICAgKGltYWdlIGFzIGFueSk/Lm5kX3ByZXRpdGxlID8/XG4gICAgICAgICAgICAnJztcbiAgICAgICAgY29uc3Qgc3VidGl0bGUgPVxuICAgICAgICAgICAgaW1hZ2U/LnN1YnRpdGxlID8/XG4gICAgICAgICAgICBpbWFnZT8ubmRTdWJ0aXRsZSA/P1xuICAgICAgICAgICAgKGltYWdlIGFzIGFueSk/Lm5kX3N1YnRpdGxlID8/XG4gICAgICAgICAgICAnJztcbiAgICAgICAgY29uc3QgdGl0bGUgPVxuICAgICAgICAgICAgaW1hZ2U/LnRpdGxlID8/IGltYWdlPy5uZFRpdGxlID8/IChpbWFnZSBhcyBhbnkpPy5uZF90aXRsZSA/PyAnJztcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBpbWFnZT8uZGVzY3JpcHRpb24gPz8gJyc7XG5cbiAgICAgICAgY29uc3QgdGV4dHM6IEJhYnlsb25UZXh0SW5mb0kgPSB7XG4gICAgICAgICAgICBzdWJ0aXRsZTogc3VidGl0bGUgfHwgcHJldGl0bGUgfHwgJycsXG4gICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmhhc0FueVRleHQodGV4dHMpID8gdGV4dHMgOiB1bmRlZmluZWQ7XG4gICAgfVxufVxuIiwiICA8c2VjdGlvbiBbYXR0ci5jbGFzc109XCJkYXRhLnNlY3Rpb25DbGFzc1wiICpuZ0lmPVwiaGFzVmFsaWRTbGlkZXNcIj5cbiAgICA8ZGl2IFthdHRyLmNsYXNzXT1cImRhdGEud3JhcHBlckNsYXNzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcC1zZWN0aW9uLWdhbGxlcnkgZXN0aWxvdmFyaWFudGVcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VjdGlvbi1nYWxsZXJ5LWNvbnRlbnQganMtYWN0aXZlLXNsaWRlclwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1zbGlkZXJfbmFtZV09XCJkYXRhLnNsaWRlcj8ubmFtZVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1zbGlkZXJfc2hvd2J0bnNdPVwiZGF0YS5zbGlkZXI/LnNob3dCdXR0b25zXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXNsaWRlcl9idG5zXT1cImRhdGEuc2xpZGVyPy5idXR0b25zQ2xhc3NcIlxuICAgICAgICAgIFthdHRyLmRhdGEtc2xpZGVyX3Nob3dkb3RzXT1cImRhdGEuc2xpZGVyPy5zaG93RG90c1wiXG4gICAgICAgICAgW2F0dHIuZGF0YS1zbGlkZXJfZmFkZV09XCJkYXRhLnNsaWRlcj8uZmFkZVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1zbGlkZXJfYXV0b3BsYXldPVwiZGF0YS5zbGlkZXI/LmF1dG9wbGF5XCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXNsaWRlc19wY109XCJkYXRhLnNsaWRlcj8uc2xpZGVzUGNcIlxuICAgICAgICAgIFthdHRyLmRhdGEtc2xpZGVzX2xhcHRvcF09XCJkYXRhLnNsaWRlcj8uc2xpZGVzTGFwdG9wXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXNsaWRlc190YWJsZXRdPVwiZGF0YS5zbGlkZXI/LnNsaWRlc1RhYmxldFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1zbGlkZXNfbW9iaWxlXT1cImRhdGEuc2xpZGVyPy5zbGlkZXNNb2JpbGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXAtZ2FsbGVyeS1jb250ZW50XCIgKm5nSWY9XCJzbGlkZXM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktY29udGVudC1lbGVtZW50XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnYWxsZXJ5LWNvbnRlbnQtbXVsdGltZWRpYVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwLWNvbnRlbnQtbXVsdGltZWRpYVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tc2xpZGVyLWNvdW50ZXIgY291bnRlclwiICpuZ0lmPVwidG90YWxTbGlkZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGVyLW51bSBhY3R1YWxcIj57eyBmb3JtYXRDb3VudGVyKGN1cnJlbnRTbGlkZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRlci1udW0gdG90YWxcIj57eyBmb3JtYXRDb3VudGVyKHRvdGFsU2xpZGVzKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tc2xpZGVyLWFycm93cyBqcy1zbGlkZXItYXJyb3dzXCIgKm5nSWY9XCJzbGlkZXMubGVuZ3RoID4gMSAmJiBkYXRhLnNsaWRlcj8uc2hvd0J1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBsZXgtaW5mby1tZWRpYV9jb3VudGVyIGNvdW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZXItbnVtIGFjdHVhbFwiPnt7IGZvcm1hdENvdW50ZXIoY3VycmVudFNsaWRlKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZXItbnVtIHRvdGFsXCI+e3sgZm9ybWF0Q291bnRlcih0b3RhbFNsaWRlcykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzd2lwZXItYnRuIHN3aXBlci1hcnJvdyBzd2lwZXItYnV0dG9uLXByZXZcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGEuc2xpZGVyPy5idXR0b25zQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJBbnRlcmlvclwiXG4gICAgICAgICAgICAgICAgICAgICAgI3NsaWRlclByZXZcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzd2lwZXItYnRuIHN3aXBlci1hcnJvdyBzd2lwZXItYnV0dG9uLW5leHRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGEuc2xpZGVyPy5idXR0b25zQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTaWd1aWVudGVcIlxuICAgICAgICAgICAgICAgICAgICAgICNzbGlkZXJOZXh0XG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtbXVsdGltZWRpYS1waG90b3MganMtc2VjdGlvbi1zbGlkZXIgc3dpcGVyXCIgI3NlY3Rpb25TbGlkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2lwZXItd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHNsaWRlIG9mIHNsaWRlczsgdHJhY2sgdHJhY2tTbGlkZSgkaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGltZWRpYS1waG90b3MtZWxlbWVudCBzd2lwZXItc2xpZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXAtcGhvdG9zLWVsZW1lbnQganMtc2VjdGlvbi1hcnJvd3Mtem9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWd1cmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbWFnZVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaG90b3MtZWxlbWVudC1pbWcgcmVzcG9uc2l2ZS1yZXNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImltZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInNsaWRlLmFyaWFMYWJlbCB8fCBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtZmlsZW5hbWVdPVwic2xpZGUuZGF0YUZpbGVuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtc3JjXT1cInNsaWRlLmRhdGFMYXp5aW1nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kSW1hZ2VdPVwiKHNsaWRlPy5kYXRhTGF6eWltZyB8fCBzbGlkZT8uYmFja2dyb3VuZEltYWdlKSA/ICd1cmwoJyArIChzbGlkZS5kYXRhTGF6eWltZyB8fCBzbGlkZS5iYWNrZ3JvdW5kSW1hZ2UpICsgJyknIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmlndXJlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2xpZGVzLmxlbmd0aCA+IDEgJiYgZGF0YS5zbGlkZXI/LnNob3dEb3RzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN3aXBlci1wYWdpbmF0aW9uXCIgI3NsaWRlclBhZ2luYXRpb24+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktY29udGVudC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXAtY29udGVudC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1pbmZvLWJveFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcC1pbmZvLWJveFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgI2hlYWRlclJlZj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlVGV4dHM/LnN1YnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiaW5mby1ib3gtc3VidGl0bGVcIj57eyBhY3RpdmVUZXh0cz8uc3VidGl0bGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZVRleHRzPy50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJpbmZvLWJveC10aXRsZVwiPnt7IGFjdGl2ZVRleHRzPy50aXRsZSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVUZXh0cz8uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAjdGV4dENvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbmZvLWJveC10ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50ZXh0LWNvbGxhcHNlXT1cInRleHRPdmVyZmxvd3MgJiYgY29sbGFwc2VkTGlua3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwidGV4dE92ZXJmbG93cyAmJiBjb2xsYXBzZWRMaW5rcyA/IHRleHRDb2xsYXBzZWRIZWlnaHQgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFjdGl2ZVRleHRzPy5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKHRleHRPdmVyZmxvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaW5mby1ib3gtdG9nZ2xlXCIgKGNsaWNrKT1cInRvZ2dsZVRleHQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sbGFwc2VkTGlua3MgPyBhY3RpdmVTbGlkZUxpbmtMYWJlbCA6ICdPY3VsdGFyJyB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVCdXR0b24/LnVybCAmJiBhY3RpdmVCdXR0b24/LmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWJ1dHRvbkRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm5vLW1hcmdpbl09XCJ0ZXh0T3ZlcmZsb3dzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImFjdGl2ZUJ1dHRvbj8udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJhY3RpdmVCdXR0b24/LmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhcmdldF09XCJhY3RpdmVCdXR0b24/LnRhcmdldCB8fCAnX3NlbGYnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWN0aXZlQnV0dG9uPy50YXJnZXQgfHwgJ19zZWxmJykgPT09ICdfYmxhbmsnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ25vb3BlbmVyIG5vcmVmZXJyZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWN0aXZlQnV0dG9uPy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFjdGl2ZUJ1dHRvbj8ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG5cbiJdfQ==