@dereekb/dbx-firebase 12.6.10 → 12.6.12

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 (43) hide show
  1. package/esm2022/lib/model/modules/model/entities/index.mjs +6 -0
  2. package/esm2022/lib/model/modules/model/entities/model.entities.component.mjs +73 -0
  3. package/esm2022/lib/model/modules/model/entities/model.entities.entity.component.mjs +28 -0
  4. package/esm2022/lib/model/modules/model/entities/model.entities.mjs +6 -0
  5. package/esm2022/lib/model/modules/model/entities/model.entities.popover.button.component.mjs +44 -0
  6. package/esm2022/lib/model/modules/model/entities/model.entities.popover.component.mjs +35 -0
  7. package/esm2022/lib/model/modules/model/entities/model.entities.source.directive.mjs +38 -0
  8. package/esm2022/lib/model/modules/model/entities/model.entities.widget.service.mjs +59 -0
  9. package/esm2022/lib/model/modules/model/index.mjs +2 -1
  10. package/esm2022/lib/model/modules/model/model.types.service.mjs +1 -1
  11. package/esm2022/lib/model/modules/store/index.mjs +5 -1
  12. package/esm2022/lib/model/modules/store/store.document.context.store.directive.mjs +19 -0
  13. package/esm2022/lib/model/modules/store/store.document.context.store.link.mjs +45 -0
  14. package/esm2022/lib/model/modules/store/store.document.context.store.mjs +86 -0
  15. package/esm2022/lib/model/modules/store/store.document.crud.mjs +1 -1
  16. package/esm2022/lib/model/modules/store/store.document.directive.mjs +1 -1
  17. package/esm2022/lib/model/modules/store/store.document.mjs +16 -4
  18. package/esm2022/lib/model/modules/store/store.mjs +2 -0
  19. package/esm2022/lib/model/modules/store/store.subcollection.document.mjs +1 -1
  20. package/esm2022/lib/model/modules/store/store.subcollection.rxjs.mjs +1 -1
  21. package/fesm2022/dereekb-dbx-firebase.mjs +409 -10
  22. package/fesm2022/dereekb-dbx-firebase.mjs.map +1 -1
  23. package/lib/model/modules/model/entities/index.d.ts +5 -0
  24. package/lib/model/modules/model/entities/model.entities.component.d.ts +25 -0
  25. package/lib/model/modules/model/entities/model.entities.d.ts +49 -0
  26. package/lib/model/modules/model/entities/model.entities.entity.component.d.ts +18 -0
  27. package/lib/model/modules/model/entities/model.entities.popover.button.component.d.ts +18 -0
  28. package/lib/model/modules/model/entities/model.entities.popover.component.d.ts +45 -0
  29. package/lib/model/modules/model/entities/model.entities.source.directive.d.ts +8 -0
  30. package/lib/model/modules/model/entities/model.entities.widget.service.d.ts +44 -0
  31. package/lib/model/modules/model/index.d.ts +1 -0
  32. package/lib/model/modules/store/index.d.ts +4 -0
  33. package/lib/model/modules/store/store.d.ts +79 -0
  34. package/lib/model/modules/store/store.document.context.store.d.ts +59 -0
  35. package/lib/model/modules/store/store.document.context.store.directive.d.ts +8 -0
  36. package/lib/model/modules/store/store.document.context.store.link.d.ts +17 -0
  37. package/lib/model/modules/store/store.document.crud.d.ts +1 -1
  38. package/lib/model/modules/store/store.document.d.ts +16 -76
  39. package/lib/model/modules/store/store.document.directive.d.ts +1 -1
  40. package/lib/model/modules/store/store.subcollection.document.d.ts +2 -1
  41. package/lib/model/modules/store/store.subcollection.rxjs.d.ts +1 -1
  42. package/lib/modules/storagefile/storagefile.upload.module.d.ts +1 -1
  43. package/package.json +1 -1
