@alfresco/aca-content 4.2.0-5665802924 → 4.2.0-5666038651
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/esm2020/folder-rules/manage-rules/manage-rules.smart-component.mjs +3 -3
- package/esm2020/lib/components/search/search-input/search-input.component.mjs +3 -3
- package/esm2020/lib/components/search/search-input-control/search-input-control.component.mjs +3 -3
- package/esm2020/lib/components/search/search-results-row/search-results-row.component.mjs +3 -3
- package/esm2020/lib/components/sidenav/components/expand-menu.component.mjs +3 -3
- package/esm2020/lib/components/sidenav/sidenav.component.mjs +3 -3
- package/esm2020/lib/components/view-profile/view-profile.component.mjs +3 -3
- package/fesm2015/alfresco-aca-content-folder-rules.mjs +2 -2
- package/fesm2015/alfresco-aca-content-folder-rules.mjs.map +1 -1
- package/fesm2015/alfresco-aca-content.mjs +12 -12
- package/fesm2015/alfresco-aca-content.mjs.map +1 -1
- package/fesm2020/alfresco-aca-content-folder-rules.mjs +2 -2
- package/fesm2020/alfresco-aca-content-folder-rules.mjs.map +1 -1
- package/fesm2020/alfresco-aca-content.mjs +12 -12
- package/fesm2020/alfresco-aca-content.mjs.map +1 -1
- package/package.json +1 -1
- package/ui/application.scss +0 -4
- package/ui/dynamic-theme/typography.scss +2 -2
- package/ui/mixins.scss +1 -1
- package/ui/overrides/adf-about.theme.scss +14 -12
- package/ui/overrides/adf-pagination.theme.scss +43 -41
- package/ui/overrides/adf-style-fixes.theme.scss +0 -4
- package/ui/overrides/ay11.scss +23 -19
- package/ui/theme.scss +31 -16
- package/ui/variables/variables.scss +1 -1
|
@@ -237,7 +237,7 @@ export class ManageRulesSmartComponent {
|
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
239
|
ManageRulesSmartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ManageRulesSmartComponent, deps: [{ token: i1.Location }, { token: i2.FolderRulesService }, { token: i3.ActivatedRoute }, { token: i4.MatDialog }, { token: i5.NotificationService }, { token: i6.ActionsService }, { token: i7.FolderRuleSetsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
240
|
-
ManageRulesSmartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: ManageRulesSmartComponent, isStandalone: true, selector: "aca-manage-rules", host: { classAttribute: "aca-manage-rules" }, ngImport: i0, template: "<aca-page-layout>\n\n <div class=\"aca-page-layout-header\">\n <adf-toolbar class=\"adf-toolbar--inline\">\n <button mat-icon-button (click)=\"goBack()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </adf-toolbar>\n <h1 class=\"aca-page-title\">{{ 'ACA_FOLDER_RULES.ACTIONS.MANAGE_RULES' | translate }}</h1>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"main-content\">\n\n <ng-container *ngIf=\"((ruleSetsLoading$ | async) && (inheritedRuleSets$ | async).length === 0) || (actionsLoading$ | async); else onLoaded\">\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </ng-container>\n\n <ng-template #onLoaded>\n <ng-container *ngIf=\"folderInfo$ | async; else genericError\">\n <adf-toolbar class=\"adf-toolbar--inline aca-manage-rules__actions-bar\">\n\n <adf-toolbar-title class=\"aca-manage-rules__actions-bar__title\">\n <mat-icon class=\"icon-aligner\">folder</mat-icon>\n <h2 class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</h2>\n </adf-toolbar-title>\n\n <mat-slide-toggle\n data-automation-id=\"manage-rules-inheritance-toggle-button\"\n [checked]=\"isInheritanceEnabled\"\n (change)=\"onInheritanceToggleChange($event)\"\n [disabled]=\"isInheritanceToggleDisabled\"\n [labelPosition]=\"'before'\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.INHERIT_RULES' | translate }}\n </mat-slide-toggle>\n\n <mat-divider vertical class=\"vertical-divider\"></mat-divider>\n\n <div class=\"aca-manage-rules__actions-bar__buttons\">\n <button\n *ngIf=\"!(mainRuleSet$ | async)\"\n data-automation-id=\"manage-rules-link-button\"\n mat-stroked-button\n (click)=\"openLinkRulesDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.LINK_RULES' | translate }}\n </button>\n\n <button\n *ngIf=\"canEditMainRule\"\n data-automation-id=\"manage-rules-create-button\"\n mat-flat-button color=\"primary\"\n (click)=\"openCreateUpdateRuleDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.CREATE_RULE' | translate }}\n </button>\n </div>\n\n </adf-toolbar>\n <mat-divider></mat-divider>\n\n <div class=\"aca-manage-rules__container\" *ngIf=\"isMainRuleSetNotEmpty || isInheritedRuleSetsNotEmpty; else emptyContent\">\n <aca-rule-list\n [mainRuleSet]=\"mainRuleSet$ | async\"\n [folderId]=\"nodeId\"\n [inheritedRuleSets]=\"inheritedRuleSets$ | async\"\n [hasMoreRuleSets]=\"hasMoreRuleSets$ | async\"\n [ruleSetsLoading]=\"ruleSetsLoading$ | async\"\n [selectedRule]=\"selectedRule$ | async\"\n (loadMoreRuleSets)=\"onLoadMoreRuleSets()\"\n (loadMoreRules)=\"onLoadMoreRules($event)\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledToggle($event[0], $event[1])\"\n (ruleSetEditLinkClicked)=\"openLinkRulesDialog($event)\"\n (ruleSetUnlinkClicked)=\"onRuleSetUnlinkClicked($event)\">\n </aca-rule-list>\n\n <div class=\"aca-manage-rules__container__rule-details\">\n\n <div class=\"aca-manage-rules__container__rule-details__header\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <div class=\"aca-manage-rules__container__rule-details__header__title\">\n <div class=\"aca-manage-rules__container__rule-details__header__title__name\">\n {{ selectedRule.name }}\n </div>\n <div class=\"aca-manage-rules__container__rule-details__header__title__description\">\n {{ selectedRule.description }}\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__header__buttons\">\n <ng-container *ngIf=\"canEditSelectedRule; else goToFolderButton\">\n <button mat-stroked-button (click)=\"onRuleDeleteButtonClicked(selectedRule)\" id=\"delete-rule-btn\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n <button mat-stroked-button (click)=\"openCreateUpdateRuleDialog(selectedRule)\" id=\"edit-rule-btn\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.EDIT_RULE' | translate }}\n </button>\n </ng-container>\n\n <ng-template #goToFolderButton>\n <button mat-stroked-button [routerLink]=\"['/nodes', (selectedRuleSet$ | async).owningFolder.id, 'rules']\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n </button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__content\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <aca-rule-details\n [actionDefinitions]=\"actionDefinitions$ | async\"\n [readOnly]=\"true\"\n [preview]=\"true\"\n [value]=\"selectedRule\"\n [nodeId]=\"nodeId\">\n </aca-rule-details>\n </div>\n </div>\n </div>\n\n <ng-template #emptyContent>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.TITLE' | translate\"\n [subtitle]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.SUBTITLE' | translate\"\n >\n </adf-empty-content>\n </ng-template>\n </ng-container>\n\n <ng-template #genericError>\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n </ng-template>\n\n </ng-template>\n\n </div>\n </div>\n\n</aca-page-layout>\n", styles: [".aca-manage-rules__actions-bar{padding:0 30px;display:flex;align-items:center}.aca-manage-rules__actions-bar .aca-page-title{margin-left:18px}.aca-manage-rules__actions-bar__title{align-items:center;width:unset!important;flex:1}.aca-manage-rules__actions-bar__buttons{display:flex;align-items:stretch;gap:12px}.aca-manage-rules__actions-bar .mat-slide-toggle-label{font-weight:600;font-size:14px}.aca-manage-rules__actions-bar .vertical-divider{height:50%;margin:0 12px}.aca-manage-rules__container{display:grid;grid-template-columns:minmax(250px,1fr) 3fr;padding:20px;gap:12px;overflow-y:auto;flex:1}.aca-manage-rules__container__rule-details{border:1px solid var(--theme-border-color);border-radius:12px;overflow-y:auto}.aca-manage-rules__container__rule-details__header{position:sticky;top:0;z-index:1;display:flex;flex-direction:row;align-items:flex-start;overflow-x:auto;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--theme-border-color);background-color:var(--theme-background-color);column-gap:20px}.aca-manage-rules__container__rule-details__header__title{display:flex;flex-direction:column;gap:4px;word-wrap:break-word;min-width:100px}.aca-manage-rules__container__rule-details__header__title__name{font-size:1.2em;font-weight:700}.aca-manage-rules__container__rule-details__header__title__description{font-size:.8em;font-style:italic}.aca-manage-rules__container__rule-details__header__buttons{display:flex;flex-direction:row;align-items:stretch;gap:4px}.aca-manage-rules__container__rule-details__header__buttons button{color:var(--theme-text-color)}.aca-manage-rules__container__rule-details__header__buttons button#delete-rule-btn{padding:0 8px;min-width:unset}.aca-manage-rules__container__rule-details__header__buttons button .mat-icon{overflow:hidden!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "component", type: PageLayoutComponent, selector: "aca-page-layout", inputs: ["hasError"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i5.ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: i5.ToolbarTitleComponent, selector: "adf-toolbar-title" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i9.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i12.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i13.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: RuleListUiComponent, selector: "aca-rule-list", inputs: ["mainRuleSet", "folderId", "inheritedRuleSets", "hasMoreRuleSets", "ruleSetsLoading", "selectedRule"], outputs: ["loadMoreRuleSets", "loadMoreRules", "selectRule", "ruleEnabledChanged", "ruleSetEditLinkClicked", "ruleSetUnlinkClicked"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "ngmodule", type: TemplateModule }, { kind: "component", type: i5.EmptyContentComponent, selector: "adf-empty-content", inputs: ["icon", "title", "subtitle"] }, { kind: "component", type: GenericErrorComponent, selector: "aca-generic-error", inputs: ["text"] }, { kind: "component", type: RuleDetailsUiComponent, selector: "aca-rule-details", inputs: ["readOnly", "value", "preview", "actionDefinitions", "parameterConstraints", "nodeId"], outputs: ["formValidationChanged", "formValueChanged"] }, { kind: "ngmodule", type: MatDialogModule }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
|
|
240
|
+
ManageRulesSmartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: ManageRulesSmartComponent, isStandalone: true, selector: "aca-manage-rules", host: { classAttribute: "aca-manage-rules" }, ngImport: i0, template: "<aca-page-layout>\n\n <div class=\"aca-page-layout-header\">\n <adf-toolbar class=\"adf-toolbar--inline\">\n <button mat-icon-button (click)=\"goBack()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </adf-toolbar>\n <h1 class=\"aca-page-title\">{{ 'ACA_FOLDER_RULES.ACTIONS.MANAGE_RULES' | translate }}</h1>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"main-content\">\n\n <ng-container *ngIf=\"((ruleSetsLoading$ | async) && (inheritedRuleSets$ | async).length === 0) || (actionsLoading$ | async); else onLoaded\">\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </ng-container>\n\n <ng-template #onLoaded>\n <ng-container *ngIf=\"folderInfo$ | async; else genericError\">\n <adf-toolbar class=\"adf-toolbar--inline aca-manage-rules__actions-bar\">\n\n <adf-toolbar-title class=\"aca-manage-rules__actions-bar__title\">\n <mat-icon class=\"icon-aligner\">folder</mat-icon>\n <h2 class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</h2>\n </adf-toolbar-title>\n\n <mat-slide-toggle\n data-automation-id=\"manage-rules-inheritance-toggle-button\"\n [checked]=\"isInheritanceEnabled\"\n (change)=\"onInheritanceToggleChange($event)\"\n [disabled]=\"isInheritanceToggleDisabled\"\n [labelPosition]=\"'before'\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.INHERIT_RULES' | translate }}\n </mat-slide-toggle>\n\n <mat-divider vertical class=\"vertical-divider\"></mat-divider>\n\n <div class=\"aca-manage-rules__actions-bar__buttons\">\n <button\n *ngIf=\"!(mainRuleSet$ | async)\"\n data-automation-id=\"manage-rules-link-button\"\n mat-stroked-button\n (click)=\"openLinkRulesDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.LINK_RULES' | translate }}\n </button>\n\n <button\n *ngIf=\"canEditMainRule\"\n data-automation-id=\"manage-rules-create-button\"\n mat-flat-button color=\"primary\"\n (click)=\"openCreateUpdateRuleDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.CREATE_RULE' | translate }}\n </button>\n </div>\n\n </adf-toolbar>\n <mat-divider></mat-divider>\n\n <div class=\"aca-manage-rules__container\" *ngIf=\"isMainRuleSetNotEmpty || isInheritedRuleSetsNotEmpty; else emptyContent\">\n <aca-rule-list\n [mainRuleSet]=\"mainRuleSet$ | async\"\n [folderId]=\"nodeId\"\n [inheritedRuleSets]=\"inheritedRuleSets$ | async\"\n [hasMoreRuleSets]=\"hasMoreRuleSets$ | async\"\n [ruleSetsLoading]=\"ruleSetsLoading$ | async\"\n [selectedRule]=\"selectedRule$ | async\"\n (loadMoreRuleSets)=\"onLoadMoreRuleSets()\"\n (loadMoreRules)=\"onLoadMoreRules($event)\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledToggle($event[0], $event[1])\"\n (ruleSetEditLinkClicked)=\"openLinkRulesDialog($event)\"\n (ruleSetUnlinkClicked)=\"onRuleSetUnlinkClicked($event)\">\n </aca-rule-list>\n\n <div class=\"aca-manage-rules__container__rule-details\">\n\n <div class=\"aca-manage-rules__container__rule-details__header\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <div class=\"aca-manage-rules__container__rule-details__header__title\">\n <div class=\"aca-manage-rules__container__rule-details__header__title__name\">\n {{ selectedRule.name }}\n </div>\n <div class=\"aca-manage-rules__container__rule-details__header__title__description\">\n {{ selectedRule.description }}\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__header__buttons\">\n <ng-container *ngIf=\"canEditSelectedRule; else goToFolderButton\">\n <button mat-stroked-button (click)=\"onRuleDeleteButtonClicked(selectedRule)\" id=\"delete-rule-btn\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n <button mat-stroked-button (click)=\"openCreateUpdateRuleDialog(selectedRule)\" id=\"edit-rule-btn\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.EDIT_RULE' | translate }}\n </button>\n </ng-container>\n\n <ng-template #goToFolderButton>\n <button mat-stroked-button [routerLink]=\"['/nodes', (selectedRuleSet$ | async).owningFolder.id, 'rules']\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n </button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__content\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <aca-rule-details\n [actionDefinitions]=\"actionDefinitions$ | async\"\n [readOnly]=\"true\"\n [preview]=\"true\"\n [value]=\"selectedRule\"\n [nodeId]=\"nodeId\">\n </aca-rule-details>\n </div>\n </div>\n </div>\n\n <ng-template #emptyContent>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.TITLE' | translate\"\n [subtitle]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.SUBTITLE' | translate\"\n >\n </adf-empty-content>\n </ng-template>\n </ng-container>\n\n <ng-template #genericError>\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n </ng-template>\n\n </ng-template>\n\n </div>\n </div>\n\n</aca-page-layout>\n", styles: [".aca-manage-rules__actions-bar{padding:0 30px;display:flex;align-items:center}.aca-manage-rules__actions-bar .aca-page-title{margin-left:18px}.aca-manage-rules__actions-bar__title{align-items:center;flex:1}.aca-manage-rules__actions-bar__buttons{display:flex;align-items:stretch;gap:12px}.aca-manage-rules__actions-bar .mat-slide-toggle-label{font-weight:600;font-size:14px}.aca-manage-rules__actions-bar .vertical-divider{height:50%;margin:0 12px}.aca-manage-rules__container{display:grid;grid-template-columns:minmax(250px,1fr) 3fr;padding:20px;gap:12px;overflow-y:auto;flex:1}.aca-manage-rules__container__rule-details{border:1px solid var(--theme-border-color);border-radius:12px;overflow-y:auto}.aca-manage-rules__container__rule-details__header{position:sticky;top:0;z-index:1;display:flex;flex-direction:row;align-items:flex-start;overflow-x:auto;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--theme-border-color);background-color:var(--theme-background-color);column-gap:20px}.aca-manage-rules__container__rule-details__header__title{display:flex;flex-direction:column;gap:4px;word-wrap:break-word;min-width:100px}.aca-manage-rules__container__rule-details__header__title__name{font-size:1.2em;font-weight:700}.aca-manage-rules__container__rule-details__header__title__description{font-size:.8em;font-style:italic}.aca-manage-rules__container__rule-details__header__buttons{display:flex;flex-direction:row;align-items:stretch;gap:4px}.aca-manage-rules__container__rule-details__header__buttons button{color:var(--theme-text-color)}.aca-manage-rules__container__rule-details__header__buttons button#delete-rule-btn{padding:0 8px;min-width:unset}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "component", type: PageLayoutComponent, selector: "aca-page-layout", inputs: ["hasError"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i5.ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: i5.ToolbarTitleComponent, selector: "adf-toolbar-title" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i9.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i12.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i13.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: RuleListUiComponent, selector: "aca-rule-list", inputs: ["mainRuleSet", "folderId", "inheritedRuleSets", "hasMoreRuleSets", "ruleSetsLoading", "selectedRule"], outputs: ["loadMoreRuleSets", "loadMoreRules", "selectRule", "ruleEnabledChanged", "ruleSetEditLinkClicked", "ruleSetUnlinkClicked"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "ngmodule", type: TemplateModule }, { kind: "component", type: i5.EmptyContentComponent, selector: "adf-empty-content", inputs: ["icon", "title", "subtitle"] }, { kind: "component", type: GenericErrorComponent, selector: "aca-generic-error", inputs: ["text"] }, { kind: "component", type: RuleDetailsUiComponent, selector: "aca-rule-details", inputs: ["readOnly", "value", "preview", "actionDefinitions", "parameterConstraints", "nodeId"], outputs: ["formValidationChanged", "formValueChanged"] }, { kind: "ngmodule", type: MatDialogModule }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
|
|
241
241
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: ManageRulesSmartComponent, decorators: [{
|
|
242
242
|
type: Component,
|
|
243
243
|
args: [{ standalone: true, imports: [
|
|
@@ -256,6 +256,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
|
|
|
256
256
|
GenericErrorComponent,
|
|
257
257
|
RuleDetailsUiComponent,
|
|
258
258
|
MatDialogModule
|
|
259
|
-
], selector: 'aca-manage-rules', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, host: { class: 'aca-manage-rules' }, template: "<aca-page-layout>\n\n <div class=\"aca-page-layout-header\">\n <adf-toolbar class=\"adf-toolbar--inline\">\n <button mat-icon-button (click)=\"goBack()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </adf-toolbar>\n <h1 class=\"aca-page-title\">{{ 'ACA_FOLDER_RULES.ACTIONS.MANAGE_RULES' | translate }}</h1>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"main-content\">\n\n <ng-container *ngIf=\"((ruleSetsLoading$ | async) && (inheritedRuleSets$ | async).length === 0) || (actionsLoading$ | async); else onLoaded\">\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </ng-container>\n\n <ng-template #onLoaded>\n <ng-container *ngIf=\"folderInfo$ | async; else genericError\">\n <adf-toolbar class=\"adf-toolbar--inline aca-manage-rules__actions-bar\">\n\n <adf-toolbar-title class=\"aca-manage-rules__actions-bar__title\">\n <mat-icon class=\"icon-aligner\">folder</mat-icon>\n <h2 class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</h2>\n </adf-toolbar-title>\n\n <mat-slide-toggle\n data-automation-id=\"manage-rules-inheritance-toggle-button\"\n [checked]=\"isInheritanceEnabled\"\n (change)=\"onInheritanceToggleChange($event)\"\n [disabled]=\"isInheritanceToggleDisabled\"\n [labelPosition]=\"'before'\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.INHERIT_RULES' | translate }}\n </mat-slide-toggle>\n\n <mat-divider vertical class=\"vertical-divider\"></mat-divider>\n\n <div class=\"aca-manage-rules__actions-bar__buttons\">\n <button\n *ngIf=\"!(mainRuleSet$ | async)\"\n data-automation-id=\"manage-rules-link-button\"\n mat-stroked-button\n (click)=\"openLinkRulesDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.LINK_RULES' | translate }}\n </button>\n\n <button\n *ngIf=\"canEditMainRule\"\n data-automation-id=\"manage-rules-create-button\"\n mat-flat-button color=\"primary\"\n (click)=\"openCreateUpdateRuleDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.CREATE_RULE' | translate }}\n </button>\n </div>\n\n </adf-toolbar>\n <mat-divider></mat-divider>\n\n <div class=\"aca-manage-rules__container\" *ngIf=\"isMainRuleSetNotEmpty || isInheritedRuleSetsNotEmpty; else emptyContent\">\n <aca-rule-list\n [mainRuleSet]=\"mainRuleSet$ | async\"\n [folderId]=\"nodeId\"\n [inheritedRuleSets]=\"inheritedRuleSets$ | async\"\n [hasMoreRuleSets]=\"hasMoreRuleSets$ | async\"\n [ruleSetsLoading]=\"ruleSetsLoading$ | async\"\n [selectedRule]=\"selectedRule$ | async\"\n (loadMoreRuleSets)=\"onLoadMoreRuleSets()\"\n (loadMoreRules)=\"onLoadMoreRules($event)\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledToggle($event[0], $event[1])\"\n (ruleSetEditLinkClicked)=\"openLinkRulesDialog($event)\"\n (ruleSetUnlinkClicked)=\"onRuleSetUnlinkClicked($event)\">\n </aca-rule-list>\n\n <div class=\"aca-manage-rules__container__rule-details\">\n\n <div class=\"aca-manage-rules__container__rule-details__header\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <div class=\"aca-manage-rules__container__rule-details__header__title\">\n <div class=\"aca-manage-rules__container__rule-details__header__title__name\">\n {{ selectedRule.name }}\n </div>\n <div class=\"aca-manage-rules__container__rule-details__header__title__description\">\n {{ selectedRule.description }}\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__header__buttons\">\n <ng-container *ngIf=\"canEditSelectedRule; else goToFolderButton\">\n <button mat-stroked-button (click)=\"onRuleDeleteButtonClicked(selectedRule)\" id=\"delete-rule-btn\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n <button mat-stroked-button (click)=\"openCreateUpdateRuleDialog(selectedRule)\" id=\"edit-rule-btn\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.EDIT_RULE' | translate }}\n </button>\n </ng-container>\n\n <ng-template #goToFolderButton>\n <button mat-stroked-button [routerLink]=\"['/nodes', (selectedRuleSet$ | async).owningFolder.id, 'rules']\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n </button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__content\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <aca-rule-details\n [actionDefinitions]=\"actionDefinitions$ | async\"\n [readOnly]=\"true\"\n [preview]=\"true\"\n [value]=\"selectedRule\"\n [nodeId]=\"nodeId\">\n </aca-rule-details>\n </div>\n </div>\n </div>\n\n <ng-template #emptyContent>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.TITLE' | translate\"\n [subtitle]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.SUBTITLE' | translate\"\n >\n </adf-empty-content>\n </ng-template>\n </ng-container>\n\n <ng-template #genericError>\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n </ng-template>\n\n </ng-template>\n\n </div>\n </div>\n\n</aca-page-layout>\n", styles: [".aca-manage-rules__actions-bar{padding:0 30px;display:flex;align-items:center}.aca-manage-rules__actions-bar .aca-page-title{margin-left:18px}.aca-manage-rules__actions-bar__title{align-items:center;
|
|
259
|
+
], selector: 'aca-manage-rules', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, host: { class: 'aca-manage-rules' }, template: "<aca-page-layout>\n\n <div class=\"aca-page-layout-header\">\n <adf-toolbar class=\"adf-toolbar--inline\">\n <button mat-icon-button (click)=\"goBack()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </adf-toolbar>\n <h1 class=\"aca-page-title\">{{ 'ACA_FOLDER_RULES.ACTIONS.MANAGE_RULES' | translate }}</h1>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"main-content\">\n\n <ng-container *ngIf=\"((ruleSetsLoading$ | async) && (inheritedRuleSets$ | async).length === 0) || (actionsLoading$ | async); else onLoaded\">\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </ng-container>\n\n <ng-template #onLoaded>\n <ng-container *ngIf=\"folderInfo$ | async; else genericError\">\n <adf-toolbar class=\"adf-toolbar--inline aca-manage-rules__actions-bar\">\n\n <adf-toolbar-title class=\"aca-manage-rules__actions-bar__title\">\n <mat-icon class=\"icon-aligner\">folder</mat-icon>\n <h2 class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</h2>\n </adf-toolbar-title>\n\n <mat-slide-toggle\n data-automation-id=\"manage-rules-inheritance-toggle-button\"\n [checked]=\"isInheritanceEnabled\"\n (change)=\"onInheritanceToggleChange($event)\"\n [disabled]=\"isInheritanceToggleDisabled\"\n [labelPosition]=\"'before'\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.INHERIT_RULES' | translate }}\n </mat-slide-toggle>\n\n <mat-divider vertical class=\"vertical-divider\"></mat-divider>\n\n <div class=\"aca-manage-rules__actions-bar__buttons\">\n <button\n *ngIf=\"!(mainRuleSet$ | async)\"\n data-automation-id=\"manage-rules-link-button\"\n mat-stroked-button\n (click)=\"openLinkRulesDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.LINK_RULES' | translate }}\n </button>\n\n <button\n *ngIf=\"canEditMainRule\"\n data-automation-id=\"manage-rules-create-button\"\n mat-flat-button color=\"primary\"\n (click)=\"openCreateUpdateRuleDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.CREATE_RULE' | translate }}\n </button>\n </div>\n\n </adf-toolbar>\n <mat-divider></mat-divider>\n\n <div class=\"aca-manage-rules__container\" *ngIf=\"isMainRuleSetNotEmpty || isInheritedRuleSetsNotEmpty; else emptyContent\">\n <aca-rule-list\n [mainRuleSet]=\"mainRuleSet$ | async\"\n [folderId]=\"nodeId\"\n [inheritedRuleSets]=\"inheritedRuleSets$ | async\"\n [hasMoreRuleSets]=\"hasMoreRuleSets$ | async\"\n [ruleSetsLoading]=\"ruleSetsLoading$ | async\"\n [selectedRule]=\"selectedRule$ | async\"\n (loadMoreRuleSets)=\"onLoadMoreRuleSets()\"\n (loadMoreRules)=\"onLoadMoreRules($event)\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledToggle($event[0], $event[1])\"\n (ruleSetEditLinkClicked)=\"openLinkRulesDialog($event)\"\n (ruleSetUnlinkClicked)=\"onRuleSetUnlinkClicked($event)\">\n </aca-rule-list>\n\n <div class=\"aca-manage-rules__container__rule-details\">\n\n <div class=\"aca-manage-rules__container__rule-details__header\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <div class=\"aca-manage-rules__container__rule-details__header__title\">\n <div class=\"aca-manage-rules__container__rule-details__header__title__name\">\n {{ selectedRule.name }}\n </div>\n <div class=\"aca-manage-rules__container__rule-details__header__title__description\">\n {{ selectedRule.description }}\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__header__buttons\">\n <ng-container *ngIf=\"canEditSelectedRule; else goToFolderButton\">\n <button mat-stroked-button (click)=\"onRuleDeleteButtonClicked(selectedRule)\" id=\"delete-rule-btn\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n <button mat-stroked-button (click)=\"openCreateUpdateRuleDialog(selectedRule)\" id=\"edit-rule-btn\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.EDIT_RULE' | translate }}\n </button>\n </ng-container>\n\n <ng-template #goToFolderButton>\n <button mat-stroked-button [routerLink]=\"['/nodes', (selectedRuleSet$ | async).owningFolder.id, 'rules']\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n </button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__content\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <aca-rule-details\n [actionDefinitions]=\"actionDefinitions$ | async\"\n [readOnly]=\"true\"\n [preview]=\"true\"\n [value]=\"selectedRule\"\n [nodeId]=\"nodeId\">\n </aca-rule-details>\n </div>\n </div>\n </div>\n\n <ng-template #emptyContent>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.TITLE' | translate\"\n [subtitle]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.SUBTITLE' | translate\"\n >\n </adf-empty-content>\n </ng-template>\n </ng-container>\n\n <ng-template #genericError>\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n </ng-template>\n\n </ng-template>\n\n </div>\n </div>\n\n</aca-page-layout>\n", styles: [".aca-manage-rules__actions-bar{padding:0 30px;display:flex;align-items:center}.aca-manage-rules__actions-bar .aca-page-title{margin-left:18px}.aca-manage-rules__actions-bar__title{align-items:center;flex:1}.aca-manage-rules__actions-bar__buttons{display:flex;align-items:stretch;gap:12px}.aca-manage-rules__actions-bar .mat-slide-toggle-label{font-weight:600;font-size:14px}.aca-manage-rules__actions-bar .vertical-divider{height:50%;margin:0 12px}.aca-manage-rules__container{display:grid;grid-template-columns:minmax(250px,1fr) 3fr;padding:20px;gap:12px;overflow-y:auto;flex:1}.aca-manage-rules__container__rule-details{border:1px solid var(--theme-border-color);border-radius:12px;overflow-y:auto}.aca-manage-rules__container__rule-details__header{position:sticky;top:0;z-index:1;display:flex;flex-direction:row;align-items:flex-start;overflow-x:auto;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--theme-border-color);background-color:var(--theme-background-color);column-gap:20px}.aca-manage-rules__container__rule-details__header__title{display:flex;flex-direction:column;gap:4px;word-wrap:break-word;min-width:100px}.aca-manage-rules__container__rule-details__header__title__name{font-size:1.2em;font-weight:700}.aca-manage-rules__container__rule-details__header__title__description{font-size:.8em;font-style:italic}.aca-manage-rules__container__rule-details__header__buttons{display:flex;flex-direction:row;align-items:stretch;gap:4px}.aca-manage-rules__container__rule-details__header__buttons button{color:var(--theme-text-color)}.aca-manage-rules__container__rule-details__header__buttons button#delete-rule-btn{padding:0 8px;min-width:unset}\n"] }]
|
|
260
260
|
}], ctorParameters: function () { return [{ type: i1.Location }, { type: i2.FolderRulesService }, { type: i3.ActivatedRoute }, { type: i4.MatDialog }, { type: i5.NotificationService }, { type: i6.ActionsService }, { type: i7.FolderRuleSetsService }]; } });
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXJ1bGVzLnNtYXJ0LWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L2ZvbGRlci1ydWxlcy9zcmMvbWFuYWdlLXJ1bGVzL21hbmFnZS1ydWxlcy5zbWFydC1jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9mb2xkZXItcnVsZXMvc3JjL21hbmFnZS1ydWxlcy9tYW5hZ2UtcnVsZXMuc21hcnQtY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2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b0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QixlQUFlO3FCQUNoQixZQUNTLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxPQUFPLFFBQzFDLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb2xkZXJSdWxlc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mb2xkZXItcnVsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJ1bGUgfSBmcm9tICcuLi9tb2RlbC9ydWxlLm1vZGVsJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTm9kZUluZm8gfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBkZWxheSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWRpdFJ1bGVEaWFsb2dVaUNvbXBvbmVudCB9IGZyb20gJy4uL3J1bGUtZGV0YWlscy9lZGl0LXJ1bGUtZGlhbG9nLnVpLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UsIFRlbXBsYXRlTW9kdWxlLCBUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZCB9IGZyb20gJy4uL21vZGVsL3J1bGUtYWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IEFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWN0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEZvbGRlclJ1bGVTZXRzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZvbGRlci1ydWxlLXNldHMuc2VydmljZSc7XG5pbXBvcnQgeyBSdWxlU2V0IH0gZnJvbSAnLi4vbW9kZWwvcnVsZS1zZXQubW9kZWwnO1xuaW1wb3J0IHsgUnVsZVNldFBpY2tlclNtYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi4vcnVsZS1zZXQtcGlja2VyL3J1bGUtc2V0LXBpY2tlci5zbWFydC1jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVDaGFuZ2UsIE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IEFjdGlvblBhcmFtZXRlckNvbnN0cmFpbnQgfSBmcm9tICcuLi9tb2RlbC9hY3Rpb24tcGFyYW1ldGVyLWNvbnN0cmFpbnQubW9kZWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBHZW5lcmljRXJyb3JDb21wb25lbnQsIFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgUnVsZUxpc3RVaUNvbXBvbmVudCB9IGZyb20gJy4uL3J1bGUtbGlzdC9ydWxlLWxpc3QvcnVsZS1saXN0LnVpLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBSdWxlRGV0YWlsc1VpQ29tcG9uZW50IH0gZnJvbSAnLi4vcnVsZS1kZXRhaWxzL3J1bGUtZGV0YWlscy51aS1jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgUGFnZUxheW91dENvbXBvbmVudCxcbiAgICBUb29sYmFyTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgUnVsZUxpc3RVaUNvbXBvbmVudCxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgVGVtcGxhdGVNb2R1bGUsXG4gICAgR2VuZXJpY0Vycm9yQ29tcG9uZW50LFxuICAgIFJ1bGVEZXRhaWxzVWlDb21wb25lbnQsXG4gICAgTWF0RGlhbG9nTW9kdWxlXG4gIF0sXG4gIHNlbGVjdG9yOiAnYWNhLW1hbmFnZS1ydWxlcycsXG4gIHRlbXBsYXRlVXJsOiAnbWFuYWdlLXJ1bGVzLnNtYXJ0LWNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ21hbmFnZS1ydWxlcy5zbWFydC1jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhY2EtbWFuYWdlLXJ1bGVzJyB9XG59KVxuZXhwb3J0IGNsYXNzIE1hbmFnZVJ1bGVzU21hcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIG5vZGVJZCA9ICcnO1xuICBpc0luaGVyaXRhbmNlRW5hYmxlZCA9IHRydWU7XG4gIGlzSW5oZXJpdGFuY2VUb2dnbGVEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIG1haW5SdWxlU2V0JDogT2JzZXJ2YWJsZTxSdWxlU2V0PjtcbiAgaW5oZXJpdGVkUnVsZVNldHMkOiBPYnNlcnZhYmxlPFJ1bGVTZXRbXT47XG4gIHNlbGVjdGVkUnVsZSQ6IE9ic2VydmFibGU8UnVsZT47XG4gIHNlbGVjdGVkUnVsZVNldCQ6IE9ic2VydmFibGU8UnVsZVNldD47XG4gIGhhc01vcmVSdWxlU2V0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHJ1bGVTZXRzTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGZvbGRlckluZm8kOiBPYnNlcnZhYmxlPE5vZGVJbmZvPjtcblxuICBhY3Rpb25zTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFjdGlvbkRlZmluaXRpb25zJDogT2JzZXJ2YWJsZTxBY3Rpb25EZWZpbml0aW9uVHJhbnNmb3JtZWRbXT47XG4gIHBhcmFtZXRlckNvbnN0cmFpbnRzJDogT2JzZXJ2YWJsZTxBY3Rpb25QYXJhbWV0ZXJDb25zdHJhaW50W10+O1xuICBjYW5FZGl0TWFpblJ1bGUgPSBmYWxzZTtcbiAgY2FuRWRpdFNlbGVjdGVkUnVsZSA9IGZhbHNlO1xuICBpc01haW5SdWxlU2V0Tm90RW1wdHkgPSBmYWxzZTtcbiAgaXNJbmhlcml0ZWRSdWxlU2V0c05vdEVtcHR5ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfYWN0aW9uRGVmaW5pdGlvbnNTdWI6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIGZvbGRlclJ1bGVzU2VydmljZTogRm9sZGVyUnVsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgbWF0RGlhbG9nU2VydmljZTogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvbnNTZXJ2aWNlOiBBY3Rpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGZvbGRlclJ1bGVTZXRzU2VydmljZTogRm9sZGVyUnVsZVNldHNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm1haW5SdWxlU2V0JCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLm1haW5SdWxlU2V0JDtcbiAgICB0aGlzLmluaGVyaXRlZFJ1bGVTZXRzJCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmluaGVyaXRlZFJ1bGVTZXRzJDtcbiAgICB0aGlzLnNlbGVjdGVkUnVsZSQgPSB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5zZWxlY3RlZFJ1bGUkO1xuICAgIHRoaXMuc2VsZWN0ZWRSdWxlU2V0JCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLnNlbGVjdGVkUnVsZVNldCQ7XG4gICAgdGhpcy5oYXNNb3JlUnVsZVNldHMkID0gdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UuaGFzTW9yZVJ1bGVTZXRzJDtcbiAgICB0aGlzLnJ1bGVTZXRzTG9hZGluZyQgPSB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5pc0xvYWRpbmckO1xuICAgIHRoaXMuZm9sZGVySW5mbyQgPSB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5mb2xkZXJJbmZvJDtcblxuICAgIHRoaXMuYWN0aW9uc0xvYWRpbmckID0gdGhpcy5hY3Rpb25zU2VydmljZS5sb2FkaW5nJC5waXBlKGRlbGF5KDApKTtcbiAgICB0aGlzLmFjdGlvbkRlZmluaXRpb25zJCA9IHRoaXMuYWN0aW9uc1NlcnZpY2UuYWN0aW9uRGVmaW5pdGlvbnNMaXN0aW5nJDtcbiAgICB0aGlzLnBhcmFtZXRlckNvbnN0cmFpbnRzJCA9IHRoaXMuYWN0aW9uc1NlcnZpY2UucGFyYW1ldGVyQ29uc3RyYWludHMkO1xuXG4gICAgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UuZGVsZXRlZFJ1bGVJZCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChkZWxldGVkUnVsZUlkKSA9PiB0aGlzLm9uUnVsZURlbGV0ZShkZWxldGVkUnVsZUlkKSk7XG5cbiAgICB0aGlzLmFjdGlvbnNTZXJ2aWNlLmxvYWRBY3Rpb25EZWZpbml0aW9ucygpO1xuXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMubm9kZUlkID0gcGFyYW1zLm5vZGVJZDtcbiAgICAgIGlmICh0aGlzLm5vZGVJZCkge1xuICAgICAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5nZXRSdWxlU2V0dGluZ3ModGhpcy5ub2RlSWQpLnRoZW4oKHJ1bGVTZXR0aW5ncykgPT4ge1xuICAgICAgICAgIHRoaXMuaXNJbmhlcml0YW5jZUVuYWJsZWQgPSBydWxlU2V0dGluZ3MudmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmxvYWRSdWxlU2V0cyh0aGlzLm5vZGVJZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLl9hY3Rpb25EZWZpbml0aW9uc1N1YiA9IHRoaXMuYWN0aW9uRGVmaW5pdGlvbnMkLnN1YnNjcmliZSgoYWN0aW9uRGVmaW5pdGlvbnM6IEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZFtdKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zU2VydmljZS5sb2FkQWN0aW9uUGFyYW1ldGVyQ29uc3RyYWludHMoYWN0aW9uRGVmaW5pdGlvbnMpXG4gICAgKTtcblxuICAgIHRoaXMubWFpblJ1bGVTZXQkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgocnVsZVNldCkgPT4ge1xuICAgICAgdGhpcy5jYW5FZGl0TWFpblJ1bGUgPSB0aGlzLmNhbkVkaXRSdWxlKHJ1bGVTZXQpO1xuICAgICAgdGhpcy5pc01haW5SdWxlU2V0Tm90RW1wdHkgPSAhIXJ1bGVTZXQ7XG4gICAgfSk7XG5cbiAgICB0aGlzLmluaGVyaXRlZFJ1bGVTZXRzJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKGluaGVyaXRlZFJ1bGVTZXQpID0+IHtcbiAgICAgIHRoaXMuaXNJbmhlcml0ZWRSdWxlU2V0c05vdEVtcHR5ID0gaW5oZXJpdGVkUnVsZVNldC5zb21lKChydWxlU2V0KSA9PiBydWxlU2V0LnJ1bGVzLnNvbWUoKHJ1bGU6IFJ1bGUpID0+IHJ1bGUuaXNFbmFibGVkKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkUnVsZVNldCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChydWxlU2V0KSA9PiB7XG4gICAgICB0aGlzLmNhbkVkaXRTZWxlY3RlZFJ1bGUgPSB0aGlzLmNhbkVkaXRSdWxlKHJ1bGVTZXQpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9hY3Rpb25EZWZpbml0aW9uc1N1Yi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ29CYWNrKCk6IHZvaWQge1xuICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICB9XG5cbiAgb25TZWxlY3RSdWxlKHJ1bGU6IFJ1bGUpIHtcbiAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5zZWxlY3RSdWxlKHJ1bGUpO1xuICB9XG5cbiAgb3BlbkNyZWF0ZVVwZGF0ZVJ1bGVEaWFsb2cobW9kZWwgPSB7fSkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMubWF0RGlhbG9nU2VydmljZS5vcGVuKEVkaXRSdWxlRGlhbG9nVWlDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnOTAlJyxcbiAgICAgIHBhbmVsQ2xhc3M6ICdhY2EtZWRpdC1ydWxlLWRpYWxvZy1jb250YWluZXInLFxuICAgICAgZGF0YToge1xuICAgICAgICBtb2RlbCxcbiAgICAgICAgbm9kZUlkOiB0aGlzLm5vZGVJZCxcbiAgICAgICAgcGFyYW1ldGVyQ29uc3RyYWludHMkOiB0aGlzLnBhcmFtZXRlckNvbnN0cmFpbnRzJCxcbiAgICAgICAgYWN0aW9uRGVmaW5pdGlvbnMkOiB0aGlzLmFjdGlvbkRlZmluaXRpb25zJFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5vblN1Ym1pdFJ1bGVEaWFsb2coZGlhbG9nUmVmKTtcbiAgfVxuXG4gIG9uU3VibWl0UnVsZURpYWxvZyhkaWFsb2dSZWYpIHtcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3VibWl0dGVkLnN1YnNjcmliZShhc3luYyAocnVsZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHJ1bGUuaWQpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm9uUnVsZVVwZGF0ZShydWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm9uUnVsZUNyZWF0ZShydWxlKTtcbiAgICAgICAgfVxuICAgICAgICBkaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93RXJyb3IoZXJyb3IucmVzcG9uc2UuYm9keS5lcnJvci5lcnJvcktleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvblJ1bGVVcGRhdGUocnVsZTogUnVsZSkge1xuICAgIGNvbnN0IG5ld1J1bGUgPSBhd2FpdCB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS51cGRhdGVSdWxlKHRoaXMubm9kZUlkLCBydWxlLmlkLCBydWxlKTtcbiAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5hZGRPclVwZGF0ZVJ1bGVJbk1haW5SdWxlU2V0KG5ld1J1bGUpO1xuICB9XG5cbiAgYXN5bmMgb25SdWxlQ3JlYXRlKHJ1bGVDcmVhdGVQYXJhbXM6IFBhcnRpYWw8UnVsZT4pIHtcbiAgICBjb25zdCBuZXdSdWxlID0gYXdhaXQgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UuY3JlYXRlUnVsZSh0aGlzLm5vZGVJZCwgcnVsZUNyZWF0ZVBhcmFtcyk7XG4gICAgdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UuYWRkT3JVcGRhdGVSdWxlSW5NYWluUnVsZVNldChuZXdSdWxlKTtcbiAgfVxuXG4gIGFzeW5jIG9uUnVsZUVuYWJsZWRUb2dnbGUocnVsZTogUnVsZSwgaXNFbmFibGVkOiBib29sZWFuKSB7XG4gICAgYXdhaXQgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UudXBkYXRlUnVsZSh0aGlzLm5vZGVJZCwgcnVsZS5pZCwgeyAuLi5ydWxlLCBpc0VuYWJsZWQgfSk7XG4gIH1cblxuICBhc3luYyBvbkluaGVyaXRhbmNlVG9nZ2xlQ2hhbmdlKGV2ZW50OiBNYXRTbGlkZVRvZ2dsZUNoYW5nZSkge1xuICAgIHRoaXMuaXNJbmhlcml0YW5jZVRvZ2dsZURpc2FibGVkID0gdHJ1ZTtcbiAgICBjb25zdCBydWxlU2V0dGluZ3MgPSBhd2FpdCB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS51cGRhdGVSdWxlU2V0dGluZ3ModGhpcy5ub2RlSWQsICctaXNJbmhlcml0YW5jZUVuYWJsZWQtJywgeyB2YWx1ZTogZXZlbnQuY2hlY2tlZCB9KTtcbiAgICB0aGlzLmlzSW5oZXJpdGFuY2VFbmFibGVkID0gcnVsZVNldHRpbmdzLnZhbHVlO1xuICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmxvYWRSdWxlU2V0cyh0aGlzLm5vZGVJZCk7XG4gICAgdGhpcy5pc0luaGVyaXRhbmNlVG9nZ2xlRGlzYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIG9uUnVsZURlbGV0ZUJ1dHRvbkNsaWNrZWQocnVsZTogUnVsZSkge1xuICAgIHRoaXMubWF0RGlhbG9nU2VydmljZVxuICAgICAgLm9wZW4oQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgdGl0bGU6ICdBQ0FfRk9MREVSX1JVTEVTLkNPTkZJUk1BVElPTl9ESUFMT0cuREVMRVRFX1JVTEUuVElUTEUnLFxuICAgICAgICAgIG1lc3NhZ2U6ICdBQ0FfRk9MREVSX1JVTEVTLkNPTkZJUk1BVElPTl9ESUFMT0cuREVMRVRFX1JVTEUuTUVTU0FHRSdcbiAgICAgICAgfSxcbiAgICAgICAgbWluV2lkdGg6ICczNDZweCdcbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5kZWxldGVSdWxlKHRoaXMubm9kZUlkLCBydWxlLmlkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvblJ1bGVEZWxldGUoZGVsZXRlZFJ1bGVJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UucmVtb3ZlUnVsZUZyb21NYWluUnVsZVNldChkZWxldGVkUnVsZUlkKTtcbiAgfVxuXG4gIG9uTG9hZE1vcmVSdWxlU2V0cygpIHtcbiAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5sb2FkTW9yZUluaGVyaXRlZFJ1bGVTZXRzKCk7XG4gIH1cblxuICBvbkxvYWRNb3JlUnVsZXMocnVsZVNldDogUnVsZVNldCkge1xuICAgIHRoaXMuZm9sZGVyUnVsZXNTZXJ2aWNlLmxvYWRSdWxlcyhydWxlU2V0KTtcbiAgfVxuXG4gIGNhbkVkaXRSdWxlKHJ1bGVTZXQ6IFJ1bGVTZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXJ1bGVTZXQgfHwgRm9sZGVyUnVsZVNldHNTZXJ2aWNlLmlzT3duZWRSdWxlU2V0KHJ1bGVTZXQsIHRoaXMubm9kZUlkKTtcbiAgfVxuXG4gIG9wZW5MaW5rUnVsZXNEaWFsb2coZXhpc3RpbmdSdWxlU2V0PzogUnVsZVNldCkge1xuICAgIHRoaXMubWF0RGlhbG9nU2VydmljZVxuICAgICAgLm9wZW4oUnVsZVNldFBpY2tlclNtYXJ0Q29tcG9uZW50LCB7XG4gICAgICAgIHdpZHRoOiAnOTAlJyxcbiAgICAgICAgcGFuZWxDbGFzczogJ2FjYS1ydWxlLXNldC1waWNrZXItY29udGFpbmVyJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG5vZGVJZDogdGhpcy5ub2RlSWQsXG4gICAgICAgICAgZGVmYXVsdE5vZGVJZDogdGhpcy5ub2RlSWQsXG4gICAgICAgICAgZXhpc3RpbmdSdWxlU2V0XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5yZWZyZXNoTWFpblJ1bGVTZXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvblJ1bGVTZXRVbmxpbmtDbGlja2VkKGxpbmtlZFJ1bGVTZXQ6IFJ1bGVTZXQpIHtcbiAgICB0aGlzLm1hdERpYWxvZ1NlcnZpY2VcbiAgICAgIC5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHRpdGxlOiAnQUNBX0ZPTERFUl9SVUxFUy5DT05GSVJNQVRJT05fRElBTE9HLkRFTEVURV9SVUxFX1NFVF9MSU5LLlRJVExFJyxcbiAgICAgICAgICBtZXNzYWdlOiAnQUNBX0ZPTERFUl9SVUxFUy5DT05GSVJNQVRJT05fRElBTE9HLkRFTEVURV9SVUxFX1NFVF9MSU5LLk1FU1NBR0UnXG4gICAgICAgIH0sXG4gICAgICAgIG1pbldpZHRoOiAnMzQ2cHgnXG4gICAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmRlbGV0ZVJ1bGVTZXRMaW5rKHRoaXMubm9kZUlkLCBsaW5rZWRSdWxlU2V0LmlkKTtcbiAgICAgICAgICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLnJlZnJlc2hNYWluUnVsZVNldCgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd0Vycm9yKCdBQ0FfRk9MREVSX1JVTEVTLkVSUk9SUy5ERUxFVEVfUlVMRV9TRVRfTElOS19GQUlMRUQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iLCI8YWNhLXBhZ2UtbGF5b3V0PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtaGVhZGVyXCI+XG4gICAgPGFkZi10b29sYmFyIGNsYXNzPVwiYWRmLXRvb2xiYXItLWlubGluZVwiPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5hcnJvd19iYWNrPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvYWRmLXRvb2xiYXI+XG4gICAgPGgxIGNsYXNzPVwiYWNhLXBhZ2UtdGl0bGVcIj57eyAnQUNBX0ZPTERFUl9SVUxFUy5BQ1RJT05TLk1BTkFHRV9SVUxFUycgfCB0cmFuc2xhdGUgfX08L2gxPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWNhLXBhZ2UtbGF5b3V0LWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoKHJ1bGVTZXRzTG9hZGluZyQgfCBhc3luYykgJiYgKGluaGVyaXRlZFJ1bGVTZXRzJCB8IGFzeW5jKS5sZW5ndGggPT09IDApIHx8IChhY3Rpb25zTG9hZGluZyQgfCBhc3luYyk7IGVsc2Ugb25Mb2FkZWRcIj5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNvbkxvYWRlZD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvbGRlckluZm8kIHwgYXN5bmM7IGVsc2UgZ2VuZXJpY0Vycm9yXCI+XG4gICAgICAgICAgPGFkZi10b29sYmFyIGNsYXNzPVwiYWRmLXRvb2xiYXItLWlubGluZSBhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhclwiPlxuXG4gICAgICAgICAgICA8YWRmLXRvb2xiYXItdGl0bGUgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhcl9fdGl0bGVcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1hbGlnbmVyXCI+Zm9sZGVyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiYWNhLXBhZ2UtdGl0bGVcIj57eyAoZm9sZGVySW5mbyQgfCBhc3luYykubmFtZSB9fTp7eydBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkJSRUFEQ1JVTUIuUlVMRVMnIHwgdHJhbnNsYXRlfX08L2gyPlxuICAgICAgICAgICAgPC9hZGYtdG9vbGJhci10aXRsZT5cblxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWFuYWdlLXJ1bGVzLWluaGVyaXRhbmNlLXRvZ2dsZS1idXR0b25cIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0luaGVyaXRhbmNlRW5hYmxlZFwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Jbmhlcml0YW5jZVRvZ2dsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzSW5oZXJpdGFuY2VUb2dnbGVEaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCI+XG4gICAgICAgICAgICAgIHt7ICdBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkFDVElPTlMuSU5IRVJJVF9SVUxFUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyIHZlcnRpY2FsIGNsYXNzPVwidmVydGljYWwtZGl2aWRlclwiPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhcl9fYnV0dG9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhKG1haW5SdWxlU2V0JCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWFuYWdlLXJ1bGVzLWxpbmstYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkxpbmtSdWxlc0RpYWxvZygpXCI+XG4gICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5MSU5LX1JVTEVTJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5FZGl0TWFpblJ1bGVcIlxuICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cIm1hbmFnZS1ydWxlcy1jcmVhdGUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNyZWF0ZVVwZGF0ZVJ1bGVEaWFsb2coKVwiPlxuICAgICAgICAgICAgICAgIHt7ICdBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkFDVElPTlMuQ1JFQVRFX1JVTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L2FkZi10b29sYmFyPlxuICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lclwiICpuZ0lmPVwiaXNNYWluUnVsZVNldE5vdEVtcHR5IHx8IGlzSW5oZXJpdGVkUnVsZVNldHNOb3RFbXB0eTsgZWxzZSBlbXB0eUNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxhY2EtcnVsZS1saXN0XG4gICAgICAgICAgICAgIFttYWluUnVsZVNldF09XCJtYWluUnVsZVNldCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtmb2xkZXJJZF09XCJub2RlSWRcIlxuICAgICAgICAgICAgICBbaW5oZXJpdGVkUnVsZVNldHNdPVwiaW5oZXJpdGVkUnVsZVNldHMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbaGFzTW9yZVJ1bGVTZXRzXT1cImhhc01vcmVSdWxlU2V0cyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtydWxlU2V0c0xvYWRpbmddPVwicnVsZVNldHNMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkUnVsZV09XCJzZWxlY3RlZFJ1bGUkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAobG9hZE1vcmVSdWxlU2V0cyk9XCJvbkxvYWRNb3JlUnVsZVNldHMoKVwiXG4gICAgICAgICAgICAgIChsb2FkTW9yZVJ1bGVzKT1cIm9uTG9hZE1vcmVSdWxlcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKHNlbGVjdFJ1bGUpPVwib25TZWxlY3RSdWxlKCRldmVudClcIlxuICAgICAgICAgICAgICAocnVsZUVuYWJsZWRDaGFuZ2VkKT1cIm9uUnVsZUVuYWJsZWRUb2dnbGUoJGV2ZW50WzBdLCAkZXZlbnRbMV0pXCJcbiAgICAgICAgICAgICAgKHJ1bGVTZXRFZGl0TGlua0NsaWNrZWQpPVwib3BlbkxpbmtSdWxlc0RpYWxvZygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKHJ1bGVTZXRVbmxpbmtDbGlja2VkKT1cIm9uUnVsZVNldFVubGlua0NsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9hY2EtcnVsZS1saXN0PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNcIj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNfX2hlYWRlclwiICpuZ0lmPVwiKHNlbGVjdGVkUnVsZSQgfCBhc3luYykgYXMgc2VsZWN0ZWRSdWxlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX3RpdGxlXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNfX2hlYWRlcl9fdGl0bGVfX25hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRSdWxlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX3RpdGxlX19kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZFJ1bGUuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX2J1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5FZGl0U2VsZWN0ZWRSdWxlOyBlbHNlIGdvVG9Gb2xkZXJCdXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9uUnVsZURlbGV0ZUJ1dHRvbkNsaWNrZWQoc2VsZWN0ZWRSdWxlKVwiIGlkPVwiZGVsZXRlLXJ1bGUtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZV9vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJvcGVuQ3JlYXRlVXBkYXRlUnVsZURpYWxvZyhzZWxlY3RlZFJ1bGUpXCIgaWQ9XCJlZGl0LXJ1bGUtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5FRElUX1JVTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ29Ub0ZvbGRlckJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gW3JvdXRlckxpbmtdPVwiWycvbm9kZXMnLCAoc2VsZWN0ZWRSdWxlU2V0JCB8IGFzeW5jKS5vd25pbmdGb2xkZXIuaWQsICdydWxlcyddXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5TRUVfSU5fRk9MREVSJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19jb250YWluZXJfX3J1bGUtZGV0YWlsc19fY29udGVudFwiICpuZ0lmPVwiKHNlbGVjdGVkUnVsZSQgfCBhc3luYykgYXMgc2VsZWN0ZWRSdWxlXCI+XG4gICAgICAgICAgICAgICAgPGFjYS1ydWxlLWRldGFpbHNcbiAgICAgICAgICAgICAgICAgIFthY3Rpb25EZWZpbml0aW9uc109XCJhY3Rpb25EZWZpbml0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbcHJldmlld109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZFJ1bGVcIlxuICAgICAgICAgICAgICAgICAgW25vZGVJZF09XCJub2RlSWRcIj5cbiAgICAgICAgICAgICAgICA8L2FjYS1ydWxlLWRldGFpbHM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2VtcHR5Q29udGVudD5cbiAgICAgICAgICAgIDxhZGYtZW1wdHktY29udGVudFxuICAgICAgICAgICAgICBpY29uPVwibGlicmFyeV9ib29rc1wiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInQUNBX0ZPTERFUl9SVUxFUy5NQU5BR0VfUlVMRVMuRU1QVFlfUlVMRVNfTElTVC5USVRMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLkVNUFRZX1JVTEVTX0xJU1QuU1VCVElUTEUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvYWRmLWVtcHR5LWNvbnRlbnQ+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNnZW5lcmljRXJyb3I+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1lcnJvclwiPlxuICAgICAgICAgICAgPGFjYS1nZW5lcmljLWVycm9yPjwvYWNhLWdlbmVyaWMtZXJyb3I+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvYWNhLXBhZ2UtbGF5b3V0PlxuIl19
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXJ1bGVzLnNtYXJ0LWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L2ZvbGRlci1ydWxlcy9zcmMvbWFuYWdlLXJ1bGVzL21hbmFnZS1ydWxlcy5zbWFydC1jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9mb2xkZXItcnVsZXMvc3JjL21hbmFnZS1ydWxlcy9tYW5hZ2UtcnVsZXMuc21hcnQtY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2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b0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QixlQUFlO3FCQUNoQixZQUNTLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxPQUFPLFFBQzFDLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb2xkZXJSdWxlc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mb2xkZXItcnVsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJ1bGUgfSBmcm9tICcuLi9tb2RlbC9ydWxlLm1vZGVsJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTm9kZUluZm8gfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBkZWxheSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWRpdFJ1bGVEaWFsb2dVaUNvbXBvbmVudCB9IGZyb20gJy4uL3J1bGUtZGV0YWlscy9lZGl0LXJ1bGUtZGlhbG9nLnVpLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UsIFRlbXBsYXRlTW9kdWxlLCBUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZCB9IGZyb20gJy4uL21vZGVsL3J1bGUtYWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IEFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWN0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEZvbGRlclJ1bGVTZXRzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZvbGRlci1ydWxlLXNldHMuc2VydmljZSc7XG5pbXBvcnQgeyBSdWxlU2V0IH0gZnJvbSAnLi4vbW9kZWwvcnVsZS1zZXQubW9kZWwnO1xuaW1wb3J0IHsgUnVsZVNldFBpY2tlclNtYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi4vcnVsZS1zZXQtcGlja2VyL3J1bGUtc2V0LXBpY2tlci5zbWFydC1jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVDaGFuZ2UsIE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IEFjdGlvblBhcmFtZXRlckNvbnN0cmFpbnQgfSBmcm9tICcuLi9tb2RlbC9hY3Rpb24tcGFyYW1ldGVyLWNvbnN0cmFpbnQubW9kZWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBHZW5lcmljRXJyb3JDb21wb25lbnQsIFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgUnVsZUxpc3RVaUNvbXBvbmVudCB9IGZyb20gJy4uL3J1bGUtbGlzdC9ydWxlLWxpc3QvcnVsZS1saXN0LnVpLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBSdWxlRGV0YWlsc1VpQ29tcG9uZW50IH0gZnJvbSAnLi4vcnVsZS1kZXRhaWxzL3J1bGUtZGV0YWlscy51aS1jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgUGFnZUxheW91dENvbXBvbmVudCxcbiAgICBUb29sYmFyTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgUnVsZUxpc3RVaUNvbXBvbmVudCxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgVGVtcGxhdGVNb2R1bGUsXG4gICAgR2VuZXJpY0Vycm9yQ29tcG9uZW50LFxuICAgIFJ1bGVEZXRhaWxzVWlDb21wb25lbnQsXG4gICAgTWF0RGlhbG9nTW9kdWxlXG4gIF0sXG4gIHNlbGVjdG9yOiAnYWNhLW1hbmFnZS1ydWxlcycsXG4gIHRlbXBsYXRlVXJsOiAnbWFuYWdlLXJ1bGVzLnNtYXJ0LWNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ21hbmFnZS1ydWxlcy5zbWFydC1jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhY2EtbWFuYWdlLXJ1bGVzJyB9XG59KVxuZXhwb3J0IGNsYXNzIE1hbmFnZVJ1bGVzU21hcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIG5vZGVJZCA9ICcnO1xuICBpc0luaGVyaXRhbmNlRW5hYmxlZCA9IHRydWU7XG4gIGlzSW5oZXJpdGFuY2VUb2dnbGVEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIG1haW5SdWxlU2V0JDogT2JzZXJ2YWJsZTxSdWxlU2V0PjtcbiAgaW5oZXJpdGVkUnVsZVNldHMkOiBPYnNlcnZhYmxlPFJ1bGVTZXRbXT47XG4gIHNlbGVjdGVkUnVsZSQ6IE9ic2VydmFibGU8UnVsZT47XG4gIHNlbGVjdGVkUnVsZVNldCQ6IE9ic2VydmFibGU8UnVsZVNldD47XG4gIGhhc01vcmVSdWxlU2V0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHJ1bGVTZXRzTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGZvbGRlckluZm8kOiBPYnNlcnZhYmxlPE5vZGVJbmZvPjtcblxuICBhY3Rpb25zTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFjdGlvbkRlZmluaXRpb25zJDogT2JzZXJ2YWJsZTxBY3Rpb25EZWZpbml0aW9uVHJhbnNmb3JtZWRbXT47XG4gIHBhcmFtZXRlckNvbnN0cmFpbnRzJDogT2JzZXJ2YWJsZTxBY3Rpb25QYXJhbWV0ZXJDb25zdHJhaW50W10+O1xuICBjYW5FZGl0TWFpblJ1bGUgPSBmYWxzZTtcbiAgY2FuRWRpdFNlbGVjdGVkUnVsZSA9IGZhbHNlO1xuICBpc01haW5SdWxlU2V0Tm90RW1wdHkgPSBmYWxzZTtcbiAgaXNJbmhlcml0ZWRSdWxlU2V0c05vdEVtcHR5ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfYWN0aW9uRGVmaW5pdGlvbnNTdWI6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIGZvbGRlclJ1bGVzU2VydmljZTogRm9sZGVyUnVsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgbWF0RGlhbG9nU2VydmljZTogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvbnNTZXJ2aWNlOiBBY3Rpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGZvbGRlclJ1bGVTZXRzU2VydmljZTogRm9sZGVyUnVsZVNldHNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm1haW5SdWxlU2V0JCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLm1haW5SdWxlU2V0JDtcbiAgICB0aGlzLmluaGVyaXRlZFJ1bGVTZXRzJCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmluaGVyaXRlZFJ1bGVTZXRzJDtcbiAgICB0aGlzLnNlbGVjdGVkUnVsZSQgPSB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5zZWxlY3RlZFJ1bGUkO1xuICAgIHRoaXMuc2VsZWN0ZWRSdWxlU2V0JCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLnNlbGVjdGVkUnVsZVNldCQ7XG4gICAgdGhpcy5oYXNNb3JlUnVsZVNldHMkID0gdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UuaGFzTW9yZVJ1bGVTZXRzJDtcbiAgICB0aGlzLnJ1bGVTZXRzTG9hZGluZyQgPSB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5pc0xvYWRpbmckO1xuICAgIHRoaXMuZm9sZGVySW5mbyQgPSB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5mb2xkZXJJbmZvJDtcblxuICAgIHRoaXMuYWN0aW9uc0xvYWRpbmckID0gdGhpcy5hY3Rpb25zU2VydmljZS5sb2FkaW5nJC5waXBlKGRlbGF5KDApKTtcbiAgICB0aGlzLmFjdGlvbkRlZmluaXRpb25zJCA9IHRoaXMuYWN0aW9uc1NlcnZpY2UuYWN0aW9uRGVmaW5pdGlvbnNMaXN0aW5nJDtcbiAgICB0aGlzLnBhcmFtZXRlckNvbnN0cmFpbnRzJCA9IHRoaXMuYWN0aW9uc1NlcnZpY2UucGFyYW1ldGVyQ29uc3RyYWludHMkO1xuXG4gICAgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UuZGVsZXRlZFJ1bGVJZCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChkZWxldGVkUnVsZUlkKSA9PiB0aGlzLm9uUnVsZURlbGV0ZShkZWxldGVkUnVsZUlkKSk7XG5cbiAgICB0aGlzLmFjdGlvbnNTZXJ2aWNlLmxvYWRBY3Rpb25EZWZpbml0aW9ucygpO1xuXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIHRoaXMubm9kZUlkID0gcGFyYW1zLm5vZGVJZDtcbiAgICAgIGlmICh0aGlzLm5vZGVJZCkge1xuICAgICAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5nZXRSdWxlU2V0dGluZ3ModGhpcy5ub2RlSWQpLnRoZW4oKHJ1bGVTZXR0aW5ncykgPT4ge1xuICAgICAgICAgIHRoaXMuaXNJbmhlcml0YW5jZUVuYWJsZWQgPSBydWxlU2V0dGluZ3MudmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmxvYWRSdWxlU2V0cyh0aGlzLm5vZGVJZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLl9hY3Rpb25EZWZpbml0aW9uc1N1YiA9IHRoaXMuYWN0aW9uRGVmaW5pdGlvbnMkLnN1YnNjcmliZSgoYWN0aW9uRGVmaW5pdGlvbnM6IEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZFtdKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zU2VydmljZS5sb2FkQWN0aW9uUGFyYW1ldGVyQ29uc3RyYWludHMoYWN0aW9uRGVmaW5pdGlvbnMpXG4gICAgKTtcblxuICAgIHRoaXMubWFpblJ1bGVTZXQkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgocnVsZVNldCkgPT4ge1xuICAgICAgdGhpcy5jYW5FZGl0TWFpblJ1bGUgPSB0aGlzLmNhbkVkaXRSdWxlKHJ1bGVTZXQpO1xuICAgICAgdGhpcy5pc01haW5SdWxlU2V0Tm90RW1wdHkgPSAhIXJ1bGVTZXQ7XG4gICAgfSk7XG5cbiAgICB0aGlzLmluaGVyaXRlZFJ1bGVTZXRzJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKGluaGVyaXRlZFJ1bGVTZXQpID0+IHtcbiAgICAgIHRoaXMuaXNJbmhlcml0ZWRSdWxlU2V0c05vdEVtcHR5ID0gaW5oZXJpdGVkUnVsZVNldC5zb21lKChydWxlU2V0KSA9PiBydWxlU2V0LnJ1bGVzLnNvbWUoKHJ1bGU6IFJ1bGUpID0+IHJ1bGUuaXNFbmFibGVkKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkUnVsZVNldCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChydWxlU2V0KSA9PiB7XG4gICAgICB0aGlzLmNhbkVkaXRTZWxlY3RlZFJ1bGUgPSB0aGlzLmNhbkVkaXRSdWxlKHJ1bGVTZXQpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9hY3Rpb25EZWZpbml0aW9uc1N1Yi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ29CYWNrKCk6IHZvaWQge1xuICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICB9XG5cbiAgb25TZWxlY3RSdWxlKHJ1bGU6IFJ1bGUpIHtcbiAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5zZWxlY3RSdWxlKHJ1bGUpO1xuICB9XG5cbiAgb3BlbkNyZWF0ZVVwZGF0ZVJ1bGVEaWFsb2cobW9kZWwgPSB7fSkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMubWF0RGlhbG9nU2VydmljZS5vcGVuKEVkaXRSdWxlRGlhbG9nVWlDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnOTAlJyxcbiAgICAgIHBhbmVsQ2xhc3M6ICdhY2EtZWRpdC1ydWxlLWRpYWxvZy1jb250YWluZXInLFxuICAgICAgZGF0YToge1xuICAgICAgICBtb2RlbCxcbiAgICAgICAgbm9kZUlkOiB0aGlzLm5vZGVJZCxcbiAgICAgICAgcGFyYW1ldGVyQ29uc3RyYWludHMkOiB0aGlzLnBhcmFtZXRlckNvbnN0cmFpbnRzJCxcbiAgICAgICAgYWN0aW9uRGVmaW5pdGlvbnMkOiB0aGlzLmFjdGlvbkRlZmluaXRpb25zJFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5vblN1Ym1pdFJ1bGVEaWFsb2coZGlhbG9nUmVmKTtcbiAgfVxuXG4gIG9uU3VibWl0UnVsZURpYWxvZyhkaWFsb2dSZWYpIHtcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3VibWl0dGVkLnN1YnNjcmliZShhc3luYyAocnVsZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHJ1bGUuaWQpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm9uUnVsZVVwZGF0ZShydWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm9uUnVsZUNyZWF0ZShydWxlKTtcbiAgICAgICAgfVxuICAgICAgICBkaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93RXJyb3IoZXJyb3IucmVzcG9uc2UuYm9keS5lcnJvci5lcnJvcktleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvblJ1bGVVcGRhdGUocnVsZTogUnVsZSkge1xuICAgIGNvbnN0IG5ld1J1bGUgPSBhd2FpdCB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS51cGRhdGVSdWxlKHRoaXMubm9kZUlkLCBydWxlLmlkLCBydWxlKTtcbiAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5hZGRPclVwZGF0ZVJ1bGVJbk1haW5SdWxlU2V0KG5ld1J1bGUpO1xuICB9XG5cbiAgYXN5bmMgb25SdWxlQ3JlYXRlKHJ1bGVDcmVhdGVQYXJhbXM6IFBhcnRpYWw8UnVsZT4pIHtcbiAgICBjb25zdCBuZXdSdWxlID0gYXdhaXQgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UuY3JlYXRlUnVsZSh0aGlzLm5vZGVJZCwgcnVsZUNyZWF0ZVBhcmFtcyk7XG4gICAgdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UuYWRkT3JVcGRhdGVSdWxlSW5NYWluUnVsZVNldChuZXdSdWxlKTtcbiAgfVxuXG4gIGFzeW5jIG9uUnVsZUVuYWJsZWRUb2dnbGUocnVsZTogUnVsZSwgaXNFbmFibGVkOiBib29sZWFuKSB7XG4gICAgYXdhaXQgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UudXBkYXRlUnVsZSh0aGlzLm5vZGVJZCwgcnVsZS5pZCwgeyAuLi5ydWxlLCBpc0VuYWJsZWQgfSk7XG4gIH1cblxuICBhc3luYyBvbkluaGVyaXRhbmNlVG9nZ2xlQ2hhbmdlKGV2ZW50OiBNYXRTbGlkZVRvZ2dsZUNoYW5nZSkge1xuICAgIHRoaXMuaXNJbmhlcml0YW5jZVRvZ2dsZURpc2FibGVkID0gdHJ1ZTtcbiAgICBjb25zdCBydWxlU2V0dGluZ3MgPSBhd2FpdCB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS51cGRhdGVSdWxlU2V0dGluZ3ModGhpcy5ub2RlSWQsICctaXNJbmhlcml0YW5jZUVuYWJsZWQtJywgeyB2YWx1ZTogZXZlbnQuY2hlY2tlZCB9KTtcbiAgICB0aGlzLmlzSW5oZXJpdGFuY2VFbmFibGVkID0gcnVsZVNldHRpbmdzLnZhbHVlO1xuICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmxvYWRSdWxlU2V0cyh0aGlzLm5vZGVJZCk7XG4gICAgdGhpcy5pc0luaGVyaXRhbmNlVG9nZ2xlRGlzYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIG9uUnVsZURlbGV0ZUJ1dHRvbkNsaWNrZWQocnVsZTogUnVsZSkge1xuICAgIHRoaXMubWF0RGlhbG9nU2VydmljZVxuICAgICAgLm9wZW4oQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgdGl0bGU6ICdBQ0FfRk9MREVSX1JVTEVTLkNPTkZJUk1BVElPTl9ESUFMT0cuREVMRVRFX1JVTEUuVElUTEUnLFxuICAgICAgICAgIG1lc3NhZ2U6ICdBQ0FfRk9MREVSX1JVTEVTLkNPTkZJUk1BVElPTl9ESUFMT0cuREVMRVRFX1JVTEUuTUVTU0FHRSdcbiAgICAgICAgfSxcbiAgICAgICAgbWluV2lkdGg6ICczNDZweCdcbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5kZWxldGVSdWxlKHRoaXMubm9kZUlkLCBydWxlLmlkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvblJ1bGVEZWxldGUoZGVsZXRlZFJ1bGVJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UucmVtb3ZlUnVsZUZyb21NYWluUnVsZVNldChkZWxldGVkUnVsZUlkKTtcbiAgfVxuXG4gIG9uTG9hZE1vcmVSdWxlU2V0cygpIHtcbiAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5sb2FkTW9yZUluaGVyaXRlZFJ1bGVTZXRzKCk7XG4gIH1cblxuICBvbkxvYWRNb3JlUnVsZXMocnVsZVNldDogUnVsZVNldCkge1xuICAgIHRoaXMuZm9sZGVyUnVsZXNTZXJ2aWNlLmxvYWRSdWxlcyhydWxlU2V0KTtcbiAgfVxuXG4gIGNhbkVkaXRSdWxlKHJ1bGVTZXQ6IFJ1bGVTZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXJ1bGVTZXQgfHwgRm9sZGVyUnVsZVNldHNTZXJ2aWNlLmlzT3duZWRSdWxlU2V0KHJ1bGVTZXQsIHRoaXMubm9kZUlkKTtcbiAgfVxuXG4gIG9wZW5MaW5rUnVsZXNEaWFsb2coZXhpc3RpbmdSdWxlU2V0PzogUnVsZVNldCkge1xuICAgIHRoaXMubWF0RGlhbG9nU2VydmljZVxuICAgICAgLm9wZW4oUnVsZVNldFBpY2tlclNtYXJ0Q29tcG9uZW50LCB7XG4gICAgICAgIHdpZHRoOiAnOTAlJyxcbiAgICAgICAgcGFuZWxDbGFzczogJ2FjYS1ydWxlLXNldC1waWNrZXItY29udGFpbmVyJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG5vZGVJZDogdGhpcy5ub2RlSWQsXG4gICAgICAgICAgZGVmYXVsdE5vZGVJZDogdGhpcy5ub2RlSWQsXG4gICAgICAgICAgZXhpc3RpbmdSdWxlU2V0XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5yZWZyZXNoTWFpblJ1bGVTZXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvblJ1bGVTZXRVbmxpbmtDbGlja2VkKGxpbmtlZFJ1bGVTZXQ6IFJ1bGVTZXQpIHtcbiAgICB0aGlzLm1hdERpYWxvZ1NlcnZpY2VcbiAgICAgIC5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHRpdGxlOiAnQUNBX0ZPTERFUl9SVUxFUy5DT05GSVJNQVRJT05fRElBTE9HLkRFTEVURV9SVUxFX1NFVF9MSU5LLlRJVExFJyxcbiAgICAgICAgICBtZXNzYWdlOiAnQUNBX0ZPTERFUl9SVUxFUy5DT05GSVJNQVRJT05fRElBTE9HLkRFTEVURV9SVUxFX1NFVF9MSU5LLk1FU1NBR0UnXG4gICAgICAgIH0sXG4gICAgICAgIG1pbldpZHRoOiAnMzQ2cHgnXG4gICAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmRlbGV0ZVJ1bGVTZXRMaW5rKHRoaXMubm9kZUlkLCBsaW5rZWRSdWxlU2V0LmlkKTtcbiAgICAgICAgICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLnJlZnJlc2hNYWluUnVsZVNldCgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd0Vycm9yKCdBQ0FfRk9MREVSX1JVTEVTLkVSUk9SUy5ERUxFVEVfUlVMRV9TRVRfTElOS19GQUlMRUQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iLCI8YWNhLXBhZ2UtbGF5b3V0PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtaGVhZGVyXCI+XG4gICAgPGFkZi10b29sYmFyIGNsYXNzPVwiYWRmLXRvb2xiYXItLWlubGluZVwiPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5hcnJvd19iYWNrPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvYWRmLXRvb2xiYXI+XG4gICAgPGgxIGNsYXNzPVwiYWNhLXBhZ2UtdGl0bGVcIj57eyAnQUNBX0ZPTERFUl9SVUxFUy5BQ1RJT05TLk1BTkFHRV9SVUxFUycgfCB0cmFuc2xhdGUgfX08L2gxPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWNhLXBhZ2UtbGF5b3V0LWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoKHJ1bGVTZXRzTG9hZGluZyQgfCBhc3luYykgJiYgKGluaGVyaXRlZFJ1bGVTZXRzJCB8IGFzeW5jKS5sZW5ndGggPT09IDApIHx8IChhY3Rpb25zTG9hZGluZyQgfCBhc3luYyk7IGVsc2Ugb25Mb2FkZWRcIj5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNvbkxvYWRlZD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvbGRlckluZm8kIHwgYXN5bmM7IGVsc2UgZ2VuZXJpY0Vycm9yXCI+XG4gICAgICAgICAgPGFkZi10b29sYmFyIGNsYXNzPVwiYWRmLXRvb2xiYXItLWlubGluZSBhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhclwiPlxuXG4gICAgICAgICAgICA8YWRmLXRvb2xiYXItdGl0bGUgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhcl9fdGl0bGVcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1hbGlnbmVyXCI+Zm9sZGVyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiYWNhLXBhZ2UtdGl0bGVcIj57eyAoZm9sZGVySW5mbyQgfCBhc3luYykubmFtZSB9fTp7eydBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkJSRUFEQ1JVTUIuUlVMRVMnIHwgdHJhbnNsYXRlfX08L2gyPlxuICAgICAgICAgICAgPC9hZGYtdG9vbGJhci10aXRsZT5cblxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWFuYWdlLXJ1bGVzLWluaGVyaXRhbmNlLXRvZ2dsZS1idXR0b25cIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0luaGVyaXRhbmNlRW5hYmxlZFwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Jbmhlcml0YW5jZVRvZ2dsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzSW5oZXJpdGFuY2VUb2dnbGVEaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCI+XG4gICAgICAgICAgICAgIHt7ICdBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkFDVElPTlMuSU5IRVJJVF9SVUxFUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyIHZlcnRpY2FsIGNsYXNzPVwidmVydGljYWwtZGl2aWRlclwiPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhcl9fYnV0dG9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhKG1haW5SdWxlU2V0JCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWFuYWdlLXJ1bGVzLWxpbmstYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkxpbmtSdWxlc0RpYWxvZygpXCI+XG4gICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5MSU5LX1JVTEVTJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5FZGl0TWFpblJ1bGVcIlxuICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cIm1hbmFnZS1ydWxlcy1jcmVhdGUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNyZWF0ZVVwZGF0ZVJ1bGVEaWFsb2coKVwiPlxuICAgICAgICAgICAgICAgIHt7ICdBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkFDVElPTlMuQ1JFQVRFX1JVTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L2FkZi10b29sYmFyPlxuICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lclwiICpuZ0lmPVwiaXNNYWluUnVsZVNldE5vdEVtcHR5IHx8IGlzSW5oZXJpdGVkUnVsZVNldHNOb3RFbXB0eTsgZWxzZSBlbXB0eUNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxhY2EtcnVsZS1saXN0XG4gICAgICAgICAgICAgIFttYWluUnVsZVNldF09XCJtYWluUnVsZVNldCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtmb2xkZXJJZF09XCJub2RlSWRcIlxuICAgICAgICAgICAgICBbaW5oZXJpdGVkUnVsZVNldHNdPVwiaW5oZXJpdGVkUnVsZVNldHMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbaGFzTW9yZVJ1bGVTZXRzXT1cImhhc01vcmVSdWxlU2V0cyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtydWxlU2V0c0xvYWRpbmddPVwicnVsZVNldHNMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkUnVsZV09XCJzZWxlY3RlZFJ1bGUkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAobG9hZE1vcmVSdWxlU2V0cyk9XCJvbkxvYWRNb3JlUnVsZVNldHMoKVwiXG4gICAgICAgICAgICAgIChsb2FkTW9yZVJ1bGVzKT1cIm9uTG9hZE1vcmVSdWxlcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKHNlbGVjdFJ1bGUpPVwib25TZWxlY3RSdWxlKCRldmVudClcIlxuICAgICAgICAgICAgICAocnVsZUVuYWJsZWRDaGFuZ2VkKT1cIm9uUnVsZUVuYWJsZWRUb2dnbGUoJGV2ZW50WzBdLCAkZXZlbnRbMV0pXCJcbiAgICAgICAgICAgICAgKHJ1bGVTZXRFZGl0TGlua0NsaWNrZWQpPVwib3BlbkxpbmtSdWxlc0RpYWxvZygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKHJ1bGVTZXRVbmxpbmtDbGlja2VkKT1cIm9uUnVsZVNldFVubGlua0NsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9hY2EtcnVsZS1saXN0PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNcIj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNfX2hlYWRlclwiICpuZ0lmPVwiKHNlbGVjdGVkUnVsZSQgfCBhc3luYykgYXMgc2VsZWN0ZWRSdWxlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX3RpdGxlXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNfX2hlYWRlcl9fdGl0bGVfX25hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRSdWxlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX3RpdGxlX19kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZFJ1bGUuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19oZWFkZXJfX2J1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5FZGl0U2VsZWN0ZWRSdWxlOyBlbHNlIGdvVG9Gb2xkZXJCdXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9uUnVsZURlbGV0ZUJ1dHRvbkNsaWNrZWQoc2VsZWN0ZWRSdWxlKVwiIGlkPVwiZGVsZXRlLXJ1bGUtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZV9vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJvcGVuQ3JlYXRlVXBkYXRlUnVsZURpYWxvZyhzZWxlY3RlZFJ1bGUpXCIgaWQ9XCJlZGl0LXJ1bGUtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5FRElUX1JVTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZ29Ub0ZvbGRlckJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gW3JvdXRlckxpbmtdPVwiWycvbm9kZXMnLCAoc2VsZWN0ZWRSdWxlU2V0JCB8IGFzeW5jKS5vd25pbmdGb2xkZXIuaWQsICdydWxlcyddXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5TRUVfSU5fRk9MREVSJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19jb250YWluZXJfX3J1bGUtZGV0YWlsc19fY29udGVudFwiICpuZ0lmPVwiKHNlbGVjdGVkUnVsZSQgfCBhc3luYykgYXMgc2VsZWN0ZWRSdWxlXCI+XG4gICAgICAgICAgICAgICAgPGFjYS1ydWxlLWRldGFpbHNcbiAgICAgICAgICAgICAgICAgIFthY3Rpb25EZWZpbml0aW9uc109XCJhY3Rpb25EZWZpbml0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbcHJldmlld109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZFJ1bGVcIlxuICAgICAgICAgICAgICAgICAgW25vZGVJZF09XCJub2RlSWRcIj5cbiAgICAgICAgICAgICAgICA8L2FjYS1ydWxlLWRldGFpbHM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2VtcHR5Q29udGVudD5cbiAgICAgICAgICAgIDxhZGYtZW1wdHktY29udGVudFxuICAgICAgICAgICAgICBpY29uPVwibGlicmFyeV9ib29rc1wiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInQUNBX0ZPTERFUl9SVUxFUy5NQU5BR0VfUlVMRVMuRU1QVFlfUlVMRVNfTElTVC5USVRMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLkVNUFRZX1JVTEVTX0xJU1QuU1VCVElUTEUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvYWRmLWVtcHR5LWNvbnRlbnQ+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNnZW5lcmljRXJyb3I+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1lcnJvclwiPlxuICAgICAgICAgICAgPGFjYS1nZW5lcmljLWVycm9yPjwvYWNhLWdlbmVyaWMtZXJyb3I+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvYWNhLXBhZ2UtbGF5b3V0PlxuIl19
|
|
@@ -274,7 +274,7 @@ export class SearchInputComponent {
|
|
|
274
274
|
}
|
|
275
275
|
}
|
|
276
276
|
SearchInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: SearchInputComponent, deps: [{ token: i1.SearchQueryBuilderService }, { token: i2.SearchLibrariesQueryBuilderService }, { token: i3.AppConfigService }, { token: i4.Router }, { token: i5.Store }, { token: i6.AppHookService }, { token: i6.AppService }, { token: i7.SearchNavigationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
277
|
-
SearchInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: SearchInputComponent, isStandalone: true, selector: "aca-search-input", host: { classAttribute: "aca-search-input" }, viewQueries: [{ propertyName: "searchInputControl", first: true, predicate: ["searchInputControl"], descendants: true, static: true }, { propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true, static: true }], ngImport: i0, template: "<div class=\"app-search-container searchMenuTrigger\"\n [matMenuTriggerFor]=\"searchOptionsMenu\"\n (menuOpened)=\"onMenuOpened()\"\n (menuClosed)=\"syncInputValues()\"\n>\n\n <button mat-icon-button class=\"app-search-button\" (click)=\"searchByOption()\" [title]=\"'SEARCH.BUTTON.TOOLTIP' | translate\">\n <mat-icon [attr.aria-label]=\"'SEARCH.BUTTON.ARIA-LABEL' | translate\">search</mat-icon>\n </button>\n <mat-form-field class=\"app-input-form-field\" [floatLabel]=\"'never'\">\n <input\n matInput\n [attr.aria-label]=\"'SEARCH.INPUT.ARIA-LABEL' | translate\"\n [type]=\"'text'\"\n [disabled]=\"true\"\n [value]=\"searchedWord\"\n [placeholder]=\"'SEARCH.INPUT.PLACEHOLDER' | translate\"\n />\n\n <div matSuffix class=\"app-suffix-search-icon-wrapper\">\n <mat-icon>arrow_drop_down</mat-icon>\n </div>\n\n <button mat-icon-button matSuffix class=\"app-suffix-search-icon-wrapper app-close-icon\" (click)=\"exitSearch()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n</div>\n\n<mat-menu #searchOptionsMenu=\"matMenu\" [overlapTrigger]=\"true\" class=\"app-search-options-menu\">\n <div (keydown.tab)=\"$event.stopPropagation()\" (keydown.shift.tab)=\"$event.stopPropagation()\" tabindex=0>\n <div cdkTrapFocus>\n <app-search-input-control\n #searchInputControl\n (click)=\"$event.stopPropagation()\"\n (submit)=\"onSearchSubmit($event)\"\n (searchChange)=\"onSearchChange($event)\"\n >\n </app-search-input-control>\n <mat-hint *ngIf=\"hasLibrariesConstraint\" class=\"app-search-hint\">{{ 'SEARCH.INPUT.HINT' | translate }}</mat-hint>\n\n <div id=\"search-options\">\n <mat-checkbox\n *ngFor=\"let option of searchOptions\"\n id=\"{{ option.id }}\"\n [(ngModel)]=\"option.value\"\n [disabled]=\"option.shouldDisable()\"\n (change)=\"searchByOption()\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ option.key | translate }}\n </mat-checkbox>\n </div>\n </div>\n </div>\n</mat-menu>\n", styles: [".app-search-container{color:var(--theme-foreground-text-color);width:100%;max-width:594px;height:44px
|
|
277
|
+
SearchInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: SearchInputComponent, isStandalone: true, selector: "aca-search-input", host: { classAttribute: "aca-search-input" }, viewQueries: [{ propertyName: "searchInputControl", first: true, predicate: ["searchInputControl"], descendants: true, static: true }, { propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true, static: true }], ngImport: i0, template: "<div class=\"app-search-container searchMenuTrigger\"\n [matMenuTriggerFor]=\"searchOptionsMenu\"\n (menuOpened)=\"onMenuOpened()\"\n (menuClosed)=\"syncInputValues()\"\n>\n\n <button mat-icon-button class=\"app-search-button\" (click)=\"searchByOption()\" [title]=\"'SEARCH.BUTTON.TOOLTIP' | translate\">\n <mat-icon [attr.aria-label]=\"'SEARCH.BUTTON.ARIA-LABEL' | translate\">search</mat-icon>\n </button>\n <mat-form-field class=\"app-input-form-field\" [floatLabel]=\"'never'\">\n <input\n matInput\n [attr.aria-label]=\"'SEARCH.INPUT.ARIA-LABEL' | translate\"\n [type]=\"'text'\"\n [disabled]=\"true\"\n [value]=\"searchedWord\"\n [placeholder]=\"'SEARCH.INPUT.PLACEHOLDER' | translate\"\n />\n\n <div matSuffix class=\"app-suffix-search-icon-wrapper\">\n <mat-icon>arrow_drop_down</mat-icon>\n </div>\n\n <button mat-icon-button matSuffix class=\"app-suffix-search-icon-wrapper app-close-icon\" (click)=\"exitSearch()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n</div>\n\n<mat-menu #searchOptionsMenu=\"matMenu\" [overlapTrigger]=\"true\" class=\"app-search-options-menu\">\n <div (keydown.tab)=\"$event.stopPropagation()\" (keydown.shift.tab)=\"$event.stopPropagation()\" tabindex=0>\n <div cdkTrapFocus>\n <app-search-input-control\n #searchInputControl\n (click)=\"$event.stopPropagation()\"\n (submit)=\"onSearchSubmit($event)\"\n (searchChange)=\"onSearchChange($event)\"\n >\n </app-search-input-control>\n <mat-hint *ngIf=\"hasLibrariesConstraint\" class=\"app-search-hint\">{{ 'SEARCH.INPUT.HINT' | translate }}</mat-hint>\n\n <div id=\"search-options\">\n <mat-checkbox\n *ngFor=\"let option of searchOptions\"\n id=\"{{ option.id }}\"\n [(ngModel)]=\"option.value\"\n [disabled]=\"option.shouldDisable()\"\n (change)=\"searchByOption()\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ option.key | translate }}\n </mat-checkbox>\n </div>\n </div>\n </div>\n</mat-menu>\n", styles: [".app-search-container{color:var(--theme-foreground-text-color);width:100%;max-width:594px;height:44px}.app-search-container.mat-menu-trigger{margin:0}.app-search-container .app-search-button{width:32px;height:32px;margin-left:0;padding-left:0;margin-top:-4px}.app-search-container .app-input-form-field .app-close-icon{height:6px}.app-search-container .app-input-form-field .app-close-icon.app-suffix-search-icon-wrapper .mat-icon{font-size:18px;line-height:28px}.app-search-container .app-input-form-field .mat-input-element{caret-color:var(--theme-text-color)}.app-search-container .app-input-form-field .mat-input-element:disabled{color:var(--theme-text-color)}.app-search-container .mat-focused label.mat-form-field-label{display:none}.app-search-options-menu.mat-menu-panel{background-color:var(--theme-dialog-background-color);width:594px;max-width:unset;border-radius:4px;margin-top:12px}.app-search-options-menu .mat-menu-content:not(:empty){padding-top:0;padding-bottom:0}mat-checkbox .mat-checkbox-frame{border-color:var(--theme-text-color)}.aca-search-input{width:100%;max-width:594px;background-color:#f5f6f5;border-radius:4px;height:32px;margin-bottom:0;padding-bottom:26px}.app-search-control{margin-top:-12px}#search-options{color:var(--theme-text-color);border-top:1px solid var(--theme-divider-color);padding:20px 0;font-size:16px;letter-spacing:-.7px}#search-options mat-checkbox{padding:3px 24px 3px 19px}#search-options mat-checkbox .mat-checkbox-inner-container{height:18px;width:18px}#search-options mat-checkbox .mat-checkbox-label{padding:0 0 0 11px;overflow:hidden;text-overflow:ellipsis}#search-options .mat-checkbox-layout{max-width:155px}.app-search-hint{position:absolute;font-size:12px;padding-left:17px}@media screen and (max-width: 959px){.aca-search-input,.app-search-container{max-width:400px}.app-search-options-menu.mat-menu-panel{width:400px}#search-options{padding-left:20px}#search-options mat-checkbox{padding:3px 20px 3px 0}#search-options mat-checkbox .mat-checkbox-label{padding:0}#search-options .mat-checkbox-layout{max-width:105px}}@media screen and (max-width: 599px){.aca-search-input,.app-search-container{max-width:220px}.app-search-options-menu.mat-menu-panel{width:220px;margin-top:9px}#search-options .mat-checkbox-layout{max-width:180px}}@media screen and (max-width: 380px){.aca-search-input{max-width:148px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i11.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i13.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i13.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i13.MatSuffix, selector: "[matSuffix]" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i14.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i15.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i16.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i17.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i17.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SearchInputControlComponent, selector: "app-search-input-control", inputs: ["inputType"], outputs: ["submit", "searchChange"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
278
278
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
279
279
|
type: Component,
|
|
280
280
|
args: [{ standalone: true, imports: [
|
|
@@ -289,7 +289,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
|
|
|
289
289
|
MatCheckboxModule,
|
|
290
290
|
FormsModule,
|
|
291
291
|
SearchInputControlComponent
|
|
292
|
-
], selector: 'aca-search-input', encapsulation: ViewEncapsulation.None, host: { class: 'aca-search-input' }, template: "<div class=\"app-search-container searchMenuTrigger\"\n [matMenuTriggerFor]=\"searchOptionsMenu\"\n (menuOpened)=\"onMenuOpened()\"\n (menuClosed)=\"syncInputValues()\"\n>\n\n <button mat-icon-button class=\"app-search-button\" (click)=\"searchByOption()\" [title]=\"'SEARCH.BUTTON.TOOLTIP' | translate\">\n <mat-icon [attr.aria-label]=\"'SEARCH.BUTTON.ARIA-LABEL' | translate\">search</mat-icon>\n </button>\n <mat-form-field class=\"app-input-form-field\" [floatLabel]=\"'never'\">\n <input\n matInput\n [attr.aria-label]=\"'SEARCH.INPUT.ARIA-LABEL' | translate\"\n [type]=\"'text'\"\n [disabled]=\"true\"\n [value]=\"searchedWord\"\n [placeholder]=\"'SEARCH.INPUT.PLACEHOLDER' | translate\"\n />\n\n <div matSuffix class=\"app-suffix-search-icon-wrapper\">\n <mat-icon>arrow_drop_down</mat-icon>\n </div>\n\n <button mat-icon-button matSuffix class=\"app-suffix-search-icon-wrapper app-close-icon\" (click)=\"exitSearch()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n</div>\n\n<mat-menu #searchOptionsMenu=\"matMenu\" [overlapTrigger]=\"true\" class=\"app-search-options-menu\">\n <div (keydown.tab)=\"$event.stopPropagation()\" (keydown.shift.tab)=\"$event.stopPropagation()\" tabindex=0>\n <div cdkTrapFocus>\n <app-search-input-control\n #searchInputControl\n (click)=\"$event.stopPropagation()\"\n (submit)=\"onSearchSubmit($event)\"\n (searchChange)=\"onSearchChange($event)\"\n >\n </app-search-input-control>\n <mat-hint *ngIf=\"hasLibrariesConstraint\" class=\"app-search-hint\">{{ 'SEARCH.INPUT.HINT' | translate }}</mat-hint>\n\n <div id=\"search-options\">\n <mat-checkbox\n *ngFor=\"let option of searchOptions\"\n id=\"{{ option.id }}\"\n [(ngModel)]=\"option.value\"\n [disabled]=\"option.shouldDisable()\"\n (change)=\"searchByOption()\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ option.key | translate }}\n </mat-checkbox>\n </div>\n </div>\n </div>\n</mat-menu>\n", styles: [".app-search-container{color:var(--theme-foreground-text-color);width:100%;max-width:594px;height:44px
|
|
292
|
+
], selector: 'aca-search-input', encapsulation: ViewEncapsulation.None, host: { class: 'aca-search-input' }, template: "<div class=\"app-search-container searchMenuTrigger\"\n [matMenuTriggerFor]=\"searchOptionsMenu\"\n (menuOpened)=\"onMenuOpened()\"\n (menuClosed)=\"syncInputValues()\"\n>\n\n <button mat-icon-button class=\"app-search-button\" (click)=\"searchByOption()\" [title]=\"'SEARCH.BUTTON.TOOLTIP' | translate\">\n <mat-icon [attr.aria-label]=\"'SEARCH.BUTTON.ARIA-LABEL' | translate\">search</mat-icon>\n </button>\n <mat-form-field class=\"app-input-form-field\" [floatLabel]=\"'never'\">\n <input\n matInput\n [attr.aria-label]=\"'SEARCH.INPUT.ARIA-LABEL' | translate\"\n [type]=\"'text'\"\n [disabled]=\"true\"\n [value]=\"searchedWord\"\n [placeholder]=\"'SEARCH.INPUT.PLACEHOLDER' | translate\"\n />\n\n <div matSuffix class=\"app-suffix-search-icon-wrapper\">\n <mat-icon>arrow_drop_down</mat-icon>\n </div>\n\n <button mat-icon-button matSuffix class=\"app-suffix-search-icon-wrapper app-close-icon\" (click)=\"exitSearch()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n</div>\n\n<mat-menu #searchOptionsMenu=\"matMenu\" [overlapTrigger]=\"true\" class=\"app-search-options-menu\">\n <div (keydown.tab)=\"$event.stopPropagation()\" (keydown.shift.tab)=\"$event.stopPropagation()\" tabindex=0>\n <div cdkTrapFocus>\n <app-search-input-control\n #searchInputControl\n (click)=\"$event.stopPropagation()\"\n (submit)=\"onSearchSubmit($event)\"\n (searchChange)=\"onSearchChange($event)\"\n >\n </app-search-input-control>\n <mat-hint *ngIf=\"hasLibrariesConstraint\" class=\"app-search-hint\">{{ 'SEARCH.INPUT.HINT' | translate }}</mat-hint>\n\n <div id=\"search-options\">\n <mat-checkbox\n *ngFor=\"let option of searchOptions\"\n id=\"{{ option.id }}\"\n [(ngModel)]=\"option.value\"\n [disabled]=\"option.shouldDisable()\"\n (change)=\"searchByOption()\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ option.key | translate }}\n </mat-checkbox>\n </div>\n </div>\n </div>\n</mat-menu>\n", styles: [".app-search-container{color:var(--theme-foreground-text-color);width:100%;max-width:594px;height:44px}.app-search-container.mat-menu-trigger{margin:0}.app-search-container .app-search-button{width:32px;height:32px;margin-left:0;padding-left:0;margin-top:-4px}.app-search-container .app-input-form-field .app-close-icon{height:6px}.app-search-container .app-input-form-field .app-close-icon.app-suffix-search-icon-wrapper .mat-icon{font-size:18px;line-height:28px}.app-search-container .app-input-form-field .mat-input-element{caret-color:var(--theme-text-color)}.app-search-container .app-input-form-field .mat-input-element:disabled{color:var(--theme-text-color)}.app-search-container .mat-focused label.mat-form-field-label{display:none}.app-search-options-menu.mat-menu-panel{background-color:var(--theme-dialog-background-color);width:594px;max-width:unset;border-radius:4px;margin-top:12px}.app-search-options-menu .mat-menu-content:not(:empty){padding-top:0;padding-bottom:0}mat-checkbox .mat-checkbox-frame{border-color:var(--theme-text-color)}.aca-search-input{width:100%;max-width:594px;background-color:#f5f6f5;border-radius:4px;height:32px;margin-bottom:0;padding-bottom:26px}.app-search-control{margin-top:-12px}#search-options{color:var(--theme-text-color);border-top:1px solid var(--theme-divider-color);padding:20px 0;font-size:16px;letter-spacing:-.7px}#search-options mat-checkbox{padding:3px 24px 3px 19px}#search-options mat-checkbox .mat-checkbox-inner-container{height:18px;width:18px}#search-options mat-checkbox .mat-checkbox-label{padding:0 0 0 11px;overflow:hidden;text-overflow:ellipsis}#search-options .mat-checkbox-layout{max-width:155px}.app-search-hint{position:absolute;font-size:12px;padding-left:17px}@media screen and (max-width: 959px){.aca-search-input,.app-search-container{max-width:400px}.app-search-options-menu.mat-menu-panel{width:400px}#search-options{padding-left:20px}#search-options mat-checkbox{padding:3px 20px 3px 0}#search-options mat-checkbox .mat-checkbox-label{padding:0}#search-options .mat-checkbox-layout{max-width:105px}}@media screen and (max-width: 599px){.aca-search-input,.app-search-container{max-width:220px}.app-search-options-menu.mat-menu-panel{width:220px;margin-top:9px}#search-options .mat-checkbox-layout{max-width:180px}}@media screen and (max-width: 380px){.aca-search-input{max-width:148px}}\n"] }]
|
|
293
293
|
}], ctorParameters: function () { return [{ type: i1.SearchQueryBuilderService }, { type: i2.SearchLibrariesQueryBuilderService }, { type: i3.AppConfigService }, { type: i4.Router }, { type: i5.Store }, { type: i6.AppHookService }, { type: i6.AppService }, { type: i7.SearchNavigationService }]; }, propDecorators: { searchInputControl: [{
|
|
294
294
|
type: ViewChild,
|
|
295
295
|
args: ['searchInputControl', { static: true }]
|
|
@@ -297,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
|
|
|
297
297
|
type: ViewChild,
|
|
298
298
|
args: [MatMenuTrigger, { static: true }]
|
|
299
299
|
}] } });
|
|
300
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gvc2VhcmNoLWlucHV0L3NlYXJjaC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xFLE9BQU8sRUFBWSxrQkFBa0IsRUFBRSxlQUFlLEVBQXFCLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkksT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBcUIsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBd0MsTUFBTSxpQkFBaUIsQ0FBQztBQUMzSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxP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R0FBcEIsb0JBQW9CLDRSQWtDcEIsY0FBYyw4REN0RzNCLGlsRUF3REEseTFFRE5JLFlBQVksK1BBQ1osZUFBZSwyRkFDZixhQUFhLDZQQUNiLGVBQWUsMlZBQ2YsYUFBYSxvTEFDYixrQkFBa0IscVhBQ2xCLGNBQWMsMldBQ2QsVUFBVSwwTEFDVixpQkFBaUIsaUxBQ2pCLFdBQVcsaVdBQ1gsMkJBQTJCOzJGQVFsQixvQkFBb0I7a0JBckJoQyxTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLFVBQVU7d0JBQ1YsaUJBQWlCO3dCQUNqQixXQUFXO3dCQUNYLDJCQUEyQjtxQkFDNUIsWUFDUyxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtxVUFrQ25DLGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSWpELE9BQU87c0JBRE4sU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IEFwcEhvb2tTZXJ2aWNlLCBBcHBTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHsgQXBwU3RvcmUsIFNlYXJjaEJ5VGVybUFjdGlvbiwgU2VhcmNoT3B0aW9uSWRzLCBTZWFyY2hPcHRpb25Nb2RlbCwgU25hY2tiYXJFcnJvckFjdGlvbiB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IFNlYXJjaFF1ZXJ5QnVpbGRlclNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlLCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUFJJTUFSWV9PVVRMRVQsIFJvdXRlciwgUm91dGVyRXZlbnQsIFVybFNlZ21lbnQsIFVybFNlZ21lbnRHcm91cCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXRDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWlucHV0LWNvbnRyb2wvc2VhcmNoLWlucHV0LWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VhcmNoLW5hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTZWFyY2hMaWJyYXJpZXNRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VhcmNoLWxpYnJhcmllcy1yZXN1bHRzL3NlYXJjaC1saWJyYXJpZXMtcXVlcnktYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBBMTF5TW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFNlYXJjaElucHV0Q29udHJvbENvbXBvbmVudFxuICBdLFxuICBzZWxlY3RvcjogJ2FjYS1zZWFyY2gtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhY2Etc2VhcmNoLWlucHV0JyB9XG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBvbkRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgaGFzT25lQ2hhbmdlID0gZmFsc2U7XG4gIGhhc05ld0NoYW5nZSA9IGZhbHNlO1xuICBuYXZpZ2F0aW9uVGltZXI6IGFueTtcbiAgaGFzNDAwTGlicmFyeUVycm9yID0gZmFsc2U7XG4gIGhhc0xpYnJhcmllc0NvbnN0cmFpbnQgPSBmYWxzZTtcbiAgc2VhcmNoT25DaGFuZ2U6IGJvb2xlYW47XG5cbiAgc2VhcmNoZWRXb3JkOiBzdHJpbmcgPSBudWxsO1xuICBzZWFyY2hPcHRpb25zOiBBcnJheTxTZWFyY2hPcHRpb25Nb2RlbD4gPSBbXG4gICAge1xuICAgICAgaWQ6IFNlYXJjaE9wdGlvbklkcy5GaWxlcyxcbiAgICAgIGtleTogJ1NFQVJDSC5JTlBVVC5GSUxFUycsXG4gICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICBzaG91bGREaXNhYmxlOiB0aGlzLmlzTGlicmFyaWVzQ2hlY2tlZC5iaW5kKHRoaXMpXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogU2VhcmNoT3B0aW9uSWRzLkZvbGRlcnMsXG4gICAgICBrZXk6ICdTRUFSQ0guSU5QVVQuRk9MREVSUycsXG4gICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICBzaG91bGREaXNhYmxlOiB0aGlzLmlzTGlicmFyaWVzQ2hlY2tlZC5iaW5kKHRoaXMpXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogU2VhcmNoT3B0aW9uSWRzLkxpYnJhcmllcyxcbiAgICAgIGtleTogJ1NFQVJDSC5JTlBVVC5MSUJSQVJJRVMnLFxuICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgc2hvdWxkRGlzYWJsZTogdGhpcy5pc0NvbnRlbnRDaGVja2VkLmJpbmQodGhpcylcbiAgICB9XG4gIF07XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXRDb250cm9sJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgc2VhcmNoSW5wdXRDb250cm9sOiBTZWFyY2hJbnB1dENvbnRyb2xDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlciwgeyBzdGF0aWM6IHRydWUgfSlcbiAgdHJpZ2dlcjogTWF0TWVudVRyaWdnZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBxdWVyeUJ1aWxkZXI6IFNlYXJjaFF1ZXJ5QnVpbGRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdWVyeUxpYnJhcmllc0J1aWxkZXI6IFNlYXJjaExpYnJhcmllc1F1ZXJ5QnVpbGRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWc6IEFwcENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxBcHBTdG9yZT4sXG4gICAgcHJpdmF0ZSBhcHBIb29rU2VydmljZTogQXBwSG9va1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTZXJ2aWNlOiBBcHBTZXJ2aWNlLFxuICAgIHB1YmxpYyBzZWFyY2hJbnB1dFNlcnZpY2U6IFNlYXJjaE5hdmlnYXRpb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc2VhcmNoT25DaGFuZ2UgPSB0aGlzLmNvbmZpZy5nZXQ8Ym9vbGVhbj4oJ3NlYXJjaC5hY2E6dHJpZ2dlcmVkT25DaGFuZ2UnLCB0cnVlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2hvd0lucHV0VmFsdWUoKTtcblxuICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAucGlwZShmaWx0ZXIoKGUpID0+IGUgaW5zdGFuY2VvZiBSb3V0ZXJFdmVudCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgdGhpcy5zaG93SW5wdXRWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuYXBwSG9va1NlcnZpY2UubGlicmFyeTQwMEVycm9yLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmhhczQwMExpYnJhcnlFcnJvciA9IHRydWU7XG4gICAgICB0aGlzLmhhc0xpYnJhcmllc0NvbnN0cmFpbnQgPSB0aGlzLmV2YWx1YXRlTGlicmFyaWVzQ29uc3RyYWludCgpO1xuICAgIH0pO1xuICB9XG5cbiAgZXhpdFNlYXJjaCgpIHtcbiAgICB0aGlzLnNlYXJjaElucHV0U2VydmljZS5uYXZpZ2F0ZUJhY2soKTtcbiAgfVxuXG4gIHNob3dJbnB1dFZhbHVlKCkge1xuICAgIHRoaXMuYXBwU2VydmljZS5hcHBOYXZOYXJNb2RlJC5uZXh0KCdjb2xsYXBzZWQnKTtcbiAgICB0aGlzLmhhczQwMExpYnJhcnlFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuaGFzTGlicmFyaWVzQ29uc3RyYWludCA9IHRoaXMuZXZhbHVhdGVMaWJyYXJpZXNDb25zdHJhaW50KCk7XG4gICAgdGhpcy5zZWFyY2hlZFdvcmQgPSB0aGlzLmdldFVybFNlYXJjaFRlcm0oKTtcblxuICAgIGlmICh0aGlzLnNlYXJjaElucHV0Q29udHJvbCkge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dENvbnRyb2wuc2VhcmNoVGVybSA9IHRoaXMuc2VhcmNoZWRXb3JkO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwU2VydmljZS5hcHBOYXZOYXJNb2RlJC5uZXh0KCdleHBhbmRlZCcpO1xuICAgIHRoaXMub25EZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMucmVtb3ZlQ29udGVudEZpbHRlcnMoKTtcbiAgfVxuXG4gIG9uTWVudU9wZW5lZCgpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dENvbnRyb2wpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXRDb250cm9sLnNlYXJjaElucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBzZWFyY2gsIGUuZy4gaGl0cyBlbnRlciBvciBjbGlja3Mgc3VibWl0XG4gICAqXG4gICAqIEBwYXJhbSBldmVudCBQYXJhbWV0ZXJzIHJlbGF0aW5nIHRvIHRoZSBzZWFyY2hcbiAgICovXG4gIG9uU2VhcmNoU3VibWl0KGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBzZWFyY2hUZXJtID0gZXZlbnQudGFyZ2V0ID8gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSA6IGV2ZW50O1xuICAgIGlmIChzZWFyY2hUZXJtKSB7XG4gICAgICB0aGlzLnNlYXJjaGVkV29yZCA9IHNlYXJjaFRlcm07XG5cbiAgICAgIHRoaXMuc2VhcmNoQnlPcHRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU25hY2tiYXJFcnJvckFjdGlvbignQVBQLkJST1dTRS5TRUFSQ0guRU1QVFlfU0VBUkNIJykpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRyaWdnZXIpIHtcbiAgICAgIHRoaXMudHJpZ2dlci5jbG9zZU1lbnUoKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaENoYW5nZShzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoT25DaGFuZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmhhczQwMExpYnJhcnlFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuaGFzTGlicmFyaWVzQ29uc3RyYWludCA9IHRoaXMuZXZhbHVhdGVMaWJyYXJpZXNDb25zdHJhaW50KCk7XG4gICAgdGhpcy5zZWFyY2hlZFdvcmQgPSBzZWFyY2hUZXJtO1xuXG4gICAgaWYgKHRoaXMuaGFzT25lQ2hhbmdlKSB7XG4gICAgICB0aGlzLmhhc05ld0NoYW5nZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFzT25lQ2hhbmdlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNOZXdDaGFuZ2UpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLm5hdmlnYXRpb25UaW1lcik7XG4gICAgICB0aGlzLmhhc05ld0NoYW5nZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMubmF2aWdhdGlvblRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoc2VhcmNoVGVybSkge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZWFyY2hCeVRlcm1BY3Rpb24oc2VhcmNoVGVybSwgdGhpcy5zZWFyY2hPcHRpb25zKSk7XG4gICAgICB9XG4gICAgICB0aGlzLmhhc09uZUNoYW5nZSA9IGZhbHNlO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgc2VhcmNoQnlPcHRpb24oKSB7XG4gICAgdGhpcy5zeW5jSW5wdXRWYWx1ZXMoKTtcbiAgICB0aGlzLmhhczQwMExpYnJhcnlFcnJvciA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmlzTGlicmFyaWVzQ2hlY2tlZCgpKSB7XG4gICAgICB0aGlzLmhhc0xpYnJhcmllc0NvbnN0cmFpbnQgPSB0aGlzLmV2YWx1YXRlTGlicmFyaWVzQ29uc3RyYWludCgpO1xuICAgICAgaWYgKHRoaXMub25MaWJyYXJpZXNTZWFyY2hSZXN1bHRzICYmIHRoaXMuaXNTYW1lU2VhcmNoVGVybSgpKSB7XG4gICAgICAgIHRoaXMucXVlcnlMaWJyYXJpZXNCdWlsZGVyLnVwZGF0ZSgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaGVkV29yZCkge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZWFyY2hCeVRlcm1BY3Rpb24odGhpcy5zZWFyY2hlZFdvcmQsIHRoaXMuc2VhcmNoT3B0aW9ucykpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5pc0ZvbGRlcnNDaGVja2VkKCkgJiYgIXRoaXMuaXNGaWxlc0NoZWNrZWQoKSkge1xuICAgICAgICB0aGlzLmZpbHRlckNvbnRlbnQoU2VhcmNoT3B0aW9uSWRzLkZvbGRlcnMpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRmlsZXNDaGVja2VkKCkgJiYgIXRoaXMuaXNGb2xkZXJzQ2hlY2tlZCgpKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQ29udGVudChTZWFyY2hPcHRpb25JZHMuRmlsZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVDb250ZW50RmlsdGVycygpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vblNlYXJjaFJlc3VsdHMgJiYgdGhpcy5pc1NhbWVTZWFyY2hUZXJtKCkpIHtcbiAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIudXBkYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoZWRXb3JkKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNlYXJjaEJ5VGVybUFjdGlvbih0aGlzLnNlYXJjaGVkV29yZCwgdGhpcy5zZWFyY2hPcHRpb25zKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9uTGlicmFyaWVzU2VhcmNoUmVzdWx0cygpIHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoJy9zZWFyY2gtbGlicmFyaWVzJykgPT09IDA7XG4gIH1cblxuICBnZXQgb25TZWFyY2hSZXN1bHRzKCkge1xuICAgIHJldHVybiAhdGhpcy5vbkxpYnJhcmllc1NlYXJjaFJlc3VsdHMgJiYgdGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoJy9zZWFyY2gnKSA9PT0gMDtcbiAgfVxuXG4gIGlzRmlsZXNDaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzT3B0aW9uQ2hlY2tlZChTZWFyY2hPcHRpb25JZHMuRmlsZXMpO1xuICB9XG5cbiAgaXNGb2xkZXJzQ2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc09wdGlvbkNoZWNrZWQoU2VhcmNoT3B0aW9uSWRzLkZvbGRlcnMpO1xuICB9XG5cbiAgaXNMaWJyYXJpZXNDaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzT3B0aW9uQ2hlY2tlZChTZWFyY2hPcHRpb25JZHMuTGlicmFyaWVzKTtcbiAgfVxuXG4gIGlzT3B0aW9uQ2hlY2tlZChvcHRpb25JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGliSXRlbSA9IHRoaXMuc2VhcmNoT3B0aW9ucy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBvcHRpb25JZCk7XG4gICAgcmV0dXJuICEhbGliSXRlbSAmJiBsaWJJdGVtLnZhbHVlO1xuICB9XG5cbiAgaXNDb250ZW50Q2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0ZpbGVzQ2hlY2tlZCgpIHx8IHRoaXMuaXNGb2xkZXJzQ2hlY2tlZCgpO1xuICB9XG5cbiAgZXZhbHVhdGVMaWJyYXJpZXNDb25zdHJhaW50KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmlzTGlicmFyaWVzQ2hlY2tlZCgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5oYXM0MDBMaWJyYXJ5RXJyb3IgfHwgdGhpcy5zZWFyY2hJbnB1dENvbnRyb2wuaXNUZXJtVG9vU2hvcnQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZmlsdGVyQ29udGVudChvcHRpb246IFNlYXJjaE9wdGlvbklkcy5Gb2xkZXJzIHwgU2VhcmNoT3B0aW9uSWRzLkZpbGVzKSB7XG4gICAgY29uc3Qgb3Bwb3NpdGVPcHRpb24gPSBvcHRpb24gPT09IFNlYXJjaE9wdGlvbklkcy5Gb2xkZXJzID8gU2VhcmNoT3B0aW9uSWRzLkZpbGVzIDogU2VhcmNoT3B0aW9uSWRzLkZvbGRlcnM7XG5cbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci5hZGRGaWx0ZXJRdWVyeShgK1RZUEU6J2NtOiR7b3B0aW9ufSdgKTtcbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci5yZW1vdmVGaWx0ZXJRdWVyeShgK1RZUEU6J2NtOiR7b3Bwb3NpdGVPcHRpb259J2ApO1xuICB9XG5cbiAgcmVtb3ZlQ29udGVudEZpbHRlcnMoKSB7XG4gICAgdGhpcy5xdWVyeUJ1aWxkZXIucmVtb3ZlRmlsdGVyUXVlcnkoYCtUWVBFOidjbToke1NlYXJjaE9wdGlvbklkcy5GaWxlc30nYCk7XG4gICAgdGhpcy5xdWVyeUJ1aWxkZXIucmVtb3ZlRmlsdGVyUXVlcnkoYCtUWVBFOidjbToke1NlYXJjaE9wdGlvbklkcy5Gb2xkZXJzfSdgKTtcbiAgfVxuXG4gIHN5bmNJbnB1dFZhbHVlcygpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dENvbnRyb2wuc2VhcmNoVGVybSAhPT0gdGhpcy5zZWFyY2hlZFdvcmQpIHtcbiAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0Q29udHJvbC5zZWFyY2hUZXJtKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoZWRXb3JkID0gdGhpcy5zZWFyY2hJbnB1dENvbnRyb2wuc2VhcmNoVGVybTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRDb250cm9sLnNlYXJjaFRlcm0gPSB0aGlzLnNlYXJjaGVkV29yZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRVcmxTZWFyY2hUZXJtKCk6IHN0cmluZyB7XG4gICAgbGV0IHNlYXJjaFRlcm0gPSAnJztcbiAgICBpZiAodGhpcy5vblNlYXJjaFJlc3VsdHMgfHwgdGhpcy5vbkxpYnJhcmllc1NlYXJjaFJlc3VsdHMpIHtcbiAgICAgIGNvbnN0IHVybFRyZWU6IFVybFRyZWUgPSB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLnJvdXRlci51cmwpO1xuICAgICAgY29uc3QgdXJsU2VnbWVudEdyb3VwOiBVcmxTZWdtZW50R3JvdXAgPSB1cmxUcmVlLnJvb3QuY2hpbGRyZW5bUFJJTUFSWV9PVVRMRVRdO1xuXG4gICAgICBpZiAodXJsU2VnbWVudEdyb3VwKSB7XG4gICAgICAgIGNvbnN0IHVybFNlZ21lbnRzOiBVcmxTZWdtZW50W10gPSB1cmxTZWdtZW50R3JvdXAuc2VnbWVudHM7XG4gICAgICAgIHNlYXJjaFRlcm0gPSB1cmxTZWdtZW50c1swXS5wYXJhbWV0ZXJzWydxJ10gPyBkZWNvZGVVUklDb21wb25lbnQodXJsU2VnbWVudHNbMF0ucGFyYW1ldGVyc1sncSddKSA6ICcnO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzZWFyY2hUZXJtO1xuICB9XG5cbiAgaXNTYW1lU2VhcmNoVGVybSgpOiBib29sZWFuIHtcbiAgICBjb25zdCB1cmxTZWFyY2hUZXJtID0gdGhpcy5nZXRVcmxTZWFyY2hUZXJtKCk7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoZWRXb3JkID09PSB1cmxTZWFyY2hUZXJtO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXBwLXNlYXJjaC1jb250YWluZXIgc2VhcmNoTWVudVRyaWdnZXJcIlxuICBbbWF0TWVudVRyaWdnZXJGb3JdPVwic2VhcmNoT3B0aW9uc01lbnVcIlxuICAobWVudU9wZW5lZCk9XCJvbk1lbnVPcGVuZWQoKVwiXG4gIChtZW51Q2xvc2VkKT1cInN5bmNJbnB1dFZhbHVlcygpXCJcbj5cblxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cImFwcC1zZWFyY2gtYnV0dG9uXCIgKGNsaWNrKT1cInNlYXJjaEJ5T3B0aW9uKClcIiBbdGl0bGVdPVwiJ1NFQVJDSC5CVVRUT04uVE9PTFRJUCcgfCB0cmFuc2xhdGVcIj5cbiAgICA8bWF0LWljb24gW2F0dHIuYXJpYS1sYWJlbF09XCInU0VBUkNILkJVVFRPTi5BUklBLUxBQkVMJyB8IHRyYW5zbGF0ZVwiPnNlYXJjaDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhcHAtaW5wdXQtZm9ybS1maWVsZFwiIFtmbG9hdExhYmVsXT1cIiduZXZlcidcIj5cbiAgICA8aW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTRUFSQ0guSU5QVVQuQVJJQS1MQUJFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgIFt2YWx1ZV09XCJzZWFyY2hlZFdvcmRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRUFSQ0guSU5QVVQuUExBQ0VIT0xERVInIHwgdHJhbnNsYXRlXCJcbiAgICAvPlxuXG4gICAgPGRpdiBtYXRTdWZmaXggY2xhc3M9XCJhcHAtc3VmZml4LXNlYXJjaC1pY29uLXdyYXBwZXJcIj5cbiAgICAgIDxtYXQtaWNvbj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IGNsYXNzPVwiYXBwLXN1ZmZpeC1zZWFyY2gtaWNvbi13cmFwcGVyIGFwcC1jbG9zZS1pY29uXCIgKGNsaWNrKT1cImV4aXRTZWFyY2goKVwiPlxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PlxuXG48bWF0LW1lbnUgI3NlYXJjaE9wdGlvbnNNZW51PVwibWF0TWVudVwiIFtvdmVybGFwVHJpZ2dlcl09XCJ0cnVlXCIgY2xhc3M9XCJhcHAtc2VhcmNoLW9wdGlvbnMtbWVudVwiPlxuICA8ZGl2IChrZXlkb3duLnRhYik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAoa2V5ZG93bi5zaGlmdC50YWIpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgdGFiaW5kZXg9MD5cbiAgICA8ZGl2IGNka1RyYXBGb2N1cz5cbiAgICAgIDxhcHAtc2VhcmNoLWlucHV0LWNvbnRyb2xcbiAgICAgICAgI3NlYXJjaElucHV0Q29udHJvbFxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgKHN1Ym1pdCk9XCJvblNlYXJjaFN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHNlYXJjaENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgIDwvYXBwLXNlYXJjaC1pbnB1dC1jb250cm9sPlxuICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiaGFzTGlicmFyaWVzQ29uc3RyYWludFwiIGNsYXNzPVwiYXBwLXNlYXJjaC1oaW50XCI+e3sgJ1NFQVJDSC5JTlBVVC5ISU5UJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWhpbnQ+XG5cbiAgICAgIDxkaXYgaWQ9XCJzZWFyY2gtb3B0aW9uc1wiPlxuICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzZWFyY2hPcHRpb25zXCJcbiAgICAgICAgICBpZD1cInt7IG9wdGlvbi5pZCB9fVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uc2hvdWxkRGlzYWJsZSgpXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInNlYXJjaEJ5T3B0aW9uKClcIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgb3B0aW9uLmtleSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbWF0LW1lbnU+XG4iXX0=
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gvc2VhcmNoLWlucHV0L3NlYXJjaC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xFLE9BQU8sRUFBWSxrQkFBa0IsRUFBRSxlQUFlLEVBQXFCLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkksT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBcUIsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBd0MsTUFBTSxpQkFBaUIsQ0FBQztBQUMzSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxP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R0FBcEIsb0JBQW9CLDRSQWtDcEIsY0FBYyw4REN0RzNCLGlsRUF3REEsdTNFRE5JLFlBQVksK1BBQ1osZUFBZSwyRkFDZixhQUFhLDZQQUNiLGVBQWUsMlZBQ2YsYUFBYSxvTEFDYixrQkFBa0IscVhBQ2xCLGNBQWMsMldBQ2QsVUFBVSwwTEFDVixpQkFBaUIsaUxBQ2pCLFdBQVcsaVdBQ1gsMkJBQTJCOzJGQVFsQixvQkFBb0I7a0JBckJoQyxTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLFVBQVU7d0JBQ1YsaUJBQWlCO3dCQUNqQixXQUFXO3dCQUNYLDJCQUEyQjtxQkFDNUIsWUFDUyxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtxVUFrQ25DLGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSWpELE9BQU87c0JBRE4sU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IEFwcEhvb2tTZXJ2aWNlLCBBcHBTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHsgQXBwU3RvcmUsIFNlYXJjaEJ5VGVybUFjdGlvbiwgU2VhcmNoT3B0aW9uSWRzLCBTZWFyY2hPcHRpb25Nb2RlbCwgU25hY2tiYXJFcnJvckFjdGlvbiB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IFNlYXJjaFF1ZXJ5QnVpbGRlclNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlLCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUFJJTUFSWV9PVVRMRVQsIFJvdXRlciwgUm91dGVyRXZlbnQsIFVybFNlZ21lbnQsIFVybFNlZ21lbnRHcm91cCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXRDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWlucHV0LWNvbnRyb2wvc2VhcmNoLWlucHV0LWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VhcmNoLW5hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTZWFyY2hMaWJyYXJpZXNRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VhcmNoLWxpYnJhcmllcy1yZXN1bHRzL3NlYXJjaC1saWJyYXJpZXMtcXVlcnktYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBBMTF5TW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFNlYXJjaElucHV0Q29udHJvbENvbXBvbmVudFxuICBdLFxuICBzZWxlY3RvcjogJ2FjYS1zZWFyY2gtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhY2Etc2VhcmNoLWlucHV0JyB9XG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBvbkRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgaGFzT25lQ2hhbmdlID0gZmFsc2U7XG4gIGhhc05ld0NoYW5nZSA9IGZhbHNlO1xuICBuYXZpZ2F0aW9uVGltZXI6IGFueTtcbiAgaGFzNDAwTGlicmFyeUVycm9yID0gZmFsc2U7XG4gIGhhc0xpYnJhcmllc0NvbnN0cmFpbnQgPSBmYWxzZTtcbiAgc2VhcmNoT25DaGFuZ2U6IGJvb2xlYW47XG5cbiAgc2VhcmNoZWRXb3JkOiBzdHJpbmcgPSBudWxsO1xuICBzZWFyY2hPcHRpb25zOiBBcnJheTxTZWFyY2hPcHRpb25Nb2RlbD4gPSBbXG4gICAge1xuICAgICAgaWQ6IFNlYXJjaE9wdGlvbklkcy5GaWxlcyxcbiAgICAgIGtleTogJ1NFQVJDSC5JTlBVVC5GSUxFUycsXG4gICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICBzaG91bGREaXNhYmxlOiB0aGlzLmlzTGlicmFyaWVzQ2hlY2tlZC5iaW5kKHRoaXMpXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogU2VhcmNoT3B0aW9uSWRzLkZvbGRlcnMsXG4gICAgICBrZXk6ICdTRUFSQ0guSU5QVVQuRk9MREVSUycsXG4gICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICBzaG91bGREaXNhYmxlOiB0aGlzLmlzTGlicmFyaWVzQ2hlY2tlZC5iaW5kKHRoaXMpXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogU2VhcmNoT3B0aW9uSWRzLkxpYnJhcmllcyxcbiAgICAgIGtleTogJ1NFQVJDSC5JTlBVVC5MSUJSQVJJRVMnLFxuICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgc2hvdWxkRGlzYWJsZTogdGhpcy5pc0NvbnRlbnRDaGVja2VkLmJpbmQodGhpcylcbiAgICB9XG4gIF07XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXRDb250cm9sJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgc2VhcmNoSW5wdXRDb250cm9sOiBTZWFyY2hJbnB1dENvbnRyb2xDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlciwgeyBzdGF0aWM6IHRydWUgfSlcbiAgdHJpZ2dlcjogTWF0TWVudVRyaWdnZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBxdWVyeUJ1aWxkZXI6IFNlYXJjaFF1ZXJ5QnVpbGRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdWVyeUxpYnJhcmllc0J1aWxkZXI6IFNlYXJjaExpYnJhcmllc1F1ZXJ5QnVpbGRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWc6IEFwcENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxBcHBTdG9yZT4sXG4gICAgcHJpdmF0ZSBhcHBIb29rU2VydmljZTogQXBwSG9va1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTZXJ2aWNlOiBBcHBTZXJ2aWNlLFxuICAgIHB1YmxpYyBzZWFyY2hJbnB1dFNlcnZpY2U6IFNlYXJjaE5hdmlnYXRpb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc2VhcmNoT25DaGFuZ2UgPSB0aGlzLmNvbmZpZy5nZXQ8Ym9vbGVhbj4oJ3NlYXJjaC5hY2E6dHJpZ2dlcmVkT25DaGFuZ2UnLCB0cnVlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2hvd0lucHV0VmFsdWUoKTtcblxuICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAucGlwZShmaWx0ZXIoKGUpID0+IGUgaW5zdGFuY2VvZiBSb3V0ZXJFdmVudCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgdGhpcy5zaG93SW5wdXRWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuYXBwSG9va1NlcnZpY2UubGlicmFyeTQwMEVycm9yLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmhhczQwMExpYnJhcnlFcnJvciA9IHRydWU7XG4gICAgICB0aGlzLmhhc0xpYnJhcmllc0NvbnN0cmFpbnQgPSB0aGlzLmV2YWx1YXRlTGlicmFyaWVzQ29uc3RyYWludCgpO1xuICAgIH0pO1xuICB9XG5cbiAgZXhpdFNlYXJjaCgpIHtcbiAgICB0aGlzLnNlYXJjaElucHV0U2VydmljZS5uYXZpZ2F0ZUJhY2soKTtcbiAgfVxuXG4gIHNob3dJbnB1dFZhbHVlKCkge1xuICAgIHRoaXMuYXBwU2VydmljZS5hcHBOYXZOYXJNb2RlJC5uZXh0KCdjb2xsYXBzZWQnKTtcbiAgICB0aGlzLmhhczQwMExpYnJhcnlFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuaGFzTGlicmFyaWVzQ29uc3RyYWludCA9IHRoaXMuZXZhbHVhdGVMaWJyYXJpZXNDb25zdHJhaW50KCk7XG4gICAgdGhpcy5zZWFyY2hlZFdvcmQgPSB0aGlzLmdldFVybFNlYXJjaFRlcm0oKTtcblxuICAgIGlmICh0aGlzLnNlYXJjaElucHV0Q29udHJvbCkge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dENvbnRyb2wuc2VhcmNoVGVybSA9IHRoaXMuc2VhcmNoZWRXb3JkO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwU2VydmljZS5hcHBOYXZOYXJNb2RlJC5uZXh0KCdleHBhbmRlZCcpO1xuICAgIHRoaXMub25EZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMucmVtb3ZlQ29udGVudEZpbHRlcnMoKTtcbiAgfVxuXG4gIG9uTWVudU9wZW5lZCgpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dENvbnRyb2wpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXRDb250cm9sLnNlYXJjaElucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBzZWFyY2gsIGUuZy4gaGl0cyBlbnRlciBvciBjbGlja3Mgc3VibWl0XG4gICAqXG4gICAqIEBwYXJhbSBldmVudCBQYXJhbWV0ZXJzIHJlbGF0aW5nIHRvIHRoZSBzZWFyY2hcbiAgICovXG4gIG9uU2VhcmNoU3VibWl0KGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBzZWFyY2hUZXJtID0gZXZlbnQudGFyZ2V0ID8gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSA6IGV2ZW50O1xuICAgIGlmIChzZWFyY2hUZXJtKSB7XG4gICAgICB0aGlzLnNlYXJjaGVkV29yZCA9IHNlYXJjaFRlcm07XG5cbiAgICAgIHRoaXMuc2VhcmNoQnlPcHRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU25hY2tiYXJFcnJvckFjdGlvbignQVBQLkJST1dTRS5TRUFSQ0guRU1QVFlfU0VBUkNIJykpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRyaWdnZXIpIHtcbiAgICAgIHRoaXMudHJpZ2dlci5jbG9zZU1lbnUoKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaENoYW5nZShzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoT25DaGFuZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmhhczQwMExpYnJhcnlFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuaGFzTGlicmFyaWVzQ29uc3RyYWludCA9IHRoaXMuZXZhbHVhdGVMaWJyYXJpZXNDb25zdHJhaW50KCk7XG4gICAgdGhpcy5zZWFyY2hlZFdvcmQgPSBzZWFyY2hUZXJtO1xuXG4gICAgaWYgKHRoaXMuaGFzT25lQ2hhbmdlKSB7XG4gICAgICB0aGlzLmhhc05ld0NoYW5nZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFzT25lQ2hhbmdlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNOZXdDaGFuZ2UpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLm5hdmlnYXRpb25UaW1lcik7XG4gICAgICB0aGlzLmhhc05ld0NoYW5nZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMubmF2aWdhdGlvblRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoc2VhcmNoVGVybSkge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZWFyY2hCeVRlcm1BY3Rpb24oc2VhcmNoVGVybSwgdGhpcy5zZWFyY2hPcHRpb25zKSk7XG4gICAgICB9XG4gICAgICB0aGlzLmhhc09uZUNoYW5nZSA9IGZhbHNlO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgc2VhcmNoQnlPcHRpb24oKSB7XG4gICAgdGhpcy5zeW5jSW5wdXRWYWx1ZXMoKTtcbiAgICB0aGlzLmhhczQwMExpYnJhcnlFcnJvciA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmlzTGlicmFyaWVzQ2hlY2tlZCgpKSB7XG4gICAgICB0aGlzLmhhc0xpYnJhcmllc0NvbnN0cmFpbnQgPSB0aGlzLmV2YWx1YXRlTGlicmFyaWVzQ29uc3RyYWludCgpO1xuICAgICAgaWYgKHRoaXMub25MaWJyYXJpZXNTZWFyY2hSZXN1bHRzICYmIHRoaXMuaXNTYW1lU2VhcmNoVGVybSgpKSB7XG4gICAgICAgIHRoaXMucXVlcnlMaWJyYXJpZXNCdWlsZGVyLnVwZGF0ZSgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaGVkV29yZCkge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZWFyY2hCeVRlcm1BY3Rpb24odGhpcy5zZWFyY2hlZFdvcmQsIHRoaXMuc2VhcmNoT3B0aW9ucykpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5pc0ZvbGRlcnNDaGVja2VkKCkgJiYgIXRoaXMuaXNGaWxlc0NoZWNrZWQoKSkge1xuICAgICAgICB0aGlzLmZpbHRlckNvbnRlbnQoU2VhcmNoT3B0aW9uSWRzLkZvbGRlcnMpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRmlsZXNDaGVja2VkKCkgJiYgIXRoaXMuaXNGb2xkZXJzQ2hlY2tlZCgpKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQ29udGVudChTZWFyY2hPcHRpb25JZHMuRmlsZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVDb250ZW50RmlsdGVycygpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vblNlYXJjaFJlc3VsdHMgJiYgdGhpcy5pc1NhbWVTZWFyY2hUZXJtKCkpIHtcbiAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIudXBkYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoZWRXb3JkKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNlYXJjaEJ5VGVybUFjdGlvbih0aGlzLnNlYXJjaGVkV29yZCwgdGhpcy5zZWFyY2hPcHRpb25zKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9uTGlicmFyaWVzU2VhcmNoUmVzdWx0cygpIHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoJy9zZWFyY2gtbGlicmFyaWVzJykgPT09IDA7XG4gIH1cblxuICBnZXQgb25TZWFyY2hSZXN1bHRzKCkge1xuICAgIHJldHVybiAhdGhpcy5vbkxpYnJhcmllc1NlYXJjaFJlc3VsdHMgJiYgdGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoJy9zZWFyY2gnKSA9PT0gMDtcbiAgfVxuXG4gIGlzRmlsZXNDaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzT3B0aW9uQ2hlY2tlZChTZWFyY2hPcHRpb25JZHMuRmlsZXMpO1xuICB9XG5cbiAgaXNGb2xkZXJzQ2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc09wdGlvbkNoZWNrZWQoU2VhcmNoT3B0aW9uSWRzLkZvbGRlcnMpO1xuICB9XG5cbiAgaXNMaWJyYXJpZXNDaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzT3B0aW9uQ2hlY2tlZChTZWFyY2hPcHRpb25JZHMuTGlicmFyaWVzKTtcbiAgfVxuXG4gIGlzT3B0aW9uQ2hlY2tlZChvcHRpb25JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGliSXRlbSA9IHRoaXMuc2VhcmNoT3B0aW9ucy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBvcHRpb25JZCk7XG4gICAgcmV0dXJuICEhbGliSXRlbSAmJiBsaWJJdGVtLnZhbHVlO1xuICB9XG5cbiAgaXNDb250ZW50Q2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0ZpbGVzQ2hlY2tlZCgpIHx8IHRoaXMuaXNGb2xkZXJzQ2hlY2tlZCgpO1xuICB9XG5cbiAgZXZhbHVhdGVMaWJyYXJpZXNDb25zdHJhaW50KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmlzTGlicmFyaWVzQ2hlY2tlZCgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5oYXM0MDBMaWJyYXJ5RXJyb3IgfHwgdGhpcy5zZWFyY2hJbnB1dENvbnRyb2wuaXNUZXJtVG9vU2hvcnQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZmlsdGVyQ29udGVudChvcHRpb246IFNlYXJjaE9wdGlvbklkcy5Gb2xkZXJzIHwgU2VhcmNoT3B0aW9uSWRzLkZpbGVzKSB7XG4gICAgY29uc3Qgb3Bwb3NpdGVPcHRpb24gPSBvcHRpb24gPT09IFNlYXJjaE9wdGlvbklkcy5Gb2xkZXJzID8gU2VhcmNoT3B0aW9uSWRzLkZpbGVzIDogU2VhcmNoT3B0aW9uSWRzLkZvbGRlcnM7XG5cbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci5hZGRGaWx0ZXJRdWVyeShgK1RZUEU6J2NtOiR7b3B0aW9ufSdgKTtcbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci5yZW1vdmVGaWx0ZXJRdWVyeShgK1RZUEU6J2NtOiR7b3Bwb3NpdGVPcHRpb259J2ApO1xuICB9XG5cbiAgcmVtb3ZlQ29udGVudEZpbHRlcnMoKSB7XG4gICAgdGhpcy5xdWVyeUJ1aWxkZXIucmVtb3ZlRmlsdGVyUXVlcnkoYCtUWVBFOidjbToke1NlYXJjaE9wdGlvbklkcy5GaWxlc30nYCk7XG4gICAgdGhpcy5xdWVyeUJ1aWxkZXIucmVtb3ZlRmlsdGVyUXVlcnkoYCtUWVBFOidjbToke1NlYXJjaE9wdGlvbklkcy5Gb2xkZXJzfSdgKTtcbiAgfVxuXG4gIHN5bmNJbnB1dFZhbHVlcygpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dENvbnRyb2wuc2VhcmNoVGVybSAhPT0gdGhpcy5zZWFyY2hlZFdvcmQpIHtcbiAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0Q29udHJvbC5zZWFyY2hUZXJtKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoZWRXb3JkID0gdGhpcy5zZWFyY2hJbnB1dENvbnRyb2wuc2VhcmNoVGVybTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRDb250cm9sLnNlYXJjaFRlcm0gPSB0aGlzLnNlYXJjaGVkV29yZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRVcmxTZWFyY2hUZXJtKCk6IHN0cmluZyB7XG4gICAgbGV0IHNlYXJjaFRlcm0gPSAnJztcbiAgICBpZiAodGhpcy5vblNlYXJjaFJlc3VsdHMgfHwgdGhpcy5vbkxpYnJhcmllc1NlYXJjaFJlc3VsdHMpIHtcbiAgICAgIGNvbnN0IHVybFRyZWU6IFVybFRyZWUgPSB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLnJvdXRlci51cmwpO1xuICAgICAgY29uc3QgdXJsU2VnbWVudEdyb3VwOiBVcmxTZWdtZW50R3JvdXAgPSB1cmxUcmVlLnJvb3QuY2hpbGRyZW5bUFJJTUFSWV9PVVRMRVRdO1xuXG4gICAgICBpZiAodXJsU2VnbWVudEdyb3VwKSB7XG4gICAgICAgIGNvbnN0IHVybFNlZ21lbnRzOiBVcmxTZWdtZW50W10gPSB1cmxTZWdtZW50R3JvdXAuc2VnbWVudHM7XG4gICAgICAgIHNlYXJjaFRlcm0gPSB1cmxTZWdtZW50c1swXS5wYXJhbWV0ZXJzWydxJ10gPyBkZWNvZGVVUklDb21wb25lbnQodXJsU2VnbWVudHNbMF0ucGFyYW1ldGVyc1sncSddKSA6ICcnO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzZWFyY2hUZXJtO1xuICB9XG5cbiAgaXNTYW1lU2VhcmNoVGVybSgpOiBib29sZWFuIHtcbiAgICBjb25zdCB1cmxTZWFyY2hUZXJtID0gdGhpcy5nZXRVcmxTZWFyY2hUZXJtKCk7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoZWRXb3JkID09PSB1cmxTZWFyY2hUZXJtO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXBwLXNlYXJjaC1jb250YWluZXIgc2VhcmNoTWVudVRyaWdnZXJcIlxuICBbbWF0TWVudVRyaWdnZXJGb3JdPVwic2VhcmNoT3B0aW9uc01lbnVcIlxuICAobWVudU9wZW5lZCk9XCJvbk1lbnVPcGVuZWQoKVwiXG4gIChtZW51Q2xvc2VkKT1cInN5bmNJbnB1dFZhbHVlcygpXCJcbj5cblxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cImFwcC1zZWFyY2gtYnV0dG9uXCIgKGNsaWNrKT1cInNlYXJjaEJ5T3B0aW9uKClcIiBbdGl0bGVdPVwiJ1NFQVJDSC5CVVRUT04uVE9PTFRJUCcgfCB0cmFuc2xhdGVcIj5cbiAgICA8bWF0LWljb24gW2F0dHIuYXJpYS1sYWJlbF09XCInU0VBUkNILkJVVFRPTi5BUklBLUxBQkVMJyB8IHRyYW5zbGF0ZVwiPnNlYXJjaDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhcHAtaW5wdXQtZm9ybS1maWVsZFwiIFtmbG9hdExhYmVsXT1cIiduZXZlcidcIj5cbiAgICA8aW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTRUFSQ0guSU5QVVQuQVJJQS1MQUJFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgIFt2YWx1ZV09XCJzZWFyY2hlZFdvcmRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRUFSQ0guSU5QVVQuUExBQ0VIT0xERVInIHwgdHJhbnNsYXRlXCJcbiAgICAvPlxuXG4gICAgPGRpdiBtYXRTdWZmaXggY2xhc3M9XCJhcHAtc3VmZml4LXNlYXJjaC1pY29uLXdyYXBwZXJcIj5cbiAgICAgIDxtYXQtaWNvbj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IGNsYXNzPVwiYXBwLXN1ZmZpeC1zZWFyY2gtaWNvbi13cmFwcGVyIGFwcC1jbG9zZS1pY29uXCIgKGNsaWNrKT1cImV4aXRTZWFyY2goKVwiPlxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PlxuXG48bWF0LW1lbnUgI3NlYXJjaE9wdGlvbnNNZW51PVwibWF0TWVudVwiIFtvdmVybGFwVHJpZ2dlcl09XCJ0cnVlXCIgY2xhc3M9XCJhcHAtc2VhcmNoLW9wdGlvbnMtbWVudVwiPlxuICA8ZGl2IChrZXlkb3duLnRhYik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAoa2V5ZG93bi5zaGlmdC50YWIpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgdGFiaW5kZXg9MD5cbiAgICA8ZGl2IGNka1RyYXBGb2N1cz5cbiAgICAgIDxhcHAtc2VhcmNoLWlucHV0LWNvbnRyb2xcbiAgICAgICAgI3NlYXJjaElucHV0Q29udHJvbFxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgKHN1Ym1pdCk9XCJvblNlYXJjaFN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHNlYXJjaENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgIDwvYXBwLXNlYXJjaC1pbnB1dC1jb250cm9sPlxuICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiaGFzTGlicmFyaWVzQ29uc3RyYWludFwiIGNsYXNzPVwiYXBwLXNlYXJjaC1oaW50XCI+e3sgJ1NFQVJDSC5JTlBVVC5ISU5UJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWhpbnQ+XG5cbiAgICAgIDxkaXYgaWQ9XCJzZWFyY2gtb3B0aW9uc1wiPlxuICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzZWFyY2hPcHRpb25zXCJcbiAgICAgICAgICBpZD1cInt7IG9wdGlvbi5pZCB9fVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uc2hvdWxkRGlzYWJsZSgpXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInNlYXJjaEJ5T3B0aW9uKClcIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgb3B0aW9uLmtleSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbWF0LW1lbnU+XG4iXX0=
|