imm-element-ui 1.2.0 → 1.2.2
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/form/form-type/rowselector.type.mjs +15 -6
- package/esm2022/lib/grid/grid/grid.component.mjs +15 -9
- package/esm2022/lib/page-form/page-form.component.mjs +3 -3
- package/esm2022/lib/row-selector/row-selector.component.mjs +8 -11
- package/esm2022/lib/share/utils.mjs +3 -2
- package/esm2022/lib/steps/steps.component.mjs +16 -6
- package/fesm2022/imm-element-ui.mjs +71 -47
- package/fesm2022/imm-element-ui.mjs.map +1 -1
- package/lib/form/form-type/rowselector.type.d.ts +1 -1
- package/lib/grid/grid/grid.component.d.ts +2 -1
- package/lib/row-selector/row-selector.component.d.ts +1 -3
- package/lib/service/themeConfig.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -349,7 +349,7 @@ export class PageFormComponent extends AmComponent {
|
|
|
349
349
|
}, 0);
|
|
350
350
|
}
|
|
351
351
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
352
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PageFormComponent, isStandalone: true, selector: "app-page-form", inputs: { addVisible: { classPropertyName: "addVisible", publicName: "addVisible", isSignal: true, isRequired: false, transformFunction: null }, gridList: { classPropertyName: "gridList", publicName: "gridList", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, getPrmInput: { classPropertyName: "getPrmInput", publicName: "getPrmInput", isSignal: true, isRequired: true, transformFunction: null }, statusSteps: { classPropertyName: "statusSteps", publicName: "statusSteps", isSignal: true, isRequired: false, transformFunction: null }, statusKey: { classPropertyName: "statusKey", publicName: "statusKey", isSignal: true, isRequired: false, transformFunction: null }, hrefBtnList: { classPropertyName: "hrefBtnList", publicName: "hrefBtnList", isSignal: true, isRequired: false, transformFunction: null }, setTitle: { classPropertyName: "setTitle", publicName: "setTitle", isSignal: true, isRequired: false, transformFunction: null }, actionList: { classPropertyName: "actionList", publicName: "actionList", isSignal: true, isRequired: false, transformFunction: null }, modelLog: { classPropertyName: "modelLog", publicName: "modelLog", isSignal: true, isRequired: false, transformFunction: null }, formDisabled: { classPropertyName: "formDisabled", publicName: "formDisabled", isSignal: true, isRequired: false, transformFunction: null }, statusConf: { classPropertyName: "statusConf", publicName: "statusConf", isSignal: true, isRequired: false, transformFunction: null }, formDetail: { classPropertyName: "formDetail", publicName: "formDetail", isSignal: true, isRequired: false, transformFunction: null }, saveFunc: { classPropertyName: "saveFunc", publicName: "saveFunc", isSignal: true, isRequired: false, transformFunction: null }, configNewPath: { classPropertyName: "configNewPath", publicName: "configNewPath", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, providers: [], viewQueries: [{ propertyName: "cForm", first: true, predicate: ["cForm"], descendants: true }, { propertyName: "customGrid", predicate: ["customGrid"], descendants: true }, { propertyName: "tabForm", predicate: ["tabForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"md:overflow-hidden\">\n\t<div class=\"flex md:flex-wrap lg:flex-nowrap items-center md:justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\n\t\t<div class=\"md:basis-1/3 order-1\">\n\t\t\t<app-crumb-action\n\t\t\t\t[addVisible]=\"addVisible()\"\n\t\t\t\t[newUrl]=\"newUrl\"\n\t\t\t\t[isShowCog]=\"true\"\n\t\t\t\t[outlined]=\"true\"\n\t\t\t\t[authLevel]=\"authLevel()\"\n\t\t\t\t[actionList]=\"actionList()\"\n\t\t\t\t[configNewPath]=\"configNewPath()\"\n\t\t\t\t[data]=\"getPrm.data ?? {}\"\n\t\t\t\t[saveBtnDisable]=\"saveBtnDisable\"\n\t\t\t\t(actionEvent)=\"authClick($event)\"\n\t\t\t\t(saveEvent)=\"submitForm()\">\n\t\t\t</app-crumb-action>\n\t\t</div>\n\n\t\t<div class=\"basis-1/5 lg:basis-2/3 order-2 lg:order-2 md:order-last md:basis-full md:mt-[6px]\">\n\t\t\t<href-btn-list\n\t\t\t\t[hrefs]=\"hrefBtnList()\"\n\t\t\t\t(hrefClick)=\"goRun($event)\"></href-btn-list>\n\t\t\t<!-- @if (id) {\n\t\t\t\t@for (btn of hrefBtnList(); track btn) {\n\t\t\t\t\t<p-button\n\t\t\t\t\t\t[variant]=\"btn?.variant\"\n\t\t\t\t\t\t[severity]=\"btn?.severity\"\n\t\t\t\t\t\tclass=\"mr-[6px]\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t[icon]=\"btn?.icon\"\n\t\t\t\t\t\tlabel=\"{{ btn.i18nKey ? i18n.fanyi(btn.i18nKey) : btn.label }}\"\n\t\t\t\t\t\t(click)=\"goRun(btn)\">\n\t\t\t\t\t</p-button>\n\t\t\t\t}\n\t\t\t} -->\n\t\t</div>\n\t\t<div class=\"basis-1/3 order-3\"></div>\n\t</div>\n\t<div class=\"flex\">\n\t\t<div class=\"px-2 flex flex-wrap items-center flex-1\">\n\t\t\t<div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center flex-row order-1\">\n\t\t\t\t@for (action of actionList(); let i = $index; track action) {\n\t\t\t\t\t<p-button\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t[icon]=\"getPrm.data?.icon\"\n\t\t\t\t\t\t[label]=\"action.i18nKey ? (action.i18nKey | translate) : action.label\"\n\t\t\t\t\t\t[disabled]=\"action.btnDisabled ? action.btnDisabled(getPrm.data) : false\"\n\t\t\t\t\t\t[styleClass]=\"\n\t\t\t\t\t\t\t(action.auth || 0) > (authLevel() || 0) || !!action.btnHidden?.(getPrm.data)\n\t\t\t\t\t\t\t\t? 'form-action hidden'\n\t\t\t\t\t\t\t\t: 'form-action block mr-[.5rem]'\n\t\t\t\t\t\t\"\n\t\t\t\t\t\t(onClick)=\"action.onClick != '' && action.onClick?.(getPrm.data)\">\n\t\t\t\t\t</p-button>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\n\t\t\t\t<custom-steps\n\t\t\t\t\t#customSteps\n\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t[steps]=\"statusSteps()\"\n\t\t\t\t\t[modelLog]=\"modelLog()\"\n\t\t\t\t\t[current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\n\t\t\t\t\t[authLevel]=\"authLevel()\"\n\t\t\t\t\t[isClick]=\"this.statusConf().isClick\"\n\t\t\t\t\t(change)=\"statusChange($event, customSteps)\">\n\t\t\t\t</custom-steps>\n\t\t\t</div>\n\t\t</div>\n\t\t@if (modelLog()) {\n\t\t\t<div class=\"md:w-[400px]\"></div>\n\t\t}\n\t</div>\n\t<div class=\"main flex flex-wrap md:overflow-y-hidden\">\n\t\t<div class=\"w-full md:flex-1 md:h-full overflow-y-auto\">\n\t\t\t<div class=\"bg-white mx-2 form-panel\">\n\t\t\t\t<div class=\"p-2 flex-1\">\n\t\t\t\t\t<form [formGroup]=\"form().form!\">\n\t\t\t\t\t\t<custom-form\n\t\t\t\t\t\t\t#cForm\n\t\t\t\t\t\t\t[options]=\"formOptions\"\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t\t\t\t\t[model]=\"getPrm.data ?? {}\"></custom-form>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\t\t\t\t@if (gridList() && gridList().length > 0) {\n\t\t\t\t\t<div class=\"relative mb-2\">\n\t\t\t\t\t\t<p-tabs [(value)]=\"indexValue\">\n\t\t\t\t\t\t\t<p-tablist>\n\t\t\t\t\t\t\t\t@for (fchild of gridList(); let i = $index; track fchild) {\n\t\t\t\t\t\t\t\t\t<p-tab\n\t\t\t\t\t\t\t\t\t\t[value]=\"i\"\n\t\t\t\t\t\t\t\t\t\t(click)=\"tabClick()\">\n\t\t\t\t\t\t\t\t\t\t{{ fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title }}\n\t\t\t\t\t\t\t\t\t</p-tab>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</p-tablist>\n\t\t\t\t\t\t</p-tabs>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@for (grid of gridList(); let i = $index; track grid) {\n\t\t\t\t\t@if (grid.type == 'grid') {\n\t\t\t\t\t\t<custom-grid\n\t\t\t\t\t\t\t#customGrid\n\t\t\t\t\t\t\t[hidden]=\"indexValue != i\"\n\t\t\t\t\t\t\t[rowData]=\"getPrm.data?.[grid.subDataKey!]\"\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t\t\t\t\t(deleteEmit)=\"delRows($event)\"\n\t\t\t\t\t\t\t[addType]=\"grid.subTableSource\"\n\t\t\t\t\t\t\t(addEmit)=\"dataSourceShow()\"\n\t\t\t\t\t\t\t[gridOptions]=\"grid.gridOptions\"\n\t\t\t\t\t\t\t[gridDisable]=\"gridDisable\"\n\t\t\t\t\t\t\t[authLevel]=\"authLevel()\"\n\t\t\t\t\t\t\t[showDelete]=\"grid.showDelete\"\n\t\t\t\t\t\t\t[selectData]=\"grid.selectData\">\n\t\t\t\t\t\t</custom-grid>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<!-- @if(indexValue == i){\n\t\t\t\t\t\t\t<form [formGroup]=\"grid.form!\">\n\t\t\t\t\t\t\t\t<custom-form\n\t\t\t\t\t\t\t\t[options]=\"grid\"\n\t\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t</custom-form>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t} -->\n\t\t\t\t\t\t<custom-form\n\t\t\t\t\t\t\t#tabForm\n\t\t\t\t\t\t\t[hidden]=\"indexValue != i\"\n\t\t\t\t\t\t\t[options]=\"grid\"\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t\t\t\t\t[model]=\"subFormModel[grid.subDataKey!] || {}\">\n\t\t\t\t\t\t</custom-form>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t\t@if (modelLog()) {\n\t\t\t<div class=\"w-full md:w-[400px] md:h-full overflow-y-auto\">\n\t\t\t\t<custom-log [logs]=\"getPrm.data?.log ?? []\"></custom-log>\n\t\t\t</div>\n\t\t}\n\t</div>\n</div>\n<row-selector\n\t[(visible)]=\"visible\"\n\t[searchPrm]=\"dialogSearchPrm\"\n\t[gridOptions]=\"selectOptions\"\n\t[selectionKeys]=\"selectionKeys\"\n\t(onOk)=\"onOk($event)\">\n</row-selector>\n", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 128px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}:host ::ng-deep .form-action{background:#e7e9ed!important;color:var(--ag-text-color)!important;border-color:#e7e9ed!important}:host ::ng-deep .form-action:not(:disabled):hover{background-color:#d8dadd!important;border-color:#d8dadd}.form-panel{border:solid 1px #dbdbdb}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormComponent, selector: "custom-form", inputs: ["options", "model", "upsert"] }, { kind: "component", type: LogComponent, selector: "custom-log", inputs: ["logs", "id"] }, { kind: "component", type: CrumbActionComponent, selector: "app-crumb-action", inputs: ["isShowCog", "addVisible", "newUrl", "configNewPath", "onExport", "outlined", "isList", "authLevel", "actionList", "data", "menus", "saveBtnDisable"], outputs: ["saveEvent", "cancelEvent", "actionEvent"] }, { kind: "component", type: StepsComponent, selector: "custom-steps", inputs: ["modelLog", "needSelfAdjusting", "steps", "current", "authLevel", "isClick"], outputs: ["change"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "selectionKeys", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel", "showDelete", "gridDisable"], outputs: ["deleteEmit", "addEmit"] }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i3.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i3.TabList, selector: "p-tablist" }, { kind: "component", type: i3.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: RowSelectorComponent, selector: "row-selector", inputs: ["title", "selectionKeys", "gridOptions", "searchPrm", "visible"], outputs: ["onOk", "visibleChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: HrefBtnListComponent, selector: "href-btn-list", inputs: ["hrefs"], outputs: ["hrefClick"] }] }); }
|
|
352
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PageFormComponent, isStandalone: true, selector: "app-page-form", inputs: { addVisible: { classPropertyName: "addVisible", publicName: "addVisible", isSignal: true, isRequired: false, transformFunction: null }, gridList: { classPropertyName: "gridList", publicName: "gridList", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, getPrmInput: { classPropertyName: "getPrmInput", publicName: "getPrmInput", isSignal: true, isRequired: true, transformFunction: null }, statusSteps: { classPropertyName: "statusSteps", publicName: "statusSteps", isSignal: true, isRequired: false, transformFunction: null }, statusKey: { classPropertyName: "statusKey", publicName: "statusKey", isSignal: true, isRequired: false, transformFunction: null }, hrefBtnList: { classPropertyName: "hrefBtnList", publicName: "hrefBtnList", isSignal: true, isRequired: false, transformFunction: null }, setTitle: { classPropertyName: "setTitle", publicName: "setTitle", isSignal: true, isRequired: false, transformFunction: null }, actionList: { classPropertyName: "actionList", publicName: "actionList", isSignal: true, isRequired: false, transformFunction: null }, modelLog: { classPropertyName: "modelLog", publicName: "modelLog", isSignal: true, isRequired: false, transformFunction: null }, formDisabled: { classPropertyName: "formDisabled", publicName: "formDisabled", isSignal: true, isRequired: false, transformFunction: null }, statusConf: { classPropertyName: "statusConf", publicName: "statusConf", isSignal: true, isRequired: false, transformFunction: null }, formDetail: { classPropertyName: "formDetail", publicName: "formDetail", isSignal: true, isRequired: false, transformFunction: null }, saveFunc: { classPropertyName: "saveFunc", publicName: "saveFunc", isSignal: true, isRequired: false, transformFunction: null }, configNewPath: { classPropertyName: "configNewPath", publicName: "configNewPath", isSignal: true, isRequired: false, transformFunction: null }, authLevel: { classPropertyName: "authLevel", publicName: "authLevel", isSignal: true, isRequired: false, transformFunction: null } }, providers: [], viewQueries: [{ propertyName: "cForm", first: true, predicate: ["cForm"], descendants: true }, { propertyName: "customGrid", predicate: ["customGrid"], descendants: true }, { propertyName: "tabForm", predicate: ["tabForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"md:overflow-hidden\">\n\t<div class=\"flex md:flex-wrap lg:flex-nowrap items-center md:justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\n\t\t<div class=\"md:basis-1/3 order-1\">\n\t\t\t<app-crumb-action\n\t\t\t\t[addVisible]=\"addVisible()\"\n\t\t\t\t[newUrl]=\"newUrl\"\n\t\t\t\t[isShowCog]=\"true\"\n\t\t\t\t[outlined]=\"true\"\n\t\t\t\t[authLevel]=\"authLevel()\"\n\t\t\t\t[actionList]=\"actionList()\"\n\t\t\t\t[configNewPath]=\"configNewPath()\"\n\t\t\t\t[data]=\"getPrm.data ?? {}\"\n\t\t\t\t[saveBtnDisable]=\"saveBtnDisable\"\n\t\t\t\t(actionEvent)=\"authClick($event)\"\n\t\t\t\t(saveEvent)=\"submitForm()\">\n\t\t\t</app-crumb-action>\n\t\t</div>\n\n\t\t<div class=\"basis-1/5 lg:basis-2/3 order-2 lg:order-2 md:order-last md:basis-full md:mt-[6px]\">\n\t\t\t<href-btn-list\n\t\t\t\t[hrefs]=\"hrefBtnList()\"\n\t\t\t\t(hrefClick)=\"goRun($event)\"></href-btn-list>\n\t\t\t<!-- @if (id) {\n\t\t\t\t@for (btn of hrefBtnList(); track btn) {\n\t\t\t\t\t<p-button\n\t\t\t\t\t\t[variant]=\"btn?.variant\"\n\t\t\t\t\t\t[severity]=\"btn?.severity\"\n\t\t\t\t\t\tclass=\"mr-[6px]\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t[icon]=\"btn?.icon\"\n\t\t\t\t\t\tlabel=\"{{ btn.i18nKey ? i18n.fanyi(btn.i18nKey) : btn.label }}\"\n\t\t\t\t\t\t(click)=\"goRun(btn)\">\n\t\t\t\t\t</p-button>\n\t\t\t\t}\n\t\t\t} -->\n\t\t</div>\n\t\t<div class=\"basis-1/3 order-3\"></div>\n\t</div>\n\t<div class=\"flex\">\n\t\t<div class=\"px-2 flex flex-wrap items-center flex-1\">\n\t\t\t<div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center flex-row order-1\">\n\t\t\t\t@for (action of actionList(); let i = $index; track action) {\n\t\t\t\t\t<p-button\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t[icon]=\"getPrm.data?.icon\"\n\t\t\t\t\t\t[label]=\"action.i18nKey ? (action.i18nKey | translate) : action.label\"\n\t\t\t\t\t\t[disabled]=\"action.btnDisabled ? action.btnDisabled(getPrm.data) : false\"\n\t\t\t\t\t\t[styleClass]=\"\n\t\t\t\t\t\t\t(action.auth || 0) > (authLevel() || 0) || !!action.btnHidden?.(getPrm.data)\n\t\t\t\t\t\t\t\t? 'form-action hidden'\n\t\t\t\t\t\t\t\t: 'form-action block mr-[.5rem]'\n\t\t\t\t\t\t\"\n\t\t\t\t\t\t(onClick)=\"action.onClick != '' && action.onClick?.(getPrm.data)\">\n\t\t\t\t\t</p-button>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\n\t\t\t\t<custom-steps\n\t\t\t\t\t#customSteps\n\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t[steps]=\"statusSteps()\"\n\t\t\t\t\t[modelLog]=\"modelLog()\"\n\t\t\t\t\t[current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\n\t\t\t\t\t[authLevel]=\"authLevel()\"\n\t\t\t\t\t[isClick]=\"this.statusConf().isClick\"\n\t\t\t\t\t(change)=\"statusChange($event, customSteps)\">\n\t\t\t\t</custom-steps>\n\t\t\t</div>\n\t\t</div>\n\t\t@if (modelLog()) {\n\t\t\t<div class=\"lg:w-[400px] md:w-[300px] hidden sm:block\"></div>\n\t\t}\n\t</div>\n\t<div class=\"main flex flex-wrap sm:overflow-y-hidden\">\n\t\t<div class=\"w-full sm:flex-1 sm:h-full md:overflow-y-auto\">\n\t\t\t<div class=\"bg-white mx-2 form-panel\">\n\t\t\t\t<div class=\"p-2 flex-1\">\n\t\t\t\t\t<form [formGroup]=\"form().form!\">\n\t\t\t\t\t\t<custom-form\n\t\t\t\t\t\t\t#cForm\n\t\t\t\t\t\t\t[options]=\"formOptions\"\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t\t\t\t\t[model]=\"getPrm.data ?? {}\"></custom-form>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\t\t\t\t@if (gridList() && gridList().length > 0) {\n\t\t\t\t\t<div class=\"relative mb-2\">\n\t\t\t\t\t\t<p-tabs [(value)]=\"indexValue\">\n\t\t\t\t\t\t\t<p-tablist>\n\t\t\t\t\t\t\t\t@for (fchild of gridList(); let i = $index; track fchild) {\n\t\t\t\t\t\t\t\t\t<p-tab\n\t\t\t\t\t\t\t\t\t\t[value]=\"i\"\n\t\t\t\t\t\t\t\t\t\t(click)=\"tabClick()\">\n\t\t\t\t\t\t\t\t\t\t{{ fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title }}\n\t\t\t\t\t\t\t\t\t</p-tab>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</p-tablist>\n\t\t\t\t\t\t</p-tabs>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@for (grid of gridList(); let i = $index; track grid) {\n\t\t\t\t\t@if (grid.type == 'grid') {\n\t\t\t\t\t\t<custom-grid\n\t\t\t\t\t\t\t#customGrid\n\t\t\t\t\t\t\t[hidden]=\"indexValue != i\"\n\t\t\t\t\t\t\t[rowData]=\"getPrm.data?.[grid.subDataKey!]\"\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t\t\t\t\t(deleteEmit)=\"delRows($event)\"\n\t\t\t\t\t\t\t[addType]=\"grid.subTableSource\"\n\t\t\t\t\t\t\t(addEmit)=\"dataSourceShow()\"\n\t\t\t\t\t\t\t[gridOptions]=\"grid.gridOptions\"\n\t\t\t\t\t\t\t[gridDisable]=\"gridDisable\"\n\t\t\t\t\t\t\t[authLevel]=\"authLevel()\"\n\t\t\t\t\t\t\t[showDelete]=\"grid.showDelete\"\n\t\t\t\t\t\t\t[selectData]=\"grid.selectData\">\n\t\t\t\t\t\t</custom-grid>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<!-- @if(indexValue == i){\n\t\t\t\t\t\t\t<form [formGroup]=\"grid.form!\">\n\t\t\t\t\t\t\t\t<custom-form\n\t\t\t\t\t\t\t\t[options]=\"grid\"\n\t\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t</custom-form>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t} -->\n\t\t\t\t\t\t<custom-form\n\t\t\t\t\t\t\t#tabForm\n\t\t\t\t\t\t\t[hidden]=\"indexValue != i\"\n\t\t\t\t\t\t\t[options]=\"grid\"\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t\t\t\t\t[model]=\"subFormModel[grid.subDataKey!] || {}\">\n\t\t\t\t\t\t</custom-form>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t\t@if (modelLog()) {\n\t\t\t<div class=\"w-full lg:w-[400px] md:w-[300px] sm:h-full md:overflow-y-auto hidden sm:block\">\n\t\t\t\t<custom-log [logs]=\"getPrm.data?.log ?? []\"></custom-log>\n\t\t\t</div>\n\t\t}\n\t</div>\n</div>\n<row-selector\n\t[(visible)]=\"visible\"\n\t[searchPrm]=\"dialogSearchPrm\"\n\t[gridOptions]=\"selectOptions\"\n\t[selectionKeys]=\"selectionKeys\"\n\t(onOk)=\"onOk($event)\">\n</row-selector>\n", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 128px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}:host ::ng-deep .form-action{background:#e7e9ed!important;color:var(--ag-text-color)!important;border-color:#e7e9ed!important}:host ::ng-deep .form-action:not(:disabled):hover{background-color:#d8dadd!important;border-color:#d8dadd}.form-panel{border:solid 1px #dbdbdb}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormComponent, selector: "custom-form", inputs: ["options", "model", "upsert"] }, { kind: "component", type: LogComponent, selector: "custom-log", inputs: ["logs", "id"] }, { kind: "component", type: CrumbActionComponent, selector: "app-crumb-action", inputs: ["isShowCog", "addVisible", "newUrl", "configNewPath", "onExport", "outlined", "isList", "authLevel", "actionList", "data", "menus", "saveBtnDisable"], outputs: ["saveEvent", "cancelEvent", "actionEvent"] }, { kind: "component", type: StepsComponent, selector: "custom-steps", inputs: ["modelLog", "needSelfAdjusting", "steps", "current", "authLevel", "isClick"], outputs: ["change"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "selectionKeys", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel", "showDelete", "gridDisable"], outputs: ["deleteEmit", "addEmit"] }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i3.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i3.TabList, selector: "p-tablist" }, { kind: "component", type: i3.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: RowSelectorComponent, selector: "row-selector", inputs: ["title", "selectionKeys", "gridOptions", "searchPrm", "visible"], outputs: ["onOk", "visibleChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: HrefBtnListComponent, selector: "href-btn-list", inputs: ["hrefs"], outputs: ["hrefClick"] }] }); }
|
|
353
353
|
}
|
|
354
354
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageFormComponent, decorators: [{
|
|
355
355
|
type: Component,
|
|
@@ -365,7 +365,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
365
365
|
RowSelectorComponent,
|
|
366
366
|
TranslatePipe,
|
|
367
367
|
HrefBtnListComponent,
|
|
368
|
-
], providers: [], template: "<div class=\"md:overflow-hidden\">\n\t<div class=\"flex md:flex-wrap lg:flex-nowrap items-center md:justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\n\t\t<div class=\"md:basis-1/3 order-1\">\n\t\t\t<app-crumb-action\n\t\t\t\t[addVisible]=\"addVisible()\"\n\t\t\t\t[newUrl]=\"newUrl\"\n\t\t\t\t[isShowCog]=\"true\"\n\t\t\t\t[outlined]=\"true\"\n\t\t\t\t[authLevel]=\"authLevel()\"\n\t\t\t\t[actionList]=\"actionList()\"\n\t\t\t\t[configNewPath]=\"configNewPath()\"\n\t\t\t\t[data]=\"getPrm.data ?? {}\"\n\t\t\t\t[saveBtnDisable]=\"saveBtnDisable\"\n\t\t\t\t(actionEvent)=\"authClick($event)\"\n\t\t\t\t(saveEvent)=\"submitForm()\">\n\t\t\t</app-crumb-action>\n\t\t</div>\n\n\t\t<div class=\"basis-1/5 lg:basis-2/3 order-2 lg:order-2 md:order-last md:basis-full md:mt-[6px]\">\n\t\t\t<href-btn-list\n\t\t\t\t[hrefs]=\"hrefBtnList()\"\n\t\t\t\t(hrefClick)=\"goRun($event)\"></href-btn-list>\n\t\t\t<!-- @if (id) {\n\t\t\t\t@for (btn of hrefBtnList(); track btn) {\n\t\t\t\t\t<p-button\n\t\t\t\t\t\t[variant]=\"btn?.variant\"\n\t\t\t\t\t\t[severity]=\"btn?.severity\"\n\t\t\t\t\t\tclass=\"mr-[6px]\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t[icon]=\"btn?.icon\"\n\t\t\t\t\t\tlabel=\"{{ btn.i18nKey ? i18n.fanyi(btn.i18nKey) : btn.label }}\"\n\t\t\t\t\t\t(click)=\"goRun(btn)\">\n\t\t\t\t\t</p-button>\n\t\t\t\t}\n\t\t\t} -->\n\t\t</div>\n\t\t<div class=\"basis-1/3 order-3\"></div>\n\t</div>\n\t<div class=\"flex\">\n\t\t<div class=\"px-2 flex flex-wrap items-center flex-1\">\n\t\t\t<div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center flex-row order-1\">\n\t\t\t\t@for (action of actionList(); let i = $index; track action) {\n\t\t\t\t\t<p-button\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t[icon]=\"getPrm.data?.icon\"\n\t\t\t\t\t\t[label]=\"action.i18nKey ? (action.i18nKey | translate) : action.label\"\n\t\t\t\t\t\t[disabled]=\"action.btnDisabled ? action.btnDisabled(getPrm.data) : false\"\n\t\t\t\t\t\t[styleClass]=\"\n\t\t\t\t\t\t\t(action.auth || 0) > (authLevel() || 0) || !!action.btnHidden?.(getPrm.data)\n\t\t\t\t\t\t\t\t? 'form-action hidden'\n\t\t\t\t\t\t\t\t: 'form-action block mr-[.5rem]'\n\t\t\t\t\t\t\"\n\t\t\t\t\t\t(onClick)=\"action.onClick != '' && action.onClick?.(getPrm.data)\">\n\t\t\t\t\t</p-button>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\n\t\t\t\t<custom-steps\n\t\t\t\t\t#customSteps\n\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t[steps]=\"statusSteps()\"\n\t\t\t\t\t[modelLog]=\"modelLog()\"\n\t\t\t\t\t[current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\n\t\t\t\t\t[authLevel]=\"authLevel()\"\n\t\t\t\t\t[isClick]=\"this.statusConf().isClick\"\n\t\t\t\t\t(change)=\"statusChange($event, customSteps)\">\n\t\t\t\t</custom-steps>\n\t\t\t</div>\n\t\t</div>\n\t\t@if (modelLog()) {\n\t\t\t<div class=\"
|
|
368
|
+
], providers: [], template: "<div class=\"md:overflow-hidden\">\n\t<div class=\"flex md:flex-wrap lg:flex-nowrap items-center md:justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\n\t\t<div class=\"md:basis-1/3 order-1\">\n\t\t\t<app-crumb-action\n\t\t\t\t[addVisible]=\"addVisible()\"\n\t\t\t\t[newUrl]=\"newUrl\"\n\t\t\t\t[isShowCog]=\"true\"\n\t\t\t\t[outlined]=\"true\"\n\t\t\t\t[authLevel]=\"authLevel()\"\n\t\t\t\t[actionList]=\"actionList()\"\n\t\t\t\t[configNewPath]=\"configNewPath()\"\n\t\t\t\t[data]=\"getPrm.data ?? {}\"\n\t\t\t\t[saveBtnDisable]=\"saveBtnDisable\"\n\t\t\t\t(actionEvent)=\"authClick($event)\"\n\t\t\t\t(saveEvent)=\"submitForm()\">\n\t\t\t</app-crumb-action>\n\t\t</div>\n\n\t\t<div class=\"basis-1/5 lg:basis-2/3 order-2 lg:order-2 md:order-last md:basis-full md:mt-[6px]\">\n\t\t\t<href-btn-list\n\t\t\t\t[hrefs]=\"hrefBtnList()\"\n\t\t\t\t(hrefClick)=\"goRun($event)\"></href-btn-list>\n\t\t\t<!-- @if (id) {\n\t\t\t\t@for (btn of hrefBtnList(); track btn) {\n\t\t\t\t\t<p-button\n\t\t\t\t\t\t[variant]=\"btn?.variant\"\n\t\t\t\t\t\t[severity]=\"btn?.severity\"\n\t\t\t\t\t\tclass=\"mr-[6px]\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t[icon]=\"btn?.icon\"\n\t\t\t\t\t\tlabel=\"{{ btn.i18nKey ? i18n.fanyi(btn.i18nKey) : btn.label }}\"\n\t\t\t\t\t\t(click)=\"goRun(btn)\">\n\t\t\t\t\t</p-button>\n\t\t\t\t}\n\t\t\t} -->\n\t\t</div>\n\t\t<div class=\"basis-1/3 order-3\"></div>\n\t</div>\n\t<div class=\"flex\">\n\t\t<div class=\"px-2 flex flex-wrap items-center flex-1\">\n\t\t\t<div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center flex-row order-1\">\n\t\t\t\t@for (action of actionList(); let i = $index; track action) {\n\t\t\t\t\t<p-button\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t[icon]=\"getPrm.data?.icon\"\n\t\t\t\t\t\t[label]=\"action.i18nKey ? (action.i18nKey | translate) : action.label\"\n\t\t\t\t\t\t[disabled]=\"action.btnDisabled ? action.btnDisabled(getPrm.data) : false\"\n\t\t\t\t\t\t[styleClass]=\"\n\t\t\t\t\t\t\t(action.auth || 0) > (authLevel() || 0) || !!action.btnHidden?.(getPrm.data)\n\t\t\t\t\t\t\t\t? 'form-action hidden'\n\t\t\t\t\t\t\t\t: 'form-action block mr-[.5rem]'\n\t\t\t\t\t\t\"\n\t\t\t\t\t\t(onClick)=\"action.onClick != '' && action.onClick?.(getPrm.data)\">\n\t\t\t\t\t</p-button>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\n\t\t\t\t<custom-steps\n\t\t\t\t\t#customSteps\n\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t[steps]=\"statusSteps()\"\n\t\t\t\t\t[modelLog]=\"modelLog()\"\n\t\t\t\t\t[current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\n\t\t\t\t\t[authLevel]=\"authLevel()\"\n\t\t\t\t\t[isClick]=\"this.statusConf().isClick\"\n\t\t\t\t\t(change)=\"statusChange($event, customSteps)\">\n\t\t\t\t</custom-steps>\n\t\t\t</div>\n\t\t</div>\n\t\t@if (modelLog()) {\n\t\t\t<div class=\"lg:w-[400px] md:w-[300px] hidden sm:block\"></div>\n\t\t}\n\t</div>\n\t<div class=\"main flex flex-wrap sm:overflow-y-hidden\">\n\t\t<div class=\"w-full sm:flex-1 sm:h-full md:overflow-y-auto\">\n\t\t\t<div class=\"bg-white mx-2 form-panel\">\n\t\t\t\t<div class=\"p-2 flex-1\">\n\t\t\t\t\t<form [formGroup]=\"form().form!\">\n\t\t\t\t\t\t<custom-form\n\t\t\t\t\t\t\t#cForm\n\t\t\t\t\t\t\t[options]=\"formOptions\"\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t\t\t\t\t[model]=\"getPrm.data ?? {}\"></custom-form>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\t\t\t\t@if (gridList() && gridList().length > 0) {\n\t\t\t\t\t<div class=\"relative mb-2\">\n\t\t\t\t\t\t<p-tabs [(value)]=\"indexValue\">\n\t\t\t\t\t\t\t<p-tablist>\n\t\t\t\t\t\t\t\t@for (fchild of gridList(); let i = $index; track fchild) {\n\t\t\t\t\t\t\t\t\t<p-tab\n\t\t\t\t\t\t\t\t\t\t[value]=\"i\"\n\t\t\t\t\t\t\t\t\t\t(click)=\"tabClick()\">\n\t\t\t\t\t\t\t\t\t\t{{ fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title }}\n\t\t\t\t\t\t\t\t\t</p-tab>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</p-tablist>\n\t\t\t\t\t\t</p-tabs>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@for (grid of gridList(); let i = $index; track grid) {\n\t\t\t\t\t@if (grid.type == 'grid') {\n\t\t\t\t\t\t<custom-grid\n\t\t\t\t\t\t\t#customGrid\n\t\t\t\t\t\t\t[hidden]=\"indexValue != i\"\n\t\t\t\t\t\t\t[rowData]=\"getPrm.data?.[grid.subDataKey!]\"\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t\t\t\t\t(deleteEmit)=\"delRows($event)\"\n\t\t\t\t\t\t\t[addType]=\"grid.subTableSource\"\n\t\t\t\t\t\t\t(addEmit)=\"dataSourceShow()\"\n\t\t\t\t\t\t\t[gridOptions]=\"grid.gridOptions\"\n\t\t\t\t\t\t\t[gridDisable]=\"gridDisable\"\n\t\t\t\t\t\t\t[authLevel]=\"authLevel()\"\n\t\t\t\t\t\t\t[showDelete]=\"grid.showDelete\"\n\t\t\t\t\t\t\t[selectData]=\"grid.selectData\">\n\t\t\t\t\t\t</custom-grid>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<!-- @if(indexValue == i){\n\t\t\t\t\t\t\t<form [formGroup]=\"grid.form!\">\n\t\t\t\t\t\t\t\t<custom-form\n\t\t\t\t\t\t\t\t[options]=\"grid\"\n\t\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t</custom-form>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t} -->\n\t\t\t\t\t\t<custom-form\n\t\t\t\t\t\t\t#tabForm\n\t\t\t\t\t\t\t[hidden]=\"indexValue != i\"\n\t\t\t\t\t\t\t[options]=\"grid\"\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t\t\t\t\t[model]=\"subFormModel[grid.subDataKey!] || {}\">\n\t\t\t\t\t\t</custom-form>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t\t@if (modelLog()) {\n\t\t\t<div class=\"w-full lg:w-[400px] md:w-[300px] sm:h-full md:overflow-y-auto hidden sm:block\">\n\t\t\t\t<custom-log [logs]=\"getPrm.data?.log ?? []\"></custom-log>\n\t\t\t</div>\n\t\t}\n\t</div>\n</div>\n<row-selector\n\t[(visible)]=\"visible\"\n\t[searchPrm]=\"dialogSearchPrm\"\n\t[gridOptions]=\"selectOptions\"\n\t[selectionKeys]=\"selectionKeys\"\n\t(onOk)=\"onOk($event)\">\n</row-selector>\n", styles: ["@charset \"UTF-8\";.main{height:calc(100vh - 128px)}:host ::ng-deep .main .ag-root-wrapper{border-left:none!important;border-right:none!important;border-bottom:none!important}:host ::ng-deep .form-action{background:#e7e9ed!important;color:var(--ag-text-color)!important;border-color:#e7e9ed!important}:host ::ng-deep .form-action:not(:disabled):hover{background-color:#d8dadd!important;border-color:#d8dadd}.form-panel{border:solid 1px #dbdbdb}\n"] }]
|
|
369
369
|
}], ctorParameters: () => [], propDecorators: { cForm: [{
|
|
370
370
|
type: ViewChild,
|
|
371
371
|
args: ['cForm']
|
|
@@ -376,4 +376,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
376
376
|
type: ViewChildren,
|
|
377
377
|
args: ['tabForm']
|
|
378
378
|
}] } });
|
|
379
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvcGFnZS1mb3JtL3BhZ2UtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3BhZ2UtZm9ybS9wYWdlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQTJCLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0SSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFlLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFRLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBZSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBTyxNQUFNLG9CQUFvQixDQUFDO0FBR3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFxQjFELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxXQUFXO0lBb0NqRDtRQUNDLEtBQUssRUFBRSxDQUFDO1FBakNULGVBQVUsR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUM5QixhQUFRLEdBQUcsS0FBSyxDQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLGdCQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUN0QyxnQkFBVyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUNoQyxjQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGdCQUFXLEdBQUcsS0FBSyxDQUFnQixFQUFFLENBQUMsQ0FBQztRQUN2QyxhQUFRLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDM0IsZUFBVSxHQUFHLEtBQUssQ0FBa0IsRUFBRSxDQUFDLENBQUM7UUFDeEMsYUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNqQyxpQkFBWSxHQUFHLEtBQUssRUFBWSxDQUFDO1FBQ2pDLGVBQVUsR0FBRyxLQUFLLEVBQU8sQ0FBQTtRQUN6QixlQUFVLEdBQUcsS0FBSyxFQUFPLENBQUE7UUFDekIsYUFBUSxHQUFHLEtBQUssRUFBTyxDQUFBO1FBQ3ZCLGtCQUFhLEdBQUcsS0FBSyxFQUFPLENBQUE7UUFFNUIsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEQsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHaEIsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQUN2QixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNaLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsY0FBUyxHQUFHLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLFVBQUssR0FBVSxFQUFFLENBQUM7UUFDbEIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQixpQkFBWSxHQUFPLEVBQUUsQ0FBQTtRQUNyQixtQkFBYyxHQUFHLEtBQUssQ0FBQTtRQUN0QixnQkFBVyxHQUFHLEtBQUssQ0FBQTtRQUNuQixrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUd6QixJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHO2FBQ3BDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQzthQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDO2FBQ1QsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sS0FBSyxDQUFDO1FBQ25DLE1BQU0sQ0FDTCxHQUFHLEVBQUU7WUFDSixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFVLENBQUM7WUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0QyxJQUFHLElBQUksQ0FBQyxFQUFFLEVBQUMsQ0FBQztnQkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFDLFVBQVUsQ0FBQyxDQUFBO2dCQUNoRCxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN4RixDQUFDO2lCQUFLLENBQUM7Z0JBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFBO2dCQUNyQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUMzQixJQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksTUFBTSxFQUFDLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUE7b0JBQ3BDLENBQUM7Z0JBQ0YsQ0FBQyxDQUFDLENBQUE7WUFDSCxDQUFDO1FBQ0YsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzNCLENBQUM7UUFFRixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQ0wsR0FBRyxFQUFFO1lBQ0osSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzNCLENBQUM7UUFDRixNQUFNLENBQ0wsR0FBRyxFQUFFO1lBQ0osSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMzRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRTtvQkFDeEQsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO2lCQUNsRCxDQUFDLENBQUM7WUFDSixDQUFDO1FBQ0YsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzNCLENBQUM7UUFDRixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUNuQixDQUFDO1FBQ0YsQ0FBQyxFQUFDLEVBQUMsaUJBQWlCLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQTtJQUM1QixDQUFDO0lBQ0QsUUFBUTtRQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFVBQVU7UUFDVCwwQkFBMEI7UUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3ZDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQTtRQUNsQixJQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMzQixJQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFDLENBQUM7b0JBQ3BCLE9BQU8sR0FBRyxLQUFLLENBQUE7Z0JBQ2hCLENBQUM7WUFDRixDQUFDLENBQUMsQ0FBQTtRQUNILENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksT0FBTyxFQUFFLENBQUM7WUFDdEMsSUFBSSxFQUFFLEdBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDN0IsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxJQUFJLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzRyxDQUFDO0lBQ0YsQ0FBQztJQUVELE9BQU8sQ0FBQyxDQUFNO1FBQ2IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO1FBRS9DLElBQUksR0FBRyxHQUFHO1lBQ1QsU0FBUyxFQUFFLFFBQVE7WUFDbkIsR0FBRyxFQUFFLENBQUM7U0FDTixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNaLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDUCxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUMzQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDWixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUM7SUFDRixDQUFDO0lBQ0QsSUFBSSxDQUFDLEdBQVM7UUFDYixJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEYsQ0FBQzthQUFNLENBQUM7WUFDUCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNmLElBQUksT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNqQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDVixDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNELG9CQUFvQjtJQUNwQixJQUFJLENBQUMsQ0FBTTtRQUNWLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQixJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUU7cUJBQ25ELE9BQU8sRUFBRTtxQkFDVCxHQUFHLENBQUMsZ0JBQWdCLEVBQUU7cUJBQ3RCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQixVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7WUFDRCxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ3ZCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztnQkFDcEUsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUMzRSxPQUFPO2dCQUNSLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFVBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNGLENBQUM7SUFDRCxTQUFTO1FBQ1IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRCxTQUFTO0lBQ1QsUUFBUSxDQUFDLEdBQU87UUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUcsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksVUFBVSxFQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JCLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzNCLElBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN2RCxDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUE7SUFDSCxDQUFDO0lBQ0QsWUFBWTtRQUNYLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUNwQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUMvRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtvQkFDakQsSUFBSSxPQUFPLENBQUMsQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7d0JBQ25DLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNyQyxDQUFDO2dCQUNGLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUN4RCxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO2dCQUNoQyxDQUFDLENBQUMsQ0FBQztZQUNKLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRCxXQUFXLENBQUMsR0FBUTtRQUNuQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3RDLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxTQUFVLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxjQUFjO1FBQ2IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsZUFBZSxDQUFFLENBQUM7UUFDeEUsSUFBSSxJQUFJLENBQUMsYUFBcUIsRUFBRSxTQUFTLEVBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsYUFBcUIsQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUssRUFBRSxFQUFFO2dCQUN4RSxJQUFHLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxVQUFVLEVBQUMsQ0FBQztvQkFDaEMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUN6QyxDQUFDO1lBQ0YsQ0FBQyxDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsZUFBZSxHQUFJLElBQUksQ0FBQyxhQUFxQixFQUFFLFNBQVMsQ0FBQTtRQUM5RCxDQUFDO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO1FBQzlELElBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlHLENBQUM7YUFBSyxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBUztRQUNkLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3BDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNuRixDQUFDO0lBQ0YsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFRO1FBQ2pCLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ25DLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0YsQ0FBQztJQUNELFlBQVksQ0FBQyxLQUFVLEVBQUUsV0FBMkI7UUFDbkQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQy9ELElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2IsSUFBSSxLQUFLLEdBQVE7Z0JBQ2hCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDekIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUU7YUFDaEQsQ0FBQztZQUNGLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNoQixLQUFLLENBQUMsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsS0FBSyxDQUFDO2dCQUN4QyxLQUFLLENBQUMsR0FBRyxHQUFHO29CQUNYLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRTtvQkFDWixPQUFPLEVBQUUsUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxLQUFLLEVBQUU7aUJBQ2xFLENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRTtnQkFDeEQsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLO2FBQ3pCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxTQUFTLENBQUMsT0FBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNsRCxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzdELDZCQUE2QjtRQUM5QixDQUFDO0lBQ0YsQ0FBQztJQUVELFdBQVc7UUFDVixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFHLE9BQU8sSUFBSSxLQUFLLFNBQVMsRUFBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFBO1lBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN6QixDQUFDO1FBQ0QsSUFBRyxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUMsQ0FBQztZQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFBO1lBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFBO1lBQ2xDLElBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDM0IsQ0FBQztZQUNELElBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFBO2dCQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQzdCLENBQUM7UUFDRixDQUFDO0lBQ0YsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFlO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3RDLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7Z0JBQzNCLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztnQkFDakUsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDYixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBYSxDQUFDLGNBQWMsQ0FBQyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO29CQUM3RSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RSxDQUFDO3FCQUFNLENBQUM7b0JBQ1AsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDMUYsQ0FBQztZQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBQ0QsYUFBYSxDQUFDLFFBQWdCO1FBQzdCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsS0FBUyxFQUFFLEVBQUU7WUFDdkMsSUFBRyxDQUFDLENBQUMsSUFBSSxJQUFJLE1BQU0sRUFBQyxDQUFDO2dCQUNwQixDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFRLEVBQUUsRUFBRTtvQkFDN0MsSUFBRyxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBQyxDQUFDO3dCQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtvQkFDdEIsQ0FBQztnQkFDRixDQUFDLENBQUMsQ0FBQTtnQkFDRixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUN0RCxZQUFZLEVBQ1osQ0FBQyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQ3hCLENBQUE7WUFDRixDQUFDO2lCQUFNLElBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUMsQ0FBQztnQkFDM0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFRLEVBQUcsRUFBRTtvQkFDL0IsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTt3QkFDOUIsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO3dCQUNqRSxJQUFJLFFBQVEsRUFBRSxDQUFDOzRCQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBYSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDOzRCQUM3RixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzt3QkFDdkYsQ0FBQzs2QkFBTSxDQUFDOzRCQUNQLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxZQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7d0JBQzFGLENBQUM7b0JBQ0YsQ0FBQyxDQUFDLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUE7SUFDSCxDQUFDO0lBQ0QsV0FBVztRQUNWLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsS0FBUyxFQUFFLEVBQUU7WUFDdkMsSUFBRyxDQUFDLENBQUMsSUFBSSxJQUFJLE1BQU0sRUFBQyxDQUFDO2dCQUNwQixDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQVEsRUFBRyxFQUFFO29CQUMvQixJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO3dCQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDdkYsQ0FBQyxDQUFDLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUE7SUFDSCxDQUFDO0lBQ0QsUUFBUTtRQUNQLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBRSxDQUFDLGVBQWUsRUFBRSxDQUFBO1FBQzFGLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUM7K0dBdlZXLGlCQUFpQjttR0FBakIsaUJBQWlCLDhwRUFGbEIsRUFBRSx1U0N0Q2QsbWtMQXVKQSx1ZkQvSEUsWUFBWSxpYkFDWixtQkFBbUIscWJBQ25CLGFBQWEsZ0dBQ2IsWUFBWSwrRUFDWixvQkFBb0IsbVJBQ3BCLGNBQWMscUtBQ2QsYUFBYSwrUEFDYixVQUFVLDRYQUNWLG9CQUFvQixtS0FDcEIsYUFBYSxrREFDYixvQkFBb0I7OzRGQU1ULGlCQUFpQjtrQkFwQjdCLFNBQVM7K0JBQ0MsZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDUixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLFVBQVU7d0JBQ1Ysb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLG9CQUFvQjtxQkFDcEIsYUFHVSxFQUFFO3dEQUdPLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDVSxVQUFVO3NCQUFyQyxZQUFZO3VCQUFDLFlBQVk7Z0JBQ0QsT0FBTztzQkFBL0IsWUFBWTt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckhpc3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS91c2VySGlzdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQsIFZpZXdDaGlsZCwgaW5wdXQsIGVmZmVjdCwgY29tcHV0ZWQsIElucHV0LCBzaWduYWwsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCwgRm9ybU9wdGlvbnMgfSBmcm9tICcuLi9mb3JtL2Zvcm0vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUm93U2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi9yb3ctc2VsZWN0b3Ivcm93LXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2dDb21wb25lbnQgfSBmcm9tICcuLi9sb2cvbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBDcnVtYkFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2NydW1iLWFjdGlvbi9jcnVtYi1hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFN0ZXBzQ29tcG9uZW50LCBTdGVwIH0gZnJvbSAnLi4vc3RlcHMvc3RlcHMuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRDb21wb25lbnQsIEdyaWRPcHRpb25zIH0gZnJvbSAnLi4vZ3JpZC9ncmlkL2dyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYnNNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYnMnO1xuaW1wb3J0IHsgQW1Db21wb25lbnQsIEdldCB9IGZyb20gJy4uL2FtL2FtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2ggfSBmcm9tICcuLi9hbS9hbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSHJlZkJ0bkxpc3QsIEdyaWRMaXN0IH0gZnJvbSAnLi9wYWdlLWZvcm0uaW50ZXJmYWNlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVybWlzc2lvbkJ0biB9IGZyb20gJy4vcGFnZS1mb3JtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBmb3JtVHlwZVRvUHJvcHMgfSBmcm9tICcuL3BhZ2UtZm9ybS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSHJlZkJ0bkxpc3RDb21wb25lbnQgfSBmcm9tICcuLi9ocmVmLWJ0bi1saXN0L2hyZWYtYnRuLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IEFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2FjdGlvbi5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2FwcC1wYWdlLWZvcm0nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbXG5cdFx0QnV0dG9uTW9kdWxlLFxuXHRcdFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cdFx0Rm9ybUNvbXBvbmVudCxcblx0XHRMb2dDb21wb25lbnQsXG5cdFx0Q3J1bWJBY3Rpb25Db21wb25lbnQsXG5cdFx0U3RlcHNDb21wb25lbnQsXG5cdFx0R3JpZENvbXBvbmVudCxcblx0XHRUYWJzTW9kdWxlLFxuXHRcdFJvd1NlbGVjdG9yQ29tcG9uZW50LFxuXHRcdFRyYW5zbGF0ZVBpcGUsXG5cdFx0SHJlZkJ0bkxpc3RDb21wb25lbnQsXG5cdF0sXG5cdHRlbXBsYXRlVXJsOiAnLi9wYWdlLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybDogJy4vcGFnZS1mb3JtLmNvbXBvbmVudC5zY3NzJyxcblx0cHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUZvcm1Db21wb25lbnQgZXh0ZW5kcyBBbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cdEBWaWV3Q2hpbGQoJ2NGb3JtJykgY0Zvcm0hOiBGb3JtQ29tcG9uZW50O1xuXHRAVmlld0NoaWxkcmVuKCdjdXN0b21HcmlkJykgY3VzdG9tR3JpZCE6IFF1ZXJ5TGlzdDxHcmlkQ29tcG9uZW50Pjtcblx0QFZpZXdDaGlsZHJlbigndGFiRm9ybScpIHRhYkZvcm0hOiBRdWVyeUxpc3Q8Rm9ybUNvbXBvbmVudD47XG5cdGFkZFZpc2libGUgPSBpbnB1dDxib29sZWFuPigpO1xuXHRncmlkTGlzdCA9IGlucHV0PGFueVtdPihbXSk7XG5cdGZvcm0gPSBpbnB1dC5yZXF1aXJlZDxGb3JtT3B0aW9ucz4oe30pO1xuXHRnZXRQcm1JbnB1dCA9IGlucHV0LnJlcXVpcmVkPEdldD4oe30pO1xuXHRzdGF0dXNTdGVwcyA9IGlucHV0PFN0ZXBbXT4oW10pO1xuXHRzdGF0dXNLZXkgPSBpbnB1dCgnc3RhdHVzJyk7XG5cdGhyZWZCdG5MaXN0ID0gaW5wdXQ8SHJlZkJ0bkxpc3RbXT4oW10pO1xuXHRzZXRUaXRsZSA9IGlucHV0PHN0cmluZz4oKTtcblx0YWN0aW9uTGlzdCA9IGlucHV0PFBlcm1pc3Npb25CdG5bXT4oW10pO1xuXHRtb2RlbExvZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblx0Zm9ybURpc2FibGVkID0gaW5wdXQ8RnVuY3Rpb24+KCk7XG5cdHN0YXR1c0NvbmYgPSBpbnB1dDxhbnk+KClcblx0Zm9ybURldGFpbCA9IGlucHV0PGFueT4oKVxuXHRzYXZlRnVuYyA9IGlucHV0PGFueT4oKVxuXHRjb25maWdOZXdQYXRoID0gaW5wdXQ8YW55PigpXG5cblx0dXNlckhpc3RvcnlTZXJ2aWNlID0gaW5qZWN0KFVzZXJIaXN0b3J5U2VydmljZSk7XG5cdGluZGV4VmFsdWUgPSAwO1xuXHR2aXNpYmxlID0gZmFsc2U7XG5cdGRpYWxvZ1NlYXJjaFBybSE6IFNlYXJjaDtcblx0c2VsZWN0T3B0aW9ucyE6IEdyaWRPcHRpb25zO1xuXHRzZWxlY3REYXRhOiBhbnlbXSA9IFtdO1xuXHRwYWdlVXJsID0gJyc7XG5cdG5ld1VybCA9ICcnO1xuXHRpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblx0YXV0aExldmVsID0gaW5wdXQ8bnVtYmVyPigtMSk7XG5cdGhyZWZzOiBhbnlbXSA9IFtdO1xuXHRhY3Rpb24gPSBpbmplY3QoQWN0aW9uU2VydmljZSk7XG5cdHN1YkZvcm1Nb2RlbDphbnkgPSB7fVxuXHRzYXZlQnRuRGlzYWJsZSA9IGZhbHNlXG5cdGdyaWREaXNhYmxlID0gZmFsc2UgXG5cdHNlbGVjdGlvbktleXM6IGFueVtdID0gW107XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5pZCA9IE51bWJlcih0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKSk7XG5cdFx0dGhpcy5wYWdlVXJsID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC51cmxcblx0XHRcdC5tYXAoKHNlZ21lbnQpID0+IHNlZ21lbnQucGF0aClcblx0XHRcdC5qb2luKCcvJylcblx0XHRcdC5yZXBsYWNlKC8oW15cXC9dKikkLywgJycpO1xuXHRcdHRoaXMubmV3VXJsID0gYCR7dGhpcy5wYWdlVXJsfW5ld2A7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHR0aGlzLm1vZGVsTmFtZSA9IHRoaXMuZ2V0UHJtSW5wdXQoKS5tb2RlbE5hbWUhO1xuXHRcdFx0XHR0aGlzLmdldFBybSA9IHsgLi4udGhpcy5nZXRQcm1JbnB1dCgpIH07XG5cdFx0XHRcdHRoaXMuaWQgJiYgKHRoaXMuZ2V0UHJtLmlkID0gdGhpcy5pZCk7XG5cdFx0XHRcdGlmKHRoaXMuaWQpe1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHR5cGVvZiB0aGlzLmZvcm1EZXRhaWwoKSwnZm9ybS0tLS0nKVxuXHRcdFx0XHRcdHR5cGVvZiB0aGlzLmZvcm1EZXRhaWwoKSA9PSAnZnVuY3Rpb24nID8gdGhpcy5mb3JtRGV0YWlsKCkodGhpcy5pZCkgOiB0aGlzLmdldERldGFpbCgpO1xuXHRcdFx0XHR9ZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5nZXRQcm0uZGF0YSA9IHt9XG5cdFx0XHRcdFx0dGhpcy5ncmlkTGlzdCgpLmZvckVhY2godiA9PiB7XG5cdFx0XHRcdFx0XHRpZih2LnR5cGUgPT0gJ2dyaWQnKXtcblx0XHRcdFx0XHRcdFx0dGhpcy5nZXRQcm0uZGF0YVt2LnN1YkRhdGFLZXldID0gW11cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuXHRcdCk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0dGhpcy5mb3JtT3B0aW9ucyA9IHsgLi4udGhpcy5mb3JtKCkgfTtcblx0XHR9KTtcblx0XHRlZmZlY3QoXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdHRoaXMuaXNMb2cgPSB0aGlzLm1vZGVsTG9nKCk7XG5cdFx0XHR9LFxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuXHRcdCk7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy5zdGF0dXNTdGVwcygpLmxlbmd0aCA+IDAgJiYgIXRoaXMuaWQpIHtcblx0XHRcdFx0XHR0aGlzLnVwc2VydFBybS5hZGREYXRhIVt0aGlzLnN0YXR1c0tleSgpXSA9IHRoaXMuc3RhdHVzU3RlcHMoKVswXVsndmFsdWUnXTtcblx0XHRcdFx0XHR0aGlzLmdldFBybS5kYXRhID0gT2JqZWN0LmFzc2lnbih0aGlzLmdldFBybS5kYXRhIHx8IHt9LCB7XG5cdFx0XHRcdFx0XHRbdGhpcy5zdGF0dXNLZXkoKV06IHRoaXMuc3RhdHVzU3RlcHMoKVswXVsndmFsdWUnXSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcblx0XHQpO1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRpZih0aGlzLmF1dGhMZXZlbCgpIDwgMyl7XG5cdFx0XHRcdHRoaXMuc2V0RGlzYWJsZWQoKVxuXHRcdFx0fVxuXHRcdH0se2FsbG93U2lnbmFsV3JpdGVzOnRydWV9KVxuXHR9XG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdHRoaXMudXBDYiA9IHRoaXMudXBDYi5iaW5kKHRoaXMpO1xuXHR9XG5cblx0c3VibWl0Rm9ybSgpOiBhbnkge1xuXHRcdC8vIHRoaXMudGFiRm9ybS52YWxpZGF0ZSgpXG5cdFx0Y29uc29sZS5sb2coJ2dldFBybS0tLS0tLScsdGhpcy5nZXRQcm0pXG5cdFx0bGV0IHN1YkZvcm0gPSB0cnVlXG5cdFx0aWYodGhpcy50YWJGb3JtLmxlbmd0aCA+IDApe1xuXHRcdFx0dGhpcy50YWJGb3JtLmZvckVhY2goaXRlbSA9PiB7XG5cdFx0XHRcdGlmKCFpdGVtLnZhbGlkYXRlKCkpe1xuXHRcdFx0XHRcdHN1YkZvcm0gPSBmYWxzZVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH1cblx0XHRpZiAodGhpcy5jRm9ybS52YWxpZGF0ZSgpICYmIHN1YkZvcm0pIHtcblx0XHRcdGxldCBjYjogYW55ID0gdGhpcy5pZCA9PT0gMCA/IG51bGwgOiB0aGlzLnVwQ2I7XG5cdFx0XHR0aGlzLmFjdGlvbi5sb2FkaW5nLnNldCh0cnVlKVxuXHRcdFx0dHlwZW9mIHRoaXMuc2F2ZUZ1bmMoKSA9PSAnZnVuY3Rpb24nID8gdGhpcy5zYXZlRnVuYygpKHRoaXMudXBzZXJ0UHJtLHRoaXMuaWQsY2IpIDogdGhpcy51cHNlcnQobnVsbCwgY2IpO1xuXHRcdH1cblx0fVxuXG5cdGRlbFJvd3MoZTogYW55KSB7XG5cdFx0Y29uc3QgZ3JpZFRhYiA9IHRoaXMuZ3JpZExpc3QoKVt0aGlzLmluZGV4VmFsdWVdO1xuXHRcdGNvbnN0IGRlbGV0ZUZ1bmMgPSBncmlkVGFiLmRlbGV0ZUZ1bmM7XG5cdFx0Y29uc3Qgc3ViVGFibGUgPSBncmlkVGFiLmdyaWRPcHRpb25zLm1vZGVsTmFtZTtcblxuXHRcdGxldCBwcm0gPSB7XG5cdFx0XHRtb2RlbE5hbWU6IHN1YlRhYmxlLFxuXHRcdFx0aWRzOiBlLFxuXHRcdH07XG5cdFx0aWYgKCFkZWxldGVGdW5jKSB7XG5cdFx0XHR0aGlzLndlYl9yZW1vdmUocHJtKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuXHRcdFx0XHR0aGlzLmdldCgpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRlbGV0ZUZ1bmMoKS5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmdldCgpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cdHVwQ2IocmVzPzogYW55KSB7XG5cdFx0aWYgKHJlcy5pZCA9PSAwKSB7XG5cdFx0XHR0eXBlb2YgdGhpcy5mb3JtRGV0YWlsKCkgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMuZm9ybURldGFpbCgpKHRoaXMuaWQpIDogdGhpcy5nZXREZXRhaWwoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdGxldCBlZGl0VXJsID0gYCR7dGhpcy5wYWdlVXJsfSR7cmVzLmlkfWA7XG5cdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtlZGl0VXJsXSk7XG5cdFx0XHR9LCAxNTAwKTtcblx0XHR9XG5cdFx0dGhpcy5hY3Rpb24uc2F2ZVNpZ25hbC5zZXQoZmFsc2UpO1xuXHRcdHRoaXMuY0Zvcm0uZmluYWxpemUoKTtcblx0fVxuXHQvLyBUT0RPIOaYr+WQpumcgOimgeaVsOaNrui9rOaNouWbnuiwg+WHveaVsFxuXHRvbk9rKGU6IGFueSkge1xuXHRcdGNvbnN0IGdyaWQgPSB0aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXTtcblx0XHR0aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXS5zZWxlY3REYXRhID0gW107XG5cdFx0aWYgKGUubGVuZ3RoID4gMCkge1xuXHRcdFx0bGV0IHVuaXF1ZUtleXMgPSBbXTtcblx0XHRcdGlmIChncmlkLnVuaXF1ZUZpZWxkKSB7XG5cdFx0XHRcdGNvbnN0IHJvd0RhdGEgPSB0aGlzLmN1c3RvbUdyaWQuZ2V0KHRoaXMuaW5kZXhWYWx1ZSkhXG5cdFx0XHRcdFx0LmdldEdyaWQoKVxuXHRcdFx0XHRcdC5hcGkuZ2V0UmVuZGVyZWROb2RlcygpXG5cdFx0XHRcdFx0Lm1hcCgobm9kZSkgPT4gbm9kZS5kYXRhKTtcblx0XHRcdFx0dW5pcXVlS2V5cyA9IHJvd0RhdGEubWFwKChpdGVtOiBhbnkpID0+IGl0ZW1bZ3JpZC51bmlxdWVGaWVsZCFdKTtcblx0XHRcdH1cblx0XHRcdGUuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG5cdFx0XHRcdGxldCBvYmogPSBncmlkLnNlbGVjdERhdGFDYiA/IGdyaWQuc2VsZWN0RGF0YUNiKGl0ZW0pIDogeyAuLi5pdGVtIH07XG5cdFx0XHRcdGlmIChncmlkLnVuaXF1ZUZpZWxkICYmIHVuaXF1ZUtleXMuaW5jbHVkZXMob2JqW2dyaWQudW5pcXVlRmllbGQhXSB8fCAnJykpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Z3JpZC5zZWxlY3REYXRhIS5wdXNoKG9iaik7XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMuYWN0aW9uLnNhdmVTaWduYWwuc2V0KHRydWUpO1xuXHRcdH1cblx0fVxuXHRnZXREZXRhaWwoKSB7XG5cdFx0dGhpcy53ZWJfZ2V0KHRoaXMuZ2V0UHJtKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuXHRcdFx0dGhpcy5kZXRhaWxDYihyZXMpXG5cdFx0fSk7XG5cdH1cblx0Ly8g6I635Y+W6K+m5oOF5Zue6LCDXG5cdGRldGFpbENiKHJlczphbnkpe1xuXHRcdHRoaXMudXBkYXRlVGl0bGUocmVzKTtcblx0XHRpZih0eXBlb2YgdGhpcy5mb3JtRGlzYWJsZWQoKSA9PSAnZnVuY3Rpb24nKXtcblx0XHRcdHRoaXMuZm9ybURpc0Z1bmMoKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuaHJlZkJ0bkxpc3QoKS5sZW5ndGggPiAwKSB7XG5cdFx0XHR0aGlzLnNldEhyZWZWYWx1ZSgpO1xuXHRcdH1cblx0XHR0aGlzLmdyaWRMaXN0KCkuZm9yRWFjaCh2ID0+IHtcblx0XHRcdGlmKHYudHlwZSA9PSAnZm9ybScpe1xuXHRcdFx0XHR0aGlzLnN1YkZvcm1Nb2RlbFt2LnN1YkRhdGFLZXldID0gcmVzW3Yuc3ViRGF0YUtleV1bMF1cblx0XHRcdH1cblx0XHR9KVxuXHR9XG5cdHNldEhyZWZWYWx1ZSgpIHtcblx0XHR0aGlzLmhyZWZCdG5MaXN0KCkubWFwKChpdGVtOiBhbnkpID0+IHtcblx0XHRcdGlmIChpdGVtLmhhc093blByb3BlcnR5KCdzZWFyY2hDb3VudCcpICYmIHR5cGVvZiBpdGVtLnNlYXJjaENvdW50ID09ICdvYmplY3QnKSB7XG5cdFx0XHRcdGl0ZW0uc2VhcmNoQ291bnQuY29sdW1uRmlsdGVycy5mb3JFYWNoKCh2OiBhbnkpID0+IHtcblx0XHRcdFx0XHRpZiAodHlwZW9mIHYuZml0ZXIgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRcdHYuZml0ZXIgPSB2LmZpdGVyKHRoaXMuZ2V0UHJtLmRhdGEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHRcdHRoaXMud2ViX3NlYXJjaENvdW50KGl0ZW0uc2VhcmNoQ291bnQpLnN1YnNjcmliZSgocmVzKSA9PiB7XG5cdFx0XHRcdFx0aXRlbS52YWx1ZSA9IHJlcy50b3RhbE51bSB8fCAwO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHR1cGRhdGVUaXRsZShyZXM6IGFueSkge1xuXHRcdGxldCBtYWluRmllbGQgPSB0aGlzLmZvcm0oKS5tYWluRmllbGQ7XG5cdFx0bGV0IHRpdGxlID0gcmVzW21haW5GaWVsZCFdO1xuXHRcdHRoaXMudXNlckhpc3RvcnlTZXJ2aWNlLnNldExhc3RUaXRsZSh0aXRsZSk7XG5cdH1cblx0ZGF0YVNvdXJjZVNob3coKSB7XG5cdFx0Y29uc3QgZ3JpZCA9IHRoaXMuZ3JpZExpc3QoKVt0aGlzLmluZGV4VmFsdWVdO1xuXHRcdHRoaXMuZGlhbG9nU2VhcmNoUHJtID0ge307XG5cdFx0dGhpcy5zZWxlY3RPcHRpb25zID0gdGhpcy5ncmlkTGlzdCgpW3RoaXMuaW5kZXhWYWx1ZV1bJ3NlbGVjdE9wdGlvbnMnXSE7XG5cdFx0aWYoKHRoaXMuc2VsZWN0T3B0aW9ucyBhcyBhbnkpPy5zZWFyY2hQcm0pe1xuXHRcdFx0XHQodGhpcy5zZWxlY3RPcHRpb25zIGFzIGFueSkuc2VhcmNoUHJtPy5jb2x1bW5GaWx0ZXJzPy5mb3JFYWNoKCh2OmFueSkgPT4ge1xuXHRcdFx0XHRpZih0eXBlb2Ygdi5maXRlciA9PSAnZnVuY3Rpb24nKXtcblx0XHRcdFx0XHR2LmZpdGVyID0gdi5maXRlcihudWxsLHRoaXMuZ2V0UHJtLmRhdGEpXG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHR0aGlzLmRpYWxvZ1NlYXJjaFBybSA9ICh0aGlzLnNlbGVjdE9wdGlvbnMgYXMgYW55KT8uc2VhcmNoUHJtXG5cdFx0fVxuXHRcdGNvbnNvbGUubG9nKCdzZWxldGMtLS0tLScsIHRoaXMuc2VsZWN0T3B0aW9ucyk7XG5cdFx0dGhpcy5kaWFsb2dTZWFyY2hQcm0ubW9kZWxOYW1lID0gdGhpcy5zZWxlY3RPcHRpb25zLm1vZGVsTmFtZTtcblx0XHRpZihncmlkLnVuaXF1ZUZpZWxkKSB7XG5cdFx0XHR0aGlzLnNlbGVjdGlvbktleXMgPSB0aGlzLmdldFBybS5kYXRhPy5bZ3JpZC5zdWJEYXRhS2V5IV0/Lm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW2dyaWQudW5pcXVlRmllbGQhXSkgfHwgW107XG5cdFx0fSBlbHNle1xuXHRcdFx0dGhpcy5zZWxlY3Rpb25LZXlzID0gW107XG5cdFx0fVxuXHRcdHRoaXMudmlzaWJsZSA9IHRydWU7XG5cdH1cblxuXHRnb1J1bihkYXRhOiBhbnkpIHtcblx0XHRpZiAodHlwZW9mIGRhdGEudXJsID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRsZXQgdXJsID0gZGF0YS51cmwodGhpcy5nZXRQcm0uZGF0YSk7XG5cdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsXSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICd3YXJuJywgc3VtbWFyeTogJ1dhcm4nLCBkZXRhaWw6ICfor7fphY3nva7ot7Povazpk77mjqUnIH0pO1xuXHRcdH1cblx0fVxuXG5cdGF1dGhDbGljayhidG46IGFueSkge1xuXHRcdGlmIChidG4uaGFzT3duUHJvcGVydHkoJ29uQ2xpY2snKSkge1xuXHRcdFx0YnRuLm9uQ2xpY2sodGhpcy5nZXRQcm0uZGF0YSk7XG5cdFx0fVxuXHR9XG5cdHN0YXR1c0NoYW5nZSh2YWx1ZTogYW55LCBjdXN0b21TdGVwczogU3RlcHNDb21wb25lbnQpIHtcblx0XHRpZiAodGhpcy5hdXRoTGV2ZWwoKSA8IDQgfHwgIXRoaXMuc3RhdHVzQ29uZigpLmlzQ2xpY2spIHJldHVybjtcblx0XHRpZiAodGhpcy5pZCkge1xuXHRcdFx0bGV0IHBhcmFtOiBhbnkgPSB7XG5cdFx0XHRcdG1vZGVsTmFtZTogdGhpcy5tb2RlbE5hbWUsXG5cdFx0XHRcdGRhdGE6IHsgaWQ6IHRoaXMuaWQsIFt0aGlzLnN0YXR1c0tleSgpXTogdmFsdWUgfSxcblx0XHRcdH07XG5cdFx0XHRpZiAodGhpcy5pc0xvZykge1xuXHRcdFx0XHRwYXJhbS5sb2dNb2RlbCA9IGAke3RoaXMubW9kZWxOYW1lfUxvZ2A7XG5cdFx0XHRcdHBhcmFtLmxvZyA9IHtcblx0XHRcdFx0XHRwaWQ6IHRoaXMuaWQsXG5cdFx0XHRcdFx0Y29udGVudDogYFvnirbmgIFdICR7dGhpcy5nZXRQcm0uZGF0YSFbdGhpcy5zdGF0dXNLZXkoKV19IC0+ICR7dmFsdWV9YCxcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdHRoaXMud2ViX3dyaXRlKHBhcmFtKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuXHRcdFx0XHR0aGlzLmdldERldGFpbCgpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZ2V0UHJtLmRhdGEgPSBPYmplY3QuYXNzaWduKHRoaXMuZ2V0UHJtLmRhdGEgfHwge30sIHtcblx0XHRcdFx0W3RoaXMuc3RhdHVzS2V5KCldOiB2YWx1ZSxcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy51cHNlcnRQcm0uYWRkRGF0YSFbdGhpcy5zdGF0dXNLZXkoKV0gPSB2YWx1ZTtcblx0XHRcdHRoaXMuY0Zvcm0udHJpZ2dlck1vZGVsRWZmZWN0KHsgW3RoaXMuc3RhdHVzS2V5KCldOiB2YWx1ZSB9KTtcblx0XHRcdC8vIGN1c3RvbVN0ZXBzLnJlZnJlc2hTdGVwcygpXG5cdFx0fVxuXHR9XG5cblx0Zm9ybURpc0Z1bmMoKSB7XG5cdFx0bGV0IGRhdGEgPSB0aGlzLmZvcm1EaXNhYmxlZCgpISh0aGlzLmdldFBybS5kYXRhKTtcblx0XHRpZih0eXBlb2YgZGF0YSA9PT0gJ2Jvb2xlYW4nKXtcblx0XHRcdHRoaXMuc2F2ZUJ0bkRpc2FibGUgPSBkYXRhXG5cdFx0XHR0aGlzLmdyaWREaXNhYmxlID0gZGF0YVxuXHRcdFx0dGhpcy5kaXNhYmxlRm9ybShkYXRhKVxuXHRcdFx0dGhpcy5kaXNhYmVsZENoaWxkKGRhdGEpXG5cdFx0fVxuXHRcdGlmKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jyl7XG5cdFx0XHRjb25zdCBkaXNhYmVsZCA9IGRhdGEuZGlzYWJsZWRcblx0XHRcdGNvbnN0IGZpbHRlcnMgPSBkYXRhLmZpbHRlcnMgfHwgW11cblx0XHRcdGlmKCFmaWx0ZXJzLmluY2x1ZGVzKCdmb3JtJykpe1xuXHRcdFx0XHR0aGlzLmRpc2FibGVGb3JtKGRpc2FiZWxkKVxuXHRcdFx0fVxuXHRcdFx0aWYoIWZpbHRlcnMuaW5jbHVkZXMoJ2dyaWQnKSl7XG5cdFx0XHRcdHRoaXMuZ3JpZERpc2FibGUgPSBkaXNhYmVsZFxuXHRcdFx0XHR0aGlzLmRpc2FiZWxkQ2hpbGQoZGlzYWJlbGQpXG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGRpc2FibGVGb3JtKGRpc2FibGU6Ym9vbGVhbil7XG5cdFx0dGhpcy5mb3JtT3B0aW9ucy5maWVsZHM/LmZvckVhY2goKHYpID0+IHtcblx0XHRcdHYuZ3JvdXA/LmZvckVhY2goKGc6IGFueSkgPT4ge1xuXHRcdFx0XHRsZXQgZmllbGREaXNhYmxlZCA9IGdbZm9ybVR5cGVUb1Byb3BzW2cudHlwZV1dLmRpc2FibGVkIHx8IGZhbHNlO1xuXHRcdFx0XHRpZiAoZGlzYWJsZSkge1xuXHRcdFx0XHRcdHRoaXMuY0Zvcm0uZ2V0RmllbGQoZy5rZXkpPy5maWVsZENvbnRyb2whLm1hcmtBc1ByaXN0aW5lKHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG5cdFx0XHRcdFx0dGhpcy5jRm9ybS5nZXRGaWVsZChnLmtleSk/LmZpZWxkQ29udHJvbCEuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0IWZpZWxkRGlzYWJsZWQgJiYgdGhpcy5jRm9ybS5nZXRGaWVsZChnLmtleSk/LmZpZWxkQ29udHJvbCEuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSk7XHRcdFxuXHR9XG5cdGRpc2FiZWxkQ2hpbGQoZGlzYWJlbGQ6Ym9vbGVhbil7XG5cdFx0dGhpcy5ncmlkTGlzdCgpLmZvckVhY2goKHYsaW5kZXg6YW55KSA9PiB7XG5cdFx0XHRpZih2LnR5cGUgPT0gJ2dyaWQnKXtcblx0XHRcdFx0di5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzLmZvckVhY2goKGl0ZW06YW55KSA9PiB7XG5cdFx0XHRcdFx0aWYoZGlzYWJlbGQgJiYgaXRlbS5oYXNPd25Qcm9wZXJ0eSgnZWRpdGFibGUnKSl7XG5cdFx0XHRcdFx0XHRpdGVtLmVkaXRhYmxlID0gZmFsc2Vcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdHRoaXMuY3VzdG9tR3JpZC5nZXQoaW5kZXgpIS5nZXRHcmlkKCkuYXBpLnNldEdyaWRPcHRpb24oXG5cdFx0XHRcdFx0J2NvbHVtbkRlZnMnLCBcblx0XHRcdFx0XHR2LmdyaWRPcHRpb25zLmNvbHVtbkRlZnNcblx0XHRcdFx0KVxuXHRcdFx0fSBlbHNlIGlmKHYudHlwZSA9PSAnZm9ybScpe1xuXHRcdFx0XHR2LmZpZWxkcz8uZm9yRWFjaCgoaXRlbTphbnksKSA9PiB7XG5cdFx0XHRcdFx0aXRlbS5ncm91cD8uZm9yRWFjaCgoZzogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRsZXQgZmllbGREaXNhYmxlZCA9IGdbZm9ybVR5cGVUb1Byb3BzW2cudHlwZV1dLmRpc2FibGVkIHx8IGZhbHNlO1xuXHRcdFx0XHRcdFx0aWYgKGRpc2FiZWxkKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMudGFiRm9ybS5nZXQoaW5kZXgpIS5nZXRGaWVsZChnLmtleSk/LmZpZWxkQ29udHJvbCEubWFya0FzUHJpc3RpbmUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnRhYkZvcm0uZ2V0KGluZGV4KSEuZ2V0RmllbGQoZy5rZXkpPy5maWVsZENvbnRyb2whLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0IWZpZWxkRGlzYWJsZWQgJiYgdGhpcy5jRm9ybS5nZXRGaWVsZChnLmtleSk/LmZpZWxkQ29udHJvbCEuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSlcblx0fVxuXHRzZXREaXNhYmxlZCgpe1xuXHRcdHRoaXMuZ3JpZExpc3QoKS5mb3JFYWNoKCh2LGluZGV4OmFueSkgPT4ge1xuXHRcdFx0aWYodi50eXBlID09ICdmb3JtJyl7XG5cdFx0XHRcdHYuZmllbGRzPy5mb3JFYWNoKChpdGVtOmFueSwpID0+IHtcblx0XHRcdFx0XHRpdGVtLmdyb3VwPy5mb3JFYWNoKChnOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMudGFiRm9ybS5nZXQoaW5kZXgpIS5nZXRGaWVsZChnLmtleSk/LmZpZWxkQ29udHJvbCEuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pXG5cdH1cblx0dGFiQ2xpY2soKXtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMudGFiRm9ybS5nZXQodGhpcy5pbmRleFZhbHVlKSAmJiB0aGlzLnRhYkZvcm0uZ2V0KHRoaXMuaW5kZXhWYWx1ZSkhLnJlQ2FsY0xhYmVsU2l6ZSgpXG5cdFx0fSwwKVxuXHR9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWQ6b3ZlcmZsb3ctaGlkZGVuXCI+XG5cdDxkaXYgY2xhc3M9XCJmbGV4IG1kOmZsZXgtd3JhcCBsZzpmbGV4LW5vd3JhcCBpdGVtcy1jZW50ZXIgbWQ6anVzdGlmeS1iZXR3ZWVuIHB5LTEgcHgtMSBib3JkZXItYi1bMXB4XSBib3JkZXItWyNkYmRiZGJdIGJnLXdoaXRlXCI+XG5cdFx0PGRpdiBjbGFzcz1cIm1kOmJhc2lzLTEvMyBvcmRlci0xXCI+XG5cdFx0XHQ8YXBwLWNydW1iLWFjdGlvblxuXHRcdFx0XHRbYWRkVmlzaWJsZV09XCJhZGRWaXNpYmxlKClcIlxuXHRcdFx0XHRbbmV3VXJsXT1cIm5ld1VybFwiXG5cdFx0XHRcdFtpc1Nob3dDb2ddPVwidHJ1ZVwiXG5cdFx0XHRcdFtvdXRsaW5lZF09XCJ0cnVlXCJcblx0XHRcdFx0W2F1dGhMZXZlbF09XCJhdXRoTGV2ZWwoKVwiXG5cdFx0XHRcdFthY3Rpb25MaXN0XT1cImFjdGlvbkxpc3QoKVwiXG5cdFx0XHRcdFtjb25maWdOZXdQYXRoXT1cImNvbmZpZ05ld1BhdGgoKVwiXG5cdFx0XHRcdFtkYXRhXT1cImdldFBybS5kYXRhID8/IHt9XCJcblx0XHRcdFx0W3NhdmVCdG5EaXNhYmxlXT1cInNhdmVCdG5EaXNhYmxlXCJcblx0XHRcdFx0KGFjdGlvbkV2ZW50KT1cImF1dGhDbGljaygkZXZlbnQpXCJcblx0XHRcdFx0KHNhdmVFdmVudCk9XCJzdWJtaXRGb3JtKClcIj5cblx0XHRcdDwvYXBwLWNydW1iLWFjdGlvbj5cblx0XHQ8L2Rpdj5cblxuXHRcdDxkaXYgY2xhc3M9XCJiYXNpcy0xLzUgbGc6YmFzaXMtMi8zIG9yZGVyLTIgbGc6b3JkZXItMiBtZDpvcmRlci1sYXN0IG1kOmJhc2lzLWZ1bGwgbWQ6bXQtWzZweF1cIj5cblx0XHRcdDxocmVmLWJ0bi1saXN0XG5cdFx0XHRcdFtocmVmc109XCJocmVmQnRuTGlzdCgpXCJcblx0XHRcdFx0KGhyZWZDbGljayk9XCJnb1J1bigkZXZlbnQpXCI+PC9ocmVmLWJ0bi1saXN0PlxuXHRcdFx0PCEtLSBAaWYgKGlkKSB7XG5cdFx0XHRcdEBmb3IgKGJ0biBvZiBocmVmQnRuTGlzdCgpOyB0cmFjayBidG4pIHtcblx0XHRcdFx0XHQ8cC1idXR0b25cblx0XHRcdFx0XHRcdFt2YXJpYW50XT1cImJ0bj8udmFyaWFudFwiXG5cdFx0XHRcdFx0XHRbc2V2ZXJpdHldPVwiYnRuPy5zZXZlcml0eVwiXG5cdFx0XHRcdFx0XHRjbGFzcz1cIm1yLVs2cHhdXCJcblx0XHRcdFx0XHRcdHNpemU9XCJzbWFsbFwiXG5cdFx0XHRcdFx0XHRbaWNvbl09XCJidG4/Lmljb25cIlxuXHRcdFx0XHRcdFx0bGFiZWw9XCJ7eyBidG4uaTE4bktleSA/IGkxOG4uZmFueWkoYnRuLmkxOG5LZXkpIDogYnRuLmxhYmVsIH19XCJcblx0XHRcdFx0XHRcdChjbGljayk9XCJnb1J1bihidG4pXCI+XG5cdFx0XHRcdFx0PC9wLWJ1dHRvbj5cblx0XHRcdFx0fVxuXHRcdFx0fSAtLT5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwiYmFzaXMtMS8zIG9yZGVyLTNcIj48L2Rpdj5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJmbGV4XCI+XG5cdFx0PGRpdiBjbGFzcz1cInB4LTIgZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGZsZXgtMVwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImhpZGRlbiBtZDpiYXNpcy0xLzMgcHktMSBiYXNpcy1mdWxsIG1kOmZsZXggaXRlbXMtY2VudGVyIGZsZXgtcm93IG9yZGVyLTFcIj5cblx0XHRcdFx0QGZvciAoYWN0aW9uIG9mIGFjdGlvbkxpc3QoKTsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIGFjdGlvbikge1xuXHRcdFx0XHRcdDxwLWJ1dHRvblxuXHRcdFx0XHRcdFx0c2l6ZT1cInNtYWxsXCJcblx0XHRcdFx0XHRcdFtpY29uXT1cImdldFBybS5kYXRhPy5pY29uXCJcblx0XHRcdFx0XHRcdFtsYWJlbF09XCJhY3Rpb24uaTE4bktleSA/IChhY3Rpb24uaTE4bktleSB8IHRyYW5zbGF0ZSkgOiBhY3Rpb24ubGFiZWxcIlxuXHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImFjdGlvbi5idG5EaXNhYmxlZCA/IGFjdGlvbi5idG5EaXNhYmxlZChnZXRQcm0uZGF0YSkgOiBmYWxzZVwiXG5cdFx0XHRcdFx0XHRbc3R5bGVDbGFzc109XCJcblx0XHRcdFx0XHRcdFx0KGFjdGlvbi5hdXRoIHx8IDApID4gKGF1dGhMZXZlbCgpIHx8IDApIHx8ICEhYWN0aW9uLmJ0bkhpZGRlbj8uKGdldFBybS5kYXRhKVxuXHRcdFx0XHRcdFx0XHRcdD8gJ2Zvcm0tYWN0aW9uIGhpZGRlbidcblx0XHRcdFx0XHRcdFx0XHQ6ICdmb3JtLWFjdGlvbiBibG9jayBtci1bLjVyZW1dJ1xuXHRcdFx0XHRcdFx0XCJcblx0XHRcdFx0XHRcdChvbkNsaWNrKT1cImFjdGlvbi5vbkNsaWNrICE9ICcnICYmIGFjdGlvbi5vbkNsaWNrPy4oZ2V0UHJtLmRhdGEpXCI+XG5cdFx0XHRcdFx0PC9wLWJ1dHRvbj5cblx0XHRcdFx0fVxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwibWQ6YmFzaXMtMi8zIGJhc2lzLWZ1bGwgZmxleCBtZDpmbGV4LXJvdy1yZXZlcnNlIGZsZXgtcm93IG1kOm9yZGVyLTIgb3JkZXItZmlyc3Qgdy1mdWxsXCI+XG5cdFx0XHRcdDxjdXN0b20tc3RlcHNcblx0XHRcdFx0XHQjY3VzdG9tU3RlcHNcblx0XHRcdFx0XHRjbGFzcz1cInctZnVsbFwiXG5cdFx0XHRcdFx0W3N0ZXBzXT1cInN0YXR1c1N0ZXBzKClcIlxuXHRcdFx0XHRcdFttb2RlbExvZ109XCJtb2RlbExvZygpXCJcblx0XHRcdFx0XHRbY3VycmVudF09XCJnZXRQcm0uZGF0YSAmJiBnZXRQcm0uZGF0YVtzdGF0dXNLZXkoKV0gIT09IHVuZGVmaW5lZCA/IGdldFBybS5kYXRhW3N0YXR1c0tleSgpXSA6IDBcIlxuXHRcdFx0XHRcdFthdXRoTGV2ZWxdPVwiYXV0aExldmVsKClcIlxuXHRcdFx0XHRcdFtpc0NsaWNrXT1cInRoaXMuc3RhdHVzQ29uZigpLmlzQ2xpY2tcIlxuXHRcdFx0XHRcdChjaGFuZ2UpPVwic3RhdHVzQ2hhbmdlKCRldmVudCwgY3VzdG9tU3RlcHMpXCI+XG5cdFx0XHRcdDwvY3VzdG9tLXN0ZXBzPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdFx0QGlmIChtb2RlbExvZygpKSB7XG5cdFx0XHQ8ZGl2IGNsYXNzPVwibWQ6dy1bNDAwcHhdXCI+PC9kaXY+XG5cdFx0fVxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cIm1haW4gZmxleCBmbGV4LXdyYXAgbWQ6b3ZlcmZsb3cteS1oaWRkZW5cIj5cblx0XHQ8ZGl2IGNsYXNzPVwidy1mdWxsIG1kOmZsZXgtMSBtZDpoLWZ1bGwgb3ZlcmZsb3cteS1hdXRvXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiYmctd2hpdGUgbXgtMiBmb3JtLXBhbmVsXCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJwLTIgZmxleC0xXCI+XG5cdFx0XHRcdFx0PGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtKCkuZm9ybSFcIj5cblx0XHRcdFx0XHRcdDxjdXN0b20tZm9ybVxuXHRcdFx0XHRcdFx0XHQjY0Zvcm1cblx0XHRcdFx0XHRcdFx0W29wdGlvbnNdPVwiZm9ybU9wdGlvbnNcIlxuXHRcdFx0XHRcdFx0XHRbdXBzZXJ0XT1cInVwc2VydFBybVwiXG5cdFx0XHRcdFx0XHRcdFttb2RlbF09XCJnZXRQcm0uZGF0YSA/PyB7fVwiPjwvY3VzdG9tLWZvcm0+XG5cdFx0XHRcdFx0PC9mb3JtPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0QGlmIChncmlkTGlzdCgpICYmIGdyaWRMaXN0KCkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBtYi0yXCI+XG5cdFx0XHRcdFx0XHQ8cC10YWJzIFsodmFsdWUpXT1cImluZGV4VmFsdWVcIj5cblx0XHRcdFx0XHRcdFx0PHAtdGFibGlzdD5cblx0XHRcdFx0XHRcdFx0XHRAZm9yIChmY2hpbGQgb2YgZ3JpZExpc3QoKTsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIGZjaGlsZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0PHAtdGFiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFt2YWx1ZV09XCJpXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cInRhYkNsaWNrKClcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0e3sgZmNoaWxkLmkxOG5LZXkgPyBpMThuLmZhbnlpKGZjaGlsZC5pMThuS2V5KSA6IGZjaGlsZC50aXRsZSB9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PC9wLXRhYj5cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDwvcC10YWJsaXN0PlxuXHRcdFx0XHRcdFx0PC9wLXRhYnM+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdH1cblx0XHRcdFx0QGZvciAoZ3JpZCBvZiBncmlkTGlzdCgpOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgZ3JpZCkge1xuXHRcdFx0XHRcdEBpZiAoZ3JpZC50eXBlID09ICdncmlkJykge1xuXHRcdFx0XHRcdFx0PGN1c3RvbS1ncmlkXG5cdFx0XHRcdFx0XHRcdCNjdXN0b21HcmlkXG5cdFx0XHRcdFx0XHRcdFtoaWRkZW5dPVwiaW5kZXhWYWx1ZSAhPSBpXCJcblx0XHRcdFx0XHRcdFx0W3Jvd0RhdGFdPVwiZ2V0UHJtLmRhdGE/LltncmlkLnN1YkRhdGFLZXkhXVwiXG5cdFx0XHRcdFx0XHRcdFt1cHNlcnRdPVwidXBzZXJ0UHJtXCJcblx0XHRcdFx0XHRcdFx0KGRlbGV0ZUVtaXQpPVwiZGVsUm93cygkZXZlbnQpXCJcblx0XHRcdFx0XHRcdFx0W2FkZFR5cGVdPVwiZ3JpZC5zdWJUYWJsZVNvdXJjZVwiXG5cdFx0XHRcdFx0XHRcdChhZGRFbWl0KT1cImRhdGFTb3VyY2VTaG93KClcIlxuXHRcdFx0XHRcdFx0XHRbZ3JpZE9wdGlvbnNdPVwiZ3JpZC5ncmlkT3B0aW9uc1wiXG5cdFx0XHRcdFx0XHRcdFtncmlkRGlzYWJsZV09XCJncmlkRGlzYWJsZVwiXG5cdFx0XHRcdFx0XHRcdFthdXRoTGV2ZWxdPVwiYXV0aExldmVsKClcIlxuXHRcdFx0XHRcdFx0XHRbc2hvd0RlbGV0ZV09XCJncmlkLnNob3dEZWxldGVcIlxuXHRcdFx0XHRcdFx0XHRbc2VsZWN0RGF0YV09XCJncmlkLnNlbGVjdERhdGFcIj5cblx0XHRcdFx0XHRcdDwvY3VzdG9tLWdyaWQ+XG5cdFx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0XHQ8IS0tIEBpZihpbmRleFZhbHVlID09IGkpe1xuXHRcdFx0XHRcdFx0XHQ8Zm9ybSBbZm9ybUdyb3VwXT1cImdyaWQuZm9ybSFcIj5cblx0XHRcdFx0XHRcdFx0XHQ8Y3VzdG9tLWZvcm1cblx0XHRcdFx0XHRcdFx0XHRbb3B0aW9uc109XCJncmlkXCJcblx0XHRcdFx0XHRcdFx0XHRbdXBzZXJ0XT1cInVwc2VydFBybVwiXG5cdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHQ8L2N1c3RvbS1mb3JtPlxuXHRcdFx0XHRcdFx0XHQ8L2Zvcm0+XG5cdFx0XHRcdFx0XHR9IC0tPlxuXHRcdFx0XHRcdFx0PGN1c3RvbS1mb3JtXG5cdFx0XHRcdFx0XHRcdCN0YWJGb3JtXG5cdFx0XHRcdFx0XHRcdFtoaWRkZW5dPVwiaW5kZXhWYWx1ZSAhPSBpXCJcblx0XHRcdFx0XHRcdFx0W29wdGlvbnNdPVwiZ3JpZFwiXG5cdFx0XHRcdFx0XHRcdFt1cHNlcnRdPVwidXBzZXJ0UHJtXCJcblx0XHRcdFx0XHRcdFx0W21vZGVsXT1cInN1YkZvcm1Nb2RlbFtncmlkLnN1YkRhdGFLZXkhXSB8fCB7fVwiPlxuXHRcdFx0XHRcdFx0PC9jdXN0b20tZm9ybT5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRcdEBpZiAobW9kZWxMb2coKSkge1xuXHRcdFx0PGRpdiBjbGFzcz1cInctZnVsbCBtZDp3LVs0MDBweF0gbWQ6aC1mdWxsIG92ZXJmbG93LXktYXV0b1wiPlxuXHRcdFx0XHQ8Y3VzdG9tLWxvZyBbbG9nc109XCJnZXRQcm0uZGF0YT8ubG9nID8/IFtdXCI+PC9jdXN0b20tbG9nPlxuXHRcdFx0PC9kaXY+XG5cdFx0fVxuXHQ8L2Rpdj5cbjwvZGl2PlxuPHJvdy1zZWxlY3RvclxuXHRbKHZpc2libGUpXT1cInZpc2libGVcIlxuXHRbc2VhcmNoUHJtXT1cImRpYWxvZ1NlYXJjaFBybVwiXG5cdFtncmlkT3B0aW9uc109XCJzZWxlY3RPcHRpb25zXCJcblx0W3NlbGVjdGlvbktleXNdPVwic2VsZWN0aW9uS2V5c1wiXG5cdChvbk9rKT1cIm9uT2soJGV2ZW50KVwiPlxuPC9yb3ctc2VsZWN0b3I+XG4iXX0=
|
|
379
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvcGFnZS1mb3JtL3BhZ2UtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3BhZ2UtZm9ybS9wYWdlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQTJCLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0SSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFlLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFRLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBZSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBTyxNQUFNLG9CQUFvQixDQUFDO0FBR3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFF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SixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUE7SUFDSCxDQUFDO0lBQ0QsUUFBUTtRQUNQLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBRSxDQUFDLGVBQWUsRUFBRSxDQUFBO1FBQzFGLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUM7K0dBdlZXLGlCQUFpQjttR0FBakIsaUJBQWlCLDhwRUFGbEIsRUFBRSx1U0N0Q2QsbW9MQXVKQSx1ZkQvSEUsWUFBWSxpYkFDWixtQkFBbUIscWJBQ25CLGFBQWEsZ0dBQ2IsWUFBWSwrRUFDWixvQkFBb0IsbVJBQ3BCLGNBQWMscUtBQ2QsYUFBYSwrUEFDYixVQUFVLDRYQUNWLG9CQUFvQixtS0FDcEIsYUFBYSxrREFDYixvQkFBb0I7OzRGQU1ULGlCQUFpQjtrQkFwQjdCLFNBQVM7K0JBQ0MsZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDUixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLFVBQVU7d0JBQ1Ysb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLG9CQUFvQjtxQkFDcEIsYUFHVSxFQUFFO3dEQUdPLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDVSxVQUFVO3NCQUFyQyxZQUFZO3VCQUFDLFlBQVk7Z0JBQ0QsT0FBTztzQkFBL0IsWUFBWTt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckhpc3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS91c2VySGlzdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQsIFZpZXdDaGlsZCwgaW5wdXQsIGVmZmVjdCwgY29tcHV0ZWQsIElucHV0LCBzaWduYWwsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCwgRm9ybU9wdGlvbnMgfSBmcm9tICcuLi9mb3JtL2Zvcm0vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUm93U2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi9yb3ctc2VsZWN0b3Ivcm93LXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2dDb21wb25lbnQgfSBmcm9tICcuLi9sb2cvbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBDcnVtYkFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2NydW1iLWFjdGlvbi9jcnVtYi1hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFN0ZXBzQ29tcG9uZW50LCBTdGVwIH0gZnJvbSAnLi4vc3RlcHMvc3RlcHMuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRDb21wb25lbnQsIEdyaWRPcHRpb25zIH0gZnJvbSAnLi4vZ3JpZC9ncmlkL2dyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYnNNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYnMnO1xuaW1wb3J0IHsgQW1Db21wb25lbnQsIEdldCB9IGZyb20gJy4uL2FtL2FtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2ggfSBmcm9tICcuLi9hbS9hbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSHJlZkJ0bkxpc3QsIEdyaWRMaXN0IH0gZnJvbSAnLi9wYWdlLWZvcm0uaW50ZXJmYWNlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVybWlzc2lvbkJ0biB9IGZyb20gJy4vcGFnZS1mb3JtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBmb3JtVHlwZVRvUHJvcHMgfSBmcm9tICcuL3BhZ2UtZm9ybS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSHJlZkJ0bkxpc3RDb21wb25lbnQgfSBmcm9tICcuLi9ocmVmLWJ0bi1saXN0L2hyZWYtYnRuLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IEFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2FjdGlvbi5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2FwcC1wYWdlLWZvcm0nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbXG5cdFx0QnV0dG9uTW9kdWxlLFxuXHRcdFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cdFx0Rm9ybUNvbXBvbmVudCxcblx0XHRMb2dDb21wb25lbnQsXG5cdFx0Q3J1bWJBY3Rpb25Db21wb25lbnQsXG5cdFx0U3RlcHNDb21wb25lbnQsXG5cdFx0R3JpZENvbXBvbmVudCxcblx0XHRUYWJzTW9kdWxlLFxuXHRcdFJvd1NlbGVjdG9yQ29tcG9uZW50LFxuXHRcdFRyYW5zbGF0ZVBpcGUsXG5cdFx0SHJlZkJ0bkxpc3RDb21wb25lbnQsXG5cdF0sXG5cdHRlbXBsYXRlVXJsOiAnLi9wYWdlLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybDogJy4vcGFnZS1mb3JtLmNvbXBvbmVudC5zY3NzJyxcblx0cHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUZvcm1Db21wb25lbnQgZXh0ZW5kcyBBbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cdEBWaWV3Q2hpbGQoJ2NGb3JtJykgY0Zvcm0hOiBGb3JtQ29tcG9uZW50O1xuXHRAVmlld0NoaWxkcmVuKCdjdXN0b21HcmlkJykgY3VzdG9tR3JpZCE6IFF1ZXJ5TGlzdDxHcmlkQ29tcG9uZW50Pjtcblx0QFZpZXdDaGlsZHJlbigndGFiRm9ybScpIHRhYkZvcm0hOiBRdWVyeUxpc3Q8Rm9ybUNvbXBvbmVudD47XG5cdGFkZFZpc2libGUgPSBpbnB1dDxib29sZWFuPigpO1xuXHRncmlkTGlzdCA9IGlucHV0PGFueVtdPihbXSk7XG5cdGZvcm0gPSBpbnB1dC5yZXF1aXJlZDxGb3JtT3B0aW9ucz4oe30pO1xuXHRnZXRQcm1JbnB1dCA9IGlucHV0LnJlcXVpcmVkPEdldD4oe30pO1xuXHRzdGF0dXNTdGVwcyA9IGlucHV0PFN0ZXBbXT4oW10pO1xuXHRzdGF0dXNLZXkgPSBpbnB1dCgnc3RhdHVzJyk7XG5cdGhyZWZCdG5MaXN0ID0gaW5wdXQ8SHJlZkJ0bkxpc3RbXT4oW10pO1xuXHRzZXRUaXRsZSA9IGlucHV0PHN0cmluZz4oKTtcblx0YWN0aW9uTGlzdCA9IGlucHV0PFBlcm1pc3Npb25CdG5bXT4oW10pO1xuXHRtb2RlbExvZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblx0Zm9ybURpc2FibGVkID0gaW5wdXQ8RnVuY3Rpb24+KCk7XG5cdHN0YXR1c0NvbmYgPSBpbnB1dDxhbnk+KClcblx0Zm9ybURldGFpbCA9IGlucHV0PGFueT4oKVxuXHRzYXZlRnVuYyA9IGlucHV0PGFueT4oKVxuXHRjb25maWdOZXdQYXRoID0gaW5wdXQ8YW55PigpXG5cblx0dXNlckhpc3RvcnlTZXJ2aWNlID0gaW5qZWN0KFVzZXJIaXN0b3J5U2VydmljZSk7XG5cdGluZGV4VmFsdWUgPSAwO1xuXHR2aXNpYmxlID0gZmFsc2U7XG5cdGRpYWxvZ1NlYXJjaFBybSE6IFNlYXJjaDtcblx0c2VsZWN0T3B0aW9ucyE6IEdyaWRPcHRpb25zO1xuXHRzZWxlY3REYXRhOiBhbnlbXSA9IFtdO1xuXHRwYWdlVXJsID0gJyc7XG5cdG5ld1VybCA9ICcnO1xuXHRpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblx0YXV0aExldmVsID0gaW5wdXQ8bnVtYmVyPigtMSk7XG5cdGhyZWZzOiBhbnlbXSA9IFtdO1xuXHRhY3Rpb24gPSBpbmplY3QoQWN0aW9uU2VydmljZSk7XG5cdHN1YkZvcm1Nb2RlbDphbnkgPSB7fVxuXHRzYXZlQnRuRGlzYWJsZSA9IGZhbHNlXG5cdGdyaWREaXNhYmxlID0gZmFsc2UgXG5cdHNlbGVjdGlvbktleXM6IGFueVtdID0gW107XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5pZCA9IE51bWJlcih0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKSk7XG5cdFx0dGhpcy5wYWdlVXJsID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC51cmxcblx0XHRcdC5tYXAoKHNlZ21lbnQpID0+IHNlZ21lbnQucGF0aClcblx0XHRcdC5qb2luKCcvJylcblx0XHRcdC5yZXBsYWNlKC8oW15cXC9dKikkLywgJycpO1xuXHRcdHRoaXMubmV3VXJsID0gYCR7dGhpcy5wYWdlVXJsfW5ld2A7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHR0aGlzLm1vZGVsTmFtZSA9IHRoaXMuZ2V0UHJtSW5wdXQoKS5tb2RlbE5hbWUhO1xuXHRcdFx0XHR0aGlzLmdldFBybSA9IHsgLi4udGhpcy5nZXRQcm1JbnB1dCgpIH07XG5cdFx0XHRcdHRoaXMuaWQgJiYgKHRoaXMuZ2V0UHJtLmlkID0gdGhpcy5pZCk7XG5cdFx0XHRcdGlmKHRoaXMuaWQpe1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHR5cGVvZiB0aGlzLmZvcm1EZXRhaWwoKSwnZm9ybS0tLS0nKVxuXHRcdFx0XHRcdHR5cGVvZiB0aGlzLmZvcm1EZXRhaWwoKSA9PSAnZnVuY3Rpb24nID8gdGhpcy5mb3JtRGV0YWlsKCkodGhpcy5pZCkgOiB0aGlzLmdldERldGFpbCgpO1xuXHRcdFx0XHR9ZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5nZXRQcm0uZGF0YSA9IHt9XG5cdFx0XHRcdFx0dGhpcy5ncmlkTGlzdCgpLmZvckVhY2godiA9PiB7XG5cdFx0XHRcdFx0XHRpZih2LnR5cGUgPT0gJ2dyaWQnKXtcblx0XHRcdFx0XHRcdFx0dGhpcy5nZXRQcm0uZGF0YVt2LnN1YkRhdGFLZXldID0gW11cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuXHRcdCk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0dGhpcy5mb3JtT3B0aW9ucyA9IHsgLi4udGhpcy5mb3JtKCkgfTtcblx0XHR9KTtcblx0XHRlZmZlY3QoXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdHRoaXMuaXNMb2cgPSB0aGlzLm1vZGVsTG9nKCk7XG5cdFx0XHR9LFxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuXHRcdCk7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy5zdGF0dXNTdGVwcygpLmxlbmd0aCA+IDAgJiYgIXRoaXMuaWQpIHtcblx0XHRcdFx0XHR0aGlzLnVwc2VydFBybS5hZGREYXRhIVt0aGlzLnN0YXR1c0tleSgpXSA9IHRoaXMuc3RhdHVzU3RlcHMoKVswXVsndmFsdWUnXTtcblx0XHRcdFx0XHR0aGlzLmdldFBybS5kYXRhID0gT2JqZWN0LmFzc2lnbih0aGlzLmdldFBybS5kYXRhIHx8IHt9LCB7XG5cdFx0XHRcdFx0XHRbdGhpcy5zdGF0dXNLZXkoKV06IHRoaXMuc3RhdHVzU3RlcHMoKVswXVsndmFsdWUnXSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcblx0XHQpO1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRpZih0aGlzLmF1dGhMZXZlbCgpIDwgMyl7XG5cdFx0XHRcdHRoaXMuc2V0RGlzYWJsZWQoKVxuXHRcdFx0fVxuXHRcdH0se2FsbG93U2lnbmFsV3JpdGVzOnRydWV9KVxuXHR9XG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdHRoaXMudXBDYiA9IHRoaXMudXBDYi5iaW5kKHRoaXMpO1xuXHR9XG5cblx0c3VibWl0Rm9ybSgpOiBhbnkge1xuXHRcdC8vIHRoaXMudGFiRm9ybS52YWxpZGF0ZSgpXG5cdFx0Y29uc29sZS5sb2coJ2dldFBybS0tLS0tLScsdGhpcy5nZXRQcm0pXG5cdFx0bGV0IHN1YkZvcm0gPSB0cnVlXG5cdFx0aWYodGhpcy50YWJGb3JtLmxlbmd0aCA+IDApe1xuXHRcdFx0dGhpcy50YWJGb3JtLmZvckVhY2goaXRlbSA9PiB7XG5cdFx0XHRcdGlmKCFpdGVtLnZhbGlkYXRlKCkpe1xuXHRcdFx0XHRcdHN1YkZvcm0gPSBmYWxzZVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH1cblx0XHRpZiAodGhpcy5jRm9ybS52YWxpZGF0ZSgpICYmIHN1YkZvcm0pIHtcblx0XHRcdGxldCBjYjogYW55ID0gdGhpcy5pZCA9PT0gMCA/IG51bGwgOiB0aGlzLnVwQ2I7XG5cdFx0XHR0aGlzLmFjdGlvbi5sb2FkaW5nLnNldCh0cnVlKVxuXHRcdFx0dHlwZW9mIHRoaXMuc2F2ZUZ1bmMoKSA9PSAnZnVuY3Rpb24nID8gdGhpcy5zYXZlRnVuYygpKHRoaXMudXBzZXJ0UHJtLHRoaXMuaWQsY2IpIDogdGhpcy51cHNlcnQobnVsbCwgY2IpO1xuXHRcdH1cblx0fVxuXG5cdGRlbFJvd3MoZTogYW55KSB7XG5cdFx0Y29uc3QgZ3JpZFRhYiA9IHRoaXMuZ3JpZExpc3QoKVt0aGlzLmluZGV4VmFsdWVdO1xuXHRcdGNvbnN0IGRlbGV0ZUZ1bmMgPSBncmlkVGFiLmRlbGV0ZUZ1bmM7XG5cdFx0Y29uc3Qgc3ViVGFibGUgPSBncmlkVGFiLmdyaWRPcHRpb25zLm1vZGVsTmFtZTtcblxuXHRcdGxldCBwcm0gPSB7XG5cdFx0XHRtb2RlbE5hbWU6IHN1YlRhYmxlLFxuXHRcdFx0aWRzOiBlLFxuXHRcdH07XG5cdFx0aWYgKCFkZWxldGVGdW5jKSB7XG5cdFx0XHR0aGlzLndlYl9yZW1vdmUocHJtKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuXHRcdFx0XHR0aGlzLmdldCgpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRlbGV0ZUZ1bmMoKS5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmdldCgpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cdHVwQ2IocmVzPzogYW55KSB7XG5cdFx0aWYgKHJlcy5pZCA9PSAwKSB7XG5cdFx0XHR0eXBlb2YgdGhpcy5mb3JtRGV0YWlsKCkgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMuZm9ybURldGFpbCgpKHRoaXMuaWQpIDogdGhpcy5nZXREZXRhaWwoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdGxldCBlZGl0VXJsID0gYCR7dGhpcy5wYWdlVXJsfSR7cmVzLmlkfWA7XG5cdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtlZGl0VXJsXSk7XG5cdFx0XHR9LCAxNTAwKTtcblx0XHR9XG5cdFx0dGhpcy5hY3Rpb24uc2F2ZVNpZ25hbC5zZXQoZmFsc2UpO1xuXHRcdHRoaXMuY0Zvcm0uZmluYWxpemUoKTtcblx0fVxuXHQvLyBUT0RPIOaYr+WQpumcgOimgeaVsOaNrui9rOaNouWbnuiwg+WHveaVsFxuXHRvbk9rKGU6IGFueSkge1xuXHRcdGNvbnN0IGdyaWQgPSB0aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXTtcblx0XHR0aGlzLmdyaWRMaXN0KClbdGhpcy5pbmRleFZhbHVlXS5zZWxlY3REYXRhID0gW107XG5cdFx0aWYgKGUubGVuZ3RoID4gMCkge1xuXHRcdFx0bGV0IHVuaXF1ZUtleXMgPSBbXTtcblx0XHRcdGlmIChncmlkLnVuaXF1ZUZpZWxkKSB7XG5cdFx0XHRcdGNvbnN0IHJvd0RhdGEgPSB0aGlzLmN1c3RvbUdyaWQuZ2V0KHRoaXMuaW5kZXhWYWx1ZSkhXG5cdFx0XHRcdFx0LmdldEdyaWQoKVxuXHRcdFx0XHRcdC5hcGkuZ2V0UmVuZGVyZWROb2RlcygpXG5cdFx0XHRcdFx0Lm1hcCgobm9kZSkgPT4gbm9kZS5kYXRhKTtcblx0XHRcdFx0dW5pcXVlS2V5cyA9IHJvd0RhdGEubWFwKChpdGVtOiBhbnkpID0+IGl0ZW1bZ3JpZC51bmlxdWVGaWVsZCFdKTtcblx0XHRcdH1cblx0XHRcdGUuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG5cdFx0XHRcdGxldCBvYmogPSBncmlkLnNlbGVjdERhdGFDYiA/IGdyaWQuc2VsZWN0RGF0YUNiKGl0ZW0pIDogeyAuLi5pdGVtIH07XG5cdFx0XHRcdGlmIChncmlkLnVuaXF1ZUZpZWxkICYmIHVuaXF1ZUtleXMuaW5jbHVkZXMob2JqW2dyaWQudW5pcXVlRmllbGQhXSB8fCAnJykpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Z3JpZC5zZWxlY3REYXRhIS5wdXNoKG9iaik7XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMuYWN0aW9uLnNhdmVTaWduYWwuc2V0KHRydWUpO1xuXHRcdH1cblx0fVxuXHRnZXREZXRhaWwoKSB7XG5cdFx0dGhpcy53ZWJfZ2V0KHRoaXMuZ2V0UHJtKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuXHRcdFx0dGhpcy5kZXRhaWxDYihyZXMpXG5cdFx0fSk7XG5cdH1cblx0Ly8g6I635Y+W6K+m5oOF5Zue6LCDXG5cdGRldGFpbENiKHJlczphbnkpe1xuXHRcdHRoaXMudXBkYXRlVGl0bGUocmVzKTtcblx0XHRpZih0eXBlb2YgdGhpcy5mb3JtRGlzYWJsZWQoKSA9PSAnZnVuY3Rpb24nKXtcblx0XHRcdHRoaXMuZm9ybURpc0Z1bmMoKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuaHJlZkJ0bkxpc3QoKS5sZW5ndGggPiAwKSB7XG5cdFx0XHR0aGlzLnNldEhyZWZWYWx1ZSgpO1xuXHRcdH1cblx0XHR0aGlzLmdyaWRMaXN0KCkuZm9yRWFjaCh2ID0+IHtcblx0XHRcdGlmKHYudHlwZSA9PSAnZm9ybScpe1xuXHRcdFx0XHR0aGlzLnN1YkZvcm1Nb2RlbFt2LnN1YkRhdGFLZXldID0gcmVzW3Yuc3ViRGF0YUtleV1bMF1cblx0XHRcdH1cblx0XHR9KVxuXHR9XG5cdHNldEhyZWZWYWx1ZSgpIHtcblx0XHR0aGlzLmhyZWZCdG5MaXN0KCkubWFwKChpdGVtOiBhbnkpID0+IHtcblx0XHRcdGlmIChpdGVtLmhhc093blByb3BlcnR5KCdzZWFyY2hDb3VudCcpICYmIHR5cGVvZiBpdGVtLnNlYXJjaENvdW50ID09ICdvYmplY3QnKSB7XG5cdFx0XHRcdGl0ZW0uc2VhcmNoQ291bnQuY29sdW1uRmlsdGVycy5mb3JFYWNoKCh2OiBhbnkpID0+IHtcblx0XHRcdFx0XHRpZiAodHlwZW9mIHYuZml0ZXIgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRcdHYuZml0ZXIgPSB2LmZpdGVyKHRoaXMuZ2V0UHJtLmRhdGEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHRcdHRoaXMud2ViX3NlYXJjaENvdW50KGl0ZW0uc2VhcmNoQ291bnQpLnN1YnNjcmliZSgocmVzKSA9PiB7XG5cdFx0XHRcdFx0aXRlbS52YWx1ZSA9IHJlcy50b3RhbE51bSB8fCAwO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHR1cGRhdGVUaXRsZShyZXM6IGFueSkge1xuXHRcdGxldCBtYWluRmllbGQgPSB0aGlzLmZvcm0oKS5tYWluRmllbGQ7XG5cdFx0bGV0IHRpdGxlID0gcmVzW21haW5GaWVsZCFdO1xuXHRcdHRoaXMudXNlckhpc3RvcnlTZXJ2aWNlLnNldExhc3RUaXRsZSh0aXRsZSk7XG5cdH1cblx0ZGF0YVNvdXJjZVNob3coKSB7XG5cdFx0Y29uc3QgZ3JpZCA9IHRoaXMuZ3JpZExpc3QoKVt0aGlzLmluZGV4VmFsdWVdO1xuXHRcdHRoaXMuZGlhbG9nU2VhcmNoUHJtID0ge307XG5cdFx0dGhpcy5zZWxlY3RPcHRpb25zID0gdGhpcy5ncmlkTGlzdCgpW3RoaXMuaW5kZXhWYWx1ZV1bJ3NlbGVjdE9wdGlvbnMnXSE7XG5cdFx0aWYoKHRoaXMuc2VsZWN0T3B0aW9ucyBhcyBhbnkpPy5zZWFyY2hQcm0pe1xuXHRcdFx0XHQodGhpcy5zZWxlY3RPcHRpb25zIGFzIGFueSkuc2VhcmNoUHJtPy5jb2x1bW5GaWx0ZXJzPy5mb3JFYWNoKCh2OmFueSkgPT4ge1xuXHRcdFx0XHRpZih0eXBlb2Ygdi5maXRlciA9PSAnZnVuY3Rpb24nKXtcblx0XHRcdFx0XHR2LmZpdGVyID0gdi5maXRlcihudWxsLHRoaXMuZ2V0UHJtLmRhdGEpXG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHR0aGlzLmRpYWxvZ1NlYXJjaFBybSA9ICh0aGlzLnNlbGVjdE9wdGlvbnMgYXMgYW55KT8uc2VhcmNoUHJtXG5cdFx0fVxuXHRcdGNvbnNvbGUubG9nKCdzZWxldGMtLS0tLScsIHRoaXMuc2VsZWN0T3B0aW9ucyk7XG5cdFx0dGhpcy5kaWFsb2dTZWFyY2hQcm0ubW9kZWxOYW1lID0gdGhpcy5zZWxlY3RPcHRpb25zLm1vZGVsTmFtZTtcblx0XHRpZihncmlkLnVuaXF1ZUZpZWxkKSB7XG5cdFx0XHR0aGlzLnNlbGVjdGlvbktleXMgPSB0aGlzLmdldFBybS5kYXRhPy5bZ3JpZC5zdWJEYXRhS2V5IV0/Lm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW2dyaWQudW5pcXVlRmllbGQhXSkgfHwgW107XG5cdFx0fSBlbHNle1xuXHRcdFx0dGhpcy5zZWxlY3Rpb25LZXlzID0gW107XG5cdFx0fVxuXHRcdHRoaXMudmlzaWJsZSA9IHRydWU7XG5cdH1cblxuXHRnb1J1bihkYXRhOiBhbnkpIHtcblx0XHRpZiAodHlwZW9mIGRhdGEudXJsID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRsZXQgdXJsID0gZGF0YS51cmwodGhpcy5nZXRQcm0uZGF0YSk7XG5cdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsXSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICd3YXJuJywgc3VtbWFyeTogJ1dhcm4nLCBkZXRhaWw6ICfor7fphY3nva7ot7Povazpk77mjqUnIH0pO1xuXHRcdH1cblx0fVxuXG5cdGF1dGhDbGljayhidG46IGFueSkge1xuXHRcdGlmIChidG4uaGFzT3duUHJvcGVydHkoJ29uQ2xpY2snKSkge1xuXHRcdFx0YnRuLm9uQ2xpY2sodGhpcy5nZXRQcm0uZGF0YSk7XG5cdFx0fVxuXHR9XG5cdHN0YXR1c0NoYW5nZSh2YWx1ZTogYW55LCBjdXN0b21TdGVwczogU3RlcHNDb21wb25lbnQpIHtcblx0XHRpZiAodGhpcy5hdXRoTGV2ZWwoKSA8IDQgfHwgIXRoaXMuc3RhdHVzQ29uZigpLmlzQ2xpY2spIHJldHVybjtcblx0XHRpZiAodGhpcy5pZCkge1xuXHRcdFx0bGV0IHBhcmFtOiBhbnkgPSB7XG5cdFx0XHRcdG1vZGVsTmFtZTogdGhpcy5tb2RlbE5hbWUsXG5cdFx0XHRcdGRhdGE6IHsgaWQ6IHRoaXMuaWQsIFt0aGlzLnN0YXR1c0tleSgpXTogdmFsdWUgfSxcblx0XHRcdH07XG5cdFx0XHRpZiAodGhpcy5pc0xvZykge1xuXHRcdFx0XHRwYXJhbS5sb2dNb2RlbCA9IGAke3RoaXMubW9kZWxOYW1lfUxvZ2A7XG5cdFx0XHRcdHBhcmFtLmxvZyA9IHtcblx0XHRcdFx0XHRwaWQ6IHRoaXMuaWQsXG5cdFx0XHRcdFx0Y29udGVudDogYFvnirbmgIFdICR7dGhpcy5nZXRQcm0uZGF0YSFbdGhpcy5zdGF0dXNLZXkoKV19IC0+ICR7dmFsdWV9YCxcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdHRoaXMud2ViX3dyaXRlKHBhcmFtKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuXHRcdFx0XHR0aGlzLmdldERldGFpbCgpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZ2V0UHJtLmRhdGEgPSBPYmplY3QuYXNzaWduKHRoaXMuZ2V0UHJtLmRhdGEgfHwge30sIHtcblx0XHRcdFx0W3RoaXMuc3RhdHVzS2V5KCldOiB2YWx1ZSxcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy51cHNlcnRQcm0uYWRkRGF0YSFbdGhpcy5zdGF0dXNLZXkoKV0gPSB2YWx1ZTtcblx0XHRcdHRoaXMuY0Zvcm0udHJpZ2dlck1vZGVsRWZmZWN0KHsgW3RoaXMuc3RhdHVzS2V5KCldOiB2YWx1ZSB9KTtcblx0XHRcdC8vIGN1c3RvbVN0ZXBzLnJlZnJlc2hTdGVwcygpXG5cdFx0fVxuXHR9XG5cblx0Zm9ybURpc0Z1bmMoKSB7XG5cdFx0bGV0IGRhdGEgPSB0aGlzLmZvcm1EaXNhYmxlZCgpISh0aGlzLmdldFBybS5kYXRhKTtcblx0XHRpZih0eXBlb2YgZGF0YSA9PT0gJ2Jvb2xlYW4nKXtcblx0XHRcdHRoaXMuc2F2ZUJ0bkRpc2FibGUgPSBkYXRhXG5cdFx0XHR0aGlzLmdyaWREaXNhYmxlID0gZGF0YVxuXHRcdFx0dGhpcy5kaXNhYmxlRm9ybShkYXRhKVxuXHRcdFx0dGhpcy5kaXNhYmVsZENoaWxkKGRhdGEpXG5cdFx0fVxuXHRcdGlmKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jyl7XG5cdFx0XHRjb25zdCBkaXNhYmVsZCA9IGRhdGEuZGlzYWJsZWRcblx0XHRcdGNvbnN0IGZpbHRlcnMgPSBkYXRhLmZpbHRlcnMgfHwgW11cblx0XHRcdGlmKCFmaWx0ZXJzLmluY2x1ZGVzKCdmb3JtJykpe1xuXHRcdFx0XHR0aGlzLmRpc2FibGVGb3JtKGRpc2FiZWxkKVxuXHRcdFx0fVxuXHRcdFx0aWYoIWZpbHRlcnMuaW5jbHVkZXMoJ2dyaWQnKSl7XG5cdFx0XHRcdHRoaXMuZ3JpZERpc2FibGUgPSBkaXNhYmVsZFxuXHRcdFx0XHR0aGlzLmRpc2FiZWxkQ2hpbGQoZGlzYWJlbGQpXG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGRpc2FibGVGb3JtKGRpc2FibGU6Ym9vbGVhbil7XG5cdFx0dGhpcy5mb3JtT3B0aW9ucy5maWVsZHM/LmZvckVhY2goKHYpID0+IHtcblx0XHRcdHYuZ3JvdXA/LmZvckVhY2goKGc6IGFueSkgPT4ge1xuXHRcdFx0XHRsZXQgZmllbGREaXNhYmxlZCA9IGdbZm9ybVR5cGVUb1Byb3BzW2cudHlwZV1dLmRpc2FibGVkIHx8IGZhbHNlO1xuXHRcdFx0XHRpZiAoZGlzYWJsZSkge1xuXHRcdFx0XHRcdHRoaXMuY0Zvcm0uZ2V0RmllbGQoZy5rZXkpPy5maWVsZENvbnRyb2whLm1hcmtBc1ByaXN0aW5lKHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG5cdFx0XHRcdFx0dGhpcy5jRm9ybS5nZXRGaWVsZChnLmtleSk/LmZpZWxkQ29udHJvbCEuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0IWZpZWxkRGlzYWJsZWQgJiYgdGhpcy5jRm9ybS5nZXRGaWVsZChnLmtleSk/LmZpZWxkQ29udHJvbCEuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSk7XHRcdFxuXHR9XG5cdGRpc2FiZWxkQ2hpbGQoZGlzYWJlbGQ6Ym9vbGVhbil7XG5cdFx0dGhpcy5ncmlkTGlzdCgpLmZvckVhY2goKHYsaW5kZXg6YW55KSA9PiB7XG5cdFx0XHRpZih2LnR5cGUgPT0gJ2dyaWQnKXtcblx0XHRcdFx0di5ncmlkT3B0aW9ucy5jb2x1bW5EZWZzLmZvckVhY2goKGl0ZW06YW55KSA9PiB7XG5cdFx0XHRcdFx0aWYoZGlzYWJlbGQgJiYgaXRlbS5oYXNPd25Qcm9wZXJ0eSgnZWRpdGFibGUnKSl7XG5cdFx0XHRcdFx0XHRpdGVtLmVkaXRhYmxlID0gZmFsc2Vcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdHRoaXMuY3VzdG9tR3JpZC5nZXQoaW5kZXgpIS5nZXRHcmlkKCkuYXBpLnNldEdyaWRPcHRpb24oXG5cdFx0XHRcdFx0J2NvbHVtbkRlZnMnLCBcblx0XHRcdFx0XHR2LmdyaWRPcHRpb25zLmNvbHVtbkRlZnNcblx0XHRcdFx0KVxuXHRcdFx0fSBlbHNlIGlmKHYudHlwZSA9PSAnZm9ybScpe1xuXHRcdFx0XHR2LmZpZWxkcz8uZm9yRWFjaCgoaXRlbTphbnksKSA9PiB7XG5cdFx0XHRcdFx0aXRlbS5ncm91cD8uZm9yRWFjaCgoZzogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRsZXQgZmllbGREaXNhYmxlZCA9IGdbZm9ybVR5cGVUb1Byb3BzW2cudHlwZV1dLmRpc2FibGVkIHx8IGZhbHNlO1xuXHRcdFx0XHRcdFx0aWYgKGRpc2FiZWxkKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMudGFiRm9ybS5nZXQoaW5kZXgpIS5nZXRGaWVsZChnLmtleSk/LmZpZWxkQ29udHJvbCEubWFya0FzUHJpc3RpbmUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnRhYkZvcm0uZ2V0KGluZGV4KSEuZ2V0RmllbGQoZy5rZXkpPy5maWVsZENvbnRyb2whLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0IWZpZWxkRGlzYWJsZWQgJiYgdGhpcy5jRm9ybS5nZXRGaWVsZChnLmtleSk/LmZpZWxkQ29udHJvbCEuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSlcblx0fVxuXHRzZXREaXNhYmxlZCgpe1xuXHRcdHRoaXMuZ3JpZExpc3QoKS5mb3JFYWNoKCh2LGluZGV4OmFueSkgPT4ge1xuXHRcdFx0aWYodi50eXBlID09ICdmb3JtJyl7XG5cdFx0XHRcdHYuZmllbGRzPy5mb3JFYWNoKChpdGVtOmFueSwpID0+IHtcblx0XHRcdFx0XHRpdGVtLmdyb3VwPy5mb3JFYWNoKChnOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMudGFiRm9ybS5nZXQoaW5kZXgpIS5nZXRGaWVsZChnLmtleSk/LmZpZWxkQ29udHJvbCEuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pXG5cdH1cblx0dGFiQ2xpY2soKXtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMudGFiRm9ybS5nZXQodGhpcy5pbmRleFZhbHVlKSAmJiB0aGlzLnRhYkZvcm0uZ2V0KHRoaXMuaW5kZXhWYWx1ZSkhLnJlQ2FsY0xhYmVsU2l6ZSgpXG5cdFx0fSwwKVxuXHR9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWQ6b3ZlcmZsb3ctaGlkZGVuXCI+XG5cdDxkaXYgY2xhc3M9XCJmbGV4IG1kOmZsZXgtd3JhcCBsZzpmbGV4LW5vd3JhcCBpdGVtcy1jZW50ZXIgbWQ6anVzdGlmeS1iZXR3ZWVuIHB5LTEgcHgtMSBib3JkZXItYi1bMXB4XSBib3JkZXItWyNkYmRiZGJdIGJnLXdoaXRlXCI+XG5cdFx0PGRpdiBjbGFzcz1cIm1kOmJhc2lzLTEvMyBvcmRlci0xXCI+XG5cdFx0XHQ8YXBwLWNydW1iLWFjdGlvblxuXHRcdFx0XHRbYWRkVmlzaWJsZV09XCJhZGRWaXNpYmxlKClcIlxuXHRcdFx0XHRbbmV3VXJsXT1cIm5ld1VybFwiXG5cdFx0XHRcdFtpc1Nob3dDb2ddPVwidHJ1ZVwiXG5cdFx0XHRcdFtvdXRsaW5lZF09XCJ0cnVlXCJcblx0XHRcdFx0W2F1dGhMZXZlbF09XCJhdXRoTGV2ZWwoKVwiXG5cdFx0XHRcdFthY3Rpb25MaXN0XT1cImFjdGlvbkxpc3QoKVwiXG5cdFx0XHRcdFtjb25maWdOZXdQYXRoXT1cImNvbmZpZ05ld1BhdGgoKVwiXG5cdFx0XHRcdFtkYXRhXT1cImdldFBybS5kYXRhID8/IHt9XCJcblx0XHRcdFx0W3NhdmVCdG5EaXNhYmxlXT1cInNhdmVCdG5EaXNhYmxlXCJcblx0XHRcdFx0KGFjdGlvbkV2ZW50KT1cImF1dGhDbGljaygkZXZlbnQpXCJcblx0XHRcdFx0KHNhdmVFdmVudCk9XCJzdWJtaXRGb3JtKClcIj5cblx0XHRcdDwvYXBwLWNydW1iLWFjdGlvbj5cblx0XHQ8L2Rpdj5cblxuXHRcdDxkaXYgY2xhc3M9XCJiYXNpcy0xLzUgbGc6YmFzaXMtMi8zIG9yZGVyLTIgbGc6b3JkZXItMiBtZDpvcmRlci1sYXN0IG1kOmJhc2lzLWZ1bGwgbWQ6bXQtWzZweF1cIj5cblx0XHRcdDxocmVmLWJ0bi1saXN0XG5cdFx0XHRcdFtocmVmc109XCJocmVmQnRuTGlzdCgpXCJcblx0XHRcdFx0KGhyZWZDbGljayk9XCJnb1J1bigkZXZlbnQpXCI+PC9ocmVmLWJ0bi1saXN0PlxuXHRcdFx0PCEtLSBAaWYgKGlkKSB7XG5cdFx0XHRcdEBmb3IgKGJ0biBvZiBocmVmQnRuTGlzdCgpOyB0cmFjayBidG4pIHtcblx0XHRcdFx0XHQ8cC1idXR0b25cblx0XHRcdFx0XHRcdFt2YXJpYW50XT1cImJ0bj8udmFyaWFudFwiXG5cdFx0XHRcdFx0XHRbc2V2ZXJpdHldPVwiYnRuPy5zZXZlcml0eVwiXG5cdFx0XHRcdFx0XHRjbGFzcz1cIm1yLVs2cHhdXCJcblx0XHRcdFx0XHRcdHNpemU9XCJzbWFsbFwiXG5cdFx0XHRcdFx0XHRbaWNvbl09XCJidG4/Lmljb25cIlxuXHRcdFx0XHRcdFx0bGFiZWw9XCJ7eyBidG4uaTE4bktleSA/IGkxOG4uZmFueWkoYnRuLmkxOG5LZXkpIDogYnRuLmxhYmVsIH19XCJcblx0XHRcdFx0XHRcdChjbGljayk9XCJnb1J1bihidG4pXCI+XG5cdFx0XHRcdFx0PC9wLWJ1dHRvbj5cblx0XHRcdFx0fVxuXHRcdFx0fSAtLT5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwiYmFzaXMtMS8zIG9yZGVyLTNcIj48L2Rpdj5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJmbGV4XCI+XG5cdFx0PGRpdiBjbGFzcz1cInB4LTIgZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGZsZXgtMVwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImhpZGRlbiBtZDpiYXNpcy0xLzMgcHktMSBiYXNpcy1mdWxsIG1kOmZsZXggaXRlbXMtY2VudGVyIGZsZXgtcm93IG9yZGVyLTFcIj5cblx0XHRcdFx0QGZvciAoYWN0aW9uIG9mIGFjdGlvbkxpc3QoKTsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIGFjdGlvbikge1xuXHRcdFx0XHRcdDxwLWJ1dHRvblxuXHRcdFx0XHRcdFx0c2l6ZT1cInNtYWxsXCJcblx0XHRcdFx0XHRcdFtpY29uXT1cImdldFBybS5kYXRhPy5pY29uXCJcblx0XHRcdFx0XHRcdFtsYWJlbF09XCJhY3Rpb24uaTE4bktleSA/IChhY3Rpb24uaTE4bktleSB8IHRyYW5zbGF0ZSkgOiBhY3Rpb24ubGFiZWxcIlxuXHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImFjdGlvbi5idG5EaXNhYmxlZCA/IGFjdGlvbi5idG5EaXNhYmxlZChnZXRQcm0uZGF0YSkgOiBmYWxzZVwiXG5cdFx0XHRcdFx0XHRbc3R5bGVDbGFzc109XCJcblx0XHRcdFx0XHRcdFx0KGFjdGlvbi5hdXRoIHx8IDApID4gKGF1dGhMZXZlbCgpIHx8IDApIHx8ICEhYWN0aW9uLmJ0bkhpZGRlbj8uKGdldFBybS5kYXRhKVxuXHRcdFx0XHRcdFx0XHRcdD8gJ2Zvcm0tYWN0aW9uIGhpZGRlbidcblx0XHRcdFx0XHRcdFx0XHQ6ICdmb3JtLWFjdGlvbiBibG9jayBtci1bLjVyZW1dJ1xuXHRcdFx0XHRcdFx0XCJcblx0XHRcdFx0XHRcdChvbkNsaWNrKT1cImFjdGlvbi5vbkNsaWNrICE9ICcnICYmIGFjdGlvbi5vbkNsaWNrPy4oZ2V0UHJtLmRhdGEpXCI+XG5cdFx0XHRcdFx0PC9wLWJ1dHRvbj5cblx0XHRcdFx0fVxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwibWQ6YmFzaXMtMi8zIGJhc2lzLWZ1bGwgZmxleCBtZDpmbGV4LXJvdy1yZXZlcnNlIGZsZXgtcm93IG1kOm9yZGVyLTIgb3JkZXItZmlyc3Qgdy1mdWxsXCI+XG5cdFx0XHRcdDxjdXN0b20tc3RlcHNcblx0XHRcdFx0XHQjY3VzdG9tU3RlcHNcblx0XHRcdFx0XHRjbGFzcz1cInctZnVsbFwiXG5cdFx0XHRcdFx0W3N0ZXBzXT1cInN0YXR1c1N0ZXBzKClcIlxuXHRcdFx0XHRcdFttb2RlbExvZ109XCJtb2RlbExvZygpXCJcblx0XHRcdFx0XHRbY3VycmVudF09XCJnZXRQcm0uZGF0YSAmJiBnZXRQcm0uZGF0YVtzdGF0dXNLZXkoKV0gIT09IHVuZGVmaW5lZCA/IGdldFBybS5kYXRhW3N0YXR1c0tleSgpXSA6IDBcIlxuXHRcdFx0XHRcdFthdXRoTGV2ZWxdPVwiYXV0aExldmVsKClcIlxuXHRcdFx0XHRcdFtpc0NsaWNrXT1cInRoaXMuc3RhdHVzQ29uZigpLmlzQ2xpY2tcIlxuXHRcdFx0XHRcdChjaGFuZ2UpPVwic3RhdHVzQ2hhbmdlKCRldmVudCwgY3VzdG9tU3RlcHMpXCI+XG5cdFx0XHRcdDwvY3VzdG9tLXN0ZXBzPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdFx0QGlmIChtb2RlbExvZygpKSB7XG5cdFx0XHQ8ZGl2IGNsYXNzPVwibGc6dy1bNDAwcHhdIG1kOnctWzMwMHB4XSBoaWRkZW4gc206YmxvY2tcIj48L2Rpdj5cblx0XHR9XG5cdDwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwibWFpbiBmbGV4IGZsZXgtd3JhcCBzbTpvdmVyZmxvdy15LWhpZGRlblwiPlxuXHRcdDxkaXYgY2xhc3M9XCJ3LWZ1bGwgc206ZmxleC0xIHNtOmgtZnVsbCBtZDpvdmVyZmxvdy15LWF1dG9cIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJiZy13aGl0ZSBteC0yIGZvcm0tcGFuZWxcIj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cInAtMiBmbGV4LTFcIj5cblx0XHRcdFx0XHQ8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm0oKS5mb3JtIVwiPlxuXHRcdFx0XHRcdFx0PGN1c3RvbS1mb3JtXG5cdFx0XHRcdFx0XHRcdCNjRm9ybVxuXHRcdFx0XHRcdFx0XHRbb3B0aW9uc109XCJmb3JtT3B0aW9uc1wiXG5cdFx0XHRcdFx0XHRcdFt1cHNlcnRdPVwidXBzZXJ0UHJtXCJcblx0XHRcdFx0XHRcdFx0W21vZGVsXT1cImdldFBybS5kYXRhID8/IHt9XCI+PC9jdXN0b20tZm9ybT5cblx0XHRcdFx0XHQ8L2Zvcm0+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRAaWYgKGdyaWRMaXN0KCkgJiYgZ3JpZExpc3QoKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJlbGF0aXZlIG1iLTJcIj5cblx0XHRcdFx0XHRcdDxwLXRhYnMgWyh2YWx1ZSldPVwiaW5kZXhWYWx1ZVwiPlxuXHRcdFx0XHRcdFx0XHQ8cC10YWJsaXN0PlxuXHRcdFx0XHRcdFx0XHRcdEBmb3IgKGZjaGlsZCBvZiBncmlkTGlzdCgpOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgZmNoaWxkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQ8cC10YWJcblx0XHRcdFx0XHRcdFx0XHRcdFx0W3ZhbHVlXT1cImlcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwidGFiQ2xpY2soKVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7eyBmY2hpbGQuaTE4bktleSA/IGkxOG4uZmFueWkoZmNoaWxkLmkxOG5LZXkpIDogZmNoaWxkLnRpdGxlIH19XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3AtdGFiPlxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0PC9wLXRhYmxpc3Q+XG5cdFx0XHRcdFx0XHQ8L3AtdGFicz5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0fVxuXHRcdFx0XHRAZm9yIChncmlkIG9mIGdyaWRMaXN0KCk7IGxldCBpID0gJGluZGV4OyB0cmFjayBncmlkKSB7XG5cdFx0XHRcdFx0QGlmIChncmlkLnR5cGUgPT0gJ2dyaWQnKSB7XG5cdFx0XHRcdFx0XHQ8Y3VzdG9tLWdyaWRcblx0XHRcdFx0XHRcdFx0I2N1c3RvbUdyaWRcblx0XHRcdFx0XHRcdFx0W2hpZGRlbl09XCJpbmRleFZhbHVlICE9IGlcIlxuXHRcdFx0XHRcdFx0XHRbcm93RGF0YV09XCJnZXRQcm0uZGF0YT8uW2dyaWQuc3ViRGF0YUtleSFdXCJcblx0XHRcdFx0XHRcdFx0W3Vwc2VydF09XCJ1cHNlcnRQcm1cIlxuXHRcdFx0XHRcdFx0XHQoZGVsZXRlRW1pdCk9XCJkZWxSb3dzKCRldmVudClcIlxuXHRcdFx0XHRcdFx0XHRbYWRkVHlwZV09XCJncmlkLnN1YlRhYmxlU291cmNlXCJcblx0XHRcdFx0XHRcdFx0KGFkZEVtaXQpPVwiZGF0YVNvdXJjZVNob3coKVwiXG5cdFx0XHRcdFx0XHRcdFtncmlkT3B0aW9uc109XCJncmlkLmdyaWRPcHRpb25zXCJcblx0XHRcdFx0XHRcdFx0W2dyaWREaXNhYmxlXT1cImdyaWREaXNhYmxlXCJcblx0XHRcdFx0XHRcdFx0W2F1dGhMZXZlbF09XCJhdXRoTGV2ZWwoKVwiXG5cdFx0XHRcdFx0XHRcdFtzaG93RGVsZXRlXT1cImdyaWQuc2hvd0RlbGV0ZVwiXG5cdFx0XHRcdFx0XHRcdFtzZWxlY3REYXRhXT1cImdyaWQuc2VsZWN0RGF0YVwiPlxuXHRcdFx0XHRcdFx0PC9jdXN0b20tZ3JpZD5cblx0XHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRcdDwhLS0gQGlmKGluZGV4VmFsdWUgPT0gaSl7XG5cdFx0XHRcdFx0XHRcdDxmb3JtIFtmb3JtR3JvdXBdPVwiZ3JpZC5mb3JtIVwiPlxuXHRcdFx0XHRcdFx0XHRcdDxjdXN0b20tZm9ybVxuXHRcdFx0XHRcdFx0XHRcdFtvcHRpb25zXT1cImdyaWRcIlxuXHRcdFx0XHRcdFx0XHRcdFt1cHNlcnRdPVwidXBzZXJ0UHJtXCJcblx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdDwvY3VzdG9tLWZvcm0+XG5cdFx0XHRcdFx0XHRcdDwvZm9ybT5cblx0XHRcdFx0XHRcdH0gLS0+XG5cdFx0XHRcdFx0XHQ8Y3VzdG9tLWZvcm1cblx0XHRcdFx0XHRcdFx0I3RhYkZvcm1cblx0XHRcdFx0XHRcdFx0W2hpZGRlbl09XCJpbmRleFZhbHVlICE9IGlcIlxuXHRcdFx0XHRcdFx0XHRbb3B0aW9uc109XCJncmlkXCJcblx0XHRcdFx0XHRcdFx0W3Vwc2VydF09XCJ1cHNlcnRQcm1cIlxuXHRcdFx0XHRcdFx0XHRbbW9kZWxdPVwic3ViRm9ybU1vZGVsW2dyaWQuc3ViRGF0YUtleSFdIHx8IHt9XCI+XG5cdFx0XHRcdFx0XHQ8L2N1c3RvbS1mb3JtPlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdFx0QGlmIChtb2RlbExvZygpKSB7XG5cdFx0XHQ8ZGl2IGNsYXNzPVwidy1mdWxsIGxnOnctWzQwMHB4XSBtZDp3LVszMDBweF0gc206aC1mdWxsIG1kOm92ZXJmbG93LXktYXV0byBoaWRkZW4gc206YmxvY2tcIj5cblx0XHRcdFx0PGN1c3RvbS1sb2cgW2xvZ3NdPVwiZ2V0UHJtLmRhdGE/LmxvZyA/PyBbXVwiPjwvY3VzdG9tLWxvZz5cblx0XHRcdDwvZGl2PlxuXHRcdH1cblx0PC9kaXY+XG48L2Rpdj5cbjxyb3ctc2VsZWN0b3Jcblx0Wyh2aXNpYmxlKV09XCJ2aXNpYmxlXCJcblx0W3NlYXJjaFBybV09XCJkaWFsb2dTZWFyY2hQcm1cIlxuXHRbZ3JpZE9wdGlvbnNdPVwic2VsZWN0T3B0aW9uc1wiXG5cdFtzZWxlY3Rpb25LZXlzXT1cInNlbGVjdGlvbktleXNcIlxuXHQob25Payk9XCJvbk9rKCRldmVudClcIj5cbjwvcm93LXNlbGVjdG9yPlxuIl19
|
|
@@ -3,16 +3,13 @@ import { ButtonModule } from 'primeng/button';
|
|
|
3
3
|
import { DialogModule } from 'primeng/dialog';
|
|
4
4
|
import { GridComponent } from '../grid/grid/grid.component';
|
|
5
5
|
import { SearchComponent } from '../search/search/search.component';
|
|
6
|
-
import { DatePipe } from '@angular/common';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
import * as i1 from "../service/action.service";
|
|
9
|
-
import * as i2 from "
|
|
10
|
-
import * as i3 from "primeng/
|
|
11
|
-
import * as i4 from "primeng/dialog";
|
|
8
|
+
import * as i2 from "primeng/button";
|
|
9
|
+
import * as i3 from "primeng/dialog";
|
|
12
10
|
export class RowSelectorComponent {
|
|
13
|
-
constructor(action
|
|
11
|
+
constructor(action) {
|
|
14
12
|
this.action = action;
|
|
15
|
-
this.datePipe = datePipe;
|
|
16
13
|
this.onOk = new EventEmitter();
|
|
17
14
|
this.title = input('选择');
|
|
18
15
|
this.selectionKeys = input([]);
|
|
@@ -63,16 +60,16 @@ export class RowSelectorComponent {
|
|
|
63
60
|
this.grid.setScrollHeight();
|
|
64
61
|
}
|
|
65
62
|
}
|
|
66
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RowSelectorComponent, deps: [{ token: i1.ActionService }
|
|
67
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RowSelectorComponent, isStandalone: true, selector: "row-selector", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, selectionKeys: { classPropertyName: "selectionKeys", publicName: "selectionKeys", isSignal: true, isRequired: false, transformFunction: null }, gridOptions: { classPropertyName: "gridOptions", publicName: "gridOptions", isSignal: true, isRequired: false, transformFunction: null }, searchPrm: { classPropertyName: "searchPrm", publicName: "searchPrm", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onOk: "onOk", visible: "visibleChange" },
|
|
63
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RowSelectorComponent, deps: [{ token: i1.ActionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
64
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RowSelectorComponent, isStandalone: true, selector: "row-selector", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, selectionKeys: { classPropertyName: "selectionKeys", publicName: "selectionKeys", isSignal: true, isRequired: false, transformFunction: null }, gridOptions: { classPropertyName: "gridOptions", publicName: "gridOptions", isSignal: true, isRequired: false, transformFunction: null }, searchPrm: { classPropertyName: "searchPrm", publicName: "searchPrm", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onOk: "onOk", visible: "visibleChange" }, viewQueries: [{ propertyName: "grid", first: true, predicate: GridComponent, descendants: true }], ngImport: i0, template: "<p-dialog\n\t[header]=\"title()\"\n\t[modal]=\"true\"\n\t[style]=\"{ width: '50vw' }\"\n\t(onHide)=\"cancel()\"\n\t[maximizable]=\"true\"\n\t[appendTo]=\"'body'\"\n\t[focusOnShow]=\"false\"\n\t(onShow)=\"onShow()\"\n\t(onHide)=\"onHide()\"\n\t(onMaximize)=\"onMaximize($event)\"\n\t[(visible)]=\"visible\">\n\t@if (innerVisible) {\n\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t<custom-search [gridOptions]=\"gridOptions()\"></custom-search>\n\t\t\t<custom-grid\n\t\t\t\t[showAct]=\"false\"\n\t\t\t\t[searchPrm]=\"searchPrm()\"\n\t\t\t\t[selectionKeys]=\"selectionKeys()\"\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-grid>\n\t\t\t<div class=\"flex justify-end gap-2\">\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u53D6\u6D88\"\n\t\t\t\t\t[text]=\"true\"\n\t\t\t\t\tseverity=\"secondary\"\n\t\t\t\t\t(click)=\"cancel()\" />\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u786E\u5B9A\"\n\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t(click)=\"ok()\" />\n\t\t\t</div>\n\t\t</div>\n\t}\n</p-dialog>\n", styles: [":host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:1}:host ::ng-deep .p-inputtext{border-width:0;border-radius:0;box-shadow:none;background:#fff;padding:0}:host ::ng-deep .p-inputtext:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputtext:not(:disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:not(:disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered .p-autocomplete-input:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-label{padding:0}:host ::ng-deep .p-select{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-select .p-select-dropdown{display:none}:host ::ng-deep .p-select .p-select-clear-icon{display:none}:host ::ng-deep .p-select:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-select-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-open .p-select-dropdown{display:flex}:host ::ng-deep .p-select-open .p-select-clear-icon{display:flex}:host ::ng-deep .p-select:hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select:hover .p-select-dropdown{display:flex}:host ::ng-deep .p-select:hover .p-select-clear-icon{display:flex}:host ::ng-deep .p-select.ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select.ng-hovered .p-select-dropdown{display:flex}:host ::ng-deep .p-select.ng-hovered .p-select-clear-icon{display:flex}:host ::ng-deep .p-multiselect-label{padding:0}:host ::ng-deep .p-multiselect{border-width:0;border-radius:0;background:#fff;box-shadow:none}:host ::ng-deep .p-multiselect .p-multiselect-dropdown{display:none}:host ::ng-deep .p-multiselect:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-multiselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect-open .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled):hover .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-textarea{border-radius:0;box-shadow:none;padding:0;background:#fff;resize:none}:host ::ng-deep .p-textarea:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border:1px solid var(--p-red-500)!important}:host ::ng-deep .p-textarea:not(:disabled):hover{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:not(:disabled).ng-hovered{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:focus{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-treeselect-label{padding:0}:host ::ng-deep .p-treeselect{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-treeselect .p-treeselect-dropdown{display:none}:host ::ng-deep .ng-invalid.ng-dirty>.p-treeselect{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-treeselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect-open .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled):hover .p-treeselect-dropdown{display:flex}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled) .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-menubar{border-width:0;padding:0}:host ::ng-deep .p-menubar-submenu{z-index:3}:host ::ng-deep .p-fileupload-advanced{border-width:0;border-radius:0;background-color:#fff}:host ::ng-deep .p-fileupload-header{padding:0}:host ::ng-deep .p-fileupload-content{padding:0;display:block;border-width:0}:host ::ng-deep .p-inputnumber:not(.ng-valid).ng-dirty>.p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputnumber.ng-hovered:not(.p-disabled)>.p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-invalid.ng-dirty>.p-datepicker .p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .ng-hovered>.p-datepicker:not(.p-disabled) .p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor{border:1px solid #cbd5e1}:host ::ng-deep .cm-editor.cm-focused{outline:none!important;border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor:hover{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor.ng-hovered{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-gutters{background-color:#fff;border:\"none\"}:host ::ng-deep .cm-activeLineGutter{background-color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "selectionKeys", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel", "showDelete", "gridDisable"], outputs: ["deleteEmit", "addEmit"] }, { kind: "component", type: SearchComponent, selector: "custom-search", inputs: ["searchPrm", "gridOptions"] }] }); }
|
|
68
65
|
}
|
|
69
66
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RowSelectorComponent, decorators: [{
|
|
70
67
|
type: Component,
|
|
71
|
-
args: [{ selector: 'row-selector', standalone: true, imports: [ButtonModule, DialogModule, GridComponent, SearchComponent],
|
|
72
|
-
}], ctorParameters: () => [{ type: i1.ActionService }
|
|
68
|
+
args: [{ selector: 'row-selector', standalone: true, imports: [ButtonModule, DialogModule, GridComponent, SearchComponent], template: "<p-dialog\n\t[header]=\"title()\"\n\t[modal]=\"true\"\n\t[style]=\"{ width: '50vw' }\"\n\t(onHide)=\"cancel()\"\n\t[maximizable]=\"true\"\n\t[appendTo]=\"'body'\"\n\t[focusOnShow]=\"false\"\n\t(onShow)=\"onShow()\"\n\t(onHide)=\"onHide()\"\n\t(onMaximize)=\"onMaximize($event)\"\n\t[(visible)]=\"visible\">\n\t@if (innerVisible) {\n\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t<custom-search [gridOptions]=\"gridOptions()\"></custom-search>\n\t\t\t<custom-grid\n\t\t\t\t[showAct]=\"false\"\n\t\t\t\t[searchPrm]=\"searchPrm()\"\n\t\t\t\t[selectionKeys]=\"selectionKeys()\"\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-grid>\n\t\t\t<div class=\"flex justify-end gap-2\">\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u53D6\u6D88\"\n\t\t\t\t\t[text]=\"true\"\n\t\t\t\t\tseverity=\"secondary\"\n\t\t\t\t\t(click)=\"cancel()\" />\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u786E\u5B9A\"\n\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t(click)=\"ok()\" />\n\t\t\t</div>\n\t\t</div>\n\t}\n</p-dialog>\n", styles: [":host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:1}:host ::ng-deep .p-inputtext{border-width:0;border-radius:0;box-shadow:none;background:#fff;padding:0}:host ::ng-deep .p-inputtext:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputtext:not(:disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:not(:disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered .p-autocomplete-input:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-label{padding:0}:host ::ng-deep .p-select{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-select .p-select-dropdown{display:none}:host ::ng-deep .p-select .p-select-clear-icon{display:none}:host ::ng-deep .p-select:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-select-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-open .p-select-dropdown{display:flex}:host ::ng-deep .p-select-open .p-select-clear-icon{display:flex}:host ::ng-deep .p-select:hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select:hover .p-select-dropdown{display:flex}:host ::ng-deep .p-select:hover .p-select-clear-icon{display:flex}:host ::ng-deep .p-select.ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select.ng-hovered .p-select-dropdown{display:flex}:host ::ng-deep .p-select.ng-hovered .p-select-clear-icon{display:flex}:host ::ng-deep .p-multiselect-label{padding:0}:host ::ng-deep .p-multiselect{border-width:0;border-radius:0;background:#fff;box-shadow:none}:host ::ng-deep .p-multiselect .p-multiselect-dropdown{display:none}:host ::ng-deep .p-multiselect:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-multiselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect-open .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled):hover .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-textarea{border-radius:0;box-shadow:none;padding:0;background:#fff;resize:none}:host ::ng-deep .p-textarea:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border:1px solid var(--p-red-500)!important}:host ::ng-deep .p-textarea:not(:disabled):hover{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:not(:disabled).ng-hovered{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:focus{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-treeselect-label{padding:0}:host ::ng-deep .p-treeselect{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-treeselect .p-treeselect-dropdown{display:none}:host ::ng-deep .ng-invalid.ng-dirty>.p-treeselect{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-treeselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect-open .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled):hover .p-treeselect-dropdown{display:flex}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled) .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-menubar{border-width:0;padding:0}:host ::ng-deep .p-menubar-submenu{z-index:3}:host ::ng-deep .p-fileupload-advanced{border-width:0;border-radius:0;background-color:#fff}:host ::ng-deep .p-fileupload-header{padding:0}:host ::ng-deep .p-fileupload-content{padding:0;display:block;border-width:0}:host ::ng-deep .p-inputnumber:not(.ng-valid).ng-dirty>.p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputnumber.ng-hovered:not(.p-disabled)>.p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-invalid.ng-dirty>.p-datepicker .p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .ng-hovered>.p-datepicker:not(.p-disabled) .p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor{border:1px solid #cbd5e1}:host ::ng-deep .cm-editor.cm-focused{outline:none!important;border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor:hover{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor.ng-hovered{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-gutters{background-color:#fff;border:\"none\"}:host ::ng-deep .cm-activeLineGutter{background-color:#fff}\n"] }]
|
|
69
|
+
}], ctorParameters: () => [{ type: i1.ActionService }], propDecorators: { onOk: [{
|
|
73
70
|
type: Output
|
|
74
71
|
}], grid: [{
|
|
75
72
|
type: ViewChild,
|
|
76
73
|
args: [GridComponent]
|
|
77
74
|
}] } });
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvcm93LXNlbGVjdG9yL3Jvdy1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3Jvdy1zZWxlY3Rvci9yb3ctc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGFBQWEsRUFBZSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7QUFVcEUsTUFBTSxPQUFPLG9CQUFvQjtJQVVoQyxZQUFvQixNQUFxQjtRQUFyQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBVC9CLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBRTNDLFVBQUssR0FBRyxLQUFLLENBQVMsSUFBSSxDQUFDLENBQUM7UUFDNUIsa0JBQWEsR0FBRyxLQUFLLENBQVEsRUFBRSxDQUFDLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxLQUFLLENBQWMsRUFBRSxDQUFDLENBQUM7UUFDckMsY0FBUyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUM5QixZQUFPLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLGlCQUFZLEdBQVksS0FBSyxDQUFDO0lBRWMsQ0FBQztJQUU3QyxHQUFHO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTTtRQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxFQUFFO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xELE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNuRCxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLE1BQU0sQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELGVBQWU7UUFDZCxNQUFNLE1BQU0sR0FBVSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU07UUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTTtRQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNwQixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0YsQ0FBQzsrR0ExRFcsb0JBQW9CO21HQUFwQixvQkFBb0IsbTBCQUVyQixhQUFhLGdEQ2pCekIsMjlCQWtDQSxnckxEdkJXLFlBQVksaWJBQUUsWUFBWSxvNkJBQUUsYUFBYSxnUUFBRSxlQUFlOzs0RkFJeEQsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNDLGNBQWMsY0FDWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUM7a0ZBSzNELElBQUk7c0JBQWIsTUFBTTtnQkFDbUIsSUFBSTtzQkFBN0IsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBpbnB1dCwgbW9kZWwsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnLi4vYW0vYW0uY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRDb21wb25lbnQsIEdyaWRPcHRpb25zIH0gZnJvbSAnLi4vZ3JpZC9ncmlkL2dyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2gvc2VhcmNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9hY3Rpb24uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3Jvdy1zZWxlY3RvcicsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtCdXR0b25Nb2R1bGUsIERpYWxvZ01vZHVsZSwgR3JpZENvbXBvbmVudCwgU2VhcmNoQ29tcG9uZW50XSxcblx0dGVtcGxhdGVVcmw6ICcuL3Jvdy1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsOiAnLi9yb3ctc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBSb3dTZWxlY3RvckNvbXBvbmVudCB7XG5cdEBPdXRwdXQoKSBvbk9rID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblx0QFZpZXdDaGlsZChHcmlkQ29tcG9uZW50KSBncmlkITogR3JpZENvbXBvbmVudDtcblx0dGl0bGUgPSBpbnB1dDxzdHJpbmc+KCfpgInmi6knKTtcblx0c2VsZWN0aW9uS2V5cyA9IGlucHV0PGFueVtdPihbXSk7XG5cdGdyaWRPcHRpb25zID0gaW5wdXQ8R3JpZE9wdGlvbnM+KHt9KTtcblx0c2VhcmNoUHJtID0gaW5wdXQ8U2VhcmNoPih7fSk7XG5cdHZpc2libGUgPSBtb2RlbDxib29sZWFuPihmYWxzZSk7XG5cdGlubmVyVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9uOiBBY3Rpb25TZXJ2aWNlKSB7fVxuXG5cdGFwaSgpIHtcblx0XHRyZXR1cm4gdGhpcy5ncmlkLmdldEdyaWQoKS5hcGk7XG5cdH1cblxuXHRjYW5jZWwoKSB7XG5cdFx0dGhpcy52aXNpYmxlLnNldChmYWxzZSk7XG5cdH1cblxuXHRvaygpIHtcblx0XHRjb25zdCByZXN1bHQgPSB0aGlzLmdldFNlbGVjdGVkRGF0YSgpLm1hcCgoaXRlbSkgPT4ge1xuXHRcdFx0Y29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcblx0XHRcdHRoaXMuZ3JpZE9wdGlvbnMoKS5jb2x1bW5EZWZzPy5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xuXHRcdFx0XHRyZXN1bHRbY29sLmZpZWxkXSA9IGl0ZW1bY29sLmZpZWxkXTtcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9KTtcblx0XHR0aGlzLm9uT2suZW1pdChyZXN1bHQpO1xuXHRcdHRoaXMudmlzaWJsZS5zZXQoZmFsc2UpO1xuXHR9XG5cblx0Z2V0U2VsZWN0ZWREYXRhKCk6IGFueVtdIHtcblx0XHRjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG5cdFx0dGhpcy5hcGkoKS5mb3JFYWNoTm9kZSgobm9kZTogYW55KSA9PiB7XG5cdFx0XHRub2RlLmlzU2VsZWN0ZWQoKSAmJiByZXN1bHQucHVzaCh7IC4uLm5vZGUuZGF0YSB9KTtcblx0XHR9KTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0b25TaG93KCkge1xuXHRcdHRoaXMuaW5uZXJWaXNpYmxlID0gdHJ1ZTtcblx0XHR0aGlzLmFjdGlvbi5zZXRQb3BNb2RlKHRydWUpO1xuXHR9XG5cblx0b25IaWRlKCkge1xuXHRcdHRoaXMuaW5uZXJWaXNpYmxlID0gZmFsc2U7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLmFjdGlvbi5zZXRQb3BNb2RlKGZhbHNlKTtcblx0XHR9KTtcblx0fVxuXG5cdG9uTWF4aW1pemUoZXZlbnQ6IGFueSkge1xuXHRcdGlmIChldmVudC5tYXhpbWl6ZWQpIHtcblx0XHRcdHRoaXMuZ3JpZC5zZXRTY3JvbGxIZWlnaHQoJ2NhbGMoMTAwdmggLSAxNTBweCknKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5ncmlkLnNldFNjcm9sbEhlaWdodCgpO1xuXHRcdH1cblx0fVxufVxuIiwiPHAtZGlhbG9nXG5cdFtoZWFkZXJdPVwidGl0bGUoKVwiXG5cdFttb2RhbF09XCJ0cnVlXCJcblx0W3N0eWxlXT1cInsgd2lkdGg6ICc1MHZ3JyB9XCJcblx0KG9uSGlkZSk9XCJjYW5jZWwoKVwiXG5cdFttYXhpbWl6YWJsZV09XCJ0cnVlXCJcblx0W2FwcGVuZFRvXT1cIidib2R5J1wiXG5cdFtmb2N1c09uU2hvd109XCJmYWxzZVwiXG5cdChvblNob3cpPVwib25TaG93KClcIlxuXHQob25IaWRlKT1cIm9uSGlkZSgpXCJcblx0KG9uTWF4aW1pemUpPVwib25NYXhpbWl6ZSgkZXZlbnQpXCJcblx0Wyh2aXNpYmxlKV09XCJ2aXNpYmxlXCI+XG5cdEBpZiAoaW5uZXJWaXNpYmxlKSB7XG5cdFx0PGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTJcIj5cblx0XHRcdDxjdXN0b20tc2VhcmNoIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9ucygpXCI+PC9jdXN0b20tc2VhcmNoPlxuXHRcdFx0PGN1c3RvbS1ncmlkXG5cdFx0XHRcdFtzaG93QWN0XT1cImZhbHNlXCJcblx0XHRcdFx0W3NlYXJjaFBybV09XCJzZWFyY2hQcm0oKVwiXG5cdFx0XHRcdFtzZWxlY3Rpb25LZXlzXT1cInNlbGVjdGlvbktleXMoKVwiXG5cdFx0XHRcdFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9ucygpXCI+PC9jdXN0b20tZ3JpZD5cblx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIGdhcC0yXCI+XG5cdFx0XHRcdDxwLWJ1dHRvblxuXHRcdFx0XHRcdGxhYmVsPVwi5Y+W5raIXCJcblx0XHRcdFx0XHRbdGV4dF09XCJ0cnVlXCJcblx0XHRcdFx0XHRzZXZlcml0eT1cInNlY29uZGFyeVwiXG5cdFx0XHRcdFx0KGNsaWNrKT1cImNhbmNlbCgpXCIgLz5cblx0XHRcdFx0PHAtYnV0dG9uXG5cdFx0XHRcdFx0bGFiZWw9XCLnoa7lrppcIlxuXHRcdFx0XHRcdFtvdXRsaW5lZF09XCJ0cnVlXCJcblx0XHRcdFx0XHQoY2xpY2spPVwib2soKVwiIC8+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0fVxuPC9wLWRpYWxvZz5cbiJdfQ==
|