@@ -0,0 +1,6 @@
1
+ export * from './model.entities.component';
2
+ export * from './model.entities.popover.component';
3
+ export * from './model.entities.popover.button.component';
4
+ export * from './model.entities.source.directive';
5
+ export * from './model.entities.widget.service';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL21vZGVsL2VudGl0aWVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbW9kZWwuZW50aXRpZXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwuZW50aXRpZXMucG9wb3Zlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC5lbnRpdGllcy5wb3BvdmVyLmJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC5lbnRpdGllcy5zb3VyY2UuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwuZW50aXRpZXMud2lkZ2V0LnNlcnZpY2UnO1xuIl19
@@ -0,0 +1,73 @@
1
+ import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
2
+ import { MatAccordion } from '@angular/material/expansion';
3
+ import { DbxListEmptyContentComponent, DbxLoadingComponent } from '@dereekb/dbx-web';
4
+ import { DbxFirebaseModelEntitiesEntityComponent } from './model.entities.entity.component';
5
+ import { toObservable, toSignal } from '@angular/core/rxjs-interop';
6
+ import { combineLatest, defaultIfEmpty, map, shareReplay, switchMap } from 'rxjs';
7
+ import { beginLoading, filterMaybeArray, loadingStateContext, mapLoadingStateValueWithOperator, switchMapMaybe, valueFromFinishedLoadingState } from '@dereekb/rxjs';
8
+ import * as i0 from "@angular/core";
9
+ export class DbxFirebaseModelEntitiesComponent {
10
+ /**
11
+ * All input entities.
12
+ */
13
+ entities = input();
14
+ entities$ = toObservable(this.entities).pipe(switchMapMaybe(), map((x) => x ?? beginLoading()), shareReplay(1));
15
+ /**
16
+ * Whether the accordion should allow multiple expanded panels.
17
+ */
18
+ multi = input(true);
19
+ entitiesWithKeysState$ = this.entities$.pipe(mapLoadingStateValueWithOperator(switchMap((entities) => {
20
+ const entitiesWithStore = (entities ?? []).filter((x) => Boolean(x.store));
21
+ const entitiesWithKeys = combineLatest(entitiesWithStore.map((x) => {
22
+ const obs = x.store.currentKey$.pipe(map((key) => (key ? { key, ...x } : null)));
23
+ return obs;
24
+ }));
25
+ return entitiesWithKeys.pipe(filterMaybeArray(), defaultIfEmpty([]));
26
+ })), shareReplay(1));
27
+ entitiesWithKeys$ = this.entitiesWithKeysState$.pipe(valueFromFinishedLoadingState(), shareReplay(1));
28
+ entitiesWithKeysSignal = toSignal(this.entitiesWithKeys$, { initialValue: [] });
29
+ hasNoEntitiesSignal = computed(() => !this.entitiesWithKeysSignal()?.length);
30
+ context = loadingStateContext({ obs: this.entitiesWithKeysState$ });
31
+ ngOnDestroy() {
32
+ this.context.destroy();
33
+ }
34
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelEntitiesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
35
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxFirebaseModelEntitiesComponent, isStandalone: true, selector: "dbx-firebase-model-entities", inputs: { entities: { classPropertyName: "entities", publicName: "entities", isSignal: true, isRequired: false, transformFunction: null }, multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
36
+ <dbx-loading [linear]="true" [context]="context">
37
+ <mat-accordion [multi]="multi()">
38
+ @for (entity of entitiesWithKeysSignal(); track entity.key) {
39
+ <dbx-firebase-model-entities-entity [entity]="entity"></dbx-firebase-model-entities-entity>
40
+ }
41
+ </mat-accordion>
42
+ @if (hasNoEntitiesSignal()) {
43
+ <dbx-list-empty-content>
44
+ <ng-content select="[empty]"></ng-content>
45
+ </dbx-list-empty-content>
46
+ }
47
+ </dbx-loading>
48
+ `, isInline: true, dependencies: [{ kind: "directive", type: MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "color", "diameter", "linear", "loading", "error", "context"] }, { kind: "component", type: DbxFirebaseModelEntitiesEntityComponent, selector: "dbx-firebase-model-entities-entity", inputs: ["entity"] }, { kind: "component", type: DbxListEmptyContentComponent, selector: "dbx-list-empty-content" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
49
+ }
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelEntitiesComponent, decorators: [{
51
+ type: Component,
52
+ args: [{
53
+ selector: 'dbx-firebase-model-entities',
54
+ template: `
55
+ <dbx-loading [linear]="true" [context]="context">
56
+ <mat-accordion [multi]="multi()">
57
+ @for (entity of entitiesWithKeysSignal(); track entity.key) {
58
+ <dbx-firebase-model-entities-entity [entity]="entity"></dbx-firebase-model-entities-entity>
59
+ }
60
+ </mat-accordion>
61
+ @if (hasNoEntitiesSignal()) {
62
+ <dbx-list-empty-content>
63
+ <ng-content select="[empty]"></ng-content>
64
+ </dbx-list-empty-content>
65
+ }
66
+ </dbx-loading>
67
+ `,
68
+ imports: [MatAccordion, DbxLoadingComponent, DbxFirebaseModelEntitiesEntityComponent, DbxListEmptyContentComponent],
69
+ changeDetection: ChangeDetectionStrategy.OnPush,
70
+ standalone: true
71
+ }]
72
+ }] });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuZW50aXRpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbW9kdWxlcy9tb2RlbC9lbnRpdGllcy9tb2RlbC5lbnRpdGllcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQWdCLG1CQUFtQixFQUFFLGdDQUFnQyxFQUFFLGNBQWMsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFzQm5MLE1BQU0sT0FBTyxpQ0FBaUM7SUFDNUM7O09BRUc7SUFDTSxRQUFRLEdBQUcsS0FBSyxFQUFzRCxDQUFDO0lBQ3ZFLFNBQVMsR0FBdUQsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQ3ZHLGNBQWMsRUFBRSxFQUNoQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxZQUFZLEVBQTRCLENBQUMsRUFDekQsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFRjs7T0FFRztJQUNNLEtBQUssR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7SUFFN0Isc0JBQXNCLEdBQXNFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUN0SCxnQ0FBZ0MsQ0FDOUIsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7UUFDckIsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQXNDLENBQUM7UUFDaEgsTUFBTSxnQkFBZ0IsR0FBK0QsYUFBYSxDQUNoRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMxQixNQUFNLEdBQUcsR0FBNkQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzSSxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUMsQ0FBQyxDQUNILEVBQ0QsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFTyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdEcsc0JBQXNCLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRWhGLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTdFLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO0lBRTdFLFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pCLENBQUM7d0dBM0NVLGlDQUFpQzs0RkFBakMsaUNBQWlDLDRWQWxCbEM7Ozs7Ozs7Ozs7Ozs7R0FhVCw0REFDUyxZQUFZLCtJQUFFLG1CQUFtQixtS0FBRSx1Q0FBdUMsbUdBQUUsNEJBQTRCOzs0RkFJdkcsaUNBQWlDO2tCQXBCN0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7R0FhVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsdUNBQXVDLEVBQUUsNEJBQTRCLENBQUM7b0JBQ25ILGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VNb2RlbEVudGl0eSwgRGJ4RmlyZWJhc2VNb2RlbEVudGl0eVdpdGhLZXlBbmRTdG9yZSwgRGJ4RmlyZWJhc2VNb2RlbEVudGl0eVdpdGhTdG9yZSB9IGZyb20gJy4vbW9kZWwuZW50aXRpZXMnO1xuaW1wb3J0IHsgTWF0QWNjb3JkaW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcbmltcG9ydCB7IERieExpc3RFbXB0eUNvbnRlbnRDb21wb25lbnQsIERieExvYWRpbmdDb21wb25lbnQgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IERieEZpcmViYXNlTW9kZWxFbnRpdGllc0VudGl0eUNvbXBvbmVudCB9IGZyb20gJy4vbW9kZWwuZW50aXRpZXMuZW50aXR5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZGVmYXVsdElmRW1wdHksIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IGJlZ2luTG9hZGluZywgZmlsdGVyTWF5YmVBcnJheSwgTG9hZGluZ1N0YXRlLCBsb2FkaW5nU3RhdGVDb250ZXh0LCBtYXBMb2FkaW5nU3RhdGVWYWx1ZVdpdGhPcGVyYXRvciwgc3dpdGNoTWFwTWF5YmUsIHZhbHVlRnJvbUZpbmlzaGVkTG9hZGluZ1N0YXRlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC1maXJlYmFzZS1tb2RlbC1lbnRpdGllcycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRieC1sb2FkaW5nIFtsaW5lYXJdPVwidHJ1ZVwiIFtjb250ZXh0XT1cImNvbnRleHRcIj5cbiAgICAgIDxtYXQtYWNjb3JkaW9uIFttdWx0aV09XCJtdWx0aSgpXCI+XG4gICAgICAgIEBmb3IgKGVudGl0eSBvZiBlbnRpdGllc1dpdGhLZXlzU2lnbmFsKCk7IHRyYWNrIGVudGl0eS5rZXkpIHtcbiAgICAgICAgICA8ZGJ4LWZpcmViYXNlLW1vZGVsLWVudGl0aWVzLWVudGl0eSBbZW50aXR5XT1cImVudGl0eVwiPjwvZGJ4LWZpcmViYXNlLW1vZGVsLWVudGl0aWVzLWVudGl0eT5cbiAgICAgICAgfVxuICAgICAgPC9tYXQtYWNjb3JkaW9uPlxuICAgICAgQGlmIChoYXNOb0VudGl0aWVzU2lnbmFsKCkpIHtcbiAgICAgICAgPGRieC1saXN0LWVtcHR5LWNvbnRlbnQ+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2VtcHR5XVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kYngtbGlzdC1lbXB0eS1jb250ZW50PlxuICAgICAgfVxuICAgIDwvZGJ4LWxvYWRpbmc+XG4gIGAsXG4gIGltcG9ydHM6IFtNYXRBY2NvcmRpb24sIERieExvYWRpbmdDb21wb25lbnQsIERieEZpcmViYXNlTW9kZWxFbnRpdGllc0VudGl0eUNvbXBvbmVudCwgRGJ4TGlzdEVtcHR5Q29udGVudENvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlTW9kZWxFbnRpdGllc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBBbGwgaW5wdXQgZW50aXRpZXMuXG4gICAqL1xuICByZWFkb25seSBlbnRpdGllcyA9IGlucHV0PE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPERieEZpcmViYXNlTW9kZWxFbnRpdHlbXT4+PigpO1xuICByZWFkb25seSBlbnRpdGllcyQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPERieEZpcmViYXNlTW9kZWxFbnRpdHlbXT4+ID0gdG9PYnNlcnZhYmxlKHRoaXMuZW50aXRpZXMpLnBpcGUoXG4gICAgc3dpdGNoTWFwTWF5YmUoKSxcbiAgICBtYXAoKHgpID0+IHggPz8gYmVnaW5Mb2FkaW5nPERieEZpcmViYXNlTW9kZWxFbnRpdHlbXT4oKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYWNjb3JkaW9uIHNob3VsZCBhbGxvdyBtdWx0aXBsZSBleHBhbmRlZCBwYW5lbHMuXG4gICAqL1xuICByZWFkb25seSBtdWx0aSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHJlYWRvbmx5IGVudGl0aWVzV2l0aEtleXNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPERieEZpcmViYXNlTW9kZWxFbnRpdHlXaXRoS2V5QW5kU3RvcmVbXT4+ID0gdGhpcy5lbnRpdGllcyQucGlwZShcbiAgICBtYXBMb2FkaW5nU3RhdGVWYWx1ZVdpdGhPcGVyYXRvcihcbiAgICAgIHN3aXRjaE1hcCgoZW50aXRpZXMpID0+IHtcbiAgICAgICAgY29uc3QgZW50aXRpZXNXaXRoU3RvcmUgPSAoZW50aXRpZXMgPz8gW10pLmZpbHRlcigoeCkgPT4gQm9vbGVhbih4LnN0b3JlKSkgYXMgRGJ4RmlyZWJhc2VNb2RlbEVudGl0eVdpdGhTdG9yZVtdO1xuICAgICAgICBjb25zdCBlbnRpdGllc1dpdGhLZXlzOiBPYnNlcnZhYmxlPE1heWJlPERieEZpcmViYXNlTW9kZWxFbnRpdHlXaXRoS2V5QW5kU3RvcmU+W10+ID0gY29tYmluZUxhdGVzdChcbiAgICAgICAgICBlbnRpdGllc1dpdGhTdG9yZS5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9iczogT2JzZXJ2YWJsZTxNYXliZTxEYnhGaXJlYmFzZU1vZGVsRW50aXR5V2l0aEtleUFuZFN0b3JlPj4gPSB4LnN0b3JlLmN1cnJlbnRLZXkkLnBpcGUobWFwKChrZXkpID0+IChrZXkgPyB7IGtleSwgLi4ueCB9IDogbnVsbCkpKTtcbiAgICAgICAgICAgIHJldHVybiBvYnM7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gZW50aXRpZXNXaXRoS2V5cy5waXBlKGZpbHRlck1heWJlQXJyYXkoKSwgZGVmYXVsdElmRW1wdHkoW10pKTtcbiAgICAgIH0pXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGVudGl0aWVzV2l0aEtleXMkID0gdGhpcy5lbnRpdGllc1dpdGhLZXlzU3RhdGUkLnBpcGUodmFsdWVGcm9tRmluaXNoZWRMb2FkaW5nU3RhdGUoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IGVudGl0aWVzV2l0aEtleXNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmVudGl0aWVzV2l0aEtleXMkLCB7IGluaXRpYWxWYWx1ZTogW10gfSk7XG5cbiAgcmVhZG9ubHkgaGFzTm9FbnRpdGllc1NpZ25hbCA9IGNvbXB1dGVkKCgpID0+ICF0aGlzLmVudGl0aWVzV2l0aEtleXNTaWduYWwoKT8ubGVuZ3RoKTtcblxuICByZWFkb25seSBjb250ZXh0ID0gbG9hZGluZ1N0YXRlQ29udGV4dCh7IG9iczogdGhpcy5lbnRpdGllc1dpdGhLZXlzU3RhdGUkIH0pO1xuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dC5kZXN0cm95KCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';
2
+ import { DbxInjectionComponent } from '@dereekb/dbx-core';
3
+ import { MatExpansionPanel, MatExpansionPanelHeader, MatExpansionPanelTitle, MatExpansionPanelDescription, MatExpansionPanelContent } from '@angular/material/expansion';
4
+ import { toObservable } from '@angular/core/rxjs-interop';
5
+ import { distinctUntilChanged, map, shareReplay, switchMap } from 'rxjs';
6
+ import { filterMaybe } from '@dereekb/rxjs';
7
+ import { DbxFirebaseModelEntitiesWidgetService } from './model.entities.widget.service';
8
+ import { DbxFirebaseModelTypesService } from '../model.types.service';
9
+ import * as i0 from "@angular/core";
10
+ export class DbxFirebaseModelEntitiesEntityComponent {
11
+ widgetService = inject(DbxFirebaseModelEntitiesWidgetService);
12
+ modelTypesService = inject(DbxFirebaseModelTypesService);
13
+ /**
14
+ * The input entity
15
+ */
16
+ entity = input.required();
17
+ modelIdentity = computed(() => this.entity().modelIdentity);
18
+ entity$ = toObservable(this.entity);
19
+ store$ = this.entity$.pipe(map((x) => x.store), filterMaybe(), distinctUntilChanged(), shareReplay(1));
20
+ loadingState$ = this.store$.pipe(switchMap((x) => x.dataLoadingState$));
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelEntitiesEntityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: DbxFirebaseModelEntitiesEntityComponent, isStandalone: true, selector: "dbx-firebase-model-entities-entity", inputs: { entity: { classPropertyName: "entity", publicName: "entity", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title>\n <span class=\"bold dbx-button-spacer\">Name</span>\n <!-- TODO: use the display info to show the name -->\n </mat-panel-title>\n <mat-panel-description>\n <!-- TODO: ... -->\n </mat-panel-description>\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <!-- TODO: Content -->\n </ng-template>\n</mat-expansion-panel>\n", dependencies: [{ kind: "component", type: MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "directive", type: MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelEntitiesEntityComponent, decorators: [{
25
+ type: Component,
26
+ args: [{ selector: 'dbx-firebase-model-entities-entity', imports: [DbxInjectionComponent, MatExpansionPanel, MatExpansionPanelHeader, MatExpansionPanelTitle, MatExpansionPanelDescription, MatExpansionPanelContent], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title>\n <span class=\"bold dbx-button-spacer\">Name</span>\n <!-- TODO: use the display info to show the name -->\n </mat-panel-title>\n <mat-panel-description>\n <!-- TODO: ... -->\n </mat-panel-description>\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <!-- TODO: Content -->\n </ng-template>\n</mat-expansion-panel>\n" }]
27
+ }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuZW50aXRpZXMuZW50aXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL21vZHVsZXMvbW9kZWwvZW50aXRpZXMvbW9kZWwuZW50aXRpZXMuZW50aXR5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL21vZHVsZXMvbW9kZWwvZW50aXRpZXMvbW9kZWwuZW50aXRpZXMuZW50aXR5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLDRCQUE0QixFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekssT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQVN0RSxNQUFNLE9BQU8sdUNBQXVDO0lBQ3pDLGFBQWEsR0FBRyxNQUFNLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUM5RCxpQkFBaUIsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUVsRTs7T0FFRztJQUNNLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUEwQixDQUFDO0lBRWxELGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRTVELE9BQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDakMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQ25CLFdBQVcsRUFBRSxFQUNiLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBRU8sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQzt3R0FuQnRFLHVDQUF1Qzs0RkFBdkMsdUNBQXVDLG9PQ2pCcEQsb2NBY0EsNENERG1DLGlCQUFpQixzTEFBRSx1QkFBdUIsa0lBQUUsc0JBQXNCLDREQUFFLDRCQUE0QixrRUFBRSx3QkFBd0I7OzRGQUloSix1Q0FBdUM7a0JBUG5ELFNBQVM7K0JBQ0Usb0NBQW9DLFdBRXJDLENBQUMscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQUUsNEJBQTRCLEVBQUUsd0JBQXdCLENBQUMsbUJBQzNJLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZU1vZGVsRW50aXR5IH0gZnJvbSAnLi9tb2RlbC5lbnRpdGllcyc7XG5pbXBvcnQgeyBEYnhJbmplY3Rpb25Db21wb25lbnQgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBNYXRFeHBhbnNpb25QYW5lbCwgTWF0RXhwYW5zaW9uUGFuZWxIZWFkZXIsIE1hdEV4cGFuc2lvblBhbmVsVGl0bGUsIE1hdEV4cGFuc2lvblBhbmVsRGVzY3JpcHRpb24sIE1hdEV4cGFuc2lvblBhbmVsQ29udGVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXJNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzV2lkZ2V0U2VydmljZSB9IGZyb20gJy4vbW9kZWwuZW50aXRpZXMud2lkZ2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSB9IGZyb20gJy4uL21vZGVsLnR5cGVzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtZmlyZWJhc2UtbW9kZWwtZW50aXRpZXMtZW50aXR5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGVsLmVudGl0aWVzLmVudGl0eS5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtEYnhJbmplY3Rpb25Db21wb25lbnQsIE1hdEV4cGFuc2lvblBhbmVsLCBNYXRFeHBhbnNpb25QYW5lbEhlYWRlciwgTWF0RXhwYW5zaW9uUGFuZWxUaXRsZSwgTWF0RXhwYW5zaW9uUGFuZWxEZXNjcmlwdGlvbiwgTWF0RXhwYW5zaW9uUGFuZWxDb250ZW50XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzRW50aXR5Q29tcG9uZW50IHtcbiAgcmVhZG9ubHkgd2lkZ2V0U2VydmljZSA9IGluamVjdChEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgbW9kZWxUeXBlc1NlcnZpY2UgPSBpbmplY3QoRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBlbnRpdHlcbiAgICovXG4gIHJlYWRvbmx5IGVudGl0eSA9IGlucHV0LnJlcXVpcmVkPERieEZpcmViYXNlTW9kZWxFbnRpdHk+KCk7XG5cbiAgcmVhZG9ubHkgbW9kZWxJZGVudGl0eSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZW50aXR5KCkubW9kZWxJZGVudGl0eSk7XG5cbiAgcmVhZG9ubHkgZW50aXR5JCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmVudGl0eSk7XG4gIHJlYWRvbmx5IHN0b3JlJCA9IHRoaXMuZW50aXR5JC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5zdG9yZSksXG4gICAgZmlsdGVyTWF5YmUoKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbG9hZGluZ1N0YXRlJCA9IHRoaXMuc3RvcmUkLnBpcGUoc3dpdGNoTWFwKCh4KSA9PiB4LmRhdGFMb2FkaW5nU3RhdGUkKSk7XG5cbiAgLy8gVE9ETzogVXNpbmcgdGhlIGVudGl0eS9zdG9yZSwgcHVsbCB0aGUgZGlzcGxheSBpbmZvIGZyb20gdGhlIG1vZGVsIHR5cGVzIHNlcnZpY2UgYW5kIG1ha2UgdGhhdCBhdmFpbGFibGUgaW4gYSBzaWduYWwuXG59XG4iLCI8bWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICA8c3BhbiBjbGFzcz1cImJvbGQgZGJ4LWJ1dHRvbi1zcGFjZXJcIj5OYW1lPC9zcGFuPlxuICAgICAgPCEtLSBUT0RPOiB1c2UgdGhlIGRpc3BsYXkgaW5mbyB0byBzaG93IHRoZSBuYW1lIC0tPlxuICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICA8IS0tIFRPRE86IC4uLiAtLT5cbiAgICA8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cbiAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgPG5nLXRlbXBsYXRlIG1hdEV4cGFuc2lvblBhbmVsQ29udGVudD5cbiAgICA8IS0tIFRPRE86IENvbnRlbnQgLS0+XG4gIDwvbmctdGVtcGxhdGU+XG48L21hdC1leHBhbnNpb24tcGFuZWw+XG4iXX0=
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Provides a source of entities.
3
+ */
4
+ export class DbxFirebaseModelEntitiesSource {
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuZW50aXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL21vZGVsL2VudGl0aWVzL21vZGVsLmVudGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BOztHQUVHO0FBQ0gsTUFBTSxPQUFnQiw4QkFBOEI7Q0FLbkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEZpcmVzdG9yZURvY3VtZW50LCB0eXBlIEZpcmVzdG9yZU1vZGVsSWRlbnRpdHkgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5pbXBvcnQgeyB0eXBlIE1heWJlLCB0eXBlIE1vZGVsS2V5IH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyB0eXBlIERieEZpcmViYXNlRG9jdW1lbnRSZWFkT25seVN0b3JlIH0gZnJvbSAnLi4vLi4vc3RvcmUvc3RvcmUnO1xuaW1wb3J0IHsgdHlwZSBMb2FkaW5nU3RhdGUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IHR5cGUgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgc291cmNlIG9mIGVudGl0aWVzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzU291cmNlIHtcbiAgLyoqXG4gICAqIE9ic2VydmFibGUgb2YgYSBMb2FkaW5nU3RhdGUgb2YgZW50aXR5IHZhbHVlcy5cbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGVudGl0aWVzJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RGJ4RmlyZWJhc2VNb2RlbEVudGl0eVtdPj47XG59XG5cbi8qKlxuICogQSBtb2RlbCBlbnRpdHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VNb2RlbEVudGl0eSB7XG4gIC8qKlxuICAgKiBNb2RlbCBpZGVudGl0eSBmb3IgdGhlIGVudGl0eS5cbiAgICpcbiAgICogVXNlZCBmb3Igc29ydGluZy9ncm91cGluZyBieSBleHBlY3RlZCBlbnRpdHkgdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IG1vZGVsSWRlbnRpdHk6IEZpcmVzdG9yZU1vZGVsSWRlbnRpdHk7XG4gIC8qKlxuICAgKiBBbiBhc3NvY2lhdGVkIHN0b3JlIGZvciB0aGUgZG9jdW1lbnQsIGlmIGl0IGlzIGF2YWlsYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHN0b3JlPzogTWF5YmU8RGJ4RmlyZWJhc2VEb2N1bWVudFJlYWRPbmx5U3RvcmU8YW55LCBhbnk+Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZU1vZGVsRW50aXR5V2l0aFN0b3JlPFQgPSBhbnksIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+PiBleHRlbmRzIERieEZpcmViYXNlTW9kZWxFbnRpdHkge1xuICAvKipcbiAgICogQW4gYXNzb2NpYXRlZCBzdG9yZSBmb3IgdGhlIGRvY3VtZW50LCBpZiBpdCBpcyBhdmFpbGFibGUuXG4gICAqL1xuICByZWFkb25seSBzdG9yZTogRGJ4RmlyZWJhc2VEb2N1bWVudFJlYWRPbmx5U3RvcmU8VCwgRD47XG59XG5cbi8qKlxuICogQW4gZW50aXR5IHRoYXQgaGFzIGEga2V5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlTW9kZWxFbnRpdHlXaXRoS2V5IGV4dGVuZHMgRGJ4RmlyZWJhc2VNb2RlbEVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUga2V5IG9mIHRoZSB0YXJnZXQgZG9jdW1lbnQuXG4gICAqL1xuICByZWFkb25seSBrZXk6IE1vZGVsS2V5O1xufVxuXG4vKipcbiAqIEFuIGVudGl0eSB0aGF0IGhhcyBhIGtleSBhbmQgYSBzdG9yZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZU1vZGVsRW50aXR5V2l0aEtleUFuZFN0b3JlPFQgPSBhbnksIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+PiBleHRlbmRzIE9taXQ8RGJ4RmlyZWJhc2VNb2RlbEVudGl0eVdpdGhLZXksICdzdG9yZSc+LCBEYnhGaXJlYmFzZU1vZGVsRW50aXR5V2l0aFN0b3JlPFQsIEQ+IHt9XG4iXX0=
@@ -0,0 +1,44 @@
1
+ import { ChangeDetectionStrategy, Component, ElementRef, inject, input, viewChild } from '@angular/core';
2
+ import { AbstractPopoverRefDirective, DbxIconButtonComponent, DbxPopoverService } from '@dereekb/dbx-web';
3
+ import { DbxFirebaseModelEntitiesPopoverComponent } from './model.entities.popover.component';
4
+ import { DbxFirebaseModelEntitiesSource } from './model.entities';
5
+ import * as i0 from "@angular/core";
6
+ export class DbxFirebaseModelEntitiesPopoverButtonComponent extends AbstractPopoverRefDirective {
7
+ _dbxPopoverService = inject(DbxPopoverService);
8
+ entitiesSource = inject(DbxFirebaseModelEntitiesSource);
9
+ buttonElement = viewChild.required('button', { read: ElementRef });
10
+ config = input();
11
+ _makePopoverRef(origin) {
12
+ const config = this.config();
13
+ const entities$ = this.entitiesSource.entities$;
14
+ if (!origin) {
15
+ throw new Error('Missing origin.');
16
+ }
17
+ return DbxFirebaseModelEntitiesPopoverComponent.openPopover(this._dbxPopoverService, {
18
+ origin,
19
+ ...config,
20
+ entities$
21
+ });
22
+ }
23
+ showEntitiesPopover() {
24
+ const origin = this.buttonElement();
25
+ this.showPopover(origin);
26
+ }
27
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelEntitiesPopoverButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
28
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.13", type: DbxFirebaseModelEntitiesPopoverButtonComponent, isStandalone: true, selector: "dbx-firebase-model-entities-popover-button", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "buttonElement", first: true, predicate: ["button"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
29
+ <dbx-icon-button #button (buttonClick)="showEntitiesPopover()" icon="data_object"></dbx-icon-button>
30
+ `, isInline: true, dependencies: [{ kind: "component", type: DbxIconButtonComponent, selector: "dbx-icon-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelEntitiesPopoverButtonComponent, decorators: [{
33
+ type: Component,
34
+ args: [{
35
+ selector: 'dbx-firebase-model-entities-popover-button',
36
+ template: `
37
+ <dbx-icon-button #button (buttonClick)="showEntitiesPopover()" icon="data_object"></dbx-icon-button>
38
+ `,
39
+ standalone: true,
40
+ imports: [DbxIconButtonComponent],
41
+ changeDetection: ChangeDetectionStrategy.OnPush
42
+ }]
43
+ }] });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuZW50aXRpZXMucG9wb3Zlci5idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbW9kdWxlcy9tb2RlbC9lbnRpdGllcy9tb2RlbC5lbnRpdGllcy5wb3BvdmVyLmJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFMUcsT0FBTyxFQUFFLHdDQUF3QyxFQUFzRCxNQUFNLG9DQUFvQyxDQUFDO0FBRWxKLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQWFsRSxNQUFNLE9BQU8sOENBQStDLFNBQVEsMkJBQTZDO0lBQzlGLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZELGNBQWMsR0FBRyxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUV4RCxhQUFhLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBcUIsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDdkYsTUFBTSxHQUFHLEtBQUssRUFBc0QsQ0FBQztJQUUzRCxlQUFlLENBQUMsTUFBMEI7UUFDM0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDO1FBRWhELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBRUQsT0FBTyx3Q0FBd0MsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ25GLE1BQU07WUFDTixHQUFHLE1BQU07WUFDVCxTQUFTO1NBQ1YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixDQUFDO3dHQXpCVSw4Q0FBOEM7NEZBQTlDLDhDQUE4QyxpVUFJeUIsVUFBVSxvRUFYbEY7O0dBRVQsNERBRVMsc0JBQXNCOzs0RkFHckIsOENBQThDO2tCQVQxRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0Q0FBNEM7b0JBQ3RELFFBQVEsRUFBRTs7R0FFVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RQb3BvdmVyUmVmRGlyZWN0aXZlLCBEYnhJY29uQnV0dG9uQ29tcG9uZW50LCBEYnhQb3BvdmVyU2VydmljZSB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWInO1xuaW1wb3J0IHsgTmdQb3BvdmVyUmVmIH0gZnJvbSAnbmctb3ZlcmxheS1jb250YWluZXInO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzUG9wb3ZlckNvbXBvbmVudCwgRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzUG9wb3ZlckNvbmZpZ1dpdGhvdXRPcmlnaW4gfSBmcm9tICcuL21vZGVsLmVudGl0aWVzLnBvcG92ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNTb3VyY2UgfSBmcm9tICcuL21vZGVsLmVudGl0aWVzJztcblxuZXhwb3J0IHR5cGUgRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzUG9wb3ZlckJ1dHRvbkNvbmZpZyA9IERieEZpcmViYXNlTW9kZWxFbnRpdGllc1BvcG92ZXJDb25maWdXaXRob3V0T3JpZ2luO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtZmlyZWJhc2UtbW9kZWwtZW50aXRpZXMtcG9wb3Zlci1idXR0b24nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkYngtaWNvbi1idXR0b24gI2J1dHRvbiAoYnV0dG9uQ2xpY2spPVwic2hvd0VudGl0aWVzUG9wb3ZlcigpXCIgaWNvbj1cImRhdGFfb2JqZWN0XCI+PC9kYngtaWNvbi1idXR0b24+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtEYnhJY29uQnV0dG9uQ29tcG9uZW50XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzUG9wb3ZlckJ1dHRvbkNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0UG9wb3ZlclJlZkRpcmVjdGl2ZTx1bmtub3duLCB1bmtub3duPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RieFBvcG92ZXJTZXJ2aWNlID0gaW5qZWN0KERieFBvcG92ZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgZW50aXRpZXNTb3VyY2UgPSBpbmplY3QoRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzU291cmNlKTtcblxuICByZWFkb25seSBidXR0b25FbGVtZW50ID0gdmlld0NoaWxkLnJlcXVpcmVkPHN0cmluZywgRWxlbWVudFJlZj4oJ2J1dHRvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KTtcbiAgcmVhZG9ubHkgY29uZmlnID0gaW5wdXQ8RGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzUG9wb3ZlckNvbmZpZ1dpdGhvdXRPcmlnaW4+KCk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIF9tYWtlUG9wb3ZlclJlZihvcmlnaW4/OiBNYXliZTxFbGVtZW50UmVmPik6IE5nUG9wb3ZlclJlZjx1bmtub3duLCB1bmtub3duPiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcbiAgICBjb25zdCBlbnRpdGllcyQgPSB0aGlzLmVudGl0aWVzU291cmNlLmVudGl0aWVzJDtcblxuICAgIGlmICghb3JpZ2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3Npbmcgb3JpZ2luLicpO1xuICAgIH1cblxuICAgIHJldHVybiBEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNQb3BvdmVyQ29tcG9uZW50Lm9wZW5Qb3BvdmVyKHRoaXMuX2RieFBvcG92ZXJTZXJ2aWNlLCB7XG4gICAgICBvcmlnaW4sXG4gICAgICAuLi5jb25maWcsXG4gICAgICBlbnRpdGllcyRcbiAgICB9KTtcbiAgfVxuXG4gIHNob3dFbnRpdGllc1BvcG92ZXIoKTogdm9pZCB7XG4gICAgY29uc3Qgb3JpZ2luID0gdGhpcy5idXR0b25FbGVtZW50KCk7XG4gICAgdGhpcy5zaG93UG9wb3ZlcihvcmlnaW4pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,35 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { AbstractPopoverDirective, DbxListEmptyContentComponent, DbxPopoverContentComponent, DbxPopoverHeaderComponent, DbxPopoverScrollContentDirective } from '@dereekb/dbx-web';
3
+ import { DbxFirebaseModelEntitiesComponent } from './model.entities.component';
4
+ import * as i0 from "@angular/core";
5
+ export const DEFAULT_DBX_FIREBASE_MODEL_ENTITIES_COMPONENT_POPOVER_KEY = 'entities';
6
+ export class DbxFirebaseModelEntitiesPopoverComponent extends AbstractPopoverDirective {
7
+ entities$ = this.popover.data?.entities$;
8
+ static openPopover(popupService, { origin, header, icon, emptyText, entities$ }, popoverKey) {
9
+ return popupService.open({
10
+ key: popoverKey ?? DEFAULT_DBX_FIREBASE_MODEL_ENTITIES_COMPONENT_POPOVER_KEY,
11
+ origin,
12
+ componentClass: DbxFirebaseModelEntitiesPopoverComponent,
13
+ data: {
14
+ header,
15
+ icon,
16
+ emptyText,
17
+ entities$
18
+ },
19
+ isResizable: true
20
+ });
21
+ }
22
+ get config() {
23
+ return this.popover.data;
24
+ }
25
+ icon = this.config.icon ?? 'data_object';
26
+ header = this.config.header ?? 'Entities';
27
+ emptyText = this.config.emptyText ?? 'No entities found in current context.';
28
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelEntitiesPopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
29
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DbxFirebaseModelEntitiesPopoverComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<dbx-popover-content>\n <!-- Header -->\n <dbx-popover-header [icon]=\"icon\" [header]=\"header\"></dbx-popover-header>\n <!-- Content -->\n <dbx-popover-scroll-content>\n <dbx-firebase-model-entities [entities]=\"entities$\">\n <p empty>{{ emptyText }}</p>\n </dbx-firebase-model-entities>\n </dbx-popover-scroll-content>\n</dbx-popover-content>\n", dependencies: [{ kind: "component", type: DbxPopoverContentComponent, selector: "dbx-popover-content" }, { kind: "component", type: DbxPopoverHeaderComponent, selector: "dbx-popover-header", inputs: ["header", "icon"] }, { kind: "directive", type: DbxPopoverScrollContentDirective, selector: "dbx-popover-scroll-content,[dbxPopoverScrollContent],.dbx-popover-scroll-content" }, { kind: "component", type: DbxFirebaseModelEntitiesComponent, selector: "dbx-firebase-model-entities", inputs: ["entities", "multi"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelEntitiesPopoverComponent, decorators: [{
32
+ type: Component,
33
+ args: [{ imports: [DbxPopoverContentComponent, DbxPopoverHeaderComponent, DbxPopoverScrollContentDirective, DbxFirebaseModelEntitiesComponent, DbxListEmptyContentComponent], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<dbx-popover-content>\n <!-- Header -->\n <dbx-popover-header [icon]=\"icon\" [header]=\"header\"></dbx-popover-header>\n <!-- Content -->\n <dbx-popover-scroll-content>\n <dbx-firebase-model-entities [entities]=\"entities$\">\n <p empty>{{ emptyText }}</p>\n </dbx-firebase-model-entities>\n </dbx-popover-scroll-content>\n</dbx-popover-content>\n" }]
34
+ }] });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuZW50aXRpZXMucG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL21vZGVsL2VudGl0aWVzL21vZGVsLmVudGl0aWVzLnBvcG92ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbW9kdWxlcy9tb2RlbC9lbnRpdGllcy9tb2RlbC5lbnRpdGllcy5wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLDRCQUE0QixFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixFQUFpQixnQ0FBZ0MsRUFBcUIsTUFBTSxrQkFBa0IsQ0FBQztBQUNyTixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFrQy9FLE1BQU0sQ0FBQyxNQUFNLHlEQUF5RCxHQUFHLFVBQVUsQ0FBQztBQVFwRixNQUFNLE9BQU8sd0NBQXlDLFNBQVEsd0JBQXdFO0lBQzNILFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7SUFFbEQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxZQUErQixFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBeUMsRUFBRSxVQUEwQjtRQUNuSyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDdkIsR0FBRyxFQUFFLFVBQVUsSUFBSSx5REFBeUQ7WUFDNUUsTUFBTTtZQUNOLGNBQWMsRUFBRSx3Q0FBd0M7WUFDeEQsSUFBSSxFQUFFO2dCQUNKLE1BQU07Z0JBQ04sSUFBSTtnQkFDSixTQUFTO2dCQUNULFNBQVM7YUFDVjtZQUNELFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBNkMsQ0FBQztJQUNwRSxDQUFDO0lBRVEsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQztJQUN6QyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksVUFBVSxDQUFDO0lBQzFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSx1Q0FBdUMsQ0FBQzt3R0F4QjNFLHdDQUF3Qzs0RkFBeEMsd0NBQXdDLCtGQzdDckQsOFdBVUEsNENEK0JZLDBCQUEwQixnRUFBRSx5QkFBeUIsMkZBQUUsZ0NBQWdDLDZIQUFFLGlDQUFpQzs7NEZBSXpILHdDQUF3QztrQkFOcEQsU0FBUzs4QkFFQyxDQUFDLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLGdDQUFnQyxFQUFFLGlDQUFpQyxFQUFFLDRCQUE0QixDQUFDLG1CQUNsSix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ1BvcG92ZXJSZWYgfSBmcm9tICduZy1vdmVybGF5LWNvbnRhaW5lcic7XG5pbXBvcnQgeyBBYnN0cmFjdFBvcG92ZXJEaXJlY3RpdmUsIERieExpc3RFbXB0eUNvbnRlbnRDb21wb25lbnQsIERieFBvcG92ZXJDb250ZW50Q29tcG9uZW50LCBEYnhQb3BvdmVySGVhZGVyQ29tcG9uZW50LCBEYnhQb3BvdmVyS2V5LCBEYnhQb3BvdmVyU2Nyb2xsQ29udGVudERpcmVjdGl2ZSwgRGJ4UG9wb3ZlclNlcnZpY2UgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IERieEZpcmViYXNlTW9kZWxFbnRpdGllc0NvbXBvbmVudCB9IGZyb20gJy4vbW9kZWwuZW50aXRpZXMuY29tcG9uZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvYWRpbmdTdGF0ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VNb2RlbEVudGl0eSB9IGZyb20gJy4vbW9kZWwuZW50aXRpZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlTW9kZWxFbnRpdGllc1BvcG92ZXJDb25maWcge1xuICAvKipcbiAgICogQ3VzdG9tIGljb25cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gXCJoaXN0b3J5XCJcbiAgICovXG4gIHJlYWRvbmx5IGljb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDdXN0b20gaGVhZGVyIHRleHRcbiAgICpcbiAgICogRGVmYXVsdHMgdG8gXCJFbnRpdGllc1wiXG4gICAqL1xuICByZWFkb25seSBoZWFkZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDdXN0b20gZW1wdHkgdGV4dCB3aGVuIG5vIGVudGl0aWVzIGV4aXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZW1wdHlUZXh0Pzogc3RyaW5nO1xuICAvKipcbiAgICogT3JpZ2luIHRvIGFkZCB0aGUgcG9wb3ZlciB0by5cbiAgICovXG4gIHJlYWRvbmx5IG9yaWdpbjogRWxlbWVudFJlZjtcbiAgLyoqXG4gICAqIE9ic2VydmFibGUgb2YgZW50aXRpZXMgdG8gZGlzcGxheS5cbiAgICovXG4gIHJlYWRvbmx5IGVudGl0aWVzJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RGJ4RmlyZWJhc2VNb2RlbEVudGl0eVtdPj47XG59XG5cbmV4cG9ydCB0eXBlIERieEZpcmViYXNlTW9kZWxFbnRpdGllc1BvcG92ZXJDb25maWdXaXRob3V0T3JpZ2luID0gT21pdDxEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNQb3BvdmVyQ29uZmlnLCAnb3JpZ2luJyB8ICdlbnRpdGllcyQnPjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfREJYX0ZJUkVCQVNFX01PREVMX0VOVElUSUVTX0NPTVBPTkVOVF9QT1BPVkVSX0tFWSA9ICdlbnRpdGllcyc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vbW9kZWwuZW50aXRpZXMucG9wb3Zlci5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtEYnhQb3BvdmVyQ29udGVudENvbXBvbmVudCwgRGJ4UG9wb3ZlckhlYWRlckNvbXBvbmVudCwgRGJ4UG9wb3ZlclNjcm9sbENvbnRlbnREaXJlY3RpdmUsIERieEZpcmViYXNlTW9kZWxFbnRpdGllc0NvbXBvbmVudCwgRGJ4TGlzdEVtcHR5Q29udGVudENvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlTW9kZWxFbnRpdGllc1BvcG92ZXJDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdFBvcG92ZXJEaXJlY3RpdmU8dW5rbm93biwgRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzUG9wb3ZlckNvbmZpZz4ge1xuICByZWFkb25seSBlbnRpdGllcyQgPSB0aGlzLnBvcG92ZXIuZGF0YT8uZW50aXRpZXMkO1xuXG4gIHN0YXRpYyBvcGVuUG9wb3Zlcihwb3B1cFNlcnZpY2U6IERieFBvcG92ZXJTZXJ2aWNlLCB7IG9yaWdpbiwgaGVhZGVyLCBpY29uLCBlbXB0eVRleHQsIGVudGl0aWVzJCB9OiBEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNQb3BvdmVyQ29uZmlnLCBwb3BvdmVyS2V5PzogRGJ4UG9wb3ZlcktleSk6IE5nUG9wb3ZlclJlZiB7XG4gICAgcmV0dXJuIHBvcHVwU2VydmljZS5vcGVuKHtcbiAgICAgIGtleTogcG9wb3ZlcktleSA/PyBERUZBVUxUX0RCWF9GSVJFQkFTRV9NT0RFTF9FTlRJVElFU19DT01QT05FTlRfUE9QT1ZFUl9LRVksXG4gICAgICBvcmlnaW4sXG4gICAgICBjb21wb25lbnRDbGFzczogRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzUG9wb3ZlckNvbXBvbmVudCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgaGVhZGVyLFxuICAgICAgICBpY29uLFxuICAgICAgICBlbXB0eVRleHQsXG4gICAgICAgIGVudGl0aWVzJFxuICAgICAgfSxcbiAgICAgIGlzUmVzaXphYmxlOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBnZXQgY29uZmlnKCk6IERieEZpcmViYXNlTW9kZWxFbnRpdGllc1BvcG92ZXJDb25maWcge1xuICAgIHJldHVybiB0aGlzLnBvcG92ZXIuZGF0YSBhcyBEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNQb3BvdmVyQ29uZmlnO1xuICB9XG5cbiAgcmVhZG9ubHkgaWNvbiA9IHRoaXMuY29uZmlnLmljb24gPz8gJ2RhdGFfb2JqZWN0JztcbiAgcmVhZG9ubHkgaGVhZGVyID0gdGhpcy5jb25maWcuaGVhZGVyID8/ICdFbnRpdGllcyc7XG4gIHJlYWRvbmx5IGVtcHR5VGV4dCA9IHRoaXMuY29uZmlnLmVtcHR5VGV4dCA/PyAnTm8gZW50aXRpZXMgZm91bmQgaW4gY3VycmVudCBjb250ZXh0Lic7XG59XG4iLCI8ZGJ4LXBvcG92ZXItY29udGVudD5cbiAgPCEtLSBIZWFkZXIgLS0+XG4gIDxkYngtcG9wb3Zlci1oZWFkZXIgW2ljb25dPVwiaWNvblwiIFtoZWFkZXJdPVwiaGVhZGVyXCI+PC9kYngtcG9wb3Zlci1oZWFkZXI+XG4gIDwhLS0gQ29udGVudCAtLT5cbiAgPGRieC1wb3BvdmVyLXNjcm9sbC1jb250ZW50PlxuICAgIDxkYngtZmlyZWJhc2UtbW9kZWwtZW50aXRpZXMgW2VudGl0aWVzXT1cImVudGl0aWVzJFwiPlxuICAgICAgPHAgZW1wdHk+e3sgZW1wdHlUZXh0IH19PC9wPlxuICAgIDwvZGJ4LWZpcmViYXNlLW1vZGVsLWVudGl0aWVzPlxuICA8L2RieC1wb3BvdmVyLXNjcm9sbC1jb250ZW50PlxuPC9kYngtcG9wb3Zlci1jb250ZW50PlxuIl19
@@ -0,0 +1,38 @@
1
+ import { Directive } from '@angular/core';
2
+ import { DbxFirebaseModelEntitiesSource } from './model.entities';
3
+ import { DbxFirebaseDocumentStoreContextStore } from '../../store/store.document.context.store';
4
+ import { map } from 'rxjs';
5
+ import { loadingStateFromObs } from '@dereekb/rxjs';
6
+ import * as i0 from "@angular/core";
7
+ export const dbxFirebaseDocumentStoreContextModelEntitiesSourceFactory = (storeContextStore) => {
8
+ const entities$ = storeContextStore.entriesGroupedByIdentity$.pipe(map((entries) => entries.map((entry) => ({ store: entry.store, modelIdentity: entry.modelIdentity }))));
9
+ const source = {
10
+ entities$: loadingStateFromObs(entities$)
11
+ };
12
+ return source;
13
+ };
14
+ export class DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective {
15
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
16
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective, isStandalone: true, selector: "[dbxFirebaseDocumentStoreContextModelEntitiesSource]", providers: [
17
+ {
18
+ provide: DbxFirebaseModelEntitiesSource,
19
+ useFactory: dbxFirebaseDocumentStoreContextModelEntitiesSourceFactory,
20
+ deps: [DbxFirebaseDocumentStoreContextStore]
21
+ }
22
+ ], ngImport: i0 });
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseDocumentStoreContextModelEntitiesSourceDirective, decorators: [{
25
+ type: Directive,
26
+ args: [{
27
+ selector: '[dbxFirebaseDocumentStoreContextModelEntitiesSource]',
28
+ providers: [
29
+ {
30
+ provide: DbxFirebaseModelEntitiesSource,
31
+ useFactory: dbxFirebaseDocumentStoreContextModelEntitiesSourceFactory,
32
+ deps: [DbxFirebaseDocumentStoreContextStore]
33
+ }
34
+ ],
35
+ standalone: true
36
+ }]
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuZW50aXRpZXMuc291cmNlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL21vZHVsZXMvbW9kZWwvZW50aXRpZXMvbW9kZWwuZW50aXRpZXMuc291cmNlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSw4QkFBOEIsRUFBMEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRyxPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFcEQsTUFBTSxDQUFDLE1BQU0seURBQXlELEdBQUcsQ0FBQyxpQkFBdUQsRUFBa0MsRUFBRTtJQUNuSyxNQUFNLFNBQVMsR0FBeUMsaUJBQWlCLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVqTixNQUFNLE1BQU0sR0FBbUM7UUFDN0MsU0FBUyxFQUFFLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztLQUMxQyxDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBYUYsTUFBTSxPQUFPLDJEQUEyRDt3R0FBM0QsMkRBQTJEOzRGQUEzRCwyREFBMkQsbUdBVDNEO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLDhCQUE4QjtnQkFDdkMsVUFBVSxFQUFFLHlEQUF5RDtnQkFDckUsSUFBSSxFQUFFLENBQUMsb0NBQW9DLENBQUM7YUFDN0M7U0FDRjs7NEZBR1UsMkRBQTJEO2tCQVh2RSxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzREFBc0Q7b0JBQ2hFLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsOEJBQThCOzRCQUN2QyxVQUFVLEVBQUUseURBQXlEOzRCQUNyRSxJQUFJLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQzt5QkFDN0M7cUJBQ0Y7b0JBQ0QsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNTb3VyY2UsIERieEZpcmViYXNlTW9kZWxFbnRpdHkgfSBmcm9tICcuL21vZGVsLmVudGl0aWVzJztcbmltcG9ydCB7IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdG9yZSB9IGZyb20gJy4uLy4uL3N0b3JlL3N0b3JlLmRvY3VtZW50LmNvbnRleHQuc3RvcmUnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBsb2FkaW5nU3RhdGVGcm9tT2JzIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5cbmV4cG9ydCBjb25zdCBkYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0TW9kZWxFbnRpdGllc1NvdXJjZUZhY3RvcnkgPSAoc3RvcmVDb250ZXh0U3RvcmU6IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdG9yZSk6IERieEZpcmViYXNlTW9kZWxFbnRpdGllc1NvdXJjZSA9PiB7XG4gIGNvbnN0IGVudGl0aWVzJDogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsRW50aXR5W10+ID0gc3RvcmVDb250ZXh0U3RvcmUuZW50cmllc0dyb3VwZWRCeUlkZW50aXR5JC5waXBlKG1hcCgoZW50cmllcykgPT4gZW50cmllcy5tYXAoKGVudHJ5KSA9PiAoeyBzdG9yZTogZW50cnkuc3RvcmUsIG1vZGVsSWRlbnRpdHk6IGVudHJ5Lm1vZGVsSWRlbnRpdHkgfSkpKSk7XG5cbiAgY29uc3Qgc291cmNlOiBEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNTb3VyY2UgPSB7XG4gICAgZW50aXRpZXMkOiBsb2FkaW5nU3RhdGVGcm9tT2JzKGVudGl0aWVzJClcbiAgfTtcblxuICByZXR1cm4gc291cmNlO1xufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2RieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRNb2RlbEVudGl0aWVzU291cmNlXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IERieEZpcmViYXNlTW9kZWxFbnRpdGllc1NvdXJjZSxcbiAgICAgIHVzZUZhY3Rvcnk6IGRieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRNb2RlbEVudGl0aWVzU291cmNlRmFjdG9yeSxcbiAgICAgIGRlcHM6IFtEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RvcmVdXG4gICAgfVxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRNb2RlbEVudGl0aWVzU291cmNlRGlyZWN0aXZlIHt9XG4iXX0=
@@ -0,0 +1,59 @@
1
+ import { Inject, Injectable, Optional } from '@angular/core';
2
+ import { asArray, filterMaybeArrayValues, mapIterable } from '@dereekb/util';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Configuration provided in the root module for configuring entries.
6
+ */
7
+ export class DbxFirebaseModelEntitiesWidgetServiceConfig {
8
+ }
9
+ /**
10
+ * Service used to register widgets used for model entities.
11
+ */
12
+ export class DbxFirebaseModelEntitiesWidgetService {
13
+ _entries = new Map();
14
+ constructor(initialConfig) {
15
+ if (initialConfig?.entries) {
16
+ this.register(initialConfig.entries);
17
+ }
18
+ }
19
+ /**
20
+ * Used to register one or more entries.
21
+ *
22
+ * If an entry with the same identity is already registered, this will override it by default.
23
+ *
24
+ * @param entries
25
+ * @param override
26
+ */
27
+ register(entries, override = true) {
28
+ const entriesArray = asArray(entries);
29
+ entriesArray.forEach((entry) => {
30
+ if (override || !this._entries.has(entry.identity)) {
31
+ this._entries.set(entry.identity, entry);
32
+ }
33
+ });
34
+ }
35
+ // MARK: Get
36
+ getAllRegisteredWidgetIdentities() {
37
+ return Array.from(this._entries.keys());
38
+ }
39
+ getWidgetEntry(identity) {
40
+ return this._entries.get(identity);
41
+ }
42
+ getWidgetEntries(identities) {
43
+ return filterMaybeArrayValues(mapIterable(identities ?? [], (x) => this._entries.get(x)));
44
+ }
45
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelEntitiesWidgetService, deps: [{ token: DbxFirebaseModelEntitiesWidgetServiceConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
46
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelEntitiesWidgetService, providedIn: 'root' });
47
+ }
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelEntitiesWidgetService, decorators: [{
49
+ type: Injectable,
50
+ args: [{
51
+ providedIn: 'root'
52
+ }]
53
+ }], ctorParameters: () => [{ type: DbxFirebaseModelEntitiesWidgetServiceConfig, decorators: [{
54
+ type: Optional
55
+ }, {
56
+ type: Inject,
57
+ args: [DbxFirebaseModelEntitiesWidgetServiceConfig]
58
+ }] }] });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuZW50aXRpZXMud2lkZ2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL21vZGVsL2VudGl0aWVzL21vZGVsLmVudGl0aWVzLndpZGdldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQXVCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBY2xHOztHQUVHO0FBQ0gsTUFBTSxPQUFnQiwyQ0FBMkM7Q0FLaEU7QUFFRDs7R0FFRztBQUlILE1BQU0sT0FBTyxxQ0FBcUM7SUFDL0IsUUFBUSxHQUFHLElBQUksR0FBRyxFQUErRCxDQUFDO0lBRW5HLFlBQTZFLGFBQTJEO1FBQ3RJLElBQUksYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFFBQVEsQ0FBQyxPQUEwRCxFQUFFLFdBQW9CLElBQUk7UUFDM0YsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXRDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM3QixJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzNDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZO0lBQ1osZ0NBQWdDO1FBQzlCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFnQztRQUM3QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUE0QztRQUMzRCxPQUFPLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxVQUFVLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUYsQ0FBQzt3R0F0Q1UscUNBQXFDLGtCQUdoQiwyQ0FBMkM7NEdBSGhFLHFDQUFxQyxjQUZwQyxNQUFNOzs0RkFFUCxxQ0FBcUM7a0JBSGpELFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFJYyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLDJDQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFycmF5T3JWYWx1ZSwgTWF5YmUsIGFzQXJyYXksIGZpbHRlck1heWJlQXJyYXlWYWx1ZXMsIG1hcEl0ZXJhYmxlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBGaXJlc3RvcmVNb2RlbElkZW50aXR5IH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlTW9kZWxFbnRpdGllc1dpZGdldEVudHJ5IHtcbiAgLyoqXG4gICAqIFdpZGdldCB0eXBlIHRvIHJlc3BvbmQgdG8uXG4gICAqL1xuICByZWFkb25seSBpZGVudGl0eTogRmlyZXN0b3JlTW9kZWxJZGVudGl0eTtcbiAgLyoqXG4gICAqIFdpZGdldCBjb21wb25lbnQgY2xhc3MgdG8gdXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50Q2xhc3M6IFR5cGU8dW5rbm93bj47XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBwcm92aWRlZCBpbiB0aGUgcm9vdCBtb2R1bGUgZm9yIGNvbmZpZ3VyaW5nIGVudHJpZXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlQ29uZmlnIHtcbiAgLyoqXG4gICAqIEVudHJpZXMgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICBhYnN0cmFjdCBlbnRyaWVzOiBEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRFbnRyeVtdO1xufVxuXG4vKipcbiAqIFNlcnZpY2UgdXNlZCB0byByZWdpc3RlciB3aWRnZXRzIHVzZWQgZm9yIG1vZGVsIGVudGl0aWVzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZW50cmllcyA9IG5ldyBNYXA8RmlyZXN0b3JlTW9kZWxJZGVudGl0eSwgRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzV2lkZ2V0RW50cnk+KCk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRTZXJ2aWNlQ29uZmlnKSBpbml0aWFsQ29uZmlnPzogRGJ4RmlyZWJhc2VNb2RlbEVudGl0aWVzV2lkZ2V0U2VydmljZUNvbmZpZykge1xuICAgIGlmIChpbml0aWFsQ29uZmlnPy5lbnRyaWVzKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyKGluaXRpYWxDb25maWcuZW50cmllcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gcmVnaXN0ZXIgb25lIG9yIG1vcmUgZW50cmllcy5cbiAgICpcbiAgICogSWYgYW4gZW50cnkgd2l0aCB0aGUgc2FtZSBpZGVudGl0eSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQsIHRoaXMgd2lsbCBvdmVycmlkZSBpdCBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBAcGFyYW0gZW50cmllc1xuICAgKiBAcGFyYW0gb3ZlcnJpZGVcbiAgICovXG4gIHJlZ2lzdGVyKGVudHJpZXM6IEFycmF5T3JWYWx1ZTxEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRFbnRyeT4sIG92ZXJyaWRlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIGNvbnN0IGVudHJpZXNBcnJheSA9IGFzQXJyYXkoZW50cmllcyk7XG5cbiAgICBlbnRyaWVzQXJyYXkuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgIGlmIChvdmVycmlkZSB8fCAhdGhpcy5fZW50cmllcy5oYXMoZW50cnkuaWRlbnRpdHkpKSB7XG4gICAgICAgIHRoaXMuX2VudHJpZXMuc2V0KGVudHJ5LmlkZW50aXR5LCBlbnRyeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBNQVJLOiBHZXRcbiAgZ2V0QWxsUmVnaXN0ZXJlZFdpZGdldElkZW50aXRpZXMoKTogRmlyZXN0b3JlTW9kZWxJZGVudGl0eVtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9lbnRyaWVzLmtleXMoKSk7XG4gIH1cblxuICBnZXRXaWRnZXRFbnRyeShpZGVudGl0eTogRmlyZXN0b3JlTW9kZWxJZGVudGl0eSk6IE1heWJlPERieEZpcmViYXNlTW9kZWxFbnRpdGllc1dpZGdldEVudHJ5PiB7XG4gICAgcmV0dXJuIHRoaXMuX2VudHJpZXMuZ2V0KGlkZW50aXR5KTtcbiAgfVxuXG4gIGdldFdpZGdldEVudHJpZXMoaWRlbnRpdGllczogSXRlcmFibGU8RmlyZXN0b3JlTW9kZWxJZGVudGl0eT4pOiBEYnhGaXJlYmFzZU1vZGVsRW50aXRpZXNXaWRnZXRFbnRyeVtdIHtcbiAgICByZXR1cm4gZmlsdGVyTWF5YmVBcnJheVZhbHVlcyhtYXBJdGVyYWJsZShpZGVudGl0aWVzID8/IFtdLCAoeCkgPT4gdGhpcy5fZW50cmllcy5nZXQoeCkpKTtcbiAgfVxufVxuIl19
@@ -1,6 +1,7 @@
1
1
  export * from './history';
2
+ export * from './entities';
2
3
  export * from './model.types.service';
3
4
  export * from './model.types.module';
4
5
  export * from './model.types.list.component';
5
6
  export * from './model.types.view.directive';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL21vZGVsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2hpc3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC50eXBlcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwudHlwZXMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwudHlwZXMubGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC50eXBlcy52aWV3LmRpcmVjdGl2ZSc7XG4iXX0=
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL21vZGVsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2hpc3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9lbnRpdGllcyc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLnR5cGVzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC50eXBlcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC50eXBlcy5saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLnR5cGVzLnZpZXcuZGlyZWN0aXZlJztcbiJdfQ==
@@ -117,4 +117,4 @@ export function dbxFirebaseModelTypesServiceInstance(modelInfoInstance$, dbxFire
117
117
  };
118
118
  return instance;
119
119
  }
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudHlwZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL21vZHVsZXMvbW9kZWwvbW9kZWwudHlwZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEgsT0FBTyxFQUFzQyxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVGLE9BQU8sRUFBZ0IsT0FBTyxFQUFrRSxNQUFNLGVBQWUsQ0FBQztBQUV0SCxPQUFPLEVBQXFCLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFHckY7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGtDQUFrQztDQUt2RDtBQXdCRDs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLDRCQUE0QjtJQUM5Qiw4QkFBOEIsR0FBRyxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUN4RSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsQ0FBQSxvQkFBOEMsQ0FBQSxDQUFDLENBQUM7SUFFdkYsWUFBd0QsYUFBaUQ7UUFDdkcsSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjLENBQUksUUFBcUMsRUFBRSxJQUFPO1FBQzlELElBQUksV0FBc0QsQ0FBQztRQUUzRCxJ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LElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUzSSxNQUFNLFFBQVEsR0FBK0M7UUFDM0Qsa0JBQWtCO1FBQ2xCLDRCQUE0QjtRQUM1QixJQUFJO1FBQ0osVUFBVTtRQUNWLGFBQWE7UUFDYixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxZQUFZO1FBQ1osa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQixhQUFhO0tBQ2QsQ0FBQztJQUVGLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCBjb21iaW5lTGF0ZXN0LCBvZiwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlyZXN0b3JlQ29sbGVjdGlvblR5cGUsIEZpcmVzdG9yZURvY3VtZW50LCBGaXJlc3RvcmVEb2N1bWVudERhdGEsIEZpcmVzdG9yZU1vZGVsSWRlbnRpdHksIEZpcmVzdG9yZU1vZGVsS2V5IH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgRGJ4TW9kZWxUeXBlSW5mbywgRGJ4TW9kZWxUeXBlc01hcCwgRGJ4TW9kZWxUeXBlc1NlcnZpY2UgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IEFycmF5T3JWYWx1ZSwgYXNBcnJheSwgQ29uZmlndXJhYmxlLCBGYWN0b3J5V2l0aFJlcXVpcmVkSW5wdXQsIE1heWJlLCBNb2RlbFR5cGVTdHJpbmcgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IENsaWNrYWJsZUFuY2hvckxpbmtTZWd1ZVJlZiwgSWNvbkFuZFRpdGxlLCBTZWd1ZVJlZiB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGVPclZhbHVlLCBmaWx0ZXJNYXliZUFycmF5IH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBHcmFudGVkUm9sZSB9IGZyb20gJ0BkZXJlZWtiL21vZGVsJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL21vZGVsLmNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZUluQ29udGV4dEZpcmViYXNlTW9kZWxJbmZvU2VydmljZUluc3RhbmNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9tb2RlbC5jb250ZXh0JztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHByb3ZpZGVkIGluIHRoZSByb290IG1vZHVsZSBmb3IgY29uZmlndXJpbmcgZW50cmllcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VDb25maWcge1xuICAvKipcbiAgICogRW50cmllcyB0byByZWdpc3Rlci5cbiAgICovXG4gIGFic3RyYWN0IGVudHJpZXM6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VFbnRyeVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VFbnRyeTxUID0gdW5rbm93bj4gZXh0ZW5kcyBPbWl0PERieE1vZGVsVHlwZUluZm8sICdjYW5TZWd1ZVRvVmlldycgfCAnbW9kZWxUeXBlJz4ge1xuICAvKipcbiAgICogSWRlbnRpdHkgb2YgdGhlIGl0ZW0gYmVpbmcgcmVnaXN0ZXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5OiBGaXJlc3RvcmVNb2RlbElkZW50aXR5O1xuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgRGJ4RmlyZWJhc2VNb2RlbERpc3BsYXlJbmZvIGZvciB0aGUgaW5wdXQgZGF0YS5cbiAgICpcbiAgICogSWYgbm8gaWNvbiBpcyBwcm92aWRlZCwgaXQgdXNlcyB0aGUgZGVmYXVsdCBpY29uIGNvbmZpZ3VyZWQgaW4gdGhpcyBlbnRyeS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICByZWFkb25seSBkaXNwbGF5SW5mb0ZhY3Rvcnk6IEZhY3RvcnlXaXRoUmVxdWlyZWRJbnB1dDxEYnhGaXJlYmFzZU1vZGVsRGlzcGxheUluZm8sIFQ+O1xufVxuXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZU1vZGVsRGlzcGxheUluZm8gPSBJY29uQW5kVGl0bGU7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvPFQgPSB1bmtub3duPiBleHRlbmRzIERieE1vZGVsVHlwZUluZm8sIFBpY2s8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUVudHJ5PFQ+LCAnaWRlbnRpdHknIHwgJ2Rpc3BsYXlJbmZvRmFjdG9yeSc+IHt9XG5cbmV4cG9ydCB0eXBlIERieEZpcmViYXNlTW9kZWxUeXBlc01hcCA9IERieE1vZGVsVHlwZXNNYXA8RGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvPjtcblxuLyoqXG4gKiBQcm92aWRlcyBtb2RlbCB0eXBlIGluZm9ybWF0aW9uIGFib3V0IG1vZGVscyByZWdpc3RlcmVkIHdpdGhpbiBGaXJlYmFzZS5cbiAqXG4gKiBBdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZXMgdGhlIERieE1vZGVsVHlwZXNTZXJ2aWNlLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSB7XG4gIHJlYWRvbmx5IGRieEZpcmViYXNlTW9kZWxDb250ZXh0U2VydmljZSA9IGluamVjdChEYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2UpO1xuICByZWFkb25seSBkYnhNb2RlbFR5cGVzU2VydmljZSA9IGluamVjdChEYnhNb2RlbFR5cGVzU2VydmljZTxEYnhGaXJlYmFzZU1vZGVsVHlwZUluZm8+KTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VDb25maWcpIGluaXRpYWxDb25maWc6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VDb25maWcpIHtcbiAgICBpZiAoaW5pdGlhbENvbmZpZy5lbnRyaWVzKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyKGluaXRpYWxDb25maWcuZW50cmllcyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGlzcGxheUluZm88VD4odHlwZUluZm86IERieEZpcmViYXNlTW9kZWxUeXBlSW5mbzxUPiwgZGF0YTogVCk6IERieEZpcmViYXNlTW9kZWxEaXNwbGF5SW5mbyB7XG4gICAgbGV0IGRpc3BsYXlJbmZvOiBDb25maWd1cmFibGU8RGJ4RmlyZWJhc2VNb2RlbERpc3BsYXlJbmZvPjtcblxuICAgIGlmIChkYXRhICE9IG51bGwpIHtcbiAgICAgIGRpc3BsYXlJbmZvID0gdHlwZUluZm8uZGlzcGxheUluZm9GYWN0b3J5KGRhdGEpO1xuICAgICAgZGlzcGxheUluZm8uaWNvbiA9IGRpc3BsYXlJbmZvLmljb24gfHwgdHlwZUluZm8uaWNvbjsgLy8gc2V0IGRlZmF1bHQgaWNvblxuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwbGF5SW5mbyA9IHRoaXMuZ2V0RGVmYXVsdERpc3BsYXlJbmZvKHR5cGVJbmZvKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcGxheUluZm87XG4gIH1cblxuICBnZXREZWZhdWx0RGlzcGxheUluZm88VCA9IHVua25vd24+KHR5cGVJbmZvOiBEYnhGaXJlYmFzZU1vZGVsVHlwZUluZm88VD4pIHtcbiAgICAvLyBUT0RPOiBNYWtlIGNvbmZpZ3VyYWJsZVxuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogdHlwZUluZm8ubGFiZWwgPz8gJycsXG4gICAgICBpY29uOiAnd2FybmluZydcbiAgICB9O1xuICB9XG5cbiAgLy8gTUFSSzogUmVnaXN0ZXJcbiAgcmVnaXN0ZXIoZW50cmllczogQXJyYXlPclZhbHVlPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VFbnRyeT4pIHtcbiAgICBjb25zdCB0eXBlQ29uZmlncyA9IGFzQXJyYXkoZW50cmllcykubWFwKCh4KSA9PiAoeyAuLi54LCBtb2RlbFR5cGU6IHguaWRlbnRpdHkubW9kZWxUeXBlIH0pKTtcbiAgICB0aGlzLmRieE1vZGVsVHlwZXNTZXJ2aWNlLmFkZFR5cGVDb25maWdzKHR5cGVDb25maWdzKTtcbiAgfVxuXG4gIC8vIE1BUks6IFJldHJpZXZhbFxuICBjdXJyZW50SW5mb0ZvclR5cGUodHlwZTogTW9kZWxUeXBlU3RyaW5nIHwgRmlyZXN0b3JlQ29sbGVjdGlvblR5cGUpOiBPYnNlcnZhYmxlPE1heWJlPERieEZpcmViYXNlTW9kZWxUeXBlSW5mbz4+IHtcbiAgICByZXR1cm4gdGhpcy5kYnhNb2RlbFR5cGVzU2VydmljZS50eXBlc01hcCQucGlwZShtYXAoKHgpID0+IHhbdHlwZV0pKTtcbiAgfVxuXG4gIGluZm9Gb3JUeXBlKHR5cGU6IE1vZGVsVHlwZVN0cmluZyB8IEZpcmVzdG9yZUNvbGxlY3Rpb25UeXBlKTogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsVHlwZUluZm8+IHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW5mb0ZvclR5cGUodHlwZSkucGlwZShcbiAgICAgIG1hcCgoeCkgPT4ge1xuICAgICAgICBpZiAoIXgpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlOiBjb250YWluZWQgbm8gaW5mbyBmb3IgdHlwZSBcIiR7dHlwZX1cIi4gRW5zdXJlIHRoZSBjb3JyZWN0IHR5cGUgd2FzIGVudGVyZWQsIGFuZCB0aGF0IHRoZSB0eXBlIGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZS5gKTtcbiAgICAgICAgICB0aHJvdyB4O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHggYXMgRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgaW5zdGFuY2VGb3JLZXk8RCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PGFueT4gPSBhbnksIFIgZXh0ZW5kcyBHcmFudGVkUm9sZSA9IEdyYW50ZWRSb2xlPihrZXkkOiBPYnNlcnZhYmxlT3JWYWx1ZTxGaXJlc3RvcmVNb2RlbEtleT4pOiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2U8RCwgUj4ge1xuICAgIHJldHVybiBkYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2U8RCwgUj4odGhpcy5kYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2UubW9kZWxJbmZvSW5zdGFuY2U8RCwgUj4oa2V5JCksIHRoaXMpO1xuICB9XG5cbiAgaW5zdGFuY2VQYWlyc0ZvcktleXMoa2V5czogQXJyYXlPclZhbHVlPE9ic2VydmFibGVPclZhbHVlPEZpcmVzdG9yZU1vZGVsS2V5Pj4pIHtcbiAgICByZXR1cm4gZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpckZvcktleXNGYWN0b3J5KHRoaXMpKGtleXMpO1xuICB9XG59XG5cbi8qKlxuICogSW5mb3JtYXRpb24gcGFpciBmb3IgYW4gaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpcjxEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8YW55PiA9IGFueSwgUiBleHRlbmRzIEdyYW50ZWRSb2xlID0gR3JhbnRlZFJvbGU+IHtcbiAgcmVhZG9ubHkga2V5OiBGaXJlc3RvcmVNb2RlbEtleTtcbiAgcmVhZG9ubHkgaW5zdGFuY2U6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZTxELCBSPjtcbiAgcmVhZG9ubHkgZGlzcGxheUluZm86IERieEZpcmViYXNlTW9kZWxEaXNwbGF5SW5mbztcbiAgcmVhZG9ubHkgc2VndWVSZWY6IE1heWJlPENsaWNrYWJsZUFuY2hvckxpbmtTZWd1ZVJlZj47XG59XG5cbmV4cG9ydCB0eXBlIERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXJGb3JLZXlzRmFjdG9yeSA9IChrZXlzOiBBcnJheU9yVmFsdWU8T2JzZXJ2YWJsZU9yVmFsdWU8RmlyZXN0b3JlTW9kZWxLZXk+PikgPT4gT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyW10+O1xuXG5leHBvcnQgZnVuY3Rpb24gZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpckZvcktleXNGYWN0b3J5KHNlcnZpY2U6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2UpOiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyRm9yS2V5c0ZhY3Rvcnkge1xuICByZXR1cm4gKGtleXM6IEFycmF5T3JWYWx1ZTxPYnNlcnZhYmxlT3JWYWx1ZTxGaXJlc3RvcmVNb2RlbEtleT4+KSA9PiB7XG4gICAgY29uc3QgaW5zdGFuY2VzID0gYXNBcnJheShrZXlzKS5tYXAoKHgpID0+IHNlcnZpY2UuaW5zdGFuY2VGb3JLZXkoeCkuc2FmZUluc3RhbmNlUGFpciQpO1xuICAgIHJldHVybiBpbnN0YW5jZXMubGVuZ3RoID8gY29tYmluZUxhdGVzdChpbnN0YW5jZXMpLnBpcGUoZmlsdGVyTWF5YmVBcnJheSgpLCBzaGFyZVJlcGxheSgxKSkgOiBvZihbXSk7XG4gIH07XG59XG5cbi8qKlxuICogRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSBpbnN0YW5jZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZTxEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8YW55PiA9IGFueSwgUiBleHRlbmRzIEdyYW50ZWRSb2xlID0gR3JhbnRlZFJvbGU+IHtcbiAgcmVhZG9ubHkgbW9kZWxJbmZvSW5zdGFuY2UkOiBPYnNlcnZhYmxlPERieEZpcmViYXNlSW5Db250ZXh0RmlyZWJhc2VNb2RlbEluZm9TZXJ2aWNlSW5zdGFuY2U8RCwgUj4+O1xuICByZWFkb25seSBkYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlOiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlO1xuICByZWFkb25seSBrZXkkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHJlYWRvbmx5IG1vZGVsVHlwZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcmVhZG9ubHkgc25hcHNob3REYXRhJDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVEb2N1bWVudERhdGE8RD4+PjtcbiAgcmVhZG9ubHkgdHlwZUluZm8kOiBPYnNlcnZhYmxlPERieEZpcmViYXNlTW9kZWxUeXBlSW5mbzx1bmtub3duPj47XG4gIHJlYWRvbmx5IGlkZW50aXR5JDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkZW50aXR5PjtcbiAgcmVhZG9ubHkgc2VndWVSZWYkOiBPYnNlcnZhYmxlPE1heWJlPFNlZ3VlUmVmPj47XG4gIHJlYWRvbmx5IGRpc3BsYXlJbmZvJDogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsRGlzcGxheUluZm8+O1xuICByZWFkb25seSBjbGlja2FibGVTZWd1ZVJlZiQ6IE9ic2VydmFibGU8TWF5YmU8Q2xpY2thYmxlQW5jaG9yTGlua1NlZ3VlUmVmPj47XG4gIHJlYWRvbmx5IHNhZmVJbnN0YW5jZVBhaXIkOiBPYnNlcnZhYmxlPE1heWJlPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXI+PjtcbiAgcmVhZG9ubHkgaW5zdGFuY2VQYWlyJDogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZTxEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8YW55PiA9IGFueSwgUiBleHRlbmRzIEdyYW50ZWRSb2xlID0gR3JhbnRlZFJvbGU+KG1vZGVsSW5mb0luc3RhbmNlJDogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZUluQ29udGV4dEZpcmViYXNlTW9kZWxJbmZvU2VydmljZUluc3RhbmNlPEQsIFI+PiwgZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZTogRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSkge1xuICBjb25zdCBrZXkkID0gbW9kZWxJbmZvSW5zdGFuY2UkLnBpcGUoc3dpdGNoTWFwKCh4KSA9PiB4LmtleSQpKTtcbiAgY29uc3QgbW9kZWxUeXBlJCA9IG1vZGVsSW5mb0luc3RhbmNlJC5waXBlKHN3aXRjaE1hcCgoeCkgPT4geC5tb2RlbFR5cGUkKSk7XG4gIGNvbnN0IHNuYXBzaG90RGF0YSQgPSBtb2RlbEluZm9JbnN0YW5jZSQucGlwZShzd2l0Y2hNYXAoKHgpID0+IHguc25hcHNob3REYXRhJCkpO1xuXG4gIGNvbnN0IHR5cGVJbmZvJCA9IG1vZGVsVHlwZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IGRieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2UuaW5mb0ZvclR5cGUoeCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBjb25zdCBpZGVudGl0eSQgPSB0eXBlSW5mbyQucGlwZShcbiAgICBtYXAoKHgpID0+IHguaWRlbnRpdHkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgKTtcblxuICBjb25zdCBzZWd1ZVJlZiQ6IE9ic2VydmFibGU8TWF5YmU8U2VndWVSZWY+PiA9IGNvbWJpbmVMYXRlc3QoW2tleSQsIHR5cGVJbmZvJF0pLnBpcGUoXG4gICAgbWFwKChba2V5LCBpbmZvXSkgPT4gKGluZm8uc3JlZiA/IGluZm8uc3JlZihrZXkpIDogdW5kZWZpbmVkKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBjb25zdCBkaXNwbGF5SW5mbyQ6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VNb2RlbERpc3BsYXlJbmZvPiA9IGNvbWJpbmVMYXRlc3QoW3R5cGVJbmZvJCwgc25hcHNob3REYXRhJF0pLnBpcGUoXG4gICAgbWFwKChbdHlwZUluZm8sIGRhdGFdKSA9PiBkYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlLmdldERpc3BsYXlJbmZvKHR5cGVJbmZvLCBkYXRhKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBjb25zdCBjbGlja2FibGVTZWd1ZVJlZiQ6IE9ic2VydmFibGU8TWF5YmU8Q2xpY2thYmxlQW5jaG9yTGlua1NlZ3VlUmVmPj4gPSBjb21iaW5lTGF0ZXN0KFtzZWd1ZVJlZiQsIGRpc3BsYXlJbmZvJF0pLnBpcGUoXG4gICAgbWFwKChbc2VndWVSZWYsIGRpc3BsYXlJbmZvXSkgPT4ge1xuICAgICAgbGV0IHJlZjogTWF5YmU8Q2xpY2thYmxlQW5jaG9yTGlua1NlZ3VlUmVmPiA9IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHNlZ3VlUmVmKSB7XG4gICAgICAgIHJlZiA9IHtcbiAgICAgICAgICAuLi5zZWd1ZVJlZixcbiAgICAgICAgICB0aXRsZTogZGlzcGxheUluZm8udGl0bGUsXG4gICAgICAgICAgaWNvbjogZGlzcGxheUluZm8uaWNvblxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVmO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3QgaW5zdGFuY2VQYWlyJDogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyPiA9IGNvbWJpbmVMYXRlc3QoW2NsaWNrYWJsZVNlZ3VlUmVmJCwgZGlzcGxheUluZm8kLCBrZXkkXSkucGlwZShcbiAgICBtYXAoKFtzZWd1ZVJlZiwgZGlzcGxheUluZm8sIGtleV0pID0+ICh7IHNlZ3VlUmVmLCBkaXNwbGF5SW5mbywga2V5LCBpbnN0YW5jZSB9KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBjb25zdCBzYWZlSW5zdGFuY2VQYWlyJDogT2JzZXJ2YWJsZTxNYXliZTxEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyPj4gPSBpbnN0YW5jZVBhaXIkLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZih1bmRlZmluZWQpKSk7XG5cbiAgY29uc3QgaW5zdGFuY2U6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZTxELCBSPiA9IHtcbiAgICBtb2RlbEluZm9JbnN0YW5jZSQsXG4gICAgZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSxcbiAgICBrZXkkLFxuICAgIG1vZGVsVHlwZSQsXG4gICAgc25hcHNob3REYXRhJCxcbiAgICB0eXBlSW5mbyQsXG4gICAgaWRlbnRpdHkkLFxuICAgIHNlZ3VlUmVmJCxcbiAgICBkaXNwbGF5SW5mbyQsXG4gICAgY2xpY2thYmxlU2VndWVSZWYkLFxuICAgIHNhZmVJbnN0YW5jZVBhaXIkLFxuICAgIGluc3RhbmNlUGFpciRcbiAgfTtcblxuICByZXR1cm4gaW5zdGFuY2U7XG59XG4iXX0=
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudHlwZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL21vZHVsZXMvbW9kZWwvbW9kZWwudHlwZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEgsT0FBTyxFQUFzQyxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVGLE9BQU8sRUFBZ0IsT0FBTyxFQUFrRSxNQUFNLGVBQWUsQ0FBQztBQUV0SCxPQUFPLEVBQXFCLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFHckY7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGtDQUFrQztDQUt2RDtBQXdCRDs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLDRCQUE0QjtJQUM5Qiw4QkFBOEIsR0FBRyxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUV4RSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsQ0FBQSxvQkFBOEMsQ0FBQSxDQUFDLENBQUM7SUFFdkYsWUFBd0QsYUFBaUQ7UUFDdkcsSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjLENBQUksUUFBcUMsRUFBRSxJQUFPO1FBQzlELElBQUksV0FBc0QsQ0FBQztRQUUzRCxJ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LElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUzSSxNQUFNLFFBQVEsR0FBK0M7UUFDM0Qsa0JBQWtCO1FBQ2xCLDRCQUE0QjtRQUM1QixJQUFJO1FBQ0osVUFBVTtRQUNWLGFBQWE7UUFDYixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxZQUFZO1FBQ1osa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQixhQUFhO0tBQ2QsQ0FBQztJQUVGLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCBjb21iaW5lTGF0ZXN0LCBvZiwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlyZXN0b3JlQ29sbGVjdGlvblR5cGUsIEZpcmVzdG9yZURvY3VtZW50LCBGaXJlc3RvcmVEb2N1bWVudERhdGEsIEZpcmVzdG9yZU1vZGVsSWRlbnRpdHksIEZpcmVzdG9yZU1vZGVsS2V5IH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgRGJ4TW9kZWxUeXBlSW5mbywgRGJ4TW9kZWxUeXBlc01hcCwgRGJ4TW9kZWxUeXBlc1NlcnZpY2UgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IEFycmF5T3JWYWx1ZSwgYXNBcnJheSwgQ29uZmlndXJhYmxlLCBGYWN0b3J5V2l0aFJlcXVpcmVkSW5wdXQsIE1heWJlLCBNb2RlbFR5cGVTdHJpbmcgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IENsaWNrYWJsZUFuY2hvckxpbmtTZWd1ZVJlZiwgSWNvbkFuZFRpdGxlLCBTZWd1ZVJlZiB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGVPclZhbHVlLCBmaWx0ZXJNYXliZUFycmF5IH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBHcmFudGVkUm9sZSB9IGZyb20gJ0BkZXJlZWtiL21vZGVsJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL21vZGVsLmNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZUluQ29udGV4dEZpcmViYXNlTW9kZWxJbmZvU2VydmljZUluc3RhbmNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9tb2RlbC5jb250ZXh0JztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHByb3ZpZGVkIGluIHRoZSByb290IG1vZHVsZSBmb3IgY29uZmlndXJpbmcgZW50cmllcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VDb25maWcge1xuICAvKipcbiAgICogRW50cmllcyB0byByZWdpc3Rlci5cbiAgICovXG4gIGFic3RyYWN0IGVudHJpZXM6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VFbnRyeVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VFbnRyeTxUID0gdW5rbm93bj4gZXh0ZW5kcyBPbWl0PERieE1vZGVsVHlwZUluZm8sICdjYW5TZWd1ZVRvVmlldycgfCAnbW9kZWxUeXBlJz4ge1xuICAvKipcbiAgICogSWRlbnRpdHkgb2YgdGhlIGl0ZW0gYmVpbmcgcmVnaXN0ZXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5OiBGaXJlc3RvcmVNb2RlbElkZW50aXR5O1xuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgRGJ4RmlyZWJhc2VNb2RlbERpc3BsYXlJbmZvIGZvciB0aGUgaW5wdXQgZGF0YS5cbiAgICpcbiAgICogSWYgbm8gaWNvbiBpcyBwcm92aWRlZCwgaXQgdXNlcyB0aGUgZGVmYXVsdCBpY29uIGNvbmZpZ3VyZWQgaW4gdGhpcyBlbnRyeS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICByZWFkb25seSBkaXNwbGF5SW5mb0ZhY3Rvcnk6IEZhY3RvcnlXaXRoUmVxdWlyZWRJbnB1dDxEYnhGaXJlYmFzZU1vZGVsRGlzcGxheUluZm8sIFQ+O1xufVxuXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZU1vZGVsRGlzcGxheUluZm8gPSBJY29uQW5kVGl0bGU7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvPFQgPSB1bmtub3duPiBleHRlbmRzIERieE1vZGVsVHlwZUluZm8sIFBpY2s8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUVudHJ5PFQ+LCAnaWRlbnRpdHknIHwgJ2Rpc3BsYXlJbmZvRmFjdG9yeSc+IHt9XG5cbmV4cG9ydCB0eXBlIERieEZpcmViYXNlTW9kZWxUeXBlc01hcCA9IERieE1vZGVsVHlwZXNNYXA8RGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvPjtcblxuLyoqXG4gKiBQcm92aWRlcyBtb2RlbCB0eXBlIGluZm9ybWF0aW9uIGFib3V0IG1vZGVscyByZWdpc3RlcmVkIHdpdGhpbiBGaXJlYmFzZS5cbiAqXG4gKiBBdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZXMgdGhlIERieE1vZGVsVHlwZXNTZXJ2aWNlLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSB7XG4gIHJlYWRvbmx5IGRieEZpcmViYXNlTW9kZWxDb250ZXh0U2VydmljZSA9IGluamVjdChEYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IGRieE1vZGVsVHlwZXNTZXJ2aWNlID0gaW5qZWN0KERieE1vZGVsVHlwZXNTZXJ2aWNlPERieEZpcmViYXNlTW9kZWxUeXBlSW5mbz4pO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUNvbmZpZykgaW5pdGlhbENvbmZpZzogRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUNvbmZpZykge1xuICAgIGlmIChpbml0aWFsQ29uZmlnLmVudHJpZXMpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXIoaW5pdGlhbENvbmZpZy5lbnRyaWVzKTtcbiAgICB9XG4gIH1cblxuICBnZXREaXNwbGF5SW5mbzxUPih0eXBlSW5mbzogRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvPFQ+LCBkYXRhOiBUKTogRGJ4RmlyZWJhc2VNb2RlbERpc3BsYXlJbmZvIHtcbiAgICBsZXQgZGlzcGxheUluZm86IENvbmZpZ3VyYWJsZTxEYnhGaXJlYmFzZU1vZGVsRGlzcGxheUluZm8+O1xuXG4gICAgaWYgKGRhdGEgIT0gbnVsbCkge1xuICAgICAgZGlzcGxheUluZm8gPSB0eXBlSW5mby5kaXNwbGF5SW5mb0ZhY3RvcnkoZGF0YSk7XG4gICAgICBkaXNwbGF5SW5mby5pY29uID0gZGlzcGxheUluZm8uaWNvbiB8fCB0eXBlSW5mby5pY29uOyAvLyBzZXQgZGVmYXVsdCBpY29uXG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BsYXlJbmZvID0gdGhpcy5nZXREZWZhdWx0RGlzcGxheUluZm8odHlwZUluZm8pO1xuICAgIH1cblxuICAgIHJldHVybiBkaXNwbGF5SW5mbztcbiAgfVxuXG4gIGdldERlZmF1bHREaXNwbGF5SW5mbzxUID0gdW5rbm93bj4odHlwZUluZm86IERieEZpcmViYXNlTW9kZWxUeXBlSW5mbzxUPikge1xuICAgIC8vIFRPRE86IE1ha2UgY29uZmlndXJhYmxlXG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiB0eXBlSW5mby5sYWJlbCA/PyAnJyxcbiAgICAgIGljb246ICd3YXJuaW5nJ1xuICAgIH07XG4gIH1cblxuICAvLyBNQVJLOiBSZWdpc3RlclxuICByZWdpc3RlcihlbnRyaWVzOiBBcnJheU9yVmFsdWU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUVudHJ5Pikge1xuICAgIGNvbnN0IHR5cGVDb25maWdzID0gYXNBcnJheShlbnRyaWVzKS5tYXAoKHgpID0+ICh7IC4uLngsIG1vZGVsVHlwZTogeC5pZGVudGl0eS5tb2RlbFR5cGUgfSkpO1xuICAgIHRoaXMuZGJ4TW9kZWxUeXBlc1NlcnZpY2UuYWRkVHlwZUNvbmZpZ3ModHlwZUNvbmZpZ3MpO1xuICB9XG5cbiAgLy8gTUFSSzogUmV0cmlldmFsXG4gIGN1cnJlbnRJbmZvRm9yVHlwZSh0eXBlOiBNb2RlbFR5cGVTdHJpbmcgfCBGaXJlc3RvcmVDb2xsZWN0aW9uVHlwZSk6IE9ic2VydmFibGU8TWF5YmU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvPj4ge1xuICAgIHJldHVybiB0aGlzLmRieE1vZGVsVHlwZXNTZXJ2aWNlLnR5cGVzTWFwJC5waXBlKG1hcCgoeCkgPT4geFt0eXBlXSkpO1xuICB9XG5cbiAgaW5mb0ZvclR5cGUodHlwZTogTW9kZWxUeXBlU3RyaW5nIHwgRmlyZXN0b3JlQ29sbGVjdGlvblR5cGUpOiBPYnNlcnZhYmxlPERieEZpcmViYXNlTW9kZWxUeXBlSW5mbz4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbmZvRm9yVHlwZSh0eXBlKS5waXBlKFxuICAgICAgbWFwKCh4KSA9PiB7XG4gICAgICAgIGlmICgheCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2U6IGNvbnRhaW5lZCBubyBpbmZvIGZvciB0eXBlIFwiJHt0eXBlfVwiLiBFbnN1cmUgdGhlIGNvcnJlY3QgdHlwZSB3YXMgZW50ZXJlZCwgYW5kIHRoYXQgdGhlIHR5cGUgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlLmApO1xuICAgICAgICAgIHRocm93IHg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geCBhcyBEYnhGaXJlYmFzZU1vZGVsVHlwZUluZm87XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBpbnN0YW5jZUZvcktleTxEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8YW55PiA9IGFueSwgUiBleHRlbmRzIEdyYW50ZWRSb2xlID0gR3JhbnRlZFJvbGU+KGtleSQ6IE9ic2VydmFibGVPclZhbHVlPEZpcmVzdG9yZU1vZGVsS2V5Pik6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZTxELCBSPiB7XG4gICAgcmV0dXJuIGRieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZTxELCBSPih0aGlzLmRieEZpcmViYXNlTW9kZWxDb250ZXh0U2VydmljZS5tb2RlbEluZm9JbnN0YW5jZTxELCBSPihrZXkkKSwgdGhpcyk7XG4gIH1cblxuICBpbnN0YW5jZVBhaXJzRm9yS2V5cyhrZXlzOiBBcnJheU9yVmFsdWU8T2JzZXJ2YWJsZU9yVmFsdWU8RmlyZXN0b3JlTW9kZWxLZXk+Pikge1xuICAgIHJldHVybiBkYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyRm9yS2V5c0ZhY3RvcnkodGhpcykoa2V5cyk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBwYWlyIGZvciBhbiBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyPEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxhbnk+ID0gYW55LCBSIGV4dGVuZHMgR3JhbnRlZFJvbGUgPSBHcmFudGVkUm9sZT4ge1xuICByZWFkb25seSBrZXk6IEZpcmVzdG9yZU1vZGVsS2V5O1xuICByZWFkb25seSBpbnN0YW5jZTogRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlPEQsIFI+O1xuICByZWFkb25seSBkaXNwbGF5SW5mbzogRGJ4RmlyZWJhc2VNb2RlbERpc3BsYXlJbmZvO1xuICByZWFkb25seSBzZWd1ZVJlZjogTWF5YmU8Q2xpY2thYmxlQW5jaG9yTGlua1NlZ3VlUmVmPjtcbn1cblxuZXhwb3J0IHR5cGUgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpckZvcktleXNGYWN0b3J5ID0gKGtleXM6IEFycmF5T3JWYWx1ZTxPYnNlcnZhYmxlT3JWYWx1ZTxGaXJlc3RvcmVNb2RlbEtleT4+KSA9PiBPYnNlcnZhYmxlPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXJbXT47XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyRm9yS2V5c0ZhY3Rvcnkoc2VydmljZTogRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSk6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXJGb3JLZXlzRmFjdG9yeSB7XG4gIHJldHVybiAoa2V5czogQXJyYXlPclZhbHVlPE9ic2VydmFibGVPclZhbHVlPEZpcmVzdG9yZU1vZGVsS2V5Pj4pID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZXMgPSBhc0FycmF5KGtleXMpLm1hcCgoeCkgPT4gc2VydmljZS5pbnN0YW5jZUZvcktleSh4KS5zYWZlSW5zdGFuY2VQYWlyJCk7XG4gICAgcmV0dXJuIGluc3RhbmNlcy5sZW5ndGggPyBjb21iaW5lTGF0ZXN0KGluc3RhbmNlcykucGlwZShmaWx0ZXJNYXliZUFycmF5KCksIHNoYXJlUmVwbGF5KDEpKSA6IG9mKFtdKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlIGluc3RhbmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlPEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxhbnk+ID0gYW55LCBSIGV4dGVuZHMgR3JhbnRlZFJvbGUgPSBHcmFudGVkUm9sZT4ge1xuICByZWFkb25seSBtb2RlbEluZm9JbnN0YW5jZSQ6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VJbkNvbnRleHRGaXJlYmFzZU1vZGVsSW5mb1NlcnZpY2VJbnN0YW5jZTxELCBSPj47XG4gIHJlYWRvbmx5IGRieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2U6IERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2U7XG4gIHJlYWRvbmx5IGtleSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcmVhZG9ubHkgbW9kZWxUeXBlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICByZWFkb25seSBzbmFwc2hvdERhdGEkOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZURvY3VtZW50RGF0YTxEPj4+O1xuICByZWFkb25seSB0eXBlSW5mbyQ6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVJbmZvPHVua25vd24+PjtcbiAgcmVhZG9ubHkgaWRlbnRpdHkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsSWRlbnRpdHk+O1xuICByZWFkb25seSBzZWd1ZVJlZiQ6IE9ic2VydmFibGU8TWF5YmU8U2VndWVSZWY+PjtcbiAgcmVhZG9ubHkgZGlzcGxheUluZm8kOiBPYnNlcnZhYmxlPERieEZpcmViYXNlTW9kZWxEaXNwbGF5SW5mbz47XG4gIHJlYWRvbmx5IGNsaWNrYWJsZVNlZ3VlUmVmJDogT2JzZXJ2YWJsZTxNYXliZTxDbGlja2FibGVBbmNob3JMaW5rU2VndWVSZWY+PjtcbiAgcmVhZG9ubHkgc2FmZUluc3RhbmNlUGFpciQ6IE9ic2VydmFibGU8TWF5YmU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpcj4+O1xuICByZWFkb25seSBpbnN0YW5jZVBhaXIkOiBPYnNlcnZhYmxlPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXI+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlPEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxhbnk+ID0gYW55LCBSIGV4dGVuZHMgR3JhbnRlZFJvbGUgPSBHcmFudGVkUm9sZT4obW9kZWxJbmZvSW5zdGFuY2UkOiBPYnNlcnZhYmxlPERieEZpcmViYXNlSW5Db250ZXh0RmlyZWJhc2VNb2RlbEluZm9TZXJ2aWNlSW5zdGFuY2U8RCwgUj4+LCBkYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlOiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlKSB7XG4gIGNvbnN0IGtleSQgPSBtb2RlbEluZm9JbnN0YW5jZSQucGlwZShzd2l0Y2hNYXAoKHgpID0+IHgua2V5JCkpO1xuICBjb25zdCBtb2RlbFR5cGUkID0gbW9kZWxJbmZvSW5zdGFuY2UkLnBpcGUoc3dpdGNoTWFwKCh4KSA9PiB4Lm1vZGVsVHlwZSQpKTtcbiAgY29uc3Qgc25hcHNob3REYXRhJCA9IG1vZGVsSW5mb0luc3RhbmNlJC5waXBlKHN3aXRjaE1hcCgoeCkgPT4geC5zbmFwc2hvdERhdGEkKSk7XG5cbiAgY29uc3QgdHlwZUluZm8kID0gbW9kZWxUeXBlJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4gZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZS5pbmZvRm9yVHlwZSh4KSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0IGlkZW50aXR5JCA9IHR5cGVJbmZvJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5pZGVudGl0eSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICApO1xuXG4gIGNvbnN0IHNlZ3VlUmVmJDogT2JzZXJ2YWJsZTxNYXliZTxTZWd1ZVJlZj4+ID0gY29tYmluZUxhdGVzdChba2V5JCwgdHlwZUluZm8kXSkucGlwZShcbiAgICBtYXAoKFtrZXksIGluZm9dKSA9PiAoaW5mby5zcmVmID8gaW5mby5zcmVmKGtleSkgOiB1bmRlZmluZWQpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0IGRpc3BsYXlJbmZvJDogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsRGlzcGxheUluZm8+ID0gY29tYmluZUxhdGVzdChbdHlwZUluZm8kLCBzbmFwc2hvdERhdGEkXSkucGlwZShcbiAgICBtYXAoKFt0eXBlSW5mbywgZGF0YV0pID0+IGRieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2UuZ2V0RGlzcGxheUluZm8odHlwZUluZm8sIGRhdGEpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0IGNsaWNrYWJsZVNlZ3VlUmVmJDogT2JzZXJ2YWJsZTxNYXliZTxDbGlja2FibGVBbmNob3JMaW5rU2VndWVSZWY+PiA9IGNvbWJpbmVMYXRlc3QoW3NlZ3VlUmVmJCwgZGlzcGxheUluZm8kXSkucGlwZShcbiAgICBtYXAoKFtzZWd1ZVJlZiwgZGlzcGxheUluZm9dKSA9PiB7XG4gICAgICBsZXQgcmVmOiBNYXliZTxDbGlja2FibGVBbmNob3JMaW5rU2VndWVSZWY+ID0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoc2VndWVSZWYpIHtcbiAgICAgICAgcmVmID0ge1xuICAgICAgICAgIC4uLnNlZ3VlUmVmLFxuICAgICAgICAgIHRpdGxlOiBkaXNwbGF5SW5mby50aXRsZSxcbiAgICAgICAgICBpY29uOiBkaXNwbGF5SW5mby5pY29uXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWY7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBjb25zdCBpbnN0YW5jZVBhaXIkOiBPYnNlcnZhYmxlPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXI+ID0gY29tYmluZUxhdGVzdChbY2xpY2thYmxlU2VndWVSZWYkLCBkaXNwbGF5SW5mbyQsIGtleSRdKS5waXBlKFxuICAgIG1hcCgoW3NlZ3VlUmVmLCBkaXNwbGF5SW5mbywga2V5XSkgPT4gKHsgc2VndWVSZWYsIGRpc3BsYXlJbmZvLCBrZXksIGluc3RhbmNlIH0pKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0IHNhZmVJbnN0YW5jZVBhaXIkOiBPYnNlcnZhYmxlPE1heWJlPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXI+PiA9IGluc3RhbmNlUGFpciQucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKHVuZGVmaW5lZCkpKTtcblxuICBjb25zdCBpbnN0YW5jZTogRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlPEQsIFI+ID0ge1xuICAgIG1vZGVsSW5mb0luc3RhbmNlJCxcbiAgICBkYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlLFxuICAgIGtleSQsXG4gICAgbW9kZWxUeXBlJCxcbiAgICBzbmFwc2hvdERhdGEkLFxuICAgIHR5cGVJbmZvJCxcbiAgICBpZGVudGl0eSQsXG4gICAgc2VndWVSZWYkLFxuICAgIGRpc3BsYXlJbmZvJCxcbiAgICBjbGlja2FibGVTZWd1ZVJlZiQsXG4gICAgc2FmZUluc3RhbmNlUGFpciQsXG4gICAgaW5zdGFuY2VQYWlyJFxuICB9O1xuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  export * from './model.store.module';
2
+ export * from './store';
2
3
  export * from './store.collection';
