@smartsoft001/crud-shell-angular 1.1.747 → 1.1.750

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.
@@ -223,11 +223,12 @@ export class ListComponent extends CreateDynamicComponent('crud-list-page') {
223
223
  const fieldsWithOptions = getModelFieldsWithOptions(new this.config.type());
224
224
  const modelOptions = getModelOptions(this.config.type);
225
225
  const showFilters = fieldsWithOptions.some((x) => x.options?.list?.filter) || modelOptions?.filters?.length;
226
- const showMultiEdit = this.config.edit &&
227
- fieldsWithOptions.some((x) => x.options?.update?.multi) &&
228
- !this.hardwareService.isMobile &&
229
- (!this.config?.list?.mode ||
230
- this.config?.list?.mode === ListMode.desktop);
226
+ const showMultiEdit = this.config.list?.components?.multi ||
227
+ (this.config.edit &&
228
+ fieldsWithOptions.some((x) => x.options?.update?.multi) &&
229
+ !this.hardwareService.isMobile &&
230
+ (!this.config?.list?.mode ||
231
+ this.config?.list?.mode === ListMode.desktop));
231
232
  return [
232
233
  ...(showMultiEdit
233
234
  ? [
@@ -340,4 +341,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
340
341
  type: ViewChildren,
341
342
  args: [DynamicContentDirective, { read: DynamicContentDirective }]
342
343
  }] } });
