@eqproject/eqp-dynamic-module 2.11.6 → 2.11.8

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.
Files changed (31) hide show
  1. package/USERGUIDE.md +437 -437
  2. package/esm2020/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +2 -2
  3. package/esm2020/lib/components/private/field-graphics-editor/field-graphics-editor.component.mjs +115 -27
  4. package/esm2020/lib/components/private/field-templates/date-field-template/date-field-template.component.mjs +28 -6
  5. package/esm2020/lib/components/private/field-templates/image-field-selector-template/image-field-selector-template.component.mjs +25 -5
  6. package/esm2020/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.mjs +12 -3
  7. package/esm2020/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.mjs +26 -4
  8. package/esm2020/lib/components/private/field-templates/text-field-template/text-field-template.component.mjs +26 -4
  9. package/esm2020/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.mjs +26 -4
  10. package/esm2020/lib/components/private/form-records/list-form-record/list-form-record.component.mjs +1 -1
  11. package/esm2020/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.mjs +3 -3
  12. package/esm2020/lib/components/private/form-statistics/filter-form-statistic/filter-form-statistic.component.mjs +1 -1
  13. package/esm2020/lib/components/private/graphs/graph/graph.component.mjs +3 -3
  14. package/esm2020/lib/utils/css-property-catalog.mjs +45 -2
  15. package/esm2020/lib/utils/field-style-catalog.mjs +45 -19
  16. package/esm2020/lib/utils/floating-label-styles.mjs +155 -0
  17. package/esm2020/lib/utils/refresh-outline-notch.mjs +38 -0
  18. package/fesm2015/eqproject-eqp-dynamic-module.mjs +782 -327
  19. package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
  20. package/fesm2020/eqproject-eqp-dynamic-module.mjs +762 -313
  21. package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
  22. package/lib/components/private/field-graphics-editor/field-graphics-editor.component.d.ts +19 -1
  23. package/lib/components/private/field-templates/image-field-selector-template/image-field-selector-template.component.d.ts +6 -2
  24. package/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.d.ts +6 -2
  25. package/lib/components/private/field-templates/text-field-template/text-field-template.component.d.ts +6 -2
  26. package/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.d.ts +6 -2
  27. package/lib/utils/css-property-catalog.d.ts +25 -0
  28. package/lib/utils/field-style-catalog.d.ts +5 -0
  29. package/lib/utils/floating-label-styles.d.ts +73 -0
  30. package/lib/utils/refresh-outline-notch.d.ts +15 -0
  31. package/package.json +1 -1
@@ -531,7 +531,7 @@ export class FilterFormStatisticComponent {
531
531
  }
532
532
  }
533
533
  FilterFormStatisticComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilterFormStatisticComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.UtilityHelperService }], target: i0.ɵɵFactoryTarget.Component });
