@unifylib/ui-lib 1.2.16 → 1.2.18
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/cli/client-app-component-guide.md +166 -166
- package/cli/generators/dashboard.js +147 -147
- package/cli/generators/form-screen.js +95 -95
- package/cli/generators/line-editor.js +110 -110
- package/cli/generators/permission-matrix.js +115 -115
- package/cli/generators/section-form.js +103 -103
- package/cli/generators/table-screen.js +181 -181
- package/cli/index.js +185 -185
- package/cli/utils.js +228 -228
- package/esm2022/iq-ui-lib.mjs +5 -0
- package/esm2022/lib/base-model/SearchStrConfig.mjs +1 -1
- package/esm2022/lib/base-model/api-response.mjs +1 -1
- package/esm2022/lib/base-model/audit-log-entry.mjs +1 -1
- package/esm2022/lib/base-model/button-action-settings.mjs +1 -1
- package/esm2022/lib/base-model/column-def.model.mjs +1 -1
- package/esm2022/lib/base-model/do-action-request.mjs +1 -1
- package/esm2022/lib/base-model/field-action.mjs +1 -1
- package/esm2022/lib/base-model/field-filter.model.mjs +1 -1
- package/esm2022/lib/base-model/field-info.mjs +1 -1
- package/esm2022/lib/base-model/field-predicate.model.mjs +1 -1
- package/esm2022/lib/base-model/filter-request.mjs +1 -1
- package/esm2022/lib/base-model/filter.model.mjs +1 -1
- package/esm2022/lib/base-model/get-items-list.mjs +1 -1
- package/esm2022/lib/base-model/index.mjs +1 -1
- package/esm2022/lib/base-model/items-total.model.mjs +1 -1
- package/esm2022/lib/base-model/line-item.model.mjs +1 -1
- package/esm2022/lib/base-model/lookupItem.mjs +1 -1
- package/esm2022/lib/base-model/page-info.mjs +1 -1
- package/esm2022/lib/base-model/permission-matrix.model.mjs +1 -1
- package/esm2022/lib/base-model/report-request.model.mjs +1 -1
- package/esm2022/lib/base-model/response-envelop.model.mjs +1 -1
- package/esm2022/lib/base-model/snack-message.model.mjs +1 -1
- package/esm2022/lib/base-model/table-column.interface.mjs +1 -1
- package/esm2022/lib/base-model/table-page-user-action.interface.mjs +1 -1
- package/esm2022/lib/base-model/workflow/workflow-steps.model.mjs +1 -1
- package/esm2022/lib/base-model/workflow/workflow.model.mjs +1 -1
- package/esm2022/lib/components/action-comment/action-comment.component.mjs +3 -3
- package/esm2022/lib/components/action-confirmation/action-confirmation.component.mjs +3 -3
- package/esm2022/lib/components/activity-report-form/activity-report-form.component.mjs +3 -3
- package/esm2022/lib/components/advanced-filter/field-filter/field-filter.component.mjs +3 -3
- package/esm2022/lib/components/advanced-filter/filter-builder/filter-builder.component.mjs +3 -3
- package/esm2022/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.mjs +3 -3
- package/esm2022/lib/components/auto-complete/auto-complete.component.mjs +3 -3
- package/esm2022/lib/components/base-form/base-form.component.mjs +3 -3
- package/esm2022/lib/components/base-form-canvas/MaxDigitsDirective.mjs +1 -1
- package/esm2022/lib/components/base-form-canvas/NumbersOnlyDirective.mjs +1 -1
- package/esm2022/lib/components/base-form-canvas/base-form-canvas.component.mjs +5 -5
- package/esm2022/lib/components/base-input-dialog/base-input-dialog.component.mjs +3 -3
- package/esm2022/lib/components/base-table/base-table.component.mjs +3 -3
- package/esm2022/lib/components/button-actions/button-actions.component.mjs +3 -3
- package/esm2022/lib/components/editable-base-table/editable-base-table.component.mjs +3 -3
- package/esm2022/lib/components/equation-builder/equation-builder.component.mjs +3 -3
- package/esm2022/lib/components/item-line-editor/item-line-editor.component.mjs +3 -3
- package/esm2022/lib/components/multi-auto-complete/multi-auto-complete.component.mjs +11 -10
- package/esm2022/lib/components/paginator/paginator.component.mjs +3 -3
- package/esm2022/lib/components/permission-matrix/permission-matrix.component.mjs +3 -3
- package/esm2022/lib/components/report-details-dialog/report-details-dialog.component.mjs +3 -3
- package/esm2022/lib/components/report-form/report-form.component.mjs +3 -3
- package/esm2022/lib/components/search-bar/search-bar.component.mjs +3 -3
- package/esm2022/lib/components/section-form-canvas/section-form-canvas.component.mjs +3 -3
- package/esm2022/lib/components/shared/action-button/action-button.component.mjs +3 -3
- package/esm2022/lib/components/shared/action-card/action-card.component.mjs +3 -3
- package/esm2022/lib/components/shared/attachment-uploader/attachment-uploader.component.mjs +3 -3
- package/esm2022/lib/components/shared-list/shared-list.component.mjs +3 -3
- package/esm2022/lib/components/snackbar-static/snackbar-static.component.mjs +3 -3
- package/esm2022/lib/components/title-bar/title-bar.component.mjs +3 -3
- package/esm2022/lib/directives/phone-number-only.directive.mjs +1 -1
- package/esm2022/lib/services/backend-service.mjs +1 -1
- package/esm2022/lib/services/index.mjs +1 -1
- package/esm2022/lib/services/top-panel.mjs +1 -1
- package/esm2022/lib/services/trigger-form.service.mjs +1 -1
- package/esm2022/lib/utils/base-utils.mjs +1 -1
- package/esm2022/lib/validators/date-range-validator.mjs +1 -1
- package/esm2022/lib/validators/index.mjs +1 -1
- package/esm2022/lib/validators/match-list.validator.mjs +1 -1
- package/esm2022/lib/validators/multi-email-validator.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/iq-ui-lib.mjs +7060 -0
- package/fesm2022/iq-ui-lib.mjs.map +1 -0
- package/index.d.ts +1 -1
- package/package.json +14 -6
- package/esm2022/unifylib-ui-lib.mjs +0 -5
- package/fesm2022/unifylib-ui-lib.mjs +0 -7059
- package/fesm2022/unifylib-ui-lib.mjs.map +0 -1
|
@@ -85,7 +85,7 @@ export class EquationBuilderComponent {
|
|
|
85
85
|
this.emitChange();
|
|
86
86
|
}
|
|
87
87
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EquationBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EquationBuilderComponent, isStandalone: true, selector: "lib-equation-builder", inputs: { form: "form", field: "field", isPending: "isPending", readOnly: "readOnly" }, outputs: { valueChanged: "valueChanged" }, ngImport: i0, template: "<div class=\"flex-row gap-10 fill align-start-center\">\
|
|
88
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EquationBuilderComponent, isStandalone: true, selector: "lib-equation-builder", inputs: { form: "form", field: "field", isPending: "isPending", readOnly: "readOnly" }, outputs: { valueChanged: "valueChanged" }, ngImport: i0, template: "<div class=\"flex-row gap-10 fill align-start-center\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <div class=\"flex-row align-start-center gap-5\">\n <ng-container [ngSwitch]=\"item.type\">\n <ng-container *ngSwitchCase=\"'lookup'\">\n <app-auto-complete\n class=\"flex-full\"\n [field]=\"field\"\n [form]=\"form\"\n [defaultValue]=\"item.value\"\n (selectedValue)=\"onLookupChange(i, $event)\">\n </app-auto-complete>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'dropdown'\">\n <mat-form-field class=\"flex-none\" appearance=\"outline\" style=\"width: 100px\">\n <mat-label>{{ 'BASE_TABLE.equationOperator' | translate }}</mat-label>\n <mat-select [disabled]=\"readOnly\" [value]=\"item.value\" (selectionChange)=\"onDropdownChange(i, $event.value)\">\n <mat-option *ngFor=\"let opt of operators\" [value]=\"opt.value\">\n {{ opt.label }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <button\n [disabled]=\"isPending\"\n mat-icon-button\n type=\"button\"\n color=\"warn\"\n (click)=\"onClearAll()\"\n *ngIf=\"items.length > 0\"\n id=\"equation-clear-all-btn\"\n [attr.aria-label]=\"'BASE_TABLE.clearEquation' | translate\">\n <mat-icon aria-hidden=\"true\">delete</mat-icon>\n </button>\n</div>\n", styles: [".flex-row{display:flex;flex-direction:row}.flex-column{display:flex;flex-direction:column}.flex-full{flex:1 1 auto}.flex-none{flex:0 0 auto}.fill{width:100%}.align-start-center{align-items:center;justify-content:flex-start}.align-center-center{align-items:center;justify-content:center}.gap-5{gap:5px}.gap-10{gap:10px}\n"], dependencies: [{ kind: "component", type: AutoCompleteComponent, selector: "app-auto-complete", inputs: ["field", "form", "defaultValue", "readonly", "supportingAttributes"], outputs: ["selectedValue"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
|
|
89
89
|
}
|
|
90
90
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EquationBuilderComponent, decorators: [{
|
|
91
91
|
type: Component,
|
|
@@ -102,7 +102,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
102
102
|
MatIconButton,
|
|
103
103
|
NgIf,
|
|
104
104
|
TranslateModule,
|
|
105
|
-
], template: "<div class=\"flex-row gap-10 fill align-start-center\">\
|
|
105
|
+
], template: "<div class=\"flex-row gap-10 fill align-start-center\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <div class=\"flex-row align-start-center gap-5\">\n <ng-container [ngSwitch]=\"item.type\">\n <ng-container *ngSwitchCase=\"'lookup'\">\n <app-auto-complete\n class=\"flex-full\"\n [field]=\"field\"\n [form]=\"form\"\n [defaultValue]=\"item.value\"\n (selectedValue)=\"onLookupChange(i, $event)\">\n </app-auto-complete>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'dropdown'\">\n <mat-form-field class=\"flex-none\" appearance=\"outline\" style=\"width: 100px\">\n <mat-label>{{ 'BASE_TABLE.equationOperator' | translate }}</mat-label>\n <mat-select [disabled]=\"readOnly\" [value]=\"item.value\" (selectionChange)=\"onDropdownChange(i, $event.value)\">\n <mat-option *ngFor=\"let opt of operators\" [value]=\"opt.value\">\n {{ opt.label }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <button\n [disabled]=\"isPending\"\n mat-icon-button\n type=\"button\"\n color=\"warn\"\n (click)=\"onClearAll()\"\n *ngIf=\"items.length > 0\"\n id=\"equation-clear-all-btn\"\n [attr.aria-label]=\"'BASE_TABLE.clearEquation' | translate\">\n <mat-icon aria-hidden=\"true\">delete</mat-icon>\n </button>\n</div>\n", styles: [".flex-row{display:flex;flex-direction:row}.flex-column{display:flex;flex-direction:column}.flex-full{flex:1 1 auto}.flex-none{flex:0 0 auto}.fill{width:100%}.align-start-center{align-items:center;justify-content:flex-start}.align-center-center{align-items:center;justify-content:center}.gap-5{gap:5px}.gap-10{gap:10px}\n"] }]
|
|
106
106
|
}], propDecorators: { form: [{
|
|
107
107
|
type: Input
|
|
108
108
|
}], field: [{
|
|
@@ -114,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
114
114
|
}], readOnly: [{
|
|
115
115
|
type: Input
|
|
116
116
|
}] } });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXF1YXRpb24tYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2VxdWF0aW9uLWJ1aWxkZXIvZXF1YXRpb24tYnVpbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2VxdWF0aW9uLWJ1aWxkZXIvZXF1YXRpb24tYnVpbGRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7OztBQXNCcEQsTUFBTSxPQUFPLHdCQUF3QjtJQXBCckM7UUF3QlksaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWpELGNBQVMsR0FBRztZQUNWLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQzFCLEVB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WUFBWSw0TEFDWixRQUFRLHNEQUNSLFFBQVEsNkVBQ1IsT0FBTyxtSEFDUCxZQUFZLHFGQUNaLE9BQU8sMklBQ1AsYUFBYSw2RkFDYixJQUFJLDRGQUNKLGVBQWU7OzRGQUtOLHdCQUF3QjtrQkFwQnBDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUDt3QkFDUCxxQkFBcUI7d0JBQ3JCLFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLFFBQVE7d0JBQ1IsUUFBUTt3QkFDUixPQUFPO3dCQUNQLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxhQUFhO3dCQUNiLElBQUk7d0JBQ0osZUFBZTtxQkFDaEI7OEJBS1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBU0UsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBBdXRvQ29tcGxldGVDb21wb25lbnQgfSBmcm9tIFwiLi4vYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdE9wdGlvbiwgTWF0U2VsZWN0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NlbGVjdFwiO1xyXG5pbXBvcnQgeyBNYXRMYWJlbCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7TmdGb3JPZiwgTmdJZiwgTmdTd2l0Y2gsIE5nU3dpdGNoQ2FzZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdEljb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcbmltcG9ydCB7TWF0SWNvbkJ1dHRvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWVxdWF0aW9uLWJ1aWxkZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQXV0b0NvbXBsZXRlQ29tcG9uZW50LFxyXG4gICAgTWF0U2VsZWN0LFxyXG4gICAgTWF0T3B0aW9uLFxyXG4gICAgTWF0Rm9ybUZpZWxkLFxyXG4gICAgTWF0TGFiZWwsXHJcbiAgICBOZ1N3aXRjaCxcclxuICAgIE5nRm9yT2YsXHJcbiAgICBOZ1N3aXRjaENhc2UsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgTWF0SWNvbkJ1dHRvbixcclxuICAgIE5nSWYsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZXF1YXRpb24tYnVpbGRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2VxdWF0aW9uLWJ1aWxkZXIuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEVxdWF0aW9uQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBmaWVsZCE6IGFueTtcclxuICBASW5wdXQoKSBpc1BlbmRpbmchOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgb3BlcmF0b3JzID0gW1xyXG4gICAgeyBsYWJlbDogJysnLCB2YWx1ZTogJysnIH0sXHJcbiAgICB7IGxhYmVsOiAnLScsIHZhbHVlOiAnLScgfSxcclxuICAgIHsgbGFiZWw6ICc9JywgdmFsdWU6ICc9JyB9XHJcbiAgXTtcclxuXHJcbiAgaXRlbXM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgcmVhZE9ubHkhOiBib29sZWFuO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnN0IGZpZWxkVmFsdWVzOiBhbnlbXSA9IHRoaXMuZm9ybS5nZXQoJ2ZpZWxkVmFsdWUnKT8udmFsdWU7XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGRWYWx1ZXMpICYmIGZpZWxkVmFsdWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5pdGVtcyA9IGZpZWxkVmFsdWVzLm1hcCh2YWwgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm9wZXJhdG9ycy5zb21lKG9wID0+IG9wLnZhbHVlID09PSB2YWwpKSB7XHJcbiAgICAgICAgICByZXR1cm4geyB0eXBlOiAnZHJvcGRvd24nLCB2YWx1ZTogdmFsIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdsb29rdXAnLFxyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5nZXRMb29rdXBCeUNvZGUodmFsKVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pdGVtcyA9IFt7IHR5cGU6ICdsb29rdXAnLCB2YWx1ZTogbnVsbCB9XTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBnZXRMb29rdXBCeUNvZGUoY29kZTogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiAgeyBjb2RlOiBjb2RlLCBpZDogMSwgZW5nbGlzaE5hbWU6IGNvZGUsIGFyYWJpY05hbWU6IGNvZGUgfVxyXG4gIH1cclxuXHJcbiAgb25Mb29rdXBDaGFuZ2UoaW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5pdGVtc1tpbmRleF0udmFsdWUgPSB2YWx1ZTtcclxuXHJcbiAgICBpZiAoaW5kZXggPT09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICB0aGlzLml0ZW1zLnB1c2goeyB0eXBlOiAnZHJvcGRvd24nLCB2YWx1ZTogbnVsbH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW1pdENoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgb25Ecm9wZG93bkNoYW5nZShpbmRleDogbnVtYmVyLCB2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLml0ZW1zW2luZGV4XS52YWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgIGlmIChpbmRleCAhPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIHRoaXMuZW1pdENoYW5nZSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbHVlID09PSAnPScpIHtcclxuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMuc2xpY2UoMCwgaW5kZXggKyAxKTtcclxuICAgIH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycpIHtcclxuICAgICAgY29uc3QgbGFzdEl0ZW0gPSB0aGlzLml0ZW1zW3RoaXMuaXRlbXMubGVuZ3RoIC0gMV07XHJcbiAgICAgIGlmIChsYXN0SXRlbS50eXBlICE9PSAnbG9va3VwJykge1xyXG4gICAgICAgIHRoaXMuaXRlbXMucHVzaCh7IHR5cGU6ICdsb29rdXAnLCB2YWx1ZTogbnVsbCB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW1pdENoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgZW1pdENoYW5nZSgpIHtcclxuICAgIGNvbnN0IHNpbXBsaWZpZWRJdGVtcyA9IHRoaXMuaXRlbXMubWFwKGl0ZW0gPT4ge1xyXG4gICAgICBpZiAoaXRlbT8udHlwZSA9PT0gJ2xvb2t1cCcpIHtcclxuICAgICAgICByZXR1cm4gaXRlbS52YWx1ZT8uY29kZSA/PyBudWxsO1xyXG4gICAgICB9IGVsc2UgaWYgKGl0ZW0/LnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgICByZXR1cm4gaXRlbS52YWx1ZSA/PyBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBpc1ZhbGlkID0gc2ltcGxpZmllZEl0ZW1zW3NpbXBsaWZpZWRJdGVtcy5sZW5ndGggLSAxXSA9PT0gJz0nO1xyXG5cclxuICAgIHRoaXMudmFsdWVDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICB2YWx1ZTogc2ltcGxpZmllZEl0ZW1zLmZpbHRlcih2YWwgPT4gdmFsICE9PSAnPScpLFxyXG4gICAgICB2YWxpZDogaXNWYWxpZFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNsZWFyQWxsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pdGVtcyA9IFt7IHR5cGU6ICdsb29rdXAnLCB2YWx1ZTogbnVsbCB9XTtcclxuICAgIHRoaXMuZW1pdENoYW5nZSgpO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmbGV4LXJvdyBnYXAtMTAgZmlsbCBhbGlnbi1zdGFydC1jZW50ZXJcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleC1yb3cgYWxpZ24tc3RhcnQtY2VudGVyIGdhcC01XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIml0ZW0udHlwZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsb29rdXAnXCI+XHJcbiAgICAgICAgICA8YXBwLWF1dG8tY29tcGxldGVcclxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4LWZ1bGxcIlxyXG4gICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJpdGVtLnZhbHVlXCJcclxuICAgICAgICAgICAgKHNlbGVjdGVkVmFsdWUpPVwib25Mb29rdXBDaGFuZ2UoaSwgJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPC9hcHAtYXV0by1jb21wbGV0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Ryb3Bkb3duJ1wiPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZmxleC1ub25lXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBzdHlsZT1cIndpZHRoOiAxMDBweFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7ICdCQVNFX1RBQkxFLmVxdWF0aW9uT3BlcmF0b3InIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtkaXNhYmxlZF09XCJyZWFkT25seVwiIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkRyb3Bkb3duQ2hhbmdlKGksICRldmVudC52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIG9wZXJhdG9yc1wiIFt2YWx1ZV09XCJvcHQudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIHt7IG9wdC5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPGJ1dHRvblxyXG4gICAgW2Rpc2FibGVkXT1cImlzUGVuZGluZ1wiXHJcbiAgICBtYXQtaWNvbi1idXR0b25cclxuICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgY29sb3I9XCJ3YXJuXCJcclxuICAgIChjbGljayk9XCJvbkNsZWFyQWxsKClcIlxyXG4gICAgKm5nSWY9XCJpdGVtcy5sZW5ndGggPiAwXCJcclxuICAgIGlkPVwiZXF1YXRpb24tY2xlYXItYWxsLWJ0blwiXHJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidCQVNFX1RBQkxFLmNsZWFyRXF1YXRpb24nIHwgdHJhbnNsYXRlXCI+XHJcbiAgICA8bWF0LWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCI+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICA8L2J1dHRvbj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXF1YXRpb24tYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2VxdWF0aW9uLWJ1aWxkZXIvZXF1YXRpb24tYnVpbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2VxdWF0aW9uLWJ1aWxkZXIvZXF1YXRpb24tYnVpbGRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7OztBQXNCcEQsTUFBTSxPQUFPLHdCQUF3QjtJQXBCckM7UUF3QlksaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWpELGNBQVMsR0FBRztZQUNWLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQzFCLEVB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WUFBWSw0TEFDWixRQUFRLHNEQUNSLFFBQVEsNkVBQ1IsT0FBTyxtSEFDUCxZQUFZLHFGQUNaLE9BQU8sMklBQ1AsYUFBYSw2RkFDYixJQUFJLDRGQUNKLGVBQWU7OzRGQUtOLHdCQUF3QjtrQkFwQnBDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUDt3QkFDUCxxQkFBcUI7d0JBQ3JCLFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLFFBQVE7d0JBQ1IsUUFBUTt3QkFDUixPQUFPO3dCQUNQLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxhQUFhO3dCQUNiLElBQUk7d0JBQ0osZUFBZTtxQkFDaEI7OEJBS1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBU0UsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IEF1dG9Db21wbGV0ZUNvbXBvbmVudCB9IGZyb20gXCIuLi9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdE9wdGlvbiwgTWF0U2VsZWN0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NlbGVjdFwiO1xuaW1wb3J0IHsgTWF0TGFiZWwgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHtOZ0Zvck9mLCBOZ0lmLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge01hdEljb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQge01hdEljb25CdXR0b259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZXF1YXRpb24tYnVpbGRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBdXRvQ29tcGxldGVDb21wb25lbnQsXG4gICAgTWF0U2VsZWN0LFxuICAgIE1hdE9wdGlvbixcbiAgICBNYXRGb3JtRmllbGQsXG4gICAgTWF0TGFiZWwsXG4gICAgTmdTd2l0Y2gsXG4gICAgTmdGb3JPZixcbiAgICBOZ1N3aXRjaENhc2UsXG4gICAgTWF0SWNvbixcbiAgICBNYXRJY29uQnV0dG9uLFxuICAgIE5nSWYsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZXF1YXRpb24tYnVpbGRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9lcXVhdGlvbi1idWlsZGVyLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIEVxdWF0aW9uQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGZvcm0hOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIGZpZWxkITogYW55O1xuICBASW5wdXQoKSBpc1BlbmRpbmchOiBib29sZWFuO1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgb3BlcmF0b3JzID0gW1xuICAgIHsgbGFiZWw6ICcrJywgdmFsdWU6ICcrJyB9LFxuICAgIHsgbGFiZWw6ICctJywgdmFsdWU6ICctJyB9LFxuICAgIHsgbGFiZWw6ICc9JywgdmFsdWU6ICc9JyB9XG4gIF07XG5cbiAgaXRlbXM6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIHJlYWRPbmx5ITogYm9vbGVhbjtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBmaWVsZFZhbHVlczogYW55W10gPSB0aGlzLmZvcm0uZ2V0KCdmaWVsZFZhbHVlJyk/LnZhbHVlO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGRWYWx1ZXMpICYmIGZpZWxkVmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuaXRlbXMgPSBmaWVsZFZhbHVlcy5tYXAodmFsID0+IHtcbiAgICAgICAgaWYgKHRoaXMub3BlcmF0b3JzLnNvbWUob3AgPT4gb3AudmFsdWUgPT09IHZhbCkpIHtcbiAgICAgICAgICByZXR1cm4geyB0eXBlOiAnZHJvcGRvd24nLCB2YWx1ZTogdmFsIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdsb29rdXAnLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuZ2V0TG9va3VwQnlDb2RlKHZhbClcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtcyA9IFt7IHR5cGU6ICdsb29rdXAnLCB2YWx1ZTogbnVsbCB9XTtcbiAgICB9XG5cbiAgfVxuXG4gIGdldExvb2t1cEJ5Q29kZShjb2RlOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiAgeyBjb2RlOiBjb2RlLCBpZDogMSwgZW5nbGlzaE5hbWU6IGNvZGUsIGFyYWJpY05hbWU6IGNvZGUgfVxuICB9XG5cbiAgb25Mb29rdXBDaGFuZ2UoaW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSkge1xuICAgIHRoaXMuaXRlbXNbaW5kZXhdLnZhbHVlID0gdmFsdWU7XG5cbiAgICBpZiAoaW5kZXggPT09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5pdGVtcy5wdXNoKHsgdHlwZTogJ2Ryb3Bkb3duJywgdmFsdWU6IG51bGx9KTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgfVxuXG4gIG9uRHJvcGRvd25DaGFuZ2UoaW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSkge1xuICAgIHRoaXMuaXRlbXNbaW5kZXhdLnZhbHVlID0gdmFsdWU7XG5cbiAgICBpZiAoaW5kZXggIT09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSAnPScpIHtcbiAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLnNsaWNlKDAsIGluZGV4ICsgMSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlICE9PSAnJykge1xuICAgICAgY29uc3QgbGFzdEl0ZW0gPSB0aGlzLml0ZW1zW3RoaXMuaXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICBpZiAobGFzdEl0ZW0udHlwZSAhPT0gJ2xvb2t1cCcpIHtcbiAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHsgdHlwZTogJ2xvb2t1cCcsIHZhbHVlOiBudWxsIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICB9XG5cbiAgZW1pdENoYW5nZSgpIHtcbiAgICBjb25zdCBzaW1wbGlmaWVkSXRlbXMgPSB0aGlzLml0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtPy50eXBlID09PSAnbG9va3VwJykge1xuICAgICAgICByZXR1cm4gaXRlbS52YWx1ZT8uY29kZSA/PyBudWxsO1xuICAgICAgfSBlbHNlIGlmIChpdGVtPy50eXBlID09PSAnZHJvcGRvd24nKSB7XG4gICAgICAgIHJldHVybiBpdGVtLnZhbHVlID8/IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbiAgICBjb25zdCBpc1ZhbGlkID0gc2ltcGxpZmllZEl0ZW1zW3NpbXBsaWZpZWRJdGVtcy5sZW5ndGggLSAxXSA9PT0gJz0nO1xuXG4gICAgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdCh7XG4gICAgICB2YWx1ZTogc2ltcGxpZmllZEl0ZW1zLmZpbHRlcih2YWwgPT4gdmFsICE9PSAnPScpLFxuICAgICAgdmFsaWQ6IGlzVmFsaWRcbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2xlYXJBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5pdGVtcyA9IFt7IHR5cGU6ICdsb29rdXAnLCB2YWx1ZTogbnVsbCB9XTtcbiAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgfVxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4LXJvdyBnYXAtMTAgZmlsbCBhbGlnbi1zdGFydC1jZW50ZXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGV0IGkgPSBpbmRleFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LXJvdyBhbGlnbi1zdGFydC1jZW50ZXIgZ2FwLTVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIml0ZW0udHlwZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbG9va3VwJ1wiPlxuICAgICAgICAgIDxhcHAtYXV0by1jb21wbGV0ZVxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4LWZ1bGxcIlxuICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcbiAgICAgICAgICAgIFtmb3JtXT1cImZvcm1cIlxuICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgIChzZWxlY3RlZFZhbHVlKT1cIm9uTG9va3VwQ2hhbmdlKGksICRldmVudClcIj5cbiAgICAgICAgICA8L2FwcC1hdXRvLWNvbXBsZXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZHJvcGRvd24nXCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZmxleC1ub25lXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBzdHlsZT1cIndpZHRoOiAxMDBweFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eyAnQkFTRV9UQUJMRS5lcXVhdGlvbk9wZXJhdG9yJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgW2Rpc2FibGVkXT1cInJlYWRPbmx5XCIgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uRHJvcGRvd25DaGFuZ2UoaSwgJGV2ZW50LnZhbHVlKVwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIG9wZXJhdG9yc1wiIFt2YWx1ZV09XCJvcHQudmFsdWVcIj5cbiAgICAgICAgICAgICAgICB7eyBvcHQubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxidXR0b25cbiAgICBbZGlzYWJsZWRdPVwiaXNQZW5kaW5nXCJcbiAgICBtYXQtaWNvbi1idXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjb2xvcj1cIndhcm5cIlxuICAgIChjbGljayk9XCJvbkNsZWFyQWxsKClcIlxuICAgICpuZ0lmPVwiaXRlbXMubGVuZ3RoID4gMFwiXG4gICAgaWQ9XCJlcXVhdGlvbi1jbGVhci1hbGwtYnRuXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidCQVNFX1RBQkxFLmNsZWFyRXF1YXRpb24nIHwgdHJhbnNsYXRlXCI+XG4gICAgPG1hdC1pY29uIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPmRlbGV0ZTwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|
|
@@ -270,7 +270,7 @@ export class ItemLineEditorComponent {
|
|
|
270
270
|
};
|
|
271
271
|
}
|
|
272
272
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ItemLineEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
273
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ItemLineEditorComponent, isStandalone: true, selector: "app-item-line-editor", inputs: { noDataFoundIcon: "noDataFoundIcon", noDataFoundTitle: "noDataFoundTitle", noDataFoundSubtitle: "noDataFoundSubtitle", pageInfo: "pageInfo", columnHeaderWidths: "columnHeaderWidths", title: "title", subtitle: "subtitle", allowAdd: "allowAdd", allowDelete: "allowDelete", editable: "editable", currency: "currency", fields: "fields", items: "items" }, outputs: { itemsChange: "itemsChange", itemSaved: "itemSaved", itemDeleted: "itemDeleted", totalsChange: "totalsChange", editStateChange: "editStateChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"item-line-editor\">\r\n <div class=\"header-section\">\r\n <div class=\"header-content\">\r\n <div class=\"header-text\">\r\n <h3 class=\"title\">{{ title | translate }}</h3>\r\n <p class=\"subtitle\">{{ subtitle | translate }}</p>\r\n </div>\r\n </div>\r\n <div class=\"header-divider\"></div>\r\n </div>\r\n\r\n <div class=\"table-section\">\r\n @if (!noDataFound) {\r\n <div class=\"table-container\">\r\n <div class=\"table-header\" [ngStyle]=\"{ 'grid-template-columns': gridTemplate }\">\r\n <ng-container *ngFor=\"let f of headerFields; let idx = index\">\r\n <div class=\"header-cell\" [class.description-cell]=\"f.property === 'description'\">\r\n <span class=\"header-cell-text\">\r\n {{ labelOf(f) | translate }}\r\n <span *ngIf=\"f.required\" class=\"required-asterisk\">*</span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"table-body\">\r\n <div class=\"table-row-container\" *ngFor=\"let it of items; let i = index; trackBy: trackByIndex\">\r\n <div class=\"table-row\">\r\n <div class=\"row-inputs\" [attr.data-grid-columns]=\"gridTemplate\" [ngStyle]=\"{ '--grid-columns': gridTemplate }\">\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"editing[i]\"\r\n [emitOnValueChanges]=\"true\"\r\n [item]=\"it\"\r\n [currency]=\"currency\"\r\n (formUpdated)=\"onFormUpdated($event, i)\">\r\n </app-base-form-canvas>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row-actions\">\r\n <button *ngIf=\"editing[i]\" mat-stroked-button class=\"save-btn\" (click)=\"saveRow(i)\"\r\n [disabled]=\"!canSave(i)\">\r\n <div class=\"button-text\">\r\n <mat-icon>check</mat-icon>\r\n <span>{{ 'item-line.save' | translate }}</span>\r\n </div>\r\n </button>\r\n\r\n <button *ngIf=\"!editing[i] && editable\" mat-stroked-button class=\"edit-btn\"\r\n (click)=\"editRow(i)\">\r\n <div class=\"button-text\">\r\n <mat-icon>edit</mat-icon>\r\n <span>{{ 'item-line.edit' | translate }}</span>\r\n </div>\r\n </button>\r\n\r\n <button *ngIf=\"allowDelete && editable\" mat-stroked-button class=\"delete-btn\"\r\n (click)=\"deleteItem(i)\" type=\"button\">\r\n <div class=\"button-text\">\r\n <mat-icon>delete</mat-icon>\r\n <span>{{ 'item-line.delete' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <div class=\"row-divider\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (noDataFound) {\r\n <div class=\"dataNotFound\">\r\n <mat-icon class=\"dataNotFound__icon\">{{ noDataFoundIcon }}</mat-icon>\r\n <span class=\"dataNotFound__title\">{{ noDataFoundTitle | translate }}</span>\r\n <span class=\"dataNotFound__subtitle\">{{ noDataFoundSubtitle | translate }}</span>\r\n </div>\r\n }\r\n\r\n <div class=\"add-item\" *ngIf=\"allowAdd && editable\">\r\n <button mat-stroked-button class=\"add-item-btn\" (click)=\"addNewItem()\"\r\n [disabled]=\"!canAddNew\">\r\n <div class=\"button-text\">\r\n <mat-icon>add_circle_outline</mat-icon>\r\n <span>{{ 'item-line.addNewItem' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Totals Box -->\r\n @if (!noDataFound) {\r\n <div class=\"totals-box\">\r\n <div class=\"total-row\">\r\n <span class=\"label\">{{ 'item-line.discount' | translate }}</span>\r\n <span class=\"value red\">{{ discountTotal | currency:currency }}</span>\r\n </div>\r\n\r\n <div class=\"total-row\">\r\n <span class=\"label\">{{ 'item-line.amount' | translate }}</span>\r\n <span class=\"value\">{{ subtotal | currency:currency }}</span>\r\n </div>\r\n\r\n <div class=\"totals-divider\"></div>\r\n\r\n <div class=\"total-row grand\">\r\n <span class=\"label\">{{ 'item-line.grandTotal' | translate }}</span>\r\n <span class=\"value green\">{{ grandTotal | currency:currency }}</span>\r\n </div>\r\n </div>\r\n }\r\n</div>", styles: [":host{display:block;width:100%}.item-line-editor{background:#fff;border:1px solid #f0eeee;border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:20px;width:100%;max-width:100%;box-sizing:border-box}.header-section{display:flex;flex-direction:column;gap:20px}.header-content{display:flex;align-items:center;justify-content:space-between}.header-text{display:flex;flex-direction:column;line-height:1.2}.title{font-weight:700;font-size:24px;color:#000;margin:0}.subtitle{font-weight:300;font-size:16px;color:#888;margin:0}.header-divider{height:2px;background-color:#0d4261;width:100%}.table-section{display:flex;flex-direction:column;gap:20px}.table-container{display:flex;flex-direction:column;gap:24px}.table-header{display:grid;width:100%;border-top:1px solid #0d4261;border-bottom:1px solid #0d4261}.header-cell{display:flex;align-items:center;justify-content:flex-start;height:48px;padding:0 20px;background:#fff}.header-cell-text{font-weight:400;font-size:16px;color:#0d4261;line-height:1.2;display:flex;align-items:center;gap:4px}.required-asterisk{color:#ce3b3a;font-weight:500}.table-body{width:100%}.table-row-container{display:flex;flex-direction:column;gap:16px;width:100%}.table-row{width:100%}.row-inputs{width:100%;padding:0 20px}:host ::ng-deep .row-container{border-bottom:1px solid #f0eeee}@media (max-width: 768px){:host ::ng-deep .row-container{border-bottom:none!important}}:host ::ng-deep .row-container .field-column{min-height:70px;padding:16px 0;background:#fff}:host ::ng-deep .row-container .field-column .label-and-asterisk-container{display:none!important}:host ::ng-deep .row-container .field-column mat-form-field{width:100%;margin-bottom:0}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper{background:transparent!important;padding:0!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mdc-notched-outline{display:none!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex{padding:0!important;border:none!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix{padding:0!important;min-height:32px!important;width:100%!important;border:none!important;border-bottom:1px solid #b7b7b7!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input{font-family:lusail,sans-serif!important;font-weight:400!important;font-size:16px!important;color:#000!important;padding:4px 0!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input::placeholder{color:#888!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input:disabled{color:#000!important}@media (max-width: 768px){:host ::ng-deep .row-container{border-bottom:none!important;flex-direction:row!important;flex-wrap:nowrap!important;gap:11px!important}:host ::ng-deep .row-container .field-column{flex:1 1 0!important;min-width:0!important;max-width:none!important}:host ::ng-deep .row-container .field-column .label-and-asterisk-container{display:flex!important;margin-bottom:8px}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .custom-label{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#000;display:block}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .required-asterisk{color:#ce3b3a;font-weight:500}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .optional-text{color:#888;font-size:14px}.table-header{display:none}.row-inputs{padding:0}.totals-box{width:100%!important}}.row-actions{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:8px;width:100%;padding-top:8px}.row-divider{height:1px;background-color:#0d4261;width:100%;margin-top:8px;flex-shrink:0;min-height:1px;position:relative;z-index:1}.save-btn,.edit-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:32px!important;min-width:114px!important;padding:0 12px!important;border-radius:9999px!important;border:1px solid #0d4261!important;background:#fff!important;cursor:pointer}.save-btn .button-text,.edit-btn .button-text{display:flex;align-items:center;gap:4px}.save-btn .button-text mat-icon,.edit-btn .button-text mat-icon{font-size:20px!important;width:20px!important;height:26px!important;color:#0d4261}.save-btn .button-text span,.edit-btn .button-text span{font-family:lusail,sans-serif;font-weight:400;font-size:16px;color:#0d4261;line-height:1}.save-btn:disabled,.edit-btn:disabled{opacity:.5;cursor:not-allowed}.delete-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:32px!important;min-width:114px!important;padding:0 12px!important;border-radius:9999px!important;border:1px solid #ce3b3a!important;background:#fff!important;cursor:pointer}.delete-btn .button-text{display:flex;align-items:center;gap:4px}.delete-btn .button-text mat-icon{font-size:20px!important;width:20px!important;height:26px!important;color:#ce3b3a}.delete-btn .button-text span{font-family:lusail,sans-serif;font-weight:400;font-size:16px;color:#ce3b3a;line-height:1}.add-item{width:100%}.add-item-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:44px!important;min-width:185px!important;padding:0 16px!important;border-radius:8px!important;border:1px solid #3e627b!important;background:#fff!important;cursor:pointer}.add-item-btn .button-text{display:flex;align-items:center;gap:4px}.add-item-btn .button-text mat-icon{font-size:24px!important;width:24px!important;height:30px!important;color:#0d4261}.add-item-btn .button-text span{font-weight:500;font-size:16px;color:#0d4261;line-height:1}.add-item-btn:disabled{opacity:.5;cursor:not-allowed}.totals-box{width:400px;max-width:100%}.total-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0}.total-row .label{font-weight:500;font-size:16px;color:#333}.total-row .value{font-weight:600;font-size:16px}.total-row.grand .label{font-weight:700}.total-row.grand .value{font-weight:700;font-size:18px}.totals-divider{height:1px;background-color:#e0e0e0;margin:8px 0}.red{color:#d9534f}.green{color:#0c7d5e}.dataNotFound{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.dataNotFound__icon{color:#0d4261;font-size:48px;height:50px;width:48px;margin-bottom:16px}.dataNotFound__title{color:#6a6a6a;font-size:18px;font-weight:700;margin-bottom:8px}.dataNotFound__subtitle{color:#6a6a6a;font-size:16px;font-weight:400}.col{padding-left:4px;display:flex;align-items:center;gap:2px}.line-total{font-weight:600;font-size:14px}.divider{border-top:1px solid #e0e0e0;margin:10px 0}::ng-deep .btn-background-primary,::ng-deep .btn-none-background-primary{margin:8px 0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "attachmentsAlwaysEditable", "emitOnValueChanges", "filterResetNonce", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
273
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ItemLineEditorComponent, isStandalone: true, selector: "app-item-line-editor", inputs: { noDataFoundIcon: "noDataFoundIcon", noDataFoundTitle: "noDataFoundTitle", noDataFoundSubtitle: "noDataFoundSubtitle", pageInfo: "pageInfo", columnHeaderWidths: "columnHeaderWidths", title: "title", subtitle: "subtitle", allowAdd: "allowAdd", allowDelete: "allowDelete", editable: "editable", currency: "currency", fields: "fields", items: "items" }, outputs: { itemsChange: "itemsChange", itemSaved: "itemSaved", itemDeleted: "itemDeleted", totalsChange: "totalsChange", editStateChange: "editStateChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"item-line-editor\">\n <div class=\"header-section\">\n <div class=\"header-content\">\n <div class=\"header-text\">\n <h3 class=\"title\">{{ title | translate }}</h3>\n <p class=\"subtitle\">{{ subtitle | translate }}</p>\n </div>\n </div>\n <div class=\"header-divider\"></div>\n </div>\n\n <div class=\"table-section\">\n @if (!noDataFound) {\n <div class=\"table-container\">\n <div class=\"table-header\" [ngStyle]=\"{ 'grid-template-columns': gridTemplate }\">\n <ng-container *ngFor=\"let f of headerFields; let idx = index\">\n <div class=\"header-cell\" [class.description-cell]=\"f.property === 'description'\">\n <span class=\"header-cell-text\">\n {{ labelOf(f) | translate }}\n <span *ngIf=\"f.required\" class=\"required-asterisk\">*</span>\n </span>\n </div>\n </ng-container>\n </div>\n\n <div class=\"table-body\">\n <div class=\"table-row-container\" *ngFor=\"let it of items; let i = index; trackBy: trackByIndex\">\n <div class=\"table-row\">\n <div class=\"row-inputs\" [attr.data-grid-columns]=\"gridTemplate\" [ngStyle]=\"{ '--grid-columns': gridTemplate }\">\n <app-base-form-canvas\n [pageInfo]=\"pageInfo\"\n [fields]=\"fields\"\n [editable]=\"editing[i]\"\n [emitOnValueChanges]=\"true\"\n [item]=\"it\"\n [currency]=\"currency\"\n (formUpdated)=\"onFormUpdated($event, i)\">\n </app-base-form-canvas>\n </div>\n </div>\n\n <div class=\"row-actions\">\n <button *ngIf=\"editing[i]\" mat-stroked-button class=\"save-btn\" (click)=\"saveRow(i)\"\n [disabled]=\"!canSave(i)\">\n <div class=\"button-text\">\n <mat-icon>check</mat-icon>\n <span>{{ 'item-line.save' | translate }}</span>\n </div>\n </button>\n\n <button *ngIf=\"!editing[i] && editable\" mat-stroked-button class=\"edit-btn\"\n (click)=\"editRow(i)\">\n <div class=\"button-text\">\n <mat-icon>edit</mat-icon>\n <span>{{ 'item-line.edit' | translate }}</span>\n </div>\n </button>\n\n <button *ngIf=\"allowDelete && editable\" mat-stroked-button class=\"delete-btn\"\n (click)=\"deleteItem(i)\" type=\"button\">\n <div class=\"button-text\">\n <mat-icon>delete</mat-icon>\n <span>{{ 'item-line.delete' | translate }}</span>\n </div>\n </button>\n </div>\n\n <div class=\"row-divider\"></div>\n </div>\n </div>\n </div>\n }\n\n @if (noDataFound) {\n <div class=\"dataNotFound\">\n <mat-icon class=\"dataNotFound__icon\">{{ noDataFoundIcon }}</mat-icon>\n <span class=\"dataNotFound__title\">{{ noDataFoundTitle | translate }}</span>\n <span class=\"dataNotFound__subtitle\">{{ noDataFoundSubtitle | translate }}</span>\n </div>\n }\n\n <div class=\"add-item\" *ngIf=\"allowAdd && editable\">\n <button mat-stroked-button class=\"add-item-btn\" (click)=\"addNewItem()\"\n [disabled]=\"!canAddNew\">\n <div class=\"button-text\">\n <mat-icon>add_circle_outline</mat-icon>\n <span>{{ 'item-line.addNewItem' | translate }}</span>\n </div>\n </button>\n </div>\n </div>\n\n <!-- Totals Box -->\n @if (!noDataFound) {\n <div class=\"totals-box\">\n <div class=\"total-row\">\n <span class=\"label\">{{ 'item-line.discount' | translate }}</span>\n <span class=\"value red\">{{ discountTotal | currency:currency }}</span>\n </div>\n\n <div class=\"total-row\">\n <span class=\"label\">{{ 'item-line.amount' | translate }}</span>\n <span class=\"value\">{{ subtotal | currency:currency }}</span>\n </div>\n\n <div class=\"totals-divider\"></div>\n\n <div class=\"total-row grand\">\n <span class=\"label\">{{ 'item-line.grandTotal' | translate }}</span>\n <span class=\"value green\">{{ grandTotal | currency:currency }}</span>\n </div>\n </div>\n }\n</div>", styles: [":host{display:block;width:100%}.item-line-editor{background:#fff;border:1px solid #f0eeee;border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:20px;width:100%;max-width:100%;box-sizing:border-box}.header-section{display:flex;flex-direction:column;gap:20px}.header-content{display:flex;align-items:center;justify-content:space-between}.header-text{display:flex;flex-direction:column;line-height:1.2}.title{font-weight:700;font-size:24px;color:#000;margin:0}.subtitle{font-weight:300;font-size:16px;color:#888;margin:0}.header-divider{height:2px;background-color:#0d4261;width:100%}.table-section{display:flex;flex-direction:column;gap:20px}.table-container{display:flex;flex-direction:column;gap:24px}.table-header{display:grid;width:100%;border-top:1px solid #0d4261;border-bottom:1px solid #0d4261}.header-cell{display:flex;align-items:center;justify-content:flex-start;height:48px;padding:0 20px;background:#fff}.header-cell-text{font-weight:400;font-size:16px;color:#0d4261;line-height:1.2;display:flex;align-items:center;gap:4px}.required-asterisk{color:#ce3b3a;font-weight:500}.table-body{width:100%}.table-row-container{display:flex;flex-direction:column;gap:16px;width:100%}.table-row{width:100%}.row-inputs{width:100%;padding:0 20px}:host ::ng-deep .row-container{border-bottom:1px solid #f0eeee}@media (max-width: 768px){:host ::ng-deep .row-container{border-bottom:none!important}}:host ::ng-deep .row-container .field-column{min-height:70px;padding:16px 0;background:#fff}:host ::ng-deep .row-container .field-column .label-and-asterisk-container{display:none!important}:host ::ng-deep .row-container .field-column mat-form-field{width:100%;margin-bottom:0}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper{background:transparent!important;padding:0!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mdc-notched-outline{display:none!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex{padding:0!important;border:none!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix{padding:0!important;min-height:32px!important;width:100%!important;border:none!important;border-bottom:1px solid #b7b7b7!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input{font-family:lusail,sans-serif!important;font-weight:400!important;font-size:16px!important;color:#000!important;padding:4px 0!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input::placeholder{color:#888!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input:disabled{color:#000!important}@media (max-width: 768px){:host ::ng-deep .row-container{border-bottom:none!important;flex-direction:row!important;flex-wrap:nowrap!important;gap:11px!important}:host ::ng-deep .row-container .field-column{flex:1 1 0!important;min-width:0!important;max-width:none!important}:host ::ng-deep .row-container .field-column .label-and-asterisk-container{display:flex!important;margin-bottom:8px}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .custom-label{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#000;display:block}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .required-asterisk{color:#ce3b3a;font-weight:500}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .optional-text{color:#888;font-size:14px}.table-header{display:none}.row-inputs{padding:0}.totals-box{width:100%!important}}.row-actions{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:8px;width:100%;padding-top:8px}.row-divider{height:1px;background-color:#0d4261;width:100%;margin-top:8px;flex-shrink:0;min-height:1px;position:relative;z-index:1}.save-btn,.edit-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:32px!important;min-width:114px!important;padding:0 12px!important;border-radius:9999px!important;border:1px solid #0d4261!important;background:#fff!important;cursor:pointer}.save-btn .button-text,.edit-btn .button-text{display:flex;align-items:center;gap:4px}.save-btn .button-text mat-icon,.edit-btn .button-text mat-icon{font-size:20px!important;width:20px!important;height:26px!important;color:#0d4261}.save-btn .button-text span,.edit-btn .button-text span{font-family:lusail,sans-serif;font-weight:400;font-size:16px;color:#0d4261;line-height:1}.save-btn:disabled,.edit-btn:disabled{opacity:.5;cursor:not-allowed}.delete-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:32px!important;min-width:114px!important;padding:0 12px!important;border-radius:9999px!important;border:1px solid #ce3b3a!important;background:#fff!important;cursor:pointer}.delete-btn .button-text{display:flex;align-items:center;gap:4px}.delete-btn .button-text mat-icon{font-size:20px!important;width:20px!important;height:26px!important;color:#ce3b3a}.delete-btn .button-text span{font-family:lusail,sans-serif;font-weight:400;font-size:16px;color:#ce3b3a;line-height:1}.add-item{width:100%}.add-item-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:44px!important;min-width:185px!important;padding:0 16px!important;border-radius:8px!important;border:1px solid #3e627b!important;background:#fff!important;cursor:pointer}.add-item-btn .button-text{display:flex;align-items:center;gap:4px}.add-item-btn .button-text mat-icon{font-size:24px!important;width:24px!important;height:30px!important;color:#0d4261}.add-item-btn .button-text span{font-weight:500;font-size:16px;color:#0d4261;line-height:1}.add-item-btn:disabled{opacity:.5;cursor:not-allowed}.totals-box{width:400px;max-width:100%}.total-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0}.total-row .label{font-weight:500;font-size:16px;color:#333}.total-row .value{font-weight:600;font-size:16px}.total-row.grand .label{font-weight:700}.total-row.grand .value{font-weight:700;font-size:18px}.totals-divider{height:1px;background-color:#e0e0e0;margin:8px 0}.red{color:#d9534f}.green{color:#0c7d5e}.dataNotFound{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.dataNotFound__icon{color:#0d4261;font-size:48px;height:50px;width:48px;margin-bottom:16px}.dataNotFound__title{color:#6a6a6a;font-size:18px;font-weight:700;margin-bottom:8px}.dataNotFound__subtitle{color:#6a6a6a;font-size:16px;font-weight:400}.col{padding-left:4px;display:flex;align-items:center;gap:2px}.line-total{font-weight:600;font-size:14px}.divider{border-top:1px solid #e0e0e0;margin:10px 0}::ng-deep .btn-background-primary,::ng-deep .btn-none-background-primary{margin:8px 0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "attachmentsAlwaysEditable", "emitOnValueChanges", "filterResetNonce", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
274
274
|
}
|
|
275
275
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ItemLineEditorComponent, decorators: [{
|
|
276
276
|
type: Component,
|
|
@@ -281,7 +281,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
281
281
|
MatIconModule,
|
|
282
282
|
BaseFormCanvasComponent,
|
|
283
283
|
TranslateModule
|
|
284
|
-
], template: "<div class=\"item-line-editor\">\r\n <div class=\"header-section\">\r\n <div class=\"header-content\">\r\n <div class=\"header-text\">\r\n <h3 class=\"title\">{{ title | translate }}</h3>\r\n <p class=\"subtitle\">{{ subtitle | translate }}</p>\r\n </div>\r\n </div>\r\n <div class=\"header-divider\"></div>\r\n </div>\r\n\r\n <div class=\"table-section\">\r\n @if (!noDataFound) {\r\n <div class=\"table-container\">\r\n <div class=\"table-header\" [ngStyle]=\"{ 'grid-template-columns': gridTemplate }\">\r\n <ng-container *ngFor=\"let f of headerFields; let idx = index\">\r\n <div class=\"header-cell\" [class.description-cell]=\"f.property === 'description'\">\r\n <span class=\"header-cell-text\">\r\n {{ labelOf(f) | translate }}\r\n <span *ngIf=\"f.required\" class=\"required-asterisk\">*</span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"table-body\">\r\n <div class=\"table-row-container\" *ngFor=\"let it of items; let i = index; trackBy: trackByIndex\">\r\n <div class=\"table-row\">\r\n <div class=\"row-inputs\" [attr.data-grid-columns]=\"gridTemplate\" [ngStyle]=\"{ '--grid-columns': gridTemplate }\">\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"editing[i]\"\r\n [emitOnValueChanges]=\"true\"\r\n [item]=\"it\"\r\n [currency]=\"currency\"\r\n (formUpdated)=\"onFormUpdated($event, i)\">\r\n </app-base-form-canvas>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row-actions\">\r\n <button *ngIf=\"editing[i]\" mat-stroked-button class=\"save-btn\" (click)=\"saveRow(i)\"\r\n [disabled]=\"!canSave(i)\">\r\n <div class=\"button-text\">\r\n <mat-icon>check</mat-icon>\r\n <span>{{ 'item-line.save' | translate }}</span>\r\n </div>\r\n </button>\r\n\r\n <button *ngIf=\"!editing[i] && editable\" mat-stroked-button class=\"edit-btn\"\r\n (click)=\"editRow(i)\">\r\n <div class=\"button-text\">\r\n <mat-icon>edit</mat-icon>\r\n <span>{{ 'item-line.edit' | translate }}</span>\r\n </div>\r\n </button>\r\n\r\n <button *ngIf=\"allowDelete && editable\" mat-stroked-button class=\"delete-btn\"\r\n (click)=\"deleteItem(i)\" type=\"button\">\r\n <div class=\"button-text\">\r\n <mat-icon>delete</mat-icon>\r\n <span>{{ 'item-line.delete' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <div class=\"row-divider\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (noDataFound) {\r\n <div class=\"dataNotFound\">\r\n <mat-icon class=\"dataNotFound__icon\">{{ noDataFoundIcon }}</mat-icon>\r\n <span class=\"dataNotFound__title\">{{ noDataFoundTitle | translate }}</span>\r\n <span class=\"dataNotFound__subtitle\">{{ noDataFoundSubtitle | translate }}</span>\r\n </div>\r\n }\r\n\r\n <div class=\"add-item\" *ngIf=\"allowAdd && editable\">\r\n <button mat-stroked-button class=\"add-item-btn\" (click)=\"addNewItem()\"\r\n [disabled]=\"!canAddNew\">\r\n <div class=\"button-text\">\r\n <mat-icon>add_circle_outline</mat-icon>\r\n <span>{{ 'item-line.addNewItem' | translate }}</span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Totals Box -->\r\n @if (!noDataFound) {\r\n <div class=\"totals-box\">\r\n <div class=\"total-row\">\r\n <span class=\"label\">{{ 'item-line.discount' | translate }}</span>\r\n <span class=\"value red\">{{ discountTotal | currency:currency }}</span>\r\n </div>\r\n\r\n <div class=\"total-row\">\r\n <span class=\"label\">{{ 'item-line.amount' | translate }}</span>\r\n <span class=\"value\">{{ subtotal | currency:currency }}</span>\r\n </div>\r\n\r\n <div class=\"totals-divider\"></div>\r\n\r\n <div class=\"total-row grand\">\r\n <span class=\"label\">{{ 'item-line.grandTotal' | translate }}</span>\r\n <span class=\"value green\">{{ grandTotal | currency:currency }}</span>\r\n </div>\r\n </div>\r\n }\r\n</div>", styles: [":host{display:block;width:100%}.item-line-editor{background:#fff;border:1px solid #f0eeee;border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:20px;width:100%;max-width:100%;box-sizing:border-box}.header-section{display:flex;flex-direction:column;gap:20px}.header-content{display:flex;align-items:center;justify-content:space-between}.header-text{display:flex;flex-direction:column;line-height:1.2}.title{font-weight:700;font-size:24px;color:#000;margin:0}.subtitle{font-weight:300;font-size:16px;color:#888;margin:0}.header-divider{height:2px;background-color:#0d4261;width:100%}.table-section{display:flex;flex-direction:column;gap:20px}.table-container{display:flex;flex-direction:column;gap:24px}.table-header{display:grid;width:100%;border-top:1px solid #0d4261;border-bottom:1px solid #0d4261}.header-cell{display:flex;align-items:center;justify-content:flex-start;height:48px;padding:0 20px;background:#fff}.header-cell-text{font-weight:400;font-size:16px;color:#0d4261;line-height:1.2;display:flex;align-items:center;gap:4px}.required-asterisk{color:#ce3b3a;font-weight:500}.table-body{width:100%}.table-row-container{display:flex;flex-direction:column;gap:16px;width:100%}.table-row{width:100%}.row-inputs{width:100%;padding:0 20px}:host ::ng-deep .row-container{border-bottom:1px solid #f0eeee}@media (max-width: 768px){:host ::ng-deep .row-container{border-bottom:none!important}}:host ::ng-deep .row-container .field-column{min-height:70px;padding:16px 0;background:#fff}:host ::ng-deep .row-container .field-column .label-and-asterisk-container{display:none!important}:host ::ng-deep .row-container .field-column mat-form-field{width:100%;margin-bottom:0}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper{background:transparent!important;padding:0!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mdc-notched-outline{display:none!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex{padding:0!important;border:none!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix{padding:0!important;min-height:32px!important;width:100%!important;border:none!important;border-bottom:1px solid #b7b7b7!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input{font-family:lusail,sans-serif!important;font-weight:400!important;font-size:16px!important;color:#000!important;padding:4px 0!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input::placeholder{color:#888!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input:disabled{color:#000!important}@media (max-width: 768px){:host ::ng-deep .row-container{border-bottom:none!important;flex-direction:row!important;flex-wrap:nowrap!important;gap:11px!important}:host ::ng-deep .row-container .field-column{flex:1 1 0!important;min-width:0!important;max-width:none!important}:host ::ng-deep .row-container .field-column .label-and-asterisk-container{display:flex!important;margin-bottom:8px}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .custom-label{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#000;display:block}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .required-asterisk{color:#ce3b3a;font-weight:500}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .optional-text{color:#888;font-size:14px}.table-header{display:none}.row-inputs{padding:0}.totals-box{width:100%!important}}.row-actions{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:8px;width:100%;padding-top:8px}.row-divider{height:1px;background-color:#0d4261;width:100%;margin-top:8px;flex-shrink:0;min-height:1px;position:relative;z-index:1}.save-btn,.edit-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:32px!important;min-width:114px!important;padding:0 12px!important;border-radius:9999px!important;border:1px solid #0d4261!important;background:#fff!important;cursor:pointer}.save-btn .button-text,.edit-btn .button-text{display:flex;align-items:center;gap:4px}.save-btn .button-text mat-icon,.edit-btn .button-text mat-icon{font-size:20px!important;width:20px!important;height:26px!important;color:#0d4261}.save-btn .button-text span,.edit-btn .button-text span{font-family:lusail,sans-serif;font-weight:400;font-size:16px;color:#0d4261;line-height:1}.save-btn:disabled,.edit-btn:disabled{opacity:.5;cursor:not-allowed}.delete-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:32px!important;min-width:114px!important;padding:0 12px!important;border-radius:9999px!important;border:1px solid #ce3b3a!important;background:#fff!important;cursor:pointer}.delete-btn .button-text{display:flex;align-items:center;gap:4px}.delete-btn .button-text mat-icon{font-size:20px!important;width:20px!important;height:26px!important;color:#ce3b3a}.delete-btn .button-text span{font-family:lusail,sans-serif;font-weight:400;font-size:16px;color:#ce3b3a;line-height:1}.add-item{width:100%}.add-item-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:44px!important;min-width:185px!important;padding:0 16px!important;border-radius:8px!important;border:1px solid #3e627b!important;background:#fff!important;cursor:pointer}.add-item-btn .button-text{display:flex;align-items:center;gap:4px}.add-item-btn .button-text mat-icon{font-size:24px!important;width:24px!important;height:30px!important;color:#0d4261}.add-item-btn .button-text span{font-weight:500;font-size:16px;color:#0d4261;line-height:1}.add-item-btn:disabled{opacity:.5;cursor:not-allowed}.totals-box{width:400px;max-width:100%}.total-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0}.total-row .label{font-weight:500;font-size:16px;color:#333}.total-row .value{font-weight:600;font-size:16px}.total-row.grand .label{font-weight:700}.total-row.grand .value{font-weight:700;font-size:18px}.totals-divider{height:1px;background-color:#e0e0e0;margin:8px 0}.red{color:#d9534f}.green{color:#0c7d5e}.dataNotFound{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.dataNotFound__icon{color:#0d4261;font-size:48px;height:50px;width:48px;margin-bottom:16px}.dataNotFound__title{color:#6a6a6a;font-size:18px;font-weight:700;margin-bottom:8px}.dataNotFound__subtitle{color:#6a6a6a;font-size:16px;font-weight:400}.col{padding-left:4px;display:flex;align-items:center;gap:2px}.line-total{font-weight:600;font-size:14px}.divider{border-top:1px solid #e0e0e0;margin:10px 0}::ng-deep .btn-background-primary,::ng-deep .btn-none-background-primary{margin:8px 0!important}\n"] }]
|
|
284
|
+
], template: "<div class=\"item-line-editor\">\n <div class=\"header-section\">\n <div class=\"header-content\">\n <div class=\"header-text\">\n <h3 class=\"title\">{{ title | translate }}</h3>\n <p class=\"subtitle\">{{ subtitle | translate }}</p>\n </div>\n </div>\n <div class=\"header-divider\"></div>\n </div>\n\n <div class=\"table-section\">\n @if (!noDataFound) {\n <div class=\"table-container\">\n <div class=\"table-header\" [ngStyle]=\"{ 'grid-template-columns': gridTemplate }\">\n <ng-container *ngFor=\"let f of headerFields; let idx = index\">\n <div class=\"header-cell\" [class.description-cell]=\"f.property === 'description'\">\n <span class=\"header-cell-text\">\n {{ labelOf(f) | translate }}\n <span *ngIf=\"f.required\" class=\"required-asterisk\">*</span>\n </span>\n </div>\n </ng-container>\n </div>\n\n <div class=\"table-body\">\n <div class=\"table-row-container\" *ngFor=\"let it of items; let i = index; trackBy: trackByIndex\">\n <div class=\"table-row\">\n <div class=\"row-inputs\" [attr.data-grid-columns]=\"gridTemplate\" [ngStyle]=\"{ '--grid-columns': gridTemplate }\">\n <app-base-form-canvas\n [pageInfo]=\"pageInfo\"\n [fields]=\"fields\"\n [editable]=\"editing[i]\"\n [emitOnValueChanges]=\"true\"\n [item]=\"it\"\n [currency]=\"currency\"\n (formUpdated)=\"onFormUpdated($event, i)\">\n </app-base-form-canvas>\n </div>\n </div>\n\n <div class=\"row-actions\">\n <button *ngIf=\"editing[i]\" mat-stroked-button class=\"save-btn\" (click)=\"saveRow(i)\"\n [disabled]=\"!canSave(i)\">\n <div class=\"button-text\">\n <mat-icon>check</mat-icon>\n <span>{{ 'item-line.save' | translate }}</span>\n </div>\n </button>\n\n <button *ngIf=\"!editing[i] && editable\" mat-stroked-button class=\"edit-btn\"\n (click)=\"editRow(i)\">\n <div class=\"button-text\">\n <mat-icon>edit</mat-icon>\n <span>{{ 'item-line.edit' | translate }}</span>\n </div>\n </button>\n\n <button *ngIf=\"allowDelete && editable\" mat-stroked-button class=\"delete-btn\"\n (click)=\"deleteItem(i)\" type=\"button\">\n <div class=\"button-text\">\n <mat-icon>delete</mat-icon>\n <span>{{ 'item-line.delete' | translate }}</span>\n </div>\n </button>\n </div>\n\n <div class=\"row-divider\"></div>\n </div>\n </div>\n </div>\n }\n\n @if (noDataFound) {\n <div class=\"dataNotFound\">\n <mat-icon class=\"dataNotFound__icon\">{{ noDataFoundIcon }}</mat-icon>\n <span class=\"dataNotFound__title\">{{ noDataFoundTitle | translate }}</span>\n <span class=\"dataNotFound__subtitle\">{{ noDataFoundSubtitle | translate }}</span>\n </div>\n }\n\n <div class=\"add-item\" *ngIf=\"allowAdd && editable\">\n <button mat-stroked-button class=\"add-item-btn\" (click)=\"addNewItem()\"\n [disabled]=\"!canAddNew\">\n <div class=\"button-text\">\n <mat-icon>add_circle_outline</mat-icon>\n <span>{{ 'item-line.addNewItem' | translate }}</span>\n </div>\n </button>\n </div>\n </div>\n\n <!-- Totals Box -->\n @if (!noDataFound) {\n <div class=\"totals-box\">\n <div class=\"total-row\">\n <span class=\"label\">{{ 'item-line.discount' | translate }}</span>\n <span class=\"value red\">{{ discountTotal | currency:currency }}</span>\n </div>\n\n <div class=\"total-row\">\n <span class=\"label\">{{ 'item-line.amount' | translate }}</span>\n <span class=\"value\">{{ subtotal | currency:currency }}</span>\n </div>\n\n <div class=\"totals-divider\"></div>\n\n <div class=\"total-row grand\">\n <span class=\"label\">{{ 'item-line.grandTotal' | translate }}</span>\n <span class=\"value green\">{{ grandTotal | currency:currency }}</span>\n </div>\n </div>\n }\n</div>", styles: [":host{display:block;width:100%}.item-line-editor{background:#fff;border:1px solid #f0eeee;border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:20px;width:100%;max-width:100%;box-sizing:border-box}.header-section{display:flex;flex-direction:column;gap:20px}.header-content{display:flex;align-items:center;justify-content:space-between}.header-text{display:flex;flex-direction:column;line-height:1.2}.title{font-weight:700;font-size:24px;color:#000;margin:0}.subtitle{font-weight:300;font-size:16px;color:#888;margin:0}.header-divider{height:2px;background-color:#0d4261;width:100%}.table-section{display:flex;flex-direction:column;gap:20px}.table-container{display:flex;flex-direction:column;gap:24px}.table-header{display:grid;width:100%;border-top:1px solid #0d4261;border-bottom:1px solid #0d4261}.header-cell{display:flex;align-items:center;justify-content:flex-start;height:48px;padding:0 20px;background:#fff}.header-cell-text{font-weight:400;font-size:16px;color:#0d4261;line-height:1.2;display:flex;align-items:center;gap:4px}.required-asterisk{color:#ce3b3a;font-weight:500}.table-body{width:100%}.table-row-container{display:flex;flex-direction:column;gap:16px;width:100%}.table-row{width:100%}.row-inputs{width:100%;padding:0 20px}:host ::ng-deep .row-container{border-bottom:1px solid #f0eeee}@media (max-width: 768px){:host ::ng-deep .row-container{border-bottom:none!important}}:host ::ng-deep .row-container .field-column{min-height:70px;padding:16px 0;background:#fff}:host ::ng-deep .row-container .field-column .label-and-asterisk-container{display:none!important}:host ::ng-deep .row-container .field-column mat-form-field{width:100%;margin-bottom:0}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper{background:transparent!important;padding:0!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mdc-notched-outline{display:none!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex{padding:0!important;border:none!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix{padding:0!important;min-height:32px!important;width:100%!important;border:none!important;border-bottom:1px solid #b7b7b7!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input{font-family:lusail,sans-serif!important;font-weight:400!important;font-size:16px!important;color:#000!important;padding:4px 0!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input::placeholder{color:#888!important}:host ::ng-deep .row-container .field-column mat-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix input:disabled{color:#000!important}@media (max-width: 768px){:host ::ng-deep .row-container{border-bottom:none!important;flex-direction:row!important;flex-wrap:nowrap!important;gap:11px!important}:host ::ng-deep .row-container .field-column{flex:1 1 0!important;min-width:0!important;max-width:none!important}:host ::ng-deep .row-container .field-column .label-and-asterisk-container{display:flex!important;margin-bottom:8px}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .custom-label{font-family:Lusail,sans-serif;font-weight:500;font-size:16px;line-height:1.2;color:#000;display:block}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .required-asterisk{color:#ce3b3a;font-weight:500}:host ::ng-deep .row-container .field-column .label-and-asterisk-container .optional-text{color:#888;font-size:14px}.table-header{display:none}.row-inputs{padding:0}.totals-box{width:100%!important}}.row-actions{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:8px;width:100%;padding-top:8px}.row-divider{height:1px;background-color:#0d4261;width:100%;margin-top:8px;flex-shrink:0;min-height:1px;position:relative;z-index:1}.save-btn,.edit-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:32px!important;min-width:114px!important;padding:0 12px!important;border-radius:9999px!important;border:1px solid #0d4261!important;background:#fff!important;cursor:pointer}.save-btn .button-text,.edit-btn .button-text{display:flex;align-items:center;gap:4px}.save-btn .button-text mat-icon,.edit-btn .button-text mat-icon{font-size:20px!important;width:20px!important;height:26px!important;color:#0d4261}.save-btn .button-text span,.edit-btn .button-text span{font-family:lusail,sans-serif;font-weight:400;font-size:16px;color:#0d4261;line-height:1}.save-btn:disabled,.edit-btn:disabled{opacity:.5;cursor:not-allowed}.delete-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:32px!important;min-width:114px!important;padding:0 12px!important;border-radius:9999px!important;border:1px solid #ce3b3a!important;background:#fff!important;cursor:pointer}.delete-btn .button-text{display:flex;align-items:center;gap:4px}.delete-btn .button-text mat-icon{font-size:20px!important;width:20px!important;height:26px!important;color:#ce3b3a}.delete-btn .button-text span{font-family:lusail,sans-serif;font-weight:400;font-size:16px;color:#ce3b3a;line-height:1}.add-item{width:100%}.add-item-btn{display:flex;align-items:center;justify-content:center;gap:4px;height:44px!important;min-width:185px!important;padding:0 16px!important;border-radius:8px!important;border:1px solid #3e627b!important;background:#fff!important;cursor:pointer}.add-item-btn .button-text{display:flex;align-items:center;gap:4px}.add-item-btn .button-text mat-icon{font-size:24px!important;width:24px!important;height:30px!important;color:#0d4261}.add-item-btn .button-text span{font-weight:500;font-size:16px;color:#0d4261;line-height:1}.add-item-btn:disabled{opacity:.5;cursor:not-allowed}.totals-box{width:400px;max-width:100%}.total-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0}.total-row .label{font-weight:500;font-size:16px;color:#333}.total-row .value{font-weight:600;font-size:16px}.total-row.grand .label{font-weight:700}.total-row.grand .value{font-weight:700;font-size:18px}.totals-divider{height:1px;background-color:#e0e0e0;margin:8px 0}.red{color:#d9534f}.green{color:#0c7d5e}.dataNotFound{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.dataNotFound__icon{color:#0d4261;font-size:48px;height:50px;width:48px;margin-bottom:16px}.dataNotFound__title{color:#6a6a6a;font-size:18px;font-weight:700;margin-bottom:8px}.dataNotFound__subtitle{color:#6a6a6a;font-size:16px;font-weight:400}.col{padding-left:4px;display:flex;align-items:center;gap:2px}.line-total{font-weight:600;font-size:14px}.divider{border-top:1px solid #e0e0e0;margin:10px 0}::ng-deep .btn-background-primary,::ng-deep .btn-none-background-primary{margin:8px 0!important}\n"] }]
|
|
285
285
|
}], propDecorators: { noDataFoundIcon: [{
|
|
286
286
|
type: Input
|
|
287
287
|
}], noDataFoundTitle: [{
|
|
@@ -319,4 +319,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
319
319
|
}], editStateChange: [{
|
|
320
320
|
type: Output
|
|
321
321
|
}] } });
|
|
322
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS1saW5lLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2l0ZW0tbGluZS1lZGl0b3IvaXRlbS1saW5lLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2l0ZW0tbGluZS1lZGl0b3IvaXRlbS1saW5lLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFrQixXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUd2RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQW1CcEQsTUFBTSxPQUFPLHVCQUF1QjtJQWhCcEM7UUF5QlcsYUFBUSxHQUFZLElBQUksQ0FBQztRQUN6QixnQkFBVyxHQUFZLElBQUksQ0FBQztRQUM1QixhQUFRLEdBQVksSUFBSSxDQUFDO1FBRXpCLFdBQU0sR0FBZ0IsRUFBRSxDQUFDO1FBS3pCLFVBQUssR0FBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXRDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUM3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RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7K0dBblRVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDRtQkMzQnBDLDhtSkFpSE0seStORGpHRixZQUFZLCtZQUNaLFdBQVcsOEJBQ1gsZUFBZSwyTkFDZixhQUFhLG9MQUNiLHVCQUF1QixtY0FDdkIsZUFBZTs7NEZBTU4sdUJBQXVCO2tCQWhCbkMsU0FBUzsrQkFDRSxzQkFBc0IsY0FFcEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2QixlQUFlO3FCQUNoQjs4QkFNUSxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEZvcm1zTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcclxuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xyXG5pbXBvcnQge0Jhc2VGb3JtQ2FudmFzQ29tcG9uZW50fSBmcm9tIFwiLi4vYmFzZS1mb3JtLWNhbnZhcy9iYXNlLWZvcm0tY2FudmFzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0ZpZWxkSW5mbywgRU1QVFlfUEFHRV9JTkZPLCBQYWdlSW5mb30gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcclxuaW1wb3J0IHtGb3JtR3JvdXB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHtMaW5lSXRlbX0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvbGluZS1pdGVtLm1vZGVsXCI7XHJcbmltcG9ydCB7SXRlbXNUb3RhbH0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvaXRlbXMtdG90YWwubW9kZWxcIjtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtaXRlbS1saW5lLWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2l0ZW0tbGluZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgQmFzZUZvcm1DYW52YXNDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGVcclxuICBdLFxyXG4gIHN0eWxlVXJsczogWycuL2l0ZW0tbGluZS1lZGl0b3IuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBJdGVtTGluZUVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcclxuICBASW5wdXQoKSBub0RhdGFGb3VuZEljb246IHN0cmluZztcclxuICBASW5wdXQoKSBub0RhdGFGb3VuZFRpdGxlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbm9EYXRhRm91bmRTdWJ0aXRsZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBwYWdlSW5mbzogUGFnZUluZm87XHJcbiAgQElucHV0KCkgY29sdW1uSGVhZGVyV2lkdGhzOiBzdHJpbmdbXTtcclxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHN1YnRpdGxlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYWxsb3dBZGQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGFsbG93RGVsZXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBlZGl0YWJsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY3VycmVuY3k6IHN0cmluZztcclxuICBASW5wdXQoKSBmaWVsZHM6IEZpZWxkSW5mb1tdID0gW107XHJcblxyXG4gIHByaXZhdGUgYmFzZUZpZWxkc1NuYXBzaG90OiBGaWVsZEluZm9bXSB8IHVuZGVmaW5lZDtcclxuXHJcblxyXG4gIEBJbnB1dCgpIGl0ZW1zOiBMaW5lSXRlbVtdID0gW3RoaXMuYmxhbmtJdGVtKCldO1xyXG5cclxuICBAT3V0cHV0KCkgaXRlbXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPExpbmVJdGVtW10+KCk7XHJcbiAgQE91dHB1dCgpIGl0ZW1TYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KCkgaXRlbURlbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaW5kZXg6IG51bWJlciB9PigpO1xyXG4gIEBPdXRwdXQoKSB0b3RhbHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEl0ZW1zVG90YWw+KCk7XHJcbiAgQE91dHB1dCgpIGVkaXRTdGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpbmRleDogbnVtYmVyLCBlZGl0aW5nOiBib29sZWFuIH0+KCk7XHJcbiAgZm9ybVJlZnM6IChGb3JtR3JvdXAgfCB1bmRlZmluZWQpW10gPSBbXTtcclxuXHJcbiAgZWRpdGluZzogYm9vbGVhbltdID0gW3RydWVdO1xyXG4gIG5vRGF0YUZvdW5kOiBib29sZWFuID0gZmFsc2VcclxuXHJcbiAgaXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmlubmVyV2lkdGggPD0gNzY4O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5maWVsZHMgJiYgdGhpcy5maWVsZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmFwcGx5TW9iaWxlRmllbGRNb2RpZmljYXRpb25zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5TW9iaWxlRmllbGRNb2RpZmljYXRpb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNNb2JpbGUoKSAmJiB0aGlzLmZpZWxkcykge1xyXG4gICAgICB0aGlzLmZpZWxkcyA9IHRoaXMuZmllbGRzLm1hcChmaWVsZCA9PiB7XHJcbiAgICAgICAgY29uc3QgZmllbGRDb3B5ID0geyAuLi5maWVsZCB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChbJ2l0ZW1Db2RlJywgJ2Rlc2NyaXB0aW9uJywgJ3VuaXRQcmljZScsICdxdWFudGl0eScsICdkaXNjb3VudCddLmluY2x1ZGVzKGZpZWxkLnByb3BlcnR5KSkge1xyXG4gICAgICAgICAgZmllbGRDb3B5LmhpZGVMYWJlbCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFsnZGVzY3JpcHRpb24nXS5pbmNsdWRlcyhmaWVsZC5wcm9wZXJ0eSkpIHtcclxuICAgICAgICAgIGZpZWxkQ29weS5yb3cgPSAyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBpZiAoWyd1bml0UHJpY2UnLCAncXVhbnRpdHknLCAnZGlzY291bnQnXS5pbmNsdWRlcyhmaWVsZC5wcm9wZXJ0eSkpIHtcclxuICAgICAgICAgIGZpZWxkQ29weS5yb3cgPSAzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBpZiAoZmllbGQucHJvcGVydHkgPT09ICd0b3RhbEFtb3VudCcpIHtcclxuICAgICAgICAgIGZpZWxkQ29weS52aXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBmaWVsZENvcHk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBnZXQgaGVhZGVyRmllbGRzKCk6IEZpZWxkSW5mb1tdIHtcclxuICAgIHJldHVybiAodGhpcy5maWVsZHMgfHwgW10pLmZpbHRlcihmID0+IGYudmlzaWJsZSAmJiBmLnJvdyA9PT0gMSAmJiBmLnR5cGUgIT09ICdzcGFjZXInKTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNJbnZhbGlkRWRpdGluZ0Zvcm0oKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybVJlZnMgfHwgIXRoaXMuZWRpdGluZykgcmV0dXJuIGZhbHNlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZvcm1SZWZzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGZybSA9IHRoaXMuZm9ybVJlZnNbaV07XHJcbiAgICAgIGlmICh0aGlzLmVkaXRpbmdbaV0gJiYgZnJtICYmIGZybS5pbnZhbGlkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldCBjYW5BZGROZXcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuaGFzSW52YWxpZEVkaXRpbmdGb3JtO1xyXG4gIH1cclxuXHJcbiAgY2FuU2F2ZShpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBmcm0gPSB0aGlzLmZvcm1SZWZzPy5baW5kZXhdO1xyXG4gICAgaWYgKCF0aGlzLmVkaXRpbmc/LltpbmRleF0pIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuICEhZnJtICYmIGZybS52YWxpZDtcclxuICB9XHJcblxyXG4gIGxhYmVsT2YoZmllbGQ6IEZpZWxkSW5mbyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjb25maWd1cmVkS2V5ID0gZmllbGQubGFiZWwgPyBmaWVsZC5sYWJlbCA6IGZpZWxkLnByb3BlcnR5O1xyXG4gICAgcmV0dXJuIGNvbmZpZ3VyZWRLZXkuc3RhcnRzV2l0aCh0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24pXHJcbiAgICAgID8gY29uZmlndXJlZEtleVxyXG4gICAgICA6IGAke3RoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbn0uJHtjb25maWd1cmVkS2V5fWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJsYW5rSXRlbSgpIHtcclxuICAgIHJldHVybiB7IGl0ZW1MaW5lOiAnJywgZGVzY3JpcHRpb246ICcnLCB1bml0UHJpY2U6IDAsIHF1YW50aXR5OiAxLCBkaXNjb3VudDogMCwgdG90YWxBbW91bnQ6IDAgfTtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10gJiYgY2hhbmdlc1snaXRlbXMnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgY29uc3QgbGVuID0gKHRoaXMuaXRlbXMgfHwgW10pLmxlbmd0aDtcclxuICAgICAgdGhpcy5ub0RhdGFGb3VuZCA9IGxlbiA8PSAwO1xyXG4gICAgICBpZiAoY2hhbmdlc1snaXRlbXMnXS5maXJzdENoYW5nZSkge1xyXG4gICAgICAgIHRoaXMuZm9ybVJlZnMgPSBuZXcgQXJyYXkobGVuKS5maWxsKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgdGhpcy5lZGl0aW5nID0gbGVuID4gMCA/IG5ldyBBcnJheShsZW4pLmZpbGwoZmFsc2UpIDogW3RydWVdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IG9sZExlbiA9IHRoaXMuZWRpdGluZz8ubGVuZ3RoIHx8IDA7XHJcblxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuZm9ybVJlZnMpIHRoaXMuZm9ybVJlZnMgPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5mb3JtUmVmcy5sZW5ndGggPiBsZW4pIHtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZnMgPSB0aGlzLmZvcm1SZWZzLnNsaWNlKDAsIGxlbik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHdoaWxlICh0aGlzLmZvcm1SZWZzLmxlbmd0aCA8IGxlbikgdGhpcy5mb3JtUmVmcy5wdXNoKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmVkaXRpbmcpIHRoaXMuZWRpdGluZyA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLmVkaXRpbmcubGVuZ3RoID4gbGVuKSB7XHJcbiAgICAgICAgICB0aGlzLmVkaXRpbmcgPSB0aGlzLmVkaXRpbmcuc2xpY2UoMCwgbGVuKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuZWRpdGluZy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRpbmdbaV0gPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIGlmIChvbGRMZW4gPT09IDAgJiYgbGVuID4gMCAmJiB0aGlzLmVkaXRpbmdbMF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5lZGl0aW5nWzBdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbWl0VG90YWxzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snZmllbGRzJ10gJiYgY2hhbmdlc1snZmllbGRzJ10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuYmFzZUZpZWxkc1NuYXBzaG90ID0gKHRoaXMuZmllbGRzIHx8IFtdKS5tYXAoZiA9PiAoey4uLmZ9KSk7XHJcbiAgICAgIHRoaXMuYXBwbHlNb2JpbGVGaWVsZE1vZGlmaWNhdGlvbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRm9ybVVwZGF0ZWQoZm9ybTogRm9ybUdyb3VwLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBkaXNjb3VudEN0cmwgPSBmb3JtLmdldCgnZGlzY291bnQnKTtcclxuXHJcbiAgICBpZiAoZGlzY291bnRDdHJsKSB7XHJcblxyXG4gICAgICBjb25zdCBleGlzdGluZyA9IGRpc2NvdW50Q3RybC52YWxpZGF0b3IgPyBbZGlzY291bnRDdHJsLnZhbGlkYXRvcl0gOiBbXTtcclxuICAgICAgZGlzY291bnRDdHJsLnNldFZhbGlkYXRvcnMoW1xyXG4gICAgICAgIC4uLmV4aXN0aW5nLFxyXG4gICAgICAgIHRoaXMuZGlzY291bnRWYWxpZGF0b3IoaW5kZXgpXHJcbiAgICAgIF0pO1xyXG5cclxuICAgICAgZGlzY291bnRDdHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZm9ybVJlZnNbaW5kZXhdID0gZm9ybTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGVtaXR0ZWRJdGVtcyA9IHRoaXMuaXRlbXMubWFwKChpdCwgaSkgPT4ge1xyXG4gICAgICAgIGlmIChpICE9PSBpbmRleCkgcmV0dXJuIGl0O1xyXG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmdldEN1cnJlbnRWYWx1ZXMoaSkgfHwgaXQgfHwge307XHJcbiAgICAgICAgY29uc3QgdXAgPSBOdW1iZXIodj8udW5pdFByaWNlIHx8IDApO1xyXG4gICAgICAgIGNvbnN0IHEgPSBOdW1iZXIodj8ucXVhbnRpdHkgfHwgMCk7XHJcbiAgICAgICAgY29uc3QgZGlzYyA9IE51bWJlcih2Py5kaXNjb3VudCB8fCAwKTtcclxuICAgICAgICBjb25zdCB0b3RhbCA9IE1hdGgubWF4KDAsIHVwICogcSAtIGRpc2MpO1xyXG4gICAgICAgIHJldHVybiB7IC4uLml0LCAuLi52LCB0b3RhbCB9O1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5pdGVtc0NoYW5nZS5lbWl0KGVtaXR0ZWRJdGVtcyk7XHJcbiAgICB9IGNhdGNoIChfZSkge1xyXG5cclxuICAgIH1cclxuICAgIHRoaXMuZW1pdFRvdGFscygpO1xyXG4gIH1cclxuXHJcbiAgYWRkTmV3SXRlbSgpIHtcclxuICAgIHRoaXMuaXRlbXMucHVzaCh0aGlzLmJsYW5rSXRlbSgpKTtcclxuICAgIHRoaXMuZm9ybVJlZnMucHVzaCh1bmRlZmluZWQpO1xyXG4gICAgdGhpcy5lZGl0aW5nLnB1c2godHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5yZXN0b3JlRmllbGRzRnJvbVNuYXBzaG90KCk7XHJcbiAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQoWy4uLnRoaXMuaXRlbXNdKTtcclxuICAgIHRoaXMuZWRpdFN0YXRlQ2hhbmdlLmVtaXQoeyBpbmRleDogdGhpcy5pdGVtcy5sZW5ndGggLSAxLCBlZGl0aW5nOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5lbWl0VG90YWxzKCk7XHJcbiAgfVxyXG5cclxuICBzYXZlUm93KGluZGV4OiBudW1iZXIpIHtcclxuXHJcbiAgICBjb25zdCBmcm0gPSB0aGlzLmZvcm1SZWZzPy5baW5kZXhdO1xyXG4gICAgaWYgKHRoaXMuZWRpdGluZ1tpbmRleF0gJiYgZnJtICYmIGZybS5pbnZhbGlkKSB7XHJcblxyXG4gICAgICBPYmplY3QudmFsdWVzKGZybS5jb250cm9scykuZm9yRWFjaChjID0+IGMubWFya0FzVG91Y2hlZCgpKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdiA9IHRoaXMuZ2V0Q3VycmVudFZhbHVlcyhpbmRleCk7XHJcbiAgICBpZiAoIXYpIHJldHVybjtcclxuICAgIHRoaXMuaXRlbXNbaW5kZXhdID0geyAuLi52LCB0b3RhbDogdGhpcy5jYWxjTGluZVRvdGFsKGluZGV4KSB9O1xyXG5cclxuICAgIHRoaXMuZWRpdGluZ1tpbmRleF0gPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQoWy4uLnRoaXMuaXRlbXNdKTtcclxuICAgIHRoaXMuaXRlbVNhdmVkLmVtaXQoeyBpbmRleCwgaXRlbTogdGhpcy5pdGVtc1tpbmRleF0gfSk7XHJcbiAgICB0aGlzLmVkaXRTdGF0ZUNoYW5nZS5lbWl0KHsgaW5kZXgsIGVkaXRpbmc6IGZhbHNlIH0pO1xyXG4gICAgdGhpcy5lbWl0VG90YWxzKCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVJdGVtKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5pdGVtcy5sZW5ndGgpIHJldHVybjtcclxuICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMuZm9ybVJlZnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMuZWRpdGluZy5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cclxuICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdChbLi4udGhpcy5pdGVtc10pO1xyXG4gICAgdGhpcy5pdGVtRGVsZXRlZC5lbWl0KHsgaW5kZXggfSk7XHJcbiAgICB0aGlzLmVtaXRUb3RhbHMoKTtcclxuICB9XHJcblxyXG4gIGNsZWFyQWxsKCkge1xyXG4gICAgdGhpcy5pdGVtcyA9IFt0aGlzLmJsYW5rSXRlbSgpXTtcclxuICAgIHRoaXMuZm9ybVJlZnMgPSBbdW5kZWZpbmVkXTtcclxuICAgIHRoaXMuZWRpdGluZyA9IFt0cnVlXTtcclxuICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdChbLi4udGhpcy5pdGVtc10pO1xyXG4gICAgdGhpcy5lbWl0VG90YWxzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50VmFsdWVzKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGlzRWRpdGluZyA9IHRoaXMuZWRpdGluZ1tpbmRleF07XHJcbiAgICBjb25zdCBmcm0gPSB0aGlzLmZvcm1SZWZzW2luZGV4XTtcclxuXHJcbiAgICBjb25zdCBiYXNlID0gdGhpcy5pdGVtc1tpbmRleF0gfHwge307XHJcbiAgICBjb25zdCBzcmMgPSAoaXNFZGl0aW5nICYmIGZybSkgPyB7IC4uLmJhc2UsIC4uLmZybS52YWx1ZSB9IDogeyAuLi5iYXNlIH07XHJcbiAgICBpZiAoIXNyYykgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCB2YWw6IGFueSA9IHsgLi4uc3JjIH07XHJcbiAgICB2YWwudW5pdFByaWNlID0gdmFsLnVuaXRQcmljZSA9PT0gbnVsbCB8fCB2YWwudW5pdFByaWNlID09PSAnJyA/IG51bGwgOiBOdW1iZXIodmFsLnVuaXRQcmljZSk7XHJcbiAgICB2YWwucXVhbnRpdHkgPSB2YWwucXVhbnRpdHkgPT09IG51bGwgfHwgdmFsLnF1YW50aXR5ID09PSAnJyA/IG51bGwgOiBOdW1iZXIodmFsLnF1YW50aXR5KTtcclxuICAgIHZhbC5kaXNjb3VudCA9IHZhbC5kaXNjb3VudCA9PT0gbnVsbCB8fCB2YWwuZGlzY291bnQgPT09ICcnID8gbnVsbCA6IE51bWJlcih2YWwuZGlzY291bnQpO1xyXG4gICAgcmV0dXJuIHZhbDtcclxuICB9XHJcblxyXG4gIGNhbGNMaW5lVG90YWwoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBjb25zdCB2YWwgPSB0aGlzLmdldEN1cnJlbnRWYWx1ZXMoaW5kZXgpO1xyXG4gICAgaWYgKCF2YWwpIHJldHVybiBOdW1iZXIodGhpcy5pdGVtc1tpbmRleF0/LnRvdGFsQW1vdW50IHx8IDApO1xyXG4gICAgcmV0dXJuIE1hdGgubWF4KDAsICh2YWwudW5pdFByaWNlIHx8IDApICogKHZhbC5xdWFudGl0eSB8fCAwKSAtICh2YWwuZGlzY291bnQgfHwgMCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHN1YnRvdGFsKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHMsIF9pdCwgaSkgPT4ge1xyXG4gICAgICBjb25zdCB2ID0gdGhpcy5nZXRDdXJyZW50VmFsdWVzKGkpO1xyXG4gICAgICBjb25zdCB1cCA9IE51bWJlcih2Py51bml0UHJpY2UgfHwgMCk7XHJcbiAgICAgIGNvbnN0IHEgPSBOdW1iZXIodj8ucXVhbnRpdHkgfHwgMCk7XHJcbiAgICAgIHJldHVybiBzICsgKHVwICogcSk7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIGdldCBkaXNjb3VudFRvdGFsKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKHMsIF9pdCwgaSkgPT4ge1xyXG4gICAgICBjb25zdCB2ID0gdGhpcy5nZXRDdXJyZW50VmFsdWVzKGkpO1xyXG4gICAgICByZXR1cm4gcyArIE51bWJlcih2Py5kaXNjb3VudCB8fCAwKTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdyYW5kVG90YWwoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLnJlZHVjZSgocywgX2l0LCBpKSA9PiBzICsgdGhpcy5jYWxjTGluZVRvdGFsKGkpLCAwKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyLCBfaXRlbTogYW55KSB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBlZGl0Um93KGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuZWRpdGluZ1tpbmRleF0gPSB0cnVlO1xyXG4gICAgdGhpcy5yZXN0b3JlRmllbGRzRnJvbVNuYXBzaG90KCk7XHJcbiAgICB0aGlzLmVkaXRTdGF0ZUNoYW5nZS5lbWl0KHsgaW5kZXgsIGVkaXRpbmc6IHRydWUgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRUb3RhbHMoKSB7XHJcbiAgICB0aGlzLnRvdGFsc0NoYW5nZS5lbWl0KHtcclxuICAgICAgc3VidG90YWw6IHRoaXMuc3VidG90YWwsXHJcbiAgICAgIGRpc2NvdW50OiB0aGlzLmRpc2NvdW50VG90YWwsXHJcbiAgICAgIGdyYW5kVG90YWw6IHRoaXMuZ3JhbmRUb3RhbFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc3RvcmVGaWVsZHNGcm9tU25hcHNob3QoKSB7XHJcbiAgICBpZiAodGhpcy5iYXNlRmllbGRzU25hcHNob3QgJiYgdGhpcy5iYXNlRmllbGRzU25hcHNob3QubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZmllbGRzID0gdGhpcy5iYXNlRmllbGRzU25hcHNob3QubWFwKGYgPT4gKHsuLi5mfSkpO1xyXG4gICAgICB0aGlzLmFwcGx5TW9iaWxlRmllbGRNb2RpZmljYXRpb25zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZ3JpZFRlbXBsYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29sdW1uSGVhZGVyV2lkdGhzLmpvaW4oJyAnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGlzY291bnRWYWxpZGF0b3IoaW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgY29uc3QgdmFsID0gdGhpcy5nZXRDdXJyZW50VmFsdWVzKGluZGV4KTtcclxuICAgICAgaWYgKCF2YWwpIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgY29uc3QgdG90YWxCZWZvcmVEaXNjb3VudCA9ICh2YWwudW5pdFByaWNlID8/IDApICogKHZhbC5xdWFudGl0eSA/PyAwKTtcclxuICAgICAgY29uc3QgZGlzY291bnQgPSB2YWwuZGlzY291bnQgPz8gbnVsbDtcclxuXHJcbiAgICAgIGlmIChkaXNjb3VudCAhPSBudWxsICYmIGRpc2NvdW50ID4gdG90YWxCZWZvcmVEaXNjb3VudCkge1xyXG4gICAgICAgIHJldHVybiB7IGRpc2NvdW50VG9vSGlnaDogdHJ1ZSB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaXRlbS1saW5lLWVkaXRvclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItc2VjdGlvblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImhlYWRlci1jb250ZW50XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItdGV4dFwiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cInRpdGxlXCI+e3sgdGl0bGUgfCB0cmFuc2xhdGUgfX08L2gzPlxyXG4gICAgICAgIDxwIGNsYXNzPVwic3VidGl0bGVcIj57eyBzdWJ0aXRsZSB8IHRyYW5zbGF0ZSB9fTwvcD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItZGl2aWRlclwiPjwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwidGFibGUtc2VjdGlvblwiPlxyXG4gICAgQGlmICghbm9EYXRhRm91bmQpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIiBbbmdTdHlsZV09XCJ7ICdncmlkLXRlbXBsYXRlLWNvbHVtbnMnOiBncmlkVGVtcGxhdGUgfVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZiBvZiBoZWFkZXJGaWVsZHM7IGxldCBpZHggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWNlbGxcIiBbY2xhc3MuZGVzY3JpcHRpb24tY2VsbF09XCJmLnByb3BlcnR5ID09PSAnZGVzY3JpcHRpb24nXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItY2VsbC10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBsYWJlbE9mKGYpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImYucmVxdWlyZWRcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcm93LWNvbnRhaW5lclwiICpuZ0Zvcj1cImxldCBpdCBvZiBpdGVtczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWlucHV0c1wiIFthdHRyLmRhdGEtZ3JpZC1jb2x1bW5zXT1cImdyaWRUZW1wbGF0ZVwiIFtuZ1N0eWxlXT1cInsgJy0tZ3JpZC1jb2x1bW5zJzogZ3JpZFRlbXBsYXRlIH1cIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtYmFzZS1mb3JtLWNhbnZhc1xyXG4gICAgICAgICAgICAgICAgICBbcGFnZUluZm9dPVwicGFnZUluZm9cIlxyXG4gICAgICAgICAgICAgICAgICBbZmllbGRzXT1cImZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgICAgIFtlZGl0YWJsZV09XCJlZGl0aW5nW2ldXCJcclxuICAgICAgICAgICAgICAgICAgW2VtaXRPblZhbHVlQ2hhbmdlc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRcIlxyXG4gICAgICAgICAgICAgICAgICBbY3VycmVuY3ldPVwiY3VycmVuY3lcIlxyXG4gICAgICAgICAgICAgICAgICAoZm9ybVVwZGF0ZWQpPVwib25Gb3JtVXBkYXRlZCgkZXZlbnQsIGkpXCI+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1iYXNlLWZvcm0tY2FudmFzPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJlZGl0aW5nW2ldXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwic2F2ZS1idG5cIiAoY2xpY2spPVwic2F2ZVJvdyhpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblNhdmUoaSlcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2hlY2s8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnaXRlbS1saW5lLnNhdmUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZWRpdGluZ1tpXSAmJiBlZGl0YWJsZVwiIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cImVkaXQtYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0Um93KGkpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnaXRlbS1saW5lLmVkaXQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhbGxvd0RlbGV0ZSAmJiBlZGl0YWJsZVwiIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cImRlbGV0ZS1idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUl0ZW0oaSlcIiB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdpdGVtLWxpbmUuZGVsZXRlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAobm9EYXRhRm91bmQpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImRhdGFOb3RGb3VuZFwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImRhdGFOb3RGb3VuZF9faWNvblwiPnt7IG5vRGF0YUZvdW5kSWNvbiB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRhTm90Rm91bmRfX3RpdGxlXCI+e3sgbm9EYXRhRm91bmRUaXRsZSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGFOb3RGb3VuZF9fc3VidGl0bGVcIj57eyBub0RhdGFGb3VuZFN1YnRpdGxlIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYWRkLWl0ZW1cIiAqbmdJZj1cImFsbG93QWRkICYmIGVkaXRhYmxlXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwiYWRkLWl0ZW0tYnRuXCIgKGNsaWNrKT1cImFkZE5ld0l0ZW0oKVwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5BZGROZXdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXRleHRcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5hZGRfY2lyY2xlX291dGxpbmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPHNwYW4+e3sgJ2l0ZW0tbGluZS5hZGROZXdJdGVtJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBUb3RhbHMgQm94IC0tPlxyXG4gIEBpZiAoIW5vRGF0YUZvdW5kKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidG90YWxzLWJveFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidG90YWwtcm93XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPnt7ICdpdGVtLWxpbmUuZGlzY291bnQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUgcmVkXCI+e3sgZGlzY291bnRUb3RhbCB8IGN1cnJlbmN5OmN1cnJlbmN5IH19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0b3RhbC1yb3dcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+e3sgJ2l0ZW0tbGluZS5hbW91bnQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57eyBzdWJ0b3RhbCB8IGN1cnJlbmN5OmN1cnJlbmN5IH19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0b3RhbHMtZGl2aWRlclwiPjwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInRvdGFsLXJvdyBncmFuZFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj57eyAnaXRlbS1saW5lLmdyYW5kVG90YWwnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUgZ3JlZW5cIj57eyBncmFuZFRvdGFsIHwgY3VycmVuY3k6Y3VycmVuY3kgfX08L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG48L2Rpdj4iXX0=
|
|
322
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS1saW5lLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2l0ZW0tbGluZS1lZGl0b3IvaXRlbS1saW5lLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2l0ZW0tbGluZS1lZGl0b3IvaXRlbS1saW5lLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFrQixXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUd2RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQW1CcEQsTUFBTSxPQUFPLHVCQUF1QjtJQWhCcEM7UUF5QlcsYUFBUSxHQUFZLElBQUksQ0FBQztRQUN6QixnQkFBVyxHQUFZLElBQUksQ0FBQztRQUM1QixhQUFRLEdBQVksSUFBSSxDQUFDO1FBRXpCLFdBQU0sR0FBZ0IsRUFBRSxDQUFDO1FBS3pCLFVBQUssR0FBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXRDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUM3QyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQWdDLENBQUM7UUFDN0QsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUNwRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7UUFDOUMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBdUMsQ0FBQztRQUNwRixhQUFRLEdBQThCLEVBQUUsQ0FBQztRQUV6QyxZQUFPLEdBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixnQkFBVyxHQUFZLEtBQUssQ0FBQTtLQXlSN0I7SUF2UkMsUUFBUTtRQUNOLE9BQU8sT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDO0lBQ25FLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRU8sNkJBQTZCO1FBQ25DLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNwQyxNQUFNLFNBQVMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7Z0JBRS9CLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUM5RixTQUFTLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDOUIsQ0FBQztnQkFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUM3QyxTQUFTLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDcEIsQ0FBQztnQkFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQ25FLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixDQUFDO2dCQUVELElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxhQUFhLEVBQUUsQ0FBQztvQkFDckMsU0FBUyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQzVCLENBQUM7Z0JBRUQsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2xELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzlDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBYTtRQUNuQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN4QyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQWdCO1FBQ3RCLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDakUsT0FBTyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQzFELENBQUMsQ0FBQyxhQUFhO1lBQ2YsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLElBQUksYUFBYSxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVPLFNBQVM7UUFDZixPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNuRyxDQUFDO0lBQ0QsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0RCxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUM1QixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9ELENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7Z0JBR3pDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtvQkFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzlDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUc7d0JBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ25FLENBQUM7Z0JBR0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO29CQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO29CQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDNUMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDekIsQ0FBQztnQkFDSCxDQUFDO2dCQUdELElBQUksTUFBTSxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQzdELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQWUsRUFBRSxLQUFhO1FBQzFDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFMUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUVqQixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hFLFlBQVksQ0FBQyxhQUFhLENBQUM7Z0JBQ3pCLEdBQUcsUUFBUTtnQkFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDO2FBQzlCLENBQUMsQ0FBQztZQUVILFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUM7WUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLEtBQUssS0FBSztvQkFBRSxPQUFPLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQy9DLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3RDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNoQyxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBRWQsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBYTtRQUVuQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDNUQsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFFL0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7UUFFNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWE7UUFDNUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDekUsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN0QixNQUFNLEdBQUcsR0FBUSxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDNUIsR0FBRyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlGLEdBQUcsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxRixHQUFHLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUYsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDekIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxXQUFXLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDckMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWEsRUFBRSxLQUFVO1FBQ3BDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFhO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDNUIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzVCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx5QkFBeUI7UUFDL0IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBYTtRQUNyQyxPQUFPLENBQUMsT0FBd0IsRUFBRSxFQUFFO1lBQ2xDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsR0FBRztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUV0QixNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdkUsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7WUFFdEMsSUFBSSxRQUFRLElBQUksSUFBSSxJQUFJLFFBQVEsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO2dCQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ25DLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7K0dBblRVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDRtQkMzQnBDLDQ0SUFpSE0seStORGpHRixZQUFZLCtZQUNaLFdBQVcsOEJBQ1gsZUFBZSwyTkFDZixhQUFhLG9MQUNiLHVCQUF1QixtY0FDdkIsZUFBZTs7NEZBTU4sdUJBQXVCO2tCQWhCbkMsU0FBUzsrQkFDRSxzQkFBc0IsY0FFcEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2QixlQUFlO3FCQUNoQjs4QkFNUSxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3Jtc01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7QmFzZUZvcm1DYW52YXNDb21wb25lbnR9IGZyb20gXCIuLi9iYXNlLWZvcm0tY2FudmFzL2Jhc2UtZm9ybS1jYW52YXMuY29tcG9uZW50XCI7XG5pbXBvcnQge0ZpZWxkSW5mbywgRU1QVFlfUEFHRV9JTkZPLCBQYWdlSW5mb30gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcbmltcG9ydCB7Rm9ybUdyb3VwfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHtMaW5lSXRlbX0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvbGluZS1pdGVtLm1vZGVsXCI7XG5pbXBvcnQge0l0ZW1zVG90YWx9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL2l0ZW1zLXRvdGFsLm1vZGVsXCI7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaXRlbS1saW5lLWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9pdGVtLWxpbmUtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBCYXNlRm9ybUNhbnZhc0NvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXSxcbiAgc3R5bGVVcmxzOiBbJy4vaXRlbS1saW5lLWVkaXRvci5jb21wb25lbnQuc2NzcyddXG59KVxuXG5cbmV4cG9ydCBjbGFzcyBJdGVtTGluZUVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcbiAgQElucHV0KCkgbm9EYXRhRm91bmRJY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG5vRGF0YUZvdW5kVGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgbm9EYXRhRm91bmRTdWJ0aXRsZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHBhZ2VJbmZvOiBQYWdlSW5mbztcbiAgQElucHV0KCkgY29sdW1uSGVhZGVyV2lkdGhzOiBzdHJpbmdbXTtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgYWxsb3dBZGQ6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBhbGxvd0RlbGV0ZTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGVkaXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgY3VycmVuY3k6IHN0cmluZztcbiAgQElucHV0KCkgZmllbGRzOiBGaWVsZEluZm9bXSA9IFtdO1xuXG4gIHByaXZhdGUgYmFzZUZpZWxkc1NuYXBzaG90OiBGaWVsZEluZm9bXSB8IHVuZGVmaW5lZDtcblxuXG4gIEBJbnB1dCgpIGl0ZW1zOiBMaW5lSXRlbVtdID0gW3RoaXMuYmxhbmtJdGVtKCldO1xuXG4gIEBPdXRwdXQoKSBpdGVtc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TGluZUl0ZW1bXT4oKTtcbiAgQE91dHB1dCgpIGl0ZW1TYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkgfT4oKTtcbiAgQE91dHB1dCgpIGl0ZW1EZWxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGluZGV4OiBudW1iZXIgfT4oKTtcbiAgQE91dHB1dCgpIHRvdGFsc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8SXRlbXNUb3RhbD4oKTtcbiAgQE91dHB1dCgpIGVkaXRTdGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpbmRleDogbnVtYmVyLCBlZGl0aW5nOiBib29sZWFuIH0+KCk7XG4gIGZvcm1SZWZzOiAoRm9ybUdyb3VwIHwgdW5kZWZpbmVkKVtdID0gW107XG5cbiAgZWRpdGluZzogYm9vbGVhbltdID0gW3RydWVdO1xuICBub0RhdGFGb3VuZDogYm9vbGVhbiA9IGZhbHNlXG5cbiAgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5pbm5lcldpZHRoIDw9IDc2ODtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpZWxkcyAmJiB0aGlzLmZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmFwcGx5TW9iaWxlRmllbGRNb2RpZmljYXRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseU1vYmlsZUZpZWxkTW9kaWZpY2F0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc01vYmlsZSgpICYmIHRoaXMuZmllbGRzKSB7XG4gICAgICB0aGlzLmZpZWxkcyA9IHRoaXMuZmllbGRzLm1hcChmaWVsZCA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkQ29weSA9IHsgLi4uZmllbGQgfTtcbiAgICAgICAgXG4gICAgICAgIGlmIChbJ2l0ZW1Db2RlJywgJ2Rlc2NyaXB0aW9uJywgJ3VuaXRQcmljZScsICdxdWFudGl0eScsICdkaXNjb3VudCddLmluY2x1ZGVzKGZpZWxkLnByb3BlcnR5KSkge1xuICAgICAgICAgIGZpZWxkQ29weS5oaWRlTGFiZWwgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChbJ2Rlc2NyaXB0aW9uJ10uaW5jbHVkZXMoZmllbGQucHJvcGVydHkpKSB7XG4gICAgICAgICAgZmllbGRDb3B5LnJvdyA9IDI7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChbJ3VuaXRQcmljZScsICdxdWFudGl0eScsICdkaXNjb3VudCddLmluY2x1ZGVzKGZpZWxkLnByb3BlcnR5KSkge1xuICAgICAgICAgIGZpZWxkQ29weS5yb3cgPSAzO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZmllbGQucHJvcGVydHkgPT09ICd0b3RhbEFtb3VudCcpIHtcbiAgICAgICAgICBmaWVsZENvcHkudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gZmllbGRDb3B5O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIFxuICBnZXQgaGVhZGVyRmllbGRzKCk6IEZpZWxkSW5mb1tdIHtcbiAgICByZXR1cm4gKHRoaXMuZmllbGRzIHx8IFtdKS5maWx0ZXIoZiA9PiBmLnZpc2libGUgJiYgZi5yb3cgPT09IDEgJiYgZi50eXBlICE9PSAnc3BhY2VyJyk7XG4gIH1cblxuICBnZXQgaGFzSW52YWxpZEVkaXRpbmdGb3JtKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5mb3JtUmVmcyB8fCAhdGhpcy5lZGl0aW5nKSByZXR1cm4gZmFsc2U7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZvcm1SZWZzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBmcm0gPSB0aGlzLmZvcm1SZWZzW2ldO1xuICAgICAgaWYgKHRoaXMuZWRpdGluZ1tpXSAmJiBmcm0gJiYgZnJtLmludmFsaWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBjYW5BZGROZXcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmhhc0ludmFsaWRFZGl0aW5nRm9ybTtcbiAgfVxuXG4gIGNhblNhdmUoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZybSA9IHRoaXMuZm9ybVJlZnM/LltpbmRleF07XG4gICAgaWYgKCF0aGlzLmVkaXRpbmc/LltpbmRleF0pIHJldHVybiB0cnVlO1xuICAgIHJldHVybiAhIWZybSAmJiBmcm0udmFsaWQ7XG4gIH1cblxuICBsYWJlbE9mKGZpZWxkOiBGaWVsZEluZm8pOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbmZpZ3VyZWRLZXkgPSBmaWVsZC5sYWJlbCA/IGZpZWxkLmxhYmVsIDogZmllbGQucHJvcGVydHk7XG4gICAgcmV0dXJuIGNvbmZpZ3VyZWRLZXkuc3RhcnRzV2l0aCh0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24pXG4gICAgICA/IGNvbmZpZ3VyZWRLZXlcbiAgICAgIDogYCR7dGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9ufS4ke2NvbmZpZ3VyZWRLZXl9YDtcbiAgfVxuXG4gIHByaXZhdGUgYmxhbmtJdGVtKCkge1xuICAgIHJldHVybiB7IGl0ZW1MaW5lOiAnJywgZGVzY3JpcHRpb246ICcnLCB1bml0UHJpY2U6IDAsIHF1YW50aXR5OiAxLCBkaXNjb3VudDogMCwgdG90YWxBbW91bnQ6IDAgfTtcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10gJiYgY2hhbmdlc1snaXRlbXMnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIGNvbnN0IGxlbiA9ICh0aGlzLml0ZW1zIHx8IFtdKS5sZW5ndGg7XG4gICAgICB0aGlzLm5vRGF0YUZvdW5kID0gbGVuIDw9IDA7XG4gICAgICBpZiAoY2hhbmdlc1snaXRlbXMnXS5maXJzdENoYW5nZSkge1xuICAgICAgICB0aGlzLmZvcm1SZWZzID0gbmV3IEFycmF5KGxlbikuZmlsbCh1bmRlZmluZWQpO1xuICAgICAgICB0aGlzLmVkaXRpbmcgPSBsZW4gPiAwID8gbmV3IEFycmF5KGxlbikuZmlsbChmYWxzZSkgOiBbdHJ1ZV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBvbGRMZW4gPSB0aGlzLmVkaXRpbmc/Lmxlbmd0aCB8fCAwO1xuXG5cbiAgICAgICAgaWYgKCF0aGlzLmZvcm1SZWZzKSB0aGlzLmZvcm1SZWZzID0gW107XG4gICAgICAgIGlmICh0aGlzLmZvcm1SZWZzLmxlbmd0aCA+IGxlbikge1xuICAgICAgICAgIHRoaXMuZm9ybVJlZnMgPSB0aGlzLmZvcm1SZWZzLnNsaWNlKDAsIGxlbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd2hpbGUgKHRoaXMuZm9ybVJlZnMubGVuZ3RoIDwgbGVuKSB0aGlzLmZvcm1SZWZzLnB1c2godW5kZWZpbmVkKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgaWYgKCF0aGlzLmVkaXRpbmcpIHRoaXMuZWRpdGluZyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5lZGl0aW5nLmxlbmd0aCA+IGxlbikge1xuICAgICAgICAgIHRoaXMuZWRpdGluZyA9IHRoaXMuZWRpdGluZy5zbGljZSgwLCBsZW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmVkaXRpbmcubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdGluZ1tpXSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cblxuICAgICAgICBpZiAob2xkTGVuID09PSAwICYmIGxlbiA+IDAgJiYgdGhpcy5lZGl0aW5nWzBdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmVkaXRpbmdbMF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmVtaXRUb3RhbHMoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2ZpZWxkcyddICYmIGNoYW5nZXNbJ2ZpZWxkcyddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5iYXNlRmllbGRzU25hcHNob3QgPSAodGhpcy5maWVsZHMgfHwgW10pLm1hcChmID0+ICh7Li4uZn0pKTtcbiAgICAgIHRoaXMuYXBwbHlNb2JpbGVGaWVsZE1vZGlmaWNhdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBvbkZvcm1VcGRhdGVkKGZvcm06IEZvcm1Hcm91cCwgaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGRpc2NvdW50Q3RybCA9IGZvcm0uZ2V0KCdkaXNjb3VudCcpO1xuXG4gICAgaWYgKGRpc2NvdW50Q3RybCkge1xuXG4gICAgICBjb25zdCBleGlzdGluZyA9IGRpc2NvdW50Q3RybC52YWxpZGF0b3IgPyBbZGlzY291bnRDdHJsLnZhbGlkYXRvcl0gOiBbXTtcbiAgICAgIGRpc2NvdW50Q3RybC5zZXRWYWxpZGF0b3JzKFtcbiAgICAgICAgLi4uZXhpc3RpbmcsXG4gICAgICAgIHRoaXMuZGlzY291bnRWYWxpZGF0b3IoaW5kZXgpXG4gICAgICBdKTtcblxuICAgICAgZGlzY291bnRDdHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZm9ybVJlZnNbaW5kZXhdID0gZm9ybTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZW1pdHRlZEl0ZW1zID0gdGhpcy5pdGVtcy5tYXAoKGl0LCBpKSA9PiB7XG4gICAgICAgIGlmIChpICE9PSBpbmRleCkgcmV0dXJuIGl0O1xuICAgICAgICBjb25zdCB2ID0gdGhpcy5nZXRDdXJyZW50VmFsdWVzKGkpIHx8IGl0IHx8IHt9O1xuICAgICAgICBjb25zdCB1cCA9IE51bWJlcih2Py51bml0UHJpY2UgfHwgMCk7XG4gICAgICAgIGNvbnN0IHEgPSBOdW1iZXIodj8ucXVhbnRpdHkgfHwgMCk7XG4gICAgICAgIGNvbnN0IGRpc2MgPSBOdW1iZXIodj8uZGlzY291bnQgfHwgMCk7XG4gICAgICAgIGNvbnN0IHRvdGFsID0gTWF0aC5tYXgoMCwgdXAgKiBxIC0gZGlzYyk7XG4gICAgICAgIHJldHVybiB7IC4uLml0LCAuLi52LCB0b3RhbCB9O1xuICAgICAgfSk7XG4gICAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQoZW1pdHRlZEl0ZW1zKTtcbiAgICB9IGNhdGNoIChfZSkge1xuXG4gICAgfVxuICAgIHRoaXMuZW1pdFRvdGFscygpO1xuICB9XG5cbiAgYWRkTmV3SXRlbSgpIHtcbiAgICB0aGlzLml0ZW1zLnB1c2godGhpcy5ibGFua0l0ZW0oKSk7XG4gICAgdGhpcy5mb3JtUmVmcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgdGhpcy5lZGl0aW5nLnB1c2godHJ1ZSk7XG5cbiAgICB0aGlzLnJlc3RvcmVGaWVsZHNGcm9tU25hcHNob3QoKTtcbiAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQoWy4uLnRoaXMuaXRlbXNdKTtcbiAgICB0aGlzLmVkaXRTdGF0ZUNoYW5nZS5lbWl0KHsgaW5kZXg6IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSwgZWRpdGluZzogdHJ1ZSB9KTtcbiAgICB0aGlzLmVtaXRUb3RhbHMoKTtcbiAgfVxuXG4gIHNhdmVSb3coaW5kZXg6IG51bWJlcikge1xuXG4gICAgY29uc3QgZnJtID0gdGhpcy5mb3JtUmVmcz8uW2luZGV4XTtcbiAgICBpZiAodGhpcy5lZGl0aW5nW2luZGV4XSAmJiBmcm0gJiYgZnJtLmludmFsaWQpIHtcblxuICAgICAgT2JqZWN0LnZhbHVlcyhmcm0uY29udHJvbHMpLmZvckVhY2goYyA9PiBjLm1hcmtBc1RvdWNoZWQoKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHYgPSB0aGlzLmdldEN1cnJlbnRWYWx1ZXMoaW5kZXgpO1xuICAgIGlmICghdikgcmV0dXJuO1xuICAgIHRoaXMuaXRlbXNbaW5kZXhdID0geyAuLi52LCB0b3RhbDogdGhpcy5jYWxjTGluZVRvdGFsKGluZGV4KSB9O1xuXG4gICAgdGhpcy5lZGl0aW5nW2luZGV4XSA9IGZhbHNlO1xuXG4gICAgdGhpcy5pdGVtc0NoYW5nZS5lbWl0KFsuLi50aGlzLml0ZW1zXSk7XG4gICAgdGhpcy5pdGVtU2F2ZWQuZW1pdCh7IGluZGV4LCBpdGVtOiB0aGlzLml0ZW1zW2luZGV4XSB9KTtcbiAgICB0aGlzLmVkaXRTdGF0ZUNoYW5nZS5lbWl0KHsgaW5kZXgsIGVkaXRpbmc6IGZhbHNlIH0pO1xuICAgIHRoaXMuZW1pdFRvdGFscygpO1xuICB9XG5cbiAgZGVsZXRlSXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLml0ZW1zLmxlbmd0aCkgcmV0dXJuO1xuICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLmZvcm1SZWZzLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5lZGl0aW5nLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQoWy4uLnRoaXMuaXRlbXNdKTtcbiAgICB0aGlzLml0ZW1EZWxldGVkLmVtaXQoeyBpbmRleCB9KTtcbiAgICB0aGlzLmVtaXRUb3RhbHMoKTtcbiAgfVxuXG4gIGNsZWFyQWxsKCkge1xuICAgIHRoaXMuaXRlbXMgPSBbdGhpcy5ibGFua0l0ZW0oKV07XG4gICAgdGhpcy5mb3JtUmVmcyA9IFt1bmRlZmluZWRdO1xuICAgIHRoaXMuZWRpdGluZyA9IFt0cnVlXTtcbiAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQoWy4uLnRoaXMuaXRlbXNdKTtcbiAgICB0aGlzLmVtaXRUb3RhbHMoKTtcbiAgfVxuXG4gIGdldEN1cnJlbnRWYWx1ZXMoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGlzRWRpdGluZyA9IHRoaXMuZWRpdGluZ1tpbmRleF07XG4gICAgY29uc3QgZnJtID0gdGhpcy5mb3JtUmVmc1tpbmRleF07XG5cbiAgICBjb25zdCBiYXNlID0gdGhpcy5pdGVtc1tpbmRleF0gfHwge307XG4gICAgY29uc3Qgc3JjID0gKGlzRWRpdGluZyAmJiBmcm0pID8geyAuLi5iYXNlLCAuLi5mcm0udmFsdWUgfSA6IHsgLi4uYmFzZSB9O1xuICAgIGlmICghc3JjKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB2YWw6IGFueSA9IHsgLi4uc3JjIH07XG4gICAgdmFsLnVuaXRQcmljZSA9IHZhbC51bml0UHJpY2UgPT09IG51bGwgfHwgdmFsLnVuaXRQcmljZSA9PT0gJycgPyBudWxsIDogTnVtYmVyKHZhbC51bml0UHJpY2UpO1xuICAgIHZhbC5xdWFudGl0eSA9IHZhbC5xdWFudGl0eSA9PT0gbnVsbCB8fCB2YWwucXVhbnRpdHkgPT09ICcnID8gbnVsbCA6IE51bWJlcih2YWwucXVhbnRpdHkpO1xuICAgIHZhbC5kaXNjb3VudCA9IHZhbC5kaXNjb3VudCA9PT0gbnVsbCB8fCB2YWwuZGlzY291bnQgPT09ICcnID8gbnVsbCA6IE51bWJlcih2YWwuZGlzY291bnQpO1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBjYWxjTGluZVRvdGFsKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuZ2V0Q3VycmVudFZhbHVlcyhpbmRleCk7XG4gICAgaWYgKCF2YWwpIHJldHVybiBOdW1iZXIodGhpcy5pdGVtc1tpbmRleF0/LnRvdGFsQW1vdW50IHx8IDApO1xuICAgIHJldHVybiBNYXRoLm1heCgwLCAodmFsLnVuaXRQcmljZSB8fCAwKSAqICh2YWwucXVhbnRpdHkgfHwgMCkgLSAodmFsLmRpc2NvdW50IHx8IDApKTtcbiAgfVxuXG4gIGdldCBzdWJ0b3RhbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLnJlZHVjZSgocywgX2l0LCBpKSA9PiB7XG4gICAgICBjb25zdCB2ID0gdGhpcy5nZXRDdXJyZW50VmFsdWVzKGkpO1xuICAgICAgY29uc3QgdXAgPSBOdW1iZXIodj8udW5pdFByaWNlIHx8IDApO1xuICAgICAgY29uc3QgcSA9IE51bWJlcih2Py5xdWFudGl0eSB8fCAwKTtcbiAgICAgIHJldHVybiBzICsgKHVwICogcSk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBnZXQgZGlzY291bnRUb3RhbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLnJlZHVjZSgocywgX2l0LCBpKSA9PiB7XG4gICAgICBjb25zdCB2ID0gdGhpcy5nZXRDdXJyZW50VmFsdWVzKGkpO1xuICAgICAgcmV0dXJuIHMgKyBOdW1iZXIodj8uZGlzY291bnQgfHwgMCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBnZXQgZ3JhbmRUb3RhbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLnJlZHVjZSgocywgX2l0LCBpKSA9PiBzICsgdGhpcy5jYWxjTGluZVRvdGFsKGkpLCAwKTtcbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyLCBfaXRlbTogYW55KSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgZWRpdFJvdyhpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5lZGl0aW5nW2luZGV4XSA9IHRydWU7XG4gICAgdGhpcy5yZXN0b3JlRmllbGRzRnJvbVNuYXBzaG90KCk7XG4gICAgdGhpcy5lZGl0U3RhdGVDaGFuZ2UuZW1pdCh7IGluZGV4LCBlZGl0aW5nOiB0cnVlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0VG90YWxzKCkge1xuICAgIHRoaXMudG90YWxzQ2hhbmdlLmVtaXQoe1xuICAgICAgc3VidG90YWw6IHRoaXMuc3VidG90YWwsXG4gICAgICBkaXNjb3VudDogdGhpcy5kaXNjb3VudFRvdGFsLFxuICAgICAgZ3JhbmRUb3RhbDogdGhpcy5ncmFuZFRvdGFsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc3RvcmVGaWVsZHNGcm9tU25hcHNob3QoKSB7XG4gICAgaWYgKHRoaXMuYmFzZUZpZWxkc1NuYXBzaG90ICYmIHRoaXMuYmFzZUZpZWxkc1NuYXBzaG90Lmxlbmd0aCkge1xuICAgICAgdGhpcy5maWVsZHMgPSB0aGlzLmJhc2VGaWVsZHNTbmFwc2hvdC5tYXAoZiA9PiAoey4uLmZ9KSk7XG4gICAgICB0aGlzLmFwcGx5TW9iaWxlRmllbGRNb2RpZmljYXRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGdyaWRUZW1wbGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5IZWFkZXJXaWR0aHMuam9pbignICcpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNjb3VudFZhbGlkYXRvcihpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHRoaXMuZ2V0Q3VycmVudFZhbHVlcyhpbmRleCk7XG4gICAgICBpZiAoIXZhbCkgcmV0dXJuIG51bGw7XG5cbiAgICAgIGNvbnN0IHRvdGFsQmVmb3JlRGlzY291bnQgPSAodmFsLnVuaXRQcmljZSA/PyAwKSAqICh2YWwucXVhbnRpdHkgPz8gMCk7XG4gICAgICBjb25zdCBkaXNjb3VudCA9IHZhbC5kaXNjb3VudCA/PyBudWxsO1xuXG4gICAgICBpZiAoZGlzY291bnQgIT0gbnVsbCAmJiBkaXNjb3VudCA+IHRvdGFsQmVmb3JlRGlzY291bnQpIHtcbiAgICAgICAgcmV0dXJuIHsgZGlzY291bnRUb29IaWdoOiB0cnVlIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cIml0ZW0tbGluZS1lZGl0b3JcIj5cbiAgPGRpdiBjbGFzcz1cImhlYWRlci1zZWN0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlci1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRleHRcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwidGl0bGVcIj57eyB0aXRsZSB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gICAgICAgIDxwIGNsYXNzPVwic3VidGl0bGVcIj57eyBzdWJ0aXRsZSB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItZGl2aWRlclwiPjwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwidGFibGUtc2VjdGlvblwiPlxuICAgIEBpZiAoIW5vRGF0YUZvdW5kKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIiBbbmdTdHlsZV09XCJ7ICdncmlkLXRlbXBsYXRlLWNvbHVtbnMnOiBncmlkVGVtcGxhdGUgfVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGYgb2YgaGVhZGVyRmllbGRzOyBsZXQgaWR4ID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItY2VsbFwiIFtjbGFzcy5kZXNjcmlwdGlvbi1jZWxsXT1cImYucHJvcGVydHkgPT09ICdkZXNjcmlwdGlvbidcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItY2VsbC10ZXh0XCI+XG4gICAgICAgICAgICAgICAge3sgbGFiZWxPZihmKSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZi5yZXF1aXJlZFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4qPC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcm93LWNvbnRhaW5lclwiICpuZ0Zvcj1cImxldCBpdCBvZiBpdGVtczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaW5wdXRzXCIgW2F0dHIuZGF0YS1ncmlkLWNvbHVtbnNdPVwiZ3JpZFRlbXBsYXRlXCIgW25nU3R5bGVdPVwieyAnLS1ncmlkLWNvbHVtbnMnOiBncmlkVGVtcGxhdGUgfVwiPlxuICAgICAgICAgICAgICAgIDxhcHAtYmFzZS1mb3JtLWNhbnZhc1xuICAgICAgICAgICAgICAgICAgW3BhZ2VJbmZvXT1cInBhZ2VJbmZvXCJcbiAgICAgICAgICAgICAgICAgIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgICAgICAgICAgICAgICAgIFtlZGl0YWJsZV09XCJlZGl0aW5nW2ldXCJcbiAgICAgICAgICAgICAgICAgIFtlbWl0T25WYWx1ZUNoYW5nZXNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbV09XCJpdFwiXG4gICAgICAgICAgICAgICAgICBbY3VycmVuY3ldPVwiY3VycmVuY3lcIlxuICAgICAgICAgICAgICAgICAgKGZvcm1VcGRhdGVkKT1cIm9uRm9ybVVwZGF0ZWQoJGV2ZW50LCBpKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWJhc2UtZm9ybS1jYW52YXM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZWRpdGluZ1tpXVwiIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInNhdmUtYnRuXCIgKGNsaWNrKT1cInNhdmVSb3coaSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuU2F2ZShpKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZWNrPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdpdGVtLWxpbmUuc2F2ZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZWRpdGluZ1tpXSAmJiBlZGl0YWJsZVwiIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cImVkaXQtYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdFJvdyhpKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ2l0ZW0tbGluZS5lZGl0JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFsbG93RGVsZXRlICYmIGVkaXRhYmxlXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwiZGVsZXRlLWJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUl0ZW0oaSlcIiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdpdGVtLWxpbmUuZGVsZXRlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1kaXZpZGVyXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChub0RhdGFGb3VuZCkge1xuICAgICAgPGRpdiBjbGFzcz1cImRhdGFOb3RGb3VuZFwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJkYXRhTm90Rm91bmRfX2ljb25cIj57eyBub0RhdGFGb3VuZEljb24gfX08L21hdC1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGFOb3RGb3VuZF9fdGl0bGVcIj57eyBub0RhdGFGb3VuZFRpdGxlIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGFOb3RGb3VuZF9fc3VidGl0bGVcIj57eyBub0RhdGFGb3VuZFN1YnRpdGxlIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPGRpdiBjbGFzcz1cImFkZC1pdGVtXCIgKm5nSWY9XCJhbGxvd0FkZCAmJiBlZGl0YWJsZVwiPlxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJhZGQtaXRlbS1idG5cIiAoY2xpY2spPVwiYWRkTmV3SXRlbSgpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5BZGROZXdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi10ZXh0XCI+XG4gICAgICAgICAgPG1hdC1pY29uPmFkZF9jaXJjbGVfb3V0bGluZTwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4+e3sgJ2l0ZW0tbGluZS5hZGROZXdJdGVtJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBUb3RhbHMgQm94IC0tPlxuICBAaWYgKCFub0RhdGFGb3VuZCkge1xuICAgIDxkaXYgY2xhc3M9XCJ0b3RhbHMtYm94XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidG90YWwtcm93XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj57eyAnaXRlbS1saW5lLmRpc2NvdW50JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZSByZWRcIj57eyBkaXNjb3VudFRvdGFsIHwgY3VycmVuY3k6Y3VycmVuY3kgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInRvdGFsLXJvd1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+e3sgJ2l0ZW0tbGluZS5hbW91bnQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3sgc3VidG90YWwgfCBjdXJyZW5jeTpjdXJyZW5jeSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidG90YWxzLWRpdmlkZXJcIj48L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInRvdGFsLXJvdyBncmFuZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+e3sgJ2l0ZW0tbGluZS5ncmFuZFRvdGFsJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZSBncmVlblwiPnt7IGdyYW5kVG90YWwgfCBjdXJyZW5jeTpjdXJyZW5jeSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj4iXX0=
|