@alauda-fe/common
Version:
Alauda frontend team common codes.
133 lines • 26.7 kB
JavaScript
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, TemplateRef, ViewChild, } from '@angular/core';
import { takeUntil } from 'rxjs';
import { AuthorizationStateService } from '../../../../authorization/public-api';
import { onDestroy } from '../../../../core/utils/observable';
import { getWorkspaceParams, setWorkspaceParams } from '../../utils';
import { ResourceSelectorPopupService } from './../../internals/selector-popup/service';
import { ConfigurableField } from './../../types';
import * as i0 from "@angular/core";
import * as i1 from "./../../internals/selector-popup/service";
import * as i2 from "../../../../authorization/public-api";
const _c0 = ["popup"];
const _c1 = (a0, a1) => ({ "acl-resource-selector--active": a0, "acl-resource-selector--lite": a1 });
function ProjectSelectorComponent_span_2_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "span", 8);
i0.ɵɵelement(1, "aui-icon", 9);
i0.ɵɵelementEnd();
} }
function ProjectSelectorComponent_span_3_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "span", 10);
i0.ɵɵtext(1);
i0.ɵɵpipe(2, "translate");
i0.ɵɵelementEnd();
} if (rf & 2) {
i0.ɵɵadvance();
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "project"), " ");
} }
function ProjectSelectorComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
const _r2 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "acl-project-list", 11);
i0.ɵɵlistener("selectItem", function ProjectSelectorComponent_ng_template_8_Template_acl_project_list_selectItem_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSelect($event)); });
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r2 = i0.ɵɵnextContext();
i0.ɵɵproperty("popupLite", ctx_r2.popupLite)("fields", ctx_r2.fields || ctx_r2.displayFields)("value", ctx_r2.value);
} }
export class ProjectSelectorComponent {
constructor(popupService, cdr, elementRef, auth) {
this.popupService = popupService;
this.cdr = cdr;
this.elementRef = elementRef;
this.auth = auth;
this.valueChange = new EventEmitter();
this.displayFields = [
ConfigurableField.Status,
ConfigurableField.Time,
];
this.isActive = false;
this.destroy$ = onDestroy();
}
ngAfterViewInit() {
this.auth
.getAccountInfo()
.pipe(takeUntil(this.destroy$))
.subscribe(info => {
const email = info.email;
const project = getWorkspaceParams(email)?.project;
if (this.value && !project) {
setWorkspaceParams({ project: this.value }, email);
}
});
}
openPopup() {
if (this.isActive) {
this.closePopup();
}
else {
this.isActive = true;
this.popupRef = this.popupService.open({
origin: this.elementRef,
content: this.popupTemplate,
popupLite: this.popupLite,
});
this.popupRef.afterClosed().subscribe(() => {
this.isActive = false;
this.cdr.markForCheck();
});
}
}
closePopup() {
this.isActive = false;
this.popupRef.close();
}
onSelect(item) {
this.value = item.name;
this.valueChange.emit(item.name);
this.closePopup();
}
static { this.ɵfac = function ProjectSelectorComponent_Factory(t) { return new (t || ProjectSelectorComponent)(i0.ɵɵdirectiveInject(i1.ResourceSelectorPopupService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.AuthorizationStateService)); }; }
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProjectSelectorComponent, selectors: [["acl-project-selector"]], viewQuery: function ProjectSelectorComponent_Query(rf, ctx) { if (rf & 1) {
i0.ɵɵviewQuery(_c0, 7);
} if (rf & 2) {
let _t;
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);
} }, inputs: { value: "value", popupLite: "popupLite", fields: "fields" }, outputs: { valueChange: "valueChange" }, decls: 10, vars: 7, consts: [["popup", ""], [1, "acl-resource-selector", 3, "click", "ngClass"], [1, "acl-resource-selector__item", "project"], ["class", "icon-wrapper", 4, "ngIf"], ["class", "with-colon", 4, "ngIf"], [1, "selected-name", "text-truncate"], [1, "acl-resource-selector__arrow"], ["icon", "caret_down_s"], [1, "icon-wrapper"], ["icon", "bicolor:project"], [1, "with-colon"], ["context", "popup", 3, "selectItem", "popupLite", "fields", "value"]], template: function ProjectSelectorComponent_Template(rf, ctx) { if (rf & 1) {
const _r1 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "div", 1);
i0.ɵɵlistener("click", function ProjectSelectorComponent_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.openPopup()); });
i0.ɵɵelementStart(1, "div", 2);
i0.ɵɵtemplate(2, ProjectSelectorComponent_span_2_Template, 2, 0, "span", 3)(3, ProjectSelectorComponent_span_3_Template, 3, 3, "span", 4);
i0.ɵɵelementStart(4, "span", 5);
i0.ɵɵtext(5);
i0.ɵɵelementEnd()();
i0.ɵɵelementStart(6, "div", 6);
i0.ɵɵelement(7, "aui-icon", 7);
i0.ɵɵelementEnd()();
i0.ɵɵtemplate(8, ProjectSelectorComponent_ng_template_8_Template, 1, 3, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
} if (rf & 2) {
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(4, _c1, ctx.isActive, ctx.popupLite));
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngIf", !ctx.popupLite);
i0.ɵɵadvance();
i0.ɵɵproperty("ngIf", !ctx.popupLite);
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate(ctx.value);
} }, styles: ["[_nghost-%COMP%]{display:flex}[_nghost-%COMP%] .icon-wrapper{position:relative;display:flex;justify-content:center;align-items:center;width:16px;height:16px;flex-shrink:0;font-size:var(--aui-icon-size-m)}:root [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}html[aui-theme-mode=light] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}}html[aui-theme-mode=dark] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}[_nghost-%COMP%] .with-colon{display:inline-flex;word-break:keep-all;flex-shrink:0;font-weight:500}[_nghost-%COMP%] .with-colon:after{content:\":\";margin-right:8px}[_nghost-%COMP%] .text-truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}[_nghost-%COMP%] .acl-resource-selector{user-select:none;display:flex;color:var(--acl-page-header-title-color);cursor:pointer;padding:0 8px}[_nghost-%COMP%] .acl-resource-selector .selected-name{color:var(--acl-page-header-text-color)}[_nghost-%COMP%] .acl-resource-selector--active, [_nghost-%COMP%] .acl-resource-selector:hover{background-color:rgb(var(--aui-color-primary));color:#fff;border-radius:2px}:root [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, :root [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}html[aui-theme-mode=light] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=light] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=system] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}}html[aui-theme-mode=dark] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=dark] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}[_nghost-%COMP%] .acl-resource-selector--active .selected-name, [_nghost-%COMP%] .acl-resource-selector:hover .selected-name{color:#fff}[_nghost-%COMP%] .acl-resource-selector--lite{padding:0 4px;color:rgb(var(--aui-color-n-2))}[_nghost-%COMP%] .acl-resource-selector--lite:hover{background-color:rgb(var(--aui-color-b-6))}[_nghost-%COMP%] .acl-resource-selector--lite:hover .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-n-2))}[_nghost-%COMP%] .acl-resource-selector--lite .acl-resource-selector__item{height:26px}[_nghost-%COMP%] .acl-resource-selector--lite:hover, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover{background-color:rgb(var(--aui-color-b-5))}[_nghost-%COMP%] .acl-resource-selector--lite:hover aui-icon, [_nghost-%COMP%] .acl-resource-selector--lite:hover .with-colon, [_nghost-%COMP%] .acl-resource-selector--lite:hover .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite:hover .acl-resource-selector__arrow, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active aui-icon, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active .with-colon, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active .acl-resource-selector__arrow, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover aui-icon, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover .with-colon, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-primary))}[_nghost-%COMP%] .acl-resource-selector__item{margin-right:20px;height:32px;display:inline-flex;align-items:center;font-size:12px;max-width:270px}@media screen and (width <= 1280px){[_nghost-%COMP%] .acl-resource-selector__item{max-width:178px;margin-right:8px}}[_nghost-%COMP%] .acl-resource-selector__item .icon-wrapper{margin-right:4px}[_nghost-%COMP%] .acl-resource-selector__arrow{margin-left:-16px;align-items:center;display:inline-flex;width:16px;justify-content:center}@media screen and (width <= 1280px){[_nghost-%COMP%] .acl-resource-selector__arrow{margin-left:-4px}}"], changeDetection: 0 }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProjectSelectorComponent, [{
type: Component,
args: [{ selector: 'acl-project-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"acl-resource-selector\"\n [ngClass]=\"{\n 'acl-resource-selector--active': isActive,\n 'acl-resource-selector--lite': popupLite\n }\"\n (click)=\"openPopup()\"\n>\n <div class=\"acl-resource-selector__item project\">\n <span\n class=\"icon-wrapper\"\n *ngIf=\"!popupLite\"\n >\n <aui-icon icon=\"bicolor:project\"></aui-icon>\n </span>\n <span\n class=\"with-colon\"\n *ngIf=\"!popupLite\"\n >\n {{ 'project' | translate }}\n </span>\n <span class=\"selected-name text-truncate\">{{ value }}</span>\n </div>\n <div class=\"acl-resource-selector__arrow\">\n <aui-icon icon=\"caret_down_s\"></aui-icon>\n </div>\n</div>\n\n<ng-template #popup>\n <acl-project-list\n context=\"popup\"\n [popupLite]=\"popupLite\"\n [fields]=\"fields || displayFields\"\n (selectItem)=\"onSelect($event)\"\n [value]=\"value\"\n ></acl-project-list>\n</ng-template>\n", styles: [":host{display:flex}:host::ng-deep .icon-wrapper{position:relative;display:flex;justify-content:center;align-items:center;width:16px;height:16px;flex-shrink:0;font-size:var(--aui-icon-size-m)}:root :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}html[aui-theme-mode=light] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}}html[aui-theme-mode=dark] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}:host::ng-deep .with-colon{display:inline-flex;word-break:keep-all;flex-shrink:0;font-weight:500}:host::ng-deep .with-colon:after{content:\":\";margin-right:8px}:host::ng-deep .text-truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host::ng-deep .acl-resource-selector{user-select:none;display:flex;color:var(--acl-page-header-title-color);cursor:pointer;padding:0 8px}:host::ng-deep .acl-resource-selector .selected-name{color:var(--acl-page-header-text-color)}:host::ng-deep .acl-resource-selector--active,:host::ng-deep .acl-resource-selector:hover{background-color:rgb(var(--aui-color-primary));color:#fff;border-radius:2px}:root :host::ng-deep .acl-resource-selector--active .icon-wrapper,:root :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}html[aui-theme-mode=light] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=light] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=system] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}}html[aui-theme-mode=dark] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=dark] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}:host::ng-deep .acl-resource-selector--active .selected-name,:host::ng-deep .acl-resource-selector:hover .selected-name{color:#fff}:host::ng-deep .acl-resource-selector--lite{padding:0 4px;color:rgb(var(--aui-color-n-2))}:host::ng-deep .acl-resource-selector--lite:hover{background-color:rgb(var(--aui-color-b-6))}:host::ng-deep .acl-resource-selector--lite:hover .selected-name,:host::ng-deep .acl-resource-selector--lite:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-n-2))}:host::ng-deep .acl-resource-selector--lite .acl-resource-selector__item{height:26px}:host::ng-deep .acl-resource-selector--lite:hover,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover{background-color:rgb(var(--aui-color-b-5))}:host::ng-deep .acl-resource-selector--lite:hover aui-icon,:host::ng-deep .acl-resource-selector--lite:hover .with-colon,:host::ng-deep .acl-resource-selector--lite:hover .selected-name,:host::ng-deep .acl-resource-selector--lite:hover .acl-resource-selector__arrow,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active aui-icon,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .with-colon,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .selected-name,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .acl-resource-selector__arrow,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover aui-icon,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .with-colon,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .selected-name,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-primary))}:host::ng-deep .acl-resource-selector__item{margin-right:20px;height:32px;display:inline-flex;align-items:center;font-size:12px;max-width:270px}@media screen and (width <= 1280px){:host::ng-deep .acl-resource-selector__item{max-width:178px;margin-right:8px}}:host::ng-deep .acl-resource-selector__item .icon-wrapper{margin-right:4px}:host::ng-deep .acl-resource-selector__arrow{margin-left:-16px;align-items:center;display:inline-flex;width:16px;justify-content:center}@media screen and (width <= 1280px){:host::ng-deep .acl-resource-selector__arrow{margin-left:-4px}}\n"] }]
}], () => [{ type: i1.ResourceSelectorPopupService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i2.AuthorizationStateService }], { popupTemplate: [{
type: ViewChild,
args: ['popup', { static: true }]
}], value: [{
type: Input
}], popupLite: [{
type: Input
}], fields: [{
type: Input
}], valueChange: [{
type: Output
}] }); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ProjectSelectorComponent, { className: "ProjectSelectorComponent" }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2J1c2luZXNzL3Jlc291cmNlLXNlbGVjdC9leHBvcnRzL3Byb2plY3Qtc2VsZWN0b3IvY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2J1c2luZXNzL3Jlc291cmNlLXNlbGVjdC9leHBvcnRzL3Byb2plY3Qtc2VsZWN0b3IvdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVqQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3JFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBZ0IsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7SUNYNUQsK0JBR0M7SUFDQyw4QkFBNEM7SUFDOUMsaUJBQU87OztJQUNQLGdDQUdDO0lBQ0MsWUFDRjs7SUFBQSxpQkFBTzs7SUFETCxjQUNGO0lBREUsZ0VBQ0Y7Ozs7SUFTRiw0Q0FNQztJQUZDLHNOQUFjLHVCQUFnQixLQUFDO0lBRWhDLGlCQUFtQjs7O0lBRGxCLEFBRkEsQUFEQSw0Q0FBdUIsaURBQ1csdUJBRW5COztBRE5uQixNQUFNLE9BQU8s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QU5wQyxTQUFTOzJCQUNFLHNCQUFzQixtQkFHZix1QkFBdUIsQ0FBQyxNQUFNOzhKQUkvQyxhQUFhO2tCQURaLFNBQVM7bUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUlwQyxLQUFLO2tCQURKLEtBQUs7WUFLTixTQUFTO2tCQURSLEtBQUs7WUFJTixNQUFNO2tCQURMLEtBQUs7WUFJTixXQUFXO2tCQURWLE1BQU07O2tGQWRJLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEF1dGhvcml6YXRpb25TdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9hdXRob3JpemF0aW9uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgb25EZXN0cm95IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS91dGlscy9vYnNlcnZhYmxlJztcbmltcG9ydCB7IGdldFdvcmtzcGFjZVBhcmFtcywgc2V0V29ya3NwYWNlUGFyYW1zIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5pbXBvcnQgeyBSZXNvdXJjZVNlbGVjdG9yUG9wdXBSZWYgfSBmcm9tICcuLy4uLy4uL2ludGVybmFscy9zZWxlY3Rvci1wb3B1cC9yZWYnO1xuaW1wb3J0IHsgUmVzb3VyY2VTZWxlY3RvclBvcHVwU2VydmljZSB9IGZyb20gJy4vLi4vLi4vaW50ZXJuYWxzL3NlbGVjdG9yLXBvcHVwL3NlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhYmxlRmllbGQsIERhdGFJdGVtQmFzZSB9IGZyb20gJy4vLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtcHJvamVjdC1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vLi4vY2x1c3Rlci1zZWxlY3Rvci9zdHlsZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9qZWN0U2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgncG9wdXAnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwb3B1cFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHZhbHVlOiBzdHJpbmc7XG5cbiAgLy8g5piv5ZCm5byA5ZCvIHBvcHVwIOeyvueugOaooeW8j++8jOmAgueUqOS6jumdouWMheWxkVxuICBASW5wdXQoKVxuICBwb3B1cExpdGU6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgZmllbGRzOiBDb25maWd1cmFibGVGaWVsZFtdO1xuXG4gIEBPdXRwdXQoKVxuICB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGRpc3BsYXlGaWVsZHM6IENvbmZpZ3VyYWJsZUZpZWxkW10gPSBbXG4gICAgQ29uZmlndXJhYmxlRmllbGQuU3RhdHVzLFxuICAgIENvbmZpZ3VyYWJsZUZpZWxkLlRpbWUsXG4gIF07XG5cbiAgaXNBY3RpdmUgPSBmYWxzZTtcblxuICBwb3B1cFJlZjogUmVzb3VyY2VTZWxlY3RvclBvcHVwUmVmO1xuXG4gIGRlc3Ryb3kkID0gb25EZXN0cm95KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBwb3B1cFNlcnZpY2U6IFJlc291cmNlU2VsZWN0b3JQb3B1cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGg6IEF1dGhvcml6YXRpb25TdGF0ZVNlcnZpY2UsXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoXG4gICAgICAuZ2V0QWNjb3VudEluZm8oKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShpbmZvID0+IHtcbiAgICAgICAgY29uc3QgZW1haWwgPSBpbmZvLmVtYWlsO1xuICAgICAgICBjb25zdCBwcm9qZWN0ID0gZ2V0V29ya3NwYWNlUGFyYW1zKGVtYWlsKT8ucHJvamVjdDtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgIXByb2plY3QpIHtcbiAgICAgICAgICBzZXRXb3Jrc3BhY2VQYXJhbXMoeyBwcm9qZWN0OiB0aGlzLnZhbHVlIH0sIGVtYWlsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvcGVuUG9wdXAoKSB7XG4gICAgaWYgKHRoaXMuaXNBY3RpdmUpIHtcbiAgICAgIHRoaXMuY2xvc2VQb3B1cCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcbiAgICAgIHRoaXMucG9wdXBSZWYgPSB0aGlzLnBvcHVwU2VydmljZS5vcGVuKHtcbiAgICAgICAgb3JpZ2luOiB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMucG9wdXBUZW1wbGF0ZSxcbiAgICAgICAgcG9wdXBMaXRlOiB0aGlzLnBvcHVwTGl0ZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wb3B1cFJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjbG9zZVBvcHVwKCkge1xuICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLnBvcHVwUmVmLmNsb3NlKCk7XG4gIH1cblxuICBvblNlbGVjdChpdGVtOiBEYXRhSXRlbUJhc2UpIHtcbiAgICB0aGlzLnZhbHVlID0gaXRlbS5uYW1lO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChpdGVtLm5hbWUpO1xuICAgIHRoaXMuY2xvc2VQb3B1cCgpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiYWNsLXJlc291cmNlLXNlbGVjdG9yXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdhY2wtcmVzb3VyY2Utc2VsZWN0b3ItLWFjdGl2ZSc6IGlzQWN0aXZlLFxuICAgICdhY2wtcmVzb3VyY2Utc2VsZWN0b3ItLWxpdGUnOiBwb3B1cExpdGVcbiAgfVwiXG4gIChjbGljayk9XCJvcGVuUG9wdXAoKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJhY2wtcmVzb3VyY2Utc2VsZWN0b3JfX2l0ZW0gcHJvamVjdFwiPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImljb24td3JhcHBlclwiXG4gICAgICAqbmdJZj1cIiFwb3B1cExpdGVcIlxuICAgID5cbiAgICAgIDxhdWktaWNvbiBpY29uPVwiYmljb2xvcjpwcm9qZWN0XCI+PC9hdWktaWNvbj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwid2l0aC1jb2xvblwiXG4gICAgICAqbmdJZj1cIiFwb3B1cExpdGVcIlxuICAgID5cbiAgICAgIHt7ICdwcm9qZWN0JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cInNlbGVjdGVkLW5hbWUgdGV4dC10cnVuY2F0ZVwiPnt7IHZhbHVlIH19PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFjbC1yZXNvdXJjZS1zZWxlY3Rvcl9fYXJyb3dcIj5cbiAgICA8YXVpLWljb24gaWNvbj1cImNhcmV0X2Rvd25fc1wiPjwvYXVpLWljb24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjcG9wdXA+XG4gIDxhY2wtcHJvamVjdC1saXN0XG4gICAgY29udGV4dD1cInBvcHVwXCJcbiAgICBbcG9wdXBMaXRlXT1cInBvcHVwTGl0ZVwiXG4gICAgW2ZpZWxkc109XCJmaWVsZHMgfHwgZGlzcGxheUZpZWxkc1wiXG4gICAgKHNlbGVjdEl0ZW0pPVwib25TZWxlY3QoJGV2ZW50KVwiXG4gICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgPjwvYWNsLXByb2plY3QtbGlzdD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=