@c8y/ngx-components 1018.503.1 → 1018.503.22
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/core/common/ApplicationOptions.d.ts +4 -2
- package/core/common/files.service.d.ts +10 -2
- package/core/common/global-config.service.d.ts +1 -1
- package/core/common/permissions.service.d.ts +67 -0
- package/core/common/tenant-ui.service.d.ts +1 -1
- package/core/i18n/pattern-messages.data.d.ts +20 -20
- package/esm2020/assets-navigator/asset-node.service.mjs +5 -4
- package/esm2020/auth-configuration/auth-configuration.guard.mjs +5 -2
- package/esm2020/auth-configuration/factories/navigation.factory.mjs +3 -3
- package/esm2020/cockpit-config/cockpit-config.guard.mjs +2 -2
- package/esm2020/cockpit-config/cockpit-config.service.mjs +2 -2
- package/esm2020/context-dashboard/add-dashboard.factory.mjs +6 -3
- package/esm2020/context-dashboard/context-dashboard.component.mjs +2 -2
- package/esm2020/context-dashboard/context-dashboard.service.mjs +3 -3
- package/esm2020/context-dashboard/dashboard-detail.component.mjs +2 -2
- package/esm2020/context-dashboard/report-dashboard/report-dashboard-list.component.mjs +3 -3
- package/esm2020/core/common/ApplicationOptions.mjs +1 -1
- package/esm2020/core/common/files.service.mjs +20 -4
- package/esm2020/core/common/global-config.service.mjs +7 -2
- package/esm2020/core/common/permissions.service.mjs +68 -1
- package/esm2020/core/common/tenant-ui.service.mjs +3 -2
- package/esm2020/core/common/user-preferences/user-preferences.service.mjs +6 -2
- package/esm2020/core/docs/support-outlet/support-outlet.component.mjs +3 -2
- package/esm2020/core/drop-area/drop-area.component.mjs +3 -1
- package/esm2020/core/i18n/pattern-messages.data.mjs +21 -21
- package/esm2020/core/setup/setup.service.mjs +2 -2
- package/esm2020/ecosystem/application-properties/application-properties.component.mjs +2 -2
- package/esm2020/ecosystem/application-properties/subscription-modal/subscription-modal.component.mjs +3 -3
- package/esm2020/ecosystem/ecosystem-navigation.factory.mjs +3 -3
- package/esm2020/ecosystem/packages/package-list/packages-list.component.mjs +2 -2
- package/esm2020/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.mjs +2 -2
- package/esm2020/files-repository/files-repository.guard.mjs +5 -3
- package/esm2020/location/location.component.mjs +20 -13
- package/esm2020/map/cluster-map.component.mjs +19 -11
- package/esm2020/map/cluster-map.mjs +8 -3
- package/esm2020/map/map-status.component.mjs +19 -5
- package/esm2020/map/map.component.mjs +10 -10
- package/esm2020/map/map.model.mjs +1 -19
- package/esm2020/map/map.service.mjs +24 -1
- package/esm2020/protocol-lwm2m/components/bootstrap-parameters/lwm2m-bootstrap-parameters.component.mjs +2 -2
- package/esm2020/protocol-lwm2m/components/configuration/typed-forms/form-wrapper-base.component.mjs +2 -2
- package/esm2020/register-device/register-device-navigation.factory.mjs +3 -3
- package/esm2020/replace-device/replace-device.service.mjs +5 -5
- package/esm2020/reports/export-schedules.component.mjs +3 -3
- package/esm2020/repository/configuration/device-tab/configuration-preview.component.mjs +4 -4
- package/esm2020/sms-gateway/sms-gateway.guard.mjs +2 -2
- package/esm2020/sms-gateway/sms-gateway.module.mjs +6 -6
- package/esm2020/sub-assets/add-group/add-group.component.mjs +2 -2
- package/esm2020/sub-assets/asset-properties-item.component.mjs +6 -6
- package/esm2020/sub-assets/groups.component.mjs +2 -2
- package/esm2020/sub-assets/sub-assets.component.mjs +2 -2
- package/esm2020/sub-assets/sub-assets.service.mjs +16 -10
- package/esm2020/tenants/tenant-list/tenant-list.component.mjs +12 -7
- package/esm2020/upgrade/ng1/downgraded.services.mjs +3 -2
- package/esm2020/upgrade/ng1/index.mjs +4 -3
- package/esm2020/widgets/cockpit/index.mjs +1 -1
- package/esm2020/widgets/device-management/index.mjs +1 -1
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs +4 -3
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-auth-configuration.mjs +7 -4
- package/fesm2015/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-cockpit-config.mjs +3 -3
- package/fesm2015/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs +12 -9
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-ecosystem.mjs +8 -8
- package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-files-repository.mjs +5 -3
- package/fesm2015/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-location.mjs +20 -13
- package/fesm2015/c8y-ngx-components-location.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-map.mjs +174 -142
- package/fesm2015/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs +2 -2
- package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs +1 -1
- package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-register-device.mjs +3 -3
- package/fesm2015/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-replace-device.mjs +5 -5
- package/fesm2015/c8y-ngx-components-replace-device.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-reports.mjs +2 -2
- package/fesm2015/c8y-ngx-components-reports.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-repository-configuration.mjs +3 -3
- package/fesm2015/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-sms-gateway.mjs +6 -6
- package/fesm2015/c8y-ngx-components-sms-gateway.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-sub-assets.mjs +24 -18
- package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-tenants.mjs +11 -6
- package/fesm2015/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-upgrade.mjs +4 -2
- package/fesm2015/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-widgets-device-management.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +121 -28
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs +4 -3
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-auth-configuration.mjs +7 -4
- package/fesm2020/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-cockpit-config.mjs +3 -3
- package/fesm2020/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs +12 -9
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem.mjs +8 -8
- package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-files-repository.mjs +5 -3
- package/fesm2020/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-location.mjs +20 -13
- package/fesm2020/c8y-ngx-components-location.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-map.mjs +174 -142
- package/fesm2020/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs +2 -2
- package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs +1 -1
- package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-register-device.mjs +3 -3
- package/fesm2020/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-replace-device.mjs +5 -5
- package/fesm2020/c8y-ngx-components-replace-device.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-reports.mjs +2 -2
- package/fesm2020/c8y-ngx-components-reports.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-repository-configuration.mjs +3 -3
- package/fesm2020/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-sms-gateway.mjs +6 -6
- package/fesm2020/c8y-ngx-components-sms-gateway.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-sub-assets.mjs +24 -18
- package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-tenants.mjs +11 -6
- package/fesm2020/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-upgrade.mjs +4 -2
- package/fesm2020/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-widgets-device-management.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +121 -28
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/locales/locales.pot +3 -0
- package/location/location.component.d.ts +2 -2
- package/map/cluster-map.component.d.ts +3 -1
- package/map/map-status.component.d.ts +12 -1
- package/map/map.component.d.ts +1 -1
- package/map/map.model.d.ts +0 -1
- package/map/map.service.d.ts +6 -0
- package/package.json +1 -1
- package/tenants/tenant-list/tenant-list.component.d.ts +4 -2
- package/upgrade/ng1/downgraded.services.d.ts +1 -0
- package/widgets/cockpit/index.d.ts +2 -1
- package/widgets/device-management/index.d.ts +2 -1
|
@@ -5,6 +5,7 @@ import { filter, first, map, switchMap } from 'rxjs/operators';
|
|
|
5
5
|
import { AppStateService } from '../ui-state.service';
|
|
6
6
|
import { UserPreferencesStorageLocal } from './user-preferences-storage-local';
|
|
7
7
|
import { UserPreferencesStorageInventory } from './user-preferences-store-inventory';
|
|
8
|
+
import { Permissions } from '../permissions.service';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
import * as i1 from "@c8y/client";
|
|
10
11
|
import * as i2 from "../ui-state.service";
|
|
@@ -89,7 +90,10 @@ export class UserPreferencesService {
|
|
|
89
90
|
* @returns A proper storage.
|
|
90
91
|
*/
|
|
91
92
|
getStorage(user) {
|
|
92
|
-
return this.user.hasAllRoles(user, [
|
|
93
|
+
return this.user.hasAllRoles(user, [
|
|
94
|
+
Permissions.ROLE_INVENTORY_READ,
|
|
95
|
+
Permissions.ROLE_INVENTORY_ADMIN
|
|
96
|
+
])
|
|
93
97
|
? this.storage.inventory
|
|
94
98
|
: this.storage.local;
|
|
95
99
|
}
|
|
@@ -100,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
100
104
|
type: Injectable,
|
|
101
105
|
args: [{ providedIn: 'root' }]
|
|
102
106
|
}], ctorParameters: function () { return [{ type: i1.UserService }, { type: i1.InventoryService }, { type: i2.AppStateService }]; } });
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcmVmZXJlbmNlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29yZS9jb21tb24vdXNlci1wcmVmZXJlbmNlcy91c2VyLXByZWZlcmVuY2VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQVMsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXJGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQUdyRCxNQUFNLE9BQU8sc0JBQXNCO0lBUWpDLFlBQ1UsSUFBaUIsRUFDakIsU0FBMkIsRUFDM0IsUUFBeUI7UUFGekIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQVRuQyx1QkFBa0IsR0FBNEIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVcxRCxJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsS0FBSyxFQUFFLElBQUksMkJBQTJCLEVBQUU7WUFDeEMsU0FBUyxFQUFFLElBQUksK0JBQStCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUMvRCxDQUFDO1FBQ0YsSUFBSSxDQUFD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QUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQ3pCLENBQUM7O21IQTlHVSxzQkFBc0I7dUhBQXRCLHNCQUFzQixjQURULE1BQU07MkZBQ25CLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnZlbnRvcnlTZXJ2aWNlLCBJVXNlciwgVXNlclNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBjb25jYXQsIGZyb20sIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vdWktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZXNTdG9yYWdlTG9jYWwgfSBmcm9tICcuL3VzZXItcHJlZmVyZW5jZXMtc3RvcmFnZS1sb2NhbCc7XG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZXNTdG9yYWdlSW52ZW50b3J5IH0gZnJvbSAnLi91c2VyLXByZWZlcmVuY2VzLXN0b3JlLWludmVudG9yeSc7XG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZSB9IGZyb20gJy4vdXNlci1wcmVmZXJlbmNlLm1vZGVsJztcbmltcG9ydCB7IFBlcm1pc3Npb25zIH0gZnJvbSAnLi4vcGVybWlzc2lvbnMuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVXNlclByZWZlcmVuY2VzU2VydmljZSB7XG4gIGN1cnJlbnRVc2VyOiBPYnNlcnZhYmxlPElVc2VyPjtcbiAgcHJlZmVyZW5jZUNoYW5nZXMkOiBTdWJqZWN0PFVzZXJQcmVmZXJlbmNlPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgc3RvcmFnZToge1xuICAgIGxvY2FsOiBVc2VyUHJlZmVyZW5jZXNTdG9yYWdlTG9jYWw7XG4gICAgaW52ZW50b3J5OiBVc2VyUHJlZmVyZW5jZXNTdG9yYWdlSW52ZW50b3J5O1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdXNlcjogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc3RvcmFnZSA9IHtcbiAgICAgIGxvY2FsOiBuZXcgVXNlclByZWZlcmVuY2VzU3RvcmFnZUxvY2FsKCksXG4gICAgICBpbnZlbnRvcnk6IG5ldyBVc2VyUHJlZmVyZW5jZXNTdG9yYWdlSW52ZW50b3J5KHRoaXMuaW52ZW50b3J5KVxuICAgIH07XG4gICAgdGhpcy5jdXJyZW50VXNlciA9IHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIucGlwZShmaWx0ZXIoY3VycmVudFVzZXIgPT4gY3VycmVudFVzZXIgIT09IG51bGwpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgb2YgYSB1c2VyIHByZWZlcmVuY2Ugd2l0aCBnaXZlbiBrZXkuXG4gICAqIEVtaXRzIGl0cyBpbml0aWFsIHZhbHVlIGZpcnN0IGFuZCB0aGVuIHVwZGF0ZWQgdmFsdWVzIHdoZW4gc2V0IGJ5IHVzZXIuXG4gICAqIEBwYXJhbSBrZXkgVGhlIHN0b3JhZ2Uga2V5IGZvciBzZWFyY2hlZCB2YWx1ZS5cbiAgICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSBvZiBhIHVzZXIgcHJlZmVyZW5jZS5cbiAgICovXG4gIG9ic2VydmU8VD4oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gY29uY2F0KFxuICAgICAgdGhpcy5nZXQoa2V5KSxcbiAgICAgIHRoaXMucHJlZmVyZW5jZUNoYW5nZXMkLnBpcGUoXG4gICAgICAgIGZpbHRlcihjaGFuZ2UgPT4gY2hhbmdlLmtleSA9PT0ga2V5KSxcbiAgICAgICAgbWFwKGNoYW5nZSA9PiBjaGFuZ2UudmFsdWUpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gT2JzZXJ2YWJsZSB2YWx1ZSBmb3Igc2VhcmNoZWQga2V5IGZvciBjdXJyZW50IHVzZXIuXG4gICAqIEBwYXJhbSBrZXkgVGhlIHN0b3JhZ2Uga2V5IGZvciBzZWFyY2hlZCB2YWx1ZS5cbiAgICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSB3aXRoIHRoZSB2YWx1ZSBvZiBwcmVmZXJlbmNlLlxuICAgKi9cbiAgZ2V0KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VXNlci5waXBlKFxuICAgICAgZmlyc3QoKSxcbiAgICAgIHN3aXRjaE1hcCh1c2VyID0+IHRoaXMuZ2V0Rm9yVXNlcihrZXksIHVzZXIpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhIHZhbHVlIGluIHN0b3JhZ2UgZm9yIGN1cnJlbnQgdXNlci5cbiAgICogQHBhcmFtIGtleSBUaGUgc3RvcmFnZSBrZXkgZm9yIHRoZSB2YWx1ZSB0byBiZSBzZXQuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgc3RvcmFnZSB2YWx1ZSB0byBiZSBzZXQuXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB3aXRoIHNhdmVkIHZhbHVlLlxuICAgKi9cbiAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5jdXJyZW50VXNlci5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSh1c2VyID0+IHtcbiAgICAgICAgdGhpcy5wcmVmZXJlbmNlQ2hhbmdlcyQubmV4dCh7IGtleSwgdmFsdWUgfSk7XG4gICAgICAgIHJlc29sdmUodGhpcy5zZXRGb3JVc2VyKGtleSwgdmFsdWUsIHVzZXIpKTtcbiAgICAgIH0sIHJlamVjdCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIE9ic2VydmFibGUgdmFsdWUgb2Ygc2VhcmNoZWQga2V5IGZvciBhIHNwZWNpZmljIHVzZXIuXG4gICAqIEBwYXJhbSBrZXkgVGhlIHN0b3JhZ2Uga2V5IGZvciBzZWFyY2hlZCB2YWx1ZS5cbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgZm9yIHdob20gdGhlIHNlYXJjaCBpcyBkb25lLlxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIHdpdGggdGhlIHZhbHVlIG9mIHByZWZlcmVuY2UuXG4gICAqL1xuICBnZXRGb3JVc2VyKGtleTogc3RyaW5nLCB1c2VyOiBJVXNlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgcmF3S2V5ID0gdGhpcy5nZXRSYXdLZXkoa2V5LCB1c2VyKTtcbiAgICBjb25zdCBzdG9yYWdlID0gdGhpcy5nZXRTdG9yYWdlKHVzZXIpO1xuICAgIHJldHVybiBmcm9tKHN0b3JhZ2UuZ2V0KHJhd0tleSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSB2YWx1ZSBpbiBzdG9yYWdlIGZvciBhIHNwZWNpZmljIHVzZXIuXG4gICAqIEBwYXJhbSBrZXkgVGhlIHN0b3JhZ2Uga2V5IGZvciB0aGUgdmFsdWUgdG8gYmUgc2V0LlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHN0b3JhZ2UgdmFsdWUgdG8gYmUgc2V0LlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2l0aCBzYXZlZCB2YWx1ZS5cbiAgICovXG4gIHNldEZvclVzZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHVzZXI6IElVc2VyKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCByYXdLZXkgPSB0aGlzLmdldFJhd0tleShrZXksIHVzZXIpO1xuICAgIGNvbnN0IHN0b3JhZ2UgPSB0aGlzLmdldFN0b3JhZ2UodXNlcik7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShzdG9yYWdlLnNldChyYXdLZXksIHZhbHVlKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc3RyaW5nIG9mIGtleSBjb25jYXRlbmF0ZWQgd2l0aCB1c2VybmFtZS5cbiAgICogQHBhcmFtIGtleSBUaGUgc3RvcmFnZSBrZXkgZm9yIHNlYXJjaGVkIHZhbHVlLlxuICAgKiBAcGFyYW0gdXNlciBUaGUgdXNlciBmb3Igd2hvbSB0aGUgc2VhcmNoIGlzIGRvbmUuXG4gICAqIEByZXR1cm5zIEEgc3RyaW5nIG9mIGtleSBjb25jYXRlbmF0ZWQgd2l0aCB1c2VybmFtZS5cbiAgICovXG4gIHByaXZhdGUgZ2V0UmF3S2V5KGtleTogc3RyaW5nLCB1c2VyOiBJVXNlcik6IHN0cmluZyB7XG4gICAgY29uc3QgdXNlcm5hbWUgPSB1c2VyLnVzZXJOYW1lLnJlcGxhY2UoL1xcLi9nLCAnX18nKTtcbiAgICByZXR1cm4gYCR7a2V5fSR7dXNlcm5hbWV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgcHJvcGVyIHN0b3JhZ2UgZGVwZW5kaW5nIG9uIHRoZSB1c2VyIHJvbGVzLlxuICAgKiBAcGFyYW0gdXNlciBUaGUgdXNlciBmb3Igd2hvbSB0aGUgcm9sZSBjaGVjayBpcyBkb25lLlxuICAgKiBAcmV0dXJucyBBIHByb3BlciBzdG9yYWdlLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTdG9yYWdlKHVzZXI6IElVc2VyKTogVXNlclByZWZlcmVuY2VzU3RvcmFnZUludmVudG9yeSB8IFVzZXJQcmVmZXJlbmNlc1N0b3JhZ2VMb2NhbCB7XG4gICAgcmV0dXJuIHRoaXMudXNlci5oYXNBbGxSb2xlcyh1c2VyLCBbXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9SRUFELFxuICAgICAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQURNSU5cbiAgICBdKVxuICAgICAgPyB0aGlzLnN0b3JhZ2UuaW52ZW50b3J5XG4gICAgICA6IHRoaXMuc3RvcmFnZS5sb2NhbDtcbiAgfVxufVxuIl19
|
|
@@ -7,6 +7,7 @@ import { ModalService } from '../../modal';
|
|
|
7
7
|
import { TenantService, UserService } from '@c8y/client';
|
|
8
8
|
import { AlertService } from '../../alert';
|
|
9
9
|
import { HeaderService } from '../../header/header.service';
|
|
10
|
+
import { Permissions } from '../../common/permissions.service';
|
|
10
11
|
import { map } from 'rxjs/operators';
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
13
|
import * as i1 from "../../common";
|
|
@@ -65,7 +66,7 @@ export class SupportOutletComponent {
|
|
|
65
66
|
const textWithCompany = gettext('You are about to block a support user from {{companyName}} from accessing your tenant to help you with your issue.');
|
|
66
67
|
const textWithoutCompany = gettext('You are about to block a support user from accessing your tenant to help you with your issue.');
|
|
67
68
|
const { data: currentUser } = await this.userService.current();
|
|
68
|
-
const isTenantAdmin = this.userService.hasRole(currentUser,
|
|
69
|
+
const isTenantAdmin = this.userService.hasRole(currentUser, Permissions.ROLE_TENANT_ADMIN);
|
|
69
70
|
const tenantAdminNote = gettext('Deactivating support access as tenant admin will disable all other support requests on your tenant.');
|
|
70
71
|
const finalQuestion = gettext('Do you want to proceed?');
|
|
71
72
|
const body = [
|
|
@@ -114,4 +115,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
114
115
|
type: Component,
|
|
115
116
|
args: [{ selector: 'c8y-support-outlet', template: "<button\n class=\"c8y-right-drawer__link sticky-top\"\n [tabindex]=\"tabIndex$ | async\"\n type=\"button\"\n (click)=\"isCollapsed = !isCollapsed\"\n *ngIf=\"isCollapsible\"\n>\n <i c8yIcon=\"c8y-c8y-support\"></i>\n <span class=\"text-bold\">{{ 'Support' | translate }}</span>\n <i\n class=\"m-l-auto\"\n c8yIcon=\"angle-up\"\n [ngClass]=\"{ 'icon-rotate-180': isCollapsed }\"\n ></i>\n</button>\n<div\n class=\"collapse\"\n id=\"collapseSupport\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n>\n <button\n class=\"c8y-right-drawer__link\"\n title=\"{{ 'Activate support access' | translate }}\"\n [tabindex]=\"tabIndex$ | async\"\n *ngIf=\"!(supportUserEnabled$ | async) && userSupportAvailable\"\n (click)=\"activateSupportAccess()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.QUICK_LINKS.EVENTS.QUICK_LINK_RIGHT_DRAWER\"\n >\n <i\n c8yIcon=\"c8y-c8y-support\"\n *ngIf=\"!isCollapsible\"\n ></i>\n <span\n [class]=\"textClass\"\n title=\"{{ 'Activate support access' | translate }}\"\n >\n {{ 'Activate support access' | translate }}\n </span>\n </button>\n <button\n class=\"c8y-right-drawer__link\"\n title=\"{{ 'Deactivate support access' | translate }}\"\n [tabindex]=\"tabIndex$ | async\"\n *ngIf=\"(supportUserEnabled$ | async) && userSupportAvailable\"\n (click)=\"deactivateSupportAccess()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.QUICK_LINKS.EVENTS.QUICK_LINK_RIGHT_DRAWER\"\n >\n <i\n c8yIcon=\"c8y-c8y-support\"\n *ngIf=\"!isCollapsible\"\n ></i>\n <span\n [class]=\"textClass\"\n title=\"{{ 'Deactivate support access' | translate }}\"\n >\n {{ 'Deactivate support access' | translate }}\n </span>\n </button>\n <a\n class=\"c8y-right-drawer__link\"\n title=\"{{ 'Request support' | translate }}\"\n [tabindex]=\"tabIndex$ | async\"\n role=\"button\"\n target=\"_blank\"\n *ngIf=\"supportUrl\"\n rel=\"noopener noreferrer\"\n [href]=\"supportUrl\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.QUICK_LINKS.EVENTS.QUICK_LINK_RIGHT_DRAWER\"\n >\n <i\n c8yIcon=\"c8y-c8y-support\"\n *ngIf=\"!isCollapsible\"\n ></i>\n <span\n [class]=\"textClass\"\n title=\"{{ 'Request support' | translate }}\"\n >\n {{ 'Request support' | translate }}\n </span>\n </a>\n</div>\n" }]
|
|
116
117
|
}], ctorParameters: function () { return [{ type: i1.AppStateService }, { type: i1.OptionsService }, { type: i2.ModalService }, { type: i3.TranslateService }, { type: i4.TenantService }, { type: i5.AlertService }, { type: i4.UserService }, { type: i6.HeaderService }]; } });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29yZS9kb2NzL3N1cHBvcnQtb3V0bGV0L3N1cHBvcnQtb3V0bGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2NvcmUvZG9jcy9zdXBwb3J0LW91dGxldC9zdXBwb3J0LW91dGxldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBTXJDLE1BQU0sT0FBTyxzQkFBc0I7SUFXakMsWUFDUyxFQUFtQixFQUNsQixjQUE4QixFQUM5QixZQUEwQixFQUMxQixnQkFBa0MsRUFDbEMsYUFBNEIsRUFDNUIsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsYUFBNEI7UUFQN0IsT0FBRSxHQUFGLEVBQUUsQ0FBaUI7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGlCQUFZLEdB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QUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQztRQUN2RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUM5RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVPLEtBQUssQ0FBQyxrQkFBa0I7UUFDOUIsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7O21IQW5IVSxzQkFBc0I7dUdBQXRCLHNCQUFzQiwwRENoQm5DLDI1RUFxRkE7MkZEckVhLHNCQUFzQjtrQkFKbEMsU0FBUzsrQkFDRSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlLCBPcHRpb25zU2VydmljZSwgU3RhdHVzIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IFBST0RVQ1RfRVhQRVJJRU5DRSB9IGZyb20gJy4uLy4uL3NoYXJlZC9jb3JlLm1vZGVsJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi8uLi9pMThuJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uL21vZGFsJztcbmltcG9ydCB7IFRlbmFudFNlcnZpY2UsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWxlcnQnO1xuaW1wb3J0IHsgSGVhZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2hlYWRlci9oZWFkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1zdXBwb3J0LW91dGxldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdXBwb3J0LW91dGxldC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3VwcG9ydE91dGxldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGlzQ29sbGFwc2VkOiBib29sZWFuO1xuICBkcmF3ZXJPcGVuJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgdXNlclN1cHBvcnRBdmFpbGFibGU6IGJvb2xlYW47XG4gIHN1cHBvcnRVcmw6IHN0cmluZyB8IGJvb2xlYW47XG4gIGlzQ29sbGFwc2libGU6IGJvb2xlYW47XG4gIHN1cHBvcnRVc2VyRW5hYmxlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHRleHRDbGFzczogc3RyaW5nO1xuICB0YWJJbmRleCQ6IE9ic2VydmFibGU8JzAnIHwgJy0xJz47XG4gIFBST0RVQ1RfRVhQRVJJRU5DRSA9IFBST0RVQ1RfRVhQRVJJRU5DRTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdWk6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudFNlcnZpY2U6IFRlbmFudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGhlYWRlclNlcnZpY2U6IEhlYWRlclNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGFjdGl2YXRlU3VwcG9ydEFjY2VzcygpIHtcbiAgICBjb25zdCB0aXRsZSA9IGdldHRleHQoJ0FjdGl2YXRlIHN1cHBvcnQgdXNlciBhY2Nlc3MnKTtcblxuICAgIGNvbnN0IGNvbXBhbnlOYW1lID0gdGhpcy5vcHRpb25zU2VydmljZS5nZXQoJ2NvbXBhbnlOYW1lJywgJ0N1bXVsb2NpdHknKTtcbiAgICBjb25zdCB0ZXh0V2l0aENvbXBhbnkgPSBnZXR0ZXh0KFxuICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gYWxsb3cgYSBzdXBwb3J0IHVzZXIgZnJvbSB7e2NvbXBhbnlOYW1lfX0gdG8gYWNjZXNzIHlvdXIgdGVuYW50IHRvIGhlbHAgeW91IHdpdGggeW91ciBpc3N1ZS4nXG4gICAgKTtcbiAgICBjb25zdCB0ZXh0V2l0aG91dENvbXBhbnkgPSBnZXR0ZXh0KFxuICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gYWxsb3cgYSBzdXBwb3J0IHVzZXIgdG8gYWNjZXNzIHlvdXIgdGVuYW50IHRvIGhlbHAgeW91IHdpdGggeW91ciBpc3N1ZS4nXG4gICAgKTtcbiAgICBjb25zdCBmaW5hbFF1ZXN0aW9uID0gZ2V0dGV4dCgnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nKTtcbiAgICBjb25zdCBib2R5ID0gW1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoY29tcGFueU5hbWUgPyB0ZXh0V2l0aENvbXBhbnkgOiB0ZXh0V2l0aG91dENvbXBhbnksIHtcbiAgICAgICAgY29tcGFueU5hbWVcbiAgICAgIH0pLFxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZmluYWxRdWVzdGlvbilcbiAgICBdLmpvaW4oJyAnKTtcblxuICAgIGNvbnN0IGxhYmVscyA9IHtcbiAgICAgIG9rOiBnZXR0ZXh0KCdBY3RpdmF0ZSBhY2Nlc3MnKSxcbiAgICAgIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJylcbiAgICB9O1xuXG4gICAgY29uc3Qgc3VjY2Vzc01zZyA9IGdldHRleHQoJ1N1cHBvcnQgdXNlciBhY2Nlc3MgYWN0aXZhdGVkLicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubW9kYWxTZXJ2aWNlLmNvbmZpcm0odGl0bGUsIGJvZHksIFN0YXR1cy5EQU5HRVIsIGxhYmVscyk7XG4gICAgICBhd2FpdCB0aGlzLnRlbmFudFNlcnZpY2UuZW5hYmxlU3VwcG9ydFVzZXIoKTtcbiAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEN1cnJlbnRVc2VyKCk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKHN1Y2Nlc3NNc2cpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvLyBpbnRlbmRlZCBlbXB0eVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlYWN0aXZhdGVTdXBwb3J0QWNjZXNzKCkge1xuICAgIGNvbnN0IHRpdGxlID0gZ2V0dGV4dCgnRGVhY3RpdmF0ZSBzdXBwb3J0IHVzZXIgYWNjZXNzJyk7XG5cbiAgICBjb25zdCBjb21wYW55TmFtZSA9IHRoaXMub3B0aW9uc1NlcnZpY2UuZ2V0KCdjb21wYW55TmFtZScsICdDdW11bG9jaXR5Jyk7XG4gICAgY29uc3QgdGV4dFdpdGhDb21wYW55ID0gZ2V0dGV4dChcbiAgICAgICdZb3UgYXJlIGFib3V0IHRvIGJsb2NrIGEgc3VwcG9ydCB1c2VyIGZyb20ge3tjb21wYW55TmFtZX19IGZyb20gYWNjZXNzaW5nIHlvdXIgdGVuYW50IHRvIGhlbHAgeW91IHdpdGggeW91ciBpc3N1ZS4nXG4gICAgKTtcbiAgICBjb25zdCB0ZXh0V2l0aG91dENvbXBhbnkgPSBnZXR0ZXh0KFxuICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gYmxvY2sgYSBzdXBwb3J0IHVzZXIgZnJvbSBhY2Nlc3NpbmcgeW91ciB0ZW5hbnQgdG8gaGVscCB5b3Ugd2l0aCB5b3VyIGlzc3VlLidcbiAgICApO1xuICAgIGNvbnN0IHsgZGF0YTogY3VycmVudFVzZXIgfSA9IGF3YWl0IHRoaXMudXNlclNlcnZpY2UuY3VycmVudCgpO1xuICAgIGNvbnN0IGlzVGVuYW50QWRtaW4gPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc1JvbGUoY3VycmVudFVzZXIsICdST0xFX1RFTkFOVF9BRE1JTicpO1xuICAgIGNvbnN0IHRlbmFudEFkbWluTm90ZSA9IGdldHRleHQoXG4gICAgICAnRGVhY3RpdmF0aW5nIHN1cHBvcnQgYWNjZXNzIGFzIHRlbmFudCBhZG1pbiB3aWxsIGRpc2FibGUgYWxsIG90aGVyIHN1cHBvcnQgcmVxdWVzdHMgb24geW91ciB0ZW5hbnQuJ1xuICAgICk7XG4gICAgY29uc3QgZmluYWxRdWVzdGlvbiA9IGdldHRleHQoJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/Jyk7XG4gICAgY29uc3QgYm9keSA9IFtcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGNvbXBhbnlOYW1lID8gdGV4dFdpdGhDb21wYW55IDogdGV4dFdpdGhvdXRDb21wYW55LCB7XG4gICAgICAgIGNvbXBhbnlOYW1lXG4gICAgICB9KSxcbiAgICAgIGlzVGVuYW50QWRtaW4gPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0ZW5hbnRBZG1pbk5vdGUpIDogJycsXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChmaW5hbFF1ZXN0aW9uKVxuICAgIF1cbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5qb2luKCcgJyk7XG5cbiAgICBjb25zdCBsYWJlbHMgPSB7XG4gICAgICBvazogZ2V0dGV4dCgnRGVhY3RpdmF0ZSBhY2Nlc3MnKSxcbiAgICAgIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJylcbiAgICB9O1xuXG4gICAgY29uc3Qgc3VjY2Vzc01zZyA9IGdldHRleHQoJ1N1cHBvcnQgdXNlciBhY2Nlc3MgZGVhY3RpdmF0ZWQuJyk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2UuY29uZmlybSh0aXRsZSwgYm9keSwgU3RhdHVzLkRBTkdFUiwgbGFiZWxzKTtcbiAgICAgIGF3YWl0IHRoaXMudGVuYW50U2VydmljZS5kaXNhYmxlU3VwcG9ydFVzZXIoKTtcbiAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEN1cnJlbnRVc2VyKCk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKHN1Y2Nlc3NNc2cpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvLyBpbnRlbmRlZCBlbXB0eVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy51aS5zdGF0ZSQuZ2V0VmFsdWUoKTtcbiAgICB0aGlzLmlzQ29sbGFwc2VkID0gc3RhdGUuYWN0aXZhdGVTdXBwb3J0VXNlckF2YWlsYWJsZSAmJiBzdGF0ZS5zdXBwb3J0VXJsO1xuICAgIHRoaXMudXNlclN1cHBvcnRBdmFpbGFibGUgPSB0aGlzLnVpLnN0YXRlJC5nZXRWYWx1ZSgpLmFjdGl2YXRlU3VwcG9ydFVzZXJBdmFpbGFibGU7XG4gICAgdGhpcy5zdXBwb3J0VXJsID0gdGhpcy51aS5zdGF0ZSQuZ2V0VmFsdWUoKS5zdXBwb3J0VXJsO1xuICAgIHRoaXMuc3VwcG9ydFVzZXJFbmFibGVkJCA9IHRoaXMudWkuY3VycmVudFVzZXIucGlwZShtYXAodXNlciA9PiAhIXVzZXI/LnN1cHBvcnRVc2VyRW5hYmxlZCkpO1xuICAgIHRoaXMuaXNDb2xsYXBzaWJsZSA9IHRoaXMudXNlclN1cHBvcnRBdmFpbGFibGUgJiYgISF0aGlzLnN1cHBvcnRVcmw7XG4gICAgdGhpcy50ZXh0Q2xhc3MgPSB0aGlzLmlzQ29sbGFwc2libGUgPyAndGV4dC10cnVuY2F0ZSB0ZXh0LTEyJyA6ICd0ZXh0LW1lZGl1bSc7XG4gICAgdGhpcy5kcmF3ZXJPcGVuJCA9IHRoaXMuaGVhZGVyU2VydmljZS5yaWdodERyYXdlck9wZW4kO1xuICAgIHRoaXMudGFiSW5kZXgkID0gdGhpcy5kcmF3ZXJPcGVuJC5waXBlKG1hcChkcmF3ZXJPcGVuID0+IChkcmF3ZXJPcGVuID8gJzAnIDogJy0xJykpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaEN1cnJlbnRVc2VyKCkge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyUmVzdWx0ID0gYXdhaXQgdGhpcy51c2VyU2VydmljZS5jdXJyZW50KCk7XG4gICAgdGhpcy51aS5jdXJyZW50VXNlci5uZXh0KGN1cnJlbnRVc2VyUmVzdWx0LmRhdGEpO1xuICB9XG59XG4iLCI8YnV0dG9uXG4gIGNsYXNzPVwiYzh5LXJpZ2h0LWRyYXdlcl9fbGluayBzdGlja3ktdG9wXCJcbiAgW3RhYmluZGV4XT1cInRhYkluZGV4JCB8IGFzeW5jXCJcbiAgdHlwZT1cImJ1dHRvblwiXG4gIChjbGljayk9XCJpc0NvbGxhcHNlZCA9ICFpc0NvbGxhcHNlZFwiXG4gICpuZ0lmPVwiaXNDb2xsYXBzaWJsZVwiXG4+XG4gIDxpIGM4eUljb249XCJjOHktYzh5LXN1cHBvcnRcIj48L2k+XG4gIDxzcGFuIGNsYXNzPVwidGV4dC1ib2xkXCI+e3sgJ1N1cHBvcnQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICA8aVxuICAgIGNsYXNzPVwibS1sLWF1dG9cIlxuICAgIGM4eUljb249XCJhbmdsZS11cFwiXG4gICAgW25nQ2xhc3NdPVwieyAnaWNvbi1yb3RhdGUtMTgwJzogaXNDb2xsYXBzZWQgfVwiXG4gID48L2k+XG48L2J1dHRvbj5cbjxkaXZcbiAgY2xhc3M9XCJjb2xsYXBzZVwiXG4gIGlkPVwiY29sbGFwc2VTdXBwb3J0XCJcbiAgW2NvbGxhcHNlXT1cImlzQ29sbGFwc2VkXCJcbiAgW2lzQW5pbWF0ZWRdPVwidHJ1ZVwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImM4eS1yaWdodC1kcmF3ZXJfX2xpbmtcIlxuICAgIHRpdGxlPVwie3sgJ0FjdGl2YXRlIHN1cHBvcnQgYWNjZXNzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgW3RhYmluZGV4XT1cInRhYkluZGV4JCB8IGFzeW5jXCJcbiAgICAqbmdJZj1cIiEoc3VwcG9ydFVzZXJFbmFibGVkJCB8IGFzeW5jKSAmJiB1c2VyU3VwcG9ydEF2YWlsYWJsZVwiXG4gICAgKGNsaWNrKT1cImFjdGl2YXRlU3VwcG9ydEFjY2VzcygpXCJcbiAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgIFthY3Rpb25OYW1lXT1cIlBST0RVQ1RfRVhQRVJJRU5DRS5RVUlDS19MSU5LUy5FVkVOVFMuUVVJQ0tfTElOS19SSUdIVF9EUkFXRVJcIlxuICA+XG4gICAgPGlcbiAgICAgIGM4eUljb249XCJjOHktYzh5LXN1cHBvcnRcIlxuICAgICAgKm5nSWY9XCIhaXNDb2xsYXBzaWJsZVwiXG4gICAgPjwvaT5cbiAgICA8c3BhblxuICAgICAgW2NsYXNzXT1cInRleHRDbGFzc1wiXG4gICAgICB0aXRsZT1cInt7ICdBY3RpdmF0ZSBzdXBwb3J0IGFjY2VzcycgfCB0cmFuc2xhdGUgfX1cIlxuICAgID5cbiAgICAgIHt7ICdBY3RpdmF0ZSBzdXBwb3J0IGFjY2VzcycgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJjOHktcmlnaHQtZHJhd2VyX19saW5rXCJcbiAgICB0aXRsZT1cInt7ICdEZWFjdGl2YXRlIHN1cHBvcnQgYWNjZXNzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgW3RhYmluZGV4XT1cInRhYkluZGV4JCB8IGFzeW5jXCJcbiAgICAqbmdJZj1cIihzdXBwb3J0VXNlckVuYWJsZWQkIHwgYXN5bmMpICYmIHVzZXJTdXBwb3J0QXZhaWxhYmxlXCJcbiAgICAoY2xpY2spPVwiZGVhY3RpdmF0ZVN1cHBvcnRBY2Nlc3MoKVwiXG4gICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICBbYWN0aW9uTmFtZV09XCJQUk9EVUNUX0VYUEVSSUVOQ0UuUVVJQ0tfTElOS1MuRVZFTlRTLlFVSUNLX0xJTktfUklHSFRfRFJBV0VSXCJcbiAgPlxuICAgIDxpXG4gICAgICBjOHlJY29uPVwiYzh5LWM4eS1zdXBwb3J0XCJcbiAgICAgICpuZ0lmPVwiIWlzQ29sbGFwc2libGVcIlxuICAgID48L2k+XG4gICAgPHNwYW5cbiAgICAgIFtjbGFzc109XCJ0ZXh0Q2xhc3NcIlxuICAgICAgdGl0bGU9XCJ7eyAnRGVhY3RpdmF0ZSBzdXBwb3J0IGFjY2VzcycgfCB0cmFuc2xhdGUgfX1cIlxuICAgID5cbiAgICAgIHt7ICdEZWFjdGl2YXRlIHN1cHBvcnQgYWNjZXNzJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxhXG4gICAgY2xhc3M9XCJjOHktcmlnaHQtZHJhd2VyX19saW5rXCJcbiAgICB0aXRsZT1cInt7ICdSZXF1ZXN0IHN1cHBvcnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXgkIHwgYXN5bmNcIlxuICAgIHJvbGU9XCJidXR0b25cIlxuICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgKm5nSWY9XCJzdXBwb3J0VXJsXCJcbiAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICBbaHJlZl09XCJzdXBwb3J0VXJsXCJcbiAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgIFthY3Rpb25OYW1lXT1cIlBST0RVQ1RfRVhQRVJJRU5DRS5RVUlDS19MSU5LUy5FVkVOVFMuUVVJQ0tfTElOS19SSUdIVF9EUkFXRVJcIlxuICA+XG4gICAgPGlcbiAgICAgIGM4eUljb249XCJjOHktYzh5LXN1cHBvcnRcIlxuICAgICAgKm5nSWY9XCIhaXNDb2xsYXBzaWJsZVwiXG4gICAgPjwvaT5cbiAgICA8c3BhblxuICAgICAgW2NsYXNzXT1cInRleHRDbGFzc1wiXG4gICAgICB0aXRsZT1cInt7ICdSZXF1ZXN0IHN1cHBvcnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICA+XG4gICAgICB7eyAnUmVxdWVzdCBzdXBwb3J0JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9hPlxuPC9kaXY+XG4iXX0=
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29yZS9kb2NzL3N1cHBvcnQtb3V0bGV0L3N1cHBvcnQtb3V0bGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2NvcmUvZG9jcy9zdXBwb3J0LW91dGxldC9zdXBwb3J0LW91dGxldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU1yQyxNQUFNLE9BQU8sc0JBQXNCO0lBV2pDLFlBQ1MsRUFBbUIsRUFDbEIsY0FBOEIsRUFDOUIsWUFBMEIsRUFDMUIsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLGFBQTRCO1FBUDdCLE9BQUUsR0FBRixFQUFFLENBQWlC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dCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UsIE9wdGlvbnNTZXJ2aWNlLCBTdGF0dXMgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuaW1wb3J0IHsgUFJPRFVDVF9FWFBFUklFTkNFIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NvcmUubW9kZWwnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uLy4uL2kxOG4nO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbW9kYWwnO1xuaW1wb3J0IHsgVGVuYW50U2VydmljZSwgVXNlclNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hbGVydCc7XG5pbXBvcnQgeyBIZWFkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGVhZGVyL2hlYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25zIH0gZnJvbSAnLi4vLi4vY29tbW9uL3Blcm1pc3Npb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktc3VwcG9ydC1vdXRsZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3VwcG9ydC1vdXRsZXQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFN1cHBvcnRPdXRsZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBpc0NvbGxhcHNlZDogYm9vbGVhbjtcbiAgZHJhd2VyT3BlbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHVzZXJTdXBwb3J0QXZhaWxhYmxlOiBib29sZWFuO1xuICBzdXBwb3J0VXJsOiBzdHJpbmcgfCBib29sZWFuO1xuICBpc0NvbGxhcHNpYmxlOiBib29sZWFuO1xuICBzdXBwb3J0VXNlckVuYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICB0ZXh0Q2xhc3M6IHN0cmluZztcbiAgdGFiSW5kZXgkOiBPYnNlcnZhYmxlPCcwJyB8ICctMSc+O1xuICBQUk9EVUNUX0VYUEVSSUVOQ0UgPSBQUk9EVUNUX0VYUEVSSUVOQ0U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHVpOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcHRpb25zU2VydmljZTogT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0ZW5hbnRTZXJ2aWNlOiBUZW5hbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBoZWFkZXJTZXJ2aWNlOiBIZWFkZXJTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBhY3RpdmF0ZVN1cHBvcnRBY2Nlc3MoKSB7XG4gICAgY29uc3QgdGl0bGUgPSBnZXR0ZXh0KCdBY3RpdmF0ZSBzdXBwb3J0IHVzZXIgYWNjZXNzJyk7XG5cbiAgICBjb25zdCBjb21wYW55TmFtZSA9IHRoaXMub3B0aW9uc1NlcnZpY2UuZ2V0KCdjb21wYW55TmFtZScsICdDdW11bG9jaXR5Jyk7XG4gICAgY29uc3QgdGV4dFdpdGhDb21wYW55ID0gZ2V0dGV4dChcbiAgICAgICdZb3UgYXJlIGFib3V0IHRvIGFsbG93IGEgc3VwcG9ydCB1c2VyIGZyb20ge3tjb21wYW55TmFtZX19IHRvIGFjY2VzcyB5b3VyIHRlbmFudCB0byBoZWxwIHlvdSB3aXRoIHlvdXIgaXNzdWUuJ1xuICAgICk7XG4gICAgY29uc3QgdGV4dFdpdGhvdXRDb21wYW55ID0gZ2V0dGV4dChcbiAgICAgICdZb3UgYXJlIGFib3V0IHRvIGFsbG93IGEgc3VwcG9ydCB1c2VyIHRvIGFjY2VzcyB5b3VyIHRlbmFudCB0byBoZWxwIHlvdSB3aXRoIHlvdXIgaXNzdWUuJ1xuICAgICk7XG4gICAgY29uc3QgZmluYWxRdWVzdGlvbiA9IGdldHRleHQoJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/Jyk7XG4gICAgY29uc3QgYm9keSA9IFtcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGNvbXBhbnlOYW1lID8gdGV4dFdpdGhDb21wYW55IDogdGV4dFdpdGhvdXRDb21wYW55LCB7XG4gICAgICAgIGNvbXBhbnlOYW1lXG4gICAgICB9KSxcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGZpbmFsUXVlc3Rpb24pXG4gICAgXS5qb2luKCcgJyk7XG5cbiAgICBjb25zdCBsYWJlbHMgPSB7XG4gICAgICBvazogZ2V0dGV4dCgnQWN0aXZhdGUgYWNjZXNzJyksXG4gICAgICBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpXG4gICAgfTtcblxuICAgIGNvbnN0IHN1Y2Nlc3NNc2cgPSBnZXR0ZXh0KCdTdXBwb3J0IHVzZXIgYWNjZXNzIGFjdGl2YXRlZC4nKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtKHRpdGxlLCBib2R5LCBTdGF0dXMuREFOR0VSLCBsYWJlbHMpO1xuICAgICAgYXdhaXQgdGhpcy50ZW5hbnRTZXJ2aWNlLmVuYWJsZVN1cHBvcnRVc2VyKCk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hDdXJyZW50VXNlcigpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhzdWNjZXNzTXNnKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLy8gaW50ZW5kZWQgZW1wdHlcbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWFjdGl2YXRlU3VwcG9ydEFjY2VzcygpIHtcbiAgICBjb25zdCB0aXRsZSA9IGdldHRleHQoJ0RlYWN0aXZhdGUgc3VwcG9ydCB1c2VyIGFjY2VzcycpO1xuXG4gICAgY29uc3QgY29tcGFueU5hbWUgPSB0aGlzLm9wdGlvbnNTZXJ2aWNlLmdldCgnY29tcGFueU5hbWUnLCAnQ3VtdWxvY2l0eScpO1xuICAgIGNvbnN0IHRleHRXaXRoQ29tcGFueSA9IGdldHRleHQoXG4gICAgICAnWW91IGFyZSBhYm91dCB0byBibG9jayBhIHN1cHBvcnQgdXNlciBmcm9tIHt7Y29tcGFueU5hbWV9fSBmcm9tIGFjY2Vzc2luZyB5b3VyIHRlbmFudCB0byBoZWxwIHlvdSB3aXRoIHlvdXIgaXNzdWUuJ1xuICAgICk7XG4gICAgY29uc3QgdGV4dFdpdGhvdXRDb21wYW55ID0gZ2V0dGV4dChcbiAgICAgICdZb3UgYXJlIGFib3V0IHRvIGJsb2NrIGEgc3VwcG9ydCB1c2VyIGZyb20gYWNjZXNzaW5nIHlvdXIgdGVuYW50IHRvIGhlbHAgeW91IHdpdGggeW91ciBpc3N1ZS4nXG4gICAgKTtcbiAgICBjb25zdCB7IGRhdGE6IGN1cnJlbnRVc2VyIH0gPSBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnQoKTtcbiAgICBjb25zdCBpc1RlbmFudEFkbWluID0gdGhpcy51c2VyU2VydmljZS5oYXNSb2xlKGN1cnJlbnRVc2VyLCBQZXJtaXNzaW9ucy5ST0xFX1RFTkFOVF9BRE1JTik7XG4gICAgY29uc3QgdGVuYW50QWRtaW5Ob3RlID0gZ2V0dGV4dChcbiAgICAgICdEZWFjdGl2YXRpbmcgc3VwcG9ydCBhY2Nlc3MgYXMgdGVuYW50IGFkbWluIHdpbGwgZGlzYWJsZSBhbGwgb3RoZXIgc3VwcG9ydCByZXF1ZXN0cyBvbiB5b3VyIHRlbmFudC4nXG4gICAgKTtcbiAgICBjb25zdCBmaW5hbFF1ZXN0aW9uID0gZ2V0dGV4dCgnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nKTtcbiAgICBjb25zdCBib2R5ID0gW1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoY29tcGFueU5hbWUgPyB0ZXh0V2l0aENvbXBhbnkgOiB0ZXh0V2l0aG91dENvbXBhbnksIHtcbiAgICAgICAgY29tcGFueU5hbWVcbiAgICAgIH0pLFxuICAgICAgaXNUZW5hbnRBZG1pbiA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRlbmFudEFkbWluTm90ZSkgOiAnJyxcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGZpbmFsUXVlc3Rpb24pXG4gICAgXVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLmpvaW4oJyAnKTtcblxuICAgIGNvbnN0IGxhYmVscyA9IHtcbiAgICAgIG9rOiBnZXR0ZXh0KCdEZWFjdGl2YXRlIGFjY2VzcycpLFxuICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKVxuICAgIH07XG5cbiAgICBjb25zdCBzdWNjZXNzTXNnID0gZ2V0dGV4dCgnU3VwcG9ydCB1c2VyIGFjY2VzcyBkZWFjdGl2YXRlZC4nKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtKHRpdGxlLCBib2R5LCBTdGF0dXMuREFOR0VSLCBsYWJlbHMpO1xuICAgICAgYXdhaXQgdGhpcy50ZW5hbnRTZXJ2aWNlLmRpc2FibGVTdXBwb3J0VXNlcigpO1xuICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoQ3VycmVudFVzZXIoKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3Moc3VjY2Vzc01zZyk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIC8vIGludGVuZGVkIGVtcHR5XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnVpLnN0YXRlJC5nZXRWYWx1ZSgpO1xuICAgIHRoaXMuaXNDb2xsYXBzZWQgPSBzdGF0ZS5hY3RpdmF0ZVN1cHBvcnRVc2VyQXZhaWxhYmxlICYmIHN0YXRlLnN1cHBvcnRVcmw7XG4gICAgdGhpcy51c2VyU3VwcG9ydEF2YWlsYWJsZSA9IHRoaXMudWkuc3RhdGUkLmdldFZhbHVlKCkuYWN0aXZhdGVTdXBwb3J0VXNlckF2YWlsYWJsZTtcbiAgICB0aGlzLnN1cHBvcnRVcmwgPSB0aGlzLnVpLnN0YXRlJC5nZXRWYWx1ZSgpLnN1cHBvcnRVcmw7XG4gICAgdGhpcy5zdXBwb3J0VXNlckVuYWJsZWQkID0gdGhpcy51aS5jdXJyZW50VXNlci5waXBlKG1hcCh1c2VyID0+ICEhdXNlcj8uc3VwcG9ydFVzZXJFbmFibGVkKSk7XG4gICAgdGhpcy5pc0NvbGxhcHNpYmxlID0gdGhpcy51c2VyU3VwcG9ydEF2YWlsYWJsZSAmJiAhIXRoaXMuc3VwcG9ydFVybDtcbiAgICB0aGlzLnRleHRDbGFzcyA9IHRoaXMuaXNDb2xsYXBzaWJsZSA/ICd0ZXh0LXRydW5jYXRlIHRleHQtMTInIDogJ3RleHQtbWVkaXVtJztcbiAgICB0aGlzLmRyYXdlck9wZW4kID0gdGhpcy5oZWFkZXJTZXJ2aWNlLnJpZ2h0RHJhd2VyT3BlbiQ7XG4gICAgdGhpcy50YWJJbmRleCQgPSB0aGlzLmRyYXdlck9wZW4kLnBpcGUobWFwKGRyYXdlck9wZW4gPT4gKGRyYXdlck9wZW4gPyAnMCcgOiAnLTEnKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWZyZXNoQ3VycmVudFVzZXIoKSB7XG4gICAgY29uc3QgY3VycmVudFVzZXJSZXN1bHQgPSBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnQoKTtcbiAgICB0aGlzLnVpLmN1cnJlbnRVc2VyLm5leHQoY3VycmVudFVzZXJSZXN1bHQuZGF0YSk7XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgY2xhc3M9XCJjOHktcmlnaHQtZHJhd2VyX19saW5rIHN0aWNreS10b3BcIlxuICBbdGFiaW5kZXhdPVwidGFiSW5kZXgkIHwgYXN5bmNcIlxuICB0eXBlPVwiYnV0dG9uXCJcbiAgKGNsaWNrKT1cImlzQ29sbGFwc2VkID0gIWlzQ29sbGFwc2VkXCJcbiAgKm5nSWY9XCJpc0NvbGxhcHNpYmxlXCJcbj5cbiAgPGkgYzh5SWNvbj1cImM4eS1jOHktc3VwcG9ydFwiPjwvaT5cbiAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJvbGRcIj57eyAnU3VwcG9ydCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gIDxpXG4gICAgY2xhc3M9XCJtLWwtYXV0b1wiXG4gICAgYzh5SWNvbj1cImFuZ2xlLXVwXCJcbiAgICBbbmdDbGFzc109XCJ7ICdpY29uLXJvdGF0ZS0xODAnOiBpc0NvbGxhcHNlZCB9XCJcbiAgPjwvaT5cbjwvYnV0dG9uPlxuPGRpdlxuICBjbGFzcz1cImNvbGxhcHNlXCJcbiAgaWQ9XCJjb2xsYXBzZVN1cHBvcnRcIlxuICBbY29sbGFwc2VdPVwiaXNDb2xsYXBzZWRcIlxuICBbaXNBbmltYXRlZF09XCJ0cnVlXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYzh5LXJpZ2h0LWRyYXdlcl9fbGlua1wiXG4gICAgdGl0bGU9XCJ7eyAnQWN0aXZhdGUgc3VwcG9ydCBhY2Nlc3MnIHwgdHJhbnNsYXRlIH19XCJcbiAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXgkIHwgYXN5bmNcIlxuICAgICpuZ0lmPVwiIShzdXBwb3J0VXNlckVuYWJsZWQkIHwgYXN5bmMpICYmIHVzZXJTdXBwb3J0QXZhaWxhYmxlXCJcbiAgICAoY2xpY2spPVwiYWN0aXZhdGVTdXBwb3J0QWNjZXNzKClcIlxuICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgW2FjdGlvbk5hbWVdPVwiUFJPRFVDVF9FWFBFUklFTkNFLlFVSUNLX0xJTktTLkVWRU5UUy5RVUlDS19MSU5LX1JJR0hUX0RSQVdFUlwiXG4gID5cbiAgICA8aVxuICAgICAgYzh5SWNvbj1cImM4eS1jOHktc3VwcG9ydFwiXG4gICAgICAqbmdJZj1cIiFpc0NvbGxhcHNpYmxlXCJcbiAgICA+PC9pPlxuICAgIDxzcGFuXG4gICAgICBbY2xhc3NdPVwidGV4dENsYXNzXCJcbiAgICAgIHRpdGxlPVwie3sgJ0FjdGl2YXRlIHN1cHBvcnQgYWNjZXNzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgPlxuICAgICAge3sgJ0FjdGl2YXRlIHN1cHBvcnQgYWNjZXNzJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImM4eS1yaWdodC1kcmF3ZXJfX2xpbmtcIlxuICAgIHRpdGxlPVwie3sgJ0RlYWN0aXZhdGUgc3VwcG9ydCBhY2Nlc3MnIHwgdHJhbnNsYXRlIH19XCJcbiAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXgkIHwgYXN5bmNcIlxuICAgICpuZ0lmPVwiKHN1cHBvcnRVc2VyRW5hYmxlZCQgfCBhc3luYykgJiYgdXNlclN1cHBvcnRBdmFpbGFibGVcIlxuICAgIChjbGljayk9XCJkZWFjdGl2YXRlU3VwcG9ydEFjY2VzcygpXCJcbiAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgIFthY3Rpb25OYW1lXT1cIlBST0RVQ1RfRVhQRVJJRU5DRS5RVUlDS19MSU5LUy5FVkVOVFMuUVVJQ0tfTElOS19SSUdIVF9EUkFXRVJcIlxuICA+XG4gICAgPGlcbiAgICAgIGM4eUljb249XCJjOHktYzh5LXN1cHBvcnRcIlxuICAgICAgKm5nSWY9XCIhaXNDb2xsYXBzaWJsZVwiXG4gICAgPjwvaT5cbiAgICA8c3BhblxuICAgICAgW2NsYXNzXT1cInRleHRDbGFzc1wiXG4gICAgICB0aXRsZT1cInt7ICdEZWFjdGl2YXRlIHN1cHBvcnQgYWNjZXNzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgPlxuICAgICAge3sgJ0RlYWN0aXZhdGUgc3VwcG9ydCBhY2Nlc3MnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbiAgPGFcbiAgICBjbGFzcz1cImM4eS1yaWdodC1kcmF3ZXJfX2xpbmtcIlxuICAgIHRpdGxlPVwie3sgJ1JlcXVlc3Qgc3VwcG9ydCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIFt0YWJpbmRleF09XCJ0YWJJbmRleCQgfCBhc3luY1wiXG4gICAgcm9sZT1cImJ1dHRvblwiXG4gICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAqbmdJZj1cInN1cHBvcnRVcmxcIlxuICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgIFtocmVmXT1cInN1cHBvcnRVcmxcIlxuICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgW2FjdGlvbk5hbWVdPVwiUFJPRFVDVF9FWFBFUklFTkNFLlFVSUNLX0xJTktTLkVWRU5UUy5RVUlDS19MSU5LX1JJR0hUX0RSQVdFUlwiXG4gID5cbiAgICA8aVxuICAgICAgYzh5SWNvbj1cImM4eS1jOHktc3VwcG9ydFwiXG4gICAgICAqbmdJZj1cIiFpc0NvbGxhcHNpYmxlXCJcbiAgICA+PC9pPlxuICAgIDxzcGFuXG4gICAgICBbY2xhc3NdPVwidGV4dENsYXNzXCJcbiAgICAgIHRpdGxlPVwie3sgJ1JlcXVlc3Qgc3VwcG9ydCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgID5cbiAgICAgIHt7ICdSZXF1ZXN0IHN1cHBvcnQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICA8L2E+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -140,6 +140,7 @@ export class DropAreaComponent {
|
|
|
140
140
|
this.clearErrors();
|
|
141
141
|
this.dropped.emit(null);
|
|
142
142
|
this.onChange(null);
|
|
143
|
+
this.onTouched();
|
|
143
144
|
this.cd.markForCheck();
|
|
144
145
|
}
|
|
145
146
|
writeValue(value) {
|
|
@@ -159,6 +160,7 @@ export class DropAreaComponent {
|
|
|
159
160
|
this.onTouched = fn;
|
|
160
161
|
}
|
|
161
162
|
async onFilesSelected(files) {
|
|
163
|
+
this.onTouched();
|
|
162
164
|
const hasValidNameLength = this.filesService.checkMaxLength(files);
|
|
163
165
|
if (!hasValidNameLength) {
|
|
164
166
|
this.onFileInvalidNameLength();
|
|
@@ -351,4 +353,4 @@ var ReadAsType;
|
|
|
351
353
|
ReadAsType[ReadAsType["ARRAY_BUFFER"] = 2] = "ARRAY_BUFFER";
|
|
352
354
|
ReadAsType[ReadAsType["BINARY_STRING"] = 3] = "BINARY_STRING";
|
|
353
355
|
})(ReadAsType || (ReadAsType = {}));
|
|
354
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZHJvcC1hcmVhL2Ryb3AtYXJlYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2Ryb3AtYXJlYS9kcm9wLWFyZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7O0FBRTFDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBT0gsTUFBTSxPQUFPLGlCQUFpQjtJQXdENUIsWUFDVSxFQUFxQixFQUNyQixZQUEwQixFQUMxQixTQUEyQixFQUMzQixLQUFnQixFQUNoQixHQUFlO1FBSmYsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUNoQixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBM0RoQixVQUFLLEdBQUcsT0FBTyxDQUFDLGFBQWEs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RSxlQUFlLGFBRWQsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzttTkFHL0UsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0UsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQTBCRyxNQUFNO3NCQUFkLEtBQUs7Z0JBUStCLElBQUk7c0JBQXhDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRyxJQUFJO3NCQUF6QyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0ksTUFBTTtzQkFBN0MsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQVd0QyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDOztBQXFTbkMsSUFBSyxVQUtKO0FBTEQsV0FBSyxVQUFVO0lBQ2IsMkNBQUksQ0FBQTtJQUNKLG1EQUFRLENBQUE7SUFDUiwyREFBWSxDQUFBO0lBQ1osNkRBQWEsQ0FBQTtBQUNmLENBQUMsRUFMSSxVQUFVLEtBQVYsVUFBVSxRQUtkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGdldCwgbWFwLCBzb21lLCBtaW4gfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQnl0ZXNQaXBlIH0gZnJvbSAnLi4vY29tbW9uL2J5dGVzLnBpcGUnO1xuaW1wb3J0IHsgRmlsZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL2ZpbGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4vZ2V0dGV4dCc7XG5cbi8qKlxuICogQSBkcm9wLXpvbmUgd2hpY2ggaXMgYSBmaWxlIHNlbGVjdG9yIGFsbG93aW5nIHVzZXJzIHRvIHNlbGVjdCBmaWxlKHMpIGZyb20gdGhlaXIgZmlsZSBzeXN0ZW0sIGVpdGhlciBuYXRpdmVseSBvciBieSBkcmFnIGFuZCBkcm9wLlxuICpcbiAqICMjIEV4YW1wbGU6XG4gKlxuICogYGBgaHRtbFxuICogIDxkaXY+XG4gKiAgICA8Yzh5LWRyb3AtYXJlYVxuICogICAgICAoZHJvcHBlZCk9XCJ1cGxvYWRGaWxlKCRldmVudClcIlxuICogICAgICBbaWNvbl09XCIndXBsb2FkJ1wiXG4gKiAgICAgIFthY2NlcHRdPVwiJy56aXAsLjd6LHZpZGVvJ1wiPlxuICogICAgPC9jOHktZHJvcC1hcmVhPlxuICogIDwvZGl2PlxuICogYGBgXG4gKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRyb3AtYXJlYScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wLWFyZWEuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogRHJvcEFyZWFDb21wb25lbnQsIG11bHRpOiB0cnVlIH1dXG59KVxuZXhwb3J0IGNsYXNzIERyb3BBcmVhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+O1xuICBASW5wdXQoKSB0aXRsZSA9IGdldHRleHQoJ1VwbG9hZCBmaWxlJyk7XG4gIEBJbnB1dCgpIG1lc3NhZ2UgPSBnZXR0ZXh0KCdEcm9wIGZpbGUgaGVyZScpO1xuICBASW5wdXQoKSBpY29uID0gJ3BsdXMtc3F1YXJlJztcbiAgQElucHV0KCkgbG9hZGluZ01lc3NhZ2UgPSBnZXR0ZXh0KCdVcGxvYWRpbmfigKYnKTtcbiAgQElucHV0KCkgZm9yY2VIaWRlTGlzdCA9IGZhbHNlO1xuICAvKiogQWZmZWN0cyBkaXNwbGF5aW5nIGJvdGggdGhlIGRyb3Agem9uZSBhbmQgdGhlIGxpc3Qgb2YgZHJvcHBlZCBmaWxlcy4gKi9cbiAgQElucHV0KCkgYWx3YXlzU2hvdyA9IGZhbHNlO1xuICBASW5wdXQoKSBjbGlja1RvT3BlbiA9IHRydWU7XG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcbiAgLyoqXG4gICAqIEN1cnJlbnQgcHJvZ3Jlc3Mgb2YgdGhlIHVwbG9hZCBhcyBhIHBlcmNlbnRhZ2UuIElmIG5vdCBnaXZlbiBhIHNwaW5uZXIgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBwcm9ncmVzcyA9IC0xOyAvLyAtMSA9IHNwaW5uZXJcbiAgQE91dHB1dCgpIGRyb3BwZWQ6IEV2ZW50RW1pdHRlcjxEcm9wcGVkRmlsZVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgbWF4QWxsb3dlZEZpbGVzID0gSW5maW5pdHk7XG4gIEBJbnB1dCgpIGZpbGVzOiBGaWxlTGlzdDtcbiAgQElucHV0KCkgbWF4RmlsZVNpemVJbk1lZ2FCeXRlczogbnVtYmVyO1xuICAvKiogU3BlY2lmaWVzIGEgZmlsdGVyIGZvciB3aGF0IGZpbGUgdHlwZXMgdGhlIHVzZXIgY2FuIHBpY2sgZnJvbSB0aGUgZmlsZSBpbnB1dCBkaWFsb2cgYm94LlxuICAgKiAjIyBFeGFtcGxlOlxuICAgKlxuICAgKiBTcGVjaWZ5IGZpbGUgdHlwZXMgYnkgZXh0ZW5zaW9uczpcbiAgICogYGBgaHRtbFxuICAgKiAgLi4uXG4gICAqICBbYWNjZXB0XT1cIicuemlwLC43eidcIlxuICAgKiAgLi4uXG4gICAqIGBgYFxuICAgKlxuICAgKiBTcGVjaWZ5IGZpbGUgdHlwZXMgYnkgZXh0ZW5zaW9ucyBhbmQgZ2VuZXJpYyB0eXBlcyBbR0VORVJJQ19GSUxFX1RZUEVde0BsaW5rIEdFTkVSSUNfRklMRV9UWVBFfTpcbiAgICogYGBgaHRtbFxuICAgKiAgLi4uXG4gICAqICBbYWNjZXB0XT1cIicucGRmLGFyY2hpdmUnXCJcbiAgICogIC4uLlxuICAgKiBgYGBcbiAgICpcbiAgICogU3BlY2lmeSBmaWxlIHR5cGVzIGJ5IGdlbmVyaWMgdHlwZXMgW0dFTkVSSUNfRklMRV9UWVBFXXtAbGluayBHRU5FUklDX0ZJTEVfVFlQRX06XG4gICAqICBgYGBodG1sXG4gICAqICAuLi5cbiAgICogIFthY2NlcHRdPVwiJ2FyY2hpdmUsdmlkZW8nXCJcbiAgICogIC4uLlxuICAgKlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgpIGFjY2VwdDogc3RyaW5nO1xuICBpc092ZXIgPSBmYWxzZTtcbiAgZXJyb3JzID0gZmFsc2U7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBmaWxlc05hbWVTdHJpbmc6IHN0cmluZztcbiAgYWNjZXB0ZWRFeHRzOiBzdHJpbmdbXTtcbiAgaGFzRHJvcEFyZWFTbWFsbENsYXNzOiBib29sZWFuO1xuXG4gIEBWaWV3Q2hpbGQoJ2FyZWEnLCB7IHN0YXRpYzogdHJ1ZSB9KSBhcmVhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd6b25lJywgeyBzdGF0aWM6IGZhbHNlIH0pIHpvbmU6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3BpY2tlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBwaWNrZXI6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBmaWxlc1NlcnZpY2U6IEZpbGVzU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGJ5dGVzOiBCeXRlc1BpcGUsXG4gICAgcHJpdmF0ZSByZWY6IEVsZW1lbnRSZWZcbiAgKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgb25rZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgIHRoaXMucGlja2VyLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjY2VwdGVkRXh0cyA9IHRoaXMuZmlsZXNTZXJ2aWNlLmV4dHJhY3RGaWxlRXh0ZW5zaW9ucyh0aGlzLmFjY2VwdCkubWFwKHQgPT4gYC4ke3R9YCk7XG4gICAgdGhpcy5hbHdheXNTaG93ID0gdGhpcy5hbHdheXNTaG93IHx8IHRoaXMuYXJlYS5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA9PT0gMDtcblxuICAgIGlmICh0aGlzLmZpbGVzICYmIHRoaXMuaXNGaWxlc0FuT2JqZWN0T3JBcnJheSgpICYmIHRoaXMuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vbkZpbGVzU2VsZWN0ZWQodGhpcy5maWxlcyk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIHRoaXMuaGFzRHJvcEFyZWFTbWFsbENsYXNzID0gdGhpcy5yZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2Ryb3AtYXJlYS1zbScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHN0eWxlIG9mIHRoZSBkcm9wIHpvbmUgZWxlbWVudCB3aGVuIGEgZmlsZSBpcyBkcmFnZ2VkIG92ZXIgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnpvbmUubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmFyZWEubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgKyAncHgnO1xuICAgIHRoaXMub25PdmVyKCk7XG4gIH1cblxuICAvKipcbiAgICogU2hvd3MgY29tcHV0ZXIgYnJvd3NlciB3aXRoIGZpbGVzIHRvIGRyb3AgaW50byBkcm9wLWFyZWEgem9uZS5cbiAgICovXG4gIHNob3dQaWNrZXIoJGV2ZW50Pyk6IHZvaWQge1xuICAgIHRoaXMucHJldmVudERlZmF1bHQoJGV2ZW50KTtcbiAgICB0aGlzLnBpY2tlci5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy5waWNrZXIubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIGZpbGUgaXMgb24gb3ZlciBkcm9wIGFyZWEsIGJ1dCBub3QgZHJvcHBlZC5cbiAgICovXG4gIG9uT3ZlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNPdmVyKSB7XG4gICAgICB0aGlzLmlzT3ZlciA9IHRydWU7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIHRoaXMucHJldmVudERlZmF1bHQpO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIHRoaXMucHJldmVudERlZmF1bHQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiBmaWxlIGlzIGRyb3BwZWQuXG4gICAqL1xuICBvblBpY2soJGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5lcnJvcnMgPSBmYWxzZTtcbiAgICB0aGlzLnByZXZlbnREZWZhdWx0KCRldmVudCk7XG4gICAgdGhpcy5vbkZpbGVzU2VsZWN0ZWQoJGV2ZW50LnRhcmdldC5maWxlcyk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGZpbGUgd2hlbiBpdCBpcyBkcm9wcGVkIGludG8gZHJvcC1hcmVhLlxuICAgKi9cbiAgb25Ecm9wKCRldmVudCk6IHZvaWQge1xuICAgIHRoaXMucHJldmVudERlZmF1bHQoJGV2ZW50KTtcbiAgICB0aGlzLm9uRmlsZXNTZWxlY3RlZCgkZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcbiAgICB0aGlzLnN0b3BEcmFnZ2luZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBjb25kaXRpb24gd2hhdCBzaG91bGQgYmUgZGlzcGxheWVkOiBkcm9wLWFyZWEgem9uZSBvciBsaXN0IG9mIGRyb3BwZWQgZmlsZXMuXG4gICAqL1xuICBzaG91bGRTaG93RmlsZXNMaXN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmlzRmlsZXNBbk9iamVjdE9yQXJyYXkoKSAmJlxuICAgICAgIXRoaXMuZm9yY2VIaWRlTGlzdCAmJlxuICAgICAgdGhpcy5hbHdheXNTaG93ICYmXG4gICAgICAhdGhpcy5pc0ZpbGVzQXJyYXlFbXB0eSgpICYmXG4gICAgICAhdGhpcy5oYXNFbXB0eUZpbGVzKCkgJiZcbiAgICAgICF0aGlzLmlzVG9vTWFueUZpbGVzKClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIGZpbGUgaXMgcGlja2VkIG92ZXIgd2ViIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgc3RvcERyYWdnaW5nKCk6IHZvaWQge1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5wcmV2ZW50RGVmYXVsdCk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJvcCcsIHRoaXMucHJldmVudERlZmF1bHQpO1xuICAgIHRoaXMuaXNPdmVyID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGZpbGVzIGFscmVhZHkgZHJvcHBlZCBmaWxlcy5cbiAgICovXG4gIG9uRGVsZXRlKCkge1xuICAgIGRlbGV0ZSB0aGlzLmZpbGVzO1xuICAgIGRlbGV0ZSB0aGlzLmZpbGVzTmFtZVN0cmluZztcbiAgICB0aGlzLmNsZWFyRXJyb3JzKCk7XG4gICAgdGhpcy5kcm9wcGVkLmVtaXQobnVsbCk7XG4gICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gXyA9PiB1bmRlZmluZWQ7XG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmZpbGVzID0gdmFsdWU7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5vbkRlbGV0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbGVzTmFtZVN0cmluZyA9IHRoaXMuZ2V0RmlsZXNOYW1lc0FzU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgb25GaWxlc1NlbGVjdGVkKGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGNvbnN0IGhhc1ZhbGlkTmFtZUxlbmd0aCA9IHRoaXMuZmlsZXNTZXJ2aWNlLmNoZWNrTWF4TGVuZ3RoKGZpbGVzKTtcbiAgICBpZiAoIWhhc1ZhbGlkTmFtZUxlbmd0aCkge1xuICAgICAgdGhpcy5vbkZpbGVJbnZhbGlkTmFtZUxlbmd0aCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhhdmVWYWxpZFR5cGVzID0gdGhpcy5maWxlc1NlcnZpY2UuaGF2ZVZhbGlkRXh0ZW5zaW9ucyhmaWxlcywgdGhpcy5hY2NlcHQpO1xuICAgIGlmICghaGF2ZVZhbGlkVHlwZXMpIHtcbiAgICAgIHRoaXMub25GaWxlSW52YWxpZFR5cGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtYXhGaWxlU2l6ZUluQnl0ZXMgPSB0aGlzLm1heEZpbGVTaXplSW5NZWdhQnl0ZXNcbiAgICAgID8gdGhpcy5jb252ZXJ0TWVnYUJ5dGVzVG9CeXRlcyh0aGlzLm1heEZpbGVTaXplSW5NZWdhQnl0ZXMpXG4gICAgICA6IG51bGw7XG4gICAgY29uc3QgaGF2ZVZhbGlkU2l6ZXMgPSBhd2FpdCB0aGlzLmZpbGVzU2VydmljZS5oYXZlVmFsaWRTaXplcyhmaWxlcywgbWF4RmlsZVNpemVJbkJ5dGVzKTtcbiAgICBpZiAoIWhhdmVWYWxpZFNpemVzKSB7XG4gICAgICBhd2FpdCB0aGlzLm9uRmlsZUludmFsaWRTaXplKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5maWxlcyA9IGZpbGVzO1xuICAgIHRoaXMuZmlsZXNOYW1lU3RyaW5nID0gdGhpcy5nZXRGaWxlc05hbWVzQXNTdHJpbmcoZmlsZXMpO1xuICAgIHRoaXMuZXJyb3JzID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5pc1Rvb01hbnlGaWxlcygpKSB7XG4gICAgICB0aGlzLmVycm9ycyA9IHRydWU7XG4gICAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMoeyB0b29NYW55RmlsZXM6IHRydWUgfSk7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGdldHRleHQoJ1RvbyBtYW55IGZpbGVzIHNlbGVjdGVkLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0VtcHR5RmlsZXMoKSkge1xuICAgICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0RXJyb3JzKHsgZW1wdHlGaWxlczogdHJ1ZSB9KTtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZ2V0dGV4dCgnRmlsZSBtdXN0IG5vdCBiZSBlbXB0eSwgc2VsZWN0IGFub3RoZXIgb25lLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRyb3BwZWRGaWxlczogRHJvcHBlZEZpbGVbXSA9IHRoaXMuY29tcG9zZShmaWxlcyk7XG4gICAgdGhpcy5kcm9wcGVkLmVtaXQoZHJvcHBlZEZpbGVzKTtcbiAgICB0aGlzLm9uQ2hhbmdlKGRyb3BwZWRGaWxlcyk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgb25GaWxlSW52YWxpZE5hbWVMZW5ndGgoKSB7XG4gICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyh7IGludmFsaWROYW1lTGVuZ3RoOiB0cnVlIH0pO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZ2V0dGV4dCgnVGhlIGZpbGVuYW1lIGlzIHRvbyBsb25nLicpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZpbGVJbnZhbGlkVHlwZSgpIHtcbiAgICB0aGlzLmVycm9ycyA9IHRydWU7XG4gICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0RXJyb3JzKHsgaW52YWxpZFR5cGU6IHRydWUgfSk7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBnZXR0ZXh0KCdUaGUgc2VsZWN0ZWQgZmlsZSBpcyBub3Qgc3VwcG9ydGVkLicpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvbkZpbGVJbnZhbGlkU2l6ZSgpIHtcbiAgICBjb25zdCBtYXhGaWxlU2l6ZUluQnl0ZXMgPSB0aGlzLm1heEZpbGVTaXplSW5NZWdhQnl0ZXNcbiAgICAgID8gdGhpcy5jb252ZXJ0TWVnYUJ5dGVzVG9CeXRlcyh0aGlzLm1heEZpbGVTaXplSW5NZWdhQnl0ZXMpXG4gICAgICA6IG51bGw7XG4gICAgY29uc3QgbXNnID0gZ2V0dGV4dCgnVGhlIHNlbGVjdGVkIGZpbGUgaXMgdG9vIGxhcmdlLiBUaGUgc2l6ZSBsaW1pdCBpcyB7eyBsaW1pdCB9fS4nKTtcbiAgICBjb25zdCBsaW1pdCA9IHRoaXMuYnl0ZXMudHJhbnNmb3JtKFxuICAgICAgbWluKFttYXhGaWxlU2l6ZUluQnl0ZXMsIGF3YWl0IHRoaXMuZmlsZXNTZXJ2aWNlLmxvYWRCeXRlc1NpemVMaW1pdCgpXSlcbiAgICApO1xuICAgIHRoaXMuZXJyb3JzID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMoeyBpbnZhbGlkU2l6ZTogdHJ1ZSB9KTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobXNnLCB7IGxpbWl0IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0TWVnYUJ5dGVzVG9CeXRlcyhtYXhGaWxlU2l6ZUluTWVnYUJ5dGVzOiBTaXplSW5NZWdhQnl0ZXMpOiBTaXplSW5CeXRlcyB7XG4gICAgcmV0dXJuIG1heEZpbGVTaXplSW5NZWdhQnl0ZXMgKiAxXzA0OF81NzY7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbGVzTmFtZXNBc1N0cmluZyhmaWxlczogRmlsZUxpc3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBtYXAoZmlsZXMsICh7IG5hbWUgfSkgPT4gbmFtZSkuam9pbignLCAnKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNGaWxlc0FycmF5RW1wdHkoKSB7XG4gICAgcmV0dXJuIGdldCh0aGlzLCAnZmlsZXMubGVuZ3RoJywgMCkgPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzVG9vTWFueUZpbGVzKCkge1xuICAgIHJldHVybiBnZXQodGhpcywgJ2ZpbGVzLmxlbmd0aCcsIDApID4gdGhpcy5tYXhBbGxvd2VkRmlsZXM7XG4gIH1cblxuICBwcml2YXRlIGlzRmlsZXNBbk9iamVjdE9yQXJyYXkoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmZpbGVzID09PSAnb2JqZWN0JztcbiAgfVxuXG4gIHByaXZhdGUgaGFzRW1wdHlGaWxlcygpIHtcbiAgICBsZXQgcmVzdWx0ID0gdHJ1ZTtcbiAgICBpZiAoIXRoaXMuaXNGaWxlc0FycmF5RW1wdHkoKSkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5pc0FueUZpbGVFbXB0eSgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FueUZpbGVFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc29tZShBcnJheS5mcm9tKHRoaXMuZmlsZXMpLCBbJ3NpemUnLCAwXSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRXJyb3JzKCkge1xuICAgIGRlbGV0ZSB0aGlzLmVycm9yTWVzc2FnZTtcbiAgICB0aGlzLmVycm9ycyA9IGZhbHNlO1xuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyhudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudERlZmF1bHQoJGV2ZW50Pykge1xuICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29tcG9zZShmaWxlczogRmlsZUxpc3QpOiBEcm9wcGVkRmlsZVtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShmaWxlcykubWFwKGZpbGUgPT4gKHtcbiAgICAgIGZpbGUsXG4gICAgICByZWFkQXNKc29uOiBhc3luYyAoKSA9PiBKU09OLnBhcnNlKGF3YWl0IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLlRFWFQpKSxcbiAgICAgIHJlYWRBc1RleHQ6IGFzeW5jICgpID0+IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLlRFWFQpLFxuICAgICAgcmVhZEFzQXJyYXlCdWZmZXI6IGFzeW5jICgpID0+IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLkFSUkFZX0JVRkZFUiksXG4gICAgICByZWFkQXNCaW5hcnlTdHJpbmc6IGFzeW5jICgpID0+IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLkJJTkFSWV9TVFJJTkcpLFxuICAgICAgcmVhZEFzRGF0YVVSTDogYXN5bmMgKCkgPT4gdGhpcy5yZWFkKGZpbGUsIFJlYWRBc1R5cGUuREFUQV9VUkwpXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWFkKGZpbGUsIHR5cGU6IFJlYWRBc1R5cGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBSZWFkQXNUeXBlLlRFWFQ6IHtcbiAgICAgICAgICByZWFkZXIucmVhZEFzVGV4dChmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFJlYWRBc1R5cGUuQVJSQVlfQlVGRkVSOiB7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUmVhZEFzVHlwZS5CSU5BUllfU1RSSU5HOiB7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFJlYWRBc1R5cGUuREFUQV9VUkw6IHtcbiAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHRoaXMub25Mb2FkKHJlYWRlciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25Mb2FkKHJlYWRlciwgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgaWYgKHJlYWRlci5yZWFkeVN0YXRlICE9PSAyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChyZWFkZXIuZXJyb3IpIHtcbiAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpO1xuICAgIH1cbiAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcHBlZEZpbGUge1xuICBmaWxlOiBGaWxlO1xuICByZWFkQXNUZXh0KCk7XG4gIHJlYWRBc0FycmF5QnVmZmVyKCk7XG4gIHJlYWRBc0JpbmFyeVN0cmluZygpO1xuICByZWFkQXNEYXRhVVJMKCk7XG4gIHJlYWRBc0pzb24oKTtcbn1cblxuZW51bSBSZWFkQXNUeXBlIHtcbiAgVEVYVCxcbiAgREFUQV9VUkwsXG4gIEFSUkFZX0JVRkZFUixcbiAgQklOQVJZX1NUUklOR1xufVxuXG50eXBlIFNpemVJbk1lZ2FCeXRlcyA9IG51bWJlcjtcbnR5cGUgU2l6ZUluQnl0ZXMgPSBudW1iZXI7XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZHJvcC16b25lXCJcbiAgW3N0eWxlLnBvaW50ZXJFdmVudHNdPVwibG9hZGluZyA/ICdub25lJyA6ICdhdXRvJ1wiXG4gIFtzdHlsZS5kaXNwbGF5XT1cImlzT3ZlciB8fCBhbHdheXNTaG93IHx8IGxvYWRpbmcgPyAnYmxvY2snIDogJ25vbmUnXCJcbiAgdGFiaW5kZXg9XCIwXCJcbiAgKm5nSWY9XCIhc2hvdWxkU2hvd0ZpbGVzTGlzdCgpXCJcbiAgW25nQ2xhc3NdPVwieyAnaGFzLWVycm9ycyc6IGVycm9ycywgZGlzYWJsZWQ6IGZvcm1Db250cm9sPy5kaXNhYmxlZCB9XCJcbiAgI3pvbmVcbiAgKGRyYWdsZWF2ZSk9XCJzdG9wRHJhZ2dpbmcoKVwiXG4gIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgKGRyYWdvdmVyKT1cIm9uT3ZlcigpXCJcbiAgKGNsaWNrKT1cInNob3dQaWNrZXIoJGV2ZW50KVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZpbGUtcGxhY2Vob2xkZXJcIlxuICAgIGRhdGEtY3k9XCJjOHktZmlsZS1wbGFjZWhvbGRlci0tZHJvcC16b25lXCJcbiAgICBbbmdDbGFzc109XCJ7ICdkcmFnLW92ZXInOiBpc092ZXIgfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleCBkLWNvbCBwLTQgZmxleC1jZW50ZXJcIlxuICAgICAgKm5nSWY9XCJsb2FkaW5nXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MgcHJvZ3Jlc3Mtc3RyaXBlZCBhY3RpdmUgbS0wXCJcbiAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDUwJVwiXG4gICAgICAgICpuZ0lmPVwicHJvZ3Jlc3MgIT09IC0xXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MtYmFyXCJcbiAgICAgICAgICBbc3R5bGUud2lkdGhdPVwicHJvZ3Jlc3MgKyAnJSdcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJvZ3Jlc3MgKyAnJSdcIlxuICAgICAgICAgIGFyaWEtdmFsdWVub3c9XCIwXCJcbiAgICAgICAgICBhcmlhLXZhbHVlbWluPVwiMFwiXG4gICAgICAgICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiXG4gICAgICAgICAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic3Bpbm5lci1zbmFrZVwiXG4gICAgICAgICpuZ0lmPVwicHJvZ3Jlc3MgPT09IC0xXCJcbiAgICAgID48L2Rpdj5cbiAgICAgIDxwXG4gICAgICAgIGNsYXNzPVwibS10LWF1dG8gbS1iLWF1dG8gbS1yLThcIlxuICAgICAgICAqbmdJZj1cIiFoYXNEcm9wQXJlYVNtYWxsQ2xhc3NcIlxuICAgICAgPlxuICAgICAgICB7eyBsb2FkaW5nTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiaGludC1wbGFjZWhvbGRlciBwb2ludGVyXCJcbiAgICAgICpuZ0lmPVwiIWxvYWRpbmdcIlxuICAgICAgZGF0YS1jeT1cImRyb3Atem9uZS0taGludC1wbGFjZWhvbGRlclwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJkbHQtYzh5LWljb24te3sgaWNvbiB9fVwiPjwvaT5cbiAgICAgIDxwICpuZ0lmPVwiIWVycm9yc1wiPlxuICAgICAgICA8Yj57eyBtZXNzYWdlIHwgdHJhbnNsYXRlIH19PC9iPlxuICAgICAgICA8YnIgLz5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cImFsd2F5c1Nob3cgJiYgY2xpY2tUb09wZW5cIlxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICA+PC9zcGFuPlxuICAgICAgPC9wPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImhhcy1lcnJvcnNcIlxuICAgICAgICAqbmdJZj1cImVycm9yc1wiXG4gICAgICA+XG4gICAgICAgIDxwIGNsYXNzPVwiZm9ybS1jb250cm9sLWZlZWRiYWNrLW1lc3NhZ2VcIj5cbiAgICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXZcbiAgY2xhc3M9XCJkcm9wLXpvbmVcIlxuICBbc3R5bGUuZGlzcGxheV09XCJpc092ZXIgfHwgYWx3YXlzU2hvdyB8fCBsb2FkaW5nID8gJ2Jsb2NrJyA6ICdub25lJ1wiXG4gIHRhYmluZGV4PVwiMFwiXG4gICpuZ0lmPVwic2hvdWxkU2hvd0ZpbGVzTGlzdCgpXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicC1hYnNvbHV0ZSBwLTQgZml0LXcgZml0LWggZC1mbGV4IGQtY29sIGotYy1jZW50ZXIgYS1pLWNlbnRlclwiXG4gICAgKm5nSWY9XCJsb2FkaW5nXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicHJvZ3Jlc3MgcHJvZ3Jlc3Mtc3RyaXBlZCBhY3RpdmUgbS0wXCJcbiAgICAgIHN0eWxlPVwibWluLXdpZHRoOiA4MCVcIlxuICAgICAgKm5nSWY9XCJwcm9ncmVzcyAhPT0gLTFcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJwcm9ncmVzcy1iYXJcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwicHJvZ3Jlc3MgKyAnJSdcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByb2dyZXNzICsgJyUnXCJcbiAgICAgICAgYXJpYS12YWx1ZW5vdz1cIjBcIlxuICAgICAgICBhcmlhLXZhbHVlbWluPVwiMFwiXG4gICAgICAgIGFyaWEtdmFsdWVtYXg9XCIxMDBcIlxuICAgICAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxuICAgICAgPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJwcm9ncmVzcyA9PT0gLTFcIj5cbiAgICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICAgIDwvZGl2PlxuICAgIDxwXG4gICAgICBjbGFzcz1cIm0tYi04XCJcbiAgICAgICpuZ0lmPVwiIWhhc0Ryb3BBcmVhU21hbGxDbGFzc1wiXG4gICAgPlxuICAgICAgPHN0cm9uZz5cbiAgICAgICAge3sgbG9hZGluZ01lc3NhZ2UgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvc3Ryb25nPlxuICAgIDwvcD5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZpbGUtcGxhY2Vob2xkZXIgcC00XCJcbiAgICAqbmdJZj1cIiFsb2FkaW5nXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggcC00IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwiaWNvbi0yMCBtLXItOFwiXG4gICAgICAgIGM4eUljb249XCJmaWxlLW9cIlxuICAgICAgPjwvaT5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgIHRpdGxlPVwie3sgZmlsZXNOYW1lU3RyaW5nIH19XCJcbiAgICAgID5cbiAgICAgICAge3sgZmlsZXNOYW1lU3RyaW5nIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3QgYnRuLWRvdC0tZGFuZ2VyIHNob3dPbkhvdmVyIG0tbC1hdXRvXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnUmVtb3ZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlbW92ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgPGlcbiAgICAgICAgICBjOHlJY29uPVwibWludXMtY2lyY2xlXCJcbiAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUoKVwiXG4gICAgICAgID48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxsYWJlbFxuICBjbGFzcz1cInNyLW9ubHlcIlxuICBmb3I9XCJmaWxlXCJcbj5cbiAge3sgJ1NlbGVjdCBmaWxlJyB8IHRyYW5zbGF0ZSB9fVxuPC9sYWJlbD5cbjxpbnB1dFxuICBjbGFzcz1cImhpZGRlblwiXG4gIGlkPVwiZmlsZVwiXG4gIHR5cGU9XCJmaWxlXCJcbiAgI3BpY2tlclxuICAqbmdJZj1cImNsaWNrVG9PcGVuXCJcbiAgKGNoYW5nZSk9XCJvblBpY2soJGV2ZW50KVwiXG4gIChjbGljayk9XCJwaWNrZXIuZm9jdXMoKVwiXG4gIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcbiAgW2FjY2VwdF09XCJhY2NlcHRlZEV4dHNcIlxuICBbbXVsdGlwbGVdPVwibWF4QWxsb3dlZEZpbGVzID4gMVwiXG4gIFtkaXNhYmxlZF09XCJmb3JtQ29udHJvbD8uZGlzYWJsZWRcIlxuLz5cbjxkaXZcbiAgI2FyZWFcbiAgW2hpZGRlbl09XCJpc092ZXIgfHwgbG9hZGluZ1wiXG4gIChkcmFnb3Zlcik9XCJ0b2dnbGUoKVwiXG4+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|
|
356
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZHJvcC1hcmVhL2Ryb3AtYXJlYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2Ryb3AtYXJlYS9kcm9wLWFyZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7O0FBRTFDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBT0gsTUFBTSxPQUFPLGlCQUFpQjtJQXdENUIsWUFDVSxFQUFxQixFQUNyQixZQUEwQixFQUMxQixTQUEyQixFQUMzQixLQUFnQixFQUNoQixHQUFlO1FBSmYsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUNoQixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBM0RoQixVQUFLLEdBQUcsT0FBTyxDQUFDLGFBQWEs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ICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZ2V0LCBtYXAsIHNvbWUsIG1pbiB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCeXRlc1BpcGUgfSBmcm9tICcuLi9jb21tb24vYnl0ZXMucGlwZSc7XG5pbXBvcnQgeyBGaWxlc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vZmlsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcblxuLyoqXG4gKiBBIGRyb3Atem9uZSB3aGljaCBpcyBhIGZpbGUgc2VsZWN0b3IgYWxsb3dpbmcgdXNlcnMgdG8gc2VsZWN0IGZpbGUocykgZnJvbSB0aGVpciBmaWxlIHN5c3RlbSwgZWl0aGVyIG5hdGl2ZWx5IG9yIGJ5IGRyYWcgYW5kIGRyb3AuXG4gKlxuICogIyMgRXhhbXBsZTpcbiAqXG4gKiBgYGBodG1sXG4gKiAgPGRpdj5cbiAqICAgIDxjOHktZHJvcC1hcmVhXG4gKiAgICAgIChkcm9wcGVkKT1cInVwbG9hZEZpbGUoJGV2ZW50KVwiXG4gKiAgICAgIFtpY29uXT1cIid1cGxvYWQnXCJcbiAqICAgICAgW2FjY2VwdF09XCInLnppcCwuN3osdmlkZW8nXCI+XG4gKiAgICA8L2M4eS1kcm9wLWFyZWE+XG4gKiAgPC9kaXY+XG4gKiBgYGBcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZHJvcC1hcmVhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3AtYXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBEcm9wQXJlYUNvbXBvbmVudCwgbXVsdGk6IHRydWUgfV1cbn0pXG5leHBvcnQgY2xhc3MgRHJvcEFyZWFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIEBJbnB1dCgpIHRpdGxlID0gZ2V0dGV4dCgnVXBsb2FkIGZpbGUnKTtcbiAgQElucHV0KCkgbWVzc2FnZSA9IGdldHRleHQoJ0Ryb3AgZmlsZSBoZXJlJyk7XG4gIEBJbnB1dCgpIGljb24gPSAncGx1cy1zcXVhcmUnO1xuICBASW5wdXQoKSBsb2FkaW5nTWVzc2FnZSA9IGdldHRleHQoJ1VwbG9hZGluZ+KApicpO1xuICBASW5wdXQoKSBmb3JjZUhpZGVMaXN0ID0gZmFsc2U7XG4gIC8qKiBBZmZlY3RzIGRpc3BsYXlpbmcgYm90aCB0aGUgZHJvcCB6b25lIGFuZCB0aGUgbGlzdCBvZiBkcm9wcGVkIGZpbGVzLiAqL1xuICBASW5wdXQoKSBhbHdheXNTaG93ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsaWNrVG9PcGVuID0gdHJ1ZTtcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuICAvKipcbiAgICogQ3VycmVudCBwcm9ncmVzcyBvZiB0aGUgdXBsb2FkIGFzIGEgcGVyY2VudGFnZS4gSWYgbm90IGdpdmVuIGEgc3Bpbm5lciB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIHByb2dyZXNzID0gLTE7IC8vIC0xID0gc3Bpbm5lclxuICBAT3V0cHV0KCkgZHJvcHBlZDogRXZlbnRFbWl0dGVyPERyb3BwZWRGaWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBtYXhBbGxvd2VkRmlsZXMgPSBJbmZpbml0eTtcbiAgQElucHV0KCkgZmlsZXM6IEZpbGVMaXN0O1xuICBASW5wdXQoKSBtYXhGaWxlU2l6ZUluTWVnYUJ5dGVzOiBudW1iZXI7XG4gIC8qKiBTcGVjaWZpZXMgYSBmaWx0ZXIgZm9yIHdoYXQgZmlsZSB0eXBlcyB0aGUgdXNlciBjYW4gcGljayBmcm9tIHRoZSBmaWxlIGlucHV0IGRpYWxvZyBib3guXG4gICAqICMjIEV4YW1wbGU6XG4gICAqXG4gICAqIFNwZWNpZnkgZmlsZSB0eXBlcyBieSBleHRlbnNpb25zOlxuICAgKiBgYGBodG1sXG4gICAqICAuLi5cbiAgICogIFthY2NlcHRdPVwiJy56aXAsLjd6J1wiXG4gICAqICAuLi5cbiAgICogYGBgXG4gICAqXG4gICAqIFNwZWNpZnkgZmlsZSB0eXBlcyBieSBleHRlbnNpb25zIGFuZCBnZW5lcmljIHR5cGVzIFtHRU5FUklDX0ZJTEVfVFlQRV17QGxpbmsgR0VORVJJQ19GSUxFX1RZUEV9OlxuICAgKiBgYGBodG1sXG4gICAqICAuLi5cbiAgICogIFthY2NlcHRdPVwiJy5wZGYsYXJjaGl2ZSdcIlxuICAgKiAgLi4uXG4gICAqIGBgYFxuICAgKlxuICAgKiBTcGVjaWZ5IGZpbGUgdHlwZXMgYnkgZ2VuZXJpYyB0eXBlcyBbR0VORVJJQ19GSUxFX1RZUEVde0BsaW5rIEdFTkVSSUNfRklMRV9UWVBFfTpcbiAgICogIGBgYGh0bWxcbiAgICogIC4uLlxuICAgKiAgW2FjY2VwdF09XCInYXJjaGl2ZSx2aWRlbydcIlxuICAgKiAgLi4uXG4gICAqXG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KCkgYWNjZXB0OiBzdHJpbmc7XG4gIGlzT3ZlciA9IGZhbHNlO1xuICBlcnJvcnMgPSBmYWxzZTtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gIGZpbGVzTmFtZVN0cmluZzogc3RyaW5nO1xuICBhY2NlcHRlZEV4dHM6IHN0cmluZ1tdO1xuICBoYXNEcm9wQXJlYVNtYWxsQ2xhc3M6IGJvb2xlYW47XG5cbiAgQFZpZXdDaGlsZCgnYXJlYScsIHsgc3RhdGljOiB0cnVlIH0pIGFyZWE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3pvbmUnLCB7IHN0YXRpYzogZmFsc2UgfSkgem9uZTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncGlja2VyJywgeyBzdGF0aWM6IGZhbHNlIH0pIHBpY2tlcjogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGZpbGVzU2VydmljZTogRmlsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnl0ZXM6IEJ5dGVzUGlwZSxcbiAgICBwcml2YXRlIHJlZjogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAnLCBbJyRldmVudCddKVxuICBvbmtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgdGhpcy5waWNrZXIubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWNjZXB0ZWRFeHRzID0gdGhpcy5maWxlc1NlcnZpY2UuZXh0cmFjdEZpbGVFeHRlbnNpb25zKHRoaXMuYWNjZXB0KS5tYXAodCA9PiBgLiR7dH1gKTtcbiAgICB0aGlzLmFsd2F5c1Nob3cgPSB0aGlzLmFsd2F5c1Nob3cgfHwgdGhpcy5hcmVhLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAwO1xuXG4gICAgaWYgKHRoaXMuZmlsZXMgJiYgdGhpcy5pc0ZpbGVzQW5PYmplY3RPckFycmF5KCkgJiYgdGhpcy5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm9uRmlsZXNTZWxlY3RlZCh0aGlzLmZpbGVzKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgdGhpcy5oYXNEcm9wQXJlYVNtYWxsQ2xhc3MgPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnZHJvcC1hcmVhLXNtJyk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgc3R5bGUgb2YgdGhlIGRyb3Agem9uZSBlbGVtZW50IHdoZW4gYSBmaWxlIGlzIGRyYWdnZWQgb3ZlciB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgdG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuem9uZS5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuYXJlYS5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCArICdweCc7XG4gICAgdGhpcy5vbk92ZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93cyBjb21wdXRlciBicm93c2VyIHdpdGggZmlsZXMgdG8gZHJvcCBpbnRvIGRyb3AtYXJlYSB6b25lLlxuICAgKi9cbiAgc2hvd1BpY2tlcigkZXZlbnQ/KTogdm9pZCB7XG4gICAgdGhpcy5wcmV2ZW50RGVmYXVsdCgkZXZlbnQpO1xuICAgIHRoaXMucGlja2VyLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB0aGlzLnBpY2tlci5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gZmlsZSBpcyBvbiBvdmVyIGRyb3AgYXJlYSwgYnV0IG5vdCBkcm9wcGVkLlxuICAgKi9cbiAgb25PdmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc092ZXIpIHtcbiAgICAgIHRoaXMuaXNPdmVyID0gdHJ1ZTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5wcmV2ZW50RGVmYXVsdCk7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgdGhpcy5wcmV2ZW50RGVmYXVsdCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIGZpbGUgaXMgZHJvcHBlZC5cbiAgICovXG4gIG9uUGljaygkZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9ycyA9IGZhbHNlO1xuICAgIHRoaXMucHJldmVudERlZmF1bHQoJGV2ZW50KTtcbiAgICB0aGlzLm9uRmlsZXNTZWxlY3RlZCgkZXZlbnQudGFyZ2V0LmZpbGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgZmlsZSB3aGVuIGl0IGlzIGRyb3BwZWQgaW50byBkcm9wLWFyZWEuXG4gICAqL1xuICBvbkRyb3AoJGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5wcmV2ZW50RGVmYXVsdCgkZXZlbnQpO1xuICAgIHRoaXMub25GaWxlc1NlbGVjdGVkKCRldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICAgIHRoaXMuc3RvcERyYWdnaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGNvbmRpdGlvbiB3aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQ6IGRyb3AtYXJlYSB6b25lIG9yIGxpc3Qgb2YgZHJvcHBlZCBmaWxlcy5cbiAgICovXG4gIHNob3VsZFNob3dGaWxlc0xpc3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaXNGaWxlc0FuT2JqZWN0T3JBcnJheSgpICYmXG4gICAgICAhdGhpcy5mb3JjZUhpZGVMaXN0ICYmXG4gICAgICB0aGlzLmFsd2F5c1Nob3cgJiZcbiAgICAgICF0aGlzLmlzRmlsZXNBcnJheUVtcHR5KCkgJiZcbiAgICAgICF0aGlzLmhhc0VtcHR5RmlsZXMoKSAmJlxuICAgICAgIXRoaXMuaXNUb29NYW55RmlsZXMoKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gZmlsZSBpcyBwaWNrZWQgb3ZlciB3ZWIgYXBwbGljYXRpb24uXG4gICAqL1xuICBzdG9wRHJhZ2dpbmcoKTogdm9pZCB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLnByZXZlbnREZWZhdWx0KTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcm9wJywgdGhpcy5wcmV2ZW50RGVmYXVsdCk7XG4gICAgdGhpcy5pc092ZXIgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgZmlsZXMgYWxyZWFkeSBkcm9wcGVkIGZpbGVzLlxuICAgKi9cbiAgb25EZWxldGUoKSB7XG4gICAgZGVsZXRlIHRoaXMuZmlsZXM7XG4gICAgZGVsZXRlIHRoaXMuZmlsZXNOYW1lU3RyaW5nO1xuICAgIHRoaXMuY2xlYXJFcnJvcnMoKTtcbiAgICB0aGlzLmRyb3BwZWQuZW1pdChudWxsKTtcbiAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9IF8gPT4gdW5kZWZpbmVkO1xuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5maWxlcyA9IHZhbHVlO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMub25EZWxldGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWxlc05hbWVTdHJpbmcgPSB0aGlzLmdldEZpbGVzTmFtZXNBc1N0cmluZyh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uRmlsZXNTZWxlY3RlZChmaWxlczogRmlsZUxpc3QpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIGNvbnN0IGhhc1ZhbGlkTmFtZUxlbmd0aCA9IHRoaXMuZmlsZXNTZXJ2aWNlLmNoZWNrTWF4TGVuZ3RoKGZpbGVzKTtcbiAgICBpZiAoIWhhc1ZhbGlkTmFtZUxlbmd0aCkge1xuICAgICAgdGhpcy5vbkZpbGVJbnZhbGlkTmFtZUxlbmd0aCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhhdmVWYWxpZFR5cGVzID0gdGhpcy5maWxlc1NlcnZpY2UuaGF2ZVZhbGlkRXh0ZW5zaW9ucyhmaWxlcywgdGhpcy5hY2NlcHQpO1xuICAgIGlmICghaGF2ZVZhbGlkVHlwZXMpIHtcbiAgICAgIHRoaXMub25GaWxlSW52YWxpZFR5cGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtYXhGaWxlU2l6ZUluQnl0ZXMgPSB0aGlzLm1heEZpbGVTaXplSW5NZWdhQnl0ZXNcbiAgICAgID8gdGhpcy5jb252ZXJ0TWVnYUJ5dGVzVG9CeXRlcyh0aGlzLm1heEZpbGVTaXplSW5NZWdhQnl0ZXMpXG4gICAgICA6IG51bGw7XG4gICAgY29uc3QgaGF2ZVZhbGlkU2l6ZXMgPSBhd2FpdCB0aGlzLmZpbGVzU2VydmljZS5oYXZlVmFsaWRTaXplcyhmaWxlcywgbWF4RmlsZVNpemVJbkJ5dGVzKTtcbiAgICBpZiAoIWhhdmVWYWxpZFNpemVzKSB7XG4gICAgICBhd2FpdCB0aGlzLm9uRmlsZUludmFsaWRTaXplKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5maWxlcyA9IGZpbGVzO1xuICAgIHRoaXMuZmlsZXNOYW1lU3RyaW5nID0gdGhpcy5nZXRGaWxlc05hbWVzQXNTdHJpbmcoZmlsZXMpO1xuICAgIHRoaXMuZXJyb3JzID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5pc1Rvb01hbnlGaWxlcygpKSB7XG4gICAgICB0aGlzLmVycm9ycyA9IHRydWU7XG4gICAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMoeyB0b29NYW55RmlsZXM6IHRydWUgfSk7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGdldHRleHQoJ1RvbyBtYW55IGZpbGVzIHNlbGVjdGVkLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0VtcHR5RmlsZXMoKSkge1xuICAgICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0RXJyb3JzKHsgZW1wdHlGaWxlczogdHJ1ZSB9KTtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZ2V0dGV4dCgnRmlsZSBtdXN0IG5vdCBiZSBlbXB0eSwgc2VsZWN0IGFub3RoZXIgb25lLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRyb3BwZWRGaWxlczogRHJvcHBlZEZpbGVbXSA9IHRoaXMuY29tcG9zZShmaWxlcyk7XG4gICAgdGhpcy5kcm9wcGVkLmVtaXQoZHJvcHBlZEZpbGVzKTtcbiAgICB0aGlzLm9uQ2hhbmdlKGRyb3BwZWRGaWxlcyk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgb25GaWxlSW52YWxpZE5hbWVMZW5ndGgoKSB7XG4gICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyh7IGludmFsaWROYW1lTGVuZ3RoOiB0cnVlIH0pO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZ2V0dGV4dCgnVGhlIGZpbGVuYW1lIGlzIHRvbyBsb25nLicpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZpbGVJbnZhbGlkVHlwZSgpIHtcbiAgICB0aGlzLmVycm9ycyA9IHRydWU7XG4gICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0RXJyb3JzKHsgaW52YWxpZFR5cGU6IHRydWUgfSk7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBnZXR0ZXh0KCdUaGUgc2VsZWN0ZWQgZmlsZSBpcyBub3Qgc3VwcG9ydGVkLicpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvbkZpbGVJbnZhbGlkU2l6ZSgpIHtcbiAgICBjb25zdCBtYXhGaWxlU2l6ZUluQnl0ZXMgPSB0aGlzLm1heEZpbGVTaXplSW5NZWdhQnl0ZXNcbiAgICAgID8gdGhpcy5jb252ZXJ0TWVnYUJ5dGVzVG9CeXRlcyh0aGlzLm1heEZpbGVTaXplSW5NZWdhQnl0ZXMpXG4gICAgICA6IG51bGw7XG4gICAgY29uc3QgbXNnID0gZ2V0dGV4dCgnVGhlIHNlbGVjdGVkIGZpbGUgaXMgdG9vIGxhcmdlLiBUaGUgc2l6ZSBsaW1pdCBpcyB7eyBsaW1pdCB9fS4nKTtcbiAgICBjb25zdCBsaW1pdCA9IHRoaXMuYnl0ZXMudHJhbnNmb3JtKFxuICAgICAgbWluKFttYXhGaWxlU2l6ZUluQnl0ZXMsIGF3YWl0IHRoaXMuZmlsZXNTZXJ2aWNlLmxvYWRCeXRlc1NpemVMaW1pdCgpXSlcbiAgICApO1xuICAgIHRoaXMuZXJyb3JzID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMoeyBpbnZhbGlkU2l6ZTogdHJ1ZSB9KTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobXNnLCB7IGxpbWl0IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0TWVnYUJ5dGVzVG9CeXRlcyhtYXhGaWxlU2l6ZUluTWVnYUJ5dGVzOiBTaXplSW5NZWdhQnl0ZXMpOiBTaXplSW5CeXRlcyB7XG4gICAgcmV0dXJuIG1heEZpbGVTaXplSW5NZWdhQnl0ZXMgKiAxXzA0OF81NzY7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbGVzTmFtZXNBc1N0cmluZyhmaWxlczogRmlsZUxpc3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBtYXAoZmlsZXMsICh7IG5hbWUgfSkgPT4gbmFtZSkuam9pbignLCAnKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNGaWxlc0FycmF5RW1wdHkoKSB7XG4gICAgcmV0dXJuIGdldCh0aGlzLCAnZmlsZXMubGVuZ3RoJywgMCkgPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzVG9vTWFueUZpbGVzKCkge1xuICAgIHJldHVybiBnZXQodGhpcywgJ2ZpbGVzLmxlbmd0aCcsIDApID4gdGhpcy5tYXhBbGxvd2VkRmlsZXM7XG4gIH1cblxuICBwcml2YXRlIGlzRmlsZXNBbk9iamVjdE9yQXJyYXkoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmZpbGVzID09PSAnb2JqZWN0JztcbiAgfVxuXG4gIHByaXZhdGUgaGFzRW1wdHlGaWxlcygpIHtcbiAgICBsZXQgcmVzdWx0ID0gdHJ1ZTtcbiAgICBpZiAoIXRoaXMuaXNGaWxlc0FycmF5RW1wdHkoKSkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5pc0FueUZpbGVFbXB0eSgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FueUZpbGVFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc29tZShBcnJheS5mcm9tKHRoaXMuZmlsZXMpLCBbJ3NpemUnLCAwXSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRXJyb3JzKCkge1xuICAgIGRlbGV0ZSB0aGlzLmVycm9yTWVzc2FnZTtcbiAgICB0aGlzLmVycm9ycyA9IGZhbHNlO1xuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyhudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudERlZmF1bHQoJGV2ZW50Pykge1xuICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29tcG9zZShmaWxlczogRmlsZUxpc3QpOiBEcm9wcGVkRmlsZVtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShmaWxlcykubWFwKGZpbGUgPT4gKHtcbiAgICAgIGZpbGUsXG4gICAgICByZWFkQXNKc29uOiBhc3luYyAoKSA9PiBKU09OLnBhcnNlKGF3YWl0IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLlRFWFQpKSxcbiAgICAgIHJlYWRBc1RleHQ6IGFzeW5jICgpID0+IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLlRFWFQpLFxuICAgICAgcmVhZEFzQXJyYXlCdWZmZXI6IGFzeW5jICgpID0+IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLkFSUkFZX0JVRkZFUiksXG4gICAgICByZWFkQXNCaW5hcnlTdHJpbmc6IGFzeW5jICgpID0+IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLkJJTkFSWV9TVFJJTkcpLFxuICAgICAgcmVhZEFzRGF0YVVSTDogYXN5bmMgKCkgPT4gdGhpcy5yZWFkKGZpbGUsIFJlYWRBc1R5cGUuREFUQV9VUkwpXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWFkKGZpbGUsIHR5cGU6IFJlYWRBc1R5cGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBSZWFkQXNUeXBlLlRFWFQ6IHtcbiAgICAgICAgICByZWFkZXIucmVhZEFzVGV4dChmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFJlYWRBc1R5cGUuQVJSQVlfQlVGRkVSOiB7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUmVhZEFzVHlwZS5CSU5BUllfU1RSSU5HOiB7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFJlYWRBc1R5cGUuREFUQV9VUkw6IHtcbiAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHRoaXMub25Mb2FkKHJlYWRlciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25Mb2FkKHJlYWRlciwgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgaWYgKHJlYWRlci5yZWFkeVN0YXRlICE9PSAyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChyZWFkZXIuZXJyb3IpIHtcbiAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpO1xuICAgIH1cbiAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcHBlZEZpbGUge1xuICBmaWxlOiBGaWxlO1xuICByZWFkQXNUZXh0KCk7XG4gIHJlYWRBc0FycmF5QnVmZmVyKCk7XG4gIHJlYWRBc0JpbmFyeVN0cmluZygpO1xuICByZWFkQXNEYXRhVVJMKCk7XG4gIHJlYWRBc0pzb24oKTtcbn1cblxuZW51bSBSZWFkQXNUeXBlIHtcbiAgVEVYVCxcbiAgREFUQV9VUkwsXG4gIEFSUkFZX0JVRkZFUixcbiAgQklOQVJZX1NUUklOR1xufVxuXG50eXBlIFNpemVJbk1lZ2FCeXRlcyA9IG51bWJlcjtcbnR5cGUgU2l6ZUluQnl0ZXMgPSBudW1iZXI7XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZHJvcC16b25lXCJcbiAgW3N0eWxlLnBvaW50ZXJFdmVudHNdPVwibG9hZGluZyA/ICdub25lJyA6ICdhdXRvJ1wiXG4gIFtzdHlsZS5kaXNwbGF5XT1cImlzT3ZlciB8fCBhbHdheXNTaG93IHx8IGxvYWRpbmcgPyAnYmxvY2snIDogJ25vbmUnXCJcbiAgdGFiaW5kZXg9XCIwXCJcbiAgKm5nSWY9XCIhc2hvdWxkU2hvd0ZpbGVzTGlzdCgpXCJcbiAgW25nQ2xhc3NdPVwieyAnaGFzLWVycm9ycyc6IGVycm9ycywgZGlzYWJsZWQ6IGZvcm1Db250cm9sPy5kaXNhYmxlZCB9XCJcbiAgI3pvbmVcbiAgKGRyYWdsZWF2ZSk9XCJzdG9wRHJhZ2dpbmcoKVwiXG4gIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgKGRyYWdvdmVyKT1cIm9uT3ZlcigpXCJcbiAgKGNsaWNrKT1cInNob3dQaWNrZXIoJGV2ZW50KVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZpbGUtcGxhY2Vob2xkZXJcIlxuICAgIGRhdGEtY3k9XCJjOHktZmlsZS1wbGFjZWhvbGRlci0tZHJvcC16b25lXCJcbiAgICBbbmdDbGFzc109XCJ7ICdkcmFnLW92ZXInOiBpc092ZXIgfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleCBkLWNvbCBwLTQgZmxleC1jZW50ZXJcIlxuICAgICAgKm5nSWY9XCJsb2FkaW5nXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MgcHJvZ3Jlc3Mtc3RyaXBlZCBhY3RpdmUgbS0wXCJcbiAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDUwJVwiXG4gICAgICAgICpuZ0lmPVwicHJvZ3Jlc3MgIT09IC0xXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MtYmFyXCJcbiAgICAgICAgICBbc3R5bGUud2lkdGhdPVwicHJvZ3Jlc3MgKyAnJSdcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJvZ3Jlc3MgKyAnJSdcIlxuICAgICAgICAgIGFyaWEtdmFsdWVub3c9XCIwXCJcbiAgICAgICAgICBhcmlhLXZhbHVlbWluPVwiMFwiXG4gICAgICAgICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiXG4gICAgICAgICAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic3Bpbm5lci1zbmFrZVwiXG4gICAgICAgICpuZ0lmPVwicHJvZ3Jlc3MgPT09IC0xXCJcbiAgICAgID48L2Rpdj5cbiAgICAgIDxwXG4gICAgICAgIGNsYXNzPVwibS10LWF1dG8gbS1iLWF1dG8gbS1yLThcIlxuICAgICAgICAqbmdJZj1cIiFoYXNEcm9wQXJlYVNtYWxsQ2xhc3NcIlxuICAgICAgPlxuICAgICAgICB7eyBsb2FkaW5nTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiaGludC1wbGFjZWhvbGRlciBwb2ludGVyXCJcbiAgICAgICpuZ0lmPVwiIWxvYWRpbmdcIlxuICAgICAgZGF0YS1jeT1cImRyb3Atem9uZS0taGludC1wbGFjZWhvbGRlclwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJkbHQtYzh5LWljb24te3sgaWNvbiB9fVwiPjwvaT5cbiAgICAgIDxwICpuZ0lmPVwiIWVycm9yc1wiPlxuICAgICAgICA8Yj57eyBtZXNzYWdlIHwgdHJhbnNsYXRlIH19PC9iPlxuICAgICAgICA8YnIgLz5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cImFsd2F5c1Nob3cgJiYgY2xpY2tUb09wZW5cIlxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICA+PC9zcGFuPlxuICAgICAgPC9wPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImhhcy1lcnJvcnNcIlxuICAgICAgICAqbmdJZj1cImVycm9yc1wiXG4gICAgICA+XG4gICAgICAgIDxwIGNsYXNzPVwiZm9ybS1jb250cm9sLWZlZWRiYWNrLW1lc3NhZ2VcIj5cbiAgICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXZcbiAgY2xhc3M9XCJkcm9wLXpvbmVcIlxuICBbc3R5bGUuZGlzcGxheV09XCJpc092ZXIgfHwgYWx3YXlzU2hvdyB8fCBsb2FkaW5nID8gJ2Jsb2NrJyA6ICdub25lJ1wiXG4gIHRhYmluZGV4PVwiMFwiXG4gICpuZ0lmPVwic2hvdWxkU2hvd0ZpbGVzTGlzdCgpXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicC1hYnNvbHV0ZSBwLTQgZml0LXcgZml0LWggZC1mbGV4IGQtY29sIGotYy1jZW50ZXIgYS1pLWNlbnRlclwiXG4gICAgKm5nSWY9XCJsb2FkaW5nXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicHJvZ3Jlc3MgcHJvZ3Jlc3Mtc3RyaXBlZCBhY3RpdmUgbS0wXCJcbiAgICAgIHN0eWxlPVwibWluLXdpZHRoOiA4MCVcIlxuICAgICAgKm5nSWY9XCJwcm9ncmVzcyAhPT0gLTFcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJwcm9ncmVzcy1iYXJcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwicHJvZ3Jlc3MgKyAnJSdcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByb2dyZXNzICsgJyUnXCJcbiAgICAgICAgYXJpYS12YWx1ZW5vdz1cIjBcIlxuICAgICAgICBhcmlhLXZhbHVlbWluPVwiMFwiXG4gICAgICAgIGFyaWEtdmFsdWVtYXg9XCIxMDBcIlxuICAgICAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxuICAgICAgPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJwcm9ncmVzcyA9PT0gLTFcIj5cbiAgICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICAgIDwvZGl2PlxuICAgIDxwXG4gICAgICBjbGFzcz1cIm0tYi04XCJcbiAgICAgICpuZ0lmPVwiIWhhc0Ryb3BBcmVhU21hbGxDbGFzc1wiXG4gICAgPlxuICAgICAgPHN0cm9uZz5cbiAgICAgICAge3sgbG9hZGluZ01lc3NhZ2UgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvc3Ryb25nPlxuICAgIDwvcD5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZpbGUtcGxhY2Vob2xkZXIgcC00XCJcbiAgICAqbmdJZj1cIiFsb2FkaW5nXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggcC00IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwiaWNvbi0yMCBtLXItOFwiXG4gICAgICAgIGM4eUljb249XCJmaWxlLW9cIlxuICAgICAgPjwvaT5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgIHRpdGxlPVwie3sgZmlsZXNOYW1lU3RyaW5nIH19XCJcbiAgICAgID5cbiAgICAgICAge3sgZmlsZXNOYW1lU3RyaW5nIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3QgYnRuLWRvdC0tZGFuZ2VyIHNob3dPbkhvdmVyIG0tbC1hdXRvXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnUmVtb3ZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlbW92ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgPGlcbiAgICAgICAgICBjOHlJY29uPVwibWludXMtY2lyY2xlXCJcbiAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUoKVwiXG4gICAgICAgID48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxsYWJlbFxuICBjbGFzcz1cInNyLW9ubHlcIlxuICBmb3I9XCJmaWxlXCJcbj5cbiAge3sgJ1NlbGVjdCBmaWxlJyB8IHRyYW5zbGF0ZSB9fVxuPC9sYWJlbD5cbjxpbnB1dFxuICBjbGFzcz1cImhpZGRlblwiXG4gIGlkPVwiZmlsZVwiXG4gIHR5cGU9XCJmaWxlXCJcbiAgI3BpY2tlclxuICAqbmdJZj1cImNsaWNrVG9PcGVuXCJcbiAgKGNoYW5nZSk9XCJvblBpY2soJGV2ZW50KVwiXG4gIChjbGljayk9XCJwaWNrZXIuZm9jdXMoKVwiXG4gIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcbiAgW2FjY2VwdF09XCJhY2NlcHRlZEV4dHNcIlxuICBbbXVsdGlwbGVdPVwibWF4QWxsb3dlZEZpbGVzID4gMVwiXG4gIFtkaXNhYmxlZF09XCJmb3JtQ29udHJvbD8uZGlzYWJsZWRcIlxuLz5cbjxkaXZcbiAgI2FyZWFcbiAgW2hpZGRlbl09XCJpc092ZXIgfHwgbG9hZGluZ1wiXG4gIChkcmFnb3Zlcik9XCJ0b2dnbGUoKVwiXG4+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|