3
4
  export * from './store.collection.crud';
4
5
  export * from './store.collection.change.directive';
@@ -15,4 +16,7 @@ export * from './store.subcollection';
15
16
  export * from './store.subcollection.document';
16
17
  export * from './store.subcollection.directive';
17
18
  export * from './store.subcollection.rxjs';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL3N0b3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbW9kZWwuc3RvcmUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuY29sbGVjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmNvbGxlY3Rpb24uY3J1ZCc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmNvbGxlY3Rpb24uY2hhbmdlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmNvbGxlY3Rpb24uY2hhbmdlLmlmLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmNvbGxlY3Rpb24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuY29sbGVjdGlvbi5saXN0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmRvY3VtZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuZG9jdW1lbnQuY3J1ZCc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmRvY3VtZW50LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmRvY3VtZW50LnR3b3dheS5rZXkuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuZG9jdW1lbnQudHdvd2F5LmtleS5zb3VyY2UuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuZG9jdW1lbnQudHdvd2F5LmtleS5zb3VyY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5zdWJjb2xsZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuc3ViY29sbGVjdGlvbi5kb2N1bWVudCc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLnN1YmNvbGxlY3Rpb24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuc3ViY29sbGVjdGlvbi5yeGpzJztcbiJdfQ==
19
+ export * from './store.document.context.store';
20
+ export * from './store.document.context.store.link';
21
+ export * from './store.document.context.store.directive';
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL3N0b3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywwQ0FBMEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbW9kZWwuc3RvcmUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuY29sbGVjdGlvbi5jcnVkJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuY29sbGVjdGlvbi5jaGFuZ2UuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuY29sbGVjdGlvbi5jaGFuZ2UuaWYuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuY29sbGVjdGlvbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uLmxpc3QuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuZG9jdW1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5kb2N1bWVudC5jcnVkJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuZG9jdW1lbnQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuZG9jdW1lbnQudHdvd2F5LmtleS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5kb2N1bWVudC50d293YXkua2V5LnNvdXJjZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5kb2N1bWVudC50d293YXkua2V5LnNvdXJjZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLnN1YmNvbGxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5zdWJjb2xsZWN0aW9uLmRvY3VtZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuc3ViY29sbGVjdGlvbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5zdWJjb2xsZWN0aW9uLnJ4anMnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5kb2N1bWVudC5jb250ZXh0LnN0b3JlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuZG9jdW1lbnQuY29udGV4dC5zdG9yZS5saW5rJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuZG9jdW1lbnQuY29udGV4dC5zdG9yZS5kaXJlY3RpdmUnO1xuIl19
@@ -0,0 +1,19 @@
1
+ import { Directive } from '@angular/core';
2
+ import { provideDbxFirebaseDocumentStoreContextStore } from './store.document.context.store.link';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Directive that provides a DbxFirebaseDocumentStoreContextStore.
6
+ */
7
+ export class DbxFirebaseDocumentStoreContextStoreDirective {
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseDocumentStoreContextStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
9
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxFirebaseDocumentStoreContextStoreDirective, isStandalone: true, selector: "[dbxFirebaseDocumentStoreContextStore]", providers: provideDbxFirebaseDocumentStoreContextStore(), ngImport: i0 });
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseDocumentStoreContextStoreDirective, decorators: [{
12
+ type: Directive,
13
+ args: [{
14
+ selector: '[dbxFirebaseDocumentStoreContextStore]',
15
+ providers: provideDbxFirebaseDocumentStoreContextStore(),
16
+ standalone: true
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZG9jdW1lbnQuY29udGV4dC5zdG9yZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL3N0b3JlL3N0b3JlLmRvY3VtZW50LmNvbnRleHQuc3RvcmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLDJDQUEyQyxFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBRWxHOztHQUVHO0FBTUgsTUFBTSxPQUFPLDZDQUE2Qzt3R0FBN0MsNkNBQTZDOzRGQUE3Qyw2Q0FBNkMscUZBSDdDLDJDQUEyQyxFQUFFOzs0RkFHN0MsNkNBQTZDO2tCQUx6RCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3Q0FBd0M7b0JBQ2xELFNBQVMsRUFBRSwyQ0FBMkMsRUFBRTtvQkFDeEQsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwcm92aWRlRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0b3JlIH0gZnJvbSAnLi9zdG9yZS5kb2N1bWVudC5jb250ZXh0LnN0b3JlLmxpbmsnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0aGF0IHByb3ZpZGVzIGEgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0b3JlLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0b3JlXScsXG4gIHByb3ZpZGVyczogcHJvdmlkZURieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdG9yZSgpLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdG9yZURpcmVjdGl2ZSB7fVxuIl19
@@ -0,0 +1,45 @@
1
+ import { inject, DestroyRef, InjectionToken } from '@angular/core';
2
+ import { DbxFirebaseDocumentStoreContextStore } from './store.document.context.store';
3
+ /**
4
+ * Injection token for DbxFirebaseDocumentStoreContextStore.
5
+ */
6
+ export const DBX_FIREBASE_DOCUMENT_STORE_CONTEXT_STORE_TOKEN = new InjectionToken('DBX_FIREBASE_DOCUMENT_STORE_CONTEXT_STORE_TOKEN');
7
+ /**
8
+ * Provides the DbxFirebaseDocumentStoreContextStore.
9
+ */
10
+ export function provideDbxFirebaseDocumentStoreContextStore() {
11
+ return [
12
+ {
13
+ // Create/Provide a "nearest" DbxFirebaseDocumentStoreContextStore.
14
+ provide: DbxFirebaseDocumentStoreContextStore
15
+ },
16
+ {
17
+ // Also make that context store available to the DBX_FIREBASE_DOCUMENT_STORE_CONTEXT_STORE_TOKEN.
18
+ provide: DBX_FIREBASE_DOCUMENT_STORE_CONTEXT_STORE_TOKEN,
19
+ useExisting: DbxFirebaseDocumentStoreContextStore,
20
+ multi: true
21
+ }
22
+ ];
23
+ }
24
+ /**
25
+ * Links a DbxFirebaseDocumentStore to parent DbxFirebaseDocumentStoreContextStore instances.
26
+ *
27
+ * This should be called in an injectable context.
28
+ */
29
+ export function linkDocumentStoreToParentContextStores(store) {
30
+ const contextStores = inject(DBX_FIREBASE_DOCUMENT_STORE_CONTEXT_STORE_TOKEN, { optional: true });
31
+ const destroyRef = inject(DestroyRef);
32
+ if (contextStores) {
33
+ // add the store to each available context store
34
+ contextStores.forEach((contextStore) => {
35
+ contextStore.addStore(store);
36
+ });
37
+ // remove the store from each available context store when the context is destroyed
38
+ destroyRef.onDestroy(() => {
39
+ contextStores.forEach((contextStore) => {
40
+ contextStore.removeStore(store);
41
+ });
42
+ });
43
+ }
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZG9jdW1lbnQuY29udGV4dC5zdG9yZS5saW5rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbW9kdWxlcy9zdG9yZS9zdG9yZS5kb2N1bWVudC5jb250ZXh0LnN0b3JlLmxpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUd0Rjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLCtDQUErQyxHQUFHLElBQUksY0FBYyxDQUF5QyxpREFBaUQsQ0FBQyxDQUFDO0FBRTdLOztHQUVHO0FBQ0gsTUFBTSxVQUFVLDJDQUEyQztJQUN6RCxPQUFPO1FBQ0w7WUFDRSxtRUFBbUU7WUFDbkUsT0FBTyxFQUFFLG9DQUFvQztTQUM5QztRQUNEO1lBQ0UsaUdBQWlHO1lBQ2pHLE9BQU8sRUFBRSwrQ0FBK0M7WUFDeEQsV0FBVyxFQUFFLG9DQUFvQztZQUNqRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHNDQUFzQyxDQUFDLEtBQXlDO0lBQzlGLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQywrQ0FBK0MsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xHLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV0QyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ2xCLGdEQUFnRDtRQUNoRCxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDckMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILG1GQUFtRjtRQUNuRixVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN4QixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBQ3JDLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBEZXN0cm95UmVmLCBJbmplY3Rpb25Ub2tlbiwgdHlwZSBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0b3JlIH0gZnJvbSAnLi9zdG9yZS5kb2N1bWVudC5jb250ZXh0LnN0b3JlJztcbmltcG9ydCB7IHR5cGUgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlIH0gZnJvbSAnLi9zdG9yZSc7XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RvcmUuXG4gKi9cbmV4cG9ydCBjb25zdCBEQlhfRklSRUJBU0VfRE9DVU1FTlRfU1RPUkVfQ09OVEVYVF9TVE9SRV9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RvcmVbXT4oJ0RCWF9GSVJFQkFTRV9ET0NVTUVOVF9TVE9SRV9DT05URVhUX1NUT1JFX1RPS0VOJyk7XG5cbi8qKlxuICogUHJvdmlkZXMgdGhlIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdG9yZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RvcmUoKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgLy8gQ3JlYXRlL1Byb3ZpZGUgYSBcIm5lYXJlc3RcIiBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RvcmUuXG4gICAgICBwcm92aWRlOiBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RvcmVcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFsc28gbWFrZSB0aGF0IGNvbnRleHQgc3RvcmUgYXZhaWxhYmxlIHRvIHRoZSBEQlhfRklSRUJBU0VfRE9DVU1FTlRfU1RPUkVfQ09OVEVYVF9TVE9SRV9UT0tFTi5cbiAgICAgIHByb3ZpZGU6IERCWF9GSVJFQkFTRV9ET0NVTUVOVF9TVE9SRV9DT05URVhUX1NUT1JFX1RPS0VOLFxuICAgICAgdXNlRXhpc3Rpbmc6IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdG9yZSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdO1xufVxuXG4vKipcbiAqIExpbmtzIGEgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlIHRvIHBhcmVudCBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RvcmUgaW5zdGFuY2VzLlxuICpcbiAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBpbiBhbiBpbmplY3RhYmxlIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaW5rRG9jdW1lbnRTdG9yZVRvUGFyZW50Q29udGV4dFN0b3JlcyhzdG9yZTogRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlPGFueSwgYW55Pikge1xuICBjb25zdCBjb250ZXh0U3RvcmVzID0gaW5qZWN0KERCWF9GSVJFQkFTRV9ET0NVTUVOVF9TVE9SRV9DT05URVhUX1NUT1JFX1RPS0VOLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIGlmIChjb250ZXh0U3RvcmVzKSB7XG4gICAgLy8gYWRkIHRoZSBzdG9yZSB0byBlYWNoIGF2YWlsYWJsZSBjb250ZXh0IHN0b3JlXG4gICAgY29udGV4dFN0b3Jlcy5mb3JFYWNoKChjb250ZXh0U3RvcmUpID0+IHtcbiAgICAgIGNvbnRleHRTdG9yZS5hZGRTdG9yZShzdG9yZSk7XG4gICAgfSk7XG5cbiAgICAvLyByZW1vdmUgdGhlIHN0b3JlIGZyb20gZWFjaCBhdmFpbGFibGUgY29udGV4dCBzdG9yZSB3aGVuIHRoZSBjb250ZXh0IGlzIGRlc3Ryb3llZFxuICAgIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgIGNvbnRleHRTdG9yZXMuZm9yRWFjaCgoY29udGV4dFN0b3JlKSA9PiB7XG4gICAgICAgIGNvbnRleHRTdG9yZS5yZW1vdmVTdG9yZShzdG9yZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIl19