ngx-material-entity 15.1.3 → 15.1.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.
Files changed (98) hide show
  1. package/README.md +100 -0
  2. package/components/confirm-dialog/confirm-dialog.component.d.ts +1 -1
  3. package/components/edit-page/edit-page.component.d.ts +112 -0
  4. package/components/edit-page/page-edit-data.builder.d.ts +17 -0
  5. package/components/input/array/array-date-input/array-date-input.component.d.ts +1 -1
  6. package/components/input/array/array-date-range-input/array-date-range-input.component.d.ts +1 -1
  7. package/components/input/array/array-date-time-input/array-date-time-input.component.d.ts +1 -1
  8. package/components/input/array/array-table.class.d.ts +1 -1
  9. package/components/input/date/date-input/date-input.component.d.ts +1 -1
  10. package/components/input/date/date-time-input/date-time-input.component.d.ts +1 -1
  11. package/components/input/file/file-default-input/file-default-input.component.d.ts +1 -1
  12. package/components/input/file/file-image-input/file-image-input.component.d.ts +1 -1
  13. package/components/input/file/file-input/file-input.component.d.ts +3 -3
  14. package/components/input/input.component.d.ts +3 -3
  15. package/components/input/relations/references-many-input/references-many-input.component.d.ts +1 -1
  16. package/components/input/string/string-password-input/string-password-input.component.d.ts +1 -1
  17. package/components/table/create-dialog/create-entity-dialog-data.builder.d.ts +3 -3
  18. package/components/table/create-dialog/create-entity-dialog-data.d.ts +1 -1
  19. package/components/table/create-dialog/create-entity-dialog.component.d.ts +4 -4
  20. package/components/table/default.actions.d.ts +21 -0
  21. package/components/table/edit-dialog/{edit-dialog-data.builder.d.ts → edit-data.builder.d.ts} +7 -7
  22. package/components/table/edit-dialog/{edit-entity-dialog-data.d.ts → edit-entity-data.d.ts} +5 -5
  23. package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +6 -6
  24. package/components/table/edit-dialog/edit-entity.builder.d.ts +24 -0
  25. package/components/table/table-data.builder.d.ts +11 -7
  26. package/components/table/table-data.d.ts +29 -8
  27. package/components/table/table.component.d.ts +14 -7
  28. package/components/table/table.module.d.ts +4 -3
  29. package/encapsulation/js-2-xml.utilities.d.ts +15 -0
  30. package/encapsulation/jszip.utilities.d.ts +3 -2
  31. package/encapsulation/lodash.utilities.d.ts +7 -0
  32. package/esm2020/classes/entity.model.mjs +2 -2
  33. package/esm2020/components/confirm-dialog/confirm-dialog.component.mjs +4 -4
  34. package/esm2020/components/edit-page/edit-page.component.mjs +203 -0
  35. package/esm2020/components/edit-page/page-edit-data.builder.mjs +32 -0
  36. package/esm2020/components/input/array/array-date-input/array-date-input.component.mjs +4 -4
  37. package/esm2020/components/input/array/array-date-range-input/array-date-range-input.component.mjs +4 -4
  38. package/esm2020/components/input/array/array-date-time-input/array-date-time-input.component.mjs +4 -4
  39. package/esm2020/components/input/array/array-table.class.mjs +3 -3
  40. package/esm2020/components/input/base-input.component.mjs +2 -2
  41. package/esm2020/components/input/date/date-input/date-input.component.mjs +2 -2
  42. package/esm2020/components/input/date/date-range-input/date-range-input.component.mjs +5 -5
  43. package/esm2020/components/input/date/date-time-input/date-time-input.component.mjs +3 -3
  44. package/esm2020/components/input/file/file-default-input/file-default-input.component.mjs +2 -2
  45. package/esm2020/components/input/file/file-image-input/file-image-input.component.mjs +3 -3
  46. package/esm2020/components/input/file/file-input/file-input.component.mjs +5 -5
  47. package/esm2020/components/input/input.component.mjs +6 -6
  48. package/esm2020/components/input/relations/references-many-input/references-many-input.component.mjs +4 -4
  49. package/esm2020/components/input/string/string-password-input/string-password-input.component.mjs +4 -4
  50. package/esm2020/components/table/create-dialog/create-entity-dialog-data.builder.mjs +2 -2
  51. package/esm2020/components/table/create-dialog/create-entity-dialog-data.mjs +1 -1
  52. package/esm2020/components/table/create-dialog/create-entity-dialog.component.mjs +5 -5
  53. package/esm2020/components/table/default.actions.mjs +65 -0
  54. package/esm2020/components/table/edit-dialog/edit-data.builder.mjs +41 -0
  55. package/esm2020/components/table/edit-dialog/edit-entity-data.mjs +2 -0
  56. package/esm2020/components/table/edit-dialog/edit-entity-dialog.component.mjs +16 -16
  57. package/esm2020/components/table/edit-dialog/edit-entity.builder.mjs +28 -0
  58. package/esm2020/components/table/table-data.builder.mjs +19 -8
  59. package/esm2020/components/table/table-data.mjs +1 -1
  60. package/esm2020/components/table/table.component.mjs +73 -29
  61. package/esm2020/components/table/table.module.mjs +5 -1
  62. package/esm2020/decorators/array/array-decorator-internal.data.mjs +2 -2
  63. package/esm2020/decorators/base/base-property.decorator.mjs +2 -2
  64. package/esm2020/decorators/date/date-decorator-internal.data.mjs +2 -2
  65. package/esm2020/decorators/date/date.decorator.mjs +2 -2
  66. package/esm2020/decorators/file/file.decorator.mjs +2 -2
  67. package/esm2020/decorators/string/string.decorator.mjs +2 -2
  68. package/esm2020/encapsulation/js-2-xml.utilities.mjs +18 -0
  69. package/esm2020/encapsulation/jszip.utilities.mjs +1 -1
  70. package/esm2020/encapsulation/lodash.utilities.mjs +13 -1
  71. package/esm2020/public-api.mjs +31 -26
  72. package/esm2020/services/entity.service.mjs +252 -0
  73. package/esm2020/services/unsaved-changes.guard.mjs +14 -0
  74. package/esm2020/utilities/date.utilities.mjs +158 -0
  75. package/esm2020/utilities/entity.utilities.mjs +828 -0
  76. package/esm2020/utilities/file.utilities.mjs +176 -0
  77. package/esm2020/utilities/selection.utilities.mjs +50 -0
  78. package/fesm2015/ngx-material-entity.mjs +1071 -644
  79. package/fesm2015/ngx-material-entity.mjs.map +1 -1
  80. package/fesm2020/ngx-material-entity.mjs +992 -571
  81. package/fesm2020/ngx-material-entity.mjs.map +1 -1
  82. package/package.json +3 -2
  83. package/public-api.d.ts +28 -25
  84. package/{classes → services}/entity.service.d.ts +25 -1
  85. package/services/unsaved-changes.guard.d.ts +4 -0
  86. package/{classes → utilities}/entity.utilities.d.ts +1 -1
  87. package/{classes → utilities}/file.utilities.d.ts +7 -0
  88. package/components/table/edit-dialog/edit-entity-dialog.builder.d.ts +0 -24
  89. package/esm2020/classes/date.utilities.mjs +0 -158
  90. package/esm2020/classes/entity.service.mjs +0 -213
  91. package/esm2020/classes/entity.utilities.mjs +0 -828
  92. package/esm2020/classes/file.utilities.mjs +0 -163
  93. package/esm2020/classes/selection.utilities.mjs +0 -50
  94. package/esm2020/components/table/edit-dialog/edit-dialog-data.builder.mjs +0 -41
  95. package/esm2020/components/table/edit-dialog/edit-entity-dialog-data.mjs +0 -2
  96. package/esm2020/components/table/edit-dialog/edit-entity-dialog.builder.mjs +0 -28
  97. /package/{classes → utilities}/date.utilities.d.ts +0 -0
  98. /package/{classes → utilities}/selection.utilities.d.ts +0 -0
@@ -1,4 +1,4 @@
1
- import { DateUtilities } from '../../classes/date.utilities';
1
+ import { DateUtilities } from '../../utilities/date.utilities';
2
2
  import { PropertyDecoratorConfigInternal } from '../base/property-decorator-internal.data';
