@bravobit/bb-foundation 0.42.0 → 0.42.2
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/auth/lib/auth.interceptor.d.ts +3 -6
- package/auth/lib/auth.service.d.ts +11 -16
- package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +2 -5
- package/dialog/lib/dialog-container/dialog-container.component.d.ts +4 -6
- package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +5 -7
- package/esm2022/auth/lib/auth.interceptor.mjs +36 -42
- package/esm2022/auth/lib/auth.module.mjs +4 -4
- package/esm2022/auth/lib/auth.service.mjs +25 -41
- package/esm2022/auth/lib/auth.session.mjs +26 -22
- package/esm2022/auth/lib/directives/authenticated.directive.mjs +16 -12
- package/esm2022/auth/lib/helpers/jwt.helper.mjs +29 -31
- package/esm2022/auth/lib/providers/email.provider.mjs +4 -1
- package/esm2022/auth/lib/providers/verify.provider.mjs +4 -1
- package/esm2022/collections/lib/collection.mjs +17 -7
- package/esm2022/collections/lib/collections.module.mjs +6 -6
- package/esm2022/collections/lib/components/collections-actions/collections-actions.component.mjs +7 -9
- package/esm2022/collections/lib/components/collections-grid/collections-grid.component.mjs +11 -11
- package/esm2022/collections/lib/components/collections-pager/collections-pager.component.mjs +10 -10
- package/esm2022/collections/lib/components/collections-table/collections-table.component.mjs +16 -16
- package/esm2022/collections/lib/components/collections-table-label/collections-table-label.component.mjs +9 -11
- package/esm2022/collections/lib/components/collections-table-sorting/collections-table-sorting.component.mjs +12 -9
- package/esm2022/collections/lib/components/collections-viewer/collections-viewer.component.mjs +10 -7
- package/esm2022/collections/lib/directives/collections-data-row.directive.mjs +6 -3
- package/esm2022/collections/lib/directives/collections-data.directive.mjs +6 -3
- package/esm2022/collections/lib/directives/collections-empty.directive.mjs +6 -3
- package/esm2022/collections/lib/directives/collections-error.directive.mjs +6 -3
- package/esm2022/collections/lib/directives/collections-initial.directive.mjs +4 -3
- package/esm2022/collections/lib/directives/collections-item.directive.mjs +6 -3
- package/esm2022/collections/lib/providers/api-collection.provider.mjs +6 -4
- package/esm2022/collections/lib/providers/local-collection.provider.mjs +2 -2
- package/esm2022/combobox/combobox/combobox-container.directive.mjs +12 -7
- package/esm2022/combobox/combobox/combobox.component.mjs +23 -20
- package/esm2022/combobox/combobox-label.directive.mjs +3 -3
- package/esm2022/combobox/combobox-option.directive.mjs +3 -3
- package/esm2022/combobox/combobox-panel/combobox-panel.component.mjs +10 -6
- package/esm2022/dashboard/lib/dashboard/dashboard.component.mjs +13 -13
- package/esm2022/dashboard/lib/dashboard-header/dashboard-header.component.mjs +5 -7
- package/esm2022/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +8 -10
- package/esm2022/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +5 -7
- package/esm2022/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +12 -13
- package/esm2022/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +13 -12
- package/esm2022/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +7 -5
- package/esm2022/dashboard/lib/dashboard.module.mjs +5 -5
- package/esm2022/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
- package/esm2022/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +21 -20
- package/esm2022/dialog/lib/dialog-container/dialog-container.component.mjs +19 -24
- package/esm2022/dialog/lib/dialog-header/dialog-header.component.mjs +5 -7
- package/esm2022/dialog/lib/dialog-link/dialog-link.component.mjs +3 -3
- package/esm2022/dialog/lib/dialog-modal/dialog-modal.component.mjs +9 -6
- package/esm2022/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +19 -26
- package/esm2022/dialog/lib/dialog.insertion.mjs +4 -3
- package/esm2022/dialog/lib/dialog.interfaces.mjs +4 -1
- package/esm2022/dialog/lib/dialog.module.mjs +6 -6
- package/esm2022/dialog/lib/dialog.ref.mjs +4 -6
- package/esm2022/dialog/lib/dialog.service.mjs +5 -3
- package/esm2022/dialog/lib/directives/confirm.directive.mjs +12 -14
- package/esm2022/elements/lib/avatar/avatar.component.mjs +75 -77
- package/esm2022/elements/lib/button/button.component.mjs +12 -10
- package/esm2022/elements/lib/checkbox/checkbox.component.mjs +21 -17
- package/esm2022/elements/lib/checkbox-group/checkbox-group.component.mjs +8 -10
- package/esm2022/elements/lib/date-picker/date-picker.component.mjs +82 -76
- package/esm2022/elements/lib/directives/addon.directive.mjs +5 -5
- package/esm2022/elements/lib/directives/extra-error-controls.directive.mjs +7 -9
- package/esm2022/elements/lib/directives/form-submit.directive.mjs +6 -3
- package/esm2022/elements/lib/directives/form-submitter.directive.mjs +5 -7
- package/esm2022/elements/lib/directives/image-upload.directive.mjs +14 -11
- package/esm2022/elements/lib/directives/input.directive.mjs +6 -4
- package/esm2022/elements/lib/elements.module.mjs +6 -6
- package/esm2022/elements/lib/file-picker/file-picker.component.mjs +52 -51
- package/esm2022/elements/lib/form-control/form-control.component.mjs +14 -14
- package/esm2022/elements/lib/form-error/form-error.component.mjs +16 -8
- package/esm2022/elements/lib/form-group/form-group.component.mjs +5 -7
- package/esm2022/elements/lib/icon/icon.component.mjs +14 -13
- package/esm2022/elements/lib/image-picker/image-picker.component.mjs +20 -17
- package/esm2022/elements/lib/multi-file-control/multi-file-control.component.mjs +28 -24
- package/esm2022/elements/lib/pipes/date.pipe.mjs +6 -8
- package/esm2022/elements/lib/pipes/file-image.pipe.mjs +6 -3
- package/esm2022/elements/lib/pipes/file-size.pipe.mjs +13 -15
- package/esm2022/elements/lib/pipes/relative-time.pipe.mjs +37 -35
- package/esm2022/elements/lib/radio-button/radio-button.component.mjs +8 -7
- package/esm2022/elements/lib/radio-group/radio-group.component.mjs +21 -20
- package/esm2022/elements/lib/spinner/spinner.component.mjs +7 -9
- package/esm2022/http/lib/classes/http.config.mjs +19 -15
- package/esm2022/http/lib/http.interfaces.mjs +1 -1
- package/esm2022/http/lib/http.module.mjs +5 -4
- package/esm2022/http/lib/interceptors/base-url.interceptor.mjs +12 -20
- package/esm2022/http/lib/interceptors/error.interceptor.mjs +9 -14
- package/esm2022/lib/core/services/exif.service.mjs +102 -100
- package/esm2022/lib/core/services/file-loader.service.mjs +15 -17
- package/esm2022/lib/core/services/files.service.mjs +9 -17
- package/esm2022/lib/core/services/image-converter.service.mjs +33 -30
- package/esm2022/lib/core/services/languages.service.mjs +25 -24
- package/esm2022/lib/core/services/network.service.mjs +8 -5
- package/esm2022/lib/core/services/patch.service.mjs +9 -6
- package/esm2022/localize/lib/dictionary/dictionary.class.mjs +7 -1
- package/esm2022/localize/lib/dictionary/dictionary.context.mjs +2 -4
- package/esm2022/localize/lib/dictionary/dictionary.data.mjs +2 -1
- package/esm2022/localize/lib/handlers/missing.handler.mjs +2 -4
- package/esm2022/localize/lib/localize.module.mjs +5 -5
- package/esm2022/localize/lib/localize.pipe.mjs +4 -3
- package/esm2022/localize/lib/localize.service.mjs +36 -62
- package/esm2022/localize/lib/transforms/interpolate.transform.mjs +12 -22
- package/esm2022/localize/lib/transforms/plural.transform.mjs +9 -18
- package/esm2022/localize/lib/transforms/reference.transform.mjs +7 -15
- package/esm2022/localize/lib/views/localize-string/localize-string.component.mjs +14 -11
- package/esm2022/localize/lib/views/localize-template.directive.mjs +6 -5
- package/esm2022/masking/lib/directives/currency-mask.directive.mjs +11 -6
- package/esm2022/masking/lib/directives/date-mask.directive.mjs +11 -6
- package/esm2022/masking/lib/directives/input-mask.directive.mjs +21 -14
- package/esm2022/masking/lib/masking.module.mjs +5 -5
- package/esm2022/masking/lib/masking.service.mjs +4 -3
- package/esm2022/notifications/lib/notifications-item/notifications-item.component.mjs +50 -36
- package/esm2022/notifications/lib/notifications-list/notifications-list.component.mjs +8 -7
- package/esm2022/notifications/lib/notifications.interfaces.mjs +10 -1
- package/esm2022/notifications/lib/notifications.module.mjs +4 -4
- package/esm2022/notifications/lib/notifications.service.mjs +24 -10
- package/esm2022/permissions/lib/directives/permission.directive.mjs +20 -14
- package/esm2022/permissions/lib/handlers/local.handler.mjs +3 -1
- package/esm2022/permissions/lib/permissions.interface.mjs +4 -1
- package/esm2022/permissions/lib/permissions.module.mjs +4 -4
- package/esm2022/permissions/lib/permissions.service.mjs +8 -7
- package/esm2022/recaptcha/lib/recaptcha/recaptcha.component.mjs +35 -28
- package/esm2022/recaptcha/lib/recaptcha-loader.service.mjs +15 -15
- package/esm2022/recaptcha/lib/recaptcha.module.mjs +4 -4
- package/esm2022/select/lib/select/select.component.mjs +52 -47
- package/esm2022/select/lib/select-label.directive.mjs +4 -3
- package/esm2022/select/lib/select-multi-label.directive.mjs +4 -3
- package/esm2022/select/lib/select-option-group.directive.mjs +4 -3
- package/esm2022/select/lib/select-option.directive.mjs +4 -3
- package/esm2022/select/lib/select.module.mjs +5 -5
- package/esm2022/storage/lib/storage.service.mjs +25 -21
- package/esm2022/storage/lib/strategies/cookie-storage.strategy.mjs +66 -64
- package/esm2022/storage/lib/strategies/memory-storage.strategy.mjs +16 -18
- package/esm2022/storage/lib/strategies/polyfill-storage.strategy.mjs +31 -30
- package/esm2022/table/lib/components/table/table.component.mjs +30 -20
- package/esm2022/table/lib/components/table-cell/table-cell.component.mjs +3 -3
- package/esm2022/table/lib/components/table-header-cell/table-header-cell.component.mjs +15 -11
- package/esm2022/table/lib/components/table-pager/table-pager.component.mjs +18 -16
- package/esm2022/table/lib/data/datasource.data.mjs +4 -6
- package/esm2022/table/lib/data/generic.data.mjs +38 -36
- package/esm2022/table/lib/table.module.mjs +6 -6
- package/esm2022/tooltip/lib/tooltip-container/tooltip-container.component.mjs +5 -7
- package/esm2022/tooltip/lib/tooltip.directive.mjs +15 -15
- package/esm2022/tooltip/lib/tooltip.module.mjs +4 -4
- package/esm2022/utils/lib/directives/autosize.directive.mjs +9 -7
- package/esm2022/utils/lib/directives/focus-trap.directive.mjs +24 -22
- package/esm2022/utils/lib/directives/focus.directive.mjs +8 -5
- package/esm2022/utils/lib/directives/template.directive.mjs +7 -3
- package/esm2022/utils/lib/utils.module.mjs +5 -5
- package/fesm2022/bravobit-bb-foundation-auth.mjs +134 -144
- package/fesm2022/bravobit-bb-foundation-auth.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-collections.mjs +123 -93
- package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-combobox.mjs +46 -34
- package/fesm2022/bravobit-bb-foundation-combobox.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs +60 -64
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-dialog.mjs +97 -103
- package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-elements.mjs +468 -440
- package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-http.mjs +40 -46
- package/fesm2022/bravobit-bb-foundation-http.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-localize.mjs +91 -130
- package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-masking.mjs +47 -29
- package/fesm2022/bravobit-bb-foundation-masking.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-notifications.mjs +91 -53
- package/fesm2022/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-permissions.mjs +34 -22
- package/fesm2022/bravobit-bb-foundation-permissions.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +51 -44
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-select.mjs +67 -58
- package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-storage.mjs +134 -129
- package/fesm2022/bravobit-bb-foundation-storage.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-table.mjs +107 -91
- package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs +21 -23
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-utils.mjs +48 -37
- package/fesm2022/bravobit-bb-foundation-utils.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation.mjs +194 -191
- package/fesm2022/bravobit-bb-foundation.mjs.map +1 -1
- package/http/lib/http.interfaces.d.ts +2 -1
- package/http/lib/interceptors/base-url.interceptor.d.ts +2 -4
- package/http/lib/interceptors/error.interceptor.d.ts +1 -3
- package/lib/core/services/files.service.d.ts +3 -7
- package/localize/lib/localize.service.d.ts +10 -14
- package/localize/lib/transforms/interpolate.transform.d.ts +4 -5
- package/localize/lib/transforms/plural.transform.d.ts +5 -6
- package/localize/lib/transforms/reference.transform.d.ts +2 -3
- package/package.json +39 -39
|
@@ -2,6 +2,7 @@ import { NgModule, Optional, SkipSelf } from '@angular/core';
|
|
|
2
2
|
import { provideHttpConfig } from './http.config';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class HttpModule {
|
|
5
|
+
_parent;
|
|
5
6
|
constructor(_parent) {
|
|
6
7
|
this._parent = _parent;
|
|
7
8
|
if (this._parent) {
|
|
@@ -16,9 +17,9 @@ export class HttpModule {
|
|
|
16
17
|
]
|
|
17
18
|
};
|
|
18
19
|
}
|
|
19
|
-
static
|
|
20
|
-
static
|
|
21
|
-
static
|
|
20
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HttpModule, deps: [{ token: HttpModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
21
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: HttpModule });
|
|
22
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HttpModule });
|
|
22
23
|
}
|
|
23
24
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HttpModule, decorators: [{
|
|
24
25
|
type: NgModule
|
|
@@ -27,4 +28,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
27
28
|
}, {
|
|
28
29
|
type: SkipSelf
|
|
29
30
|
}] }] });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2h0dHAvc3JjL2xpYi9odHRwLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFHaEQsTUFBTSxPQUFPLFVBQVU7SUFFeUI7SUFBNUMsWUFBNEMsT0FBb0I7UUFBcEIsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUM1RCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsa0VBQWtFLENBQUMsQ0FBQztRQUN4RixDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBc0I7UUFDakMsT0FBTztZQUNILFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFNBQVMsRUFBRTtnQkFDUCxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7YUFDNUI7U0FDSixDQUFDO0lBQ04sQ0FBQzt1R0FmUSxVQUFVO3dHQUFWLFVBQVU7d0dBQVYsVUFBVTs7MkZBQVYsVUFBVTtrQkFEdEIsUUFBUTs7MEJBR1EsUUFBUTs7MEJBQUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIE9wdGlvbmFsLCBTa2lwU2VsZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBDb25maWdEYXRhfSBmcm9tICcuL2h0dHAuaW50ZXJmYWNlcyc7XG5pbXBvcnQge3Byb3ZpZGVIdHRwQ29uZmlnfSBmcm9tICcuL2h0dHAuY29uZmlnJztcblxuQE5nTW9kdWxlKClcbmV4cG9ydCBjbGFzcyBIdHRwTW9kdWxlIHtcblxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHByaXZhdGUgX3BhcmVudD86IEh0dHBNb2R1bGUpIHtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdIdHRwTW9kdWxlIGlzIGFscmVhZHkgbG9hZGVkOyBJbXBvcnQgaXQgaW4gdGhlIGNvcmUgbW9kdWxlIG9ubHkuJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZm9yUm9vdChjb25maWc6IEh0dHBDb25maWdEYXRhKTogTW9kdWxlV2l0aFByb3ZpZGVyczxIdHRwTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogSHR0cE1vZHVsZSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAgICAgIHByb3ZpZGVIdHRwQ29uZmlnKGNvbmZpZylcbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { HTTP_CONFIG } from '../http.interfaces';
|
|
2
|
-
import {
|
|
2
|
+
import { inject, Injectable, PLATFORM_ID } from '@angular/core';
|
|
3
3
|
import { isPlatformServer } from '@angular/common';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../classes/http.config";
|
|
6
5
|
export class BaseUrlInterceptor {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
6
|
+
// Dependencies.
|
|
7
|
+
_config = inject(HTTP_CONFIG);
|
|
8
|
+
_platformId = inject(PLATFORM_ID);
|
|
9
|
+
// Aliases.
|
|
10
|
+
_aliases = this._config?.aliases;
|
|
11
|
+
_prefix = this._config?.prefix;
|
|
12
|
+
_extractRegex = new RegExp(`\\${this._prefix}[a-zA-Z]+`);
|
|
15
13
|
intercept(request, next) {
|
|
16
14
|
const url = this.getUrlBasedOnAlias(request.url);
|
|
17
15
|
const modified = request.clone({ url });
|
|
@@ -53,16 +51,10 @@ export class BaseUrlInterceptor {
|
|
|
53
51
|
}
|
|
54
52
|
return null;
|
|
55
53
|
}
|
|
56
|
-
static
|
|
57
|
-
static
|
|
54
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BaseUrlInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
55
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BaseUrlInterceptor });
|
|
58
56
|
}
|
|
59
57
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BaseUrlInterceptor, decorators: [{
|
|
60
58
|
type: Injectable
|
|
61
|
-
}]
|
|
62
|
-
|
|
63
|
-
args: [HTTP_CONFIG]
|
|
64
|
-
}] }, { type: Object, decorators: [{
|
|
65
|
-
type: Inject,
|
|
66
|
-
args: [PLATFORM_ID]
|
|
67
|
-
}] }] });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS11cmwuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2h0dHAvc3JjL2xpYi9pbnRlcmNlcHRvcnMvYmFzZS11cmwuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBeUMsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RixPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7OztBQUtqRCxNQUFNLE9BQU8sa0JBQWtCO0lBTzNCLFlBQXlDLE9BQW1CLEVBQ25CLFdBQW1CO1FBRG5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFONUQsV0FBVztRQUNNLGFBQVEsR0FBc0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDcEQsWUFBTyxHQUFXLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO1FBQ3ZDLGtCQUFhLEdBQVcsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxXQUFXLENBQUMsQ0FBQztJQUlsRixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQTZCLEVBQUUsSUFBaUI7UUFDdEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQztRQUV0QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEdBQVc7UUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ1gsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ3hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxRQUFRLENBQUM7WUFDcEIsQ0FBQztZQUVELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVPLGtCQUFrQixDQUFDLEdBQTBCO1FBQ2pELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDMUIsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxJQUFJLEdBQUcsRUFBRSxPQUFPLElBQUksSUFBSTtZQUNyQyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFhO1FBQzFCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDO1FBQzFFLElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixPQUFPLE9BQU8sQ0FBQztRQUNuQixDQUFDO1FBRUQsSUFBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxFQUFFLENBQUM7WUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVE7aUJBQzFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO2lCQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEIsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLG1EQUFtRCxLQUFLLG9EQUFvRCxTQUFTLElBQUksQ0FBQyxDQUFDO1FBQy9JLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzhHQTVEUSxrQkFBa0Isa0JBT1AsV0FBVyxhQUNYLFdBQVc7a0hBUnRCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVTs7MEJBUU0sTUFBTTsyQkFBQyxXQUFXOzswQkFDbEIsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIVFRQX0NPTkZJRywgSHR0cENvbmZpZ0FsaWFzLCBIdHRwQ29uZmlnUGxhdGZvcm1Vcmx9IGZyb20gJy4uL2h0dHAuaW50ZXJmYWNlcyc7XG5pbXBvcnQge0h0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwQ29uZmlnfSBmcm9tICcuLi9jbGFzc2VzL2h0dHAuY29uZmlnJztcbmltcG9ydCB7aXNQbGF0Zm9ybVNlcnZlcn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZGVjbGFyZSBsZXQgbmdEZXZNb2RlO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQmFzZVVybEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICAgIC8vIEFsaWFzZXMuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfYWxpYXNlczogSHR0cENvbmZpZ0FsaWFzW10gPSB0aGlzLl9jb25maWc/LmFsaWFzZXM7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfcHJlZml4OiBzdHJpbmcgPSB0aGlzLl9jb25maWc/LnByZWZpeDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9leHRyYWN0UmVnZXg6IFJlZ0V4cCA9IG5ldyBSZWdFeHAoYFxcXFwke3RoaXMuX3ByZWZpeH1bYS16QS1aXStgKTtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSFRUUF9DT05GSUcpIHByaXZhdGUgX2NvbmZpZzogSHR0cENvbmZpZyxcbiAgICAgICAgICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIF9wbGF0Zm9ybUlkOiBPYmplY3QpIHtcbiAgICB9XG5cbiAgICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0VXJsQmFzZWRPbkFsaWFzKHJlcXVlc3QudXJsKTtcbiAgICAgICAgY29uc3QgbW9kaWZpZWQgPSByZXF1ZXN0LmNsb25lKHt1cmx9KTtcblxuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUobW9kaWZpZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VXJsQmFzZWRPbkFsaWFzKHVybDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSB0aGlzLl9leHRyYWN0UmVnZXguZXhlYyh1cmwpO1xuICAgICAgICBpZiAoIW1hdGNoZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWF0Y2hlcy5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbGlhcyA9IHRoaXMuZ2V0QWxpYXMoY3VycmVudCk7XG4gICAgICAgICAgICBjb25zdCBzdHJpbmdBbGlhcyA9IHRoaXMuY29udmVydFVybFRvU3RyaW5nKGFsaWFzPy51cmwpO1xuICAgICAgICAgICAgaWYgKCFzdHJpbmdBbGlhcykge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91cztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzLnJlcGxhY2UoY3VycmVudCwgc3RyaW5nQWxpYXMpO1xuICAgICAgICB9LCB1cmwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udmVydFVybFRvU3RyaW5nKHVybDogSHR0cENvbmZpZ1BsYXRmb3JtVXJsKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdXJsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc1BsYXRmb3JtU2VydmVyKHRoaXMuX3BsYXRmb3JtSWQpXG4gICAgICAgICAgICA/IHVybD8uc2VydmVyID8/IHVybD8uYnJvd3NlciA/PyBudWxsXG4gICAgICAgICAgICA6IHVybD8uYnJvd3NlciA/PyBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWxpYXModmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBhbGlhcyA9IHZhbHVlLnJlcGxhY2UodGhpcy5fcHJlZml4LCAnJyk7XG4gICAgICAgIGNvbnN0IGZldGNoZWQgPSB0aGlzLl9hbGlhc2VzPy5maW5kKGl0ZW0gPT4gaXRlbS5hbGlhcyA9PT0gYWxpYXMpID8/IG51bGw7XG4gICAgICAgIGlmIChmZXRjaGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmV0Y2hlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IHRoaXMuX2FsaWFzZXNcbiAgICAgICAgICAgICAgICAubWFwKGl0ZW0gPT4gYFxcJCR7aXRlbT8uYWxpYXN9YClcbiAgICAgICAgICAgICAgICAuam9pbignLCAnKTtcbiAgICAgICAgICAgIGNvbnNvbGU/Lndhcm4/LihgW0h0dHBNb2R1bGVdOiBVc2VkIGFuIGludmFsaWQgSFRUUC1hbGlhcyBuYW1lZCBcIiR7dmFsdWV9XCIsIHNraXBwZWQgcGFyc2luZzsgQXZhaWxhYmxlIGFsaWFzZXMgaXMgb25lIG9mICgke2F2YWlsYWJsZX0pLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG59XG4iXX0=
|
|
59
|
+
}] });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS11cmwuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2h0dHAvc3JjL2xpYi9pbnRlcmNlcHRvcnMvYmFzZS11cmwuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBeUMsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RixPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7O0FBS2pELE1BQU0sT0FBTyxrQkFBa0I7SUFFM0IsZ0JBQWdCO0lBQ0MsT0FBTyxHQUFlLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxQyxXQUFXLEdBQVcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTNELFdBQVc7SUFDTSxRQUFRLEdBQXNCLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ3BELE9BQU8sR0FBVyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUN2QyxhQUFhLEdBQVcsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxXQUFXLENBQUMsQ0FBQztJQUVsRixTQUFTLENBQUMsT0FBNkIsRUFBRSxJQUFpQjtRQUN0RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDO1FBRXRDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsR0FBVztRQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDZixPQUFPLFFBQVEsQ0FBQztZQUNwQixDQUFDO1lBRUQsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNsRCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRU8sa0JBQWtCLENBQUMsR0FBMEI7UUFDakQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMxQixPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDckMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLE9BQU8sSUFBSSxJQUFJO1lBQ3JDLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRU8sUUFBUSxDQUFDLEtBQWE7UUFDMUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDMUUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLE9BQU8sT0FBTyxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNoRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUTtpQkFDMUIsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7aUJBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsbURBQW1ELEtBQUssb0RBQW9ELFNBQVMsSUFBSSxDQUFDLENBQUM7UUFDL0ksQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7dUdBNURRLGtCQUFrQjsyR0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIVFRQX0NPTkZJRywgSHR0cENvbmZpZ0FsaWFzLCBIdHRwQ29uZmlnUGxhdGZvcm1Vcmx9IGZyb20gJy4uL2h0dHAuaW50ZXJmYWNlcyc7XG5pbXBvcnQge0h0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwQ29uZmlnfSBmcm9tICcuLi9jbGFzc2VzL2h0dHAuY29uZmlnJztcbmltcG9ydCB7aXNQbGF0Zm9ybVNlcnZlcn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZGVjbGFyZSBsZXQgbmdEZXZNb2RlO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQmFzZVVybEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICAgIC8vIERlcGVuZGVuY2llcy5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb25maWc6IEh0dHBDb25maWcgPSBpbmplY3QoSFRUUF9DT05GSUcpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXRmb3JtSWQ6IE9iamVjdCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgICAvLyBBbGlhc2VzLlxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2FsaWFzZXM6IEh0dHBDb25maWdBbGlhc1tdID0gdGhpcy5fY29uZmlnPy5hbGlhc2VzO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ByZWZpeDogc3RyaW5nID0gdGhpcy5fY29uZmlnPy5wcmVmaXg7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXh0cmFjdFJlZ2V4OiBSZWdFeHAgPSBuZXcgUmVnRXhwKGBcXFxcJHt0aGlzLl9wcmVmaXh9W2EtekEtWl0rYCk7XG5cbiAgICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0VXJsQmFzZWRPbkFsaWFzKHJlcXVlc3QudXJsKTtcbiAgICAgICAgY29uc3QgbW9kaWZpZWQgPSByZXF1ZXN0LmNsb25lKHt1cmx9KTtcblxuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUobW9kaWZpZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VXJsQmFzZWRPbkFsaWFzKHVybDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSB0aGlzLl9leHRyYWN0UmVnZXguZXhlYyh1cmwpO1xuICAgICAgICBpZiAoIW1hdGNoZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWF0Y2hlcy5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbGlhcyA9IHRoaXMuZ2V0QWxpYXMoY3VycmVudCk7XG4gICAgICAgICAgICBjb25zdCBzdHJpbmdBbGlhcyA9IHRoaXMuY29udmVydFVybFRvU3RyaW5nKGFsaWFzPy51cmwpO1xuICAgICAgICAgICAgaWYgKCFzdHJpbmdBbGlhcykge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91cztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzLnJlcGxhY2UoY3VycmVudCwgc3RyaW5nQWxpYXMpO1xuICAgICAgICB9LCB1cmwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udmVydFVybFRvU3RyaW5nKHVybDogSHR0cENvbmZpZ1BsYXRmb3JtVXJsKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdXJsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc1BsYXRmb3JtU2VydmVyKHRoaXMuX3BsYXRmb3JtSWQpXG4gICAgICAgICAgICA/IHVybD8uc2VydmVyID8/IHVybD8uYnJvd3NlciA/PyBudWxsXG4gICAgICAgICAgICA6IHVybD8uYnJvd3NlciA/PyBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWxpYXModmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBhbGlhcyA9IHZhbHVlLnJlcGxhY2UodGhpcy5fcHJlZml4LCAnJyk7XG4gICAgICAgIGNvbnN0IGZldGNoZWQgPSB0aGlzLl9hbGlhc2VzPy5maW5kKGl0ZW0gPT4gaXRlbS5hbGlhcyA9PT0gYWxpYXMpID8/IG51bGw7XG4gICAgICAgIGlmIChmZXRjaGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmV0Y2hlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IHRoaXMuX2FsaWFzZXNcbiAgICAgICAgICAgICAgICAubWFwKGl0ZW0gPT4gYFxcJCR7aXRlbT8uYWxpYXN9YClcbiAgICAgICAgICAgICAgICAuam9pbignLCAnKTtcbiAgICAgICAgICAgIGNvbnNvbGU/Lndhcm4/LihgW0h0dHBNb2R1bGVdOiBVc2VkIGFuIGludmFsaWQgSFRUUC1hbGlhcyBuYW1lZCBcIiR7dmFsdWV9XCIsIHNraXBwZWQgcGFyc2luZzsgQXZhaWxhYmxlIGFsaWFzZXMgaXMgb25lIG9mICgke2F2YWlsYWJsZX0pLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { HttpErrorResponse } from '@angular/common/http';
|
|
2
|
-
import {
|
|
2
|
+
import { inject, Injectable } from '@angular/core';
|
|
3
3
|
import { HttpError } from '../classes/http.error';
|
|
4
4
|
import { HTTP_CONFIG } from '../http.interfaces';
|
|
5
5
|
import { catchError } from 'rxjs/operators';
|
|
6
6
|
import { throwError } from 'rxjs';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../classes/http.config";
|
|
9
8
|
export class ErrorInterceptor {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
9
|
+
// Dependencies.
|
|
10
|
+
_config = inject(HTTP_CONFIG);
|
|
11
|
+
// State.
|
|
12
|
+
_disabled = this._config?.disableErrorParsing ?? false;
|
|
15
13
|
intercept(request, next) {
|
|
16
14
|
return next.handle(request).pipe(catchError(error => {
|
|
17
15
|
// If we have a matching http error response
|
|
@@ -24,13 +22,10 @@ export class ErrorInterceptor {
|
|
|
24
22
|
return throwError(() => error);
|
|
25
23
|
}));
|
|
26
24
|
}
|
|
27
|
-
static
|
|
28
|
-
static
|
|
25
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ErrorInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
26
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ErrorInterceptor });
|
|
29
27
|
}
|
|
30
28
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ErrorInterceptor, decorators: [{
|
|
31
29
|
type: Injectable
|
|
32
|
-
}]
|
|
33
|
-
|
|
34
|
-
args: [HTTP_CONFIG]
|
|
35
|
-
}] }] });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2h0dHAvc3JjL2xpYi9pbnRlcmNlcHRvcnMvZXJyb3IuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUE0QyxNQUFNLHNCQUFzQixDQUFDO0FBRWxHLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7OztBQUdoQyxNQUFNLE9BQU8sZ0JBQWdCO0lBS3pCLFlBQXlDLE9BQW1CO1FBQW5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFINUQsU0FBUztRQUNRLGNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLG1CQUFtQixJQUFJLEtBQUssQ0FBQztJQUd4RSxDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQTZCLEVBQUUsSUFBaUI7UUFDdEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDNUIsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2YsNENBQTRDO1lBQzVDLHFEQUFxRDtZQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztnQkFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BDLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFFRCxxREFBcUQ7WUFDckQsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7OEdBdEJRLGdCQUFnQixrQkFLTCxXQUFXO2tIQUx0QixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVU7OzBCQU1NLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0h0dHBDb25maWd9IGZyb20gJy4uL2NsYXNzZXMvaHR0cC5jb25maWcnO1xuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwRXJyb3J9IGZyb20gJy4uL2NsYXNzZXMvaHR0cC5lcnJvcic7XG5pbXBvcnQge0hUVFBfQ09ORklHfSBmcm9tICcuLi9odHRwLmludGVyZmFjZXMnO1xuaW1wb3J0IHtjYXRjaEVycm9yfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge3Rocm93RXJyb3J9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRXJyb3JJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgICAvLyBTdGF0ZS5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kaXNhYmxlZCA9IHRoaXMuX2NvbmZpZz8uZGlzYWJsZUVycm9yUGFyc2luZyA/PyBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSFRUUF9DT05GSUcpIHByaXZhdGUgX2NvbmZpZzogSHR0cENvbmZpZykge1xuICAgIH1cblxuICAgIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPiwgbmV4dDogSHR0cEhhbmRsZXIpIHtcbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpLnBpcGUoXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgbWF0Y2hpbmcgaHR0cCBlcnJvciByZXNwb25zZVxuICAgICAgICAgICAgICAgIC8vIHJlLW1hcCBpdCB3aXRoIG91ciBjdXN0b20gY2xhc3MgKGlmIG5vdCBkaXNhYmxlZCkuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9kaXNhYmxlZCAmJiBlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IG5ldyBIdHRwRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBwYXJzZWQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFdlIGRpZCBub3QgbWF0Y2ggYW55dGhpbmcsIGp1c3QgcmUtdHJvdyB0aGUgZXJyb3IuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
30
|
+
}] });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2h0dHAvc3JjL2xpYi9pbnRlcmNlcHRvcnMvZXJyb3IuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUE0QyxNQUFNLHNCQUFzQixDQUFDO0FBRWxHLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBR2hDLE1BQU0sT0FBTyxnQkFBZ0I7SUFFekIsZ0JBQWdCO0lBQ0MsT0FBTyxHQUFlLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUUzRCxTQUFTO0lBQ1EsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLElBQUksS0FBSyxDQUFDO0lBRXhFLFNBQVMsQ0FBQyxPQUE2QixFQUFFLElBQWlCO1FBQ3RELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzVCLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNmLDRDQUE0QztZQUM1QyxxREFBcUQ7WUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3hELE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNwQyxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBRUQscURBQXFEO1lBQ3JELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO3VHQXRCUSxnQkFBZ0I7MkdBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0h0dHBDb25maWd9IGZyb20gJy4uL2NsYXNzZXMvaHR0cC5jb25maWcnO1xuaW1wb3J0IHtpbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwRXJyb3J9IGZyb20gJy4uL2NsYXNzZXMvaHR0cC5lcnJvcic7XG5pbXBvcnQge0hUVFBfQ09ORklHfSBmcm9tICcuLi9odHRwLmludGVyZmFjZXMnO1xuaW1wb3J0IHtjYXRjaEVycm9yfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge3Rocm93RXJyb3J9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRXJyb3JJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgICAvLyBEZXBlbmRlbmNpZXMuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnOiBIdHRwQ29uZmlnID0gaW5qZWN0KEhUVFBfQ09ORklHKTtcblxuICAgIC8vIFN0YXRlLlxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rpc2FibGVkID0gdGhpcy5fY29uZmlnPy5kaXNhYmxlRXJyb3JQYXJzaW5nID8/IGZhbHNlO1xuXG4gICAgaW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBtYXRjaGluZyBodHRwIGVycm9yIHJlc3BvbnNlXG4gICAgICAgICAgICAgICAgLy8gcmUtbWFwIGl0IHdpdGggb3VyIGN1c3RvbSBjbGFzcyAoaWYgbm90IGRpc2FibGVkKS5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2Rpc2FibGVkICYmIGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gbmV3IEh0dHBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHBhcnNlZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gV2UgZGlkIG5vdCBtYXRjaCBhbnl0aGluZywganVzdCByZS10cm93IHRoZSBlcnJvci5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxufVxuIl19
|
|
@@ -3,106 +3,11 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
import * as i1 from "@angular/cdk/platform";
|
|
4
4
|
import * as i2 from "./file-loader.service";
|
|
5
5
|
export class Exif {
|
|
6
|
+
_platform;
|
|
7
|
+
_fileLoader;
|
|
6
8
|
constructor(_platform, _fileLoader) {
|
|
7
9
|
this._platform = _platform;
|
|
8
10
|
this._fileLoader = _fileLoader;
|
|
9
|
-
this.transformImage = (image, type, orientation, quality = 100) => {
|
|
10
|
-
// Create the canvas and context.
|
|
11
|
-
const canvas = document.createElement('canvas');
|
|
12
|
-
const context = canvas.getContext('2d');
|
|
13
|
-
// Validate the context exists.
|
|
14
|
-
if (!context) {
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
17
|
-
// Set the canvas size based on the image.
|
|
18
|
-
const { width, height } = image;
|
|
19
|
-
canvas.width = width;
|
|
20
|
-
canvas.height = height;
|
|
21
|
-
// Validate the orientation is correct
|
|
22
|
-
// else flip the canvas sizes.
|
|
23
|
-
if (4 < orientation && orientation < 9) {
|
|
24
|
-
canvas.width = height;
|
|
25
|
-
canvas.height = width;
|
|
26
|
-
}
|
|
27
|
-
// Transform the context based on the orientation.
|
|
28
|
-
switch (orientation) {
|
|
29
|
-
case 2:
|
|
30
|
-
context.transform(-1, 0, 0, 1, width, 0);
|
|
31
|
-
break;
|
|
32
|
-
case 3:
|
|
33
|
-
context.transform(-1, 0, 0, -1, width, height);
|
|
34
|
-
break;
|
|
35
|
-
case 4:
|
|
36
|
-
context.transform(1, 0, 0, -1, 0, height);
|
|
37
|
-
break;
|
|
38
|
-
case 5:
|
|
39
|
-
context.transform(0, 1, 1, 0, 0, 0);
|
|
40
|
-
break;
|
|
41
|
-
case 6:
|
|
42
|
-
context.transform(0, 1, -1, 0, height, 0);
|
|
43
|
-
break;
|
|
44
|
-
case 7:
|
|
45
|
-
context.transform(0, -1, -1, 0, height, width);
|
|
46
|
-
break;
|
|
47
|
-
case 8:
|
|
48
|
-
context.transform(0, -1, 1, 0, 0, width);
|
|
49
|
-
break;
|
|
50
|
-
default:
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
// Draw the image on the context and return the data URL.
|
|
54
|
-
context.drawImage(image, 0, 0, width, height);
|
|
55
|
-
return canvas.toDataURL(type, quality / 100);
|
|
56
|
-
};
|
|
57
|
-
this.getSupportedCanvasType = (fileType) => {
|
|
58
|
-
switch (fileType) {
|
|
59
|
-
case 'image/jpeg':
|
|
60
|
-
case 'image/jpg':
|
|
61
|
-
return 'image/jpeg';
|
|
62
|
-
case 'image/x-windows-bmp':
|
|
63
|
-
case 'image/bmp':
|
|
64
|
-
return 'image/bmp';
|
|
65
|
-
default:
|
|
66
|
-
return 'image/png';
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
this.getOrientation = (buffer) => {
|
|
70
|
-
// Create a new data view.
|
|
71
|
-
const view = new DataView(buffer);
|
|
72
|
-
if (view.getUint16(0, false) !== 0xFFD8) {
|
|
73
|
-
return -2;
|
|
74
|
-
}
|
|
75
|
-
const length = view.byteLength;
|
|
76
|
-
let offset = 2;
|
|
77
|
-
while (offset < length) {
|
|
78
|
-
if (view.getUint16(offset + 2, false) <= 8) {
|
|
79
|
-
return -1;
|
|
80
|
-
}
|
|
81
|
-
const marker = view.getUint16(offset, false);
|
|
82
|
-
offset += 2;
|
|
83
|
-
if (marker === 0xFFE1) {
|
|
84
|
-
if (view.getUint32(offset += 2, false) !== 0x45786966) {
|
|
85
|
-
return -1;
|
|
86
|
-
}
|
|
87
|
-
const little = view.getUint16(offset += 6, false) === 0x4949;
|
|
88
|
-
offset += view.getUint32(offset + 4, little);
|
|
89
|
-
const tags = view.getUint16(offset, little);
|
|
90
|
-
offset += 2;
|
|
91
|
-
for (let index = 0; index < tags; index++) {
|
|
92
|
-
if (view.getUint16(offset + index * 12, little) === 0x0112) {
|
|
93
|
-
return view.getUint16(offset + index * 12 + 8, little);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
else if ((marker & 0xFF00) !== 0xFF00) {
|
|
98
|
-
break;
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
offset += view.getUint16(offset, false);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
return -1;
|
|
105
|
-
};
|
|
106
11
|
}
|
|
107
12
|
async strip(file, quality = 100) {
|
|
108
13
|
// Validate we are on a browser.
|
|
@@ -151,8 +56,105 @@ export class Exif {
|
|
|
151
56
|
image.onload = () => resolve(image);
|
|
152
57
|
});
|
|
153
58
|
}
|
|
154
|
-
|
|
155
|
-
|
|
59
|
+
transformImage = (image, type, orientation, quality = 100) => {
|
|
60
|
+
// Create the canvas and context.
|
|
61
|
+
const canvas = document.createElement('canvas');
|
|
62
|
+
const context = canvas.getContext('2d');
|
|
63
|
+
// Validate the context exists.
|
|
64
|
+
if (!context) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
// Set the canvas size based on the image.
|
|
68
|
+
const { width, height } = image;
|
|
69
|
+
canvas.width = width;
|
|
70
|
+
canvas.height = height;
|
|
71
|
+
// Validate the orientation is correct
|
|
72
|
+
// else flip the canvas sizes.
|
|
73
|
+
if (4 < orientation && orientation < 9) {
|
|
74
|
+
canvas.width = height;
|
|
75
|
+
canvas.height = width;
|
|
76
|
+
}
|
|
77
|
+
// Transform the context based on the orientation.
|
|
78
|
+
switch (orientation) {
|
|
79
|
+
case 2:
|
|
80
|
+
context.transform(-1, 0, 0, 1, width, 0);
|
|
81
|
+
break;
|
|
82
|
+
case 3:
|
|
83
|
+
context.transform(-1, 0, 0, -1, width, height);
|
|
84
|
+
break;
|
|
85
|
+
case 4:
|
|
86
|
+
context.transform(1, 0, 0, -1, 0, height);
|
|
87
|
+
break;
|
|
88
|
+
case 5:
|
|
89
|
+
context.transform(0, 1, 1, 0, 0, 0);
|
|
90
|
+
break;
|
|
91
|
+
case 6:
|
|
92
|
+
context.transform(0, 1, -1, 0, height, 0);
|
|
93
|
+
break;
|
|
94
|
+
case 7:
|
|
95
|
+
context.transform(0, -1, -1, 0, height, width);
|
|
96
|
+
break;
|
|
97
|
+
case 8:
|
|
98
|
+
context.transform(0, -1, 1, 0, 0, width);
|
|
99
|
+
break;
|
|
100
|
+
default:
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
// Draw the image on the context and return the data URL.
|
|
104
|
+
context.drawImage(image, 0, 0, width, height);
|
|
105
|
+
return canvas.toDataURL(type, quality / 100);
|
|
106
|
+
};
|
|
107
|
+
getSupportedCanvasType = (fileType) => {
|
|
108
|
+
switch (fileType) {
|
|
109
|
+
case 'image/jpeg':
|
|
110
|
+
case 'image/jpg':
|
|
111
|
+
return 'image/jpeg';
|
|
112
|
+
case 'image/x-windows-bmp':
|
|
113
|
+
case 'image/bmp':
|
|
114
|
+
return 'image/bmp';
|
|
115
|
+
default:
|
|
116
|
+
return 'image/png';
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
getOrientation = (buffer) => {
|
|
120
|
+
// Create a new data view.
|
|
121
|
+
const view = new DataView(buffer);
|
|
122
|
+
if (view.getUint16(0, false) !== 0xFFD8) {
|
|
123
|
+
return -2;
|
|
124
|
+
}
|
|
125
|
+
const length = view.byteLength;
|
|
126
|
+
let offset = 2;
|
|
127
|
+
while (offset < length) {
|
|
128
|
+
if (view.getUint16(offset + 2, false) <= 8) {
|
|
129
|
+
return -1;
|
|
130
|
+
}
|
|
131
|
+
const marker = view.getUint16(offset, false);
|
|
132
|
+
offset += 2;
|
|
133
|
+
if (marker === 0xFFE1) {
|
|
134
|
+
if (view.getUint32(offset += 2, false) !== 0x45786966) {
|
|
135
|
+
return -1;
|
|
136
|
+
}
|
|
137
|
+
const little = view.getUint16(offset += 6, false) === 0x4949;
|
|
138
|
+
offset += view.getUint32(offset + 4, little);
|
|
139
|
+
const tags = view.getUint16(offset, little);
|
|
140
|
+
offset += 2;
|
|
141
|
+
for (let index = 0; index < tags; index++) {
|
|
142
|
+
if (view.getUint16(offset + index * 12, little) === 0x0112) {
|
|
143
|
+
return view.getUint16(offset + index * 12 + 8, little);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else if ((marker & 0xFF00) !== 0xFF00) {
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
offset += view.getUint16(offset, false);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return -1;
|
|
155
|
+
};
|
|
156
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: Exif, deps: [{ token: i1.Platform }, { token: i2.FileLoader }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
157
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: Exif, providedIn: 'root' });
|
|
156
158
|
}
|
|
157
159
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: Exif, decorators: [{
|
|
158
160
|
type: Injectable,
|
|
@@ -160,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
160
162
|
providedIn: 'root'
|
|
161
163
|
}]
|
|
162
164
|
}], ctorParameters: () => [{ type: i1.Platform }, { type: i2.FileLoader }] });
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpZi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9zcmMvbGliL2NvcmUvc2VydmljZXMvZXhpZi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFLekMsTUFBTSxPQUFPLElBQUk7SUFFYixZQUFvQixTQUFtQixFQUNuQixXQUF1QjtRQUR2QixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBMkRuQyxtQkFBYyxHQUFHLENBQUMsS0FBdUIsRUFBRSxJQUFZLEVBQUUsV0FBbUIsRUFBRSxVQUFrQixHQUFHLEVBQUUsRUFBRTtZQUMzRyxpQ0FBaUM7WUFDakMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXhDLCtCQUErQjtZQUMvQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztZQUVELDBDQUEwQztZQUMxQyxNQUFNLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxHQUFHLEtBQUssQ0FBQztZQUM5QixNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNyQixNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUV2QixzQ0FBc0M7WUFDdEMsOEJBQThCO1lBQzlCLElBQUksQ0FBQyxHQUFHLFdBQVcsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO2dCQUN0QixNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUMxQixDQUFDO1lBRUQs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QUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFckYsaUNBQWlDO1lBQ2pDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDWixPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBRUQscUNBQXFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ0wsK0JBQStCO1lBQy9CLGdDQUFnQztZQUNoQyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxPQUFlO1FBQzVDLE9BQU8sSUFBSSxPQUFPLENBQW1CLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDMUIsS0FBSyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUM7WUFDcEIsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUNuRCxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ25ELEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0E1RFEsSUFBSTtrSEFBSixJQUFJLGNBRkQsTUFBTTs7MkZBRVQsSUFBSTtrQkFIaEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZpbGVMb2FkZXJ9IGZyb20gJy4vZmlsZS1sb2FkZXIuc2VydmljZSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFeGlmIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9maWxlTG9hZGVyOiBGaWxlTG9hZGVyKSB7XG4gICAgfVxuXG4gICAgYXN5bmMgc3RyaXAoZmlsZTogRmlsZSwgcXVhbGl0eTogbnVtYmVyID0gMTAwKSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIHdlIGFyZSBvbiBhIGJyb3dzZXIuXG4gICAgICAgIGlmICghdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSBmaWxlIGV4aXN0cyBhbmQgaXNcbiAgICAgICAgLy8gYW4gaW5zdGFuY2Ugb2YgYSBGaWxlIG9iamVjdC5cbiAgICAgICAgaWYgKCFmaWxlIHx8ICEoZmlsZSBpbnN0YW5jZW9mIEZpbGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9ubHkganBlZyBpbWFnZXMgbmVlZCBjb3JyZWN0aW9uLlxuICAgICAgICBpZiAoIVsnaW1hZ2UvanBlZyddLmluY2x1ZGVzKGZpbGUudHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFJlYWQgdGhlIGZpbGUgYXMgYW4gYXJyYXkgYnVmZmVyIGFuZCBkYXRhIHVybC5cbiAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgdGhpcy5fZmlsZUxvYWRlci5hc0FycmF5QnVmZmVyKGZpbGUpO1xuICAgICAgICAgICAgY29uc3QgZGF0YVVybCA9IGF3YWl0IHRoaXMuX2ZpbGVMb2FkZXIuYXNEYXRhVXJsKGZpbGUpO1xuXG4gICAgICAgICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgZWxlbWVudC5cbiAgICAgICAgICAgIGNvbnN0IGltYWdlRWxlbWVudCA9IGF3YWl0IHRoaXMuY3JlYXRlSW1hZ2VFbGVtZW50KGRhdGFVcmwpO1xuXG4gICAgICAgICAgICAvLyBHZXQgdGhlIG9yaWVudGF0aW9uIGJ5IHVzaW5nIHRoZSBidWZmZXIuXG4gICAgICAgICAgICBjb25zdCBvcmllbnRhdGlvbiA9IHRoaXMuZ2V0T3JpZW50YXRpb24oYXJyYXlCdWZmZXIpO1xuXG4gICAgICAgICAgICAvLyBUcmFuc2Zvcm0gdGhlIGltYWdlIHRvIHJlbW92ZSB0aGUgb3JpZW50YXRpb24uXG4gICAgICAgICAgICBjb25zdCBjYW52YXNUeXBlID0gdGhpcy5nZXRTdXBwb3J0ZWRDYW52YXNUeXBlKGZpbGUudHlwZSk7XG4gICAgICAgICAgICBjb25zdCBpbWFnZVVybCA9IHRoaXMudHJhbnNmb3JtSW1hZ2UoaW1hZ2VFbGVtZW50LCBjYW52YXNUeXBlLCBvcmllbnRhdGlvbiwgcXVhbGl0eSk7XG5cbiAgICAgICAgICAgIC8vIFZhbGlkYXRlIHRoZSBpbWFnZSB1cmwgZXhpc3RzLlxuICAgICAgICAgICAgaWYgKCFpbWFnZVVybCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWxlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUcmFuc2Zvcm0gdGhlIGltYWdlIHVybCB0byBhIGZpbGUuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZmlsZUxvYWRlci5mcm9tRGF0YVVybChpbWFnZVVybCwgZmlsZS5uYW1lKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBXaGVuIHNvbWV0aGluZyBnb2VzIHdyb25nIHdlXG4gICAgICAgICAgICAvLyBqdXN0IHJldHVybiB0aGUgZGVmYXVsdCBmaWxlLlxuICAgICAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNyZWF0ZUltYWdlRWxlbWVudChkYXRhVXJsOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPEhUTUxJbWFnZUVsZW1lbnQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICBpbWFnZS5zcmMgPSBkYXRhVXJsO1xuICAgICAgICAgICAgaW1hZ2Uub25lcnJvciA9ICgpID0+IHJlamVjdCgnRXJyb3IgaW1hZ2UgY3JlYXRlJyk7XG4gICAgICAgICAgICBpbWFnZS5vbmFib3J0ID0gKCkgPT4gcmVqZWN0KCdBYm9ydCBpbWFnZSBjcmVhdGUnKTtcbiAgICAgICAgICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoaW1hZ2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyYW5zZm9ybUltYWdlID0gKGltYWdlOiBIVE1MSW1hZ2VFbGVtZW50LCB0eXBlOiBzdHJpbmcsIG9yaWVudGF0aW9uOiBudW1iZXIsIHF1YWxpdHk6IG51bWJlciA9IDEwMCkgPT4ge1xuICAgICAgICAvLyBDcmVhdGUgdGhlIGNhbnZhcyBhbmQgY29udGV4dC5cbiAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcblxuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgY29udGV4dCBleGlzdHMuXG4gICAgICAgIGlmICghY29udGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdGhlIGNhbnZhcyBzaXplIGJhc2VkIG9uIHRoZSBpbWFnZS5cbiAgICAgICAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gaW1hZ2U7XG4gICAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSBvcmllbnRhdGlvbiBpcyBjb3JyZWN0XG4gICAgICAgIC8vIGVsc2UgZmxpcCB0aGUgY2FudmFzIHNpemVzLlxuICAgICAgICBpZiAoNCA8IG9yaWVudGF0aW9uICYmIG9yaWVudGF0aW9uIDwgOSkge1xuICAgICAgICAgICAgY2FudmFzLndpZHRoID0gaGVpZ2h0O1xuICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IHdpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVHJhbnNmb3JtIHRoZSBjb250ZXh0IGJhc2VkIG9uIHRoZSBvcmllbnRhdGlvbi5cbiAgICAgICAgc3dpdGNoIChvcmllbnRhdGlvbikge1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIGNvbnRleHQudHJhbnNmb3JtKC0xLCAwLCAwLCAxLCB3aWR0aCwgMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgY29udGV4dC50cmFuc2Zvcm0oLTEsIDAsIDAsIC0xLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zZm9ybSgxLCAwLCAwLCAtMSwgMCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zZm9ybSgwLCAxLCAxLCAwLCAwLCAwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zZm9ybSgwLCAxLCAtMSwgMCwgaGVpZ2h0LCAwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zZm9ybSgwLCAtMSwgLTEsIDAsIGhlaWdodCwgd2lkdGgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgIGNvbnRleHQudHJhbnNmb3JtKDAsIC0xLCAxLCAwLCAwLCB3aWR0aCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRHJhdyB0aGUgaW1hZ2Ugb24gdGhlIGNvbnRleHQgYW5kIHJldHVybiB0aGUgZGF0YSBVUkwuXG4gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgcmV0dXJuIGNhbnZhcy50b0RhdGFVUkwodHlwZSwgcXVhbGl0eSAvIDEwMCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgZ2V0U3VwcG9ydGVkQ2FudmFzVHlwZSA9IChmaWxlVHlwZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZmlsZVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2ltYWdlL2pwZWcnOlxuICAgICAgICAgICAgY2FzZSAnaW1hZ2UvanBnJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2ltYWdlL2pwZWcnO1xuICAgICAgICAgICAgY2FzZSAnaW1hZ2UveC13aW5kb3dzLWJtcCc6XG4gICAgICAgICAgICBjYXNlICdpbWFnZS9ibXAnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaW1hZ2UvYm1wJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpbWFnZS9wbmcnO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgZ2V0T3JpZW50YXRpb24gPSAoYnVmZmVyOiBBcnJheUJ1ZmZlcikgPT4ge1xuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgZGF0YSB2aWV3LlxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7XG5cbiAgICAgICAgaWYgKHZpZXcuZ2V0VWludDE2KDAsIGZhbHNlKSAhPT0gMHhGRkQ4KSB7XG4gICAgICAgICAgICByZXR1cm4gLTI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsZW5ndGggPSB2aWV3LmJ5dGVMZW5ndGg7XG4gICAgICAgIGxldCBvZmZzZXQgPSAyO1xuXG4gICAgICAgIHdoaWxlIChvZmZzZXQgPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh2aWV3LmdldFVpbnQxNihvZmZzZXQgKyAyLCBmYWxzZSkgPD0gOCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbWFya2VyID0gdmlldy5nZXRVaW50MTYob2Zmc2V0LCBmYWxzZSk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gMjtcblxuICAgICAgICAgICAgaWYgKG1hcmtlciA9PT0gMHhGRkUxKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZpZXcuZ2V0VWludDMyKG9mZnNldCArPSAyLCBmYWxzZSkgIT09IDB4NDU3ODY5NjYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGxpdHRsZSA9IHZpZXcuZ2V0VWludDE2KG9mZnNldCArPSA2LCBmYWxzZSkgPT09IDB4NDk0OTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gdmlldy5nZXRVaW50MzIob2Zmc2V0ICsgNCwgbGl0dGxlKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSB2aWV3LmdldFVpbnQxNihvZmZzZXQsIGxpdHRsZSk7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDI7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGFnczsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmlldy5nZXRVaW50MTYob2Zmc2V0ICsgaW5kZXggKiAxMiwgbGl0dGxlKSA9PT0gMHgwMTEyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmlldy5nZXRVaW50MTYob2Zmc2V0ICsgaW5kZXggKiAxMiArIDgsIGxpdHRsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKChtYXJrZXIgJiAweEZGMDApICE9PSAweEZGMDApIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHZpZXcuZ2V0VWludDE2KG9mZnNldCwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH07XG5cbn1cbiJdfQ==
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpZi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9zcmMvbGliL2NvcmUvc2VydmljZXMvZXhpZi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFLekMsTUFBTSxPQUFPLElBQUk7SUFFTztJQUNBO0lBRHBCLFlBQW9CLFNBQW1CLEVBQ25CLFdBQXVCO1FBRHZCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7SUFDM0MsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBVSxFQUFFLFVBQWtCLEdBQUc7UUFDekMsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxrQ0FBa0M7UUFDbEMsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDRCxpREFBaUQ7WUFDakQsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvRCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXZELDJC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LENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxNQUFNLENBQUM7Z0JBQzdELE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRTdDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUM1QyxNQUFNLElBQUksQ0FBQyxDQUFDO2dCQUVaLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztvQkFDeEMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO3dCQUN6RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUMzRCxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO2lCQUFNLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQ3RDLE1BQU07WUFDVixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNkLENBQUMsQ0FBQzt1R0E1S08sSUFBSTsyR0FBSixJQUFJLGNBRkQsTUFBTTs7MkZBRVQsSUFBSTtrQkFIaEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZpbGVMb2FkZXJ9IGZyb20gJy4vZmlsZS1sb2FkZXIuc2VydmljZSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFeGlmIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9maWxlTG9hZGVyOiBGaWxlTG9hZGVyKSB7XG4gICAgfVxuXG4gICAgYXN5bmMgc3RyaXAoZmlsZTogRmlsZSwgcXVhbGl0eTogbnVtYmVyID0gMTAwKSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIHdlIGFyZSBvbiBhIGJyb3dzZXIuXG4gICAgICAgIGlmICghdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSBmaWxlIGV4aXN0cyBhbmQgaXNcbiAgICAgICAgLy8gYW4gaW5zdGFuY2Ugb2YgYSBGaWxlIG9iamVjdC5cbiAgICAgICAgaWYgKCFmaWxlIHx8ICEoZmlsZSBpbnN0YW5jZW9mIEZpbGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9ubHkganBlZyBpbWFnZXMgbmVlZCBjb3JyZWN0aW9uLlxuICAgICAgICBpZiAoIVsnaW1hZ2UvanBlZyddLmluY2x1ZGVzKGZpbGUudHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFJlYWQgdGhlIGZpbGUgYXMgYW4gYXJyYXkgYnVmZmVyIGFuZCBkYXRhIHVybC5cbiAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgdGhpcy5fZmlsZUxvYWRlci5hc0FycmF5QnVmZmVyKGZpbGUpO1xuICAgICAgICAgICAgY29uc3QgZGF0YVVybCA9IGF3YWl0IHRoaXMuX2ZpbGVMb2FkZXIuYXNEYXRhVXJsKGZpbGUpO1xuXG4gICAgICAgICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgZWxlbWVudC5cbiAgICAgICAgICAgIGNvbnN0IGltYWdlRWxlbWVudCA9IGF3YWl0IHRoaXMuY3JlYXRlSW1hZ2VFbGVtZW50KGRhdGFVcmwpO1xuXG4gICAgICAgICAgICAvLyBHZXQgdGhlIG9yaWVudGF0aW9uIGJ5IHVzaW5nIHRoZSBidWZmZXIuXG4gICAgICAgICAgICBjb25zdCBvcmllbnRhdGlvbiA9IHRoaXMuZ2V0T3JpZW50YXRpb24oYXJyYXlCdWZmZXIpO1xuXG4gICAgICAgICAgICAvLyBUcmFuc2Zvcm0gdGhlIGltYWdlIHRvIHJlbW92ZSB0aGUgb3JpZW50YXRpb24uXG4gICAgICAgICAgICBjb25zdCBjYW52YXNUeXBlID0gdGhpcy5nZXRTdXBwb3J0ZWRDYW52YXNUeXBlKGZpbGUudHlwZSk7XG4gICAgICAgICAgICBjb25zdCBpbWFnZVVybCA9IHRoaXMudHJhbnNmb3JtSW1hZ2UoaW1hZ2VFbGVtZW50LCBjYW52YXNUeXBlLCBvcmllbnRhdGlvbiwgcXVhbGl0eSk7XG5cbiAgICAgICAgICAgIC8vIFZhbGlkYXRlIHRoZSBpbWFnZSB1cmwgZXhpc3RzLlxuICAgICAgICAgICAgaWYgKCFpbWFnZVVybCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWxlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUcmFuc2Zvcm0gdGhlIGltYWdlIHVybCB0byBhIGZpbGUuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZmlsZUxvYWRlci5mcm9tRGF0YVVybChpbWFnZVVybCwgZmlsZS5uYW1lKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBXaGVuIHNvbWV0aGluZyBnb2VzIHdyb25nIHdlXG4gICAgICAgICAgICAvLyBqdXN0IHJldHVybiB0aGUgZGVmYXVsdCBmaWxlLlxuICAgICAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNyZWF0ZUltYWdlRWxlbWVudChkYXRhVXJsOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPEhUTUxJbWFnZUVsZW1lbnQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICBpbWFnZS5zcmMgPSBkYXRhVXJsO1xuICAgICAgICAgICAgaW1hZ2Uub25lcnJvciA9ICgpID0+IHJlamVjdCgnRXJyb3IgaW1hZ2UgY3JlYXRlJyk7XG4gICAgICAgICAgICBpbWFnZS5vbmFib3J0ID0gKCkgPT4gcmVqZWN0KCdBYm9ydCBpbWFnZSBjcmVhdGUnKTtcbiAgICAgICAgICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoaW1hZ2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyYW5zZm9ybUltYWdlID0gKGltYWdlOiBIVE1MSW1hZ2VFbGVtZW50LCB0eXBlOiBzdHJpbmcsIG9yaWVudGF0aW9uOiBudW1iZXIsIHF1YWxpdHk6IG51bWJlciA9IDEwMCkgPT4ge1xuICAgICAgICAvLyBDcmVhdGUgdGhlIGNhbnZhcyBhbmQgY29udGV4dC5cbiAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcblxuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgY29udGV4dCBleGlzdHMuXG4gICAgICAgIGlmICghY29udGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdGhlIGNhbnZhcyBzaXplIGJhc2VkIG9uIHRoZSBpbWFnZS5cbiAgICAgICAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gaW1hZ2U7XG4gICAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSBvcmllbnRhdGlvbiBpcyBjb3JyZWN0XG4gICAgICAgIC8vIGVsc2UgZmxpcCB0aGUgY2FudmFzIHNpemVzLlxuICAgICAgICBpZiAoNCA8IG9yaWVudGF0aW9uICYmIG9yaWVudGF0aW9uIDwgOSkge1xuICAgICAgICAgICAgY2FudmFzLndpZHRoID0gaGVpZ2h0O1xuICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IHdpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVHJhbnNmb3JtIHRoZSBjb250ZXh0IGJhc2VkIG9uIHRoZSBvcmllbnRhdGlvbi5cbiAgICAgICAgc3dpdGNoIChvcmllbnRhdGlvbikge1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIGNvbnRleHQudHJhbnNmb3JtKC0xLCAwLCAwLCAxLCB3aWR0aCwgMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgY29udGV4dC50cmFuc2Zvcm0oLTEsIDAsIDAsIC0xLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zZm9ybSgxLCAwLCAwLCAtMSwgMCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zZm9ybSgwLCAxLCAxLCAwLCAwLCAwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zZm9ybSgwLCAxLCAtMSwgMCwgaGVpZ2h0LCAwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zZm9ybSgwLCAtMSwgLTEsIDAsIGhlaWdodCwgd2lkdGgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgIGNvbnRleHQudHJhbnNmb3JtKDAsIC0xLCAxLCAwLCAwLCB3aWR0aCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRHJhdyB0aGUgaW1hZ2Ugb24gdGhlIGNvbnRleHQgYW5kIHJldHVybiB0aGUgZGF0YSBVUkwuXG4gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgcmV0dXJuIGNhbnZhcy50b0RhdGFVUkwodHlwZSwgcXVhbGl0eSAvIDEwMCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgZ2V0U3VwcG9ydGVkQ2FudmFzVHlwZSA9IChmaWxlVHlwZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZmlsZVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2ltYWdlL2pwZWcnOlxuICAgICAgICAgICAgY2FzZSAnaW1hZ2UvanBnJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2ltYWdlL2pwZWcnO1xuICAgICAgICAgICAgY2FzZSAnaW1hZ2UveC13aW5kb3dzLWJtcCc6XG4gICAgICAgICAgICBjYXNlICdpbWFnZS9ibXAnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaW1hZ2UvYm1wJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpbWFnZS9wbmcnO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgZ2V0T3JpZW50YXRpb24gPSAoYnVmZmVyOiBBcnJheUJ1ZmZlcikgPT4ge1xuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgZGF0YSB2aWV3LlxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7XG5cbiAgICAgICAgaWYgKHZpZXcuZ2V0VWludDE2KDAsIGZhbHNlKSAhPT0gMHhGRkQ4KSB7XG4gICAgICAgICAgICByZXR1cm4gLTI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsZW5ndGggPSB2aWV3LmJ5dGVMZW5ndGg7XG4gICAgICAgIGxldCBvZmZzZXQgPSAyO1xuXG4gICAgICAgIHdoaWxlIChvZmZzZXQgPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh2aWV3LmdldFVpbnQxNihvZmZzZXQgKyAyLCBmYWxzZSkgPD0gOCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbWFya2VyID0gdmlldy5nZXRVaW50MTYob2Zmc2V0LCBmYWxzZSk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gMjtcblxuICAgICAgICAgICAgaWYgKG1hcmtlciA9PT0gMHhGRkUxKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZpZXcuZ2V0VWludDMyKG9mZnNldCArPSAyLCBmYWxzZSkgIT09IDB4NDU3ODY5NjYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGxpdHRsZSA9IHZpZXcuZ2V0VWludDE2KG9mZnNldCArPSA2LCBmYWxzZSkgPT09IDB4NDk0OTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gdmlldy5nZXRVaW50MzIob2Zmc2V0ICsgNCwgbGl0dGxlKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSB2aWV3LmdldFVpbnQxNihvZmZzZXQsIGxpdHRsZSk7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDI7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGFnczsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmlldy5nZXRVaW50MTYob2Zmc2V0ICsgaW5kZXggKiAxMiwgbGl0dGxlKSA9PT0gMHgwMTEyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmlldy5nZXRVaW50MTYob2Zmc2V0ICsgaW5kZXggKiAxMiArIDgsIGxpdHRsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKChtYXJrZXIgJiAweEZGMDApICE9PSAweEZGMDApIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHZpZXcuZ2V0VWludDE2KG9mZnNldCwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH07XG5cbn1cbiJdfQ==
|
|
@@ -1,20 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class FileLoader {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.isFile = (input) => {
|
|
6
|
-
return 'File' in window && input instanceof File;
|
|
7
|
-
};
|
|
8
|
-
this.isBlob = (input) => {
|
|
9
|
-
return 'Blob' in window && input instanceof Blob;
|
|
10
|
-
};
|
|
11
|
-
this.blobToFile = (blob, fileName) => {
|
|
12
|
-
const anyBlob = blob;
|
|
13
|
-
anyBlob.lastModifiedDate = new Date();
|
|
14
|
-
anyBlob.name = fileName;
|
|
15
|
-
return anyBlob;
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
4
|
fromDataUrl(value, name = 'file') {
|
|
19
5
|
if (!value) {
|
|
20
6
|
return null;
|
|
@@ -68,6 +54,12 @@ export class FileLoader {
|
|
|
68
54
|
}
|
|
69
55
|
});
|
|
70
56
|
}
|
|
57
|
+
isFile = (input) => {
|
|
58
|
+
return 'File' in window && input instanceof File;
|
|
59
|
+
};
|
|
60
|
+
isBlob = (input) => {
|
|
61
|
+
return 'Blob' in window && input instanceof Blob;
|
|
62
|
+
};
|
|
71
63
|
createFile(blob, name) {
|
|
72
64
|
if (!navigator['msSaveBlob']) {
|
|
73
65
|
return new File([blob], name, { lastModified: Date.now(), type: blob?.type });
|
|
@@ -75,8 +67,14 @@ export class FileLoader {
|
|
|
75
67
|
const blobFile = new Blob([blob], { type: blob?.type });
|
|
76
68
|
return this.blobToFile(blobFile, name);
|
|
77
69
|
}
|
|
78
|
-
|
|
79
|
-
|
|
70
|
+
blobToFile = (blob, fileName) => {
|
|
71
|
+
const anyBlob = blob;
|
|
72
|
+
anyBlob.lastModifiedDate = new Date();
|
|
73
|
+
anyBlob.name = fileName;
|
|
74
|
+
return anyBlob;
|
|
75
|
+
};
|
|
76
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FileLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
77
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FileLoader, providedIn: 'root' });
|
|
80
78
|
}
|
|
81
79
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FileLoader, decorators: [{
|
|
82
80
|
type: Injectable,
|
|
@@ -84,4 +82,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
84
82
|
providedIn: 'root'
|
|
85
83
|
}]
|
|
86
84
|
}] });
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1sb2FkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2ZpbGUtbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFLekMsTUFBTSxPQUFPLFVBQVU7SUFFbkIsV0FBVyxDQUFDLEtBQWEsRUFBRSxPQUFlLE1BQU07UUFDNUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQUksQ0FBQztZQUNELHNEQUFzRDtZQUN0RCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVwRCxtQ0FBbUM7WUFDbkMsTUFBTSxVQUFVLEdBQUcsS0FBSztpQkFDbkIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDYixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNiLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVuQixtREFBbUQ7WUFDbkQsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQy9DLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ3JELFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLEtB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QztRQUN0RCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTyxVQUFVLEdBQUcsQ0FBQyxJQUFVLEVBQUUsUUFBZ0IsRUFBRSxFQUFFO1FBQ2xELE1BQU0sT0FBTyxHQUFRLElBQUksQ0FBQztRQUMxQixPQUFPLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN0QyxPQUFPLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUN4QixPQUFPLE9BQWUsQ0FBQztJQUMzQixDQUFDLENBQUM7dUdBdEZPLFVBQVU7MkdBQVYsVUFBVSxjQUZQLE1BQU07OzJGQUVULFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGaWxlTG9hZGVyIHtcblxuICAgIGZyb21EYXRhVXJsKHZhbHVlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyA9ICdmaWxlJykge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBDb252ZXJ0IGJhc2U2NCB0byByYXcgYmluYXJ5IGRhdGEgaGVsZCBpbiBhIHN0cmluZy5cbiAgICAgICAgICAgIGNvbnN0IGJ5dGVTdHJpbmcgPSB3aW5kb3cuYXRvYih2YWx1ZS5zcGxpdCgnLCcpWzFdKTtcblxuICAgICAgICAgICAgLy8gU2VwYXJhdGUgb3V0IHRoZSBtaW1lIGNvbXBvbmVudC5cbiAgICAgICAgICAgIGNvbnN0IG1pbWVTdHJpbmcgPSB2YWx1ZVxuICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpWzBdXG4gICAgICAgICAgICAgICAgLnNwbGl0KCc6JylbMV1cbiAgICAgICAgICAgICAgICAuc3BsaXQoJzsnKVswXTtcblxuICAgICAgICAgICAgLy8gV3JpdGUgdGhlIGJ5dGVzIG9mIHRoZSBzdHJpbmcgdG8gYW4gQXJyYXlCdWZmZXIuXG4gICAgICAgICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlU3RyaW5nLmxlbmd0aCk7XG4gICAgICAgICAgICBjb25zdCB1aW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpO1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGJ5dGVTdHJpbmcubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgdWludDhBcnJheVtpbmRleF0gPSBieXRlU3RyaW5nLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBkYXRhVmlldyA9IG5ldyBEYXRhVmlldyhhcnJheUJ1ZmZlcik7XG4gICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2RhdGFWaWV3LmJ1ZmZlcl0sIHt0eXBlOiBtaW1lU3RyaW5nfSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZpbGUoYmxvYiwgbmFtZSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc0RhdGFVcmwoZmlsZTogRmlsZSB8IEJsb2IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZDxzdHJpbmc+KGZpbGUsICdkYXRhdXJsJyk7XG4gICAgfVxuXG4gICAgYXNBcnJheUJ1ZmZlcihmaWxlOiBGaWxlIHwgQmxvYikge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkPEFycmF5QnVmZmVyPihmaWxlLCAnYXJyYXlidWZmZXInKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHJlYWQ8VCA9IHN0cmluZyB8IEFycmF5QnVmZmVyPihmaWxlOiBGaWxlIHwgQmxvYiwgdHlwZTogJ2RhdGF1cmwnIHwgJ2FycmF5YnVmZmVyJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8VD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNGaWxlTGlrZSA9IHRoaXMuaXNGaWxlKGZpbGUpIHx8IHRoaXMuaXNCbG9iKGZpbGUpO1xuICAgICAgICAgICAgaWYgKCFmaWxlIHx8ICFpc0ZpbGVMaWtlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdCgnSW52YWxpZCBmaWxlJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXIub25lcnJvciA9ICgpID0+IHJlamVjdCgnRXJyb3IgZmlsZSByZWFkJyk7XG4gICAgICAgICAgICByZWFkZXIub25hYm9ydCA9ICgpID0+IHJlamVjdCgnQWJvcnQgZmlsZSByZWFkJyk7XG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlYWRlci5yZXN1bHQgYXMgdW5rbm93bjtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXN1bHQgYXMgVCk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2RhdGF1cmwnKSB7XG4gICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhcnJheWJ1ZmZlcicpIHtcbiAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaWxlID0gKGlucHV0OiB1bmtub3duKSA9PiB7XG4gICAgICAgIHJldHVybiAnRmlsZScgaW4gd2luZG93ICYmIGlucHV0IGluc3RhbmNlb2YgRmlsZTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBpc0Jsb2IgPSAoaW5wdXQ6IHVua25vd24pID0+IHtcbiAgICAgICAgcmV0dXJuICdCbG9iJyBpbiB3aW5kb3cgJiYgaW5wdXQgaW5zdGFuY2VvZiBCbG9iO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGNyZWF0ZUZpbGUoYmxvYjogQmxvYiwgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghbmF2aWdhdG9yWydtc1NhdmVCbG9iJ10pIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZShbYmxvYl0sIG5hbWUsIHtsYXN0TW9kaWZpZWQ6IERhdGUubm93KCksIHR5cGU6IGJsb2I/LnR5cGV9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJsb2JGaWxlID0gbmV3IEJsb2IoW2Jsb2JdLCB7dHlwZTogYmxvYj8udHlwZX0pO1xuICAgICAgICByZXR1cm4gdGhpcy5ibG9iVG9GaWxlKGJsb2JGaWxlLCBuYW1lKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJsb2JUb0ZpbGUgPSAoYmxvYjogQmxvYiwgZmlsZU5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBhbnlCbG9iOiBhbnkgPSBibG9iO1xuICAgICAgICBhbnlCbG9iLmxhc3RNb2RpZmllZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBhbnlCbG9iLm5hbWUgPSBmaWxlTmFtZTtcbiAgICAgICAgcmV0dXJuIGFueUJsb2IgYXMgRmlsZTtcbiAgICB9O1xuXG59XG4iXX0=
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { inject, Injectable, RendererFactory2 } from '@angular/core';
|
|
2
|
+
import { Platform } from '@angular/cdk/platform';
|
|
2
3
|
import { WINDOW } from '../tokens/window.token';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/cdk/platform";
|
|
5
5
|
export class Files {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
this._window = _window;
|
|
10
|
-
this._renderer = this._rendererFactory.createRenderer(null, null);
|
|
11
|
-
}
|
|
6
|
+
_platform = inject(Platform);
|
|
7
|
+
_renderer = inject(RendererFactory2).createRenderer(null, null);
|
|
8
|
+
_window = inject(WINDOW, { optional: true });
|
|
12
9
|
download(blobOrFile, name) {
|
|
13
10
|
if (!this._platform.isBrowser) {
|
|
14
11
|
return;
|
|
@@ -69,18 +66,13 @@ export class Files {
|
|
|
69
66
|
anchor.click();
|
|
70
67
|
}
|
|
71
68
|
}
|
|
72
|
-
static
|
|
73
|
-
static
|
|
69
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: Files, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
70
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: Files, providedIn: 'root' });
|
|
74
71
|
}
|
|
75
72
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: Files, decorators: [{
|
|
76
73
|
type: Injectable,
|
|
77
74
|
args: [{
|
|
78
75
|
providedIn: 'root'
|
|
79
76
|
}]
|
|
80
|
-
}]
|
|
81
|
-
|
|
82
|
-
}, {
|
|
83
|
-
type: Inject,
|
|
84
|
-
args: [WINDOW]
|
|
85
|
-
}] }] });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2ZpbGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUU3RSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7OztBQUs5QyxNQUFNLE9BQU8sS0FBSztJQUlkLFlBQW9CLFNBQW1CLEVBQ25CLGdCQUFrQyxFQUNOLE9BQWU7UUFGM0MsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ04sWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUo5QyxjQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFLOUUsQ0FBQztJQUlELFFBQVEsQ0FBQyxVQUF1QixFQUFFLElBQWE7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDNUIsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQWUsRUFBRSxJQUFZO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNYLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FB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LENBQUM7SUFDbEQsQ0FBQztJQUVPLFdBQVcsQ0FBQyxNQUF5QjtRQUN6QyxJQUFJLENBQUM7WUFDRCxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNMLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0wsQ0FBQzs4R0EvRVEsS0FBSywwRUFNa0IsTUFBTTtrSEFON0IsS0FBSyxjQUZGLE1BQU07OzJGQUVULEtBQUs7a0JBSGpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFPZ0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsLCBSZW5kZXJlckZhY3RvcnkyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGxhdGZvcm19IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQge1dJTkRPV30gZnJvbSAnLi4vdG9rZW5zL3dpbmRvdy50b2tlbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRmlsZXMge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVuZGVyZXIgPSB0aGlzLl9yZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9wbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoV0lORE9XKSBwcml2YXRlIF93aW5kb3c6IFdpbmRvdykge1xuICAgIH1cblxuICAgIGRvd25sb2FkKGZpbGU6IEZpbGUsIG5hbWU/OiBzdHJpbmcpOiB2b2lkO1xuICAgIGRvd25sb2FkKGJsb2I6IEJsb2IsIG5hbWU6IHN0cmluZyk6IHZvaWQ7XG4gICAgZG93bmxvYWQoYmxvYk9yRmlsZTogRmlsZSB8IEJsb2IsIG5hbWU/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFuY2hvciA9IHRoaXMuY3JlYXRlQW5jaG9yRWxlbWVudChibG9iT3JGaWxlLCBuYW1lKTtcbiAgICAgICAgdGhpcy5yZXZva2VVcmxBbmRQcmVzc0FuY2hvcihhbmNob3IpO1xuICAgIH1cblxuICAgIGZyb21EYXRhVXJpKGRhdGFVcmk6IHN0cmluZywgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghZGF0YVVyaSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgYnl0ZVN0cmluZyA9IHRoaXMuX3dpbmRvdy5hdG9iKGRhdGFVcmkuc3BsaXQoJywnKVsxXSk7XG5cbiAgICAgICAgICAgIC8vIFNlcGFyYXRlIG91dCB0aGUgbWltZSBjb21wb25lbnQuXG4gICAgICAgICAgICBjb25zdCBtaW1lU3RyaW5nID0gZGF0YVVyaVxuICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpWzBdXG4gICAgICAgICAgICAgICAgLnNwbGl0KCc6JylbMV1cbiAgICAgICAgICAgICAgICAuc3BsaXQoJzsnKVswXTtcblxuICAgICAgICAgICAgLy8gV3JpdGUgdGhlIGJ5dGVzIG9mIHRoZSBzdHJpbmcgdG8gYW4gQXJyYXlCdWZmZXIuXG4gICAgICAgICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlU3RyaW5nLmxlbmd0aCk7XG4gICAgICAgICAgICBjb25zdCB1aW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpO1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGJ5dGVTdHJpbmcubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgdWludDhBcnJheVtpbmRleF0gPSBieXRlU3RyaW5nLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBkYXRhVmlldyA9IG5ldyBEYXRhVmlldyhhcnJheUJ1ZmZlcik7XG4gICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2RhdGFWaWV3LmJ1ZmZlcl0sIHt0eXBlOiBtaW1lU3RyaW5nfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGUoYmxvYiwgbmFtZSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGUoYmxvYjogQmxvYiwgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghbmF2aWdhdG9yWydtc1NhdmVCbG9iJ10pIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZShbYmxvYl0sIG5hbWUsIHtsYXN0TW9kaWZpZWQ6IERhdGUubm93KCksIHR5cGU6IGJsb2I/LnR5cGV9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFueUJsb2I6IGFueSA9IG5ldyBCbG9iKFtibG9iXSwge3R5cGU6IGJsb2I/LnR5cGV9KTtcbiAgICAgICAgYW55QmxvYi5sYXN0TW9kaWZpZWREYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgYW55QmxvYi5uYW1lID0gbmFtZTtcbiAgICAgICAgcmV0dXJuIGFueUJsb2IgYXMgRmlsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUFuY2hvckVsZW1lbnQoYmxvYk9yRmlsZTogRmlsZSB8IEJsb2IsIG5hbWU/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgYW5jaG9yID0gdGhpcy5fcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eShhbmNob3IsICdkb3dubG9hZCcsIG5hbWUgPz8gYmxvYk9yRmlsZT8uWyduYW1lJ10pO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eShhbmNob3IsICdyZWwnLCAnbm9vcGVuZXInKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkoYW5jaG9yLCAnaHJlZicsIFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYk9yRmlsZSkpO1xuICAgICAgICByZXR1cm4gYW5jaG9yO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmV2b2tlVXJsQW5kUHJlc3NBbmNob3IoYW5jaG9yOiBIVE1MQW5jaG9yRWxlbWVudCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IFVSTC5yZXZva2VPYmplY3RVUkwoYW5jaG9yPy5ocmVmKSwgNDBfMDAwKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnByZXNzQW5jaG9yKGFuY2hvciksIDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJlc3NBbmNob3IoYW5jaG9yOiBIVE1MQW5jaG9yRWxlbWVudCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYW5jaG9yLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ2NsaWNrJykpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGFuY2hvci5jbGljaygpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
|
|
77
|
+
}] });
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2ZpbGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQWEsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7QUFLOUMsTUFBTSxPQUFPLEtBQUs7SUFFRyxTQUFTLEdBQWEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLFNBQVMsR0FBYyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNFLE9BQU8sR0FBVyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFJcEUsUUFBUSxDQUFDLFVBQXVCLEVBQUUsSUFBYTtRQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM1QixPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBZSxFQUFFLElBQVk7UUFDckMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ1gsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQUksQ0FBQztZQUNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENB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QyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sV0FBVyxDQUFDLE1BQXlCO1FBQ3pDLElBQUksQ0FBQztZQUNELE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ0wsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDTCxDQUFDO3VHQTVFUSxLQUFLOzJHQUFMLEtBQUssY0FGRixNQUFNOzsyRkFFVCxLQUFLO2tCQUhqQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0LCBJbmplY3RhYmxlLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQbGF0Zm9ybX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7V0lORE9XfSBmcm9tICcuLi90b2tlbnMvd2luZG93LnRva2VuJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGaWxlcyB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wbGF0Zm9ybTogUGxhdGZvcm0gPSBpbmplY3QoUGxhdGZvcm0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVyOiBSZW5kZXJlcjIgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5MikuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfd2luZG93OiBXaW5kb3cgPSBpbmplY3QoV0lORE9XLCB7b3B0aW9uYWw6IHRydWV9KTtcblxuICAgIGRvd25sb2FkKGZpbGU6IEZpbGUsIG5hbWU/OiBzdHJpbmcpOiB2b2lkO1xuICAgIGRvd25sb2FkKGJsb2I6IEJsb2IsIG5hbWU6IHN0cmluZyk6IHZvaWQ7XG4gICAgZG93bmxvYWQoYmxvYk9yRmlsZTogRmlsZSB8IEJsb2IsIG5hbWU/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFuY2hvciA9IHRoaXMuY3JlYXRlQW5jaG9yRWxlbWVudChibG9iT3JGaWxlLCBuYW1lKTtcbiAgICAgICAgdGhpcy5yZXZva2VVcmxBbmRQcmVzc0FuY2hvcihhbmNob3IpO1xuICAgIH1cblxuICAgIGZyb21EYXRhVXJpKGRhdGFVcmk6IHN0cmluZywgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghZGF0YVVyaSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgYnl0ZVN0cmluZyA9IHRoaXMuX3dpbmRvdy5hdG9iKGRhdGFVcmkuc3BsaXQoJywnKVsxXSk7XG5cbiAgICAgICAgICAgIC8vIFNlcGFyYXRlIG91dCB0aGUgbWltZSBjb21wb25lbnQuXG4gICAgICAgICAgICBjb25zdCBtaW1lU3RyaW5nID0gZGF0YVVyaVxuICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpWzBdXG4gICAgICAgICAgICAgICAgLnNwbGl0KCc6JylbMV1cbiAgICAgICAgICAgICAgICAuc3BsaXQoJzsnKVswXTtcblxuICAgICAgICAgICAgLy8gV3JpdGUgdGhlIGJ5dGVzIG9mIHRoZSBzdHJpbmcgdG8gYW4gQXJyYXlCdWZmZXIuXG4gICAgICAgICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlU3RyaW5nLmxlbmd0aCk7XG4gICAgICAgICAgICBjb25zdCB1aW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpO1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGJ5dGVTdHJpbmcubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgdWludDhBcnJheVtpbmRleF0gPSBieXRlU3RyaW5nLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBkYXRhVmlldyA9IG5ldyBEYXRhVmlldyhhcnJheUJ1ZmZlcik7XG4gICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2RhdGFWaWV3LmJ1ZmZlcl0sIHt0eXBlOiBtaW1lU3RyaW5nfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGUoYmxvYiwgbmFtZSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGUoYmxvYjogQmxvYiwgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghbmF2aWdhdG9yWydtc1NhdmVCbG9iJ10pIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZShbYmxvYl0sIG5hbWUsIHtsYXN0TW9kaWZpZWQ6IERhdGUubm93KCksIHR5cGU6IGJsb2I/LnR5cGV9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFueUJsb2I6IGFueSA9IG5ldyBCbG9iKFtibG9iXSwge3R5cGU6IGJsb2I/LnR5cGV9KTtcbiAgICAgICAgYW55QmxvYi5sYXN0TW9kaWZpZWREYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgYW55QmxvYi5uYW1lID0gbmFtZTtcbiAgICAgICAgcmV0dXJuIGFueUJsb2IgYXMgRmlsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUFuY2hvckVsZW1lbnQoYmxvYk9yRmlsZTogRmlsZSB8IEJsb2IsIG5hbWU/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgYW5jaG9yID0gdGhpcy5fcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eShhbmNob3IsICdkb3dubG9hZCcsIG5hbWUgPz8gYmxvYk9yRmlsZT8uWyduYW1lJ10pO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eShhbmNob3IsICdyZWwnLCAnbm9vcGVuZXInKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkoYW5jaG9yLCAnaHJlZicsIFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYk9yRmlsZSkpO1xuICAgICAgICByZXR1cm4gYW5jaG9yO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmV2b2tlVXJsQW5kUHJlc3NBbmNob3IoYW5jaG9yOiBIVE1MQW5jaG9yRWxlbWVudCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IFVSTC5yZXZva2VPYmplY3RVUkwoYW5jaG9yPy5ocmVmKSwgNDBfMDAwKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnByZXNzQW5jaG9yKGFuY2hvciksIDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJlc3NBbmNob3IoYW5jaG9yOiBIVE1MQW5jaG9yRWxlbWVudCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYW5jaG9yLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoJ2NsaWNrJykpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGFuY2hvci5jbGljaygpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
|