@fundamental-ngx/platform 0.43.11 → 0.43.12
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/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +1 -1
- package/esm2020/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +1 -1
- package/esm2020/search-field/search-field.component.mjs +6 -2
- package/esm2020/smart-filter-bar/smart-filter-bar.component.mjs +1 -1
- package/esm2020/table/components/table-p13-dialog/columns/columns.component.mjs +1 -1
- package/esm2020/table/components/table-toolbar/table-toolbar.component.mjs +3 -3
- package/esm2020/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +1 -1
- package/esm2020/variant-management/variant-management.component.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-approval-flow.mjs +2 -2
- package/fesm2015/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-search-field.mjs +5 -1
- package/fesm2015/fundamental-ngx-platform-search-field.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-smart-filter-bar.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-table.mjs +3 -3
- package/fesm2015/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-variant-management.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-approval-flow.mjs +2 -2
- package/fesm2020/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-search-field.mjs +5 -1
- package/fesm2020/fundamental-ngx-platform-search-field.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-smart-filter-bar.mjs +1 -1
- package/fesm2020/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-table.mjs +3 -3
- package/fesm2020/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs +1 -1
- package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-variant-management.mjs +1 -1
- package/fesm2020/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fundamental-ngx-platform-v0.43.12.tgz +0 -0
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/search-field/search-field.component.d.ts +3 -1
- package/fundamental-ngx-platform-v0.43.11.tgz +0 -0
|
@@ -269,7 +269,7 @@ export class ApprovalFlowAddNodeComponent {
|
|
|
269
269
|
}
|
|
270
270
|
}
|
|
271
271
|
ApprovalFlowAddNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApprovalFlowAddNodeComponent, deps: [{ token: i1.DialogRef }, { token: i2.ApprovalFlowAddNodeViewService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
272
|
-
ApprovalFlowAddNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ApprovalFlowAddNodeComponent, selector: "fdp-approval-flow-add-node", host: { classAttribute: "fdp-approval-flow-dialog fdp-approval-flow-add-node" }, ngImport: i0, template: "<fd-dialog fdCompact>\n <fd-dialog-header [class.show-search]=\"_selectMode && !_userToShowDetails\">\n <ng-template fdkTemplate=\"header\">\n <p>\n <ng-container *ngIf=\"!_selectMode && !_data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"!_selectMode && _data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isSelectTeamMode\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitTeamMembersMode()\"></fd-icon>\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitUserDetailsMode()\"></fd-icon>\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\n </ng-container>\n </p>\n\n <fdp-search-field\n *ngIf=\"_selectMode && !_userToShowDetails\"\n [placeholder]=\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\"\n [suggestions]=\"[]\"\n (inputChange)=\"_onSearchStringChange($event.text)\"\n ></fdp-search-field>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\"viewService.isUserDetailsMode\">\n <ng-container *ngIf=\"!_selectMode\">\n <div fd-form-item *ngIf=\"_data.showNodeTypeSelect\">\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_nodeType\">\n <ng-container *ngFor=\"let option of _nodeTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_nodeTypes.SERIAL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_nodeTypes.PARALLEL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_approverType\">\n <ng-container *ngFor=\"let option of _approverTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_approverTypes.SINGLE_USER\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.ANYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.EVERYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\n\n <fd-multi-input\n *ngIf=\"_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedApprovers\"\n [(ngModel)]=\"_selectedApprovers\"\n [displayFn]=\"_displayUserFn\"\n (openChange)=\"_goToSelectMode()\"\n (selectedChange)=\"_setSelectedApprovers($event)\"\n ></fd-multi-input>\n\n <fd-multi-input\n *ngIf=\"!_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedTeamArray\"\n [(ngModel)]=\"_selectedTeamArray\"\n [displayFn]=\"_displayTeamFn\"\n (openChange)=\"_goToSelectMode()\"\n ></fd-multi-input>\n </div>\n\n <div *ngIf=\"_nodeType === _nodeTypes.PARALLEL\" fd-form-item>\n <fd-checkbox [(ngModel)]=\"_addToNextSerial\">\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\n </fd-checkbox>\n </div>\n\n <div *ngIf=\"_checkDueDate\" fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\n\n <fd-date-picker type=\"single\" [state]=\"!this._dueDate ? 'error' : null\" [(ngModel)]=\"_dueDate\">\n </fd-date-picker>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fdp-approval-flow-team-list\n *ngIf=\"!_data.teamDataSource.isDataLoading; else loadingTpl\"\n [isRtl]=\"_data.rtl\"\n [teams]=\"_teams\"\n [selectedTeamId]=\"_selectedTeam?.id\"\n (onTeamClick)=\"_viewTeamMembers($event)\"\n (onTeamRadioClick)=\"_setSelectedTeam($event)\"\n ></fdp-approval-flow-team-list>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isTeamMembersMode\">\n <fdp-approval-flow-user-list\n *ngIf=\"viewService.isSelectUserMode || !_data.userDataSource.isDataLoading; else loadingTpl\"\n [users]=\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\"\n [isSelectable]=\"viewService.isSelectUserMode\"\n [selectedUsers]=\"_selectedApprovers\"\n (onUserClick)=\"_seeUserDetails($event)\"\n (onSelectionChange)=\"_selectedApprovers = $event\"\n ></fdp-approval-flow-user-list>\n </ng-container>\n\n <fdp-approval-flow-user-details\n *ngIf=\"viewService.isUserDetailsMode && _userToShowDetails\"\n [user]=\"_userToShowDetails\"\n [detailsTemplate]=\"_data.userDetailsTemplate\"\n [details]=\"_userToShowDetailsData$\"\n ></fdp-approval-flow-user-details>\n </ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <ng-container *ngIf=\"!_selectMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-dialog-decisive-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\"\n [disabled]=\"_isMainSubmitButtonDisabled\"\n (click)=\"_submit()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fd-dialog-decisive-button\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectUserMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedApprovers.length\"\n (click)=\"_confirmSelectedApprovers()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedTeam && !viewService.team\"\n (click)=\"_confirmSelectedTeam()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitTeamMembersMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitUserDetailsMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n </ng-container>\n </fd-dialog-footer>\n</fd-dialog>\n\n<ng-template #loadingTpl>\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n</ng-template>\n", styles: [".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\n", ".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i1.DialogFooterButtonComponent, selector: "fd-dialog-footer-button" }, { kind: "directive", type: i1.DialogDecisiveButtonDirective, selector: "[fd-dialog-decisive-button]" }, { kind: "directive", type: i8.TemplateDirective, selector: "[fdkTemplate], [fdTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: i8.InitialFocusDirective, selector: "[fdkInitialFocus], [fdInitialFocus], [fd-initial-focus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "component", type: i9.SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "searchSuggestionMessage", "searchSuggestionNavigateMessage", "forceSearchButton"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: i10.MultiInputComponent, selector: "fd-multi-input", inputs: ["placeholder", "disabled", "required", "compactCollapse", "maxHeight", "glyph", "dropdownValues", "openDropdownOnAddOnClicked", "searchTerm", "inputId", "highlight", "selected", "class", "filterFn", "valueFn", "displayFn", "newTokenParseFn", "optionItemIdentifier", "newTokenValidateFn", "ariaLabel", "ariaLabelledBy", "fillControlMode", "state", "buttonFocusable", "allowNewTokens", "mobile", "showAllButton", "bodyMaxWidth", "mobileConfig", "includes", "itemTemplate", "title", "byline", "autoComplete", "open", "displayAddonButton", "tokenHiddenId"], outputs: ["searchTermChange", "selectedChange", "openChange", "addOnButtonClicked", "allItemsSelectedChange"] }, { kind: "component", type: i11.CheckboxComponent, selector: "fd-checkbox", inputs: ["ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i12.SelectComponent, selector: "fd-select", inputs: ["controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "extendedBodyTemplate", "maxHeight", "glyph", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: i12.OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "component", type: i13.DatePickerComponent, selector: "fd-date-picker", inputs: ["type", "placeholder", "inputId", "required", "message", "messageTriggers", "selectedDate", "selectedRangeDate", "startingDayOfWeek", "rangeHoverEffect", "useValidation", "dateInputLabel", "dateRangeInputLabel", "displayCalendarToggleLabel", "valueStateSuccessMessage", "valueStateInformationMessage", "valueStateWarningMessage", "valueStateErrorMessage", "allowNull", "activeView", "placement", "appendTo", "disabled", "closeOnDateChoose", "showTodayButton", "todayButtonLabel", "previousButtonDisableFunction", "nextButtonDisableFunction", "state", "buttonFocusable", "specialDaysRules", "yearGrid", "aggregatedYearGrid", "markWeekends", "showWeekNumbers", "isOpen", "inline", "ariaLabelledBy", "processInputOnBlur", "preventScrollOnFocus", "disableFunction", "disableRangeStartFunction", "disableRangeEndFunction"], outputs: ["isOpenChange", "selectedDateChange", "selectedRangeDateChange", "activeViewChange"] }, { kind: "component", type: i14.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i15.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i15.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: i16.ApprovalFlowUserListComponent, selector: "fdp-approval-flow-user-list", inputs: ["users", "selectedUsers", "isSelectable"], outputs: ["onUserClick", "onSelectionChange"] }, { kind: "component", type: i17.ApprovalFlowUserDetailsComponent, selector: "fdp-approval-flow-user-details", inputs: ["user", "details", "detailsTemplate"] }, { kind: "component", type: i18.ApprovalFlowTeamListComponent, selector: "fdp-approval-flow-team-list", inputs: ["teams", "isRtl", "selectedTeamId"], outputs: ["onTeamClick", "onTeamRadioClick"] }, { kind: "pipe", type: i19.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
272
|
+
ApprovalFlowAddNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ApprovalFlowAddNodeComponent, selector: "fdp-approval-flow-add-node", host: { classAttribute: "fdp-approval-flow-dialog fdp-approval-flow-add-node" }, ngImport: i0, template: "<fd-dialog fdCompact>\n <fd-dialog-header [class.show-search]=\"_selectMode && !_userToShowDetails\">\n <ng-template fdkTemplate=\"header\">\n <p>\n <ng-container *ngIf=\"!_selectMode && !_data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"!_selectMode && _data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isSelectTeamMode\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitTeamMembersMode()\"></fd-icon>\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitUserDetailsMode()\"></fd-icon>\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\n </ng-container>\n </p>\n\n <fdp-search-field\n *ngIf=\"_selectMode && !_userToShowDetails\"\n [placeholder]=\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\"\n [suggestions]=\"[]\"\n (inputChange)=\"_onSearchStringChange($event.text)\"\n ></fdp-search-field>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\"viewService.isUserDetailsMode\">\n <ng-container *ngIf=\"!_selectMode\">\n <div fd-form-item *ngIf=\"_data.showNodeTypeSelect\">\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_nodeType\">\n <ng-container *ngFor=\"let option of _nodeTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_nodeTypes.SERIAL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_nodeTypes.PARALLEL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_approverType\">\n <ng-container *ngFor=\"let option of _approverTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_approverTypes.SINGLE_USER\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.ANYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.EVERYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\n\n <fd-multi-input\n *ngIf=\"_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedApprovers\"\n [(ngModel)]=\"_selectedApprovers\"\n [displayFn]=\"_displayUserFn\"\n (openChange)=\"_goToSelectMode()\"\n (selectedChange)=\"_setSelectedApprovers($event)\"\n ></fd-multi-input>\n\n <fd-multi-input\n *ngIf=\"!_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedTeamArray\"\n [(ngModel)]=\"_selectedTeamArray\"\n [displayFn]=\"_displayTeamFn\"\n (openChange)=\"_goToSelectMode()\"\n ></fd-multi-input>\n </div>\n\n <div *ngIf=\"_nodeType === _nodeTypes.PARALLEL\" fd-form-item>\n <fd-checkbox [(ngModel)]=\"_addToNextSerial\">\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\n </fd-checkbox>\n </div>\n\n <div *ngIf=\"_checkDueDate\" fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\n\n <fd-date-picker type=\"single\" [state]=\"!this._dueDate ? 'error' : null\" [(ngModel)]=\"_dueDate\">\n </fd-date-picker>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fdp-approval-flow-team-list\n *ngIf=\"!_data.teamDataSource.isDataLoading; else loadingTpl\"\n [isRtl]=\"_data.rtl\"\n [teams]=\"_teams\"\n [selectedTeamId]=\"_selectedTeam?.id\"\n (onTeamClick)=\"_viewTeamMembers($event)\"\n (onTeamRadioClick)=\"_setSelectedTeam($event)\"\n ></fdp-approval-flow-team-list>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isTeamMembersMode\">\n <fdp-approval-flow-user-list\n *ngIf=\"viewService.isSelectUserMode || !_data.userDataSource.isDataLoading; else loadingTpl\"\n [users]=\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\"\n [isSelectable]=\"viewService.isSelectUserMode\"\n [selectedUsers]=\"_selectedApprovers\"\n (onUserClick)=\"_seeUserDetails($event)\"\n (onSelectionChange)=\"_selectedApprovers = $event\"\n ></fdp-approval-flow-user-list>\n </ng-container>\n\n <fdp-approval-flow-user-details\n *ngIf=\"viewService.isUserDetailsMode && _userToShowDetails\"\n [user]=\"_userToShowDetails\"\n [detailsTemplate]=\"_data.userDetailsTemplate\"\n [details]=\"_userToShowDetailsData$\"\n ></fdp-approval-flow-user-details>\n </ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <ng-container *ngIf=\"!_selectMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-dialog-decisive-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\"\n [disabled]=\"_isMainSubmitButtonDisabled\"\n (click)=\"_submit()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fd-dialog-decisive-button\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectUserMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedApprovers.length\"\n (click)=\"_confirmSelectedApprovers()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedTeam && !viewService.team\"\n (click)=\"_confirmSelectedTeam()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitTeamMembersMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitUserDetailsMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n </ng-container>\n </fd-dialog-footer>\n</fd-dialog>\n\n<ng-template #loadingTpl>\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n</ng-template>\n", styles: [".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\n", ".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i1.DialogFooterButtonComponent, selector: "fd-dialog-footer-button" }, { kind: "directive", type: i1.DialogDecisiveButtonDirective, selector: "[fd-dialog-decisive-button]" }, { kind: "directive", type: i8.TemplateDirective, selector: "[fdkTemplate], [fdTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: i8.InitialFocusDirective, selector: "[fdkInitialFocus], [fdInitialFocus], [fd-initial-focus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "component", type: i9.SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "searchSuggestionMessage", "searchSuggestionNavigateMessage", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: i10.MultiInputComponent, selector: "fd-multi-input", inputs: ["placeholder", "disabled", "required", "compactCollapse", "maxHeight", "glyph", "dropdownValues", "openDropdownOnAddOnClicked", "searchTerm", "inputId", "highlight", "selected", "class", "filterFn", "valueFn", "displayFn", "newTokenParseFn", "optionItemIdentifier", "newTokenValidateFn", "ariaLabel", "ariaLabelledBy", "fillControlMode", "state", "buttonFocusable", "allowNewTokens", "mobile", "showAllButton", "bodyMaxWidth", "mobileConfig", "includes", "itemTemplate", "title", "byline", "autoComplete", "open", "displayAddonButton", "tokenHiddenId"], outputs: ["searchTermChange", "selectedChange", "openChange", "addOnButtonClicked", "allItemsSelectedChange"] }, { kind: "component", type: i11.CheckboxComponent, selector: "fd-checkbox", inputs: ["ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i12.SelectComponent, selector: "fd-select", inputs: ["controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "extendedBodyTemplate", "maxHeight", "glyph", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: i12.OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "component", type: i13.DatePickerComponent, selector: "fd-date-picker", inputs: ["type", "placeholder", "inputId", "required", "message", "messageTriggers", "selectedDate", "selectedRangeDate", "startingDayOfWeek", "rangeHoverEffect", "useValidation", "dateInputLabel", "dateRangeInputLabel", "displayCalendarToggleLabel", "valueStateSuccessMessage", "valueStateInformationMessage", "valueStateWarningMessage", "valueStateErrorMessage", "allowNull", "activeView", "placement", "appendTo", "disabled", "closeOnDateChoose", "showTodayButton", "todayButtonLabel", "previousButtonDisableFunction", "nextButtonDisableFunction", "state", "buttonFocusable", "specialDaysRules", "yearGrid", "aggregatedYearGrid", "markWeekends", "showWeekNumbers", "isOpen", "inline", "ariaLabelledBy", "processInputOnBlur", "preventScrollOnFocus", "disableFunction", "disableRangeStartFunction", "disableRangeEndFunction"], outputs: ["isOpenChange", "selectedDateChange", "selectedRangeDateChange", "activeViewChange"] }, { kind: "component", type: i14.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i15.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i15.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: i16.ApprovalFlowUserListComponent, selector: "fdp-approval-flow-user-list", inputs: ["users", "selectedUsers", "isSelectable"], outputs: ["onUserClick", "onSelectionChange"] }, { kind: "component", type: i17.ApprovalFlowUserDetailsComponent, selector: "fdp-approval-flow-user-details", inputs: ["user", "details", "detailsTemplate"] }, { kind: "component", type: i18.ApprovalFlowTeamListComponent, selector: "fdp-approval-flow-team-list", inputs: ["teams", "isRtl", "selectedTeamId"], outputs: ["onTeamClick", "onTeamRadioClick"] }, { kind: "pipe", type: i19.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
273
273
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApprovalFlowAddNodeComponent, decorators: [{
|
|
274
274
|
type: Component,
|
|
275
275
|
args: [{ selector: 'fdp-approval-flow-add-node', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
@@ -81,7 +81,7 @@ export class ApprovalFlowApproverDetailsComponent {
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
ApprovalFlowApproverDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApprovalFlowApproverDetailsComponent, deps: [{ token: i1.DialogRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
84
|
-
ApprovalFlowApproverDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ApprovalFlowApproverDetailsComponent, selector: "fdp-approval-flow-approver-details", host: { classAttribute: "fdp-approval-flow-dialog fdp-approval-flow-approver-details" }, ngImport: i0, template: "<fd-dialog>\n <fd-dialog-header [class.show-search]=\"!_userToShowDetails && _isListMode\">\n <ng-template fdkTemplate=\"header\">\n <p>\n <fd-icon\n *ngIf=\"_userToShowDetails && _data.node?.approvers && _data.node!.approvers!.length > 1\"\n [glyph]=\"'navigation-' + (_data.rtl ? 'right' : 'left') + '-arrow'\"\n tabindex=\"0\"\n role=\"button\"\n (click)=\"_exitUserDetailsMode()\"\n (keyup.space)=\"_exitUserDetailsMode()\"\n (keyup.enter)=\"_exitUserDetailsMode()\"\n ></fd-icon>\n <ng-container *ngIf=\"_isListMode && !_userToShowDetails; else defaultHeader\"\n >{{ _data.node?.description }} ({{ _data.node?.approvers?.length ?? 0 }})</ng-container\n >\n </p>\n\n <fdp-search-field\n *ngIf=\"!_userToShowDetails && _isListMode\"\n [placeholder]=\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\"\n fdCompact\n [suggestions]=\"[]\"\n (inputChange)=\"_onSearchStringChange($event.text)\"\n ></fdp-search-field>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <fdp-approval-flow-user-details\n *ngIf=\"_userToShowDetails\"\n [user]=\"_userToShowDetails\"\n [detailsTemplate]=\"_data.userDetailsTemplate\"\n [details]=\"_userToShowDetailsData$\"\n ></fdp-approval-flow-user-details>\n <fdp-approval-flow-user-list\n *ngIf=\"_isListMode\"\n [users]=\"_listItems\"\n (onUserClick)=\"_seeUserDetails($event)\"\n (onSelectionChange)=\"_selectedUsers = $event\"\n ></fdp-approval-flow-user-list>\n </fd-dialog-body>\n\n <fd-dialog-footer fdCompact>\n <fd-dialog-footer-button *ngIf=\"_isListMode || (_userToShowDetails && _data.node?.approvers?.length === 1)\">\n <button\n fd-button\n fd-dialog-decisive-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.userDetailsSendReminderBtnLabel' | fdTranslate\"\n [disabled]=\"!_data.allowSendReminder || (_isListMode && !_selectedUsers.length)\"\n (click)=\"_sendReminder()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fd-dialog-decisive-button\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.userDetailsCancelBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close('Cancel')\"\n ></button>\n </fd-dialog-footer-button>\n </fd-dialog-footer>\n</fd-dialog>\n\n<ng-template #defaultHeader>\n {{ 'platformApprovalFlow.userDetailsHeader' | fdTranslate }}\n</ng-template>\n", styles: [".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i1.DialogFooterButtonComponent, selector: "fd-dialog-footer-button" }, { kind: "directive", type: i1.DialogDecisiveButtonDirective, selector: "[fd-dialog-decisive-button]" }, { kind: "directive", type: i6.TemplateDirective, selector: "[fdkTemplate], [fdTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: i6.InitialFocusDirective, selector: "[fdkInitialFocus], [fdInitialFocus], [fd-initial-focus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "component", type: i7.SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "searchSuggestionMessage", "searchSuggestionNavigateMessage", "forceSearchButton"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: i8.ApprovalFlowUserListComponent, selector: "fdp-approval-flow-user-list", inputs: ["users", "selectedUsers", "isSelectable"], outputs: ["onUserClick", "onSelectionChange"] }, { kind: "component", type: i9.ApprovalFlowUserDetailsComponent, selector: "fdp-approval-flow-user-details", inputs: ["user", "details", "detailsTemplate"] }, { kind: "pipe", type: i10.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
84
|
+
ApprovalFlowApproverDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ApprovalFlowApproverDetailsComponent, selector: "fdp-approval-flow-approver-details", host: { classAttribute: "fdp-approval-flow-dialog fdp-approval-flow-approver-details" }, ngImport: i0, template: "<fd-dialog>\n <fd-dialog-header [class.show-search]=\"!_userToShowDetails && _isListMode\">\n <ng-template fdkTemplate=\"header\">\n <p>\n <fd-icon\n *ngIf=\"_userToShowDetails && _data.node?.approvers && _data.node!.approvers!.length > 1\"\n [glyph]=\"'navigation-' + (_data.rtl ? 'right' : 'left') + '-arrow'\"\n tabindex=\"0\"\n role=\"button\"\n (click)=\"_exitUserDetailsMode()\"\n (keyup.space)=\"_exitUserDetailsMode()\"\n (keyup.enter)=\"_exitUserDetailsMode()\"\n ></fd-icon>\n <ng-container *ngIf=\"_isListMode && !_userToShowDetails; else defaultHeader\"\n >{{ _data.node?.description }} ({{ _data.node?.approvers?.length ?? 0 }})</ng-container\n >\n </p>\n\n <fdp-search-field\n *ngIf=\"!_userToShowDetails && _isListMode\"\n [placeholder]=\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\"\n fdCompact\n [suggestions]=\"[]\"\n (inputChange)=\"_onSearchStringChange($event.text)\"\n ></fdp-search-field>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <fdp-approval-flow-user-details\n *ngIf=\"_userToShowDetails\"\n [user]=\"_userToShowDetails\"\n [detailsTemplate]=\"_data.userDetailsTemplate\"\n [details]=\"_userToShowDetailsData$\"\n ></fdp-approval-flow-user-details>\n <fdp-approval-flow-user-list\n *ngIf=\"_isListMode\"\n [users]=\"_listItems\"\n (onUserClick)=\"_seeUserDetails($event)\"\n (onSelectionChange)=\"_selectedUsers = $event\"\n ></fdp-approval-flow-user-list>\n </fd-dialog-body>\n\n <fd-dialog-footer fdCompact>\n <fd-dialog-footer-button *ngIf=\"_isListMode || (_userToShowDetails && _data.node?.approvers?.length === 1)\">\n <button\n fd-button\n fd-dialog-decisive-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.userDetailsSendReminderBtnLabel' | fdTranslate\"\n [disabled]=\"!_data.allowSendReminder || (_isListMode && !_selectedUsers.length)\"\n (click)=\"_sendReminder()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fd-dialog-decisive-button\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.userDetailsCancelBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close('Cancel')\"\n ></button>\n </fd-dialog-footer-button>\n </fd-dialog-footer>\n</fd-dialog>\n\n<ng-template #defaultHeader>\n {{ 'platformApprovalFlow.userDetailsHeader' | fdTranslate }}\n</ng-template>\n", styles: [".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i1.DialogFooterButtonComponent, selector: "fd-dialog-footer-button" }, { kind: "directive", type: i1.DialogDecisiveButtonDirective, selector: "[fd-dialog-decisive-button]" }, { kind: "directive", type: i6.TemplateDirective, selector: "[fdkTemplate], [fdTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: i6.InitialFocusDirective, selector: "[fdkInitialFocus], [fdInitialFocus], [fd-initial-focus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "component", type: i7.SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "searchSuggestionMessage", "searchSuggestionNavigateMessage", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: i8.ApprovalFlowUserListComponent, selector: "fdp-approval-flow-user-list", inputs: ["users", "selectedUsers", "isSelectable"], outputs: ["onUserClick", "onSelectionChange"] }, { kind: "component", type: i9.ApprovalFlowUserDetailsComponent, selector: "fdp-approval-flow-user-details", inputs: ["user", "details", "detailsTemplate"] }, { kind: "pipe", type: i10.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
85
85
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApprovalFlowApproverDetailsComponent, decorators: [{
|
|
86
86
|
type: Component,
|
|
87
87
|
args: [{ selector: 'fdp-approval-flow-approver-details', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
@@ -137,6 +137,8 @@ export class SearchFieldComponent extends BaseComponent {
|
|
|
137
137
|
this.isLoading = false;
|
|
138
138
|
/** Whether to always show search button. */
|
|
139
139
|
this.forceSearchButton = false;
|
|
140
|
+
/** Whether to disable the "suggestions found" live announcer. */
|
|
141
|
+
this.disableSuggestionsFoundAnnouncer = false;
|
|
140
142
|
/** Input change event. */
|
|
141
143
|
this.inputChange = new EventEmitter();
|
|
142
144
|
/** Search submit event. */
|
|
@@ -479,7 +481,7 @@ export class SearchFieldComponent extends BaseComponent {
|
|
|
479
481
|
}
|
|
480
482
|
}
|
|
481
483
|
SearchFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SearchFieldComponent, deps: [{ token: i0.ElementRef }, { token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i2.RtlService, optional: true }, { token: DOCUMENT }, { token: FD_LANGUAGE }, { token: i3.LiveAnnouncer }, { token: i2.DynamicComponentService }, { token: i4.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
482
|
-
SearchFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SearchFieldComponent, selector: "fdp-search-field", inputs: { categoryMode: "categoryMode", appearance: "appearance", placeholder: "placeholder", mobile: "mobile", mobileConfig: "mobileConfig", disableRefresh: "disableRefresh", disableSearch: "disableSearch", suggestions: "suggestions", dataSource: "dataSource", inputText: "inputText", categories: "categories", currentCategory: "currentCategory", categoryLabel: "categoryLabel", hideCategoryLabel: "hideCategoryLabel", isLoading: "isLoading", ariaLabel: "ariaLabel", ariaLabelledby: "ariaLabelledby", searchSuggestionMessage: "searchSuggestionMessage", searchSuggestionNavigateMessage: "searchSuggestionNavigateMessage", forceSearchButton: "forceSearchButton" }, outputs: { inputChange: "inputChange", searchSubmit: "searchSubmit", cancelSearch: "cancelSearch", isOpenChange: "isOpenChange" }, host: { listeners: { "keydown": "handleKeydown($event)" } }, providers: [
|
|
484
|
+
SearchFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SearchFieldComponent, selector: "fdp-search-field", inputs: { categoryMode: "categoryMode", appearance: "appearance", placeholder: "placeholder", mobile: "mobile", mobileConfig: "mobileConfig", disableRefresh: "disableRefresh", disableSearch: "disableSearch", suggestions: "suggestions", dataSource: "dataSource", inputText: "inputText", categories: "categories", currentCategory: "currentCategory", categoryLabel: "categoryLabel", hideCategoryLabel: "hideCategoryLabel", isLoading: "isLoading", ariaLabel: "ariaLabel", ariaLabelledby: "ariaLabelledby", searchSuggestionMessage: "searchSuggestionMessage", searchSuggestionNavigateMessage: "searchSuggestionNavigateMessage", forceSearchButton: "forceSearchButton", disableSuggestionsFoundAnnouncer: "disableSuggestionsFoundAnnouncer" }, outputs: { inputChange: "inputChange", searchSubmit: "searchSubmit", cancelSearch: "cancelSearch", isOpenChange: "isOpenChange" }, host: { listeners: { "keydown": "handleKeydown($event)" } }, providers: [
|
|
483
485
|
contentDensityObserverProviders(),
|
|
484
486
|
{
|
|
485
487
|
provide: FD_SHELLBAR_SEARCH_COMPONENT,
|
|
@@ -543,6 +545,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
543
545
|
type: Input
|
|
544
546
|
}], forceSearchButton: [{
|
|
545
547
|
type: Input
|
|
548
|
+
}], disableSuggestionsFoundAnnouncer: [{
|
|
549
|
+
type: Input
|
|
546
550
|
}], inputChange: [{
|
|
547
551
|
type: Output
|
|
548
552
|
}], searchSubmit: [{
|
|
@@ -594,4 +598,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
594
598
|
name: 'suggestionMatches'
|
|
595
599
|
}]
|
|
596
600
|
}] });
|
|
597
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zZWFyY2gtZmllbGQvc2VhcmNoLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zZWFyY2gtZmllbGQvc2VhcmNoLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBRUosU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBcUIsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFBbUIsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVB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RSxtQkFBbUI7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3RvcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFBpcGUsXG4gICAgUGlwZVRyYW5zZm9ybSxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBFU0NBUEUsIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgRm9jdXNhYmxlT3B0aW9uLCBGb2N1c0tleU1hbmFnZXIsIExpdmVBbm5vdW5jZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgZnJvbUV2ZW50LCBpc09ic2VydmFibGUsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudFNlcnZpY2UsIEtleVV0aWwsIFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5pbXBvcnQgeyBNb2JpbGVNb2RlQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21vYmlsZS1tb2RlJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQsIFNlYXJjaEZpZWxkRGF0YVNvdXJjZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7XG4gICAgU0VBUkNIX0ZJRUxEX0NPTVBPTkVOVCxcbiAgICBTZWFyY2hGaWVsZE1vYmlsZUludGVyZmFjZVxufSBmcm9tICcuL3NlYXJjaC1maWVsZC1tb2JpbGUvc2VhcmNoLWZpZWxkLW1vYmlsZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VhcmNoRmllbGRNb2JpbGVDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaC1maWVsZC1tb2JpbGUvc2VhcmNoLWZpZWxkL3NlYXJjaC1maWVsZC1tb2JpbGUuY29tcG9uZW50JztcbmltcG9ydCB7IFBsYXRmb3JtU2VhcmNoRmllbGRNb2JpbGVNb2R1bGUgfSBmcm9tICcuL3NlYXJjaC1maWVsZC1tb2JpbGUvc2VhcmNoLWZpZWxkLW1vYmlsZS5tb2R1bGUnO1xuaW1wb3J0IHsgRmRMYW5ndWFnZSwgRkRfTEFOR1VBR0UsIFRyYW5zbGF0aW9uUmVzb2x2ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgRkRfU0hFTExCQVJfU0VBUkNIX0NPTVBPTkVOVCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGVsbGJhcic7XG5pbXBvcnQgeyBTZWFyY2hDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaElucHV0IHtcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgY2F0ZWdvcnk6IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VnZ2VzdGlvbkl0ZW0ge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgaXNIaXN0b3JpY2FsPzogc3RyaW5nO1xuICAgIGRhdGE/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWVMYWJlbEl0ZW0ge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRwU2VhcmNoRmllbGRTdWdnZXN0aW9uXScsXG4gICAgaG9zdDoge1xuICAgICAgICB0YWJpbmRleDogJy0xJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoRmllbGRTdWdnZXN0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgRm9jdXNhYmxlT3B0aW9uIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZikge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxufVxuXG5sZXQgc2VhcmNoRmllbGRJZENvdW50ID0gMDtcblxudHlwZSBBcHBlYXJhbmNlID0gU2VhcmNoQ29tcG9uZW50WydhcHBlYXJhbmNlJ10gfCB1bmRlZmluZWQ7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXNlYXJjaC1maWVsZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycygpLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9TSEVMTEJBUl9TRUFSQ0hfQ09NUE9ORU5ULFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFNlYXJjaEZpZWxkQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEZpZWxkQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBCYXNlQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBTZWFyY2hGaWVsZE1vYmlsZUludGVyZmFjZSwgU2VhcmNoQ29tcG9uZW50XG57XG4gICAgLyoqIFR5cGUgb2YgY29tcG9uZW50IHVzZWQgdG8gcmVuZGVyIHRoZSBjYXRlZ29yaWVzIGRyb3Bkb3duLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2F0ZWdvcnlNb2RlOiAnbWVudScgfCAnc2VsZWN0JyA9ICdtZW51JztcblxuICAgIC8qKiBBZGRpdGlvbmFsIGFwcGVhcmFuY2UgY29uZmlndXJhdGlvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhcHBlYXJhbmNlKHZhbHVlOiBBcHBlYXJhbmNlKSB7XG4gICAgICAgIGlmIChlcXVhbCh2YWx1ZSwgdGhpcy5hcHBlYXJhbmNlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYXBwZWFyYW5jZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgZ2V0IGFwcGVhcmFuY2UoKTogQXBwZWFyYW5jZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBlYXJhbmNlO1xuICAgIH1cblxuICAgIC8qKiBQbGFjZSBob2xkZXIgdGV4dCBmb3Igc2VhcmNoIGlucHV0IGZpZWxkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIC8qKiBTZXQgTW9iaWxlIE1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZTogYm9vbGVhbjtcblxuICAgIC8qKiBTZWFyY2ggRmllbGQgTW9iaWxlIGNvbmZpZ3VyYXRpb24gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZUNvbmZpZzogTW9iaWxlTW9kZUNvbmZpZztcblxuICAgIC8qKiBXaGV0aGVyIGRpc3BsYXkgUmVmcmVzaCBidXR0b24gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVSZWZyZXNoID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBkaXNwbGF5IHNlYXJjaCBidXR0b24gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVTZWFyY2ggPSBmYWxzZTtcblxuICAgIC8qKiBMaXN0IG9mIHN0cmluZyB2YWx1ZXMgdG8gcG9wdWxhdGUgc3VnZ2VzdGlvbiBkcm9wZG93biBzZWxlY3Rpb24uICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc3VnZ2VzdGlvbnModmFsdWU6IFN1Z2dlc3Rpb25JdGVtW10gfCBPYnNlcnZhYmxlPFN1Z2dlc3Rpb25JdGVtW10+KSB7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zID0gdmFsdWU7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgLy8gY29udmVydCBzdWdnZXN0aW9ucyB0byBhbiBhcnJheSBvZiBzdHJpbmcgZm9yIFwiZHJvcGRvd24gdmFsdWVzXCJcbiAgICAgICAgICAgIGNvbnN0IGRyb3Bkb3duVmFsdWVzID0gdmFsdWUubWFwKChzdWdnZXN0aW9uOiBTdWdnZXN0aW9uSXRlbSkgPT4gc3VnZ2VzdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9kcm9wZG93blZhbHVlcyQgPSBvZihkcm9wZG93blZhbHVlcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYnNlcnZhYmxlKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5fZHJvcGRvd25WYWx1ZXMkID0gdmFsdWUucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHN1Z2dlc3Rpb25zOiBTdWdnZXN0aW9uSXRlbVtdKSA9PiBzdWdnZXN0aW9ucy5tYXAoKHN1Z2dlc3Rpb24pID0+IHN1Z2dlc3Rpb24udmFsdWUpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2Ryb3Bkb3duVmFsdWVzJCA9IG9mKFtdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgc3VnZ2VzdGlvbnMoKTogU3VnZ2VzdGlvbkl0ZW1bXSB8IE9ic2VydmFibGU8U3VnZ2VzdGlvbkl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VnZ2VzdGlvbnM7XG4gICAgfVxuXG4gICAgLyoqIERhdGFzb3VyY2UgZm9yIHN1Z2dlc3Rpb24gbGlzdCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRhdGFTb3VyY2UodmFsdWU6IFNlYXJjaEZpZWxkRGF0YVNvdXJjZTxhbnk+KSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZURhdGFTb3VyY2UodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBkYXRhU291cmNlKCk6IFNlYXJjaEZpZWxkRGF0YVNvdXJjZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2U7XG4gICAgfVxuXG4gICAgLyoqIEluaXRpYWwgaW5wdXQgdGV4dC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlucHV0VGV4dDogc3RyaW5nO1xuXG4gICAgLyoqIExpc3Qgb2YgY2F0ZWdvcmllcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjYXRlZ29yaWVzKHZhbHVlOiBWYWx1ZUxhYmVsSXRlbVtdKSB7XG4gICAgICAgIHRoaXMuX2NhdGVnb3JpZXMgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fc2hvd0NhdGVnb3J5RHJvcGRvd24gPSBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwO1xuICAgIH1cbiAgICBnZXQgY2F0ZWdvcmllcygpOiBWYWx1ZUxhYmVsSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhdGVnb3JpZXM7XG4gICAgfVxuXG4gICAgLyoqIEN1cnJlbnQgY2F0ZWdvcnksIHZhbHVlIHNob3VsZCBiZSBwcmVzZW50IGluIGNhdGVnb3JpZXMgYXJyYXkgKi9cbiAgICBASW5wdXQoKVxuICAgIGN1cnJlbnRDYXRlZ29yeTogVmFsdWVMYWJlbEl0ZW07XG5cbiAgICAvKiogU2V0IGxhYmVsIGZvciBjYXRlZ29yeSBkcm9wZG93biBidXR0b24uICovXG4gICAgQElucHV0KClcbiAgICBjYXRlZ29yeUxhYmVsID0gJ0NhdGVnb3J5JztcblxuICAgIC8qKiBIaWRlIGRpc3BsYXkgb2YgY2F0ZWdvcnkgbGFiZWwgKi9cbiAgICBASW5wdXQoKVxuICAgIGhpZGVDYXRlZ29yeUxhYmVsID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlIFwibG9hZGluZ1wiIG1vZGUuICovXG4gICAgQElucHV0KClcbiAgICBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEFSSUEgbGFiZWwgdG8gc3BlY2lmeSB3aGF0IHRoZSBzZWFyY2ggZmllbGQgaXNcbiAgICAgKiBOb3Qgc2hvd24gaW4gdGhlIFVJLCBvbmx5IHZpc2libGUgYnkgdGhlIHNjcmVlbi1yZWFkZXJzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogSWQgb2YgZWxlbWVudHMgKHNlcGFyYXRlZCBieSBzcGFjZSkgZm9yIHNldHRpbmcgYXJpYS1sYWJlbGxlZGJ5IGZvciBzZWFyY2ggaW5wdXRcbiAgICAgKiBOb3Qgc2hvd24gaW4gdGhlIFVJLCBvbmx5IHZpc2libGUgYnkgdGhlIHNjcmVlbi1yZWFkZXJzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsbGVkYnk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogTWVzc2FnZSBhbm5vdW5jZWQgYnkgc2NyZWVuIHJlYWRlciwgd2hlbiBzZWFyY2ggc3VnZ2VzdGlvbnMgb3BlbnMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hTdWdnZXN0aW9uTWVzc2FnZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBTZWNvbmQgcGFydCBvZiBtZXNzYWdlIGZvciBzZWFyY2ggc3VnZ2VzdGlvbi5cbiAgICAgKiBkaXJlY3Rpb24gZm9yIG5hdmlnYXRpbmcgdGhlIHN1Z2dlc3Rpb24uIFRoaXMgaXMgbm90IG5lY2Vzc3J5IGluIGNhc2Ugb2YgMCBzdWdnZXN0aW9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VhcmNoU3VnZ2VzdGlvbk5hdmlnYXRlTWVzc2FnZTogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gYWx3YXlzIHNob3cgc2VhcmNoIGJ1dHRvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZvcmNlU2VhcmNoQnV0dG9uID0gZmFsc2U7XG5cbiAgICAvKiogSW5wdXQgY2hhbmdlIGV2ZW50LiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGlucHV0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8U2VhcmNoSW5wdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqIFNlYXJjaCBzdWJtaXQgZXZlbnQuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VhcmNoU3VibWl0OiBFdmVudEVtaXR0ZXI8U2VhcmNoSW5wdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqIENhbmNlbCBzZWFyY2ggZXZlbnQuICovXG4gICAgQE91dHB1dCgpXG4gICAgY2FuY2VsU2VhcmNoOiBFdmVudEVtaXR0ZXI8U2VhcmNoSW5wdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqIE9wZW4gbW9iaWxlIG1vZGUgZXZlbnQuICovXG4gICAgQE91dHB1dCgpXG4gICAgaXNPcGVuQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBGb2N1cyBzdGF0ZSAqL1xuICAgIGdldCBpc0ZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kb2N1bWVudD8uYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5pbnB1dEZpZWxkPy5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9ic2VydmFibGUgbGlzdCBvZiBzdHJpbmcgdmFsdWVzIHRha2VuIGZyb20gYHN1Z2dlc3Rpb25zYCB0byBwb3B1bGF0ZSBkcm9wZG93biBtZW51LlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfZHJvcGRvd25WYWx1ZXMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiA9IG9mKFtdKTtcblxuICAgIC8qKlxuICAgICAqIEN1cnJlbnRseSBzZXQgY2F0ZWdvcnkuXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9jdXJyZW50Q2F0ZWdvcnk/OiBWYWx1ZUxhYmVsSXRlbTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIHNob3cgdHlwZWFoZWFkIGRyb3Bkb3duLlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfc2hvd0Ryb3Bkb3duID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IGNhdGVnb3J5IGRyb3Bkb3duLiBUaGlzIGlzIGRlcGVuZGVudCBvbiBsZW5ndGggb2YgYGNhdGVnb3J5VmFsdWVzYCBwcm9wZXJ0eS5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX3Nob3dDYXRlZ29yeURyb3Bkb3duID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pbnB1dElkID0gJyc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zdWJtaXRJZCA9ICcnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbWVudUlkID0gJyc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9yZWZyZXNoSWQgPSAnJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NsZWFySWQgPSAnJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2RpcjogRGlyZWN0aW9uID0gJ2x0cic7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGlzT3BlbiA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaXNSZWZyZXNoID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pc1NlYXJjaERvbmUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25JdGVtW10gfCBPYnNlcnZhYmxlPFN1Z2dlc3Rpb25JdGVtW10+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kYXRhU291cmNlOiBTZWFyY2hGaWVsZERhdGFTb3VyY2U8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2F0ZWdvcmllczogVmFsdWVMYWJlbEl0ZW1bXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3VycmVudFNlYXJjaFN1Z2dlc3Rpb25Bbm5vdWNlbWVudE1lc3NhZ2UgPSAnJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3VnZ2VzdGlvbk92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWdnZXN0aW9uUG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3VnZ2VzdGlvbmtleU1hbmFnZXI6IEZvY3VzS2V5TWFuYWdlcjxTZWFyY2hGaWVsZFN1Z2dlc3Rpb25EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmFuc2xhdGlvblJlc29sdmVyID0gbmV3IFRyYW5zbGF0aW9uUmVzb2x2ZXIoKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RhdGFTb3VyY2VDaGFuZ2VkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FwcGVhcmFuY2U6IEFwcGVhcmFuY2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2NhdGVnb3J5RHJvcGRvd24nLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBjYXRlZ29yeURyb3Bkb3duOiBQb3BvdmVyQ29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dEdyb3VwJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgaW5wdXRHcm91cDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0RmllbGQnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBpbnB1dEZpZWxkOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRGaWVsZFRlbXBsYXRlJylcbiAgICBpbnB1dEZpZWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3N1Z2dlc3Rpb25NZW51VGVtcGxhdGUnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBzdWdnZXN0aW9uTWVudVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKFNlYXJjaEZpZWxkU3VnZ2VzdGlvbkRpcmVjdGl2ZSlcbiAgICBzdWdnZXN0aW9uSXRlbXM6IFF1ZXJ5TGlzdDxTZWFyY2hGaWVsZFN1Z2dlc3Rpb25EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgc2VhcmNoRmllbGRWYWx1ZSgpOiBTZWFyY2hJbnB1dCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0OiB0aGlzLmlucHV0VGV4dCxcbiAgICAgICAgICAgIGNhdGVnb3J5OiB0aGlzLl9jdXJyZW50Q2F0ZWdvcnk/LnZhbHVlIHx8IG51bGxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX292ZXJsYXk6IE92ZXJsYXksXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bDogUnRsU2VydmljZSxcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICAgICBASW5qZWN0KEZEX0xBTkdVQUdFKSBwcml2YXRlIHJlYWRvbmx5IF9sYW5ndWFnZSQ6IE9ic2VydmFibGU8RmRMYW5ndWFnZT4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2xpdmVBbm5vdW5jZXI6IExpdmVBbm5vdW5jZXIsXG4gICAgICAgIHJlYWRvbmx5IF9keW5hbWljQ29tcG9uZW50U2VydmljZTogRHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG4gICAgICAgIHJlYWRvbmx5IGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoX2NkKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBiYXNlSWQgPSAnZmRwLXNlYXJjaC1maWVsZCc7XG4gICAgICAgIHRoaXMuX2lucHV0SWQgPSBgJHtiYXNlSWR9LWlucHV0LSR7c2VhcmNoRmllbGRJZENvdW50Kyt9YDtcbiAgICAgICAgdGhpcy5fc3VibWl0SWQgPSBgJHtiYXNlSWR9LXN1Ym1pdC0ke3NlYXJjaEZpZWxkSWRDb3VudCsrfWA7XG4gICAgICAgIHRoaXMuX21lbnVJZCA9IGAke2Jhc2VJZH0tbWVudS0ke3NlYXJjaEZpZWxkSWRDb3VudCsrfWA7XG5cbiAgICAgICAgdGhpcy5faXNSZWZyZXNoID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy5fcnRsKSB7XG4gICAgICAgICAgICB0aGlzLl9ydGwucnRsLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGlzUnRsOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGlyID0gaXNSdGwgPyAncnRsJyA6ICdsdHInO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRVcE1vYmlsZU1vZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoJ2NhdGVnb3JpZXMnIGluIGNoYW5nZXMgfHwgJ2N1cnJlbnRDYXRlZ29yeScgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5zZXRDdXJyZW50Q2F0ZWdvcnkodGhpcy5jdXJyZW50Q2F0ZWdvcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3N1Z2dlc3Rpb25PdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9uT3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9uT3ZlcmxheVJlZiA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbmtleU1hbmFnZXI/LmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlICYmIHRoaXMuaXNPcGVuICYmIEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRVNDQVBFXSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0RpYWxvZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb2N1c2VzIHRoZSBzZWFyY2ggaW5wdXQgZmllbGQuXG4gICAgICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRGaWVsZC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQ2FwdHVyaW5nIG9uS2V5ZG93biBvZiBpbnB1dCBlbGVtZW50ICovXG4gICAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghZXZlbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW1VQX0FSUk9XLCBET1dOX0FSUk9XXSkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdWdnZXN0aW9ua2V5TWFuYWdlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25rZXlNYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFU0NBUEVdKSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVN1Z2dlc3Rpb25NZW51KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FwdHVyaW5nIHZhbHVlIGNoYW5nZSBpbiBpbnB1dCB0ZXh0IGZpZWxkIG9mIGNvbWJvYm94LlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBvblZhbHVlQ2hhbmdlKGV2ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gd2hlbiBzZWFyY2ggcmVzdWx0IG5vdCBjaGFuZ2VkIGJ1dCBpbnB1dCB0ZXh0IGlzIGNoYW5nZWQuXG4gICAgICAgIC8vIGFnYWluIG5lZWQgdG8gYW5ub3VuY2UgdGhlIHJlc3VsdCwgc28gY2xlYXIgdGhpcyBtZXNzYWdlLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLl9jdXJyZW50U2VhcmNoU3VnZ2VzdGlvbkFubm91Y2VtZW50TWVzc2FnZSA9ICcnKSk7XG4gICAgICAgIHRoaXMuX2lzU2VhcmNoRG9uZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pc1JlZnJlc2ggPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5tb2JpbGUgJiYgIXRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Nb2JpbGVNb2RlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQodGhpcy5zZWFyY2hGaWVsZFZhbHVlKTtcbiAgICAgICAgY29uc3QgaW5wdXRTdHI6IHN0cmluZyA9IGV2ZW50LnRyaW0oKTtcbiAgICAgICAgaWYgKGlucHV0U3RyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVN1Z2dlc3Rpb25NZW51KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5TdWdnZXN0aW9uTWVudSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICBtYXRjaC5zZXQoJ2tleXdvcmQnLCBpbnB1dFN0cik7XG4gICAgICAgICAgICBtYXRjaC5zZXQoJ2NhdGVnb3J5JywgdGhpcy5fY3VycmVudENhdGVnb3J5Py52YWx1ZSB8fCBudWxsKTtcblxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLm1hdGNoKG1hdGNoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3VwZGF0ZVNlYXJjaEFubm91Y2VtZW50VGV4dCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhcHR1cmluZyBpdGVtIHNlbGVjdGlvbiBmcm9tIGRyb3Bkb3duIG1lbnUgb2YgY29tYm9ib3guXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIG9uSXRlbUNsaWNrKGV2ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dFRleHQgPSBldmVudDtcbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KHRoaXMuc2VhcmNoRmllbGRWYWx1ZSk7XG4gICAgICAgIHRoaXMuc2VhcmNoU3VibWl0LmVtaXQodGhpcy5zZWFyY2hGaWVsZFZhbHVlKTtcbiAgICAgICAgdGhpcy5jbG9zZVN1Z2dlc3Rpb25NZW51KCk7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5zaG93RGlhbG9nKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pc1NlYXJjaERvbmUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggZ2V0cyBleGVjdXRlZCBvbiBrZXlib2FyZCBlbnRlciBvZiBpbnB1dCB0ZXh0IGZpZWxkLlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBvblNlYXJjaFN1Ym1pdChldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTG9hZGluZykge1xuICAgICAgICAgICAgdGhpcy5jYW5jZWxTZWFyY2guZW1pdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWFyY2hTdWJtaXQuZW1pdCh0aGlzLnNlYXJjaEZpZWxkVmFsdWUpO1xuXG4gICAgICAgIHRoaXMuX2lzUmVmcmVzaCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLl9pc1NlYXJjaERvbmUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbG9zZVN1Z2dlc3Rpb25NZW51KGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGN1cnJlbnQgY2F0ZWdvcnkuXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHNldEN1cnJlbnRDYXRlZ29yeShjdXJyZW50Q2F0ZWdvcnk6IFZhbHVlTGFiZWxJdGVtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRDYXRlZ29yeSA9XG4gICAgICAgICAgICBjdXJyZW50Q2F0ZWdvcnkgJiZcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcz8uZmluZChcbiAgICAgICAgICAgICAgICAoY2F0ZWdvcnkpID0+IGNhdGVnb3J5LmxhYmVsID09PSBjdXJyZW50Q2F0ZWdvcnkubGFiZWwgJiYgY2F0ZWdvcnkudmFsdWUgPT09IGN1cnJlbnRDYXRlZ29yeS52YWx1ZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQodGhpcy5zZWFyY2hGaWVsZFZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVuIHN1Z2dlc3Rpb24gbWVudVxuICAgICAqL1xuICAgIG9wZW5TdWdnZXN0aW9uTWVudSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZVN1Z2dlc3Rpb25NZW51KCk7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25rZXlNYW5hZ2VyPy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25rZXlNYW5hZ2VyID0gbmV3IEZvY3VzS2V5TWFuYWdlcih0aGlzLnN1Z2dlc3Rpb25JdGVtcyk7XG4gICAgICAgIGlmICh0aGlzLl9zaG93RHJvcGRvd24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNyZWF0ZSBvdmVybGF5XG4gICAgICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSB0aGlzLl9jcmVhdGVTdWdnZXRpb25PdmVybGF5Q29uZmlnKCk7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25PdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG5cbiAgICAgICAgLy8gZ2V0IHBvcnRhbCB0byBhdHRhY2ggdG8gb3ZlcmxheVxuICAgICAgICB0aGlzLl9zdWdnZXN0aW9uUG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuc3VnZ2VzdGlvbk1lbnVUZW1wbGF0ZSwgdGhpcy5fdmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25PdmVybGF5UmVmLmF0dGFjaCh0aGlzLl9zdWdnZXN0aW9uUG9ydGFsKTtcblxuICAgICAgICAvLyBhZGQgc3Vic2NyaXB0aW9uIHRvIGNhcHR1cmUgb3V0c2lkZSBjbGlja3NcbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnY2xpY2snKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAhIXRoaXMuX3N1Z2dlc3Rpb25PdmVybGF5UmVmICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5fc3VnZ2VzdGlvbk92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuY29udGFpbnModGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd0Ryb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvY3VzID0gISh0YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJyAmJiB0aGlzLl9pbnB1dElkICE9PSB0YXJnZXQuaWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VTdWdnZXN0aW9uTWVudShmb2N1cyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9zaG93RHJvcGRvd24gPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb3Blbk1vYmlsZU1vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd0RpYWxvZyh0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGRpYWxvZ0FwcHJvdmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25JdGVtQ2xpY2sodGhpcy5pbnB1dFRleHQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZGlhbG9nRGlzbWlzcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93RGlhbG9nKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNob3dEaWFsb2coaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzT3BlbiAhPT0gaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbiA9IGlzT3BlbjtcblxuICAgICAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdChpc09wZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjbG9zZVN1Z2dlc3Rpb25NZW51KGZvY3VzID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3N1Z2dlc3Rpb25PdmVybGF5UmVmKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbk92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICAgIGlmIChmb2N1cykge1xuICAgICAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Nob3dEcm9wZG93biA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2xlYXJUZXh0SW5wdXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gJyc7XG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KHRoaXMuc2VhcmNoRmllbGRWYWx1ZSk7XG4gICAgICAgIHRoaXMuY2FuY2VsU2VhcmNoLmVtaXQodGhpcy5zZWFyY2hGaWVsZFZhbHVlKTtcblxuICAgICAgICB0aGlzLl9pc1JlZnJlc2ggPSB0cnVlO1xuICAgICAgICB0aGlzLl9pc1NlYXJjaERvbmUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNsb3NlU3VnZ2VzdGlvbk1lbnUoZmFsc2UpO1xuICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY3JlYXRlU3VnZ2V0aW9uT3ZlcmxheUNvbmZpZygpOiBPdmVybGF5Q29uZmlnIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5pbnB1dEdyb3VwKVxuICAgICAgICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbigpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhwb3NpdGlvbnMpO1xuICAgICAgICBjb25zdCBzY3JvbGxTdHJhdGVneSA9IHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCk7XG4gICAgICAgIHJldHVybiBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3ksXG4gICAgICAgICAgICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMuaW5wdXRHcm91cC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2luaXRpYWxpemVEYXRhU291cmNlKGRhdGFTb3VyY2U6IFNlYXJjaEZpZWxkRGF0YVNvdXJjZTxhbnk+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VkJC5uZXh0KCk7XG4gICAgICAgIGRhdGFTb3VyY2VcbiAgICAgICAgICAgIC5vcGVuKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbChtZXJnZSh0aGlzLl9vbkRlc3Ryb3kkLCB0aGlzLl9kYXRhU291cmNlQ2hhbmdlZCQpKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kcm9wZG93blZhbHVlcyQgPSBvZihkYXRhKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gZGF0YVNvdXJjZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIHJldHVybiBjb3VudCBmb3IgbWF0Y2hpbmcgc3VnZ2VzdGlvbiB3aXRoIGlucHV0IHRleHRcbiAgICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRTdWdnZXN0aW9uc0xlbmd0aCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgICB0aGlzLl9kcm9wZG93blZhbHVlcyQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoc3VnZ2VzdGlvbnMpID0+IHtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zPy5mb3JFYWNoKChzdWdnZXN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRUZXh0ICYmIHN1Z2dlc3Rpb24/LnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLmlucHV0VGV4dD8udHJpbSgpPy50b0xvd2VyQ2FzZSgpKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb3VudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgYXN5bmMgX3VwZGF0ZVNlYXJjaEFubm91Y2VtZW50VGV4dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gY3JlYXRlIHNlYXJjaCBzdWdnZXN0aW9uIG1lc3NhZ2Ugd2l0aCBjb3VudC5cbiAgICAgICAgY29uc3Qgc3VnZ2VzdGlvbkNvdW50ID0gdGhpcy5fZ2V0U3VnZ2VzdGlvbnNMZW5ndGgoKTtcbiAgICAgICAgbGV0IHsgc2VhcmNoU3VnZ2VzdGlvbk1lc3NhZ2UsIHNlYXJjaFN1Z2dlc3Rpb25OYXZpZ2F0ZU1lc3NhZ2UgfSA9IHRoaXM7XG4gICAgICAgIGlmIChzZWFyY2hTdWdnZXN0aW9uTWVzc2FnZSkge1xuICAgICAgICAgICAgc2VhcmNoU3VnZ2VzdGlvbk1lc3NhZ2UgPSBzdWdnZXN0aW9uQ291bnQgKyAnICcgKyBzZWFyY2hTdWdnZXN0aW9uTWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlIHx8ICFzZWFyY2hTdWdnZXN0aW9uTmF2aWdhdGVNZXNzYWdlKSB7XG4gICAgICAgICAgICBjb25zdCBsYW5nID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fbGFuZ3VhZ2UkKTtcbiAgICAgICAgICAgIGlmICghc2VhcmNoU3VnZ2VzdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBzZWFyY2hTdWdnZXN0aW9uTWVzc2FnZSA9IHRoaXMuX3RyYW5zbGF0aW9uUmVzb2x2ZXIucmVzb2x2ZShcbiAgICAgICAgICAgICAgICAgICAgbGFuZyxcbiAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtU2VhcmNoRmllbGQuc2VhcmNoU3VnZ2VzdGlvbk1lc3NhZ2UnLFxuICAgICAgICAgICAgICAgICAgICB7IGNvdW50OiBzdWdnZXN0aW9uQ291bnQgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXNlYXJjaFN1Z2dlc3Rpb25OYXZpZ2F0ZU1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBzZWFyY2hTdWdnZXN0aW9uTmF2aWdhdGVNZXNzYWdlID0gdGhpcy5fdHJhbnNsYXRpb25SZXNvbHZlci5yZXNvbHZlKFxuICAgICAgICAgICAgICAgICAgICBsYW5nLFxuICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1TZWFyY2hGaWVsZC5zZWFyY2hTdWdnZXN0aW9uTmF2aWdhdGVNZXNzYWdlJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFN1Z2dlc3Rpb25Bbm5vdWNlbWVudE1lc3NhZ2UgPVxuICAgICAgICAgICAgc2VhcmNoU3VnZ2VzdGlvbk1lc3NhZ2UgKyAoc3VnZ2VzdGlvbkNvdW50ID4gMCA/IHNlYXJjaFN1Z2dlc3Rpb25OYXZpZ2F0ZU1lc3NhZ2UgOiAnJyk7XG4gICAgICAgIGlmICh0aGlzLmlucHV0VGV4dD8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5fbGl2ZUFubm91bmNlci5hbm5vdW5jZSh0aGlzLl9jdXJyZW50U2VhcmNoU3VnZ2VzdGlvbkFubm91Y2VtZW50TWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgYXN5bmMgX3NldFVwTW9iaWxlTW9kZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBTRUFSQ0hfRklFTERfQ09NUE9ORU5ULCB1c2VWYWx1ZTogdGhpcyB9XSxcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3JcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlRHluYW1pY01vZHVsZShcbiAgICAgICAgICAgIHsgaW5wdXRGaWVsZFRlbXBsYXRlOiB0aGlzLmlucHV0RmllbGRUZW1wbGF0ZSwgc3VnZ2VzdGlvbk1lbnVUZW1wbGF0ZTogdGhpcy5zdWdnZXN0aW9uTWVudVRlbXBsYXRlIH0sXG4gICAgICAgICAgICBQbGF0Zm9ybVNlYXJjaEZpZWxkTW9iaWxlTW9kdWxlLFxuICAgICAgICAgICAgU2VhcmNoRmllbGRNb2JpbGVDb21wb25lbnQsXG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgaW5qZWN0b3JcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnc3VnZ2VzdGlvbk1hdGNoZXMnXG59KVxuZXhwb3J0IGNsYXNzIFN1Z2dlc3Rpb25NYXRjaGVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdHJhbnNmb3JtKHZhbHVlczogc3RyaW5nW10gfCBudWxsLCBtYXRjaDogc3RyaW5nLCBtb2JpbGUgPSBmYWxzZSk6IHN0cmluZ1tdIHtcbiAgICAgICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgICAgICAgIHZhbHVlcyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtb2JpbGUgJiYgIW1hdGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZE1hdGNoID0gbWF0Y2gudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHByb2Nlc3NlZE1hdGNoKSA+IC0xKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9iaWxlID8gbW9iaWxlVGVtcGxhdGUgOiBpbnB1dEZpZWxkVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNtb2JpbGVUZW1wbGF0ZT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRGaWVsZFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaENhdGVnb3J5TWVudT5cbiAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiZmRwLXNlYXJjaC1maWVsZF9fY2F0ZWdvcnktYnV0dG9uIGZkLWlucHV0LWdyb3VwX19idXR0b24gZmQtYnV0dG9uIGZkLWJ1dHRvbi0tbWVudSB7e1xuICAgICAgICAgICAgYXBwZWFyYW5jZT8uY2F0ZWdvcnlCdXR0b25DbGFzc1xuICAgICAgICB9fVwiXG4gICAgICAgIFtmZHBNZW51VHJpZ2dlckZvcl09XCJjYXRlZ29yeU1lbnVcIlxuICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmZHAtc2VhcmNoLWZpZWxkX19jYXRlZ29yeS1sYWJlbFwiICpuZ0lmPVwiIWhpZGVDYXRlZ29yeUxhYmVsXCI+XG4gICAgICAgICAgICB7eyBfY3VycmVudENhdGVnb3J5Py5sYWJlbCB8fCBjYXRlZ29yeUxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZmRwLW1lbnUgI2NhdGVnb3J5TWVudT5cbiAgICAgICAgPGZkcC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXNcIiAoaXRlbVNlbGVjdCk9XCJzZXRDdXJyZW50Q2F0ZWdvcnkoY2F0ZWdvcnkpXCJcbiAgICAgICAgICAgID57eyBjYXRlZ29yeS5sYWJlbCB9fVxuICAgICAgICA8L2ZkcC1tZW51LWl0ZW0+XG4gICAgPC9mZHAtbWVudT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2VhcmNoQ2F0ZWdvcnlTZWxlY3Q+XG4gICAgPGZkLXNlbGVjdFxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY2F0ZWdvcnlMYWJlbFwiXG4gICAgICAgIFtzZWxlY3RDb250cm9sQ2xhc3NdPVwiYXBwZWFyYW5jZT8uY2F0ZWdvcnlCdXR0b25DbGFzc1wiXG4gICAgICAgIFtzZWxlY3REcm9wZG93bkJ1dHRvbkNsYXNzXT1cImFwcGVhcmFuY2U/LmNhdGVnb3J5RHJvcGRvd25CdXR0b25DbGFzc1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZXRDdXJyZW50Q2F0ZWdvcnkoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8bGkgZmQtb3B0aW9uICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzXCIgW3ZhbHVlXT1cImNhdGVnb3J5XCI+e3sgY2F0ZWdvcnkubGFiZWwgfX08L2xpPlxuICAgIDwvZmQtc2VsZWN0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dEZpZWxkVGVtcGxhdGU+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZkcC1zZWFyY2gtZmllbGRcIlxuICAgICAgICBbY2xhc3Mud2l0aC1jYXRlZ29yaWVzXT1cIl9zaG93Q2F0ZWdvcnlEcm9wZG93blwiXG4gICAgICAgIFtjbGFzcy5pcy1sb2FkaW5nXT1cImlzTG9hZGluZ1wiXG4gICAgICAgIFtjbGFzcy5pcy1jb21wYWN0XT1cImNvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuaXNDb21wYWN0JCB8IGFzeW5jXCJcbiAgICAgICAgW2NsYXNzLmhpZGUtY2F0ZWdvcnktbGFiZWxdPVwiaGlkZUNhdGVnb3J5TGFiZWxcIlxuICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgI2lucHV0R3JvdXBcbiAgICAgICAgICAgIGNsYXNzPVwiZmRwLXNlYXJjaC1maWVsZF9faW5wdXQtZ3JvdXAgZmQtaW5wdXQtZ3JvdXAge3sgYXBwZWFyYW5jZT8uc2VhcmNoQ2xhc3MgfX1cIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWZvY3VzXT1cImlzRm9jdXNlZFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1pbnB1dC1ncm91cF9fYWRkb24gZmQtaW5wdXQtZ3JvdXBfX2FkZG9uLS1idXR0b24ge3sgYXBwZWFyYW5jZT8uc2VhcmNoQ2F0ZWdvcnlDbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJfc2hvd0NhdGVnb3J5RHJvcGRvd25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNhdGVnb3J5TW9kZSA9PT0gJ3NlbGVjdCcgPyBzZWFyY2hDYXRlZ29yeVNlbGVjdCA6IHNlYXJjaENhdGVnb3J5TWVudVwiXG4gICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAjaW5wdXRGaWVsZFxuICAgICAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC1zZWFyY2gtZmllbGRfX2lucHV0IGZkLWlucHV0IGZkLWlucHV0LWdyb3VwX19pbnB1dCB7eyBhcHBlYXJhbmNlPy5zZWFyY2hGaWVsZENsYXNzIH19XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJfaW5wdXRJZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsIHx8ICdwbGF0Zm9ybVNlYXJjaEZpZWxkLnNlYXJjaElucHV0TGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJfbWVudUlkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAoX2Ryb3Bkb3duVmFsdWVzJCB8IGFzeW5jKT8ubGVuZ3RoICE9PSAwID8gKF9zaG93RHJvcGRvd24gPyAndHJ1ZScgOiAnZmFsc2UnKSA6IG51bGxcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiKF9kcm9wZG93blZhbHVlcyQgfCBhc3luYyk/Lmxlbmd0aCAhPT0gMFwiXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25TZWFyY2hTdWJtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vYmlsZSAmJiBvcGVuTW9iaWxlTW9kZSgpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQtZ3JvdXBfX2FkZG9uIGZkLWlucHV0LWdyb3VwX19hZGRvbi0tYnV0dG9uIHt7IGFwcGVhcmFuY2U/LmFkZG9uQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaW5wdXRUZXh0ICYmIGlucHV0VGV4dC5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cIiFtb2JpbGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVNlYXJjaEZpZWxkLmNsZWFyQnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC1zZWFyY2gtZmllbGRfX2NsZWFyIGZkLWJ1dHRvbiBmZC1idXR0b24tLXRyYW5zcGFyZW50IHt7IGFwcGVhcmFuY2U/LmJ1dHRvbkNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkLWlucHV0LWdyb3VwX19idXR0b25dPVwiIWFwcGVhcmFuY2U/LnJlbW92ZUdyb3VwQnV0dG9uQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIl9jbGVhcklkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyVGV4dElucHV0KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gZ2x5cGg9XCJkZWNsaW5lXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWlucHV0LWdyb3VwX19hZGRvbiBmZC1pbnB1dC1ncm91cF9fYWRkb24tLWJ1dHRvbiB7eyBhcHBlYXJhbmNlPy5hZGRvbkNsYXNzIH19IHt7XG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U/LnNlYXJjaFN1Ym1pdENsYXNzXG4gICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9yY2VTZWFyY2hCdXR0b24gfHwgaXNMb2FkaW5nIHx8ICghaXNMb2FkaW5nICYmICFfaXNTZWFyY2hEb25lKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhbW9iaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZGlzYWJsZVNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtU2VhcmNoRmllbGQuc3VibWl0QnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC1zZWFyY2gtZmllbGRfX3N1Ym1pdCBmZC1idXR0b24gZmQtYnV0dG9uLS10cmFuc3BhcmVudCB7eyBhcHBlYXJhbmNlPy5idXR0b25DbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1pbnB1dC1ncm91cF9fYnV0dG9uXT1cIiFhcHBlYXJhbmNlPy5yZW1vdmVHcm91cEJ1dHRvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiX3N1Ym1pdElkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWFyY2hTdWJtaXQoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cInNlYXJjaFwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1pbnB1dC1ncm91cF9fYWRkb24gZmQtaW5wdXQtZ3JvdXBfX2FkZG9uLS1idXR0b24ge3sgYXBwZWFyYW5jZT8uYWRkb25DbGFzcyB9fSB7e1xuICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPy5zZWFyY2hTdWJtaXRDbGFzc1xuICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFkaXNhYmxlUmVmcmVzaCAmJiAhaXNMb2FkaW5nICYmIChfaXNSZWZyZXNoIHx8IF9pc1NlYXJjaERvbmUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cIiFtb2JpbGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVNlYXJjaEZpZWxkLnN5bmNocm9uaXplQnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC1zZWFyY2gtZmllbGRfX2xvYWRpbmcgZmQtaW5wdXQtZ3JvdXBfX2J1dHRvbiBmZC1idXR0b24gZmQtYnV0dG9uLS10cmFuc3BhcmVudCB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT8uYnV0dG9uQ2xhc3NcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIl9yZWZyZXNoSWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWFyY2hTdWJtaXQoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cInN5bmNocm9uaXplXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc3VnZ2VzdGlvbk1lbnVUZW1wbGF0ZT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2Ryb3Bkb3duVmFsdWVzJCB8IGFzeW5jIHwgc3VnZ2VzdGlvbk1hdGNoZXMgOiBpbnB1dFRleHQgOiBtb2JpbGUgYXMgc3VnZ2VzdGlvbnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkcC1zZWFyY2gtZmllbGRfX3N1Z2dlc3Rpb24tZHJvcGRvd25cIiBbYXR0ci5kaXJdPVwiX2RpclwiICpuZ0lmPVwic3VnZ2VzdGlvbnM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgPG5hdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtbWVudVwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLWNvbXBhY3RdPVwiY29udGVudERlbnNpdHlPYnNlcnZlci5pc0NvbXBhY3QkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1tZW51LS1tb2JpbGVdPVwibW9iaWxlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmQtbWVudS0tb3ZlcmZsb3ddPVwiIW1vYmlsZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiX21lbnVJZFwiXG4gICAgICAgICAgICAgICAgI21lbnVcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiZmQtbWVudV9fbGlzdFwiIHJvbGU9XCJtZW51XCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgZmRwU2VhcmNoRmllbGRTdWdnZXN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC1zZWFyY2gtZmllbGRfX3N1Z2dlc3Rpb24taXRlbSBmZC1tZW51X19pdGVtIGZkLW1lbnVfX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZhbHVlIG9mIHN1Z2dlc3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uSXRlbUNsaWNrKHZhbHVlKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24udGFiKT1cIm9uSXRlbUNsaWNrKHZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwib25JdGVtQ2xpY2sodmFsdWUpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKHZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInZhbHVlIHwgaGlnaGxpZ2h0IDogaW5wdXRUZXh0IDogdHJ1ZSA6IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvbmF2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
601
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zZWFyY2gtZmllbGQvc2VhcmNoLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zZWFyY2gtZmllbGQvc2VhcmNoLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBRUosU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBcUIsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFBbUIsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVB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QkFBcUI7Z0hBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQUhqQyxJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxtQkFBbUI7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3RvcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFBpcGUsXG4gICAgUGlwZVRyYW5zZm9ybSxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBFU0NBUEUsIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgRm9jdXNhYmxlT3B0aW9uLCBGb2N1c0tleU1hbmFnZXIsIExpdmVBbm5vdW5jZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgZnJvbUV2ZW50LCBpc09ic2VydmFibGUsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudFNlcnZpY2UsIEtleVV0aWwsIFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5pbXBvcnQgeyBNb2JpbGVNb2RlQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21vYmlsZS1tb2RlJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQsIFNlYXJjaEZpZWxkRGF0YVNvdXJjZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7XG4gICAgU0VBUkNIX0ZJRUxEX0NPTVBPTkVOVCxcbiAgICBTZWFyY2hGaWVsZE1vYmlsZUludGVyZmFjZVxufSBmcm9tICcuL3NlYXJjaC1maWVsZC1tb2JpbGUvc2VhcmNoLWZpZWxkLW1vYmlsZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VhcmNoRmllbGRNb2JpbGVDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaC1maWVsZC1tb2JpbGUvc2VhcmNoLWZpZWxkL3NlYXJjaC1maWVsZC1tb2JpbGUuY29tcG9uZW50JztcbmltcG9ydCB7IFBsYXRmb3JtU2VhcmNoRmllbGRNb2JpbGVNb2R1bGUgfSBmcm9tICcuL3NlYXJjaC1maWVsZC1tb2JpbGUvc2VhcmNoLWZpZWxkLW1vYmlsZS5tb2R1bGUnO1xuaW1wb3J0IHsgRmRMYW5ndWFnZSwgRkRfTEFOR1VBR0UsIFRyYW5zbGF0aW9uUmVzb2x2ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgRkRfU0hFTExCQVJfU0VBUkNIX0NPTVBPTkVOVCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGVsbGJhcic7XG5pbXBvcnQgeyBTZWFyY2hDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaElucHV0IHtcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgY2F0ZWdvcnk6IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VnZ2VzdGlvbkl0ZW0ge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgaXNIaXN0b3JpY2FsPzogc3RyaW5nO1xuICAgIGRhdGE/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWVMYWJlbEl0ZW0ge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRwU2VhcmNoRmllbGRTdWdnZXN0aW9uXScsXG4gICAgaG9zdDoge1xuICAgICAgICB0YWJpbmRleDogJy0xJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoRmllbGRTdWdnZXN0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgRm9jdXNhYmxlT3B0aW9uIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZikge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxufVxuXG5sZXQgc2VhcmNoRmllbGRJZENvdW50ID0gMDtcblxudHlwZSBBcHBlYXJhbmNlID0gU2VhcmNoQ29tcG9uZW50WydhcHBlYXJhbmNlJ10gfCB1bmRlZmluZWQ7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXNlYXJjaC1maWVsZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycygpLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9TSEVMTEJBUl9TRUFSQ0hfQ09NUE9ORU5ULFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFNlYXJjaEZpZWxkQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEZpZWxkQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBCYXNlQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBTZWFyY2hGaWVsZE1vYmlsZUludGVyZmFjZSwgU2VhcmNoQ29tcG9uZW50XG57XG4gICAgLyoqIFR5cGUgb2YgY29tcG9uZW50IHVzZWQgdG8gcmVuZGVyIHRoZSBjYXRlZ29yaWVzIGRyb3Bkb3duLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2F0ZWdvcnlNb2RlOiAnbWVudScgfCAnc2VsZWN0JyA9ICdtZW51JztcblxuICAgIC8qKiBBZGRpdGlvbmFsIGFwcGVhcmFuY2UgY29uZmlndXJhdGlvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhcHBlYXJhbmNlKHZhbHVlOiBBcHBlYXJhbmNlKSB7XG4gICAgICAgIGlmIChlcXVhbCh2YWx1ZSwgdGhpcy5hcHBlYXJhbmNlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYXBwZWFyYW5jZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgZ2V0IGFwcGVhcmFuY2UoKTogQXBwZWFyYW5jZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBlYXJhbmNlO1xuICAgIH1cblxuICAgIC8qKiBQbGFjZSBob2xkZXIgdGV4dCBmb3Igc2VhcmNoIGlucHV0IGZpZWxkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIC8qKiBTZXQgTW9iaWxlIE1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZTogYm9vbGVhbjtcblxuICAgIC8qKiBTZWFyY2ggRmllbGQgTW9iaWxlIGNvbmZpZ3VyYXRpb24gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZUNvbmZpZzogTW9iaWxlTW9kZUNvbmZpZztcblxuICAgIC8qKiBXaGV0aGVyIGRpc3BsYXkgUmVmcmVzaCBidXR0b24gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVSZWZyZXNoID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBkaXNwbGF5IHNlYXJjaCBidXR0b24gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVTZWFyY2ggPSBmYWxzZTtcblxuICAgIC8qKiBMaXN0IG9mIHN0cmluZyB2YWx1ZXMgdG8gcG9wdWxhdGUgc3VnZ2VzdGlvbiBkcm9wZG93biBzZWxlY3Rpb24uICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc3VnZ2VzdGlvbnModmFsdWU6IFN1Z2dlc3Rpb25JdGVtW10gfCBPYnNlcnZhYmxlPFN1Z2dlc3Rpb25JdGVtW10+KSB7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zID0gdmFsdWU7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgLy8gY29udmVydCBzdWdnZXN0aW9ucyB0byBhbiBhcnJheSBvZiBzdHJpbmcgZm9yIFwiZHJvcGRvd24gdmFsdWVzXCJcbiAgICAgICAgICAgIGNvbnN0IGRyb3Bkb3duVmFsdWVzID0gdmFsdWUubWFwKChzdWdnZXN0aW9uOiBTdWdnZXN0aW9uSXRlbSkgPT4gc3VnZ2VzdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9kcm9wZG93blZhbHVlcyQgPSBvZihkcm9wZG93blZhbHVlcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYnNlcnZhYmxlKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5fZHJvcGRvd25WYWx1ZXMkID0gdmFsdWUucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHN1Z2dlc3Rpb25zOiBTdWdnZXN0aW9uSXRlbVtdKSA9PiBzdWdnZXN0aW9ucy5tYXAoKHN1Z2dlc3Rpb24pID0+IHN1Z2dlc3Rpb24udmFsdWUpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2Ryb3Bkb3duVmFsdWVzJCA9IG9mKFtdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgc3VnZ2VzdGlvbnMoKTogU3VnZ2VzdGlvbkl0ZW1bXSB8IE9ic2VydmFibGU8U3VnZ2VzdGlvbkl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VnZ2VzdGlvbnM7XG4gICAgfVxuXG4gICAgLyoqIERhdGFzb3VyY2UgZm9yIHN1Z2dlc3Rpb24gbGlzdCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRhdGFTb3VyY2UodmFsdWU6IFNlYXJjaEZpZWxkRGF0YVNvdXJjZTxhbnk+KSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZURhdGFTb3VyY2UodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBkYXRhU291cmNlKCk6IFNlYXJjaEZpZWxkRGF0YVNvdXJjZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2U7XG4gICAgfVxuXG4gICAgLyoqIEluaXRpYWwgaW5wdXQgdGV4dC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlucHV0VGV4dDogc3RyaW5nO1xuXG4gICAgLyoqIExpc3Qgb2YgY2F0ZWdvcmllcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjYXRlZ29yaWVzKHZhbHVlOiBWYWx1ZUxhYmVsSXRlbVtdKSB7XG4gICAgICAgIHRoaXMuX2NhdGVnb3JpZXMgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fc2hvd0NhdGVnb3J5RHJvcGRvd24gPSBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwO1xuICAgIH1cbiAgICBnZXQgY2F0ZWdvcmllcygpOiBWYWx1ZUxhYmVsSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhdGVnb3JpZXM7XG4gICAgfVxuXG4gICAgLyoqIEN1cnJlbnQgY2F0ZWdvcnksIHZhbHVlIHNob3VsZCBiZSBwcmVzZW50IGluIGNhdGVnb3JpZXMgYXJyYXkgKi9cbiAgICBASW5wdXQoKVxuICAgIGN1cnJlbnRDYXRlZ29yeTogVmFsdWVMYWJlbEl0ZW07XG5cbiAgICAvKiogU2V0IGxhYmVsIGZvciBjYXRlZ29yeSBkcm9wZG93biBidXR0b24uICovXG4gICAgQElucHV0KClcbiAgICBjYXRlZ29yeUxhYmVsID0gJ0NhdGVnb3J5JztcblxuICAgIC8qKiBIaWRlIGRpc3BsYXkgb2YgY2F0ZWdvcnkgbGFiZWwgKi9cbiAgICBASW5wdXQoKVxuICAgIGhpZGVDYXRlZ29yeUxhYmVsID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlIFwibG9hZGluZ1wiIG1vZGUuICovXG4gICAgQElucHV0KClcbiAgICBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEFSSUEgbGFiZWwgdG8gc3BlY2lmeSB3aGF0IHRoZSBzZWFyY2ggZmllbGQgaXNcbiAgICAgKiBOb3Qgc2hvd24gaW4gdGhlIFVJLCBvbmx5IHZpc2libGUgYnkgdGhlIHNjcmVlbi1yZWFkZXJzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogSWQgb2YgZWxlbWVudHMgKHNlcGFyYXRlZCBieSBzcGFjZSkgZm9yIHNldHRpbmcgYXJpYS1sYWJlbGxlZGJ5IGZvciBzZWFyY2ggaW5wdXRcbiAgICAgKiBOb3Qgc2hvd24gaW4gdGhlIFVJLCBvbmx5IHZpc2libGUgYnkgdGhlIHNjcmVlbi1yZWFkZXJzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsbGVkYnk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogTWVzc2FnZSBhbm5vdW5jZWQgYnkgc2NyZWVuIHJlYWRlciwgd2hlbiBzZWFyY2ggc3VnZ2VzdGlvbnMgb3BlbnMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hTdWdnZXN0aW9uTWVzc2FnZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBTZWNvbmQgcGFydCBvZiBtZXNzYWdlIGZvciBzZWFyY2ggc3VnZ2VzdGlvbi5cbiAgICAgKiBkaXJlY3Rpb24gZm9yIG5hdmlnYXRpbmcgdGhlIHN1Z2dlc3Rpb24uIFRoaXMgaXMgbm90IG5lY2Vzc3J5IGluIGNhc2Ugb2YgMCBzdWdnZXN0aW9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VhcmNoU3VnZ2VzdGlvbk5hdmlnYXRlTWVzc2FnZTogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gYWx3YXlzIHNob3cgc2VhcmNoIGJ1dHRvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZvcmNlU2VhcmNoQnV0dG9uID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBkaXNhYmxlIHRoZSBcInN1Z2dlc3Rpb25zIGZvdW5kXCIgbGl2ZSBhbm5vdW5jZXIuICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlU3VnZ2VzdGlvbnNGb3VuZEFubm91bmNlciA9IGZhbHNlO1xuXG4gICAgLyoqIElucHV0IGNoYW5nZSBldmVudC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBpbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPFNlYXJjaElucHV0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKiBTZWFyY2ggc3VibWl0IGV2ZW50LiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlYXJjaFN1Ym1pdDogRXZlbnRFbWl0dGVyPFNlYXJjaElucHV0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKiBDYW5jZWwgc2VhcmNoIGV2ZW50LiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNhbmNlbFNlYXJjaDogRXZlbnRFbWl0dGVyPFNlYXJjaElucHV0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKiBPcGVuIG1vYmlsZSBtb2RlIGV2ZW50LiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGlzT3BlbkNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gRm9jdXMgc3RhdGUgKi9cbiAgICBnZXQgaXNGb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQ/LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuaW5wdXRGaWVsZD8ubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnNlcnZhYmxlIGxpc3Qgb2Ygc3RyaW5nIHZhbHVlcyB0YWtlbiBmcm9tIGBzdWdnZXN0aW9uc2AgdG8gcG9wdWxhdGUgZHJvcGRvd24gbWVudS5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2Ryb3Bkb3duVmFsdWVzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT4gPSBvZihbXSk7XG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50bHkgc2V0IGNhdGVnb3J5LlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfY3VycmVudENhdGVnb3J5PzogVmFsdWVMYWJlbEl0ZW07XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IHR5cGVhaGVhZCBkcm9wZG93bi5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX3Nob3dEcm9wZG93biA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gc2hvdyBjYXRlZ29yeSBkcm9wZG93bi4gVGhpcyBpcyBkZXBlbmRlbnQgb24gbGVuZ3RoIG9mIGBjYXRlZ29yeVZhbHVlc2AgcHJvcGVydHkuXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9zaG93Q2F0ZWdvcnlEcm9wZG93biA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW5wdXRJZCA9ICcnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3VibWl0SWQgPSAnJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21lbnVJZCA9ICcnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcmVmcmVzaElkID0gJyc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jbGVhcklkID0gJyc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXI6IERpcmVjdGlvbiA9ICdsdHInO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBpc09wZW4gPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lzUmVmcmVzaCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaXNTZWFyY2hEb25lID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1Z2dlc3Rpb25zOiBTdWdnZXN0aW9uSXRlbVtdIHwgT2JzZXJ2YWJsZTxTdWdnZXN0aW9uSXRlbVtdPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGF0YVNvdXJjZTogU2VhcmNoRmllbGREYXRhU291cmNlPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhdGVnb3JpZXM6IFZhbHVlTGFiZWxJdGVtW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2N1cnJlbnRTZWFyY2hTdWdnZXN0aW9uQW5ub3VjZW1lbnRNZXNzYWdlID0gJyc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1Z2dlc3Rpb25PdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3VnZ2VzdGlvblBvcnRhbDogVGVtcGxhdGVQb3J0YWw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1Z2dlc3Rpb25rZXlNYW5hZ2VyOiBGb2N1c0tleU1hbmFnZXI8U2VhcmNoRmllbGRTdWdnZXN0aW9uRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRpb25SZXNvbHZlciA9IG5ldyBUcmFuc2xhdGlvblJlc29sdmVyKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhU291cmNlQ2hhbmdlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hcHBlYXJhbmNlOiBBcHBlYXJhbmNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjYXRlZ29yeURyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgY2F0ZWdvcnlEcm9wZG93bjogUG9wb3ZlckNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRHcm91cCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGlucHV0R3JvdXA6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dEZpZWxkJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgaW5wdXRGaWVsZDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0RmllbGRUZW1wbGF0ZScpXG4gICAgaW5wdXRGaWVsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdzdWdnZXN0aW9uTWVudVRlbXBsYXRlJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgc3VnZ2VzdGlvbk1lbnVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihTZWFyY2hGaWVsZFN1Z2dlc3Rpb25EaXJlY3RpdmUpXG4gICAgc3VnZ2VzdGlvbkl0ZW1zOiBRdWVyeUxpc3Q8U2VhcmNoRmllbGRTdWdnZXN0aW9uRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IHNlYXJjaEZpZWxkVmFsdWUoKTogU2VhcmNoSW5wdXQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGV4dDogdGhpcy5pbnB1dFRleHQsXG4gICAgICAgICAgICBjYXRlZ29yeTogdGhpcy5fY3VycmVudENhdGVnb3J5Py52YWx1ZSB8fCBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9vdmVybGF5OiBPdmVybGF5LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9ydGw6IFJ0bFNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgX2RvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChGRF9MQU5HVUFHRSkgcHJpdmF0ZSByZWFkb25seSBfbGFuZ3VhZ2UkOiBPYnNlcnZhYmxlPEZkTGFuZ3VhZ2U+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9saXZlQW5ub3VuY2VyOiBMaXZlQW5ub3VuY2VyLFxuICAgICAgICByZWFkb25seSBfZHluYW1pY0NvbXBvbmVudFNlcnZpY2U6IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLFxuICAgICAgICByZWFkb25seSBjb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9jZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYmFzZUlkID0gJ2ZkcC1zZWFyY2gtZmllbGQnO1xuICAgICAgICB0aGlzLl9pbnB1dElkID0gYCR7YmFzZUlkfS1pbnB1dC0ke3NlYXJjaEZpZWxkSWRDb3VudCsrfWA7XG4gICAgICAgIHRoaXMuX3N1Ym1pdElkID0gYCR7YmFzZUlkfS1zdWJtaXQtJHtzZWFyY2hGaWVsZElkQ291bnQrK31gO1xuICAgICAgICB0aGlzLl9tZW51SWQgPSBgJHtiYXNlSWR9LW1lbnUtJHtzZWFyY2hGaWVsZElkQ291bnQrK31gO1xuXG4gICAgICAgIHRoaXMuX2lzUmVmcmVzaCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuX3J0bCkge1xuICAgICAgICAgICAgdGhpcy5fcnRsLnJ0bC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpc1J0bDogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RpciA9IGlzUnRsID8gJ3J0bCcgOiAnbHRyJztcbiAgICAgICAgICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VXBNb2JpbGVNb2RlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCdjYXRlZ29yaWVzJyBpbiBjaGFuZ2VzIHx8ICdjdXJyZW50Q2F0ZWdvcnknIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VycmVudENhdGVnb3J5KHRoaXMuY3VycmVudENhdGVnb3J5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9zdWdnZXN0aW9uT3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbk92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbk92ZXJsYXlSZWYgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25rZXlNYW5hZ2VyPy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSAmJiB0aGlzLmlzT3BlbiAmJiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VTQ0FQRV0pKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dEaWFsb2coZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9jdXNlcyB0aGUgc2VhcmNoIGlucHV0IGZpZWxkLlxuICAgICAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0RmllbGQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIENhcHR1cmluZyBvbktleWRvd24gb2YgaW5wdXQgZWxlbWVudCAqL1xuICAgIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIWV2ZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtVUF9BUlJPVywgRE9XTl9BUlJPV10pKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fc3VnZ2VzdGlvbmtleU1hbmFnZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9ua2V5TWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRVNDQVBFXSkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VTdWdnZXN0aW9uTWVudSh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhcHR1cmluZyB2YWx1ZSBjaGFuZ2UgaW4gaW5wdXQgdGV4dCBmaWVsZCBvZiBjb21ib2JveC5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgb25WYWx1ZUNoYW5nZShldmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIHdoZW4gc2VhcmNoIHJlc3VsdCBub3QgY2hhbmdlZCBidXQgaW5wdXQgdGV4dCBpcyBjaGFuZ2VkLlxuICAgICAgICAvLyBhZ2FpbiBuZWVkIHRvIGFubm91bmNlIHRoZSByZXN1bHQsIHNvIGNsZWFyIHRoaXMgbWVzc2FnZS5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy5fY3VycmVudFNlYXJjaFN1Z2dlc3Rpb25Bbm5vdWNlbWVudE1lc3NhZ2UgPSAnJykpO1xuICAgICAgICB0aGlzLl9pc1NlYXJjaERvbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5faXNSZWZyZXNoID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMubW9iaWxlICYmICF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5vcGVuTW9iaWxlTW9kZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KHRoaXMuc2VhcmNoRmllbGRWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGlucHV0U3RyOiBzdHJpbmcgPSBldmVudC50cmltKCk7XG4gICAgICAgIGlmIChpbnB1dFN0ci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VTdWdnZXN0aW9uTWVudSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuU3VnZ2VzdGlvbk1lbnUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgbWF0Y2guc2V0KCdrZXl3b3JkJywgaW5wdXRTdHIpO1xuICAgICAgICAgICAgbWF0Y2guc2V0KCdjYXRlZ29yeScsIHRoaXMuX2N1cnJlbnRDYXRlZ29yeT8udmFsdWUgfHwgbnVsbCk7XG5cbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5tYXRjaChtYXRjaCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl91cGRhdGVTZWFyY2hBbm5vdWNlbWVudFRleHQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXB0dXJpbmcgaXRlbSBzZWxlY3Rpb24gZnJvbSBkcm9wZG93biBtZW51IG9mIGNvbWJvYm94LlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBvbkl0ZW1DbGljayhldmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gZXZlbnQ7XG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdCh0aGlzLnNlYXJjaEZpZWxkVmFsdWUpO1xuICAgICAgICB0aGlzLnNlYXJjaFN1Ym1pdC5lbWl0KHRoaXMuc2VhcmNoRmllbGRWYWx1ZSk7XG4gICAgICAgIHRoaXMuY2xvc2VTdWdnZXN0aW9uTWVudSgpO1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0RpYWxvZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXNTZWFyY2hEb25lID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIGdldHMgZXhlY3V0ZWQgb24ga2V5Ym9hcmQgZW50ZXIgb2YgaW5wdXQgdGV4dCBmaWVsZC5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgb25TZWFyY2hTdWJtaXQoZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAodGhpcy5pc0xvYWRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsU2VhcmNoLmVtaXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoU3VibWl0LmVtaXQodGhpcy5zZWFyY2hGaWVsZFZhbHVlKTtcblxuICAgICAgICB0aGlzLl9pc1JlZnJlc2ggPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmlucHV0VGV4dCkge1xuICAgICAgICAgICAgdGhpcy5faXNTZWFyY2hEb25lID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xvc2VTdWdnZXN0aW9uTWVudShmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBjdXJyZW50IGNhdGVnb3J5LlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBzZXRDdXJyZW50Q2F0ZWdvcnkoY3VycmVudENhdGVnb3J5OiBWYWx1ZUxhYmVsSXRlbSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50Q2F0ZWdvcnkgPVxuICAgICAgICAgICAgY3VycmVudENhdGVnb3J5ICYmXG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXM/LmZpbmQoXG4gICAgICAgICAgICAgICAgKGNhdGVnb3J5KSA9PiBjYXRlZ29yeS5sYWJlbCA9PT0gY3VycmVudENhdGVnb3J5LmxhYmVsICYmIGNhdGVnb3J5LnZhbHVlID09PSBjdXJyZW50Q2F0ZWdvcnkudmFsdWVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KHRoaXMuc2VhcmNoRmllbGRWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbiBzdWdnZXN0aW9uIG1lbnVcbiAgICAgKi9cbiAgICBvcGVuU3VnZ2VzdGlvbk1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VTdWdnZXN0aW9uTWVudSgpO1xuICAgICAgICB0aGlzLl9zdWdnZXN0aW9ua2V5TWFuYWdlcj8uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLl9zdWdnZXN0aW9ua2V5TWFuYWdlciA9IG5ldyBGb2N1c0tleU1hbmFnZXIodGhpcy5zdWdnZXN0aW9uSXRlbXMpO1xuICAgICAgICBpZiAodGhpcy5fc2hvd0Ryb3Bkb3duKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgb3ZlcmxheVxuICAgICAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gdGhpcy5fY3JlYXRlU3VnZ2V0aW9uT3ZlcmxheUNvbmZpZygpO1xuICAgICAgICB0aGlzLl9zdWdnZXN0aW9uT3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKG92ZXJsYXlDb25maWcpO1xuXG4gICAgICAgIC8vIGdldCBwb3J0YWwgdG8gYXR0YWNoIHRvIG92ZXJsYXlcbiAgICAgICAgdGhpcy5fc3VnZ2VzdGlvblBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnN1Z2dlc3Rpb25NZW51VGVtcGxhdGUsIHRoaXMuX3ZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLl9zdWdnZXN0aW9uT3ZlcmxheVJlZi5hdHRhY2godGhpcy5fc3VnZ2VzdGlvblBvcnRhbCk7XG5cbiAgICAgICAgLy8gYWRkIHN1YnNjcmlwdGlvbiB0byBjYXB0dXJlIG91dHNpZGUgY2xpY2tzXG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ2NsaWNrJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgISF0aGlzLl9zdWdnZXN0aW9uT3ZlcmxheVJlZiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuX3N1Z2dlc3Rpb25PdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dEcm9wZG93blxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBmb2N1cyA9ICEodGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcgJiYgdGhpcy5faW5wdXRJZCAhPT0gdGFyZ2V0LmlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlU3VnZ2VzdGlvbk1lbnUoZm9jdXMpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fc2hvd0Ryb3Bkb3duID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9wZW5Nb2JpbGVNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dEaWFsb2codHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBkaWFsb2dBcHByb3ZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uSXRlbUNsaWNrKHRoaXMuaW5wdXRUZXh0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGRpYWxvZ0Rpc21pc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd0RpYWxvZyhmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzaG93RGlhbG9nKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4gIT09IGlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5pc09wZW4gPSBpc09wZW47XG5cbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQoaXNPcGVuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2xvc2VTdWdnZXN0aW9uTWVudShmb2N1cyA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9zdWdnZXN0aW9uT3ZlcmxheVJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25PdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgICBpZiAoZm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zaG93RHJvcGRvd24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNsZWFyVGV4dElucHV0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0VGV4dCA9ICcnO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdCh0aGlzLnNlYXJjaEZpZWxkVmFsdWUpO1xuICAgICAgICB0aGlzLmNhbmNlbFNlYXJjaC5lbWl0KHRoaXMuc2VhcmNoRmllbGRWYWx1ZSk7XG5cbiAgICAgICAgdGhpcy5faXNSZWZyZXNoID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5faXNTZWFyY2hEb25lID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5jbG9zZVN1Z2dlc3Rpb25NZW51KGZhbHNlKTtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NyZWF0ZVN1Z2dldGlvbk92ZXJsYXlDb25maWcoKTogT3ZlcmxheUNvbmZpZyB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuaW5wdXRHcm91cClcbiAgICAgICAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24oKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKTtcbiAgICAgICAgY29uc3Qgc2Nyb2xsU3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xuICAgICAgICByZXR1cm4gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5LFxuICAgICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLmlucHV0R3JvdXAubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pbml0aWFsaXplRGF0YVNvdXJjZShkYXRhU291cmNlOiBTZWFyY2hGaWVsZERhdGFTb3VyY2U8YW55Pik6IHZvaWQge1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlQ2hhbmdlZCQubmV4dCgpO1xuICAgICAgICBkYXRhU291cmNlXG4gICAgICAgICAgICAub3BlbigpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwobWVyZ2UodGhpcy5fb25EZXN0cm95JCwgdGhpcy5fZGF0YVNvdXJjZUNoYW5nZWQkKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZHJvcGRvd25WYWx1ZXMkID0gb2YoZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiByZXR1cm4gY291bnQgZm9yIG1hdGNoaW5nIHN1Z2dlc3Rpb24gd2l0aCBpbnB1dCB0ZXh0XG4gICAgICogQHJldHVybnMgbnVtYmVyXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0U3VnZ2VzdGlvbnNMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgdGhpcy5fZHJvcGRvd25WYWx1ZXMkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKHN1Z2dlc3Rpb25zKSA9PiB7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucz8uZm9yRWFjaCgoc3VnZ2VzdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlucHV0VGV4dCAmJiBzdWdnZXN0aW9uPy50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGhpcy5pbnB1dFRleHQ/LnRyaW0oKT8udG9Mb3dlckNhc2UoKSkgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGFzeW5jIF91cGRhdGVTZWFyY2hBbm5vdWNlbWVudFRleHQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIC8vIGNyZWF0ZSBzZWFyY2ggc3VnZ2VzdGlvbiBtZXNzYWdlIHdpdGggY291bnQuXG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25Db3VudCA9IHRoaXMuX2dldFN1Z2dlc3Rpb25zTGVuZ3RoKCk7XG4gICAgICAgIGxldCB7IHNlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlLCBzZWFyY2hTdWdnZXN0aW9uTmF2aWdhdGVNZXNzYWdlIH0gPSB0aGlzO1xuICAgICAgICBpZiAoc2VhcmNoU3VnZ2VzdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHNlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlID0gc3VnZ2VzdGlvbkNvdW50ICsgJyAnICsgc2VhcmNoU3VnZ2VzdGlvbk1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWFyY2hTdWdnZXN0aW9uTWVzc2FnZSB8fCAhc2VhcmNoU3VnZ2VzdGlvbk5hdmlnYXRlTWVzc2FnZSkge1xuICAgICAgICAgICAgY29uc3QgbGFuZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2xhbmd1YWdlJCk7XG4gICAgICAgICAgICBpZiAoIXNlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgc2VhcmNoU3VnZ2VzdGlvbk1lc3NhZ2UgPSB0aGlzLl90cmFuc2xhdGlvblJlc29sdmVyLnJlc29sdmUoXG4gICAgICAgICAgICAgICAgICAgIGxhbmcsXG4gICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVNlYXJjaEZpZWxkLnNlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgeyBjb3VudDogc3VnZ2VzdGlvbkNvdW50IH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzZWFyY2hTdWdnZXN0aW9uTmF2aWdhdGVNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgc2VhcmNoU3VnZ2VzdGlvbk5hdmlnYXRlTWVzc2FnZSA9IHRoaXMuX3RyYW5zbGF0aW9uUmVzb2x2ZXIucmVzb2x2ZShcbiAgICAgICAgICAgICAgICAgICAgbGFuZyxcbiAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtU2VhcmNoRmllbGQuc2VhcmNoU3VnZ2VzdGlvbk5hdmlnYXRlTWVzc2FnZSdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hTdWdnZXN0aW9uQW5ub3VjZW1lbnRNZXNzYWdlID1cbiAgICAgICAgICAgIHNlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlICsgKHN1Z2dlc3Rpb25Db3VudCA+IDAgPyBzZWFyY2hTdWdnZXN0aW9uTmF2aWdhdGVNZXNzYWdlIDogJycpO1xuICAgICAgICBpZiAodGhpcy5pbnB1dFRleHQ/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2UodGhpcy5fY3VycmVudFNlYXJjaFN1Z2dlc3Rpb25Bbm5vdWNlbWVudE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGFzeW5jIF9zZXRVcE1vYmlsZU1vZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogU0VBUkNIX0ZJRUxEX0NPTVBPTkVOVCwgdXNlVmFsdWU6IHRoaXMgfV0sXG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmNyZWF0ZUR5bmFtaWNNb2R1bGUoXG4gICAgICAgICAgICB7IGlucHV0RmllbGRUZW1wbGF0ZTogdGhpcy5pbnB1dEZpZWxkVGVtcGxhdGUsIHN1Z2dlc3Rpb25NZW51VGVtcGxhdGU6IHRoaXMuc3VnZ2VzdGlvbk1lbnVUZW1wbGF0ZSB9LFxuICAgICAgICAgICAgUGxhdGZvcm1TZWFyY2hGaWVsZE1vYmlsZU1vZHVsZSxcbiAgICAgICAgICAgIFNlYXJjaEZpZWxkTW9iaWxlQ29tcG9uZW50LFxuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIGluamVjdG9yXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3N1Z2dlc3Rpb25NYXRjaGVzJ1xufSlcbmV4cG9ydCBjbGFzcyBTdWdnZXN0aW9uTWF0Y2hlc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRyYW5zZm9ybSh2YWx1ZXM6IHN0cmluZ1tdIHwgbnVsbCwgbWF0Y2g6IHN0cmluZywgbW9iaWxlID0gZmFsc2UpOiBzdHJpbmdbXSB7XG4gICAgICAgIGlmICghdmFsdWVzKSB7XG4gICAgICAgICAgICB2YWx1ZXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobW9iaWxlICYmICFtYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9jZXNzZWRNYXRjaCA9IG1hdGNoLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigodmFsdWUpID0+IHZhbHVlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihwcm9jZXNzZWRNYXRjaCkgPiAtMSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vYmlsZSA/IG1vYmlsZVRlbXBsYXRlIDogaW5wdXRGaWVsZFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjbW9iaWxlVGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0RmllbGRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWFyY2hDYXRlZ29yeU1lbnU+XG4gICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImZkcC1zZWFyY2gtZmllbGRfX2NhdGVnb3J5LWJ1dHRvbiBmZC1pbnB1dC1ncm91cF9fYnV0dG9uIGZkLWJ1dHRvbiBmZC1idXR0b24tLW1lbnUge3tcbiAgICAgICAgICAgIGFwcGVhcmFuY2U/LmNhdGVnb3J5QnV0dG9uQ2xhc3NcbiAgICAgICAgfX1cIlxuICAgICAgICBbZmRwTWVudVRyaWdnZXJGb3JdPVwiY2F0ZWdvcnlNZW51XCJcbiAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmRwLXNlYXJjaC1maWVsZF9fY2F0ZWdvcnktbGFiZWxcIiAqbmdJZj1cIiFoaWRlQ2F0ZWdvcnlMYWJlbFwiPlxuICAgICAgICAgICAge3sgX2N1cnJlbnRDYXRlZ29yeT8ubGFiZWwgfHwgY2F0ZWdvcnlMYWJlbCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGZkcC1tZW51ICNjYXRlZ29yeU1lbnU+XG4gICAgICAgIDxmZHAtbWVudS1pdGVtICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzXCIgKGl0ZW1TZWxlY3QpPVwic2V0Q3VycmVudENhdGVnb3J5KGNhdGVnb3J5KVwiXG4gICAgICAgICAgICA+e3sgY2F0ZWdvcnkubGFiZWwgfX1cbiAgICAgICAgPC9mZHAtbWVudS1pdGVtPlxuICAgIDwvZmRwLW1lbnU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaENhdGVnb3J5U2VsZWN0PlxuICAgIDxmZC1zZWxlY3RcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNhdGVnb3J5TGFiZWxcIlxuICAgICAgICBbc2VsZWN0Q29udHJvbENsYXNzXT1cImFwcGVhcmFuY2U/LmNhdGVnb3J5QnV0dG9uQ2xhc3NcIlxuICAgICAgICBbc2VsZWN0RHJvcGRvd25CdXR0b25DbGFzc109XCJhcHBlYXJhbmNlPy5jYXRlZ29yeURyb3Bkb3duQnV0dG9uQ2xhc3NcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwic2V0Q3VycmVudENhdGVnb3J5KCRldmVudClcIlxuICAgID5cbiAgICAgICAgPGxpIGZkLW9wdGlvbiAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgY2F0ZWdvcmllc1wiIFt2YWx1ZV09XCJjYXRlZ29yeVwiPnt7IGNhdGVnb3J5LmxhYmVsIH19PC9saT5cbiAgICA8L2ZkLXNlbGVjdD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRGaWVsZFRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZHAtc2VhcmNoLWZpZWxkXCJcbiAgICAgICAgW2NsYXNzLndpdGgtY2F0ZWdvcmllc109XCJfc2hvd0NhdGVnb3J5RHJvcGRvd25cIlxuICAgICAgICBbY2xhc3MuaXMtbG9hZGluZ109XCJpc0xvYWRpbmdcIlxuICAgICAgICBbY2xhc3MuaXMtY29tcGFjdF09XCJjb250ZW50RGVuc2l0eU9ic2VydmVyLmlzQ29tcGFjdCQgfCBhc3luY1wiXG4gICAgICAgIFtjbGFzcy5oaWRlLWNhdGVnb3J5LWxhYmVsXT1cImhpZGVDYXRlZ29yeUxhYmVsXCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICNpbnB1dEdyb3VwXG4gICAgICAgICAgICBjbGFzcz1cImZkcC1zZWFyY2gtZmllbGRfX2lucHV0LWdyb3VwIGZkLWlucHV0LWdyb3VwIHt7IGFwcGVhcmFuY2U/LnNlYXJjaENsYXNzIH19XCJcbiAgICAgICAgICAgIFtjbGFzcy5pcy1mb2N1c109XCJpc0ZvY3VzZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQtZ3JvdXBfX2FkZG9uIGZkLWlucHV0LWdyb3VwX19hZGRvbi0tYnV0dG9uIHt7IGFwcGVhcmFuY2U/LnNlYXJjaENhdGVnb3J5Q2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiX3Nob3dDYXRlZ29yeURyb3Bkb3duXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXRlZ29yeU1vZGUgPT09ICdzZWxlY3QnID8gc2VhcmNoQ2F0ZWdvcnlTZWxlY3QgOiBzZWFyY2hDYXRlZ29yeU1lbnVcIlxuICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgI2lucHV0RmllbGRcbiAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtc2VhcmNoLWZpZWxkX19pbnB1dCBmZC1pbnB1dCBmZC1pbnB1dC1ncm91cF9faW5wdXQge3sgYXBwZWFyYW5jZT8uc2VhcmNoRmllbGRDbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiX2lucHV0SWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCB8fCAncGxhdGZvcm1TZWFyY2hGaWVsZC5zZWFyY2hJbnB1dExhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiX21lbnVJZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgKF9kcm9wZG93blZhbHVlcyQgfCBhc3luYyk/Lmxlbmd0aCAhPT0gMCA/IChfc2hvd0Ryb3Bkb3duID8gJ3RydWUnIDogJ2ZhbHNlJykgOiBudWxsXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cIihfZHJvcGRvd25WYWx1ZXMkIHwgYXN5bmMpPy5sZW5ndGggIT09IDBcIlxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uU2VhcmNoU3VibWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtb2JpbGUgJiYgb3Blbk1vYmlsZU1vZGUoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWlucHV0LWdyb3VwX19hZGRvbiBmZC1pbnB1dC1ncm91cF9fYWRkb24tLWJ1dHRvbiB7eyBhcHBlYXJhbmNlPy5hZGRvbkNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlucHV0VGV4dCAmJiBpbnB1dFRleHQubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhbW9iaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm1TZWFyY2hGaWVsZC5jbGVhckJ1dHRvblRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtc2VhcmNoLWZpZWxkX19jbGVhciBmZC1idXR0b24gZmQtYnV0dG9uLS10cmFuc3BhcmVudCB7eyBhcHBlYXJhbmNlPy5idXR0b25DbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1pbnB1dC1ncm91cF9fYnV0dG9uXT1cIiFhcHBlYXJhbmNlPy5yZW1vdmVHcm91cEJ1dHRvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJfY2xlYXJJZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclRleHRJbnB1dCgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIGdseXBoPVwiZGVjbGluZVwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1pbnB1dC1ncm91cF9fYWRkb24gZmQtaW5wdXQtZ3JvdXBfX2FkZG9uLS1idXR0b24ge3sgYXBwZWFyYW5jZT8uYWRkb25DbGFzcyB9fSB7e1xuICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPy5zZWFyY2hTdWJtaXRDbGFzc1xuICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImZvcmNlU2VhcmNoQnV0dG9uIHx8IGlzTG9hZGluZyB8fCAoIWlzTG9hZGluZyAmJiAhX2lzU2VhcmNoRG9uZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIW1vYmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRpc2FibGVTZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVNlYXJjaEZpZWxkLnN1Ym1pdEJ1dHRvblRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtc2VhcmNoLWZpZWxkX19zdWJtaXQgZmQtYnV0dG9uIGZkLWJ1dHRvbi0tdHJhbnNwYXJlbnQge3sgYXBwZWFyYW5jZT8uYnV0dG9uQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtaW5wdXQtZ3JvdXBfX2J1dHRvbl09XCIhYXBwZWFyYW5jZT8ucmVtb3ZlR3JvdXBCdXR0b25DbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIl9zdWJtaXRJZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VhcmNoU3VibWl0KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gZ2x5cGg9XCJzZWFyY2hcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQtZ3JvdXBfX2FkZG9uIGZkLWlucHV0LWdyb3VwX19hZGRvbi0tYnV0dG9uIHt7IGFwcGVhcmFuY2U/LmFkZG9uQ2xhc3MgfX0ge3tcbiAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT8uc2VhcmNoU3VibWl0Q2xhc3NcbiAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhZGlzYWJsZVJlZnJlc2ggJiYgIWlzTG9hZGluZyAmJiAoX2lzUmVmcmVzaCB8fCBfaXNTZWFyY2hEb25lKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhbW9iaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm1TZWFyY2hGaWVsZC5zeW5jaHJvbml6ZUJ1dHRvblRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtc2VhcmNoLWZpZWxkX19sb2FkaW5nIGZkLWlucHV0LWdyb3VwX19idXR0b24gZmQtYnV0dG9uIGZkLWJ1dHRvbi0tdHJhbnNwYXJlbnQge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U/LmJ1dHRvbkNsYXNzXG4gICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJfcmVmcmVzaElkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VhcmNoU3VibWl0KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gZ2x5cGg9XCJzeW5jaHJvbml6ZVwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3N1Z2dlc3Rpb25NZW51VGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9kcm9wZG93blZhbHVlcyQgfCBhc3luYyB8IHN1Z2dlc3Rpb25NYXRjaGVzIDogaW5wdXRUZXh0IDogbW9iaWxlIGFzIHN1Z2dlc3Rpb25zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZHAtc2VhcmNoLWZpZWxkX19zdWdnZXN0aW9uLWRyb3Bkb3duXCIgW2F0dHIuZGlyXT1cIl9kaXJcIiAqbmdJZj1cInN1Z2dlc3Rpb25zPy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxuYXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLW1lbnVcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jb21wYWN0XT1cImNvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuaXNDb21wYWN0JCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmQtbWVudS0tbW9iaWxlXT1cIm1vYmlsZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZkLW1lbnUtLW92ZXJmbG93XT1cIiFtb2JpbGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIl9tZW51SWRcIlxuICAgICAgICAgICAgICAgICNtZW51XG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImZkLW1lbnVfX2xpc3RcIiByb2xlPVwibWVudVwiPlxuICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkcFNlYXJjaEZpZWxkU3VnZ2VzdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtc2VhcmNoLWZpZWxkX19zdWdnZXN0aW9uLWl0ZW0gZmQtbWVudV9faXRlbSBmZC1tZW51X19saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiBzdWdnZXN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkl0ZW1DbGljayh2YWx1ZSk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLnRhYik9XCJvbkl0ZW1DbGljayh2YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cIm9uSXRlbUNsaWNrKHZhbHVlKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayh2YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJ2YWx1ZSB8IGhpZ2hsaWdodCA6IGlucHV0VGV4dCA6IHRydWUgOiB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJtZW51aXRlbVwiXG4gICAgICAgICAgICAgICAgICAgID48L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L25hdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -481,7 +481,7 @@ SmartFilterBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
|
481
481
|
provide: FDP_PRESET_MANAGED_COMPONENT,
|
|
482
482
|
useExisting: SmartFilterBarComponent
|
|
483
483
|
}
|
|
484
|
-
], queries: [{ propertyName: "_toolbarItemRefs", predicate: SmartFilterBarToolbarItemDirective }], viewQueries: [{ propertyName: "_formGenerator", first: true, predicate: FormGeneratorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div>\n <fd-toolbar [hasTitle]=\"true\" fdType=\"transparent\">\n <ng-container *ngIf=\"_toolbarItems\">\n <ng-container *ngFor=\"let template of _toolbarItems\">\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <fd-toolbar-separator></fd-toolbar-separator>\n </ng-container>\n </ng-container>\n <fdp-search-field\n (inputChange)=\"_onSearchInputChange($event)\"\n (searchSubmit)=\"submitForm()\"\n (cancelSearch)=\"_cancelSearch()\"\n [disabled]=\"_loading\"\n [disableRefresh]=\"true\"\n [placeholder]=\"'platformSmartFilterBar.searchPlaceholder' | fdTranslate\"\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fdp-button\n (click)=\"submitForm()\"\n buttonType=\"emphasized\"\n *ngIf=\"!liveUpdate\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n [label]=\"'platformSmartFilterBar.submitButtonLabel' | fdTranslate\"\n ></fdp-button>\n <fdp-button\n (click)=\"submitForm()\"\n fd-toolbar-item\n glyph=\"synchronize\"\n [disabled]=\"_loading\"\n [ariaLabel]=\"'platformSmartFilterBar.refreshButtonAriaLabel' | fdTranslate\"\n ></fdp-button>\n <fdp-button\n (click)=\"showFilteringSettings()\"\n [label]=\"\n filtersLabel\n ? filtersLabel + ' (' + _selectedFilters.length + ')'\n : ('platformSmartFilterBar.filtersButtonLabel'\n | fdTranslate : { filtersCount: _selectedFilters.length })\n \"\n fd-toolbar-item\n [disabled]=\"_loading\"\n ></fdp-button>\n <fdp-button\n (click)=\"_toggleFilterBar()\"\n [label]=\"\n (_showFilterBar\n ? 'platformSmartFilterBar.hideFiltersButtonLabel'\n : 'platformSmartFilterBar.showFiltersButtonLabel'\n ) | fdTranslate\n \"\n buttonType=\"transparent\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n ></fdp-button>\n </fd-toolbar>\n</div>\n\n<div class=\"fdp-smart-filter-bar__filters\" [hidden]=\"!_showFilterBar\">\n <fdp-form-generator\n (formCreated)=\"_onFormCreated()\"\n (formSubmitted)=\"_onFormSubmitted($event)\"\n [noAdditionalContent]=\"true\"\n [formItems]=\"_formItems\"\n [columnLayout]=\"filtersColumnLayout\"\n ></fdp-form-generator>\n</div>\n", styles: [".fdp-smart-filter-bar{display:block;box-shadow:var(--sapContent_HeaderShadow);background-color:var(--sapObjectHeader_Background)}.fdp-smart-filter-bar--transparent{background-color:var(--sapToolbar_Background);box-shadow:none}.fdp-smart-filter-bar .fd-toolbar--title{height:3rem;min-height:3rem;border-bottom:none;padding:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fd-toolbar--title{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-toolbar fdp-search-field{min-width:15.5rem}.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:.5rem;padding-right:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container{padding:0}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding-left:.25rem!important;padding-right:.25rem!important}.fdp-smart-filter-bar__conditions-dialog .fdp-smart-filter-bar__actions-column{min-width:auto;flex:0 0 auto}.fdp-smart-filter-bar__conditions-dialog .fd-popover-custom{display:block}.fdp-smart-filter-bar__conditions-dialog .fd-dialog__body{padding:0 .5rem;background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container,.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding:0!important}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.FormGeneratorComponent, selector: "fdp-form-generator", inputs: ["formName", "formItems", "mainTitle", "hideMainTItle", "hint", "columnLayout", "labelLayout", "labelColumnLayout", "fieldColumnLayout", "gapColumnLayout", "unifiedLayout", "inlineColumnLayout", "noAdditionalContent"], outputs: ["formCreated", "formSubmitted", "formSubmittedStatus"] }, { kind: "component", type: i6.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i6.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i6.ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: i6.ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "component", type: i7.ButtonComponent, selector: "fdp-button", inputs: ["glyphPosition", "label", "glyph", "buttonType", "toggled", "title", "ariaSelected", "ariaDisabled", "ariaExpanded", "ariaControlsId", "ariaPressed", "name", "type", "value"], outputs: ["buttonClicked"] }, { kind: "component", type: i8.SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "searchSuggestionMessage", "searchSuggestionNavigateMessage", "forceSearchButton"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "pipe", type: i9.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
484
|
+
], queries: [{ propertyName: "_toolbarItemRefs", predicate: SmartFilterBarToolbarItemDirective }], viewQueries: [{ propertyName: "_formGenerator", first: true, predicate: FormGeneratorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div>\n <fd-toolbar [hasTitle]=\"true\" fdType=\"transparent\">\n <ng-container *ngIf=\"_toolbarItems\">\n <ng-container *ngFor=\"let template of _toolbarItems\">\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <fd-toolbar-separator></fd-toolbar-separator>\n </ng-container>\n </ng-container>\n <fdp-search-field\n (inputChange)=\"_onSearchInputChange($event)\"\n (searchSubmit)=\"submitForm()\"\n (cancelSearch)=\"_cancelSearch()\"\n [disabled]=\"_loading\"\n [disableRefresh]=\"true\"\n [placeholder]=\"'platformSmartFilterBar.searchPlaceholder' | fdTranslate\"\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fdp-button\n (click)=\"submitForm()\"\n buttonType=\"emphasized\"\n *ngIf=\"!liveUpdate\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n [label]=\"'platformSmartFilterBar.submitButtonLabel' | fdTranslate\"\n ></fdp-button>\n <fdp-button\n (click)=\"submitForm()\"\n fd-toolbar-item\n glyph=\"synchronize\"\n [disabled]=\"_loading\"\n [ariaLabel]=\"'platformSmartFilterBar.refreshButtonAriaLabel' | fdTranslate\"\n ></fdp-button>\n <fdp-button\n (click)=\"showFilteringSettings()\"\n [label]=\"\n filtersLabel\n ? filtersLabel + ' (' + _selectedFilters.length + ')'\n : ('platformSmartFilterBar.filtersButtonLabel'\n | fdTranslate : { filtersCount: _selectedFilters.length })\n \"\n fd-toolbar-item\n [disabled]=\"_loading\"\n ></fdp-button>\n <fdp-button\n (click)=\"_toggleFilterBar()\"\n [label]=\"\n (_showFilterBar\n ? 'platformSmartFilterBar.hideFiltersButtonLabel'\n : 'platformSmartFilterBar.showFiltersButtonLabel'\n ) | fdTranslate\n \"\n buttonType=\"transparent\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n ></fdp-button>\n </fd-toolbar>\n</div>\n\n<div class=\"fdp-smart-filter-bar__filters\" [hidden]=\"!_showFilterBar\">\n <fdp-form-generator\n (formCreated)=\"_onFormCreated()\"\n (formSubmitted)=\"_onFormSubmitted($event)\"\n [noAdditionalContent]=\"true\"\n [formItems]=\"_formItems\"\n [columnLayout]=\"filtersColumnLayout\"\n ></fdp-form-generator>\n</div>\n", styles: [".fdp-smart-filter-bar{display:block;box-shadow:var(--sapContent_HeaderShadow);background-color:var(--sapObjectHeader_Background)}.fdp-smart-filter-bar--transparent{background-color:var(--sapToolbar_Background);box-shadow:none}.fdp-smart-filter-bar .fd-toolbar--title{height:3rem;min-height:3rem;border-bottom:none;padding:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fd-toolbar--title{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-toolbar fdp-search-field{min-width:15.5rem}.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:.5rem;padding-right:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container{padding:0}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding-left:.25rem!important;padding-right:.25rem!important}.fdp-smart-filter-bar__conditions-dialog .fdp-smart-filter-bar__actions-column{min-width:auto;flex:0 0 auto}.fdp-smart-filter-bar__conditions-dialog .fd-popover-custom{display:block}.fdp-smart-filter-bar__conditions-dialog .fd-dialog__body{padding:0 .5rem;background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container,.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding:0!important}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.FormGeneratorComponent, selector: "fdp-form-generator", inputs: ["formName", "formItems", "mainTitle", "hideMainTItle", "hint", "columnLayout", "labelLayout", "labelColumnLayout", "fieldColumnLayout", "gapColumnLayout", "unifiedLayout", "inlineColumnLayout", "noAdditionalContent"], outputs: ["formCreated", "formSubmitted", "formSubmittedStatus"] }, { kind: "component", type: i6.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i6.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i6.ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: i6.ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "component", type: i7.ButtonComponent, selector: "fdp-button", inputs: ["glyphPosition", "label", "glyph", "buttonType", "toggled", "title", "ariaSelected", "ariaDisabled", "ariaExpanded", "ariaControlsId", "ariaPressed", "name", "type", "value"], outputs: ["buttonClicked"] }, { kind: "component", type: i8.SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "searchSuggestionMessage", "searchSuggestionNavigateMessage", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "pipe", type: i9.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
485
485
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SmartFilterBarComponent, decorators: [{
|
|
486
486
|
type: Component,
|
|
487
487
|
args: [{ selector: 'fdp-smart-filter-bar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|