343
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NydWQvc2hlbGwvYW5ndWxhci9zcmMvbGliL3BhZ2VzL2xpc3QvbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Msd0JBQXdCLEVBQUUsVUFBVSxFQUN0RCxRQUFRLEVBQUUsV0FBVyxFQUNiLFNBQVMsRUFBRSxXQUFXLEVBQzlCLFNBQVMsRUFBRSxZQUFZLEVBQ3ZCLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUl6QyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUFFLHVCQUF1QixFQUMvQyxlQUFlLEVBSWYsUUFBUSxFQUNSLFdBQVcsRUFBRSxZQUFZLEdBQzFCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixlQUFlLEdBR2hCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDMUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDcEcsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRTdELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7OztBQWlCdkUsTUFBTSxPQUFPLGFBQ1QsU0FBUSxzQkFBc0IsQ0FBaUMsZ0JBQWdCLENBQUM7SUF1QmxGLFlBQ1UsTUFBcUIsRUFDckIsTUFBYyxFQUNkLHNCQUFpRCxFQUNqRCxRQUFrQixFQUNsQixFQUFxQixFQUNyQixXQUF3QixFQUN4QixlQUFnQyxFQUNoQyxnQkFBOEMsRUFDOUMsWUFBMEIsRUFDMUIsVUFBc0IsRUFDdEIsV0FBMkIsRUFDNUIsTUFBeUIsRUFDeEIsYUFBZ0MsRUFDaEMsU0FBMkIsRUFDM0Isd0JBQWtEO1FBRTFELEtBQUssQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixDQUFDLENBQUM7UUFoQnZDLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBMkI7UUFDakQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE4QjtRQUM5QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUM1QixXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDaEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQTlCNUQsWUFBTyxHQUE0QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3pELEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQVNGLG9CQUFlLEdBQUcsSUFBSSxTQUFTLEVBQTJCLENBQUM7UUFxQnpELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNqRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ25ELENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNaLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRTFDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztRQUVyQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsS0FBSyxZQUFZLEVBQUU7WUFDakQsU0FBUyxHQUFHO2dCQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2hFLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjO2dCQUMvQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDbkUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQ3pDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQzdELFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQ25FLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNO2FBQzdCLENBQUM7U0FDSDthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN0QixTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUN6QjthQUFNO1lBQ0wsU0FBUyxHQUFHO2dCQUNWLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjO2dCQUMvQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtvQkFDOUYsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDekMsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQztvQkFDaEYsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDMUUsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7b0JBQzNGLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDeEMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7b0JBQ2xHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDNUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDaEUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU07YUFDN0IsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFNUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXhDLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSztZQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO2dCQUN4QixDQUFDLENBQUM7b0JBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQy9ELEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUNYLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTs0QkFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0NBQ2YsR0FBRyxJQUFJLENBQUMsTUFBTTtnQ0FDZCxVQUFVLEVBQUUsR0FBRztnQ0FDZixNQUFNLEVBQUUsQ0FBQzs2QkFDVixDQUFDLENBQUM7b0JBQ1AsQ0FBQztpQkFDRjtnQkFDSCxDQUFDLENBQUMsSUFBSTtZQUNSLFVBQVUsRUFBRSxVQUFVO1NBQ3ZCLENBQUM7UUFFRixNQUFNLGtCQUFrQixHQUN0QixNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQywwQkFBMEIsQ0FBQztZQUMzRCxVQUFVLEVBQUU7Z0JBQ1YsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztvQkFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO29CQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHO29CQUNuQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBQ3pDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ1AsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztvQkFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO29CQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNO29CQUN0QyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUM7b0JBQzVDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ1AsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTtvQkFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO29CQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHO29CQUNoQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBQ3RDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDUjtTQUNGLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDakIsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBUSxFQUFFO29CQUN4QixNQUFNLE1BQU0sR0FBRzt3QkFDYixHQUFHLElBQUksQ0FBQyxNQUFNO3dCQUNkLEdBQUcsTUFBTTtxQkFDVixDQUFDO29CQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMzQixDQUFDO2dCQUNELHFCQUFxQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtvQkFDcEMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUU7d0JBQzlDLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7NEJBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTs0QkFDdkIsU0FBUyxFQUFFLG9CQUFvQjt5QkFDaEMsQ0FBQyxDQUFDO3FCQUNKO3lCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFO3dCQUNyRCxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQ25DO29CQUVELElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO2dCQUNELEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUs7Z0JBQ3hCLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ25EO1lBQ0QsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDN0QsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUk7WUFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTtZQUN0QixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO2dCQUMxQixDQUFDLENBQUM7b0JBQ0UsUUFBUSxFQUFFO3dCQUNSLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFOzRCQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUN6QixDQUFDO3dCQUNELFNBQVMsRUFBRSxHQUFHLEVBQUU7NEJBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDekIsQ0FBQzt3QkFDRCxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO3dCQUM1QixRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDbkQ7b0JBQ0Qsa0JBQWtCLEVBQUU7d0JBQ2xCLEdBQUcsRUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87NEJBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQzs0QkFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRzs0QkFDbkMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FDckIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUNMLEVBQUUsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUN6RCxDQUFDLE9BQU87NEJBQ1gsQ0FBQyxDQUFDLElBQUk7d0JBQ1YsTUFBTSxFQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzs0QkFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDOzRCQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNOzRCQUN0QyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUNyQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQ0wsRUFBRSxDQUFDLFNBQVM7Z0NBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUMzQyxDQUFDLE9BQU87NEJBQ1gsQ0FBQyxDQUFDLElBQUk7cUJBQ1g7aUJBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLElBQUk7WUFDUixJQUFJLEVBQ0YsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztnQkFDdkMsQ0FBQyxDQUFDO29CQUNFLE9BQU8sRUFBRTt3QkFDUCxhQUFhLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsR0FBRzt3QkFDL0QsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7cUJBQ3pCO2lCQUNGO2dCQUNILENBQUMsQ0FBQyxJQUFJO1lBQ1YsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtnQkFDeEIsQ0FBQyxDQUFDO29CQUNFLFFBQVEsRUFBRTt3QkFDUixNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztxQkFDdkM7aUJBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLElBQUk7WUFDUixVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO2dCQUM3QyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYztnQkFDckMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUs7Z0JBQ25DLFFBQVEsRUFBRTtvQkFDUixTQUFTLEVBQUUsR0FBRyxFQUFFO3dCQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztvQkFDckIsQ0FBQztvQkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUs7aUJBQzNCO2FBQ0YsQ0FBQztZQUNGLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7U0FDdkIsQ0FBQztRQUVGLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDbEUsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sS0FBSyxDQUFDLEtBQUs7UUFDakIsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDakIsR0FBRyxJQUFJLENBQUMsV0FBVztZQUNuQixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU8sYUFBYTtRQUNuQixNQUFNLGlCQUFpQixHQUFHLHlCQUF5QixDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZELE1BQU0sV0FBVyxHQUNmLGlCQUFpQixDQUFDLElBQUksQ0FDcEIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBMkIsRUFBRSxNQUFNLENBQ3ZELElBQUksWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7UUFFckMsTUFBTSxhQUFhLEdBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTtZQUNoQixpQkFBaUIsQ0FBQyxJQUFJLENBQ3BCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQTZCLEVBQUUsS0FBSyxDQUN4RDtZQUNELENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRO1lBQzlCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJO2dCQUN2QixJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWxELE9BQU87WUFDTCxHQUFHLENBQUMsYUFBYTtnQkFDZixDQUFDLENBQUM7b0JBQ0U7d0JBQ0UsSUFBSSxFQUFFLGtCQUFrQjt3QkFDeEIsSUFBSSxFQUFFLE9BQU87d0JBQ2IsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFOzRCQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHO2dDQUNqQixHQUFHLElBQUksQ0FBQyxXQUFXO2dDQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU87NkJBQzdELENBQUM7NEJBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQzVCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTO2dDQUM1QixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7NEJBQ3BDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQzFCLENBQUM7cUJBQ0Y7aUJBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNQLEdBQUcsQ0FBQyxXQUFXO2dCQUNiLENBQUMsQ0FBQztvQkFDRTt3QkFDRSxJQUFJLEVBQUUsZ0JBQWdCO3dCQUN0QixJQUFJLEVBQUUsU0FBUzt3QkFDZixPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUU7NEJBQ2xCLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7Z0NBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQ0FDdkIsU0FBUyxFQUFFLGdCQUFnQjs2QkFDNUIsQ0FBQyxDQUFDO3dCQUNMLENBQUM7cUJBQ0Y7aUJBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNQLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUc7Z0JBQ2pCLENBQUMsQ0FBQztvQkFDRTt3QkFDRSxJQUFJLEVBQUUsS0FBSzt3QkFDWCxJQUFJLEVBQUUsS0FBSzt3QkFDWCxPQUFPLEVBQUUsR0FBRyxFQUFFOzRCQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO2dDQUNuQixHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxNQUFNOzZCQUNwRCxDQUFDLENBQUM7d0JBQ0wsQ0FBQztxQkFDRjtpQkFDRjtnQkFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1AsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtnQkFDcEIsQ0FBQyxDQUFDO29CQUNFO3dCQUNFLElBQUksRUFBRSxRQUFRO3dCQUNkLElBQUksRUFBRSxrQkFBa0I7d0JBQ3hCLElBQUksRUFBRSxTQUFzQjt3QkFDNUIsU0FBUyxFQUFFLGVBQWU7cUJBQzNCO2lCQUNGO2dCQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDcEQsQ0FBQztJQUNKLENBQUM7SUFFTyxnQkFBZ0IsQ0FDdEIsa0JBR0c7UUFFSCxNQUFNLE9BQU8sR0FDWCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7WUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUc7WUFDaEMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FDckIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUM1RCxDQUFDLE9BQU87WUFDWCxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRVgsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3RDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztnSkF0VlUsYUFBYTtvSUFBYixhQUFhLHlJQWVLLGdCQUFnQixtR0FHWixXQUFXLGtEQUc5Qix1QkFBdUIsMkJBQVUsdUJBQXVCLG9EQWxDNUQ7Ozs7Ozs7Ozs7O0dBV1Q7MkZBRVUsYUFBYTtrQkFmekIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0dBV1Q7aUJBQ0Y7OGZBaUJDLE1BQU07c0JBREwsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJOUQsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJN0QsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeSwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBFbGVtZW50UmVmLFxuICBJbmplY3RvciwgTmdNb2R1bGVSZWYsIE9uRGVzdHJveSxcbiAgT25Jbml0LCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IG1hcCwgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCAqIGFzIF8gZnJvbSBcImxvZGFzaFwiO1xuXG5pbXBvcnQge1xuICBDcmVhdGVEeW5hbWljQ29tcG9uZW50LFxuICBEeW5hbWljQ29tcG9uZW50TG9hZGVyLCBEeW5hbWljQ29udGVudERpcmVjdGl2ZSxcbiAgSGFyZHdhcmVTZXJ2aWNlLFxuICBJSWNvbkJ1dHRvbk9wdGlvbnMsXG4gIElMaXN0T3B0aW9ucyxcbiAgSVBhZ2VPcHRpb25zLFxuICBMaXN0TW9kZSxcbiAgTWVudVNlcnZpY2UsIFN0eWxlU2VydmljZSxcbn0gZnJvbSBcIkBzbWFydHNvZnQwMDEvYW5ndWxhclwiO1xuaW1wb3J0IHsgSUVudGl0eSB9IGZyb20gXCJAc21hcnRzb2Z0MDAxL2RvbWFpbi1jb3JlXCI7XG5pbXBvcnQge1xuICBnZXRNb2RlbEZpZWxkc1dpdGhPcHRpb25zLFxuICBnZXRNb2RlbE9wdGlvbnMsXG4gIElGaWVsZEVkaXRNZXRhZGF0YSxcbiAgSUZpZWxkTGlzdE1ldGFkYXRhLFxufSBmcm9tIFwiQHNtYXJ0c29mdDAwMS9tb2RlbHNcIjtcblxuaW1wb3J0IHsgQ3J1ZEZhY2FkZSB9IGZyb20gXCIuLi8uLi8rc3RhdGUvY3J1ZC5mYWNhZGVcIjtcbmltcG9ydCB7IENydWRGdWxsQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NydWQuY29uZmlnXCI7XG5pbXBvcnQgeyBJQ3J1ZEZpbHRlciB9IGZyb20gXCIuLi8uLi9tb2RlbHMvaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgRXhwb3J0Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvZXhwb3J0L2V4cG9ydC5jb21wb25lbnRcIjtcbmltcG9ydCB7IEZpbHRlcnNDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9maWx0ZXJzL2ZpbHRlcnMuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBNdWx0aXNlbGVjdENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL211bHRpc2VsZWN0L211bHRpc2VsZWN0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ3J1ZExpc3RQYWdpbmF0aW9uRmFjdG9yeSB9IGZyb20gXCIuLi8uLi9mYWN0b3JpZXMvbGlzdC1wYWdpbmF0aW9uL2xpc3QtcGFnaW5hdGlvbi5mYWN0b3J5XCI7XG5pbXBvcnQge1BhZ2VTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcGFnZS9wYWdlLnNlcnZpY2VcIjtcbmltcG9ydCB7Q3J1ZExpc3RQYWdlQmFzZUNvbXBvbmVudH0gZnJvbSBcIi4vYmFzZS9iYXNlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtDcnVkU2VhcmNoU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NlYXJjaC9zZWFyY2guc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic21hcnQtY3J1ZC1saXN0LXBhZ2VcIixcbiAgdGVtcGxhdGU6IGBcbiAgICA8c21hcnQtcGFnZSBbb3B0aW9uc109XCJwYWdlT3B0aW9uc1wiICpuZ0lmPVwiZmlsdGVyJCB8IGFzeW5jXCI+XG4gICAgICA8ZGl2ICN0b3BUcGw+PC9kaXY+XG4gICAgICA8c21hcnQtY3J1ZC1saXN0LXN0YW5kYXJkLXBhZ2UgKm5nSWY9XCJ0ZW1wbGF0ZSA9PT0gJ2RlZmF1bHQnXCIgW2xpc3RPcHRpb25zXT1cImxpc3RPcHRpb25zXCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRUcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc21hcnQtY3J1ZC1saXN0LXN0YW5kYXJkLXBhZ2U+XG4gICAgICA8bmctdGVtcGxhdGUgI2NvbnRlbnRUcGw+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1jb250ZW50XCI+PC9kaXY+XG4gICAgPC9zbWFydC1wYWdlPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIExpc3RDb21wb25lbnQ8VCBleHRlbmRzIElFbnRpdHk8c3RyaW5nPj5cbiAgICBleHRlbmRzIENyZWF0ZUR5bmFtaWNDb21wb25lbnQ8Q3J1ZExpc3RQYWdlQmFzZUNvbXBvbmVudDxhbnk+PignY3J1ZC1saXN0LXBhZ2UnKVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIHBhZ2VPcHRpb25zOiBJUGFnZU9wdGlvbnM7XG4gIGxpc3RPcHRpb25zOiBJTGlzdE9wdGlvbnM8VD47XG4gIGZpbHRlcjogSUNydWRGaWx0ZXI7XG4gIGxpbmtzOiB7IG5leHQ7IHByZXYgfTtcblxuICBmaWx0ZXIkOiBPYnNlcnZhYmxlPElDcnVkRmlsdGVyPiA9IHRoaXMuZmFjYWRlLmZpbHRlciQucGlwZShcbiAgICB0YXAoKGZpbHRlcikgPT4ge1xuICAgICAgdGhpcy5maWx0ZXIgPSBmaWx0ZXI7XG4gICAgfSlcbiAgKTtcblxuICBAVmlld0NoaWxkKFwidG9wVHBsXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiBmYWxzZSB9KVxuICB0b3BUcGw6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQFZpZXdDaGlsZChcImNvbnRlbnRUcGxcIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiBmYWxzZSB9KVxuICBjb250ZW50VHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGRyZW4oRHluYW1pY0NvbnRlbnREaXJlY3RpdmUsIHsgcmVhZDogRHluYW1pY0NvbnRlbnREaXJlY3RpdmUgfSlcbiAgZHluYW1pY0NvbnRlbnRzID0gbmV3IFF1ZXJ5TGlzdDxEeW5hbWljQ29udGVudERpcmVjdGl2ZT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZhY2FkZTogQ3J1ZEZhY2FkZTxUPixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZHluYW1pY0NvbXBvbmVudExvYWRlcjogRHluYW1pY0NvbXBvbmVudExvYWRlcjxUPixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcbiAgICBwcml2YXRlIGhhcmR3YXJlU2VydmljZTogSGFyZHdhcmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFnaW5hdGlvbkZhY2FkZTogQ3J1ZExpc3RQYWdpbmF0aW9uRmFjdG9yeTxUPixcbiAgICBwcml2YXRlIHN0eWxlU2VydmljZTogU3R5bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHBhZ2VTZXJ2aWNlOiBQYWdlU2VydmljZTxUPixcbiAgICBwdWJsaWMgY29uZmlnOiBDcnVkRnVsbENvbmZpZzxUPixcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IENydWRTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kdWxlUmVmOiBOZ01vZHVsZVJlZjxhbnk+LFxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbiAgKSB7XG4gICAgc3VwZXIoY2QsIG1vZHVsZVJlZiwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyKTtcblxuICAgIHRoaXMuZmFjYWRlLmxpbmtzJC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChsaW5rcykgPT4ge1xuICAgICAgdGhpcy5saW5rcyA9IGxpbmtzO1xuICAgIH0pO1xuICB9XG5cbiAgcmVmcmVzaFByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgdGhpcy5iYXNlSW5zdGFuY2UubGlzdE9wdGlvbnMgPSB0aGlzLmxpc3RPcHRpb25zO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5wYWdlU2VydmljZS5jaGVja1Blcm1pc3Npb25zKCk7XG5cbiAgICBsZXQgbmV3RmlsdGVyID0gbnVsbDtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5saXN0Py5yZXNldFF1ZXJ5ID09PSAnYmVmb3JlSW5pdCcpIHtcbiAgICAgIG5ld0ZpbHRlciA9IHtcbiAgICAgICAgcXVlcnk6IHRoaXMuY29uZmlnLmJhc2VRdWVyeSA/IFsgLi4udGhpcy5jb25maWcuYmFzZVF1ZXJ5IF0gOiBbXSxcbiAgICAgICAgcGFnaW5hdGlvbk1vZGU6IHRoaXMuY29uZmlnLmxpc3QucGFnaW5hdGlvbk1vZGUsXG4gICAgICAgIGxpbWl0OiB0aGlzLmNvbmZpZy5wYWdpbmF0aW9uID8gdGhpcy5jb25maWcucGFnaW5hdGlvbi5saW1pdCA6IG51bGwsXG4gICAgICAgIG9mZnNldDogdGhpcy5jb25maWcucGFnaW5hdGlvbiA/IDAgOiBudWxsLFxuICAgICAgICBzb3J0Qnk6IHRoaXMuY29uZmlnLnNvcnQgPyB0aGlzLmNvbmZpZy5zb3J0W1wiZGVmYXVsdFwiXSA6IG51bGwsXG4gICAgICAgIHNvcnREZXNjOiB0aGlzLmNvbmZpZy5zb3J0ID8gdGhpcy5jb25maWcuc29ydFtcImRlZmF1bHREZXNjXCJdIDogbnVsbCxcbiAgICAgICAgLi4udGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlclxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICBuZXdGaWx0ZXIgPSB0aGlzLmZpbHRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3RmlsdGVyID0ge1xuICAgICAgICBwYWdpbmF0aW9uTW9kZTogdGhpcy5jb25maWcubGlzdC5wYWdpbmF0aW9uTW9kZSxcbiAgICAgICAgbGltaXQ6IHRoaXMuc2VhcmNoU2VydmljZS5maWx0ZXI/LmxpbWl0ID8gdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlci5saW1pdCA6IHRoaXMuY29uZmlnLnBhZ2luYXRpb25cbiAgICAgICAgICAgID8gdGhpcy5jb25maWcucGFnaW5hdGlvbi5saW1pdCA6IG51bGwsXG4gICAgICAgIG9mZnNldDogdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlcj8ub2Zmc2V0IHx8IHRoaXMuc2VhcmNoU2VydmljZS5maWx0ZXI/Lm9mZnNldCA9PT0gMFxuICAgICAgICAgICAgPyB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyLm9mZnNldCA6IHRoaXMuY29uZmlnLnBhZ2luYXRpb24gPyAwIDogbnVsbCxcbiAgICAgICAgc29ydEJ5OiB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyPy5zb3J0QnkgPyB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyLnNvcnRCeSA6IHRoaXMuY29uZmlnLnNvcnRcbiAgICAgICAgICAgID8gdGhpcy5jb25maWcuc29ydFtcImRlZmF1bHRcIl0gOiBudWxsLFxuICAgICAgICBzb3J0RGVzYzogdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlcj8uc29ydERlc2MgPyB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyLnNvcnREZXNjIDogIHRoaXMuY29uZmlnLnNvcnRcbiAgICAgICAgICAgID8gdGhpcy5jb25maWcuc29ydFtcImRlZmF1bHREZXNjXCJdIDogbnVsbCxcbiAgICAgICAgcXVlcnk6IHRoaXMuY29uZmlnLmJhc2VRdWVyeSA/IFsgLi4udGhpcy5jb25maWcuYmFzZVF1ZXJ5IF0gOiBbXSxcbiAgICAgICAgLi4udGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlclxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmZhY2FkZS5yZWFkKG5ld0ZpbHRlcik7XG5cbiAgICBjb25zdCBlbmRCdXR0b25zID0gdGhpcy5nZXRFbmRCdXR0b25zKCk7XG5cbiAgICB0aGlzLnBhZ2VPcHRpb25zID0ge1xuICAgICAgdGl0bGU6IHRoaXMuY29uZmlnLnRpdGxlLFxuICAgICAgc2VhcmNoOiB0aGlzLmNvbmZpZy5zZWFyY2hcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB0ZXh0JDogdGhpcy5maWx0ZXIkLnBpcGUobWFwKChmKSA9PiAoZiA/IGYuc2VhcmNoVGV4dCA6IG51bGwpKSksXG4gICAgICAgICAgICBzZXQ6ICh0eHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHR4dCAhPT0gdGhpcy5maWx0ZXIuc2VhcmNoVGV4dClcbiAgICAgICAgICAgICAgICB0aGlzLmZhY2FkZS5yZWFkKHtcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgc2VhcmNoVGV4dDogdHh0LFxuICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbCxcbiAgICAgIGVuZEJ1dHRvbnM6IGVuZEJ1dHRvbnMsXG4gICAgfTtcblxuICAgIGNvbnN0IGNvbXBpbGVkQ29tcG9uZW50cyA9XG4gICAgICBhd2FpdCB0aGlzLmR5bmFtaWNDb21wb25lbnRMb2FkZXIuZ2V0Q29tcG9uZW50c1dpdGhGYWN0b3JpZXMoe1xuICAgICAgICBjb21wb25lbnRzOiBbXG4gICAgICAgICAgLi4uKHRoaXMuY29uZmlnLmRldGFpbHMgJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLnRvcFxuICAgICAgICAgICAgPyBbdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0udG9wXVxuICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgLi4uKHRoaXMuY29uZmlnLmRldGFpbHMgJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLmJvdHRvbVxuICAgICAgICAgICAgPyBbdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0uYm90dG9tXVxuICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgLi4uKHRoaXMuY29uZmlnLmxpc3QgJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZy5saXN0W1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgICAgIHRoaXMuY29uZmlnLmxpc3RbXCJjb21wb25lbnRzXCJdLnRvcFxuICAgICAgICAgICAgPyBbdGhpcy5jb25maWcubGlzdFtcImNvbXBvbmVudHNcIl0udG9wXVxuICAgICAgICAgICAgOiBbXSksXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgIHRoaXMubGlzdE9wdGlvbnMgPSB7XG4gICAgICBwcm92aWRlcjoge1xuICAgICAgICBnZXREYXRhOiAoZmlsdGVyKTogdm9pZCA9PiB7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsID0ge1xuICAgICAgICAgICAgLi4udGhpcy5maWx0ZXIsXG4gICAgICAgICAgICAuLi5maWx0ZXIsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLmZhY2FkZS5yZWFkKGdsb2JhbCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2hhbmdlTXVsdGlTZWxlY3RlZDogYXN5bmMgKGxpc3QpID0+IHtcbiAgICAgICAgICBpZiAobGlzdC5sZW5ndGggJiYgIXRoaXMubWVudVNlcnZpY2Uub3BlbmVkRW5kKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1lbnVTZXJ2aWNlLm9wZW5FbmQoe1xuICAgICAgICAgICAgICBpbmplY3RvcjogdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBNdWx0aXNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWxpc3QubGVuZ3RoICYmIHRoaXMubWVudVNlcnZpY2Uub3BlbmVkRW5kKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1lbnVTZXJ2aWNlLmNsb3NlRW5kKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5mYWNhZGUubXVsdGlTZWxlY3QobGlzdCk7XG4gICAgICAgIH0sXG4gICAgICAgIGxpc3QkOiB0aGlzLmZhY2FkZS5saXN0JCxcbiAgICAgICAgbG9hZGluZyQ6IHRoaXMuZmFjYWRlLmxvYWRlZCQucGlwZShtYXAoKGwpID0+ICFsKSksXG4gICAgICB9LFxuICAgICAgY2VsbFBpcGU6IHRoaXMuY29uZmlnLmxpc3QgPyB0aGlzLmNvbmZpZy5saXN0LmNlbGxQaXBlIDogbnVsbCxcbiAgICAgIG1vZGU6IHRoaXMuY29uZmlnLmxpc3Q/Lm1vZGUsXG4gICAgICB0eXBlOiB0aGlzLmNvbmZpZy50eXBlLFxuICAgICAgZGV0YWlsczogdGhpcy5jb25maWcuZGV0YWlsc1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIHByb3ZpZGVyOiB7XG4gICAgICAgICAgICAgIGdldERhdGE6IChpZCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmFjYWRlLnNlbGVjdChpZCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGNsZWFyRGF0YTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmFjYWRlLnVuc2VsZWN0KCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGl0ZW0kOiB0aGlzLmZhY2FkZS5zZWxlY3RlZCQsXG4gICAgICAgICAgICAgIGxvYWRpbmckOiB0aGlzLmZhY2FkZS5sb2FkZWQkLnBpcGUobWFwKChsKSA9PiAhbCkpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBvbmVudEZhY3Rvcmllczoge1xuICAgICAgICAgICAgICB0b3A6XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlscyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0udG9wXG4gICAgICAgICAgICAgICAgICA/IGNvbXBpbGVkQ29tcG9uZW50cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgIChjYykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmNvbXBvbmVudCA9PT0gdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0udG9wXG4gICAgICAgICAgICAgICAgICAgICkuZmFjdG9yeVxuICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICBib3R0b206XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlscyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0uYm90dG9tXG4gICAgICAgICAgICAgICAgICA/IGNvbXBpbGVkQ29tcG9uZW50cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgIChjYykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmNvbXBvbmVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLmJvdHRvbVxuICAgICAgICAgICAgICAgICAgICApLmZhY3RvcnlcbiAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGwsXG4gICAgICBpdGVtOlxuICAgICAgICAhIXRoaXMuY29uZmlnLmVkaXQgfHwgdGhpcy5jb25maWcuZGV0YWlsc1xuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgcm91dGluZ1ByZWZpeDogXCIvXCIgKyB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwgKyBcIi9cIixcbiAgICAgICAgICAgICAgICBlZGl0OiAhIXRoaXMuY29uZmlnLmVkaXQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiBudWxsLFxuICAgICAgcmVtb3ZlOiB0aGlzLmNvbmZpZy5yZW1vdmVcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBwcm92aWRlcjoge1xuICAgICAgICAgICAgICBpbnZva2U6IChpZCkgPT4gdGhpcy5mYWNhZGUuZGVsZXRlKGlkKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGwsXG4gICAgICBwYWdpbmF0aW9uOiBhd2FpdCB0aGlzLnBhZ2luYXRpb25GYWNhZGUuY3JlYXRlKHtcbiAgICAgICAgbW9kZTogdGhpcy5jb25maWcubGlzdC5wYWdpbmF0aW9uTW9kZSxcbiAgICAgICAgbGltaXQ6IHRoaXMuY29uZmlnLnBhZ2luYXRpb24ubGltaXQsXG4gICAgICAgIHByb3ZpZGVyOiB7XG4gICAgICAgICAgZ2V0RmlsdGVyOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXI7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXRMaW5rczogKCkgPT4gdGhpcy5saW5rcyxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgc29ydDogdGhpcy5jb25maWcuc29ydCxcbiAgICB9O1xuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLmluaXRDbG9zZU1lbnUoKTtcbiAgICB0aGlzLmluaXRUb3BDb21wb25lbnQoY29tcGlsZWRDb21wb25lbnRzKTtcblxuICAgIHRoaXMucmVmcmVzaER5bmFtaWNJbnN0YW5jZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q2xvc2VNZW51KCkge1xuICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuY2xlYXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2xlYXIoKSB7XG4gICAgYXdhaXQgdGhpcy5tZW51U2VydmljZS5jbG9zZUVuZCgpO1xuXG4gICAgdGhpcy5saXN0T3B0aW9ucyA9IHtcbiAgICAgIC4uLnRoaXMubGlzdE9wdGlvbnMsXG4gICAgICBzZWxlY3Q6IG51bGwsXG4gICAgfTtcblxuICAgIHRoaXMuZmFjYWRlLm11bHRpU2VsZWN0KFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW5kQnV0dG9ucygpOiBBcnJheTxJSWNvbkJ1dHRvbk9wdGlvbnM+IHtcbiAgICBjb25zdCBmaWVsZHNXaXRoT3B0aW9ucyA9IGdldE1vZGVsRmllbGRzV2l0aE9wdGlvbnMobmV3IHRoaXMuY29uZmlnLnR5cGUoKSk7XG4gICAgY29uc3QgbW9kZWxPcHRpb25zID0gZ2V0TW9kZWxPcHRpb25zKHRoaXMuY29uZmlnLnR5cGUpO1xuXG4gICAgY29uc3Qgc2hvd0ZpbHRlcnMgPVxuICAgICAgZmllbGRzV2l0aE9wdGlvbnMuc29tZShcbiAgICAgICAgKHgpID0+ICh4Lm9wdGlvbnM/Lmxpc3QgYXMgSUZpZWxkTGlzdE1ldGFkYXRhKT8uZmlsdGVyXG4gICAgICApIHx8IG1vZGVsT3B0aW9ucz8uZmlsdGVycz8ubGVuZ3RoO1xuXG4gICAgY29uc3Qgc2hvd011bHRpRWRpdCA9XG4gICAgICB0aGlzLmNvbmZpZy5lZGl0ICYmXG4gICAgICBmaWVsZHNXaXRoT3B0aW9ucy5zb21lKFxuICAgICAgICAoeCkgPT4gKHgub3B0aW9ucz8udXBkYXRlIGFzIElGaWVsZEVkaXRNZXRhZGF0YSk/Lm11bHRpXG4gICAgICApICYmXG4gICAgICAhdGhpcy5oYXJkd2FyZVNlcnZpY2UuaXNNb2JpbGUgJiZcbiAgICAgICghdGhpcy5jb25maWc/Lmxpc3Q/Lm1vZGUgfHxcbiAgICAgICAgdGhpcy5jb25maWc/Lmxpc3Q/Lm1vZGUgPT09IExpc3RNb2RlLmRlc2t0b3ApO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLihzaG93TXVsdGlFZGl0XG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpY29uOiBcImNoZWNrYm94LW91dGxpbmVcIixcbiAgICAgICAgICAgICAgdGV4dDogXCJtdWx0aVwiLFxuICAgICAgICAgICAgICBoYW5kbGVyOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMubGlzdE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRoaXMubGlzdE9wdGlvbnMuc2VsZWN0ID09PSBcIm11bHRpXCIgPyBudWxsIDogXCJtdWx0aVwiLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5mYWNhZGUubXVsdGlTZWxlY3QoW10pO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1lbnVTZXJ2aWNlLm9wZW5lZEVuZClcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWVudVNlcnZpY2UuY2xvc2VFbmQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLihzaG93RmlsdGVyc1xuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWNvbjogXCJmaWx0ZXItb3V0bGluZVwiLFxuICAgICAgICAgICAgICB0ZXh0OiBcImZpbHRlcnNcIixcbiAgICAgICAgICAgICAgaGFuZGxlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWVudVNlcnZpY2Uub3BlbkVuZCh7XG4gICAgICAgICAgICAgICAgICBpbmplY3RvcjogdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogRmlsdGVyc0NvbXBvbmVudCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLih0aGlzLmNvbmZpZy5hZGRcbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGljb246IFwiYWRkXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiYWRkXCIsXG4gICAgICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXG4gICAgICAgICAgICAgICAgICBcIi9cIiArIHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybCArIFwiL2FkZFwiLFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHRoaXMuY29uZmlnLmV4cG9ydFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGV4dDogXCJleHBvcnRcIixcbiAgICAgICAgICAgICAgaWNvbjogXCJkb3dubG9hZC1vdXRsaW5lXCIsXG4gICAgICAgICAgICAgIHR5cGU6IFwicG9wb3ZlclwiIGFzIFwicG9wb3ZlclwiLFxuICAgICAgICAgICAgICBjb21wb25lbnQ6IEV4cG9ydENvbXBvbmVudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLih0aGlzLmNvbmZpZy5idXR0b25zID8gdGhpcy5jb25maWcuYnV0dG9ucyA6IFtdKSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0VG9wQ29tcG9uZW50KFxuICAgIGNvbXBpbGVkQ29tcG9uZW50czoge1xuICAgICAgY29tcG9uZW50OiBhbnk7XG4gICAgICBmYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PGFueT47XG4gICAgfVtdXG4gICkge1xuICAgIGNvbnN0IGZhY3RvcnkgPVxuICAgICAgdGhpcy5jb25maWcubGlzdCAmJlxuICAgICAgdGhpcy5jb25maWcubGlzdFtcImNvbXBvbmVudHNcIl0gJiZcbiAgICAgIHRoaXMuY29uZmlnLmxpc3RbXCJjb21wb25lbnRzXCJdLnRvcFxuICAgICAgICA/IGNvbXBpbGVkQ29tcG9uZW50cy5maW5kKFxuICAgICAgICAgICAgKGNjKSA9PiBjYy5jb21wb25lbnQgPT09IHRoaXMuY29uZmlnLmxpc3RbXCJjb21wb25lbnRzXCJdLnRvcFxuICAgICAgICAgICkuZmFjdG9yeVxuICAgICAgICA6IG51bGw7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChmYWN0b3J5ICYmICF0aGlzLnRvcFRwbC5nZXQoMCkpIHtcbiAgICAgICAgdGhpcy50b3BUcGwuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NydWQvc2hlbGwvYW5ndWxhci9zcmMvbGliL3BhZ2VzL2xpc3QvbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Msd0JBQXdCLEVBQUUsVUFBVSxFQUN0RCxRQUFRLEVBQUUsV0FBVyxFQUNiLFNBQVMsRUFBRSxXQUFXLEVBQzlCLFNBQVMsRUFBRSxZQUFZLEVBQ3ZCLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUl6QyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUFFLHVCQUF1QixFQUMvQyxlQUFlLEVBSWYsUUFBUSxFQUNSLFdBQVcsRUFBRSxZQUFZLEdBQzFCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixlQUFlLEdBR2hCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDMUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDcEcsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGtDQUFrQyxD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VlUsYUFBYTtvSUFBYixhQUFhLHlJQWVLLGdCQUFnQixtR0FHWixXQUFXLGtEQUc5Qix1QkFBdUIsMkJBQVUsdUJBQXVCLG9EQWxDNUQ7Ozs7Ozs7Ozs7O0dBV1Q7MkZBRVUsYUFBYTtrQkFmekIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0dBV1Q7aUJBQ0Y7OGZBaUJDLE1BQU07c0JBREwsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJOUQsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJN0QsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeSwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBFbGVtZW50UmVmLFxuICBJbmplY3RvciwgTmdNb2R1bGVSZWYsIE9uRGVzdHJveSxcbiAgT25Jbml0LCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IG1hcCwgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCAqIGFzIF8gZnJvbSBcImxvZGFzaFwiO1xuXG5pbXBvcnQge1xuICBDcmVhdGVEeW5hbWljQ29tcG9uZW50LFxuICBEeW5hbWljQ29tcG9uZW50TG9hZGVyLCBEeW5hbWljQ29udGVudERpcmVjdGl2ZSxcbiAgSGFyZHdhcmVTZXJ2aWNlLFxuICBJSWNvbkJ1dHRvbk9wdGlvbnMsXG4gIElMaXN0T3B0aW9ucyxcbiAgSVBhZ2VPcHRpb25zLFxuICBMaXN0TW9kZSxcbiAgTWVudVNlcnZpY2UsIFN0eWxlU2VydmljZSxcbn0gZnJvbSBcIkBzbWFydHNvZnQwMDEvYW5ndWxhclwiO1xuaW1wb3J0IHsgSUVudGl0eSB9IGZyb20gXCJAc21hcnRzb2Z0MDAxL2RvbWFpbi1jb3JlXCI7XG5pbXBvcnQge1xuICBnZXRNb2RlbEZpZWxkc1dpdGhPcHRpb25zLFxuICBnZXRNb2RlbE9wdGlvbnMsXG4gIElGaWVsZEVkaXRNZXRhZGF0YSxcbiAgSUZpZWxkTGlzdE1ldGFkYXRhLFxufSBmcm9tIFwiQHNtYXJ0c29mdDAwMS9tb2RlbHNcIjtcblxuaW1wb3J0IHsgQ3J1ZEZhY2FkZSB9IGZyb20gXCIuLi8uLi8rc3RhdGUvY3J1ZC5mYWNhZGVcIjtcbmltcG9ydCB7IENydWRGdWxsQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NydWQuY29uZmlnXCI7XG5pbXBvcnQgeyBJQ3J1ZEZpbHRlciB9IGZyb20gXCIuLi8uLi9tb2RlbHMvaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgRXhwb3J0Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvZXhwb3J0L2V4cG9ydC5jb21wb25lbnRcIjtcbmltcG9ydCB7IEZpbHRlcnNDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9maWx0ZXJzL2ZpbHRlcnMuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBNdWx0aXNlbGVjdENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL211bHRpc2VsZWN0L211bHRpc2VsZWN0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ3J1ZExpc3RQYWdpbmF0aW9uRmFjdG9yeSB9IGZyb20gXCIuLi8uLi9mYWN0b3JpZXMvbGlzdC1wYWdpbmF0aW9uL2xpc3QtcGFnaW5hdGlvbi5mYWN0b3J5XCI7XG5pbXBvcnQge1BhZ2VTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcGFnZS9wYWdlLnNlcnZpY2VcIjtcbmltcG9ydCB7Q3J1ZExpc3RQYWdlQmFzZUNvbXBvbmVudH0gZnJvbSBcIi4vYmFzZS9iYXNlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtDcnVkU2VhcmNoU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NlYXJjaC9zZWFyY2guc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic21hcnQtY3J1ZC1saXN0LXBhZ2VcIixcbiAgdGVtcGxhdGU6IGBcbiAgICA8c21hcnQtcGFnZSBbb3B0aW9uc109XCJwYWdlT3B0aW9uc1wiICpuZ0lmPVwiZmlsdGVyJCB8IGFzeW5jXCI+XG4gICAgICA8ZGl2ICN0b3BUcGw+PC9kaXY+XG4gICAgICA8c21hcnQtY3J1ZC1saXN0LXN0YW5kYXJkLXBhZ2UgKm5nSWY9XCJ0ZW1wbGF0ZSA9PT0gJ2RlZmF1bHQnXCIgW2xpc3RPcHRpb25zXT1cImxpc3RPcHRpb25zXCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRUcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc21hcnQtY3J1ZC1saXN0LXN0YW5kYXJkLXBhZ2U+XG4gICAgICA8bmctdGVtcGxhdGUgI2NvbnRlbnRUcGw+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1jb250ZW50XCI+PC9kaXY+XG4gICAgPC9zbWFydC1wYWdlPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIExpc3RDb21wb25lbnQ8VCBleHRlbmRzIElFbnRpdHk8c3RyaW5nPj5cbiAgICBleHRlbmRzIENyZWF0ZUR5bmFtaWNDb21wb25lbnQ8Q3J1ZExpc3RQYWdlQmFzZUNvbXBvbmVudDxhbnk+PignY3J1ZC1saXN0LXBhZ2UnKVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIHBhZ2VPcHRpb25zOiBJUGFnZU9wdGlvbnM7XG4gIGxpc3RPcHRpb25zOiBJTGlzdE9wdGlvbnM8VD47XG4gIGZpbHRlcjogSUNydWRGaWx0ZXI7XG4gIGxpbmtzOiB7IG5leHQ7IHByZXYgfTtcblxuICBmaWx0ZXIkOiBPYnNlcnZhYmxlPElDcnVkRmlsdGVyPiA9IHRoaXMuZmFjYWRlLmZpbHRlciQucGlwZShcbiAgICB0YXAoKGZpbHRlcikgPT4ge1xuICAgICAgdGhpcy5maWx0ZXIgPSBmaWx0ZXI7XG4gICAgfSlcbiAgKTtcblxuICBAVmlld0NoaWxkKFwidG9wVHBsXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiBmYWxzZSB9KVxuICB0b3BUcGw6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQFZpZXdDaGlsZChcImNvbnRlbnRUcGxcIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiBmYWxzZSB9KVxuICBjb250ZW50VHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGRyZW4oRHluYW1pY0NvbnRlbnREaXJlY3RpdmUsIHsgcmVhZDogRHluYW1pY0NvbnRlbnREaXJlY3RpdmUgfSlcbiAgZHluYW1pY0NvbnRlbnRzID0gbmV3IFF1ZXJ5TGlzdDxEeW5hbWljQ29udGVudERpcmVjdGl2ZT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZhY2FkZTogQ3J1ZEZhY2FkZTxUPixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZHluYW1pY0NvbXBvbmVudExvYWRlcjogRHluYW1pY0NvbXBvbmVudExvYWRlcjxUPixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcbiAgICBwcml2YXRlIGhhcmR3YXJlU2VydmljZTogSGFyZHdhcmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFnaW5hdGlvbkZhY2FkZTogQ3J1ZExpc3RQYWdpbmF0aW9uRmFjdG9yeTxUPixcbiAgICBwcml2YXRlIHN0eWxlU2VydmljZTogU3R5bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHBhZ2VTZXJ2aWNlOiBQYWdlU2VydmljZTxUPixcbiAgICBwdWJsaWMgY29uZmlnOiBDcnVkRnVsbENvbmZpZzxUPixcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IENydWRTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kdWxlUmVmOiBOZ01vZHVsZVJlZjxhbnk+LFxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbiAgKSB7XG4gICAgc3VwZXIoY2QsIG1vZHVsZVJlZiwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyKTtcblxuICAgIHRoaXMuZmFjYWRlLmxpbmtzJC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChsaW5rcykgPT4ge1xuICAgICAgdGhpcy5saW5rcyA9IGxpbmtzO1xuICAgIH0pO1xuICB9XG5cbiAgcmVmcmVzaFByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgdGhpcy5iYXNlSW5zdGFuY2UubGlzdE9wdGlvbnMgPSB0aGlzLmxpc3RPcHRpb25zO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5wYWdlU2VydmljZS5jaGVja1Blcm1pc3Npb25zKCk7XG5cbiAgICBsZXQgbmV3RmlsdGVyID0gbnVsbDtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5saXN0Py5yZXNldFF1ZXJ5ID09PSAnYmVmb3JlSW5pdCcpIHtcbiAgICAgIG5ld0ZpbHRlciA9IHtcbiAgICAgICAgcXVlcnk6IHRoaXMuY29uZmlnLmJhc2VRdWVyeSA/IFsgLi4udGhpcy5jb25maWcuYmFzZVF1ZXJ5IF0gOiBbXSxcbiAgICAgICAgcGFnaW5hdGlvbk1vZGU6IHRoaXMuY29uZmlnLmxpc3QucGFnaW5hdGlvbk1vZGUsXG4gICAgICAgIGxpbWl0OiB0aGlzLmNvbmZpZy5wYWdpbmF0aW9uID8gdGhpcy5jb25maWcucGFnaW5hdGlvbi5saW1pdCA6IG51bGwsXG4gICAgICAgIG9mZnNldDogdGhpcy5jb25maWcucGFnaW5hdGlvbiA/IDAgOiBudWxsLFxuICAgICAgICBzb3J0Qnk6IHRoaXMuY29uZmlnLnNvcnQgPyB0aGlzLmNvbmZpZy5zb3J0W1wiZGVmYXVsdFwiXSA6IG51bGwsXG4gICAgICAgIHNvcnREZXNjOiB0aGlzLmNvbmZpZy5zb3J0ID8gdGhpcy5jb25maWcuc29ydFtcImRlZmF1bHREZXNjXCJdIDogbnVsbCxcbiAgICAgICAgLi4udGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlclxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICBuZXdGaWx0ZXIgPSB0aGlzLmZpbHRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3RmlsdGVyID0ge1xuICAgICAgICBwYWdpbmF0aW9uTW9kZTogdGhpcy5jb25maWcubGlzdC5wYWdpbmF0aW9uTW9kZSxcbiAgICAgICAgbGltaXQ6IHRoaXMuc2VhcmNoU2VydmljZS5maWx0ZXI/LmxpbWl0ID8gdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlci5saW1pdCA6IHRoaXMuY29uZmlnLnBhZ2luYXRpb25cbiAgICAgICAgICAgID8gdGhpcy5jb25maWcucGFnaW5hdGlvbi5saW1pdCA6IG51bGwsXG4gICAgICAgIG9mZnNldDogdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlcj8ub2Zmc2V0IHx8IHRoaXMuc2VhcmNoU2VydmljZS5maWx0ZXI/Lm9mZnNldCA9PT0gMFxuICAgICAgICAgICAgPyB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyLm9mZnNldCA6IHRoaXMuY29uZmlnLnBhZ2luYXRpb24gPyAwIDogbnVsbCxcbiAgICAgICAgc29ydEJ5OiB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyPy5zb3J0QnkgPyB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyLnNvcnRCeSA6IHRoaXMuY29uZmlnLnNvcnRcbiAgICAgICAgICAgID8gdGhpcy5jb25maWcuc29ydFtcImRlZmF1bHRcIl0gOiBudWxsLFxuICAgICAgICBzb3J0RGVzYzogdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlcj8uc29ydERlc2MgPyB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyLnNvcnREZXNjIDogIHRoaXMuY29uZmlnLnNvcnRcbiAgICAgICAgICAgID8gdGhpcy5jb25maWcuc29ydFtcImRlZmF1bHREZXNjXCJdIDogbnVsbCxcbiAgICAgICAgcXVlcnk6IHRoaXMuY29uZmlnLmJhc2VRdWVyeSA/IFsgLi4udGhpcy5jb25maWcuYmFzZVF1ZXJ5IF0gOiBbXSxcbiAgICAgICAgLi4udGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlclxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmZhY2FkZS5yZWFkKG5ld0ZpbHRlcik7XG5cbiAgICBjb25zdCBlbmRCdXR0b25zID0gdGhpcy5nZXRFbmRCdXR0b25zKCk7XG5cbiAgICB0aGlzLnBhZ2VPcHRpb25zID0ge1xuICAgICAgdGl0bGU6IHRoaXMuY29uZmlnLnRpdGxlLFxuICAgICAgc2VhcmNoOiB0aGlzLmNvbmZpZy5zZWFyY2hcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB0ZXh0JDogdGhpcy5maWx0ZXIkLnBpcGUobWFwKChmKSA9PiAoZiA/IGYuc2VhcmNoVGV4dCA6IG51bGwpKSksXG4gICAgICAgICAgICBzZXQ6ICh0eHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHR4dCAhPT0gdGhpcy5maWx0ZXIuc2VhcmNoVGV4dClcbiAgICAgICAgICAgICAgICB0aGlzLmZhY2FkZS5yZWFkKHtcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgc2VhcmNoVGV4dDogdHh0LFxuICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbCxcbiAgICAgIGVuZEJ1dHRvbnM6IGVuZEJ1dHRvbnMsXG4gICAgfTtcblxuICAgIGNvbnN0IGNvbXBpbGVkQ29tcG9uZW50cyA9XG4gICAgICBhd2FpdCB0aGlzLmR5bmFtaWNDb21wb25lbnRMb2FkZXIuZ2V0Q29tcG9uZW50c1dpdGhGYWN0b3JpZXMoe1xuICAgICAgICBjb21wb25lbnRzOiBbXG4gICAgICAgICAgLi4uKHRoaXMuY29uZmlnLmRldGFpbHMgJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLnRvcFxuICAgICAgICAgICAgPyBbdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0udG9wXVxuICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgLi4uKHRoaXMuY29uZmlnLmRldGFpbHMgJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLmJvdHRvbVxuICAgICAgICAgICAgPyBbdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0uYm90dG9tXVxuICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgLi4uKHRoaXMuY29uZmlnLmxpc3QgJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZy5saXN0W1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgICAgIHRoaXMuY29uZmlnLmxpc3RbXCJjb21wb25lbnRzXCJdLnRvcFxuICAgICAgICAgICAgPyBbdGhpcy5jb25maWcubGlzdFtcImNvbXBvbmVudHNcIl0udG9wXVxuICAgICAgICAgICAgOiBbXSksXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgIHRoaXMubGlzdE9wdGlvbnMgPSB7XG4gICAgICBwcm92aWRlcjoge1xuICAgICAgICBnZXREYXRhOiAoZmlsdGVyKTogdm9pZCA9PiB7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsID0ge1xuICAgICAgICAgICAgLi4udGhpcy5maWx0ZXIsXG4gICAgICAgICAgICAuLi5maWx0ZXIsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLmZhY2FkZS5yZWFkKGdsb2JhbCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2hhbmdlTXVsdGlTZWxlY3RlZDogYXN5bmMgKGxpc3QpID0+IHtcbiAgICAgICAgICBpZiAobGlzdC5sZW5ndGggJiYgIXRoaXMubWVudVNlcnZpY2Uub3BlbmVkRW5kKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1lbnVTZXJ2aWNlLm9wZW5FbmQoe1xuICAgICAgICAgICAgICBpbmplY3RvcjogdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBNdWx0aXNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWxpc3QubGVuZ3RoICYmIHRoaXMubWVudVNlcnZpY2Uub3BlbmVkRW5kKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1lbnVTZXJ2aWNlLmNsb3NlRW5kKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5mYWNhZGUubXVsdGlTZWxlY3QobGlzdCk7XG4gICAgICAgIH0sXG4gICAgICAgIGxpc3QkOiB0aGlzLmZhY2FkZS5saXN0JCxcbiAgICAgICAgbG9hZGluZyQ6IHRoaXMuZmFjYWRlLmxvYWRlZCQucGlwZShtYXAoKGwpID0+ICFsKSksXG4gICAgICB9LFxuICAgICAgY2VsbFBpcGU6IHRoaXMuY29uZmlnLmxpc3QgPyB0aGlzLmNvbmZpZy5saXN0LmNlbGxQaXBlIDogbnVsbCxcbiAgICAgIG1vZGU6IHRoaXMuY29uZmlnLmxpc3Q/Lm1vZGUsXG4gICAgICB0eXBlOiB0aGlzLmNvbmZpZy50eXBlLFxuICAgICAgZGV0YWlsczogdGhpcy5jb25maWcuZGV0YWlsc1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIHByb3ZpZGVyOiB7XG4gICAgICAgICAgICAgIGdldERhdGE6IChpZCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmFjYWRlLnNlbGVjdChpZCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGNsZWFyRGF0YTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmFjYWRlLnVuc2VsZWN0KCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGl0ZW0kOiB0aGlzLmZhY2FkZS5zZWxlY3RlZCQsXG4gICAgICAgICAgICAgIGxvYWRpbmckOiB0aGlzLmZhY2FkZS5sb2FkZWQkLnBpcGUobWFwKChsKSA9PiAhbCkpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBvbmVudEZhY3Rvcmllczoge1xuICAgICAgICAgICAgICB0b3A6XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlscyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0udG9wXG4gICAgICAgICAgICAgICAgICA/IGNvbXBpbGVkQ29tcG9uZW50cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgIChjYykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmNvbXBvbmVudCA9PT0gdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0udG9wXG4gICAgICAgICAgICAgICAgICAgICkuZmFjdG9yeVxuICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICBib3R0b206XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlscyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0uYm90dG9tXG4gICAgICAgICAgICAgICAgICA/IGNvbXBpbGVkQ29tcG9uZW50cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgIChjYykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmNvbXBvbmVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLmJvdHRvbVxuICAgICAgICAgICAgICAgICAgICApLmZhY3RvcnlcbiAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGwsXG4gICAgICBpdGVtOlxuICAgICAgICAhIXRoaXMuY29uZmlnLmVkaXQgfHwgdGhpcy5jb25maWcuZGV0YWlsc1xuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgcm91dGluZ1ByZWZpeDogXCIvXCIgKyB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwgKyBcIi9cIixcbiAgICAgICAgICAgICAgICBlZGl0OiAhIXRoaXMuY29uZmlnLmVkaXQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiBudWxsLFxuICAgICAgcmVtb3ZlOiB0aGlzLmNvbmZpZy5yZW1vdmVcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBwcm92aWRlcjoge1xuICAgICAgICAgICAgICBpbnZva2U6IChpZCkgPT4gdGhpcy5mYWNhZGUuZGVsZXRlKGlkKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGwsXG4gICAgICBwYWdpbmF0aW9uOiBhd2FpdCB0aGlzLnBhZ2luYXRpb25GYWNhZGUuY3JlYXRlKHtcbiAgICAgICAgbW9kZTogdGhpcy5jb25maWcubGlzdC5wYWdpbmF0aW9uTW9kZSxcbiAgICAgICAgbGltaXQ6IHRoaXMuY29uZmlnLnBhZ2luYXRpb24ubGltaXQsXG4gICAgICAgIHByb3ZpZGVyOiB7XG4gICAgICAgICAgZ2V0RmlsdGVyOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXI7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXRMaW5rczogKCkgPT4gdGhpcy5saW5rcyxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgc29ydDogdGhpcy5jb25maWcuc29ydCxcbiAgICB9O1xuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLmluaXRDbG9zZU1lbnUoKTtcbiAgICB0aGlzLmluaXRUb3BDb21wb25lbnQoY29tcGlsZWRDb21wb25lbnRzKTtcblxuICAgIHRoaXMucmVmcmVzaER5bmFtaWNJbnN0YW5jZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q2xvc2VNZW51KCkge1xuICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuY2xlYXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2xlYXIoKSB7XG4gICAgYXdhaXQgdGhpcy5tZW51U2VydmljZS5jbG9zZUVuZCgpO1xuXG4gICAgdGhpcy5saXN0T3B0aW9ucyA9IHtcbiAgICAgIC4uLnRoaXMubGlzdE9wdGlvbnMsXG4gICAgICBzZWxlY3Q6IG51bGwsXG4gICAgfTtcblxuICAgIHRoaXMuZmFjYWRlLm11bHRpU2VsZWN0KFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW5kQnV0dG9ucygpOiBBcnJheTxJSWNvbkJ1dHRvbk9wdGlvbnM+IHtcbiAgICBjb25zdCBmaWVsZHNXaXRoT3B0aW9ucyA9IGdldE1vZGVsRmllbGRzV2l0aE9wdGlvbnMobmV3IHRoaXMuY29uZmlnLnR5cGUoKSk7XG4gICAgY29uc3QgbW9kZWxPcHRpb25zID0gZ2V0TW9kZWxPcHRpb25zKHRoaXMuY29uZmlnLnR5cGUpO1xuXG4gICAgY29uc3Qgc2hvd0ZpbHRlcnMgPVxuICAgICAgZmllbGRzV2l0aE9wdGlvbnMuc29tZShcbiAgICAgICAgKHgpID0+ICh4Lm9wdGlvbnM/Lmxpc3QgYXMgSUZpZWxkTGlzdE1ldGFkYXRhKT8uZmlsdGVyXG4gICAgICApIHx8IG1vZGVsT3B0aW9ucz8uZmlsdGVycz8ubGVuZ3RoO1xuXG4gICAgY29uc3Qgc2hvd011bHRpRWRpdCA9XG4gICAgICAgIHRoaXMuY29uZmlnLmxpc3Q/LmNvbXBvbmVudHM/Lm11bHRpIHx8XG4gICAgICAgIChcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmVkaXQgJiZcbiAgICAgICAgICAgIGZpZWxkc1dpdGhPcHRpb25zLnNvbWUoXG4gICAgICAgICAgICAgICAgKHgpID0+ICh4Lm9wdGlvbnM/LnVwZGF0ZSBhcyBJRmllbGRFZGl0TWV0YWRhdGEpPy5tdWx0aVxuICAgICAgICAgICAgKSAmJlxuICAgICAgICAgICAgIXRoaXMuaGFyZHdhcmVTZXJ2aWNlLmlzTW9iaWxlICYmXG4gICAgICAgICAgICAoIXRoaXMuY29uZmlnPy5saXN0Py5tb2RlIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWc/Lmxpc3Q/Lm1vZGUgPT09IExpc3RNb2RlLmRlc2t0b3ApXG4gICAgICAgICk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgLi4uKHNob3dNdWx0aUVkaXRcbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGljb246IFwiY2hlY2tib3gtb3V0bGluZVwiLFxuICAgICAgICAgICAgICB0ZXh0OiBcIm11bHRpXCIsXG4gICAgICAgICAgICAgIGhhbmRsZXI6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgLi4udGhpcy5saXN0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdDogdGhpcy5saXN0T3B0aW9ucy5zZWxlY3QgPT09IFwibXVsdGlcIiA/IG51bGwgOiBcIm11bHRpXCIsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLmZhY2FkZS5tdWx0aVNlbGVjdChbXSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWVudVNlcnZpY2Uub3BlbmVkRW5kKVxuICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5tZW51U2VydmljZS5jbG9zZUVuZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHNob3dGaWx0ZXJzXG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpY29uOiBcImZpbHRlci1vdXRsaW5lXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiZmlsdGVyc1wiLFxuICAgICAgICAgICAgICBoYW5kbGVyOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5tZW51U2VydmljZS5vcGVuRW5kKHtcbiAgICAgICAgICAgICAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yLFxuICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBGaWx0ZXJzQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHRoaXMuY29uZmlnLmFkZFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWNvbjogXCJhZGRcIixcbiAgICAgICAgICAgICAgdGV4dDogXCJhZGRcIixcbiAgICAgICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgICAgICAgICAgIFwiL1wiICsgdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QudXJsICsgXCIvYWRkXCIsXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSksXG4gICAgICAuLi4odGhpcy5jb25maWcuZXhwb3J0XG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0ZXh0OiBcImV4cG9ydFwiLFxuICAgICAgICAgICAgICBpY29uOiBcImRvd25sb2FkLW91dGxpbmVcIixcbiAgICAgICAgICAgICAgdHlwZTogXCJwb3BvdmVyXCIgYXMgXCJwb3BvdmVyXCIsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogRXhwb3J0Q29tcG9uZW50LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHRoaXMuY29uZmlnLmJ1dHRvbnMgPyB0aGlzLmNvbmZpZy5idXR0b25zIDogW10pLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGluaXRUb3BDb21wb25lbnQoXG4gICAgY29tcGlsZWRDb21wb25lbnRzOiB7XG4gICAgICBjb21wb25lbnQ6IGFueTtcbiAgICAgIGZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8YW55PjtcbiAgICB9W11cbiAgKSB7XG4gICAgY29uc3QgZmFjdG9yeSA9XG4gICAgICB0aGlzLmNvbmZpZy5saXN0ICYmXG4gICAgICB0aGlzLmNvbmZpZy5saXN0W1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgdGhpcy5jb25maWcubGlzdFtcImNvbXBvbmVudHNcIl0udG9wXG4gICAgICAgID8gY29tcGlsZWRDb21wb25lbnRzLmZpbmQoXG4gICAgICAgICAgICAoY2MpID0+IGNjLmNvbXBvbmVudCA9PT0gdGhpcy5jb25maWcubGlzdFtcImNvbXBvbmVudHNcIl0udG9wXG4gICAgICAgICAgKS5mYWN0b3J5XG4gICAgICAgIDogbnVsbDtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKGZhY3RvcnkgJiYgIXRoaXMudG9wVHBsLmdldCgwKSkge1xuICAgICAgICB0aGlzLnRvcFRwbC5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -8,7 +8,7 @@ import { map, tap, first, catchError } from 'rxjs/operators';
8
8
  import { FieldType, getModelOptions, getModelFieldsWithOptions } from '@smartsoft001/models';
