@arsedizioni/ars-utils 18.2.63 → 18.2.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/clipper.common/common/common.module.mjs +4 -4
- package/esm2022/clipper.common/common/interceptors/auth.interceptor.mjs +3 -3
- package/esm2022/clipper.common/common/services/clipper.service.mjs +3 -3
- package/esm2022/clipper.ui/ui/browser-dialog/browser-dialog.component.mjs +6 -6
- package/esm2022/clipper.ui/ui/document/document.component.mjs +5 -5
- package/esm2022/clipper.ui/ui/document-index/document-index.component.mjs +3 -3
- package/esm2022/clipper.ui/ui/document-manager/document-manager.mjs +3 -3
- package/esm2022/clipper.ui/ui/document-menu/document-menu.component.mjs +3 -3
- package/esm2022/clipper.ui/ui/references/references.component.mjs +5 -5
- package/esm2022/clipper.ui/ui/search-calendar/search-calendar.component.mjs +3 -3
- package/esm2022/clipper.ui/ui/search-dialog/search-dialog.component.mjs +3 -3
- package/esm2022/clipper.ui/ui/search-facets/search-facets.component.mjs +5 -5
- package/esm2022/clipper.ui/ui/search-free-text-help/search-free-text-help.component.mjs +3 -3
- package/esm2022/clipper.ui/ui/search-free-text-query-builder/search-free-text-query-builder.component.mjs +3 -3
- package/esm2022/clipper.ui/ui/search-result-item/search-result-item.component.mjs +5 -5
- package/esm2022/clipper.ui/ui/search-result-manager/search-result-manager.mjs +4 -5
- package/esm2022/core/core.module.mjs +8 -8
- package/esm2022/core/dateFnsAdapter.mjs +3 -3
- package/esm2022/core/directives/autoFocusDirective.mjs +3 -3
- package/esm2022/core/directives/changeDateIntervalDirective.mjs +3 -3
- package/esm2022/core/directives/copyClipboardDirective.mjs +4 -4
- package/esm2022/core/directives/validators.mjs +33 -33
- package/esm2022/core/pipes/format.pipe.mjs +4 -4
- package/esm2022/core/pipes/replace.pipe.mjs +4 -4
- package/esm2022/core/pipes/safe-html.pipe.mjs +4 -4
- package/esm2022/core/pipes/safe-url.pipe.mjs +4 -4
- package/esm2022/core/pipes/search-callback.pipe.mjs +3 -3
- package/esm2022/core/pipes/search-filter.pipe.mjs +4 -4
- package/esm2022/core/services/broadcast.service.mjs +3 -3
- package/esm2022/core/services/environment.service.mjs +3 -3
- package/esm2022/core/services/screen.service.mjs +3 -3
- package/esm2022/help/components/help-viewer/help-viewer.component.mjs +8 -8
- package/esm2022/help/help.module.mjs +4 -4
- package/esm2022/help/services/help.service.mjs +3 -3
- package/esm2022/support.common/common/common.module.mjs +4 -4
- package/esm2022/support.common/common/interceptors/auth.interceptor.mjs +3 -3
- package/esm2022/support.common/common/services/support.service.mjs +3 -3
- package/esm2022/support.ui/ui/notifications-browser/notification/notification.component.mjs +5 -5
- package/esm2022/support.ui/ui/notifications-browser/notifications-browser.component.mjs +5 -5
- package/esm2022/tinymce/full-screen-editor/full-screen-editor.component.mjs +3 -3
- package/esm2022/tinymce/tinymce.module.mjs +4 -4
- package/esm2022/ui/ui/dialogs/busy/busy-dialog.component.mjs +5 -5
- package/esm2022/ui/ui/dialogs/confirm/confirm-dialog.component.mjs +5 -5
- package/esm2022/ui/ui/dialogs/credentials/credentials-dialog.component.mjs +5 -5
- package/esm2022/ui/ui/dialogs/info/info-dialog.component.mjs +5 -5
- package/esm2022/ui/ui/dialogs/recover-password/recover-password-dialog.component.mjs +5 -5
- package/esm2022/ui/ui/dialogs/reset-password/reset-password-dialog.component.mjs +5 -5
- package/esm2022/ui/ui/dialogs/toast/toast.component.mjs +3 -3
- package/esm2022/ui/ui/paginatorIntl.mjs +3 -3
- package/esm2022/ui/ui/services/dialog.service.mjs +3 -3
- package/esm2022/ui/ui/services/ui.service.mjs +3 -3
- package/esm2022/ui/ui/ui.module.mjs +4 -4
- package/esm2022/ui.application/ui/components/button-selector/button-selector.component.mjs +3 -3
- package/esm2022/ui.application/ui/components/button-toggle/button-toggle.component.mjs +3 -3
- package/esm2022/ui.application/ui/components/calendar-empty-header/calendar-empy-header.component.mjs +3 -3
- package/esm2022/ui.application/ui/components/chips-selector/chips-selector.component.mjs +3 -3
- package/esm2022/ui.application/ui/components/file-input/file-input.component.mjs +3 -3
- package/esm2022/ui.application/ui/components/file-preview/file-preview.component.mjs +3 -3
- package/esm2022/ui.application/ui/components/filter-bar/filter-bar.component.mjs +5 -5
- package/esm2022/ui.application/ui/dialogs/prompt/prompt-dialog.component.mjs +5 -5
- package/esm2022/ui.application/ui/dialogs/prompt-date/prompt-date-dialog.component.mjs +5 -5
- package/esm2022/ui.application/ui/dialogs/prompt-time/prompt-time-dialog.component.mjs +5 -5
- package/esm2022/ui.application/ui/dialogs/select/select-dialog.component.mjs +5 -5
- package/esm2022/ui.application/ui/dialogs/select-file/select-file-dialog.component.mjs +5 -5
- package/esm2022/ui.application/ui/dialogs/select-picture/select-picture-dialog.component.mjs +5 -5
- package/esm2022/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.mjs +8 -8
- package/esm2022/ui.application/ui/dialogs/send-to/send-to-dialog.component.mjs +5 -5
- package/esm2022/ui.application/ui/directives/resize-table-column.directive.mjs +3 -3
- package/esm2022/ui.application/ui/services/applicationDialog.service.mjs +3 -3
- package/esm2022/ui.application/ui/ui.module.mjs +4 -4
- package/esm2022/ui.oauth/ui/components/login/login-oauth.component.mjs +3 -3
- package/esm2022/ui.oauth/ui/ui.module.mjs +4 -4
- package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +10 -10
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +45 -46
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-core.mjs +86 -86
- package/fesm2022/arsedizioni-ars-utils-help.mjs +14 -14
- package/fesm2022/arsedizioni-ars-utils-help.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-support.common.mjs +10 -10
- package/fesm2022/arsedizioni-ars-utils-support.ui.mjs +8 -8
- package/fesm2022/arsedizioni-ars-utils-support.ui.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-tinymce.mjs +7 -7
- package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +67 -67
- package/fesm2022/arsedizioni-ars-utils-ui.application.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-ui.mjs +40 -40
- package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs +7 -7
- package/package.json +12 -12
- package/styles/ui.scss +0 -12
package/esm2022/ui.application/ui/dialogs/select-picture/select-picture-dialog.component.mjs
CHANGED
|
@@ -49,14 +49,14 @@ export class SelectPictureDialogComponent {
|
|
|
49
49
|
this.done.emit({ file: this.file, options: this.dialogData.options });
|
|
50
50
|
}, 500);
|
|
51
51
|
}
|
|
52
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
53
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SelectPictureDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SelectPictureDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, ngImport: i0, template: "<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n@if (dialogData.description) {\r\n<div class=\"selectpicture-description\" [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n}\r\n<div mat-dialog-content>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div fxFlex=\"*\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <input #_file type=\"file\" [hidden]=\"true\" accept=\"image/*\" (change)=\"update($event)\" />\r\n <button type=\"button\" mat-button color=\"primary\" (click)=\"_file.click()\">Seleziona file...</button>\r\n @if (file) {\r\n <div class=\"selectpicture-info\">\r\n <img [src]=\"filePreview()\" class=\"preview\"><br />\r\n <span class=\"small truncated\"><i>{{file.name}}</i></span>\r\n <div><span class=\"small truncated\">Dimensioni: <i>{{size(file.size)}}</i></span></div>\r\n </div>\r\n }\r\n </div>\r\n @if (dialogData.options) {\r\n <div>\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox color=\"primary\" [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button (click)=\"ok()\" color=\"primary\" [disabled]=\"!file\">{{dialogData.okCaption}}</button>\r\n <button mat-button mat-dialog-close cdkFocusInitial color=\"primary\">Annulla</button>\r\n </div>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.selectpicture-file{padding:20px;width:320px;border:5px dotted #eee}.selectpicture-info{width:100%;margin-top:30px;text-align:center}.selectpicture-info .preview{max-height:300px;max-width:300px}.selectpicture-description{padding:0 24px 24px}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { 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: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
54
54
|
}
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SelectPictureDialogComponent, decorators: [{
|
|
56
56
|
type: Component,
|
|
57
57
|
args: [{ host: { 'Bind': SystemUtils.generateUUID() }, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatDialogTitle, MatDialogContent, FlexModule, MatButtonModule, MatCheckboxModule, FormsModule,
|
|
58
|
-
MatDialogActions, MatDialogClose, SafeHtmlPipe], template: "<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n@if (dialogData.description) {\r\n<div class=\"selectpicture-description\" [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n}\r\n<div mat-dialog-content>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div fxFlex=\"*\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <input #_file type=\"file\" [hidden]=\"true\" accept=\"image/*\" (change)=\"update($event)\" />\r\n <button type=\"button\" mat-button color=\"primary\" (click)=\"_file.click()\">Seleziona file...</button>\r\n @if (file) {\r\n <div class=\"selectpicture-info\">\r\n <img [src]=\"filePreview()\" class=\"preview\"><br />\r\n <span class=\"small truncated\"><i>{{file.name}}</i></span>\r\n <div><span class=\"small truncated\">Dimensioni: <i>{{size(file.size)}}</i></span></div>\r\n </div>\r\n }\r\n </div>\r\n @if (dialogData.options) {\r\n <div>\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox color=\"primary\" [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button (click)=\"ok()\" color=\"primary\" [disabled]=\"!file\">{{dialogData.okCaption}}</button>\r\n <button mat-button mat-dialog-close cdkFocusInitial color=\"primary\">Annulla</button>\r\n </div>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .
|
|
58
|
+
MatDialogActions, MatDialogClose, SafeHtmlPipe], template: "<h2 mat-dialog-title>{{dialogData.title}}</h2>\r\n@if (dialogData.description) {\r\n<div class=\"selectpicture-description\" [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n}\r\n<div mat-dialog-content>\r\n <div fxLayout=\"column\" fxLayoutGap=\"32px\" fxFill>\r\n <div fxFlex=\"*\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <input #_file type=\"file\" [hidden]=\"true\" accept=\"image/*\" (change)=\"update($event)\" />\r\n <button type=\"button\" mat-button color=\"primary\" (click)=\"_file.click()\">Seleziona file...</button>\r\n @if (file) {\r\n <div class=\"selectpicture-info\">\r\n <img [src]=\"filePreview()\" class=\"preview\"><br />\r\n <span class=\"small truncated\"><i>{{file.name}}</i></span>\r\n <div><span class=\"small truncated\">Dimensioni: <i>{{size(file.size)}}</i></span></div>\r\n </div>\r\n }\r\n </div>\r\n @if (dialogData.options) {\r\n <div>\r\n @for (o of dialogData.options; track $index; let i = $index) {\r\n <div>\r\n <mat-checkbox color=\"primary\" [(ngModel)]=\"o.value\" name=\"opt_{{i}}\">\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button (click)=\"ok()\" color=\"primary\" [disabled]=\"!file\">{{dialogData.okCaption}}</button>\r\n <button mat-button mat-dialog-close cdkFocusInitial color=\"primary\">Annulla</button>\r\n </div>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.selectpicture-file{padding:20px;width:320px;border:5px dotted #eee}.selectpicture-info{width:100%;margin-top:30px;text-align:center}.selectpicture-info .preview{max-height:300px;max-width:300px}.selectpicture-description{padding:0 24px 24px}\n"] }]
|
|
59
59
|
}], propDecorators: { done: [{
|
|
60
60
|
type: Output
|
|
61
61
|
}] } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXBpY3R1cmUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy91aS5hcHBsaWNhdGlvbi91aS9kaWFsb2dzL3NlbGVjdC1waWN0dXJlL3NlbGVjdC1waWN0dXJlLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvZGlhbG9ncy9zZWxlY3QtcGljdHVyZS9zZWxlY3QtcGljdHVyZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQVl4RCxNQUFNLE9BQU8sNEJBQTRCO0lBVHpDO1FBVVksU0FBSSxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7UUFFeEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFlBQTBDLENBQUEsQ0FBQyxDQUFDO1FBQzdELGVBQVUsR0FBMEIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTVELFNBQUksR0FBZ0IsSUFBSSxDQUFDO1FBQ3pCLGdCQUFXLEdBQUcsTUFBTSxDQUFNLElBQUksQ0FBQyxDQUFDO0tBbUMzQztJQWhDQzs7O09BR0c7SUFDSCxNQUFNLENBQUMsQ0FBTTtRQUNYLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQU8sRUFBRSxFQUFFO2dCQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBRSxFQUFFLENBQUMsTUFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6RCxDQUFDLENBQUM7WUFDRixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLENBQUMsSUFBWTtRQUNmLE9BQU8sV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxFQUFFO1FBQ0EsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7OEdBekNVLDRCQUE0QjtrR0FBNUIsNEJBQTRCLHlHQVJ2QixXQUFXLENBQUMsWUFBWSxFQUFFLDhCQ1o1Qyw0akRBbUNNLDJwSERsQk0sY0FBYywrSEFBRyxnQkFBZ0Isd0dBQUUsVUFBVSx1NkVBQUUsZUFBZSwyTkFBRyxpQkFBaUIsNldBQUUsV0FBVywrVkFDdkcsZ0JBQWdCLDRIQUFFLGNBQWMsZ0xBQUUsWUFBWTs7MkZBRXJDLDRCQUE0QjtrQkFUeEMsU0FBUzsyQkFDRixFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUUsY0FHaEMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsY0FBYyxFQUFHLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUcsaUJBQWlCLEVBQUUsV0FBVzt3QkFDdkcsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQzs4QkFHdkMsSUFBSTtzQkFBYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dUaXRsZSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nQWN0aW9ucywgTWF0RGlhbG9nQ2xvc2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTeXN0ZW1VdGlscyB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IFNlbGVjdEZpbGUsIFNlbGVjdEZpbGVEaWFsb2dEYXRhIH0gZnJvbSAnLi4vLi4vZGVmaW5pdGlvbnMnO1xyXG5pbXBvcnQgeyBTYWZlSHRtbFBpcGUgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IEZsZXhNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQvZmxleCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgaG9zdDogeyAnQmluZCc6IFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpIH0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1waWN0dXJlLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LXBpY3R1cmUtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBpbXBvcnRzOiBbTWF0RGlhbG9nVGl0bGUsICBNYXREaWFsb2dDb250ZW50LCBGbGV4TW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsICBNYXRDaGVja2JveE1vZHVsZSwgRm9ybXNNb2R1bGUsIFxyXG4gICAgTWF0RGlhbG9nQWN0aW9ucywgTWF0RGlhbG9nQ2xvc2UsIFNhZmVIdG1sUGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNlbGVjdFBpY3R1cmVEaWFsb2dDb21wb25lbnQge1xyXG4gIEBPdXRwdXQoKSBkb25lID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RGaWxlPigpO1xyXG5cclxuICBwcml2YXRlIGRpYWxvZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWY8U2VsZWN0UGljdHVyZURpYWxvZ0NvbXBvbmVudD4pO1xyXG4gIHByb3RlY3RlZCBkaWFsb2dEYXRhIDogU2VsZWN0RmlsZURpYWxvZ0RhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKTsgXHJcblxyXG4gIHByb3RlY3RlZCBmaWxlOiBGaWxlIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJvdGVjdGVkIGZpbGVQcmV2aWV3ID0gc2lnbmFsPGFueT4obnVsbCk7XHJcblxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgcHJldmlld1xyXG4gICAqIEBwYXJhbSBlIDogdGhlIGV2ZW50XHJcbiAgICovXHJcbiAgdXBkYXRlKGU6IGFueSkge1xyXG4gICAgaWYgKGUudGFyZ2V0LmZpbGVzKSB7XHJcbiAgICAgIHRoaXMuZmlsZSA9IGUudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIub25sb2FkID0gKF9lOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmZpbGVQcmV2aWV3LnNldCgoX2UudGFyZ2V0IGFzIEZpbGVSZWFkZXIpLnJlc3VsdCk7XHJcbiAgICAgIH07XHJcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGUudGFyZ2V0LmZpbGVzWzBdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdCBzaXplXHJcbiAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxyXG4gICAqL1xyXG4gIHNpemUoc2l6ZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gU3lzdGVtVXRpbHMuZm9ybWF0RmlsZVNpemUoc2l6ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdWJtaXQgc2VsZWN0aW9uXHJcbiAgICovXHJcbiAgb2soKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZG9uZS5lbWl0KHsgZmlsZTogdGhpcy5maWxlLCBvcHRpb25zOiB0aGlzLmRpYWxvZ0RhdGEub3B0aW9ucyB9KTtcclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG59XHJcblxyXG4iLCI8aDIgbWF0LWRpYWxvZy10aXRsZT57e2RpYWxvZ0RhdGEudGl0bGV9fTwvaDI+XHJcbkBpZiAoZGlhbG9nRGF0YS5kZXNjcmlwdGlvbikge1xyXG48ZGl2IGNsYXNzPVwic2VsZWN0cGljdHVyZS1kZXNjcmlwdGlvblwiIFtpbm5lckh0bWxdPVwiZGlhbG9nRGF0YS5kZXNjcmlwdGlvbiB8IHNhZmVIdG1sXCI+PC9kaXY+XHJcbn1cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0R2FwPVwiMzJweFwiIGZ4RmlsbD5cclxuICAgIDxkaXYgZnhGbGV4PVwiKlwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBmeEZpbGw+XHJcbiAgICAgIDxpbnB1dCAjX2ZpbGUgdHlwZT1cImZpbGVcIiBbaGlkZGVuXT1cInRydWVcIiBhY2NlcHQ9XCJpbWFnZS8qXCIgKGNoYW5nZSk9XCJ1cGRhdGUoJGV2ZW50KVwiIC8+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIl9maWxlLmNsaWNrKClcIj5TZWxlemlvbmEgZmlsZS4uLjwvYnV0dG9uPlxyXG4gICAgICBAaWYgKGZpbGUpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdHBpY3R1cmUtaW5mb1wiPlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJmaWxlUHJldmlldygpXCIgY2xhc3M9XCJwcmV2aWV3XCI+PGJyIC8+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzbWFsbCB0cnVuY2F0ZWRcIj48aT57e2ZpbGUubmFtZX19PC9pPjwvc3Bhbj5cclxuICAgICAgICA8ZGl2PjxzcGFuIGNsYXNzPVwic21hbGwgdHJ1bmNhdGVkXCI+RGltZW5zaW9uaTogPGk+e3tzaXplKGZpbGUuc2l6ZSl9fTwvaT48L3NwYW4+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIEBpZiAoZGlhbG9nRGF0YS5vcHRpb25zKSB7XHJcbiAgICA8ZGl2PlxyXG4gICAgICBAZm9yIChvIG9mIGRpYWxvZ0RhdGEub3B0aW9uczsgdHJhY2sgJGluZGV4OyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxtYXQtY2hlY2tib3ggY29sb3I9XCJwcmltYXJ5XCIgWyhuZ01vZGVsKV09XCJvLnZhbHVlXCIgbmFtZT1cIm9wdF97e2l9fVwiPlxyXG4gICAgICAgICAge3tvLmRlc2NyaXB0aW9ufX1cclxuICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIiBmeEZpbGw+XHJcbiAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiAoY2xpY2spPVwib2soKVwiIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCIhZmlsZVwiPnt7ZGlhbG9nRGF0YS5va0NhcHRpb259fTwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2UgY2RrRm9jdXNJbml0aWFsIGNvbG9yPVwicHJpbWFyeVwiPkFubnVsbGE8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
@@ -127,10 +127,10 @@ export class TreeDataSource {
|
|
|
127
127
|
update() {
|
|
128
128
|
this.dataChange.next(this.data);
|
|
129
129
|
}
|
|
130
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
131
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0
|
|
130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: TreeDataSource, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
131
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: TreeDataSource }); }
|
|
132
132
|
}
|
|
133
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: TreeDataSource, decorators: [{
|
|
134
134
|
type: Injectable
|
|
135
135
|
}] });
|
|
136
136
|
export class SelectTreeDialogComponent {
|
|
@@ -264,15 +264,15 @@ export class SelectTreeDialogComponent {
|
|
|
264
264
|
}
|
|
265
265
|
return false;
|
|
266
266
|
}
|
|
267
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
268
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: SelectTreeDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, providers: [TreeDataSource], ngImport: i0, template: "<h2 mat-dialog-title (keyup.ArrowDown)=\"nextFiltered()\">{{dialogData.title}}</h2>\r\n<div style=\"padding: 0 24px\">\r\n @if (dialogData.description) {\r\n <div [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n }\r\n <div style=\"padding-bottom: 10px;\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"50\">\r\n <mat-form-field style=\"width:100%\" [appearance]=\"dialogData.appearance\" subscriptSizing=\"dynamic\" >\r\n <mat-label>Cerca...</mat-label>\r\n <input type=\"text\" cdkFocusInitial (keyup)=\"doFilter()\" matInput title=\"Digita il testo'\"\r\n [(ngModel)]=\"filterText\">\r\n @if (filterText) {\r\n <button type=\"button\" type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"clearFilter()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n @if (filteredItems.length > 0) {\r\n <div fxFlex=\"50px\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\" class=\"small\">{{filterIndex + 1}} / {{filteredItems.length}}</div>\r\n </div>\r\n }\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\" style=\"white-space:nowrap\">\r\n <div fxFlexAlign=\"center\">\r\n @if (filteredItems.length > 0) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button color=\"primary\" (click)=\"nextFiltered()\">\r\n <mat-icon aria-label=\"Vai al prossimo\" matTooltip=\"Vai al prossimo\">arrow_downward</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button color=\"primary\" (click)=\"treeControl.collapseAll()\">\r\n <mat-icon aria-label=\"Comprimi tutto\" matTooltip=\"Comprimi tutto\">unfold_less</mat-icon>\r\n </button>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button color=\"primary\" (click)=\"treeControl.expandAll()\">\r\n <mat-icon aria-label=\"Espandi tutto\" matTooltip=\"Espandi tutto\">unfold_more</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content>\r\n <div fxLayout=\"column\" fxFill>\r\n <mat-tree [dataSource]=\"treeData\" [treeControl]=\"treeControl\">\r\n <mat-tree-node [id]=\"node.id\" *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple\" (click)=\"select($event, node);\"\r\n [ngClass]=\"{'tree-node-activated': currentNode && currentNode.id === node.id}\" >\r\n <div fxLayout=\"row\" fxLayoutGap=\"5px\" fxFill class=\"small\">\r\n <button type=\"button\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" class=\"uppercase \">\r\n {{node.name}}\r\n </div>\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n @if (node.count > 0) {\r\n <span fxLayoutAlign=\"end\">({{node.count}})</span>\r\n }\r\n </div>\r\n </div>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node [id]=\"node.id\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple\"\r\n [ngClass]=\"{'tree-node-activated': currentNode && currentNode.id === node.id }\" (click)=\"select($event, node);\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"5px\" fxFill class=\"small\">\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'Apri/chiudi ' + node.name\"\r\n class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" class=\"uppercase truncated\">\r\n <div>\r\n {{node.name}}\r\n </div>\r\n </div>\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n @if (node.count > 0) {\r\n <div fxLayoutAlign=\"end\">({{node.count}})</div>\r\n }\r\n </div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\" \r\n [disabled]=\"!currentNode\">{{dialogData.okCaption}}</button>\r\n <button mat-button mat-dialog-close cdkFocusInitial \r\n color=\"primary\">Annulla</button>\r\n </div>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .content,.drawer-small .content{padding:10px 0!important}.drawer .fixed,.drawer-small .fixed{padding:0 4px!important}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}.drawer-small .content{padding:20px 0 10px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.tree{overflow-x:hidden}.tree-node{min-height:36px!important;padding-right:12px;margin-right:0}.tree-node .small-icon-button{width:2rem!important;height:2rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.tree-node .small-icon-button .mat-mdc-button-touch-target{width:2rem!important;height:2rem!important}.tree-node:hover{cursor:pointer;background-color:var(--mat-menu-item-hover-state-layer-color, transparent);border-radius:24px}.tree-node-simple,.tree-node-simple>div{min-height:36px!important}.tree-node-activated,.tree-node-activated>div{min-height:36px!important;font-weight:700!important}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i8.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i8.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i8.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i8.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i8.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ExtendedModule }, { kind: "directive", type: i9.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
267
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SelectTreeDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
268
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SelectTreeDialogComponent, isStandalone: true, selector: "ng-component", outputs: { done: "done" }, host: { attributes: { "Bind": SystemUtils.generateUUID() } }, providers: [TreeDataSource], ngImport: i0, template: "<h2 mat-dialog-title (keyup.ArrowDown)=\"nextFiltered()\">{{dialogData.title}}</h2>\r\n<div style=\"padding: 0 24px\">\r\n @if (dialogData.description) {\r\n <div [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n }\r\n <div style=\"padding-bottom: 10px;\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"50\">\r\n <mat-form-field style=\"width:100%\" [appearance]=\"dialogData.appearance\" subscriptSizing=\"dynamic\" >\r\n <mat-label>Cerca...</mat-label>\r\n <input type=\"text\" cdkFocusInitial (keyup)=\"doFilter()\" matInput title=\"Digita il testo'\"\r\n [(ngModel)]=\"filterText\">\r\n @if (filterText) {\r\n <button type=\"button\" type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"clearFilter()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n @if (filteredItems.length > 0) {\r\n <div fxFlex=\"50px\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\" class=\"small\">{{filterIndex + 1}} / {{filteredItems.length}}</div>\r\n </div>\r\n }\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\" style=\"white-space:nowrap\">\r\n <div fxFlexAlign=\"center\">\r\n @if (filteredItems.length > 0) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button color=\"primary\" (click)=\"nextFiltered()\">\r\n <mat-icon aria-label=\"Vai al prossimo\" matTooltip=\"Vai al prossimo\">arrow_downward</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button color=\"primary\" (click)=\"treeControl.collapseAll()\">\r\n <mat-icon aria-label=\"Comprimi tutto\" matTooltip=\"Comprimi tutto\">unfold_less</mat-icon>\r\n </button>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button color=\"primary\" (click)=\"treeControl.expandAll()\">\r\n <mat-icon aria-label=\"Espandi tutto\" matTooltip=\"Espandi tutto\">unfold_more</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content>\r\n <div fxLayout=\"column\" fxFill>\r\n <mat-tree [dataSource]=\"treeData\" [treeControl]=\"treeControl\">\r\n <mat-tree-node [id]=\"node.id\" *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple\" (click)=\"select($event, node);\"\r\n [ngClass]=\"{'tree-node-activated': currentNode && currentNode.id === node.id}\" >\r\n <div fxLayout=\"row\" fxLayoutGap=\"5px\" fxFill class=\"small\">\r\n <button type=\"button\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" class=\"uppercase \">\r\n {{node.name}}\r\n </div>\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n @if (node.count > 0) {\r\n <span fxLayoutAlign=\"end\">({{node.count}})</span>\r\n }\r\n </div>\r\n </div>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node [id]=\"node.id\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple\"\r\n [ngClass]=\"{'tree-node-activated': currentNode && currentNode.id === node.id }\" (click)=\"select($event, node);\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"5px\" fxFill class=\"small\">\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'Apri/chiudi ' + node.name\"\r\n class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" class=\"uppercase truncated\">\r\n <div>\r\n {{node.name}}\r\n </div>\r\n </div>\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n @if (node.count > 0) {\r\n <div fxLayoutAlign=\"end\">({{node.count}})</div>\r\n }\r\n </div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\" \r\n [disabled]=\"!currentNode\">{{dialogData.okCaption}}</button>\r\n <button mat-button mat-dialog-close cdkFocusInitial \r\n color=\"primary\">Annulla</button>\r\n </div>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.tree{overflow-x:hidden}.tree-node{min-height:36px!important;padding-right:12px;margin-right:0}.tree-node .small-icon-button{width:2rem!important;height:2rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.tree-node .small-icon-button .mat-mdc-button-touch-target{width:2rem!important;height:2rem!important}.tree-node:hover{cursor:pointer;background-color:var(--mat-menu-item-hover-state-layer-color, transparent);border-radius:24px}.tree-node-simple,.tree-node-simple>div{min-height:36px!important}.tree-node-activated,.tree-node-activated>div{min-height:36px!important;font-weight:700!important}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i1.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i8.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i8.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i8.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i8.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i8.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ExtendedModule }, { kind: "directive", type: i9.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
269
269
|
}
|
|
270
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
270
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SelectTreeDialogComponent, decorators: [{
|
|
271
271
|
type: Component,
|
|
272
272
|
args: [{ host: { 'Bind': SystemUtils.generateUUID() }, providers: [TreeDataSource], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatDialogTitle, FlexModule, MatFormFieldModule, MatInputModule, FormsModule, MatButtonModule,
|
|
273
273
|
MatIconModule, MatTooltipModule, MatDialogContent, MatTreeModule, NgClass, ExtendedModule, MatDialogActions,
|
|
274
|
-
MatDialogClose, SafeHtmlPipe], template: "<h2 mat-dialog-title (keyup.ArrowDown)=\"nextFiltered()\">{{dialogData.title}}</h2>\r\n<div style=\"padding: 0 24px\">\r\n @if (dialogData.description) {\r\n <div [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n }\r\n <div style=\"padding-bottom: 10px;\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"50\">\r\n <mat-form-field style=\"width:100%\" [appearance]=\"dialogData.appearance\" subscriptSizing=\"dynamic\" >\r\n <mat-label>Cerca...</mat-label>\r\n <input type=\"text\" cdkFocusInitial (keyup)=\"doFilter()\" matInput title=\"Digita il testo'\"\r\n [(ngModel)]=\"filterText\">\r\n @if (filterText) {\r\n <button type=\"button\" type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"clearFilter()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n @if (filteredItems.length > 0) {\r\n <div fxFlex=\"50px\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\" class=\"small\">{{filterIndex + 1}} / {{filteredItems.length}}</div>\r\n </div>\r\n }\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\" style=\"white-space:nowrap\">\r\n <div fxFlexAlign=\"center\">\r\n @if (filteredItems.length > 0) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button color=\"primary\" (click)=\"nextFiltered()\">\r\n <mat-icon aria-label=\"Vai al prossimo\" matTooltip=\"Vai al prossimo\">arrow_downward</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button color=\"primary\" (click)=\"treeControl.collapseAll()\">\r\n <mat-icon aria-label=\"Comprimi tutto\" matTooltip=\"Comprimi tutto\">unfold_less</mat-icon>\r\n </button>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button color=\"primary\" (click)=\"treeControl.expandAll()\">\r\n <mat-icon aria-label=\"Espandi tutto\" matTooltip=\"Espandi tutto\">unfold_more</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content>\r\n <div fxLayout=\"column\" fxFill>\r\n <mat-tree [dataSource]=\"treeData\" [treeControl]=\"treeControl\">\r\n <mat-tree-node [id]=\"node.id\" *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple\" (click)=\"select($event, node);\"\r\n [ngClass]=\"{'tree-node-activated': currentNode && currentNode.id === node.id}\" >\r\n <div fxLayout=\"row\" fxLayoutGap=\"5px\" fxFill class=\"small\">\r\n <button type=\"button\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" class=\"uppercase \">\r\n {{node.name}}\r\n </div>\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n @if (node.count > 0) {\r\n <span fxLayoutAlign=\"end\">({{node.count}})</span>\r\n }\r\n </div>\r\n </div>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node [id]=\"node.id\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple\"\r\n [ngClass]=\"{'tree-node-activated': currentNode && currentNode.id === node.id }\" (click)=\"select($event, node);\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"5px\" fxFill class=\"small\">\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'Apri/chiudi ' + node.name\"\r\n class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" class=\"uppercase truncated\">\r\n <div>\r\n {{node.name}}\r\n </div>\r\n </div>\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n @if (node.count > 0) {\r\n <div fxLayoutAlign=\"end\">({{node.count}})</div>\r\n }\r\n </div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\" \r\n [disabled]=\"!currentNode\">{{dialogData.okCaption}}</button>\r\n <button mat-button mat-dialog-close cdkFocusInitial \r\n color=\"primary\">Annulla</button>\r\n </div>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .
|
|
274
|
+
MatDialogClose, SafeHtmlPipe], template: "<h2 mat-dialog-title (keyup.ArrowDown)=\"nextFiltered()\">{{dialogData.title}}</h2>\r\n<div style=\"padding: 0 24px\">\r\n @if (dialogData.description) {\r\n <div [innerHtml]=\"dialogData.description | safeHtml\"></div>\r\n }\r\n <div style=\"padding-bottom: 10px;\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"50\">\r\n <mat-form-field style=\"width:100%\" [appearance]=\"dialogData.appearance\" subscriptSizing=\"dynamic\" >\r\n <mat-label>Cerca...</mat-label>\r\n <input type=\"text\" cdkFocusInitial (keyup)=\"doFilter()\" matInput title=\"Digita il testo'\"\r\n [(ngModel)]=\"filterText\">\r\n @if (filterText) {\r\n <button type=\"button\" type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"clearFilter()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n @if (filteredItems.length > 0) {\r\n <div fxFlex=\"50px\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\" class=\"small\">{{filterIndex + 1}} / {{filteredItems.length}}</div>\r\n </div>\r\n }\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\" style=\"white-space:nowrap\">\r\n <div fxFlexAlign=\"center\">\r\n @if (filteredItems.length > 0) {\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button color=\"primary\" (click)=\"nextFiltered()\">\r\n <mat-icon aria-label=\"Vai al prossimo\" matTooltip=\"Vai al prossimo\">arrow_downward</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button color=\"primary\" (click)=\"treeControl.collapseAll()\">\r\n <mat-icon aria-label=\"Comprimi tutto\" matTooltip=\"Comprimi tutto\">unfold_less</mat-icon>\r\n </button>\r\n <button fxFlexAlign=\"center\" type=\"button\" mat-icon-button color=\"primary\" (click)=\"treeControl.expandAll()\">\r\n <mat-icon aria-label=\"Espandi tutto\" matTooltip=\"Espandi tutto\">unfold_more</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content>\r\n <div fxLayout=\"column\" fxFill>\r\n <mat-tree [dataSource]=\"treeData\" [treeControl]=\"treeControl\">\r\n <mat-tree-node [id]=\"node.id\" *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple\" (click)=\"select($event, node);\"\r\n [ngClass]=\"{'tree-node-activated': currentNode && currentNode.id === node.id}\" >\r\n <div fxLayout=\"row\" fxLayoutGap=\"5px\" fxFill class=\"small\">\r\n <button type=\"button\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" class=\"uppercase \">\r\n {{node.name}}\r\n </div>\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n @if (node.count > 0) {\r\n <span fxLayoutAlign=\"end\">({{node.count}})</span>\r\n }\r\n </div>\r\n </div>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node [id]=\"node.id\" *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple\"\r\n [ngClass]=\"{'tree-node-activated': currentNode && currentNode.id === node.id }\" (click)=\"select($event, node);\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"5px\" fxFill class=\"small\">\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'Apri/chiudi ' + node.name\"\r\n class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" class=\"uppercase truncated\">\r\n <div>\r\n {{node.name}}\r\n </div>\r\n </div>\r\n <div fxFlex=\"30px\" fxFlexAlign=\"center\">\r\n @if (node.count > 0) {\r\n <div fxLayoutAlign=\"end\">({{node.count}})</div>\r\n }\r\n </div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</div>\r\n<div mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button color=\"primary\" (click)=\"ok()\" \r\n [disabled]=\"!currentNode\">{{dialogData.okCaption}}</button>\r\n <button mat-button mat-dialog-close cdkFocusInitial \r\n color=\"primary\">Annulla</button>\r\n </div>\r\n</div>", styles: [".dialog-info{font-size:x-small;font-weight:700;text-align:right;padding:10px}.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #388E3C)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #a80710)}.dialog-header{padding-bottom:20px}.dialog-close{margin-right:10px;margin-top:10px}.dialog-menu{margin-left:10px;margin-top:10px}.dialog-title{padding:0 24px}.section-title{font-size:large;font-weight:600;padding-top:10px;padding-bottom:8px}.center{text-align:center}.wide{min-width:100%!important;max-width:100%!important;width:100%!important}.fill{min-width:100%!important;max-width:100%!important;width:100%!important;min-height:100%!important;max-height:100%!important;height:100%!important}.scroll-auto{overflow:auto}.scroll-hidden{overflow:hidden}b{font-weight:700}.large{font-size:large!important}.smaller{font-size:smaller}.small{font-size:small!important;line-height:16px}.small-icon-button{width:1.5rem!important;height:1.5rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.small-icon-button .mat-mdc-button-touch-target{width:1.5rem!important;height:1.5rem!important}.x-small{font-size:x-small!important;line-height:14px}.bold{font-weight:700}.uppercase{text-transform:uppercase!important}.lowercase{text-transform:lowercase!important}.truncated{min-width:0;max-width:100%}.truncated span,.truncated div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clipped{min-width:0;max-width:100%}.clipped span,.clipped div{white-space:nowrap;overflow:hidden;text-overflow:clip}.accent{color:var(--ars-accent, #7894ae)!important}.primary{color:var(--ars-primary, #00a293)!important}.secondary{color:var(--ars-secondary, #4a635f)!important}.error{color:var(--ars-error, #ff5449)!important}.warning{color:var(--ars-warning, #FFC107)!important}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;background-color:var(--ars-color-overlay, rgba(255, 255, 255, .75))}.drawer-content{padding-top:10px}.drawer,.drawer-small{min-width:420px!important;max-width:420px!important;padding:20px 0 0}.drawer .title-container,.drawer-small .title-container{padding:20px 10px}.drawer .title-container-with-loader,.drawer-small .title-container-with-loader{padding:14px 10px 20px}.drawer .title,.drawer-small .title{font-size:1.2em;font-weight:600;padding-left:10px;min-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer .accordion-panel,.drawer-small .accordion-panel{background-color:transparent!important}.drawer .accordion-header,.drawer-small .accordion-header{padding-left:15px;padding-right:20px;border-radius:var(--mat-expansion-container-shape)}.drawer .mat-expansion-panel-body,.drawer-small .mat-expansion-panel-body{padding-bottom:20px!important}.drawer-with-loader{padding-top:0!important}.drawer-transparent{background-color:transparent}.drawer-small{min-width:360px!important;max-width:360px!important}.drawer-small .title{min-width:150px}@media screen and (min-width: 0px) and (max-width: 359px){.drawer{min-width:360px!important;max-width:360px!important}.drawer .title{min-width:150px}}.fade-in{animation:fadein .5s linear}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-color-scheme: dark){.dialog-info-green,.dialog-info-ok{color:var(--ars-color-ok, #4CAF50)}.dialog-info-red,.dialog-info-error{color:var(--mat-form-field-error-text-color, #ff5449)}b{font-weight:600}}.tree{overflow-x:hidden}.tree-node{min-height:36px!important;padding-right:12px;margin-right:0}.tree-node .small-icon-button{width:2rem!important;height:2rem!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center}.tree-node .small-icon-button .mat-mdc-button-touch-target{width:2rem!important;height:2rem!important}.tree-node:hover{cursor:pointer;background-color:var(--mat-menu-item-hover-state-layer-color, transparent);border-radius:24px}.tree-node-simple,.tree-node-simple>div{min-height:36px!important}.tree-node-activated,.tree-node-activated>div{min-height:36px!important;font-weight:700!important}\n"] }]
|
|
275
275
|
}], propDecorators: { done: [{
|
|
276
276
|
type: Output
|
|
277
277
|
}] } });
|
|
278
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXRyZWUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy91aS5hcHBsaWNhdGlvbi91aS9kaWFsb2dzL3NlbGVjdC10cmVlL3NlbGVjdC10cmVlLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvZGlhbG9ncy9zZWxlY3QtdHJlZS9zZWxlY3QtdHJlZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQUUsVUFBVSxFQUd4QixNQUFNLEVBQ04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdC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Y0FBYyxFQUFFLFdBQVcsRUFBRSxlQUFlO3dCQUNwRyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCO3dCQUMzRyxjQUFjLEVBQUUsWUFBWSxDQUFDOzhCQUdyQixJQUFJO3NCQUFiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XHJcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgaW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0FjdGlvbnMsIE1hdERpYWxvZ0Nsb3NlLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dSZWYsIE1hdERpYWxvZ1RpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyLCBNYXRUcmVlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IFNhZmVIdG1sUGlwZSwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBFeHRlbmRlZE1vZHVsZSB9IGZyb20gJ0BuZ2JyYWNrZXQvbmd4LWxheW91dC9leHRlbmRlZCc7XHJcbmltcG9ydCB7IEZsZXhNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQvZmxleCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgYXMgb2JzZXJ2YWJsZU9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSXRlbU5vZGUsIFNlbGVjdERpYWxvZ1Jlc3VsdCwgU2VsZWN0VHJlZURpYWxvZ0RhdGEsIFNlbGVjdGFibGVOb2RlIH0gZnJvbSAnLi4vLi4vZGVmaW5pdGlvbnMnO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRyZWVEYXRhU291cmNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBkYXRhQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJdGVtTm9kZVtdPihbXSk7XHJcblxyXG4gIGdldCBkYXRhKCk6IEl0ZW1Ob2RlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YUNoYW5nZS52YWx1ZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kYXRhQ2hhbmdlLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsemllIHRoZSBkYXRhIHNvdXJjZVxyXG4gICAqIEBwYXJhbSBkYXRhIDogZGF0YVxyXG4gICAqL1xyXG4gIGluaXRpYWxpemUoZGF0YTogSXRlbU5vZGVbXSkge1xyXG4gICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kIGEgbm9kZSBieSBpZCByZWN1cnNpdmVseVxyXG4gICAqIEBwYXJhbSBub2RlOiB0aGUgc291cmNlIG5vZGVcclxuICAgKiBAcGFyYW0gaWQgOiB0aGUgaWQgdG8gc2VhcmNoIGZvclxyXG4gICAqL1xyXG4gIGZpbmROb2RlKG5vZGU6IEl0ZW1Ob2RlLCBpZDogc3RyaW5nKTogSXRlbU5vZGUge1xyXG4gICAgbGV0IGNoaWxkcmVuO1xyXG4gICAgaWYgKG5vZGUgJiYgbm9kZS5pZCA9PT0gaWQpIHJldHVybiBub2RlO1xyXG4gICAgaWYgKG5vZGUpIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcclxuICAgIGVsc2UgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMClcclxuICAgICAgY2hpbGRyZW4gPSB0aGlzLmRhdGFbMF0uY2hpbGRyZW47XHJcbiAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgbGV0IF9uID0gbnVsbDtcclxuICAgICAgY2hpbGRyZW4uc29tZShuID0+IHtcclxuICAgICAgICBpZiAobi5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgIF9uID0gbjtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBfbiA9IHRoaXMuZmluZE5vZGUobiwgaWQpO1xyXG4gICAgICAgIGlmIChfbikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIF9uO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSBhIG5vZGVcclxuICAgKiBAcGFyYW0gaWQgOiB0aGUgbm9kZSBpZCB0byByZW1vdmVcclxuICAgKi9cclxuICByZW1vdmVOb2RlKGlkOiBzdHJpbmcpIHtcclxuICAgIGxldCBuID0gdGhpcy5maW5kTm9kZShudWxsLCBpZCk7XHJcbiAgICBpZiAoIW4pIHJldHVybjtcclxuICAgIGlmIChuLnBhcmVudCkge1xyXG4gICAgICBsZXQgaSA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkobi5wYXJlbnQuY2hpbGRyZW4sICdpZCcsIGlkKTtcclxuICAgICAgaWYgKGkgIT0gLTEpIHtcclxuICAgICAgICBuLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgaWYgKG4ucGFyZW50LmNvdW50ID4gMCkgbi5wYXJlbnQuY291bnQtLTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGkgPSBTeXN0ZW1VdGlscy5hcnJheUZpbmRJbmRleEJ5S2V5KHRoaXMuZGF0YSwgJ2lkJywgaWQpO1xyXG4gICAgICBpZiAoaSAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuZGF0YS5zcGxpY2UoaSwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dCh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5zZXJ0IGEgbmV3IG5vZGVcclxuICAgKiBAcGFyYW0gbm9kZSA6IHRoZSBuZXcgbm9kZVxyXG4gICAqL1xyXG4gIGluc2VydE5vZGUobm9kZTogSXRlbU5vZGUpIHtcclxuICAgIGlmIChub2RlLnBhcmVudCkge1xyXG4gICAgICBub2RlLnBhcmVudC5jaGlsZHJlbi51bnNoaWZ0KG5vZGUpO1xyXG4gICAgICBub2RlLnBhcmVudC5jb3VudCsrO1xyXG4gICAgfSBlbHNlIHRoaXMuZGF0YS51bnNoaWZ0KG5vZGUpO1xyXG5cclxuICAgIHRoaXMuZGF0YUNoYW5nZS5uZXh0KHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW5hbWUgYSBub2RlXHJcbiAgICogQHBhcmFtIGlkIDogdGhlIG5vZGUgaWRcclxuICAgKiBAcGFyYW0gbmFtZSA6IHRoZSBuZXcgbm9kZSBuYW1lXHJcbiAgICovXHJcbiAgcmVuYW1lTm9kZShpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBJdGVtTm9kZSB7XHJcbiAgICBsZXQgbiA9IHRoaXMuZmluZE5vZGUobnVsbCwgaWQpO1xyXG4gICAgaWYgKG4pIHtcclxuICAgICAgbi5uYW1lID0gbmFtZTtcclxuICAgICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQodGhpcy5kYXRhKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGRhdGFcclxuICAgKi9cclxuICB1cGRhdGUoKSB7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dCh0aGlzLmRhdGEpO1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgaG9zdDogeyAnQmluZCc6IFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpIH0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC10cmVlLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LXRyZWUtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbVHJlZURhdGFTb3VyY2VdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgaW1wb3J0czogW01hdERpYWxvZ1RpdGxlLCBGbGV4TW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBGb3Jtc01vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBcclxuICAgIE1hdEljb25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdFRyZWVNb2R1bGUsIE5nQ2xhc3MsIEV4dGVuZGVkTW9kdWxlLCBNYXREaWFsb2dBY3Rpb25zLCBcclxuICAgIE1hdERpYWxvZ0Nsb3NlLCBTYWZlSHRtbFBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWxlY3RUcmVlRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBPdXRwdXQoKSBkb25lID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3REaWFsb2dSZXN1bHQ+KCk7XHJcblxyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgZGlhbG9nUmVmID0gaW5qZWN0KE1hdERpYWxvZ1JlZjxTZWxlY3RUcmVlRGlhbG9nQ29tcG9uZW50Pik7XHJcbiAgcHJvdGVjdGVkIGRpYWxvZ0RhdGE6IFNlbGVjdFRyZWVEaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSk7XHJcbiAgcHJpdmF0ZSB0cmVlID0gaW5qZWN0KFRyZWVEYXRhU291cmNlKTtcclxuICBwcml2YXRlIHRyZWVGbGF0dGVuZXI6IE1hdFRyZWVGbGF0dGVuZXI8SXRlbU5vZGUsIFNlbGVjdGFibGVOb2RlPjtcclxuICBwcm90ZWN0ZWQgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxTZWxlY3RhYmxlTm9kZT47XHJcbiAgcHJvdGVjdGVkIHRyZWVEYXRhOiBNYXRUcmVlRmxhdERhdGFTb3VyY2U8SXRlbU5vZGUsIFNlbGVjdGFibGVOb2RlPjtcclxuICBwcm90ZWN0ZWQgY3VycmVudE5vZGU6IEl0ZW1Ob2RlO1xyXG5cclxuICAvLyBVc2VkIGZvciBhcnJheSBmaWx0ZXJpbmdcclxuICBwcm90ZWN0ZWQgZmlsdGVyVGV4dDogc3RyaW5nID0gJyc7XHJcbiAgcHJvdGVjdGVkIGZpbHRlcmVkSXRlbXM6IFNlbGVjdGFibGVOb2RlW10gPSBbXTtcclxuICBwcm90ZWN0ZWQgZmlsdGVySW5kZXg6IG51bWJlciA9IC0xO1xyXG5cclxuICAvKipcclxuICAgKiBNYW5hZ2UgZmxhdCB0cmVlIHZpZXdcclxuICAgKi9cclxuICBwcml2YXRlIGdldENoaWxkcmVuID0gKG5vZGU6IEl0ZW1Ob2RlKTogT2JzZXJ2YWJsZTxJdGVtTm9kZVtdPiA9PlxyXG4gICAgb2JzZXJ2YWJsZU9mKG5vZGUuY2hpbGRyZW4pO1xyXG4gIHByaXZhdGUgZ2V0TGV2ZWwgPSAobm9kZTogU2VsZWN0YWJsZU5vZGUpID0+IG5vZGUubGV2ZWw7XHJcbiAgcHJpdmF0ZSBpc0V4cGFuZGFibGUgPSAobm9kZTogU2VsZWN0YWJsZU5vZGUpID0+IG5vZGUuZXhwYW5kYWJsZTtcclxuICBwcm90ZWN0ZWQgaGFzQ2hpbGQgPSAoXzogbnVtYmVyLCBfbm9kZTogU2VsZWN0YWJsZU5vZGUpID0+IF9ub2RlLmV4cGFuZGFibGU7XHJcbiAgcHJvdGVjdGVkIHRyYW5zZm9ybWVyID0gKGl0ZW06IEl0ZW1Ob2RlLCBsZXZlbDogbnVtYmVyKSA9PiB7XHJcbiAgICByZXR1cm4gbmV3IFNlbGVjdGFibGVOb2RlKGl0ZW0sIGxldmVsKTtcclxuICB9O1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZGlhbG9nRGF0YSA9IHRoaXMuZGlhbG9nRGF0YSB8fCB7IGFwcGVhcmFuY2U6ICdvdXRsaW5lJywgdGl0bGU6ICdTZWxlemlvbmEnLCBva0NhcHRpb246ICdPaycgfTtcclxuICAgIHRoaXMudHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKFxyXG4gICAgICB0aGlzLnRyYW5zZm9ybWVyLFxyXG4gICAgICB0aGlzLmdldExldmVsLFxyXG4gICAgICB0aGlzLmlzRXhwYW5kYWJsZSxcclxuICAgICAgdGhpcy5nZXRDaGlsZHJlblxyXG4gICAgKTtcclxuICAgIHRoaXMudHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPFNlbGVjdGFibGVOb2RlPihcclxuICAgICAgdGhpcy5nZXRMZXZlbCxcclxuICAgICAgdGhpcy5pc0V4cGFuZGFibGVcclxuICAgICk7XHJcbiAgICB0aGlzLnRyZWVEYXRhID0gbmV3IE1hdFRyZWVGbGF0RGF0YVNvdXJjZShcclxuICAgICAgdGhpcy50cmVlQ29udHJvbCxcclxuICAgICAgdGhpcy50cmVlRmxhdHRlbmVyXHJcbiAgICApO1xyXG4gICAgdGhpcy50cmVlLmRhdGFDaGFuZ2VcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4gKHRoaXMudHJlZURhdGEuZGF0YSA9IGRhdGEpKTtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEubm9kZXMpIHtcclxuICAgICAgdGhpcy50cmVlLmluaXRpYWxpemUodGhpcy5kaWFsb2dEYXRhLm5vZGVzKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5kaWFsb2dEYXRhLnRpdGxlKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS50aXRsZSA9ICdTZWxlemlvbmEnO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmRpYWxvZ0RhdGEub2tDYXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS5va0NhcHRpb24gPSAnT0snO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5pbml0aWFsRmlsdGVyKSB7XHJcbiAgICAgIHRoaXMuZG9GaWx0ZXIodGhpcy5kaWFsb2dEYXRhLmluaXRpYWxGaWx0ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1Ym1pdCBzZWxlY3Rpb25cclxuICAgKi9cclxuICBvaygpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kb25lLmVtaXQoeyBzZWxlY3RlZEl0ZW1zOiBbdGhpcy5jdXJyZW50Tm9kZV0gfSk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VsZWN0ICBhIG5vZGVcclxuICAgKiBAcGFyYW0gZSA6IHRoZSBldmVudFxyXG4gICAqIEBwYXJhbSBub2RlIDogdGhlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNlbGVjdChlOiBhbnksIG5vZGU6IFNlbGVjdGFibGVOb2RlKSB7XHJcbiAgICBpZiAoZSkgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGlmIChub2RlKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE5vZGUgPSBub2RlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgZmlsdGVyXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNsZWFyRmlsdGVyKCkge1xyXG4gICAgdGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSBmaWx0ZXJcclxuICAgKiBAcGFyYW0gdGV4dCA6IHRoZSB0ZXh0IHRvIGZpbHRlclxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkb0ZpbHRlcih0ZXh0OiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICBpZiAodGV4dCkgdGhpcy5maWx0ZXJUZXh0ID0gdGV4dDtcclxuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXJJbmRleCA9IC0xO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyVGV4dCkge1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgIGlmIChuLm5hbWUuaW5kZXhPZih0aGlzLmZpbHRlclRleHQpICE9IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMucHVzaChuKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZmlsdGVyZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5uZXh0RmlsdGVyZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBuZXh0IGZpbHRlcmVkIGl0ZW1cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgbmV4dEZpbHRlcmVkKCkge1xyXG4gICAgaWYgKCFTeXN0ZW1VdGlscy5pc0Jyb3dzZXIoKSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyZWRJdGVtcy5sZW5ndGggPT09IDApIHJldHVybjtcclxuICAgIHRoaXMuZmlsdGVySW5kZXgrKztcclxuICAgIGlmICh0aGlzLmZpbHRlckluZGV4ID09PSB0aGlzLmZpbHRlcmVkSXRlbXMubGVuZ3RoKSB0aGlzLmZpbHRlckluZGV4ID0gMDtcclxuICAgIGxldCBub2RlID0gdGhpcy5maWx0ZXJlZEl0ZW1zW3RoaXMuZmlsdGVySW5kZXhdO1xyXG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IG5vZGU7XHJcbiAgICB0aGlzLmV4cGFuZChub2RlKTtcclxuICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobm9kZS5pZCk7XHJcbiAgICBpZiAoZWxlbSkgZWxlbS5zY3JvbGxJbnRvVmlldygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhwYW5kIGEgbm9kZSBhbmQgYWxsIGl0cyBwYXJlbnRzXHJcbiAgICogQHBhcmFtIG5vZGUgOiB0aGUgc2VsZWN0YWJsZSBub2RlIHRvIGV4cGFuZFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBleHBhbmQobm9kZTogU2VsZWN0YWJsZU5vZGUpIHtcclxuICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xyXG4gICAgbGV0IF9uID0gbm9kZS5wYXJlbnQ7XHJcbiAgICB3aGlsZSAoX24pIHtcclxuICAgICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuc29tZShuID0+IHtcclxuICAgICAgICBpZiAobi5pZCA9PT0gX24uaWQpIHtcclxuICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG4pO1xyXG4gICAgICAgICAgX24gPSBfbi5wYXJlbnQ7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuXHJcbiIsIjxoMiBtYXQtZGlhbG9nLXRpdGxlIChrZXl1cC5BcnJvd0Rvd24pPVwibmV4dEZpbHRlcmVkKClcIj57e2RpYWxvZ0RhdGEudGl0bGV9fTwvaDI+XHJcbjxkaXYgc3R5bGU9XCJwYWRkaW5nOiAwIDI0cHhcIj5cclxuICBAaWYgKGRpYWxvZ0RhdGEuZGVzY3JpcHRpb24pIHtcclxuICA8ZGl2IFtpbm5lckh0bWxdPVwiZGlhbG9nRGF0YS5kZXNjcmlwdGlvbiB8IHNhZmVIdG1sXCI+PC9kaXY+XHJcbiAgfVxyXG4gIDxkaXYgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMTBweDtcIj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiNTBcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDoxMDAlXCIgW2FwcGVhcmFuY2VdPVwiZGlhbG9nRGF0YS5hcHBlYXJhbmNlXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiID5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+Q2VyY2EuLi48L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNka0ZvY3VzSW5pdGlhbCAoa2V5dXApPVwiZG9GaWx0ZXIoKVwiIG1hdElucHV0IHRpdGxlPVwiRGlnaXRhIGlsIHRlc3RvJ1wiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyVGV4dFwiPlxyXG4gICAgICAgICAgQGlmIChmaWx0ZXJUZXh0KSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkNsZWFyXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyRmlsdGVyKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBAaWYgKGZpbHRlcmVkSXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICA8ZGl2IGZ4RmxleD1cIjUwcHhcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNsYXNzPVwic21hbGxcIj57e2ZpbHRlckluZGV4ICsgMX19IC8ge3tmaWx0ZXJlZEl0ZW1zLmxlbmd0aH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiNTBcIiBmeExheW91dEFsaWduPVwiZW5kXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTpub3dyYXBcIj5cclxuICAgICAgICA8ZGl2IGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgICBAaWYgKGZpbHRlcmVkSXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm5leHRGaWx0ZXJlZCgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWxhYmVsPVwiVmFpIGFsIHByb3NzaW1vXCIgbWF0VG9vbHRpcD1cIlZhaSBhbCBwcm9zc2ltb1wiPmFycm93X2Rvd253YXJkPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInRyZWVDb250cm9sLmNvbGxhcHNlQWxsKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJDb21wcmltaSB0dXR0b1wiIG1hdFRvb2x0aXA9XCJDb21wcmltaSB0dXR0b1wiPnVuZm9sZF9sZXNzPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInRyZWVDb250cm9sLmV4cGFuZEFsbCgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWxhYmVsPVwiRXNwYW5kaSB0dXR0b1wiIG1hdFRvb2x0aXA9XCJFc3BhbmRpIHR1dHRvXCI+dW5mb2xkX21vcmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cclxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGaWxsPlxyXG4gICAgPG1hdC10cmVlIFtkYXRhU291cmNlXT1cInRyZWVEYXRhXCIgW3RyZWVDb250cm9sXT1cInRyZWVDb250cm9sXCI+XHJcbiAgICAgIDxtYXQtdHJlZS1ub2RlIFtpZF09XCJub2RlLmlkXCIgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGVcIiBtYXRUcmVlTm9kZVRvZ2dsZSBtYXRUcmVlTm9kZVBhZGRpbmdcclxuICAgICAgICBbbWF0VHJlZU5vZGVQYWRkaW5nSW5kZW50XT1cIjIwXCIgY2xhc3M9XCJ0cmVlLW5vZGUgdHJlZS1ub2RlLXNpbXBsZVwiIChjbGljayk9XCJzZWxlY3QoJGV2ZW50LCBub2RlKTtcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsndHJlZS1ub2RlLWFjdGl2YXRlZCc6IGN1cnJlbnROb2RlICYmIGN1cnJlbnROb2RlLmlkID09PSBub2RlLmlkfVwiID5cclxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCI1cHhcIiBmeEZpbGwgY2xhc3M9XCJzbWFsbFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGRpc2FibGVkIGNsYXNzPVwic21hbGwtaWNvbi1idXR0b25cIj48L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJ1cHBlcmNhc2UgXCI+XHJcbiAgICAgICAgICAgIHt7bm9kZS5uYW1lfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBmeEZsZXg9XCIzMHB4XCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgICAgQGlmIChub2RlLmNvdW50ID4gMCkge1xyXG4gICAgICAgICAgICA8c3BhbiBmeExheW91dEFsaWduPVwiZW5kXCI+KHt7bm9kZS5jb3VudH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LXRyZWUtbm9kZT5cclxuXHJcbiAgICAgIDxtYXQtdHJlZS1ub2RlIFtpZF09XCJub2RlLmlkXCIgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7d2hlbjogaGFzQ2hpbGRcIiBtYXRUcmVlTm9kZVBhZGRpbmdcclxuICAgICAgICBbbWF0VHJlZU5vZGVQYWRkaW5nSW5kZW50XT1cIjIwXCIgY2xhc3M9XCJ0cmVlLW5vZGUgdHJlZS1ub2RlLXNpbXBsZVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyd0cmVlLW5vZGUtYWN0aXZhdGVkJzogY3VycmVudE5vZGUgJiYgY3VycmVudE5vZGUuaWQgPT09IG5vZGUuaWQgfVwiIChjbGljayk9XCJzZWxlY3QoJGV2ZW50LCBub2RlKTtcIj5cclxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCI1cHhcIiBmeEZpbGwgY2xhc3M9XCJzbWFsbFwiPlxyXG4gICAgICAgICAgPGRpdiBmeEZsZXg9XCIzMHB4XCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRyZWVOb2RlVG9nZ2xlIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FwcmkvY2hpdWRpICcgKyBub2RlLm5hbWVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic21hbGwtaWNvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+XHJcbiAgICAgICAgICAgICAgICB7e3RyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAnZXhwYW5kX21vcmUnIDogJ2NoZXZyb25fcmlnaHQnfX1cclxuICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInVwcGVyY2FzZSB0cnVuY2F0ZWRcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICB7e25vZGUubmFtZX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjMwcHhcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgICBAaWYgKG5vZGUuY291bnQgPiAwKSB7XHJcbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZFwiPih7e25vZGUuY291bnR9fSk8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LXRyZWUtbm9kZT5cclxuICAgIDwvbWF0LXRyZWU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiIGZ4RmlsbD5cclxuICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvaygpXCIgXHJcbiAgICAgIFtkaXNhYmxlZF09XCIhY3VycmVudE5vZGVcIj57e2RpYWxvZ0RhdGEub2tDYXB0aW9ufX08L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBtYXQtZGlhbG9nLWNsb3NlIGNka0ZvY3VzSW5pdGlhbCBcclxuICAgICAgY29sb3I9XCJwcmltYXJ5XCI+QW5udWxsYTwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXRyZWUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy91aS5hcHBsaWNhdGlvbi91aS9kaWFsb2dzL3NlbGVjdC10cmVlL3NlbGVjdC10cmVlLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvZGlhbG9ncy9zZWxlY3QtdHJlZS9zZWxlY3QtdHJlZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQUUsVUFBVSxFQUd4QixNQUFNLEVBQ04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdC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Y0FBYyxFQUFFLFdBQVcsRUFBRSxlQUFlO3dCQUNwRyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCO3dCQUMzRyxjQUFjLEVBQUUsWUFBWSxDQUFDOzhCQUdyQixJQUFJO3NCQUFiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XHJcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgaW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0FjdGlvbnMsIE1hdERpYWxvZ0Nsb3NlLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dSZWYsIE1hdERpYWxvZ1RpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyLCBNYXRUcmVlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IFNhZmVIdG1sUGlwZSwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBFeHRlbmRlZE1vZHVsZSB9IGZyb20gJ0BuZ2JyYWNrZXQvbmd4LWxheW91dC9leHRlbmRlZCc7XHJcbmltcG9ydCB7IEZsZXhNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQvZmxleCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgYXMgb2JzZXJ2YWJsZU9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSXRlbU5vZGUsIFNlbGVjdERpYWxvZ1Jlc3VsdCwgU2VsZWN0VHJlZURpYWxvZ0RhdGEsIFNlbGVjdGFibGVOb2RlIH0gZnJvbSAnLi4vLi4vZGVmaW5pdGlvbnMnO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRyZWVEYXRhU291cmNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBkYXRhQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJdGVtTm9kZVtdPihbXSk7XHJcblxyXG4gIGdldCBkYXRhKCk6IEl0ZW1Ob2RlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YUNoYW5nZS52YWx1ZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kYXRhQ2hhbmdlLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsemllIHRoZSBkYXRhIHNvdXJjZVxyXG4gICAqIEBwYXJhbSBkYXRhIDogZGF0YVxyXG4gICAqL1xyXG4gIGluaXRpYWxpemUoZGF0YTogSXRlbU5vZGVbXSkge1xyXG4gICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kIGEgbm9kZSBieSBpZCByZWN1cnNpdmVseVxyXG4gICAqIEBwYXJhbSBub2RlOiB0aGUgc291cmNlIG5vZGVcclxuICAgKiBAcGFyYW0gaWQgOiB0aGUgaWQgdG8gc2VhcmNoIGZvclxyXG4gICAqL1xyXG4gIGZpbmROb2RlKG5vZGU6IEl0ZW1Ob2RlLCBpZDogc3RyaW5nKTogSXRlbU5vZGUge1xyXG4gICAgbGV0IGNoaWxkcmVuO1xyXG4gICAgaWYgKG5vZGUgJiYgbm9kZS5pZCA9PT0gaWQpIHJldHVybiBub2RlO1xyXG4gICAgaWYgKG5vZGUpIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcclxuICAgIGVsc2UgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMClcclxuICAgICAgY2hpbGRyZW4gPSB0aGlzLmRhdGFbMF0uY2hpbGRyZW47XHJcbiAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgbGV0IF9uID0gbnVsbDtcclxuICAgICAgY2hpbGRyZW4uc29tZShuID0+IHtcclxuICAgICAgICBpZiAobi5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgIF9uID0gbjtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBfbiA9IHRoaXMuZmluZE5vZGUobiwgaWQpO1xyXG4gICAgICAgIGlmIChfbikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIF9uO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSBhIG5vZGVcclxuICAgKiBAcGFyYW0gaWQgOiB0aGUgbm9kZSBpZCB0byByZW1vdmVcclxuICAgKi9cclxuICByZW1vdmVOb2RlKGlkOiBzdHJpbmcpIHtcclxuICAgIGxldCBuID0gdGhpcy5maW5kTm9kZShudWxsLCBpZCk7XHJcbiAgICBpZiAoIW4pIHJldHVybjtcclxuICAgIGlmIChuLnBhcmVudCkge1xyXG4gICAgICBsZXQgaSA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkobi5wYXJlbnQuY2hpbGRyZW4sICdpZCcsIGlkKTtcclxuICAgICAgaWYgKGkgIT0gLTEpIHtcclxuICAgICAgICBuLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgaWYgKG4ucGFyZW50LmNvdW50ID4gMCkgbi5wYXJlbnQuY291bnQtLTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGkgPSBTeXN0ZW1VdGlscy5hcnJheUZpbmRJbmRleEJ5S2V5KHRoaXMuZGF0YSwgJ2lkJywgaWQpO1xyXG4gICAgICBpZiAoaSAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuZGF0YS5zcGxpY2UoaSwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dCh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5zZXJ0IGEgbmV3IG5vZGVcclxuICAgKiBAcGFyYW0gbm9kZSA6IHRoZSBuZXcgbm9kZVxyXG4gICAqL1xyXG4gIGluc2VydE5vZGUobm9kZTogSXRlbU5vZGUpIHtcclxuICAgIGlmIChub2RlLnBhcmVudCkge1xyXG4gICAgICBub2RlLnBhcmVudC5jaGlsZHJlbi51bnNoaWZ0KG5vZGUpO1xyXG4gICAgICBub2RlLnBhcmVudC5jb3VudCsrO1xyXG4gICAgfSBlbHNlIHRoaXMuZGF0YS51bnNoaWZ0KG5vZGUpO1xyXG5cclxuICAgIHRoaXMuZGF0YUNoYW5nZS5uZXh0KHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW5hbWUgYSBub2RlXHJcbiAgICogQHBhcmFtIGlkIDogdGhlIG5vZGUgaWRcclxuICAgKiBAcGFyYW0gbmFtZSA6IHRoZSBuZXcgbm9kZSBuYW1lXHJcbiAgICovXHJcbiAgcmVuYW1lTm9kZShpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBJdGVtTm9kZSB7XHJcbiAgICBsZXQgbiA9IHRoaXMuZmluZE5vZGUobnVsbCwgaWQpO1xyXG4gICAgaWYgKG4pIHtcclxuICAgICAgbi5uYW1lID0gbmFtZTtcclxuICAgICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQodGhpcy5kYXRhKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGRhdGFcclxuICAgKi9cclxuICB1cGRhdGUoKSB7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dCh0aGlzLmRhdGEpO1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgaG9zdDogeyAnQmluZCc6IFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpIH0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC10cmVlLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LXRyZWUtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbVHJlZURhdGFTb3VyY2VdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgaW1wb3J0czogW01hdERpYWxvZ1RpdGxlLCBGbGV4TW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBGb3Jtc01vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBcclxuICAgIE1hdEljb25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdFRyZWVNb2R1bGUsIE5nQ2xhc3MsIEV4dGVuZGVkTW9kdWxlLCBNYXREaWFsb2dBY3Rpb25zLCBcclxuICAgIE1hdERpYWxvZ0Nsb3NlLCBTYWZlSHRtbFBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWxlY3RUcmVlRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBPdXRwdXQoKSBkb25lID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3REaWFsb2dSZXN1bHQ+KCk7XHJcblxyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgZGlhbG9nUmVmID0gaW5qZWN0KE1hdERpYWxvZ1JlZjxTZWxlY3RUcmVlRGlhbG9nQ29tcG9uZW50Pik7XHJcbiAgcHJvdGVjdGVkIGRpYWxvZ0RhdGE6IFNlbGVjdFRyZWVEaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSk7XHJcbiAgcHJpdmF0ZSB0cmVlID0gaW5qZWN0KFRyZWVEYXRhU291cmNlKTtcclxuICBwcml2YXRlIHRyZWVGbGF0dGVuZXI6IE1hdFRyZWVGbGF0dGVuZXI8SXRlbU5vZGUsIFNlbGVjdGFibGVOb2RlPjtcclxuICBwcm90ZWN0ZWQgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxTZWxlY3RhYmxlTm9kZT47XHJcbiAgcHJvdGVjdGVkIHRyZWVEYXRhOiBNYXRUcmVlRmxhdERhdGFTb3VyY2U8SXRlbU5vZGUsIFNlbGVjdGFibGVOb2RlPjtcclxuICBwcm90ZWN0ZWQgY3VycmVudE5vZGU6IEl0ZW1Ob2RlO1xyXG5cclxuICAvLyBVc2VkIGZvciBhcnJheSBmaWx0ZXJpbmdcclxuICBwcm90ZWN0ZWQgZmlsdGVyVGV4dDogc3RyaW5nID0gJyc7XHJcbiAgcHJvdGVjdGVkIGZpbHRlcmVkSXRlbXM6IFNlbGVjdGFibGVOb2RlW10gPSBbXTtcclxuICBwcm90ZWN0ZWQgZmlsdGVySW5kZXg6IG51bWJlciA9IC0xO1xyXG5cclxuICAvKipcclxuICAgKiBNYW5hZ2UgZmxhdCB0cmVlIHZpZXdcclxuICAgKi9cclxuICBwcml2YXRlIGdldENoaWxkcmVuID0gKG5vZGU6IEl0ZW1Ob2RlKTogT2JzZXJ2YWJsZTxJdGVtTm9kZVtdPiA9PlxyXG4gICAgb2JzZXJ2YWJsZU9mKG5vZGUuY2hpbGRyZW4pO1xyXG4gIHByaXZhdGUgZ2V0TGV2ZWwgPSAobm9kZTogU2VsZWN0YWJsZU5vZGUpID0+IG5vZGUubGV2ZWw7XHJcbiAgcHJpdmF0ZSBpc0V4cGFuZGFibGUgPSAobm9kZTogU2VsZWN0YWJsZU5vZGUpID0+IG5vZGUuZXhwYW5kYWJsZTtcclxuICBwcm90ZWN0ZWQgaGFzQ2hpbGQgPSAoXzogbnVtYmVyLCBfbm9kZTogU2VsZWN0YWJsZU5vZGUpID0+IF9ub2RlLmV4cGFuZGFibGU7XHJcbiAgcHJvdGVjdGVkIHRyYW5zZm9ybWVyID0gKGl0ZW06IEl0ZW1Ob2RlLCBsZXZlbDogbnVtYmVyKSA9PiB7XHJcbiAgICByZXR1cm4gbmV3IFNlbGVjdGFibGVOb2RlKGl0ZW0sIGxldmVsKTtcclxuICB9O1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZGlhbG9nRGF0YSA9IHRoaXMuZGlhbG9nRGF0YSB8fCB7IGFwcGVhcmFuY2U6ICdvdXRsaW5lJywgdGl0bGU6ICdTZWxlemlvbmEnLCBva0NhcHRpb246ICdPaycgfTtcclxuICAgIHRoaXMudHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKFxyXG4gICAgICB0aGlzLnRyYW5zZm9ybWVyLFxyXG4gICAgICB0aGlzLmdldExldmVsLFxyXG4gICAgICB0aGlzLmlzRXhwYW5kYWJsZSxcclxuICAgICAgdGhpcy5nZXRDaGlsZHJlblxyXG4gICAgKTtcclxuICAgIHRoaXMudHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPFNlbGVjdGFibGVOb2RlPihcclxuICAgICAgdGhpcy5nZXRMZXZlbCxcclxuICAgICAgdGhpcy5pc0V4cGFuZGFibGVcclxuICAgICk7XHJcbiAgICB0aGlzLnRyZWVEYXRhID0gbmV3IE1hdFRyZWVGbGF0RGF0YVNvdXJjZShcclxuICAgICAgdGhpcy50cmVlQ29udHJvbCxcclxuICAgICAgdGhpcy50cmVlRmxhdHRlbmVyXHJcbiAgICApO1xyXG4gICAgdGhpcy50cmVlLmRhdGFDaGFuZ2VcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4gKHRoaXMudHJlZURhdGEuZGF0YSA9IGRhdGEpKTtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEubm9kZXMpIHtcclxuICAgICAgdGhpcy50cmVlLmluaXRpYWxpemUodGhpcy5kaWFsb2dEYXRhLm5vZGVzKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5kaWFsb2dEYXRhLnRpdGxlKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS50aXRsZSA9ICdTZWxlemlvbmEnO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmRpYWxvZ0RhdGEub2tDYXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nRGF0YS5va0NhcHRpb24gPSAnT0snO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5pbml0aWFsRmlsdGVyKSB7XHJcbiAgICAgIHRoaXMuZG9GaWx0ZXIodGhpcy5kaWFsb2dEYXRhLmluaXRpYWxGaWx0ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1Ym1pdCBzZWxlY3Rpb25cclxuICAgKi9cclxuICBvaygpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kb25lLmVtaXQoeyBzZWxlY3RlZEl0ZW1zOiBbdGhpcy5jdXJyZW50Tm9kZV0gfSk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VsZWN0ICBhIG5vZGVcclxuICAgKiBAcGFyYW0gZSA6IHRoZSBldmVudFxyXG4gICAqIEBwYXJhbSBub2RlIDogdGhlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNlbGVjdChlOiBhbnksIG5vZGU6IFNlbGVjdGFibGVOb2RlKSB7XHJcbiAgICBpZiAoZSkgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGlmIChub2RlKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE5vZGUgPSBub2RlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgZmlsdGVyXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNsZWFyRmlsdGVyKCkge1xyXG4gICAgdGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSBmaWx0ZXJcclxuICAgKiBAcGFyYW0gdGV4dCA6IHRoZSB0ZXh0IHRvIGZpbHRlclxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkb0ZpbHRlcih0ZXh0OiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICBpZiAodGV4dCkgdGhpcy5maWx0ZXJUZXh0ID0gdGV4dDtcclxuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXJJbmRleCA9IC0xO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyVGV4dCkge1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgIGlmIChuLm5hbWUuaW5kZXhPZih0aGlzLmZpbHRlclRleHQpICE9IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMucHVzaChuKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZmlsdGVyZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5uZXh0RmlsdGVyZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBuZXh0IGZpbHRlcmVkIGl0ZW1cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgbmV4dEZpbHRlcmVkKCkge1xyXG4gICAgaWYgKCFTeXN0ZW1VdGlscy5pc0Jyb3dzZXIoKSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyZWRJdGVtcy5sZW5ndGggPT09IDApIHJldHVybjtcclxuICAgIHRoaXMuZmlsdGVySW5kZXgrKztcclxuICAgIGlmICh0aGlzLmZpbHRlckluZGV4ID09PSB0aGlzLmZpbHRlcmVkSXRlbXMubGVuZ3RoKSB0aGlzLmZpbHRlckluZGV4ID0gMDtcclxuICAgIGxldCBub2RlID0gdGhpcy5maWx0ZXJlZEl0ZW1zW3RoaXMuZmlsdGVySW5kZXhdO1xyXG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IG5vZGU7XHJcbiAgICB0aGlzLmV4cGFuZChub2RlKTtcclxuICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobm9kZS5pZCk7XHJcbiAgICBpZiAoZWxlbSkgZWxlbS5zY3JvbGxJbnRvVmlldygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhwYW5kIGEgbm9kZSBhbmQgYWxsIGl0cyBwYXJlbnRzXHJcbiAgICogQHBhcmFtIG5vZGUgOiB0aGUgc2VsZWN0YWJsZSBub2RlIHRvIGV4cGFuZFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBleHBhbmQobm9kZTogU2VsZWN0YWJsZU5vZGUpIHtcclxuICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xyXG4gICAgbGV0IF9uID0gbm9kZS5wYXJlbnQ7XHJcbiAgICB3aGlsZSAoX24pIHtcclxuICAgICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuc29tZShuID0+IHtcclxuICAgICAgICBpZiAobi5pZCA9PT0gX24uaWQpIHtcclxuICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG4pO1xyXG4gICAgICAgICAgX24gPSBfbi5wYXJlbnQ7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuXHJcbiIsIjxoMiBtYXQtZGlhbG9nLXRpdGxlIChrZXl1cC5BcnJvd0Rvd24pPVwibmV4dEZpbHRlcmVkKClcIj57e2RpYWxvZ0RhdGEudGl0bGV9fTwvaDI+XHJcbjxkaXYgc3R5bGU9XCJwYWRkaW5nOiAwIDI0cHhcIj5cclxuICBAaWYgKGRpYWxvZ0RhdGEuZGVzY3JpcHRpb24pIHtcclxuICA8ZGl2IFtpbm5lckh0bWxdPVwiZGlhbG9nRGF0YS5kZXNjcmlwdGlvbiB8IHNhZmVIdG1sXCI+PC9kaXY+XHJcbiAgfVxyXG4gIDxkaXYgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMTBweDtcIj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiNTBcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDoxMDAlXCIgW2FwcGVhcmFuY2VdPVwiZGlhbG9nRGF0YS5hcHBlYXJhbmNlXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiID5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+Q2VyY2EuLi48L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNka0ZvY3VzSW5pdGlhbCAoa2V5dXApPVwiZG9GaWx0ZXIoKVwiIG1hdElucHV0IHRpdGxlPVwiRGlnaXRhIGlsIHRlc3RvJ1wiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyVGV4dFwiPlxyXG4gICAgICAgICAgQGlmIChmaWx0ZXJUZXh0KSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkNsZWFyXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyRmlsdGVyKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBAaWYgKGZpbHRlcmVkSXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICA8ZGl2IGZ4RmxleD1cIjUwcHhcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNsYXNzPVwic21hbGxcIj57e2ZpbHRlckluZGV4ICsgMX19IC8ge3tmaWx0ZXJlZEl0ZW1zLmxlbmd0aH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiNTBcIiBmeExheW91dEFsaWduPVwiZW5kXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTpub3dyYXBcIj5cclxuICAgICAgICA8ZGl2IGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgICBAaWYgKGZpbHRlcmVkSXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm5leHRGaWx0ZXJlZCgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWxhYmVsPVwiVmFpIGFsIHByb3NzaW1vXCIgbWF0VG9vbHRpcD1cIlZhaSBhbCBwcm9zc2ltb1wiPmFycm93X2Rvd253YXJkPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInRyZWVDb250cm9sLmNvbGxhcHNlQWxsKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJDb21wcmltaSB0dXR0b1wiIG1hdFRvb2x0aXA9XCJDb21wcmltaSB0dXR0b1wiPnVuZm9sZF9sZXNzPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInRyZWVDb250cm9sLmV4cGFuZEFsbCgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWxhYmVsPVwiRXNwYW5kaSB0dXR0b1wiIG1hdFRvb2x0aXA9XCJFc3BhbmRpIHR1dHRvXCI+dW5mb2xkX21vcmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cclxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGaWxsPlxyXG4gICAgPG1hdC10cmVlIFtkYXRhU291cmNlXT1cInRyZWVEYXRhXCIgW3RyZWVDb250cm9sXT1cInRyZWVDb250cm9sXCI+XHJcbiAgICAgIDxtYXQtdHJlZS1ub2RlIFtpZF09XCJub2RlLmlkXCIgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGVcIiBtYXRUcmVlTm9kZVRvZ2dsZSBtYXRUcmVlTm9kZVBhZGRpbmdcclxuICAgICAgICBbbWF0VHJlZU5vZGVQYWRkaW5nSW5kZW50XT1cIjIwXCIgY2xhc3M9XCJ0cmVlLW5vZGUgdHJlZS1ub2RlLXNpbXBsZVwiIChjbGljayk9XCJzZWxlY3QoJGV2ZW50LCBub2RlKTtcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsndHJlZS1ub2RlLWFjdGl2YXRlZCc6IGN1cnJlbnROb2RlICYmIGN1cnJlbnROb2RlLmlkID09PSBub2RlLmlkfVwiID5cclxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCI1cHhcIiBmeEZpbGwgY2xhc3M9XCJzbWFsbFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGRpc2FibGVkIGNsYXNzPVwic21hbGwtaWNvbi1idXR0b25cIj48L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJ1cHBlcmNhc2UgXCI+XHJcbiAgICAgICAgICAgIHt7bm9kZS5uYW1lfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBmeEZsZXg9XCIzMHB4XCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgICAgQGlmIChub2RlLmNvdW50ID4gMCkge1xyXG4gICAgICAgICAgICA8c3BhbiBmeExheW91dEFsaWduPVwiZW5kXCI+KHt7bm9kZS5jb3VudH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LXRyZWUtbm9kZT5cclxuXHJcbiAgICAgIDxtYXQtdHJlZS1ub2RlIFtpZF09XCJub2RlLmlkXCIgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7d2hlbjogaGFzQ2hpbGRcIiBtYXRUcmVlTm9kZVBhZGRpbmdcclxuICAgICAgICBbbWF0VHJlZU5vZGVQYWRkaW5nSW5kZW50XT1cIjIwXCIgY2xhc3M9XCJ0cmVlLW5vZGUgdHJlZS1ub2RlLXNpbXBsZVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyd0cmVlLW5vZGUtYWN0aXZhdGVkJzogY3VycmVudE5vZGUgJiYgY3VycmVudE5vZGUuaWQgPT09IG5vZGUuaWQgfVwiIChjbGljayk9XCJzZWxlY3QoJGV2ZW50LCBub2RlKTtcIj5cclxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCI1cHhcIiBmeEZpbGwgY2xhc3M9XCJzbWFsbFwiPlxyXG4gICAgICAgICAgPGRpdiBmeEZsZXg9XCIzMHB4XCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRyZWVOb2RlVG9nZ2xlIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FwcmkvY2hpdWRpICcgKyBub2RlLm5hbWVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic21hbGwtaWNvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+XHJcbiAgICAgICAgICAgICAgICB7e3RyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAnZXhwYW5kX21vcmUnIDogJ2NoZXZyb25fcmlnaHQnfX1cclxuICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInVwcGVyY2FzZSB0cnVuY2F0ZWRcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICB7e25vZGUubmFtZX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjMwcHhcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgICBAaWYgKG5vZGUuY291bnQgPiAwKSB7XHJcbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZFwiPih7e25vZGUuY291bnR9fSk8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LXRyZWUtbm9kZT5cclxuICAgIDwvbWF0LXRyZWU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiIGZ4RmlsbD5cclxuICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvaygpXCIgXHJcbiAgICAgIFtkaXNhYmxlZF09XCIhY3VycmVudE5vZGVcIj57e2RpYWxvZ0RhdGEub2tDYXB0aW9ufX08L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBtYXQtZGlhbG9nLWNsb3NlIGNka0ZvY3VzSW5pdGlhbCBcclxuICAgICAgY29sb3I9XCJwcmltYXJ5XCI+QW5udWxsYTwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|