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.
- package/esm2022/lib/components/external/core/c2-txt-img-v4/c2-txt-img-v4.component.mjs +162 -0
- package/esm2022/lib/components/external/core/c2-txt-img-v4/c2-txt-img-v4.interfaces.mjs +2 -0
- package/esm2022/lib/components/external/core/c2-txt-img-v4/index.mjs +3 -0
- package/esm2022/lib/components/external/core/index.mjs +2 -1
- package/esm2022/lib/components/external/core/sli-c2-img-txt-l-v2/sli-c2-img-txt-l-v2.component.mjs +3 -2
- package/esm2022/lib/components/external/core/sli-c2-img-txt-r-v2/sli-c2-img-txt-r-v2.component.mjs +3 -2
- package/fesm2022/ctt-babylon.mjs +162 -3
- package/fesm2022/ctt-babylon.mjs.map +1 -1
- package/lib/components/external/core/c2-txt-img-v4/c2-txt-img-v4.component.d.ts +26 -0
- package/lib/components/external/core/c2-txt-img-v4/c2-txt-img-v4.interfaces.d.ts +37 -0
- package/lib/components/external/core/c2-txt-img-v4/index.d.ts +2 -0
- package/lib/components/external/core/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -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,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jMi1pbWctdHh0LXN2Zyc7XG5leHBvcnQgKiBmcm9tICcuL2MyLXR4dC1jdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9jMi10eHQtY3RhLWRlcyc7XG5leHBvcnQgKiBmcm9tICcuL2MyLXR4dC1pbWctdjInO1xuZXhwb3J0ICogZnJvbSAnLi9jMi10eHQtaW1nLXYzJztcbmV4cG9ydCAqIGZyb20gJy4vYzItdHh0LWltZy12NCc7XG5leHBvcnQgKiBmcm9tICcuL2MyLXR4dC1ycnNzJztcbmV4cG9ydCAqIGZyb20gJy4vYzItdHh0LXN2Zy1pbWctY3RhJztcbmV4cG9ydCAqIGZyb20gJy4vYzItdHh0LXN2Zy12Mic7XG5leHBvcnQgKiBmcm9tICcuL2MzLXR4dC1pbWctY3RhJztcbmV4cG9ydCAqIGZyb20gJy4vYzQtYzEtaW1nLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL2M0LWMxLWltZy10eHQtYyc7XG5leHBvcnQgKiBmcm9tICcuL2M0LWMxLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL2M0LWZvLWxpbmstc3ZnJztcbmV4cG9ydCAqIGZyb20gJy4vYzQtZm9yLWMyLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL2M0LWhlLWltZy10eHQnO1xuZXhwb3J0ICogZnJvbSAnLi9jNC1saXMtYzItaW1nLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL2M0LWxpcy1jMi1pbWctdHh0LWMnO1xuZXhwb3J0ICogZnJvbSAnLi9jNC1tZS10eHQtc3ZnLWN0YSc7XG5leHBvcnQgKiBmcm9tICcuL2M0LXNsaS1jMS1pbWctdHh0JztcbmV4cG9ydCAqIGZyb20gJy4vYzQtc2xpLWMyLWltZy10eHQtYyc7XG5leHBvcnQgKiBmcm9tICcuL2M0LXNsaS1jMi10eHQtaW1nJztcbmV4cG9ydCAqIGZyb20gJy4vYzQtdHh0LXN2Zyc7XG5leHBvcnQgKiBmcm9tICcuL2Nhci1jMi10eHQtY3RhJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMyLWltZy10eHQtY3Y0JztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMxLWltZy10eHQnO1xuZXhwb3J0ICogZnJvbSAnLi9saXMtYzItaW1nLXR4dC1jdGEtdjQnO1xuZXhwb3J0ICogZnJvbSAnLi9saXMtYzItdHh0LWltZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpcy1jMi10eHQtaW1nLXN2Zy1jJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMzLXR4dC1pbWctY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saXMtYzQtdHh0LWRlcy1jdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzEtaW1nLXN2Zyc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMi1pbWcnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItaW1nLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMi1pbWctdHh0LWN0YS12Myc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMi1pbWctdHh0LWN2NSc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMi1pbWctdjInO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItdHh0LWNhci1pbWctYyc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMi10eHQtaW1nLXN2Zy1jJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMyLWltZy10eHQtY3RhLXYzJztcbmV4cG9ydCAqIGZyb20gJy4vc2xpLWM0LWltZy10eHQtY3RhJztcbmV4cG9ydCAqIGZyb20gJy4vcG9ydGFkYS1ob21lJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcGxleC1tb2R1bGUtc2xpZGVyLXItdjInO1xuZXhwb3J0ICogZnJvbSAnLi9jYXItY3UtaW1nLXR4dC1jdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9mby1jNC10eHQtc3ZnJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMyLWltZy10eHQtY3RhJztcbmV4cG9ydCAqIGZyb20gJy4vcG9ydGFkYS1ob3RlbC12MSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbGxhcHNhYmxlLWluZm8tdjInO1xuZXhwb3J0ICogZnJvbSAnLi9jb2xsYXBzYWJsZS1pbmZvLXYzJztcbmV4cG9ydCAqIGZyb20gJy4vYWR2YW50YWdlcy1ib3gtdjInO1xuZXhwb3J0ICogZnJvbSAnLi9jMS10eHQnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItaW1nLXR4dC1jdGEtdjQnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItaW1nLXR4dC1yJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMyLWltZy10eHQtY3RhLXYyJztcbmV4cG9ydCAqIGZyb20gJy4vZXF1aXBtZW50LXYyJztcbmV4cG9ydCAqIGZyb20gJy4vaW5uZXItYmFubmVyLXNsaWRlci12Mic7XG5leHBvcnQgKiBmcm9tICcuL2ZvLWMyLWltZy10eHQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3ItYzAtdHh0LWltZy12Yyc7XG5leHBvcnQgKiBmcm9tICcuL21vZHVsby1tZW51LWhvbWUnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItaW1nLXR4dC1sLXYyJztcbmV4cG9ydCAqIGZyb20gJy4vbGlzLWMzLWZpbC1pbWctdHgnO1xuZXhwb3J0ICogZnJvbSAnLi9mYXFzLW1vZHVsZS1yJztcbmV4cG9ydCAqIGZyb20gJy4vZm8tYzAtc3ZnLWxpbmsnO1xuZXhwb3J0ICogZnJvbSAnLi9oZS1jMy1pbWctaWNvJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcGxleC1tb2R1bGUtc2xpZGVyLWwtdjInO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzItaW1nLXR4dC1yLXYyJztcbmV4cG9ydCAqIGZyb20gJy4vc2xpLWMyLWltZy10eHQtdjInO1xuZXhwb3J0ICogZnJvbSAnLi9zbGktYzUtaW1nLXR4dC12Mic7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jNi1pbWctdHh0JztcbmV4cG9ydCAqIGZyb20gJy4vbW9kdWxvLW1lbnUtaG90ZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saXMtYzMtaW1nLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL3NsaS1jMy1pbWctdHh0JztcbmV4cG9ydCAqIGZyb20gJy4vb2ZmZXItZGV0YWlsLXYyJztcbmV4cG9ydCAqIGZyb20gJy4vZm9yLWMwLXR4dC1pbWctdmgnO1xuZXhwb3J0ICogZnJvbSAnLi90b3AtYzItaW1nLXR4dCc7XG5leHBvcnQgKiBmcm9tICcuL2ZvLWMzLXR4dC1pY28tdjInO1xuZXhwb3J0ICogZnJvbSAnLi9saXMtYzMtaW1nLXR4dC1jdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkLWMyLWltZy10eHQnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXAtdHh0LXYyJztcbiJdfQ==
|
package/esm2022/lib/components/external/core/sli-c2-img-txt-l-v2/sli-c2-img-txt-l-v2.component.mjs
CHANGED
|
@@ -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
|
-
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpLWMyLWltZy10eHQtbC12Mi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL3NsaS1jMi1pbWctdHh0LWwtdjIvc2xpLWMyLWltZy10eHQtbC12Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL3NsaS1jMi1pbWctdHh0LWwtdjIvc2xpLWMyLWltZy10eHQtbC12Mi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUdILFNBQVMsRUFFVCxNQUFNLEVBQ04sS0FBSyxFQUtMLFdBQVcsRUFHWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw0RUFBNEUsQ0FBQzs7O0FBYTdILE1BQU0sV0FBVyxHQUEwQjtJQUN2QyxZQUFZLEVBQUUseUNBQXlDO0lBQ3ZELFlBQVksRUFBRSxhQUFhO0lBQzNCLE1BQU0sRUFBRTtRQUNKLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLElBQUk7UUFDakIsWUFBWSxFQUFFLGtCQUFrQjtRQUNoQyxRQUFRLEVBQUUsS0FBSztRQUNmLElBQUksRUFBRSxJQUFJO1FBQ1YsUUFBUSxFQUFF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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgU3dpcGVyLCB7IEF1dG9wbGF5LCBFZmZlY3RGYWRlLCBOYXZpZ2F0aW9uLCBQYWdpbmF0aW9uIH0gZnJvbSAnc3dpcGVyJztcbmltcG9ydCB7IEJhYnlsb25MaW5rVHlwZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvbGluay10eXBlL2xpbmstdHlwZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQmFieWxvblN3aXBlckNzc0xvYWRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvYmFieWxvbi1zbGlkZXJzL2JhYnlsb24tc3dpcGVyLWNzcy1sb2FkZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gIEJhYnlsb25CdXR0b25JLFxuICAgIEJhYnlsb25JbWFnZUksXG4gICAgQmFieWxvbkl0ZW1JLFxuICAgIEJhYnlsb25NdWx0aW1lZGlhSSxcbiAgICBCYWJ5bG9uVGV4dEluZm9JLFxufSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgU2xpQzJJbWdUeHRMVjJDb250ZW50LFxuICAgIFNsaUMySW1nVHh0TFYyU2xpZGUsXG59IGZyb20gJy4vc2xpLWMyLWltZy10eHQtbC12Mi5pbnRlcmZhY2VzJztcblxuY29uc3QgZGVmYXVsdERhdGE6IFNsaUMySW1nVHh0TFYyQ29udGVudCA9IHtcbiAgICBzZWN0aW9uQ2xhc3M6ICdzZWN0aW9uLWdhbGxlcnkgaW5mby1sZWZ0IG1vZHVsZS1zcGFjZXInLFxuICAgIHdyYXBwZXJDbGFzczogJ2JpZy13cmFwcGVyJyxcbiAgICBzbGlkZXI6IHtcbiAgICAgICAgbmFtZTogJ2pzLXNlY3Rpb24tc2xpZGVyJyxcbiAgICAgICAgc2hvd0J1dHRvbnM6IHRydWUsXG4gICAgICAgIGJ1dHRvbnNDbGFzczogJ2J0bi1zbGlkZS1jaXJjbGUnLFxuICAgICAgICBzaG93RG90czogZmFsc2UsXG4gICAgICAgIGZhZGU6IHRydWUsXG4gICAgICAgIGF1dG9wbGF5OiB0cnVlLFxuICAgICAgICBzbGlkZXNQYzogMSxcbiAgICAgICAgc2xpZGVzTGFwdG9wOiAxLFxuICAgICAgICBzbGlkZXNUYWJsZXQ6IDEsXG4gICAgICAgIHNsaWRlc01vYmlsZTogMSxcbiAgICB9LFxuICAgIG1lZGlhOiB7XG4gICAgICAgIHNsaWRlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogJycsXG4gICAgICAgICAgICAgICAgZGF0YUxhenlpbWc6ICcnLFxuICAgICAgICAgICAgICAgIGFyaWFMYWJlbDogJycsXG4gICAgICAgICAgICAgICAgZGF0YUZpbGVuYW1lOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgfSxcbiAgICBpbmZvOiB7XG4gICAgICAgIHN1YnRpdGxlOiAnJyxcbiAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICB0ZXh0OiAnJyxcbiAgICB9LFxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzbGktYzItaW1nLXR4dC1sLXYyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBCYWJ5bG9uU3dpcGVyQ3NzTG9hZGVyRGlyZWN0aXZlLFxuICAgICAgICBCYWJ5bG9uTGlua1R5cGVEaXJlY3RpdmUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2xpLWMyLWltZy10eHQtbC12Mi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3NsaS1jMi1pbWctdHh0LWwtdjIuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkLFxufSlcbmV4cG9ydCBjbGFzcyBTbGlDMkltZ1R4dExWMkNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICAgIHByaXZhdGUgX2RhdGE6IFNsaUMySW1nVHh0TFYyQ29udGVudCA9IGRlZmF1bHREYXRhO1xuICAgIHByaXZhdGUgc2xpZGVySW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHZpZXdJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgc3dpcGVySW5zdGFuY2U/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==
|