9
9
  import * as i1$1 from '@ionic/angular';
10
10
  import { IonDatetime, IonContent } from '@ionic/angular';
11
- import * as moment from 'moment';
11
+ import moment from 'moment';
12
12
  import { GuidService } from '@smartsoft001/utils';
13
13
  import { __decorate, __metadata, __awaiter } from 'tslib';
14
14
  import { Debounce, debounce } from 'lodash-decorators';
@@ -19,6 +19,8 @@ import { CommonModule } from '@angular/common';
19
19
  import * as i4 from '@ngx-translate/core';
20
20
  import { Subscription, combineLatest, forkJoin, of, BehaviorSubject } from 'rxjs';
21
21
  import * as _ from 'lodash';
22
+ import * as i6 from 'ng-dynamic-component';
23
+ import { DynamicIoModule } from 'ng-dynamic-component';
22
24
  import * as i2$1 from '@angular/common/http';
23
25
  import 'reflect-metadata';
24
26
  import * as i1$2 from '@angular/router';
@@ -885,11 +887,13 @@ class MultiselectComponent {
885
887
  }),
886
888
  confirm: true
887
889
  };
890
+ this.showForm = false;
888
891
  this.list$ = this.facade.multiSelected$.pipe(tap(list => {
889
892
  this.lock = true;
890
893
  const model = new this.config.type();
891
894
  const fieldsWithOptions = getModelFieldsWithOptions(model)
892
895
  .filter(f => { var _a; return (_a = f.options.update) === null || _a === void 0 ? void 0 : _a.multi; });
896
+ this.showForm = !!fieldsWithOptions.length;
893
897
  fieldsWithOptions.forEach(({ key }) => {
894
898
  const uniques = _.uniq(list.map(i => i[key]));
895
899
  if (uniques.length === 1) {
@@ -915,12 +919,12 @@ class MultiselectComponent {
915
919
  ngOnInit() {
916
920
  }
917
921
  }
918
- /** @nocollapse */ /** @nocollapse */ MultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MultiselectComponent, deps: [{ token: CrudFacade }, { token: CrudConfig }, { token: i3.MenuService }], target: i0.ɵɵFactoryTarget.Component });
919
- /** @nocollapse */ /** @nocollapse */ MultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: MultiselectComponent, selector: "smart-crud-multiselect", ngImport: i0, template: "<ng-container *ngIf=\"list$ | async; let list\">\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"onClose()\">\n <ion-icon slot=\"icon-only\" name=\"close\"> </ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'selected' | translate }}: {{ list?.length }}</ion-title>\n </ion-toolbar>\n </ion-header>\n\n <div *ngIf=\"item\">\n <smart-form [options]=\"item | smartFormOptions : 'multiUpdate' : config.type\" (valuePartialChange)=\"onPartialChange($event, list)\" (validChange)=\"onValidChange($event)\"></smart-form>\n\n <smart-button style=\"float: right\" [disabled]=\"lock || !valid\" [options]=\"buttonOptions\">{{ 'change' | translate }}</smart-button>\n </div>\n</ng-container>", styles: [":host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){:host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}}@media only screen and (max-width: 420px){:host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}}:host ion-toolbar.ios{height:4.6rem;--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){:host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}:host ion-toolbar.ios ion-title{text-align:left;padding-left:5.2rem}:host ion-toolbar.ios ion-icon{color:var(--ion-color-light)}}@media only screen and (max-width: 420px){:host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}:host ion-toolbar.ios ion-title{text-align:left;padding-left:5.2rem}:host ion-toolbar.ios ion-icon{color:var(--ion-color-light)}}.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-title{text-align:left;padding-left:1.2rem}.modal-wrapper :host ion-toolbar.ios ion-icon{color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-buttons{margin:0}}@media only screen and (max-width: 420px){.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-title{text-align:left;padding-left:1.2rem}.modal-wrapper :host ion-toolbar.ios ion-icon{color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-buttons{margin:0}}:host ion-toolbar ion-menu-button{color:var(--ion-color-light)}:host ion-toolbar ion-buttons.ios{height:var(--smart-button-height);margin:0}\n"], components: [{ type: i1$1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i1$1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i1$1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i1$1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i1$1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i1$1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i3.FormComponent, selector: "smart-form", inputs: ["options"], outputs: ["invokeSubmit", "valueChange", "valuePartialChange", "validChange"] }, { type: i3.ButtonComponent, selector: "smart-button", inputs: ["options", "disabled"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i3$1.AsyncPipe, "translate": i4.TranslatePipe, "smartFormOptions": FormOptionsPipe } });
922
+ /** @nocollapse */ /** @nocollapse */ MultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MultiselectComponent, deps: [{ token: CrudFacade }, { token: CrudFullConfig }, { token: i3.MenuService }], target: i0.ɵɵFactoryTarget.Component });
923
+ /** @nocollapse */ /** @nocollapse */ MultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: MultiselectComponent, selector: "smart-crud-multiselect", ngImport: i0, template: "<ng-container *ngIf=\"list$ | async; let list\">\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"onClose()\">\n <ion-icon slot=\"icon-only\" name=\"close\"> </ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'selected' | translate }}: {{ list?.length }}</ion-title>\n </ion-toolbar>\n </ion-header>\n\n <div *ngIf=\"config?.list?.components?.multi\">\n <ng-template [ngComponentOutlet]=\"config?.list?.components?.multi\"\n [ndcDynamicInputs]=\"{ items: list }\"\n ></ng-template>\n </div>\n\n <div *ngIf=\"showForm && item\">\n <smart-form [options]=\"item | smartFormOptions : 'multiUpdate' : config.type\" (valuePartialChange)=\"onPartialChange($event, list)\" (validChange)=\"onValidChange($event)\"></smart-form>\n\n <smart-button style=\"float: right\" [disabled]=\"lock || !valid\" [options]=\"buttonOptions\">{{ 'change' | translate }}</smart-button>\n </div>\n</ng-container>", styles: [":host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){:host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}}@media only screen and (max-width: 420px){:host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}}:host ion-toolbar.ios{height:4.6rem;--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){:host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}:host ion-toolbar.ios ion-title{text-align:left;padding-left:5.2rem}:host ion-toolbar.ios ion-icon{color:var(--ion-color-light)}}@media only screen and (max-width: 420px){:host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}:host ion-toolbar.ios ion-title{text-align:left;padding-left:5.2rem}:host ion-toolbar.ios ion-icon{color:var(--ion-color-light)}}.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-title{text-align:left;padding-left:1.2rem}.modal-wrapper :host ion-toolbar.ios ion-icon{color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-buttons{margin:0}}@media only screen and (max-width: 420px){.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-title{text-align:left;padding-left:1.2rem}.modal-wrapper :host ion-toolbar.ios ion-icon{color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-buttons{margin:0}}:host ion-toolbar ion-menu-button{color:var(--ion-color-light)}:host ion-toolbar ion-buttons.ios{height:var(--smart-button-height);margin:0}\n"], components: [{ type: i1$1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i1$1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i1$1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i1$1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i1$1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i1$1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i3.FormComponent, selector: "smart-form", inputs: ["options"], outputs: ["invokeSubmit", "valueChange", "valuePartialChange", "validChange"] }, { type: i3.ButtonComponent, selector: "smart-button", inputs: ["options", "disabled"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModuleFactory"] }, { type: i6.ComponentOutletInjectorDirective, selector: "[ngComponentOutlet]", exportAs: ["ndcComponentOutletInjector"] }, { type: i6.DynamicIoDirective, selector: "[ndcDynamicInputs],[ndcDynamicOutputs],[ngComponentOutletNdcDynamicInputs],[ngComponentOutletNdcDynamicOutputs]", inputs: ["ndcDynamicInputs", "ngComponentOutletNdcDynamicInputs", "ndcDynamicOutputs", "ngComponentOutletNdcDynamicOutputs"] }], pipes: { "async": i3$1.AsyncPipe, "translate": i4.TranslatePipe, "smartFormOptions": FormOptionsPipe } });
920
924
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MultiselectComponent, decorators: [{
921
925
  type: Component,
922
- args: [{ selector: 'smart-crud-multiselect', template: "<ng-container *ngIf=\"list$ | async; let list\">\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"onClose()\">\n <ion-icon slot=\"icon-only\" name=\"close\"> </ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'selected' | translate }}: {{ list?.length }}</ion-title>\n </ion-toolbar>\n </ion-header>\n\n <div *ngIf=\"item\">\n <smart-form [options]=\"item | smartFormOptions : 'multiUpdate' : config.type\" (valuePartialChange)=\"onPartialChange($event, list)\" (validChange)=\"onValidChange($event)\"></smart-form>\n\n <smart-button style=\"float: right\" [disabled]=\"lock || !valid\" [options]=\"buttonOptions\">{{ 'change' | translate }}</smart-button>\n </div>\n</ng-container>", styles: [":host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){:host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}}@media only screen and (max-width: 420px){:host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}}:host ion-toolbar.ios{height:4.6rem;--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){:host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}:host ion-toolbar.ios ion-title{text-align:left;padding-left:5.2rem}:host ion-toolbar.ios ion-icon{color:var(--ion-color-light)}}@media only screen and (max-width: 420px){:host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}:host ion-toolbar.ios ion-title{text-align:left;padding-left:5.2rem}:host ion-toolbar.ios ion-icon{color:var(--ion-color-light)}}.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-title{text-align:left;padding-left:1.2rem}.modal-wrapper :host ion-toolbar.ios ion-icon{color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-buttons{margin:0}}@media only screen and (max-width: 420px){.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-title{text-align:left;padding-left:1.2rem}.modal-wrapper :host ion-toolbar.ios ion-icon{color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-buttons{margin:0}}:host ion-toolbar ion-menu-button{color:var(--ion-color-light)}:host ion-toolbar ion-buttons.ios{height:var(--smart-button-height);margin:0}\n"] }]
923
- }], ctorParameters: function () { return [{ type: CrudFacade }, { type: CrudConfig }, { type: i3.MenuService }]; } });
926
+ args: [{ selector: 'smart-crud-multiselect', template: "<ng-container *ngIf=\"list$ | async; let list\">\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"onClose()\">\n <ion-icon slot=\"icon-only\" name=\"close\"> </ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'selected' | translate }}: {{ list?.length }}</ion-title>\n </ion-toolbar>\n </ion-header>\n\n <div *ngIf=\"config?.list?.components?.multi\">\n <ng-template [ngComponentOutlet]=\"config?.list?.components?.multi\"\n [ndcDynamicInputs]=\"{ items: list }\"\n ></ng-template>\n </div>\n\n <div *ngIf=\"showForm && item\">\n <smart-form [options]=\"item | smartFormOptions : 'multiUpdate' : config.type\" (valuePartialChange)=\"onPartialChange($event, list)\" (validChange)=\"onValidChange($event)\"></smart-form>\n\n <smart-button style=\"float: right\" [disabled]=\"lock || !valid\" [options]=\"buttonOptions\">{{ 'change' | translate }}</smart-button>\n </div>\n</ng-container>", styles: [":host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){:host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}}@media only screen and (max-width: 420px){:host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}}:host ion-toolbar.ios{height:4.6rem;--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){:host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}:host ion-toolbar.ios ion-title{text-align:left;padding-left:5.2rem}:host ion-toolbar.ios ion-icon{color:var(--ion-color-light)}}@media only screen and (max-width: 420px){:host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}:host ion-toolbar.ios ion-title{text-align:left;padding-left:5.2rem}:host ion-toolbar.ios ion-icon{color:var(--ion-color-light)}}.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-title{text-align:left;padding-left:1.2rem}.modal-wrapper :host ion-toolbar.ios ion-icon{color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-buttons{margin:0}}@media only screen and (max-width: 420px){.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-title{text-align:left;padding-left:1.2rem}.modal-wrapper :host ion-toolbar.ios ion-icon{color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-buttons{margin:0}}:host ion-toolbar ion-menu-button{color:var(--ion-color-light)}:host ion-toolbar ion-buttons.ios{height:var(--smart-button-height);margin:0}\n"] }]
927
+ }], ctorParameters: function () { return [{ type: CrudFacade }, { type: CrudFullConfig }, { type: i3.MenuService }]; } });
924
928
 