534
- FilterFormStatisticComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FilterFormStatisticComponent, selector: "filter-form-statistic", inputs: { configurations: "configurations", endPointConfiguration: "endPointConfiguration", userID: "userID", externalButtons: "externalButtons", actionButtons: "actionButtons", formID: "formID", form: "form", record: "record", onlyView: "onlyView", showHiddenFields: "showHiddenFields", defaultListActions: "defaultListActions", filterResultViewMode: "filterResultViewMode", Statistic: "Statistic", numberOfColumns: "numberOfColumns" }, outputs: { fireTrigger: "fireTrigger", saveRecordEvent: "saveRecordEvent", afterSaveRecordEvent: "afterSaveRecordEvent", afterFilter: "afterFilter", afterOutputExternalFilters: "afterOutputExternalFilters" }, viewQueries: [{ propertyName: "tableOutdated", first: true, predicate: ["tableOutdated"], descendants: true }, { propertyName: "fieldTemplate", predicate: ["fieldTemplate"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"loader\">\r\n\r\n <div class=\"row eqp-dynamic-module-title add-form-record-header\" *ngIf=\"showTitle\">\r\n <div class=\"col-md-12\">\r\n <h4><b>{{form.Name}}</b></h4>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"formForm\" class=\"add-form-record-form\">\r\n\r\n <!-- VISUALIZZAZIONE SEMPLICE -->\r\n <ng-container *ngIf=\"!showListView\" [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: form.Fields }\" class=\"add-form-record-semplice\">\r\n </ng-container>\r\n\r\n </form>\r\n\r\n <div class=\"row mt-2 m-2 add-form-record-buttons\"\r\n *ngIf=\"(showBackButton || showSaveButton)\">\r\n <div class=\"col-sm-12 m-2 text-right\">\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"showListView && showNewSearchButton\" (click)=\"reset()\">\r\n Nuova ricerca\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"!showListView && filterResultViewMode != filterResultViewModes.FILTERS_ONLY\"\r\n (click)=\"ApplyFilter()\">\r\n Esegui Filtro\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"filterResultViewMode == filterResultViewModes.FILTERS_ONLY\"\r\n (click)=\"outputExternalFilters()\">\r\n Salva modifiche filtro\r\n </button> \r\n </div>\r\n </div>\r\n\r\n <list-view-form-record\r\n *ngIf=\"showListView && filterResultViewMode == filterResultViewModes.INTERNAL_LISTVIEW && filterResults != null\"\r\n class=\"dynamic-module-list-view\"\r\n [configurations]=\"listViewConfigurations\"\r\n [compileConfigurations]=\"configurations\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [formID]=\"formID\"\r\n [onlyView]=\"true\"\r\n [records]=\"filterResults\"\r\n [externalButtons]=\"externalButtons\"\r\n >\r\n </list-view-form-record>\r\n\r\n <div *ngIf=\"showListView && filterResultViewMode == filterResultViewModes.INTERNAL_EQPTABLE && filterEqpTableResults != null\" class=\"dynamic-module-tmw-table\">\r\n <tmw-table\r\n\r\n style=\"cursor: pointer\"\r\n #table\r\n emptyTableMessage=\"\"\r\n [data]=\"filterEqpTableResults\"\r\n [columns]=\"columns\"\r\n [exportEqpTable]=\"exportEqpTable\"\r\n\r\n [chooseColumnsToShow]=\"true\"\r\n [switchFilterType]=\"true\"\r\n\r\n [createMatCard]=\"false\"\r\n [disablePageStorageSave]=\"true\"\r\n [isMultiLanguage]=\"true\"\r\n\r\n [matPaginatorCount]=\"filterEqpTableResults != null && filterEqpTableResults.length > 0 ? filterEqpTableResults.length : 0\"\r\n [matPaginatorIndex]=\"pageIndex\"\r\n [matPaginatorSize]=\"pageSize\"\r\n [matPaginatorLength]=\"pageLength\"\r\n >\r\n </tmw-table>\r\n </div> \r\n\r\n</ng-container>\r\n\r\n\r\n\r\n<!-- TEMPLATE PER LA VISUALIZZAZIONE DEI CAMPI DELLA FORM -->\r\n<ng-template #fieldTemplates let-fields='fields' let-outdatedfields='outdatedFields'>\r\n <div class=\"row\" *ngIf=\"!showListView\">\r\n <div class=\"mt-2\" *ngFor=\"let field of fields\" [hidden]=\"(!field.InListView && !showHiddenFields)\"\r\n [ngClass]=\"utilityService.getFieldFilterStyleClass(field, numberOfColumns)\">\r\n <dynamic-module-filter-fix #fieldTemplate [field]=\"field\" [form]=\"form\" [record]=\"record\" [filterResultViewMode]=\"filterResultViewMode\" [Statistic]=\"getStatisticFromFieldName(Statistic?.Statistics,field.Name)\"\r\n (filterChange)=\"onFilterChange($event)\">\r\n </dynamic-module-filter-fix>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\" *ngIf=\"outdatedTableLoaded && outdatedFields != null && outdatedFields.length > 0\">\r\n\r\n <div class=\"outdatedTableContainer\">\r\n\r\n <h2>Filtri Obsoleti</h2>\r\n <p>Sono filtri che sono stati configurati in una versione precedente di questo modulo e poi salvati</p>\r\n\r\n <tmw-table\r\n class=\"outdatedTable\"\r\n style=\"cursor: pointer\"\r\n #tableOutdated\r\n emptyTableMessage=\"\"\r\n [data]=\"outdatedFields\"\r\n [columns]=\"columnsOutdated\"\r\n\r\n [createMatCard]=\"false\"\r\n\r\n [matPaginatorCount]=\"outdatedFields != null && outdatedFields.length > 0 ? outdatedFields.length : 0\"\r\n [matPaginatorIndex]=\"0\"\r\n [matPaginatorSize]=\"5\"\r\n [matPaginatorLength]=\"[5]\"\r\n >\r\n </tmw-table>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".dynamic-module-tmw-table{padding:20px}.outdatedTableContainer{width:100%;display:flex;justify-content:center;align-items:center;flex-flow:column;margin-top:35px}.outdatedTableContainer .outdatedTable{width:80%}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.TmwTableComponent, selector: "tmw-table", inputs: ["data", "columns", "headerTitle", "emptyTableMessage", "tableColor", "createMatCard", "createMatCardHeader", "isMultiLanguage", "cultureInfo", "rowHeightMode", "rowHeight", "rowExpandable", "enableMultiSort", "isTableSearcheable", "searchText", "isSingleColumnFilter", "showSingleFilterButton", "switchFilterType", "switchFilterToGenericText", "switchFilterToSingleText", "showFilterText", "hideFilterText", "singleFilterColumnVisible", "currencyFilterToReplace", "currencyFilterToUse", "serverSideSort", "serverSideFilter", "selection", "isMultipleSelection", "disableRow", "disableRowColor", "isHighlight", "highlightColor", "rowCssClass", "cellCssClass", "headerCellCssClass", "rowIdentity", "isSelectedPropertyName", "paginatorVisible", "matPaginatorLength", "matPaginatorSize", "matPaginatorIndex", "matPaginatorCount", "disablePageStorageSave", "tableName", "disableColumnStateStorageSave", "showFirstLastButtons", "serverSidePagination", "serverPagination", "loading", "antiFreeze", "antiFreezeThreshold", "virtualScroll", "estimatedRowHeight", "virtualScrollBuffer", "enableDragAndDrop", "enableDragColumn", "changeDragRowPosition", "enableDragDrop", "isStickyHeader", "columnOverflowMode", "maxBodyHeight", "allowNewLine", "cardBreakpoint", "forceCardLayout", "chooseColumnsToShow", "chooseColumnsToShowText", "customButtons", "enableColumnReorder", "bulkActions", "showAggregationRow", "exportEqpTable", "notPaginatedExport", "notPaginatedFunctionType", "notPaginatedFunctionPath", "notPaginatedFunctionPostData", "notPaginatedFunctionReturnParameter", "notPaginatedFunctionReturnIsJson", "notPaginatedMergeController", "notPaginatedMergePostData", "suppressRenderDataUpdate"], outputs: ["antiFreezeChange", "columnResize", "columnReorder", "sortChange", "multiSortChange", "filteredColumns", "filterChange", "checkboxInfo", "checkboxJustSelectedInfo", "highlightSelected", "highlightDeselected", "pageChange", "dragStartedEvent", "dragReleasedEvent", "dragEndedEvent", "dragDropEvent", "eqpExportStarted", "eqpExportCompleted", "eqpExportEnded", "exportAllRequested"] }, { kind: "component", type: i6.ListViewFormRecordComponent, selector: "list-view-form-record", inputs: ["configurations", "compileConfigurations", "endPointConfiguration", "userID", "formID", "orgaID", "form", "defaultListViewFunction", "externalButtons", "actionButtons", "onlyView", "records", "highlightFilter", "QueryEditorComponent", "formulaObject", "contestualizationParams"], outputs: ["onAddViewEditRecord", "onDeleteRecord", "saveRecordEvent", "afterSaveRecordEvent", "dragStarted", "dragReleased", "out", "fireTrigger", "clickDragIndicator"] }, { kind: "component", type: i7.DynamicModuleFilterFixComponent, selector: "dynamic-module-filter-fix", inputs: ["field", "form", "record", "Statistic", "filterResultViewMode"], outputs: ["filterChange"] }] });
534
+ FilterFormStatisticComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FilterFormStatisticComponent, selector: "filter-form-statistic", inputs: { configurations: "configurations", endPointConfiguration: "endPointConfiguration", userID: "userID", externalButtons: "externalButtons", actionButtons: "actionButtons", formID: "formID", form: "form", record: "record", onlyView: "onlyView", showHiddenFields: "showHiddenFields", defaultListActions: "defaultListActions", filterResultViewMode: "filterResultViewMode", Statistic: "Statistic", numberOfColumns: "numberOfColumns" }, outputs: { fireTrigger: "fireTrigger", saveRecordEvent: "saveRecordEvent", afterSaveRecordEvent: "afterSaveRecordEvent", afterFilter: "afterFilter", afterOutputExternalFilters: "afterOutputExternalFilters" }, viewQueries: [{ propertyName: "tableOutdated", first: true, predicate: ["tableOutdated"], descendants: true }, { propertyName: "fieldTemplate", predicate: ["fieldTemplate"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"loader\">\r\n\r\n <div class=\"row eqp-dynamic-module-title add-form-record-header\" *ngIf=\"showTitle\">\r\n <div class=\"col-md-12\">\r\n <h4><b>{{form.Name}}</b></h4>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"formForm\" class=\"add-form-record-form\">\r\n\r\n <!-- VISUALIZZAZIONE SEMPLICE -->\r\n <ng-container *ngIf=\"!showListView\" [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: form.Fields }\" class=\"add-form-record-semplice\">\r\n </ng-container>\r\n\r\n </form>\r\n\r\n <div class=\"row mt-2 m-2 add-form-record-buttons\"\r\n *ngIf=\"(showBackButton || showSaveButton)\">\r\n <div class=\"col-sm-12 m-2 text-right\">\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"showListView && showNewSearchButton\" (click)=\"reset()\">\r\n Nuova ricerca\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"!showListView && filterResultViewMode != filterResultViewModes.FILTERS_ONLY\"\r\n (click)=\"ApplyFilter()\">\r\n Esegui Filtro\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"filterResultViewMode == filterResultViewModes.FILTERS_ONLY\"\r\n (click)=\"outputExternalFilters()\">\r\n Salva modifiche filtro\r\n </button> \r\n </div>\r\n </div>\r\n\r\n <list-view-form-record\r\n *ngIf=\"showListView && filterResultViewMode == filterResultViewModes.INTERNAL_LISTVIEW && filterResults != null\"\r\n class=\"dynamic-module-list-view\"\r\n [configurations]=\"listViewConfigurations\"\r\n [compileConfigurations]=\"configurations\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [formID]=\"formID\"\r\n [onlyView]=\"true\"\r\n [records]=\"filterResults\"\r\n [externalButtons]=\"externalButtons\"\r\n >\r\n </list-view-form-record>\r\n\r\n <div *ngIf=\"showListView && filterResultViewMode == filterResultViewModes.INTERNAL_EQPTABLE && filterEqpTableResults != null\" class=\"dynamic-module-tmw-table\">\r\n <tmw-table\r\n\r\n style=\"cursor: pointer\"\r\n #table\r\n emptyTableMessage=\"\"\r\n [data]=\"filterEqpTableResults\"\r\n [columns]=\"columns\"\r\n [exportEqpTable]=\"exportEqpTable\"\r\n\r\n [chooseColumnsToShow]=\"true\"\r\n [switchFilterType]=\"true\"\r\n\r\n [createMatCard]=\"false\"\r\n [disablePageStorageSave]=\"true\"\r\n [isMultiLanguage]=\"true\"\r\n\r\n [matPaginatorCount]=\"filterEqpTableResults != null && filterEqpTableResults.length > 0 ? filterEqpTableResults.length : 0\"\r\n [matPaginatorIndex]=\"pageIndex\"\r\n [matPaginatorSize]=\"pageSize\"\r\n [matPaginatorLength]=\"pageLength\"\r\n >\r\n </tmw-table>\r\n </div> \r\n\r\n</ng-container>\r\n\r\n\r\n\r\n<!-- TEMPLATE PER LA VISUALIZZAZIONE DEI CAMPI DELLA FORM -->\r\n<ng-template #fieldTemplates let-fields='fields' let-outdatedfields='outdatedFields'>\r\n <div class=\"row\" *ngIf=\"!showListView\">\r\n <div class=\"mt-2\" *ngFor=\"let field of fields\" [hidden]=\"(!field.InListView && !showHiddenFields)\"\r\n [ngClass]=\"utilityService.getFieldFilterStyleClass(field, numberOfColumns)\">\r\n <dynamic-module-filter-fix #fieldTemplate [field]=\"field\" [form]=\"form\" [record]=\"record\" [filterResultViewMode]=\"filterResultViewMode\" [Statistic]=\"getStatisticFromFieldName(Statistic?.Statistics,field.Name)\"\r\n (filterChange)=\"onFilterChange($event)\">\r\n </dynamic-module-filter-fix>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\" *ngIf=\"outdatedTableLoaded && outdatedFields != null && outdatedFields.length > 0\">\r\n\r\n <div class=\"outdatedTableContainer\">\r\n\r\n <h2>Filtri Obsoleti</h2>\r\n <p>Sono filtri che sono stati configurati in una versione precedente di questo modulo e poi salvati</p>\r\n\r\n <tmw-table\r\n class=\"outdatedTable\"\r\n style=\"cursor: pointer\"\r\n #tableOutdated\r\n emptyTableMessage=\"\"\r\n [data]=\"outdatedFields\"\r\n [columns]=\"columnsOutdated\"\r\n\r\n [createMatCard]=\"false\"\r\n\r\n [matPaginatorCount]=\"outdatedFields != null && outdatedFields.length > 0 ? outdatedFields.length : 0\"\r\n [matPaginatorIndex]=\"0\"\r\n [matPaginatorSize]=\"5\"\r\n [matPaginatorLength]=\"[5]\"\r\n >\r\n </tmw-table>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".dynamic-module-tmw-table{padding:20px}.outdatedTableContainer{width:100%;display:flex;justify-content:center;align-items:center;flex-flow:column;margin-top:35px}.outdatedTableContainer .outdatedTable{width:80%}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.TmwTableComponent, selector: "tmw-table", inputs: ["data", "columns", "headerTitle", "emptyTableMessage", "tableColor", "createMatCard", "createMatCardHeader", "isMultiLanguage", "cultureInfo", "rowHeightMode", "rowHeight", "rowExpandable", "enableMultiSort", "isTableSearcheable", "searchText", "collapsibleSearch", "isSingleColumnFilter", "showSingleFilterButton", "switchFilterType", "switchFilterToGenericText", "switchFilterToSingleText", "showFilterText", "hideFilterText", "singleFilterColumnVisible", "currencyFilterToReplace", "currencyFilterToUse", "serverSideSort", "serverSideFilter", "selection", "isMultipleSelection", "disableRow", "disableRowColor", "isHighlight", "highlightColor", "rowCssClass", "cellCssClass", "headerCellCssClass", "rowIdentity", "isSelectedPropertyName", "paginatorVisible", "matPaginatorLength", "matPaginatorSize", "matPaginatorIndex", "matPaginatorCount", "disablePageStorageSave", "tableName", "disableColumnStateStorageSave", "showFirstLastButtons", "serverSidePagination", "serverPagination", "loading", "antiFreeze", "antiFreezeThreshold", "virtualScroll", "estimatedRowHeight", "virtualScrollBuffer", "enableDragAndDrop", "enableDragColumn", "changeDragRowPosition", "enableDragDrop", "isStickyHeader", "columnOverflowMode", "maxBodyHeight", "allowNewLine", "cardBreakpoint", "forceCardLayout", "chooseColumnsToShow", "chooseColumnsToShowText", "customButtons", "customButtonsLeft", "enableColumnReorder", "bulkActions", "showAggregationRow", "exportEqpTable", "notPaginatedExport", "notPaginatedFunctionType", "notPaginatedFunctionPath", "notPaginatedFunctionPostData", "notPaginatedFunctionReturnParameter", "notPaginatedFunctionReturnIsJson", "notPaginatedMergeController", "notPaginatedMergePostData", "suppressRenderDataUpdate"], outputs: ["antiFreezeChange", "columnResize", "columnReorder", "sortChange", "multiSortChange", "filteredColumns", "filterChange", "checkboxInfo", "checkboxJustSelectedInfo", "highlightSelected", "highlightDeselected", "pageChange", "dragStartedEvent", "dragReleasedEvent", "dragEndedEvent", "dragDropEvent", "eqpExportStarted", "eqpExportCompleted", "eqpExportEnded", "exportAllRequested"] }, { kind: "component", type: i6.ListViewFormRecordComponent, selector: "list-view-form-record", inputs: ["configurations", "compileConfigurations", "endPointConfiguration", "userID", "formID", "orgaID", "form", "defaultListViewFunction", "externalButtons", "actionButtons", "onlyView", "records", "highlightFilter", "QueryEditorComponent", "formulaObject", "contestualizationParams"], outputs: ["onAddViewEditRecord", "onDeleteRecord", "saveRecordEvent", "afterSaveRecordEvent", "dragStarted", "dragReleased", "out", "fireTrigger", "clickDragIndicator"] }, { kind: "component", type: i7.DynamicModuleFilterFixComponent, selector: "dynamic-module-filter-fix", inputs: ["field", "form", "record", "Statistic", "filterResultViewMode"], outputs: ["filterChange"] }] });
535
535
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilterFormStatisticComponent, decorators: [{
536
536
  type: Component,
537
537
  args: [{ selector: 'filter-form-statistic', template: "<ng-container *ngIf=\"loader\">\r\n\r\n <div class=\"row eqp-dynamic-module-title add-form-record-header\" *ngIf=\"showTitle\">\r\n <div class=\"col-md-12\">\r\n <h4><b>{{form.Name}}</b></h4>\r\n </div>\r\n </div>\r\n\r\n <form [formGroup]=\"formForm\" class=\"add-form-record-form\">\r\n\r\n <!-- VISUALIZZAZIONE SEMPLICE -->\r\n <ng-container *ngIf=\"!showListView\" [ngTemplateOutlet]=\"fieldTemplates\"\r\n [ngTemplateOutletContext]=\"{ fields: form.Fields }\" class=\"add-form-record-semplice\">\r\n </ng-container>\r\n\r\n </form>\r\n\r\n <div class=\"row mt-2 m-2 add-form-record-buttons\"\r\n *ngIf=\"(showBackButton || showSaveButton)\">\r\n <div class=\"col-sm-12 m-2 text-right\">\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"showListView && showNewSearchButton\" (click)=\"reset()\">\r\n Nuova ricerca\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"!showListView && filterResultViewMode != filterResultViewModes.FILTERS_ONLY\"\r\n (click)=\"ApplyFilter()\">\r\n Esegui Filtro\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" *ngIf=\"filterResultViewMode == filterResultViewModes.FILTERS_ONLY\"\r\n (click)=\"outputExternalFilters()\">\r\n Salva modifiche filtro\r\n </button> \r\n </div>\r\n </div>\r\n\r\n <list-view-form-record\r\n *ngIf=\"showListView && filterResultViewMode == filterResultViewModes.INTERNAL_LISTVIEW && filterResults != null\"\r\n class=\"dynamic-module-list-view\"\r\n [configurations]=\"listViewConfigurations\"\r\n [compileConfigurations]=\"configurations\"\r\n [endPointConfiguration]=\"endPointConfiguration\"\r\n [formID]=\"formID\"\r\n [onlyView]=\"true\"\r\n [records]=\"filterResults\"\r\n [externalButtons]=\"externalButtons\"\r\n >\r\n </list-view-form-record>\r\n\r\n <div *ngIf=\"showListView && filterResultViewMode == filterResultViewModes.INTERNAL_EQPTABLE && filterEqpTableResults != null\" class=\"dynamic-module-tmw-table\">\r\n <tmw-table\r\n\r\n style=\"cursor: pointer\"\r\n #table\r\n emptyTableMessage=\"\"\r\n [data]=\"filterEqpTableResults\"\r\n [columns]=\"columns\"\r\n [exportEqpTable]=\"exportEqpTable\"\r\n\r\n [chooseColumnsToShow]=\"true\"\r\n [switchFilterType]=\"true\"\r\n\r\n [createMatCard]=\"false\"\r\n [disablePageStorageSave]=\"true\"\r\n [isMultiLanguage]=\"true\"\r\n\r\n [matPaginatorCount]=\"filterEqpTableResults != null && filterEqpTableResults.length > 0 ? filterEqpTableResults.length : 0\"\r\n [matPaginatorIndex]=\"pageIndex\"\r\n [matPaginatorSize]=\"pageSize\"\r\n [matPaginatorLength]=\"pageLength\"\r\n >\r\n </tmw-table>\r\n </div> \r\n\r\n</ng-container>\r\n\r\n\r\n\r\n<!-- TEMPLATE PER LA VISUALIZZAZIONE DEI CAMPI DELLA FORM -->\r\n<ng-template #fieldTemplates let-fields='fields' let-outdatedfields='outdatedFields'>\r\n <div class=\"row\" *ngIf=\"!showListView\">\r\n <div class=\"mt-2\" *ngFor=\"let field of fields\" [hidden]=\"(!field.InListView && !showHiddenFields)\"\r\n [ngClass]=\"utilityService.getFieldFilterStyleClass(field, numberOfColumns)\">\r\n <dynamic-module-filter-fix #fieldTemplate [field]=\"field\" [form]=\"form\" [record]=\"record\" [filterResultViewMode]=\"filterResultViewMode\" [Statistic]=\"getStatisticFromFieldName(Statistic?.Statistics,field.Name)\"\r\n (filterChange)=\"onFilterChange($event)\">\r\n </dynamic-module-filter-fix>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\" *ngIf=\"outdatedTableLoaded && outdatedFields != null && outdatedFields.length > 0\">\r\n\r\n <div class=\"outdatedTableContainer\">\r\n\r\n <h2>Filtri Obsoleti</h2>\r\n <p>Sono filtri che sono stati configurati in una versione precedente di questo modulo e poi salvati</p>\r\n\r\n <tmw-table\r\n class=\"outdatedTable\"\r\n style=\"cursor: pointer\"\r\n #tableOutdated\r\n emptyTableMessage=\"\"\r\n [data]=\"outdatedFields\"\r\n [columns]=\"columnsOutdated\"\r\n\r\n [createMatCard]=\"false\"\r\n\r\n [matPaginatorCount]=\"outdatedFields != null && outdatedFields.length > 0 ? outdatedFields.length : 0\"\r\n [matPaginatorIndex]=\"0\"\r\n [matPaginatorSize]=\"5\"\r\n [matPaginatorLength]=\"[5]\"\r\n >\r\n </tmw-table>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".dynamic-module-tmw-table{padding:20px}.outdatedTableContainer{width:100%;display:flex;justify-content:center;align-items:center;flex-flow:column;margin-top:35px}.outdatedTableContainer .outdatedTable{width:80%}\n"] }]
@@ -163,10 +163,10 @@ export class GraphComponent {
163
163
  }
164
164
  }
165
165
  GraphComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GraphComponent, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
166
- GraphComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GraphComponent, selector: "graph", inputs: { data: "data", title: "title" }, host: { listeners: { "window:resize": "onResize($event)" } }, ngImport: i0, template: "<canvasjs-stockchart *ngIf=\"loaded\" [options]=\"stockChartOptions\"></canvasjs-stockchart>\n<div class=\"error\" *ngIf=\"!loaded\"><b>{{title}}:</b> Nessun dato trovato nell'intervallo specificato!</div>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CanvasJSStockChart, selector: "canvasjs-stockchart", inputs: ["options", "styles"], outputs: ["stockChartInstance"] }] });
166
+ GraphComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GraphComponent, selector: "graph", inputs: { data: "data", title: "title" }, host: { listeners: { "window:resize": "onResize($event)" } }, ngImport: i0, template: "<canvasjs-stockchart *ngIf=\"loaded\" [options]=\"stockChartOptions\"></canvasjs-stockchart>\r\n<div class=\"error\" *ngIf=\"!loaded\"><b>{{title}}:</b> Nessun dato trovato nell'intervallo specificato!</div>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CanvasJSStockChart, selector: "canvasjs-stockchart", inputs: ["options", "styles"], outputs: ["stockChartInstance"] }] });
167
167
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GraphComponent, decorators: [{
168
168
  type: Component,
169
- args: [{ selector: 'graph', template: "<canvasjs-stockchart *ngIf=\"loaded\" [options]=\"stockChartOptions\"></canvasjs-stockchart>\n<div class=\"error\" *ngIf=\"!loaded\"><b>{{title}}:</b> Nessun dato trovato nell'intervallo specificato!</div>" }]
169
+ args: [{ selector: 'graph', template: "<canvasjs-stockchart *ngIf=\"loaded\" [options]=\"stockChartOptions\"></canvasjs-stockchart>\r\n<div class=\"error\" *ngIf=\"!loaded\"><b>{{title}}:</b> Nessun dato trovato nell'intervallo specificato!</div>" }]
170
170
  }], ctorParameters: function () { return [{ type: i1.DatePipe }]; }, propDecorators: { onResize: [{
171
171
  type: HostListener,
172
172
  args: ['window:resize', ['$event']]
@@ -177,4 +177,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
177
177
  type: Input,
178
178
  args: ["title"]
179
179
  }] } });
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2dyYXBocy9ncmFwaC9ncmFwaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZ3JhcGhzL2dyYXBoL2dyYXBoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd2RSxPQUFPLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7O0FBU3hDLE1BQU0sT0FBTyxjQUFjO0lBR3pCLFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFvQkQsWUFDVSxRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBbkJiLFNBQUksR0FBa0IsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUN6QyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRW5DLGVBQVUsR0FBVyxTQUFTLENBQUM7UUFDL0IsY0FBUyxHQUFXLFNBQVMsQ0FBQztRQVc5QixXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hCLFlBQU8sR0FBVyxDQUFDLENBQUM7SUFJZixDQUFDO0lBRU4sUUFBUTtRQUVOLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUVoQixpQ0FBaUM7UUFDakMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxD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QUFHLEdBQUcsY0FBYyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxHQUFHLGFBQWEsR0FBSSxHQUFHLEdBQUcsZUFBZSxDQUFDO1FBRTNILEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUIsS0FBSyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN4QjtRQUNELEtBQUssSUFBSSxHQUFHLENBQUM7UUFDYixLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVCLEtBQUssSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEI7UUFFRCxvQ0FBb0M7UUFFdEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs0R0F4TFUsY0FBYztnR0FBZCxjQUFjLHFKQ1ozQiwrTUFDMkc7NEZEVzlGLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsT0FBTzsrRkFRakIsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNMUIsSUFBSTtzQkFBbEIsS0FBSzt1QkFBQyxNQUFNO2dCQUNHLEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvb3JkcyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9ncmFwaC5tb2RlbCc7XHJcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0ICogYXMgc3MgZnJvbSAnc2ltcGxlLXN0YXRpc3RpY3MnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZ3JhcGgnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmFwaC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JhcGguY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEdyYXBoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoKSB7XHJcbiAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5sb2FkR3JhcGgoTWF0aC5mbG9vcih3aW5kb3cuaW5uZXJXaWR0aC8yKSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoXCJkYXRhXCIpIGRhdGE6IEFycmF5PENvb3Jkcz4gPSBuZXcgQXJyYXk8Q29vcmRzPigpO1xyXG4gIEBJbnB1dChcInRpdGxlXCIpIHRpdGxlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICB0cmVuZENvbG9yOiBzdHJpbmcgPSAnI0VCMDEwMic7XHJcbiAgbWFpbkNvbG9yOiBzdHJpbmcgPSAnIzAwNmNhZCc7XHJcblxyXG4gIG06IG51bWJlcjsgLy8gbSBvZiB0aGUgbGluZWFyIHJlZ3Jlc3Npb25cclxuICBxOiBudW1iZXI7IC8vIHEgb2YgdGhlIGxpbmVhciByZWdyZXNzaW9uXHJcbiAgdHJlbmQ6IHN0cmluZzsgLy8gdHJlbmQgc3RyaW5nXHJcbiAgbGluZWFyUmVncmVzc2lvbjogQXJyYXk8Q29vcmRzPjsgLy8gdmFyaWFibGUgdXNlZCB0byBzdG9yZSB0aGUgbGluZWFyIHJlZ3Jlc3Npb24gcG9pbnRzIHRvIHBsb3RcclxuXHJcblxyXG5cclxuICBzdG9ja0NoYXJ0T3B0aW9uczogYW55O1xyXG5cclxuICBsb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjb3VudGVyOiBudW1iZXIgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlXHJcbiAgICApIHt9ICBcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIC8vIEFnZ2l1c3RhbWVudG8gZSBzY3JpdHR1cmEgZGF0aVxyXG4gICAgaWYgKHRoaXMuZGF0YS5sZW5ndGggPiAwKXtcclxuICAgICAgdGhpcy5sb2FkR3JhcGgoTWF0aC5mbG9vcih3aW5kb3cuaW5uZXJXaWR0aC8yKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkR3JhcGgod2lkdGg6IG51bWJlcil7XHJcblxyXG4gICAgdmFyIGxhc3R2YWx1ZSA9IHRoaXMuZGF0YVswXTtcclxuICAgIHZhciBmaXJzdHZhbHVlID0gdGhpcy5kYXRhW3RoaXMuZGF0YS5sZW5ndGgtMV07XHJcblxyXG4gICAgdmFyIHN0b2NrQ2hhcnRNaW5pbXVtID0gbmV3IERhdGUoZmlyc3R2YWx1ZS54KTtcclxuICAgIHZhciBzdG9ja0NoYXJ0TWF4aW11bSA9IG5ldyBEYXRlKGxhc3R2YWx1ZS54KTtcclxuICAgIHZhciBzdG9ja0NoYXJ0VGl0bGVUZXh0ID0gdGhpcy50aXRsZTtcclxuICAgIHZhciBzdG9ja0NoYXJ0ZGF0YVBvaW50cyA9IHRoaXMuZGF0YTtcclxuXHJcbiAgICB0aGlzLmxpbmVhclJlZ3Jlc3Npb24gPSBuZXcgQXJyYXk8Q29vcmRzPigpO1xyXG4gICAgdGhpcy50cmVuZCA9IFwiXCI7XHJcblxyXG4gICAgc3RvY2tDaGFydGRhdGFQb2ludHMucmV2ZXJzZSgpO1xyXG4gICAgaWYgKHN0b2NrQ2hhcnRkYXRhUG9pbnRzLmxlbmd0aCA+IDIpIHtcclxuICAgICAgbGV0IHggPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGk8c3RvY2tDaGFydGRhdGFQb2ludHMubGVuZ3RoOyBpICsrKSB7XHJcbiAgICAgICAgeC5wdXNoKFtpLCBzdG9ja0NoYXJ0ZGF0YVBvaW50c1tpXS55XSk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHBhcmFtZXRlcnMgPSBzcy5saW5lYXJSZWdyZXNzaW9uKHgpO1xyXG4gICAgICB0aGlzLm0gPSBwYXJhbWV0ZXJzLm07XHJcbiAgICAgIHRoaXMucSA9IHBhcmFtZXRlcnMuYjtcclxuICAgICAgaWYgKHRoaXMubSA+IDApIHtcclxuICAgICAgICAgIHRoaXMudHJlbmQgKz0gXCIg4oaXXCI7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm0gPCAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRyZW5kICs9IFwiIOKGmFwiO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKHgpO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhzdG9ja0NoYXJ0ZGF0YVBvaW50cyk7XHJcbiAgICAgIFxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaTxzdG9ja0NoYXJ0ZGF0YVBvaW50cy5sZW5ndGg7IGkgKyspIHtcclxuICAgICAgICBpZiAoaSA9PSAwIHx8IGkgPT0gc3RvY2tDaGFydGRhdGFQb2ludHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgdGhpcy5saW5lYXJSZWdyZXNzaW9uLnB1c2goe3g6IHN0b2NrQ2hhcnRkYXRhUG9pbnRzW2ldLngsXHJcbiAgICAgICAgICAgIHk6IHRoaXMubSppICsgdGhpcy5xLFxyXG4gICAgICAgICAgICBsYWJlbDogc3RvY2tDaGFydGRhdGFQb2ludHNbaV0ubGFiZWwsXHJcbiAgICAgICAgICAgIG5hbWU6IHN0b2NrQ2hhcnRkYXRhUG9pbnRzW2ldLm5hbWVcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vdGhpcy5saW5lYXJSZWdyZXNzaW9uLnJldmVyc2UoKTtcclxuICAgICAgLy8gY29uc29sZS5sb2codGhpcy5saW5lYXJSZWdyZXNzaW9uKTtcclxuICAgICAgLy8gY29uc29sZS5sb2codGhpcy5tKTtcclxuICAgICAgLy8gY29uc29sZS5sb2codGhpcy5xKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN0b2NrQ2hhcnRPcHRpb25zID0ge1xyXG4gICAgICB0aGVtZTogJ2xpZ2h0MicsXHJcbiAgICAgIGFuaW1hdGlvbkVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiB3aWR0aCxcclxuICAgICAgaGVpZ2h0OiA1MDAsXHJcbiAgICAgIGNyZWRpdFRleHQ6IFwiXCIsXHJcbiAgICAgIGNyZWRpdEhyZWY6IFwiXCIsXHJcbiAgICAgIHRpdGxlOiB7XHJcbiAgICAgICAgdGV4dDogc3RvY2tDaGFydFRpdGxlVGV4dFxyXG4gICAgICB9LFxyXG4gICAgICBjaGFydHM6IFt7XHJcbiAgICAgICAgYXhpc1g6IHtcclxuICAgICAgICAgIGxhYmVsRm9ybWF0dGVyOiB0aGlzLmxhYmVsRm9ybWF0dGVyRnVuY3Rpb24sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkYXRhOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRvb2xUaXBDb250ZW50OiBudWxsLFxyXG4gICAgICAgICAgICB0eXBlOiAnbGluZScsXHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLnRyZW5kQ29sb3IsXHJcbiAgICAgICAgICAgIHNob3dJbkxlZ2VuZDogdHJ1ZSxcclxuICAgICAgICAgICAgbGVnZW5kTWFya2VyVHlwZTogXCJub25lXCIsXHJcbiAgICAgICAgICAgIG1hcmtlclR5cGU6IFwibm9uZVwiLFxyXG4gICAgICAgICAgICBsZWdlbmRUZXh0OiBcIlRyZW5kXCIgKyB0aGlzLnRyZW5kLFxyXG4gICAgICAgICAgICBkYXRhUG9pbnRzOiB0aGlzLmxpbmVhclJlZ3Jlc3Npb25cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6IFwic3BsaW5lXCIsXHJcbiAgICAgICAgICAgIGRhdGFQb2ludHM6IHN0b2NrQ2hhcnRkYXRhUG9pbnRzLFxyXG4gICAgICAgICAgICBjb2xvcjogdGhpcy5tYWluQ29sb3IsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXSxcclxuICAgICAgICBjdWx0dXJlOiBcIml0XCJcclxuICAgICAgfV0sXHJcbiAgICAgIHJhbmdlU2VsZWN0b3I6IHtcclxuICAgICAgICBlbmFibGVkOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICBuYXZpZ2F0b3I6IHtcclxuICAgICAgICBzbGlkZXI6IHtcclxuICAgICAgICAgIG1pbmltdW06IHN0b2NrQ2hhcnRNaW5pbXVtLFxyXG4gICAgICAgICAgbWF4aW11bTogc3RvY2tDaGFydE1heGltdW1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICByZXNwb25zaXZlOiB0cnVlLFxyXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlXHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbGFiZWxGb3JtYXR0ZXJGdW5jdGlvbihlKSB7XHJcbiAgICBsZXQgbGFiZWwgPSBcIlwiO1xyXG4gICAgbGV0IGRpcnR5TGFiZWw7XHJcbiAgICBsZXQgZGF0ZSA9IGUudmFsdWU7XHJcblxyXG4gICAgICBsZXQgbmV3WWVhcjogbnVtYmVyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICBsZXQgbmV3TW9udGg6IG51bWJlciA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XHJcbiAgICAgIGxldCBuZXdNb250aFN0cmluZzogc3RyaW5nO1xyXG4gICAgICBpZiAobmV3TW9udGggPCAxMCkge1xyXG4gICAgICBuZXdNb250aFN0cmluZyA9IFwiMFwiICsgbmV3TW9udGgudG9TdHJpbmcoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgbmV3TW9udGhTdHJpbmcgPSBuZXdNb250aC50b1N0cmluZygpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBuZXdEYXk6IG51bWJlciA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG4gICAgICBsZXQgbmV3RGF5U3RyaW5nOiBzdHJpbmc7XHJcbiAgICAgIGlmIChuZXdEYXkgPCAxMCkge1xyXG4gICAgICBuZXdEYXlTdHJpbmcgPSBcIjBcIiArIG5ld0RheS50b1N0cmluZygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdEYXlTdHJpbmcgPSBuZXdEYXkudG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbmV3SG91cjogbnVtYmVyID0gZGF0ZS5nZXRIb3VycygpO1xyXG4gICAgICBsZXQgbmV3SG91clN0cmluZzogc3RyaW5nO1xyXG4gICAgICBpZiAobmV3SG91ciA8IDEwKSB7XHJcbiAgICAgIG5ld0hvdXJTdHJpbmcgPSBcIjBcIiArIG5ld0hvdXIudG9TdHJpbmcoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgbmV3SG91clN0cmluZyA9IG5ld0hvdXIudG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbmV3TWludXRlOiBudW1iZXIgPSBkYXRlLmdldE1pbnV0ZXMoKTtcclxuICAgICAgbGV0IG5ld01pbnV0ZVN0cmluZzogc3RyaW5nO1xyXG4gICAgICBpZiAobmV3TWludXRlIDwgMTApIHtcclxuICAgICAgbmV3TWludXRlU3RyaW5nID0gXCIwXCIgKyBuZXdNaW51dGUudG9TdHJpbmcoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgbmV3TWludXRlU3RyaW5nID0gbmV3TWludXRlLnRvU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGRpcnR5TGFiZWwgPSBuZXdEYXlTdHJpbmcgKyBcIi9cIiArIG5ld01vbnRoU3RyaW5nICsgXCIvXCIgKyBuZXdZZWFyLnRvU3RyaW5nKCkgKyBcIiBcIiArIG5ld0hvdXJTdHJpbmcgICsgXCI6XCIgKyBuZXdNaW51dGVTdHJpbmc7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xyXG4gICAgICAgIGxhYmVsICs9IGRpcnR5TGFiZWxbaV07XHJcbiAgICAgIH1cclxuICAgICAgbGFiZWwgKz0gXCIgXCI7XHJcbiAgICAgIGZvciAobGV0IGkgPSAxMTsgaSA8IDE2OyBpKyspIHtcclxuICAgICAgICBsYWJlbCArPSBkaXJ0eUxhYmVsW2ldO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvL2xhYmVsID0gbGFiZWwucmVwbGFjZShcIjAwOjAwXCIsXCJcIik7XHJcbiAgICBcclxuICAgIHJldHVybiBsYWJlbDtcclxuICB9ICBcclxuICBcclxuXHJcbn1cclxuIiwiPGNhbnZhc2pzLXN0b2NrY2hhcnQgKm5nSWY9XCJsb2FkZWRcIiBbb3B0aW9uc109XCJzdG9ja0NoYXJ0T3B0aW9uc1wiPjwvY2FudmFzanMtc3RvY2tjaGFydD5cbjxkaXYgY2xhc3M9XCJlcnJvclwiICpuZ0lmPVwiIWxvYWRlZFwiPjxiPnt7dGl0bGV9fTo8L2I+IE5lc3N1biBkYXRvIHRyb3ZhdG8gbmVsbCdpbnRlcnZhbGxvIHNwZWNpZmljYXRvITwvZGl2PiJdfQ==
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2dyYXBocy9ncmFwaC9ncmFwaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZ3JhcGhzL2dyYXBoL2dyYXBoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd2RSxPQUFPLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7O0FBU3hDLE1BQU0sT0FBTyxjQUFjO0lBR3pCLFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFvQkQsWUFDVSxRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBbkJiLFNBQUksR0FBa0IsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUN6QyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRW5DLGVBQVUsR0FBVyxTQUFTLENBQUM7UUFDL0IsY0FBUyxHQUFXLFNBQVMsQ0FBQztRQVc5QixXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hCLFlBQU8sR0FBVyxDQUFDLENBQUM7SUFJZixDQUFDO0lBRU4sUUFBUTtRQUVOLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUVoQixpQ0FBaUM7UUFDakMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxD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QUFHLEdBQUcsY0FBYyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxHQUFHLGFBQWEsR0FBSSxHQUFHLEdBQUcsZUFBZSxDQUFDO1FBRTNILEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUIsS0FBSyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN4QjtRQUNELEtBQUssSUFBSSxHQUFHLENBQUM7UUFDYixLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVCLEtBQUssSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEI7UUFFRCxvQ0FBb0M7UUFFdEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs0R0F4TFUsY0FBYztnR0FBZCxjQUFjLHFKQ1ozQixpTkFDMkc7NEZEVzlGLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsT0FBTzsrRkFRakIsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNMUIsSUFBSTtzQkFBbEIsS0FBSzt1QkFBQyxNQUFNO2dCQUNHLEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvb3JkcyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9ncmFwaC5tb2RlbCc7XHJcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0ICogYXMgc3MgZnJvbSAnc2ltcGxlLXN0YXRpc3RpY3MnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZ3JhcGgnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmFwaC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JhcGguY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEdyYXBoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoKSB7XHJcbiAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5sb2FkR3JhcGgoTWF0aC5mbG9vcih3aW5kb3cuaW5uZXJXaWR0aC8yKSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoXCJkYXRhXCIpIGRhdGE6IEFycmF5PENvb3Jkcz4gPSBuZXcgQXJyYXk8Q29vcmRzPigpO1xyXG4gIEBJbnB1dChcInRpdGxlXCIpIHRpdGxlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICB0cmVuZENvbG9yOiBzdHJpbmcgPSAnI0VCMDEwMic7XHJcbiAgbWFpbkNvbG9yOiBzdHJpbmcgPSAnIzAwNmNhZCc7XHJcblxyXG4gIG06IG51bWJlcjsgLy8gbSBvZiB0aGUgbGluZWFyIHJlZ3Jlc3Npb25cclxuICBxOiBudW1iZXI7IC8vIHEgb2YgdGhlIGxpbmVhciByZWdyZXNzaW9uXHJcbiAgdHJlbmQ6IHN0cmluZzsgLy8gdHJlbmQgc3RyaW5nXHJcbiAgbGluZWFyUmVncmVzc2lvbjogQXJyYXk8Q29vcmRzPjsgLy8gdmFyaWFibGUgdXNlZCB0byBzdG9yZSB0aGUgbGluZWFyIHJlZ3Jlc3Npb24gcG9pbnRzIHRvIHBsb3RcclxuXHJcblxyXG5cclxuICBzdG9ja0NoYXJ0T3B0aW9uczogYW55O1xyXG5cclxuICBsb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjb3VudGVyOiBudW1iZXIgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlXHJcbiAgICApIHt9ICBcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIC8vIEFnZ2l1c3RhbWVudG8gZSBzY3JpdHR1cmEgZGF0aVxyXG4gICAgaWYgKHRoaXMuZGF0YS5sZW5ndGggPiAwKXtcclxuICAgICAgdGhpcy5sb2FkR3JhcGgoTWF0aC5mbG9vcih3aW5kb3cuaW5uZXJXaWR0aC8yKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkR3JhcGgod2lkdGg6IG51bWJlcil7XHJcblxyXG4gICAgdmFyIGxhc3R2YWx1ZSA9IHRoaXMuZGF0YVswXTtcclxuICAgIHZhciBmaXJzdHZhbHVlID0gdGhpcy5kYXRhW3RoaXMuZGF0YS5sZW5ndGgtMV07XHJcblxyXG4gICAgdmFyIHN0b2NrQ2hhcnRNaW5pbXVtID0gbmV3IERhdGUoZmlyc3R2YWx1ZS54KTtcclxuICAgIHZhciBzdG9ja0NoYXJ0TWF4aW11bSA9IG5ldyBEYXRlKGxhc3R2YWx1ZS54KTtcclxuICAgIHZhciBzdG9ja0NoYXJ0VGl0bGVUZXh0ID0gdGhpcy50aXRsZTtcclxuICAgIHZhciBzdG9ja0NoYXJ0ZGF0YVBvaW50cyA9IHRoaXMuZGF0YTtcclxuXHJcbiAgICB0aGlzLmxpbmVhclJlZ3Jlc3Npb24gPSBuZXcgQXJyYXk8Q29vcmRzPigpO1xyXG4gICAgdGhpcy50cmVuZCA9IFwiXCI7XHJcblxyXG4gICAgc3RvY2tDaGFydGRhdGFQb2ludHMucmV2ZXJzZSgpO1xyXG4gICAgaWYgKHN0b2NrQ2hhcnRkYXRhUG9pbnRzLmxlbmd0aCA+IDIpIHtcclxuICAgICAgbGV0IHggPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGk8c3RvY2tDaGFydGRhdGFQb2ludHMubGVuZ3RoOyBpICsrKSB7XHJcbiAgICAgICAgeC5wdXNoKFtpLCBzdG9ja0NoYXJ0ZGF0YVBvaW50c1tpXS55XSk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHBhcmFtZXRlcnMgPSBzcy5saW5lYXJSZWdyZXNzaW9uKHgpO1xyXG4gICAgICB0aGlzLm0gPSBwYXJhbWV0ZXJzLm07XHJcbiAgICAgIHRoaXMucSA9IHBhcmFtZXRlcnMuYjtcclxuICAgICAgaWYgKHRoaXMubSA+IDApIHtcclxuICAgICAgICAgIHRoaXMudHJlbmQgKz0gXCIg4oaXXCI7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm0gPCAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRyZW5kICs9IFwiIOKGmFwiO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKHgpO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhzdG9ja0NoYXJ0ZGF0YVBvaW50cyk7XHJcbiAgICAgIFxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaTxzdG9ja0NoYXJ0ZGF0YVBvaW50cy5sZW5ndGg7IGkgKyspIHtcclxuICAgICAgICBpZiAoaSA9PSAwIHx8IGkgPT0gc3RvY2tDaGFydGRhdGFQb2ludHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgdGhpcy5saW5lYXJSZWdyZXNzaW9uLnB1c2goe3g6IHN0b2NrQ2hhcnRkYXRhUG9pbnRzW2ldLngsXHJcbiAgICAgICAgICAgIHk6IHRoaXMubSppICsgdGhpcy5xLFxyXG4gICAgICAgICAgICBsYWJlbDogc3RvY2tDaGFydGRhdGFQb2ludHNbaV0ubGFiZWwsXHJcbiAgICAgICAgICAgIG5hbWU6IHN0b2NrQ2hhcnRkYXRhUG9pbnRzW2ldLm5hbWVcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vdGhpcy5saW5lYXJSZWdyZXNzaW9uLnJldmVyc2UoKTtcclxuICAgICAgLy8gY29uc29sZS5sb2codGhpcy5saW5lYXJSZWdyZXNzaW9uKTtcclxuICAgICAgLy8gY29uc29sZS5sb2codGhpcy5tKTtcclxuICAgICAgLy8gY29uc29sZS5sb2codGhpcy5xKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN0b2NrQ2hhcnRPcHRpb25zID0ge1xyXG4gICAgICB0aGVtZTogJ2xpZ2h0MicsXHJcbiAgICAgIGFuaW1hdGlvbkVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiB3aWR0aCxcclxuICAgICAgaGVpZ2h0OiA1MDAsXHJcbiAgICAgIGNyZWRpdFRleHQ6IFwiXCIsXHJcbiAgICAgIGNyZWRpdEhyZWY6IFwiXCIsXHJcbiAgICAgIHRpdGxlOiB7XHJcbiAgICAgICAgdGV4dDogc3RvY2tDaGFydFRpdGxlVGV4dFxyXG4gICAgICB9LFxyXG4gICAgICBjaGFydHM6IFt7XHJcbiAgICAgICAgYXhpc1g6IHtcclxuICAgICAgICAgIGxhYmVsRm9ybWF0dGVyOiB0aGlzLmxhYmVsRm9ybWF0dGVyRnVuY3Rpb24sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkYXRhOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRvb2xUaXBDb250ZW50OiBudWxsLFxyXG4gICAgICAgICAgICB0eXBlOiAnbGluZScsXHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLnRyZW5kQ29sb3IsXHJcbiAgICAgICAgICAgIHNob3dJbkxlZ2VuZDogdHJ1ZSxcclxuICAgICAgICAgICAgbGVnZW5kTWFya2VyVHlwZTogXCJub25lXCIsXHJcbiAgICAgICAgICAgIG1hcmtlclR5cGU6IFwibm9uZVwiLFxyXG4gICAgICAgICAgICBsZWdlbmRUZXh0OiBcIlRyZW5kXCIgKyB0aGlzLnRyZW5kLFxyXG4gICAgICAgICAgICBkYXRhUG9pbnRzOiB0aGlzLmxpbmVhclJlZ3Jlc3Npb25cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6IFwic3BsaW5lXCIsXHJcbiAgICAgICAgICAgIGRhdGFQb2ludHM6IHN0b2NrQ2hhcnRkYXRhUG9pbnRzLFxyXG4gICAgICAgICAgICBjb2xvcjogdGhpcy5tYWluQ29sb3IsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXSxcclxuICAgICAgICBjdWx0dXJlOiBcIml0XCJcclxuICAgICAgfV0sXHJcbiAgICAgIHJhbmdlU2VsZWN0b3I6IHtcclxuICAgICAgICBlbmFibGVkOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICBuYXZpZ2F0b3I6IHtcclxuICAgICAgICBzbGlkZXI6IHtcclxuICAgICAgICAgIG1pbmltdW06IHN0b2NrQ2hhcnRNaW5pbXVtLFxyXG4gICAgICAgICAgbWF4aW11bTogc3RvY2tDaGFydE1heGltdW1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICByZXNwb25zaXZlOiB0cnVlLFxyXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlXHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbGFiZWxGb3JtYXR0ZXJGdW5jdGlvbihlKSB7XHJcbiAgICBsZXQgbGFiZWwgPSBcIlwiO1xyXG4gICAgbGV0IGRpcnR5TGFiZWw7XHJcbiAgICBsZXQgZGF0ZSA9IGUudmFsdWU7XHJcblxyXG4gICAgICBsZXQgbmV3WWVhcjogbnVtYmVyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICBsZXQgbmV3TW9udGg6IG51bWJlciA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XHJcbiAgICAgIGxldCBuZXdNb250aFN0cmluZzogc3RyaW5nO1xyXG4gICAgICBpZiAobmV3TW9udGggPCAxMCkge1xyXG4gICAgICBuZXdNb250aFN0cmluZyA9IFwiMFwiICsgbmV3TW9udGgudG9TdHJpbmcoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgbmV3TW9udGhTdHJpbmcgPSBuZXdNb250aC50b1N0cmluZygpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBuZXdEYXk6IG51bWJlciA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG4gICAgICBsZXQgbmV3RGF5U3RyaW5nOiBzdHJpbmc7XHJcbiAgICAgIGlmIChuZXdEYXkgPCAxMCkge1xyXG4gICAgICBuZXdEYXlTdHJpbmcgPSBcIjBcIiArIG5ld0RheS50b1N0cmluZygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdEYXlTdHJpbmcgPSBuZXdEYXkudG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbmV3SG91cjogbnVtYmVyID0gZGF0ZS5nZXRIb3VycygpO1xyXG4gICAgICBsZXQgbmV3SG91clN0cmluZzogc3RyaW5nO1xyXG4gICAgICBpZiAobmV3SG91ciA8IDEwKSB7XHJcbiAgICAgIG5ld0hvdXJTdHJpbmcgPSBcIjBcIiArIG5ld0hvdXIudG9TdHJpbmcoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgbmV3SG91clN0cmluZyA9IG5ld0hvdXIudG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbmV3TWludXRlOiBudW1iZXIgPSBkYXRlLmdldE1pbnV0ZXMoKTtcclxuICAgICAgbGV0IG5ld01pbnV0ZVN0cmluZzogc3RyaW5nO1xyXG4gICAgICBpZiAobmV3TWludXRlIDwgMTApIHtcclxuICAgICAgbmV3TWludXRlU3RyaW5nID0gXCIwXCIgKyBuZXdNaW51dGUudG9TdHJpbmcoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgbmV3TWludXRlU3RyaW5nID0gbmV3TWludXRlLnRvU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGRpcnR5TGFiZWwgPSBuZXdEYXlTdHJpbmcgKyBcIi9cIiArIG5ld01vbnRoU3RyaW5nICsgXCIvXCIgKyBuZXdZZWFyLnRvU3RyaW5nKCkgKyBcIiBcIiArIG5ld0hvdXJTdHJpbmcgICsgXCI6XCIgKyBuZXdNaW51dGVTdHJpbmc7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xyXG4gICAgICAgIGxhYmVsICs9IGRpcnR5TGFiZWxbaV07XHJcbiAgICAgIH1cclxuICAgICAgbGFiZWwgKz0gXCIgXCI7XHJcbiAgICAgIGZvciAobGV0IGkgPSAxMTsgaSA8IDE2OyBpKyspIHtcclxuICAgICAgICBsYWJlbCArPSBkaXJ0eUxhYmVsW2ldO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvL2xhYmVsID0gbGFiZWwucmVwbGFjZShcIjAwOjAwXCIsXCJcIik7XHJcbiAgICBcclxuICAgIHJldHVybiBsYWJlbDtcclxuICB9ICBcclxuICBcclxuXHJcbn1cclxuIiwiPGNhbnZhc2pzLXN0b2NrY2hhcnQgKm5nSWY9XCJsb2FkZWRcIiBbb3B0aW9uc109XCJzdG9ja0NoYXJ0T3B0aW9uc1wiPjwvY2FudmFzanMtc3RvY2tjaGFydD5cclxuPGRpdiBjbGFzcz1cImVycm9yXCIgKm5nSWY9XCIhbG9hZGVkXCI+PGI+e3t0aXRsZX19OjwvYj4gTmVzc3VuIGRhdG8gdHJvdmF0byBuZWxsJ2ludGVydmFsbG8gc3BlY2lmaWNhdG8hPC9kaXY+Il19
@@ -123,12 +123,55 @@ export const CSS_EXTRA_PROPERTIES = [
123
123
  { prop: 'transform', label: 'Trasformazione', type: 'text', group: 'Effetti', placeholder: 'es. scale(1.05)' },
124
124
  ];
125
125
  export const CSS_ALL_PROPERTIES = CSS_CORE_PROPERTIES.concat(CSS_EXTRA_PROPERTIES);
126
+ /**
127
+ * Proprietà che hanno senso solo su alcuni elementi: non compaiono nelle liste generali,
128
+ * vengono aggiunte dai profili dei singoli elementi (vedi CssElementProfile).
129
+ */
130
+ export const CSS_ELEMENT_ONLY_PROPERTIES = [
131
+ { prop: 'top', label: 'Posizione verticale (top)', type: 'size', group: 'Spaziatura', min: -40, max: 60, step: 1, unit: 'px', defaultValue: 0, placeholder: 'predefinito 0px' },
132
+ ];
126
133
  export function getCssPropertyDef(prop) {
127
134
  const target = (prop || '').toLowerCase();
128
- return CSS_ALL_PROPERTIES.find((p) => p.prop === target) ?? null;
135
+ return CSS_ALL_PROPERTIES.find((p) => p.prop === target)
136
+ ?? CSS_ELEMENT_ONLY_PROPERTIES.find((p) => p.prop === target)
137
+ ?? null;
138
+ }
139
+ /** Proprietà di layout che non hanno effetto su etichetta e area del valore */
140
+ const LAYOUT_PROPERTIES = [
141
+ 'min-height',
142
+ 'gap',
143
+ 'display',
144
+ 'justify-content',
145
+ 'align-items',
146
+ 'cursor',
147
+ 'transition',
148
+ 'transform', // Trasformazione
149
+ ];
150
+ export const CSS_PROFILE_LABEL = {
151
+ hidden: LAYOUT_PROPERTIES.concat(['height']),
152
+ extra: ['top'],
153
+ };
154
+ export const CSS_PROFILE_VALUE = {
155
+ hidden: LAYOUT_PROPERTIES,
156
+ };
157
+ /** Label dentro la casella o sollevata sul bordo: solo le proprietà che cambiano fra i due casi */
158
+ export const CSS_PROFILE_FLOATING_LABEL = {
159
+ only: ['color', 'font-size', 'font-weight', 'background-color', 'padding', 'width', 'top'],
160
+ };
161
+ /** Proprietà da mostrare per un elemento, applicando l'eventuale profilo */
162
+ export function getCssPropertiesForProfile(profile, showAll) {
163
+ if (profile?.only) {
164
+ return profile.only.map((prop) => getCssPropertyDef(prop)).filter((d) => d != null);
165
+ }
166
+ const hidden = profile?.hidden ?? [];
167
+ const base = (showAll ? CSS_ALL_PROPERTIES : CSS_CORE_PROPERTIES).filter((p) => !hidden.includes(p.prop));
168
+ const extra = (profile?.extra ?? [])
169
+ .map((prop) => getCssPropertyDef(prop))
170
+ .filter((d) => d != null && !base.some((p) => p.prop === d.prop));
171
+ return base.concat(extra);
129
172
  }
130
173
  /** Definizione di ripiego per una proprietà scritta a mano e non catalogata */
131
174
  export function buildCustomCssPropertyDef(prop) {
132
175
  return { prop: (prop || '').toLowerCase(), label: prop, type: 'text', group: 'Personalizzate' };
133
176
  }
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLXByb3BlcnR5LWNhdGFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi91dGlscy9jc3MtcHJvcGVydHktY2F0YWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBcUJILHdFQUF3RTtBQUN4RSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBMEI7SUFDdEQsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7SUFDOUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ3ZFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7SUFDcEg7UUFDSSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPO1FBQzVFLE9BQU8sRUFBRTtZQUNMLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3JDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO1lBQ3JDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO1lBQ3hDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFB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QUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDckUsQ0FBQztBQUVELCtFQUErRTtBQUMvRSxNQUFNLFVBQVUseUJBQXlCLENBQUMsSUFBWTtJQUNsRCxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztBQUNwRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENhdGFsb2dvIGRlbGxlIHByb3ByaWV0w6AgQ1NTIG1vZGlmaWNhYmlsaSBkYWxsJ2VkaXRvciBncmFmaWNvIGRlaSBjYW1waS5cclxuICpcclxuICogT2duaSBwcm9wcmlldMOgIGRpY2hpYXJhIGNoZSB0aXBvIGRpIGNvbnRyb2xsbyBtb3N0cmFyZSAoY29sb3JlLCBtaXN1cmEgY29uIHNsaWRlcixcclxuICogZWxlbmNvIGRpIHZhbG9yaSwgdGVzdG8gbGliZXJvKS4gTGUgcHJvcHJpZXTDoCBub24gcHJlc2VudGkgaW4gcXVlc3RvIGNhdGFsb2dvIHJlc3Rhbm9cclxuICogY29tdW5xdWUgbW9kaWZpY2FiaWxpIGEgbWFubyBkYWxsZSBjYXNlbGxlIENTUyBkZWwgZGlhbG9nIGRpIG1vZGlmaWNhIGNhbXBvIGUgbm9uXHJcbiAqIHZlbmdvbm8gbWFpIHBlcnNlIGRhbGwnZWRpdG9yLlxyXG4gKi9cclxuXHJcbmV4cG9ydCB0eXBlIENzc0NvbnRyb2xUeXBlID0gJ2NvbG9yJyB8ICdzaXplJyB8ICdzZWxlY3QnIHwgJ3RleHQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDc3NQcm9wZXJ0eURlZiB7XHJcbiAgICAvKiogTm9tZSBkZWxsYSBwcm9wcmlldMOgIENTUywgbWludXNjb2xvIChlcy4gXCJiYWNrZ3JvdW5kLWNvbG9yXCIpICovXHJcbiAgICBwcm9wOiBzdHJpbmc7XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgdHlwZTogQ3NzQ29udHJvbFR5cGU7XHJcbiAgICAvKiogR3J1cHBvIGRpIGFwcGFydGVuZW56YSwgdXNhdG8gcGVyIHJhZ2dydXBwYXJlIGxlIHJpZ2hlIGEgdmlkZW8gKi9cclxuICAgIGdyb3VwOiBzdHJpbmc7XHJcbiAgICAvKiogU29sbyBwZXIgdHlwZSAnc2l6ZScgKi9cclxuICAgIG1pbj86IG51bWJlcjtcclxuICAgIG1heD86IG51bWJlcjtcclxuICAgIHN0ZXA/OiBudW1iZXI7XHJcbiAgICB1bml0Pzogc3RyaW5nO1xyXG4gICAgLyoqIFNvbG8gcGVyIHR5cGUgJ3NlbGVjdCcgKi9cclxuICAgIG9wdGlvbnM/OiBBcnJheTx7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfT47XHJcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxufVxyXG5cclxuLyoqIFByb3ByaWV0w6AgbW9zdHJhdGUgc2VtcHJlOiBjb3Byb25vIGlsIDkwJSBkZWxsZSBwZXJzb25hbGl6emF6aW9uaSAqL1xyXG5leHBvcnQgY29uc3QgQ1NTX0NPUkVfUFJPUEVSVElFUzogQXJyYXk8Q3NzUHJvcGVydHlEZWY+ID0gW1xyXG4gICAgeyBwcm9wOiAnYmFja2dyb3VuZC1jb2xvcicsIGxhYmVsOiAnU2ZvbmRvJywgdHlwZTogJ2NvbG9yJywgZ3JvdXA6ICdBc3BldHRvJyB9LFxyXG4gICAgeyBwcm9wOiAnY29sb3InLCBsYWJlbDogJ0NvbG9yZSB0ZXN0bycsIHR5cGU6ICdjb2xvcicsIGdyb3VwOiAnVGVzdG8nIH0sXHJcbiAgICB7IHByb3A6ICdmb250LXNpemUnLCBsYWJlbDogJ0RpbWVuc2lvbmUgdGVzdG8nLCB0eXBlOiAnc2l6ZScsIGdyb3VwOiAnVGVzdG8nLCBtaW46IDgsIG1heDogNDgsIHN0ZXA6IDEsIHVuaXQ6ICdweCcgfSxcclxuICAgIHtcclxuICAgICAgICBwcm9wOiAnZm9udC13ZWlnaHQnLCBsYWJlbDogJ1NwZXNzb3JlIHRlc3RvJywgdHlwZTogJ3NlbGVjdCcsIGdyb3VwOiAnVGVzdG8nLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ25vcm1hbCcsIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2JvbGQnLCBsYWJlbDogJ0dyYXNzZXR0bycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJzMwMCcsIGxhYmVsOiAnTGVnZ2VybyAoMzAwKScgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJzUwMCcsIGxhYmVsOiAnTWVkaW8gKDUwMCknIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICc2MDAnLCBsYWJlbDogJ1NlbWktZ3Jhc3NldHRvICg2MDApJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnODAwJywgbGFiZWw6ICdFeHRyYSAoODAwKScgfSxcclxuICAgICAgICBdLFxyXG4gICAgfSxcclxuICAgIHsgcHJvcDogJ2JvcmRlci1yYWRpdXMnLCBsYWJlbDogJ0FuZ29saSBhcnJvdG9uZGF0aScsIHR5cGU6ICdzaXplJywgZ3JvdXA6ICdCb3JkbycsIG1pbjogMCwgbWF4OiA0MCwgc3RlcDogMSwgdW5pdDogJ3B4JyB9LFxyXG4gICAgeyBwcm9wOiAnYm9yZGVyLXdpZHRoJywgbGFiZWw6ICdTcGVzc29yZSBib3JkbycsIHR5cGU6ICdzaXplJywgZ3JvdXA6ICdCb3JkbycsIG1pbjogMCwgbWF4OiAxMiwgc3RlcDogMSwgdW5pdDogJ3B4JyB9LFxyXG4gICAgeyBwcm9wOiAnYm9yZGVyLWNvbG9yJywgbGFiZWw6ICdDb2xvcmUgYm9yZG8nLCB0eXBlOiAnY29sb3InLCBncm91cDogJ0JvcmRvJyB9LFxyXG4gICAge1xyXG4gICAgICAgIHByb3A6ICdib3JkZXItc3R5bGUnLCBsYWJlbDogJ1RpcG8gYm9yZG8nLCB0eXBlOiAnc2VsZWN0JywgZ3JvdXA6ICdCb3JkbycsXHJcbiAgICAgICAgb3B0aW9uczogW1xyXG4gICAgICAgICAgICB7IHZhbHVlOiAnbm9uZScsIGxhYmVsOiAnTmVzc3VubycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ3NvbGlkJywgbGFiZWw6ICdDb250aW51bycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2Rhc2hlZCcsIGxhYmVsOiAnVHJhdHRlZ2dpYXRvJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnZG90dGVkJywgbGFiZWw6ICdQdW50aW5hdG8nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdkb3VibGUnLCBsYWJlbDogJ0RvcHBpbycgfSxcclxuICAgICAgICBdLFxyXG4gICAgfSxcclxuICAgIHsgcHJvcDogJ3BhZGRpbmcnLCBsYWJlbDogJ1NwYXppYXR1cmEgaW50ZXJuYScsIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdTcGF6aWF0dXJhJywgcGxhY2Vob2xkZXI6ICdlcy4gOHB4IDEycHgnIH0sXHJcbl07XHJcblxyXG4vKiogUHJvcHJpZXTDoCBhZ2dpdW50aXZlLCBtb3N0cmF0ZSBzb2xvIGFwcmVuZG8gXCJBbHRyZSBwcm9wcmlldMOgXCIgKi9cclxuZXhwb3J0IGNvbnN0IENTU19FWFRSQV9QUk9QRVJUSUVTOiBBcnJheTxDc3NQcm9wZXJ0eURlZj4gPSBbXHJcbiAgICB7IHByb3A6ICdvcGFjaXR5JywgbGFiZWw6ICdPcGFjaXTDoCcsIHR5cGU6ICdzaXplJywgZ3JvdXA6ICdBc3BldHRvJywgbWluOiAwLCBtYXg6IDEsIHN0ZXA6IDAuMDUsIHVuaXQ6ICcnIH0sXHJcbiAgICB7IHByb3A6ICdiYWNrZ3JvdW5kJywgbGFiZWw6ICdTZm9uZG8gYXZhbnphdG8nLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnQXNwZXR0bycsIHBsYWNlaG9sZGVyOiAnZXMuIGxpbmVhci1ncmFkaWVudCguLi4pJyB9LFxyXG4gICAgeyBwcm9wOiAnYm94LXNoYWRvdycsIGxhYmVsOiAnT21icmEnLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnQXNwZXR0bycsIHBsYWNlaG9sZGVyOiAnZXMuIDAgMnB4IDZweCByZ2JhKDAsMCwwLC4yKScgfSxcclxuICAgIHtcclxuICAgICAgICBwcm9wOiAndGV4dC1hbGlnbicsIGxhYmVsOiAnQWxsaW5lYW1lbnRvIHRlc3RvJywgdHlwZTogJ3NlbGVjdCcsIGdyb3VwOiAnVGVzdG8nLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2xlZnQnLCBsYWJlbDogJ1NpbmlzdHJhJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnY2VudGVyJywgbGFiZWw6ICdDZW50cm8nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdyaWdodCcsIGxhYmVsOiAnRGVzdHJhJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnanVzdGlmeScsIGxhYmVsOiAnR2l1c3RpZmljYXRvJyB9LFxyXG4gICAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHByb3A6ICd0ZXh0LXRyYW5zZm9ybScsIGxhYmVsOiAnTWFpdXNjb2xlL21pbnVzY29sZScsIHR5cGU6ICdzZWxlY3QnLCBncm91cDogJ1Rlc3RvJyxcclxuICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdub25lJywgbGFiZWw6ICdDb21lIHNjcml0dG8nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICd1cHBlcmNhc2UnLCBsYWJlbDogJ1RVVFRPIE1BSVVTQ09MTycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2xvd2VyY2FzZScsIGxhYmVsOiAndHV0dG8gbWludXNjb2xvJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnY2FwaXRhbGl6ZScsIGxhYmVsOiAnSW5pemlhbGkgTWFpdXNjb2xlJyB9LFxyXG4gICAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHByb3A6ICdmb250LXN0eWxlJywgbGFiZWw6ICdDb3JzaXZvJywgdHlwZTogJ3NlbGVjdCcsIGdyb3VwOiAnVGVzdG8nLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ25vcm1hbCcsIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2l0YWxpYycsIGxhYmVsOiAnQ29yc2l2bycgfSxcclxuICAgICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwcm9wOiAndGV4dC1kZWNvcmF0aW9uJywgbGFiZWw6ICdEZWNvcmF6aW9uZSB0ZXN0bycsIHR5cGU6ICdzZWxlY3QnLCBncm91cDogJ1Rlc3RvJyxcclxuICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdub25lJywgbGFiZWw6ICdOZXNzdW5hJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAndW5kZXJsaW5lJywgbGFiZWw6ICdTb3R0b2xpbmVhdG8nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdsaW5lLXRocm91Z2gnLCBsYWJlbDogJ0JhcnJhdG8nIH0sXHJcbiAgICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7IHByb3A6ICdmb250LWZhbWlseScsIGxhYmVsOiAnRm9udCcsIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdUZXN0bycsIHBsYWNlaG9sZGVyOiAnZXMuIFJvYm90bywgc2Fucy1zZXJpZicgfSxcclxuICAgIHsgcHJvcDogJ2xldHRlci1zcGFjaW5nJywgbGFiZWw6ICdTcGF6aWF0dXJhIGxldHRlcmUnLCB0eXBlOiAnc2l6ZScsIGdyb3VwOiAnVGVzdG8nLCBtaW46IC0yLCBtYXg6IDEwLCBzdGVwOiAwLjUsIHVuaXQ6ICdweCcgfSxcclxuICAgIHsgcHJvcDogJ2xpbmUtaGVpZ2h0JywgbGFiZWw6ICdJbnRlcmxpbmVhJywgdHlwZTogJ3NpemUnLCBncm91cDogJ1Rlc3RvJywgbWluOiAwLjgsIG1heDogMywgc3RlcDogMC4xLCB1bml0OiAnJyB9LFxyXG4gICAgeyBwcm9wOiAnbWFyZ2luJywgbGFiZWw6ICdTcGF6aWF0dXJhIGVzdGVybmEnLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnU3BhemlhdHVyYScsIHBsYWNlaG9sZGVyOiAnZXMuIDAgMCA4cHggMCcgfSxcclxuICAgIHsgcHJvcDogJ3dpZHRoJywgbGFiZWw6ICdMYXJnaGV6emEnLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnU3BhemlhdHVyYScsIHBsYWNlaG9sZGVyOiAnZXMuIDEwMCUnIH0sXHJcbiAgICB7IHByb3A6ICdoZWlnaHQnLCBsYWJlbDogJ0FsdGV6emEnLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnU3BhemlhdHVyYScsIHBsYWNlaG9sZGVyOiAnZXMuIDQwcHgnIH0sXHJcbiAgICB7IHByb3A6ICdtaW4taGVpZ2h0JywgbGFiZWw6ICdBbHRlenphIG1pbmltYScsIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdTcGF6aWF0dXJhJywgcGxhY2Vob2xkZXI6ICdlcy4gNDBweCcgfSxcclxuICAgIHsgcHJvcDogJ2dhcCcsIGxhYmVsOiAnRGlzdGFuemEgdHJhIGVsZW1lbnRpJywgdHlwZTogJ3NpemUnLCBncm91cDogJ0xheW91dCcsIG1pbjogMCwgbWF4OiA0MCwgc3RlcDogMSwgdW5pdDogJ3B4JyB9LFxyXG4gICAge1xyXG4gICAgICAgIHByb3A6ICdkaXNwbGF5JywgbGFiZWw6ICdWaXN1YWxpenphemlvbmUnLCB0eXBlOiAnc2VsZWN0JywgZ3JvdXA6ICdMYXlvdXQnLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2Jsb2NrJywgbGFiZWw6ICdCbG9jY28nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdpbmxpbmUtYmxvY2snLCBsYWJlbDogJ0Jsb2NjbyBpbiBsaW5lYScgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2ZsZXgnLCBsYWJlbDogJ0ZsZXgnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdub25lJywgbGFiZWw6ICdOYXNjb3N0bycgfSxcclxuICAgICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwcm9wOiAnanVzdGlmeS1jb250ZW50JywgbGFiZWw6ICdBbGxpbmVhbWVudG8gb3JpenpvbnRhbGUnLCB0eXBlOiAnc2VsZWN0JywgZ3JvdXA6ICdMYXlvdXQnLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2ZsZXgtc3RhcnQnLCBsYWJlbDogJ0luaXppbycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2NlbnRlcicsIGxhYmVsOiAnQ2VudHJvJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnZmxleC1lbmQnLCBsYWJlbDogJ0ZpbmUnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdzcGFjZS1iZXR3ZWVuJywgbGFiZWw6ICdEaXN0cmlidWl0bycgfSxcclxuICAgICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwcm9wOiAnYWxpZ24taXRlbXMnLCBsYWJlbDogJ0FsbGluZWFtZW50byB2ZXJ0aWNhbGUnLCB0eXBlOiAnc2VsZWN0JywgZ3JvdXA6ICdMYXlvdXQnLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2ZsZXgtc3RhcnQnLCBsYWJlbDogJ0FsdG8nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdjZW50ZXInLCBsYWJlbDogJ0NlbnRybycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2ZsZXgtZW5kJywgbGFiZWw6ICdCYXNzbycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ3N0cmV0Y2gnLCBsYWJlbDogJ0VzdGVuZGknIH0sXHJcbiAgICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcHJvcDogJ2N1cnNvcicsIGxhYmVsOiAnUHVudGF0b3JlJywgdHlwZTogJ3NlbGVjdCcsIGdyb3VwOiAnTGF5b3V0JyxcclxuICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdkZWZhdWx0JywgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAncG9pbnRlcicsIGxhYmVsOiAnTWFubycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ25vdC1hbGxvd2VkJywgbGFiZWw6ICdWaWV0YXRvJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAndGV4dCcsIGxhYmVsOiAnVGVzdG8nIH0sXHJcbiAgICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7IHByb3A6ICd0cmFuc2l0aW9uJywgbGFiZWw6ICdUcmFuc2l6aW9uZScsIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdFZmZldHRpJywgcGxhY2Vob2xkZXI6ICdlcy4gYWxsIC4ycyBlYXNlJyB9LFxyXG4gICAgeyBwcm9wOiAndHJhbnNmb3JtJywgbGFiZWw6ICdUcmFzZm9ybWF6aW9uZScsIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdFZmZldHRpJywgcGxhY2Vob2xkZXI6ICdlcy4gc2NhbGUoMS4wNSknIH0sXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgQ1NTX0FMTF9QUk9QRVJUSUVTOiBBcnJheTxDc3NQcm9wZXJ0eURlZj4gPSBDU1NfQ09SRV9QUk9QRVJUSUVTLmNvbmNhdChDU1NfRVhUUkFfUFJPUEVSVElFUyk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3NzUHJvcGVydHlEZWYocHJvcDogc3RyaW5nKTogQ3NzUHJvcGVydHlEZWYgfCBudWxsIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IChwcm9wIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgcmV0dXJuIENTU19BTExfUFJPUEVSVElFUy5maW5kKChwKSA9PiBwLnByb3AgPT09IHRhcmdldCkgPz8gbnVsbDtcclxufVxyXG5cclxuLyoqIERlZmluaXppb25lIGRpIHJpcGllZ28gcGVyIHVuYSBwcm9wcmlldMOgIHNjcml0dGEgYSBtYW5vIGUgbm9uIGNhdGFsb2dhdGEgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQ3VzdG9tQ3NzUHJvcGVydHlEZWYocHJvcDogc3RyaW5nKTogQ3NzUHJvcGVydHlEZWYge1xyXG4gICAgcmV0dXJuIHsgcHJvcDogKHByb3AgfHwgJycpLnRvTG93ZXJDYXNlKCksIGxhYmVsOiBwcm9wLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnUGVyc29uYWxpenphdGUnIH07XHJcbn1cclxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLXByb3BlcnR5LWNhdGFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi91dGlscy9jc3MtcHJvcGVydHktY2F0YWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBdUJILHdFQUF3RTtBQUN4RSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBMEI7SUFDdEQsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7SUFDOUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ3ZFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7SUFDcEg7UUFDSSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPO1FBQzVFLE9BQU8sRUFBRTtZQUNMLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3JDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO1lBQ3JDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO1lBQ3hDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO1lBQ3RDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUU7WUFDL0MsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7U0FDekM7S0FDSjtJQUNELEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7SUFDMUgsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtJQUNySCxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDOUU7UUFDSSxJQUFJLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTztRQUN6RSxPQUFPLEVBQUU7WUFDTCxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUNuQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtZQUNyQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRTtZQUMxQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtZQUN2QyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtTQUN2QztLQUNKO0lBQ0QsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRTtDQUNuSCxDQUFDO0FBRUYsb0VBQW9FO0FBQ3BFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUEwQjtJQUN2RCxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtJQUMzRyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsMEJBQTBCLEVBQUU7SUFDekgsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSw4QkFBOEIsRUFBRTtJQUNuSDtRQUNJLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU87UUFDL0UsT0FBTyxFQUFFO1lBQ0wsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDcEMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDcEMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDbkMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUU7U0FDOUM7S0FDSjtJQUNEO1FBQ0ksSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPO1FBQ3BGLE9BQU8sRUFBRTtZQUNMLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO1lBQ3hDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7WUFDaEQsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRTtZQUNoRCxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFO1NBQ3ZEO0tBQ0o7SUFDRDtRQUNJLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPO1FBQ3BFLE9BQU8sRUFBRTtZQUNMLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3JDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1NBQ3hDO0tBQ0o7SUFDRDtRQUNJLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTztRQUNuRixPQUFPLEVBQUU7WUFDTCxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUNuQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRTtZQUM3QyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtTQUM5QztLQUNKO0lBQ0QsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSx3QkFBd0IsRUFBRTtJQUMzRyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtJQUM5SCxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtJQUNqSCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFO0lBQ2hILEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFO0lBQ2pHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFO0lBQ2hHLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUU7SUFDM0csRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtJQUNwSDtRQUNJLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVE7UUFDMUUsT0FBTyxFQUFFO1lBQ0wsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDbkMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRTtZQUNuRCxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUNoQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtTQUN2QztLQUNKO0lBQ0Q7UUFDSSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLDBCQUEwQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVE7UUFDM0YsT0FBTyxFQUFFO1lBQ0wsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDeEMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDcEMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDcEMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7U0FDbkQ7S0FDSjtJQUNEO1FBQ0ksSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUTtRQUNyRixPQUFPLEVBQUU7WUFDTCxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUN0QyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtZQUNwQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUNyQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtTQUN6QztLQUNKO0lBQ0Q7UUFDSSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUTtRQUNuRSxPQUFPLEVBQUU7WUFDTCxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUN0QyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUNuQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUMxQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtTQUNwQztLQUNKO0lBQ0QsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRTtJQUM3RyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUU7Q0FDakgsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUEwQixtQkFBbUIsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUUxRzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBMEI7SUFDOUQsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSwyQkFBMkIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFO0NBQ2xMLENBQUM7QUFFRixNQUFNLFVBQVUsaUJBQWlCLENBQUMsSUFBWTtJQUMxQyxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxQyxPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUM7V0FDakQsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztXQUMxRCxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQWVELCtFQUErRTtBQUMvRSxNQUFNLGlCQUFpQixHQUFrQjtJQUNyQyxZQUFZO0lBQ1osS0FBSztJQUNMLFNBQVM7SUFDVCxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFFBQVE7SUFDUixZQUFZO0lBQ1osV0FBVyxFQUFTLGlCQUFpQjtDQUN4QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQXNCO0lBQ2hELE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUM7Q0FDakIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFzQjtJQUNoRCxNQUFNLEVBQUUsaUJBQWlCO0NBQzVCLENBQUM7QUFFRixtR0FBbUc7QUFDbkcsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQXNCO0lBQ3pELElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDO0NBQzdGLENBQUM7QUFFRiw0RUFBNEU7QUFDNUUsTUFBTSxVQUFVLDBCQUEwQixDQUFDLE9BQXNDLEVBQUUsT0FBZ0I7SUFDL0YsSUFBSSxPQUFPLEVBQUUsSUFBSSxFQUFFO1FBQ2YsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQXVCLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7S0FDNUc7SUFFRCxNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUcsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztTQUMvQixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBdUIsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRTNGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsK0VBQStFO0FBQy9FLE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxJQUFZO0lBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0FBQ3BHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQ2F0YWxvZ28gZGVsbGUgcHJvcHJpZXTDoCBDU1MgbW9kaWZpY2FiaWxpIGRhbGwnZWRpdG9yIGdyYWZpY28gZGVpIGNhbXBpLlxyXG4gKlxyXG4gKiBPZ25pIHByb3ByaWV0w6AgZGljaGlhcmEgY2hlIHRpcG8gZGkgY29udHJvbGxvIG1vc3RyYXJlIChjb2xvcmUsIG1pc3VyYSBjb24gc2xpZGVyLFxyXG4gKiBlbGVuY28gZGkgdmFsb3JpLCB0ZXN0byBsaWJlcm8pLiBMZSBwcm9wcmlldMOgIG5vbiBwcmVzZW50aSBpbiBxdWVzdG8gY2F0YWxvZ28gcmVzdGFub1xyXG4gKiBjb211bnF1ZSBtb2RpZmljYWJpbGkgYSBtYW5vIGRhbGxlIGNhc2VsbGUgQ1NTIGRlbCBkaWFsb2cgZGkgbW9kaWZpY2EgY2FtcG8gZSBub25cclxuICogdmVuZ29ubyBtYWkgcGVyc2UgZGFsbCdlZGl0b3IuXHJcbiAqL1xyXG5cclxuZXhwb3J0IHR5cGUgQ3NzQ29udHJvbFR5cGUgPSAnY29sb3InIHwgJ3NpemUnIHwgJ3NlbGVjdCcgfCAndGV4dCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENzc1Byb3BlcnR5RGVmIHtcclxuICAgIC8qKiBOb21lIGRlbGxhIHByb3ByaWV0w6AgQ1NTLCBtaW51c2NvbG8gKGVzLiBcImJhY2tncm91bmQtY29sb3JcIikgKi9cclxuICAgIHByb3A6IHN0cmluZztcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICB0eXBlOiBDc3NDb250cm9sVHlwZTtcclxuICAgIC8qKiBHcnVwcG8gZGkgYXBwYXJ0ZW5lbnphLCB1c2F0byBwZXIgcmFnZ3J1cHBhcmUgbGUgcmlnaGUgYSB2aWRlbyAqL1xyXG4gICAgZ3JvdXA6IHN0cmluZztcclxuICAgIC8qKiBTb2xvIHBlciB0eXBlICdzaXplJyAqL1xyXG4gICAgbWluPzogbnVtYmVyO1xyXG4gICAgbWF4PzogbnVtYmVyO1xyXG4gICAgc3RlcD86IG51bWJlcjtcclxuICAgIHVuaXQ/OiBzdHJpbmc7XHJcbiAgICAvKiogU29sbyBwZXIgdHlwZSAnc2l6ZSc6IHBvc2l6aW9uZSBpbml6aWFsZSBkZWxsbyBzbGlkZXIgcXVhbmRvIGxhIHByb3ByaWV0w6Agbm9uIMOoIGltcG9zdGF0YSAqL1xyXG4gICAgZGVmYXVsdFZhbHVlPzogbnVtYmVyO1xyXG4gICAgLyoqIFNvbG8gcGVyIHR5cGUgJ3NlbGVjdCcgKi9cclxuICAgIG9wdGlvbnM/OiBBcnJheTx7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfT47XHJcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxufVxyXG5cclxuLyoqIFByb3ByaWV0w6AgbW9zdHJhdGUgc2VtcHJlOiBjb3Byb25vIGlsIDkwJSBkZWxsZSBwZXJzb25hbGl6emF6aW9uaSAqL1xyXG5leHBvcnQgY29uc3QgQ1NTX0NPUkVfUFJPUEVSVElFUzogQXJyYXk8Q3NzUHJvcGVydHlEZWY+ID0gW1xyXG4gICAgeyBwcm9wOiAnYmFja2dyb3VuZC1jb2xvcicsIGxhYmVsOiAnU2ZvbmRvJywgdHlwZTogJ2NvbG9yJywgZ3JvdXA6ICdBc3BldHRvJyB9LFxyXG4gICAgeyBwcm9wOiAnY29sb3InLCBsYWJlbDogJ0NvbG9yZSB0ZXN0bycsIHR5cGU6ICdjb2xvcicsIGdyb3VwOiAnVGVzdG8nIH0sXHJcbiAgICB7IHByb3A6ICdmb250LXNpemUnLCBsYWJlbDogJ0RpbWVuc2lvbmUgdGVzdG8nLCB0eXBlOiAnc2l6ZScsIGdyb3VwOiAnVGVzdG8nLCBtaW46IDgsIG1heDogNDgsIHN0ZXA6IDEsIHVuaXQ6ICdweCcgfSxcclxuICAgIHtcclxuICAgICAgICBwcm9wOiAnZm9udC13ZWlnaHQnLCBsYWJlbDogJ1NwZXNzb3JlIHRlc3RvJywgdHlwZTogJ3NlbGVjdCcsIGdyb3VwOiAnVGVzdG8nLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ25vcm1hbCcsIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2JvbGQnLCBsYWJlbDogJ0dyYXNzZXR0bycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJzMwMCcsIGxhYmVsOiAnTGVnZ2VybyAoMzAwKScgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJzUwMCcsIGxhYmVsOiAnTWVkaW8gKDUwMCknIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICc2MDAnLCBsYWJlbDogJ1NlbWktZ3Jhc3NldHRvICg2MDApJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnODAwJywgbGFiZWw6ICdFeHRyYSAoODAwKScgfSxcclxuICAgICAgICBdLFxyXG4gICAgfSxcclxuICAgIHsgcHJvcDogJ2JvcmRlci1yYWRpdXMnLCBsYWJlbDogJ0FuZ29saSBhcnJvdG9uZGF0aScsIHR5cGU6ICdzaXplJywgZ3JvdXA6ICdCb3JkbycsIG1pbjogMCwgbWF4OiA0MCwgc3RlcDogMSwgdW5pdDogJ3B4JyB9LFxyXG4gICAgeyBwcm9wOiAnYm9yZGVyLXdpZHRoJywgbGFiZWw6ICdTcGVzc29yZSBib3JkbycsIHR5cGU6ICdzaXplJywgZ3JvdXA6ICdCb3JkbycsIG1pbjogMCwgbWF4OiAxMiwgc3RlcDogMSwgdW5pdDogJ3B4JyB9LFxyXG4gICAgeyBwcm9wOiAnYm9yZGVyLWNvbG9yJywgbGFiZWw6ICdDb2xvcmUgYm9yZG8nLCB0eXBlOiAnY29sb3InLCBncm91cDogJ0JvcmRvJyB9LFxyXG4gICAge1xyXG4gICAgICAgIHByb3A6ICdib3JkZXItc3R5bGUnLCBsYWJlbDogJ1RpcG8gYm9yZG8nLCB0eXBlOiAnc2VsZWN0JywgZ3JvdXA6ICdCb3JkbycsXHJcbiAgICAgICAgb3B0aW9uczogW1xyXG4gICAgICAgICAgICB7IHZhbHVlOiAnbm9uZScsIGxhYmVsOiAnTmVzc3VubycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ3NvbGlkJywgbGFiZWw6ICdDb250aW51bycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2Rhc2hlZCcsIGxhYmVsOiAnVHJhdHRlZ2dpYXRvJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnZG90dGVkJywgbGFiZWw6ICdQdW50aW5hdG8nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdkb3VibGUnLCBsYWJlbDogJ0RvcHBpbycgfSxcclxuICAgICAgICBdLFxyXG4gICAgfSxcclxuICAgIHsgcHJvcDogJ3BhZGRpbmcnLCBsYWJlbDogJ1NwYXppYXR1cmEgaW50ZXJuYScsIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdTcGF6aWF0dXJhJywgcGxhY2Vob2xkZXI6ICdlcy4gOHB4IDEycHgnIH0sXHJcbl07XHJcblxyXG4vKiogUHJvcHJpZXTDoCBhZ2dpdW50aXZlLCBtb3N0cmF0ZSBzb2xvIGFwcmVuZG8gXCJBbHRyZSBwcm9wcmlldMOgXCIgKi9cclxuZXhwb3J0IGNvbnN0IENTU19FWFRSQV9QUk9QRVJUSUVTOiBBcnJheTxDc3NQcm9wZXJ0eURlZj4gPSBbXHJcbiAgICB7IHByb3A6ICdvcGFjaXR5JywgbGFiZWw6ICdPcGFjaXTDoCcsIHR5cGU6ICdzaXplJywgZ3JvdXA6ICdBc3BldHRvJywgbWluOiAwLCBtYXg6IDEsIHN0ZXA6IDAuMDUsIHVuaXQ6ICcnIH0sXHJcbiAgICB7IHByb3A6ICdiYWNrZ3JvdW5kJywgbGFiZWw6ICdTZm9uZG8gYXZhbnphdG8nLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnQXNwZXR0bycsIHBsYWNlaG9sZGVyOiAnZXMuIGxpbmVhci1ncmFkaWVudCguLi4pJyB9LFxyXG4gICAgeyBwcm9wOiAnYm94LXNoYWRvdycsIGxhYmVsOiAnT21icmEnLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnQXNwZXR0bycsIHBsYWNlaG9sZGVyOiAnZXMuIDAgMnB4IDZweCByZ2JhKDAsMCwwLC4yKScgfSxcclxuICAgIHtcclxuICAgICAgICBwcm9wOiAndGV4dC1hbGlnbicsIGxhYmVsOiAnQWxsaW5lYW1lbnRvIHRlc3RvJywgdHlwZTogJ3NlbGVjdCcsIGdyb3VwOiAnVGVzdG8nLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2xlZnQnLCBsYWJlbDogJ1NpbmlzdHJhJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnY2VudGVyJywgbGFiZWw6ICdDZW50cm8nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdyaWdodCcsIGxhYmVsOiAnRGVzdHJhJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnanVzdGlmeScsIGxhYmVsOiAnR2l1c3RpZmljYXRvJyB9LFxyXG4gICAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHByb3A6ICd0ZXh0LXRyYW5zZm9ybScsIGxhYmVsOiAnTWFpdXNjb2xlL21pbnVzY29sZScsIHR5cGU6ICdzZWxlY3QnLCBncm91cDogJ1Rlc3RvJyxcclxuICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdub25lJywgbGFiZWw6ICdDb21lIHNjcml0dG8nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICd1cHBlcmNhc2UnLCBsYWJlbDogJ1RVVFRPIE1BSVVTQ09MTycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2xvd2VyY2FzZScsIGxhYmVsOiAndHV0dG8gbWludXNjb2xvJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnY2FwaXRhbGl6ZScsIGxhYmVsOiAnSW5pemlhbGkgTWFpdXNjb2xlJyB9LFxyXG4gICAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHByb3A6ICdmb250LXN0eWxlJywgbGFiZWw6ICdDb3JzaXZvJywgdHlwZTogJ3NlbGVjdCcsIGdyb3VwOiAnVGVzdG8nLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ25vcm1hbCcsIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2l0YWxpYycsIGxhYmVsOiAnQ29yc2l2bycgfSxcclxuICAgICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwcm9wOiAndGV4dC1kZWNvcmF0aW9uJywgbGFiZWw6ICdEZWNvcmF6aW9uZSB0ZXN0bycsIHR5cGU6ICdzZWxlY3QnLCBncm91cDogJ1Rlc3RvJyxcclxuICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdub25lJywgbGFiZWw6ICdOZXNzdW5hJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAndW5kZXJsaW5lJywgbGFiZWw6ICdTb3R0b2xpbmVhdG8nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdsaW5lLXRocm91Z2gnLCBsYWJlbDogJ0JhcnJhdG8nIH0sXHJcbiAgICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7IHByb3A6ICdmb250LWZhbWlseScsIGxhYmVsOiAnRm9udCcsIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdUZXN0bycsIHBsYWNlaG9sZGVyOiAnZXMuIFJvYm90bywgc2Fucy1zZXJpZicgfSxcclxuICAgIHsgcHJvcDogJ2xldHRlci1zcGFjaW5nJywgbGFiZWw6ICdTcGF6aWF0dXJhIGxldHRlcmUnLCB0eXBlOiAnc2l6ZScsIGdyb3VwOiAnVGVzdG8nLCBtaW46IC0yLCBtYXg6IDEwLCBzdGVwOiAwLjUsIHVuaXQ6ICdweCcgfSxcclxuICAgIHsgcHJvcDogJ2xpbmUtaGVpZ2h0JywgbGFiZWw6ICdJbnRlcmxpbmVhJywgdHlwZTogJ3NpemUnLCBncm91cDogJ1Rlc3RvJywgbWluOiAwLjgsIG1heDogMywgc3RlcDogMC4xLCB1bml0OiAnJyB9LFxyXG4gICAgeyBwcm9wOiAnbWFyZ2luJywgbGFiZWw6ICdTcGF6aWF0dXJhIGVzdGVybmEnLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnU3BhemlhdHVyYScsIHBsYWNlaG9sZGVyOiAnZXMuIDAgMCA4cHggMCcgfSxcclxuICAgIHsgcHJvcDogJ3dpZHRoJywgbGFiZWw6ICdMYXJnaGV6emEnLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnU3BhemlhdHVyYScsIHBsYWNlaG9sZGVyOiAnZXMuIDEwMCUnIH0sXHJcbiAgICB7IHByb3A6ICdoZWlnaHQnLCBsYWJlbDogJ0FsdGV6emEnLCB0eXBlOiAndGV4dCcsIGdyb3VwOiAnU3BhemlhdHVyYScsIHBsYWNlaG9sZGVyOiAnZXMuIDQwcHgnIH0sXHJcbiAgICB7IHByb3A6ICdtaW4taGVpZ2h0JywgbGFiZWw6ICdBbHRlenphIG1pbmltYScsIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdTcGF6aWF0dXJhJywgcGxhY2Vob2xkZXI6ICdlcy4gNDBweCcgfSxcclxuICAgIHsgcHJvcDogJ2dhcCcsIGxhYmVsOiAnRGlzdGFuemEgdHJhIGVsZW1lbnRpJywgdHlwZTogJ3NpemUnLCBncm91cDogJ0xheW91dCcsIG1pbjogMCwgbWF4OiA0MCwgc3RlcDogMSwgdW5pdDogJ3B4JyB9LFxyXG4gICAge1xyXG4gICAgICAgIHByb3A6ICdkaXNwbGF5JywgbGFiZWw6ICdWaXN1YWxpenphemlvbmUnLCB0eXBlOiAnc2VsZWN0JywgZ3JvdXA6ICdMYXlvdXQnLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2Jsb2NrJywgbGFiZWw6ICdCbG9jY28nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdpbmxpbmUtYmxvY2snLCBsYWJlbDogJ0Jsb2NjbyBpbiBsaW5lYScgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2ZsZXgnLCBsYWJlbDogJ0ZsZXgnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdub25lJywgbGFiZWw6ICdOYXNjb3N0bycgfSxcclxuICAgICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwcm9wOiAnanVzdGlmeS1jb250ZW50JywgbGFiZWw6ICdBbGxpbmVhbWVudG8gb3JpenpvbnRhbGUnLCB0eXBlOiAnc2VsZWN0JywgZ3JvdXA6ICdMYXlvdXQnLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2ZsZXgtc3RhcnQnLCBsYWJlbDogJ0luaXppbycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2NlbnRlcicsIGxhYmVsOiAnQ2VudHJvJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnZmxleC1lbmQnLCBsYWJlbDogJ0ZpbmUnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdzcGFjZS1iZXR3ZWVuJywgbGFiZWw6ICdEaXN0cmlidWl0bycgfSxcclxuICAgICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwcm9wOiAnYWxpZ24taXRlbXMnLCBsYWJlbDogJ0FsbGluZWFtZW50byB2ZXJ0aWNhbGUnLCB0eXBlOiAnc2VsZWN0JywgZ3JvdXA6ICdMYXlvdXQnLFxyXG4gICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2ZsZXgtc3RhcnQnLCBsYWJlbDogJ0FsdG8nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdjZW50ZXInLCBsYWJlbDogJ0NlbnRybycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2ZsZXgtZW5kJywgbGFiZWw6ICdCYXNzbycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ3N0cmV0Y2gnLCBsYWJlbDogJ0VzdGVuZGknIH0sXHJcbiAgICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcHJvcDogJ2N1cnNvcicsIGxhYmVsOiAnUHVudGF0b3JlJywgdHlwZTogJ3NlbGVjdCcsIGdyb3VwOiAnTGF5b3V0JyxcclxuICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdkZWZhdWx0JywgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAncG9pbnRlcicsIGxhYmVsOiAnTWFubycgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ25vdC1hbGxvd2VkJywgbGFiZWw6ICdWaWV0YXRvJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAndGV4dCcsIGxhYmVsOiAnVGVzdG8nIH0sXHJcbiAgICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7IHByb3A6ICd0cmFuc2l0aW9uJywgbGFiZWw6ICdUcmFuc2l6aW9uZScsIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdFZmZldHRpJywgcGxhY2Vob2xkZXI6ICdlcy4gYWxsIC4ycyBlYXNlJyB9LFxyXG4gICAgeyBwcm9wOiAndHJhbnNmb3JtJywgbGFiZWw6ICdUcmFzZm9ybWF6aW9uZScsIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdFZmZldHRpJywgcGxhY2Vob2xkZXI6ICdlcy4gc2NhbGUoMS4wNSknIH0sXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgQ1NTX0FMTF9QUk9QRVJUSUVTOiBBcnJheTxDc3NQcm9wZXJ0eURlZj4gPSBDU1NfQ09SRV9QUk9QRVJUSUVTLmNvbmNhdChDU1NfRVhUUkFfUFJPUEVSVElFUyk7XHJcblxyXG4vKipcclxuICogUHJvcHJpZXTDoCBjaGUgaGFubm8gc2Vuc28gc29sbyBzdSBhbGN1bmkgZWxlbWVudGk6IG5vbiBjb21wYWlvbm8gbmVsbGUgbGlzdGUgZ2VuZXJhbGksXHJcbiAqIHZlbmdvbm8gYWdnaXVudGUgZGFpIHByb2ZpbGkgZGVpIHNpbmdvbGkgZWxlbWVudGkgKHZlZGkgQ3NzRWxlbWVudFByb2ZpbGUpLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IENTU19FTEVNRU5UX09OTFlfUFJPUEVSVElFUzogQXJyYXk8Q3NzUHJvcGVydHlEZWY+ID0gW1xyXG4gICAgeyBwcm9wOiAndG9wJywgbGFiZWw6ICdQb3NpemlvbmUgdmVydGljYWxlICh0b3ApJywgdHlwZTogJ3NpemUnLCBncm91cDogJ1NwYXppYXR1cmEnLCBtaW46IC00MCwgbWF4OiA2MCwgc3RlcDogMSwgdW5pdDogJ3B4JywgZGVmYXVsdFZhbHVlOiAwLCBwbGFjZWhvbGRlcjogJ3ByZWRlZmluaXRvIDBweCcgfSxcclxuXTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDc3NQcm9wZXJ0eURlZihwcm9wOiBzdHJpbmcpOiBDc3NQcm9wZXJ0eURlZiB8IG51bGwge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gKHByb3AgfHwgJycpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gQ1NTX0FMTF9QUk9QRVJUSUVTLmZpbmQoKHApID0+IHAucHJvcCA9PT0gdGFyZ2V0KVxyXG4gICAgICAgID8/IENTU19FTEVNRU5UX09OTFlfUFJPUEVSVElFUy5maW5kKChwKSA9PiBwLnByb3AgPT09IHRhcmdldClcclxuICAgICAgICA/PyBudWxsO1xyXG59XHJcblxyXG4vKipcclxuICogUGVyc29uYWxpenphIGwnZWxlbmNvIGRlbGxlIHByb3ByaWV0w6AgbW9zdHJhdGUgcGVyIHVuIGVsZW1lbnRvIGdyYWZpY28uXHJcbiAqIExlIHByb3ByaWV0w6AgZ2nDoCB2YWxvcml6emF0ZSBzdWwgY2FtcG8gcmVzdGFubyBzZW1wcmUgdmlzaWJpbGksIGNvc8OsIHNpIHBvc3Nvbm8gYXp6ZXJhcmUuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENzc0VsZW1lbnRQcm9maWxlIHtcclxuICAgIC8qKiBTZSBwcmVzZW50ZSwgbCdlbGVtZW50byBtb3N0cmEgc29sbyBxdWVzdGUgcHJvcHJpZXTDoCBlIG5pZW50ZSBcIkFsdHJlIHByb3ByaWV0w6AuLi5cIiAqL1xyXG4gICAgb25seT86IEFycmF5PHN0cmluZz47XHJcbiAgICAvKiogUHJvcHJpZXTDoCB0b2x0ZSBkYWxsZSBsaXN0ZSBnZW5lcmFsaSAqL1xyXG4gICAgaGlkZGVuPzogQXJyYXk8c3RyaW5nPjtcclxuICAgIC8qKiBQcm9wcmlldMOgIGFnZ2l1bnRlIGluIGNvZGEgYWxsZSBwcmluY2lwYWxpICovXHJcbiAgICBleHRyYT86IEFycmF5PHN0cmluZz47XHJcbn1cclxuXHJcbi8qKiBQcm9wcmlldMOgIGRpIGxheW91dCBjaGUgbm9uIGhhbm5vIGVmZmV0dG8gc3UgZXRpY2hldHRhIGUgYXJlYSBkZWwgdmFsb3JlICovXHJcbmNvbnN0IExBWU9VVF9QUk9QRVJUSUVTOiBBcnJheTxzdHJpbmc+ID0gW1xyXG4gICAgJ21pbi1oZWlnaHQnLCAgICAgICAvLyBBbHRlenphIG1pbmltYVxyXG4gICAgJ2dhcCcsICAgICAgICAgICAgICAvLyBEaXN0YW56YSB0cmEgZWxlbWVudGlcclxuICAgICdkaXNwbGF5JywgICAgICAgICAgLy8gVmlzdWFsaXp6YXppb25lXHJcbiAgICAnanVzdGlmeS1jb250ZW50JywgIC8vIEFsbGluZWFtZW50byBvcml6em9udGFsZVxyXG4gICAgJ2FsaWduLWl0ZW1zJywgICAgICAvLyBBbGxpbmVhbWVudG8gdmVydGljYWxlXHJcbiAgICAnY3Vyc29yJywgICAgICAgICAgIC8vIFB1bnRhdG9yZVxyXG4gICAgJ3RyYW5zaXRpb24nLCAgICAgICAvLyBUcmFuc2l6aW9uZVxyXG4gICAgJ3RyYW5zZm9ybScsICAgICAgICAvLyBUcmFzZm9ybWF6aW9uZVxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IENTU19QUk9GSUxFX0xBQkVMOiBDc3NFbGVtZW50UHJvZmlsZSA9IHtcclxuICAgIGhpZGRlbjogTEFZT1VUX1BST1BFUlRJRVMuY29uY2F0KFsnaGVpZ2h0J10pLFxyXG4gICAgZXh0cmE6IFsndG9wJ10sXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgQ1NTX1BST0ZJTEVfVkFMVUU6IENzc0VsZW1lbnRQcm9maWxlID0ge1xyXG4gICAgaGlkZGVuOiBMQVlPVVRfUFJPUEVSVElFUyxcclxufTtcclxuXHJcbi8qKiBMYWJlbCBkZW50cm8gbGEgY2FzZWxsYSBvIHNvbGxldmF0YSBzdWwgYm9yZG86IHNvbG8gbGUgcHJvcHJpZXTDoCBjaGUgY2FtYmlhbm8gZnJhIGkgZHVlIGNhc2kgKi9cclxuZXhwb3J0IGNvbnN0IENTU19QUk9GSUxFX0ZMT0FUSU5HX0xBQkVMOiBDc3NFbGVtZW50UHJvZmlsZSA9IHtcclxuICAgIG9ubHk6IFsnY29sb3InLCAnZm9udC1zaXplJywgJ2ZvbnQtd2VpZ2h0JywgJ2JhY2tncm91bmQtY29sb3InLCAncGFkZGluZycsICd3aWR0aCcsICd0b3AnXSxcclxufTtcclxuXHJcbi8qKiBQcm9wcmlldMOgIGRhIG1vc3RyYXJlIHBlciB1biBlbGVtZW50bywgYXBwbGljYW5kbyBsJ2V2ZW50dWFsZSBwcm9maWxvICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDc3NQcm9wZXJ0aWVzRm9yUHJvZmlsZShwcm9maWxlOiBDc3NFbGVtZW50UHJvZmlsZSB8IHVuZGVmaW5lZCwgc2hvd0FsbDogYm9vbGVhbik6IEFycmF5PENzc1Byb3BlcnR5RGVmPiB7XHJcbiAgICBpZiAocHJvZmlsZT8ub25seSkge1xyXG4gICAgICAgIHJldHVybiBwcm9maWxlLm9ubHkubWFwKChwcm9wKSA9PiBnZXRDc3NQcm9wZXJ0eURlZihwcm9wKSkuZmlsdGVyKChkKTogZCBpcyBDc3NQcm9wZXJ0eURlZiA9PiBkICE9IG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGhpZGRlbiA9IHByb2ZpbGU/LmhpZGRlbiA/PyBbXTtcclxuICAgIGNvbnN0IGJhc2UgPSAoc2hvd0FsbCA/IENTU19BTExfUFJPUEVSVElFUyA6IENTU19DT1JFX1BST1BFUlRJRVMpLmZpbHRlcigocCkgPT4gIWhpZGRlbi5pbmNsdWRlcyhwLnByb3ApKTtcclxuICAgIGNvbnN0IGV4dHJhID0gKHByb2ZpbGU/LmV4dHJhID8/IFtdKVxyXG4gICAgICAgIC5tYXAoKHByb3ApID0+IGdldENzc1Byb3BlcnR5RGVmKHByb3ApKVxyXG4gICAgICAgIC5maWx0ZXIoKGQpOiBkIGlzIENzc1Byb3BlcnR5RGVmID0+IGQgIT0gbnVsbCAmJiAhYmFzZS5zb21lKChwKSA9PiBwLnByb3AgPT09IGQucHJvcCkpO1xyXG5cclxuICAgIHJldHVybiBiYXNlLmNvbmNhdChleHRyYSk7XHJcbn1cclxuXHJcbi8qKiBEZWZpbml6aW9uZSBkaSByaXBpZWdvIHBlciB1bmEgcHJvcHJpZXTDoCBzY3JpdHRhIGEgbWFubyBlIG5vbiBjYXRhbG9nYXRhICovXHJcbmV4cG9ydCBmdW5jdGlvbiBidWlsZEN1c3RvbUNzc1Byb3BlcnR5RGVmKHByb3A6IHN0cmluZyk6IENzc1Byb3BlcnR5RGVmIHtcclxuICAgIHJldHVybiB7IHByb3A6IChwcm9wIHx8ICcnKS50b0xvd2VyQ2FzZSgpLCBsYWJlbDogcHJvcCwgdHlwZTogJ3RleHQnLCBncm91cDogJ1BlcnNvbmFsaXp6YXRlJyB9O1xyXG59XHJcbiJdfQ==