@sumaris-net/ngx-components 1.10.8 → 1.11.0-rc1
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/bundles/sumaris-net.ngx-components.umd.js +5491 -4220
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/doc/changelog.md +10 -0
- package/esm2015/public_api.js +34 -10
- package/esm2015/src/app/core/core.module.js +13 -5
- package/esm2015/src/app/core/core.testing.module.js +51 -0
- package/esm2015/src/app/core/form/entity-editor.class.js +1 -1
- package/esm2015/src/app/core/form/form.utils.js +58 -393
- package/esm2015/src/app/core/home/home.js +1 -1
- package/esm2015/src/app/core/services/validator/base.validator.class.js +1 -1
- package/esm2015/src/app/core/table/table.class.js +4 -3
- package/esm2015/src/app/core/table/testing/table.testing.js +246 -0
- package/esm2015/src/app/core/table/testing/table.testing.module.js +26 -0
- package/esm2015/src/app/core/text-popover/testing/text-popover.testing.js +37 -0
- package/esm2015/src/app/core/text-popover/testing/text-popover.testing.module.js +33 -0
- package/esm2015/src/app/core/text-popover/text-form.component.js +72 -0
- package/esm2015/src/app/core/text-popover/text-popover.component.js +90 -0
- package/esm2015/src/app/shared/directives/directives.module.js +6 -3
- package/esm2015/src/app/shared/directives/drag-and-drop.directive.js +43 -0
- package/esm2015/src/app/shared/forms.js +339 -0
- package/esm2015/src/app/shared/material/chips/chips.module.js +3 -3
- package/esm2015/src/app/shared/material/material.module.js +3 -3
- package/esm2015/src/app/shared/material/material.testing.module.js +102 -0
- package/esm2015/src/app/shared/material/numpad/testing/numpad.test.js +44 -0
- package/esm2015/src/app/shared/shared.module.js +13 -3
- package/esm2015/src/app/shared/shared.testing.module.js +13 -5
- package/esm2015/src/app/shared/testing/tests.page.js +34 -0
- package/esm2015/src/app/shared/toast/toast.testing.js +1 -1
- package/esm2015/src/app/shared/upload-file/testing/upload-file.testing.js +69 -0
- package/esm2015/src/app/shared/upload-file/testing/upload-file.testing.module.js +33 -0
- package/esm2015/src/app/shared/upload-file/upload-file-popover.component.js +100 -0
- package/esm2015/src/app/shared/upload-file/upload-file.component.js +189 -0
- package/esm2015/src/app/shared/upload-file/upload-file.model.js +3 -0
- package/esm2015/src/app/shared/validator/form-error-adapter.class.js +1 -1
- package/esm2015/src/environments/environment.class.js +1 -1
- package/esm2015/sumaris-net.ngx-components.js +11 -10
- package/fesm2015/sumaris-net.ngx-components.js +3757 -2698
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +3 -3
- package/public_api.d.ts +24 -8
- package/src/app/core/core.testing.module.d.ts +4 -0
- package/src/app/core/form/entity-editor.class.d.ts +1 -1
- package/src/app/core/form/form.utils.d.ts +39 -114
- package/src/app/core/services/validator/base.validator.class.d.ts +1 -1
- package/src/app/core/table/testing/table.testing.d.ts +51 -0
- package/src/app/core/table/testing/table.testing.module.d.ts +2 -0
- package/src/app/core/text-popover/testing/text-popover.testing.d.ts +7 -0
- package/src/app/core/text-popover/testing/text-popover.testing.module.d.ts +2 -0
- package/src/app/core/text-popover/text-form.component.d.ts +28 -0
- package/src/app/core/text-popover/text-popover.component.d.ts +37 -0
- package/src/app/shared/directives/drag-and-drop.directive.d.ts +14 -0
- package/src/app/shared/forms.d.ts +78 -0
- package/src/app/shared/material/chips/chips.module.d.ts +1 -1
- package/src/app/shared/material/material.testing.module.d.ts +4 -0
- package/src/app/shared/material/numpad/testing/numpad.test.d.ts +10 -0
- package/src/app/shared/shared.testing.module.d.ts +1 -1
- package/src/app/shared/{material/testing/material.testing.page.d.ts → testing/tests.page.d.ts} +3 -2
- package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +15 -0
- package/src/app/shared/upload-file/testing/upload-file.testing.module.d.ts +2 -0
- package/src/app/shared/upload-file/upload-file-popover.component.d.ts +36 -0
- package/src/app/shared/upload-file/upload-file.component.d.ts +45 -0
- package/src/app/shared/upload-file/upload-file.model.d.ts +10 -0
- package/src/app/shared/validator/form-error-adapter.class.d.ts +1 -1
- package/src/assets/i18n/en-US.json +11 -1
- package/src/assets/i18n/en.json +11 -1
- package/src/assets/i18n/fr.json +11 -1
- package/src/theme/_ngx-components.scss +8 -0
- package/sumaris-net.ngx-components.d.ts +10 -9
- package/sumaris-net.ngx-components.metadata.json +1 -1
- package/esm2015/src/app/shared/material/testing/material.testing.module.js +0 -92
- package/esm2015/src/app/shared/material/testing/material.testing.page.js +0 -34
- package/src/app/shared/material/testing/material.testing.module.d.ts +0 -2
|
@@ -3,6 +3,7 @@ import { CommonModule } from '@angular/common';
|
|
|
3
3
|
import { IonicModule } from '@ionic/angular';
|
|
4
4
|
import { AutofocusDirective } from './autofocus.directive';
|
|
5
5
|
import { NgVarDirective } from './ng-var.directive';
|
|
6
|
+
import { DragAndDropDirective } from './drag-and-drop.directive';
|
|
6
7
|
export class SharedDirectivesModule {
|
|
7
8
|
}
|
|
8
9
|
SharedDirectivesModule.decorators = [
|
|
@@ -13,12 +14,14 @@ SharedDirectivesModule.decorators = [
|
|
|
13
14
|
],
|
|
14
15
|
declarations: [
|
|
15
16
|
AutofocusDirective,
|
|
16
|
-
NgVarDirective
|
|
17
|
+
NgVarDirective,
|
|
18
|
+
DragAndDropDirective
|
|
17
19
|
],
|
|
18
20
|
exports: [
|
|
19
21
|
AutofocusDirective,
|
|
20
|
-
NgVarDirective
|
|
22
|
+
NgVarDirective,
|
|
23
|
+
DragAndDropDirective
|
|
21
24
|
]
|
|
22
25
|
},] }
|
|
23
26
|
];
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9kaXJlY3RpdmVzL2RpcmVjdGl2ZXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFtQi9ELE1BQU0sT0FBTyxzQkFBc0I7OztZQWhCbEMsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLFdBQVc7aUJBQ1o7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLGtCQUFrQjtvQkFDbEIsY0FBYztvQkFDZCxvQkFBb0I7aUJBQ3JCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxrQkFBa0I7b0JBQ2xCLGNBQWM7b0JBQ2Qsb0JBQW9CO2lCQUNyQjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7SW9uaWNNb2R1bGV9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7QXV0b2ZvY3VzRGlyZWN0aXZlfSBmcm9tICcuL2F1dG9mb2N1cy5kaXJlY3RpdmUnO1xuaW1wb3J0IHtOZ1ZhckRpcmVjdGl2ZX0gZnJvbSAnLi9uZy12YXIuZGlyZWN0aXZlJztcbmltcG9ydCB7RHJhZ0FuZERyb3BEaXJlY3RpdmV9IGZyb20gJy4vZHJhZy1hbmQtZHJvcC5kaXJlY3RpdmUnO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uaWNNb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQXV0b2ZvY3VzRGlyZWN0aXZlLFxuICAgIE5nVmFyRGlyZWN0aXZlLFxuICAgIERyYWdBbmREcm9wRGlyZWN0aXZlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBBdXRvZm9jdXNEaXJlY3RpdmUsXG4gICAgTmdWYXJEaXJlY3RpdmUsXG4gICAgRHJhZ0FuZERyb3BEaXJlY3RpdmVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTaGFyZWREaXJlY3RpdmVzTW9kdWxlIHtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';
|
|
2
|
+
import { isNotEmptyArray } from '../functions';
|
|
3
|
+
export class DragAndDropDirective {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.fileDropped = new EventEmitter();
|
|
6
|
+
}
|
|
7
|
+
// Dragover listener
|
|
8
|
+
onDragOver(event) {
|
|
9
|
+
event.preventDefault();
|
|
10
|
+
event.stopPropagation();
|
|
11
|
+
this.fileOver = true;
|
|
12
|
+
}
|
|
13
|
+
// Dragleave listener
|
|
14
|
+
onDragLeave(event) {
|
|
15
|
+
event.preventDefault();
|
|
16
|
+
event.stopPropagation();
|
|
17
|
+
this.fileOver = false;
|
|
18
|
+
}
|
|
19
|
+
// Drop listener
|
|
20
|
+
ondrop(event) {
|
|
21
|
+
var _a;
|
|
22
|
+
event.preventDefault();
|
|
23
|
+
event.stopPropagation();
|
|
24
|
+
this.fileOver = false;
|
|
25
|
+
const files = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.files;
|
|
26
|
+
if (isNotEmptyArray(files)) {
|
|
27
|
+
this.fileDropped.emit(files);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
DragAndDropDirective.decorators = [
|
|
32
|
+
{ type: Directive, args: [{
|
|
33
|
+
selector: '[appDragAndDrop]',
|
|
34
|
+
},] }
|
|
35
|
+
];
|
|
36
|
+
DragAndDropDirective.propDecorators = {
|
|
37
|
+
fileOver: [{ type: HostBinding, args: ['class.fileover',] }],
|
|
38
|
+
fileDropped: [{ type: Output }],
|
|
39
|
+
onDragOver: [{ type: HostListener, args: ['dragover', ['$event'],] }],
|
|
40
|
+
onDragLeave: [{ type: HostListener, args: ['dragleave', ['$event'],] }],
|
|
41
|
+
ondrop: [{ type: HostListener, args: ['drop', ['$event'],] }]
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1hbmQtZHJvcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9kaXJlY3RpdmVzL2RyYWctYW5kLWRyb3AuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFXN0MsTUFBTSxPQUFPLG9CQUFvQjtJQUhqQztRQU9ZLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQThCckQsQ0FBQztJQTVCQyxvQkFBb0I7SUFFcEIsVUFBVSxDQUFDLEtBQVk7UUFDckIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRUQscUJBQXFCO0lBRWQsV0FBVyxDQUFDLEtBQVk7UUFDN0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsZ0JBQWdCO0lBRVQsTUFBTSxDQUFDLEtBQWdCOztRQUM1QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLE1BQU0sS0FBSyxTQUFHLEtBQUssQ0FBQyxZQUFZLDBDQUFFLEtBQUssQ0FBQztRQUV4QyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7OztZQXBDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjthQUM3Qjs7O3VCQUdFLFdBQVcsU0FBQyxnQkFBZ0I7MEJBRTVCLE1BQU07eUJBR04sWUFBWSxTQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQzswQkFRbkMsWUFBWSxTQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztxQkFRcEMsWUFBWSxTQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7aXNOb3RFbXB0eUFycmF5fSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuXG5pbnRlcmZhY2UgRHJvcEV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICBkYXRhVHJhbnNmZXI/OiB7XG4gICAgZmlsZXM/OiBGaWxlW11cbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXBwRHJhZ0FuZERyb3BdJyxcbn0pXG5leHBvcnQgY2xhc3MgRHJhZ0FuZERyb3BEaXJlY3RpdmUge1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZmlsZW92ZXInKSBmaWxlT3ZlcjogYm9vbGVhbjtcblxuICBAT3V0cHV0KCkgZmlsZURyb3BwZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVbXT4oKTtcblxuICAvLyBEcmFnb3ZlciBsaXN0ZW5lclxuICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pXG4gIG9uRHJhZ092ZXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmZpbGVPdmVyID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIERyYWdsZWF2ZSBsaXN0ZW5lclxuICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25EcmFnTGVhdmUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmZpbGVPdmVyID0gZmFsc2U7XG4gIH1cblxuICAvLyBEcm9wIGxpc3RlbmVyXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25kcm9wKGV2ZW50OiBEcm9wRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZmlsZU92ZXIgPSBmYWxzZTtcbiAgICBjb25zdCBmaWxlcyA9IGV2ZW50LmRhdGFUcmFuc2Zlcj8uZmlsZXM7XG5cbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGZpbGVzKSkge1xuICAgICAgdGhpcy5maWxlRHJvcHBlZC5lbWl0KGZpbGVzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
import { FormArray, FormControl, FormGroup } from '@angular/forms';
|
|
2
|
+
import { isMoment } from 'moment';
|
|
3
|
+
import { isNil, isNotEmptyArray, nullIfUndefined } from './functions';
|
|
4
|
+
import { toDateISOString } from './dates';
|
|
5
|
+
import { waitFor } from './observables';
|
|
6
|
+
/**
|
|
7
|
+
* Fill a form using a source entity
|
|
8
|
+
*
|
|
9
|
+
* @param target
|
|
10
|
+
* @param entity
|
|
11
|
+
* @param opts
|
|
12
|
+
*/
|
|
13
|
+
export function copyEntity2Form(entity, target, opts) {
|
|
14
|
+
const json = getFormValueFromEntity(entity, target);
|
|
15
|
+
target.patchValue(json, opts);
|
|
16
|
+
}
|
|
17
|
+
export function getFormValueFromEntity(entity, form) {
|
|
18
|
+
return adaptValueToControl(entity, form);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Transform an entity into a simple object, compatible with the given form
|
|
22
|
+
*
|
|
23
|
+
* @param source an entity (or subentity)
|
|
24
|
+
* @param control
|
|
25
|
+
* @param path
|
|
26
|
+
*/
|
|
27
|
+
export function adaptValueToControl(source, control, path) {
|
|
28
|
+
const pathPrefix = path ? path + '.' : '';
|
|
29
|
+
// Form group
|
|
30
|
+
if (control instanceof FormGroup) {
|
|
31
|
+
const result = {};
|
|
32
|
+
// eslint-disable-next-line guard-for-in
|
|
33
|
+
for (const key in control.controls) {
|
|
34
|
+
result[key] = adaptValueToControl(source && source[key], control.controls[key], pathPrefix + key);
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
// Array
|
|
39
|
+
if (control instanceof FormArray) {
|
|
40
|
+
// Split, if many values in a string
|
|
41
|
+
if (typeof source === 'string') {
|
|
42
|
+
source = source.split('|');
|
|
43
|
+
}
|
|
44
|
+
// Skip if value is not an array
|
|
45
|
+
if (!Array.isArray(source) || control.length === 0) {
|
|
46
|
+
if (isNotEmptyArray(source))
|
|
47
|
+
console.warn(`WARN: please resize the FormArray '${path}' to the same length of the input array`);
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
// Use the first form group, as model
|
|
51
|
+
const firstItemControl = control.at(0);
|
|
52
|
+
let result = source.map((item, index) => adaptValueToControl(item, firstItemControl, pathPrefix + '#' + index));
|
|
53
|
+
// Truncate if too many values
|
|
54
|
+
if (result.length > control.length) {
|
|
55
|
+
if (firstItemControl instanceof FormControl) {
|
|
56
|
+
for (let i = control.length; i < result.length; i++) {
|
|
57
|
+
control.push(new FormControl(null, firstItemControl.validator));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
console.warn(`WARN: please resize the FormArray '${path || ''}' to the same length of the input array`);
|
|
62
|
+
result = result.slice(0, control.length);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Add values if not enought
|
|
66
|
+
else if (result.length < control.length) {
|
|
67
|
+
//console.warn(`WARN: Adding null value to array values`);
|
|
68
|
+
for (let i = result.length; i < control.length; i++) {
|
|
69
|
+
result.push(null);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
// Form control
|
|
75
|
+
if (control instanceof FormControl) {
|
|
76
|
+
// Date
|
|
77
|
+
if (isMoment(source)) {
|
|
78
|
+
return toDateISOString(source);
|
|
79
|
+
}
|
|
80
|
+
// Any other control: replace undefined by null value
|
|
81
|
+
// because Undefined is not authorized as control value
|
|
82
|
+
else {
|
|
83
|
+
return nullIfUndefined(source);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
export function logFormErrors(control, logPrefix, path) {
|
|
88
|
+
if (!control || control.valid)
|
|
89
|
+
return;
|
|
90
|
+
logPrefix = logPrefix || '';
|
|
91
|
+
// Form group
|
|
92
|
+
if (control instanceof FormGroup) {
|
|
93
|
+
if (!path)
|
|
94
|
+
console.warn(`${logPrefix} Form errors:`);
|
|
95
|
+
if (control.errors) {
|
|
96
|
+
Object.keys(control.errors).forEach(error => console.warn(`${logPrefix} -> ${path || ''} (${error})`));
|
|
97
|
+
}
|
|
98
|
+
if (control.controls) {
|
|
99
|
+
Object.keys(control.controls).forEach(child => logFormErrors(control.controls[child], logPrefix, (path ? `${path}.${child}` : child)) // Recursive call
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Form array
|
|
104
|
+
else if (control instanceof FormArray) {
|
|
105
|
+
if (control.errors) {
|
|
106
|
+
Object.keys(control.errors).forEach(error => console.warn(`${logPrefix} -> ${path || ''} (${error})`));
|
|
107
|
+
}
|
|
108
|
+
control.controls.forEach((child, index) => {
|
|
109
|
+
logFormErrors(child, logPrefix, (path ? `${path}.${index}` : `${index}`)); // Recursive call
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
// Other control's errors
|
|
113
|
+
else if (control.errors) {
|
|
114
|
+
Object.keys(control.errors).forEach(error => console.warn(`${logPrefix} -> ${path || ''} (${error})`));
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export function getFormErrors(control, opts) {
|
|
118
|
+
if (!control || control.valid)
|
|
119
|
+
return undefined;
|
|
120
|
+
opts = opts || {};
|
|
121
|
+
opts.result = opts.result || {};
|
|
122
|
+
// Form group
|
|
123
|
+
if (control instanceof FormGroup) {
|
|
124
|
+
// Copy errors
|
|
125
|
+
if (control.errors) {
|
|
126
|
+
if (opts.controlName) {
|
|
127
|
+
opts.result[opts.controlName] = Object.assign({}, control.errors);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
opts.result = Object.assign(Object.assign({}, opts.result), control.errors);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (!opts || opts.recursive !== false) {
|
|
134
|
+
// Loop on children controls
|
|
135
|
+
for (const key in control.controls) {
|
|
136
|
+
const child = control.controls[key];
|
|
137
|
+
if (child && child.enabled) {
|
|
138
|
+
getFormErrors(child, Object.assign(Object.assign({}, opts), { controlName: opts.controlName ? [opts.controlName, key].join('.') : key, result: opts.result // Make sure to keep the same result object
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// Form array
|
|
145
|
+
else if (control instanceof FormArray) {
|
|
146
|
+
control.controls.forEach((child, index) => {
|
|
147
|
+
getFormErrors(child, Object.assign(Object.assign({}, opts), { controlName: (opts.controlName || '') + '.' + index, result: opts.result // Make sure to keep the same result object
|
|
148
|
+
}));
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
// Other type of control (e.g simple control)
|
|
152
|
+
else if (control.errors) {
|
|
153
|
+
if (opts.controlName) {
|
|
154
|
+
opts.result[opts.controlName] = Object.assign({}, control.errors);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
opts.result = Object.assign(Object.assign({}, opts.result), control.errors);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return opts.result;
|
|
161
|
+
}
|
|
162
|
+
export function getControlFromPath(form, path) {
|
|
163
|
+
const i = path.indexOf('.');
|
|
164
|
+
if (i === -1) {
|
|
165
|
+
return form.controls[path];
|
|
166
|
+
}
|
|
167
|
+
const key = path.substring(0, i);
|
|
168
|
+
if (form.controls[key] instanceof FormGroup) {
|
|
169
|
+
return getControlFromPath(form.controls[key], path.substring(i + 1));
|
|
170
|
+
}
|
|
171
|
+
throw new Error(`Invalid form path: '${key}' should be a form group.`);
|
|
172
|
+
}
|
|
173
|
+
export function disableControls(form, paths, opts) {
|
|
174
|
+
(paths || []).forEach(path => {
|
|
175
|
+
const control = getControlFromPath(form, path);
|
|
176
|
+
if (control)
|
|
177
|
+
control.disable(opts);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
export function addValueInArray(arrayControl, createControl, equals, isEmpty, value, options) {
|
|
181
|
+
options = options || { emitEvent: true };
|
|
182
|
+
let hasChanged = false;
|
|
183
|
+
let index = -1;
|
|
184
|
+
// Search if value already exists
|
|
185
|
+
if (!isEmpty(value)) {
|
|
186
|
+
index = (arrayControl.value || []).findIndex(v => equals(value, v));
|
|
187
|
+
}
|
|
188
|
+
// If value not exists, but last value is empty: use it
|
|
189
|
+
if (index === -1 && arrayControl.length && isEmpty(arrayControl.at(arrayControl.length - 1).value)) {
|
|
190
|
+
index = arrayControl.length - 1;
|
|
191
|
+
}
|
|
192
|
+
// Replace the existing value
|
|
193
|
+
if (index !== -1) {
|
|
194
|
+
if (!isEmpty(value)) {
|
|
195
|
+
arrayControl.at(index).patchValue(value, options);
|
|
196
|
+
hasChanged = true;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
const control = createControl(value);
|
|
201
|
+
arrayControl.push(control);
|
|
202
|
+
hasChanged = true;
|
|
203
|
+
}
|
|
204
|
+
if (hasChanged) {
|
|
205
|
+
if (isNil(options.emitEvent) || options.emitEvent) {
|
|
206
|
+
// Mark array control dirty
|
|
207
|
+
if (!isEmpty(value)) {
|
|
208
|
+
arrayControl.markAsDirty();
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return hasChanged;
|
|
213
|
+
}
|
|
214
|
+
export function resizeArray(arrayControl, createControl, length) {
|
|
215
|
+
const hasChanged = arrayControl.length !== length;
|
|
216
|
+
// Increase size
|
|
217
|
+
if (arrayControl.length < length) {
|
|
218
|
+
while (arrayControl.length < length) {
|
|
219
|
+
arrayControl.push(createControl());
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// Or reduce
|
|
223
|
+
else if (arrayControl.length > length) {
|
|
224
|
+
while (arrayControl.length > length) {
|
|
225
|
+
arrayControl.removeAt(arrayControl.length - 1);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return hasChanged;
|
|
229
|
+
}
|
|
230
|
+
export function removeValueInArray(arrayControl, isEmpty, index) {
|
|
231
|
+
arrayControl.removeAt(index);
|
|
232
|
+
arrayControl.markAsDirty();
|
|
233
|
+
return true;
|
|
234
|
+
}
|
|
235
|
+
export function clearValueInArray(arrayControl, isEmpty, index) {
|
|
236
|
+
const control = arrayControl.at(index);
|
|
237
|
+
if (isEmpty(control.value))
|
|
238
|
+
return false; // skip (not need to clear)
|
|
239
|
+
if (control instanceof FormGroup) {
|
|
240
|
+
copyEntity2Form({}, control);
|
|
241
|
+
}
|
|
242
|
+
else if (control instanceof FormArray) {
|
|
243
|
+
control.setValue([]);
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
control.setValue(null);
|
|
247
|
+
}
|
|
248
|
+
arrayControl.markAsDirty();
|
|
249
|
+
return true;
|
|
250
|
+
}
|
|
251
|
+
export function markAllAsTouched(control, opts) {
|
|
252
|
+
if (!control)
|
|
253
|
+
return;
|
|
254
|
+
if (control instanceof FormGroup) {
|
|
255
|
+
markFormGroupAsTouched(control, Object.assign(Object.assign({}, opts), { onlySelf: true })); // recursive call
|
|
256
|
+
}
|
|
257
|
+
else if (control instanceof FormArray) {
|
|
258
|
+
control.markAsTouched({ onlySelf: true });
|
|
259
|
+
(control.controls || []).forEach(c => markControlAsTouched(c, Object.assign(Object.assign({}, opts), { onlySelf: true }))); // recursive call
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
control.markAsTouched({ onlySelf: true });
|
|
263
|
+
control.updateValueAndValidity(Object.assign(Object.assign({}, opts), { onlySelf: true }));
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
export function markFormGroupAsTouched(form, opts) {
|
|
267
|
+
if (!form)
|
|
268
|
+
return;
|
|
269
|
+
form.markAsTouched(opts);
|
|
270
|
+
Object.keys(form.controls)
|
|
271
|
+
.map(key => form.controls[key])
|
|
272
|
+
.filter(control => control.enabled)
|
|
273
|
+
.forEach(control => markControlAsTouched(control, opts));
|
|
274
|
+
form.updateValueAndValidity(Object.assign(Object.assign({}, opts), { onlySelf: true }));
|
|
275
|
+
}
|
|
276
|
+
export function markControlAsTouched(control, opts) {
|
|
277
|
+
if (!control)
|
|
278
|
+
return;
|
|
279
|
+
if (control instanceof FormGroup) {
|
|
280
|
+
markAllAsTouched(control, Object.assign(Object.assign({}, opts), { onlySelf: true })); // recursive call
|
|
281
|
+
}
|
|
282
|
+
else if (control instanceof FormArray) {
|
|
283
|
+
(control.controls || []).forEach(c => markControlAsTouched(c, Object.assign(Object.assign({}, opts), { onlySelf: true }))); // recursive call
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
control.markAsTouched({ onlySelf: true });
|
|
287
|
+
control.updateValueAndValidity(Object.assign(Object.assign({}, opts), { onlySelf: true }));
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
export function updateValueAndValidity(form, opts) {
|
|
291
|
+
if (!form)
|
|
292
|
+
return;
|
|
293
|
+
form.updateValueAndValidity(opts);
|
|
294
|
+
Object.keys(form.controls)
|
|
295
|
+
.map(key => form.controls[key])
|
|
296
|
+
.filter(control => control.enabled)
|
|
297
|
+
.forEach(control => {
|
|
298
|
+
if (control instanceof FormGroup) {
|
|
299
|
+
updateValueAndValidity(control, Object.assign(Object.assign({}, opts), { onlySelf: true })); // recursive call
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
control.updateValueAndValidity(Object.assign(Object.assign({}, opts), { onlySelf: true }));
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
export function markAsUntouched(form, opts) {
|
|
307
|
+
if (!form)
|
|
308
|
+
return;
|
|
309
|
+
form.markAsUntouched(opts);
|
|
310
|
+
Object.getOwnPropertyNames(form.controls)
|
|
311
|
+
.forEach(key => {
|
|
312
|
+
const control = form.get(key);
|
|
313
|
+
if (control instanceof FormGroup) {
|
|
314
|
+
markAsUntouched(control, { onlySelf: true }); // recursive call
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
control.markAsUntouched({ onlySelf: true });
|
|
318
|
+
control.setErrors(null);
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Wait end of async validation (not pending). This need to implement {pending: boolean}
|
|
324
|
+
* return false
|
|
325
|
+
*/
|
|
326
|
+
export function waitWhilePending(form, opts) {
|
|
327
|
+
const predicate = () => form.pending !== true;
|
|
328
|
+
return waitFor(predicate, opts);
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Wait form is idle (not loading). This need to implement {loading: boolean}
|
|
332
|
+
* @param form
|
|
333
|
+
* @param opts
|
|
334
|
+
*/
|
|
335
|
+
export function waitIdle(form, opts) {
|
|
336
|
+
const predicate = () => form.loading !== true;
|
|
337
|
+
return waitFor(predicate, opts);
|
|
338
|
+
}
|
|
339
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9mb3Jtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQ3BHLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDeEMsT0FBTyxFQUFDLE9BQU8sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFPdEQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUFXLEVBQUUsTUFBaUIsRUFBRSxJQUFrRDtJQUNoSCxNQUFNLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxNQUFxQixFQUFFLElBQWU7SUFDM0UsT0FBTyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUEyQixDQUFDO0FBQ3JFLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsTUFBcUIsRUFBRSxPQUF3QixFQUFFLElBQWE7SUFDaEcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFMUMsYUFBYTtJQUNiLElBQUksT0FBTyxZQUFZLFNBQVMsRUFBRTtRQUNoQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsd0NBQXdDO1FB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LFNBQVMsRUFBRTtZQUNoQyxlQUFlLENBQUMsT0FBTyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUI7U0FDOUQ7YUFDSTtZQUNILE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztZQUMxQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFpQyxJQUFPLEVBQUUsSUFBcUI7SUFDN0YsTUFBTSxTQUFTLEdBQW9CLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDO0lBQy9ELE9BQU8sT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQWlDLElBQU8sRUFBRSxJQUFxQjtJQUNyRixNQUFNLFNBQVMsR0FBb0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUM7SUFDL0QsT0FBTyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge2lzTW9tZW50fSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtpc05pbCwgaXNOb3RFbXB0eUFycmF5LCBudWxsSWZVbmRlZmluZWR9IGZyb20gJy4vZnVuY3Rpb25zJztcbmltcG9ydCB7dG9EYXRlSVNPU3RyaW5nfSBmcm9tICcuL2RhdGVzJztcbmltcG9ydCB7d2FpdEZvciwgV2FpdEZvck9wdGlvbnN9IGZyb20gJy4vb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtQcmVkaWNhdGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1FcnJvcnMge1xuICBba2V5OiBzdHJpbmddOiBWYWxpZGF0aW9uRXJyb3JzO1xufVxuXG4vKipcbiAqIEZpbGwgYSBmb3JtIHVzaW5nIGEgc291cmNlIGVudGl0eVxuICpcbiAqIEBwYXJhbSB0YXJnZXRcbiAqIEBwYXJhbSBlbnRpdHlcbiAqIEBwYXJhbSBvcHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3B5RW50aXR5MkZvcm0oZW50aXR5OiBhbnksIHRhcmdldDogRm9ybUdyb3VwLCBvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuOyBvbmx5U2VsZj86IGJvb2xlYW4gfSkge1xuICBjb25zdCBqc29uID0gZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eShlbnRpdHksIHRhcmdldCk7XG4gIHRhcmdldC5wYXRjaFZhbHVlKGpzb24sIG9wdHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eShlbnRpdHk6IGFueXx1bmRlZmluZWQsIGZvcm06IEZvcm1Hcm91cCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICByZXR1cm4gYWRhcHRWYWx1ZVRvQ29udHJvbChlbnRpdHksIGZvcm0pIGFzIHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogVHJhbnNmb3JtIGFuIGVudGl0eSBpbnRvIGEgc2ltcGxlIG9iamVjdCwgY29tcGF0aWJsZSB3aXRoIHRoZSBnaXZlbiBmb3JtXG4gKlxuICogQHBhcmFtIHNvdXJjZSBhbiBlbnRpdHkgKG9yIHN1YmVudGl0eSlcbiAqIEBwYXJhbSBjb250cm9sXG4gKiBAcGFyYW0gcGF0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRhcHRWYWx1ZVRvQ29udHJvbChzb3VyY2U6IGFueXx1bmRlZmluZWQsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcGF0aD86IHN0cmluZyk6IGFueSB7XG4gIGNvbnN0IHBhdGhQcmVmaXggPSBwYXRoID8gcGF0aCArICcuJyA6ICcnO1xuXG4gIC8vIEZvcm0gZ3JvdXBcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZ3VhcmQtZm9yLWluXG4gICAgZm9yIChjb25zdCBrZXkgaW4gY29udHJvbC5jb250cm9scykge1xuICAgICAgcmVzdWx0W2tleV0gPSBhZGFwdFZhbHVlVG9Db250cm9sKHNvdXJjZSAmJiBzb3VyY2Vba2V5XSwgY29udHJvbC5jb250cm9sc1trZXldLCBwYXRoUHJlZml4ICsga2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIEFycmF5XG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG5cbiAgICAvLyBTcGxpdCwgaWYgbWFueSB2YWx1ZXMgaW4gYSBzdHJpbmdcbiAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHNvdXJjZSA9IHNvdXJjZS5zcGxpdCgnfCcpO1xuICAgIH1cblxuICAgIC8vIFNraXAgaWYgdmFsdWUgaXMgbm90IGFuIGFycmF5XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHNvdXJjZSkgfHwgY29udHJvbC5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkoc291cmNlKSkgY29uc29sZS53YXJuKGBXQVJOOiBwbGVhc2UgcmVzaXplIHRoZSBGb3JtQXJyYXkgJyR7cGF0aH0nIHRvIHRoZSBzYW1lIGxlbmd0aCBvZiB0aGUgaW5wdXQgYXJyYXlgKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvLyBVc2UgdGhlIGZpcnN0IGZvcm0gZ3JvdXAsIGFzIG1vZGVsXG4gICAgY29uc3QgZmlyc3RJdGVtQ29udHJvbCA9IGNvbnRyb2wuYXQoMCk7XG4gICAgbGV0IHJlc3VsdCA9IHNvdXJjZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiBhZGFwdFZhbHVlVG9Db250cm9sKGl0ZW0sIGZpcnN0SXRlbUNvbnRyb2wsIHBhdGhQcmVmaXggKyAnIycgKyBpbmRleCkpIGFzIGFueVtdO1xuXG4gICAgLy8gVHJ1bmNhdGUgaWYgdG9vIG1hbnkgdmFsdWVzXG4gICAgaWYgKHJlc3VsdC5sZW5ndGggPiBjb250cm9sLmxlbmd0aCkge1xuICAgICAgaWYgKGZpcnN0SXRlbUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xuICAgICAgICBmb3IgKGxldCBpID0gY29udHJvbC5sZW5ndGg7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb250cm9sLnB1c2gobmV3IEZvcm1Db250cm9sKG51bGwsIGZpcnN0SXRlbUNvbnRyb2wudmFsaWRhdG9yKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oYFdBUk46IHBsZWFzZSByZXNpemUgdGhlIEZvcm1BcnJheSAnJHtwYXRofHwnJ30nIHRvIHRoZSBzYW1lIGxlbmd0aCBvZiB0aGUgaW5wdXQgYXJyYXlgKTtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIGNvbnRyb2wubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgdmFsdWVzIGlmIG5vdCBlbm91Z2h0XG4gICAgZWxzZSBpZiAocmVzdWx0Lmxlbmd0aCA8IGNvbnRyb2wubGVuZ3RoKSB7XG4gICAgICAvL2NvbnNvbGUud2FybihgV0FSTjogQWRkaW5nIG51bGwgdmFsdWUgdG8gYXJyYXkgdmFsdWVzYCk7XG4gICAgICBmb3IgKGxldCBpID0gcmVzdWx0Lmxlbmd0aDsgaSA8IGNvbnRyb2wubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0LnB1c2gobnVsbCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBGb3JtIGNvbnRyb2xcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xuICAgIC8vIERhdGVcbiAgICBpZiAoaXNNb21lbnQoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHRvRGF0ZUlTT1N0cmluZyhzb3VyY2UpO1xuICAgIH1cbiAgICAvLyBBbnkgb3RoZXIgY29udHJvbDogcmVwbGFjZSB1bmRlZmluZWQgYnkgbnVsbCB2YWx1ZVxuICAgIC8vIGJlY2F1c2UgVW5kZWZpbmVkIGlzIG5vdCBhdXRob3JpemVkIGFzIGNvbnRyb2wgdmFsdWVcbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsSWZVbmRlZmluZWQoc291cmNlKTtcbiAgICB9XG4gIH1cblxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9nRm9ybUVycm9ycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGxvZ1ByZWZpeD86IHN0cmluZywgcGF0aD86IHN0cmluZykge1xuICBpZiAoIWNvbnRyb2wgfHwgY29udHJvbC52YWxpZCkgcmV0dXJuO1xuICBsb2dQcmVmaXggPSBsb2dQcmVmaXggfHwgJyc7XG4gIC8vIEZvcm0gZ3JvdXBcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICBpZiAoIXBhdGgpIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXh9IEZvcm0gZXJyb3JzOmApO1xuICAgIGlmIChjb250cm9sLmVycm9ycykge1xuICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMpLmZvckVhY2goZXJyb3IgPT5cbiAgICAgICAgY29uc29sZS53YXJuKGAke2xvZ1ByZWZpeH0gLT4gJHtwYXRoIHx8ICcnfSAoJHtlcnJvcn0pYClcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChjb250cm9sLmNvbnRyb2xzKSB7XG4gICAgICBPYmplY3Qua2V5cyhjb250cm9sLmNvbnRyb2xzKS5mb3JFYWNoKGNoaWxkID0+XG4gICAgICAgIGxvZ0Zvcm1FcnJvcnMoY29udHJvbC5jb250cm9sc1tjaGlsZF0sIGxvZ1ByZWZpeCwgKHBhdGggPyBgJHtwYXRofS4ke2NoaWxkfWAgOiBjaGlsZCkpIC8vIFJlY3Vyc2l2ZSBjYWxsXG4gICAgICApO1xuICAgIH1cbiAgfVxuICAvLyBGb3JtIGFycmF5XG4gIGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICBpZiAoY29udHJvbC5lcnJvcnMpIHtcbiAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2wuZXJyb3JzKS5mb3JFYWNoKGVycm9yID0+XG4gICAgICAgIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXh9IC0+ICR7cGF0aCB8fCAnJ30gKCR7ZXJyb3J9KWApXG4gICAgICApO1xuICAgIH1cbiAgICBjb250cm9sLmNvbnRyb2xzLmZvckVhY2goKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgICAgbG9nRm9ybUVycm9ycyhjaGlsZCwgbG9nUHJlZml4LCAocGF0aCA/IGAke3BhdGh9LiR7aW5kZXh9YCA6IGAke2luZGV4fWApKTsgLy8gUmVjdXJzaXZlIGNhbGxcbiAgICB9KTtcbiAgfVxuICAvLyBPdGhlciBjb250cm9sJ3MgZXJyb3JzXG4gIGVsc2UgaWYgKGNvbnRyb2wuZXJyb3JzKSB7XG4gICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMpLmZvckVhY2goZXJyb3IgPT5cbiAgICAgIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXh9IC0+ICR7cGF0aCB8fCAnJ30gKCR7ZXJyb3J9KWApXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUVycm9ycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIG9wdHM/OiB7XG4gIGNvbnRyb2xOYW1lPzogc3RyaW5nO1xuICByZXN1bHQ/OiBGb3JtRXJyb3JzO1xuICByZWN1cnNpdmU/OiBib29sZWFuO1xufSk6IEZvcm1FcnJvcnMge1xuICBpZiAoIWNvbnRyb2wgfHwgY29udHJvbC52YWxpZCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBvcHRzID0gb3B0cyB8fMKge307XG4gIG9wdHMucmVzdWx0ID0gb3B0cy5yZXN1bHQgfHwge307XG5cbiAgLy8gRm9ybSBncm91cFxuICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgIC8vIENvcHkgZXJyb3JzXG4gICAgaWYgKGNvbnRyb2wuZXJyb3JzKSB7XG4gICAgICBpZiAob3B0cy5jb250cm9sTmFtZSkge1xuICAgICAgICBvcHRzLnJlc3VsdFtvcHRzLmNvbnRyb2xOYW1lXSA9IHtcbiAgICAgICAgICAuLi5jb250cm9sLmVycm9yc1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG9wdHMucmVzdWx0ID0ge1xuICAgICAgICAgIC4uLm9wdHMucmVzdWx0LFxuICAgICAgICAgIC4uLmNvbnRyb2wuZXJyb3JzXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRzIHx8IG9wdHMucmVjdXJzaXZlICE9PSBmYWxzZSkge1xuICAgICAgLy8gTG9vcCBvbiBjaGlsZHJlbiBjb250cm9sc1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gY29udHJvbC5jb250cm9scykge1xuICAgICAgICBjb25zdCBjaGlsZCA9IGNvbnRyb2wuY29udHJvbHNba2V5XTtcbiAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmVuYWJsZWQpIHtcbiAgICAgICAgICBnZXRGb3JtRXJyb3JzKGNoaWxkLCB7XG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICAgICAgY29udHJvbE5hbWU6IG9wdHMuY29udHJvbE5hbWUgPyBbb3B0cy5jb250cm9sTmFtZSwga2V5XS5qb2luKCcuJykgOiBrZXksXG4gICAgICAgICAgICByZXN1bHQ6IG9wdHMucmVzdWx0IC8vIE1ha2Ugc3VyZSB0byBrZWVwIHRoZSBzYW1lIHJlc3VsdCBvYmplY3RcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEZvcm0gYXJyYXlcbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgIGNvbnRyb2wuY29udHJvbHMuZm9yRWFjaCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICBnZXRGb3JtRXJyb3JzKGNoaWxkLCB7XG4gICAgICAgIC4uLm9wdHMsXG4gICAgICAgIGNvbnRyb2xOYW1lOiAob3B0cy5jb250cm9sTmFtZSB8fCAnJykgKyAnLicgKyBpbmRleCxcbiAgICAgICAgcmVzdWx0OiBvcHRzLnJlc3VsdCAvLyBNYWtlIHN1cmUgdG8ga2VlcCB0aGUgc2FtZSByZXN1bHQgb2JqZWN0XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIE90aGVyIHR5cGUgb2YgY29udHJvbCAoZS5nIHNpbXBsZSBjb250cm9sKVxuICBlbHNlIGlmIChjb250cm9sLmVycm9ycykge1xuICAgIGlmIChvcHRzLmNvbnRyb2xOYW1lKSB7XG4gICAgICBvcHRzLnJlc3VsdFtvcHRzLmNvbnRyb2xOYW1lXSA9IHtcbiAgICAgICAgLi4uY29udHJvbC5lcnJvcnNcbiAgICAgIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgb3B0cy5yZXN1bHQgPSB7XG4gICAgICAgIC4uLm9wdHMucmVzdWx0LFxuICAgICAgICAuLi5jb250cm9sLmVycm9yc1xuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9wdHMucmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udHJvbEZyb21QYXRoKGZvcm06IEZvcm1Hcm91cCwgcGF0aDogc3RyaW5nKTogQWJzdHJhY3RDb250cm9sIHtcbiAgY29uc3QgaSA9IHBhdGguaW5kZXhPZignLicpO1xuICBpZiAoaSA9PT0gLTEpIHtcbiAgICByZXR1cm4gZm9ybS5jb250cm9sc1twYXRoXTtcbiAgfVxuICBjb25zdCBrZXkgPSBwYXRoLnN1YnN0cmluZygwLCBpKTtcbiAgaWYgKGZvcm0uY29udHJvbHNba2V5XSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgIHJldHVybiBnZXRDb250cm9sRnJvbVBhdGgoKGZvcm0uY29udHJvbHNba2V5XSBhcyBGb3JtR3JvdXApLCBwYXRoLnN1YnN0cmluZyhpICsgMSkpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBmb3JtIHBhdGg6ICcke2tleX0nIHNob3VsZCBiZSBhIGZvcm0gZ3JvdXAuYCk7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc2FibGVDb250cm9scyhmb3JtOiBGb3JtR3JvdXAsIHBhdGhzOiBzdHJpbmdbXSwgb3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAocGF0aHMgfHwgW10pLmZvckVhY2gocGF0aCA9PiB7XG4gICAgY29uc3QgY29udHJvbCA9IGdldENvbnRyb2xGcm9tUGF0aChmb3JtLCBwYXRoKTtcbiAgICBpZiAoY29udHJvbCkgY29udHJvbC5kaXNhYmxlKG9wdHMpO1xuICB9KTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gYWRkVmFsdWVJbkFycmF5KGFycmF5Q29udHJvbDogRm9ybUFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVDb250cm9sOiAodmFsdWU/OiBhbnkpID0+IEFic3RyYWN0Q29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1YWxzOiAodjE6IGFueSwgdjI6IGFueSkgPT4gYm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFbXB0eTogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogYm9vbGVhbiB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHtlbWl0RXZlbnQ6IHRydWV9O1xuXG4gIGxldCBoYXNDaGFuZ2VkID0gZmFsc2U7XG4gIGxldCBpbmRleCA9IC0xO1xuXG4gIC8vIFNlYXJjaCBpZiB2YWx1ZSBhbHJlYWR5IGV4aXN0c1xuICBpZiAoIWlzRW1wdHkodmFsdWUpKSB7XG4gICAgaW5kZXggPSAoYXJyYXlDb250cm9sLnZhbHVlIHx8IFtdKS5maW5kSW5kZXgodiA9PiBlcXVhbHModmFsdWUsIHYpKTtcbiAgfVxuXG4gIC8vIElmIHZhbHVlIG5vdCBleGlzdHMsIGJ1dCBsYXN0IHZhbHVlIGlzIGVtcHR5OiB1c2UgaXRcbiAgaWYgKGluZGV4ID09PSAtMSAmJiBhcnJheUNvbnRyb2wubGVuZ3RoICYmIGlzRW1wdHkoYXJyYXlDb250cm9sLmF0KGFycmF5Q29udHJvbC5sZW5ndGggLSAxKS52YWx1ZSkpIHtcbiAgICBpbmRleCA9IGFycmF5Q29udHJvbC5sZW5ndGggLSAxO1xuICB9XG5cbiAgLy8gUmVwbGFjZSB0aGUgZXhpc3RpbmcgdmFsdWVcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIGlmICghaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgIGFycmF5Q29udHJvbC5hdChpbmRleCkucGF0Y2hWYWx1ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICBoYXNDaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY29udHJvbCA9IGNyZWF0ZUNvbnRyb2wodmFsdWUpO1xuICAgIGFycmF5Q29udHJvbC5wdXNoKGNvbnRyb2wpO1xuICAgIGhhc0NoYW5nZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGhhc0NoYW5nZWQpIHtcbiAgICBpZiAoaXNOaWwob3B0aW9ucy5lbWl0RXZlbnQpIHx8IG9wdGlvbnMuZW1pdEV2ZW50KSB7XG4gICAgICAvLyBNYXJrIGFycmF5IGNvbnRyb2wgZGlydHlcbiAgICAgIGlmICghaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgYXJyYXlDb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGhhc0NoYW5nZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNpemVBcnJheShhcnJheUNvbnRyb2w6IEZvcm1BcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVDb250cm9sOiAoKSA9PiBBYnN0cmFjdENvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoOiBudW1iZXIpOiBib29sZWFuIHtcbiAgY29uc3QgaGFzQ2hhbmdlZCA9IGFycmF5Q29udHJvbC5sZW5ndGggIT09IGxlbmd0aDtcblxuICAvLyBJbmNyZWFzZSBzaXplXG4gIGlmIChhcnJheUNvbnRyb2wubGVuZ3RoIDwgbGVuZ3RoKSB7XG4gICAgd2hpbGUgKGFycmF5Q29udHJvbC5sZW5ndGggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5Q29udHJvbC5wdXNoKGNyZWF0ZUNvbnRyb2woKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gT3IgcmVkdWNlXG4gIGVsc2UgaWYgKGFycmF5Q29udHJvbC5sZW5ndGggPiBsZW5ndGgpIHtcbiAgICB3aGlsZSAoYXJyYXlDb250cm9sLmxlbmd0aCA+IGxlbmd0aCkge1xuICAgICAgYXJyYXlDb250cm9sLnJlbW92ZUF0KGFycmF5Q29udHJvbC5sZW5ndGggLSAxKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaGFzQ2hhbmdlZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVZhbHVlSW5BcnJheShhcnJheUNvbnRyb2w6IEZvcm1BcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFbXB0eTogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgYXJyYXlDb250cm9sLnJlbW92ZUF0KGluZGV4KTtcbiAgYXJyYXlDb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJWYWx1ZUluQXJyYXkoYXJyYXlDb250cm9sOiBGb3JtQXJyYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFbXB0eTogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuXG4gIGNvbnN0IGNvbnRyb2wgPSBhcnJheUNvbnRyb2wuYXQoaW5kZXgpO1xuICBpZiAoaXNFbXB0eShjb250cm9sLnZhbHVlKSkgcmV0dXJuIGZhbHNlOyAvLyBza2lwIChub3QgbmVlZCB0byBjbGVhcilcblxuICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgIGNvcHlFbnRpdHkyRm9ybSh7fSwgY29udHJvbCk7XG4gIH1cbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgIGNvbnRyb2wuc2V0VmFsdWUoW10pO1xuICB9XG4gIGVsc2Uge1xuICAgIGNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gIH1cbiAgYXJyYXlDb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFya0FsbEFzVG91Y2hlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgaWYgKCFjb250cm9sKSByZXR1cm47XG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgbWFya0Zvcm1Hcm91cEFzVG91Y2hlZChjb250cm9sLCB7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTsgLy8gcmVjdXJzaXZlIGNhbGxcbiAgfVxuICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xuICAgIChjb250cm9sLmNvbnRyb2xzIHx8IFtdKS5mb3JFYWNoKGMgPT4gbWFya0NvbnRyb2xBc1RvdWNoZWQoYywgey4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSkpOyAvLyByZWN1cnNpdmUgY2FsbFxuICB9XG4gIGVsc2Uge1xuICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcbiAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoey4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtGb3JtR3JvdXBBc1RvdWNoZWQoZm9ybTogRm9ybUdyb3VwLCBvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gIGlmICghZm9ybSkgcmV0dXJuO1xuICBmb3JtLm1hcmtBc1RvdWNoZWQob3B0cyk7XG4gIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpXG4gICAgLm1hcChrZXkgPT4gZm9ybS5jb250cm9sc1trZXldKVxuICAgIC5maWx0ZXIoY29udHJvbCA9PiBjb250cm9sLmVuYWJsZWQpXG4gICAgLmZvckVhY2goY29udHJvbCA9PiBtYXJrQ29udHJvbEFzVG91Y2hlZChjb250cm9sLCBvcHRzKSk7XG4gIGZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtDb250cm9sQXNUb3VjaGVkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgb3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICBpZiAoIWNvbnRyb2wpIHJldHVybjtcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICBtYXJrQWxsQXNUb3VjaGVkKGNvbnRyb2wsIHsgLi4ub3B0cywgb25seVNlbGY6IHRydWV9KTsgLy8gcmVjdXJzaXZlIGNhbGxcbiAgfVxuICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgKGNvbnRyb2wuY29udHJvbHMgfHwgW10pLmZvckVhY2goYyA9PiBtYXJrQ29udHJvbEFzVG91Y2hlZChjLCB7IC4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSkpOyAvLyByZWN1cnNpdmUgY2FsbFxuICB9XG4gIGVsc2Uge1xuICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcbiAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoey4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZm9ybTogRm9ybUdyb3VwLCBvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gIGlmICghZm9ybSkgcmV0dXJuO1xuICBmb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkob3B0cyk7XG4gIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpXG4gICAgLm1hcChrZXkgPT4gZm9ybS5jb250cm9sc1trZXldKVxuICAgIC5maWx0ZXIoY29udHJvbCA9PiBjb250cm9sLmVuYWJsZWQpXG4gICAgLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgICB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGNvbnRyb2wsIHsuLi5vcHRzLCBvbmx5U2VsZjogdHJ1ZX0pOyAvLyByZWN1cnNpdmUgY2FsbFxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtBc1VudG91Y2hlZChmb3JtOiBGb3JtR3JvdXAsIG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuIH0pIHtcbiAgaWYgKCFmb3JtKSByZXR1cm47XG4gIGZvcm0ubWFya0FzVW50b3VjaGVkKG9wdHMpO1xuICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhmb3JtLmNvbnRyb2xzKVxuICAgIC5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gZm9ybS5nZXQoa2V5KTtcbiAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICAgIG1hcmtBc1VudG91Y2hlZChjb250cm9sLCB7b25seVNlbGY6IHRydWV9KTsgLy8gcmVjdXJzaXZlIGNhbGxcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb250cm9sLm1hcmtBc1VudG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcbiAgICAgICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbi8qKlxuICogV2FpdCBlbmQgb2YgYXN5bmMgdmFsaWRhdGlvbiAobm90IHBlbmRpbmcpLiBUaGlzIG5lZWQgdG8gaW1wbGVtZW50IHtwZW5kaW5nOiBib29sZWFufVxuICogcmV0dXJuIGZhbHNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YWl0V2hpbGVQZW5kaW5nPFQgZXh0ZW5kcyB7IHBlbmRpbmc6IGJvb2xlYW4gfT4oZm9ybTogVCwgb3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByZWRpY2F0ZTogUHJlZGljYXRlPHZvaWQ+ID0gKCkgPT4gZm9ybS5wZW5kaW5nICE9PSB0cnVlO1xuICByZXR1cm4gd2FpdEZvcihwcmVkaWNhdGUsIG9wdHMpO1xufVxuXG4vKipcbiAqIFdhaXQgZm9ybSBpcyBpZGxlIChub3QgbG9hZGluZykuIFRoaXMgbmVlZCB0byBpbXBsZW1lbnQge2xvYWRpbmc6IGJvb2xlYW59XG4gKiBAcGFyYW0gZm9ybVxuICogQHBhcmFtIG9wdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhaXRJZGxlPFQgZXh0ZW5kcyB7IGxvYWRpbmc6IGJvb2xlYW4gfT4oZm9ybTogVCwgb3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByZWRpY2F0ZTogUHJlZGljYXRlPHZvaWQ+ID0gKCkgPT4gZm9ybS5sb2FkaW5nICE9PSB0cnVlO1xuICByZXR1cm4gd2FpdEZvcihwcmVkaWNhdGUsIG9wdHMpO1xufVxuXG5cbiJdfQ==
|
|
@@ -14,9 +14,9 @@ import { MatIconModule } from '@angular/material/icon';
|
|
|
14
14
|
import { MatButtonModule } from '@angular/material/button';
|
|
15
15
|
import { MatSelectModule } from '@angular/material/select';
|
|
16
16
|
import { TranslateModule } from '@ngx-translate/core';
|
|
17
|
-
export class
|
|
17
|
+
export class SharedMatChipsModule {
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
SharedMatChipsModule.decorators = [
|
|
20
20
|
{ type: NgModule, args: [{
|
|
21
21
|
imports: [
|
|
22
22
|
CommonModule,
|
|
@@ -42,4 +42,4 @@ MaterialChipsModule.decorators = [
|
|
|
42
42
|
]
|
|
43
43
|
},] }
|
|
44
44
|
];
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvY2hpcHMvY2hpcHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBMEJwRCxNQUFNLE9BQU8sb0JBQW9COzs7WUF4QmhDLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixXQUFXO29CQUNYLG1CQUFtQjtvQkFDbkIsaUJBQWlCO29CQUNqQixzQkFBc0I7b0JBQ3RCLGVBQWU7b0JBQ2YscUJBQXFCO29CQUNyQixrQkFBa0I7b0JBQ2xCLGNBQWM7b0JBQ2QsYUFBYTtvQkFDYixlQUFlO29CQUNmLGVBQWU7b0JBQ2YsY0FBYztvQkFDZCxlQUFlLENBQUMsUUFBUSxFQUFFO2lCQUMzQjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osYUFBYTtpQkFDZDtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsYUFBYTtpQkFDZDthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdENoaXBzRmllbGR9IGZyb20gJy4vbWF0ZXJpYWwuY2hpcHMnO1xuaW1wb3J0IHtNYXRDaGlwc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0lvbmljTW9kdWxlfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge1JlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7U2hhcmVkUGlwZXNNb2R1bGV9IGZyb20gJy4uLy4uL3BpcGVzL3BpcGVzLm1vZHVsZSc7XG5pbXBvcnQge1NoYXJlZERpcmVjdGl2ZXNNb2R1bGV9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZGlyZWN0aXZlcy5tb2R1bGUnO1xuaW1wb3J0IHtNYXRDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtNYXRBdXRvY29tcGxldGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge01hdFNlbGVjdE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJb25pY01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFNoYXJlZFBpcGVzTW9kdWxlLFxuICAgIFNoYXJlZERpcmVjdGl2ZXNNb2R1bGUsXG4gICAgTWF0Q29tbW9uTW9kdWxlLFxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdENoaXBzTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBNYXRDaGlwc0ZpZWxkXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBNYXRDaGlwc0ZpZWxkXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2hhcmVkTWF0Q2hpcHNNb2R1bGUge1xuXG59XG4iXX0=
|
|
@@ -36,7 +36,7 @@ import { SharedMatNumpadModule } from './numpad/numpad.module';
|
|
|
36
36
|
import { SharedMatSwipeModule } from './swipe/swipe.module';
|
|
37
37
|
import { MatDividerModule } from '@angular/material/divider';
|
|
38
38
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
39
|
-
import {
|
|
39
|
+
import { SharedMatChipsModule } from './chips/chips.module';
|
|
40
40
|
import { SharedMatBadgeIconModule } from './badge/badge-icon.module';
|
|
41
41
|
const modules = [
|
|
42
42
|
// Angular material components
|
|
@@ -79,7 +79,7 @@ const modules = [
|
|
|
79
79
|
SharedMatBooleanModule,
|
|
80
80
|
SharedMatNumpadModule,
|
|
81
81
|
SharedMatSwipeModule,
|
|
82
|
-
|
|
82
|
+
SharedMatChipsModule,
|
|
83
83
|
SharedMatBadgeIconModule
|
|
84
84
|
];
|
|
85
85
|
export class SharedMaterialModule {
|
|
@@ -90,4 +90,4 @@ SharedMaterialModule.decorators = [
|
|
|
90
90
|
exports: modules
|
|
91
91
|
},] }
|
|
92
92
|
];
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbWF0ZXJpYWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQU8sTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRWxELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxlQUFlLEVBQUUsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDeEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBR25FLE1BQU0sT0FBTyxHQUE2QjtJQUN4Qyw4QkFBOEI7SUFDOUIsZUFBZTtJQUNmLGNBQWM7SUFDZCxhQUFhO0lBQ2Isa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQixjQUFjO0lBQ2QsY0FBYztJQUNkLGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIsZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixhQUFhO0lBQ2IsZUFBZTtJQUNmLGFBQWE7SUFDYixlQUFlO0lBQ2YsYUFBYTtJQUNiLGFBQWE7SUFDYixhQUFhO0lBQ2IsZ0JBQWdCO0lBQ2hCLHFCQUFxQjtJQUNyQix3QkFBd0I7SUFDeEIsb0JBQW9CO0lBQ3BCLGNBQWM7SUFDZCxjQUFjO0lBQ2Qsb0JBQW9CO0lBQ3BCLFVBQVU7SUFDVixhQUFhO0lBQ2IsZUFBZTtJQUNmLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLG9CQUFvQjtJQUNwQiwyQkFBMkI7SUFDM0Isc0JBQXNCO0lBQ3RCLHVCQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIsc0JBQXNCO0lBQ3RCLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIsb0JBQW9CO0lBQ3BCLHdCQUF3QjtDQUN6QixDQUFDO0FBTUYsTUFBTSxPQUFPLG9CQUFvQjs7O1lBSmhDLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUUsT0FBTztnQkFDaEIsT0FBTyxFQUFFLE9BQU87YUFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlLCBUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2RrVGFibGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay90YWJsZSc7XG5cbmltcG9ydCB7QTExeU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtPdmVybGF5TW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1Njcm9sbGluZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQge01hdENvbW1vbk1vZHVsZSwgTWF0UmlwcGxlTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7TWF0VGFibGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7TWF0U29ydE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQge01hdFBhZ2luYXRvck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7TWF0SW5wdXRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7TWF0Q2hlY2tib3hNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7TWF0RXhwYW5zaW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xuaW1wb3J0IHtNYXRUb29sYmFyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdEJ1dHRvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7TWF0TWVudU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQge01hdFNlbGVjdE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7TWF0Q2FyZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQge01hdFRhYnNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHtNYXRTdGVwcGVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zdGVwcGVyJztcbmltcG9ydCB7TWF0TGlzdE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQge01hdEJ1dHRvblRvZ2dsZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQge01hdFByb2dyZXNzU3Bpbm5lck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQge01hdFByb2dyZXNzQmFyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHtNYXRSYWRpb01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHtNYXRCYWRnZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UnO1xuaW1wb3J0IHtNYXRTbGlkZVRvZ2dsZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7TWF0RGlhbG9nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtTaGFyZWRNYXRBdXRvY29tcGxldGVNb2R1bGV9IGZyb20gJy4vYXV0b2NvbXBsZXRlL21hdGVyaWFsLmF1dG9jb21wbGV0ZS5tb2R1bGUnO1xuaW1wb3J0IHtTaGFyZWRNYXRMYXRMb25nTW9kdWxlfSBmcm9tICcuL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy5tb2R1bGUnO1xuaW1wb3J0IHtTaGFyZWRNYXREYXRlVGltZU1vZHVsZX0gZnJvbSAnLi9kYXRldGltZS9kYXRldGltZS5tb2R1bGUnO1xuaW1wb3J0IHtTaGFyZWRNYXREdXJhdGlvbk1vZHVsZX0gZnJvbSAnLi9kdXJhdGlvbi9kdXJhdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHtTaGFyZWRNYXRCb29sZWFuTW9kdWxlfSBmcm9tICcuL2Jvb2xlYW4vYm9vbGVhbi5tb2R1bGUnO1xuaW1wb3J0IHtTaGFyZWRNYXROdW1wYWRNb2R1bGV9IGZyb20gJy4vbnVtcGFkL251bXBhZC5tb2R1bGUnO1xuaW1wb3J0IHtTaGFyZWRNYXRTd2lwZU1vZHVsZX0gZnJvbSAnLi9zd2lwZS9zd2lwZS5tb2R1bGUnO1xuaW1wb3J0IHtNYXREaXZpZGVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcbmltcG9ydCB7TWF0VG9vbHRpcE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQge1NoYXJlZE1hdENoaXBzTW9kdWxlfSBmcm9tICcuL2NoaXBzL2NoaXBzLm1vZHVsZSc7XG5pbXBvcnQge1NoYXJlZE1hdEJhZGdlSWNvbk1vZHVsZX0gZnJvbSAnLi9iYWRnZS9iYWRnZS1pY29uLm1vZHVsZSc7XG5pbXBvcnQge0RyYWdEcm9wTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuY29uc3QgbW9kdWxlczogQXJyYXk8VHlwZTxhbnk+IHwgYW55W10+ID0gW1xuICAvLyBBbmd1bGFyIG1hdGVyaWFsIGNvbXBvbmVudHNcbiAgTWF0Q29tbW9uTW9kdWxlLFxuICBNYXRUYWJsZU1vZHVsZSxcbiAgTWF0U29ydE1vZHVsZSxcbiAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gIE1hdElucHV0TW9kdWxlLFxuICBDZGtUYWJsZU1vZHVsZSxcbiAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gIE1hdEV4cGFuc2lvbk1vZHVsZSxcbiAgTWF0VG9vbGJhck1vZHVsZSxcbiAgTWF0RGlhbG9nTW9kdWxlLFxuICBNYXRJY29uTW9kdWxlLFxuICBNYXRCdXR0b25Nb2R1bGUsXG4gIE1hdE1lbnVNb2R1bGUsXG4gIE1hdFNlbGVjdE1vZHVsZSxcbiAgTWF0Q2FyZE1vZHVsZSxcbiAgTWF0VGFic01vZHVsZSxcbiAgTWF0TGlzdE1vZHVsZSxcbiAgTWF0U3RlcHBlck1vZHVsZSxcbiAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICBNYXRSYWRpb01vZHVsZSxcbiAgTWF0QmFkZ2VNb2R1bGUsXG4gIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICBBMTF5TW9kdWxlLCAvLyBVc2VkIGZvciBmb2N1cyB0cmFwXG4gIE92ZXJsYXlNb2R1bGUsXG4gIFNjcm9sbGluZ01vZHVsZSxcbiAgTWF0UmlwcGxlTW9kdWxlLFxuICBNYXREaXZpZGVyTW9kdWxlLFxuICBNYXRUb29sdGlwTW9kdWxlLFxuICAvLyBDdXN0b20gY29tcG9uZW50c1xuICBTaGFyZWRNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gIFNoYXJlZE1hdExhdExvbmdNb2R1bGUsXG4gIFNoYXJlZE1hdERhdGVUaW1lTW9kdWxlLFxuICBTaGFyZWRNYXREdXJhdGlvbk1vZHVsZSxcbiAgU2hhcmVkTWF0Qm9vbGVhbk1vZHVsZSxcbiAgU2hhcmVkTWF0TnVtcGFkTW9kdWxlLFxuICBTaGFyZWRNYXRTd2lwZU1vZHVsZSxcbiAgU2hhcmVkTWF0Q2hpcHNNb2R1bGUsXG4gIFNoYXJlZE1hdEJhZGdlSWNvbk1vZHVsZVxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogbW9kdWxlcyxcbiAgZXhwb3J0czogbW9kdWxlc1xufSlcbmV4cG9ydCBjbGFzcyBTaGFyZWRNYXRlcmlhbE1vZHVsZSB7XG59XG5cbiJdfQ==
|