925
929
  class CrudListGroupService {
926
930
  constructor(facade) {
@@ -1427,7 +1431,8 @@ class CrudComponentsModule {
1427
1431
  SharedModule,
1428
1432
  CrudPipesModule,
1429
1433
  FormsModule,
1430
- CommonModule
1434
+ CommonModule,
1435
+ DynamicIoModule
1431
1436
  ], exports: [CrudPipesModule, ExportComponent,
1432
1437
  FilterComponent,
1433
1438
  FilterTextComponent,
@@ -1453,7 +1458,8 @@ class CrudComponentsModule {
1453
1458
  SharedModule,
1454
1459
  CrudPipesModule,
1455
1460
  FormsModule,
1456
- CommonModule
1461
+ CommonModule,
1462
+ DynamicIoModule
1457
1463
  ], CrudPipesModule] });
1458
1464
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CrudComponentsModule, decorators: [{
1459
1465
  type: NgModule,
@@ -1467,7 +1473,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
1467
1473
  SharedModule,
1468
1474
  CrudPipesModule,
1469
1475
  FormsModule,
1470
- CommonModule
1476
+ CommonModule,
1477
+ DynamicIoModule
1471
1478
  ],
1472
1479
  exports: [
1473
1480
  CrudPipesModule,
@@ -1860,15 +1867,16 @@ class ListComponent extends CreateDynamicComponent('crud-list-page') {
1860
1867
  });
1861
1868
  }