3
3
  /**
4
4
  * The internal DefaultDateDecoratorConfig. Sets default values.
@@ -45,4 +45,4 @@ export class DateTimeDateDecoratorConfigInternal extends PropertyDecoratorConfig
45
45
  this.filterTime = data.filterTime;
46
46
  }
47
47
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1kZWNvcmF0b3ItaW50ZXJuYWwuZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2RlY29yYXRvcnMvZGF0ZS9kYXRlLWRlY29yYXRvci1pbnRlcm5hbC5kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUczRjs7R0FFRztBQUNILE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSwrQkFBK0I7SUFVbkYsWUFBWSxJQUFnQztRQUN4QyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDOUIsQ0FBQztDQUNKO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsK0JBQStCO0lBa0JyRixZQUFZLElBQWtDO1FBQzFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksT0FBTyxDQUFDO1FBQ3pELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxLQUFLLENBQUM7SUFDdkQsQ0FBQztDQUNKO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUNBQW9DLFNBQVEsK0JBQStCO0lBb0JwRixZQUFZLElBQWlDO1FBQ3pDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksYUFBYSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxNQUFNLENBQUM7UUFDdEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDdEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGltZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEYXRlRmlsdGVyRm4gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IERhdGVVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2RhdGUudXRpbGl0aWVzJztcbmltcG9ydCB7IERyb3Bkb3duVmFsdWUgfSBmcm9tICcuLi9iYXNlL2Ryb3Bkb3duLXZhbHVlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsIH0gZnJvbSAnLi4vYmFzZS9wcm9wZXJ0eS1kZWNvcmF0b3ItaW50ZXJuYWwuZGF0YSc7XG5pbXBvcnQgeyBEYXRlUmFuZ2VEYXRlRGVjb3JhdG9yQ29uZmlnLCBEYXRlVGltZURhdGVEZWNvcmF0b3JDb25maWcsIERlZmF1bHREYXRlRGVjb3JhdG9yQ29uZmlnIH0gZnJvbSAnLi9kYXRlLWRlY29yYXRvci5kYXRhJztcblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgRGVmYXVsdERhdGVEZWNvcmF0b3JDb25maWcuIFNldHMgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZWZhdWx0RGF0ZURlY29yYXRvckNvbmZpZ0ludGVybmFsIGV4dGVuZHMgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCBpbXBsZW1lbnRzIERlZmF1bHREYXRlRGVjb3JhdG9yQ29uZmlnIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRpc3BsYXlTdHlsZTogJ2RhdGUnO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWluPzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWF4PzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZmlsdGVyPzogRGF0ZUZpbHRlckZuPERhdGUgfCBudWxsIHwgdW5kZWZpbmVkPjtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IERlZmF1bHREYXRlRGVjb3JhdG9yQ29uZmlnKSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgICAgICB0aGlzLmRpc3BsYXlTdHlsZSA9IGRhdGEuZGlzcGxheVN0eWxlO1xuICAgICAgICB0aGlzLm1heCA9IGRhdGEubWF4O1xuICAgICAgICB0aGlzLm1pbiA9IGRhdGEubWluO1xuICAgICAgICB0aGlzLmZpbHRlciA9IGRhdGEuZmlsdGVyO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgRGF0ZVJhbmdlRGF0ZURlY29yYXRvckNvbmZpZy4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGVSYW5nZURhdGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbCBleHRlbmRzIFByb3BlcnR5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgaW1wbGVtZW50cyBEYXRlUmFuZ2VEYXRlRGVjb3JhdG9yQ29uZmlnIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRpc3BsYXlTdHlsZTogJ2RhdGVyYW5nZSc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaW5TdGFydD86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1heFN0YXJ0PzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWluRW5kPzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWF4RW5kPzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZmlsdGVyPzogRGF0ZUZpbHRlckZuPERhdGU+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcGxhY2Vob2xkZXJTdGFydDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcGxhY2Vob2xkZXJFbmQ6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IERhdGVSYW5nZURhdGVEZWNvcmF0b3JDb25maWcpIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMuZGlzcGxheVN0eWxlID0gZGF0YS5kaXNwbGF5U3R5bGU7XG4gICAgICAgIHRoaXMubWluU3RhcnQgPSBkYXRhLm1pblN0YXJ0O1xuICAgICAgICB0aGlzLm1heFN0YXJ0ID0gZGF0YS5tYXhTdGFydDtcbiAgICAgICAgdGhpcy5taW5FbmQgPSBkYXRhLm1pbkVuZDtcbiAgICAgICAgdGhpcy5tYXhFbmQgPSBkYXRhLm1heEVuZDtcbiAgICAgICAgdGhpcy5maWx0ZXIgPSBkYXRhLmZpbHRlcjtcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlclN0YXJ0ID0gZGF0YS5wbGFjZWhvbGRlclN0YXJ0ID8/ICdTdGFydCc7XG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXJFbmQgPSBkYXRhLnBsYWNlaG9sZGVyRW5kID8/ICdFbmQnO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgRGF0ZVRpbWVEYXRlRGVjb3JhdG9yQ29uZmlnLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVEYXRlRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgZXh0ZW5kcyBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsIGltcGxlbWVudHMgRGF0ZVRpbWVEYXRlRGVjb3JhdG9yQ29uZmlnIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRpc3BsYXlTdHlsZTogJ2RhdGV0aW1lJztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHRpbWVzOiBEcm9wZG93blZhbHVlPFRpbWUgfCB1bmRlZmluZWQ+W107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICB0aW1lRGlzcGxheU5hbWU6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pbkRhdGU/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXhEYXRlPzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZmlsdGVyRGF0ZT86IERhdGVGaWx0ZXJGbjxEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZD47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaW5UaW1lPzogKGRhdGU/OiBEYXRlKSA9PiBUaW1lO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWF4VGltZT86IChkYXRlPzogRGF0ZSkgPT4gVGltZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGZpbHRlclRpbWU/OiAoKHRpbWU6IFRpbWUpID0+IGJvb2xlYW4pIHwgKCgpID0+IGJvb2xlYW4pO1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogRGF0ZVRpbWVEYXRlRGVjb3JhdG9yQ29uZmlnKSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgICAgICB0aGlzLmRpc3BsYXlTdHlsZSA9IGRhdGEuZGlzcGxheVN0eWxlO1xuICAgICAgICB0aGlzLnRpbWVzID0gZGF0YS50aW1lcyA/PyBEYXRlVXRpbGl0aWVzLmdldERlZmF1bHRUaW1lcygpO1xuICAgICAgICB0aGlzLnRpbWVEaXNwbGF5TmFtZSA9IGRhdGEudGltZURpc3BsYXlOYW1lID8/ICdUaW1lJztcbiAgICAgICAgdGhpcy5taW5EYXRlID0gZGF0YS5taW5EYXRlO1xuICAgICAgICB0aGlzLm1heERhdGUgPSBkYXRhLm1heERhdGU7XG4gICAgICAgIHRoaXMuZmlsdGVyRGF0ZSA9IGRhdGEuZmlsdGVyRGF0ZTtcbiAgICAgICAgdGhpcy5taW5UaW1lID0gZGF0YS5taW5UaW1lO1xuICAgICAgICB0aGlzLm1heFRpbWUgPSBkYXRhLm1heFRpbWU7XG4gICAgICAgIHRoaXMuZmlsdGVyVGltZSA9IGRhdGEuZmlsdGVyVGltZTtcbiAgICB9XG59Il19
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1kZWNvcmF0b3ItaW50ZXJuYWwuZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2RlY29yYXRvcnMvZGF0ZS9kYXRlLWRlY29yYXRvci1pbnRlcm5hbC5kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUvRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUczRjs7R0FFRztBQUNILE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSwrQkFBK0I7SUFVbkYsWUFBWSxJQUFnQztRQUN4QyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDOUIsQ0FBQztDQUNKO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsK0JBQStCO0lBa0JyRixZQUFZLElBQWtDO1FBQzFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksT0FBTyxDQUFDO1FBQ3pELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxLQUFLLENBQUM7SUFDdkQsQ0FBQztDQUNKO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUNBQW9DLFNBQVEsK0JBQStCO0lBb0JwRixZQUFZLElBQWlDO1FBQ3pDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksYUFBYSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxNQUFNLENBQUM7UUFDdEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDdEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGltZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEYXRlRmlsdGVyRm4gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IERhdGVVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZGF0ZS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25WYWx1ZSB9IGZyb20gJy4uL2Jhc2UvZHJvcGRvd24tdmFsdWUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFByb3BlcnR5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgfSBmcm9tICcuLi9iYXNlL3Byb3BlcnR5LWRlY29yYXRvci1pbnRlcm5hbC5kYXRhJztcbmltcG9ydCB7IERhdGVSYW5nZURhdGVEZWNvcmF0b3JDb25maWcsIERhdGVUaW1lRGF0ZURlY29yYXRvckNvbmZpZywgRGVmYXVsdERhdGVEZWNvcmF0b3JDb25maWcgfSBmcm9tICcuL2RhdGUtZGVjb3JhdG9yLmRhdGEnO1xuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBEZWZhdWx0RGF0ZURlY29yYXRvckNvbmZpZy4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERlZmF1bHREYXRlRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgZXh0ZW5kcyBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsIGltcGxlbWVudHMgRGVmYXVsdERhdGVEZWNvcmF0b3JDb25maWcge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGlzcGxheVN0eWxlOiAnZGF0ZSc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaW4/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXg/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBmaWx0ZXI/OiBEYXRlRmlsdGVyRm48RGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ+O1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogRGVmYXVsdERhdGVEZWNvcmF0b3JDb25maWcpIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMuZGlzcGxheVN0eWxlID0gZGF0YS5kaXNwbGF5U3R5bGU7XG4gICAgICAgIHRoaXMubWF4ID0gZGF0YS5tYXg7XG4gICAgICAgIHRoaXMubWluID0gZGF0YS5taW47XG4gICAgICAgIHRoaXMuZmlsdGVyID0gZGF0YS5maWx0ZXI7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBEYXRlUmFuZ2VEYXRlRGVjb3JhdG9yQ29uZmlnLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlRGF0ZURlY29yYXRvckNvbmZpZ0ludGVybmFsIGV4dGVuZHMgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCBpbXBsZW1lbnRzIERhdGVSYW5nZURhdGVEZWNvcmF0b3JDb25maWcge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGlzcGxheVN0eWxlOiAnZGF0ZXJhbmdlJztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pblN0YXJ0PzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWF4U3RhcnQ/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaW5FbmQ/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXhFbmQ/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBmaWx0ZXI/OiBEYXRlRmlsdGVyRm48RGF0ZT47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBwbGFjZWhvbGRlclN0YXJ0OiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBwbGFjZWhvbGRlckVuZDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogRGF0ZVJhbmdlRGF0ZURlY29yYXRvckNvbmZpZykge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5U3R5bGUgPSBkYXRhLmRpc3BsYXlTdHlsZTtcbiAgICAgICAgdGhpcy5taW5TdGFydCA9IGRhdGEubWluU3RhcnQ7XG4gICAgICAgIHRoaXMubWF4U3RhcnQgPSBkYXRhLm1heFN0YXJ0O1xuICAgICAgICB0aGlzLm1pbkVuZCA9IGRhdGEubWluRW5kO1xuICAgICAgICB0aGlzLm1heEVuZCA9IGRhdGEubWF4RW5kO1xuICAgICAgICB0aGlzLmZpbHRlciA9IGRhdGEuZmlsdGVyO1xuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyU3RhcnQgPSBkYXRhLnBsYWNlaG9sZGVyU3RhcnQgPz8gJ1N0YXJ0JztcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlckVuZCA9IGRhdGEucGxhY2Vob2xkZXJFbmQgPz8gJ0VuZCc7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBEYXRlVGltZURhdGVEZWNvcmF0b3JDb25maWcuIFNldHMgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRlVGltZURhdGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbCBleHRlbmRzIFByb3BlcnR5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgaW1wbGVtZW50cyBEYXRlVGltZURhdGVEZWNvcmF0b3JDb25maWcge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGlzcGxheVN0eWxlOiAnZGF0ZXRpbWUnO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgdGltZXM6IERyb3Bkb3duVmFsdWU8VGltZSB8IHVuZGVmaW5lZD5bXTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHRpbWVEaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWluRGF0ZT86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1heERhdGU/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBmaWx0ZXJEYXRlPzogRGF0ZUZpbHRlckZuPERhdGUgfCBudWxsIHwgdW5kZWZpbmVkPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pblRpbWU/OiAoZGF0ZT86IERhdGUpID0+IFRpbWU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXhUaW1lPzogKGRhdGU/OiBEYXRlKSA9PiBUaW1lO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZmlsdGVyVGltZT86ICgodGltZTogVGltZSkgPT4gYm9vbGVhbikgfCAoKCkgPT4gYm9vbGVhbik7XG5cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBEYXRlVGltZURhdGVEZWNvcmF0b3JDb25maWcpIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMuZGlzcGxheVN0eWxlID0gZGF0YS5kaXNwbGF5U3R5bGU7XG4gICAgICAgIHRoaXMudGltZXMgPSBkYXRhLnRpbWVzID8/IERhdGVVdGlsaXRpZXMuZ2V0RGVmYXVsdFRpbWVzKCk7XG4gICAgICAgIHRoaXMudGltZURpc3BsYXlOYW1lID0gZGF0YS50aW1lRGlzcGxheU5hbWUgPz8gJ1RpbWUnO1xuICAgICAgICB0aGlzLm1pbkRhdGUgPSBkYXRhLm1pbkRhdGU7XG4gICAgICAgIHRoaXMubWF4RGF0ZSA9IGRhdGEubWF4RGF0ZTtcbiAgICAgICAgdGhpcy5maWx0ZXJEYXRlID0gZGF0YS5maWx0ZXJEYXRlO1xuICAgICAgICB0aGlzLm1pblRpbWUgPSBkYXRhLm1pblRpbWU7XG4gICAgICAgIHRoaXMubWF4VGltZSA9IGRhdGEubWF4VGltZTtcbiAgICAgICAgdGhpcy5maWx0ZXJUaW1lID0gZGF0YS5maWx0ZXJUaW1lO1xuICAgIH1cbn0iXX0=
@@ -1,4 +1,4 @@
1
- import { EntityUtilities } from '../../classes/entity.utilities';
1
+ import { EntityUtilities } from '../../utilities/entity.utilities';
2
2
  import { baseProperty } from '../base/base-property.decorator';
3
3
  import { DecoratorTypes } from '../base/decorator-types.enum';
4
4
  import { DateRangeDateDecoratorConfigInternal, DateTimeDateDecoratorConfigInternal, DefaultDateDecoratorConfigInternal } from './date-decorator-internal.data';
@@ -19,4 +19,4 @@ export function date(metadata) {
19
19
  return baseProperty(new DateRangeDateDecoratorConfigInternal(metadata), DecoratorTypes.DATE_RANGE, [EntityUtilities.DATE_RANGE_END_KEY, EntityUtilities.DATE_RANGE_KEY, EntityUtilities.DATE_RANGE_START_KEY]);
20
20
  }
21
21
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9kZWNvcmF0b3JzL2RhdGUvZGF0ZS5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLG1DQUFtQyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHL0o7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsSUFBSSxDQUNoQixRQUFpRztJQUVqRyxJQUFJLFFBQVEsQ0FBQyxZQUFZLEtBQUssTUFBTSxFQUFFO1FBQ2xDLE9BQU8sWUFBWSxDQUFDLElBQUksa0NBQWtDLENBQUMsUUFBUSxDQUFDLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlGO1NBQ0ksSUFBSSxRQUFRLENBQUMsWUFBWSxLQUFLLFVBQVUsRUFBRTtRQUMzQyxPQUFPLFlBQVksQ0FBQyxJQUFJLG1DQUFtQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztLQUNoSTtTQUNJO1FBQ0QsT0FBTyxZQUFZLENBQ2YsSUFBSSxvQ0FBb0MsQ0FBQyxRQUFRLENBQUMsRUFDbEQsY0FBYyxDQUFDLFVBQVUsRUFDekIsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FDN0csQ0FBQztLQUNMO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eVV0aWxpdGllcyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW50aXR5LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBiYXNlUHJvcGVydHkgfSBmcm9tICcuLi9iYXNlL2Jhc2UtcHJvcGVydHkuZGVjb3JhdG9yJztcbmltcG9ydCB7IERlY29yYXRvclR5cGVzIH0gZnJvbSAnLi4vYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBEYXRlUmFuZ2VEYXRlRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwsIERhdGVUaW1lRGF0ZURlY29yYXRvckNvbmZpZ0ludGVybmFsLCBEZWZhdWx0RGF0ZURlY29yYXRvckNvbmZpZ0ludGVybmFsIH0gZnJvbSAnLi9kYXRlLWRlY29yYXRvci1pbnRlcm5hbC5kYXRhJztcbmltcG9ydCB7IERhdGVSYW5nZURhdGVEZWNvcmF0b3JDb25maWcsIERhdGVUaW1lRGF0ZURlY29yYXRvckNvbmZpZywgRGVmYXVsdERhdGVEZWNvcmF0b3JDb25maWcgfSBmcm9tICcuL2RhdGUtZGVjb3JhdG9yLmRhdGEnO1xuXG4vKipcbiAqIERlY29yYXRvciBmb3Igc2V0dGluZyBhbmQgZ2V0dGluZyBkYXRlIHByb3BlcnR5IG1ldGFkYXRhLlxuICpcbiAqIEBwYXJhbSBtZXRhZGF0YSAtIFRoZSBtZXRhZGF0YSBvZiB0aGUgZGF0ZSBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIFRoZSBtZXRob2QgdGhhdCBkZWZpbmVzIHRoZSBtZXRhZGF0YS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGUoXG4gICAgbWV0YWRhdGE6IERlZmF1bHREYXRlRGVjb3JhdG9yQ29uZmlnIHwgRGF0ZVJhbmdlRGF0ZURlY29yYXRvckNvbmZpZyB8IERhdGVUaW1lRGF0ZURlY29yYXRvckNvbmZpZ1xuKTogKHRhcmdldDogb2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSA9PiB2b2lkIHtcbiAgICBpZiAobWV0YWRhdGEuZGlzcGxheVN0eWxlID09PSAnZGF0ZScpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VQcm9wZXJ0eShuZXcgRGVmYXVsdERhdGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbChtZXRhZGF0YSksIERlY29yYXRvclR5cGVzLkRBVEUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChtZXRhZGF0YS5kaXNwbGF5U3R5bGUgPT09ICdkYXRldGltZScpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VQcm9wZXJ0eShuZXcgRGF0ZVRpbWVEYXRlRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwobWV0YWRhdGEpLCBEZWNvcmF0b3JUeXBlcy5EQVRFX1RJTUUsIFtFbnRpdHlVdGlsaXRpZXMuVElNRV9LRVldKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBiYXNlUHJvcGVydHkoXG4gICAgICAgICAgICBuZXcgRGF0ZVJhbmdlRGF0ZURlY29yYXRvckNvbmZpZ0ludGVybmFsKG1ldGFkYXRhKSxcbiAgICAgICAgICAgIERlY29yYXRvclR5cGVzLkRBVEVfUkFOR0UsXG4gICAgICAgICAgICBbRW50aXR5VXRpbGl0aWVzLkRBVEVfUkFOR0VfRU5EX0tFWSwgRW50aXR5VXRpbGl0aWVzLkRBVEVfUkFOR0VfS0VZLCBFbnRpdHlVdGlsaXRpZXMuREFURV9SQU5HRV9TVEFSVF9LRVldXG4gICAgICAgICk7XG4gICAgfVxufSJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9kZWNvcmF0b3JzL2RhdGUvZGF0ZS5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLG1DQUFtQyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHL0o7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsSUFBSSxDQUNoQixRQUFpRztJQUVqRyxJQUFJLFFBQVEsQ0FBQyxZQUFZLEtBQUssTUFBTSxFQUFFO1FBQ2xDLE9BQU8sWUFBWSxDQUFDLElBQUksa0NBQWtDLENBQUMsUUFBUSxDQUFDLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlGO1NBQ0ksSUFBSSxRQUFRLENBQUMsWUFBWSxLQUFLLFVBQVUsRUFBRTtRQUMzQyxPQUFPLFlBQVksQ0FBQyxJQUFJLG1DQUFtQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztLQUNoSTtTQUNJO1FBQ0QsT0FBTyxZQUFZLENBQ2YsSUFBSSxvQ0FBb0MsQ0FBQyxRQUFRLENBQUMsRUFDbEQsY0FBYyxDQUFDLFVBQVUsRUFDekIsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FDN0csQ0FBQztLQUNMO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eVV0aWxpdGllcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9lbnRpdHkudXRpbGl0aWVzJztcbmltcG9ydCB7IGJhc2VQcm9wZXJ0eSB9IGZyb20gJy4uL2Jhc2UvYmFzZS1wcm9wZXJ0eS5kZWNvcmF0b3InO1xuaW1wb3J0IHsgRGVjb3JhdG9yVHlwZXMgfSBmcm9tICcuLi9iYXNlL2RlY29yYXRvci10eXBlcy5lbnVtJztcbmltcG9ydCB7IERhdGVSYW5nZURhdGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbCwgRGF0ZVRpbWVEYXRlRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwsIERlZmF1bHREYXRlRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgfSBmcm9tICcuL2RhdGUtZGVjb3JhdG9yLWludGVybmFsLmRhdGEnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlRGF0ZURlY29yYXRvckNvbmZpZywgRGF0ZVRpbWVEYXRlRGVjb3JhdG9yQ29uZmlnLCBEZWZhdWx0RGF0ZURlY29yYXRvckNvbmZpZyB9IGZyb20gJy4vZGF0ZS1kZWNvcmF0b3IuZGF0YSc7XG5cbi8qKlxuICogRGVjb3JhdG9yIGZvciBzZXR0aW5nIGFuZCBnZXR0aW5nIGRhdGUgcHJvcGVydHkgbWV0YWRhdGEuXG4gKlxuICogQHBhcmFtIG1ldGFkYXRhIC0gVGhlIG1ldGFkYXRhIG9mIHRoZSBkYXRlIHByb3BlcnR5LlxuICogQHJldHVybnMgVGhlIG1ldGhvZCB0aGF0IGRlZmluZXMgdGhlIG1ldGFkYXRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZShcbiAgICBtZXRhZGF0YTogRGVmYXVsdERhdGVEZWNvcmF0b3JDb25maWcgfCBEYXRlUmFuZ2VEYXRlRGVjb3JhdG9yQ29uZmlnIHwgRGF0ZVRpbWVEYXRlRGVjb3JhdG9yQ29uZmlnXG4pOiAodGFyZ2V0OiBvYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpID0+IHZvaWQge1xuICAgIGlmIChtZXRhZGF0YS5kaXNwbGF5U3R5bGUgPT09ICdkYXRlJykge1xuICAgICAgICByZXR1cm4gYmFzZVByb3BlcnR5KG5ldyBEZWZhdWx0RGF0ZURlY29yYXRvckNvbmZpZ0ludGVybmFsKG1ldGFkYXRhKSwgRGVjb3JhdG9yVHlwZXMuREFURSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKG1ldGFkYXRhLmRpc3BsYXlTdHlsZSA9PT0gJ2RhdGV0aW1lJykge1xuICAgICAgICByZXR1cm4gYmFzZVByb3BlcnR5KG5ldyBEYXRlVGltZURhdGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbChtZXRhZGF0YSksIERlY29yYXRvclR5cGVzLkRBVEVfVElNRSwgW0VudGl0eVV0aWxpdGllcy5USU1FX0tFWV0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGJhc2VQcm9wZXJ0eShcbiAgICAgICAgICAgIG5ldyBEYXRlUmFuZ2VEYXRlRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwobWV0YWRhdGEpLFxuICAgICAgICAgICAgRGVjb3JhdG9yVHlwZXMuREFURV9SQU5HRSxcbiAgICAgICAgICAgIFtFbnRpdHlVdGlsaXRpZXMuREFURV9SQU5HRV9FTkRfS0VZLCBFbnRpdHlVdGlsaXRpZXMuREFURV9SQU5HRV9LRVksIEVudGl0eVV0aWxpdGllcy5EQVRFX1JBTkdFX1NUQVJUX0tFWV1cbiAgICAgICAgKTtcbiAgICB9XG59Il19
@@ -1,4 +1,4 @@
1
- import { EntityUtilities } from '../../classes/entity.utilities';
1
+ import { EntityUtilities } from '../../utilities/entity.utilities';
2
2
  import { baseProperty } from '../base/base-property.decorator';
3
3
  import { DecoratorTypes } from '../base/decorator-types.enum';
4
4
  import { DefaultFileDecoratorConfigInternal, ImageFileDecoratorConfigInternal } from './file-decorator-internal.data';
@@ -20,4 +20,4 @@ export function file(metadata) {
20
20
  throw new Error(`Unknown metadata type ${metadata.type}`);
21
21
  }
22
22
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9kZWNvcmF0b3JzL2ZpbGUvZmlsZS5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHdEg7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLElBQUksQ0FBQyxRQUErRDtJQUNoRixRQUFRLFFBQVEsQ0FBQyxJQUFJLEVBQUU7UUFDbkIsS0FBSyxPQUFPO1lBQ1IsT0FBTyxZQUFZLENBQ2YsSUFBSSxrQ0FBa0MsQ0FBQyxRQUFRLENBQUMsRUFDaEQsY0FBYyxDQUFDLFlBQVksRUFDM0IsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQ2xDLENBQUM7UUFDTixLQUFLLE9BQU87WUFDUixPQUFPLFlBQVksQ0FDZixJQUFJLGdDQUFnQyxDQUFDLFFBQVEsQ0FBQyxFQUM5QyxjQUFjLENBQUMsVUFBVSxFQUN6QixDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLHdCQUF3QixFQUFFLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUN0SCxDQUFDO1FBQ047WUFDSSwwR0FBMEc7WUFDMUcsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBMEIsUUFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQzFFO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eVV0aWxpdGllcyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW50aXR5LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBiYXNlUHJvcGVydHkgfSBmcm9tICcuLi9iYXNlL2Jhc2UtcHJvcGVydHkuZGVjb3JhdG9yJztcbmltcG9ydCB7IERlY29yYXRvclR5cGVzIH0gZnJvbSAnLi4vYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBEZWZhdWx0RmlsZURlY29yYXRvckNvbmZpZ0ludGVybmFsLCBJbWFnZUZpbGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbCB9IGZyb20gJy4vZmlsZS1kZWNvcmF0b3ItaW50ZXJuYWwuZGF0YSc7XG5pbXBvcnQgeyBEZWZhdWx0RmlsZURlY29yYXRvckNvbmZpZywgSW1hZ2VGaWxlRGVjb3JhdG9yQ29uZmlnIH0gZnJvbSAnLi9maWxlLWRlY29yYXRvci5kYXRhJztcblxuLyoqXG4gKiBEZWNvcmF0b3IgZm9yIHNldHRpbmcgYW5kIGdldHRpbmcgZmlsZSBwcm9wZXJ0eSBtZXRhZGF0YS5cbiAqXG4gKiBAcGFyYW0gbWV0YWRhdGEgLSBUaGUgbWV0YWRhdGEgb2YgdGhlIGZpbGUgcHJvcGVydHkuXG4gKiBAcmV0dXJucyBUaGUgbWV0aG9kIHRoYXQgZGVmaW5lcyB0aGUgbWV0YWRhdGEuXG4gKiBAdGhyb3dzIFdoZW4gYW4gdW5rbm93biBtZXRhZGF0YSB0eXBlIHdhcyBwcm92aWRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGUobWV0YWRhdGE6IERlZmF1bHRGaWxlRGVjb3JhdG9yQ29uZmlnIHwgSW1hZ2VGaWxlRGVjb3JhdG9yQ29uZmlnKTogKHRhcmdldDogb2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSA9PiB2b2lkIHtcbiAgICBzd2l0Y2ggKG1ldGFkYXRhLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnb3RoZXInOlxuICAgICAgICAgICAgcmV0dXJuIGJhc2VQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICBuZXcgRGVmYXVsdEZpbGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbChtZXRhZGF0YSksXG4gICAgICAgICAgICAgICAgRGVjb3JhdG9yVHlwZXMuRklMRV9ERUZBVUxULFxuICAgICAgICAgICAgICAgIFtFbnRpdHlVdGlsaXRpZXMuRklMRU5BTUVTX0tFWV1cbiAgICAgICAgICAgICk7XG4gICAgICAgIGNhc2UgJ2ltYWdlJzpcbiAgICAgICAgICAgIHJldHVybiBiYXNlUHJvcGVydHkoXG4gICAgICAgICAgICAgICAgbmV3IEltYWdlRmlsZURlY29yYXRvckNvbmZpZ0ludGVybmFsKG1ldGFkYXRhKSxcbiAgICAgICAgICAgICAgICBEZWNvcmF0b3JUeXBlcy5GSUxFX0lNQUdFLFxuICAgICAgICAgICAgICAgIFtFbnRpdHlVdGlsaXRpZXMuRklMRU5BTUVTX0tFWSwgRW50aXR5VXRpbGl0aWVzLk1VTFRJX1BSRVZJRVdfSU1BR0VTX0tFWSwgRW50aXR5VXRpbGl0aWVzLlNJTkdMRV9QUkVWSUVXX0lNQUdFX0tFWV1cbiAgICAgICAgICAgICk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbWV0YWRhdGEgdHlwZSAkeyhtZXRhZGF0YSBhcyBhbnkpLnR5cGV9YCk7XG4gICAgfVxufSJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9kZWNvcmF0b3JzL2ZpbGUvZmlsZS5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHdEg7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLElBQUksQ0FBQyxRQUErRDtJQUNoRixRQUFRLFFBQVEsQ0FBQyxJQUFJLEVBQUU7UUFDbkIsS0FBSyxPQUFPO1lBQ1IsT0FBTyxZQUFZLENBQ2YsSUFBSSxrQ0FBa0MsQ0FBQyxRQUFRLENBQUMsRUFDaEQsY0FBYyxDQUFDLFlBQVksRUFDM0IsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQ2xDLENBQUM7UUFDTixLQUFLLE9BQU87WUFDUixPQUFPLFlBQVksQ0FDZixJQUFJLGdDQUFnQyxDQUFDLFFBQVEsQ0FBQyxFQUM5QyxjQUFjLENBQUMsVUFBVSxFQUN6QixDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLHdCQUF3QixFQUFFLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUN0SCxDQUFDO1FBQ047WUFDSSwwR0FBMEc7WUFDMUcsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBMEIsUUFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQzFFO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eVV0aWxpdGllcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9lbnRpdHkudXRpbGl0aWVzJztcbmltcG9ydCB7IGJhc2VQcm9wZXJ0eSB9IGZyb20gJy4uL2Jhc2UvYmFzZS1wcm9wZXJ0eS5kZWNvcmF0b3InO1xuaW1wb3J0IHsgRGVjb3JhdG9yVHlwZXMgfSBmcm9tICcuLi9iYXNlL2RlY29yYXRvci10eXBlcy5lbnVtJztcbmltcG9ydCB7IERlZmF1bHRGaWxlRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwsIEltYWdlRmlsZURlY29yYXRvckNvbmZpZ0ludGVybmFsIH0gZnJvbSAnLi9maWxlLWRlY29yYXRvci1pbnRlcm5hbC5kYXRhJztcbmltcG9ydCB7IERlZmF1bHRGaWxlRGVjb3JhdG9yQ29uZmlnLCBJbWFnZUZpbGVEZWNvcmF0b3JDb25maWcgfSBmcm9tICcuL2ZpbGUtZGVjb3JhdG9yLmRhdGEnO1xuXG4vKipcbiAqIERlY29yYXRvciBmb3Igc2V0dGluZyBhbmQgZ2V0dGluZyBmaWxlIHByb3BlcnR5IG1ldGFkYXRhLlxuICpcbiAqIEBwYXJhbSBtZXRhZGF0YSAtIFRoZSBtZXRhZGF0YSBvZiB0aGUgZmlsZSBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIFRoZSBtZXRob2QgdGhhdCBkZWZpbmVzIHRoZSBtZXRhZGF0YS5cbiAqIEB0aHJvd3MgV2hlbiBhbiB1bmtub3duIG1ldGFkYXRhIHR5cGUgd2FzIHByb3ZpZGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsZShtZXRhZGF0YTogRGVmYXVsdEZpbGVEZWNvcmF0b3JDb25maWcgfCBJbWFnZUZpbGVEZWNvcmF0b3JDb25maWcpOiAodGFyZ2V0OiBvYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpID0+IHZvaWQge1xuICAgIHN3aXRjaCAobWV0YWRhdGEudHlwZSkge1xuICAgICAgICBjYXNlICdvdGhlcic6XG4gICAgICAgICAgICByZXR1cm4gYmFzZVByb3BlcnR5KFxuICAgICAgICAgICAgICAgIG5ldyBEZWZhdWx0RmlsZURlY29yYXRvckNvbmZpZ0ludGVybmFsKG1ldGFkYXRhKSxcbiAgICAgICAgICAgICAgICBEZWNvcmF0b3JUeXBlcy5GSUxFX0RFRkFVTFQsXG4gICAgICAgICAgICAgICAgW0VudGl0eVV0aWxpdGllcy5GSUxFTkFNRVNfS0VZXVxuICAgICAgICAgICAgKTtcbiAgICAgICAgY2FzZSAnaW1hZ2UnOlxuICAgICAgICAgICAgcmV0dXJuIGJhc2VQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICBuZXcgSW1hZ2VGaWxlRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwobWV0YWRhdGEpLFxuICAgICAgICAgICAgICAgIERlY29yYXRvclR5cGVzLkZJTEVfSU1BR0UsXG4gICAgICAgICAgICAgICAgW0VudGl0eVV0aWxpdGllcy5GSUxFTkFNRVNfS0VZLCBFbnRpdHlVdGlsaXRpZXMuTVVMVElfUFJFVklFV19JTUFHRVNfS0VZLCBFbnRpdHlVdGlsaXRpZXMuU0lOR0xFX1BSRVZJRVdfSU1BR0VfS0VZXVxuICAgICAgICAgICAgKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MsIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBtZXRhZGF0YSB0eXBlICR7KG1ldGFkYXRhIGFzIGFueSkudHlwZX1gKTtcbiAgICB9XG59Il19
@@ -1,4 +1,4 @@
1
- import { EntityUtilities } from '../../classes/entity.utilities';
1
+ import { EntityUtilities } from '../../utilities/entity.utilities';
2
2
  import { baseProperty } from '../base/base-property.decorator';
3
3
  import { DecoratorTypes } from '../base/decorator-types.enum';
4
4
  import { AutocompleteStringDecoratorConfigInternal, DefaultStringDecoratorConfigInternal, DropdownStringDecoratorConfigInternal, PasswordStringDecoratorConfigInternal, TextboxStringDecoratorConfigInternal } from './string-decorator-internal.data';
@@ -22,4 +22,4 @@ export function string(metadata) {
22
22
  return baseProperty(new DefaultStringDecoratorConfigInternal(metadata), DecoratorTypes.STRING);
23
23
  }
24
24
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2RlY29yYXRvcnMvc3RyaW5nL3N0cmluZy5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLG9DQUFvQyxFQUFFLHFDQUFxQyxFQUFFLHFDQUFxQyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHdlA7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUNsQixRQUM2RjtJQUU3RixRQUFRLFFBQVEsQ0FBQyxZQUFZLEVBQUU7UUFDM0IsS0FBSyxVQUFVO1lBQ1gsT0FBTyxZQUFZLENBQUMsSUFBSSxxQ0FBcUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDN0csS0FBSyxjQUFjO1lBQ2YsT0FBTyxZQUFZLENBQUMsSUFBSSx5Q0FBeUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNySCxLQUFLLFNBQVM7WUFDVixPQUFPLFlBQVksQ0FBQyxJQUFJLG9DQUFvQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzRyxLQUFLLFVBQVU7WUFDWCxPQUFPLFlBQVksQ0FDZixJQUFJLHFDQUFxQyxDQUFDLFFBQVEsQ0FBQyxFQUNuRCxjQUFjLENBQUMsZUFBZSxFQUM5QixDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUN6QyxDQUFDO1FBQ047WUFDSSxPQUFPLFlBQVksQ0FBQyxJQUFJLG9DQUFvQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN0RztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2VudGl0eS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgYmFzZVByb3BlcnR5IH0gZnJvbSAnLi4vYmFzZS9iYXNlLXByb3BlcnR5LmRlY29yYXRvcic7XG5pbXBvcnQgeyBEZWNvcmF0b3JUeXBlcyB9IGZyb20gJy4uL2Jhc2UvZGVjb3JhdG9yLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlU3RyaW5nRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwsIERlZmF1bHRTdHJpbmdEZWNvcmF0b3JDb25maWdJbnRlcm5hbCwgRHJvcGRvd25TdHJpbmdEZWNvcmF0b3JDb25maWdJbnRlcm5hbCwgUGFzc3dvcmRTdHJpbmdEZWNvcmF0b3JDb25maWdJbnRlcm5hbCwgVGV4dGJveFN0cmluZ0RlY29yYXRvckNvbmZpZ0ludGVybmFsIH0gZnJvbSAnLi9zdHJpbmctZGVjb3JhdG9yLWludGVybmFsLmRhdGEnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlU3RyaW5nRGVjb3JhdG9yQ29uZmlnLCBEZWZhdWx0U3RyaW5nRGVjb3JhdG9yQ29uZmlnLCBEcm9wZG93blN0cmluZ0RlY29yYXRvckNvbmZpZywgUGFzc3dvcmRTdHJpbmdEZWNvcmF0b3JDb25maWcsIFRleHRib3hTdHJpbmdEZWNvcmF0b3JDb25maWcgfSBmcm9tICcuL3N0cmluZy1kZWNvcmF0b3IuZGF0YSc7XG5cbi8qKlxuICogRGVjb3JhdG9yIGZvciBzZXR0aW5nIGFuZCBnZXR0aW5nIHN0cmluZyBQcm9wZXJ0eSBtZXRhZGF0YS5cbiAqXG4gKiBAcGFyYW0gbWV0YWRhdGEgLSBUaGUgbWV0YWRhdGEgb2YgdGhlIHN0cmluZyBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIFRoZSBtZXRob2QgdGhhdCBkZWZpbmVzIHRoZSBtZXRhZGF0YS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZyhcbiAgICBtZXRhZGF0YTogRHJvcGRvd25TdHJpbmdEZWNvcmF0b3JDb25maWcgfCBBdXRvY29tcGxldGVTdHJpbmdEZWNvcmF0b3JDb25maWdcbiAgICB8IERlZmF1bHRTdHJpbmdEZWNvcmF0b3JDb25maWcgfCBUZXh0Ym94U3RyaW5nRGVjb3JhdG9yQ29uZmlnIHwgUGFzc3dvcmRTdHJpbmdEZWNvcmF0b3JDb25maWdcbik6ICh0YXJnZXQ6IG9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykgPT4gdm9pZCB7XG4gICAgc3dpdGNoIChtZXRhZGF0YS5kaXNwbGF5U3R5bGUpIHtcbiAgICAgICAgY2FzZSAnZHJvcGRvd24nOlxuICAgICAgICAgICAgcmV0dXJuIGJhc2VQcm9wZXJ0eShuZXcgRHJvcGRvd25TdHJpbmdEZWNvcmF0b3JDb25maWdJbnRlcm5hbChtZXRhZGF0YSksIERlY29yYXRvclR5cGVzLlNUUklOR19EUk9QRE9XTik7XG4gICAgICAgIGNhc2UgJ2F1dG9jb21wbGV0ZSc6XG4gICAgICAgICAgICByZXR1cm4gYmFzZVByb3BlcnR5KG5ldyBBdXRvY29tcGxldGVTdHJpbmdEZWNvcmF0b3JDb25maWdJbnRlcm5hbChtZXRhZGF0YSksIERlY29yYXRvclR5cGVzLlNUUklOR19BVVRPQ09NUExFVEUpO1xuICAgICAgICBjYXNlICd0ZXh0Ym94JzpcbiAgICAgICAgICAgIHJldHVybiBiYXNlUHJvcGVydHkobmV3IFRleHRib3hTdHJpbmdEZWNvcmF0b3JDb25maWdJbnRlcm5hbChtZXRhZGF0YSksIERlY29yYXRvclR5cGVzLlNUUklOR19URVhUQk9YKTtcbiAgICAgICAgY2FzZSAncGFzc3dvcmQnOlxuICAgICAgICAgICAgcmV0dXJuIGJhc2VQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICBuZXcgUGFzc3dvcmRTdHJpbmdEZWNvcmF0b3JDb25maWdJbnRlcm5hbChtZXRhZGF0YSksXG4gICAgICAgICAgICAgICAgRGVjb3JhdG9yVHlwZXMuU1RSSU5HX1BBU1NXT1JELFxuICAgICAgICAgICAgICAgIFtFbnRpdHlVdGlsaXRpZXMuQ09ORklSTV9QQVNTV09SRF9LRVldXG4gICAgICAgICAgICApO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGJhc2VQcm9wZXJ0eShuZXcgRGVmYXVsdFN0cmluZ0RlY29yYXRvckNvbmZpZ0ludGVybmFsKG1ldGFkYXRhKSwgRGVjb3JhdG9yVHlwZXMuU1RSSU5HKTtcbiAgICB9XG59Il19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2RlY29yYXRvcnMvc3RyaW5nL3N0cmluZy5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLG9DQUFvQyxFQUFFLHFDQUFxQyxFQUFFLHFDQUFxQyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHdlA7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUNsQixRQUM2RjtJQUU3RixRQUFRLFFBQVEsQ0FBQyxZQUFZLEVBQUU7UUFDM0IsS0FBSyxVQUFVO1lBQ1gsT0FBTyxZQUFZLENBQUMsSUFBSSxxQ0FBcUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDN0csS0FBSyxjQUFjO1lBQ2YsT0FBTyxZQUFZLENBQUMsSUFBSSx5Q0FBeUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNySCxLQUFLLFNBQVM7WUFDVixPQUFPLFlBQVksQ0FBQyxJQUFJLG9DQUFvQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzRyxLQUFLLFVBQVU7WUFDWCxPQUFPLFlBQVksQ0FDZixJQUFJLHFDQUFxQyxDQUFDLFFBQVEsQ0FBQyxFQUNuRCxjQUFjLENBQUMsZUFBZSxFQUM5QixDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUN6QyxDQUFDO1FBQ047WUFDSSxPQUFPLFlBQVksQ0FBQyxJQUFJLG9DQUFvQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN0RztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZW50aXR5LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBiYXNlUHJvcGVydHkgfSBmcm9tICcuLi9iYXNlL2Jhc2UtcHJvcGVydHkuZGVjb3JhdG9yJztcbmltcG9ydCB7IERlY29yYXRvclR5cGVzIH0gZnJvbSAnLi4vYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVTdHJpbmdEZWNvcmF0b3JDb25maWdJbnRlcm5hbCwgRGVmYXVsdFN0cmluZ0RlY29yYXRvckNvbmZpZ0ludGVybmFsLCBEcm9wZG93blN0cmluZ0RlY29yYXRvckNvbmZpZ0ludGVybmFsLCBQYXNzd29yZFN0cmluZ0RlY29yYXRvckNvbmZpZ0ludGVybmFsLCBUZXh0Ym94U3RyaW5nRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgfSBmcm9tICcuL3N0cmluZy1kZWNvcmF0b3ItaW50ZXJuYWwuZGF0YSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVTdHJpbmdEZWNvcmF0b3JDb25maWcsIERlZmF1bHRTdHJpbmdEZWNvcmF0b3JDb25maWcsIERyb3Bkb3duU3RyaW5nRGVjb3JhdG9yQ29uZmlnLCBQYXNzd29yZFN0cmluZ0RlY29yYXRvckNvbmZpZywgVGV4dGJveFN0cmluZ0RlY29yYXRvckNvbmZpZyB9IGZyb20gJy4vc3RyaW5nLWRlY29yYXRvci5kYXRhJztcblxuLyoqXG4gKiBEZWNvcmF0b3IgZm9yIHNldHRpbmcgYW5kIGdldHRpbmcgc3RyaW5nIFByb3BlcnR5IG1ldGFkYXRhLlxuICpcbiAqIEBwYXJhbSBtZXRhZGF0YSAtIFRoZSBtZXRhZGF0YSBvZiB0aGUgc3RyaW5nIHByb3BlcnR5LlxuICogQHJldHVybnMgVGhlIG1ldGhvZCB0aGF0IGRlZmluZXMgdGhlIG1ldGFkYXRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nKFxuICAgIG1ldGFkYXRhOiBEcm9wZG93blN0cmluZ0RlY29yYXRvckNvbmZpZyB8IEF1dG9jb21wbGV0ZVN0cmluZ0RlY29yYXRvckNvbmZpZ1xuICAgIHwgRGVmYXVsdFN0cmluZ0RlY29yYXRvckNvbmZpZyB8IFRleHRib3hTdHJpbmdEZWNvcmF0b3JDb25maWcgfCBQYXNzd29yZFN0cmluZ0RlY29yYXRvckNvbmZpZ1xuKTogKHRhcmdldDogb2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSA9PiB2b2lkIHtcbiAgICBzd2l0Y2ggKG1ldGFkYXRhLmRpc3BsYXlTdHlsZSkge1xuICAgICAgICBjYXNlICdkcm9wZG93bic6XG4gICAgICAgICAgICByZXR1cm4gYmFzZVByb3BlcnR5KG5ldyBEcm9wZG93blN0cmluZ0RlY29yYXRvckNvbmZpZ0ludGVybmFsKG1ldGFkYXRhKSwgRGVjb3JhdG9yVHlwZXMuU1RSSU5HX0RST1BET1dOKTtcbiAgICAgICAgY2FzZSAnYXV0b2NvbXBsZXRlJzpcbiAgICAgICAgICAgIHJldHVybiBiYXNlUHJvcGVydHkobmV3IEF1dG9jb21wbGV0ZVN0cmluZ0RlY29yYXRvckNvbmZpZ0ludGVybmFsKG1ldGFkYXRhKSwgRGVjb3JhdG9yVHlwZXMuU1RSSU5HX0FVVE9DT01QTEVURSk7XG4gICAgICAgIGNhc2UgJ3RleHRib3gnOlxuICAgICAgICAgICAgcmV0dXJuIGJhc2VQcm9wZXJ0eShuZXcgVGV4dGJveFN0cmluZ0RlY29yYXRvckNvbmZpZ0ludGVybmFsKG1ldGFkYXRhKSwgRGVjb3JhdG9yVHlwZXMuU1RSSU5HX1RFWFRCT1gpO1xuICAgICAgICBjYXNlICdwYXNzd29yZCc6XG4gICAgICAgICAgICByZXR1cm4gYmFzZVByb3BlcnR5KFxuICAgICAgICAgICAgICAgIG5ldyBQYXNzd29yZFN0cmluZ0RlY29yYXRvckNvbmZpZ0ludGVybmFsKG1ldGFkYXRhKSxcbiAgICAgICAgICAgICAgICBEZWNvcmF0b3JUeXBlcy5TVFJJTkdfUEFTU1dPUkQsXG4gICAgICAgICAgICAgICAgW0VudGl0eVV0aWxpdGllcy5DT05GSVJNX1BBU1NXT1JEX0tFWV1cbiAgICAgICAgICAgICk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gYmFzZVByb3BlcnR5KG5ldyBEZWZhdWx0U3RyaW5nRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwobWV0YWRhdGEpLCBEZWNvcmF0b3JUeXBlcy5TVFJJTkcpO1xuICAgIH1cbn0iXX0=
@@ -0,0 +1,18 @@
1
+ import * as js2xml from 'js2xmlparser';
2
+ /**
3
+ * Encapsulates functionality of the js2xml package.
4
+ */
5
+ export class Js2XmlUtilities {
6
+ /**
7
+ * Returns a XML string representation of the specified object using the specified options.
8
+ *
9
+ * @param root - Name of the xml root element.
10
+ * @param value - The json value to convert. Will be a child of root.
11
+ * @param options - Additional options for the conversion.
12
+ * @returns The converted xml string.
13
+ */
14
+ static parse(root, value, options) {
15
+ return js2xml.parse(root, value, options);
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMtMi14bWwudXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvZW5jYXBzdWxhdGlvbi9qcy0yLXhtbC51dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxjQUFjLENBQUM7QUFFdkM7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGVBQWU7SUFDakM7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBWSxFQUFFLEtBQWMsRUFBRSxPQUF5QjtRQUNoRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBqczJ4bWwgZnJvbSAnanMyeG1scGFyc2VyJztcblxuLyoqXG4gKiBFbmNhcHN1bGF0ZXMgZnVuY3Rpb25hbGl0eSBvZiB0aGUganMyeG1sIHBhY2thZ2UuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBKczJYbWxVdGlsaXRpZXMge1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBYTUwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgb2JqZWN0IHVzaW5nIHRoZSBzcGVjaWZpZWQgb3B0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb290IC0gTmFtZSBvZiB0aGUgeG1sIHJvb3QgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUganNvbiB2YWx1ZSB0byBjb252ZXJ0LiBXaWxsIGJlIGEgY2hpbGQgb2Ygcm9vdC5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgdGhlIGNvbnZlcnNpb24uXG4gICAgICogQHJldHVybnMgVGhlIGNvbnZlcnRlZCB4bWwgc3RyaW5nLlxuICAgICAqL1xuICAgIHN0YXRpYyBwYXJzZShyb290OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzoganMyeG1sLklPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGpzMnhtbC5wYXJzZShyb290LCB2YWx1ZSwgb3B0aW9ucyk7XG4gICAgfVxufSJdfQ==
@@ -14,4 +14,4 @@ export class JSZipUtilities {
14
14
  return new JSZip();
15
15
  }
16
16
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianN6aXAudXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvZW5jYXBzdWxhdGlvbi9qc3ppcC51dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBSTFCLDBDQUEwQztBQUMxQywwQkFBMEI7QUFDMUI7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGNBQWM7SUFDaEM7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxHQUFHO1FBQ04sT0FBTyxJQUFJLEtBQUssRUFBZSxDQUFDO0lBQ3BDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBKU1ppcCBmcm9tICdqc3ppcCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZHVwbGljYXRlLWltcG9ydHNcbmltcG9ydCAqIGFzIEpTWmlwVHlwZSBmcm9tICdqc3ppcCc7IC8vIDwtLSBUaGlzIGlzIG5lZWRlZCB0byBwcm92aWRlIHR5cGUgc2FmZXR5LlxuXG4vLyBUT0RPOiBGaW5kIGEgd2F5IHRvIHVzZSBibG9icyB3aXRoIGplc3Rcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4vKipcbiAqIEVuY2Fwc3VsYXRlcyBKU1ppcCBmdW5jdGlvbmFsaXR5LlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSlNaaXBVdGlsaXRpZXMge1xuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIG5ldyBKU1ppcCBvYmplY3QgdGhhdCBpcyBjb3JyZWN0bHkgdHlwZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBIG5ldyBKU1ppcCBvYmplY3QuXG4gICAgICovXG4gICAgc3RhdGljIG5ldygpOiBKU1ppcFR5cGUge1xuICAgICAgICByZXR1cm4gbmV3IEpTWmlwKCkgYXMgSlNaaXBUeXBlO1xuICAgIH1cbn0iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianN6aXAudXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvZW5jYXBzdWxhdGlvbi9qc3ppcC51dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBSzFCLDBDQUEwQztBQUMxQywwQkFBMEI7QUFDMUI7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGNBQWM7SUFDaEM7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxHQUFHO1FBQ04sT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBKU1ppcCBmcm9tICdqc3ppcCc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgdHlwZSBaaXAgPSBKU1ppcDtcblxuLy8gVE9ETzogRmluZCBhIHdheSB0byB1c2UgYmxvYnMgd2l0aCBqZXN0XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuLyoqXG4gKiBFbmNhcHN1bGF0ZXMgSlNaaXAgZnVuY3Rpb25hbGl0eS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEpTWmlwVXRpbGl0aWVzIHtcbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSBuZXcgSlNaaXAgb2JqZWN0IHRoYXQgaXMgY29ycmVjdGx5IHR5cGVkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgQSBuZXcgSlNaaXAgb2JqZWN0LlxuICAgICAqL1xuICAgIHN0YXRpYyBuZXcoKTogWmlwIHtcbiAgICAgICAgcmV0dXJuIG5ldyBKU1ppcCgpO1xuICAgIH1cbn0iXX0=
@@ -71,5 +71,17 @@ export class LodashUtilities {
71
71
  static isArray(value) {
72
72
  return isArray(value);
73
73
  }
74
+ /* istanbul ignore next */
75
+ /**
76
+ * Checks if value is classified as an object that is not an array.
77
+ *
78
+ * @param value - The value to check.
79
+ * @returns Returns true if value is correctly classified, else false.
80
+ */
81
+ static isObject(value) {
82
+ return value !== null
83
+ && typeof value === 'object'
84
+ && !LodashUtilities.isArray(value);
85
+ }
74
86
  }
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9kYXNoLnV0aWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2VuY2Fwc3VsYXRpb24vbG9kYXNoLnV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFRLElBQUksRUFBRSxNQUFNLEVBQW9CLE1BQU0sUUFBUSxDQUFDO0FBRTlHOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixlQUFlO0lBRWpDOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQWMsRUFBRSxLQUFjO1FBQ3pDLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsU0FBUyxDQUFJLEtBQVE7UUFDeEIsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBc0MsTUFBNEIsRUFBRSxHQUFHLEtBQWdCO1FBQzlGLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBYztRQUN2QixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFJLE1BQXdDLEVBQUUsU0FBK0I7UUFDdEYsT0FBTyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBZTtRQUMxQixPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZURlZXAsIERpY3Rpb25hcnksIGlzQXJyYXksIGlzRXF1YWwsIGlzTmlsLCBNYW55LCBvbWl0LCBvbWl0QnksIFZhbHVlS2V5SXRlcmF0ZWUgfSBmcm9tICdsb2Rhc2gnO1xuXG4vKipcbiAqIEVuY2Fwc3VsYXRlcyBhbGwgZnVuY3Rpb25hbGl0eSBvZiBsb2Rhc2guXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMb2Rhc2hVdGlsaXRpZXMge1xuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYSBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZVxuICAgICAqIGVxdWl2YWxlbnQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2Qgc3VwcG9ydHMgY29tcGFyaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsXG4gICAgICogZGF0ZSBvYmplY3RzLCBlcnJvciBvYmplY3RzLCBtYXBzLCBudW1iZXJzLCBgT2JqZWN0YCBvYmplY3RzLCByZWdleHBzLFxuICAgICAqIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZCBhcnJheXMuIGBPYmplY3RgIG9iamVjdHMgYXJlIGNvbXBhcmVkXG4gICAgICogYnkgdGhlaXIgb3duLCBub3QgaW5oZXJpdGVkLCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuIEZ1bmN0aW9ucyBhbmQgRE9NXG4gICAgICogbm9kZXMgYXJlICoqbm90Kiogc3VwcG9ydGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIG90aGVyIC0gVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMgUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIHN0YXRpYyBpc0VxdWFsKHZhbHVlOiB1bmtub3duLCBvdGhlcjogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXNFcXVhbCh2YWx1ZSwgb3RoZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgXy5jbG9uZSBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gICAgICogQHJldHVybnMgUmV0dXJucyB0aGUgZGVlcCBjbG9uZWQgdmFsdWUuXG4gICAgICovXG4gICAgc3RhdGljIGNsb25lRGVlcDxUPih2YWx1ZTogVCk6IFQge1xuICAgICAgICByZXR1cm4gY2xvbmVEZWVwKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ucGlja2A7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZVxuICAgICAqIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcyBvZiBgb2JqZWN0YCB0aGF0IGFyZSBub3Qgb21pdHRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvYmplY3QgLSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gcGF0aHMgLSBUaGUgcHJvcGVydHkgbmFtZXMgdG8gb21pdCwgc3BlY2lmaWVkXG4gICAgICogaW5kaXZpZHVhbGx5IG9yIGluIGFycmF5cy5cbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIHN0YXRpYyBvbWl0PFQgZXh0ZW5kcyBvYmplY3QsIEsgZXh0ZW5kcyBrZXlvZiBUPihvYmplY3Q6IFQgfCBudWxsIHwgdW5kZWZpbmVkLCAuLi5wYXRoczogTWFueTxLPltdKTogT21pdDxULCBLPiB7XG4gICAgICAgIHJldHVybiBvbWl0KG9iamVjdCwgLi4ucGF0aHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG51bGxpc2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBzdGF0aWMgaXNOaWwodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGlzTmlsKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ucGlja0J5YDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlXG4gICAgICogb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBvYmplY3RgIHRoYXQgYHByZWRpY2F0ZWBcbiAgICAgKiBkb2Vzbid0IHJldHVybiB0cnV0aHkgZm9yLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9iamVjdCAtIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSBwcmVkaWNhdGUgLSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMgUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICBzdGF0aWMgb21pdEJ5PFQ+KG9iamVjdDogRGljdGlvbmFyeTxUPiB8IG51bGwgfCB1bmRlZmluZWQsIHByZWRpY2F0ZT86IFZhbHVlS2V5SXRlcmF0ZWU8VD4pOiBEaWN0aW9uYXJ5PFQ+IHtcbiAgICAgICAgcmV0dXJuIG9taXRCeShvYmplY3QsIHByZWRpY2F0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHZhbHVlIGlzIGNsYXNzaWZpZWQgYXMgYW4gQXJyYXkgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBpcyBjb3JyZWN0bHkgY2xhc3NpZmllZCwgZWxzZSBmYWxzZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgaXNBcnJheSh2YWx1ZT86IHVua25vd24pOiB2YWx1ZSBpcyB1bmtub3duW10ge1xuICAgICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSk7XG4gICAgfVxufSJdfQ==
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9kYXNoLnV0aWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2VuY2Fwc3VsYXRpb24vbG9kYXNoLnV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFRLElBQUksRUFBRSxNQUFNLEVBQW9CLE1BQU0sUUFBUSxDQUFDO0FBRTlHOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixlQUFlO0lBRWpDOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQWMsRUFBRSxLQUFjO1FBQ3pDLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsU0FBUyxDQUFJLEtBQVE7UUFDeEIsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBc0MsTUFBNEIsRUFBRSxHQUFHLEtBQWdCO1FBQzlGLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBYztRQUN2QixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFJLE1BQXdDLEVBQUUsU0FBK0I7UUFDdEYsT0FBTyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBZTtRQUMxQixPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsMEJBQTBCO0lBQzFCOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFlO1FBQzNCLE9BQU8sS0FBSyxLQUFLLElBQUk7ZUFDZCxPQUFPLEtBQUssS0FBSyxRQUFRO2VBQ3pCLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZURlZXAsIERpY3Rpb25hcnksIGlzQXJyYXksIGlzRXF1YWwsIGlzTmlsLCBNYW55LCBvbWl0LCBvbWl0QnksIFZhbHVlS2V5SXRlcmF0ZWUgfSBmcm9tICdsb2Rhc2gnO1xuXG4vKipcbiAqIEVuY2Fwc3VsYXRlcyBhbGwgZnVuY3Rpb25hbGl0eSBvZiBsb2Rhc2guXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMb2Rhc2hVdGlsaXRpZXMge1xuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYSBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZVxuICAgICAqIGVxdWl2YWxlbnQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2Qgc3VwcG9ydHMgY29tcGFyaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsXG4gICAgICogZGF0ZSBvYmplY3RzLCBlcnJvciBvYmplY3RzLCBtYXBzLCBudW1iZXJzLCBgT2JqZWN0YCBvYmplY3RzLCByZWdleHBzLFxuICAgICAqIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZCBhcnJheXMuIGBPYmplY3RgIG9iamVjdHMgYXJlIGNvbXBhcmVkXG4gICAgICogYnkgdGhlaXIgb3duLCBub3QgaW5oZXJpdGVkLCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuIEZ1bmN0aW9ucyBhbmQgRE9NXG4gICAgICogbm9kZXMgYXJlICoqbm90Kiogc3VwcG9ydGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIG90aGVyIC0gVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMgUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIHN0YXRpYyBpc0VxdWFsKHZhbHVlOiB1bmtub3duLCBvdGhlcjogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXNFcXVhbCh2YWx1ZSwgb3RoZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgXy5jbG9uZSBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gICAgICogQHJldHVybnMgUmV0dXJucyB0aGUgZGVlcCBjbG9uZWQgdmFsdWUuXG4gICAgICovXG4gICAgc3RhdGljIGNsb25lRGVlcDxUPih2YWx1ZTogVCk6IFQge1xuICAgICAgICByZXR1cm4gY2xvbmVEZWVwKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ucGlja2A7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZVxuICAgICAqIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcyBvZiBgb2JqZWN0YCB0aGF0IGFyZSBub3Qgb21pdHRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvYmplY3QgLSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gcGF0aHMgLSBUaGUgcHJvcGVydHkgbmFtZXMgdG8gb21pdCwgc3BlY2lmaWVkXG4gICAgICogaW5kaXZpZHVhbGx5IG9yIGluIGFycmF5cy5cbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIHN0YXRpYyBvbWl0PFQgZXh0ZW5kcyBvYmplY3QsIEsgZXh0ZW5kcyBrZXlvZiBUPihvYmplY3Q6IFQgfCBudWxsIHwgdW5kZWZpbmVkLCAuLi5wYXRoczogTWFueTxLPltdKTogT21pdDxULCBLPiB7XG4gICAgICAgIHJldHVybiBvbWl0KG9iamVjdCwgLi4ucGF0aHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG51bGxpc2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBzdGF0aWMgaXNOaWwodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGlzTmlsKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ucGlja0J5YDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlXG4gICAgICogb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBvYmplY3RgIHRoYXQgYHByZWRpY2F0ZWBcbiAgICAgKiBkb2Vzbid0IHJldHVybiB0cnV0aHkgZm9yLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9iamVjdCAtIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSBwcmVkaWNhdGUgLSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMgUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICBzdGF0aWMgb21pdEJ5PFQ+KG9iamVjdDogRGljdGlvbmFyeTxUPiB8IG51bGwgfCB1bmRlZmluZWQsIHByZWRpY2F0ZT86IFZhbHVlS2V5SXRlcmF0ZWU8VD4pOiBEaWN0aW9uYXJ5PFQ+IHtcbiAgICAgICAgcmV0dXJuIG9taXRCeShvYmplY3QsIHByZWRpY2F0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHZhbHVlIGlzIGNsYXNzaWZpZWQgYXMgYW4gQXJyYXkgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBpcyBjb3JyZWN0bHkgY2xhc3NpZmllZCwgZWxzZSBmYWxzZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgaXNBcnJheSh2YWx1ZT86IHVua25vd24pOiB2YWx1ZSBpcyB1bmtub3duW10ge1xuICAgICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdmFsdWUgaXMgY2xhc3NpZmllZCBhcyBhbiBvYmplY3QgdGhhdCBpcyBub3QgYW4gYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHZhbHVlIGlzIGNvcnJlY3RseSBjbGFzc2lmaWVkLCBlbHNlIGZhbHNlLlxuICAgICAqL1xuICAgIHN0YXRpYyBpc09iamVjdCh2YWx1ZT86IHVua25vd24pOiB2YWx1ZSBpcyBvYmplY3Qge1xuICAgICAgICByZXR1cm4gdmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICYmICFMb2Rhc2hVdGlsaXRpZXMuaXNBcnJheSh2YWx1ZSk7XG4gICAgfVxufSJdfQ==
@@ -4,46 +4,51 @@
4
4
  import 'reflect-metadata';
5
5
  // classes
6
6
  export * from './classes/entity.model';
7
- export * from './classes/entity.service';
8
- export * from './classes/entity.utilities';
9
- export * from './classes/date.utilities';
10
- export * from './classes/file.utilities';
11
7
  // components
12
8
  export * from './components/confirm-dialog/confirm-dialog-data';
13
9
  export * from './components/confirm-dialog/confirm-dialog.component';
14
10
  export * from './components/confirm-dialog/confirm-dialog.module';
15
- export * from './components/input/input.module';
11
+ export * from './components/edit-page/edit-page.component';
12
+ export * from './components/get-validation-error-message.function';
13
+ export * from './components/input/base-input.component';
16
14
  export * from './components/input/input.component';
17
- export * from './components/table/table-data';
18
- export * from './components/table/table.component';
19
- export * from './components/table/table.module';
15
+ export * from './components/input/input.module';
20
16
  export * from './components/table/create-dialog/create-entity-dialog-data';
21
- export * from './components/table/create-dialog/create-entity-dialog.module';
22
17
  export * from './components/table/create-dialog/create-entity-dialog.component';
23
- export * from './components/table/edit-dialog/edit-entity-dialog-data';
24
- export * from './components/table/edit-dialog/edit-entity-dialog.module';
18
+ export * from './components/table/create-dialog/create-entity-dialog.module';
19
+ export * from './components/table/edit-dialog/edit-entity-data';
25
20
  export * from './components/table/edit-dialog/edit-entity-dialog.component';
26
- export * from './components/get-validation-error-message.function';
27
- export * from './components/input/base-input.component';
21
+ export * from './components/table/edit-dialog/edit-entity-dialog.module';
22
+ export * from './components/table/table-data';
23
+ export * from './components/table/table.component';
24
+ export * from './components/table/table.module';
25
+ export * from './components/table/default.actions';
28
26
  // decorators
29
- export * from './decorators/array/array.decorator';
30
27
  export * from './decorators/array/array-decorator.data';
28
+ export * from './decorators/array/array.decorator';
31
29
  export * from './decorators/base/decorator-types.enum';
32
30
  export * from './decorators/base/dropdown-value.interface';
33
- export * from './decorators/boolean/boolean.decorator';
34
31
  export * from './decorators/boolean/boolean-decorator.data';
35
- export * from './decorators/date/date.decorator';
32
+ export * from './decorators/boolean/boolean.decorator';
33
+ export * from './decorators/custom/custom-decorator.data';
34
+ export * from './decorators/custom/custom.decorator';
36
35
  export * from './decorators/date/date-decorator.data';
37
- export * from './decorators/number/number.decorator';
36
+ export * from './decorators/date/date.decorator';
37
+ export * from './decorators/file/file-decorator.data';
38
+ export * from './decorators/file/file.decorator';
38
39
  export * from './decorators/number/number-decorator.data';
39
- export * from './decorators/object/object.decorator';
40
+ export * from './decorators/number/number.decorator';
40
41
  export * from './decorators/object/object-decorator.data';
41
- export * from './decorators/string/string.decorator';
42
- export * from './decorators/string/string-decorator.data';
43
- export * from './decorators/references-many/references-many.decorator';
42
+ export * from './decorators/object/object.decorator';
44
43
  export * from './decorators/references-many/references-many-decorator.data';
45
- export * from './decorators/file/file.decorator';
46
- export * from './decorators/file/file-decorator.data';
47
- export * from './decorators/custom/custom.decorator';
48
- export * from './decorators/custom/custom-decorator.data';
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLGtCQUFrQixDQUFDO0FBRTFCLFVBQVU7QUFDVixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMEJBQTBCLENBQUM7QUFFekMsYUFBYTtBQUNiLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLG1EQUFtRCxDQUFDO0FBRWxFLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUVuRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxpQ0FBaUMsQ0FBQztBQUVoRCxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYyxpRUFBaUUsQ0FBQztBQUVoRixjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyw2REFBNkQsQ0FBQztBQUU1RSxjQUFjLG9EQUFvRCxDQUFDO0FBRW5FLGNBQWMseUNBQXlDLENBQUM7QUFFeEQsYUFBYTtBQUNiLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyx5Q0FBeUMsQ0FBQztBQUV4RCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsNENBQTRDLENBQUM7QUFHM0QsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDZDQUE2QyxDQUFDO0FBRTVELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyx1Q0FBdUMsQ0FBQztBQUV0RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsMkNBQTJDLENBQUM7QUFFMUQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDJDQUEyQyxDQUFDO0FBRTFELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywyQ0FBMkMsQ0FBQztBQUUxRCxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsNkRBQTZELENBQUM7QUFFNUUsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywyQ0FBMkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5neC1tYXRlcmlhbC1lbnRpdHkuXG4gKi9cbmltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSc7XG5cbi8vIGNsYXNzZXNcbmV4cG9ydCAqIGZyb20gJy4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jbGFzc2VzL2VudGl0eS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY2xhc3Nlcy9lbnRpdHkudXRpbGl0aWVzJztcbmV4cG9ydCAqIGZyb20gJy4vY2xhc3Nlcy9kYXRlLnV0aWxpdGllcyc7XG5leHBvcnQgKiBmcm9tICcuL2NsYXNzZXMvZmlsZS51dGlsaXRpZXMnO1xuXG4vLyBjb21wb25lbnRzXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvdGFibGUtZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy90YWJsZS90YWJsZS5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvY3JlYXRlLWRpYWxvZy9jcmVhdGUtZW50aXR5LWRpYWxvZy1kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy90YWJsZS9jcmVhdGUtZGlhbG9nL2NyZWF0ZS1lbnRpdHktZGlhbG9nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvY3JlYXRlLWRpYWxvZy9jcmVhdGUtZW50aXR5LWRpYWxvZy5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLWRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL2VkaXQtZGlhbG9nL2VkaXQtZW50aXR5LWRpYWxvZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL2VkaXQtZGlhbG9nL2VkaXQtZW50aXR5LWRpYWxvZy5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZ2V0LXZhbGlkYXRpb24tZXJyb3ItbWVzc2FnZS5mdW5jdGlvbic7XG5cbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9pbnB1dC9iYXNlLWlucHV0LmNvbXBvbmVudCc7XG5cbi8vIGRlY29yYXRvcnNcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9hcnJheS9hcnJheS5kZWNvcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kZWNvcmF0b3JzL2FycmF5L2FycmF5LWRlY29yYXRvci5kYXRhJztcblxuZXhwb3J0ICogZnJvbSAnLi9kZWNvcmF0b3JzL2Jhc2UvZGVjb3JhdG9yLXR5cGVzLmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9kZWNvcmF0b3JzL2Jhc2UvZHJvcGRvd24tdmFsdWUuaW50ZXJmYWNlJztcbmV4cG9ydCB7IENvbCwgUG9zaXRpb24gfSBmcm9tICcuL2RlY29yYXRvcnMvYmFzZS9wcm9wZXJ0eS1kZWNvcmF0b3IuZGF0YSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9ib29sZWFuL2Jvb2xlYW4uZGVjb3JhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9ib29sZWFuL2Jvb2xlYW4tZGVjb3JhdG9yLmRhdGEnO1xuXG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvZGF0ZS9kYXRlLmRlY29yYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvZGF0ZS9kYXRlLWRlY29yYXRvci5kYXRhJztcblxuZXhwb3J0ICogZnJvbSAnLi9kZWNvcmF0b3JzL251bWJlci9udW1iZXIuZGVjb3JhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9udW1iZXIvbnVtYmVyLWRlY29yYXRvci5kYXRhJztcblxuZXhwb3J0ICogZnJvbSAnLi9kZWNvcmF0b3JzL29iamVjdC9vYmplY3QuZGVjb3JhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9vYmplY3Qvb2JqZWN0LWRlY29yYXRvci5kYXRhJztcblxuZXhwb3J0ICogZnJvbSAnLi9kZWNvcmF0b3JzL3N0cmluZy9zdHJpbmcuZGVjb3JhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9zdHJpbmcvc3RyaW5nLWRlY29yYXRvci5kYXRhJztcblxuZXhwb3J0ICogZnJvbSAnLi9kZWNvcmF0b3JzL3JlZmVyZW5jZXMtbWFueS9yZWZlcmVuY2VzLW1hbnkuZGVjb3JhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9yZWZlcmVuY2VzLW1hbnkvcmVmZXJlbmNlcy1tYW55LWRlY29yYXRvci5kYXRhJztcblxuZXhwb3J0ICogZnJvbSAnLi9kZWNvcmF0b3JzL2ZpbGUvZmlsZS5kZWNvcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kZWNvcmF0b3JzL2ZpbGUvZmlsZS1kZWNvcmF0b3IuZGF0YSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9jdXN0b20vY3VzdG9tLmRlY29yYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvY3VzdG9tL2N1c3RvbS1kZWNvcmF0b3IuZGF0YSc7Il19
44
+ export * from './decorators/references-many/references-many.decorator';
45
+ export * from './decorators/string/string-decorator.data';
46
+ export * from './decorators/string/string.decorator';
47
+ // services
48
+ export * from './services/entity.service';
49
+ export * from './services/unsaved-changes.guard';
50
+ //utilities
51
+ export * from './utilities/date.utilities';
52
+ export * from './utilities/entity.utilities';
53
+ export * from './utilities/file.utilities';
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLGtCQUFrQixDQUFDO0FBRTFCLFVBQVU7QUFDVixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGFBQWE7QUFDYixjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxhQUFhO0FBQ2IsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyw0Q0FBNEMsQ0FBQztBQUUzRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELFdBQVc7QUFDWCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsV0FBVztBQUNYLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LW1hdGVyaWFsLWVudGl0eS5cbiAqL1xuaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcblxuLy8gY2xhc3Nlc1xuZXhwb3J0ICogZnJvbSAnLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG4vLyBjb21wb25lbnRzXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2VkaXQtcGFnZS9lZGl0LXBhZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9nZXQtdmFsaWRhdGlvbi1lcnJvci1tZXNzYWdlLmZ1bmN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9pbnB1dC9iYXNlLWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9pbnB1dC9pbnB1dC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL2NyZWF0ZS1kaWFsb2cvY3JlYXRlLWVudGl0eS1kaWFsb2ctZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvY3JlYXRlLWRpYWxvZy9jcmVhdGUtZW50aXR5LWRpYWxvZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL2NyZWF0ZS1kaWFsb2cvY3JlYXRlLWVudGl0eS1kaWFsb2cubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy90YWJsZS9lZGl0LWRpYWxvZy9lZGl0LWVudGl0eS1kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy90YWJsZS9lZGl0LWRpYWxvZy9lZGl0LWVudGl0eS1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy90YWJsZS9lZGl0LWRpYWxvZy9lZGl0LWVudGl0eS1kaWFsb2cubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy90YWJsZS90YWJsZS1kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvZGVmYXVsdC5hY3Rpb25zJztcbi8vIGRlY29yYXRvcnNcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9hcnJheS9hcnJheS1kZWNvcmF0b3IuZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvYXJyYXkvYXJyYXkuZGVjb3JhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9iYXNlL2RlY29yYXRvci10eXBlcy5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9iYXNlL2Ryb3Bkb3duLXZhbHVlLmludGVyZmFjZSc7XG5leHBvcnQgeyBDb2wsIFBvc2l0aW9uIH0gZnJvbSAnLi9kZWNvcmF0b3JzL2Jhc2UvcHJvcGVydHktZGVjb3JhdG9yLmRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWNvcmF0b3JzL2Jvb2xlYW4vYm9vbGVhbi1kZWNvcmF0b3IuZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvYm9vbGVhbi9ib29sZWFuLmRlY29yYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvY3VzdG9tL2N1c3RvbS1kZWNvcmF0b3IuZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvY3VzdG9tL2N1c3RvbS5kZWNvcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kZWNvcmF0b3JzL2RhdGUvZGF0ZS1kZWNvcmF0b3IuZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvZGF0ZS9kYXRlLmRlY29yYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvZmlsZS9maWxlLWRlY29yYXRvci5kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9maWxlL2ZpbGUuZGVjb3JhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9udW1iZXIvbnVtYmVyLWRlY29yYXRvci5kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9udW1iZXIvbnVtYmVyLmRlY29yYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvb2JqZWN0L29iamVjdC1kZWNvcmF0b3IuZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMvb2JqZWN0L29iamVjdC5kZWNvcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kZWNvcmF0b3JzL3JlZmVyZW5jZXMtbWFueS9yZWZlcmVuY2VzLW1hbnktZGVjb3JhdG9yLmRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWNvcmF0b3JzL3JlZmVyZW5jZXMtbWFueS9yZWZlcmVuY2VzLW1hbnkuZGVjb3JhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9zdHJpbmcvc3RyaW5nLWRlY29yYXRvci5kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9zdHJpbmcvc3RyaW5nLmRlY29yYXRvcic7XG4vLyBzZXJ2aWNlc1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9lbnRpdHkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3Vuc2F2ZWQtY2hhbmdlcy5ndWFyZCc7XG4vL3V0aWxpdGllc1xuZXhwb3J0ICogZnJvbSAnLi91dGlsaXRpZXMvZGF0ZS51dGlsaXRpZXMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlsaXRpZXMvZW50aXR5LnV0aWxpdGllcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxpdGllcy9maWxlLnV0aWxpdGllcyc7Il19
@@ -0,0 +1,252 @@
1
+ import { BehaviorSubject, firstValueFrom } from 'rxjs';
2
+ import { DecoratorTypes } from '../decorators/base/decorator-types.enum';
3
+ import { LodashUtilities } from '../encapsulation/lodash.utilities';
4
+ import { EntityUtilities } from '../utilities/entity.utilities';
5
+ import { FileUtilities } from '../utilities/file.utilities';
6
+ /**
7
+ * A generic EntityService class.
8
+ * Offers basic CRUD-functionality.
9
+ * You should create a service for every Entity you have.
10
+ * If you extend from this you need to make sure that the extended Service can be injected.
11
+ */
12
+ export class EntityService {
13
+ constructor(http) {
14
+ this.http = http;
15
+ /**
16
+ * The route segment that comes before the id when editing an entity in a separate page.
17
+ */
18
+ this.editBaseRoute = 'entities';
19
+ /**
20
+ * The key which holds the id value.
21
+ *
22
+ * @default 'id'
23
+ */
24
+ this.idKey = 'id';
25
+ /**
26
+ * A subject of all the entity values.
27
+ * Can be subscribed to when you want to do a specific thing whenever the entities change.
28
+ */
29
+ this.entitiesSubject = new BehaviorSubject([]);
30
+ /**
31
+ * A subject of all the entity values.
32
+ * Can be subscribed to when you want to do a specific thing whenever the entities change.
33
+ */
34
+ this.READ_EXPIRATION_IN_MS = 900000;
35
+ }
36
+ /**
37
+ * Gets the entities in an array from the internal entitiesSubject.
38
+ *
39
+ * @returns The current entities in form of an array.
40
+ */
41
+ get entities() {
42
+ return this.entitiesSubject.value;
43
+ }
44
+ /**
45
+ * Creates a new Entity and pushes it to the entities array.
46
+ *
47
+ * @param entity - The data of the entity to create.
48
+ * All values that should be omitted will be removed from it inside this method.
49
+ * @returns A Promise of the created entity.
50
+ */
51
+ async create(entity) {
52
+ const body = LodashUtilities.omit(entity, EntityUtilities.getOmitForCreate(entity));
53
+ const filePropertyKeys = EntityUtilities.getFileProperties(entity);
54
+ if (!filePropertyKeys.length) {
55
+ return await this.createWithJson(body);
56
+ }
57
+ else {
58
+ return await this.createWithFormData(body, filePropertyKeys, entity);
59
+ }
60
+ }
61
+ // TODO: Find a way to use blobs with jest
62
+ /* istanbul ignore next */
63
+ /**
64
+ * Imports everything from the provided json file.
65
+ *
66
+ * @param file - The json file to import from.
67
+ * @returns All entities that have been imported.
68
+ */
69
+ async import(file) {
70
+ const formData = new FormData();
71
+ formData.append('import', file);
72
+ const result = await firstValueFrom(this.http.post(`${this.baseUrl}/import`, formData));
73
+ this.entities.push(...result);
74
+ this.entitiesSubject.next(this.entities);
75
+ return result;
76
+ }
77
+ // TODO: Find a way to use blobs with jest
78
+ /* istanbul ignore next */
79
+ /**
80
+ * Creates the entity with form data when the entity contains files in contrast to creating it with a normal json body.
81
+ * All file values are stored inside their respective property key and their name.
82
+ * Form data is able to handle setting multiple files to the same key.
83
+ *
84
+ * @param body - The body Of the request.
85
+ * @param filePropertyKeys - All property keys that are files and need to be added to the form data.
86
+ * @param entity - The entity to create. This is needed in addition to the body because the body doesn't contain any metadata.
87
+ * @returns The created entity from the server.
88
+ */
89
+ async createWithFormData(body, filePropertyKeys, entity) {
90
+ const formData = new FormData();
91
+ formData.append('body', JSON.stringify(LodashUtilities.omit(body, filePropertyKeys)));
92
+ for (const key of filePropertyKeys) {
93
+ if (EntityUtilities.getPropertyMetadata(entity, key, DecoratorTypes.FILE_DEFAULT).multiple) {
94
+ const fileDataValues = body[key];
95
+ for (const value of fileDataValues) {
96
+ formData.append(key, (await FileUtilities.getFileData(value)).file, value.name);
97
+ }
98
+ }
99
+ else {
100
+ const fileData = body[key];
101
+ formData.append(key, (await FileUtilities.getFileData(fileData)).file, fileData.name);
102
+ }
103
+ }
104
+ const e = await firstValueFrom(this.http.post(this.baseUrl, formData));
105
+ if (!e) {
106
+ throw new Error(`
107
+ The created entity was not returned in the response.
108
+ If you want to provide a logic that allows that
109
+ you need to override the create methods of this class.
110
+ `);
111
+ }
112
+ this.entities.push(e);
113
+ this.entitiesSubject.next(this.entities);
114
+ return e;
115
+ }
116
+ /**
117
+ * Creates the entity with a normal json body in contrast to creating it with form data when the entity contains files.
118
+ *
119
+ * @param body - The body Of the request.
120
+ * @returns The created entity from the server.
121
+ */
122
+ async createWithJson(body) {
123
+ const e = await firstValueFrom(this.http.post(this.baseUrl, body));
124
+ if (!e) {
125
+ throw new Error(`
126
+ The created entity was not returned in the response.
127
+ If you want to provide a logic that allows that
128
+ you need to override the create methods of this class.
129
+ `);
130
+ }
131
+ this.entities.push(e);
132
+ this.entitiesSubject.next(this.entities);
133
+ return e;
134
+ }
135
+ /**
136
+ * Gets all existing entities and pushes them to the entities array.
137
+ *
138
+ * @returns A Promise of all received Entities.
139
+ */
140
+ async read() {
141
+ const e = await firstValueFrom(this.http.get(this.baseUrl));
142
+ this.entitiesSubject.next(e);
143
+ this.lastRead = new Date();
144
+ return e;
145
+ }
146
+ /**
147
+ * Tries to find an entity with the given id.
148
+ *
149
+ * @param id - The id of the entity to find.
150
+ * @returns The found entity.
151
+ */
152
+ async findById(id) {
153
+ if (this.lastRead == null
154
+ || (new Date().getTime() - this.lastRead.getTime()) > this.READ_EXPIRATION_IN_MS) {
155
+ return firstValueFrom(this.http.get(`${this.baseUrl}/${id}`));
156
+ }
157
+ return this.entities.find(e => e[this.idKey] === id) ?? firstValueFrom(this.http.get(`${this.baseUrl}/${id}`));
158
+ }
159
+ /**
160
+ * Updates a specific Entity.
161
+ *
162
+ * @param entity - The updated Entity
163
+ * All values that should be omitted will be removed from it inside this method.
164
+ * @param entityPriorChanges - The current Entity.
165
+ * It Is used to get changed values and only update them instead of sending the whole entity data.
166
+ */
167
+ async update(entity, entityPriorChanges) {
168
+ const body = LodashUtilities.omit(await EntityUtilities.difference(entity, entityPriorChanges), EntityUtilities.getOmitForUpdate(entity));
169
+ const filePropertyKeys = EntityUtilities.getFileProperties(entityPriorChanges);
170
+ if (!filePropertyKeys.length) {
171
+ await this.updateWithJson(body, entityPriorChanges[this.idKey]);
172
+ }
173
+ else {
174
+ await this.updateWithFormData(body, filePropertyKeys, entity, entityPriorChanges[this.idKey]);
175
+ }
176
+ }
177
+ // TODO: Find a way to use blobs with jest
178
+ /* istanbul ignore next */
179
+ /**
180
+ * Updates the entity with form data when the entity contains files in contrast to creating it with a normal json body.
181
+ * All file values are stored inside their respective property key and their name.
182
+ * Form data is able to handle setting multiple files to the same key.
183
+ *
184
+ * @param body - The request body. Already contains only properties that have changed.
185
+ * @param filePropertyKeys - The keys of all properties which are files and need to separately be appended to the form data.
186
+ * @param entity - The original entity. Is needed to get the metadata of all the files.
187
+ * @param id - The id of the entity to update.
188
+ */
189
+ async updateWithFormData(body, filePropertyKeys, entity, id) {
190
+ const formData = new FormData();
191
+ formData.append('body', JSON.stringify(LodashUtilities.omitBy(body, LodashUtilities.isNil)));
192
+ for (const key of filePropertyKeys) {
193
+ if (EntityUtilities.getPropertyMetadata(entity, key, DecoratorTypes.FILE_DEFAULT).multiple) {
194
+ const fileDataValues = body[key];
195
+ for (const value of fileDataValues) {
196
+ formData.append(key, (await FileUtilities.getFileData(value)).file, value.name);
197
+ }
198
+ }
199
+ else {
200
+ const fileData = body[key];
201
+ formData.append(key, (await FileUtilities.getFileData(fileData)).file, fileData.name);
202
+ }
203
+ }
204
+ const updatedEntity = await firstValueFrom(this.http.patch(`${this.baseUrl}/${id}`, formData));
205
+ if (!updatedEntity) {
206
+ // eslint-disable-next-line no-console
207
+ console.warn('The updated entity was not returned in the response. Applying the changes from the request body.');
208
+ for (const key in body) {
209
+ this.entities[this.entities.findIndex(e => e[this.idKey] === id)][key]
210
+ = body[key];
211
+ }
212
+ this.entitiesSubject.next(this.entities);
213
+ return;
214
+ }
215
+ this.entities[this.entities.findIndex(e => e[this.idKey] === id)] = updatedEntity;
216
+ this.entitiesSubject.next(this.entities);
217
+ }
218
+ /**
219
+ * Updates the entity with a normal json body in contrast to updating it with form data when the entity contains files.
220
+ *
221
+ * @param body - The body of the Request. Has already removed all unnecessary values.
222
+ * @param id - The id of the entity to update.
223
+ */
224
+ async updateWithJson(body, id) {
225
+ const updatedEntity = await firstValueFrom(this.http.patch(`${this.baseUrl}/${id}`, LodashUtilities.omitBy(body, LodashUtilities.isNil)));
226
+ if (!updatedEntity) {
227
+ // eslint-disable-next-line no-console
228
+ console.warn('The updated entity was not returned in the response. Applying the changes from the request body.');
229
+ const foundEntity = this.entities[this.entities.findIndex(e => e[this.idKey] === id)];
230
+ for (const key in body) {
231
+ foundEntity[key]
232
+ = body[key];
233
+ }
234
+ this.entitiesSubject.next(this.entities);
235
+ return;
236
+ }
237
+ this.entities[this.entities.findIndex(e => e[this.idKey] === id)] = updatedEntity;
238
+ this.entitiesSubject.next(this.entities);
239
+ }
240
+ /**
241
+ * Deletes a specific Entity.
242
+ *
243
+ * @param entity - The entity to delete.
244
+ */
245
+ async delete(entity) {
246
+ await firstValueFrom(this.http.delete(`${this.baseUrl}/${entity[this.idKey]}`));
247
+ // the == comparison instead of === is to catch ids that are numbers.
248
+ this.entities.splice(this.entities.findIndex(e => e[this.idKey] === entity[this.idKey]), 1);
249
+ this.entitiesSubject.next(this.entities);
250
+ }
251
+ }
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9zZXJ2aWNlcy9lbnRpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQWdCLGFBQWE7SUFtRC9CLFlBQTZCLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFwQzdDOztXQUVHO1FBQ00sa0JBQWEsR0FBVyxVQUFVLENBQUM7UUFFNUM7Ozs7V0FJRztRQUNNLFVBQUssR0FBcUIsSUFBd0IsQ0FBQztRQUU1RDs7O1dBR0c7UUFDTSxvQkFBZSxHQUFrQyxJQUFJLGVBQWUsQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUdoRzs7O1dBR0c7UUFDZ0IsMEJBQXFCLEdBQVcsTUFBTSxDQUFDO0lBYVYsQ0FBQztJQVhqRDs7OztPQUlHO0lBQ0gsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBTUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFrQjtRQUMzQixNQUFNLElBQUksR0FBd0IsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUF3QixDQUFDO1FBQ2hJLE1BQU0sZ0JBQWdCLEdB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S0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BCLFdBQVcsQ0FBQyxHQUFHLENBQUM7c0JBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBa0QsQ0FBQzthQUNwRTtZQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQztRQUNsRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQWtCO1FBQzNCLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLHFFQUFxRTtRQUNyRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBEZWNvcmF0b3JUeXBlcyB9IGZyb20gJy4uL2RlY29yYXRvcnMvYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBGaWxlRGF0YSB9IGZyb20gJy4uL2RlY29yYXRvcnMvZmlsZS9maWxlLWRlY29yYXRvci5kYXRhJztcbmltcG9ydCB7IExvZGFzaFV0aWxpdGllcyB9IGZyb20gJy4uL2VuY2Fwc3VsYXRpb24vbG9kYXNoLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBFbnRpdHlVdGlsaXRpZXMgfSBmcm9tICcuLi91dGlsaXRpZXMvZW50aXR5LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBGaWxlVXRpbGl0aWVzIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2ZpbGUudXRpbGl0aWVzJztcblxuLyoqXG4gKiBBIGdlbmVyaWMgRW50aXR5U2VydmljZSBjbGFzcy5cbiAqIE9mZmVycyBiYXNpYyBDUlVELWZ1bmN0aW9uYWxpdHkuXG4gKiBZb3Ugc2hvdWxkIGNyZWF0ZSBhIHNlcnZpY2UgZm9yIGV2ZXJ5IEVudGl0eSB5b3UgaGF2ZS5cbiAqIElmIHlvdSBleHRlbmQgZnJvbSB0aGlzIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBleHRlbmRlZCBTZXJ2aWNlIGNhbiBiZSBpbmplY3RlZC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiB7XG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgdXJsIHVzZWQgZm9yIGFwaSByZXF1ZXN0cy4gSWYgdSB3YW50IHRvIGhhdmUgbW9yZSBjb250cm9sIG92ZXIgdGhpcyxcbiAgICAgKiB5b3UgY2FuIG92ZXJyaWRlIHRoZSBjcmVhdGUsIHJlYWQsIHVwZGF0ZSBhbmQgZGVsZXRlIG1ldGhvZHMuXG4gICAgICpcbiAgICAgKiBDcmVhdGUgU2VuZHMgYSBQT1NULVJlcXVlc3QgdG8gYmFzZVVybC5cbiAgICAgKlxuICAgICAqIFJlYWQgU2VuZHMgYSBHRVQtUmVxdWVzdCB0byBiYXNlVXJsLlxuICAgICAqXG4gICAgICogVXBkYXRlIFNlbmRzIGEgUEFUQ0gtUmVxdWVzdCB0byBiYXNlVXJsL3tpZH0uXG4gICAgICpcbiAgICAgKiBEZWxldGUgU2VuZHMgYSBERUwtUmVxdWVzdCB0byBiYXNlVXJsL3tpZH0uXG4gICAgICovXG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHJvdXRlIHNlZ21lbnQgdGhhdCBjb21lcyBiZWZvcmUgdGhlIGlkIHdoZW4gZWRpdGluZyBhbiBlbnRpdHkgaW4gYSBzZXBhcmF0ZSBwYWdlLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGVkaXRCYXNlUm91dGU6IHN0cmluZyA9ICdlbnRpdGllcyc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUga2V5IHdoaWNoIGhvbGRzIHRoZSBpZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdpZCdcbiAgICAgKi9cbiAgICByZWFkb25seSBpZEtleToga2V5b2YgRW50aXR5VHlwZSA9ICdpZCcgYXMga2V5b2YgRW50aXR5VHlwZTtcblxuICAgIC8qKlxuICAgICAqIEEgc3ViamVjdCBvZiBhbGwgdGhlIGVudGl0eSB2YWx1ZXMuXG4gICAgICogQ2FuIGJlIHN1YnNjcmliZWQgdG8gd2hlbiB5b3Ugd2FudCB0byBkbyBhIHNwZWNpZmljIHRoaW5nIHdoZW5ldmVyIHRoZSBlbnRpdGllcyBjaGFuZ2UuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZW50aXRpZXNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8RW50aXR5VHlwZVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RW50aXR5VHlwZVtdPihbXSk7XG5cblxuICAgIC8qKlxuICAgICAqIEEgc3ViamVjdCBvZiBhbGwgdGhlIGVudGl0eSB2YWx1ZXMuXG4gICAgICogQ2FuIGJlIHN1YnNjcmliZWQgdG8gd2hlbiB5b3Ugd2FudCB0byBkbyBhIHNwZWNpZmljIHRoaW5nIHdoZW5ldmVyIHRoZSBlbnRpdGllcyBjaGFuZ2UuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IFJFQURfRVhQSVJBVElPTl9JTl9NUzogbnVtYmVyID0gOTAwMDAwO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZW50aXRpZXMgaW4gYW4gYXJyYXkgZnJvbSB0aGUgaW50ZXJuYWwgZW50aXRpZXNTdWJqZWN0LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgZW50aXRpZXMgaW4gZm9ybSBvZiBhbiBhcnJheS5cbiAgICAgKi9cbiAgICBnZXQgZW50aXRpZXMoKTogRW50aXR5VHlwZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXRpZXNTdWJqZWN0LnZhbHVlO1xuICAgIH1cblxuICAgIGxhc3RSZWFkPzogRGF0ZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCkge31cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgRW50aXR5IGFuZCBwdXNoZXMgaXQgdG8gdGhlIGVudGl0aWVzIGFycmF5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGVudGl0eSAtIFRoZSBkYXRhIG9mIHRoZSBlbnRpdHkgdG8gY3JlYXRlLlxuICAgICAqIEFsbCB2YWx1ZXMgdGhhdCBzaG91bGQgYmUgb21pdHRlZCB3aWxsIGJlIHJlbW92ZWQgZnJvbSBpdCBpbnNpZGUgdGhpcyBtZXRob2QuXG4gICAgICogQHJldHVybnMgQSBQcm9taXNlIG9mIHRoZSBjcmVhdGVkIGVudGl0eS5cbiAgICAgKi9cbiAgICBhc3luYyBjcmVhdGUoZW50aXR5OiBFbnRpdHlUeXBlKTogUHJvbWlzZTxFbnRpdHlUeXBlPiB7XG4gICAgICAgIGNvbnN0IGJvZHk6IFBhcnRpYWw8RW50aXR5VHlwZT4gPSBMb2Rhc2hVdGlsaXRpZXMub21pdChlbnRpdHksIEVudGl0eVV0aWxpdGllcy5nZXRPbWl0Rm9yQ3JlYXRlKGVudGl0eSkpIGFzIFBhcnRpYWw8RW50aXR5VHlwZT47XG4gICAgICAgIGNvbnN0IGZpbGVQcm9wZXJ0eUtleXM6IChrZXlvZiBFbnRpdHlUeXBlKVtdID0gRW50aXR5VXRpbGl0aWVzLmdldEZpbGVQcm9wZXJ0aWVzKGVudGl0eSk7XG4gICAgICAgIGlmICghZmlsZVByb3BlcnR5S2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNyZWF0ZVdpdGhKc29uKGJvZHkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY3JlYXRlV2l0aEZvcm1EYXRhKGJvZHksIGZpbGVQcm9wZXJ0eUtleXMsIGVudGl0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBGaW5kIGEgd2F5IHRvIHVzZSBibG9icyB3aXRoIGplc3RcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIC8qKlxuICAgICAqIEltcG9ydHMgZXZlcnl0aGluZyBmcm9tIHRoZSBwcm92aWRlZCBqc29uIGZpbGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSAtIFRoZSBqc29uIGZpbGUgdG8gaW1wb3J0IGZyb20uXG4gICAgICogQHJldHVybnMgQWxsIGVudGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGltcG9ydGVkLlxuICAgICAqL1xuICAgIGFzeW5jIGltcG9ydChmaWxlOiBGaWxlKTogUHJvbWlzZTxFbnRpdHlUeXBlW10+IHtcbiAgICAgICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnaW1wb3J0JywgZmlsZSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogRW50aXR5VHlwZVtdID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3Q8RW50aXR5VHlwZVtdPihgJHt0aGlzLmJhc2VVcmx9L2ltcG9ydGAsIGZvcm1EYXRhKSk7XG4gICAgICAgIHRoaXMuZW50aXRpZXMucHVzaCguLi5yZXN1bHQpO1xuICAgICAgICB0aGlzLmVudGl0aWVzU3ViamVjdC5uZXh0KHRoaXMuZW50aXRpZXMpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIFRPRE86IEZpbmQgYSB3YXkgdG8gdXNlIGJsb2JzIHdpdGggamVzdFxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyB0aGUgZW50aXR5IHdpdGggZm9ybSBkYXRhIHdoZW4gdGhlIGVudGl0eSBjb250YWlucyBmaWxlcyBpbiBjb250cmFzdCB0byBjcmVhdGluZyBpdCB3aXRoIGEgbm9ybWFsIGpzb24gYm9keS5cbiAgICAgKiBBbGwgZmlsZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbnNpZGUgdGhlaXIgcmVzcGVjdGl2ZSBwcm9wZXJ0eSBrZXkgYW5kIHRoZWlyIG5hbWUuXG4gICAgICogRm9ybSBkYXRhIGlzIGFibGUgdG8gaGFuZGxlIHNldHRpbmcgbXVsdGlwbGUgZmlsZXMgdG8gdGhlIHNhbWUga2V5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGJvZHkgLSBUaGUgYm9keSBPZiB0aGUgcmVxdWVzdC5cbiAgICAgKiBAcGFyYW0gZmlsZVByb3BlcnR5S2V5cyAtIEFsbCBwcm9wZXJ0eSBrZXlzIHRoYXQgYXJlIGZpbGVzIGFuZCBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSBmb3JtIGRhdGEuXG4gICAgICogQHBhcmFtIGVudGl0eSAtIFRoZSBlbnRpdHkgdG8gY3JlYXRlLiBUaGlzIGlzIG5lZWRlZCBpbiBhZGRpdGlvbiB0byB0aGUgYm9keSBiZWNhdXNlIHRoZSBib2R5IGRvZXNuJ3QgY29udGFpbiBhbnkgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgZW50aXR5IGZyb20gdGhlIHNlcnZlci5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlV2l0aEZvcm1EYXRhKFxuICAgICAgICBib2R5OiBQYXJ0aWFsPEVudGl0eVR5cGU+LFxuICAgICAgICBmaWxlUHJvcGVydHlLZXlzOiAoa2V5b2YgRW50aXR5VHlwZSlbXSxcbiAgICAgICAgZW50aXR5OiBFbnRpdHlUeXBlXG4gICAgKTogUHJvbWlzZTxFbnRpdHlUeXBlPiB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2JvZHknLCBKU09OLnN0cmluZ2lmeShMb2Rhc2hVdGlsaXRpZXMub21pdChib2R5LCBmaWxlUHJvcGVydHlLZXlzKSkpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBmaWxlUHJvcGVydHlLZXlzKSB7XG4gICAgICAgICAgICBpZiAoRW50aXR5VXRpbGl0aWVzLmdldFByb3BlcnR5TWV0YWRhdGEoZW50aXR5LCBrZXksIERlY29yYXRvclR5cGVzLkZJTEVfREVGQVVMVCkubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlRGF0YVZhbHVlczogRmlsZURhdGFbXSA9IGJvZHlba2V5XSBhcyBGaWxlRGF0YVtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgZmlsZURhdGFWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSBhcyBzdHJpbmcsIChhd2FpdCBGaWxlVXRpbGl0aWVzLmdldEZpbGVEYXRhKHZhbHVlKSkuZmlsZSwgdmFsdWUubmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZURhdGE6IEZpbGVEYXRhID0gYm9keVtrZXldIGFzIEZpbGVEYXRhO1xuICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXkgYXMgc3RyaW5nLCAoYXdhaXQgRmlsZVV0aWxpdGllcy5nZXRGaWxlRGF0YShmaWxlRGF0YSkpLmZpbGUsIGZpbGVEYXRhLm5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGU6IEVudGl0eVR5cGUgfCB1bmRlZmluZWQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdDxFbnRpdHlUeXBlIHwgdW5kZWZpbmVkPih0aGlzLmJhc2VVcmwsIGZvcm1EYXRhKSk7XG4gICAgICAgIGlmICghZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcbiAgICAgICAgICAgICAgICBUaGUgY3JlYXRlZCBlbnRpdHkgd2FzIG5vdCByZXR1cm5lZCBpbiB0aGUgcmVzcG9uc2UuXG4gICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gcHJvdmlkZSBhIGxvZ2ljIHRoYXQgYWxsb3dzIHRoYXRcbiAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBvdmVycmlkZSB0aGUgY3JlYXRlIG1ldGhvZHMgb2YgdGhpcyBjbGFzcy5cbiAgICAgICAgICAgIGApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW50aXRpZXMucHVzaChlKTtcbiAgICAgICAgdGhpcy5lbnRpdGllc1N1YmplY3QubmV4dCh0aGlzLmVudGl0aWVzKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyB0aGUgZW50aXR5IHdpdGggYSBub3JtYWwganNvbiBib2R5IGluIGNvbnRyYXN0IHRvIGNyZWF0aW5nIGl0IHdpdGggZm9ybSBkYXRhIHdoZW4gdGhlIGVudGl0eSBjb250YWlucyBmaWxlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBib2R5IC0gVGhlIGJvZHkgT2YgdGhlIHJlcXVlc3QuXG4gICAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgZW50aXR5IGZyb20gdGhlIHNlcnZlci5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlV2l0aEpzb24oYm9keTogUGFydGlhbDxFbnRpdHlUeXBlPik6IFByb21pc2U8RW50aXR5VHlwZT4ge1xuICAgICAgICBjb25zdCBlOiBFbnRpdHlUeXBlIHwgdW5kZWZpbmVkID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3Q8RW50aXR5VHlwZSB8IHVuZGVmaW5lZD4odGhpcy5iYXNlVXJsLCBib2R5KSk7XG4gICAgICAgIGlmICghZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcbiAgICAgICAgICAgICAgICBUaGUgY3JlYXRlZCBlbnRpdHkgd2FzIG5vdCByZXR1cm5lZCBpbiB0aGUgcmVzcG9uc2UuXG4gICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gcHJvdmlkZSBhIGxvZ2ljIHRoYXQgYWxsb3dzIHRoYXRcbiAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBvdmVycmlkZSB0aGUgY3JlYXRlIG1ldGhvZHMgb2YgdGhpcyBjbGFzcy5cbiAgICAgICAgICAgIGApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW50aXRpZXMucHVzaChlKTtcbiAgICAgICAgdGhpcy5lbnRpdGllc1N1YmplY3QubmV4dCh0aGlzLmVudGl0aWVzKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgZXhpc3RpbmcgZW50aXRpZXMgYW5kIHB1c2hlcyB0aGVtIHRvIHRoZSBlbnRpdGllcyBhcnJheS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgUHJvbWlzZSBvZiBhbGwgcmVjZWl2ZWQgRW50aXRpZXMuXG4gICAgICovXG4gICAgYXN5bmMgcmVhZCgpOiBQcm9taXNlPEVudGl0eVR5cGVbXT4ge1xuICAgICAgICBjb25zdCBlOiBFbnRpdHlUeXBlW10gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PEVudGl0eVR5cGVbXT4odGhpcy5iYXNlVXJsKSk7XG4gICAgICAgIHRoaXMuZW50aXRpZXNTdWJqZWN0Lm5leHQoZSk7XG4gICAgICAgIHRoaXMubGFzdFJlYWQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmllcyB0byBmaW5kIGFuIGVudGl0eSB3aXRoIHRoZSBnaXZlbiBpZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgZW50aXR5IHRvIGZpbmQuXG4gICAgICogQHJldHVybnMgVGhlIGZvdW5kIGVudGl0eS5cbiAgICAgKi9cbiAgICBhc3luYyBmaW5kQnlJZChpZDogRW50aXR5VHlwZVtrZXlvZiBFbnRpdHlUeXBlXSk6IFByb21pc2U8RW50aXR5VHlwZT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmxhc3RSZWFkID09IG51bGxcbiAgICAgICAgICAgIHx8IChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMubGFzdFJlYWQuZ2V0VGltZSgpKSA+IHRoaXMuUkVBRF9FWFBJUkFUSU9OX0lOX01TXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8RW50aXR5VHlwZT4oYCR7dGhpcy5iYXNlVXJsfS8ke2lkfWApKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lbnRpdGllcy5maW5kKGUgPT4gZVt0aGlzLmlkS2V5XSA9PT0gaWQpID8/IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8RW50aXR5VHlwZT4oYCR7dGhpcy5iYXNlVXJsfS8ke2lkfWApKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIGEgc3BlY2lmaWMgRW50aXR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGVudGl0eSAtIFRoZSB1cGRhdGVkIEVudGl0eVxuICAgICAqIEFsbCB2YWx1ZXMgdGhhdCBzaG91bGQgYmUgb21pdHRlZCB3aWxsIGJlIHJlbW92ZWQgZnJvbSBpdCBpbnNpZGUgdGhpcyBtZXRob2QuXG4gICAgICogQHBhcmFtIGVudGl0eVByaW9yQ2hhbmdlcyAtIFRoZSBjdXJyZW50IEVudGl0eS5cbiAgICAgKiBJdCBJcyB1c2VkIHRvIGdldCBjaGFuZ2VkIHZhbHVlcyBhbmQgb25seSB1cGRhdGUgdGhlbSBpbnN0ZWFkIG9mIHNlbmRpbmcgdGhlIHdob2xlIGVudGl0eSBkYXRhLlxuICAgICAqL1xuICAgIGFzeW5jIHVwZGF0ZShlbnRpdHk6IEVudGl0eVR5cGUsIGVudGl0eVByaW9yQ2hhbmdlczogRW50aXR5VHlwZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBib2R5OiBQYXJ0aWFsPEVudGl0eVR5cGU+ID0gTG9kYXNoVXRpbGl0aWVzLm9taXQoXG4gICAgICAgICAgICBhd2FpdCBFbnRpdHlVdGlsaXRpZXMuZGlmZmVyZW5jZShlbnRpdHksIGVudGl0eVByaW9yQ2hhbmdlcyksXG4gICAgICAgICAgICBFbnRpdHlVdGlsaXRpZXMuZ2V0T21pdEZvclVwZGF0ZShlbnRpdHkpXG4gICAgICAgICkgYXMgdW5rbm93biBhcyBQYXJ0aWFsPEVudGl0eVR5cGU+O1xuICAgICAgICBjb25zdCBmaWxlUHJvcGVydHlLZXlzOiAoa2V5b2YgRW50aXR5VHlwZSlbXSA9IEVudGl0eVV0aWxpdGllcy5nZXRGaWxlUHJvcGVydGllcyhlbnRpdHlQcmlvckNoYW5nZXMpO1xuICAgICAgICBpZiAoIWZpbGVQcm9wZXJ0eUtleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZVdpdGhKc29uKGJvZHksIGVudGl0eVByaW9yQ2hhbmdlc1t0aGlzLmlkS2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZVdpdGhGb3JtRGF0YShib2R5LCBmaWxlUHJvcGVydHlLZXlzLCBlbnRpdHksIGVudGl0eVByaW9yQ2hhbmdlc1t0aGlzLmlkS2V5XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBGaW5kIGEgd2F5IHRvIHVzZSBibG9icyB3aXRoIGplc3RcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIGVudGl0eSB3aXRoIGZvcm0gZGF0YSB3aGVuIHRoZSBlbnRpdHkgY29udGFpbnMgZmlsZXMgaW4gY29udHJhc3QgdG8gY3JlYXRpbmcgaXQgd2l0aCBhIG5vcm1hbCBqc29uIGJvZHkuXG4gICAgICogQWxsIGZpbGUgdmFsdWVzIGFyZSBzdG9yZWQgaW5zaWRlIHRoZWlyIHJlc3BlY3RpdmUgcHJvcGVydHkga2V5IGFuZCB0aGVpciBuYW1lLlxuICAgICAqIEZvcm0gZGF0YSBpcyBhYmxlIHRvIGhhbmRsZSBzZXR0aW5nIG11bHRpcGxlIGZpbGVzIHRvIHRoZSBzYW1lIGtleS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBib2R5IC0gVGhlIHJlcXVlc3QgYm9keS4gQWxyZWFkeSBjb250YWlucyBvbmx5IHByb3BlcnRpZXMgdGhhdCBoYXZlIGNoYW5nZWQuXG4gICAgICogQHBhcmFtIGZpbGVQcm9wZXJ0eUtleXMgLSBUaGUga2V5cyBvZiBhbGwgcHJvcGVydGllcyB3aGljaCBhcmUgZmlsZXMgYW5kIG5lZWQgdG8gc2VwYXJhdGVseSBiZSBhcHBlbmRlZCB0byB0aGUgZm9ybSBkYXRhLlxuICAgICAqIEBwYXJhbSBlbnRpdHkgLSBUaGUgb3JpZ2luYWwgZW50aXR5LiBJcyBuZWVkZWQgdG8gZ2V0IHRoZSBtZXRhZGF0YSBvZiBhbGwgdGhlIGZpbGVzLlxuICAgICAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgZW50aXR5IHRvIHVwZGF0ZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgdXBkYXRlV2l0aEZvcm1EYXRhKFxuICAgICAgICBib2R5OiBQYXJ0aWFsPEVudGl0eVR5cGU+LFxuICAgICAgICBmaWxlUHJvcGVydHlLZXlzOiAoa2V5b2YgRW50aXR5VHlwZSlbXSxcbiAgICAgICAgZW50aXR5OiBFbnRpdHlUeXBlLFxuICAgICAgICBpZDogRW50aXR5VHlwZVtrZXlvZiBFbnRpdHlUeXBlXVxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdib2R5JywgSlNPTi5zdHJpbmdpZnkoTG9kYXNoVXRpbGl0aWVzLm9taXRCeShib2R5LCBMb2Rhc2hVdGlsaXRpZXMuaXNOaWwpKSk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGZpbGVQcm9wZXJ0eUtleXMpIHtcbiAgICAgICAgICAgIGlmIChFbnRpdHlVdGlsaXRpZXMuZ2V0UHJvcGVydHlNZXRhZGF0YShlbnRpdHksIGtleSwgRGVjb3JhdG9yVHlwZXMuRklMRV9ERUZBVUxUKS5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVEYXRhVmFsdWVzOiBGaWxlRGF0YVtdID0gYm9keVtrZXldIGFzIEZpbGVEYXRhW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBmaWxlRGF0YVZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5IGFzIHN0cmluZywgKGF3YWl0IEZpbGVVdGlsaXRpZXMuZ2V0RmlsZURhdGEodmFsdWUpKS5maWxlLCB2YWx1ZS5uYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlRGF0YTogRmlsZURhdGEgPSBib2R5W2tleV0gYXMgRmlsZURhdGE7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSBhcyBzdHJpbmcsIChhd2FpdCBGaWxlVXRpbGl0aWVzLmdldEZpbGVEYXRhKGZpbGVEYXRhKSkuZmlsZSwgZmlsZURhdGEubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXBkYXRlZEVudGl0eTogRW50aXR5VHlwZSB8IHVuZGVmaW5lZCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5odHRwLnBhdGNoPEVudGl0eVR5cGUgfCB1bmRlZmluZWQ+KGAke3RoaXMuYmFzZVVybH0vJHtpZH1gLCBmb3JtRGF0YSlcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCF1cGRhdGVkRW50aXR5KSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS53YXJuKCdUaGUgdXBkYXRlZCBlbnRpdHkgd2FzIG5vdCByZXR1cm5lZCBpbiB0aGUgcmVzcG9uc2UuIEFwcGx5aW5nIHRoZSBjaGFuZ2VzIGZyb20gdGhlIHJlcXVlc3QgYm9keS4nKTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGJvZHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVudGl0aWVzW3RoaXMuZW50aXRpZXMuZmluZEluZGV4KGUgPT4gZVt0aGlzLmlkS2V5XSA9PT0gaWQpXVtrZXldXG4gICAgICAgICAgICAgICAgICAgID0gYm9keVtrZXldIGFzIEVudGl0eVR5cGVbRXh0cmFjdDxrZXlvZiBFbnRpdHlUeXBlLCBzdHJpbmc+XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZW50aXRpZXNTdWJqZWN0Lm5leHQodGhpcy5lbnRpdGllcyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbnRpdGllc1t0aGlzLmVudGl0aWVzLmZpbmRJbmRleChlID0+IGVbdGhpcy5pZEtleV0gPT09IGlkKV0gPSB1cGRhdGVkRW50aXR5O1xuICAgICAgICB0aGlzLmVudGl0aWVzU3ViamVjdC5uZXh0KHRoaXMuZW50aXRpZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIGVudGl0eSB3aXRoIGEgbm9ybWFsIGpzb24gYm9keSBpbiBjb250cmFzdCB0byB1cGRhdGluZyBpdCB3aXRoIGZvcm0gZGF0YSB3aGVuIHRoZSBlbnRpdHkgY29udGFpbnMgZmlsZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYm9keSAtIFRoZSBib2R5IG9mIHRoZSBSZXF1ZXN0LiBIYXMgYWxyZWFkeSByZW1vdmVkIGFsbCB1bm5lY2Vzc2FyeSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIGlkIC0gVGhlIGlkIG9mIHRoZSBlbnRpdHkgdG8gdXBkYXRlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhc3luYyB1cGRhdGVXaXRoSnNvbihib2R5OiBQYXJ0aWFsPEVudGl0eVR5cGU+LCBpZDogRW50aXR5VHlwZVtrZXlvZiBFbnRpdHlUeXBlXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkRW50aXR5OiBFbnRpdHlUeXBlIHwgdW5kZWZpbmVkID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLmh0dHAucGF0Y2g8RW50aXR5VHlwZSB8IHVuZGVmaW5lZD4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5iYXNlVXJsfS8ke2lkfWAsXG4gICAgICAgICAgICAgICAgTG9kYXNoVXRpbGl0aWVzLm9taXRCeShib2R5LCBMb2Rhc2hVdGlsaXRpZXMuaXNOaWwpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGlmICghdXBkYXRlZEVudGl0eSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVGhlIHVwZGF0ZWQgZW50aXR5IHdhcyBub3QgcmV0dXJuZWQgaW4gdGhlIHJlc3BvbnNlLiBBcHBseWluZyB0aGUgY2hhbmdlcyBmcm9tIHRoZSByZXF1ZXN0IGJvZHkuJyk7XG4gICAgICAgICAgICBjb25zdCBmb3VuZEVudGl0eTogRW50aXR5VHlwZSA9IHRoaXMuZW50aXRpZXNbdGhpcy5lbnRpdGllcy5maW5kSW5kZXgoZSA9PiBlW3RoaXMuaWRLZXldID09PSBpZCldO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gYm9keSkge1xuICAgICAgICAgICAgICAgIGZvdW5kRW50aXR5W2tleV1cbiAgICAgICAgICAgICAgICAgICAgPSBib2R5W2tleV0gYXMgRW50aXR5VHlwZVtFeHRyYWN0PGtleW9mIEVudGl0eVR5cGUsIHN0cmluZz5dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5lbnRpdGllc1N1YmplY3QubmV4dCh0aGlzLmVudGl0aWVzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVudGl0aWVzW3RoaXMuZW50aXRpZXMuZmluZEluZGV4KGUgPT4gZVt0aGlzLmlkS2V5XSA9PT0gaWQpXSA9IHVwZGF0ZWRFbnRpdHk7XG4gICAgICAgIHRoaXMuZW50aXRpZXNTdWJqZWN0Lm5leHQodGhpcy5lbnRpdGllcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlcyBhIHNwZWNpZmljIEVudGl0eS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbnRpdHkgLSBUaGUgZW50aXR5IHRvIGRlbGV0ZS5cbiAgICAgKi9cbiAgICBhc3luYyBkZWxldGUoZW50aXR5OiBFbnRpdHlUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5kZWxldGU8dm9pZD4oYCR7dGhpcy5iYXNlVXJsfS8ke2VudGl0eVt0aGlzLmlkS2V5XX1gKSk7XG4gICAgICAgIC8vIHRoZSA9PSBjb21wYXJpc29uIGluc3RlYWQgb2YgPT09IGlzIHRvIGNhdGNoIGlkcyB0aGF0IGFyZSBudW1iZXJzLlxuICAgICAgICB0aGlzLmVudGl0aWVzLnNwbGljZSh0aGlzLmVudGl0aWVzLmZpbmRJbmRleChlID0+IGVbdGhpcy5pZEtleV0gPT09IGVudGl0eVt0aGlzLmlkS2V5XSksIDEpO1xuICAgICAgICB0aGlzLmVudGl0aWVzU3ViamVjdC5uZXh0KHRoaXMuZW50aXRpZXMpO1xuICAgIH1cbn0iXX0=