@byuhbll/components 5.1.0-beta.1 → 5.2.0-beta.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/esm2022/lib/header-with-impersonation/header-with-impersonation.component.mjs +89 -2
- package/esm2022/lib/ss-search-bar/models/search-config.model.mjs +1 -1
- package/esm2022/lib/ss-search-bar/simple-search/simple-search.component.mjs +34 -75
- package/esm2022/lib/ss-search-bar/ss-search-bar.component.mjs +3 -9
- package/fesm2022/byuhbll-components.mjs +122 -82
- package/fesm2022/byuhbll-components.mjs.map +1 -1
- package/lib/header-with-impersonation/header-with-impersonation.component.d.ts +19 -2
- package/lib/ss-search-bar/models/search-config.model.d.ts +0 -1
- package/lib/ss-search-bar/simple-search/simple-search.component.d.ts +4 -11
- package/lib/ss-search-bar/ss-search-bar.component.d.ts +1 -3
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, computed, EventEmitter, input, Output } from '@angular/core';
|
|
1
|
+
import { Component, computed, EventEmitter, input, Output, effect, runInInjectionContext, inject, Injector, } from '@angular/core';
|
|
2
2
|
import { HbllHeaderComponent } from '../hbll-header/hbll-header.component';
|
|
3
3
|
import { ImpersonationBannerComponent } from '../impersonation-banner/impersonation-banner.component';
|
|
4
4
|
import { defaultOidcBaseUri, defaultOidcDefaultIdp, ImpersonateModalComponent, } from '../impersonate-modal/impersonate-modal.component';
|
|
@@ -24,6 +24,93 @@ export class HeaderWithImpersonationComponent {
|
|
|
24
24
|
: false);
|
|
25
25
|
this.showImpersonationModal = false;
|
|
26
26
|
this.isImpersonating = computed(() => !!this.parsedToken()?.['impersonator']);
|
|
27
|
+
// Inactivity timeout for impersonation
|
|
28
|
+
this.activityEvents = [
|
|
29
|
+
'keydown',
|
|
30
|
+
'pointerdown',
|
|
31
|
+
'wheel',
|
|
32
|
+
'scroll',
|
|
33
|
+
];
|
|
34
|
+
this.inactivityTimerId = null;
|
|
35
|
+
this.inactivityTimeoutMs = 5 * 60 * 1000; // 5 minutes
|
|
36
|
+
this.debounceTimerId = null;
|
|
37
|
+
this.debounceDelayMs = 250;
|
|
38
|
+
this.trackingActive = false;
|
|
39
|
+
this.injector = inject(Injector);
|
|
40
|
+
/** Reset the inactivity countdown (no-op if not impersonating) */
|
|
41
|
+
this.resetInactivityTimer = () => {
|
|
42
|
+
if (!this.isImpersonating())
|
|
43
|
+
return;
|
|
44
|
+
if (this.inactivityTimerId)
|
|
45
|
+
clearTimeout(this.inactivityTimerId);
|
|
46
|
+
this.inactivityTimerId = window.setTimeout(() => {
|
|
47
|
+
this.endImpersonation.emit();
|
|
48
|
+
this.stopInactivityTracking();
|
|
49
|
+
}, this.inactivityTimeoutMs);
|
|
50
|
+
};
|
|
51
|
+
/** Debounce activity to avoid hammering resets during event storms */
|
|
52
|
+
this.debouncedResetTimer = () => {
|
|
53
|
+
if (this.debounceTimerId)
|
|
54
|
+
clearTimeout(this.debounceTimerId);
|
|
55
|
+
this.debounceTimerId = window.setTimeout(() => {
|
|
56
|
+
this.resetInactivityTimer();
|
|
57
|
+
}, this.debounceDelayMs);
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
ngOnInit() {
|
|
61
|
+
// effect can only be used within an injection context (ex: constructor)
|
|
62
|
+
runInInjectionContext(this.injector, () => {
|
|
63
|
+
effect(() => {
|
|
64
|
+
const impersonating = this.isImpersonating();
|
|
65
|
+
const token = this.parsedToken();
|
|
66
|
+
// when token refreshes after 5 minutes, it leaves a small moment where there is no token
|
|
67
|
+
// this prevents dropping inactivtiy timer during that blip
|
|
68
|
+
if (!token)
|
|
69
|
+
return;
|
|
70
|
+
if (impersonating) {
|
|
71
|
+
if (!this.trackingActive)
|
|
72
|
+
this.startInactivityTracking();
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
if (this.trackingActive)
|
|
76
|
+
this.stopInactivityTracking();
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
ngOnDestroy() {
|
|
82
|
+
this.stopInactivityTracking();
|
|
83
|
+
}
|
|
84
|
+
/** Begin listening and start countdown */
|
|
85
|
+
startInactivityTracking() {
|
|
86
|
+
this.activityEvents.forEach((event) => {
|
|
87
|
+
// 'scroll' on document doesn't bubble; use window + capture to catch nested scrolls
|
|
88
|
+
const target = event === 'scroll' ? window : document;
|
|
89
|
+
const options = event === 'scroll'
|
|
90
|
+
? { passive: true, capture: true }
|
|
91
|
+
: { passive: true };
|
|
92
|
+
target.addEventListener(event, this.debouncedResetTimer, options);
|
|
93
|
+
});
|
|
94
|
+
this.trackingActive = true;
|
|
95
|
+
this.resetInactivityTimer();
|
|
96
|
+
}
|
|
97
|
+
/** Remove listeners and clear timers */
|
|
98
|
+
stopInactivityTracking() {
|
|
99
|
+
this.activityEvents.forEach((event) => {
|
|
100
|
+
const target = event === 'scroll' ? window : document;
|
|
101
|
+
// IMPORTANT: capture must match how it was added for scroll
|
|
102
|
+
const options = event === 'scroll' ? { capture: true } : undefined;
|
|
103
|
+
target.removeEventListener(event, this.debouncedResetTimer, options);
|
|
104
|
+
});
|
|
105
|
+
if (this.inactivityTimerId) {
|
|
106
|
+
clearTimeout(this.inactivityTimerId);
|
|
107
|
+
this.inactivityTimerId = null;
|
|
108
|
+
}
|
|
109
|
+
if (this.debounceTimerId) {
|
|
110
|
+
clearTimeout(this.debounceTimerId);
|
|
111
|
+
this.debounceTimerId = null;
|
|
112
|
+
}
|
|
113
|
+
this.trackingActive = false;
|
|
27
114
|
}
|
|
28
115
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HeaderWithImpersonationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29
116
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: HeaderWithImpersonationComponent, isStandalone: true, selector: "lib-header-with-impersonation", inputs: { accessTokenPayload: { classPropertyName: "accessTokenPayload", publicName: "accessTokenPayload", isSignal: true, isRequired: true, transformFunction: null }, oidcBaseUri: { classPropertyName: "oidcBaseUri", publicName: "oidcBaseUri", isSignal: true, isRequired: false, transformFunction: null }, oidcDefaultIdp: { classPropertyName: "oidcDefaultIdp", publicName: "oidcDefaultIdp", isSignal: true, isRequired: false, transformFunction: null }, mainSiteBaseUrl: { classPropertyName: "mainSiteBaseUrl", publicName: "mainSiteBaseUrl", isSignal: true, isRequired: false, transformFunction: null }, personBaseUri: { classPropertyName: "personBaseUri", publicName: "personBaseUri", isSignal: true, isRequired: false, transformFunction: null }, myAccountApiBaseUri: { classPropertyName: "myAccountApiBaseUri", publicName: "myAccountApiBaseUri", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { login: "login", logout: "logout", endImpersonation: "endImpersonation" }, ngImport: i0, template: "<lib-impersonation-banner\n [accessTokenPayload]=\"accessTokenPayload()\"\n (endImpersonation)=\"endImpersonation.emit()\"\n [personBaseUri]=\"personBaseUri()\"\n [myAccountApiBaseUri]=\"myAccountApiBaseUri()\"\n></lib-impersonation-banner>\n<lib-hbll-header\n [name]=\"name()\"\n [showImpersonateButton]=\"showImpersonateButton()\"\n (openImpersonationModal)=\"showImpersonationModal = true\"\n (login)=\"login.emit()\"\n (logout)=\"logout.emit()\"\n [mainsitebaseurl]=\"mainSiteBaseUrl()\"\n/>\n<lib-impersonate-modal\n [showModal]=\"showImpersonationModal\"\n [oidcBaseUri]=\"oidcBaseUri()\"\n [oidcDefaultIdp]=\"oidcDefaultIdp()\"\n [accessTokenPayload]=\"accessTokenPayload()\"\n (dismiss)=\"showImpersonationModal = false\"\n (init)=\"showImpersonationModal = true\"\n></lib-impersonate-modal>\n", styles: [""], dependencies: [{ kind: "component", type: HbllHeaderComponent, selector: "lib-hbll-header", inputs: ["name", "mainsitebaseurl", "showImpersonateButton"], outputs: ["openImpersonationModal", "login", "logout"] }, { kind: "component", type: ImpersonationBannerComponent, selector: "lib-impersonation-banner", inputs: ["accessTokenPayload", "personBaseUri", "myAccountApiBaseUri"], outputs: ["endImpersonation"] }, { kind: "component", type: ImpersonateModalComponent, selector: "lib-impersonate-modal", inputs: ["showModal", "oidcBaseUri", "oidcDefaultIdp", "accessTokenPayload"], outputs: ["dismiss", "init"] }] }); }
|
|
@@ -38,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
38
125
|
}], endImpersonation: [{
|
|
39
126
|
type: Output
|
|
40
127
|
}] } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXdpdGgtaW1wZXJzb25hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvaGVhZGVyLXdpdGgtaW1wZXJzb25hdGlvbi9oZWFkZXItd2l0aC1pbXBlcnNvbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9oZWFkZXItd2l0aC1pbXBlcnNvbmF0aW9uL2hlYWRlci13aXRoLWltcGVyc29uYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDdEcsT0FBTyxFQUNILGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIseUJBQXlCLEdBQzVCLE1BQU0sa0RBQWtELENBQUM7QUFFMUQsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLFlBQVksQ0FBQzs7QUFTbkQsTUFBTSxPQUFPLGdDQUFnQztJQVA3QztRQVFJLHVCQUFrQixHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWdCLENBQUM7UUFDcEQsZ0JBQVcsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4QyxtQkFBYyxHQUFHLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzlDLG9CQUFlLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDL0Msa0JBQWEsR0FBRyxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUM3RCx3QkFBbUIsR0FBRyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUVoRCxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNqQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsQyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXRELDhEQUE4RDtRQUNwRCxnQkFBVyxHQUFzRCxRQUFRLENBQUMsR0FBRyxFQUFFLENBQ3JGLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3RGLENBQUM7UUFDUSxTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckYsMEJBQXFCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUM1QyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFdBQVcsRUFBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FDM0UsZUFBZSxDQUNsQixDQUNKO1lBQ0gsQ0FBQyxDQUFDLEtBQUssQ0FDZCxDQUFDO1FBQ1EsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLG9CQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0tBQ3BGOzhHQTdCWSxnQ0FBZ0M7a0dBQWhDLGdDQUFnQyw2akNDbEI3QyxtMUJBc0JBLDBERFJjLG1CQUFtQixrTEFBRSw0QkFBNEIsNEtBQUUseUJBQXlCOzsyRkFJN0UsZ0NBQWdDO2tCQVA1QyxTQUFTOytCQUNJLCtCQUErQixjQUM3QixJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSw0QkFBNEIsRUFBRSx5QkFBeUIsQ0FBQzs4QkFZN0UsS0FBSztzQkFBZCxNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFdmVudEVtaXR0ZXIsIGlucHV0LCBPdXRwdXQsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSGJsbEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2hibGwtaGVhZGVyL2hibGwtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbXBlcnNvbmF0aW9uQmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vaW1wZXJzb25hdGlvbi1iYW5uZXIvaW1wZXJzb25hdGlvbi1iYW5uZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgZGVmYXVsdE9pZGNCYXNlVXJpLFxuICAgIGRlZmF1bHRPaWRjRGVmYXVsdElkcCxcbiAgICBJbXBlcnNvbmF0ZU1vZGFsQ29tcG9uZW50LFxufSBmcm9tICcuLi9pbXBlcnNvbmF0ZS1tb2RhbC9pbXBlcnNvbmF0ZS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9rZW5QYXlsb2FkIH0gZnJvbSAnLi4vbW9kZWxzL3Rva2VuLXBheWxvYWQnO1xuaW1wb3J0IHsgand0RGVjb2RlLCBKd3RQYXlsb2FkIH0gZnJvbSAnand0LWRlY29kZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLWhlYWRlci13aXRoLWltcGVyc29uYXRpb24nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0hibGxIZWFkZXJDb21wb25lbnQsIEltcGVyc29uYXRpb25CYW5uZXJDb21wb25lbnQsIEltcGVyc29uYXRlTW9kYWxDb21wb25lbnRdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXItd2l0aC1pbXBlcnNvbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vaGVhZGVyLXdpdGgtaW1wZXJzb25hdGlvbi5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIEhlYWRlcldpdGhJbXBlcnNvbmF0aW9uQ29tcG9uZW50IHtcbiAgICBhY2Nlc3NUb2tlblBheWxvYWQgPSBpbnB1dC5yZXF1aXJlZDxUb2tlblBheWxvYWQ+KCk7XG4gICAgb2lkY0Jhc2VVcmkgPSBpbnB1dChkZWZhdWx0T2lkY0Jhc2VVcmkpO1xuICAgIG9pZGNEZWZhdWx0SWRwID0gaW5wdXQoZGVmYXVsdE9pZGNEZWZhdWx0SWRwKTtcbiAgICBtYWluU2l0ZUJhc2VVcmwgPSBpbnB1dCgnaHR0cHM6Ly9saWIuYnl1LmVkdScpO1xuICAgIHBlcnNvbkJhc2VVcmkgPSBpbnB1dCgnaHR0cHM6Ly9hcHBzLmxpYi5ieXUuZWR1L3BlcnNvbi92Mi8nKTtcbiAgICBteUFjY291bnRBcGlCYXNlVXJpID0gaW5wdXQoJ2h0dHBzOi8vYXBpLmxpYi5ieXUuZWR1L3YxJyk7XG5cbiAgICBAT3V0cHV0KCkgbG9naW4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIGxvZ291dCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgZW5kSW1wZXJzb25hdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJvdGVjdGVkIHBhcnNlZFRva2VuOiBTaWduYWw8KEp3dFBheWxvYWQgJiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB8IG51bGw+ID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgdGhpcy5hY2Nlc3NUb2tlblBheWxvYWQoKS50b2tlbiA/IGp3dERlY29kZSh0aGlzLmFjY2Vzc1Rva2VuUGF5bG9hZCgpLnRva2VuKSA6IG51bGwsXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgbmFtZSA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnBhcnNlZFRva2VuKCkgPyB0aGlzLnBhcnNlZFRva2VuKCkhWydnaXZlbl9uYW1lJ10gOiAnJykpO1xuICAgIHByb3RlY3RlZCBzaG93SW1wZXJzb25hdGVCdXR0b24gPSBjb21wdXRlZCgoKSA9PlxuICAgICAgICB0aGlzLnBhcnNlZFRva2VuKClcbiAgICAgICAgICAgID8gISEoXG4gICAgICAgICAgICAgICAgICAhdGhpcy5pc0ltcGVyc29uYXRpbmcoKSAmJlxuICAgICAgICAgICAgICAgICAgdGhpcy5wYXJzZWRUb2tlbigpIVsncmVzb3VyY2VfYWNjZXNzJ11bJ3JlYWxtLW1hbmFnZW1lbnQnXT8uWydyb2xlcyddPy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAnaW1wZXJzb25hdGlvbicsXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogZmFsc2UsXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgc2hvd0ltcGVyc29uYXRpb25Nb2RhbCA9IGZhbHNlO1xuICAgIHByaXZhdGUgaXNJbXBlcnNvbmF0aW5nID0gY29tcHV0ZWQoKCkgPT4gISF0aGlzLnBhcnNlZFRva2VuKCk/LlsnaW1wZXJzb25hdG9yJ10pO1xufVxuIiwiPGxpYi1pbXBlcnNvbmF0aW9uLWJhbm5lclxuICAgIFthY2Nlc3NUb2tlblBheWxvYWRdPVwiYWNjZXNzVG9rZW5QYXlsb2FkKClcIlxuICAgIChlbmRJbXBlcnNvbmF0aW9uKT1cImVuZEltcGVyc29uYXRpb24uZW1pdCgpXCJcbiAgICBbcGVyc29uQmFzZVVyaV09XCJwZXJzb25CYXNlVXJpKClcIlxuICAgIFtteUFjY291bnRBcGlCYXNlVXJpXT1cIm15QWNjb3VudEFwaUJhc2VVcmkoKVwiXG4+PC9saWItaW1wZXJzb25hdGlvbi1iYW5uZXI+XG48bGliLWhibGwtaGVhZGVyXG4gICAgW25hbWVdPVwibmFtZSgpXCJcbiAgICBbc2hvd0ltcGVyc29uYXRlQnV0dG9uXT1cInNob3dJbXBlcnNvbmF0ZUJ1dHRvbigpXCJcbiAgICAob3BlbkltcGVyc29uYXRpb25Nb2RhbCk9XCJzaG93SW1wZXJzb25hdGlvbk1vZGFsID0gdHJ1ZVwiXG4gICAgKGxvZ2luKT1cImxvZ2luLmVtaXQoKVwiXG4gICAgKGxvZ291dCk9XCJsb2dvdXQuZW1pdCgpXCJcbiAgICBbbWFpbnNpdGViYXNldXJsXT1cIm1haW5TaXRlQmFzZVVybCgpXCJcbi8+XG48bGliLWltcGVyc29uYXRlLW1vZGFsXG4gICAgW3Nob3dNb2RhbF09XCJzaG93SW1wZXJzb25hdGlvbk1vZGFsXCJcbiAgICBbb2lkY0Jhc2VVcmldPVwib2lkY0Jhc2VVcmkoKVwiXG4gICAgW29pZGNEZWZhdWx0SWRwXT1cIm9pZGNEZWZhdWx0SWRwKClcIlxuICAgIFthY2Nlc3NUb2tlblBheWxvYWRdPVwiYWNjZXNzVG9rZW5QYXlsb2FkKClcIlxuICAgIChkaXNtaXNzKT1cInNob3dJbXBlcnNvbmF0aW9uTW9kYWwgPSBmYWxzZVwiXG4gICAgKGluaXQpPVwic2hvd0ltcGVyc29uYXRpb25Nb2RhbCA9IHRydWVcIlxuPjwvbGliLWltcGVyc29uYXRlLW1vZGFsPlxuIl19
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXdpdGgtaW1wZXJzb25hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvaGVhZGVyLXdpdGgtaW1wZXJzb25hdGlvbi9oZWFkZXItd2l0aC1pbXBlcnNvbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9oZWFkZXItd2l0aC1pbXBlcnNvbmF0aW9uL2hlYWRlci13aXRoLWltcGVyc29uYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBSU4sTUFBTSxFQUNOLHFCQUFxQixFQUNyQixNQUFNLEVBQ04sUUFBUSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3RHLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLHlCQUF5QixHQUM1QixNQUFNLGtEQUFrRCxDQUFDO0FBRTFELE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxZQUFZLENBQUM7O0FBU25ELE1BQU0sT0FBTyxnQ0FBZ0M7SUFQN0M7UUFRSSx1QkFBa0IsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFnQixDQUFDO1FBQ3BELGdCQUFXLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM5QyxvQkFBZSxHQUFHLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9DLGtCQUFhLEdBQUcsS0FBSyxDQUFDLHFDQUFxQyxD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a0JBUDVDLFNBQVM7K0JBQ0ksK0JBQStCLGNBQzdCLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLDRCQUE0QixFQUFFLHlCQUF5QixDQUFDOzhCQVk3RSxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgU2lnbmFsLFxuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgZWZmZWN0LFxuICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSGJsbEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2hibGwtaGVhZGVyL2hibGwtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbXBlcnNvbmF0aW9uQmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vaW1wZXJzb25hdGlvbi1iYW5uZXIvaW1wZXJzb25hdGlvbi1iYW5uZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgZGVmYXVsdE9pZGNCYXNlVXJpLFxuICAgIGRlZmF1bHRPaWRjRGVmYXVsdElkcCxcbiAgICBJbXBlcnNvbmF0ZU1vZGFsQ29tcG9uZW50LFxufSBmcm9tICcuLi9pbXBlcnNvbmF0ZS1tb2RhbC9pbXBlcnNvbmF0ZS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9rZW5QYXlsb2FkIH0gZnJvbSAnLi4vbW9kZWxzL3Rva2VuLXBheWxvYWQnO1xuaW1wb3J0IHsgand0RGVjb2RlLCBKd3RQYXlsb2FkIH0gZnJvbSAnand0LWRlY29kZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLWhlYWRlci13aXRoLWltcGVyc29uYXRpb24nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0hibGxIZWFkZXJDb21wb25lbnQsIEltcGVyc29uYXRpb25CYW5uZXJDb21wb25lbnQsIEltcGVyc29uYXRlTW9kYWxDb21wb25lbnRdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXItd2l0aC1pbXBlcnNvbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vaGVhZGVyLXdpdGgtaW1wZXJzb25hdGlvbi5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIEhlYWRlcldpdGhJbXBlcnNvbmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGFjY2Vzc1Rva2VuUGF5bG9hZCA9IGlucHV0LnJlcXVpcmVkPFRva2VuUGF5bG9hZD4oKTtcbiAgICBvaWRjQmFzZVVyaSA9IGlucHV0KGRlZmF1bHRPaWRjQmFzZVVyaSk7XG4gICAgb2lkY0RlZmF1bHRJZHAgPSBpbnB1dChkZWZhdWx0T2lkY0RlZmF1bHRJZHApO1xuICAgIG1haW5TaXRlQmFzZVVybCA9IGlucHV0KCdodHRwczovL2xpYi5ieXUuZWR1Jyk7XG4gICAgcGVyc29uQmFzZVVyaSA9IGlucHV0KCdodHRwczovL2FwcHMubGliLmJ5dS5lZHUvcGVyc29uL3YyLycpO1xuICAgIG15QWNjb3VudEFwaUJhc2VVcmkgPSBpbnB1dCgnaHR0cHM6Ly9hcGkubGliLmJ5dS5lZHUvdjEnKTtcblxuICAgIEBPdXRwdXQoKSBsb2dpbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgbG9nb3V0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSBlbmRJbXBlcnNvbmF0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcm90ZWN0ZWQgcGFyc2VkVG9rZW46IFNpZ25hbDwoSnd0UGF5bG9hZCAmIFJlY29yZDxzdHJpbmcsIGFueT4pIHwgbnVsbD4gPSBjb21wdXRlZCgoKSA9PlxuICAgICAgICB0aGlzLmFjY2Vzc1Rva2VuUGF5bG9hZCgpLnRva2VuID8gand0RGVjb2RlKHRoaXMuYWNjZXNzVG9rZW5QYXlsb2FkKCkudG9rZW4pIDogbnVsbCxcbiAgICApO1xuICAgIHByb3RlY3RlZCBuYW1lID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMucGFyc2VkVG9rZW4oKSA/IHRoaXMucGFyc2VkVG9rZW4oKSFbJ2dpdmVuX25hbWUnXSA6ICcnKSk7XG4gICAgcHJvdGVjdGVkIHNob3dJbXBlcnNvbmF0ZUJ1dHRvbiA9IGNvbXB1dGVkKCgpID0+XG4gICAgICAgIHRoaXMucGFyc2VkVG9rZW4oKVxuICAgICAgICAgICAgPyAhIShcbiAgICAgICAgICAgICAgICAgICF0aGlzLmlzSW1wZXJzb25hdGluZygpICYmXG4gICAgICAgICAgICAgICAgICB0aGlzLnBhcnNlZFRva2VuKCkhWydyZXNvdXJjZV9hY2Nlc3MnXVsncmVhbG0tbWFuYWdlbWVudCddPy5bJ3JvbGVzJ10/LmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICdpbXBlcnNvbmF0aW9uJyxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBmYWxzZSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHNob3dJbXBlcnNvbmF0aW9uTW9kYWwgPSBmYWxzZTtcbiAgICBwcml2YXRlIGlzSW1wZXJzb25hdGluZyA9IGNvbXB1dGVkKCgpID0+ICEhdGhpcy5wYXJzZWRUb2tlbigpPy5bJ2ltcGVyc29uYXRvciddKTtcblxuICAgIC8vIEluYWN0aXZpdHkgdGltZW91dCBmb3IgaW1wZXJzb25hdGlvblxuICAgIHByaXZhdGUgYWN0aXZpdHlFdmVudHM6IEFycmF5PCdrZXlkb3duJyB8ICdwb2ludGVyZG93bicgfCAnd2hlZWwnIHwgJ3Njcm9sbCc+ID0gW1xuICAgICAgICAna2V5ZG93bicsXG4gICAgICAgICdwb2ludGVyZG93bicsXG4gICAgICAgICd3aGVlbCcsXG4gICAgICAgICdzY3JvbGwnLFxuICAgIF07XG4gICAgcHJpdmF0ZSBpbmFjdGl2aXR5VGltZXJJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBpbmFjdGl2aXR5VGltZW91dE1zID0gNSAqIDYwICogMTAwMDsgLy8gNSBtaW51dGVzXG4gICAgcHJpdmF0ZSBkZWJvdW5jZVRpbWVySWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgZGVib3VuY2VEZWxheU1zID0gMjUwO1xuXG4gICAgcHJpdmF0ZSB0cmFja2luZ0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgLy8gZWZmZWN0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aGluIGFuIGluamVjdGlvbiBjb250ZXh0IChleDogY29uc3RydWN0b3IpXG4gICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGltcGVyc29uYXRpbmcgPSB0aGlzLmlzSW1wZXJzb25hdGluZygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5wYXJzZWRUb2tlbigpO1xuXG4gICAgICAgICAgICAgICAgLy8gd2hlbiB0b2tlbiByZWZyZXNoZXMgYWZ0ZXIgNSBtaW51dGVzLCBpdCBsZWF2ZXMgYSBzbWFsbCBtb21lbnQgd2hlcmUgdGhlcmUgaXMgbm8gdG9rZW5cbiAgICAgICAgICAgICAgICAvLyB0aGlzIHByZXZlbnRzIGRyb3BwaW5nIGluYWN0aXZ0aXkgdGltZXIgZHVyaW5nIHRoYXQgYmxpcFxuICAgICAgICAgICAgICAgIGlmICghdG9rZW4pIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGlmIChpbXBlcnNvbmF0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy50cmFja2luZ0FjdGl2ZSkgdGhpcy5zdGFydEluYWN0aXZpdHlUcmFja2luZygpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyYWNraW5nQWN0aXZlKSB0aGlzLnN0b3BJbmFjdGl2aXR5VHJhY2tpbmcoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3RvcEluYWN0aXZpdHlUcmFja2luZygpO1xuICAgIH1cblxuICAgIC8qKiBCZWdpbiBsaXN0ZW5pbmcgYW5kIHN0YXJ0IGNvdW50ZG93biAqL1xuICAgIHByaXZhdGUgc3RhcnRJbmFjdGl2aXR5VHJhY2tpbmcoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZpdHlFdmVudHMuZm9yRWFjaCgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIC8vICdzY3JvbGwnIG9uIGRvY3VtZW50IGRvZXNuJ3QgYnViYmxlOyB1c2Ugd2luZG93ICsgY2FwdHVyZSB0byBjYXRjaCBuZXN0ZWQgc2Nyb2xsc1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0OiBXaW5kb3cgfCBEb2N1bWVudCA9IGV2ZW50ID09PSAnc2Nyb2xsJyA/IHdpbmRvdyA6IGRvY3VtZW50O1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9XG4gICAgICAgICAgICAgICAgZXZlbnQgPT09ICdzY3JvbGwnXG4gICAgICAgICAgICAgICAgICAgID8gKHsgcGFzc2l2ZTogdHJ1ZSwgY2FwdHVyZTogdHJ1ZSB9IGFzIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKVxuICAgICAgICAgICAgICAgICAgICA6ICh7IHBhc3NpdmU6IHRydWUgfSBhcyBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCB0aGlzLmRlYm91bmNlZFJlc2V0VGltZXIsIG9wdGlvbnMpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnRyYWNraW5nQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yZXNldEluYWN0aXZpdHlUaW1lcigpO1xuICAgIH1cblxuICAgIC8qKiBSZW1vdmUgbGlzdGVuZXJzIGFuZCBjbGVhciB0aW1lcnMgKi9cbiAgICBwcml2YXRlIHN0b3BJbmFjdGl2aXR5VHJhY2tpbmcoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZpdHlFdmVudHMuZm9yRWFjaCgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldDogV2luZG93IHwgRG9jdW1lbnQgPSBldmVudCA9PT0gJ3Njcm9sbCcgPyB3aW5kb3cgOiBkb2N1bWVudDtcbiAgICAgICAgICAgIC8vIElNUE9SVEFOVDogY2FwdHVyZSBtdXN0IG1hdGNoIGhvdyBpdCB3YXMgYWRkZWQgZm9yIHNjcm9sbFxuICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9XG4gICAgICAgICAgICAgICAgZXZlbnQgPT09ICdzY3JvbGwnID8gKHsgY2FwdHVyZTogdHJ1ZSB9IGFzIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIHRoaXMuZGVib3VuY2VkUmVzZXRUaW1lciwgb3B0aW9ucyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmluYWN0aXZpdHlUaW1lcklkKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5pbmFjdGl2aXR5VGltZXJJZCk7XG4gICAgICAgICAgICB0aGlzLmluYWN0aXZpdHlUaW1lcklkID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kZWJvdW5jZVRpbWVySWQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRlYm91bmNlVGltZXJJZCk7XG4gICAgICAgICAgICB0aGlzLmRlYm91bmNlVGltZXJJZCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRyYWNraW5nQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIFJlc2V0IHRoZSBpbmFjdGl2aXR5IGNvdW50ZG93biAobm8tb3AgaWYgbm90IGltcGVyc29uYXRpbmcpICovXG4gICAgcHJpdmF0ZSByZXNldEluYWN0aXZpdHlUaW1lciA9ICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzSW1wZXJzb25hdGluZygpKSByZXR1cm47XG5cbiAgICAgICAgaWYgKHRoaXMuaW5hY3Rpdml0eVRpbWVySWQpIGNsZWFyVGltZW91dCh0aGlzLmluYWN0aXZpdHlUaW1lcklkKTtcblxuICAgICAgICB0aGlzLmluYWN0aXZpdHlUaW1lcklkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbmRJbXBlcnNvbmF0aW9uLmVtaXQoKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcEluYWN0aXZpdHlUcmFja2luZygpO1xuICAgICAgICB9LCB0aGlzLmluYWN0aXZpdHlUaW1lb3V0TXMpO1xuICAgIH07XG5cbiAgICAvKiogRGVib3VuY2UgYWN0aXZpdHkgdG8gYXZvaWQgaGFtbWVyaW5nIHJlc2V0cyBkdXJpbmcgZXZlbnQgc3Rvcm1zICovXG4gICAgcHJpdmF0ZSBkZWJvdW5jZWRSZXNldFRpbWVyID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5kZWJvdW5jZVRpbWVySWQpIGNsZWFyVGltZW91dCh0aGlzLmRlYm91bmNlVGltZXJJZCk7XG5cbiAgICAgICAgdGhpcy5kZWJvdW5jZVRpbWVySWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0SW5hY3Rpdml0eVRpbWVyKCk7XG4gICAgICAgIH0sIHRoaXMuZGVib3VuY2VEZWxheU1zKTtcbiAgICB9O1xufVxuIiwiPGxpYi1pbXBlcnNvbmF0aW9uLWJhbm5lclxuICAgIFthY2Nlc3NUb2tlblBheWxvYWRdPVwiYWNjZXNzVG9rZW5QYXlsb2FkKClcIlxuICAgIChlbmRJbXBlcnNvbmF0aW9uKT1cImVuZEltcGVyc29uYXRpb24uZW1pdCgpXCJcbiAgICBbcGVyc29uQmFzZVVyaV09XCJwZXJzb25CYXNlVXJpKClcIlxuICAgIFtteUFjY291bnRBcGlCYXNlVXJpXT1cIm15QWNjb3VudEFwaUJhc2VVcmkoKVwiXG4+PC9saWItaW1wZXJzb25hdGlvbi1iYW5uZXI+XG48bGliLWhibGwtaGVhZGVyXG4gICAgW25hbWVdPVwibmFtZSgpXCJcbiAgICBbc2hvd0ltcGVyc29uYXRlQnV0dG9uXT1cInNob3dJbXBlcnNvbmF0ZUJ1dHRvbigpXCJcbiAgICAob3BlbkltcGVyc29uYXRpb25Nb2RhbCk9XCJzaG93SW1wZXJzb25hdGlvbk1vZGFsID0gdHJ1ZVwiXG4gICAgKGxvZ2luKT1cImxvZ2luLmVtaXQoKVwiXG4gICAgKGxvZ291dCk9XCJsb2dvdXQuZW1pdCgpXCJcbiAgICBbbWFpbnNpdGViYXNldXJsXT1cIm1haW5TaXRlQmFzZVVybCgpXCJcbi8+XG48bGliLWltcGVyc29uYXRlLW1vZGFsXG4gICAgW3Nob3dNb2RhbF09XCJzaG93SW1wZXJzb25hdGlvbk1vZGFsXCJcbiAgICBbb2lkY0Jhc2VVcmldPVwib2lkY0Jhc2VVcmkoKVwiXG4gICAgW29pZGNEZWZhdWx0SWRwXT1cIm9pZGNEZWZhdWx0SWRwKClcIlxuICAgIFthY2Nlc3NUb2tlblBheWxvYWRdPVwiYWNjZXNzVG9rZW5QYXlsb2FkKClcIlxuICAgIChkaXNtaXNzKT1cInNob3dJbXBlcnNvbmF0aW9uTW9kYWwgPSBmYWxzZVwiXG4gICAgKGluaXQpPVwic2hvd0ltcGVyc29uYXRpb25Nb2RhbCA9IHRydWVcIlxuPjwvbGliLWltcGVyc29uYXRlLW1vZGFsPlxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWNvbmZpZy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zcy1zZWFyY2gtYmFyL21vZGVscy9zZWFyY2gtY29uZmlnLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZHZhbmNlZFNlYXJjaFF1ZXJ5Um93IH0gZnJvbSAnLi9hZHZhbmNlZC1zZWFyY2gubW9kZWwnO1xuaW1wb3J0IHsgU2VhcmNoU2NvcGUgfSBmcm9tICcuL3NlYXJjaC1zY29wZS5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoQ29uZmlnIHtcbiAgICBpbnN0aXR1dGlvbjogJ2J5dScgfCAnbGF3JyB8ICdlbnNpZ24nO1xuICAgIHNob3dBZHZhbmNlZFNlYXJjaDogYm9vbGVhbjtcbiAgICBzaG93QWR2YW5jZWRTZWFyY2hBc1RleHQ6IGJvb2xlYW47XG4gICAgc2NvcGU6IFNlYXJjaFNjb3BlO1xuICAgIHE6IHN0cmluZztcbiAgICBhZHZhbmNlZFNlYXJjaFF1ZXJ5Um93czogQWR2YW5jZWRTZWFyY2hRdWVyeVJvd1tdO1xuICAgIGxvY2FsQWR2YW5jZWRTZWFyY2g6IHtcbiAgICAgICAgY3JlYXRpb25EYXRlOiBEYXRlO1xuICAgICAgICBzZWxlY3RlZExhbmd1YWdlczogc3RyaW5nW107XG4gICAgICAgIHNlbGVjdGVkUmVzb3VyY2VUeXBlczogc3RyaW5nW107XG4gICAgICAgIHNlbGVjdGVkQ29sbGVjdGlvbnM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgZXh0ZXJuYWxBZHZhbmNlZFNlYXJjaDoge1xuICAgICAgICBkYXRlUHVibGlzaGVkOiBEYXRlO1xuICAgICAgICBzZWxlY3RlZExhbmd1YWdlczogc3RyaW5nW107XG4gICAgICAgIGxpbWl0UmVzdWx0czoge1xuICAgICAgICAgICAgcGVlclJldmlld2VkOiBib29sZWFuO1xuICAgICAgICB9O1xuICAgICAgICBleHBhbmRSZXN1bHRzOiB7XG4gICAgICAgICAgICBhcHBseUVxdWl2YWxlbnRTdWJqZWN0czogYm9vbGVhbjtcbiAgICAgICAgICAgIGZ1bGxUZXh0OiBib29sZWFuO1xuICAgICAgICB9O1xuICAgIH07XG59XG5cbmludGVyZmFjZSBEYXRlIHtcbiAgICBmcm9tOiBzdHJpbmc7XG4gICAgdG86IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild, inject,
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild, inject, } from '@angular/core';
|
|
2
2
|
import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
3
3
|
import { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';
|
|
4
4
|
import { Subscription } from 'rxjs';
|
|
5
|
-
import { startWith, filter
|
|
5
|
+
import { startWith, filter } from 'rxjs/operators';
|
|
6
6
|
import { MatIconModule } from '@angular/material/icon';
|
|
7
7
|
import { CommonModule } from '@angular/common';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
@@ -13,78 +13,57 @@ export class SimpleSearchComponent {
|
|
|
13
13
|
constructor() {
|
|
14
14
|
this.fb = inject(FormBuilder);
|
|
15
15
|
this.subscription = new Subscription();
|
|
16
|
-
this.
|
|
16
|
+
this.draftQuery = '';
|
|
17
|
+
this.isPatching = false;
|
|
17
18
|
this.simpleSearch = new EventEmitter();
|
|
18
19
|
this.clearSimpleSearch = new EventEmitter();
|
|
19
|
-
this.suggest = new EventEmitter();
|
|
20
20
|
this.isSubmitted = false;
|
|
21
|
-
this.showSuggestions = false;
|
|
22
|
-
this.selectedSuggestionIndex = -1;
|
|
23
|
-
this.skipNextSuggest = false;
|
|
24
21
|
this.searchForm = this.fb.nonNullable.group({
|
|
25
22
|
simpleQuery: ['', Validators.required],
|
|
26
23
|
});
|
|
27
|
-
this.emitSimpleSearch = (
|
|
24
|
+
this.emitSimpleSearch = () => {
|
|
28
25
|
this.isSubmitted = true;
|
|
29
26
|
// Don't perform a search unless there is a query
|
|
30
27
|
if (this.simpleQuery.invalid) {
|
|
31
28
|
this.showSearchValidationToolTip();
|
|
32
29
|
return;
|
|
33
30
|
}
|
|
34
|
-
this.simpleSearch.emit({
|
|
35
|
-
...this.config,
|
|
36
|
-
q: this.simpleQuery.value,
|
|
37
|
-
isSuggestion: isSuggestion,
|
|
38
|
-
});
|
|
31
|
+
this.simpleSearch.emit({ ...this.config, q: this.simpleQuery.value });
|
|
39
32
|
this.isSubmitted = false;
|
|
40
33
|
};
|
|
41
34
|
this.clearQuery = () => {
|
|
35
|
+
this.isPatching = true;
|
|
42
36
|
this.simpleQuery.setValue('');
|
|
37
|
+
this.isPatching = false;
|
|
38
|
+
this.draftQuery = '';
|
|
43
39
|
this.clearSimpleSearch.emit();
|
|
44
|
-
this.hideSuggestions();
|
|
45
40
|
};
|
|
46
|
-
this.
|
|
47
|
-
this.
|
|
48
|
-
this.simpleQuery.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
41
|
+
this.setupForm = () => {
|
|
42
|
+
const incoming = this.config.q || this.config.advancedSearchQueryRows[0]?.query || '';
|
|
43
|
+
const current = this.simpleQuery.value ?? '';
|
|
44
|
+
// If we received a real query (submitted/synced), it should win.
|
|
45
|
+
if (incoming) {
|
|
46
|
+
if (incoming !== current) {
|
|
47
|
+
this.isPatching = true;
|
|
48
|
+
this.simpleQuery.setValue(incoming);
|
|
49
|
+
this.isPatching = false;
|
|
50
|
+
}
|
|
51
|
+
this.draftQuery = incoming; // keep draft aligned
|
|
54
52
|
return;
|
|
55
53
|
}
|
|
56
|
-
switch
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
event.preventDefault();
|
|
63
|
-
this.selectedSuggestionIndex = Math.max(this.selectedSuggestionIndex - 1, -1);
|
|
64
|
-
break;
|
|
65
|
-
case 'Enter':
|
|
66
|
-
if (this.selectedSuggestionIndex >= 0) {
|
|
67
|
-
event.preventDefault();
|
|
68
|
-
this.selectSuggestion(this.suggestions[this.selectedSuggestionIndex]);
|
|
69
|
-
}
|
|
70
|
-
break;
|
|
71
|
-
case 'Escape':
|
|
72
|
-
this.hideSuggestions();
|
|
73
|
-
break;
|
|
54
|
+
// No incoming query (tab switch before submit).
|
|
55
|
+
// Preserve what the user already typed (current/draft). Do NOT clear.
|
|
56
|
+
if (!current && this.draftQuery) {
|
|
57
|
+
this.isPatching = true;
|
|
58
|
+
this.simpleQuery.setValue(this.draftQuery);
|
|
59
|
+
this.isPatching = false;
|
|
74
60
|
}
|
|
75
61
|
};
|
|
76
|
-
this.setupForm = () => {
|
|
77
|
-
this.simpleQuery.setValue(this.config.q || this.config.advancedSearchQueryRows[0]?.query || '');
|
|
78
|
-
};
|
|
79
62
|
this.showSearchValidationToolTip = () => {
|
|
80
63
|
this.searchInput.nativeElement.focus();
|
|
81
64
|
this.inputTooltip.disabled = false;
|
|
82
65
|
this.inputTooltip.show();
|
|
83
66
|
};
|
|
84
|
-
this.hideSuggestions = () => {
|
|
85
|
-
this.showSuggestions = false;
|
|
86
|
-
this.selectedSuggestionIndex = -1;
|
|
87
|
-
};
|
|
88
67
|
}
|
|
89
68
|
set config(config) {
|
|
90
69
|
this._config = config;
|
|
@@ -98,40 +77,27 @@ export class SimpleSearchComponent {
|
|
|
98
77
|
}
|
|
99
78
|
ngOnInit() {
|
|
100
79
|
// Ensure validation tooltip closes when uses enters a query
|
|
80
|
+
console.log('>>> Initializing');
|
|
101
81
|
this.subscription.add(this.simpleQuery.valueChanges
|
|
102
82
|
.pipe(startWith(''))
|
|
103
83
|
.pipe(filter(() => !!this.inputTooltip))
|
|
104
|
-
.subscribe(() => {
|
|
84
|
+
.subscribe((v) => {
|
|
105
85
|
this.inputTooltip.disabled = true;
|
|
106
|
-
|
|
107
|
-
// Emit suggestion requests with debounce
|
|
108
|
-
this.subscription.add(this.simpleQuery.valueChanges
|
|
109
|
-
.pipe(debounceTime(300), distinctUntilChanged(), filter((value) => value.trim().length > 0))
|
|
110
|
-
.subscribe((value) => {
|
|
111
|
-
if (this.skipNextSuggest) {
|
|
112
|
-
this.skipNextSuggest = false;
|
|
86
|
+
if (this.isPatching)
|
|
113
87
|
return;
|
|
114
|
-
|
|
115
|
-
this.suggest.emit({ ...this.config, q: value });
|
|
116
|
-
this.showSuggestions = true;
|
|
117
|
-
this.selectedSuggestionIndex = -1;
|
|
88
|
+
this.draftQuery = v ?? '';
|
|
118
89
|
}));
|
|
119
90
|
}
|
|
120
91
|
ngOnDestroy() {
|
|
92
|
+
console.log('>>> Destroying');
|
|
121
93
|
this.subscription.unsubscribe();
|
|
122
94
|
}
|
|
123
|
-
onDocumentClick(event) {
|
|
124
|
-
const target = event.target;
|
|
125
|
-
if (!target.closest('.ss-container')) {
|
|
126
|
-
this.hideSuggestions();
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
95
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SimpleSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
130
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SimpleSearchComponent, isStandalone: true, selector: "lib-ss-simple-search", inputs: { config: "config"
|
|
96
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SimpleSearchComponent, isStandalone: true, selector: "lib-ss-simple-search", inputs: { config: "config" }, outputs: { simpleSearch: "simpleSearch", clearSimpleSearch: "clearSimpleSearch" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "inputTooltip", first: true, predicate: MatTooltip, descendants: true }], ngImport: i0, template: "<div class=\"ss-container\">\n <form [formGroup]=\"searchForm\" (submit)=\"emitSimpleSearch()\" data-testid=\"searchForm\">\n <input\n #searchInput\n data-testid=\"searchInput\"\n id=\"q\"\n name=\"q\"\n type=\"text\"\n required\n aria-required=\"true\"\n aria-label=\"search input\"\n autocapitalize=\"off\"\n formControlName=\"simpleQuery\"\n matTooltip=\"Fill out this field\"\n [matTooltipPosition]=\"'above'\"\n [matTooltipDisabled]=\"true\"\n [attr.aria-invalid]=\"isSubmitted && simpleQuery.invalid\"\n />\n <label for=\"q\" data-testid=\"label\">{{\n config.scope === 'local'\n ? 'Books, media, special collections and more'\n : 'Ebooks, articles, journals, databases, streaming media and more'\n }}</label>\n <button\n type=\"submit\"\n aria-label=\"search\"\n data-testid=\"searchBtn\"\n [ngClass]=\"{ ensign: config.institution === 'ensign' }\"\n >\n <span class=\"material-symbols-outlined ss-icon\"> search </span>\n </button>\n </form>\n\n @if (simpleQuery.value) {\n <button id=\"clear\" (click)=\"clearQuery()\" data-testid=\"clearBtn\">\n <span class=\"material-symbols-outlined ss-icon\"> cancel </span>\n </button>\n }\n</div>\n", styles: ["a,button{border:none;background:none;font-family:inherit;padding:0;margin:0;font-size:inherit;color:#1c7ec9;text-decoration:none;cursor:pointer}a:hover,button:hover{color:#8ab6f0}.ss-container{position:relative}form{display:flex}.ss-icon{font-size:1em}button[type=submit]{background:#fff;border-radius:0 4px 4px 0;margin:0;width:3em;cursor:pointer;display:flex;justify-content:center;align-items:center;transition:color .2s,background-color .2s}button[type=submit] .ss-icon{color:#0047ba;font-size:1.7em}button[type=submit]:hover .ss-icon{color:#6892ca}button[type=submit].ensign .ss-icon{color:#2b6042}button[type=submit].ensign .ss-icon:hover{color:#357551}#clear{position:absolute;right:3em;top:0%;height:100%;display:flex;justify-content:center;align-items:center;padding:0 0 0 .375rem}#clear .ss-icon{height:auto;color:#acacac;transition:color ease-in-out .05s}#clear:hover .ss-icon{color:#666}input[type=text]{background-color:#fff;color:#000;font-family:inherit;border:none;font-weight:600;margin:0;overflow:hidden;cursor:text;width:calc(100% - 3em);font-size:1em;border-radius:4px 0 0 4px;padding:.56em 2em .56em .56em}input[type=text]:focus{outline:none}input[type=text]:valid+label,input[type=text]:focus+label{font-size:.75em;top:-.8em;padding-top:0;padding-bottom:0;pointer-events:none;margin-top:0;margin-left:.56em;cursor:default}input[type=text]:valid+label:before,input[type=text]:focus+label:before{opacity:1}label{cursor:text;transition:all .1s ease-in-out;position:absolute;padding:.5em .28em;margin-left:.28em;left:0;color:#707070;z-index:1;max-width:calc(100% - 3.4em);white-space:nowrap;line-height:normal;overflow:hidden;text-overflow:ellipsis;border-radius:4px}label:before{transition:all .1s ease-in-out;background-color:#fff;content:\"\";position:absolute;inset:0;opacity:0;z-index:-1}\n"], dependencies: [{ kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
131
97
|
}
|
|
132
98
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SimpleSearchComponent, decorators: [{
|
|
133
99
|
type: Component,
|
|
134
|
-
args: [{ selector: 'lib-ss-simple-search', standalone: true, imports: [MatTooltipModule, MatIconModule, ReactiveFormsModule, CommonModule], template: "<div class=\"ss-container\">\n <form [formGroup]=\"searchForm\" (submit)=\"emitSimpleSearch()\" data-testid=\"searchForm\">\n <input\n #searchInput\n data-testid=\"searchInput\"\n id=\"q\"\n name=\"q\"\n type=\"text\"\n required\n aria-required=\"true\"\n aria-label=\"search input\"\n autocapitalize=\"off\"\n formControlName=\"simpleQuery\"\n matTooltip=\"Fill out this field\"\n [matTooltipPosition]=\"'above'\"\n [matTooltipDisabled]=\"true\"\n [attr.aria-invalid]=\"isSubmitted && simpleQuery.invalid\"\n
|
|
100
|
+
args: [{ selector: 'lib-ss-simple-search', standalone: true, imports: [MatTooltipModule, MatIconModule, ReactiveFormsModule, CommonModule], template: "<div class=\"ss-container\">\n <form [formGroup]=\"searchForm\" (submit)=\"emitSimpleSearch()\" data-testid=\"searchForm\">\n <input\n #searchInput\n data-testid=\"searchInput\"\n id=\"q\"\n name=\"q\"\n type=\"text\"\n required\n aria-required=\"true\"\n aria-label=\"search input\"\n autocapitalize=\"off\"\n formControlName=\"simpleQuery\"\n matTooltip=\"Fill out this field\"\n [matTooltipPosition]=\"'above'\"\n [matTooltipDisabled]=\"true\"\n [attr.aria-invalid]=\"isSubmitted && simpleQuery.invalid\"\n />\n <label for=\"q\" data-testid=\"label\">{{\n config.scope === 'local'\n ? 'Books, media, special collections and more'\n : 'Ebooks, articles, journals, databases, streaming media and more'\n }}</label>\n <button\n type=\"submit\"\n aria-label=\"search\"\n data-testid=\"searchBtn\"\n [ngClass]=\"{ ensign: config.institution === 'ensign' }\"\n >\n <span class=\"material-symbols-outlined ss-icon\"> search </span>\n </button>\n </form>\n\n @if (simpleQuery.value) {\n <button id=\"clear\" (click)=\"clearQuery()\" data-testid=\"clearBtn\">\n <span class=\"material-symbols-outlined ss-icon\"> cancel </span>\n </button>\n }\n</div>\n", styles: ["a,button{border:none;background:none;font-family:inherit;padding:0;margin:0;font-size:inherit;color:#1c7ec9;text-decoration:none;cursor:pointer}a:hover,button:hover{color:#8ab6f0}.ss-container{position:relative}form{display:flex}.ss-icon{font-size:1em}button[type=submit]{background:#fff;border-radius:0 4px 4px 0;margin:0;width:3em;cursor:pointer;display:flex;justify-content:center;align-items:center;transition:color .2s,background-color .2s}button[type=submit] .ss-icon{color:#0047ba;font-size:1.7em}button[type=submit]:hover .ss-icon{color:#6892ca}button[type=submit].ensign .ss-icon{color:#2b6042}button[type=submit].ensign .ss-icon:hover{color:#357551}#clear{position:absolute;right:3em;top:0%;height:100%;display:flex;justify-content:center;align-items:center;padding:0 0 0 .375rem}#clear .ss-icon{height:auto;color:#acacac;transition:color ease-in-out .05s}#clear:hover .ss-icon{color:#666}input[type=text]{background-color:#fff;color:#000;font-family:inherit;border:none;font-weight:600;margin:0;overflow:hidden;cursor:text;width:calc(100% - 3em);font-size:1em;border-radius:4px 0 0 4px;padding:.56em 2em .56em .56em}input[type=text]:focus{outline:none}input[type=text]:valid+label,input[type=text]:focus+label{font-size:.75em;top:-.8em;padding-top:0;padding-bottom:0;pointer-events:none;margin-top:0;margin-left:.56em;cursor:default}input[type=text]:valid+label:before,input[type=text]:focus+label:before{opacity:1}label{cursor:text;transition:all .1s ease-in-out;position:absolute;padding:.5em .28em;margin-left:.28em;left:0;color:#707070;z-index:1;max-width:calc(100% - 3.4em);white-space:nowrap;line-height:normal;overflow:hidden;text-overflow:ellipsis;border-radius:4px}label:before{transition:all .1s ease-in-out;background-color:#fff;content:\"\";position:absolute;inset:0;opacity:0;z-index:-1}\n"] }]
|
|
135
101
|
}], propDecorators: { searchInput: [{
|
|
136
102
|
type: ViewChild,
|
|
137
103
|
args: ['searchInput']
|
|
@@ -141,16 +107,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
141
107
|
}], config: [{
|
|
142
108
|
type: Input,
|
|
143
109
|
args: [{ required: true }]
|
|
144
|
-
}], suggestions: [{
|
|
145
|
-
type: Input
|
|
146
110
|
}], simpleSearch: [{
|
|
147
111
|
type: Output
|
|
148
112
|
}], clearSimpleSearch: [{
|
|
149
113
|
type: Output
|
|
150
|
-
}], suggest: [{
|
|
151
|
-
type: Output
|
|
152
|
-
}], onDocumentClick: [{
|
|
153
|
-
type: HostListener,
|
|
154
|
-
args: ['document:click', ['$event']]
|
|
155
114
|
}] } });
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc3Mtc2VhcmNoLWJhci9zaW1wbGUtc2VhcmNoL3NpbXBsZS1zZWFyY2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NzLXNlYXJjaC1iYXIvc2ltcGxlLXNlYXJjaC9zaW1wbGUtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBZSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQVUvQyxNQUFNLE9BQU8scUJBQXFCO0lBUGxDO1FBUXFCLE9BQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFNbEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBU2pDLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBQzFCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWdC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QixDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDOzhHQWxJUSxxQkFBcUI7a0dBQXJCLHFCQUFxQixrY0FNbkIsVUFBVSxnRENqQ3pCLGk1RUE0REEsaTNFRHJDYyxnQkFBZ0IsNFRBQUUsYUFBYSw4QkFBRSxtQkFBbUIseXFDQUFFLFlBQVk7OzJGQUluRSxxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0ksc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLENBQUM7OEJBTTNDLFdBQVc7c0JBQTVDLFNBQVM7dUJBQUMsYUFBYTtnQkFJTyxZQUFZO3NCQUExQyxTQUFTO3VCQUFDLFVBQVU7Z0JBR1UsTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT2hCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkEwR1AsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIGluamVjdCxcbiAgICBIb3N0TGlzdGVuZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcCwgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGgsIGZpbHRlciwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTZWFyY2hDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvc2VhcmNoLWNvbmZpZy5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLXNzLXNpbXBsZS1zZWFyY2gnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW01hdFRvb2x0aXBNb2R1bGUsIE1hdEljb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIENvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NpbXBsZS1zZWFyY2guY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NpbXBsZS1zZWFyY2guY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU2ltcGxlU2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JykgcHJpdmF0ZSBzZWFyY2hJbnB1dCE6IEVsZW1lbnRSZWY7XG4gICAgLy8gVGhlIHRvb2x0aXAgaXMgZGlzYWJsZWQgaW4gdGhlIHRlbXBsYXRlLlxuICAgIC8vIEl0IGlzIGVuYWJsZWQgYW5kIGRpc3BsYXllZCBpZiBhIHVzZXIgc2VhcmNoZXMgYWdhaW5zdCBhbiBlbXB0eSBxdWVyeSAoc2ltcGxlIG9yIHExKS5cbiAgICAvLyBBbnkgY2hhbmdlIHRvIHRoZSBzZWFyY2ggZmllbGQgZGlzYWJsZXMgdGhlIHRvb2x0aXAuXG4gICAgQFZpZXdDaGlsZChNYXRUb29sdGlwKSBwcml2YXRlIGlucHV0VG9vbHRpcCE6IE1hdFRvb2x0aXA7XG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgcHJpdmF0ZSBfY29uZmlnITogU2VhcmNoQ29uZmlnO1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHNldCBjb25maWcoY29uZmlnOiBTZWFyY2hDb25maWcpIHtcbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICB0aGlzLnNldHVwRm9ybSgpO1xuICAgIH1cbiAgICBnZXQgY29uZmlnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xuICAgIH1cbiAgICBASW5wdXQoKSBzdWdnZXN0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgICBAT3V0cHV0KCkgc2ltcGxlU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxTZWFyY2hDb25maWc+KCk7XG4gICAgQE91dHB1dCgpIGNsZWFyU2ltcGxlU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSBzdWdnZXN0ID0gbmV3IEV2ZW50RW1pdHRlcjxTZWFyY2hDb25maWc+KCk7XG4gICAgcHJvdGVjdGVkIGlzU3VibWl0dGVkID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIHNob3dTdWdnZXN0aW9ucyA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBzZWxlY3RlZFN1Z2dlc3Rpb25JbmRleCA9IC0xO1xuICAgIHByaXZhdGUgc2tpcE5leHRTdWdnZXN0ID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIHNlYXJjaEZvcm0gPSB0aGlzLmZiLm5vbk51bGxhYmxlLmdyb3VwKHtcbiAgICAgICAgc2ltcGxlUXVlcnk6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgfSk7XG5cbiAgICBnZXQgc2ltcGxlUXVlcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaEZvcm0uZ2V0KCdzaW1wbGVRdWVyeScpIGFzIEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvLyBFbnN1cmUgdmFsaWRhdGlvbiB0b29sdGlwIGNsb3NlcyB3aGVuIHVzZXMgZW50ZXJzIGEgcXVlcnlcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5zaW1wbGVRdWVyeS52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgICAgICAucGlwZShzdGFydFdpdGgoJycpKVxuICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcigoKSA9PiAhIXRoaXMuaW5wdXRUb29sdGlwKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dFRvb2x0aXAuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEVtaXQgc3VnZ2VzdGlvbiByZXF1ZXN0cyB3aXRoIGRlYm91bmNlXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuc2ltcGxlUXVlcnkudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxuICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZS50cmltKCkubGVuZ3RoID4gMCksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNraXBOZXh0U3VnZ2VzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5za2lwTmV4dFN1Z2dlc3QgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Z2dlc3QuZW1pdCh7IC4uLnRoaXMuY29uZmlnLCBxOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93U3VnZ2VzdGlvbnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3VnZ2VzdGlvbkluZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGVtaXRTaW1wbGVTZWFyY2ggPSAoaXNTdWdnZXN0aW9uOiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICAgICAgdGhpcy5pc1N1Ym1pdHRlZCA9IHRydWU7XG4gICAgICAgIC8vIERvbid0IHBlcmZvcm0gYSBzZWFyY2ggdW5sZXNzIHRoZXJlIGlzIGEgcXVlcnlcbiAgICAgICAgaWYgKHRoaXMuc2ltcGxlUXVlcnkuaW52YWxpZCkge1xuICAgICAgICAgICAgdGhpcy5zaG93U2VhcmNoVmFsaWRhdGlvblRvb2xUaXAoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNpbXBsZVNlYXJjaC5lbWl0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgICAgICAgICAgcTogdGhpcy5zaW1wbGVRdWVyeS52YWx1ZSxcbiAgICAgICAgICAgIGlzU3VnZ2VzdGlvbjogaXNTdWdnZXN0aW9uLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pc1N1Ym1pdHRlZCA9IGZhbHNlO1xuICAgIH07XG5cbiAgICBwcm90ZWN0ZWQgY2xlYXJRdWVyeSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5zaW1wbGVRdWVyeS5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIHRoaXMuY2xlYXJTaW1wbGVTZWFyY2guZW1pdCgpO1xuICAgICAgICB0aGlzLmhpZGVTdWdnZXN0aW9ucygpO1xuICAgIH07XG5cbiAgICBwcm90ZWN0ZWQgc2VsZWN0U3VnZ2VzdGlvbiA9IChzdWdnZXN0aW9uOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5za2lwTmV4dFN1Z2dlc3QgPSB0cnVlO1xuICAgICAgICB0aGlzLnNpbXBsZVF1ZXJ5LnNldFZhbHVlKHN1Z2dlc3Rpb24pO1xuICAgICAgICB0aGlzLmhpZGVTdWdnZXN0aW9ucygpO1xuICAgICAgICB0aGlzLmVtaXRTaW1wbGVTZWFyY2godHJ1ZSk7XG4gICAgfTtcblxuICAgIHByb3RlY3RlZCBvbklucHV0S2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc2hvd1N1Z2dlc3Rpb25zIHx8IHRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdWdnZXN0aW9uSW5kZXggPSBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFN1Z2dlc3Rpb25JbmRleCArIDEsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3VnZ2VzdGlvbkluZGV4ID0gTWF0aC5tYXgodGhpcy5zZWxlY3RlZFN1Z2dlc3Rpb25JbmRleCAtIDEsIC0xKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFN1Z2dlc3Rpb25JbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0U3VnZ2VzdGlvbih0aGlzLnN1Z2dlc3Rpb25zW3RoaXMuc2VsZWN0ZWRTdWdnZXN0aW9uSW5kZXhdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZVN1Z2dlc3Rpb25zKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICAgIG9uRG9jdW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5zcy1jb250YWluZXInKSkge1xuICAgICAgICAgICAgdGhpcy5oaWRlU3VnZ2VzdGlvbnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBGb3JtID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnNpbXBsZVF1ZXJ5LnNldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5jb25maWcucSB8fCB0aGlzLmNvbmZpZy5hZHZhbmNlZFNlYXJjaFF1ZXJ5Um93c1swXT8ucXVlcnkgfHwgJycsXG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgc2hvd1NlYXJjaFZhbGlkYXRpb25Ub29sVGlwID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5pbnB1dFRvb2x0aXAuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnB1dFRvb2x0aXAuc2hvdygpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGhpZGVTdWdnZXN0aW9ucyA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93U3VnZ2VzdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFN1Z2dlc3Rpb25JbmRleCA9IC0xO1xuICAgIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwic3MtY29udGFpbmVyXCI+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJzZWFyY2hGb3JtXCIgKHN1Ym1pdCk9XCJlbWl0U2ltcGxlU2VhcmNoKClcIiBkYXRhLXRlc3RpZD1cInNlYXJjaEZvcm1cIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VhcmNoSW5wdXRcIlxuICAgICAgICAgICAgaWQ9XCJxXCJcbiAgICAgICAgICAgIG5hbWU9XCJxXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICBhcmlhLXJlcXVpcmVkPVwidHJ1ZVwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwic2VhcmNoIGlucHV0XCJcbiAgICAgICAgICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNpbXBsZVF1ZXJ5XCJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJGaWxsIG91dCB0aGlzIGZpZWxkXCJcbiAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiJ2Fib3ZlJ1wiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImlzU3VibWl0dGVkICYmIHNpbXBsZVF1ZXJ5LmludmFsaWRcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwib25JbnB1dEtleWRvd24oJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxsYWJlbCBmb3I9XCJxXCIgZGF0YS10ZXN0aWQ9XCJsYWJlbFwiPnt7XG4gICAgICAgICAgICBjb25maWcuc2NvcGUgPT09ICdsb2NhbCdcbiAgICAgICAgICAgICAgICA/ICdCb29rcywgbWVkaWEsIHNwZWNpYWwgY29sbGVjdGlvbnMgYW5kIG1vcmUnXG4gICAgICAgICAgICAgICAgOiAnRWJvb2tzLCBhcnRpY2xlcywgam91cm5hbHMsIGRhdGFiYXNlcywgc3RyZWFtaW5nIG1lZGlhIGFuZCBtb3JlJ1xuICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlYXJjaFwiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlYXJjaEJ0blwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IGVuc2lnbjogY29uZmlnLmluc3RpdHV0aW9uID09PSAnZW5zaWduJyB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHNzLWljb25cIj4gc2VhcmNoIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9mb3JtPlxuXG4gICAgQGlmIChzaW1wbGVRdWVyeS52YWx1ZSkge1xuICAgICAgICA8YnV0dG9uIGlkPVwiY2xlYXJcIiAoY2xpY2spPVwiY2xlYXJRdWVyeSgpXCIgZGF0YS10ZXN0aWQ9XCJjbGVhckJ0blwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHNzLWljb25cIj4gY2FuY2VsIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgfVxuXG4gICAgQGlmIChzaG93U3VnZ2VzdGlvbnMgJiYgc3VnZ2VzdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICA8dWwgY2xhc3M9XCJzdWdnZXN0aW9ucy1saXN0XCIgcm9sZT1cImxpc3Rib3hcIiBkYXRhLXRlc3RpZD1cInN1Z2dlc3Rpb25zTGlzdFwiPlxuICAgICAgICAgICAgQGZvciAoc3VnZ2VzdGlvbiBvZiBzdWdnZXN0aW9uczsgdHJhY2sgc3VnZ2VzdGlvbjsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdWdnZXN0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaSA9PT0gc2VsZWN0ZWRTdWdnZXN0aW9uSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0U3VnZ2VzdGlvbihzdWdnZXN0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJzZWxlY3RTdWdnZXN0aW9uKHN1Z2dlc3Rpb24pOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImkgPT09IHNlbGVjdGVkU3VnZ2VzdGlvbkluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzdWdnZXN0aW9uSXRlbVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBzdWdnZXN0aW9uIH19XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc3Mtc2VhcmNoLWJhci9zaW1wbGUtc2VhcmNoL3NpbXBsZS1zZWFyY2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NzLXNlYXJjaC1iYXIvc2ltcGxlLXNlYXJjaC9zaW1wbGUtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFlLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFVL0MsTUFBTSxPQUFPLHFCQUFxQjtJQVBsQztRQVFxQixPQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBTWxDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVsQyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFRakIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztR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QVc7c0JBQTVDLFNBQVM7dUJBQUMsYUFBYTtnQkFJTyxZQUFZO3NCQUExQyxTQUFTO3VCQUFDLFVBQVU7Z0JBS1UsTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT2YsWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFRvb2x0aXAsIE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3RhcnRXaXRoLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU2VhcmNoQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL3NlYXJjaC1jb25maWcubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1zcy1zaW1wbGUtc2VhcmNoJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtNYXRUb29sdGlwTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zaW1wbGUtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zaW1wbGUtc2VhcmNoLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNpbXBsZVNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcpIHByaXZhdGUgc2VhcmNoSW5wdXQhOiBFbGVtZW50UmVmO1xuICAgIC8vIFRoZSB0b29sdGlwIGlzIGRpc2FibGVkIGluIHRoZSB0ZW1wbGF0ZS5cbiAgICAvLyBJdCBpcyBlbmFibGVkIGFuZCBkaXNwbGF5ZWQgaWYgYSB1c2VyIHNlYXJjaGVzIGFnYWluc3QgYW4gZW1wdHkgcXVlcnkgKHNpbXBsZSBvciBxMSkuXG4gICAgLy8gQW55IGNoYW5nZSB0byB0aGUgc2VhcmNoIGZpZWxkIGRpc2FibGVzIHRoZSB0b29sdGlwLlxuICAgIEBWaWV3Q2hpbGQoTWF0VG9vbHRpcCkgcHJpdmF0ZSBpbnB1dFRvb2x0aXAhOiBNYXRUb29sdGlwO1xuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHByaXZhdGUgX2NvbmZpZyE6IFNlYXJjaENvbmZpZztcbiAgICBwcml2YXRlIGRyYWZ0UXVlcnkgPSAnJztcbiAgICBwcml2YXRlIGlzUGF0Y2hpbmcgPSBmYWxzZTtcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBzZXQgY29uZmlnKGNvbmZpZzogU2VhcmNoQ29uZmlnKSB7XG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgdGhpcy5zZXR1cEZvcm0oKTtcbiAgICB9XG4gICAgZ2V0IGNvbmZpZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcbiAgICB9XG4gICAgQE91dHB1dCgpIHNpbXBsZVNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8U2VhcmNoQ29uZmlnPigpO1xuICAgIEBPdXRwdXQoKSBjbGVhclNpbXBsZVNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBwcm90ZWN0ZWQgaXNTdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgc2VhcmNoRm9ybSA9IHRoaXMuZmIubm9uTnVsbGFibGUuZ3JvdXAoe1xuICAgICAgICBzaW1wbGVRdWVyeTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICB9KTtcblxuICAgIGdldCBzaW1wbGVRdWVyeSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoRm9ybS5nZXQoJ3NpbXBsZVF1ZXJ5JykgYXMgRm9ybUNvbnRyb2w7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIC8vIEVuc3VyZSB2YWxpZGF0aW9uIHRvb2x0aXAgY2xvc2VzIHdoZW4gdXNlcyBlbnRlcnMgYSBxdWVyeVxuICAgICAgICBjb25zb2xlLmxvZygnPj4+IEluaXRpYWxpemluZycpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLnNpbXBsZVF1ZXJ5LnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aCgnJykpXG4gICAgICAgICAgICAgICAgLnBpcGUoZmlsdGVyKCgpID0+ICEhdGhpcy5pbnB1dFRvb2x0aXApKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dFRvb2x0aXAuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1BhdGNoaW5nKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZnRRdWVyeSA9IHYgPz8gJyc7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGNvbnNvbGUubG9nKCc+Pj4gRGVzdHJveWluZycpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBlbWl0U2ltcGxlU2VhcmNoID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmlzU3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgLy8gRG9uJ3QgcGVyZm9ybSBhIHNlYXJjaCB1bmxlc3MgdGhlcmUgaXMgYSBxdWVyeVxuICAgICAgICBpZiAodGhpcy5zaW1wbGVRdWVyeS5pbnZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dTZWFyY2hWYWxpZGF0aW9uVG9vbFRpcCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2ltcGxlU2VhcmNoLmVtaXQoeyAuLi50aGlzLmNvbmZpZywgcTogdGhpcy5zaW1wbGVRdWVyeS52YWx1ZSB9KTtcbiAgICAgICAgdGhpcy5pc1N1Ym1pdHRlZCA9IGZhbHNlO1xuICAgIH07XG5cbiAgICBwcm90ZWN0ZWQgY2xlYXJRdWVyeSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5pc1BhdGNoaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zaW1wbGVRdWVyeS5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIHRoaXMuaXNQYXRjaGluZyA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuZHJhZnRRdWVyeSA9ICcnO1xuICAgICAgICB0aGlzLmNsZWFyU2ltcGxlU2VhcmNoLmVtaXQoKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBzZXR1cEZvcm0gPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGluY29taW5nID0gdGhpcy5jb25maWcucSB8fCB0aGlzLmNvbmZpZy5hZHZhbmNlZFNlYXJjaFF1ZXJ5Um93c1swXT8ucXVlcnkgfHwgJyc7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnNpbXBsZVF1ZXJ5LnZhbHVlID8/ICcnO1xuXG4gICAgICAgIC8vIElmIHdlIHJlY2VpdmVkIGEgcmVhbCBxdWVyeSAoc3VibWl0dGVkL3N5bmNlZCksIGl0IHNob3VsZCB3aW4uXG4gICAgICAgIGlmIChpbmNvbWluZykge1xuICAgICAgICAgICAgaWYgKGluY29taW5nICE9PSBjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1BhdGNoaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnNpbXBsZVF1ZXJ5LnNldFZhbHVlKGluY29taW5nKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUGF0Y2hpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZHJhZnRRdWVyeSA9IGluY29taW5nOyAvLyBrZWVwIGRyYWZ0IGFsaWduZWRcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5vIGluY29taW5nIHF1ZXJ5ICh0YWIgc3dpdGNoIGJlZm9yZSBzdWJtaXQpLlxuICAgICAgICAvLyBQcmVzZXJ2ZSB3aGF0IHRoZSB1c2VyIGFscmVhZHkgdHlwZWQgKGN1cnJlbnQvZHJhZnQpLiBEbyBOT1QgY2xlYXIuXG4gICAgICAgIGlmICghY3VycmVudCAmJiB0aGlzLmRyYWZ0UXVlcnkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNQYXRjaGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNpbXBsZVF1ZXJ5LnNldFZhbHVlKHRoaXMuZHJhZnRRdWVyeSk7XG4gICAgICAgICAgICB0aGlzLmlzUGF0Y2hpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIHNob3dTZWFyY2hWYWxpZGF0aW9uVG9vbFRpcCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMuaW5wdXRUb29sdGlwLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRUb29sdGlwLnNob3coKTtcbiAgICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cInNzLWNvbnRhaW5lclwiPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiIChzdWJtaXQpPVwiZW1pdFNpbXBsZVNlYXJjaCgpXCIgZGF0YS10ZXN0aWQ9XCJzZWFyY2hGb3JtXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlYXJjaElucHV0XCJcbiAgICAgICAgICAgIGlkPVwicVwiXG4gICAgICAgICAgICBuYW1lPVwicVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgYXJpYS1yZXF1aXJlZD1cInRydWVcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlYXJjaCBpbnB1dFwiXG4gICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzaW1wbGVRdWVyeVwiXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiRmlsbCBvdXQgdGhpcyBmaWVsZFwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIidhYm92ZSdcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpc1N1Ym1pdHRlZCAmJiBzaW1wbGVRdWVyeS5pbnZhbGlkXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsIGZvcj1cInFcIiBkYXRhLXRlc3RpZD1cImxhYmVsXCI+e3tcbiAgICAgICAgICAgIGNvbmZpZy5zY29wZSA9PT0gJ2xvY2FsJ1xuICAgICAgICAgICAgICAgID8gJ0Jvb2tzLCBtZWRpYSwgc3BlY2lhbCBjb2xsZWN0aW9ucyBhbmQgbW9yZSdcbiAgICAgICAgICAgICAgICA6ICdFYm9va3MsIGFydGljbGVzLCBqb3VybmFscywgZGF0YWJhc2VzLCBzdHJlYW1pbmcgbWVkaWEgYW5kIG1vcmUnXG4gICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwic2VhcmNoXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VhcmNoQnRuXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZW5zaWduOiBjb25maWcuaW5zdGl0dXRpb24gPT09ICdlbnNpZ24nIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgc3MtaWNvblwiPiBzZWFyY2ggPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Zvcm0+XG5cbiAgICBAaWYgKHNpbXBsZVF1ZXJ5LnZhbHVlKSB7XG4gICAgICAgIDxidXR0b24gaWQ9XCJjbGVhclwiIChjbGljayk9XCJjbGVhclF1ZXJ5KClcIiBkYXRhLXRlc3RpZD1cImNsZWFyQnRuXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgc3MtaWNvblwiPiBjYW5jZWwgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
|