1862
1869
  getEndButtons() {
1863
- var _a, _b, _c, _d, _e;
1870
+ var _a, _b, _c, _d, _e, _f, _g;
1864
1871
  const fieldsWithOptions = getModelFieldsWithOptions(new this.config.type());
1865
1872
  const modelOptions = getModelOptions(this.config.type);
1866
1873
  const showFilters = fieldsWithOptions.some((x) => { var _a, _b; return (_b = (_a = x.options) === null || _a === void 0 ? void 0 : _a.list) === null || _b === void 0 ? void 0 : _b.filter; }) || ((_a = modelOptions === null || modelOptions === void 0 ? void 0 : modelOptions.filters) === null || _a === void 0 ? void 0 : _a.length);
1867
- const showMultiEdit = this.config.edit &&
1868
- fieldsWithOptions.some((x) => { var _a, _b; return (_b = (_a = x.options) === null || _a === void 0 ? void 0 : _a.update) === null || _b === void 0 ? void 0 : _b.multi; }) &&
1869
- !this.hardwareService.isMobile &&
1870
- (!((_c = (_b = this.config) === null || _b === void 0 ? void 0 : _b.list) === null || _c === void 0 ? void 0 : _c.mode) ||
1871
- ((_e = (_d = this.config) === null || _d === void 0 ? void 0 : _d.list) === null || _e === void 0 ? void 0 : _e.mode) === ListMode.desktop);
1874
+ const showMultiEdit = ((_c = (_b = this.config.list) === null || _b === void 0 ? void 0 : _b.components) === null || _c === void 0 ? void 0 : _c.multi) ||
1875
+ (this.config.edit &&
1876
+ fieldsWithOptions.some((x) => { var _a, _b; return (_b = (_a = x.options) === null || _a === void 0 ? void 0 : _a.update) === null || _b === void 0 ? void 0 : _b.multi; }) &&
1877
+ !this.hardwareService.isMobile &&
1878
+ (!((_e = (_d = this.config) === null || _d === void 0 ? void 0 : _d.list) === null || _e === void 0 ? void 0 : _e.mode) ||
1879
+ ((_g = (_f = this.config) === null || _f === void 0 ? void 0 : _f.list) === null || _g === void 0 ? void 0 : _g.mode) === ListMode.desktop));
1872
1880
  return [
1873
1881
  ...(showMultiEdit
1874
1882
  ? [
@@ -2075,7 +2083,7 @@ class ItemComponent extends CreateDynamicComponent('crud-item-page') {
2075
2083
  this.detailsService.init();
2076
2084
  this.styleService.init(this.elementRef);
2077
2085
  this.pageService.checkPermissions();
2078
- if (this.router.routerState.snapshot.url.endsWith("/add")) {
2086
+ if (this.router.routerState.snapshot.url.split('?')[0].endsWith("/add")) {
2079
2087
  this.mode = "create";
2080
2088
  yield this.generateComponents('add');
2081
2089
  }