@seniorsistemas/data-seniorx-core 1.7.0 → 1.9.0
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/core/types/card.type.d.ts +1 -15
- package/core/types/filters.type.d.ts +9 -6
- package/core/types/row-card.type.d.ts +1 -7
- package/core/types/select-button.type.d.ts +5 -0
- package/core/types/sidebar.type.d.ts +6 -0
- package/core/utils/array.util.d.ts +1 -0
- package/esm2022/core/config/card.type.config.mjs +3 -3
- package/esm2022/core/config/row-card.type.config.mjs +2 -1
- package/esm2022/core/handlers/sqlFormatter.mjs +2 -2
- package/esm2022/core/types/card.type.mjs +2 -39
- package/esm2022/core/types/filters.type.mjs +1 -1
- package/esm2022/core/types/row-card.type.mjs +1 -1
- package/esm2022/core/types/select-button.type.mjs +2 -0
- package/esm2022/core/types/sidebar.type.mjs +2 -0
- package/esm2022/core/types/table.type.mjs +28 -0
- package/esm2022/core/utils/array.util.mjs +4 -0
- package/esm2022/features/button/button.component.mjs +5 -5
- package/esm2022/features/card-list/card/card.component.mjs +5 -5
- package/esm2022/features/card-list/card-list.component.mjs +8 -8
- package/esm2022/features/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/features/code-editor/code-editor.component.mjs +216 -0
- package/esm2022/features/combobox/combobox.component.mjs +10 -7
- package/esm2022/features/confirm/confirm.component.mjs +3 -3
- package/esm2022/features/filters/filters.component.mjs +35 -9
- package/esm2022/features/hyperlink/hyperlink.component.mjs +3 -3
- package/esm2022/features/inputs.mjs +3 -3
- package/esm2022/features/list/list.component.mjs +3 -3
- package/esm2022/features/modal/modal.component.mjs +3 -3
- package/esm2022/features/modalc/modalc.component.mjs +4 -4
- package/esm2022/features/paginator/paginator.component.mjs +81 -33
- package/esm2022/features/panel/panel.component.mjs +26 -16
- package/esm2022/features/row-card-list/row-card/row-card.component.mjs +29 -18
- package/esm2022/features/row-card-list/row-card-list.component.mjs +10 -10
- package/esm2022/features/scaffold/scaffold.component.mjs +43 -14
- package/esm2022/features/searchbox/searchbox.component.mjs +4 -4
- package/esm2022/features/select-button/select-button.component.mjs +118 -0
- package/esm2022/features/sidebar/sidebar.component.mjs +3 -3
- package/esm2022/features/spinner/spinner.component.mjs +3 -3
- package/esm2022/features/spinner/spinner.service.mjs +3 -3
- package/esm2022/features/tab/tab-item.component.mjs +4 -4
- package/esm2022/features/tab/tab.component.mjs +31 -14
- package/esm2022/features/table/table.component.mjs +6 -6
- package/esm2022/features/textbox/textbox.component.mjs +3 -3
- package/esm2022/features/toast/toast.component.mjs +4 -4
- package/esm2022/features/toast/toast.service.mjs +4 -4
- package/esm2022/providers/services.provider.mjs +3 -3
- package/esm2022/providers/styles.provider.mjs +32 -0
- package/esm2022/providers/translate.provider.mjs +48 -26
- package/esm2022/public-api.mjs +31 -7
- package/features/button/button.component.d.ts +1 -1
- package/features/card-list/card/card.component.d.ts +2 -2
- package/features/card-list/card-list.component.d.ts +1 -1
- package/features/code-editor/code-editor.component.d.ts +57 -0
- package/features/combobox/combobox.component.d.ts +3 -2
- package/features/filters/filters.component.d.ts +5 -2
- package/features/modalc/modalc.component.d.ts +1 -1
- package/features/paginator/paginator.component.d.ts +29 -8
- package/features/panel/panel.component.d.ts +8 -2
- package/features/row-card-list/row-card/row-card.component.d.ts +7 -4
- package/features/row-card-list/row-card-list.component.d.ts +3 -3
- package/features/scaffold/scaffold.component.d.ts +12 -4
- package/features/searchbox/searchbox.component.d.ts +1 -1
- package/features/select-button/select-button.component.d.ts +30 -0
- package/features/tab/tab.component.d.ts +4 -1
- package/features/table/table.component.d.ts +2 -2
- package/features/toast/toast.component.d.ts +1 -1
- package/features/toast/toast.service.d.ts +1 -1
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs +884 -363
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
- package/package.json +20 -15
- package/providers/services.provider.d.ts +2 -2
- package/providers/styles.provider.d.ts +2 -0
- package/providers/translate.provider.d.ts +2 -7
- package/public-api.d.ts +23 -6
- package/src/locales/en.json +15 -0
- package/src/locales/es-CO.json +15 -0
- package/src/locales/pt.json +15 -0
- package/styles/domain-filter.scss +10 -0
- package/styles/fields.scss +17 -0
- package/styles/hyperlink.scss +11 -0
- package/styles/sdc-card.scss +34 -0
- package/styles/sdc-global-variables.scss +73 -0
- package/styles.css +20161 -6
- package/styles.scss +5 -0
- package/webfonts/fa-brands-400.eot +0 -0
- package/webfonts/fa-brands-400.svg +3717 -0
- package/webfonts/fa-brands-400.ttf +0 -0
- package/webfonts/fa-brands-400.woff +0 -0
- package/webfonts/fa-brands-400.woff2 +0 -0
- package/webfonts/fa-duotone-900.eot +0 -0
- package/webfonts/fa-duotone-900.svg +15328 -0
- package/webfonts/fa-duotone-900.ttf +0 -0
- package/webfonts/fa-duotone-900.woff +0 -0
- package/webfonts/fa-duotone-900.woff2 +0 -0
- package/webfonts/fa-light-300.eot +0 -0
- package/webfonts/fa-light-300.svg +12423 -0
- package/webfonts/fa-light-300.ttf +0 -0
- package/webfonts/fa-light-300.woff +0 -0
- package/webfonts/fa-light-300.woff2 +0 -0
- package/webfonts/fa-regular-400.eot +0 -0
- package/webfonts/fa-regular-400.svg +11323 -0
- package/webfonts/fa-regular-400.ttf +0 -0
- package/webfonts/fa-regular-400.woff +0 -0
- package/webfonts/fa-regular-400.woff2 +0 -0
- package/webfonts/fa-solid-900.eot +0 -0
- package/webfonts/fa-solid-900.svg +9653 -0
- package/webfonts/fa-solid-900.ttf +0 -0
- package/webfonts/fa-solid-900.woff +0 -0
- package/webfonts/fa-solid-900.woff2 +0 -0
- package/esm2022/core/types/table.types.mjs +0 -28
- package/esm2022/features/sql-editor/sql-editor.component.mjs +0 -125
- package/features/sql-editor/sql-editor.component.d.ts +0 -27
- package/styles.css.map +0 -1
- /package/core/types/{table.types.d.ts → table.type.d.ts} +0 -0
|
@@ -5,10 +5,10 @@ export class TabItemComponent {
|
|
|
5
5
|
disabled = false;
|
|
6
6
|
lazy = true;
|
|
7
7
|
id;
|
|
8
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
9
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.
|
|
8
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TabItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: TabItemComponent, isStandalone: true, selector: "sdc-tab-item", inputs: { label: "label", disabled: ["disabled", "disabled", booleanAttribute], lazy: ["lazy", "lazy", booleanAttribute], id: "id" }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
|
|
10
10
|
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TabItemComponent, decorators: [{
|
|
12
12
|
type: Component,
|
|
13
13
|
args: [{
|
|
14
14
|
selector: 'sdc-tab-item',
|
|
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
26
26
|
}], id: [{
|
|
27
27
|
type: Input
|
|
28
28
|
}] } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy90YWIvdGFiLWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU9uRSxNQUFNLE9BQU8sZ0JBQWdCO0lBQ2xCLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDb0IsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzNDLEVBQUUsQ0FBVTt3R0FKVixnQkFBZ0I7NEZBQWhCLGdCQUFnQiw2R0FFUCxnQkFBZ0IsMEJBQ2hCLGdCQUFnQix1Q0FMMUIsMkJBQTJCOzs0RkFFMUIsZ0JBQWdCO2tCQUw1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLDJCQUEyQjtpQkFDdEM7OEJBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNrQyxRQUFRO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLElBQUk7c0JBQTNDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQzdCLEVBQUU7c0JBQVYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIGJvb2xlYW5BdHRyaWJ1dGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2RjLXRhYi1pdGVtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy90YWIvdGFiLWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU9uRSxNQUFNLE9BQU8sZ0JBQWdCO0lBQ2xCLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDb0IsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzNDLEVBQUUsQ0FBVTt3R0FKVixnQkFBZ0I7NEZBQWhCLGdCQUFnQiw2R0FFUCxnQkFBZ0IsMEJBQ2hCLGdCQUFnQix1Q0FMMUIsMkJBQTJCOzs0RkFFMUIsZ0JBQWdCO2tCQUw1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLDJCQUEyQjtpQkFDdEM7OEJBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNrQyxRQUFRO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLElBQUk7c0JBQTNDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQzdCLEVBQUU7c0JBQVYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIGJvb2xlYW5BdHRyaWJ1dGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2RjLXRhYi1pdGVtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YFxufSlcbmV4cG9ydCBjbGFzcyBUYWJJdGVtQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBsYXp5ID0gdHJ1ZTtcbiAgQElucHV0KCkgaWQ/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { isMobile } from '
|
|
2
|
+
import { isMobile } from '../../core/utils/layout.util';
|
|
3
3
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, NgZone, Output, ViewChild, numberAttribute, signal, computed, effect, inject, ViewEncapsulation, } from '@angular/core';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
let __tabUid = 0;
|
|
5
6
|
export class TabComponent {
|
|
6
7
|
host = inject(ElementRef);
|
|
7
8
|
zone = inject(NgZone);
|
|
8
9
|
cdr = inject(ChangeDetectorRef);
|
|
9
10
|
headersRef;
|
|
11
|
+
panelsRef;
|
|
12
|
+
uid = `sdc-tab-${++__tabUid}`;
|
|
10
13
|
_activeIndex = signal(0);
|
|
11
14
|
set activeIndex(v) {
|
|
12
15
|
this.zone.run(() => {
|
|
@@ -25,11 +28,15 @@ export class TabComponent {
|
|
|
25
28
|
activeIndexChange = new EventEmitter();
|
|
26
29
|
isMobile = isMobile();
|
|
27
30
|
wcEls = signal([]);
|
|
28
|
-
headers = computed(() => this.wcEls().map((el, i) =>
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
headers = computed(() => this.wcEls().map((el, i) => {
|
|
32
|
+
const attrLabel = el.getAttribute('label') || '';
|
|
33
|
+
const propLabel = el.label;
|
|
34
|
+
return {
|
|
35
|
+
label: (attrLabel.trim() || (propLabel?.trim() ?? `Tab ${i}`)),
|
|
36
|
+
disabled: this.parseBool(el.getAttribute('disabled')),
|
|
37
|
+
id: el.getAttribute('id') ?? `${this.uid}-tab-${i}`,
|
|
38
|
+
};
|
|
39
|
+
}));
|
|
33
40
|
mo;
|
|
34
41
|
_headersEffect = effect(() => {
|
|
35
42
|
this.headers();
|
|
@@ -40,7 +47,7 @@ export class TabComponent {
|
|
|
40
47
|
this.refreshChildren();
|
|
41
48
|
this.zone.runOutsideAngular(() => {
|
|
42
49
|
this.mo = new MutationObserver(() => this.refreshChildren());
|
|
43
|
-
this.mo.observe(this.
|
|
50
|
+
this.mo.observe(this.panelsRef.nativeElement, { childList: true });
|
|
44
51
|
});
|
|
45
52
|
}
|
|
46
53
|
ngOnDestroy() {
|
|
@@ -105,8 +112,15 @@ export class TabComponent {
|
|
|
105
112
|
const list = this.headersRef?.nativeElement.querySelectorAll('[role="tab"]');
|
|
106
113
|
list?.[i]?.focus();
|
|
107
114
|
}
|
|
115
|
+
getDirectItems() {
|
|
116
|
+
const parent = this.panelsRef?.nativeElement;
|
|
117
|
+
if (!parent)
|
|
118
|
+
return [];
|
|
119
|
+
const children = Array.from(parent.children);
|
|
120
|
+
return children.filter((n) => n.tagName?.toLowerCase() === 'sdc-tab-item');
|
|
121
|
+
}
|
|
108
122
|
refreshChildren() {
|
|
109
|
-
const els =
|
|
123
|
+
const els = this.getDirectItems();
|
|
110
124
|
this.wcEls.set(els);
|
|
111
125
|
this._activeIndex.set(this.normalizeIndex(this._activeIndex()));
|
|
112
126
|
this.syncHiddenAndAria();
|
|
@@ -118,7 +132,7 @@ export class TabComponent {
|
|
|
118
132
|
const hs = this.headers();
|
|
119
133
|
els.forEach((el, i) => {
|
|
120
134
|
const hdr = hs[i];
|
|
121
|
-
const panelId = ((hdr?.id ??
|
|
135
|
+
const panelId = ((hdr?.id ?? `${this.uid}-tab-${i}`) + '-panel');
|
|
122
136
|
el.setAttribute('role', 'tabpanel');
|
|
123
137
|
el.setAttribute('id', panelId);
|
|
124
138
|
if (hdr)
|
|
@@ -142,19 +156,22 @@ export class TabComponent {
|
|
|
142
156
|
const s = v.trim().toLowerCase();
|
|
143
157
|
return s === '' || s === 'true' || s === '1';
|
|
144
158
|
}
|
|
145
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
146
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
|
159
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
160
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TabComponent, isStandalone: true, selector: "sdc-tab", inputs: { activeIndex: ["activeIndex", "activeIndex", numberAttribute] }, outputs: { activeIndexChange: "activeIndexChange" }, viewQueries: [{ propertyName: "headersRef", first: true, predicate: ["headersRef"], descendants: true }, { propertyName: "panelsRef", first: true, predicate: ["panelsRef"], descendants: true }], ngImport: i0, template: "<div class=\"sdc-tab\" [class.sdc-tab-stack]=\"isMobile\">\n <div #headersRef class=\"sdc-tab-headers\" role=\"tablist\" aria-label=\"Tabs\">\n @for (h of headers(); let i = $index; track i) {\n <button\n class=\"sdc-tab-header\"\n [class.sdc-tab-header-active]=\"i === activeIndex\"\n [class.sdc-tab-header-disabled]=\"h.disabled\"\n role=\"tab\"\n type=\"button\"\n [disabled]=\"h.disabled\"\n [attr.aria-selected]=\"i === activeIndex\"\n [attr.aria-controls]=\"h.id + '-panel'\"\n [attr.aria-disabled]=\"h.disabled\"\n [id]=\"h.id\"\n [tabindex]=\"h.disabled ? -1 : i === activeIndex ? 0 : -1\"\n (click)=\"select(i)\"\n (keydown)=\"onHeaderKeydown($event, i)\"\n >\n <span class=\"sdc-tab-label\">{{ h.label }}</span>\n </button>\n }\n </div>\n <div class=\"sdc-tab-panels\" #panelsRef>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sdc-tab{border:0;border-radius:0;background:none;display:flex;flex-direction:column}.sdc-tab .sdc-tab-label{font-size:15px}.sdc-tab-headers{display:flex;white-space:nowrap;overflow-x:auto;overflow-y:hidden;padding:0;margin:0;border-bottom:1px solid var(--sdc-tab-border);position:relative}.sdc-tab-header{position:relative;appearance:none;background:transparent;border:0;margin:0;padding:10px 15px;color:var(--sdc-tab-primary);cursor:pointer;border-bottom:5px solid transparent;transition:color .2s ease-out,border-color .2s ease-out;border-radius:0;flex:0 0 auto}.sdc-tab-header:hover{color:var(--sdc-tab-primary-hover)}.sdc-tab-header:focus{outline:none;background-color:var(--sdc-tab-focus)}.sdc-tab-header[disabled],.sdc-tab-header-disabled{cursor:not-allowed;opacity:.6}.sdc-tab-header-active{color:var(--sdc-tab-text);font-weight:600;border-bottom-color:var(--sdc-tab-primary)}.sdc-tab-header-active:hover{color:#4d4d4d;border-bottom-color:var(--sdc-tab-primary-hover)}.sdc-tab-header>.sds-badge-error{position:absolute;top:16px;left:1px}.sdc-tab-panels{padding:10px 0 0;width:100%;min-width:0}.sdc-tab-panel{outline:0;list-style:none;margin:0}[hidden]{display:none!important}@media (max-width: 750px){.sdc-tab,.sdc-tab *{box-sizing:border-box}.sdc-tab.sdc-tab-stack{display:flex;flex-direction:column;width:100vw;max-width:100vw;overflow:hidden}.sdc-tab.sdc-tab-stack .sdc-tab-headers{flex-direction:row;border-right:0;border-bottom:1px solid var(--sdc-tab-border);width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable both-edges;gap:.25rem;padding:0;margin:0}.sdc-tab.sdc-tab-stack .sdc-tab-header{flex:0 0 auto;white-space:nowrap;border-right:0;border-bottom:5px solid transparent;width:auto;text-align:left}.sdc-tab.sdc-tab-stack .sdc-tab-panels{padding:10px 15px 0 0;width:100%;max-width:100%;min-width:0;overflow-x:hidden}.sdc-tab.sdc-tab-stack .sdc-tab-panel{max-width:100%;overflow-wrap:anywhere;word-break:break-word}img,video,canvas,svg{max-width:100%;height:auto}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
147
161
|
}
|
|
148
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TabComponent, decorators: [{
|
|
149
163
|
type: Component,
|
|
150
|
-
args: [{ selector: 'sdc-tab', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div class=\"sdc-tab\" [class.sdc-tab-stack]=\"isMobile\">\n <div #headersRef class=\"sdc-tab-headers\" role=\"tablist\" aria-label=\"Tabs\">\n @for (h of headers(); let i = $index; track i) {\n
|
|
164
|
+
args: [{ selector: 'sdc-tab', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div class=\"sdc-tab\" [class.sdc-tab-stack]=\"isMobile\">\n <div #headersRef class=\"sdc-tab-headers\" role=\"tablist\" aria-label=\"Tabs\">\n @for (h of headers(); let i = $index; track i) {\n <button\n class=\"sdc-tab-header\"\n [class.sdc-tab-header-active]=\"i === activeIndex\"\n [class.sdc-tab-header-disabled]=\"h.disabled\"\n role=\"tab\"\n type=\"button\"\n [disabled]=\"h.disabled\"\n [attr.aria-selected]=\"i === activeIndex\"\n [attr.aria-controls]=\"h.id + '-panel'\"\n [attr.aria-disabled]=\"h.disabled\"\n [id]=\"h.id\"\n [tabindex]=\"h.disabled ? -1 : i === activeIndex ? 0 : -1\"\n (click)=\"select(i)\"\n (keydown)=\"onHeaderKeydown($event, i)\"\n >\n <span class=\"sdc-tab-label\">{{ h.label }}</span>\n </button>\n }\n </div>\n <div class=\"sdc-tab-panels\" #panelsRef>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sdc-tab{border:0;border-radius:0;background:none;display:flex;flex-direction:column}.sdc-tab .sdc-tab-label{font-size:15px}.sdc-tab-headers{display:flex;white-space:nowrap;overflow-x:auto;overflow-y:hidden;padding:0;margin:0;border-bottom:1px solid var(--sdc-tab-border);position:relative}.sdc-tab-header{position:relative;appearance:none;background:transparent;border:0;margin:0;padding:10px 15px;color:var(--sdc-tab-primary);cursor:pointer;border-bottom:5px solid transparent;transition:color .2s ease-out,border-color .2s ease-out;border-radius:0;flex:0 0 auto}.sdc-tab-header:hover{color:var(--sdc-tab-primary-hover)}.sdc-tab-header:focus{outline:none;background-color:var(--sdc-tab-focus)}.sdc-tab-header[disabled],.sdc-tab-header-disabled{cursor:not-allowed;opacity:.6}.sdc-tab-header-active{color:var(--sdc-tab-text);font-weight:600;border-bottom-color:var(--sdc-tab-primary)}.sdc-tab-header-active:hover{color:#4d4d4d;border-bottom-color:var(--sdc-tab-primary-hover)}.sdc-tab-header>.sds-badge-error{position:absolute;top:16px;left:1px}.sdc-tab-panels{padding:10px 0 0;width:100%;min-width:0}.sdc-tab-panel{outline:0;list-style:none;margin:0}[hidden]{display:none!important}@media (max-width: 750px){.sdc-tab,.sdc-tab *{box-sizing:border-box}.sdc-tab.sdc-tab-stack{display:flex;flex-direction:column;width:100vw;max-width:100vw;overflow:hidden}.sdc-tab.sdc-tab-stack .sdc-tab-headers{flex-direction:row;border-right:0;border-bottom:1px solid var(--sdc-tab-border);width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable both-edges;gap:.25rem;padding:0;margin:0}.sdc-tab.sdc-tab-stack .sdc-tab-header{flex:0 0 auto;white-space:nowrap;border-right:0;border-bottom:5px solid transparent;width:auto;text-align:left}.sdc-tab.sdc-tab-stack .sdc-tab-panels{padding:10px 15px 0 0;width:100%;max-width:100%;min-width:0;overflow-x:hidden}.sdc-tab.sdc-tab-stack .sdc-tab-panel{max-width:100%;overflow-wrap:anywhere;word-break:break-word}img,video,canvas,svg{max-width:100%;height:auto}}\n"] }]
|
|
151
165
|
}], propDecorators: { headersRef: [{
|
|
152
166
|
type: ViewChild,
|
|
153
167
|
args: ['headersRef']
|
|
168
|
+
}], panelsRef: [{
|
|
169
|
+
type: ViewChild,
|
|
170
|
+
args: ['panelsRef']
|
|
154
171
|
}], activeIndex: [{
|
|
155
172
|
type: Input,
|
|
156
173
|
args: [{ transform: numberAttribute }]
|
|
157
174
|
}], activeIndexChange: [{
|
|
158
175
|
type: Output
|
|
159
176
|
}] } });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvdGFiL3RhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3RhYi90YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRCxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFDTixTQUFTLEVBQ1QsZUFBZSxFQUNmLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7O0FBV3ZCLE1BQU0sT0FBTyxZQUFZO0lBQ2YsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQTRCLENBQUM7SUFDckQsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QixHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFZixVQUFVLENBQThCO0lBRXpELFlBQVksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFakMsSUFDSSxXQUFXLENBQUMsQ0FBUztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUFFLE9BQU87WUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FB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QUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLFNBQVMsQ0FBQyxDQUFnQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxJQUFJO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDNUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssTUFBTSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7SUFDL0MsQ0FBQzt3R0F2SlUsWUFBWTs0RkFBWixZQUFZLGlHQVNILGVBQWUsNExDekNyQyxzN0JBMEJBLHNpRURBWSxZQUFZOzs0RkFNWCxZQUFZO2tCQVR4QixTQUFTOytCQUNFLFNBQVMsY0FDUCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBR04sdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsUUFBUTs4QkFPaEIsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUtuQixXQUFXO3NCQURkLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQWUzQixpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVGFiSGVhZGVyIH0gZnJvbSAnbGliL3NyYy9jb3JlL3R5cGVzL3RhYi50eXBlJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnbGliL3NyYy9jb3JlL3V0aWxzL2xheW91dC51dGlsJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIG51bWJlckF0dHJpYnV0ZSxcbiAgc2lnbmFsLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2RjLXRhYicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFiLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCxcbn0pXG5leHBvcnQgY2xhc3MgVGFiQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBob3N0ID0gaW5qZWN0KEVsZW1lbnRSZWYpIGFzIEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBwcml2YXRlIHpvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIEBWaWV3Q2hpbGQoJ2hlYWRlcnNSZWYnKSBoZWFkZXJzUmVmITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgcHJpdmF0ZSBfYWN0aXZlSW5kZXggPSBzaWduYWwoMCk7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSlcbiAgc2V0IGFjdGl2ZUluZGV4KHY6IG51bWJlcikge1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgY29uc3QgaWR4ID0gdGhpcy5ub3JtYWxpemVJbmRleCh2KTtcbiAgICAgIGlmIChpZHggPT09IHRoaXMuX2FjdGl2ZUluZGV4KCkpIHJldHVybjtcbiAgICAgIHRoaXMuX2FjdGl2ZUluZGV4LnNldChpZHgpO1xuICAgICAgdGhpcy5zeW5jSGlkZGVuQW5kQXJpYSgpO1xuICAgICAgdGhpcy5hY3RpdmVJbmRleENoYW5nZS5lbWl0KHRoaXMuX2FjdGl2ZUluZGV4KCkpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG4gIGdldCBhY3RpdmVJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVJbmRleCgpO1xuICB9XG5cbiAgQE91dHB1dCgpIGFjdGl2ZUluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzTW9iaWxlID0gaXNNb2JpbGUoKTtcblxuICBwcml2YXRlIHdjRWxzID0gc2lnbmFsPEhUTUxFbGVtZW50W10+KFtdKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhlYWRlcnMgPSBjb21wdXRlZDxUYWJIZWFkZXJbXT4oKCkgPT5cbiAgICB0aGlzLndjRWxzKCkubWFwKChlbCwgaSkgPT4gKHtcbiAgICAgIGxhYmVsOiBlbC5nZXRBdHRyaWJ1dGUoJ2xhYmVsJykgPz8gYFRhYiAke2l9YCxcbiAgICAgIGRpc2FibGVkOiB0aGlzLnBhcnNlQm9vbChlbC5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpLFxuICAgICAgaWQ6IGVsLmdldEF0dHJpYnV0ZSgnaWQnKSA/PyBgdGFiLSR7aX1gLFxuICAgIH0pKVxuICApO1xuXG4gIHByaXZhdGUgbW8/OiBNdXRhdGlvbk9ic2VydmVyO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2hlYWRlcnNFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMuaGVhZGVycygpO1xuICAgIHRoaXMuc3luY0hpZGRlbkFuZEFyaWEoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfSk7XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaENoaWxkcmVuKCk7XG5cbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5tbyA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHRoaXMucmVmcmVzaENoaWxkcmVuKCkpO1xuICAgICAgdGhpcy5tby5vYnNlcnZlKHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogZmFsc2UgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm1vPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0KGk6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGhzID0gdGhpcy5oZWFkZXJzKCk7XG4gICAgaWYgKCFoc1tpXSB8fCBoc1tpXS5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlmIChpICE9PSB0aGlzLl9hY3RpdmVJbmRleCgpKSB7XG4gICAgICB0aGlzLl9hY3RpdmVJbmRleC5zZXQoaSk7XG4gICAgICB0aGlzLnN5bmNIaWRkZW5BbmRBcmlhKCk7XG4gICAgICB0aGlzLmFjdGl2ZUluZGV4Q2hhbmdlLmVtaXQoaSk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSGVhZGVyS2V5ZG93bihlOiBLZXlib2FyZEV2ZW50LCBpOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5mb2N1c05leHQoaSk7XG4gICAgfSBlbHNlIGlmIChlLmtleSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZm9jdXNQcmV2KGkpO1xuICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdIb21lJykge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5mb2N1c0luZGV4KDApO1xuICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdFbmQnKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmZvY3VzSW5kZXgodGhpcy5oZWFkZXJzKCkubGVuZ3RoIC0gMSk7XG4gICAgfSBlbHNlIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJyAnKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNlbGVjdChpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvY3VzTmV4dChpOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBocyA9IHRoaXMuaGVhZGVycygpO1xuICAgIGNvbnN0IGxlbiA9IGhzLmxlbmd0aDtcbiAgICBmb3IgKGxldCBzdGVwID0gMTsgc3RlcCA8PSBsZW47IHN0ZXArKykge1xuICAgICAgY29uc3QgaWR4ID0gKGkgKyBzdGVwKSAlIGxlbjtcbiAgICAgIGlmICghaHNbaWR4XS5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmZvY3VzSW5kZXgoaWR4KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c1ByZXYoaTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgaHMgPSB0aGlzLmhlYWRlcnMoKTtcbiAgICBjb25zdCBsZW4gPSBocy5sZW5ndGg7XG4gICAgZm9yIChsZXQgc3RlcCA9IDE7IHN0ZXAgPD0gbGVuOyBzdGVwKyspIHtcbiAgICAgIGNvbnN0IGlkeCA9IChpIC0gc3RlcCArIGxlbikgJSBsZW47XG4gICAgICBpZiAoIWhzW2lkeF0uZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5mb2N1c0luZGV4KGlkeCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNJbmRleChpOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5oZWFkZXJzUmVmPy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tyb2xlPVwidGFiXCJdJykgYXMgTm9kZUxpc3RPZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gICAgbGlzdD8uW2ldPy5mb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWZyZXNoQ2hpbGRyZW4oKTogdm9pZCB7XG4gICAgY29uc3QgZWxzID0gQXJyYXkuZnJvbSh0aGlzLmhvc3QubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzZGMtdGFiLWl0ZW0nKSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICB0aGlzLndjRWxzLnNldChlbHMpO1xuICAgIHRoaXMuX2FjdGl2ZUluZGV4LnNldCh0aGlzLm5vcm1hbGl6ZUluZGV4KHRoaXMuX2FjdGl2ZUluZGV4KCkpKTtcbiAgICB0aGlzLnN5bmNIaWRkZW5BbmRBcmlhKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNIaWRkZW5BbmRBcmlhKCk6IHZvaWQge1xuICAgIGNvbnN0IGlkeCA9IHRoaXMuX2FjdGl2ZUluZGV4KCk7XG4gICAgY29uc3QgZWxzID0gdGhpcy53Y0VscygpO1xuICAgIGNvbnN0IGhzID0gdGhpcy5oZWFkZXJzKCk7XG4gICAgZWxzLmZvckVhY2goKGVsLCBpKSA9PiB7XG4gICAgICBjb25zdCBoZHIgPSBoc1tpXTtcbiAgICAgIGNvbnN0IHBhbmVsSWQgPSAoKGhkcj8uaWQgPz8gYHRhYi0ke2l9YCkgKyAnLXBhbmVsJyk7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAndGFicGFuZWwnKTtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaWQnLCBwYW5lbElkKTtcbiAgICAgIGlmIChoZHIpIGVsLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JywgaGRyLmlkKTtcbiAgICAgIGlmIChpID09PSBpZHgpIGVsLnJlbW92ZUF0dHJpYnV0ZSgnaGlkZGVuJyk7XG4gICAgICBlbHNlIGVsLnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVJbmRleCh2OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGxlbiA9IHRoaXMud2NFbHMoKS5sZW5ndGg7XG4gICAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDA7XG4gICAgY29uc3QgbiA9IE51bWJlci5pc0Zpbml0ZSh2KSA/IE1hdGgudHJ1bmModikgOiAwO1xuICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heCgwLCBuKSwgbGVuIC0gMSk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlQm9vbCh2OiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKHYgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IHMgPSB2LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBzID09PSAnJyB8fCBzID09PSAndHJ1ZScgfHwgcyA9PT0gJzEnO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2RjLXRhYlwiIFtjbGFzcy5zZGMtdGFiLXN0YWNrXT1cImlzTW9iaWxlXCI+XG4gIDxkaXYgI2hlYWRlcnNSZWYgY2xhc3M9XCJzZGMtdGFiLWhlYWRlcnNcIiByb2xlPVwidGFibGlzdFwiIGFyaWEtbGFiZWw9XCJUYWJzXCI+XG4gICAgQGZvciAoaCBvZiBoZWFkZXJzKCk7IGxldCBpID0gJGluZGV4OyB0cmFjayBpKSB7XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic2RjLXRhYi1oZWFkZXJcIlxuICAgICAgICBbY2xhc3Muc2RjLXRhYi1oZWFkZXItYWN0aXZlXT1cImkgPT09IGFjdGl2ZUluZGV4XCJcbiAgICAgICAgW2NsYXNzLnNkYy10YWItaGVhZGVyLWRpc2FibGVkXT1cImguZGlzYWJsZWRcIlxuICAgICAgICByb2xlPVwidGFiXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJoLmRpc2FibGVkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpID09PSBhY3RpdmVJbmRleFwiXG4gICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaC5pZCArICctcGFuZWwnXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJoLmRpc2FibGVkXCJcbiAgICAgICAgW2lkXT1cImguaWRcIlxuICAgICAgICBbdGFiaW5kZXhdPVwiaC5kaXNhYmxlZCA/IC0xIDogKGkgPT09IGFjdGl2ZUluZGV4ID8gMCA6IC0xKVwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3QoaSlcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbkhlYWRlcktleWRvd24oJGV2ZW50LCBpKVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy10YWItbGFiZWxcIj57eyBoLmxhYmVsIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwic2RjLXRhYi1wYW5lbHNcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvdGFiL3RhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3RhYi90YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFDTixTQUFTLEVBQ1QsZUFBZSxFQUNmLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7O0FBRXZCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztBQVdqQixNQUFNLE9BQU8sWUFBWTtJQUNmLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUE0QixDQUFDO0lBQ3JELElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEIsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRWYsVUFBVSxDQUE4QjtJQUN6QyxTQUFTLENBQThCO0lBRXZELEdBQUcsR0FBRyxXQUFXLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFFOUIsWUFBWSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVqQyxJQUNJLFdBQVcsQ0FBQyxDQUFTO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNqQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lB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LEdBQUcsQ0FBQztJQUMvQyxDQUFDO3dHQXBLVSxZQUFZOzRGQUFaLFlBQVksaUdBWUgsZUFBZSxxUkM5Q3JDLG02QkEwQkEsc2lFREVZLFlBQVk7OzRGQU1YLFlBQVk7a0JBVHhCLFNBQVM7K0JBQ0UsU0FBUyxjQUNQLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxRQUFROzhCQU9oQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ0MsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQU9sQixXQUFXO3NCQURkLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQWUzQixpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVGFiSGVhZGVyIH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcy90YWIudHlwZSc7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvbGF5b3V0LnV0aWwnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgbnVtYmVyQXR0cmlidXRlLFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5sZXQgX190YWJVaWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtdGFiJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi90YWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGhvc3QgPSBpbmplY3QoRWxlbWVudFJlZikgYXMgRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIHByaXZhdGUgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgQFZpZXdDaGlsZCgnaGVhZGVyc1JlZicpIGhlYWRlcnNSZWYhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgncGFuZWxzUmVmJykgcGFuZWxzUmVmITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgcHJpdmF0ZSB1aWQgPSBgc2RjLXRhYi0keysrX190YWJVaWR9YDtcblxuICBwcml2YXRlIF9hY3RpdmVJbmRleCA9IHNpZ25hbCgwKTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBzZXQgYWN0aXZlSW5kZXgodjogbnVtYmVyKSB7XG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICBjb25zdCBpZHggPSB0aGlzLm5vcm1hbGl6ZUluZGV4KHYpO1xuICAgICAgaWYgKGlkeCA9PT0gdGhpcy5fYWN0aXZlSW5kZXgoKSkgcmV0dXJuO1xuICAgICAgdGhpcy5fYWN0aXZlSW5kZXguc2V0KGlkeCk7XG4gICAgICB0aGlzLnN5bmNIaWRkZW5BbmRBcmlhKCk7XG4gICAgICB0aGlzLmFjdGl2ZUluZGV4Q2hhbmdlLmVtaXQodGhpcy5fYWN0aXZlSW5kZXgoKSk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cbiAgZ2V0IGFjdGl2ZUluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUluZGV4KCk7XG4gIH1cblxuICBAT3V0cHV0KCkgYWN0aXZlSW5kZXhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNNb2JpbGUgPSBpc01vYmlsZSgpO1xuXG4gIHByaXZhdGUgd2NFbHMgPSBzaWduYWw8SFRNTEVsZW1lbnRbXT4oW10pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGVhZGVycyA9IGNvbXB1dGVkPFRhYkhlYWRlcltdPigoKSA9PlxuICAgIHRoaXMud2NFbHMoKS5tYXAoKGVsLCBpKSA9PiB7XG4gICAgICBjb25zdCBhdHRyTGFiZWwgPSBlbC5nZXRBdHRyaWJ1dGUoJ2xhYmVsJykgfHwgJyc7XG4gICAgICBjb25zdCBwcm9wTGFiZWwgPSAoZWwgYXMgYW55KS5sYWJlbCBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsYWJlbDogKGF0dHJMYWJlbC50cmltKCkgfHwgKHByb3BMYWJlbD8udHJpbSgpID8/IGBUYWIgJHtpfWApKSxcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMucGFyc2VCb29sKGVsLmdldEF0dHJpYnV0ZSgnZGlzYWJsZWQnKSksXG4gICAgICAgIGlkOiBlbC5nZXRBdHRyaWJ1dGUoJ2lkJykgPz8gYCR7dGhpcy51aWR9LXRhYi0ke2l9YCxcbiAgICAgIH07XG4gICAgfSlcbiAgKTtcblxuICBwcml2YXRlIG1vPzogTXV0YXRpb25PYnNlcnZlcjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9oZWFkZXJzRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICB0aGlzLmhlYWRlcnMoKTtcbiAgICB0aGlzLnN5bmNIaWRkZW5BbmRBcmlhKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH0pO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2hDaGlsZHJlbigpO1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLm1vID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4gdGhpcy5yZWZyZXNoQ2hpbGRyZW4oKSk7XG4gICAgICB0aGlzLm1vLm9ic2VydmUodGhpcy5wYW5lbHNSZWYubmF0aXZlRWxlbWVudCwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm1vPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0KGk6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGhzID0gdGhpcy5oZWFkZXJzKCk7XG4gICAgaWYgKCFoc1tpXSB8fCBoc1tpXS5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlmIChpICE9PSB0aGlzLl9hY3RpdmVJbmRleCgpKSB7XG4gICAgICB0aGlzLl9hY3RpdmVJbmRleC5zZXQoaSk7XG4gICAgICB0aGlzLnN5bmNIaWRkZW5BbmRBcmlhKCk7XG4gICAgICB0aGlzLmFjdGl2ZUluZGV4Q2hhbmdlLmVtaXQoaSk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSGVhZGVyS2V5ZG93bihlOiBLZXlib2FyZEV2ZW50LCBpOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5mb2N1c05leHQoaSk7XG4gICAgfSBlbHNlIGlmIChlLmtleSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZm9jdXNQcmV2KGkpO1xuICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdIb21lJykge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5mb2N1c0luZGV4KDApO1xuICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdFbmQnKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmZvY3VzSW5kZXgodGhpcy5oZWFkZXJzKCkubGVuZ3RoIC0gMSk7XG4gICAgfSBlbHNlIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJyAnKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNlbGVjdChpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvY3VzTmV4dChpOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBocyA9IHRoaXMuaGVhZGVycygpO1xuICAgIGNvbnN0IGxlbiA9IGhzLmxlbmd0aDtcbiAgICBmb3IgKGxldCBzdGVwID0gMTsgc3RlcCA8PSBsZW47IHN0ZXArKykge1xuICAgICAgY29uc3QgaWR4ID0gKGkgKyBzdGVwKSAlIGxlbjtcbiAgICAgIGlmICghaHNbaWR4XS5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmZvY3VzSW5kZXgoaWR4KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c1ByZXYoaTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgaHMgPSB0aGlzLmhlYWRlcnMoKTtcbiAgICBjb25zdCBsZW4gPSBocy5sZW5ndGg7XG4gICAgZm9yIChsZXQgc3RlcCA9IDE7IHN0ZXAgPD0gbGVuOyBzdGVwKyspIHtcbiAgICAgIGNvbnN0IGlkeCA9IChpIC0gc3RlcCArIGxlbikgJSBsZW47XG4gICAgICBpZiAoIWhzW2lkeF0uZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5mb2N1c0luZGV4KGlkeCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNJbmRleChpOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5oZWFkZXJzUmVmPy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tyb2xlPVwidGFiXCJdJykgYXMgTm9kZUxpc3RPZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gICAgbGlzdD8uW2ldPy5mb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREaXJlY3RJdGVtcygpOiBIVE1MRWxlbWVudFtdIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnBhbmVsc1JlZj8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIXBhcmVudCkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuZnJvbShwYXJlbnQuY2hpbGRyZW4pO1xuICAgIHJldHVybiBjaGlsZHJlbi5maWx0ZXIoKG4pOiBuIGlzIEhUTUxFbGVtZW50ID0+IChuIGFzIEhUTUxFbGVtZW50KS50YWdOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAnc2RjLXRhYi1pdGVtJyk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hDaGlsZHJlbigpOiB2b2lkIHtcbiAgICBjb25zdCBlbHMgPSB0aGlzLmdldERpcmVjdEl0ZW1zKCk7XG4gICAgdGhpcy53Y0Vscy5zZXQoZWxzKTtcbiAgICB0aGlzLl9hY3RpdmVJbmRleC5zZXQodGhpcy5ub3JtYWxpemVJbmRleCh0aGlzLl9hY3RpdmVJbmRleCgpKSk7XG4gICAgdGhpcy5zeW5jSGlkZGVuQW5kQXJpYSgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jSGlkZGVuQW5kQXJpYSgpOiB2b2lkIHtcbiAgICBjb25zdCBpZHggPSB0aGlzLl9hY3RpdmVJbmRleCgpO1xuICAgIGNvbnN0IGVscyA9IHRoaXMud2NFbHMoKTtcbiAgICBjb25zdCBocyA9IHRoaXMuaGVhZGVycygpO1xuICAgIGVscy5mb3JFYWNoKChlbCwgaSkgPT4ge1xuICAgICAgY29uc3QgaGRyID0gaHNbaV07XG4gICAgICBjb25zdCBwYW5lbElkID0gKChoZHI/LmlkID8/IGAke3RoaXMudWlkfS10YWItJHtpfWApICsgJy1wYW5lbCcpO1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3RhYnBhbmVsJyk7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2lkJywgcGFuZWxJZCk7XG4gICAgICBpZiAoaGRyKSBlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScsIGhkci5pZCk7XG4gICAgICBpZiAoaSA9PT0gaWR4KSBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2hpZGRlbicpO1xuICAgICAgZWxzZSBlbC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsICcnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplSW5kZXgodjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBsZW4gPSB0aGlzLndjRWxzKCkubGVuZ3RoO1xuICAgIGlmIChsZW4gPT09IDApIHJldHVybiAwO1xuICAgIGNvbnN0IG4gPSBOdW1iZXIuaXNGaW5pdGUodikgPyBNYXRoLnRydW5jKHYpIDogMDtcbiAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoMCwgbiksIGxlbiAtIDEpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZUJvb2wodjogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIGlmICh2ID09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBzID0gdi50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gcyA9PT0gJycgfHwgcyA9PT0gJ3RydWUnIHx8IHMgPT09ICcxJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNkYy10YWJcIiBbY2xhc3Muc2RjLXRhYi1zdGFja109XCJpc01vYmlsZVwiPlxuICA8ZGl2ICNoZWFkZXJzUmVmIGNsYXNzPVwic2RjLXRhYi1oZWFkZXJzXCIgcm9sZT1cInRhYmxpc3RcIiBhcmlhLWxhYmVsPVwiVGFic1wiPlxuICAgIEBmb3IgKGggb2YgaGVhZGVycygpOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic2RjLXRhYi1oZWFkZXJcIlxuICAgICAgW2NsYXNzLnNkYy10YWItaGVhZGVyLWFjdGl2ZV09XCJpID09PSBhY3RpdmVJbmRleFwiXG4gICAgICBbY2xhc3Muc2RjLXRhYi1oZWFkZXItZGlzYWJsZWRdPVwiaC5kaXNhYmxlZFwiXG4gICAgICByb2xlPVwidGFiXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cImguZGlzYWJsZWRcIlxuICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpID09PSBhY3RpdmVJbmRleFwiXG4gICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImguaWQgKyAnLXBhbmVsJ1wiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImguZGlzYWJsZWRcIlxuICAgICAgW2lkXT1cImguaWRcIlxuICAgICAgW3RhYmluZGV4XT1cImguZGlzYWJsZWQgPyAtMSA6IGkgPT09IGFjdGl2ZUluZGV4ID8gMCA6IC0xXCJcbiAgICAgIChjbGljayk9XCJzZWxlY3QoaSlcIlxuICAgICAgKGtleWRvd24pPVwib25IZWFkZXJLZXlkb3duKCRldmVudCwgaSlcIlxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXRhYi1sYWJlbFwiPnt7IGgubGFiZWwgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgfVxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNkYy10YWItcGFuZWxzXCIgI3BhbmVsc1JlZj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { isMobile } from '
|
|
2
|
+
import { isMobile } from '../../core/utils/layout.util';
|
|
3
3
|
import { SearchboxComponent } from '../searchbox/searchbox.component';
|
|
4
4
|
import { ButtonComponent } from '../button/button.component';
|
|
5
5
|
import { EmptyStateModule } from '@seniorsistemas/angular-components/empty-state';
|
|
6
6
|
import { LoadingStateModule } from '@seniorsistemas/angular-components/loading-state';
|
|
7
7
|
import { PaginatorComponent } from '../paginator/paginator.component';
|
|
8
8
|
import { Component, EventEmitter, Input, Output, signal, computed, ViewEncapsulation } from '@angular/core';
|
|
9
|
-
import { DEFAULT_TABLE_OPTIONS } from '
|
|
9
|
+
import { DEFAULT_TABLE_OPTIONS } from '../../core/types/table.type';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
import * as i1 from "@angular/common";
|
|
12
12
|
import * as i2 from "@seniorsistemas/angular-components/loading-state";
|
|
@@ -244,10 +244,10 @@ export class TableComponent {
|
|
|
244
244
|
const actVal = actKey ? String(this._(row, actKey) ?? '') : '';
|
|
245
245
|
return [String(opt?.label ?? ''), String(opt?.icon ?? ''), String(opt?.priority ?? ''), String(opt?.size ?? ''), String(opt?.tooltip ?? ''), actVal].join('|');
|
|
246
246
|
}
|
|
247
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
248
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TableComponent, isStandalone: true, selector: "sdc-table", inputs: { cols: "cols", data: "data", loading: "loading", config: "config" }, outputs: { action: "action" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"sdc-table\"\n [class.sdc-table-stack]=\"isMobile ? 'stack' : 'grid'\"\n [class.sdc-table-filtered]=\"!!globalFilter().trim()\"\n>\n <div class=\"sdc-table-caption\" *ngIf=\"showSearch()\">\n <div [style.width]=\"isMobile ? '100%' : '20%'\">\n <sdc-searchbox\n [disabled]=\"loading\"\n [placeholder]=\"searchPlaceholder()\"\n [triggerMode]=\"triggerMode()\"\n (onSearch)=\"onSearchTerm($event)\"\n (onClear)=\"onClearSearch()\"\n />\n </div>\n </div>\n\n <table class=\"sdc-table-grid\">\n <thead>\n <tr>\n @for (col of cols; let i = $index; track i) {\n <th\n [class.sdc-table-th-checkbox]=\"col.type === 'checkbox-selection'\"\n (click)=\"toggleSort(col.field!, col.sortable !== false)\"\n [class.sdc-table-sortable]=\"col.sortable !== false\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n >\n <div class=\"sdc-table-th-inner\" [class.sdc-table-sortable]=\"col.sortable !== false\">\n @switch (col.type) { @case ('checkbox-selection') {\n <span class=\"sdc-table-th-label\">{{ col.header }}</span>\n } @default {\n <span class=\"sdc-table-th-label\">{{ col.header }}</span>\n <span class=\"sdc-table-sort-icons sdc-table-sort-overlay\" *ngIf=\"col.sortable !== false\">\n <ng-container [ngTemplateOutlet]=\"sortIconsTpl\" [ngTemplateOutletContext]=\"{ col: col }\"></ng-container>\n </span>\n } }\n </div>\n <span\n class=\"sdc-table-th-center\"\n *ngIf=\"col.type === 'checkbox-selection' && (cellCfg('checkbox').selectAll ?? true)\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isPageFullySelected()\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelectPage(getCheckedValue($event))\"\n />\n </span>\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (loading) { } @else { @for (row of pageData(); let r = $index; track r) {\n <tr>\n @for (col of cols; let c = $index; track c) {\n <ng-container *ngIf=\"isMobile; else desktopContent\">\n <div class=\"sdc-table-td-mobile\">\n <ng-container [ngTemplateOutlet]=\"sortIconsTpl\" [ngTemplateOutletContext]=\"{ col: col }\"></ng-container>\n <td\n class=\"sdc-table-td sdc-table-tdc sdc-table-mobile-td\"\n [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n [attr.data-title]=\"col.header\"\n (click)=\"toggleSort(col.field!, col.sortable !== false)\"\n >\n <div class=\"sdc-table-td-val\">\n <ng-container\n [ngTemplateOutlet]=\"cellTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row, col: col }\"\n ></ng-container>\n </div>\n </td>\n </div>\n </ng-container>\n <ng-template #desktopContent>\n <td\n class=\"sdc-table-td sdc-table-tdc\"\n [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n [attr.data-title]=\"col.header\"\n >\n <div class=\"sdc-table-td-val\">\n <ng-container\n [ngTemplateOutlet]=\"cellTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row, col: col }\"\n ></ng-container>\n </div>\n </td>\n </ng-template>\n }\n </tr>\n } }\n </tbody>\n </table>\n\n <s-empty-state\n *ngIf=\"!loading && options().empty?.show !== false && totalRecords() === 0\"\n id=\"my-empty-state\"\n iconClass=\"fa fa-inbox\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyText()\"\n class=\"sdc-table-empty-state\"\n >\n </s-empty-state>\n\n <s-loading-state *ngIf=\"loading\" [loading]=\"loading\" [blockWindow]=\"false\" class=\"sdc-table-loading-state\">\n </s-loading-state>\n\n <div class=\"sdc-table-paginator\" *ngIf=\"showPaginator()\">\n <sdc-paginator\n [first]=\"first()\"\n [rows]=\"rows()\"\n [totalRecords]=\"totalRecords()\"\n [rowsPerPageOptions]=\"isMobile ? undefined : rowsPerPageOptions()\"\n [isMobile]=\"isMobile\"\n [totalRecordsLabel]=\"totalRecordsLabel()\"\n (pageChange)=\"onPageChange($event)\"\n ></sdc-paginator>\n </div>\n\n <ng-template #cellTpl let-row let-col=\"col\">\n @switch (col.type) { @case ('checkbox-selection') {\n <ng-container *ngIf=\"cellCfg('checkbox') as checkboxOptions\">\n <div class=\"sdc-table-checkbox\">\n <input type=\"checkbox\" [checked]=\"isRowSelected(row)\" (change)=\"onToggleRow(row, getCheckedValue($event))\" />\n <label>{{ _(row, col.field) }}</label>\n </div>\n </ng-container>\n } @case ('date') {\n {{ formatDate(_(row, col.field), col.format || 'shortDate') }}\n } @case ('strong') {\n <div class=\"sdc-table-strong-label\">{{ _(row, col.field) }}</div>\n } @case ('code') {\n <code class=\"sdc-table-code-label\">{{ _(row, col.field) }}</code>\n } @case ('currency') {\n {{ formatCurrency(_(row, col.field), col.format || 'BRL') }}\n } @case ('tag') {\n <ng-container *ngIf=\"cellCfg('tag') as tagOptions\">\n <div class=\"sdc-table-tags\">\n @for (tag of tagsOf(row, col); let t = $index; track t) {\n <span\n class=\"sdc-table-tag\"\n [style.background]=\"tagOptions.backgroundColor || null\"\n [style.color]=\"tagOptions.color || null\"\n [attr.title]=\"tagOptions.tooltip\"\n >\n <i *ngIf=\"tagOptions.icon\" [class]=\"tagOptions.icon\"></i>\n {{ tag }}\n </span>\n }\n </div>\n </ng-container>\n } @case ('button') {\n <ng-container *ngIf=\"cellCfg('button') as buttonOptions\">\n <ng-container *ngFor=\"let __k of [buttonKey(row, col, buttonOptions)]\">\n <div class=\"sdc-table-button\">\n <sdc-button\n style=\"max-width: 70%\"\n [size]=\"buttonOptions.size\"\n [priority]=\"buttonOptions.priority || 'primary'\"\n [icon]=\"buttonOptions.icon\"\n [label]=\"buttonOptions.label\"\n [disabled]=\"buttonOptions.disabled\"\n [title]=\"buttonOptions.tooltip\"\n [attr.size]=\"buttonOptions.size\"\n [attr.priority]=\"buttonOptions.priority || 'primary'\"\n [attr.severity]=\"buttonOptions.priority || 'primary'\"\n [attr.icon]=\"buttonOptions.icon\"\n [attr.label]=\"buttonOptions.label\"\n [attr.disabled]=\"buttonOptions.disabled ? '' : null\"\n [attr.title]=\"buttonOptions.tooltip || null\"\n [attr.data-key]=\"__k\"\n (click)=\"buttonOptions.disabled ? null : onButtonClick(row, col)\"\n ></sdc-button>\n </div>\n </ng-container>\n </ng-container>\n } @default { {{ _(row, col.field) }} } }\n </ng-template>\n</div>\n\n<ng-template #sortIconsTpl let-col=\"col\">\n <span *ngIf=\"col.sortable !== false && col.type !== 'checkbox-selection'\" class=\"sdc-table-sort-indicator\">\n <i *ngIf=\"sortField() !== col.field\" class=\"fas fa-sort-alt sdc-table-sort-neutral\"></i>\n <i\n *ngIf=\"sortField() === col.field && sortOrder() === 1\"\n class=\"fas fa-sort-amount-up-alt sdc-table-sort-active\"\n ></i>\n <i\n *ngIf=\"sortField() === col.field && sortOrder() === -1\"\n class=\"fas fa-sort-amount-down sdc-table-sort-active\"\n ></i>\n </span>\n <span\n *ngIf=\"col.sortable === false || col.type === 'checkbox-selection'\"\n class=\"sdc-table-sort-indicator sdc-table-sort-indicator-placeholder\"\n ></span>\n</ng-template>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}@media (max-width: 750px){.sdc-table-tag{font-size:.7rem;padding:.6rem .8rem}.sdc-table-sort-indicator-placeholder{display:none!important;width:0!important;height:0!important;min-width:0!important}.sdc-table-paginator{justify-content:center!important}.sdc-table-sort-indicator{gap:.15rem;min-width:1.2rem;position:absolute;left:21px}.sdc-table-sort-indicator i{font-size:.75rem;width:.65rem}.sdc-table-td-val{background:none!important;height:100%;padding:1rem;justify-content:end;border-left:1px solid var(--sdc-formfield-default-border);display:flex;overflow-wrap:anywhere;word-break:break-word;white-space:normal}.sdc-table-td-mobile{border-top:1px solid var(--sdc-formfield-default-border);display:flex;align-items:center;padding-left:10px}.sdc-table.sdc-table-stack thead{display:none}.sdc-table.sdc-table-stack .sdc-table-grid,.sdc-table.sdc-table-stack .sdc-table-grid tbody,.sdc-table.sdc-table-stack .sdc-table-grid tr,.sdc-table.sdc-table-stack .sdc-table-grid td{display:block;width:100%;box-sizing:border-box}.sdc-table.sdc-table-stack .sdc-table-grid tr{border-top:1px solid var(--sdc-formfield-default-border);background:var(--sdc-table-bg-card)}.sdc-table.sdc-table-stack .sdc-table-td{position:relative;padding:0;border-bottom:1px solid var(--sdc-table-border-gray);display:grid!important;grid-template-columns:45% 55%;align-items:center;gap:var(--sdc-table-gap-th-inner)}.sdc-table.sdc-table-stack .sdc-table-td:before{content:attr(data-title);font-weight:600;padding:var(--sdc-table-padding-cell) .5rem var(--sdc-table-padding-cell) var(--sdc-table-padding-cell);border-right:0px solid var(--sdc-formfield-default-border);word-break:break-word}.sdc-table.sdc-table-stack .sdc-table-td>*{grid-column:2;min-width:0}.sdc-table.sdc-table-stack .sdc-table-grid tr .sdc-table-td:last-child{border-bottom:0}.sdc-table.sdc-table-stack .sdc-table-sort-icons{flex-direction:column;line-height:.8}.sdc-table-paginator{border-top:1px solid var(--sdc-table-border-gray)}::ng-deep .p-paginator .p-paginator-next{border-width:1px 1px 1px 1px!important}}@media (min-width: 750px){.sdc-table-tag{font-size:.8rem;padding:.6rem 1.7rem}.sdc-table-sort-indicator-placeholder{width:1.4rem;height:1rem;display:inline-block}.sdc-table-grid thead th+th{border-left:1px solid var(--sdc-formfield-default-border)}}.sdc-table{width:100%;box-sizing:border-box;overflow:hidden;background:var(--sdc-table-bg-card)}.sdc-table .sdc-table-strong-label{font-weight:500;overflow-wrap:anywhere;word-break:break-word;white-space:normal}.sdc-table .sdc-table-code-label{color:var(--sdc-tab-primary);overflow-wrap:anywhere;word-break:break-word;white-space:normal;max-width:100%;display:inline-block}.sdc-table-caption{width:100%;justify-content:end;display:flex;padding:.75rem 0}.sdc-table-grid{width:100%;border-collapse:collapse;table-layout:fixed}thead th{padding:var(--sdc-table-padding-cell);background:var(--sdc-table-bg-card);border-bottom:1px solid var(--sdc-formfield-default-border);-webkit-user-select:none;user-select:none;transition:background var(--sdc-table-transition-fast),border var(--sdc-table-transition-fast)}thead th.sdc-table-sortable{cursor:pointer}thead th.sdc-table-sortable:hover{background:var(--sdc-table-th-hover-bg)}thead th.sdc-table-is-selected{background:var(--sdc-table-th-selected-bg)!important}.sdc-table-sort-neutral{color:var(--sdc-table-sort-neutral)}.sdc-table-sort-active{color:var(--sdc-table-sort-active)}.sdc-table-th-inner{display:flex;align-items:center;gap:var(--sdc-table-gap-th-inner)}.sdc-table-sort-icons i{font-size:inherit;transition:color var(--sdc-table-transition-fast),transform var(--sdc-table-transition-fast),opacity var(--sdc-table-transition-fast)}tbody td{padding:var(--sdc-table-padding-cell);border-bottom:1px solid var(--sdc-table-border-gray);vertical-align:middle}.sdc-table-tags{display:flex;flex-wrap:wrap;gap:var(--sdc-table-gap-tags)}.sdc-table-tag{display:inline-flex;align-items:center;gap:.25rem;border-radius:6px;background:var(--sdc-table-tag-bg)}.sdc-table-sort-indicator{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:1.7rem}.sdc-table-sort-indicator i{width:.75rem;text-align:center}.sdc-table-sort-overlay{position:relative}.sdc-table-paginator{padding:.5rem 0}.sdc-table-button,.sdc-table-checkbox{display:flex;align-items:center;justify-content:center}.sdc-table-empty-state{display:block;padding:12rem}.sdc-table-loading-state{background:var(--sdc-table-bg-loading);display:block;border-bottom:1px solid var(--sdc-formfield-default-border);min-width:10rem;padding:18.8rem 0rem}thead th.sdc-table-th-checkbox{position:relative}thead th.sdc-table-th-checkbox .sdc-table-th-center{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}thead th.sdc-table-th-checkbox .sdc-table-th-center input{pointer-events:auto}thead th.sdc-table-th-checkbox .sdc-table-th-inner{padding-right:.5rem}thead th.sdc-table-th-checkbox .sdc-table-th-label,thead .sdc-table-th-label{color:#333!important;white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SearchboxComponent, selector: "sdc-searchbox", inputs: ["triggerMode"], outputs: ["onSearch", "onClear"] }, { kind: "component", type: PaginatorComponent, selector: "sdc-paginator", inputs: ["first", "rows", "totalRecords", "rowsPerPageOptions", "isMobile", "totalRecordsLabel"], outputs: ["pageChange"] }, { kind: "component", type: ButtonComponent, selector: "sdc-button", inputs: ["disabled", "width", "icon", "id", "label", "priority", "size", "type"], outputs: ["onClick"] }, { kind: "ngmodule", type: LoadingStateModule }, { kind: "component", type: i2.LoadingStateComponent, selector: "s-loading-state", inputs: ["indicator", "id", "blockWindow", "loading"] }, { kind: "ngmodule", type: EmptyStateModule }, { kind: "component", type: i3.EmptyStateComponent, selector: "s-empty-state", inputs: ["id", "title", "iconClass", "description", "showPrimaryAction", "showSecondaryAction", "primaryActionLabel", "secondaryActionLabel", "primaryModel"], outputs: ["primaryAction", "secondaryAction"] }] });
|
|
247
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
248
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TableComponent, isStandalone: true, selector: "sdc-table", inputs: { cols: "cols", data: "data", loading: "loading", config: "config" }, outputs: { action: "action" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"sdc-table\"\n [class.sdc-table-stack]=\"isMobile ? 'stack' : 'grid'\"\n [class.sdc-table-filtered]=\"!!globalFilter().trim()\"\n>\n <div class=\"sdc-table-caption\" *ngIf=\"showSearch()\">\n <div [style.width]=\"isMobile ? '100%' : '20%'\">\n <sdc-searchbox\n [disabled]=\"loading\"\n [placeholder]=\"searchPlaceholder()\"\n [triggerMode]=\"triggerMode()\"\n (onSearch)=\"onSearchTerm($event)\"\n (onClear)=\"onClearSearch()\"\n />\n </div>\n </div>\n\n <table class=\"sdc-table-grid\">\n <thead>\n <tr>\n @for (col of cols; let i = $index; track i) {\n <th\n [class.sdc-table-th-checkbox]=\"col.type === 'checkbox-selection'\"\n (click)=\"toggleSort(col.field!, col.sortable !== false)\"\n [class.sdc-table-sortable]=\"col.sortable !== false\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n >\n <div class=\"sdc-table-th-inner\" [class.sdc-table-sortable]=\"col.sortable !== false\">\n @switch (col.type) { @case ('checkbox-selection') {\n <span class=\"sdc-table-th-label\">{{ col.header }}</span>\n } @default {\n <span class=\"sdc-table-th-label\">{{ col.header }}</span>\n <span class=\"sdc-table-sort-icons sdc-table-sort-overlay\" *ngIf=\"col.sortable !== false\">\n <ng-container [ngTemplateOutlet]=\"sortIconsTpl\" [ngTemplateOutletContext]=\"{ col: col }\"></ng-container>\n </span>\n } }\n </div>\n <span\n class=\"sdc-table-th-center\"\n *ngIf=\"col.type === 'checkbox-selection' && (cellCfg('checkbox').selectAll ?? true)\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isPageFullySelected()\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelectPage(getCheckedValue($event))\"\n />\n </span>\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (loading) { } @else { @for (row of pageData(); let r = $index; track r) {\n <tr>\n @for (col of cols; let c = $index; track c) {\n <ng-container *ngIf=\"isMobile; else desktopContent\">\n <div class=\"sdc-table-td-mobile\">\n <ng-container [ngTemplateOutlet]=\"sortIconsTpl\" [ngTemplateOutletContext]=\"{ col: col }\"></ng-container>\n <td\n class=\"sdc-table-td sdc-table-tdc sdc-table-mobile-td\"\n [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n [attr.data-title]=\"col.header\"\n (click)=\"toggleSort(col.field!, col.sortable !== false)\"\n >\n <div class=\"sdc-table-td-val\">\n <ng-container\n [ngTemplateOutlet]=\"cellTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row, col: col }\"\n ></ng-container>\n </div>\n </td>\n </div>\n </ng-container>\n <ng-template #desktopContent>\n <td\n class=\"sdc-table-td sdc-table-tdc\"\n [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n [attr.data-title]=\"col.header\"\n >\n <div class=\"sdc-table-td-val\">\n <ng-container\n [ngTemplateOutlet]=\"cellTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row, col: col }\"\n ></ng-container>\n </div>\n </td>\n </ng-template>\n }\n </tr>\n } }\n </tbody>\n </table>\n\n <s-empty-state\n *ngIf=\"!loading && options().empty?.show !== false && totalRecords() === 0\"\n id=\"my-empty-state\"\n iconClass=\"fa fa-inbox\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyText()\"\n class=\"sdc-table-empty-state\"\n >\n </s-empty-state>\n\n <s-loading-state *ngIf=\"loading\" [loading]=\"loading\" [blockWindow]=\"false\" class=\"sdc-table-loading-state\">\n </s-loading-state>\n\n <div class=\"sdc-table-paginator\" *ngIf=\"showPaginator()\">\n <sdc-paginator\n [first]=\"first()\"\n [rows]=\"rows()\"\n [totalRecords]=\"totalRecords()\"\n [rowsPerPageOptions]=\"isMobile ? undefined : rowsPerPageOptions()\"\n [isMobile]=\"isMobile\"\n [totalRecordsLabel]=\"totalRecordsLabel()\"\n (pageChange)=\"onPageChange($event)\"\n ></sdc-paginator>\n </div>\n\n <ng-template #cellTpl let-row let-col=\"col\">\n @switch (col.type) { @case ('checkbox-selection') {\n <ng-container *ngIf=\"cellCfg('checkbox') as checkboxOptions\">\n <div class=\"sdc-table-checkbox\">\n <input type=\"checkbox\" [checked]=\"isRowSelected(row)\" (change)=\"onToggleRow(row, getCheckedValue($event))\" />\n <label>{{ _(row, col.field) }}</label>\n </div>\n </ng-container>\n } @case ('date') {\n {{ formatDate(_(row, col.field), col.format || 'shortDate') }}\n } @case ('strong') {\n <div class=\"sdc-table-strong-label\">{{ _(row, col.field) }}</div>\n } @case ('code') {\n <code class=\"sdc-table-code-label\">{{ _(row, col.field) }}</code>\n } @case ('currency') {\n {{ formatCurrency(_(row, col.field), col.format || 'BRL') }}\n } @case ('tag') {\n <ng-container *ngIf=\"cellCfg('tag') as tagOptions\">\n <div class=\"sdc-table-tags\">\n @for (tag of tagsOf(row, col); let t = $index; track t) {\n <span\n class=\"sdc-table-tag\"\n [style.background]=\"tagOptions.backgroundColor || null\"\n [style.color]=\"tagOptions.color || null\"\n [attr.title]=\"tagOptions.tooltip\"\n >\n <i *ngIf=\"tagOptions.icon\" [class]=\"tagOptions.icon\"></i>\n {{ tag }}\n </span>\n }\n </div>\n </ng-container>\n } @case ('button') {\n <ng-container *ngIf=\"cellCfg('button') as buttonOptions\">\n <ng-container *ngFor=\"let __k of [buttonKey(row, col, buttonOptions)]\">\n <div class=\"sdc-table-button\">\n <sdc-button\n style=\"max-width: 70%\"\n [size]=\"buttonOptions.size\"\n [priority]=\"buttonOptions.priority || 'primary'\"\n [icon]=\"buttonOptions.icon\"\n [label]=\"buttonOptions.label\"\n [disabled]=\"buttonOptions.disabled\"\n [title]=\"buttonOptions.tooltip\"\n [attr.size]=\"buttonOptions.size\"\n [attr.priority]=\"buttonOptions.priority || 'primary'\"\n [attr.severity]=\"buttonOptions.priority || 'primary'\"\n [attr.icon]=\"buttonOptions.icon\"\n [attr.label]=\"buttonOptions.label\"\n [attr.disabled]=\"buttonOptions.disabled ? '' : null\"\n [attr.title]=\"buttonOptions.tooltip || null\"\n [attr.data-key]=\"__k\"\n (click)=\"buttonOptions.disabled ? null : onButtonClick(row, col)\"\n ></sdc-button>\n </div>\n </ng-container>\n </ng-container>\n } @default { {{ _(row, col.field) }} } }\n </ng-template>\n</div>\n\n<ng-template #sortIconsTpl let-col=\"col\">\n <span *ngIf=\"col.sortable !== false && col.type !== 'checkbox-selection'\" class=\"sdc-table-sort-indicator\">\n <i *ngIf=\"sortField() !== col.field\" class=\"fas fa-sort-alt sdc-table-sort-neutral\"></i>\n <i\n *ngIf=\"sortField() === col.field && sortOrder() === 1\"\n class=\"fas fa-sort-amount-up-alt sdc-table-sort-active\"\n ></i>\n <i\n *ngIf=\"sortField() === col.field && sortOrder() === -1\"\n class=\"fas fa-sort-amount-down sdc-table-sort-active\"\n ></i>\n </span>\n <span\n *ngIf=\"col.sortable === false || col.type === 'checkbox-selection'\"\n class=\"sdc-table-sort-indicator sdc-table-sort-indicator-placeholder\"\n ></span>\n</ng-template>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}@media (max-width: 750px){.sdc-table-tag{font-size:.7rem;padding:.6rem .8rem}.sdc-table-sort-indicator-placeholder{display:none!important;width:0!important;height:0!important;min-width:0!important}.sdc-table-paginator{justify-content:center!important}.sdc-table-sort-indicator{gap:.15rem;min-width:1.2rem;position:absolute;left:21px}.sdc-table-sort-indicator i{font-size:.75rem;width:.65rem}.sdc-table-td-val{background:none!important;height:100%;padding:1rem;justify-content:end;border-left:1px solid var(--sdc-formfield-default-border);display:flex;overflow-wrap:anywhere;word-break:break-word;white-space:normal}.sdc-table-td-mobile{border-top:1px solid var(--sdc-formfield-default-border);display:flex;align-items:center;padding-left:10px}.sdc-table.sdc-table-stack thead{display:none}.sdc-table.sdc-table-stack .sdc-table-grid,.sdc-table.sdc-table-stack .sdc-table-grid tbody,.sdc-table.sdc-table-stack .sdc-table-grid tr,.sdc-table.sdc-table-stack .sdc-table-grid td{display:block;width:100%;box-sizing:border-box}.sdc-table.sdc-table-stack .sdc-table-grid tr{border-top:1px solid var(--sdc-formfield-default-border);background:var(--sdc-table-bg-card)}.sdc-table.sdc-table-stack .sdc-table-td{position:relative;padding:0;border-bottom:1px solid var(--sdc-table-border-gray);display:grid!important;grid-template-columns:45% 55%;align-items:center;gap:var(--sdc-table-gap-th-inner)}.sdc-table.sdc-table-stack .sdc-table-td:before{content:attr(data-title);font-weight:600;padding:var(--sdc-table-padding-cell) .5rem var(--sdc-table-padding-cell) var(--sdc-table-padding-cell);border-right:0px solid var(--sdc-formfield-default-border);word-break:break-word}.sdc-table.sdc-table-stack .sdc-table-td>*{grid-column:2;min-width:0}.sdc-table.sdc-table-stack .sdc-table-grid tr .sdc-table-td:last-child{border-bottom:0}.sdc-table.sdc-table-stack .sdc-table-sort-icons{flex-direction:column;line-height:.8}.sdc-table-paginator{border-top:1px solid var(--sdc-table-border-gray)}::ng-deep .p-paginator .p-paginator-next{border-width:1px 1px 1px 1px!important}}@media (min-width: 750px){.sdc-table-tag{font-size:.8rem;padding:.6rem 1.7rem}.sdc-table-sort-indicator-placeholder{width:1.4rem;height:1rem;display:inline-block}.sdc-table-grid thead th+th{border-left:1px solid var(--sdc-formfield-default-border)}}.sdc-table{width:100%;box-sizing:border-box;overflow:hidden;background:var(--sdc-table-bg-card)}.sdc-table .sdc-table-strong-label{font-weight:500;overflow-wrap:anywhere;word-break:break-word;white-space:normal}.sdc-table .sdc-table-code-label{color:var(--sdc-tab-primary);overflow-wrap:anywhere;word-break:break-word;white-space:normal;max-width:100%;display:inline-block}.sdc-table-caption{width:100%;justify-content:end;display:flex;padding:.75rem 0}.sdc-table-grid{width:100%;border-collapse:collapse;table-layout:fixed}thead th{padding:var(--sdc-table-padding-cell);background:var(--sdc-table-bg-card);border-bottom:1px solid var(--sdc-formfield-default-border);-webkit-user-select:none;user-select:none;transition:background var(--sdc-table-transition-fast),border var(--sdc-table-transition-fast)}thead th.sdc-table-sortable{cursor:pointer}thead th.sdc-table-sortable:hover{background:var(--sdc-table-th-hover-bg)}thead th.sdc-table-is-selected{background:var(--sdc-table-th-selected-bg)!important}.sdc-table-sort-neutral{color:var(--sdc-table-sort-neutral)}.sdc-table-sort-active{color:var(--sdc-table-sort-active)}.sdc-table-th-inner{display:flex;align-items:center;gap:var(--sdc-table-gap-th-inner)}.sdc-table-sort-icons i{font-size:inherit;transition:color var(--sdc-table-transition-fast),transform var(--sdc-table-transition-fast),opacity var(--sdc-table-transition-fast)}tbody td{padding:var(--sdc-table-padding-cell);border-bottom:1px solid var(--sdc-table-border-gray);vertical-align:middle}.sdc-table-tags{display:flex;flex-wrap:wrap;gap:var(--sdc-table-gap-tags)}.sdc-table-tag{display:inline-flex;align-items:center;gap:.25rem;border-radius:6px;background:var(--sdc-table-tag-bg)}.sdc-table-sort-indicator{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:1.7rem}.sdc-table-sort-indicator i{width:.75rem;text-align:center}.sdc-table-sort-overlay{position:relative}.sdc-table-paginator{padding:.5rem 0}.sdc-table-button,.sdc-table-checkbox{display:flex;align-items:center;justify-content:center}.sdc-table-empty-state{display:block;padding:12rem}.sdc-table-loading-state{background:var(--sdc-table-bg-loading);display:block;border-bottom:1px solid var(--sdc-formfield-default-border);min-width:10rem;padding:18.8rem 0rem}thead th.sdc-table-th-checkbox{position:relative}thead th.sdc-table-th-checkbox .sdc-table-th-center{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}thead th.sdc-table-th-checkbox .sdc-table-th-center input{pointer-events:auto}thead th.sdc-table-th-checkbox .sdc-table-th-inner{padding-right:.5rem}thead th.sdc-table-th-checkbox .sdc-table-th-label,thead .sdc-table-th-label{color:#333!important;white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SearchboxComponent, selector: "sdc-searchbox", inputs: ["triggerMode"], outputs: ["onSearch", "onClear"] }, { kind: "component", type: PaginatorComponent, selector: "sdc-paginator", inputs: ["first", "rows", "totalRecords", "rowsPerPageOptions", "isMobile", "totalRecordsLabel"], outputs: ["pageChange"] }, { kind: "component", type: ButtonComponent, selector: "sdc-button", inputs: ["disabled", "width", "icon", "id", "label", "priority", "size", "type"], outputs: ["onClick"] }, { kind: "ngmodule", type: LoadingStateModule }, { kind: "component", type: i2.LoadingStateComponent, selector: "s-loading-state", inputs: ["indicator", "id", "blockWindow", "loading"] }, { kind: "ngmodule", type: EmptyStateModule }, { kind: "component", type: i3.EmptyStateComponent, selector: "s-empty-state", inputs: ["id", "title", "iconClass", "description", "showPrimaryAction", "showSecondaryAction", "primaryActionLabel", "secondaryActionLabel", "primaryModel"], outputs: ["primaryAction", "secondaryAction"] }] });
|
|
249
249
|
}
|
|
250
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
250
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableComponent, decorators: [{
|
|
251
251
|
type: Component,
|
|
252
252
|
args: [{ selector: 'sdc-table', standalone: true, imports: [CommonModule, SearchboxComponent, PaginatorComponent, ButtonComponent, LoadingStateModule, EmptyStateModule], encapsulation: ViewEncapsulation.Emulated, template: "<div\n class=\"sdc-table\"\n [class.sdc-table-stack]=\"isMobile ? 'stack' : 'grid'\"\n [class.sdc-table-filtered]=\"!!globalFilter().trim()\"\n>\n <div class=\"sdc-table-caption\" *ngIf=\"showSearch()\">\n <div [style.width]=\"isMobile ? '100%' : '20%'\">\n <sdc-searchbox\n [disabled]=\"loading\"\n [placeholder]=\"searchPlaceholder()\"\n [triggerMode]=\"triggerMode()\"\n (onSearch)=\"onSearchTerm($event)\"\n (onClear)=\"onClearSearch()\"\n />\n </div>\n </div>\n\n <table class=\"sdc-table-grid\">\n <thead>\n <tr>\n @for (col of cols; let i = $index; track i) {\n <th\n [class.sdc-table-th-checkbox]=\"col.type === 'checkbox-selection'\"\n (click)=\"toggleSort(col.field!, col.sortable !== false)\"\n [class.sdc-table-sortable]=\"col.sortable !== false\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n >\n <div class=\"sdc-table-th-inner\" [class.sdc-table-sortable]=\"col.sortable !== false\">\n @switch (col.type) { @case ('checkbox-selection') {\n <span class=\"sdc-table-th-label\">{{ col.header }}</span>\n } @default {\n <span class=\"sdc-table-th-label\">{{ col.header }}</span>\n <span class=\"sdc-table-sort-icons sdc-table-sort-overlay\" *ngIf=\"col.sortable !== false\">\n <ng-container [ngTemplateOutlet]=\"sortIconsTpl\" [ngTemplateOutletContext]=\"{ col: col }\"></ng-container>\n </span>\n } }\n </div>\n <span\n class=\"sdc-table-th-center\"\n *ngIf=\"col.type === 'checkbox-selection' && (cellCfg('checkbox').selectAll ?? true)\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isPageFullySelected()\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelectPage(getCheckedValue($event))\"\n />\n </span>\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (loading) { } @else { @for (row of pageData(); let r = $index; track r) {\n <tr>\n @for (col of cols; let c = $index; track c) {\n <ng-container *ngIf=\"isMobile; else desktopContent\">\n <div class=\"sdc-table-td-mobile\">\n <ng-container [ngTemplateOutlet]=\"sortIconsTpl\" [ngTemplateOutletContext]=\"{ col: col }\"></ng-container>\n <td\n class=\"sdc-table-td sdc-table-tdc sdc-table-mobile-td\"\n [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n [attr.data-title]=\"col.header\"\n (click)=\"toggleSort(col.field!, col.sortable !== false)\"\n >\n <div class=\"sdc-table-td-val\">\n <ng-container\n [ngTemplateOutlet]=\"cellTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row, col: col }\"\n ></ng-container>\n </div>\n </td>\n </div>\n </ng-container>\n <ng-template #desktopContent>\n <td\n class=\"sdc-table-td sdc-table-tdc\"\n [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\"\n [attr.data-title]=\"col.header\"\n >\n <div class=\"sdc-table-td-val\">\n <ng-container\n [ngTemplateOutlet]=\"cellTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row, col: col }\"\n ></ng-container>\n </div>\n </td>\n </ng-template>\n }\n </tr>\n } }\n </tbody>\n </table>\n\n <s-empty-state\n *ngIf=\"!loading && options().empty?.show !== false && totalRecords() === 0\"\n id=\"my-empty-state\"\n iconClass=\"fa fa-inbox\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyText()\"\n class=\"sdc-table-empty-state\"\n >\n </s-empty-state>\n\n <s-loading-state *ngIf=\"loading\" [loading]=\"loading\" [blockWindow]=\"false\" class=\"sdc-table-loading-state\">\n </s-loading-state>\n\n <div class=\"sdc-table-paginator\" *ngIf=\"showPaginator()\">\n <sdc-paginator\n [first]=\"first()\"\n [rows]=\"rows()\"\n [totalRecords]=\"totalRecords()\"\n [rowsPerPageOptions]=\"isMobile ? undefined : rowsPerPageOptions()\"\n [isMobile]=\"isMobile\"\n [totalRecordsLabel]=\"totalRecordsLabel()\"\n (pageChange)=\"onPageChange($event)\"\n ></sdc-paginator>\n </div>\n\n <ng-template #cellTpl let-row let-col=\"col\">\n @switch (col.type) { @case ('checkbox-selection') {\n <ng-container *ngIf=\"cellCfg('checkbox') as checkboxOptions\">\n <div class=\"sdc-table-checkbox\">\n <input type=\"checkbox\" [checked]=\"isRowSelected(row)\" (change)=\"onToggleRow(row, getCheckedValue($event))\" />\n <label>{{ _(row, col.field) }}</label>\n </div>\n </ng-container>\n } @case ('date') {\n {{ formatDate(_(row, col.field), col.format || 'shortDate') }}\n } @case ('strong') {\n <div class=\"sdc-table-strong-label\">{{ _(row, col.field) }}</div>\n } @case ('code') {\n <code class=\"sdc-table-code-label\">{{ _(row, col.field) }}</code>\n } @case ('currency') {\n {{ formatCurrency(_(row, col.field), col.format || 'BRL') }}\n } @case ('tag') {\n <ng-container *ngIf=\"cellCfg('tag') as tagOptions\">\n <div class=\"sdc-table-tags\">\n @for (tag of tagsOf(row, col); let t = $index; track t) {\n <span\n class=\"sdc-table-tag\"\n [style.background]=\"tagOptions.backgroundColor || null\"\n [style.color]=\"tagOptions.color || null\"\n [attr.title]=\"tagOptions.tooltip\"\n >\n <i *ngIf=\"tagOptions.icon\" [class]=\"tagOptions.icon\"></i>\n {{ tag }}\n </span>\n }\n </div>\n </ng-container>\n } @case ('button') {\n <ng-container *ngIf=\"cellCfg('button') as buttonOptions\">\n <ng-container *ngFor=\"let __k of [buttonKey(row, col, buttonOptions)]\">\n <div class=\"sdc-table-button\">\n <sdc-button\n style=\"max-width: 70%\"\n [size]=\"buttonOptions.size\"\n [priority]=\"buttonOptions.priority || 'primary'\"\n [icon]=\"buttonOptions.icon\"\n [label]=\"buttonOptions.label\"\n [disabled]=\"buttonOptions.disabled\"\n [title]=\"buttonOptions.tooltip\"\n [attr.size]=\"buttonOptions.size\"\n [attr.priority]=\"buttonOptions.priority || 'primary'\"\n [attr.severity]=\"buttonOptions.priority || 'primary'\"\n [attr.icon]=\"buttonOptions.icon\"\n [attr.label]=\"buttonOptions.label\"\n [attr.disabled]=\"buttonOptions.disabled ? '' : null\"\n [attr.title]=\"buttonOptions.tooltip || null\"\n [attr.data-key]=\"__k\"\n (click)=\"buttonOptions.disabled ? null : onButtonClick(row, col)\"\n ></sdc-button>\n </div>\n </ng-container>\n </ng-container>\n } @default { {{ _(row, col.field) }} } }\n </ng-template>\n</div>\n\n<ng-template #sortIconsTpl let-col=\"col\">\n <span *ngIf=\"col.sortable !== false && col.type !== 'checkbox-selection'\" class=\"sdc-table-sort-indicator\">\n <i *ngIf=\"sortField() !== col.field\" class=\"fas fa-sort-alt sdc-table-sort-neutral\"></i>\n <i\n *ngIf=\"sortField() === col.field && sortOrder() === 1\"\n class=\"fas fa-sort-amount-up-alt sdc-table-sort-active\"\n ></i>\n <i\n *ngIf=\"sortField() === col.field && sortOrder() === -1\"\n class=\"fas fa-sort-amount-down sdc-table-sort-active\"\n ></i>\n </span>\n <span\n *ngIf=\"col.sortable === false || col.type === 'checkbox-selection'\"\n class=\"sdc-table-sort-indicator sdc-table-sort-indicator-placeholder\"\n ></span>\n</ng-template>\n", styles: [":host{display:block;width:100%;box-sizing:border-box}@media (max-width: 750px){.sdc-table-tag{font-size:.7rem;padding:.6rem .8rem}.sdc-table-sort-indicator-placeholder{display:none!important;width:0!important;height:0!important;min-width:0!important}.sdc-table-paginator{justify-content:center!important}.sdc-table-sort-indicator{gap:.15rem;min-width:1.2rem;position:absolute;left:21px}.sdc-table-sort-indicator i{font-size:.75rem;width:.65rem}.sdc-table-td-val{background:none!important;height:100%;padding:1rem;justify-content:end;border-left:1px solid var(--sdc-formfield-default-border);display:flex;overflow-wrap:anywhere;word-break:break-word;white-space:normal}.sdc-table-td-mobile{border-top:1px solid var(--sdc-formfield-default-border);display:flex;align-items:center;padding-left:10px}.sdc-table.sdc-table-stack thead{display:none}.sdc-table.sdc-table-stack .sdc-table-grid,.sdc-table.sdc-table-stack .sdc-table-grid tbody,.sdc-table.sdc-table-stack .sdc-table-grid tr,.sdc-table.sdc-table-stack .sdc-table-grid td{display:block;width:100%;box-sizing:border-box}.sdc-table.sdc-table-stack .sdc-table-grid tr{border-top:1px solid var(--sdc-formfield-default-border);background:var(--sdc-table-bg-card)}.sdc-table.sdc-table-stack .sdc-table-td{position:relative;padding:0;border-bottom:1px solid var(--sdc-table-border-gray);display:grid!important;grid-template-columns:45% 55%;align-items:center;gap:var(--sdc-table-gap-th-inner)}.sdc-table.sdc-table-stack .sdc-table-td:before{content:attr(data-title);font-weight:600;padding:var(--sdc-table-padding-cell) .5rem var(--sdc-table-padding-cell) var(--sdc-table-padding-cell);border-right:0px solid var(--sdc-formfield-default-border);word-break:break-word}.sdc-table.sdc-table-stack .sdc-table-td>*{grid-column:2;min-width:0}.sdc-table.sdc-table-stack .sdc-table-grid tr .sdc-table-td:last-child{border-bottom:0}.sdc-table.sdc-table-stack .sdc-table-sort-icons{flex-direction:column;line-height:.8}.sdc-table-paginator{border-top:1px solid var(--sdc-table-border-gray)}::ng-deep .p-paginator .p-paginator-next{border-width:1px 1px 1px 1px!important}}@media (min-width: 750px){.sdc-table-tag{font-size:.8rem;padding:.6rem 1.7rem}.sdc-table-sort-indicator-placeholder{width:1.4rem;height:1rem;display:inline-block}.sdc-table-grid thead th+th{border-left:1px solid var(--sdc-formfield-default-border)}}.sdc-table{width:100%;box-sizing:border-box;overflow:hidden;background:var(--sdc-table-bg-card)}.sdc-table .sdc-table-strong-label{font-weight:500;overflow-wrap:anywhere;word-break:break-word;white-space:normal}.sdc-table .sdc-table-code-label{color:var(--sdc-tab-primary);overflow-wrap:anywhere;word-break:break-word;white-space:normal;max-width:100%;display:inline-block}.sdc-table-caption{width:100%;justify-content:end;display:flex;padding:.75rem 0}.sdc-table-grid{width:100%;border-collapse:collapse;table-layout:fixed}thead th{padding:var(--sdc-table-padding-cell);background:var(--sdc-table-bg-card);border-bottom:1px solid var(--sdc-formfield-default-border);-webkit-user-select:none;user-select:none;transition:background var(--sdc-table-transition-fast),border var(--sdc-table-transition-fast)}thead th.sdc-table-sortable{cursor:pointer}thead th.sdc-table-sortable:hover{background:var(--sdc-table-th-hover-bg)}thead th.sdc-table-is-selected{background:var(--sdc-table-th-selected-bg)!important}.sdc-table-sort-neutral{color:var(--sdc-table-sort-neutral)}.sdc-table-sort-active{color:var(--sdc-table-sort-active)}.sdc-table-th-inner{display:flex;align-items:center;gap:var(--sdc-table-gap-th-inner)}.sdc-table-sort-icons i{font-size:inherit;transition:color var(--sdc-table-transition-fast),transform var(--sdc-table-transition-fast),opacity var(--sdc-table-transition-fast)}tbody td{padding:var(--sdc-table-padding-cell);border-bottom:1px solid var(--sdc-table-border-gray);vertical-align:middle}.sdc-table-tags{display:flex;flex-wrap:wrap;gap:var(--sdc-table-gap-tags)}.sdc-table-tag{display:inline-flex;align-items:center;gap:.25rem;border-radius:6px;background:var(--sdc-table-tag-bg)}.sdc-table-sort-indicator{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:1.7rem}.sdc-table-sort-indicator i{width:.75rem;text-align:center}.sdc-table-sort-overlay{position:relative}.sdc-table-paginator{padding:.5rem 0}.sdc-table-button,.sdc-table-checkbox{display:flex;align-items:center;justify-content:center}.sdc-table-empty-state{display:block;padding:12rem}.sdc-table-loading-state{background:var(--sdc-table-bg-loading);display:block;border-bottom:1px solid var(--sdc-formfield-default-border);min-width:10rem;padding:18.8rem 0rem}thead th.sdc-table-th-checkbox{position:relative}thead th.sdc-table-th-checkbox .sdc-table-th-center{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}thead th.sdc-table-th-checkbox .sdc-table-th-center input{pointer-events:auto}thead th.sdc-table-th-checkbox .sdc-table-th-inner{padding-right:.5rem}thead th.sdc-table-th-checkbox .sdc-table-th-label,thead .sdc-table-th-label{color:#333!important;white-space:nowrap}\n"] }]
|
|
253
253
|
}], propDecorators: { cols: [{
|
|
@@ -265,4 +265,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
265
265
|
}], action: [{
|
|
266
266
|
type: Output
|
|
267
267
|
}] } });
|
|
268
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBOEQsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEssT0FBTyxFQUFFLHFCQUFxQixFQUFxRSxNQUFNLGdDQUFnQyxDQUFDOzs7OztBQVcxSSxNQUFNLE9BQU8sY0FBYztJQUNFLElBQUksR0FBa0IsRUFBRSxDQUFDO0lBQ3pCLElBQUksR0FBUSxFQUFFLENBQUM7SUFDZCxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ3pCLE1BQU0sR0FBaUIscUJBQXFCLENBQUM7SUFFL0QsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFtRCxDQUFDO0lBRXBFLFFBQVEsR0FBWSxRQUFRLEVBQUUsQ0FBQztJQUUvQixVQUFVLEdBQUcsUUFBUSxDQUFVLEdBQUcs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RSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNFLElBQUk7c0JBQTlCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNHLE9BQU87c0JBQWxDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO2dCQUNFLE1BQU07c0JBQWpDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO2dCQUVoQixNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICdsaWIvc3JjL2NvcmUvdXRpbHMvbGF5b3V0LnV0aWwnO1xuaW1wb3J0IHsgU2VhcmNoYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoYm94L3NlYXJjaGJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnaW5hdG9yU3RhdGUgfSBmcm9tICdwcmltZW5nL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9lbXB0eS1zdGF0ZSc7XG5pbXBvcnQgeyBMb2FkaW5nU3RhdGVNb2R1bGUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2xvYWRpbmctc3RhdGUnO1xuaW1wb3J0IHsgUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIHNpZ25hbCwgY29tcHV0ZWQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgRG9DaGVjaywgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBERUZBVUxUX1RBQkxFX09QVElPTlMsIHR5cGUgUm93QmFzZSwgdHlwZSBTb3J0T3JkZXIsIHR5cGUgVGFibGVDb2x1bW4sIHR5cGUgVGFibGVPcHRpb25zIH0gZnJvbSAnbGliL3NyYy9jb3JlL3R5cGVzL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IHR5cGUgU2VhcmNoVHJpZ2dlck1vZGUgfSBmcm9tICdsaWIvc3JjL2NvcmUvdHlwZXMvc2VhcmNoYm94LnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtdGFibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTZWFyY2hib3hDb21wb25lbnQsIFBhZ2luYXRvckNvbXBvbmVudCwgQnV0dG9uQ29tcG9uZW50LCBMb2FkaW5nU3RhdGVNb2R1bGUsIEVtcHR5U3RhdGVNb2R1bGVdLFxuICBzdHlsZVVybDogJy4vdGFibGUuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQ8VCBleHRlbmRzIFJvd0Jhc2UgPSBSb3dCYXNlPiBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgRG9DaGVjayB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbHM6IFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgZGF0YTogVFtdID0gW107XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSB9KSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSB9KSBjb25maWc6IFRhYmxlT3B0aW9ucyA9IERFRkFVTFRfVEFCTEVfT1BUSU9OUztcblxuICBAT3V0cHV0KCkgYWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IGNvbHVtbjogVGFibGVDb2x1bW47IHJvdzogVDsgdmFsdWU6IHVua25vd24gfT4oKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4gPSBpc01vYmlsZSgpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzaG93U2VhcmNoID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gdGhpcy5vcHRpb25zKCkuc2VhcmNoPy5zaG93ID8/IGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dQYWdpbmF0b3IgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB0aGlzLm9wdGlvbnMoKS5wYWdpbmF0aW9uPy5zaG93ID8/IGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm93c1BlclBhZ2VPcHRpb25zID0gY29tcHV0ZWQ8bnVtYmVyW10+KCgpID0+IHRoaXMub3B0aW9ucygpLnBhZ2luYXRpb24/LnJvd3NQZXJQYWdlT3B0aW9ucyA/PyBbXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWFyY2hQbGFjZWhvbGRlciA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4gdGhpcy5vcHRpb25zKCkuc2VhcmNoPy5wbGFjZWhvbGRlciA/PyAnJyk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0cmlnZ2VyTW9kZSA9IGNvbXB1dGVkPFNlYXJjaFRyaWdnZXJNb2RlPigoKSA9PiB0aGlzLm9wdGlvbnMoKS5zZWFyY2g/LnR5cGUgPz8gJ2F1dG8nKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRvdGFsUmVjb3Jkc0xhYmVsID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB0aGlzLm9wdGlvbnMoKS50YWJsZT8udG90YWxSZWNvcmRzTGFiZWwgPz8gJycpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZW1wdHlUaXRsZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4gdGhpcy5vcHRpb25zKCkuZW1wdHk/LnRpdGxlID8/ICcnKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGVtcHR5VGV4dCA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4gdGhpcy5vcHRpb25zKCkuZW1wdHk/LnRleHQgPz8gJycpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zID0gc2lnbmFsPFRhYmxlT3B0aW9ucz4oREVGQVVMVF9UQUJMRV9PUFRJT05TKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGdsb2JhbEZpbHRlciA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNvcnRGaWVsZCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNvcnRPcmRlciA9IHNpZ25hbDxTb3J0T3JkZXI+KDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0aW9uID0gc2lnbmFsPFRbXT4oW10pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlyc3QgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvd3MgPSBzaWduYWw8bnVtYmVyPihERUZBVUxUX1RBQkxFX09QVElPTlMucGFnaW5hdGlvbj8ucm93c1BlclBhZ2UgPz8gMTApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJlZERhdGEgPSBjb21wdXRlZDxUW10+KCgpID0+IHtcbiAgICBjb25zdCBxID0gdGhpcy5nbG9iYWxGaWx0ZXIoKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoIXEpIHsgcmV0dXJuIHRoaXMuZGF0YTsgfVxuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuY29scy5maWx0ZXIoYyA9PiAoYyBhcyBhbnkpLnNlYXJjaGFibGUgPz8gdHJ1ZSkuZmlsdGVyKGMgPT4gISFjLmZpZWxkKS5tYXAoYyA9PiBjLmZpZWxkISkgYXMgc3RyaW5nW107XG4gICAgaWYgKGZpZWxkcy5sZW5ndGggPT09IDApIHsgcmV0dXJuIHRoaXMuZGF0YTsgfVxuICAgIHJldHVybiB0aGlzLmRhdGEuZmlsdGVyKHJvdyA9PlxuICAgICAgZmllbGRzLnNvbWUoZiA9PiB7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLl8ocm93LCBmKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHsgcmV0dXJuIHYuam9pbignICcpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSk7IH1cbiAgICAgICAgcmV0dXJuIFN0cmluZyh2ID8/ICcnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpO1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc29ydGVkRGF0YSA9IGNvbXB1dGVkPFRbXT4oKCkgPT4ge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5zb3J0RmllbGQoKTtcbiAgICBjb25zdCBvcmRlciA9IHRoaXMuc29ydE9yZGVyKCk7XG4gICAgY29uc3QgYXJyID0gWy4uLnRoaXMuZmlsdGVyZWREYXRhKCldO1xuICAgIGlmICghZmllbGQgfHwgb3JkZXIgPT09IDApIHsgcmV0dXJuIGFycjsgfVxuICAgIHJldHVybiBhcnIuc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3QgdmEgPSB0aGlzLl8oYSwgZmllbGQpO1xuICAgICAgY29uc3QgdmIgPSB0aGlzLl8oYiwgZmllbGQpO1xuICAgICAgaWYgKHZhID09IG51bGwgJiYgdmIgPT0gbnVsbCkgeyByZXR1cm4gMDsgfVxuICAgICAgaWYgKHZhID09IG51bGwpIHsgcmV0dXJuIC1vcmRlcjsgfVxuICAgICAgaWYgKHZiID09IG51bGwpIHsgcmV0dXJuIG9yZGVyOyB9XG4gICAgICBpZiAodHlwZW9mIHZhID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmIgPT09ICdudW1iZXInKSB7IHJldHVybiAodmEgLSB2YikgKiBvcmRlcjsgfVxuICAgICAgcmV0dXJuIFN0cmluZyh2YSkubG9jYWxlQ29tcGFyZShTdHJpbmcodmIpKSAqIG9yZGVyO1xuICAgIH0pO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdG90YWxSZWNvcmRzID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB0aGlzLnNvcnRlZERhdGEoKS5sZW5ndGgpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBwYWdlRGF0YSA9IGNvbXB1dGVkPFRbXT4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5zaG93UGFnaW5hdG9yKCkpIHJldHVybiB0aGlzLnNvcnRlZERhdGEoKTtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuZmlyc3QoKTtcbiAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMucm93cygpO1xuICAgIHJldHVybiB0aGlzLnNvcnRlZERhdGEoKS5zbGljZShzdGFydCwgZW5kKTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBjb25maWdIYXNoID0gJyc7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSkge1xuICAgICAgdGhpcy5hcHBseUNvbmZpZ09wdGlvbnMoKTtcbiAgICAgIHRoaXMucm93cy5zZXQodGhpcy5vcHRpb25zKCkucGFnaW5hdGlvbj8ucm93c1BlclBhZ2UgPz8gMTApO1xuICAgICAgdGhpcy5maXJzdC5zZXQoMCk7XG4gICAgICB0aGlzLmNvbmZpZ0hhc2ggPSB0aGlzLnN0YWJsZVN0cmluZ2lmeSh0aGlzLmNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IG5leHRIYXNoID0gdGhpcy5zdGFibGVTdHJpbmdpZnkodGhpcy5jb25maWcpO1xuICAgIGlmIChuZXh0SGFzaCAhPT0gdGhpcy5jb25maWdIYXNoKSB7XG4gICAgICB0aGlzLmNvbmZpZ0hhc2ggPSBuZXh0SGFzaDtcbiAgICAgIHRoaXMuYXBwbHlDb25maWdPcHRpb25zKCk7XG4gICAgICB0aGlzLnJvd3Muc2V0KHRoaXMub3B0aW9ucygpLnBhZ2luYXRpb24/LnJvd3NQZXJQYWdlID8/IDEwKTtcbiAgICAgIHRoaXMuZmlyc3Quc2V0KDApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvblNlYXJjaFRlcm0oZXZPclZhbDogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHRlcm0gPSB0eXBlb2YgZXZPclZhbCA9PT0gJ3N0cmluZycgPyBldk9yVmFsIDogKGV2T3JWYWwgYXMgYW55KT8uZGV0YWlsID8/ICcnO1xuICAgIHRoaXMuZ2xvYmFsRmlsdGVyLnNldChTdHJpbmcodGVybSkpO1xuICAgIHRoaXMuZmlyc3Quc2V0KDApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2xlYXJTZWFyY2goX2V2PzogdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMuZ2xvYmFsRmlsdGVyLnNldCgnJyk7XG4gICAgdGhpcy5maXJzdC5zZXQoMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlU29ydChmaWVsZDogc3RyaW5nLCBlbmFibGVkOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmICghZW5hYmxlZCkgeyByZXR1cm47IH1cbiAgICBpZiAodGhpcy5zb3J0RmllbGQoKSAhPT0gZmllbGQpIHtcbiAgICAgIHRoaXMuc29ydEZpZWxkLnNldChmaWVsZCk7XG4gICAgICB0aGlzLnNvcnRPcmRlci5zZXQoMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG9yZGVyID0gdGhpcy5zb3J0T3JkZXIoKTtcbiAgICAgIGlmIChvcmRlciA9PT0gMSkgeyB0aGlzLnNvcnRPcmRlci5zZXQoLTEpOyB9XG4gICAgICBlbHNlIGlmIChvcmRlciA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5zb3J0T3JkZXIuc2V0KDApO1xuICAgICAgICB0aGlzLnNvcnRGaWVsZC5zZXQobnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNvcnRPcmRlci5zZXQoMSk7XG4gICAgICAgIHRoaXMuc29ydEZpZWxkLnNldChmaWVsZCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZmlyc3Quc2V0KDApO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlKGU6IFBhZ2luYXRvclN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5maXJzdC5zZXQoZS5maXJzdCA/PyAwKTtcbiAgICB0aGlzLnJvd3Muc2V0KGUucm93cyA/PyB0aGlzLm9wdGlvbnMoKS5wYWdpbmF0aW9uPy5yb3dzUGVyUGFnZSA/PyAxMCk7XG4gIH1cblxuICBnZXRDaGVja2VkVmFsdWUoZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblRvZ2dsZVJvdyhyb3c6IFQsIGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBzZWwgPSBuZXcgU2V0KHRoaXMuc2VsZWN0aW9uKCkpO1xuICAgIGNoZWNrZWQgPyBzZWwuYWRkKHJvdykgOiBzZWwuZGVsZXRlKHJvdyk7XG4gICAgdGhpcy5zZWxlY3Rpb24uc2V0KFsuLi5zZWxdKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc1Jvd1NlbGVjdGVkKHJvdzogVCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbigpLmluY2x1ZGVzKHJvdyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlU2VsZWN0UGFnZShjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsID0gbmV3IFNldCh0aGlzLnNlbGVjdGlvbigpKTtcbiAgICB0aGlzLnBhZ2VEYXRhKCkuZm9yRWFjaChyID0+IChjaGVja2VkID8gc2VsLmFkZChyKSA6IHNlbC5kZWxldGUocikpKTtcbiAgICB0aGlzLnNlbGVjdGlvbi5zZXQoWy4uLnNlbF0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzUGFnZUZ1bGx5U2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmlzaWJsZSA9IHRoaXMucGFnZURhdGEoKTtcbiAgICByZXR1cm4gdmlzaWJsZS5sZW5ndGggPiAwICYmIHZpc2libGUuZXZlcnkociA9PiB0aGlzLnNlbGVjdGlvbigpLmluY2x1ZGVzKHIpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjZWxsQ2ZnPEsgZXh0ZW5kcyAnY2hlY2tib3gnIHwgJ2J1dHRvbicgfCAndGFnJz4oa2luZDogSyk6IGFueSB7XG4gICAgcmV0dXJuICh0aGlzLm9wdGlvbnMoKS5jZWxscz8uW2tpbmRdID8/IHt9KSBhcyBhbnk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdGFnc09mKHJvdzogVCwgY29sOiBUYWJsZUNvbHVtbik6IGFueVtdIHtcbiAgICBjb25zdCByYXcgPSB0aGlzLl8ocm93LCBjb2wuZmllbGQhKSBhcyBhbnk7XG4gICAgY29uc3QgYXJyID0gQXJyYXkuaXNBcnJheShyYXcpID8gcmF3IDogW107XG4gICAgY29uc3QgbWF4ID0gdGhpcy5vcHRpb25zKCkuY2VsbHM/LnRhZz8ubWF4SXRlbXMgYXMgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiB0eXBlb2YgbWF4ID09PSAnbnVtYmVyJyA/IGFyci5zbGljZSgwLCBtYXgpIDogYXJyO1xuICB9XG5cbiAgcHJvdGVjdGVkIF8gPSAob2JqOiBULCBwYXRoOiBzdHJpbmcpOiB1bmtub3duID0+XG4gICAgcGF0aC5zcGxpdCgnLicpLnJlZHVjZTx1bmtub3duPigoYWNjLCBwYXJ0KSA9PiB7XG4gICAgICBpZiAoYWNjICE9PSBudWxsICYmIHR5cGVvZiBhY2MgPT09ICdvYmplY3QnKSB7IHJldHVybiAoYWNjIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtwYXJ0XTsgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9LCBvYmopO1xuXG4gIHByb3RlY3RlZCBmb3JtYXREYXRlKHZhbHVlOiB1bmtub3duLCBfZm9ybWF0OiBzdHJpbmcgPSAnc2hvcnREYXRlJyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh1bmRlZmluZWQpLmZvcm1hdChuZXcgRGF0ZSh2YWx1ZSBhcyB1bmtub3duIGFzIHN0cmluZykpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSA/PyAnJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGZvcm1hdEN1cnJlbmN5KHZhbHVlOiB1bmtub3duLCBjdXJyZW5jeTogc3RyaW5nID0gJ0JSTCcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG4gPSBOdW1iZXIodmFsdWUpO1xuICAgIGlmIChOdW1iZXIuaXNOYU4obikpIHsgcmV0dXJuIFN0cmluZyh2YWx1ZSA/PyAnJyk7IH1cbiAgICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KHVuZGVmaW5lZCwgeyBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3kgfSkuZm9ybWF0KG4pO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUNvbmZpZ09wdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgY2ZnOiBUYWJsZU9wdGlvbnMgPSB0aGlzLmNvbmZpZyB8fCBERUZBVUxUX1RBQkxFX09QVElPTlM7XG4gICAgdGhpcy5vcHRpb25zLnNldCh7XG4gICAgICAuLi5ERUZBVUxUX1RBQkxFX09QVElPTlMsXG4gICAgICAuLi5jZmcsXG4gICAgICBzZWFyY2g6IHsgLi4uREVGQVVMVF9UQUJMRV9PUFRJT05TLnNlYXJjaCwgLi4uY2ZnLnNlYXJjaCB9LFxuICAgICAgdGFibGU6IHsgLi4uREVGQVVMVF9UQUJMRV9PUFRJT05TLnRhYmxlLCAuLi5jZmcudGFibGUgfSxcbiAgICAgIGVtcHR5OiB7IC4uLkRFRkFVTFRfVEFCTEVfT1BUSU9OUy5lbXB0eSwgLi4uY2ZnLmVtcHR5IH0sXG4gICAgICBwYWdpbmF0aW9uOiB7IC4uLkRFRkFVTFRfVEFCTEVfT1BUSU9OUy5wYWdpbmF0aW9uLCAuLi5jZmcucGFnaW5hdGlvbiB9LFxuICAgICAgY2VsbHM6IHtcbiAgICAgICAgY2hlY2tib3g6IHsgLi4uKERFRkFVTFRfVEFCTEVfT1BUSU9OUy5jZWxscz8uY2hlY2tib3ggPz8ge30pLCAuLi4oY2ZnLmNlbGxzPy5jaGVja2JveCA/PyB7fSkgfSxcbiAgICAgICAgYnV0dG9uOiB7IC4uLihERUZBVUxUX1RBQkxFX09QVElPTlMuY2VsbHM/LmJ1dHRvbiA/PyB7fSksIC4uLihjZmcuY2VsbHM/LmJ1dHRvbiA/PyB7fSkgfSxcbiAgICAgICAgdGFnOiB7IC4uLihERUZBVUxUX1RBQkxFX09QVElPTlMuY2VsbHM/LnRhZyA/PyB7fSksIC4uLihjZmcuY2VsbHM/LnRhZyA/PyB7fSkgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YWJsZVN0cmluZ2lmeShvYmo6IHVua25vd24pOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlZW4gPSBuZXcgV2Vha1NldDxvYmplY3Q+KCk7XG4gICAgY29uc3QgcmVwbGFjZXIgPSAoX2s6IHN0cmluZywgdjogdW5rbm93bik6IHVua25vd24gPT4ge1xuICAgICAgaWYgKHYgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGFzT2JqID0gdiBhcyBvYmplY3Q7XG4gICAgICAgIGlmIChzZWVuLmhhcyhhc09iaikpIHsgcmV0dXJuOyB9XG4gICAgICAgIHNlZW4uYWRkKGFzT2JqKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHsgcmV0dXJuIHY7IH1cbiAgICAgICAgY29uc3QgbyA9IHYgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvKS5zb3J0KCkucmVkdWNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgICBhY2Nba2V5XSA9IG9ba2V5XTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHYgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHYgPT09ICd1bmRlZmluZWQnKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgICAgIHJldHVybiB2O1xuICAgIH07XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmogPz8ge30sIHJlcGxhY2VyIGFzIChrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pID0+IHVua25vd24pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaiA/PyB7fSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uQnV0dG9uQ2xpY2socm93OiBULCBjb2w6IFRhYmxlQ29sdW1uKTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gKGNvbC5hY3Rpb25GaWVsZCA/PyBjb2wuZmllbGQpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCB2YWx1ZSA9IGtleSA/IHRoaXMuXyhyb3csIGtleSkgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh7IGNvbHVtbjogY29sLCByb3csIHZhbHVlIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1dHRvbktleShyb3c6IFQsIGNvbDogVGFibGVDb2x1bW4sIG9wdDogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBhY3RLZXkgPSAoY29sLmFjdGlvbkZpZWxkID8/IGNvbC5maWVsZCA/PyAnJykgYXMgc3RyaW5nO1xuICAgIGNvbnN0IGFjdFZhbCA9IGFjdEtleSA/IFN0cmluZyh0aGlzLl8ocm93LCBhY3RLZXkpID8/ICcnKSA6ICcnO1xuICAgIHJldHVybiBbU3RyaW5nKG9wdD8ubGFiZWwgPz8gJycpLCBTdHJpbmcob3B0Py5pY29uID8/ICcnKSwgU3RyaW5nKG9wdD8ucHJpb3JpdHkgPz8gJycpLCBTdHJpbmcob3B0Py5zaXplID8/ICcnKSwgU3RyaW5nKG9wdD8udG9vbHRpcCA/PyAnJyksIGFjdFZhbF0uam9pbignfCcpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2RjLXRhYmxlXCJcbiAgW2NsYXNzLnNkYy10YWJsZS1zdGFja109XCJpc01vYmlsZSA/ICdzdGFjaycgOiAnZ3JpZCdcIlxuICBbY2xhc3Muc2RjLXRhYmxlLWZpbHRlcmVkXT1cIiEhZ2xvYmFsRmlsdGVyKCkudHJpbSgpXCJcbj5cbiAgPGRpdiBjbGFzcz1cInNkYy10YWJsZS1jYXB0aW9uXCIgKm5nSWY9XCJzaG93U2VhcmNoKClcIj5cbiAgICA8ZGl2IFtzdHlsZS53aWR0aF09XCJpc01vYmlsZSA/ICcxMDAlJyA6ICcyMCUnXCI+XG4gICAgICA8c2RjLXNlYXJjaGJveFxuICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgW3RyaWdnZXJNb2RlXT1cInRyaWdnZXJNb2RlKClcIlxuICAgICAgICAob25TZWFyY2gpPVwib25TZWFyY2hUZXJtKCRldmVudClcIlxuICAgICAgICAob25DbGVhcik9XCJvbkNsZWFyU2VhcmNoKClcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPHRhYmxlIGNsYXNzPVwic2RjLXRhYmxlLWdyaWRcIj5cbiAgICA8dGhlYWQ+XG4gICAgICA8dHI+XG4gICAgICAgIEBmb3IgKGNvbCBvZiBjb2xzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xuICAgICAgICA8dGhcbiAgICAgICAgICBbY2xhc3Muc2RjLXRhYmxlLXRoLWNoZWNrYm94XT1cImNvbC50eXBlID09PSAnY2hlY2tib3gtc2VsZWN0aW9uJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNvcnQoY29sLmZpZWxkISwgY29sLnNvcnRhYmxlICE9PSBmYWxzZSlcIlxuICAgICAgICAgIFtjbGFzcy5zZGMtdGFibGUtc29ydGFibGVdPVwiY29sLnNvcnRhYmxlICE9PSBmYWxzZVwiXG4gICAgICAgICAgW2NsYXNzLnNkYy10YWJsZS1pcy1zZWxlY3RlZF09XCJzb3J0RmllbGQoKSA9PT0gY29sLmZpZWxkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtdGFibGUtdGgtaW5uZXJcIiBbY2xhc3Muc2RjLXRhYmxlLXNvcnRhYmxlXT1cImNvbC5zb3J0YWJsZSAhPT0gZmFsc2VcIj5cbiAgICAgICAgICAgIEBzd2l0Y2ggKGNvbC50eXBlKSB7IEBjYXNlICgnY2hlY2tib3gtc2VsZWN0aW9uJykge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtdGFibGUtdGgtbGFiZWxcIj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxuICAgICAgICAgICAgfSBAZGVmYXVsdCB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy10YWJsZS10aC1sYWJlbFwiPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy10YWJsZS1zb3J0LWljb25zIHNkYy10YWJsZS1zb3J0LW92ZXJsYXlcIiAqbmdJZj1cImNvbC5zb3J0YWJsZSAhPT0gZmFsc2VcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzb3J0SWNvbnNUcGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBjb2w6IGNvbCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9IH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJzZGMtdGFibGUtdGgtY2VudGVyXCJcbiAgICAgICAgICAgICpuZ0lmPVwiY29sLnR5cGUgPT09ICdjaGVja2JveC1zZWxlY3Rpb24nICYmIChjZWxsQ2ZnKCdjaGVja2JveCcpLnNlbGVjdEFsbCA/PyB0cnVlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzUGFnZUZ1bGx5U2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdFBhZ2UoZ2V0Q2hlY2tlZFZhbHVlKCRldmVudCkpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3RoPlxuICAgICAgICB9XG4gICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG5cbiAgICA8dGJvZHk+XG4gICAgICBAaWYgKGxvYWRpbmcpIHsgfSBAZWxzZSB7IEBmb3IgKHJvdyBvZiBwYWdlRGF0YSgpOyBsZXQgciA9ICRpbmRleDsgdHJhY2sgcikge1xuICAgICAgPHRyPlxuICAgICAgICBAZm9yIChjb2wgb2YgY29sczsgbGV0IGMgPSAkaW5kZXg7IHRyYWNrIGMpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTW9iaWxlOyBlbHNlIGRlc2t0b3BDb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy10YWJsZS10ZC1tb2JpbGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic29ydEljb25zVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY29sOiBjb2wgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwic2RjLXRhYmxlLXRkIHNkYy10YWJsZS10ZGMgc2RjLXRhYmxlLW1vYmlsZS10ZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zZGMtdGFibGUtdGQtY2hlY2tib3hdPVwiY29sLnR5cGUgPT09ICdjaGVja2JveC1zZWxlY3Rpb24nXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNkYy10YWJsZS1pcy1zZWxlY3RlZF09XCJzb3J0RmllbGQoKSA9PT0gY29sLmZpZWxkXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10aXRsZV09XCJjb2wuaGVhZGVyXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNvcnQoY29sLmZpZWxkISwgY29sLnNvcnRhYmxlICE9PSBmYWxzZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLXRhYmxlLXRkLXZhbFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNlbGxUcGxcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIGNvbDogY29sIH1cIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZXNrdG9wQ29udGVudD5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgIGNsYXNzPVwic2RjLXRhYmxlLXRkIHNkYy10YWJsZS10ZGNcIlxuICAgICAgICAgICAgW2NsYXNzLnNkYy10YWJsZS10ZC1jaGVja2JveF09XCJjb2wudHlwZSA9PT0gJ2NoZWNrYm94LXNlbGVjdGlvbidcIlxuICAgICAgICAgICAgW2NsYXNzLnNkYy10YWJsZS1pcy1zZWxlY3RlZF09XCJzb3J0RmllbGQoKSA9PT0gY29sLmZpZWxkXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtdGl0bGVdPVwiY29sLmhlYWRlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy10YWJsZS10ZC12YWxcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNlbGxUcGxcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCBjb2w6IGNvbCB9XCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgfVxuICAgICAgPC90cj5cbiAgICAgIH0gfVxuICAgIDwvdGJvZHk+XG4gIDwvdGFibGU+XG5cbiAgPHMtZW1wdHktc3RhdGVcbiAgICAqbmdJZj1cIiFsb2FkaW5nICYmIG9wdGlvbnMoKS5lbXB0eT8uc2hvdyAhPT0gZmFsc2UgJiYgdG90YWxSZWNvcmRzKCkgPT09IDBcIlxuICAgIGlkPVwibXktZW1wdHktc3RhdGVcIlxuICAgIGljb25DbGFzcz1cImZhIGZhLWluYm94XCJcbiAgICBbdGl0bGVdPVwiZW1wdHlUaXRsZSgpXCJcbiAgICBbZGVzY3JpcHRpb25dPVwiZW1wdHlUZXh0KClcIlxuICAgIGNsYXNzPVwic2RjLXRhYmxlLWVtcHR5LXN0YXRlXCJcbiAgPlxuICA8L3MtZW1wdHktc3RhdGU+XG5cbiAgPHMtbG9hZGluZy1zdGF0ZSAqbmdJZj1cImxvYWRpbmdcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Jsb2NrV2luZG93XT1cImZhbHNlXCIgY2xhc3M9XCJzZGMtdGFibGUtbG9hZGluZy1zdGF0ZVwiPlxuICA8L3MtbG9hZGluZy1zdGF0ZT5cblxuICA8ZGl2IGNsYXNzPVwic2RjLXRhYmxlLXBhZ2luYXRvclwiICpuZ0lmPVwic2hvd1BhZ2luYXRvcigpXCI+XG4gICAgPHNkYy1wYWdpbmF0b3JcbiAgICAgIFtmaXJzdF09XCJmaXJzdCgpXCJcbiAgICAgIFtyb3dzXT1cInJvd3MoKVwiXG4gICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3JkcygpXCJcbiAgICAgIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwiaXNNb2JpbGUgPyB1bmRlZmluZWQgOiByb3dzUGVyUGFnZU9wdGlvbnMoKVwiXG4gICAgICBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIlxuICAgICAgW3RvdGFsUmVjb3Jkc0xhYmVsXT1cInRvdGFsUmVjb3Jkc0xhYmVsKClcIlxuICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxuICAgID48L3NkYy1wYWdpbmF0b3I+XG4gIDwvZGl2PlxuXG4gIDxuZy10ZW1wbGF0ZSAjY2VsbFRwbCBsZXQtcm93IGxldC1jb2w9XCJjb2xcIj5cbiAgICBAc3dpdGNoIChjb2wudHlwZSkgeyBAY2FzZSAoJ2NoZWNrYm94LXNlbGVjdGlvbicpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2VsbENmZygnY2hlY2tib3gnKSBhcyBjaGVja2JveE9wdGlvbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZGMtdGFibGUtY2hlY2tib3hcIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImlzUm93U2VsZWN0ZWQocm93KVwiIChjaGFuZ2UpPVwib25Ub2dnbGVSb3cocm93LCBnZXRDaGVja2VkVmFsdWUoJGV2ZW50KSlcIiAvPlxuICAgICAgICA8bGFiZWw+e3sgXyhyb3csIGNvbC5maWVsZCkgfX08L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgfSBAY2FzZSAoJ2RhdGUnKSB7XG4gICAge3sgZm9ybWF0RGF0ZShfKHJvdywgY29sLmZpZWxkKSwgY29sLmZvcm1hdCB8fCAnc2hvcnREYXRlJykgfX1cbiAgICB9IEBjYXNlICgnc3Ryb25nJykge1xuICAgIDxkaXYgY2xhc3M9XCJzZGMtdGFibGUtc3Ryb25nLWxhYmVsXCI+e3sgXyhyb3csIGNvbC5maWVsZCkgfX08L2Rpdj5cbiAgICB9IEBjYXNlICgnY29kZScpIHtcbiAgICA8Y29kZSBjbGFzcz1cInNkYy10YWJsZS1jb2RlLWxhYmVsXCI+e3sgXyhyb3csIGNvbC5maWVsZCkgfX08L2NvZGU+XG4gICAgfSBAY2FzZSAoJ2N1cnJlbmN5Jykge1xuICAgIHt7IGZvcm1hdEN1cnJlbmN5KF8ocm93LCBjb2wuZmllbGQpLCBjb2wuZm9ybWF0IHx8ICdCUkwnKSB9fVxuICAgIH0gQGNhc2UgKCd0YWcnKSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNlbGxDZmcoJ3RhZycpIGFzIHRhZ09wdGlvbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZGMtdGFibGUtdGFnc1wiPlxuICAgICAgICBAZm9yICh0YWcgb2YgdGFnc09mKHJvdywgY29sKTsgbGV0IHQgPSAkaW5kZXg7IHRyYWNrIHQpIHtcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNkYy10YWJsZS10YWdcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhZ09wdGlvbnMuYmFja2dyb3VuZENvbG9yIHx8IG51bGxcIlxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWdPcHRpb25zLmNvbG9yIHx8IG51bGxcIlxuICAgICAgICAgIFthdHRyLnRpdGxlXT1cInRhZ09wdGlvbnMudG9vbHRpcFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSAqbmdJZj1cInRhZ09wdGlvbnMuaWNvblwiIFtjbGFzc109XCJ0YWdPcHRpb25zLmljb25cIj48L2k+XG4gICAgICAgICAge3sgdGFnIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgfSBAY2FzZSAoJ2J1dHRvbicpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2VsbENmZygnYnV0dG9uJykgYXMgYnV0dG9uT3B0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgX19rIG9mIFtidXR0b25LZXkocm93LCBjb2wsIGJ1dHRvbk9wdGlvbnMpXVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLXRhYmxlLWJ1dHRvblwiPlxuICAgICAgICAgIDxzZGMtYnV0dG9uXG4gICAgICAgICAgICBzdHlsZT1cIm1heC13aWR0aDogNzAlXCJcbiAgICAgICAgICAgIFtzaXplXT1cImJ1dHRvbk9wdGlvbnMuc2l6ZVwiXG4gICAgICAgICAgICBbcHJpb3JpdHldPVwiYnV0dG9uT3B0aW9ucy5wcmlvcml0eSB8fCAncHJpbWFyeSdcIlxuICAgICAgICAgICAgW2ljb25dPVwiYnV0dG9uT3B0aW9ucy5pY29uXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJidXR0b25PcHRpb25zLmxhYmVsXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXR0b25PcHRpb25zLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJidXR0b25PcHRpb25zLnRvb2x0aXBcIlxuICAgICAgICAgICAgW2F0dHIuc2l6ZV09XCJidXR0b25PcHRpb25zLnNpemVcIlxuICAgICAgICAgICAgW2F0dHIucHJpb3JpdHldPVwiYnV0dG9uT3B0aW9ucy5wcmlvcml0eSB8fCAncHJpbWFyeSdcIlxuICAgICAgICAgICAgW2F0dHIuc2V2ZXJpdHldPVwiYnV0dG9uT3B0aW9ucy5wcmlvcml0eSB8fCAncHJpbWFyeSdcIlxuICAgICAgICAgICAgW2F0dHIuaWNvbl09XCJidXR0b25PcHRpb25zLmljb25cIlxuICAgICAgICAgICAgW2F0dHIubGFiZWxdPVwiYnV0dG9uT3B0aW9ucy5sYWJlbFwiXG4gICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJidXR0b25PcHRpb25zLmRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImJ1dHRvbk9wdGlvbnMudG9vbHRpcCB8fCBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEta2V5XT1cIl9fa1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiYnV0dG9uT3B0aW9ucy5kaXNhYmxlZCA/IG51bGwgOiBvbkJ1dHRvbkNsaWNrKHJvdywgY29sKVwiXG4gICAgICAgICAgPjwvc2RjLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICB9IEBkZWZhdWx0IHsge3sgXyhyb3csIGNvbC5maWVsZCkgfX0gfSB9XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzb3J0SWNvbnNUcGwgbGV0LWNvbD1cImNvbFwiPlxuICA8c3BhbiAqbmdJZj1cImNvbC5zb3J0YWJsZSAhPT0gZmFsc2UgJiYgY29sLnR5cGUgIT09ICdjaGVja2JveC1zZWxlY3Rpb24nXCIgY2xhc3M9XCJzZGMtdGFibGUtc29ydC1pbmRpY2F0b3JcIj5cbiAgICA8aSAqbmdJZj1cInNvcnRGaWVsZCgpICE9PSBjb2wuZmllbGRcIiBjbGFzcz1cImZhcyBmYS1zb3J0LWFsdCBzZGMtdGFibGUtc29ydC1uZXV0cmFsXCI+PC9pPlxuICAgIDxpXG4gICAgICAqbmdJZj1cInNvcnRGaWVsZCgpID09PSBjb2wuZmllbGQgJiYgc29ydE9yZGVyKCkgPT09IDFcIlxuICAgICAgY2xhc3M9XCJmYXMgZmEtc29ydC1hbW91bnQtdXAtYWx0IHNkYy10YWJsZS1zb3J0LWFjdGl2ZVwiXG4gICAgPjwvaT5cbiAgICA8aVxuICAgICAgKm5nSWY9XCJzb3J0RmllbGQoKSA9PT0gY29sLmZpZWxkICYmIHNvcnRPcmRlcigpID09PSAtMVwiXG4gICAgICBjbGFzcz1cImZhcyBmYS1zb3J0LWFtb3VudC1kb3duIHNkYy10YWJsZS1zb3J0LWFjdGl2ZVwiXG4gICAgPjwvaT5cbiAgPC9zcGFuPlxuICA8c3BhblxuICAgICpuZ0lmPVwiY29sLnNvcnRhYmxlID09PSBmYWxzZSB8fCBjb2wudHlwZSA9PT0gJ2NoZWNrYm94LXNlbGVjdGlvbidcIlxuICAgIGNsYXNzPVwic2RjLXRhYmxlLXNvcnQtaW5kaWNhdG9yIHNkYy10YWJsZS1zb3J0LWluZGljYXRvci1wbGFjZWhvbGRlclwiXG4gID48L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBOEQsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEssT0FBTyxFQUFFLHFCQUFxQixFQUFxRSxNQUFNLDZCQUE2QixDQUFDOzs7OztBQVd2SSxNQUFNLE9BQU8sY0FBYztJQUNFLElBQUksR0FBa0IsRUFBRSxDQUFDO0lBQ3pCLElBQUksR0FBUSxFQUFFLENBQUM7SUFDZCxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ3pCLE1BQU0sR0FBaUIscUJBQXFCLENBQUM7SUFFL0QsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFtRCxDQUFDO0lBRXBFLFFBQVEsR0FBWSxRQUFRLEVBQUUsQ0FBQztJQUUvQixVQUFVLEdBQUcsUUFBUSxDQUFVLEdBQUcs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RSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNFLElBQUk7c0JBQTlCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNHLE9BQU87c0JBQWxDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO2dCQUNFLE1BQU07c0JBQWpDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO2dCQUVoQixNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL2xheW91dC51dGlsJztcbmltcG9ydCB7IFNlYXJjaGJveENvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaGJveC9zZWFyY2hib3guY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2luYXRvclN0YXRlIH0gZnJvbSAncHJpbWVuZy9wYWdpbmF0b3InO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZU1vZHVsZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvZW1wdHktc3RhdGUnO1xuaW1wb3J0IHsgTG9hZGluZ1N0YXRlTW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9sb2FkaW5nLXN0YXRlJztcbmltcG9ydCB7IFBhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBzaWduYWwsIGNvbXB1dGVkLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIERvQ2hlY2ssIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgREVGQVVMVF9UQUJMRV9PUFRJT05TLCB0eXBlIFJvd0Jhc2UsIHR5cGUgU29ydE9yZGVyLCB0eXBlIFRhYmxlQ29sdW1uLCB0eXBlIFRhYmxlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvdGFibGUudHlwZSc7XG5pbXBvcnQgeyB0eXBlIFNlYXJjaFRyaWdnZXJNb2RlIH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcy9zZWFyY2hib3gudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NkYy10YWJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNlYXJjaGJveENvbXBvbmVudCwgUGFnaW5hdG9yQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnQsIExvYWRpbmdTdGF0ZU1vZHVsZSwgRW1wdHlTdGF0ZU1vZHVsZV0sXG4gIHN0eWxlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuc2NzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudDxUIGV4dGVuZHMgUm93QmFzZSA9IFJvd0Jhc2U+IGltcGxlbWVudHMgT25DaGFuZ2VzLCBEb0NoZWNrIHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgY29sczogVGFibGVDb2x1bW5bXSA9IFtdO1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBkYXRhOiBUW10gPSBbXTtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IGZhbHNlIH0pIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IGZhbHNlIH0pIGNvbmZpZzogVGFibGVPcHRpb25zID0gREVGQVVMVF9UQUJMRV9PUFRJT05TO1xuXG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgY29sdW1uOiBUYWJsZUNvbHVtbjsgcm93OiBUOyB2YWx1ZTogdW5rbm93biB9PigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbiA9IGlzTW9iaWxlKCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dTZWFyY2ggPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB0aGlzLm9wdGlvbnMoKS5zZWFyY2g/LnNob3cgPz8gZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd1BhZ2luYXRvciA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHRoaXMub3B0aW9ucygpLnBhZ2luYXRpb24/LnNob3cgPz8gZmFsc2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSByb3dzUGVyUGFnZU9wdGlvbnMgPSBjb21wdXRlZDxudW1iZXJbXT4oKCkgPT4gdGhpcy5vcHRpb25zKCkucGFnaW5hdGlvbj8ucm93c1BlclBhZ2VPcHRpb25zID8/IFtdKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlYXJjaFBsYWNlaG9sZGVyID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB0aGlzLm9wdGlvbnMoKS5zZWFyY2g/LnBsYWNlaG9sZGVyID8/ICcnKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyaWdnZXJNb2RlID0gY29tcHV0ZWQ8U2VhcmNoVHJpZ2dlck1vZGU+KCgpID0+IHRoaXMub3B0aW9ucygpLnNlYXJjaD8udHlwZSA/PyAnYXV0bycpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdG90YWxSZWNvcmRzTGFiZWwgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHRoaXMub3B0aW9ucygpLnRhYmxlPy50b3RhbFJlY29yZHNMYWJlbCA/PyAnJyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBlbXB0eVRpdGxlID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB0aGlzLm9wdGlvbnMoKS5lbXB0eT8udGl0bGUgPz8gJycpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZW1wdHlUZXh0ID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB0aGlzLm9wdGlvbnMoKS5lbXB0eT8udGV4dCA/PyAnJyk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnMgPSBzaWduYWw8VGFibGVPcHRpb25zPihERUZBVUxUX1RBQkxFX09QVElPTlMpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2xvYmFsRmlsdGVyID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc29ydEZpZWxkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc29ydE9yZGVyID0gc2lnbmFsPFNvcnRPcmRlcj4oMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3Rpb24gPSBzaWduYWw8VFtdPihbXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBmaXJzdCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm93cyA9IHNpZ25hbDxudW1iZXI+KERFRkFVTFRfVEFCTEVfT1BUSU9OUy5wYWdpbmF0aW9uPy5yb3dzUGVyUGFnZSA/PyAxMCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbHRlcmVkRGF0YSA9IGNvbXB1dGVkPFRbXT4oKCkgPT4ge1xuICAgIGNvbnN0IHEgPSB0aGlzLmdsb2JhbEZpbHRlcigpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICghcSkgeyByZXR1cm4gdGhpcy5kYXRhOyB9XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5jb2xzLmZpbHRlcihjID0+IChjIGFzIGFueSkuc2VhcmNoYWJsZSA/PyB0cnVlKS5maWx0ZXIoYyA9PiAhIWMuZmllbGQpLm1hcChjID0+IGMuZmllbGQhKSBhcyBzdHJpbmdbXTtcbiAgICBpZiAoZmllbGRzLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gdGhpcy5kYXRhOyB9XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5maWx0ZXIocm93ID0+XG4gICAgICBmaWVsZHMuc29tZShmID0+IHtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuXyhyb3csIGYpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSkgeyByZXR1cm4gdi5qb2luKCcgJykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKTsgfVxuICAgICAgICByZXR1cm4gU3RyaW5nKHYgPz8gJycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzb3J0ZWREYXRhID0gY29tcHV0ZWQ8VFtdPigoKSA9PiB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLnNvcnRGaWVsZCgpO1xuICAgIGNvbnN0IG9yZGVyID0gdGhpcy5zb3J0T3JkZXIoKTtcbiAgICBjb25zdCBhcnIgPSBbLi4udGhpcy5maWx0ZXJlZERhdGEoKV07XG4gICAgaWYgKCFmaWVsZCB8fCBvcmRlciA9PT0gMCkgeyByZXR1cm4gYXJyOyB9XG4gICAgcmV0dXJuIGFyci5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBjb25zdCB2YSA9IHRoaXMuXyhhLCBmaWVsZCk7XG4gICAgICBjb25zdCB2YiA9IHRoaXMuXyhiLCBmaWVsZCk7XG4gICAgICBpZiAodmEgPT0gbnVsbCAmJiB2YiA9PSBudWxsKSB7IHJldHVybiAwOyB9XG4gICAgICBpZiAodmEgPT0gbnVsbCkgeyByZXR1cm4gLW9yZGVyOyB9XG4gICAgICBpZiAodmIgPT0gbnVsbCkgeyByZXR1cm4gb3JkZXI7IH1cbiAgICAgIGlmICh0eXBlb2YgdmEgPT09ICdudW1iZXInICYmIHR5cGVvZiB2YiA9PT0gJ251bWJlcicpIHsgcmV0dXJuICh2YSAtIHZiKSAqIG9yZGVyOyB9XG4gICAgICByZXR1cm4gU3RyaW5nKHZhKS5sb2NhbGVDb21wYXJlKFN0cmluZyh2YikpICogb3JkZXI7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB0b3RhbFJlY29yZHMgPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHRoaXMuc29ydGVkRGF0YSgpLmxlbmd0aCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhZ2VEYXRhID0gY29tcHV0ZWQ8VFtdPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLnNob3dQYWdpbmF0b3IoKSkgcmV0dXJuIHRoaXMuc29ydGVkRGF0YSgpO1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5maXJzdCgpO1xuICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgdGhpcy5yb3dzKCk7XG4gICAgcmV0dXJuIHRoaXMuc29ydGVkRGF0YSgpLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9KTtcblxuICBwcml2YXRlIGNvbmZpZ0hhc2ggPSAnJztcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddKSB7XG4gICAgICB0aGlzLmFwcGx5Q29uZmlnT3B0aW9ucygpO1xuICAgICAgdGhpcy5yb3dzLnNldCh0aGlzLm9wdGlvbnMoKS5wYWdpbmF0aW9uPy5yb3dzUGVyUGFnZSA/PyAxMCk7XG4gICAgICB0aGlzLmZpcnN0LnNldCgwKTtcbiAgICAgIHRoaXMuY29uZmlnSGFzaCA9IHRoaXMuc3RhYmxlU3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dEhhc2ggPSB0aGlzLnN0YWJsZVN0cmluZ2lmeSh0aGlzLmNvbmZpZyk7XG4gICAgaWYgKG5leHRIYXNoICE9PSB0aGlzLmNvbmZpZ0hhc2gpIHtcbiAgICAgIHRoaXMuY29uZmlnSGFzaCA9IG5leHRIYXNoO1xuICAgICAgdGhpcy5hcHBseUNvbmZpZ09wdGlvbnMoKTtcbiAgICAgIHRoaXMucm93cy5zZXQodGhpcy5vcHRpb25zKCkucGFnaW5hdGlvbj8ucm93c1BlclBhZ2UgPz8gMTApO1xuICAgICAgdGhpcy5maXJzdC5zZXQoMCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uU2VhcmNoVGVybShldk9yVmFsOiB1bmtub3duKTogdm9pZCB7XG4gICAgY29uc3QgdGVybSA9IHR5cGVvZiBldk9yVmFsID09PSAnc3RyaW5nJyA/IGV2T3JWYWwgOiAoZXZPclZhbCBhcyBhbnkpPy5kZXRhaWwgPz8gJyc7XG4gICAgdGhpcy5nbG9iYWxGaWx0ZXIuc2V0KFN0cmluZyh0ZXJtKSk7XG4gICAgdGhpcy5maXJzdC5zZXQoMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25DbGVhclNlYXJjaChfZXY/OiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5nbG9iYWxGaWx0ZXIuc2V0KCcnKTtcbiAgICB0aGlzLmZpcnN0LnNldCgwKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVTb3J0KGZpZWxkOiBzdHJpbmcsIGVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgaWYgKCFlbmFibGVkKSB7IHJldHVybjsgfVxuICAgIGlmICh0aGlzLnNvcnRGaWVsZCgpICE9PSBmaWVsZCkge1xuICAgICAgdGhpcy5zb3J0RmllbGQuc2V0KGZpZWxkKTtcbiAgICAgIHRoaXMuc29ydE9yZGVyLnNldCgxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb3JkZXIgPSB0aGlzLnNvcnRPcmRlcigpO1xuICAgICAgaWYgKG9yZGVyID09PSAxKSB7IHRoaXMuc29ydE9yZGVyLnNldCgtMSk7IH1cbiAgICAgIGVsc2UgaWYgKG9yZGVyID09PSAtMSkge1xuICAgICAgICB0aGlzLnNvcnRPcmRlci5zZXQoMCk7XG4gICAgICAgIHRoaXMuc29ydEZpZWxkLnNldChudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc29ydE9yZGVyLnNldCgxKTtcbiAgICAgICAgdGhpcy5zb3J0RmllbGQuc2V0KGZpZWxkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5maXJzdC5zZXQoMCk7XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UoZTogUGFnaW5hdG9yU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmZpcnN0LnNldChlLmZpcnN0ID8/IDApO1xuICAgIHRoaXMucm93cy5zZXQoZS5yb3dzID8/IHRoaXMub3B0aW9ucygpLnBhZ2luYXRpb24/LnJvd3NQZXJQYWdlID8/IDEwKTtcbiAgfVxuXG4gIGdldENoZWNrZWRWYWx1ZShldmVudDogRXZlbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jaGVja2VkO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uVG9nZ2xlUm93KHJvdzogVCwgY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IHNlbCA9IG5ldyBTZXQodGhpcy5zZWxlY3Rpb24oKSk7XG4gICAgY2hlY2tlZCA/IHNlbC5hZGQocm93KSA6IHNlbC5kZWxldGUocm93KTtcbiAgICB0aGlzLnNlbGVjdGlvbi5zZXQoWy4uLnNlbF0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzUm93U2VsZWN0ZWQocm93OiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uKCkuaW5jbHVkZXMocm93KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVTZWxlY3RQYWdlKGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBzZWwgPSBuZXcgU2V0KHRoaXMuc2VsZWN0aW9uKCkpO1xuICAgIHRoaXMucGFnZURhdGEoKS5mb3JFYWNoKHIgPT4gKGNoZWNrZWQgPyBzZWwuYWRkKHIpIDogc2VsLmRlbGV0ZShyKSkpO1xuICAgIHRoaXMuc2VsZWN0aW9uLnNldChbLi4uc2VsXSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNQYWdlRnVsbHlTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCB2aXNpYmxlID0gdGhpcy5wYWdlRGF0YSgpO1xuICAgIHJldHVybiB2aXNpYmxlLmxlbmd0aCA+IDAgJiYgdmlzaWJsZS5ldmVyeShyID0+IHRoaXMuc2VsZWN0aW9uKCkuaW5jbHVkZXMocikpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNlbGxDZmc8SyBleHRlbmRzICdjaGVja2JveCcgfCAnYnV0dG9uJyB8ICd0YWcnPihraW5kOiBLKTogYW55IHtcbiAgICByZXR1cm4gKHRoaXMub3B0aW9ucygpLmNlbGxzPy5ba2luZF0gPz8ge30pIGFzIGFueTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0YWdzT2Yocm93OiBULCBjb2w6IFRhYmxlQ29sdW1uKTogYW55W10ge1xuICAgIGNvbnN0IHJhdyA9IHRoaXMuXyhyb3csIGNvbC5maWVsZCEpIGFzIGFueTtcbiAgICBjb25zdCBhcnIgPSBBcnJheS5pc0FycmF5KHJhdykgPyByYXcgOiBbXTtcbiAgICBjb25zdCBtYXggPSB0aGlzLm9wdGlvbnMoKS5jZWxscz8udGFnPy5tYXhJdGVtcyBhcyBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHR5cGVvZiBtYXggPT09ICdudW1iZXInID8gYXJyLnNsaWNlKDAsIG1heCkgOiBhcnI7XG4gIH1cblxuICBwcm90ZWN0ZWQgXyA9IChvYmo6IFQsIHBhdGg6IHN0cmluZyk6IHVua25vd24gPT5cbiAgICBwYXRoLnNwbGl0KCcuJykucmVkdWNlPHVua25vd24+KChhY2MsIHBhcnQpID0+IHtcbiAgICAgIGlmIChhY2MgIT09IG51bGwgJiYgdHlwZW9mIGFjYyA9PT0gJ29iamVjdCcpIHsgcmV0dXJuIChhY2MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3BhcnRdOyB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0sIG9iaik7XG5cbiAgcHJvdGVjdGVkIGZvcm1hdERhdGUodmFsdWU6IHVua25vd24sIF9mb3JtYXQ6IHN0cmluZyA9ICdzaG9ydERhdGUnKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHVuZGVmaW5lZCkuZm9ybWF0KG5ldyBEYXRlKHZhbHVlIGFzIHVua25vd24gYXMgc3RyaW5nKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlID8/ICcnKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZm9ybWF0Q3VycmVuY3kodmFsdWU6IHVua25vd24sIGN1cnJlbmN5OiBzdHJpbmcgPSAnQlJMJyk6IHN0cmluZyB7XG4gICAgY29uc3QgbiA9IE51bWJlcih2YWx1ZSk7XG4gICAgaWYgKE51bWJlci5pc05hTihuKSkgeyByZXR1cm4gU3RyaW5nKHZhbHVlID8/ICcnKTsgfVxuICAgIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeSB9KS5mb3JtYXQobik7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q29uZmlnT3B0aW9ucygpOiB2b2lkIHtcbiAgICBjb25zdCBjZmc6IFRhYmxlT3B0aW9ucyA9IHRoaXMuY29uZmlnIHx8IERFRkFVTFRfVEFCTEVfT1BUSU9OUztcbiAgICB0aGlzLm9wdGlvbnMuc2V0KHtcbiAgICAgIC4uLkRFRkFVTFRfVEFCTEVfT1BUSU9OUyxcbiAgICAgIC4uLmNmZyxcbiAgICAgIHNlYXJjaDogeyAuLi5ERUZBVUxUX1RBQkxFX09QVElPTlMuc2VhcmNoLCAuLi5jZmcuc2VhcmNoIH0sXG4gICAgICB0YWJsZTogeyAuLi5ERUZBVUxUX1RBQkxFX09QVElPTlMudGFibGUsIC4uLmNmZy50YWJsZSB9LFxuICAgICAgZW1wdHk6IHsgLi4uREVGQVVMVF9UQUJMRV9PUFRJT05TLmVtcHR5LCAuLi5jZmcuZW1wdHkgfSxcbiAgICAgIHBhZ2luYXRpb246IHsgLi4uREVGQVVMVF9UQUJMRV9PUFRJT05TLnBhZ2luYXRpb24sIC4uLmNmZy5wYWdpbmF0aW9uIH0sXG4gICAgICBjZWxsczoge1xuICAgICAgICBjaGVja2JveDogeyAuLi4oREVGQVVMVF9UQUJMRV9PUFRJT05TLmNlbGxzPy5jaGVja2JveCA/PyB7fSksIC4uLihjZmcuY2VsbHM/LmNoZWNrYm94ID8/IHt9KSB9LFxuICAgICAgICBidXR0b246IHsgLi4uKERFRkFVTFRfVEFCTEVfT1BUSU9OUy5jZWxscz8uYnV0dG9uID8/IHt9KSwgLi4uKGNmZy5jZWxscz8uYnV0dG9uID8/IHt9KSB9LFxuICAgICAgICB0YWc6IHsgLi4uKERFRkFVTFRfVEFCTEVfT1BUSU9OUy5jZWxscz8udGFnID8/IHt9KSwgLi4uKGNmZy5jZWxscz8udGFnID8/IHt9KSB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhYmxlU3RyaW5naWZ5KG9iajogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3Qgc2VlbiA9IG5ldyBXZWFrU2V0PG9iamVjdD4oKTtcbiAgICBjb25zdCByZXBsYWNlciA9IChfazogc3RyaW5nLCB2OiB1bmtub3duKTogdW5rbm93biA9PiB7XG4gICAgICBpZiAodiAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgYXNPYmogPSB2IGFzIG9iamVjdDtcbiAgICAgICAgaWYgKHNlZW4uaGFzKGFzT2JqKSkgeyByZXR1cm47IH1cbiAgICAgICAgc2Vlbi5hZGQoYXNPYmopO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSkgeyByZXR1cm4gdjsgfVxuICAgICAgICBjb25zdCBvID0gdiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG8pLnNvcnQoKS5yZWR1Y2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KChhY2MsIGtleSkgPT4ge1xuICAgICAgICAgIGFjY1trZXldID0gb1trZXldO1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgdiA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICAgICAgcmV0dXJuIHY7XG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaiA/PyB7fSwgcmVwbGFjZXIgYXMgKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bikgPT4gdW5rbm93bik7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqID8/IHt9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25CdXR0b25DbGljayhyb3c6IFQsIGNvbDogVGFibGVDb2x1bW4pOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSAoY29sLmFjdGlvbkZpZWxkID8/IGNvbC5maWVsZCkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHZhbHVlID0ga2V5ID8gdGhpcy5fKHJvdywga2V5KSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLmFjdGlvbi5lbWl0KHsgY29sdW1uOiBjb2wsIHJvdywgdmFsdWUgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnV0dG9uS2V5KHJvdzogVCwgY29sOiBUYWJsZUNvbHVtbiwgb3B0OiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGFjdEtleSA9IChjb2wuYWN0aW9uRmllbGQgPz8gY29sLmZpZWxkID8/ICcnKSBhcyBzdHJpbmc7XG4gICAgY29uc3QgYWN0VmFsID0gYWN0S2V5ID8gU3RyaW5nKHRoaXMuXyhyb3csIGFjdEtleSkgPz8gJycpIDogJyc7XG4gICAgcmV0dXJuIFtTdHJpbmcob3B0Py5sYWJlbCA/PyAnJyksIFN0cmluZyhvcHQ/Lmljb24gPz8gJycpLCBTdHJpbmcob3B0Py5wcmlvcml0eSA/PyAnJyksIFN0cmluZyhvcHQ/LnNpemUgPz8gJycpLCBTdHJpbmcob3B0Py50b29sdGlwID8/ICcnKSwgYWN0VmFsXS5qb2luKCd8Jyk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzZGMtdGFibGVcIlxuICBbY2xhc3Muc2RjLXRhYmxlLXN0YWNrXT1cImlzTW9iaWxlID8gJ3N0YWNrJyA6ICdncmlkJ1wiXG4gIFtjbGFzcy5zZGMtdGFibGUtZmlsdGVyZWRdPVwiISFnbG9iYWxGaWx0ZXIoKS50cmltKClcIlxuPlxuICA8ZGl2IGNsYXNzPVwic2RjLXRhYmxlLWNhcHRpb25cIiAqbmdJZj1cInNob3dTZWFyY2goKVwiPlxuICAgIDxkaXYgW3N0eWxlLndpZHRoXT1cImlzTW9iaWxlID8gJzEwMCUnIDogJzIwJSdcIj5cbiAgICAgIDxzZGMtc2VhcmNoYm94XG4gICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyKClcIlxuICAgICAgICBbdHJpZ2dlck1vZGVdPVwidHJpZ2dlck1vZGUoKVwiXG4gICAgICAgIChvblNlYXJjaCk9XCJvblNlYXJjaFRlcm0oJGV2ZW50KVwiXG4gICAgICAgIChvbkNsZWFyKT1cIm9uQ2xlYXJTZWFyY2goKVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8dGFibGUgY2xhc3M9XCJzZGMtdGFibGUtZ3JpZFwiPlxuICAgIDx0aGVhZD5cbiAgICAgIDx0cj5cbiAgICAgICAgQGZvciAoY29sIG9mIGNvbHM7IGxldCBpID0gJGluZGV4OyB0cmFjayBpKSB7XG4gICAgICAgIDx0aFxuICAgICAgICAgIFtjbGFzcy5zZGMtdGFibGUtdGgtY2hlY2tib3hdPVwiY29sLnR5cGUgPT09ICdjaGVja2JveC1zZWxlY3Rpb24nXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU29ydChjb2wuZmllbGQhLCBjb2wuc29ydGFibGUgIT09IGZhbHNlKVwiXG4gICAgICAgICAgW2NsYXNzLnNkYy10YWJsZS1zb3J0YWJsZV09XCJjb2wuc29ydGFibGUgIT09IGZhbHNlXCJcbiAgICAgICAgICBbY2xhc3Muc2RjLXRhYmxlLWlzLXNlbGVjdGVkXT1cInNvcnRGaWVsZCgpID09PSBjb2wuZmllbGRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy10YWJsZS10aC1pbm5lclwiIFtjbGFzcy5zZGMtdGFibGUtc29ydGFibGVdPVwiY29sLnNvcnRhYmxlICE9PSBmYWxzZVwiPlxuICAgICAgICAgICAgQHN3aXRjaCAoY29sLnR5cGUpIHsgQGNhc2UgKCdjaGVja2JveC1zZWxlY3Rpb24nKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy10YWJsZS10aC1sYWJlbFwiPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XG4gICAgICAgICAgICB9IEBkZWZhdWx0IHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXRhYmxlLXRoLWxhYmVsXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXRhYmxlLXNvcnQtaWNvbnMgc2RjLXRhYmxlLXNvcnQtb3ZlcmxheVwiICpuZ0lmPVwiY29sLnNvcnRhYmxlICE9PSBmYWxzZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNvcnRJY29uc1RwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGNvbDogY29sIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH0gfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInNkYy10YWJsZS10aC1jZW50ZXJcIlxuICAgICAgICAgICAgKm5nSWY9XCJjb2wudHlwZSA9PT0gJ2NoZWNrYm94LXNlbGVjdGlvbicgJiYgKGNlbGxDZmcoJ2NoZWNrYm94Jykuc2VsZWN0QWxsID8/IHRydWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNQYWdlRnVsbHlTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0UGFnZShnZXRDaGVja2VkVmFsdWUoJGV2ZW50KSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIH1cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cblxuICAgIDx0Ym9keT5cbiAgICAgIEBpZiAobG9hZGluZykgeyB9IEBlbHNlIHsgQGZvciAocm93IG9mIHBhZ2VEYXRhKCk7IGxldCByID0gJGluZGV4OyB0cmFjayByKSB7XG4gICAgICA8dHI+XG4gICAgICAgIEBmb3IgKGNvbCBvZiBjb2xzOyBsZXQgYyA9ICRpbmRleDsgdHJhY2sgYykge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNb2JpbGU7IGVsc2UgZGVza3RvcENvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLXRhYmxlLXRkLW1vYmlsZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzb3J0SWNvbnNUcGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBjb2w6IGNvbCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtdGFibGUtdGQgc2RjLXRhYmxlLXRkYyBzZGMtdGFibGUtbW9iaWxlLXRkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNkYy10YWJsZS10ZC1jaGVja2JveF09XCJjb2wudHlwZSA9PT0gJ2NoZWNrYm94LXNlbGVjdGlvbidcIlxuICAgICAgICAgICAgICBbY2xhc3Muc2RjLXRhYmxlLWlzLXNlbGVjdGVkXT1cInNvcnRGaWVsZCgpID09PSBjb2wuZmllbGRcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRpdGxlXT1cImNvbC5oZWFkZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU29ydChjb2wuZmllbGQhLCBjb2wuc29ydGFibGUgIT09IGZhbHNlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtdGFibGUtdGQtdmFsXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2VsbFRwbFwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgY29sOiBjb2wgfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2Rlc2t0b3BDb250ZW50PlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJzZGMtdGFibGUtdGQgc2RjLXRhYmxlLXRkY1wiXG4gICAgICAgICAgICBbY2xhc3Muc2RjLXRhYmxlLXRkLWNoZWNrYm94XT1cImNvbC50eXBlID09PSAnY2hlY2tib3gtc2VsZWN0aW9uJ1wiXG4gICAgICAgICAgICBbY2xhc3Muc2RjLXRhYmxlLWlzLXNlbGVjdGVkXT1cInNvcnRGaWVsZCgpID09PSBjb2wuZmllbGRcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS10aXRsZV09XCJjb2wuaGVhZGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLXRhYmxlLXRkLXZhbFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2VsbFRwbFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIGNvbDogY29sIH1cIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICB9XG4gICAgICA8L3RyPlxuICAgICAgfSB9XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cblxuICA8cy1lbXB0eS1zdGF0ZVxuICAgICpuZ0lmPVwiIWxvYWRpbmcgJiYgb3B0aW9ucygpLmVtcHR5Py5zaG93ICE9PSBmYWxzZSAmJiB0b3RhbFJlY29yZHMoKSA9PT0gMFwiXG4gICAgaWQ9XCJteS1lbXB0eS1zdGF0ZVwiXG4gICAgaWNvbkNsYXNzPVwiZmEgZmEtaW5ib3hcIlxuICAgIFt0aXRsZV09XCJlbXB0eVRpdGxlKClcIlxuICAgIFtkZXNjcmlwdGlvbl09XCJlbXB0eVRleHQoKVwiXG4gICAgY2xhc3M9XCJzZGMtdGFibGUtZW1wdHktc3RhdGVcIlxuICA+XG4gIDwvcy1lbXB0eS1zdGF0ZT5cblxuICA8cy1sb2FkaW5nLXN0YXRlICpuZ0lmPVwibG9hZGluZ1wiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbYmxvY2tXaW5kb3ddPVwiZmFsc2VcIiBjbGFzcz1cInNkYy10YWJsZS1sb2FkaW5nLXN0YXRlXCI+XG4gIDwvcy1sb2FkaW5nLXN0YXRlPlxuXG4gIDxkaXYgY2xhc3M9XCJzZGMtdGFibGUtcGFnaW5hdG9yXCIgKm5nSWY9XCJzaG93UGFnaW5hdG9yKClcIj5cbiAgICA8c2RjLXBhZ2luYXRvclxuICAgICAgW2ZpcnN0XT1cImZpcnN0KClcIlxuICAgICAgW3Jvd3NdPVwicm93cygpXCJcbiAgICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzKClcIlxuICAgICAgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJpc01vYmlsZSA/IHVuZGVmaW5lZCA6IHJvd3NQZXJQYWdlT3B0aW9ucygpXCJcbiAgICAgIFtpc01vYmlsZV09XCJpc01vYmlsZVwiXG4gICAgICBbdG90YWxSZWNvcmRzTGFiZWxdPVwidG90YWxSZWNvcmRzTGFiZWwoKVwiXG4gICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPjwvc2RjLXBhZ2luYXRvcj5cbiAgPC9kaXY+XG5cbiAgPG5nLXRlbXBsYXRlICNjZWxsVHBsIGxldC1yb3cgbGV0LWNvbD1cImNvbFwiPlxuICAgIEBzd2l0Y2ggKGNvbC50eXBlKSB7IEBjYXNlICgnY2hlY2tib3gtc2VsZWN0aW9uJykge1xuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjZWxsQ2ZnKCdjaGVja2JveCcpIGFzIGNoZWNrYm94T3B0aW9uc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNkYy10YWJsZS1jaGVja2JveFwiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiaXNSb3dTZWxlY3RlZChyb3cpXCIgKGNoYW5nZSk9XCJvblRvZ2dsZVJvdyhyb3csIGdldENoZWNrZWRWYWx1ZSgkZXZlbnQpKVwiIC8+XG4gICAgICAgIDxsYWJlbD57eyBfKHJvdywgY29sLmZpZWxkKSB9fTwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICB9IEBjYXNlICgnZGF0ZScpIHtcbiAgICB7eyBmb3JtYXREYXRlKF8ocm93LCBjb2wuZmllbGQpLCBjb2wuZm9ybWF0IHx8ICdzaG9ydERhdGUnKSB9fVxuICAgIH0gQGNhc2UgKCdzdHJvbmcnKSB7XG4gICAgPGRpdiBjbGFzcz1cInNkYy10YWJsZS1zdHJvbmctbGFiZWxcIj57eyBfKHJvdywgY29sLmZpZWxkKSB9fTwvZGl2PlxuICAgIH0gQGNhc2UgKCdjb2RlJykge1xuICAgIDxjb2RlIGNsYXNzPVwic2RjLXRhYmxlLWNvZGUtbGFiZWxcIj57eyBfKHJvdywgY29sLmZpZWxkKSB9fTwvY29kZT5cbiAgICB9IEBjYXNlICgnY3VycmVuY3knKSB7XG4gICAge3sgZm9ybWF0Q3VycmVuY3koXyhyb3csIGNvbC5maWVsZCksIGNvbC5mb3JtYXQgfHwgJ0JSTCcpIH19XG4gICAgfSBAY2FzZSAoJ3RhZycpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2VsbENmZygndGFnJykgYXMgdGFnT3B0aW9uc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNkYy10YWJsZS10YWdzXCI+XG4gICAgICAgIEBmb3IgKHRhZyBvZiB0YWdzT2Yocm93LCBjb2wpOyBsZXQgdCA9ICRpbmRleDsgdHJhY2sgdCkge1xuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwic2RjLXRhYmxlLXRhZ1wiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwidGFnT3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3IgfHwgbnVsbFwiXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhZ09wdGlvbnMuY29sb3IgfHwgbnVsbFwiXG4gICAgICAgICAgW2F0dHIudGl0bGVdPVwidGFnT3B0aW9ucy50b29sdGlwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpICpuZ0lmPVwidGFnT3B0aW9ucy5pY29uXCIgW2NsYXNzXT1cInRhZ09wdGlvbnMuaWNvblwiPjwvaT5cbiAgICAgICAgICB7eyB0YWcgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICB9IEBjYXNlICgnYnV0dG9uJykge1xuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjZWxsQ2ZnKCdidXR0b24nKSBhcyBidXR0b25PcHRpb25zXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBfX2sgb2YgW2J1dHRvbktleShyb3csIGNvbCwgYnV0dG9uT3B0aW9ucyldXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtdGFibGUtYnV0dG9uXCI+XG4gICAgICAgICAgPHNkYy1idXR0b25cbiAgICAgICAgICAgIHN0eWxlPVwibWF4LXdpZHRoOiA3MCVcIlxuICAgICAgICAgICAgW3NpemVdPVwiYnV0dG9uT3B0aW9ucy5zaXplXCJcbiAgICAgICAgICAgIFtwcmlvcml0eV09XCJidXR0b25PcHRpb25zLnByaW9yaXR5IHx8ICdwcmltYXJ5J1wiXG4gICAgICAgICAgICBbaWNvbl09XCJidXR0b25PcHRpb25zLmljb25cIlxuICAgICAgICAgICAgW2xhYmVsXT1cImJ1dHRvbk9wdGlvbnMubGFiZWxcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1dHRvbk9wdGlvbnMuZGlzYWJsZWRcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImJ1dHRvbk9wdGlvbnMudG9vbHRpcFwiXG4gICAgICAgICAgICBbYXR0ci5zaXplXT1cImJ1dHRvbk9wdGlvbnMuc2l6ZVwiXG4gICAgICAgICAgICBbYXR0ci5wcmlvcml0eV09XCJidXR0b25PcHRpb25zLnByaW9yaXR5IHx8ICdwcmltYXJ5J1wiXG4gICAgICAgICAgICBbYXR0ci5zZXZlcml0eV09XCJidXR0b25PcHRpb25zLnByaW9yaXR5IHx8ICdwcmltYXJ5J1wiXG4gICAgICAgICAgICBbYXR0ci5pY29uXT1cImJ1dHRvbk9wdGlvbnMuaWNvblwiXG4gICAgICAgICAgICBbYXR0ci5sYWJlbF09XCJidXR0b25PcHRpb25zLmxhYmVsXCJcbiAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImJ1dHRvbk9wdGlvbnMuZGlzYWJsZWQgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiYnV0dG9uT3B0aW9ucy50b29sdGlwIHx8IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1rZXldPVwiX19rXCJcbiAgICAgICAgICAgIChjbGljayk9XCJidXR0b25PcHRpb25zLmRpc2FibGVkID8gbnVsbCA6IG9uQnV0dG9uQ2xpY2socm93LCBjb2wpXCJcbiAgICAgICAgICA+PC9zZGMtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIH0gQGRlZmF1bHQgeyB7eyBfKHJvdywgY29sLmZpZWxkKSB9fSB9IH1cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3NvcnRJY29uc1RwbCBsZXQtY29sPVwiY29sXCI+XG4gIDxzcGFuICpuZ0lmPVwiY29sLnNvcnRhYmxlICE9PSBmYWxzZSAmJiBjb2wudHlwZSAhPT0gJ2NoZWNrYm94LXNlbGVjdGlvbidcIiBjbGFzcz1cInNkYy10YWJsZS1zb3J0LWluZGljYXRvclwiPlxuICAgIDxpICpuZ0lmPVwic29ydEZpZWxkKCkgIT09IGNvbC5maWVsZFwiIGNsYXNzPVwiZmFzIGZhLXNvcnQtYWx0IHNkYy10YWJsZS1zb3J0LW5ldXRyYWxcIj48L2k+XG4gICAgPGlcbiAgICAgICpuZ0lmPVwic29ydEZpZWxkKCkgPT09IGNvbC5maWVsZCAmJiBzb3J0T3JkZXIoKSA9PT0gMVwiXG4gICAgICBjbGFzcz1cImZhcyBmYS1zb3J0LWFtb3VudC11cC1hbHQgc2RjLXRhYmxlLXNvcnQtYWN0aXZlXCJcbiAgICA+PC9pPlxuICAgIDxpXG4gICAgICAqbmdJZj1cInNvcnRGaWVsZCgpID09PSBjb2wuZmllbGQgJiYgc29ydE9yZGVyKCkgPT09IC0xXCJcbiAgICAgIGNsYXNzPVwiZmFzIGZhLXNvcnQtYW1vdW50LWRvd24gc2RjLXRhYmxlLXNvcnQtYWN0aXZlXCJcbiAgICA+PC9pPlxuICA8L3NwYW4+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJjb2wuc29ydGFibGUgPT09IGZhbHNlIHx8IGNvbC50eXBlID09PSAnY2hlY2tib3gtc2VsZWN0aW9uJ1wiXG4gICAgY2xhc3M9XCJzZGMtdGFibGUtc29ydC1pbmRpY2F0b3Igc2RjLXRhYmxlLXNvcnQtaW5kaWNhdG9yLXBsYWNlaG9sZGVyXCJcbiAgPjwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|