ontimize-web-ngx 15.0.0-beta.3 → 15.0.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/contextmenu/context-menu/o-wrapper-content-menu/o-wrapper-content-menu.component.mjs +3 -3
- package/esm2020/lib/components/form/o-form.component.mjs +11 -2
- package/esm2020/lib/components/grid/o-grid.component.mjs +11 -1
- package/esm2020/lib/components/input/combo/combo-search/o-combo-search.component.mjs +3 -3
- package/esm2020/lib/components/input/currency-input/o-currency-input.component.mjs +6 -14
- package/esm2020/lib/components/input/file-input/o-file-input.component.mjs +2 -18
- package/esm2020/lib/components/input/o-form-service-component.class.mjs +7 -9
- package/esm2020/lib/components/o-service-component.class.mjs +3 -6
- package/esm2020/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.mjs +26 -4
- package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +20 -4
- package/esm2020/lib/components/table/extensions/header/table-quickfilter/o-table-quickfilter.component.mjs +3 -3
- package/esm2020/lib/components/table/o-table.component.mjs +4 -1
- package/esm2020/lib/directives/o-mat-error.directive.mjs +4 -1
- package/esm2020/lib/i18n/i18n.mjs +13 -7
- package/esm2020/lib/layouts/form-layout/o-form-layout-manager-base.class.mjs +1 -1
- package/esm2020/lib/services/local-storage.service.mjs +5 -2
- package/esm2020/lib/util/currencyUtil.mjs +53 -0
- package/esm2020/lib/util/index.mjs +2 -1
- package/fesm2015/ontimize-web-ngx.mjs +160 -64
- package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
- package/fesm2020/ontimize-web-ngx.mjs +159 -64
- package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/form/o-form.component.d.ts +4 -1
- package/lib/components/grid/o-grid.component.d.ts +1 -0
- package/lib/components/input/currency-input/o-currency-input.component.d.ts +7 -0
- package/lib/components/input/file-input/o-file-input.component.d.ts +1 -1
- package/lib/components/table/extensions/header/table-menu/o-table-menu.component.d.ts +5 -0
- package/lib/components/table/o-table.component.d.ts +1 -1
- package/lib/i18n/i18n.d.ts +6 -0
- package/lib/layouts/form-layout/o-form-layout-manager-base.class.d.ts +1 -0
- package/lib/util/currencyUtil.d.ts +41 -0
- package/lib/util/index.d.ts +1 -0
- package/package.json +1 -1
- package/theme.scss +2 -7
- package/theming/ontimize-style-v8.scss +2 -1
- package/theming/styles/density.scss +15 -0
- package/theming/styles/ontimize-v8/o-form-field-style.scss +6 -3
|
@@ -36,10 +36,10 @@ export class OWrapperContentMenuComponent {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
OWrapperContentMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OWrapperContentMenuComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
39
|
-
OWrapperContentMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OWrapperContentMenuComponent, selector: "o-wrapper-content-menu", inputs: { items: "items", class: "class" }, viewQueries: [{ propertyName: "childMenu", first: true, predicate: ["childMenu"], descendants: true, static: true }, { propertyName: "menu", first: true, predicate: OWrapperContentMenuComponent, descendants: true, static: true }], ngImport: i0, template: "<mat-menu #childMenu=\"matMenu\" [class]=\"class\" [overlapTrigger]=\"false\" [hasBackdrop]=\"false\">\n <ng-container *ngFor=\"let child of items\">\n <!-- Handle branch node menu items -->\n <span *ngIf=\"isGroup(child) && child.isVisible\">\n <button mat-menu-item color=\"primary\" [matMenuTriggerFor]=\"menu.childMenu\" [disabled]=\"child.disabled\">\n <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n <span>{{ child.label | oTranslate}}</span>\n </button>\n <o-wrapper-content-menu #menu [items]=\"getChildren(child)\" [class]=\"class\"></o-wrapper-content-menu>\n </span>\n <!-- Handle leaf node menu items -->\n <button mat-menu-item (click)=\"onClick(child, $event)\" [disabled]=\"child.disabled\" *ngIf=\"isItem(child) && child.isVisible\">\n <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n <span>{{ child.label | oTranslate}} </span>\n </button>\n <!-- separator leaf node menu items -->\n <mat-divider *ngIf=\"isSeparator(child) && child.isVisible\"></mat-divider>\n </ng-container>\n</mat-menu>\n", styles: ["mat-divider.mat-divider:first-child,mat-divider.mat-divider:last-child{display:none}.mat-icon{display:inline-flex}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: OWrapperContentMenuComponent, selector: "o-wrapper-content-menu", inputs: ["items", "class"] }, { kind: "pipe", type: i5.OTranslatePipe, name: "oTranslate" }] });
|
|
39
|
+
OWrapperContentMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OWrapperContentMenuComponent, selector: "o-wrapper-content-menu", inputs: { items: "items", class: "class" }, viewQueries: [{ propertyName: "childMenu", first: true, predicate: ["childMenu"], descendants: true, static: true }, { propertyName: "menu", first: true, predicate: OWrapperContentMenuComponent, descendants: true, static: true }], ngImport: i0, template: "<mat-menu class=\"o-mat-menu\" #childMenu=\"matMenu\" [class]=\"class\" [overlapTrigger]=\"false\" [hasBackdrop]=\"false\">\n <ng-container *ngFor=\"let child of items\">\n <!-- Handle branch node menu items -->\n <span *ngIf=\"isGroup(child) && child.isVisible\">\n <button mat-menu-item color=\"primary\" [matMenuTriggerFor]=\"menu.childMenu\" [disabled]=\"child.disabled\">\n <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n <span>{{ child.label | oTranslate}}</span>\n </button>\n <o-wrapper-content-menu #menu [items]=\"getChildren(child)\" [class]=\"class\"></o-wrapper-content-menu>\n </span>\n <!-- Handle leaf node menu items -->\n <button mat-menu-item (click)=\"onClick(child, $event)\" [disabled]=\"child.disabled\" *ngIf=\"isItem(child) && child.isVisible\">\n <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n <span>{{ child.label | oTranslate}} </span>\n </button>\n <!-- separator leaf node menu items -->\n <mat-divider *ngIf=\"isSeparator(child) && child.isVisible\"></mat-divider>\n </ng-container>\n</mat-menu>\n", styles: ["mat-divider.mat-divider:first-child,mat-divider.mat-divider:last-child{display:none}.mat-icon{display:inline-flex}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: OWrapperContentMenuComponent, selector: "o-wrapper-content-menu", inputs: ["items", "class"] }, { kind: "pipe", type: i5.OTranslatePipe, name: "oTranslate" }] });
|
|
40
40
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OWrapperContentMenuComponent, decorators: [{
|
|
41
41
|
type: Component,
|
|
42
|
-
args: [{ selector: 'o-wrapper-content-menu', inputs: DEFAULT_CONTEXT_MENU_CONTENT_ITEM_INPUTS, template: "<mat-menu #childMenu=\"matMenu\" [class]=\"class\" [overlapTrigger]=\"false\" [hasBackdrop]=\"false\">\n <ng-container *ngFor=\"let child of items\">\n <!-- Handle branch node menu items -->\n <span *ngIf=\"isGroup(child) && child.isVisible\">\n <button mat-menu-item color=\"primary\" [matMenuTriggerFor]=\"menu.childMenu\" [disabled]=\"child.disabled\">\n <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n <span>{{ child.label | oTranslate}}</span>\n </button>\n <o-wrapper-content-menu #menu [items]=\"getChildren(child)\" [class]=\"class\"></o-wrapper-content-menu>\n </span>\n <!-- Handle leaf node menu items -->\n <button mat-menu-item (click)=\"onClick(child, $event)\" [disabled]=\"child.disabled\" *ngIf=\"isItem(child) && child.isVisible\">\n <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n <span>{{ child.label | oTranslate}} </span>\n </button>\n <!-- separator leaf node menu items -->\n <mat-divider *ngIf=\"isSeparator(child) && child.isVisible\"></mat-divider>\n </ng-container>\n</mat-menu>\n", styles: ["mat-divider.mat-divider:first-child,mat-divider.mat-divider:last-child{display:none}.mat-icon{display:inline-flex}\n"] }]
|
|
42
|
+
args: [{ selector: 'o-wrapper-content-menu', inputs: DEFAULT_CONTEXT_MENU_CONTENT_ITEM_INPUTS, template: "<mat-menu class=\"o-mat-menu\" #childMenu=\"matMenu\" [class]=\"class\" [overlapTrigger]=\"false\" [hasBackdrop]=\"false\">\n <ng-container *ngFor=\"let child of items\">\n <!-- Handle branch node menu items -->\n <span *ngIf=\"isGroup(child) && child.isVisible\">\n <button mat-menu-item color=\"primary\" [matMenuTriggerFor]=\"menu.childMenu\" [disabled]=\"child.disabled\">\n <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n <span>{{ child.label | oTranslate}}</span>\n </button>\n <o-wrapper-content-menu #menu [items]=\"getChildren(child)\" [class]=\"class\"></o-wrapper-content-menu>\n </span>\n <!-- Handle leaf node menu items -->\n <button mat-menu-item (click)=\"onClick(child, $event)\" [disabled]=\"child.disabled\" *ngIf=\"isItem(child) && child.isVisible\">\n <mat-icon *ngIf=\"child.svgIcon != null\" [svgIcon]=\"child.svgIcon\"></mat-icon>\n <mat-icon *ngIf=\"child.svgIcon == null && child.icon != null\">{{ child.icon }}</mat-icon>\n <span>{{ child.label | oTranslate}} </span>\n </button>\n <!-- separator leaf node menu items -->\n <mat-divider *ngIf=\"isSeparator(child) && child.isVisible\"></mat-divider>\n </ng-container>\n</mat-menu>\n", styles: ["mat-divider.mat-divider:first-child,mat-divider.mat-divider:last-child{display:none}.mat-icon{display:inline-flex}\n"] }]
|
|
43
43
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { items: [{
|
|
44
44
|
type: Input
|
|
45
45
|
}], childMenu: [{
|
|
@@ -49,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
49
49
|
type: ViewChild,
|
|
50
50
|
args: [OWrapperContentMenuComponent, { static: true }]
|
|
51
51
|
}] } });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby13cmFwcGVyLWNvbnRlbnQtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9jb250ZXh0bWVudS9jb250ZXh0LW1lbnUvby13cmFwcGVyLWNvbnRlbnQtbWVudS9vLXdyYXBwZXItY29udGVudC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2NvbnRleHRtZW51L2NvbnRleHQtbWVudS9vLXdyYXBwZXItY29udGVudC1tZW51L28td3JhcHBlci1jb250ZW50LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDckcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDbEcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUVBQWlFLENBQUM7Ozs7Ozs7QUFHakgsTUFBTSxDQUFDLE1BQU0sd0NBQXdDLEdBQUc7SUFDdEQsT0FBTztJQUNQLE9BQU87Q0FDUixDQUFDO0FBUUYsTUFBTSxPQUFPLDRCQUE0QjtJQWF2QyxZQUNZLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDMUIsQ0FBQztJQUVFLE9BQU8sQ0FBQyxJQUE0QixFQUFFLEtBQU07UUFDakQsSUFBSSxJQUFJLFlBQVkseUJBQXlCLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVNLE9BQU8sQ0FBQyxJQUE0QjtRQUN6QyxPQUFPLElBQUksWUFBWSwwQkFBMEIsQ0FBQztJQUNwRCxDQUFDO0lBRU0sV0FBVyxDQUFDLElBQTRCO1FBQzdDLE9BQU8sSUFBSSxZQUFZLDhCQUE4QixDQUFDO0lBQ3hELENBQUM7SUFFTSxNQUFNLENBQUMsSUFBNEI7UUFDeEMsT0FBTyxJQUFJLFlBQVkseUJBQXlCLENBQUM7SUFDbkQsQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUE0QjtRQUM3QyxPQUFPLElBQUksWUFBWSwwQkFBMEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3pFLENBQUM7O3lIQXJDVSw0QkFBNEI7NkdBQTVCLDRCQUE0Qix1UEFVNUIsNEJBQTRCLDhEQzdCekMsdzFDQXFCQSx5L0JERmEsNEJBQTRCOzJGQUE1Qiw0QkFBNEI7a0JBTnhDLFNBQVM7K0JBQ0Usd0JBQXdCLFVBRzFCLHdDQUF3QzsrRkFPekMsS0FBSztzQkFEWCxLQUFLO2dCQUlDLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlqQyxJQUFJO3NCQURWLFNBQVM7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TWVudSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuXG5pbXBvcnQgeyBPQ29udGV4dE1lbnVHcm91cENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRleHQtbWVudS1ncm91cC9vLWNvbnRleHQtbWVudS1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0NvbnRleHRNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRleHQtbWVudS1pdGVtL28tY29udGV4dC1tZW51LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE9Db250ZXh0TWVudVNlcGFyYXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRleHQtbWVudS1zZXBhcmF0b3Ivby1jb250ZXh0LW1lbnUtc2VwYXJhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPQ29tcG9uZW50TWVudUJhc2VJdGVtIH0gZnJvbSAnLi4vLi4vby1jb250ZW50LW1lbnUtYmFzZS1pdGVtLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09OVEVYVF9NRU5VX0NPTlRFTlRfSVRFTV9JTlBVVFMgPSBbXG4gICdpdGVtcycsXG4gICdjbGFzcydcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28td3JhcHBlci1jb250ZW50LW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJ28td3JhcHBlci1jb250ZW50LW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXdyYXBwZXItY29udGVudC1tZW51LmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9DT05URVhUX01FTlVfQ09OVEVOVF9JVEVNX0lOUFVUU1xufSlcbmV4cG9ydCBjbGFzcyBPV3JhcHBlckNvbnRlbnRNZW51Q29tcG9uZW50IHtcblxuICBwdWJsaWMgY2xhc3M6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXRlbXM6IE9Db21wb25lbnRNZW51QmFzZUl0ZW1bXTtcblxuICBAVmlld0NoaWxkKCdjaGlsZE1lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgY2hpbGRNZW51OiBNYXRNZW51O1xuXG4gIEBWaWV3Q2hpbGQoT1dyYXBwZXJDb250ZW50TWVudUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIG1lbnU6IE9XcmFwcGVyQ29udGVudE1lbnVDb21wb25lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvclxuICApIHsgfVxuXG4gIHB1YmxpYyBvbkNsaWNrKGl0ZW06IE9Db21wb25lbnRNZW51QmFzZUl0ZW0sIGV2ZW50Pyk6IHZvaWQge1xuICAgIGlmIChpdGVtIGluc3RhbmNlb2YgT0NvbnRleHRNZW51SXRlbUNvbXBvbmVudCkge1xuICAgICAgaXRlbS50cmlnZ2VyRXhlY3V0ZShpdGVtLmRhdGEsIGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNHcm91cChpdGVtOiBPQ29tcG9uZW50TWVudUJhc2VJdGVtKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBPQ29udGV4dE1lbnVHcm91cENvbXBvbmVudDtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlcGFyYXRvcihpdGVtOiBPQ29tcG9uZW50TWVudUJhc2VJdGVtKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBPQ29udGV4dE1lbnVTZXBhcmF0b3JDb21wb25lbnQ7XG4gIH1cblxuICBwdWJsaWMgaXNJdGVtKGl0ZW06IE9Db21wb25lbnRNZW51QmFzZUl0ZW0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXRlbSBpbnN0YW5jZW9mIE9Db250ZXh0TWVudUl0ZW1Db21wb25lbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2hpbGRyZW4oaXRlbTogT0NvbXBvbmVudE1lbnVCYXNlSXRlbSkge1xuICAgIHJldHVybiBpdGVtIGluc3RhbmNlb2YgT0NvbnRleHRNZW51R3JvdXBDb21wb25lbnQgPyBpdGVtLmNoaWxkcmVuIDogW107XG4gIH1cblxufVxuIiwiPG1hdC1tZW51IGNsYXNzPVwiby1tYXQtbWVudVwiICNjaGlsZE1lbnU9XCJtYXRNZW51XCIgW2NsYXNzXT1cImNsYXNzXCIgW292ZXJsYXBUcmlnZ2VyXT1cImZhbHNlXCIgW2hhc0JhY2tkcm9wXT1cImZhbHNlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW1zXCI+XG4gICAgPCEtLSBIYW5kbGUgYnJhbmNoIG5vZGUgbWVudSBpdGVtcyAtLT5cbiAgICA8c3BhbiAqbmdJZj1cImlzR3JvdXAoY2hpbGQpICYmIGNoaWxkLmlzVmlzaWJsZVwiPlxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNvbG9yPVwicHJpbWFyeVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51LmNoaWxkTWVudVwiIFtkaXNhYmxlZF09XCJjaGlsZC5kaXNhYmxlZFwiPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJjaGlsZC5zdmdJY29uICE9IG51bGxcIiBbc3ZnSWNvbl09XCJjaGlsZC5zdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY2hpbGQuc3ZnSWNvbiA9PSBudWxsICYmIGNoaWxkLmljb24gIT0gbnVsbFwiPnt7IGNoaWxkLmljb24gfX08L21hdC1pY29uPlxuICAgICAgICA8c3Bhbj57eyBjaGlsZC5sYWJlbCB8IG9UcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG8td3JhcHBlci1jb250ZW50LW1lbnUgI21lbnUgW2l0ZW1zXT1cImdldENoaWxkcmVuKGNoaWxkKVwiIFtjbGFzc109XCJjbGFzc1wiPjwvby13cmFwcGVyLWNvbnRlbnQtbWVudT5cbiAgICA8L3NwYW4+XG4gICAgPCEtLSBIYW5kbGUgbGVhZiBub2RlIG1lbnUgaXRlbXMgLS0+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbkNsaWNrKGNoaWxkLCAkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImNoaWxkLmRpc2FibGVkXCIgKm5nSWY9XCJpc0l0ZW0oY2hpbGQpICYmIGNoaWxkLmlzVmlzaWJsZVwiPlxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY2hpbGQuc3ZnSWNvbiAhPSBudWxsXCIgW3N2Z0ljb25dPVwiY2hpbGQuc3ZnSWNvblwiPjwvbWF0LWljb24+XG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJjaGlsZC5zdmdJY29uID09IG51bGwgJiYgY2hpbGQuaWNvbiAhPSBudWxsXCI+e3sgY2hpbGQuaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICA8c3Bhbj57eyBjaGlsZC5sYWJlbCB8IG9UcmFuc2xhdGV9fSA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPCEtLSBzZXBhcmF0b3IgbGVhZiBub2RlIG1lbnUgaXRlbXMgLS0+XG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwiaXNTZXBhcmF0b3IoY2hpbGQpICYmIGNoaWxkLmlzVmlzaWJsZVwiPjwvbWF0LWRpdmlkZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9tYXQtbWVudT5cbiJdfQ==
|