@dereekb/dbx-firebase 12.6.0 → 12.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/modules/storagefile/container/storagefile.download.button.component.mjs +16 -6
- package/fesm2022/dereekb-dbx-firebase.mjs +16 -6
- package/fesm2022/dereekb-dbx-firebase.mjs.map +1 -1
- package/lib/modules/storagefile/container/storagefile.download.button.component.d.ts +29 -10
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@ import { combineLatest, distinctUntilChanged, interval, map, of, shareReplay, sw
|
|
|
8
8
|
import { MatDialog } from '@angular/material/dialog';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
import * as i1 from "@dereekb/dbx-core";
|
|
11
|
-
export class
|
|
11
|
+
export class DbxFirebaseStorageFileDownloadButtonComponent {
|
|
12
12
|
matDialog = inject(MatDialog);
|
|
13
13
|
dbxWebFilePreviewService = inject(DbxWebFilePreviewService);
|
|
14
14
|
dbxFirebaseStorageFileDownloadService = inject(DbxFirebaseStorageFileDownloadService);
|
|
@@ -30,6 +30,10 @@ export class DbxFirebaseStorageFileDownloadButton {
|
|
|
30
30
|
* Defaults to true.
|
|
31
31
|
*/
|
|
32
32
|
showPreviewButton = input(true);
|
|
33
|
+
/**
|
|
34
|
+
* Whether or not to pre-load the download URL from the source.
|
|
35
|
+
*/
|
|
36
|
+
preload = input(undefined);
|
|
33
37
|
/**
|
|
34
38
|
* Output event emitted when the download URL changes.
|
|
35
39
|
*/
|
|
@@ -52,8 +56,10 @@ export class DbxFirebaseStorageFileDownloadButton {
|
|
|
52
56
|
return result;
|
|
53
57
|
});
|
|
54
58
|
preloadSignal = computed(() => {
|
|
59
|
+
const preload = this.preload();
|
|
60
|
+
const source = this.source();
|
|
55
61
|
const config = this.configSignal();
|
|
56
|
-
return config.preload ?? false;
|
|
62
|
+
return preload ?? source?.preload ?? config.preload ?? false;
|
|
57
63
|
});
|
|
58
64
|
downloadUrlSignal = signal(undefined);
|
|
59
65
|
downloadMimeTypeSignal = signal(undefined);
|
|
@@ -175,7 +181,11 @@ export class DbxFirebaseStorageFileDownloadButton {
|
|
|
175
181
|
// Output Effect
|
|
176
182
|
downloadUrlChangeEffect = effect(() => {
|
|
177
183
|
const downloadUrl = this.downloadUrlSignal();
|
|
184
|
+
const source = this.source();
|
|
178
185
|
this.downloadUrlChange.emit(downloadUrl);
|
|
186
|
+
if (source?.downloadUrlChanged) {
|
|
187
|
+
source.downloadUrlChanged(downloadUrl);
|
|
188
|
+
}
|
|
179
189
|
});
|
|
180
190
|
// Handlers
|
|
181
191
|
handleGetDownloadUrl = (value, context) => {
|
|
@@ -208,8 +218,8 @@ export class DbxFirebaseStorageFileDownloadButton {
|
|
|
208
218
|
handleGetDownloadUrlError(error);
|
|
209
219
|
}
|
|
210
220
|
};
|
|
211
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
212
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type:
|
|
221
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDownloadButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
222
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxFirebaseStorageFileDownloadButtonComponent, isStandalone: true, selector: "dbx-firebase-storagefile-download-button", inputs: { storageFileKey: { classPropertyName: "storageFileKey", publicName: "storageFileKey", isSignal: true, isRequired: false, transformFunction: null }, storageFileDownloadUrl: { classPropertyName: "storageFileDownloadUrl", publicName: "storageFileDownloadUrl", isSignal: true, isRequired: false, transformFunction: null }, embedMimeType: { classPropertyName: "embedMimeType", publicName: "embedMimeType", isSignal: true, isRequired: false, transformFunction: null }, showPreviewButton: { classPropertyName: "showPreviewButton", publicName: "showPreviewButton", isSignal: true, isRequired: false, transformFunction: null }, preload: { classPropertyName: "preload", publicName: "preload", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { downloadUrlChange: "downloadUrlChange" }, ngImport: i0, template: `
|
|
213
223
|
<dbx-anchor dbxActionAnchor [anchor]="anchorSignal()" dbxAction [dbxActionAutoTrigger]="preloadSignal()" dbxActionSnackbarError [dbxActionDisabled]="!storageFileKeySignal()" [dbxActionValue]="storageFileKeySignal()" [dbxActionHandler]="handleGetDownloadUrl" [dbxActionSuccessHandler]="handleGetDownloadUrlSuccess" [dbxActionErrorHandler]="handleGetDownloadUrlError">
|
|
214
224
|
<dbx-button dbxActionButton [buttonStyle]="buttonStyleSignal()" [icon]="iconSignal()" [text]="textSignal()"></dbx-button>
|
|
215
225
|
</dbx-anchor>
|
|
@@ -221,7 +231,7 @@ export class DbxFirebaseStorageFileDownloadButton {
|
|
|
221
231
|
}
|
|
222
232
|
`, isInline: true, dependencies: [{ kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i1.DbxActionDirective, selector: "dbx-action,[dbxAction],dbx-action-context,[dbxActionContext]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i1.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i1.DbxActionHandlerValueDirective, selector: "[dbxActionHandlerValue]", inputs: ["dbxActionHandlerValue"] }, { kind: "directive", type: i1.DbxActionDisabledDirective, selector: "[dbxActionDisabled]", inputs: ["dbxActionDisabled"] }, { kind: "directive", type: i1.DbxActionAutoTriggerDirective, selector: "dbxActionAutoTrigger,[dbxActionAutoTrigger]", inputs: ["triggerDebounce", "triggerThrottle", "triggerErrorThrottle", "maxErrorsForThrottle", "triggerLimit", "dbxActionAutoTrigger", "useFastTriggerPreset", "useInstantTriggerPreset"] }, { kind: "directive", type: i1.DbxActionValueDirective, selector: "dbxActionValue,[dbxActionValue]", inputs: ["dbxActionValue"] }, { kind: "directive", type: i1.DbxActionSuccessHandlerDirective, selector: "[dbxActionSuccessHandler]", inputs: ["dbxActionSuccessHandler"] }, { kind: "directive", type: i1.DbxActionErrorHandlerDirective, selector: "[dbxActionErrorHandler]", inputs: ["dbxActionErrorHandler"] }, { kind: "directive", type: i1.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "directive", type: DbxActionSnackbarErrorDirective, selector: "[dbxActionSnackbarError]", inputs: ["dbxActionSnackbarError"] }, { kind: "directive", type: DbxActionDialogDirective, selector: "[dbxActionDialog]", inputs: ["dbxActionDialog", "dbxActionDialogIsModified", "dbxActionDialogIsEqual"], exportAs: ["dbxActionDialog"] }, { kind: "component", type: DbxAnchorComponent, selector: "dbx-anchor, [dbx-anchor]", inputs: ["block"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
223
233
|
}
|
|
224
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
234
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDownloadButtonComponent, decorators: [{
|
|
225
235
|
type: Component,
|
|
226
236
|
args: [{
|
|
227
237
|
selector: 'dbx-firebase-storagefile-download-button',
|
|
@@ -241,4 +251,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
241
251
|
standalone: true
|
|
242
252
|
}]
|
|
243
253
|
}] });
|
|
244
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZWZpbGUuZG93bmxvYWQuYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZHVsZXMvc3RvcmFnZWZpbGUvY29udGFpbmVyL3N0b3JhZ2VmaWxlLmRvd25sb2FkLmJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsd0JBQXdCLEVBQTJCLGVBQWUsRUFBRSwrQkFBK0IsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBa0Isd0JBQXdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV6TixPQUFPLEVBQXVCLCtCQUErQixFQUFtQyxNQUFNLEVBQVMsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25KLE9BQU8sRUFBRSxxQ0FBcUMsRUFBcUQsTUFBTSx5Q0FBeUMsQ0FBQztBQUVuSixPQUFPLEVBQTBCLCtCQUErQixFQUFrQyxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsSCxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLDBCQUEwQixDQUFDOzs7QUFnRm5FLE1BQU0sT0FBTyxvQ0FBb0M7SUFDdEMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU5Qix3QkFBd0IsR0FBRyxN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LENBQUM7UUFFL0MsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1lBQzlCLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDLENBQUM7d0dBNVJTLG9DQUFvQzs0RkFBcEMsb0NBQW9DLHFnQ0FmckM7Ozs7Ozs7Ozs7R0FVVCw0REFDUyxrQkFBa0Isc1BBQUUsZUFBZSxpMkNBQUUsK0JBQStCLHlHQUFFLHdCQUF3QixpTEFBRSxrQkFBa0I7OzRGQUlqSCxvQ0FBb0M7a0JBakJoRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwwQ0FBMEM7b0JBQ3BELFFBQVEsRUFBRTs7Ozs7Ozs7OztHQVVUO29CQUNELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLGVBQWUsRUFBRSwrQkFBK0IsRUFBRSx3QkFBd0IsRUFBRSxrQkFBa0IsQ0FBQztvQkFDN0gsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhBY3Rpb25EaWFsb2dEaXJlY3RpdmUsIERieEFjdGlvbkRpYWxvZ0Z1bmN0aW9uLCBEYnhBY3Rpb25Nb2R1bGUsIERieEFjdGlvblNuYWNrYmFyRXJyb3JEaXJlY3RpdmUsIERieEFuY2hvckNvbXBvbmVudCwgRGJ4QnV0dG9uQ29tcG9uZW50LCBEYnhCdXR0b25TdHlsZSwgRGJ4V2ViRmlsZVByZXZpZXdTZXJ2aWNlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBTdG9yYWdlRmlsZURvd25sb2FkVXJsLCBTdG9yYWdlRmlsZUtleSB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IENvbnRlbnRUeXBlTWltZVR5cGUsIGRhdGVGcm9tRGF0ZU9yVGltZVNlY29uZHNOdW1iZXIsIERhdGVPclVuaXhEYXRlVGltZVNlY29uZHNOdW1iZXIsIGlzUGFzdCwgTWF5YmUsIE1TX0lOX1NFQ09ORCB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkU2VydmljZSwgRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkU2VydmljZUN1c3RvbVNvdXJjZSB9IGZyb20gJy4uL3NlcnZpY2Uvc3RvcmFnZWZpbGUuZG93bmxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBDbGlja2FibGVBbmNob3IgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBNYXliZU9ic2VydmFibGVPclZhbHVlLCBtYXliZVZhbHVlRnJvbU9ic2VydmFibGVPclZhbHVlLCBXb3JrSW5zdGFuY2UsIFdvcmtVc2luZ0NvbnRleHQgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgaW50ZXJ2YWwsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFVybFBhaXIgfSBmcm9tICcuLi9zZXJ2aWNlL3N0b3JhZ2VmaWxlLmRvd25sb2FkLnN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkQnV0dG9uU291cmNlIHtcbiAgLyoqXG4gICAqIEEgc3RhdGljIFN0b3JhZ2VGaWxlS2V5IHRvIHVzZS5cbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2VGaWxlS2V5PzogTWF5YmVPYnNlcnZhYmxlT3JWYWx1ZTxTdG9yYWdlRmlsZUtleT47XG4gIC8qKlxuICAgKiBUaGUgZXhwZWN0ZWQgbWltZSB0eXBlIG9mIHRoZSBTdG9yYWdlRmlsZSB0byB1c2Ugd2hlbiBwcmV2aWV3aW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZUZpbGVFbWJlZE1pbWVUeXBlPzogTWF5YmVPYnNlcnZhYmxlT3JWYWx1ZTxDb250ZW50VHlwZU1pbWVUeXBlIHwgc3RyaW5nPjtcbiAgLyoqXG4gICAqIEN1c3RvbSBzb3VyY2UgdG8gdXNlIHdpdGggdGhlIERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFNlcnZpY2UuIEEgbW9yZSBzaW1wbGUgYWx0ZXJuYXRpdmUgdG8gdXNpbmcgaGFuZGxlR2V0RG93bmxvYWRVcmwoKS5cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbVNvdXJjZT86IE1heWJlPERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFNlcnZpY2VDdXN0b21Tb3VyY2U+O1xuICAvKipcbiAgICogT3B0aW9uYWwgY3VzdG9tIHdvcmsgdG8gdXNlIHRvIGdldCB0aGUgZG93bmxvYWQgVVJMLlxuICAgKlxuICAgKiBJZiBwcm92aWRlZCwgY3VzdG9tU291cmNlIGlzIGlnbm9yZWQuXG4gICAqL1xuICByZWFkb25seSBoYW5kbGVHZXREb3dubG9hZFVybD86IE1heWJlPFdvcmtVc2luZ0NvbnRleHQ8U3RvcmFnZUZpbGVLZXksIERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFVybFBhaXI+PjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGN1c3RvbSBzdWNjZXNzIGhhbmRsZXIgZm9yIHRoZSBkb3dubG9hZCBVUkwuXG4gICAqL1xuICByZWFkb25seSBoYW5kbGVHZXREb3dubG9hZFVybFN1Y2Nlc3M/OiAodmFsdWU6IERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFVybFBhaXIpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBjdXN0b20gZXJyb3IgaGFuZGxlciBmb3IgdGhlIGRvd25sb2FkIFVSTC5cbiAgICovXG4gIHJlYWRvbmx5IGhhbmRsZUdldERvd25sb2FkVXJsRXJyb3I/OiAoZXJyb3I6IHVua25vd24pID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZEJ1dHRvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRCdXR0b25Db25maWcge1xuICByZWFkb25seSBidXR0b25TdHlsZT86IE1heWJlPERieEJ1dHRvblN0eWxlPjtcbiAgcmVhZG9ubHkgcHJldmlld0J1dHRvblN0eWxlPzogTWF5YmU8RGJ4QnV0dG9uU3R5bGU+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gcHJlLWxvYWQgdGhlIGRvd25sb2FkIHVybCBmcm9tIHRoZSBzb3VyY2UuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlbG9hZD86IE1heWJlPGJvb2xlYW4+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gc2hvdyBhIHByZXZpZXcgYnV0dG9uLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvd1ByZXZpZXdCdXR0b24/OiBNYXliZTxib29sZWFuPjtcbiAgcmVhZG9ubHkgaWNvbj86IE1heWJlPHN0cmluZz47XG4gIHJlYWRvbmx5IHRleHQ/OiBNYXliZTxzdHJpbmc+O1xuICByZWFkb25seSBkb3dubG9hZFJlYWR5SWNvbj86IE1heWJlPHN0cmluZz47XG4gIHJlYWRvbmx5IGRvd25sb2FkUmVhZHlUZXh0PzogTWF5YmU8c3RyaW5nPjtcbiAgcmVhZG9ubHkgcHJldmlld0ljb24/OiBNYXliZTxzdHJpbmc+O1xuICByZWFkb25seSBwcmV2aWV3VGV4dD86IE1heWJlPHN0cmluZz47XG4gIC8qKlxuICAgKiBPcHRpb25hbCBjdXN0b20gZnVuY3Rpb24gdG8gb3BlbiBhIHByZXZpZXcgZGlhbG9nLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IHByZXZpZXcgZGlhbG9nIHByb3ZpZGVkIGJ5IHRoZSBEYnhXZWJGaWxlUHJldmlld1NlcnZpY2Ugd2lsbCBiZSB1c2VkLlxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gY2FuIHJldHVybiB1bmRlZmluZWQsIGluIHdoaWNoIGNhc2UgdGhlIGRlZmF1bHQgcHJldmlldyBkaWFsb2cgd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlbkN1c3RvbVByZXZpZXc/OiBNYXliZTwoZG93bmxvYWRVcmw6IFN0b3JhZ2VGaWxlRG93bmxvYWRVcmwsIGVtYmVkTWltZVR5cGU/OiBNYXliZTxzdHJpbmc+KSA9PiBNYXliZTxNYXREaWFsb2dSZWY8YW55Pj4+O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtZmlyZWJhc2Utc3RvcmFnZWZpbGUtZG93bmxvYWQtYnV0dG9uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGJ4LWFuY2hvciBkYnhBY3Rpb25BbmNob3IgW2FuY2hvcl09XCJhbmNob3JTaWduYWwoKVwiIGRieEFjdGlvbiBbZGJ4QWN0aW9uQXV0b1RyaWdnZXJdPVwicHJlbG9hZFNpZ25hbCgpXCIgZGJ4QWN0aW9uU25hY2tiYXJFcnJvciBbZGJ4QWN0aW9uRGlzYWJsZWRdPVwiIXN0b3JhZ2VGaWxlS2V5U2lnbmFsKClcIiBbZGJ4QWN0aW9uVmFsdWVdPVwic3RvcmFnZUZpbGVLZXlTaWduYWwoKVwiIFtkYnhBY3Rpb25IYW5kbGVyXT1cImhhbmRsZUdldERvd25sb2FkVXJsXCIgW2RieEFjdGlvblN1Y2Nlc3NIYW5kbGVyXT1cImhhbmRsZUdldERvd25sb2FkVXJsU3VjY2Vzc1wiIFtkYnhBY3Rpb25FcnJvckhhbmRsZXJdPVwiaGFuZGxlR2V0RG93bmxvYWRVcmxFcnJvclwiPlxuICAgICAgPGRieC1idXR0b24gZGJ4QWN0aW9uQnV0dG9uIFtidXR0b25TdHlsZV09XCJidXR0b25TdHlsZVNpZ25hbCgpXCIgW2ljb25dPVwiaWNvblNpZ25hbCgpXCIgW3RleHRdPVwidGV4dFNpZ25hbCgpXCI+PC9kYngtYnV0dG9uPlxuICAgIDwvZGJ4LWFuY2hvcj5cbiAgICBAaWYgKHNob3dQcmV2aWV3QnV0dG9uU2lnbmFsKCkpIHtcbiAgICAgIDxuZy1jb250YWluZXIgZGJ4QWN0aW9uIFtkYnhBY3Rpb25EaWFsb2ddPVwiaGFuZGxlT3BlblByZXZpZXdEaWFsb2dcIiBkYnhBY3Rpb25IYW5kbGVyVmFsdWU+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGJ4LWJ1dHRvbi1zcGFjZXJcIj48L3NwYW4+XG4gICAgICAgIDxkYngtYnV0dG9uIGRieEFjdGlvbkJ1dHRvbiBbYnV0dG9uU3R5bGVdPVwicHJldmlld0J1dHRvblN0eWxlU2lnbmFsKClcIiBbaWNvbl09XCJwcmV2aWV3SWNvblNpZ25hbCgpXCIgW3RleHRdPVwicHJldmlld1RleHRTaWduYWwoKVwiPjwvZGJ4LWJ1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgYCxcbiAgaW1wb3J0czogW0RieEJ1dHRvbkNvbXBvbmVudCwgRGJ4QWN0aW9uTW9kdWxlLCBEYnhBY3Rpb25TbmFja2JhckVycm9yRGlyZWN0aXZlLCBEYnhBY3Rpb25EaWFsb2dEaXJlY3RpdmUsIERieEFuY2hvckNvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZEJ1dHRvbiB7XG4gIHJlYWRvbmx5IG1hdERpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuXG4gIHJlYWRvbmx5IGRieFdlYkZpbGVQcmV2aWV3U2VydmljZSA9IGluamVjdChEYnhXZWJGaWxlUHJldmlld1NlcnZpY2UpO1xuICByZWFkb25seSBkYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRTZXJ2aWNlID0gaW5qZWN0KERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBUaGUgU3RvcmFnZUZpbGVLZXkgdG8gc2V0IHVwIHRoZSBkb3dubG9hZCBidXR0b24gZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZUZpbGVLZXkgPSBpbnB1dDxNYXliZTxTdG9yYWdlRmlsZUtleT4+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBkb3dubG9hZCBVUkwgdG8gdXNlIGZvciB0aGUgZG93bmxvYWQgYnV0dG9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZUZpbGVEb3dubG9hZFVybCA9IGlucHV0PE1heWJlPFN0b3JhZ2VGaWxlRG93bmxvYWRVcmw+PigpO1xuXG4gIC8qKlxuICAgKiBUaGUgTUlNRSB0eXBlIHRvIHVzZSB0aGUgZW1iZWQgY29tcG9uZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZW1iZWRNaW1lVHlwZSA9IGlucHV0PE1heWJlPENvbnRlbnRUeXBlTWltZVR5cGUgfCBzdHJpbmc+PigpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IGEgcHJldmlldyBidXR0b24uXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIHRydWUuXG4gICAqL1xuICByZWFkb25seSBzaG93UHJldmlld0J1dHRvbiA9IGlucHV0PE1heWJlPGJvb2xlYW4+Pih0cnVlKTtcblxuICAvKipcbiAgICogT3V0cHV0IGV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZG93bmxvYWQgVVJMIGNoYW5nZXMuXG4gICAqL1xuICByZWFkb25seSBkb3dubG9hZFVybENoYW5nZSA9IG91dHB1dDxNYXliZTxTdG9yYWdlRmlsZURvd25sb2FkVXJsPj4oKTtcblxuICByZWFkb25seSBjb25maWcgPSBpbnB1dDxNYXliZTxEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRCdXR0b25Db25maWc+PigpO1xuICByZWFkb25seSBzb3VyY2UgPSBpbnB1dDxNYXliZTxEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRCdXR0b25Tb3VyY2U+PigpO1xuXG4gIHJlYWRvbmx5IHNvdXJjZSQgPSB0b09ic2VydmFibGUodGhpcy5zb3VyY2UpO1xuXG4gIHJlYWRvbmx5IGNvbmZpZ1NpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZygpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRCdXR0b25Db25maWcgPSB7XG4gICAgICBidXR0b25TdHlsZTogY29uZmlnPy5idXR0b25TdHlsZSxcbiAgICAgIHByZXZpZXdCdXR0b25TdHlsZTogY29uZmlnPy5wcmV2aWV3QnV0dG9uU3R5bGUsXG4gICAgICBpY29uOiBjb25maWc/Lmljb24gPz8gJ2Nsb3VkX2Rvd25sb2FkJyxcbiAgICAgIHRleHQ6IGNvbmZpZz8udGV4dCA/PyAnU3RhcnQgRG93bmxvYWQnLFxuICAgICAgZG93bmxvYWRSZWFkeUljb246IGNvbmZpZz8uZG93bmxvYWRSZWFkeUljb24gPz8gJ2Rvd25sb2FkJyxcbiAgICAgIGRvd25sb2FkUmVhZHlUZXh0OiBjb25maWc/LmRvd25sb2FkUmVhZHlUZXh0ID8/ICdTYXZlIEZpbGUnLFxuICAgICAgcHJldmlld0ljb246IGNvbmZpZz8ucHJldmlld0ljb24gPz8gJ3ByZXZpZXcnLFxuICAgICAgcHJldmlld1RleHQ6IGNvbmZpZz8ucHJldmlld1RleHQgPz8gJ1ZpZXcgRmlsZSdcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcHJlbG9hZFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ1NpZ25hbCgpO1xuICAgIHJldHVybiBjb25maWcucHJlbG9hZCA/PyBmYWxzZTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZG93bmxvYWRVcmxTaWduYWwgPSBzaWduYWw8TWF5YmU8U3RvcmFnZUZpbGVEb3dubG9hZFVybD4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGRvd25sb2FkTWltZVR5cGVTaWduYWwgPSBzaWduYWw8TWF5YmU8Q29udGVudFR5cGVNaW1lVHlwZT4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGRvd25sb2FkVXJsRXhwaXJlc0F0U2lnbmFsID0gc2lnbmFsPE1heWJlPERhdGVPclVuaXhEYXRlVGltZVNlY29uZHNOdW1iZXI+Pih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IHN0b3JhZ2VGaWxlS2V5RnJvbUlucHV0JCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnN0b3JhZ2VGaWxlS2V5KS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBzdG9yYWdlRmlsZUtleUZyb21Tb3VyY2UkOiBPYnNlcnZhYmxlPE1heWJlPFN0b3JhZ2VGaWxlS2V5Pj4gPSB0aGlzLnNvdXJjZSQucGlwZShcbiAgICBtYXAoKHNvdXJjZSkgPT4gc291cmNlPy5zdG9yYWdlRmlsZUtleSksXG4gICAgbWF5YmVWYWx1ZUZyb21PYnNlcnZhYmxlT3JWYWx1ZSgpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzdG9yYWdlRmlsZUtleSQ6IE9ic2VydmFibGU8TWF5YmU8U3RvcmFnZUZpbGVLZXk+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuc3RvcmFnZUZpbGVLZXlGcm9tSW5wdXQkLCB0aGlzLnN0b3JhZ2VGaWxlS2V5RnJvbVNvdXJjZSRdKS5waXBlKFxuICAgIG1hcCgoW3N0b3JhZ2VGaWxlS2V5RnJvbUlucHV0LCBzdG9yYWdlRmlsZUtleUZyb21Tb3VyY2VdKSA9PiB7XG4gICAgICByZXR1cm4gc3RvcmFnZUZpbGVLZXlGcm9tSW5wdXQgPz8gc3RvcmFnZUZpbGVLZXlGcm9tU291cmNlO1xuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzdG9yYWdlRmlsZUtleVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuc3RvcmFnZUZpbGVLZXkkKTtcblxuICByZWFkb25seSBoYXNEb3dubG9hZFVybFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IEJvb2xlYW4odGhpcy5kb3dubG9hZFVybFNpZ25hbCgpKSk7XG5cbiAgcmVhZG9ubHkgYnV0dG9uU3R5bGVTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWdTaWduYWwoKTtcblxuICAgIGNvbnN0IHJlc3VsdDogRGJ4QnV0dG9uU3R5bGUgPSB7XG4gICAgICB0eXBlOiAncmFpc2VkJyxcbiAgICAgIC4uLmNvbmZpZy5idXR0b25TdHlsZVxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcblxuICByZWFkb25seSBwcmV2aWV3QnV0dG9uU3R5bGVTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWdTaWduYWwoKTtcblxuICAgIGNvbnN0IHJlc3VsdDogRGJ4QnV0dG9uU3R5bGUgPSB7XG4gICAgICB0eXBlOiAncmFpc2VkJyxcbiAgICAgIC4uLmNvbmZpZy5wcmV2aWV3QnV0dG9uU3R5bGVcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgaWNvblNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ1NpZ25hbCgpO1xuICAgIGNvbnN0IGhhc0Rvd25sb2FkVXJsID0gdGhpcy5oYXNEb3dubG9hZFVybFNpZ25hbCgpO1xuICAgIHJldHVybiBoYXNEb3dubG9hZFVybCA/IChjb25maWcuZG93bmxvYWRSZWFkeUljb24gPz8gY29uZmlnLmljb24pIDogY29uZmlnLmljb247XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHRleHRTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWdTaWduYWwoKTtcbiAgICBjb25zdCBoYXNEb3dubG9hZFVybCA9IHRoaXMuaGFzRG93bmxvYWRVcmxTaWduYWwoKTtcbiAgICByZXR1cm4gaGFzRG93bmxvYWRVcmwgPyAoY29uZmlnLmRvd25sb2FkUmVhZHlUZXh0ID8/IGNvbmZpZy50ZXh0KSA6IGNvbmZpZy50ZXh0O1xuICB9KTtcblxuICByZWFkb25seSBwcmV2aWV3SWNvblNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ1NpZ25hbCgpO1xuICAgIHJldHVybiBjb25maWcucHJldmlld0ljb247XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHByZXZpZXdUZXh0U2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnU2lnbmFsKCk7XG4gICAgcmV0dXJuIGNvbmZpZy5wcmV2aWV3VGV4dDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgYW5jaG9yU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGRvd25sb2FkVXJsID0gdGhpcy5kb3dubG9hZFVybFNpZ25hbCgpO1xuXG4gICAgbGV0IHJlc3VsdDogTWF5YmU8Q2xpY2thYmxlQW5jaG9yPjtcblxuICAgIGlmIChkb3dubG9hZFVybCkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICB1cmw6IGRvd25sb2FkVXJsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHN0b3JhZ2VGaWxlRG93bmxvYWRVcmxFZmZlY3QgPSBlZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgZG93bmxvYWRVcmwgPSB0aGlzLnN0b3JhZ2VGaWxlRG93bmxvYWRVcmwoKTtcblxuICAgICAgaWYgKGRvd25sb2FkVXJsIHx8IGRvd25sb2FkVXJsID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuZG93bmxvYWRVcmxTaWduYWwuc2V0KGRvd25sb2FkVXJsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlXG4gICAgfVxuICApO1xuXG4gIC8vIFByZXZpZXdcbiAgcmVhZG9ubHkgc2hvd1ByZXZpZXdCdXR0b25TaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWdTaWduYWwoKTtcbiAgICBjb25zdCBoYXNEb3dubG9hZFVybCA9IHRoaXMuaGFzRG93bmxvYWRVcmxTaWduYWwoKTtcbiAgICByZXR1cm4gaGFzRG93bmxvYWRVcmwgJiYgKGNvbmZpZy5zaG93UHJldmlld0J1dHRvbiA/PyB0cnVlKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgb3BlbkN1c3RvbVByZXZpZXdTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWdTaWduYWwoKTtcbiAgICByZXR1cm4gY29uZmlnLm9wZW5DdXN0b21QcmV2aWV3O1xuICB9KTtcblxuICByZWFkb25seSBoYW5kbGVPcGVuUHJldmlld0RpYWxvZzogRGJ4QWN0aW9uRGlhbG9nRnVuY3Rpb24gPSAoKSA9PiB7XG4gICAgY29uc3Qgb3BlblByZXZpZXcgPSB0aGlzLm9wZW5DdXN0b21QcmV2aWV3U2lnbmFsKCk7XG5cbiAgICBjb25zdCBzcmNVcmwgPSB0aGlzLmRvd25sb2FkVXJsU2lnbmFsKCkgYXMgc3RyaW5nO1xuICAgIGNvbnN0IGlucHV0RW1iZWRNaW1lVHlwZSA9IHRoaXMuZW1iZWRNaW1lVHlwZSgpO1xuICAgIGNvbnN0IGRvd25sb2FkTWltZVR5cGUgPSB0aGlzLmRvd25sb2FkTWltZVR5cGVTaWduYWwoKTtcbiAgICBjb25zdCBlbWJlZE1pbWVUeXBlID0gaW5wdXRFbWJlZE1pbWVUeXBlID8/IGRvd25sb2FkTWltZVR5cGU7XG5cbiAgICByZXR1cm4gb3BlblByZXZpZXc/LihzcmNVcmwsIGVtYmVkTWltZVR5cGUpID8/IHRoaXMuZGJ4V2ViRmlsZVByZXZpZXdTZXJ2aWNlLm9wZW5QcmV2aWV3RGlhbG9nKHNyY1VybCwgZW1iZWRNaW1lVHlwZSk7XG4gIH07XG5cbiAgLy8gQ2FjaGVkIFVybCBFZmZlY3RcbiAgLy8gV2hlbiB0aGUga2V5IGNoYW5nZXMsIGNoZWNrIHRoZSBjYWNoZSB0byBzZWUgaWYgaXQgaXMgYWxyZWFkeSBhdmFpbGFibGUsIGFuZCBwb3B1bGF0ZSB0aGUgZG93bmxvYWQgdXJsIGlmIGl0IGlzLlxuICByZWFkb25seSBjYWNoZWRVcmxGb3JTdG9yYWdlRmlsZUtleSQgPSB0aGlzLnN0b3JhZ2VGaWxlS2V5JC5waXBlKFxuICAgIHN3aXRjaE1hcCgoa2V5KSA9PiAoa2V5ID8gdGhpcy5kYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRTZXJ2aWNlLmdldENhY2hlZERvd25sb2FkUGFpckZvclN0b3JhZ2VGaWxlKGtleSkgOiBvZihudWxsKSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY2FjaGVkVXJsRm9yU3RvcmFnZUZpbGVLZXlTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmNhY2hlZFVybEZvclN0b3JhZ2VGaWxlS2V5JCk7XG5cbiAgcmVhZG9ubHkgY2FjaGVkVXJsRWZmZWN0ID0gZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGNhY2hlZFBhaXIgPSB0aGlzLmNhY2hlZFVybEZvclN0b3JhZ2VGaWxlS2V5U2lnbmFsKCk7XG5cbiAgICAgIGlmIChjYWNoZWRQYWlyKSB7XG4gICAgICAgIHRoaXMuZG93bmxvYWRVcmxTaWduYWwuc2V0KGNhY2hlZFBhaXIuZG93bmxvYWRVcmwpO1xuICAgICAgICB0aGlzLmRvd25sb2FkTWltZVR5cGVTaWduYWwuc2V0KGNhY2hlZFBhaXIubWltZVR5cGUpO1xuICAgICAgICB0aGlzLmRvd25sb2FkVXJsRXhwaXJlc0F0U2lnbmFsLnNldChjYWNoZWRQYWlyLmV4cGlyZXNBdCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZVxuICAgIH1cbiAgKTtcblxuICAvLyBFeHBpcmF0aW9uIEVmZmVjdFxuICByZWFkb25seSBkb3dubG9hZFVybEV4cGlyZXNBdCQgPSB0b09ic2VydmFibGUodGhpcy5kb3dubG9hZFVybEV4cGlyZXNBdFNpZ25hbCkucGlwZShtYXAoZGF0ZUZyb21EYXRlT3JUaW1lU2Vjb25kc051bWJlciksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBkb3dubG9hZFVybEhhc0V4cGlyZWQkID0gdGhpcy5kb3dubG9hZFVybEV4cGlyZXNBdCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHtcbiAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICAgIGlmICh4KSB7XG4gICAgICAgIG9icyA9IGludGVydmFsKE1TX0lOX1NFQ09ORCkucGlwZShcbiAgICAgICAgICBtYXAoKCkgPT4gaXNQYXN0KHgpKSxcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYnMgPSBvZihmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYnM7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRvd25sb2FkVXJsSGFzRXhwaXJlZFNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuZG93bmxvYWRVcmxIYXNFeHBpcmVkJCk7XG4gIHJlYWRvbmx5IGRvd25sb2FkVXJsSGFzRXhwaXJlZEVmZmVjdCA9IGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBleHBpcmVkID0gdGhpcy5kb3dubG9hZFVybEhhc0V4cGlyZWRTaWduYWwoKTtcblxuICAgICAgaWYgKGV4cGlyZWQpIHtcbiAgICAgICAgdGhpcy5kb3dubG9hZFVybFNpZ25hbC5zZXQodW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy5kb3dubG9hZE1pbWVUeXBlU2lnbmFsLnNldCh1bmRlZmluZWQpO1xuICAgICAgICB0aGlzLmRvd25sb2FkVXJsRXhwaXJlc0F0U2lnbmFsLnNldCh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgYWxsb3dTaWduYWxXcml0ZXM6IHRydWVcbiAgICB9XG4gICk7XG5cbiAgLy8gT3V0cHV0IEVmZmVjdFxuICByZWFkb25seSBkb3dubG9hZFVybENoYW5nZUVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZG93bmxvYWRVcmwgPSB0aGlzLmRvd25sb2FkVXJsU2lnbmFsKCk7XG4gICAgdGhpcy5kb3dubG9hZFVybENoYW5nZS5lbWl0KGRvd25sb2FkVXJsKTtcbiAgfSk7XG5cbiAgLy8gSGFuZGxlcnNcbiAgcmVhZG9ubHkgaGFuZGxlR2V0RG93bmxvYWRVcmw6IFdvcmtVc2luZ0NvbnRleHQ8U3RvcmFnZUZpbGVLZXksIERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFVybFBhaXI+ID0gKHZhbHVlOiBTdG9yYWdlRmlsZUtleSwgY29udGV4dDogV29ya0luc3RhbmNlPFN0b3JhZ2VGaWxlS2V5LCBEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRVcmxQYWlyPikgPT4ge1xuICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMuc291cmNlKCk7XG4gICAgY29uc3QgeyBjdXN0b21Tb3VyY2UsIGhhbmRsZUdldERvd25sb2FkVXJsIH0gPSBzb3VyY2UgPz8ge307XG5cbiAgICBpZiAoaGFuZGxlR2V0RG93bmxvYWRVcmwpIHtcbiAgICAgIGhhbmRsZUdldERvd25sb2FkVXJsKHZhbHVlLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5zdGFydFdvcmtpbmdXaXRoT2JzZXJ2YWJsZSh0aGlzLmRieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFNlcnZpY2UuZG93bmxvYWRQYWlyRm9yU3RvcmFnZUZpbGVVc2luZ1NvdXJjZSh2YWx1ZSwgY3VzdG9tU291cmNlKSk7XG4gICAgfVxuICB9O1xuXG4gIHJlYWRvbmx5IGhhbmRsZUdldERvd25sb2FkVXJsU3VjY2VzcyA9ICh2YWx1ZTogRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkVXJsUGFpcikgPT4ge1xuICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMuc291cmNlKCk7XG4gICAgY29uc3QgeyBoYW5kbGVHZXREb3dubG9hZFVybFN1Y2Nlc3MgfSA9IHNvdXJjZSA/PyB7fTtcblxuICAgIHRoaXMuZG93bmxvYWRVcmxTaWduYWwuc2V0KHZhbHVlLmRvd25sb2FkVXJsKTtcbiAgICB0aGlzLmRvd25sb2FkTWltZVR5cGVTaWduYWwuc2V0KHZhbHVlLm1pbWVUeXBlKTtcbiAgICB0aGlzLmRvd25sb2FkVXJsRXhwaXJlc0F0U2lnbmFsLnNldCh2YWx1ZS5leHBpcmVzQXQpO1xuXG4gICAgaWYgKGhhbmRsZUdldERvd25sb2FkVXJsU3VjY2Vzcykge1xuICAgICAgaGFuZGxlR2V0RG93bmxvYWRVcmxTdWNjZXNzKHZhbHVlKTtcbiAgICB9XG4gIH07XG5cbiAgcmVhZG9ubHkgaGFuZGxlR2V0RG93bmxvYWRVcmxFcnJvciA9IChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMuc291cmNlKCk7XG4gICAgY29uc3QgeyBoYW5kbGVHZXREb3dubG9hZFVybEVycm9yIH0gPSBzb3VyY2UgPz8ge307XG5cbiAgICB0aGlzLmRvd25sb2FkVXJsU2lnbmFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuZG93bmxvYWRNaW1lVHlwZVNpZ25hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmRvd25sb2FkVXJsRXhwaXJlc0F0U2lnbmFsLnNldCh1bmRlZmluZWQpO1xuXG4gICAgaWYgKGhhbmRsZUdldERvd25sb2FkVXJsRXJyb3IpIHtcbiAgICAgIGhhbmRsZUdldERvd25sb2FkVXJsRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZWZpbGUuZG93bmxvYWQuYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZHVsZXMvc3RvcmFnZWZpbGUvY29udGFpbmVyL3N0b3JhZ2VmaWxlLmRvd25sb2FkLmJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsd0JBQXdCLEVBQTJCLGVBQWUsRUFBRSwrQkFBK0IsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBa0Isd0JBQXdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV6TixPQUFPLEVBQXVCLCtCQUErQixFQUFtQyxNQUFNLEVBQVMsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25KLE9BQU8sRUFBRSxxQ0FBcUMsRUFBcUQsTUFBTSx5Q0FBeUMsQ0FBQztBQUVuSixPQUFPLEVBQTBCLCtCQUErQixFQUFrQyxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsSCxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLDBCQUEwQixDQUFDOzs7QUFnR25FLE1BQU0sT0FBTyw2Q0FBNkM7SUFDL0MsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU5Qix3QkFBd0IsR0FBRyxN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ckMsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVPLHlCQUF5QixHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUU7UUFDdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdCLE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFFbkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0MsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1lBQzlCLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDLENBQUM7d0dBelNTLDZDQUE2Qzs0RkFBN0MsNkNBQTZDLG1vQ0FmOUM7Ozs7Ozs7Ozs7R0FVVCw0REFDUyxrQkFBa0Isc1BBQUUsZUFBZSxpMkNBQUUsK0JBQStCLHlHQUFFLHdCQUF3QixpTEFBRSxrQkFBa0I7OzRGQUlqSCw2Q0FBNkM7a0JBakJ6RCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwwQ0FBMEM7b0JBQ3BELFFBQVEsRUFBRTs7Ozs7Ozs7OztHQVVUO29CQUNELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLGVBQWUsRUFBRSwrQkFBK0IsRUFBRSx3QkFBd0IsRUFBRSxrQkFBa0IsQ0FBQztvQkFDN0gsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhBY3Rpb25EaWFsb2dEaXJlY3RpdmUsIERieEFjdGlvbkRpYWxvZ0Z1bmN0aW9uLCBEYnhBY3Rpb25Nb2R1bGUsIERieEFjdGlvblNuYWNrYmFyRXJyb3JEaXJlY3RpdmUsIERieEFuY2hvckNvbXBvbmVudCwgRGJ4QnV0dG9uQ29tcG9uZW50LCBEYnhCdXR0b25TdHlsZSwgRGJ4V2ViRmlsZVByZXZpZXdTZXJ2aWNlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBTdG9yYWdlRmlsZURvd25sb2FkVXJsLCBTdG9yYWdlRmlsZUtleSB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IENvbnRlbnRUeXBlTWltZVR5cGUsIGRhdGVGcm9tRGF0ZU9yVGltZVNlY29uZHNOdW1iZXIsIERhdGVPclVuaXhEYXRlVGltZVNlY29uZHNOdW1iZXIsIGlzUGFzdCwgTWF5YmUsIE1TX0lOX1NFQ09ORCB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkU2VydmljZSwgRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkU2VydmljZUN1c3RvbVNvdXJjZSB9IGZyb20gJy4uL3NlcnZpY2Uvc3RvcmFnZWZpbGUuZG93bmxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBDbGlja2FibGVBbmNob3IgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBNYXliZU9ic2VydmFibGVPclZhbHVlLCBtYXliZVZhbHVlRnJvbU9ic2VydmFibGVPclZhbHVlLCBXb3JrSW5zdGFuY2UsIFdvcmtVc2luZ0NvbnRleHQgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgaW50ZXJ2YWwsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFVybFBhaXIgfSBmcm9tICcuLi9zZXJ2aWNlL3N0b3JhZ2VmaWxlLmRvd25sb2FkLnN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbi8qKlxuICogU291cmNlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRCdXR0b25Db21wb25lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkQnV0dG9uU291cmNlIHtcbiAgLyoqXG4gICAqIEEgc3RhdGljIFN0b3JhZ2VGaWxlS2V5IHRvIHVzZS5cbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2VGaWxlS2V5PzogTWF5YmVPYnNlcnZhYmxlT3JWYWx1ZTxTdG9yYWdlRmlsZUtleT47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBwcmUtbG9hZCB0aGUgZG93bmxvYWQgdXJsIGZyb20gdGhlIHNvdXJjZS5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqL1xuICByZWFkb25seSBwcmVsb2FkPzogTWF5YmU8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBUaGUgZXhwZWN0ZWQgbWltZSB0eXBlIG9mIHRoZSBTdG9yYWdlRmlsZSB0byB1c2Ugd2hlbiBwcmV2aWV3aW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZUZpbGVFbWJlZE1pbWVUeXBlPzogTWF5YmVPYnNlcnZhYmxlT3JWYWx1ZTxDb250ZW50VHlwZU1pbWVUeXBlIHwgc3RyaW5nPjtcbiAgLyoqXG4gICAqIEN1c3RvbSBzb3VyY2UgdG8gdXNlIHdpdGggdGhlIERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFNlcnZpY2UuIEEgbW9yZSBzaW1wbGUgYWx0ZXJuYXRpdmUgdG8gdXNpbmcgaGFuZGxlR2V0RG93bmxvYWRVcmwoKS5cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbVNvdXJjZT86IE1heWJlPERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFNlcnZpY2VDdXN0b21Tb3VyY2U+O1xuICAvKipcbiAgICogT3B0aW9uYWwgY3VzdG9tIHdvcmsgdG8gdXNlIHRvIGdldCB0aGUgZG93bmxvYWQgVVJMLlxuICAgKlxuICAgKiBJZiBwcm92aWRlZCwgY3VzdG9tU291cmNlIGlzIGlnbm9yZWQuXG4gICAqL1xuICByZWFkb25seSBoYW5kbGVHZXREb3dubG9hZFVybD86IE1heWJlPFdvcmtVc2luZ0NvbnRleHQ8U3RvcmFnZUZpbGVLZXksIERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFVybFBhaXI+PjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGN1c3RvbSBzdWNjZXNzIGhhbmRsZXIgZm9yIHRoZSBkb3dubG9hZCBVUkwuXG4gICAqL1xuICByZWFkb25seSBoYW5kbGVHZXREb3dubG9hZFVybFN1Y2Nlc3M/OiAodmFsdWU6IERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFVybFBhaXIpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBjdXN0b20gZXJyb3IgaGFuZGxlciBmb3IgdGhlIGRvd25sb2FkIFVSTC5cbiAgICovXG4gIHJlYWRvbmx5IGhhbmRsZUdldERvd25sb2FkVXJsRXJyb3I/OiAoZXJyb3I6IHVua25vd24pID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgZG93bmxvYWQgVVJMIGNoYW5nZXMuXG4gICAqL1xuICByZWFkb25seSBkb3dubG9hZFVybENoYW5nZWQ/OiBNYXliZTwoZG93bmxvYWRVcmw6IE1heWJlPFN0b3JhZ2VGaWxlRG93bmxvYWRVcmw+KSA9PiB2b2lkPjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkQnV0dG9uQ29tcG9uZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZEJ1dHRvbkNvbmZpZyB7XG4gIHJlYWRvbmx5IGJ1dHRvblN0eWxlPzogTWF5YmU8RGJ4QnV0dG9uU3R5bGU+O1xuICByZWFkb25seSBwcmV2aWV3QnV0dG9uU3R5bGU/OiBNYXliZTxEYnhCdXR0b25TdHlsZT47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IGEgcHJldmlldyBidXR0b24uXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIHRydWUuXG4gICAqL1xuICByZWFkb25seSBzaG93UHJldmlld0J1dHRvbj86IE1heWJlPGJvb2xlYW4+O1xuICByZWFkb25seSBpY29uPzogTWF5YmU8c3RyaW5nPjtcbiAgcmVhZG9ubHkgdGV4dD86IE1heWJlPHN0cmluZz47XG4gIHJlYWRvbmx5IGRvd25sb2FkUmVhZHlJY29uPzogTWF5YmU8c3RyaW5nPjtcbiAgcmVhZG9ubHkgZG93bmxvYWRSZWFkeVRleHQ/OiBNYXliZTxzdHJpbmc+O1xuICByZWFkb25seSBwcmV2aWV3SWNvbj86IE1heWJlPHN0cmluZz47XG4gIHJlYWRvbmx5IHByZXZpZXdUZXh0PzogTWF5YmU8c3RyaW5nPjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGN1c3RvbSBmdW5jdGlvbiB0byBvcGVuIGEgcHJldmlldyBkaWFsb2cuIElmIG5vdCBwcm92aWRlZCwgdGhlIGRlZmF1bHQgcHJldmlldyBkaWFsb2cgcHJvdmlkZWQgYnkgdGhlIERieFdlYkZpbGVQcmV2aWV3U2VydmljZSB3aWxsIGJlIHVzZWQuXG4gICAqXG4gICAqIFRoZSBmdW5jdGlvbiBjYW4gcmV0dXJuIHVuZGVmaW5lZCwgaW4gd2hpY2ggY2FzZSB0aGUgZGVmYXVsdCBwcmV2aWV3IGRpYWxvZyB3aWxsIGJlIHVzZWQuXG4gICAqL1xuICByZWFkb25seSBvcGVuQ3VzdG9tUHJldmlldz86IE1heWJlPChkb3dubG9hZFVybDogU3RvcmFnZUZpbGVEb3dubG9hZFVybCwgZW1iZWRNaW1lVHlwZT86IE1heWJlPHN0cmluZz4pID0+IE1heWJlPE1hdERpYWxvZ1JlZjxhbnk+Pj47XG4gIC8vIENPTVBBVFxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gcHJlLWxvYWQgdGhlIGRvd25sb2FkIHVybCBmcm9tIHRoZSBzb3VyY2UuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgdGhlIHByZWxvYWQgcHJvcGVydHkgb24gdGhlIHNvdXJjZS9EYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRCdXR0b25Tb3VyY2UgaW5zdGVhZC5cbiAgICovXG4gIHJlYWRvbmx5IHByZWxvYWQ/OiBNYXliZTxib29sZWFuPjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LWZpcmViYXNlLXN0b3JhZ2VmaWxlLWRvd25sb2FkLWJ1dHRvbicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRieC1hbmNob3IgZGJ4QWN0aW9uQW5jaG9yIFthbmNob3JdPVwiYW5jaG9yU2lnbmFsKClcIiBkYnhBY3Rpb24gW2RieEFjdGlvbkF1dG9UcmlnZ2VyXT1cInByZWxvYWRTaWduYWwoKVwiIGRieEFjdGlvblNuYWNrYmFyRXJyb3IgW2RieEFjdGlvbkRpc2FibGVkXT1cIiFzdG9yYWdlRmlsZUtleVNpZ25hbCgpXCIgW2RieEFjdGlvblZhbHVlXT1cInN0b3JhZ2VGaWxlS2V5U2lnbmFsKClcIiBbZGJ4QWN0aW9uSGFuZGxlcl09XCJoYW5kbGVHZXREb3dubG9hZFVybFwiIFtkYnhBY3Rpb25TdWNjZXNzSGFuZGxlcl09XCJoYW5kbGVHZXREb3dubG9hZFVybFN1Y2Nlc3NcIiBbZGJ4QWN0aW9uRXJyb3JIYW5kbGVyXT1cImhhbmRsZUdldERvd25sb2FkVXJsRXJyb3JcIj5cbiAgICAgIDxkYngtYnV0dG9uIGRieEFjdGlvbkJ1dHRvbiBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uU3R5bGVTaWduYWwoKVwiIFtpY29uXT1cImljb25TaWduYWwoKVwiIFt0ZXh0XT1cInRleHRTaWduYWwoKVwiPjwvZGJ4LWJ1dHRvbj5cbiAgICA8L2RieC1hbmNob3I+XG4gICAgQGlmIChzaG93UHJldmlld0J1dHRvblNpZ25hbCgpKSB7XG4gICAgICA8bmctY29udGFpbmVyIGRieEFjdGlvbiBbZGJ4QWN0aW9uRGlhbG9nXT1cImhhbmRsZU9wZW5QcmV2aWV3RGlhbG9nXCIgZGJ4QWN0aW9uSGFuZGxlclZhbHVlPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRieC1idXR0b24tc3BhY2VyXCI+PC9zcGFuPlxuICAgICAgICA8ZGJ4LWJ1dHRvbiBkYnhBY3Rpb25CdXR0b24gW2J1dHRvblN0eWxlXT1cInByZXZpZXdCdXR0b25TdHlsZVNpZ25hbCgpXCIgW2ljb25dPVwicHJldmlld0ljb25TaWduYWwoKVwiIFt0ZXh0XT1cInByZXZpZXdUZXh0U2lnbmFsKClcIj48L2RieC1idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gIGAsXG4gIGltcG9ydHM6IFtEYnhCdXR0b25Db21wb25lbnQsIERieEFjdGlvbk1vZHVsZSwgRGJ4QWN0aW9uU25hY2tiYXJFcnJvckRpcmVjdGl2ZSwgRGJ4QWN0aW9uRGlhbG9nRGlyZWN0aXZlLCBEYnhBbmNob3JDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRCdXR0b25Db21wb25lbnQge1xuICByZWFkb25seSBtYXREaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcblxuICByZWFkb25seSBkYnhXZWJGaWxlUHJldmlld1NlcnZpY2UgPSBpbmplY3QoRGJ4V2ViRmlsZVByZXZpZXdTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgZGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkU2VydmljZSA9IGluamVjdChEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRTZXJ2aWNlKTtcblxuICAvKipcbiAgICogVGhlIFN0b3JhZ2VGaWxlS2V5IHRvIHNldCB1cCB0aGUgZG93bmxvYWQgYnV0dG9uIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2VGaWxlS2V5ID0gaW5wdXQ8TWF5YmU8U3RvcmFnZUZpbGVLZXk+PigpO1xuXG4gIC8qKlxuICAgKiBUaGUgZG93bmxvYWQgVVJMIHRvIHVzZSBmb3IgdGhlIGRvd25sb2FkIGJ1dHRvbi5cbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2VGaWxlRG93bmxvYWRVcmwgPSBpbnB1dDxNYXliZTxTdG9yYWdlRmlsZURvd25sb2FkVXJsPj4oKTtcblxuICAvKipcbiAgICogVGhlIE1JTUUgdHlwZSB0byB1c2UgdGhlIGVtYmVkIGNvbXBvbmVudC5cbiAgICovXG4gIHJlYWRvbmx5IGVtYmVkTWltZVR5cGUgPSBpbnB1dDxNYXliZTxDb250ZW50VHlwZU1pbWVUeXBlIHwgc3RyaW5nPj4oKTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gc2hvdyBhIHByZXZpZXcgYnV0dG9uLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvd1ByZXZpZXdCdXR0b24gPSBpbnB1dDxNYXliZTxib29sZWFuPj4odHJ1ZSk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHByZS1sb2FkIHRoZSBkb3dubG9hZCBVUkwgZnJvbSB0aGUgc291cmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlbG9hZCA9IGlucHV0PE1heWJlPGJvb2xlYW4+Pih1bmRlZmluZWQpO1xuXG4gIC8qKlxuICAgKiBPdXRwdXQgZXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBkb3dubG9hZCBVUkwgY2hhbmdlcy5cbiAgICovXG4gIHJlYWRvbmx5IGRvd25sb2FkVXJsQ2hhbmdlID0gb3V0cHV0PE1heWJlPFN0b3JhZ2VGaWxlRG93bmxvYWRVcmw+PigpO1xuXG4gIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0PE1heWJlPERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZEJ1dHRvbkNvbmZpZz4+KCk7XG4gIHJlYWRvbmx5IHNvdXJjZSA9IGlucHV0PE1heWJlPERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZEJ1dHRvblNvdXJjZT4+KCk7XG5cbiAgcmVhZG9ubHkgc291cmNlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnNvdXJjZSk7XG5cbiAgcmVhZG9ubHkgY29uZmlnU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG5cbiAgICBjb25zdCByZXN1bHQ6IERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZEJ1dHRvbkNvbmZpZyA9IHtcbiAgICAgIGJ1dHRvblN0eWxlOiBjb25maWc/LmJ1dHRvblN0eWxlLFxuICAgICAgcHJldmlld0J1dHRvblN0eWxlOiBjb25maWc/LnByZXZpZXdCdXR0b25TdHlsZSxcbiAgICAgIGljb246IGNvbmZpZz8uaWNvbiA/PyAnY2xvdWRfZG93bmxvYWQnLFxuICAgICAgdGV4dDogY29uZmlnPy50ZXh0ID8/ICdTdGFydCBEb3dubG9hZCcsXG4gICAgICBkb3dubG9hZFJlYWR5SWNvbjogY29uZmlnPy5kb3dubG9hZFJlYWR5SWNvbiA/PyAnZG93bmxvYWQnLFxuICAgICAgZG93bmxvYWRSZWFkeVRleHQ6IGNvbmZpZz8uZG93bmxvYWRSZWFkeVRleHQgPz8gJ1NhdmUgRmlsZScsXG4gICAgICBwcmV2aWV3SWNvbjogY29uZmlnPy5wcmV2aWV3SWNvbiA/PyAncHJldmlldycsXG4gICAgICBwcmV2aWV3VGV4dDogY29uZmlnPy5wcmV2aWV3VGV4dCA/PyAnVmlldyBGaWxlJ1xuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcblxuICByZWFkb25seSBwcmVsb2FkU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHByZWxvYWQgPSB0aGlzLnByZWxvYWQoKTtcbiAgICBjb25zdCBzb3VyY2UgPSB0aGlzLnNvdXJjZSgpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnU2lnbmFsKCk7XG4gICAgcmV0dXJuIHByZWxvYWQgPz8gc291cmNlPy5wcmVsb2FkID8/IGNvbmZpZy5wcmVsb2FkID8/IGZhbHNlO1xuICB9KTtcblxuICByZWFkb25seSBkb3dubG9hZFVybFNpZ25hbCA9IHNpZ25hbDxNYXliZTxTdG9yYWdlRmlsZURvd25sb2FkVXJsPj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZG93bmxvYWRNaW1lVHlwZVNpZ25hbCA9IHNpZ25hbDxNYXliZTxDb250ZW50VHlwZU1pbWVUeXBlPj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZG93bmxvYWRVcmxFeHBpcmVzQXRTaWduYWwgPSBzaWduYWw8TWF5YmU8RGF0ZU9yVW5peERhdGVUaW1lU2Vjb25kc051bWJlcj4+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgc3RvcmFnZUZpbGVLZXlGcm9tSW5wdXQkID0gdG9PYnNlcnZhYmxlKHRoaXMuc3RvcmFnZUZpbGVLZXkpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHN0b3JhZ2VGaWxlS2V5RnJvbVNvdXJjZSQ6IE9ic2VydmFibGU8TWF5YmU8U3RvcmFnZUZpbGVLZXk+PiA9IHRoaXMuc291cmNlJC5waXBlKFxuICAgIG1hcCgoc291cmNlKSA9PiBzb3VyY2U/LnN0b3JhZ2VGaWxlS2V5KSxcbiAgICBtYXliZVZhbHVlRnJvbU9ic2VydmFibGVPclZhbHVlKCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHN0b3JhZ2VGaWxlS2V5JDogT2JzZXJ2YWJsZTxNYXliZTxTdG9yYWdlRmlsZUtleT4+ID0gY29tYmluZUxhdGVzdChbdGhpcy5zdG9yYWdlRmlsZUtleUZyb21JbnB1dCQsIHRoaXMuc3RvcmFnZUZpbGVLZXlGcm9tU291cmNlJF0pLnBpcGUoXG4gICAgbWFwKChbc3RvcmFnZUZpbGVLZXlGcm9tSW5wdXQsIHN0b3JhZ2VGaWxlS2V5RnJvbVNvdXJjZV0pID0+IHtcbiAgICAgIHJldHVybiBzdG9yYWdlRmlsZUtleUZyb21JbnB1dCA/PyBzdG9yYWdlRmlsZUtleUZyb21Tb3VyY2U7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHN0b3JhZ2VGaWxlS2V5U2lnbmFsID0gdG9TaWduYWwodGhpcy5zdG9yYWdlRmlsZUtleSQpO1xuXG4gIHJlYWRvbmx5IGhhc0Rvd25sb2FkVXJsU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4gQm9vbGVhbih0aGlzLmRvd25sb2FkVXJsU2lnbmFsKCkpKTtcblxuICByZWFkb25seSBidXR0b25TdHlsZVNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ1NpZ25hbCgpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBEYnhCdXR0b25TdHlsZSA9IHtcbiAgICAgIHR5cGU6ICdyYWlzZWQnLFxuICAgICAgLi4uY29uZmlnLmJ1dHRvblN0eWxlXG4gICAgfTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHByZXZpZXdCdXR0b25TdHlsZVNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ1NpZ25hbCgpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBEYnhCdXR0b25TdHlsZSA9IHtcbiAgICAgIHR5cGU6ICdyYWlzZWQnLFxuICAgICAgLi4uY29uZmlnLnByZXZpZXdCdXR0b25TdHlsZVxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcblxuICByZWFkb25seSBpY29uU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnU2lnbmFsKCk7XG4gICAgY29uc3QgaGFzRG93bmxvYWRVcmwgPSB0aGlzLmhhc0Rvd25sb2FkVXJsU2lnbmFsKCk7XG4gICAgcmV0dXJuIGhhc0Rvd25sb2FkVXJsID8gKGNvbmZpZy5kb3dubG9hZFJlYWR5SWNvbiA/PyBjb25maWcuaWNvbikgOiBjb25maWcuaWNvbjtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdGV4dFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ1NpZ25hbCgpO1xuICAgIGNvbnN0IGhhc0Rvd25sb2FkVXJsID0gdGhpcy5oYXNEb3dubG9hZFVybFNpZ25hbCgpO1xuICAgIHJldHVybiBoYXNEb3dubG9hZFVybCA/IChjb25maWcuZG93bmxvYWRSZWFkeVRleHQgPz8gY29uZmlnLnRleHQpIDogY29uZmlnLnRleHQ7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHByZXZpZXdJY29uU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnU2lnbmFsKCk7XG4gICAgcmV0dXJuIGNvbmZpZy5wcmV2aWV3SWNvbjtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcHJldmlld1RleHRTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWdTaWduYWwoKTtcbiAgICByZXR1cm4gY29uZmlnLnByZXZpZXdUZXh0O1xuICB9KTtcblxuICByZWFkb25seSBhbmNob3JTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZG93bmxvYWRVcmwgPSB0aGlzLmRvd25sb2FkVXJsU2lnbmFsKCk7XG5cbiAgICBsZXQgcmVzdWx0OiBNYXliZTxDbGlja2FibGVBbmNob3I+O1xuXG4gICAgaWYgKGRvd25sb2FkVXJsKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIHVybDogZG93bmxvYWRVcmxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc3RvcmFnZUZpbGVEb3dubG9hZFVybEVmZmVjdCA9IGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBkb3dubG9hZFVybCA9IHRoaXMuc3RvcmFnZUZpbGVEb3dubG9hZFVybCgpO1xuXG4gICAgICBpZiAoZG93bmxvYWRVcmwgfHwgZG93bmxvYWRVcmwgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5kb3dubG9hZFVybFNpZ25hbC5zZXQoZG93bmxvYWRVcmwpO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgYWxsb3dTaWduYWxXcml0ZXM6IHRydWVcbiAgICB9XG4gICk7XG5cbiAgLy8gUHJldmlld1xuICByZWFkb25seSBzaG93UHJldmlld0J1dHRvblNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ1NpZ25hbCgpO1xuICAgIGNvbnN0IGhhc0Rvd25sb2FkVXJsID0gdGhpcy5oYXNEb3dubG9hZFVybFNpZ25hbCgpO1xuICAgIHJldHVybiBoYXNEb3dubG9hZFVybCAmJiAoY29uZmlnLnNob3dQcmV2aWV3QnV0dG9uID8/IHRydWUpO1xuICB9KTtcblxuICByZWFkb25seSBvcGVuQ3VzdG9tUHJldmlld1NpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ1NpZ25hbCgpO1xuICAgIHJldHVybiBjb25maWcub3BlbkN1c3RvbVByZXZpZXc7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGhhbmRsZU9wZW5QcmV2aWV3RGlhbG9nOiBEYnhBY3Rpb25EaWFsb2dGdW5jdGlvbiA9ICgpID0+IHtcbiAgICBjb25zdCBvcGVuUHJldmlldyA9IHRoaXMub3BlbkN1c3RvbVByZXZpZXdTaWduYWwoKTtcblxuICAgIGNvbnN0IHNyY1VybCA9IHRoaXMuZG93bmxvYWRVcmxTaWduYWwoKSBhcyBzdHJpbmc7XG4gICAgY29uc3QgaW5wdXRFbWJlZE1pbWVUeXBlID0gdGhpcy5lbWJlZE1pbWVUeXBlKCk7XG4gICAgY29uc3QgZG93bmxvYWRNaW1lVHlwZSA9IHRoaXMuZG93bmxvYWRNaW1lVHlwZVNpZ25hbCgpO1xuICAgIGNvbnN0IGVtYmVkTWltZVR5cGUgPSBpbnB1dEVtYmVkTWltZVR5cGUgPz8gZG93bmxvYWRNaW1lVHlwZTtcblxuICAgIHJldHVybiBvcGVuUHJldmlldz8uKHNyY1VybCwgZW1iZWRNaW1lVHlwZSkgPz8gdGhpcy5kYnhXZWJGaWxlUHJldmlld1NlcnZpY2Uub3BlblByZXZpZXdEaWFsb2coc3JjVXJsLCBlbWJlZE1pbWVUeXBlKTtcbiAgfTtcblxuICAvLyBDYWNoZWQgVXJsIEVmZmVjdFxuICAvLyBXaGVuIHRoZSBrZXkgY2hhbmdlcywgY2hlY2sgdGhlIGNhY2hlIHRvIHNlZSBpZiBpdCBpcyBhbHJlYWR5IGF2YWlsYWJsZSwgYW5kIHBvcHVsYXRlIHRoZSBkb3dubG9hZCB1cmwgaWYgaXQgaXMuXG4gIHJlYWRvbmx5IGNhY2hlZFVybEZvclN0b3JhZ2VGaWxlS2V5JCA9IHRoaXMuc3RvcmFnZUZpbGVLZXkkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChrZXkpID0+IChrZXkgPyB0aGlzLmRieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFNlcnZpY2UuZ2V0Q2FjaGVkRG93bmxvYWRQYWlyRm9yU3RvcmFnZUZpbGUoa2V5KSA6IG9mKG51bGwpKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjYWNoZWRVcmxGb3JTdG9yYWdlRmlsZUtleVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuY2FjaGVkVXJsRm9yU3RvcmFnZUZpbGVLZXkkKTtcblxuICByZWFkb25seSBjYWNoZWRVcmxFZmZlY3QgPSBlZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgY2FjaGVkUGFpciA9IHRoaXMuY2FjaGVkVXJsRm9yU3RvcmFnZUZpbGVLZXlTaWduYWwoKTtcblxuICAgICAgaWYgKGNhY2hlZFBhaXIpIHtcbiAgICAgICAgdGhpcy5kb3dubG9hZFVybFNpZ25hbC5zZXQoY2FjaGVkUGFpci5kb3dubG9hZFVybCk7XG4gICAgICAgIHRoaXMuZG93bmxvYWRNaW1lVHlwZVNpZ25hbC5zZXQoY2FjaGVkUGFpci5taW1lVHlwZSk7XG4gICAgICAgIHRoaXMuZG93bmxvYWRVcmxFeHBpcmVzQXRTaWduYWwuc2V0KGNhY2hlZFBhaXIuZXhwaXJlc0F0KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlXG4gICAgfVxuICApO1xuXG4gIC8vIEV4cGlyYXRpb24gRWZmZWN0XG4gIHJlYWRvbmx5IGRvd25sb2FkVXJsRXhwaXJlc0F0JCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmRvd25sb2FkVXJsRXhwaXJlc0F0U2lnbmFsKS5waXBlKG1hcChkYXRlRnJvbURhdGVPclRpbWVTZWNvbmRzTnVtYmVyKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IGRvd25sb2FkVXJsSGFzRXhwaXJlZCQgPSB0aGlzLmRvd25sb2FkVXJsRXhwaXJlc0F0JC5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgICAgaWYgKHgpIHtcbiAgICAgICAgb2JzID0gaW50ZXJ2YWwoTVNfSU5fU0VDT05EKS5waXBlKFxuICAgICAgICAgIG1hcCgoKSA9PiBpc1Bhc3QoeCkpLFxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9icyA9IG9mKGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9icztcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZG93bmxvYWRVcmxIYXNFeHBpcmVkU2lnbmFsID0gdG9TaWduYWwodGhpcy5kb3dubG9hZFVybEhhc0V4cGlyZWQkKTtcbiAgcmVhZG9ubHkgZG93bmxvYWRVcmxIYXNFeHBpcmVkRWZmZWN0ID0gZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGV4cGlyZWQgPSB0aGlzLmRvd25sb2FkVXJsSGFzRXhwaXJlZFNpZ25hbCgpO1xuXG4gICAgICBpZiAoZXhwaXJlZCkge1xuICAgICAgICB0aGlzLmRvd25sb2FkVXJsU2lnbmFsLnNldCh1bmRlZmluZWQpO1xuICAgICAgICB0aGlzLmRvd25sb2FkTWltZVR5cGVTaWduYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMuZG93bmxvYWRVcmxFeHBpcmVzQXRTaWduYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZVxuICAgIH1cbiAgKTtcblxuICAvLyBPdXRwdXQgRWZmZWN0XG4gIHJlYWRvbmx5IGRvd25sb2FkVXJsQ2hhbmdlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBkb3dubG9hZFVybCA9IHRoaXMuZG93bmxvYWRVcmxTaWduYWwoKTtcbiAgICBjb25zdCBzb3VyY2UgPSB0aGlzLnNvdXJjZSgpO1xuXG4gICAgdGhpcy5kb3dubG9hZFVybENoYW5nZS5lbWl0KGRvd25sb2FkVXJsKTtcblxuICAgIGlmIChzb3VyY2U/LmRvd25sb2FkVXJsQ2hhbmdlZCkge1xuICAgICAgc291cmNlLmRvd25sb2FkVXJsQ2hhbmdlZChkb3dubG9hZFVybCk7XG4gICAgfVxuICB9KTtcblxuICAvLyBIYW5kbGVyc1xuICByZWFkb25seSBoYW5kbGVHZXREb3dubG9hZFVybDogV29ya1VzaW5nQ29udGV4dDxTdG9yYWdlRmlsZUtleSwgRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkVXJsUGFpcj4gPSAodmFsdWU6IFN0b3JhZ2VGaWxlS2V5LCBjb250ZXh0OiBXb3JrSW5zdGFuY2U8U3RvcmFnZUZpbGVLZXksIERieEZpcmViYXNlU3RvcmFnZUZpbGVEb3dubG9hZFVybFBhaXI+KSA9PiB7XG4gICAgY29uc3Qgc291cmNlID0gdGhpcy5zb3VyY2UoKTtcbiAgICBjb25zdCB7IGN1c3RvbVNvdXJjZSwgaGFuZGxlR2V0RG93bmxvYWRVcmwgfSA9IHNvdXJjZSA/PyB7fTtcblxuICAgIGlmIChoYW5kbGVHZXREb3dubG9hZFVybCkge1xuICAgICAgaGFuZGxlR2V0RG93bmxvYWRVcmwodmFsdWUsIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LnN0YXJ0V29ya2luZ1dpdGhPYnNlcnZhYmxlKHRoaXMuZGJ4RmlyZWJhc2VTdG9yYWdlRmlsZURvd25sb2FkU2VydmljZS5kb3dubG9hZFBhaXJGb3JTdG9yYWdlRmlsZVVzaW5nU291cmNlKHZhbHVlLCBjdXN0b21Tb3VyY2UpKTtcbiAgICB9XG4gIH07XG5cbiAgcmVhZG9ubHkgaGFuZGxlR2V0RG93bmxvYWRVcmxTdWNjZXNzID0gKHZhbHVlOiBEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlRG93bmxvYWRVcmxQYWlyKSA9PiB7XG4gICAgY29uc3Qgc291cmNlID0gdGhpcy5zb3VyY2UoKTtcbiAgICBjb25zdCB7IGhhbmRsZUdldERvd25sb2FkVXJsU3VjY2VzcyB9ID0gc291cmNlID8/IHt9O1xuXG4gICAgdGhpcy5kb3dubG9hZFVybFNpZ25hbC5zZXQodmFsdWUuZG93bmxvYWRVcmwpO1xuICAgIHRoaXMuZG93bmxvYWRNaW1lVHlwZVNpZ25hbC5zZXQodmFsdWUubWltZVR5cGUpO1xuICAgIHRoaXMuZG93bmxvYWRVcmxFeHBpcmVzQXRTaWduYWwuc2V0KHZhbHVlLmV4cGlyZXNBdCk7XG5cbiAgICBpZiAoaGFuZGxlR2V0RG93bmxvYWRVcmxTdWNjZXNzKSB7XG4gICAgICBoYW5kbGVHZXREb3dubG9hZFVybFN1Y2Nlc3ModmFsdWUpO1xuICAgIH1cbiAgfTtcblxuICByZWFkb25seSBoYW5kbGVHZXREb3dubG9hZFVybEVycm9yID0gKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgY29uc3Qgc291cmNlID0gdGhpcy5zb3VyY2UoKTtcbiAgICBjb25zdCB7IGhhbmRsZUdldERvd25sb2FkVXJsRXJyb3IgfSA9IHNvdXJjZSA/PyB7fTtcblxuICAgIHRoaXMuZG93bmxvYWRVcmxTaWduYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5kb3dubG9hZE1pbWVUeXBlU2lnbmFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuZG93bmxvYWRVcmxFeHBpcmVzQXRTaWduYWwuc2V0KHVuZGVmaW5lZCk7XG5cbiAgICBpZiAoaGFuZGxlR2V0RG93bmxvYWRVcmxFcnJvcikge1xuICAgICAgaGFuZGxlR2V0RG93bmxvYWRVcmxFcnJvcihlcnJvcik7XG4gICAgfVxuICB9O1xufVxuIl19
|
|
@@ -5540,7 +5540,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
5540
5540
|
type: Injectable
|
|
5541
5541
|
}] });
|
|
5542
5542
|
|
|
5543
|
-
class
|
|
5543
|
+
class DbxFirebaseStorageFileDownloadButtonComponent {
|
|
5544
5544
|
matDialog = inject(MatDialog);
|
|
5545
5545
|
dbxWebFilePreviewService = inject(DbxWebFilePreviewService);
|
|
5546
5546
|
dbxFirebaseStorageFileDownloadService = inject(DbxFirebaseStorageFileDownloadService);
|
|
@@ -5562,6 +5562,10 @@ class DbxFirebaseStorageFileDownloadButton {
|
|
|
5562
5562
|
* Defaults to true.
|
|
5563
5563
|
*/
|
|
5564
5564
|
showPreviewButton = input(true);
|
|
5565
|
+
/**
|
|
5566
|
+
* Whether or not to pre-load the download URL from the source.
|
|
5567
|
+
*/
|
|
5568
|
+
preload = input(undefined);
|
|
5565
5569
|
/**
|
|
5566
5570
|
* Output event emitted when the download URL changes.
|
|
5567
5571
|
*/
|
|
@@ -5584,8 +5588,10 @@ class DbxFirebaseStorageFileDownloadButton {
|
|
|
5584
5588
|
return result;
|
|
5585
5589
|
});
|
|
5586
5590
|
preloadSignal = computed(() => {
|
|
5591
|
+
const preload = this.preload();
|
|
5592
|
+
const source = this.source();
|
|
5587
5593
|
const config = this.configSignal();
|
|
5588
|
-
return config.preload ?? false;
|
|
5594
|
+
return preload ?? source?.preload ?? config.preload ?? false;
|
|
5589
5595
|
});
|
|
5590
5596
|
downloadUrlSignal = signal(undefined);
|
|
5591
5597
|
downloadMimeTypeSignal = signal(undefined);
|
|
@@ -5707,7 +5713,11 @@ class DbxFirebaseStorageFileDownloadButton {
|
|
|
5707
5713
|
// Output Effect
|
|
5708
5714
|
downloadUrlChangeEffect = effect(() => {
|
|
5709
5715
|
const downloadUrl = this.downloadUrlSignal();
|
|
5716
|
+
const source = this.source();
|
|
5710
5717
|
this.downloadUrlChange.emit(downloadUrl);
|
|
5718
|
+
if (source?.downloadUrlChanged) {
|
|
5719
|
+
source.downloadUrlChanged(downloadUrl);
|
|
5720
|
+
}
|
|
5711
5721
|
});
|
|
5712
5722
|
// Handlers
|
|
5713
5723
|
handleGetDownloadUrl = (value, context) => {
|
|
@@ -5740,8 +5750,8 @@ class DbxFirebaseStorageFileDownloadButton {
|
|
|
5740
5750
|
handleGetDownloadUrlError(error);
|
|
5741
5751
|
}
|
|
5742
5752
|
};
|
|
5743
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
5744
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type:
|
|
5753
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDownloadButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5754
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxFirebaseStorageFileDownloadButtonComponent, isStandalone: true, selector: "dbx-firebase-storagefile-download-button", inputs: { storageFileKey: { classPropertyName: "storageFileKey", publicName: "storageFileKey", isSignal: true, isRequired: false, transformFunction: null }, storageFileDownloadUrl: { classPropertyName: "storageFileDownloadUrl", publicName: "storageFileDownloadUrl", isSignal: true, isRequired: false, transformFunction: null }, embedMimeType: { classPropertyName: "embedMimeType", publicName: "embedMimeType", isSignal: true, isRequired: false, transformFunction: null }, showPreviewButton: { classPropertyName: "showPreviewButton", publicName: "showPreviewButton", isSignal: true, isRequired: false, transformFunction: null }, preload: { classPropertyName: "preload", publicName: "preload", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { downloadUrlChange: "downloadUrlChange" }, ngImport: i0, template: `
|
|
5745
5755
|
<dbx-anchor dbxActionAnchor [anchor]="anchorSignal()" dbxAction [dbxActionAutoTrigger]="preloadSignal()" dbxActionSnackbarError [dbxActionDisabled]="!storageFileKeySignal()" [dbxActionValue]="storageFileKeySignal()" [dbxActionHandler]="handleGetDownloadUrl" [dbxActionSuccessHandler]="handleGetDownloadUrlSuccess" [dbxActionErrorHandler]="handleGetDownloadUrlError">
|
|
5746
5756
|
<dbx-button dbxActionButton [buttonStyle]="buttonStyleSignal()" [icon]="iconSignal()" [text]="textSignal()"></dbx-button>
|
|
5747
5757
|
</dbx-anchor>
|
|
@@ -5753,7 +5763,7 @@ class DbxFirebaseStorageFileDownloadButton {
|
|
|
5753
5763
|
}
|
|
5754
5764
|
`, isInline: true, dependencies: [{ kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i2.DbxActionDirective, selector: "dbx-action,[dbxAction],dbx-action-context,[dbxActionContext]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i2.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i2.DbxActionHandlerValueDirective, selector: "[dbxActionHandlerValue]", inputs: ["dbxActionHandlerValue"] }, { kind: "directive", type: i2.DbxActionDisabledDirective, selector: "[dbxActionDisabled]", inputs: ["dbxActionDisabled"] }, { kind: "directive", type: i2.DbxActionAutoTriggerDirective, selector: "dbxActionAutoTrigger,[dbxActionAutoTrigger]", inputs: ["triggerDebounce", "triggerThrottle", "triggerErrorThrottle", "maxErrorsForThrottle", "triggerLimit", "dbxActionAutoTrigger", "useFastTriggerPreset", "useInstantTriggerPreset"] }, { kind: "directive", type: i2.DbxActionValueDirective, selector: "dbxActionValue,[dbxActionValue]", inputs: ["dbxActionValue"] }, { kind: "directive", type: i2.DbxActionSuccessHandlerDirective, selector: "[dbxActionSuccessHandler]", inputs: ["dbxActionSuccessHandler"] }, { kind: "directive", type: i2.DbxActionErrorHandlerDirective, selector: "[dbxActionErrorHandler]", inputs: ["dbxActionErrorHandler"] }, { kind: "directive", type: i2.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "directive", type: DbxActionSnackbarErrorDirective, selector: "[dbxActionSnackbarError]", inputs: ["dbxActionSnackbarError"] }, { kind: "directive", type: DbxActionDialogDirective, selector: "[dbxActionDialog]", inputs: ["dbxActionDialog", "dbxActionDialogIsModified", "dbxActionDialogIsEqual"], exportAs: ["dbxActionDialog"] }, { kind: "component", type: DbxAnchorComponent, selector: "dbx-anchor, [dbx-anchor]", inputs: ["block"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5755
5765
|
}
|
|
5756
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
5766
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileDownloadButtonComponent, decorators: [{
|
|
5757
5767
|
type: Component,
|
|
5758
5768
|
args: [{
|
|
5759
5769
|
selector: 'dbx-firebase-storagefile-download-button',
|
|
@@ -6746,5 +6756,5 @@ function provideDbxFirebase(config) {
|
|
|
6746
6756
|
* Generated bundle index. Do not edit.
|
|
6747
6757
|
*/
|
|
6748
6758
|
|
|
6749
|
-
export { AbstractConfiguredDbxFirebaseLoginButtonDirective, AbstractDbxFirebaseCollectionStore, AbstractDbxFirebaseCollectionWithParentStore, AbstractDbxFirebaseDocumentStore, AbstractDbxFirebaseDocumentWithParentStore, AbstractDbxFirebaseNotificationItemWidgetComponent, AbstractRootSingleItemDbxFirebaseDocument, AbstractSingleItemDbxFirebaseDocument, AbstractSystemStateDocumentStoreAccessor, DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION, DBX_FIREBASE_APP_OPTIONS_TOKEN, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_ID_PARAM_KEY, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_KEY_PARAM_KEY, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_USE_PARAM_VALUE, DBX_FIREBASE_LOGIN_COMPONENTS, DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, DBX_FIREBASE_STORAGEFILE_DOWNLOAD_STORAGE_ACCESSOR_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_TOKEN, DBX_FIRESTORE_CONTEXT_TOKEN, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE, DEFAULT_DBX_FIREBASE_ANALYTICS_USER_PROPERTIES_FACTORY, DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE, DEFAULT_DBX_FIREBASE_MODEL_HISTORY_COMPONENT_POPOVER_KEY, DEFAULT_DBX_FIREBASE_NOTIFICATION_ITEM_STORE_POPOVER_KEY, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN, DEFAULT_FIREBASE_COLLECTION_CHANGE_TRIGGER_FUNCTION, DEFAULT_FIREBASE_DEVELOPMENT_ENABLED_TOKEN, DEFAULT_FIREBASE_DEVELOPMENT_POPUP_KEY, DEFAULT_FIREBASE_DEVELOPMENT_SCHEDULER_ENABLED_TOKEN, DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN, DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY, DEFAULT_FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE, DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET_KEY, DbxFirebaseAnalyticsUserEventsListenerService, DbxFirebaseAnalyticsUserSource, DbxFirebaseAppCheckHttpInterceptor, DbxFirebaseAuthLoginService, DbxFirebaseAuthModule, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionChangeTriggerInstance, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionStoreDirective, DbxFirebaseCollectionWithParentStoreDirective, DbxFirebaseDefaultFirebaseProvidersModule, DbxFirebaseDevelopmentDirective, DbxFirebaseDevelopmentModule, DbxFirebaseDevelopmentPopupComponent, DbxFirebaseDevelopmentPopupContentComponent, DbxFirebaseDevelopmentPopupContentFormComponent, DbxFirebaseDevelopmentSchedulerListComponent, DbxFirebaseDevelopmentSchedulerListViewComponent, DbxFirebaseDevelopmentSchedulerListViewItemComponent, DbxFirebaseDevelopmentSchedulerService, DbxFirebaseDevelopmentSchedulerWidgetComponent, DbxFirebaseDevelopmentService, DbxFirebaseDevelopmentWidgetService, DbxFirebaseDocumentLoaderInstance, DbxFirebaseDocumentStoreDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective, DbxFirebaseDocumentStoreTwoWayKeyProvider, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFirebaseEmulatorModule, DbxFirebaseEmulatorService, DbxFirebaseFirestoreCollectionModule, DbxFirebaseFunctionsModule, DbxFirebaseLoginAnonymousComponent, DbxFirebaseLoginAppleComponent, DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent, DbxFirebaseLoginComponent, DbxFirebaseLoginContext, DbxFirebaseLoginContextBackButtonComponent, DbxFirebaseLoginContextDirective, DbxFirebaseLoginEmailComponent, DbxFirebaseLoginEmailContentComponent, DbxFirebaseLoginFacebookComponent, DbxFirebaseLoginGitHubComponent, DbxFirebaseLoginGoogleComponent, DbxFirebaseLoginListComponent, DbxFirebaseLoginMicrosoftComponent, DbxFirebaseLoginModule, DbxFirebaseLoginTermsComponent, DbxFirebaseLoginTermsSimpleComponent, DbxFirebaseLoginTwitterComponent, DbxFirebaseModelContextService, DbxFirebaseModelHistoryComponent, DbxFirebaseModelHistoryModule, DbxFirebaseModelHistoryPopoverButtonComponent, DbxFirebaseModelHistoryPopoverComponent, DbxFirebaseModelModule, DbxFirebaseModelStoreModule, DbxFirebaseModelTrackerService, DbxFirebaseModelTypeInstanceListComponent, DbxFirebaseModelTypeInstanceListViewComponent, DbxFirebaseModelTypeInstanceListViewItemComponent, DbxFirebaseModelTypesModule, DbxFirebaseModelTypesService, DbxFirebaseModelTypesServiceConfig, DbxFirebaseModelViewedEventDirective, DbxFirebaseModule, DbxFirebaseNotificationBoxCollectionStoreDirective, DbxFirebaseNotificationBoxDocumentStoreDirective, DbxFirebaseNotificationCollectionStoreDirective, DbxFirebaseNotificationDocumentStoreDirective, DbxFirebaseNotificationItemContentComponent, DbxFirebaseNotificationItemDefaultViewComponent, DbxFirebaseNotificationItemListComponent, DbxFirebaseNotificationItemListViewComponent, DbxFirebaseNotificationItemListViewItemComponent, DbxFirebaseNotificationItemStore, DbxFirebaseNotificationItemStorePopoverButtonComponent, DbxFirebaseNotificationItemStorePopoverComponent, DbxFirebaseNotificationItemViewComponent, DbxFirebaseNotificationItemWidgetService, DbxFirebaseNotificationModule, DbxFirebaseNotificationSummaryCollectionStoreDirective, DbxFirebaseNotificationSummaryDocumentStoreDirective, DbxFirebaseNotificationTemplateService, DbxFirebaseNotificationUserCollectionStoreDirective, DbxFirebaseNotificationUserDocumentStoreDirective, DbxFirebaseParsedEmulatorsConfig, DbxFirebasePipeModule, DbxFirebaseRegisterComponent, DbxFirebaseRegisterEmailComponent, DbxFirebaseStorageFileCollectionStoreDirective, DbxFirebaseStorageFileDocumentStoreDirective,
|
|
6759
|
+
export { AbstractConfiguredDbxFirebaseLoginButtonDirective, AbstractDbxFirebaseCollectionStore, AbstractDbxFirebaseCollectionWithParentStore, AbstractDbxFirebaseDocumentStore, AbstractDbxFirebaseDocumentWithParentStore, AbstractDbxFirebaseNotificationItemWidgetComponent, AbstractRootSingleItemDbxFirebaseDocument, AbstractSingleItemDbxFirebaseDocument, AbstractSystemStateDocumentStoreAccessor, DBX_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_COMPONENT_CONFIGURATION, DBX_FIREBASE_APP_OPTIONS_TOKEN, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_ID_PARAM_KEY, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_KEY_PARAM_KEY, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_USE_PARAM_VALUE, DBX_FIREBASE_LOGIN_COMPONENTS, DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, DBX_FIREBASE_STORAGEFILE_DOWNLOAD_STORAGE_ACCESSOR_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_TOKEN, DBX_FIRESTORE_CONTEXT_TOKEN, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE, DEFAULT_DBX_FIREBASE_ANALYTICS_USER_PROPERTIES_FACTORY, DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE, DEFAULT_DBX_FIREBASE_MODEL_HISTORY_COMPONENT_POPOVER_KEY, DEFAULT_DBX_FIREBASE_NOTIFICATION_ITEM_STORE_POPOVER_KEY, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN, DEFAULT_FIREBASE_COLLECTION_CHANGE_TRIGGER_FUNCTION, DEFAULT_FIREBASE_DEVELOPMENT_ENABLED_TOKEN, DEFAULT_FIREBASE_DEVELOPMENT_POPUP_KEY, DEFAULT_FIREBASE_DEVELOPMENT_SCHEDULER_ENABLED_TOKEN, DEFAULT_FIREBASE_DEVELOPMENT_WIDGET_PROVIDERS_TOKEN, DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY, DEFAULT_FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE, DEVELOPMENT_FIREBASE_SERVER_SCHEDULER_WIDGET_KEY, DbxFirebaseAnalyticsUserEventsListenerService, DbxFirebaseAnalyticsUserSource, DbxFirebaseAppCheckHttpInterceptor, DbxFirebaseAuthLoginService, DbxFirebaseAuthModule, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionChangeTriggerInstance, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionStoreDirective, DbxFirebaseCollectionWithParentStoreDirective, DbxFirebaseDefaultFirebaseProvidersModule, DbxFirebaseDevelopmentDirective, DbxFirebaseDevelopmentModule, DbxFirebaseDevelopmentPopupComponent, DbxFirebaseDevelopmentPopupContentComponent, DbxFirebaseDevelopmentPopupContentFormComponent, DbxFirebaseDevelopmentSchedulerListComponent, DbxFirebaseDevelopmentSchedulerListViewComponent, DbxFirebaseDevelopmentSchedulerListViewItemComponent, DbxFirebaseDevelopmentSchedulerService, DbxFirebaseDevelopmentSchedulerWidgetComponent, DbxFirebaseDevelopmentService, DbxFirebaseDevelopmentWidgetService, DbxFirebaseDocumentLoaderInstance, DbxFirebaseDocumentStoreDirective, DbxFirebaseDocumentStoreIdFromTwoWayModelKeyDirective, DbxFirebaseDocumentStoreTwoWayKeyProvider, DbxFirebaseDocumentStoreTwoWayModelKeySourceDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFirebaseEmulatorModule, DbxFirebaseEmulatorService, DbxFirebaseFirestoreCollectionModule, DbxFirebaseFunctionsModule, DbxFirebaseLoginAnonymousComponent, DbxFirebaseLoginAppleComponent, DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent, DbxFirebaseLoginComponent, DbxFirebaseLoginContext, DbxFirebaseLoginContextBackButtonComponent, DbxFirebaseLoginContextDirective, DbxFirebaseLoginEmailComponent, DbxFirebaseLoginEmailContentComponent, DbxFirebaseLoginFacebookComponent, DbxFirebaseLoginGitHubComponent, DbxFirebaseLoginGoogleComponent, DbxFirebaseLoginListComponent, DbxFirebaseLoginMicrosoftComponent, DbxFirebaseLoginModule, DbxFirebaseLoginTermsComponent, DbxFirebaseLoginTermsSimpleComponent, DbxFirebaseLoginTwitterComponent, DbxFirebaseModelContextService, DbxFirebaseModelHistoryComponent, DbxFirebaseModelHistoryModule, DbxFirebaseModelHistoryPopoverButtonComponent, DbxFirebaseModelHistoryPopoverComponent, DbxFirebaseModelModule, DbxFirebaseModelStoreModule, DbxFirebaseModelTrackerService, DbxFirebaseModelTypeInstanceListComponent, DbxFirebaseModelTypeInstanceListViewComponent, DbxFirebaseModelTypeInstanceListViewItemComponent, DbxFirebaseModelTypesModule, DbxFirebaseModelTypesService, DbxFirebaseModelTypesServiceConfig, DbxFirebaseModelViewedEventDirective, DbxFirebaseModule, DbxFirebaseNotificationBoxCollectionStoreDirective, DbxFirebaseNotificationBoxDocumentStoreDirective, DbxFirebaseNotificationCollectionStoreDirective, DbxFirebaseNotificationDocumentStoreDirective, DbxFirebaseNotificationItemContentComponent, DbxFirebaseNotificationItemDefaultViewComponent, DbxFirebaseNotificationItemListComponent, DbxFirebaseNotificationItemListViewComponent, DbxFirebaseNotificationItemListViewItemComponent, DbxFirebaseNotificationItemStore, DbxFirebaseNotificationItemStorePopoverButtonComponent, DbxFirebaseNotificationItemStorePopoverComponent, DbxFirebaseNotificationItemViewComponent, DbxFirebaseNotificationItemWidgetService, DbxFirebaseNotificationModule, DbxFirebaseNotificationSummaryCollectionStoreDirective, DbxFirebaseNotificationSummaryDocumentStoreDirective, DbxFirebaseNotificationTemplateService, DbxFirebaseNotificationUserCollectionStoreDirective, DbxFirebaseNotificationUserDocumentStoreDirective, DbxFirebaseParsedEmulatorsConfig, DbxFirebasePipeModule, DbxFirebaseRegisterComponent, DbxFirebaseRegisterEmailComponent, DbxFirebaseStorageFileCollectionStoreDirective, DbxFirebaseStorageFileDocumentStoreDirective, DbxFirebaseStorageFileDownloadButtonComponent, DbxFirebaseStorageFileDownloadService, DbxFirebaseStorageFileDownloadStorage, DbxFirebaseStorageFileUploadActionHandlerDirective, DbxFirebaseStorageFileUploadInitializeDocumentDirective, DbxFirebaseStorageFileUploadModule, DbxFirebaseStorageFileUploadStore, DbxFirebaseStorageFileUploadStoreDirective, DbxFirebaseStorageFileUploadSyncDirective, DbxFirebaseStorageModule, DbxFirebaseStorageService, DbxFirebaseSystemStateCollectionStoreDirective, DbxFirebaseSystemStateDocumentStoreDirective, DbxFirestoreContextService, DbxLimitedFirebaseDocumentLoaderInstance, FIREBASE_NOTIFICATION_ITEM_WIDGET_TYPE_PREFIX, FlatFirestoreModelKeyPipe, NotificationBoxCollectionStore, NotificationBoxDocumentStore, NotificationCollectionStore, NotificationDocumentStore, NotificationSummaryCollectionStore, NotificationSummaryDocumentStore, NotificationUserCollectionStore, NotificationUserDocumentStore, OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY, StorageFileCollectionStore, StorageFileDocumentStore, StorageFileUploadFilesError, SystemStateCollectionStore, SystemStateDocumentStore, TwoWayFlatFirestoreModelKeyPipe, authRolesObsWithClaimsService, authUserInfoFromAuthUser, authUserStateFromFirebaseAuthServiceFunction, dbxFirebaseAuthContextInfo, dbxFirebaseCollectionChangeTrigger, dbxFirebaseCollectionChangeTriggerForStore, dbxFirebaseCollectionChangeTriggerForWatcher, dbxFirebaseCollectionChangeWatcher, dbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstanceWithCollection, dbxFirebaseDocumentLoaderInstance, dbxFirebaseDocumentLoaderInstanceWithAccessor, dbxFirebaseIdRouteParamRedirect, dbxFirebaseInContextFirebaseModelServiceInstance, dbxFirebaseInContextFirebaseModelServiceInstanceFactory, dbxFirebaseKeyRouteParamRedirect, dbxFirebaseModelContextServiceInfoInstanceFactory, dbxFirebaseModelTypesServiceInstance, dbxFirebaseModelTypesServiceInstancePairForKeysFactory, dbxFirebaseSourceSelectLoadSource, dbxFirebaseStorageFileDownloadServiceCustomSourceFromObs, dbxFirebaseStorageProvidersContextConfigFactory, dbxLimitedFirebaseDocumentLoaderInstance, dbxLimitedFirebaseDocumentLoaderInstanceWithAccessor, dbxWidgetTypeForNotificationTemplateType, defaultDbxFirebaseAuthServiceDelegateWithClaimsService, defaultDbxFirebaseStorageFileDownloadStorageAccessorFactory, developmentFirebaseServerSchedulerWidgetEntry, enableAppCheckDebugTokenGeneration, firebaseAuthTokenFromUser, firebaseCollectionStoreCreateFunction, firebaseCollectionStoreCrudFunction, firebaseContextServiceEntityMap, firebaseDocumentStoreCreateFunction, firebaseDocumentStoreCrudFunction, firebaseDocumentStoreDeleteFunction, firebaseDocumentStoreReadFunction, firebaseDocumentStoreUpdateFunction, importsAndExports$1 as importsAndExports, modelDoesNotExistError, provideDbxFirebase, provideDbxFirebaseAnalyticsUserEventsListenerService, provideDbxFirebaseApp, provideDbxFirebaseAuth, provideDbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionWithParentStoreDirective, provideDbxFirebaseDevelopment, provideDbxFirebaseDocumentStoreDirective, provideDbxFirebaseDocumentStoreTwoWayKeyProvider, provideDbxFirebaseEmulator, provideDbxFirebaseFunctions, provideDbxFirebaseLogin, provideDbxFirebaseModelContextService, provideDbxFirebaseNotifications, provideDbxFirebaseStorageFileService, provideDbxFirestoreCollection, provideNotificationFirestoreCollections, provideStorageFileFirestoreCollections, provideSystemStateFirestoreCollections, providedDbxFirebaseStorage, readDbxAnalyticsUserPropertiesFromAuthUserInfo, readValueFromIdToken, setParentStoreEffect, stateFromTokenForLoggedInUserFunction, storageFileUploadFiles, storageFileUploadHandler };
|
|
6750
6760
|
//# sourceMappingURL=dereekb-dbx-firebase.mjs.map
|