@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
|
@@ -31,7 +31,7 @@ export class ContextDashboardService {
|
|
|
31
31
|
this.alert = alert;
|
|
32
32
|
this.dynamicComponent = dynamicComponent;
|
|
33
33
|
this.REPORT_PARTIAL_NAME = 'report_';
|
|
34
|
-
this.INVENTORY_ROLES = [
|
|
34
|
+
this.INVENTORY_ROLES = [Permissions.ROLE_INVENTORY_ADMIN];
|
|
35
35
|
this.cache = new Map();
|
|
36
36
|
this.DEFAULT_PAGESIZE = 1000;
|
|
37
37
|
this.FRAGMENT_NAME = 'c8y_Dashboard';
|
|
@@ -174,7 +174,7 @@ export class ContextDashboardService {
|
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
176
|
canEditDashboard(mo) {
|
|
177
|
-
return this.permissions.canEdit([
|
|
177
|
+
return this.permissions.canEdit([Permissions.ROLE_INVENTORY_ADMIN, Permissions.ROLE_INVENTORY_CREATE], mo);
|
|
178
178
|
}
|
|
179
179
|
isNamed(dashboard) {
|
|
180
180
|
return some(keys(dashboard), prop => new RegExp(`^${this.FRAGMENT_NAME}${this.INDEX_SPLIT}${ContextDashboardType.Named}${this.INDEX_SPLIT}`).test(prop));
|
|
@@ -435,4 +435,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
435
435
|
providedIn: 'root'
|
|
436
436
|
}]
|
|
437
437
|
}], ctorParameters: function () { return [{ type: i1.InventoryService }, { type: i2.TabsService }, { type: i2.ModalService }, { type: i3.TranslateService }, { type: i4.Router }, { type: i2.NavigatorService }, { type: i2.Permissions }, { type: i2.AlertService }, { type: i2.DynamicComponentService }]; } });
|
|
438
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2NvbnRleHQtZGFzaGJvYXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQTBCLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQWUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUNMLFlBQVksRUFFWix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxZQUFZLEVBQ1osYUFBYSxFQUNiLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsTUFBTSxFQUVOLFdBQVcsRUFDWCxXQUFXLEVBRVosTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsTUFBTSxFQUNOLElBQUksRUFDSixJQUFJLEVBQ0osSUFBSSxFQUNKLEtBQUssRUFDTCxHQUFHLEVBQ0gsR0FBRyxFQUNILE9BQU8sRUFDUCxTQUFTLEVBQ1QsTUFBTSxFQUNOLEdBQUcsRUFDSixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFDTCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEdBQUcsRUFDSCxRQUFRLEVBQ1IsUUFBUSxFQUNSLEdBQUcsRUFDSCxZQUFZLEVBQ1osT0FBTyxFQUNSLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUdMLG9CQUFvQixFQUdwQixzQkFBc0IsRUFDdEIseUJBQXlCLEVBQzFCLE1BQU0sMkJBQTJCLENBQUM7Ozs7OztBQUtuQyxNQUFNLE9B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Q3pDLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7U0FDNUM7UUFDRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRU8saUJBQWlCLENBQUMsb0JBQTBDLEVBQUUsS0FBYTtRQUNqRixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFTyxlQUFlLENBQUMsU0FBaUQsRUFBRSxPQUFRO1FBQ2pGLElBQ0UsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUM1QjtZQUNBLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7O29IQXpsQlUsdUJBQXVCO3dIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlLCBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgQ29udGV4dERhdGEsXG4gIER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLFxuICBnZXRBY3RpdmF0ZWRSb3V0ZSxcbiAgZ2V0dGV4dCxcbiAgTW9kYWxTZXJ2aWNlLFxuICBOYXZpZ2F0b3JOb2RlLFxuICBOYXZpZ2F0b3JTZXJ2aWNlLFxuICBQZXJtaXNzaW9ucyxcbiAgU3RhdHVzLFxuICBUYWIsXG4gIFRhYnNTZXJ2aWNlLFxuICBWaWV3Q29udGV4dCxcbiAgV2lkZ2V0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgYXNzaWduLFxuICBwaWNrLFxuICBzb21lLFxuICBrZXlzLFxuICBrZXlCeSxcbiAgaGFzLFxuICBnZXQsXG4gIGZvckVhY2gsXG4gIGNsb25lRGVlcCxcbiAgcmVkdWNlLFxuICBzZXRcbn0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZyb20sIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgbWVyZ2VBbGwsXG4gIG1lcmdlTWFwLFxuICB0YXAsXG4gIHRocm93SWZFbXB0eSxcbiAgdG9BcnJheVxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDb250ZXh0RGFzaGJvYXJkLFxuICBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCxcbiAgQ29udGV4dERhc2hib2FyZFR5cGUsXG4gIERhc2hib2FyZENvbnRleHQsXG4gIERhc2hib2FyZENvcHlDbGlwYm9hcmQsXG4gIFNUWUxJTkdfQ0xBU1NfUFJFRklYRVMsXG4gIEFMTF9HTE9CQUxfUk9MRVNfU0VMRUNURURcbn0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHREYXNoYm9hcmRTZXJ2aWNlIHtcbiAgZm9ybURpc2FibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcmVhZG9ubHkgUkVQT1JUX1BBUlRJQUxfTkFNRSA9ICdyZXBvcnRfJztcbiAgY29weUNsaXBib2FyZDogRGFzaGJvYXJkQ29weUNsaXBib2FyZDtcbiAgcHJpdmF0ZSByZWFkb25seSBJTlZFTlRPUllfUk9MRVMgPSBbJ1JPTEVfSU5WRU5UT1JZX0FETUlOJ107XG4gIHByaXZhdGUgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9QQUdFU0laRSA9IDEwMDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgRlJBR01FTlRfTkFNRSA9ICdjOHlfRGFzaGJvYXJkJztcbiAgcHJpdmF0ZSByZWFkb25seSBEQVNIQk9BUkRfUk9VVEVfUEFUSCA9ICdkYXNoYm9hcmQnO1xuICBwcml2YXRlIHJlYWRvbmx5IElOREVYX1NQTElUID0gJyEnO1xuICBwcml2YXRlIF9mb3JtRGlzYWJsZWQgPSB0cnVlO1xuICBwcml2YXRlIGZvcm1EaXNhYmxlZFN1YmplY3QgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGdldCBmb3JtRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1EaXNhYmxlZDtcbiAgfVxuXG4gIHNldCBmb3JtRGlzYWJsZWQodmFsdWUpIHtcbiAgICB0aGlzLl9mb3JtRGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLmZvcm1EaXNhYmxlZFN1YmplY3QubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIHRhYnM6IFRhYnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIG5hdmlnYXRvcjogTmF2aWdhdG9yU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucyxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkeW5hbWljQ29tcG9uZW50OiBEeW5hbWljQ29tcG9uZW50U2VydmljZVxuICApIHtcbiAgICB0aGlzLmZvcm1EaXNhYmxlZCQgPSB0aGlzLmZvcm1EaXNhYmxlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBhc3luYyBjcmVhdGUoZGFzaGJvYXJkQ2ZnOiBDb250ZXh0RGFzaGJvYXJkLCBjb250ZXh0PzogQ29udGV4dERhdGEsIG5hbWUgPSAnJykge1xuICAgIGxldCBpZCA9ICcnO1xuICAgIGxldCBkYXNoYm9hcmRUeXBlO1xuXG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGlkID0gY29udGV4dC5jb250ZXh0RGF0YS5pZCBhcyBzdHJpbmc7XG4gICAgICBkYXNoYm9hcmRUeXBlID0gdGhpcy5nZXREYXNoYm9hcmRUeXBlRnJvbVZpZXdDb250ZXh0KGRhc2hib2FyZENmZywgY29udGV4dCk7XG4gICAgfVxuICAgIGlmIChuYW1lKSB7XG4gICAgICBkYXNoYm9hcmRUeXBlID0gQ29udGV4dERhc2hib2FyZFR5cGUuTmFtZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZGFzaGJvYXJkOiBQYXJ0aWFsPENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0PiA9IHt9O1xuICAgIGFzc2lnbihkYXNoYm9hcmQsIHRoaXMuYWRqdXN0RGFzaGJvYXJkRm9yMjRDb2x1bW5zKHsgYzh5X0Rhc2hib2FyZDogZGFzaGJvYXJkQ2ZnIH0pKTtcblxuICAgIGNvbnN0IHZhbHVlID1cbiAgICAgIGRhc2hib2FyZFR5cGUgPT09IENvbnRleHREYXNoYm9hcmRUeXBlLkRldmljZVR5cGUgPyBkYXNoYm9hcmRDZmcuZGV2aWNlVHlwZVZhbHVlIDogbmFtZSB8fCBpZDtcblxuICAgIGNvbnN0IGZyYWdtZW50S2V5ID0gdGhpcy5jcmVhdGVGcmFnbWVudEtleShkYXNoYm9hcmRUeXBlLCB2YWx1ZSk7XG4gICAgZGFzaGJvYXJkW2ZyYWdtZW50S2V5XSA9IHt9O1xuXG4gICAgaWYgKHRoaXMuc2hvdWxkU2V0R2xvYmFsKGRhc2hib2FyZCwgY29udGV4dCkpIHtcbiAgICAgIGFzc2lnbihkYXNoYm9hcmQsIHsgYzh5X0dsb2JhbDoge30gfSk7XG4gICAgfVxuICAgIGRhc2hib2FyZC5uYW1lID0gZGFzaGJvYXJkLmM4eV9EYXNoYm9hcmQubmFtZTtcbiAgICBjb25zdCB7IGRhdGEgfSA9XG4gICAgICBkYXNoYm9hcmRUeXBlID09PSBDb250ZXh0RGFzaGJvYXJkVHlwZS5Hcm91cCB8fFxuICAgICAgZGFzaGJvYXJkVHlwZSA9PT0gQ29udGV4dERhc2hib2FyZFR5cGUuRGV2aWNlIHx8XG4gICAgICAoY29udGV4dCAmJiBkYXNoYm9hcmRUeXBlID09PSBDb250ZXh0RGFzaGJvYXJkVHlwZS5OYW1lZClcbiAgICAgICAgPyBhd2FpdCB0aGlzLmludmVudG9yeS5jaGlsZEFkZGl0aW9uc0NyZWF0ZShkYXNoYm9hcmQsIGlkKVxuICAgICAgICA6IGF3YWl0IHRoaXMuaW52ZW50b3J5LmNyZWF0ZShkYXNoYm9hcmQpO1xuICAgIHJldHVybiBkYXRhIGFzIENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0O1xuICB9XG5cbiAgYXN5bmMgZGV0YWlsKGRhc2hib2FyZE1POiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCkge1xuICAgIGxldCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5LmRldGFpbChkYXNoYm9hcmRNTyk7XG4gICAgZGF0YSA9IHRoaXMuYWRqdXN0RGFzaGJvYXJkRm9yMjRDb2x1bW5zKGRhdGEgYXMgQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QpO1xuICAgIHRoaXMuY2FjaGUuc2V0KGRhc2hib2FyZE1PLmlkLCBkYXRhKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZShkYXNoYm9hcmQ6IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0KSB7XG4gICAgZGFzaGJvYXJkLm5hbWUgPSBkYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5uYW1lO1xuICAgIGRhc2hib2FyZCA9IHRoaXMuYWRqdXN0RGFzaGJvYXJkRm9yMjRDb2x1bW5zKGRhc2hib2FyZCk7XG4gICAgY29uc3Qga2VlcEZyYWdtZW50cyA9IHRoaXMuY2xlYW4ocGljayhkYXNoYm9hcmQsIFt0aGlzLkZSQUdNRU5UX05BTUUsICdpZCcsICduYW1lJ10pKTtcbiAgICBrZWVwRnJhZ21lbnRzLmM4eV9HbG9iYWwgPSB0aGlzLnNob3VsZFNldEdsb2JhbChkYXNoYm9hcmQpO1xuICAgIGF3YWl0IHRoaXMuc2VyaWFsaXplV2lkZ2V0Q29uZmlncyhrZWVwRnJhZ21lbnRzKTtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5LnVwZGF0ZShrZWVwRnJhZ21lbnRzKTtcbiAgICB0aGlzLmNhY2hlLnNldChkYXNoYm9hcmQuaWQsIGRhdGEpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlKGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QsIHdpdGhDb25maXJtYXRpb24gPSB0cnVlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh3aXRoQ29uZmlybWF0aW9uKSB7XG4gICAgICAgIGxldCBtc2c6IHN0cmluZyA9IGdldHRleHQoXG4gICAgICAgICAgYFlvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoZSBkYXNoYm9hcmQgXCJ7eyBkYXNoYm9hcmROYW1lIH19XCIuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/YFxuICAgICAgICApO1xuICAgICAgICBpZiAodGhpcy5pc0RldmljZVR5cGUoZGFzaGJvYXJkKSkge1xuICAgICAgICAgIG1zZyA9IGdldHRleHQoXG4gICAgICAgICAgICBgWW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIGRhc2hib2FyZCBcInt7IGRhc2hib2FyZE5hbWUgfX1cIiBmcm9tIGFsbCBkZXZpY2VzIG9mIHRoZSB0eXBlIFwie3sgZGV2aWNlVHlwZSB9fVwiLlxuICAgICAgICAgICBEbyB5b3Ugd2FudCB0byBwcm9jZWVkP2BcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMubW9kYWwuY29uZmlybShcbiAgICAgICAgICBnZXR0ZXh0KCdEZWxldGUgZGFzaGJvYXJkJyksXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQobXNnLCB7XG4gICAgICAgICAgICBkYXNoYm9hcmROYW1lOiBkYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5uYW1lLFxuICAgICAgICAgICAgZGV2aWNlVHlwZTogZGFzaGJvYXJkLmM4eV9EYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlXG4gICAgICAgICAgfSksXG4gICAgICAgICAgU3RhdHVzLkRBTkdFUixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvazogZ2V0dGV4dCgnRGVsZXRlJyksXG4gICAgICAgICAgICBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5pbnZlbnRvcnkuZGVsZXRlKGRhc2hib2FyZCk7XG4gICAgICBjb25zdCB0YWJUb1JlbW92ZSA9IEFycmF5LmZyb20odGhpcy50YWJzLnN0YXRlKS5maW5kKHRhYiA9PlxuICAgICAgICB0YWIucGF0aC5lbmRzV2l0aChgJHt0aGlzLkRBU0hCT0FSRF9ST1VURV9QQVRIfS8ke2Rhc2hib2FyZC5pZH1gKVxuICAgICAgKTtcbiAgICAgIHRoaXMudGFicy5yZW1vdmUodGFiVG9SZW1vdmUpO1xuICAgICAgdGhpcy50YWJzLnJlZnJlc2goKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLy8gaW50ZW5kZWQgZW1wdHlcbiAgICB9XG4gIH1cblxuICBhY3RpdmF0ZURhc2hib2FyZHMoXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgdHlwZXM6IENvbnRleHREYXNoYm9hcmRUeXBlW11cbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVGFiW10+IHtcbiAgICBjb25zdCB7IGRhc2hib2FyZElkIH0gPSByb3V0ZS5wYXJhbXM7XG4gICAgaWYgKGRhc2hib2FyZElkKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXREYXNoYm9hcmQkKGRhc2hib2FyZElkLCB0eXBlcywgcm91dGUucGFyZW50LmRhdGEuY29udGV4dERhdGEpLnBpcGUoXG4gICAgICAgIHRhcChkYXNoYm9hcmQgPT4ge1xuICAgICAgICAgIHJvdXRlLmRhdGEgPSB7IGRhc2hib2FyZCB9O1xuICAgICAgICB9KSxcbiAgICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRUYWJzJChyb3V0ZS5kYXRhLmNvbnRleHREYXRhLCB0eXBlcyk7XG4gIH1cblxuICBnZXROYW1lZERhc2hib2FyZE9yQ3JlYXRlKG5hbWU6IHN0cmluZywgZGVmYXVsdFdpZGdldHM6IFdpZGdldFtdLCBjb250ZXh0PzogQ29udGV4dERhdGEpIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMubWFwV2lkZ2V0cyhkZWZhdWx0V2lkZ2V0cyk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGFzaGJvYXJkJChuYW1lLCBbQ29udGV4dERhc2hib2FyZFR5cGUuTmFtZWRdKS5waXBlKFxuICAgICAgdGhyb3dJZkVtcHR5KCksXG4gICAgICBjYXRjaEVycm9yKCgpID0+XG4gICAgICAgIGZyb20oXG4gICAgICAgICAgdGhpcy5jcmVhdGUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgICB3aWRnZXRDbGFzc2VzOiB7ICdkYXNoYm9hcmQtdGhlbWUtbGlnaHQnOiB0cnVlLCAncGFuZWwtdGl0bGUtcmVndWxhcic6IHRydWUgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hUYWJzKGRhc2hib2FyZE1POiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCkge1xuICAgIGlmICghdGhpcy5pc05hbWVkKGRhc2hib2FyZE1PKSkge1xuICAgICAgY29uc3QgdGFiVG9VcGRhdGUgPSBBcnJheS5mcm9tKHRoaXMudGFicy5zdGF0ZSkuZmluZCh0YWIgPT5cbiAgICAgICAgdGFiLnBhdGguZW5kc1dpdGgoYCR7dGhpcy5EQVNIQk9BUkRfUk9VVEVfUEFUSH0vJHtkYXNoYm9hcmRNTy5pZH1gKVxuICAgICAgKTtcblxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZGV0YWlsKGRhc2hib2FyZE1PKTtcbiAgICAgIGlmICh0YWJUb1VwZGF0ZSkge1xuICAgICAgICBjb25zdCB7IGljb24sIHByaW9yaXR5LCBuYW1lIH0gPSBkYXRhLmM4eV9EYXNoYm9hcmQ7XG4gICAgICAgIHRhYlRvVXBkYXRlLmljb24gPSBpY29uO1xuICAgICAgICB0YWJUb1VwZGF0ZS5wcmlvcml0eSA9IHByaW9yaXR5O1xuICAgICAgICB0YWJUb1VwZGF0ZS5sYWJlbCA9IG5hbWU7XG4gICAgICB9XG4gICAgICB0aGlzLnRhYnMucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZU5hdmlnYXRvckl0ZW0obW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgdGhpcy5uYXZpZ2F0b3Iuc3RhdGUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgIGlmIChub2RlLnBhdGggPT09IGByZXBvcnRzLyR7bW8uaWR9YCkge1xuICAgICAgICB0aGlzLm5hdmlnYXRvci5yZW1vdmUobm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKG1vLmM4eV9Jc05hdmlnYXRvck5vZGUpIHtcbiAgICAgIGNvbnN0IG5vZGVUb0FkZCA9IG5ldyBOYXZpZ2F0b3JOb2RlKHtcbiAgICAgICAgbGFiZWw6IG1vLm5hbWUsXG4gICAgICAgIHBhdGg6IGByZXBvcnRzLyR7bW8uaWR9YCxcbiAgICAgICAgaWNvbjogbW8uaWNvbixcbiAgICAgICAgcHJpb3JpdHk6IG1vLnByaW9yaXR5XG4gICAgICB9KTtcbiAgICAgIHRoaXMubmF2aWdhdG9yLmFkZChub2RlVG9BZGQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG5hdmlnYXRlVG9EYXNoYm9hcmQoZGFzaGJvYXJkTU86IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0KSB7XG4gICAgaWYgKC9kYXNoYm9hcmQvLnRlc3QodGhpcy5yb3V0ZXIudXJsKSkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLicsIGRhc2hib2FyZE1PLmlkXSwge1xuICAgICAgICByZWxhdGl2ZVRvOiBnZXRBY3RpdmF0ZWRSb3V0ZSh0aGlzLnJvdXRlcilcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoL15cXC8oZGV2aWNlfGdyb3VwKVxcL1swLTldKyQvLnRlc3QodGhpcy5yb3V0ZXIudXJsKSkge1xuICAgICAgLy8gaW4gY2FzZSB0aGUgYWRkIGRhc2hib2FyZCBidXR0b24gaXMgdGhlIG9ubHkgdGFiIG9uIHRoYXQgcm91dGVcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLicsIHRoaXMuREFTSEJPQVJEX1JPVVRFX1BBVEgsIGRhc2hib2FyZE1PLmlkXSwge1xuICAgICAgICByZWxhdGl2ZVRvOiBnZXRBY3RpdmF0ZWRSb3V0ZSh0aGlzLnJvdXRlcilcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uJywgdGhpcy5EQVNIQk9BUkRfUk9VVEVfUEFUSCwgZGFzaGJvYXJkTU8uaWRdLCB7XG4gICAgICAgIHJlbGF0aXZlVG86IGdldEFjdGl2YXRlZFJvdXRlKHRoaXMucm91dGVyKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2FuRWRpdERhc2hib2FyZChtbykge1xuICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25zLmNhbkVkaXQoWydST0xFX0lOVkVOVE9SWV9BRE1JTicsICdST0xFX0lOVkVOVE9SWV9DUkVBVEUnXSwgbW8pO1xuICB9XG5cbiAgaXNOYW1lZChkYXNoYm9hcmQ6IFBhcnRpYWw8Q29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q+KSB7XG4gICAgcmV0dXJuIHNvbWUoa2V5cyhkYXNoYm9hcmQpLCBwcm9wID0+XG4gICAgICBuZXcgUmVnRXhwKFxuICAgICAgICBgXiR7dGhpcy5GUkFHTUVOVF9OQU1FfSR7dGhpcy5JTkRFWF9TUExJVH0ke0NvbnRleHREYXNoYm9hcmRUeXBlLk5hbWVkfSR7dGhpcy5JTkRFWF9TUExJVH1gXG4gICAgICApLnRlc3QocHJvcClcbiAgICApO1xuICB9XG5cbiAgaXNSZXBvcnQoZGFzaGJvYXJkOiBQYXJ0aWFsPENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0Pikge1xuICAgIHJldHVybiBzb21lKGtleXMoZGFzaGJvYXJkKSwgcHJvcCA9PlxuICAgICAgbmV3IFJlZ0V4cChcbiAgICAgICAgYF4ke3RoaXMuRlJBR01FTlRfTkFNRX0ke3RoaXMuSU5ERVhfU1BMSVR9JHtDb250ZXh0RGFzaGJvYXJkVHlwZS5OYW1lZH0ke3RoaXMuSU5ERVhfU1BMSVR9JHt0aGlzLlJFUE9SVF9QQVJUSUFMX05BTUV9YFxuICAgICAgKS50ZXN0KHByb3ApXG4gICAgKTtcbiAgfVxuXG4gIGlzRGV2aWNlVHlwZShkYXNoYm9hcmQ6IFBhcnRpYWw8Q29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q+KSB7XG4gICAgcmV0dXJuIHNvbWUoa2V5cyhkYXNoYm9hcmQpLCBwcm9wID0+XG4gICAgICBuZXcgUmVnRXhwKFxuICAgICAgICBgXiR7dGhpcy5GUkFHTUVOVF9OQU1FfSR7dGhpcy5JTkRFWF9TUExJVH0ke0NvbnRleHREYXNoYm9hcmRUeXBlLkRldmljZVR5cGV9JHt0aGlzLklOREVYX1NQTElUfWBcbiAgICAgICkudGVzdChwcm9wKVxuICAgICk7XG4gIH1cblxuICBpc0RldmljZURhc2hib2FyZChkYXNoYm9hcmQ6IFBhcnRpYWw8Q29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNvbWUoa2V5cyhkYXNoYm9hcmQpLCBwcm9wID0+XG4gICAgICBuZXcgUmVnRXhwKFxuICAgICAgICBgXiR7dGhpcy5GUkFHTUVOVF9OQU1FfSR7dGhpcy5JTkRFWF9TUExJVH0ke0NvbnRleHREYXNoYm9hcmRUeXBlLkRldmljZX0ke3RoaXMuSU5ERVhfU1BMSVR9YFxuICAgICAgKS50ZXN0KHByb3ApXG4gICAgKTtcbiAgfVxuXG4gIGlzR3JvdXBEYXNoYm9hcmQoZGFzaGJvYXJkOiBQYXJ0aWFsPENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzb21lKGtleXMoZGFzaGJvYXJkKSwgcHJvcCA9PlxuICAgICAgbmV3IFJlZ0V4cChcbiAgICAgICAgYF4ke3RoaXMuRlJBR01FTlRfTkFNRX0ke3RoaXMuSU5ERVhfU1BMSVR9JHtDb250ZXh0RGFzaGJvYXJkVHlwZS5Hcm91cH0ke3RoaXMuSU5ERVhfU1BMSVR9YFxuICAgICAgKS50ZXN0KHByb3ApXG4gICAgKTtcbiAgfVxuXG4gIGdldEZpbHRlcmVkRGFzaGJvYXJkU3R5bGVzKHN0eWxlTGlzdDogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gc3R5bGVMaXN0LmZpbHRlcihjID0+XG4gICAgICBTVFlMSU5HX0NMQVNTX1BSRUZJWEVTLnNvbWUoY2xhc3NQcmVmaXggPT4gYy5zdGFydHNXaXRoKGNsYXNzUHJlZml4KSlcbiAgICApO1xuICB9XG5cbiAgZ2V0U3R5bGluZyhzdHlsZUxpc3QsIHN0eWxlTmFtZSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgY29uc3Qgc3R5bGluZyA9IHN0eWxlTGlzdC5maW5kKFxuICAgICAgc3R5bGUgPT4gc3R5bGUgJiYgbmV3IFJlZ0V4cChgLSR7c3R5bGVOYW1lfSRgLCAnaScpLnRlc3Qoc3R5bGUuY2xhc3MpXG4gICAgKTtcbiAgICByZXR1cm4gc3R5bGluZyA/IHN0eWxpbmcuY2xhc3MgOiBkZWZhdWx0VmFsdWU7XG4gIH1cblxuICBtYXBXaWRnZXRzKHdpZGdldHM6IFdpZGdldFtdKSB7XG4gICAgcmV0dXJuIGtleUJ5KFxuICAgICAgd2lkZ2V0cy5tYXAod2lkZ2V0ID0+IHtcbiAgICAgICAgd2lkZ2V0LmlkID0gU3RyaW5nKE1hdGgucmFuZG9tKCkpLnN1YnN0cigyKTtcbiAgICAgICAgcmV0dXJuIHdpZGdldDtcbiAgICAgIH0pLFxuICAgICAgJ2lkJ1xuICAgICk7XG4gIH1cblxuICBnZXREYXNoYm9hcmQkKGRhc2hib2FyZElkT3JOYW1lLCBkYXNoYm9hcmRUeXBlOiBDb250ZXh0RGFzaGJvYXJkVHlwZVtdLCBtbz86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgY29uc3QgY2FjaGUgPSB0aGlzLmNhY2hlLmdldChkYXNoYm9hcmRJZE9yTmFtZSk7XG5cbiAgICBjb25zdCBkYXNoYm9hcmRzID0gbW9cbiAgICAgID8gdGhpcy5nZXRDb250ZXh0RGFzaGJvYXJkcyhtbywgZGFzaGJvYXJkVHlwZSlcbiAgICAgIDogW3RoaXMuZ2V0TmFtZWREYXNoYm9hcmQoZGFzaGJvYXJkSWRPck5hbWUpXTtcblxuICAgIGNvbnN0IGNhY2hlUmVmcmVzaCA9IHRoaXMuZ2V0Q29udGV4dERhc2hib2FyZHMkKGRhc2hib2FyZHMpLnBpcGUoXG4gICAgICB0YXAoZGFzaGJvYXJkID0+IHRoaXMuY2FjaGVEYXNoYm9hcmQoZGFzaGJvYXJkKSksXG4gICAgICBmaWx0ZXIoXG4gICAgICAgIGRhc2hib2FyZCA9PlxuICAgICAgICAgIGRhc2hib2FyZC5pZCA9PT0gZGFzaGJvYXJkSWRPck5hbWUgfHxcbiAgICAgICAgICBoYXMoXG4gICAgICAgICAgICBkYXNoYm9hcmQsXG4gICAgICAgICAgICBgJHt0aGlzLkZSQUdNRU5UX05BTUV9JHt0aGlzLklOREVYX1NQTElUfSR7Q29udGV4dERhc2hib2FyZFR5cGUuTmFtZWR9JHt0aGlzLklOREVYX1NQTElUfSR7ZGFzaGJvYXJkSWRPck5hbWV9YFxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybiBjYWNoZSA/IG9mKGNhY2hlKSA6IGNhY2hlUmVmcmVzaDtcbiAgfVxuXG4gIGFzeW5jIHBhc3RlRGFzaGJvYXJkKG5ld0NvbnRleHQ6IERhc2hib2FyZENvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5jb3B5Q2xpcGJvYXJkKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAodGhpcy5jYW5QYXN0ZURhc2hib2FyZCh0aGlzLmNvcHlDbGlwYm9hcmQsIG5ld0NvbnRleHQuY29udGV4dCkpIHtcbiAgICAgICAgICBjb25zdCBkYXNoYm9hcmRUb1Bhc3RlID0gdGhpcy5jcmVhdGVDb250ZXh0RGFzaGJvYXJkQ29weShcbiAgICAgICAgICAgIHRoaXMuY29weUNsaXBib2FyZC5kYXNoYm9hcmQsXG4gICAgICAgICAgICBuZXdDb250ZXh0LmNvbnRleHREYXRhLFxuICAgICAgICAgICAgdGhpcy5jb3B5Q2xpcGJvYXJkLmNvbnRleHQuY29udGV4dERhdGFcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IGRhc2hib2FyZCA9IGF3YWl0IHRoaXMuY3JlYXRlKHRoaXMuY2xlYW4oZGFzaGJvYXJkVG9QYXN0ZSksIG5ld0NvbnRleHQpO1xuICAgICAgICAgIHRoaXMuY29weUNsaXBib2FyZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9EYXNoYm9hcmQoZGFzaGJvYXJkKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRoaXMuYWxlcnQud2FybmluZyhnZXR0ZXh0KCdJbnN1ZmZpY2llbnQgcGVybWlzc2lvbnMgZm9yIHRoaXMgYWN0aW9uLicpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBtaWdyYXRlIGRhc2hib2FyZHMgZnJvbSBwcmV2aW91cyAxMiBjb2x1bW5zIGxheW91dCB0byAyNCBjb2x1bW5zLlxuICAgKi9cbiAgcHJpdmF0ZSBhZGp1c3REYXNoYm9hcmRGb3IyNENvbHVtbnM8VCBleHRlbmRzIHsgYzh5X0Rhc2hib2FyZD86IENvbnRleHREYXNoYm9hcmQgfT4oXG4gICAgZGFzaGJvYXJkczogVFtdXG4gICk6IFRbXTtcbiAgcHJpdmF0ZSBhZGp1c3REYXNoYm9hcmRGb3IyNENvbHVtbnM8VCBleHRlbmRzIHsgYzh5X0Rhc2hib2FyZD86IENvbnRleHREYXNoYm9hcmQgfT4oXG4gICAgZGFzaGJvYXJkczogVFxuICApOiBUO1xuICBwcml2YXRlIGFkanVzdERhc2hib2FyZEZvcjI0Q29sdW1uczxUIGV4dGVuZHMgeyBjOHlfRGFzaGJvYXJkPzogQ29udGV4dERhc2hib2FyZCB9PihcbiAgICBkYXNoYm9hcmRzOiBUIHwgVFtdXG4gICk6IFQgfCBUW10ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGRhc2hib2FyZHMpKSB7XG4gICAgICByZXR1cm4gZGFzaGJvYXJkcy5tYXAoZGFzaGJvYXJkID0+IHRoaXMuYWRqdXN0RGFzaGJvYXJkRm9yMjRDb2x1bW5zKGRhc2hib2FyZCkpO1xuICAgIH1cbiAgICAvLyBpZiBgY29sdW1uc2AgYXR0cmlidXRlIGV4aXN0cywgZGFzaGJvYXJkIHdhcyBhbHJlYWR5IGFkanVzdGVkLlxuICAgIGlmIChkYXNoYm9hcmRzLmM4eV9EYXNoYm9hcmQuY29sdW1ucykge1xuICAgICAgcmV0dXJuIGRhc2hib2FyZHM7XG4gICAgfVxuXG4gICAgZGFzaGJvYXJkcy5jOHlfRGFzaGJvYXJkLmNvbHVtbnMgPSAyNDtcbiAgICBpZiAoIWRhc2hib2FyZHMuYzh5X0Rhc2hib2FyZC5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIGRhc2hib2FyZHM7XG4gICAgfVxuICAgIC8vIHdlIG5lZWQgdG8gbXVsdGlwbHkgYm90aCBfd2lkdGggYW5kIF94IGF0dHJpYnV0ZXMgd2l0aCAyIHRvIG1pZ3JhdGUgZnJvbSAxMiB0byAyNCBjb2x1bW5zLlxuICAgIE9iamVjdC52YWx1ZXMoZGFzaGJvYXJkcy5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuKS5mb3JFYWNoKHdpZGdldCA9PiB7XG4gICAgICBpZiAod2lkZ2V0Ll93aWR0aCkge1xuICAgICAgICB3aWRnZXQuX3dpZHRoID0gd2lkZ2V0Ll93aWR0aCAqIDI7XG4gICAgICB9XG4gICAgICBpZiAod2lkZ2V0Ll94KSB7XG4gICAgICAgIHdpZGdldC5feCA9IHdpZGdldC5feCAqIDI7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhc2hib2FyZHM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlcmlhbGl6ZVdpZGdldENvbmZpZ3MoZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gY2xvbmVEZWVwKGRhc2hib2FyZC5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuKTtcbiAgICBpZiAoIWNoaWxkcmVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbmZpZ3MgPSBPYmplY3QudmFsdWVzKGNoaWxkcmVuKTtcbiAgICBjb25zdCBkZXRhaWxzID0gY29uZmlncy5tYXAoKHsgY29tcG9uZW50SWQsIGNvbmZpZyB9KSA9PiAoeyBjb21wb25lbnRJZCwgY29uZmlnIH0pKTtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5keW5hbWljQ29tcG9uZW50LnNlcmlhbGl6ZUNvbmZpZ3MoZGV0YWlscyk7XG4gICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQsIGluZGV4KSA9PiB7XG4gICAgICBPYmplY3QuZW50cmllcyhyZXN1bHQpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBzZXQoZGV0YWlsc1tpbmRleF0uY29uZmlnLCBrZXksIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGRhc2hib2FyZC5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH1cblxuICBwcml2YXRlIGNhblBhc3RlRGFzaGJvYXJkKFxuICAgIGNvcHlDbGlwYm9hcmQ6IERhc2hib2FyZENvcHlDbGlwYm9hcmQsXG4gICAgY3VycmVudENvbnRleHQ6IFZpZXdDb250ZXh0XG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNsaXBib2FyZFZpZXdDb250ZXh0ID0gY29weUNsaXBib2FyZC5jb250ZXh0LmNvbnRleHQ7XG5cbiAgICBpZiAoY3VycmVudENvbnRleHQgIT09IGNsaXBib2FyZFZpZXdDb250ZXh0KSB7XG4gICAgICBpZiAoY2xpcGJvYXJkVmlld0NvbnRleHQgPT09IFZpZXdDb250ZXh0LkRldmljZSkge1xuICAgICAgICB0aGlzLmFsZXJ0Lndhcm5pbmcoZ2V0dGV4dCgnRGV2aWNlIGRhc2hib2FyZHMgY2FuIG9ubHkgYmUgY29waWVkIGludG8gYSBkZXZpY2UuJykpO1xuICAgICAgfSBlbHNlIGlmIChjbGlwYm9hcmRWaWV3Q29udGV4dCA9PT0gVmlld0NvbnRleHQuR3JvdXApIHtcbiAgICAgICAgdGhpcy5hbGVydC53YXJuaW5nKGdldHRleHQoJ0dyb3VwIGRhc2hib2FyZHMgY2FuIG9ubHkgYmUgY29waWVkIGludG8gYSBncm91cC4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb250ZXh0RGFzaGJvYXJkQ29weShcbiAgICBkYXNoOiBDb250ZXh0RGFzaGJvYXJkLFxuICAgIG5ld0NvbnRleHQ6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+LFxuICAgIG9sZENvbnRleHQ6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+XG4gICk6IENvbnRleHREYXNoYm9hcmQge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gcmVkdWNlKFxuICAgICAgZGFzaC5jaGlsZHJlbixcbiAgICAgIChfY2hpbGRyZW4sIGNoaWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaWQgfSA9IGNoaWxkO1xuICAgICAgICBjb25zdCBjZmcgPSBjaGlsZC5jb25maWc7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXNUb0NvcHkgPSB7XG4gICAgICAgICAgZGV2aWNlOiBkZXZpY2UgPT4gdGhpcy5yZXBsYWNlQ29udGV4dEluT2JqKGRldmljZSwgbmV3Q29udGV4dCwgb2xkQ29udGV4dCksXG4gICAgICAgICAgZGF0YXBvaW50czogZGF0YVBvaW50cyA9PlxuICAgICAgICAgICAgdGhpcy5yZXBsYWNlQ29udGV4dEluRGF0YVBvaW50cyhkYXRhUG9pbnRzLCBuZXdDb250ZXh0LCBvbGRDb250ZXh0KSxcbiAgICAgICAgICBkYXRhUG9pbnRzOiBkYXRhUG9pbnRzID0+XG4gICAgICAgICAgICB0aGlzLnJlcGxhY2VDb250ZXh0SW5EYXRhUG9pbnRzKGRhdGFQb2ludHMsIG5ld0NvbnRleHQsIG9sZENvbnRleHQpLFxuICAgICAgICAgIGRhdGFwb2ludHNHYXVnZTogZGF0YVBvaW50cyA9PlxuICAgICAgICAgICAgdGhpcy5yZXBsYWNlQ29udGV4dEluRGF0YVBvaW50cyhkYXRhUG9pbnRzLCBuZXdDb250ZXh0LCBvbGRDb250ZXh0KSxcbiAgICAgICAgICBkYXRhcG9pbnRzTGFiZWxzOiBkYXRhUG9pbnRzID0+XG4gICAgICAgICAgICB0aGlzLnJlcGxhY2VDb250ZXh0SW5EYXRhUG9pbnRzKGRhdGFQb2ludHMsIG5ld0NvbnRleHQsIG9sZENvbnRleHQpXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGNmZykge1xuICAgICAgICAgIHRoaXMuY29weVByb3BlcnRpZXMoY2ZnLCBwcm9wZXJ0aWVzVG9Db3B5KTtcbiAgICAgICAgICBpZiAoY2ZnLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuY29weVByb3BlcnRpZXMoY2ZnLm9wdGlvbnMsIHByb3BlcnRpZXNUb0NvcHkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIF9jaGlsZHJlbltpZF0gPSBjbG9uZURlZXAoY2hpbGQpO1xuICAgICAgICByZXR1cm4gX2NoaWxkcmVuO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGRhc2guY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICByZXR1cm4gZGFzaDtcbiAgfVxuXG4gIHByaXZhdGUgY29weVByb3BlcnRpZXMob2JqLCBwcm9wZXJ0aWVzVG9Db3B5KSB7XG4gICAgZm9yRWFjaChwcm9wZXJ0aWVzVG9Db3B5LCAoY29weUZuLCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgaWYgKG9ialtwcm9wZXJ0eV0pIHtcbiAgICAgICAgb2JqW3Byb3BlcnR5XSA9IGNvcHlGbihvYmpbcHJvcGVydHldKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZUNvbnRleHRJbkRhdGFQb2ludHMoXG4gICAgZGF0YVBvaW50cyxcbiAgICBuZXdDb250ZXh0OiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PixcbiAgICBvbGRDb250ZXh0OiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PlxuICApIHtcbiAgICBkYXRhUG9pbnRzLmZvckVhY2goZHAgPT4ge1xuICAgICAgZHAuX190YXJnZXQgPSB0aGlzLnJlcGxhY2VDb250ZXh0SW5PYmooZHAuX190YXJnZXQsIG5ld0NvbnRleHQsIG9sZENvbnRleHQpO1xuICAgIH0pO1xuICAgIHJldHVybiBkYXRhUG9pbnRzO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQ29udGV4dEluT2JqKFxuICAgIG9iajogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4sXG4gICAgbmV3Q29udGV4dDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4sXG4gICAgb2xkQ29udGV4dDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD5cbiAgKSB7XG4gICAgaWYgKG9iaiAmJiBvYmouaWQgPT09IG9sZENvbnRleHQuaWQpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24ob2JqLCBwaWNrKG5ld0NvbnRleHQsIFsnaWQnLCAnbmFtZSddKSk7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBwcml2YXRlIGdldFRhYnMkKG1vOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCwgZGFzaGJvYXJkVHlwZTogQ29udGV4dERhc2hib2FyZFR5cGVbXSkge1xuICAgIGNvbnN0IGRhc2hib2FyZHMgPSB0aGlzLmdldENvbnRleHREYXNoYm9hcmRzKG1vLCBkYXNoYm9hcmRUeXBlKTtcblxuICAgIHJldHVybiB0aGlzLmdldENvbnRleHREYXNoYm9hcmRzJChkYXNoYm9hcmRzKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoZGFzaGJvYXJkID0+IHRoaXMudmVyaWZ5RGFzaGJvYXJkQXZhaWxhYmlsaXR5JChkYXNoYm9hcmQpKSxcbiAgICAgIG1lcmdlTWFwKChbZGFzaGJvYXJkXSkgPT4gdGhpcy5yZW1vdmVEYXNoYm9hcmRNb1Byb3BlcnR5KGRhc2hib2FyZCkpLFxuICAgICAgdGFwKGRhc2hib2FyZCA9PiB0aGlzLmNhY2hlRGFzaGJvYXJkKGRhc2hib2FyZCkpLFxuICAgICAgbWFwKGRhc2hib2FyZCA9PiB0aGlzLmNyZWF0ZURhc2hib2FyZFRhYihkYXNoYm9hcmQpKSxcbiAgICAgIHRvQXJyYXkoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeURhc2hib2FyZEF2YWlsYWJpbGl0eSQoZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IGdsb2JhbFJvbGVzSWRzID0gZGFzaGJvYXJkPy5jOHlfRGFzaGJvYXJkPy5nbG9iYWxSb2xlc0lkcztcbiAgICBjb25zdCBjYW5FZGl0ID0gZnJvbShcbiAgICAgIHRoaXMucGVybWlzc2lvbnMuY2FuRWRpdCh0aGlzLklOVkVOVE9SWV9ST0xFUywgZGFzaGJvYXJkLCB7IHNraXBSZXF1ZXN0Q2hlY2s6IHRydWUgfSlcbiAgICApO1xuICAgIGNvbnN0IGhhc0FueUdsb2JhbFJvbGUgPVxuICAgICAgIWdsb2JhbFJvbGVzSWRzIHx8IGdsb2JhbFJvbGVzSWRzID09PSBBTExfR0xPQkFMX1JPTEVTX1NFTEVDVEVEXG4gICAgICAgID8gb2YodHJ1ZSlcbiAgICAgICAgOiBvZih0aGlzLnBlcm1pc3Npb25zLmhhc0FueUdsb2JhbFJvbGUoZ2xvYmFsUm9sZXNJZHMpKTtcblxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtvZihkYXNoYm9hcmQpLCBjYW5FZGl0LCBoYXNBbnlHbG9iYWxSb2xlXSkucGlwZShcbiAgICAgIGZpbHRlcigoWywgY2FuRWRpdCwgaGFzQW55R2xvYmFsUm9sZV0pID0+IGNhbkVkaXQgfHwgaGFzQW55R2xvYmFsUm9sZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250ZXh0RGFzaGJvYXJkcyQocmVxdWVzdHM6IEFycmF5PFByb21pc2U8SVJlc3VsdExpc3Q8SU1hbmFnZWRPYmplY3Q+Pj4pIHtcbiAgICByZXR1cm4gZnJvbShyZXF1ZXN0cykucGlwZShcbiAgICAgIG1lcmdlQWxsKCksXG4gICAgICBtZXJnZU1hcChyZXNwb25zZSA9PlxuICAgICAgICB0aGlzLmFkanVzdERhc2hib2FyZEZvcjI0Q29sdW1ucyhyZXNwb25zZS5kYXRhIGFzIENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0W10pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbnMgYWxyZWFkeSBjb3JydXB0ZWQgZGFzaGJvYXJkcyBmcm9tIGRhc2hib2FyZE1vIHByb3BlcnR5LlxuICAgKiBBZGRlZCB0byBmaXggZGFzaGJvYXJkcyBvbiB0aGUgY2xvdWQgaW5zdGFuY2UgKGV1LWxhdGVzdCkuXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgaXMgZ29pbmcgdG8gYmUgcmVtb3ZlZCBhZnRlciAxMDA3LjcuMC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcmVtb3ZlRGFzaGJvYXJkTW9Qcm9wZXJ0eShcbiAgICBkYXNoYm9hcmQ6IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0XG4gICk6IFByb21pc2U8Q29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q+IHtcbiAgICBjb25zdCBkYXNoYm9hcmRDb3B5ID0gY2xvbmVEZWVwKGRhc2hib2FyZCk7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBnZXQoZGFzaGJvYXJkQ29weSwgJ2M4eV9EYXNoYm9hcmQuY2hpbGRyZW4nKTtcbiAgICBsZXQgdXBkYXRlRGFzaGJvYXJkID0gZmFsc2U7XG5cbiAgICBmb3JFYWNoKGNoaWxkcmVuLCBjaGlsZCA9PiB7XG4gICAgICBpZiAoZ2V0KGNoaWxkLCAnY29tcG9uZW50VHJhbnNmb3JtQ29uZmlnV2l0aENvbnRleHQnKSkge1xuICAgICAgICBkZWxldGUgY2hpbGQuY29tcG9uZW50VHJhbnNmb3JtQ29uZmlnV2l0aENvbnRleHQ7XG4gICAgICAgIHVwZGF0ZURhc2hib2FyZCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoZ2V0KGNoaWxkLCAnY29uZmlnLmRhc2hib2FyZE1vJykpIHtcbiAgICAgICAgZGVsZXRlIGNoaWxkLmNvbmZpZy5kYXNoYm9hcmRNbztcbiAgICAgICAgdXBkYXRlRGFzaGJvYXJkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh1cGRhdGVEYXNoYm9hcmQpIHtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlKGRhc2hib2FyZENvcHkpO1xuICAgIH1cbiAgICByZXR1cm4gZGFzaGJvYXJkQ29weTtcbiAgfVxuXG4gIHByaXZhdGUgY2FjaGVEYXNoYm9hcmQoZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCkge1xuICAgIHRoaXMuY2FjaGUuc2V0KGRhc2hib2FyZC5pZCwgZGFzaGJvYXJkKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGFzaGJvYXJkVGFiKGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QpIHtcbiAgICBjb25zdCB7IGM4eV9EYXNoYm9hcmQ6IF9kYXNoYm9hcmQsIGlkIH0gPSBkYXNoYm9hcmQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIGljb246IF9kYXNoYm9hcmQuaWNvbixcbiAgICAgIHBhdGg6IGAke3RoaXMuREFTSEJPQVJEX1JPVVRFX1BBVEh9LyR7aWR9YCxcbiAgICAgIGxhYmVsOiBfZGFzaGJvYXJkLm5hbWUsXG4gICAgICBwcmlvcml0eTogX2Rhc2hib2FyZC5wcmlvcml0eSxcbiAgICAgIGhpZGU6IHRoaXMuaXNSZXBvcnQoZGFzaGJvYXJkKVxuICAgIH0gYXMgVGFiO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbihkYXNoYm9hcmQpIHtcbiAgICBjb25zdCBqc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZGFzaGJvYXJkLCAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKGtleSA9PT0gJyQkaGFzaEtleScgfHwga2V5ID09PSAna2xhc3NlcycpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0pO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGpzb25TdHJpbmcpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROYW1lZERhc2hib2FyZChuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnkubGlzdCh7XG4gICAgICBmcmFnbWVudFR5cGU6IGAke3RoaXMuRlJBR01FTlRfTkFNRX0ke3RoaXMuSU5ERVhfU1BMSVR9JHtDb250ZXh0RGFzaGJvYXJkVHlwZS5OYW1lZH0ke3RoaXMuSU5ERVhfU1BMSVR9JHtuYW1lfWAsXG4gICAgICBwYWdlU2l6ZTogMVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250ZXh0RGFzaGJvYXJkcyhtbzogSU1hbmFnZWRPYmplY3QsIGRhc2hib2FyZFR5cGU6IENvbnRleHREYXNoYm9hcmRUeXBlW10pIHtcbiAgICByZXR1cm4gZGFzaGJvYXJkVHlwZS5tYXAoKHR5cGU6IENvbnRleHREYXNoYm9hcmRUeXBlKSA9PlxuICAgICAgdGhpcy5pbnZlbnRvcnkubGlzdCh7XG4gICAgICAgIGZyYWdtZW50VHlwZTogdGhpcy5jcmVhdGVEYXNoYm9hcmRGcmFnbWVudChtbywgdHlwZSksXG4gICAgICAgIHBhZ2VTaXplOiB0aGlzLkRFRkFVTFRfUEFHRVNJWkVcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGFzaGJvYXJkRnJhZ21lbnQobW86IElNYW5hZ2VkT2JqZWN0LCB0eXBlOiBDb250ZXh0RGFzaGJvYXJkVHlwZSkge1xuICAgIGxldCB2YWx1ZTtcbiAgICBpZiAobW8uYzh5X1JlcG9ydCkge1xuICAgICAgdmFsdWUgPSBgJHt0aGlzLlJFUE9SVF9QQVJUSUFMX05BTUV9JHttby5pZH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHR5cGUgPT09IENvbnRleHREYXNoYm9hcmRUeXBlLkRldmljZVR5cGUgPyBtby50eXBlIDogbW8uaWQ7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLkZSQUdNRU5UX05BTUV9JHt0aGlzLklOREVYX1NQTElUfSR7dHlwZX0ke3RoaXMuSU5ERVhfU1BMSVR9JHt2YWx1ZX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREYXNoYm9hcmRUeXBlRnJvbVZpZXdDb250ZXh0KGRhc2hib2FyZENmZywgY29udGV4dCkge1xuICAgIGxldCBkYXNoYm9hcmRUeXBlO1xuICAgIGlmIChjb250ZXh0LmNvbnRleHQgPT09IFZpZXdDb250ZXh0LkRldmljZSkge1xuICAgICAgZGFzaGJvYXJkVHlwZSA9IGRhc2hib2FyZENmZy5kZXZpY2VUeXBlXG4gICAgICAgID8gQ29udGV4dERhc2hib2FyZFR5cGUuRGV2aWNlVHlwZVxuICAgICAgICA6IENvbnRleHREYXNoYm9hcmRUeXBlLkRldmljZTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQuY29udGV4dCA9PT0gVmlld0NvbnRleHQuR3JvdXApIHtcbiAgICAgIGRhc2hib2FyZFR5cGUgPSBDb250ZXh0RGFzaGJvYXJkVHlwZS5Hcm91cDtcbiAgICB9XG4gICAgcmV0dXJuIGRhc2hib2FyZFR5cGU7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZyYWdtZW50S2V5KGNvbnRleHREYXNoYm9hcmRUeXBlOiBDb250ZXh0RGFzaGJvYXJkVHlwZSwgdmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiBbdGhpcy5GUkFHTUVOVF9OQU1FLCBjb250ZXh0RGFzaGJvYXJkVHlwZSwgdmFsdWVdLmpvaW4odGhpcy5JTkRFWF9TUExJVCk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZFNldEdsb2JhbChkYXNoYm9hcmQ6IFBhcnRpYWw8Q29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q+LCBjb250ZXh0Pykge1xuICAgIGlmIChcbiAgICAgICghY29udGV4dCAmJiB0aGlzLmlzTmFtZWQoZGFzaGJvYXJkKSAmJiAhdGhpcy5pc1JlcG9ydChkYXNoYm9hcmQpKSB8fFxuICAgICAgdGhpcy5pc0RldmljZVR5cGUoZGFzaGJvYXJkKVxuICAgICkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
|
|
438
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2NvbnRleHQtZGFzaGJvYXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQTBCLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQWUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUNMLFlBQVksRUFFWix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxZQUFZLEVBQ1osYUFBYSxFQUNiLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsTUFBTSxFQUVOLFdBQVcsRUFDWCxXQUFXLEVBRVosTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsTUFBTSxFQUNOLElBQUksRUFDSixJQUFJLEVBQ0osSUFBSSxFQUNKLEtBQUssRUFDTCxHQUFHLEVBQ0gsR0FBRyxFQUNILE9BQU8sRUFDUCxTQUFTLEVBQ1QsTUFBTSxFQUNOLEdBQUcsRUFDSixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFDTCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEdBQUcsRUFDSCxRQUFRLEVBQ1IsUUFBUSxFQUNSLEdBQUcsRUFDSCxZQUFZLEVBQ1osT0FBTyxFQUNSLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUdMLG9CQUFvQixFQUdwQixzQkFBc0IsRUFDdEIseUJBQXlCLEVBQzFCLE1BQU0sMkJBQTJCLENBQUM7Ozs7OztBQUtuQyxNQUFNLE9B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QUFPLEtBQUssV0FBVyxDQUFDLEtBQUssRUFBRTtZQUN6QyxhQUFhLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDO1NBQzVDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLG9CQUEwQyxFQUFFLEtBQWE7UUFDakYsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRU8sZUFBZSxDQUFDLFNBQWlELEVBQUUsT0FBUTtRQUNqRixJQUNFLENBQUMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFDNUI7WUFDQSxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztvSEE1bEJVLHVCQUF1Qjt3SEFBdkIsdUJBQXVCLGNBRnRCLE1BQU07MkZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdExpc3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIENvbnRleHREYXRhLFxuICBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgZ2V0QWN0aXZhdGVkUm91dGUsXG4gIGdldHRleHQsXG4gIE1vZGFsU2VydmljZSxcbiAgTmF2aWdhdG9yTm9kZSxcbiAgTmF2aWdhdG9yU2VydmljZSxcbiAgUGVybWlzc2lvbnMsXG4gIFN0YXR1cyxcbiAgVGFiLFxuICBUYWJzU2VydmljZSxcbiAgVmlld0NvbnRleHQsXG4gIFdpZGdldFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIGFzc2lnbixcbiAgcGljayxcbiAgc29tZSxcbiAga2V5cyxcbiAga2V5QnksXG4gIGhhcyxcbiAgZ2V0LFxuICBmb3JFYWNoLFxuICBjbG9uZURlZXAsXG4gIHJlZHVjZSxcbiAgc2V0XG59IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgZmlsdGVyLFxuICBtYXAsXG4gIG1lcmdlQWxsLFxuICBtZXJnZU1hcCxcbiAgdGFwLFxuICB0aHJvd0lmRW1wdHksXG4gIHRvQXJyYXlcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ29udGV4dERhc2hib2FyZCxcbiAgQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QsXG4gIENvbnRleHREYXNoYm9hcmRUeXBlLFxuICBEYXNoYm9hcmRDb250ZXh0LFxuICBEYXNoYm9hcmRDb3B5Q2xpcGJvYXJkLFxuICBTVFlMSU5HX0NMQVNTX1BSRUZJWEVTLFxuICBBTExfR0xPQkFMX1JPTEVTX1NFTEVDVEVEXG59IGZyb20gJy4vY29udGV4dC1kYXNoYm9hcmQubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0RGFzaGJvYXJkU2VydmljZSB7XG4gIGZvcm1EaXNhYmxlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IFJFUE9SVF9QQVJUSUFMX05BTUUgPSAncmVwb3J0Xyc7XG4gIGNvcHlDbGlwYm9hcmQ6IERhc2hib2FyZENvcHlDbGlwYm9hcmQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgSU5WRU5UT1JZX1JPTEVTID0gW1Blcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOXTtcbiAgcHJpdmF0ZSBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX1BBR0VTSVpFID0gMTAwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBGUkFHTUVOVF9OQU1FID0gJ2M4eV9EYXNoYm9hcmQnO1xuICBwcml2YXRlIHJlYWRvbmx5IERBU0hCT0FSRF9ST1VURV9QQVRIID0gJ2Rhc2hib2FyZCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgSU5ERVhfU1BMSVQgPSAnISc7XG4gIHByaXZhdGUgX2Zvcm1EaXNhYmxlZCA9IHRydWU7XG4gIHByaXZhdGUgZm9ybURpc2FibGVkU3ViamVjdCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgZ2V0IGZvcm1EaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybURpc2FibGVkO1xuICB9XG5cbiAgc2V0IGZvcm1EaXNhYmxlZCh2YWx1ZSkge1xuICAgIHRoaXMuX2Zvcm1EaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuZm9ybURpc2FibGVkU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW52ZW50b3J5OiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGFiczogVGFic1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbDogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgbmF2aWdhdG9yOiBOYXZpZ2F0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLFxuICAgIHByaXZhdGUgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGR5bmFtaWNDb21wb25lbnQ6IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZm9ybURpc2FibGVkJCA9IHRoaXMuZm9ybURpc2FibGVkU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZShkYXNoYm9hcmRDZmc6IENvbnRleHREYXNoYm9hcmQsIGNvbnRleHQ/OiBDb250ZXh0RGF0YSwgbmFtZSA9ICcnKSB7XG4gICAgbGV0IGlkID0gJyc7XG4gICAgbGV0IGRhc2hib2FyZFR5cGU7XG5cbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgaWQgPSBjb250ZXh0LmNvbnRleHREYXRhLmlkIGFzIHN0cmluZztcbiAgICAgIGRhc2hib2FyZFR5cGUgPSB0aGlzLmdldERhc2hib2FyZFR5cGVGcm9tVmlld0NvbnRleHQoZGFzaGJvYXJkQ2ZnLCBjb250ZXh0KTtcbiAgICB9XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIGRhc2hib2FyZFR5cGUgPSBDb250ZXh0RGFzaGJvYXJkVHlwZS5OYW1lZDtcbiAgICB9XG5cbiAgICBjb25zdCBkYXNoYm9hcmQ6IFBhcnRpYWw8Q29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q+ID0ge307XG4gICAgYXNzaWduKGRhc2hib2FyZCwgdGhpcy5hZGp1c3REYXNoYm9hcmRGb3IyNENvbHVtbnMoeyBjOHlfRGFzaGJvYXJkOiBkYXNoYm9hcmRDZmcgfSkpO1xuXG4gICAgY29uc3QgdmFsdWUgPVxuICAgICAgZGFzaGJvYXJkVHlwZSA9PT0gQ29udGV4dERhc2hib2FyZFR5cGUuRGV2aWNlVHlwZSA/IGRhc2hib2FyZENmZy5kZXZpY2VUeXBlVmFsdWUgOiBuYW1lIHx8IGlkO1xuXG4gICAgY29uc3QgZnJhZ21lbnRLZXkgPSB0aGlzLmNyZWF0ZUZyYWdtZW50S2V5KGRhc2hib2FyZFR5cGUsIHZhbHVlKTtcbiAgICBkYXNoYm9hcmRbZnJhZ21lbnRLZXldID0ge307XG5cbiAgICBpZiAodGhpcy5zaG91bGRTZXRHbG9iYWwoZGFzaGJvYXJkLCBjb250ZXh0KSkge1xuICAgICAgYXNzaWduKGRhc2hib2FyZCwgeyBjOHlfR2xvYmFsOiB7fSB9KTtcbiAgICB9XG4gICAgZGFzaGJvYXJkLm5hbWUgPSBkYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5uYW1lO1xuICAgIGNvbnN0IHsgZGF0YSB9ID1cbiAgICAgIGRhc2hib2FyZFR5cGUgPT09IENvbnRleHREYXNoYm9hcmRUeXBlLkdyb3VwIHx8XG4gICAgICBkYXNoYm9hcmRUeXBlID09PSBDb250ZXh0RGFzaGJvYXJkVHlwZS5EZXZpY2UgfHxcbiAgICAgIChjb250ZXh0ICYmIGRhc2hib2FyZFR5cGUgPT09IENvbnRleHREYXNoYm9hcmRUeXBlLk5hbWVkKVxuICAgICAgICA/IGF3YWl0IHRoaXMuaW52ZW50b3J5LmNoaWxkQWRkaXRpb25zQ3JlYXRlKGRhc2hib2FyZCwgaWQpXG4gICAgICAgIDogYXdhaXQgdGhpcy5pbnZlbnRvcnkuY3JlYXRlKGRhc2hib2FyZCk7XG4gICAgcmV0dXJuIGRhdGEgYXMgQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q7XG4gIH1cblxuICBhc3luYyBkZXRhaWwoZGFzaGJvYXJkTU86IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0KSB7XG4gICAgbGV0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkuZGV0YWlsKGRhc2hib2FyZE1PKTtcbiAgICBkYXRhID0gdGhpcy5hZGp1c3REYXNoYm9hcmRGb3IyNENvbHVtbnMoZGF0YSBhcyBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCk7XG4gICAgdGhpcy5jYWNoZS5zZXQoZGFzaGJvYXJkTU8uaWQsIGRhdGEpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlKGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QpIHtcbiAgICBkYXNoYm9hcmQubmFtZSA9IGRhc2hib2FyZC5jOHlfRGFzaGJvYXJkLm5hbWU7XG4gICAgZGFzaGJvYXJkID0gdGhpcy5hZGp1c3REYXNoYm9hcmRGb3IyNENvbHVtbnMoZGFzaGJvYXJkKTtcbiAgICBjb25zdCBrZWVwRnJhZ21lbnRzID0gdGhpcy5jbGVhbihwaWNrKGRhc2hib2FyZCwgW3RoaXMuRlJBR01FTlRfTkFNRSwgJ2lkJywgJ25hbWUnXSkpO1xuICAgIGtlZXBGcmFnbWVudHMuYzh5X0dsb2JhbCA9IHRoaXMuc2hvdWxkU2V0R2xvYmFsKGRhc2hib2FyZCk7XG4gICAgYXdhaXQgdGhpcy5zZXJpYWxpemVXaWRnZXRDb25maWdzKGtlZXBGcmFnbWVudHMpO1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkudXBkYXRlKGtlZXBGcmFnbWVudHMpO1xuICAgIHRoaXMuY2FjaGUuc2V0KGRhc2hib2FyZC5pZCwgZGF0YSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBhc3luYyBkZWxldGUoZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCwgd2l0aENvbmZpcm1hdGlvbiA9IHRydWUpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHdpdGhDb25maXJtYXRpb24pIHtcbiAgICAgICAgbGV0IG1zZzogc3RyaW5nID0gZ2V0dGV4dChcbiAgICAgICAgICBgWW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIGRhc2hib2FyZCBcInt7IGRhc2hib2FyZE5hbWUgfX1cIi4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD9gXG4gICAgICAgICk7XG4gICAgICAgIGlmICh0aGlzLmlzRGV2aWNlVHlwZShkYXNoYm9hcmQpKSB7XG4gICAgICAgICAgbXNnID0gZ2V0dGV4dChcbiAgICAgICAgICAgIGBZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSB0aGUgZGFzaGJvYXJkIFwie3sgZGFzaGJvYXJkTmFtZSB9fVwiIGZyb20gYWxsIGRldmljZXMgb2YgdGhlIHR5cGUgXCJ7eyBkZXZpY2VUeXBlIH19XCIuXG4gICAgICAgICAgIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5tb2RhbC5jb25maXJtKFxuICAgICAgICAgIGdldHRleHQoJ0RlbGV0ZSBkYXNoYm9hcmQnKSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChtc2csIHtcbiAgICAgICAgICAgIGRhc2hib2FyZE5hbWU6IGRhc2hib2FyZC5jOHlfRGFzaGJvYXJkLm5hbWUsXG4gICAgICAgICAgICBkZXZpY2VUeXBlOiBkYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWVcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBTdGF0dXMuREFOR0VSLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9rOiBnZXR0ZXh0KCdEZWxldGUnKSxcbiAgICAgICAgICAgIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJylcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLmludmVudG9yeS5kZWxldGUoZGFzaGJvYXJkKTtcbiAgICAgIGNvbnN0IHRhYlRvUmVtb3ZlID0gQXJyYXkuZnJvbSh0aGlzLnRhYnMuc3RhdGUpLmZpbmQodGFiID0+XG4gICAgICAgIHRhYi5wYXRoLmVuZHNXaXRoKGAke3RoaXMuREFTSEJPQVJEX1JPVVRFX1BBVEh9LyR7ZGFzaGJvYXJkLmlkfWApXG4gICAgICApO1xuICAgICAgdGhpcy50YWJzLnJlbW92ZSh0YWJUb1JlbW92ZSk7XG4gICAgICB0aGlzLnRhYnMucmVmcmVzaCgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvLyBpbnRlbmRlZCBlbXB0eVxuICAgIH1cbiAgfVxuXG4gIGFjdGl2YXRlRGFzaGJvYXJkcyhcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICB0eXBlczogQ29udGV4dERhc2hib2FyZFR5cGVbXVxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBUYWJbXT4ge1xuICAgIGNvbnN0IHsgZGFzaGJvYXJkSWQgfSA9IHJvdXRlLnBhcmFtcztcbiAgICBpZiAoZGFzaGJvYXJkSWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldERhc2hib2FyZCQoZGFzaGJvYXJkSWQsIHR5cGVzLCByb3V0ZS5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YSkucGlwZShcbiAgICAgICAgdGFwKGRhc2hib2FyZCA9PiB7XG4gICAgICAgICAgcm91dGUuZGF0YSA9IHsgZGFzaGJvYXJkIH07XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKCkgPT4gdHJ1ZSksXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFRhYnMkKHJvdXRlLmRhdGEuY29udGV4dERhdGEsIHR5cGVzKTtcbiAgfVxuXG4gIGdldE5hbWVkRGFzaGJvYXJkT3JDcmVhdGUobmFtZTogc3RyaW5nLCBkZWZhdWx0V2lkZ2V0czogV2lkZ2V0W10sIGNvbnRleHQ/OiBDb250ZXh0RGF0YSkge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5tYXBXaWRnZXRzKGRlZmF1bHRXaWRnZXRzKTtcbiAgICByZXR1cm4gdGhpcy5nZXREYXNoYm9hcmQkKG5hbWUsIFtDb250ZXh0RGFzaGJvYXJkVHlwZS5OYW1lZF0pLnBpcGUoXG4gICAgICB0aHJvd0lmRW1wdHkoKSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT5cbiAgICAgICAgZnJvbShcbiAgICAgICAgICB0aGlzLmNyZWF0ZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICAgIHdpZGdldENsYXNzZXM6IHsgJ2Rhc2hib2FyZC10aGVtZS1saWdodCc6IHRydWUsICdwYW5lbC10aXRsZS1yZWd1bGFyJzogdHJ1ZSB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaFRhYnMoZGFzaGJvYXJkTU86IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0KSB7XG4gICAgaWYgKCF0aGlzLmlzTmFtZWQoZGFzaGJvYXJkTU8pKSB7XG4gICAgICBjb25zdCB0YWJUb1VwZGF0ZSA9IEFycmF5LmZyb20odGhpcy50YWJzLnN0YXRlKS5maW5kKHRhYiA9PlxuICAgICAgICB0YWIucGF0aC5lbmRzV2l0aChgJHt0aGlzLkRBU0hCT0FSRF9ST1VURV9QQVRIfS8ke2Rhc2hib2FyZE1PLmlkfWApXG4gICAgICApO1xuXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5kZXRhaWwoZGFzaGJvYXJkTU8pO1xuICAgICAgaWYgKHRhYlRvVXBkYXRlKSB7XG4gICAgICAgIGNvbnN0IHsgaWNvbiwgcHJpb3JpdHksIG5hbWUgfSA9IGRhdGEuYzh5X0Rhc2hib2FyZDtcbiAgICAgICAgdGFiVG9VcGRhdGUuaWNvbiA9IGljb247XG4gICAgICAgIHRhYlRvVXBkYXRlLnByaW9yaXR5ID0gcHJpb3JpdHk7XG4gICAgICAgIHRhYlRvVXBkYXRlLmxhYmVsID0gbmFtZTtcbiAgICAgIH1cbiAgICAgIHRoaXMudGFicy5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlTmF2aWdhdG9ySXRlbShtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICB0aGlzLm5hdmlnYXRvci5zdGF0ZS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgaWYgKG5vZGUucGF0aCA9PT0gYHJlcG9ydHMvJHttby5pZH1gKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdG9yLnJlbW92ZShub2RlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAobW8uYzh5X0lzTmF2aWdhdG9yTm9kZSkge1xuICAgICAgY29uc3Qgbm9kZVRvQWRkID0gbmV3IE5hdmlnYXRvck5vZGUoe1xuICAgICAgICBsYWJlbDogbW8ubmFtZSxcbiAgICAgICAgcGF0aDogYHJlcG9ydHMvJHttby5pZH1gLFxuICAgICAgICBpY29uOiBtby5pY29uLFxuICAgICAgICBwcmlvcml0eTogbW8ucHJpb3JpdHlcbiAgICAgIH0pO1xuICAgICAgdGhpcy5uYXZpZ2F0b3IuYWRkKG5vZGVUb0FkZCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbmF2aWdhdGVUb0Rhc2hib2FyZChkYXNoYm9hcmRNTzogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QpIHtcbiAgICBpZiAoL2Rhc2hib2FyZC8udGVzdCh0aGlzLnJvdXRlci51cmwpKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uJywgZGFzaGJvYXJkTU8uaWRdLCB7XG4gICAgICAgIHJlbGF0aXZlVG86IGdldEFjdGl2YXRlZFJvdXRlKHRoaXMucm91dGVyKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICgvXlxcLyhkZXZpY2V8Z3JvdXApXFwvWzAtOV0rJC8udGVzdCh0aGlzLnJvdXRlci51cmwpKSB7XG4gICAgICAvLyBpbiBjYXNlIHRoZSBhZGQgZGFzaGJvYXJkIGJ1dHRvbiBpcyB0aGUgb25seSB0YWIgb24gdGhhdCByb3V0ZVxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuJywgdGhpcy5EQVNIQk9BUkRfUk9VVEVfUEFUSCwgZGFzaGJvYXJkTU8uaWRdLCB7XG4gICAgICAgIHJlbGF0aXZlVG86IGdldEFjdGl2YXRlZFJvdXRlKHRoaXMucm91dGVyKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4nLCB0aGlzLkRBU0hCT0FSRF9ST1VURV9QQVRILCBkYXNoYm9hcmRNTy5pZF0sIHtcbiAgICAgICAgcmVsYXRpdmVUbzogZ2V0QWN0aXZhdGVkUm91dGUodGhpcy5yb3V0ZXIpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjYW5FZGl0RGFzaGJvYXJkKG1vKSB7XG4gICAgcmV0dXJuIHRoaXMucGVybWlzc2lvbnMuY2FuRWRpdChcbiAgICAgIFtQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9BRE1JTiwgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQ1JFQVRFXSxcbiAgICAgIG1vXG4gICAgKTtcbiAgfVxuXG4gIGlzTmFtZWQoZGFzaGJvYXJkOiBQYXJ0aWFsPENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0Pikge1xuICAgIHJldHVybiBzb21lKGtleXMoZGFzaGJvYXJkKSwgcHJvcCA9PlxuICAgICAgbmV3IFJlZ0V4cChcbiAgICAgICAgYF4ke3RoaXMuRlJBR01FTlRfTkFNRX0ke3RoaXMuSU5ERVhfU1BMSVR9JHtDb250ZXh0RGFzaGJvYXJkVHlwZS5OYW1lZH0ke3RoaXMuSU5ERVhfU1BMSVR9YFxuICAgICAgKS50ZXN0KHByb3ApXG4gICAgKTtcbiAgfVxuXG4gIGlzUmVwb3J0KGRhc2hib2FyZDogUGFydGlhbDxDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdD4pIHtcbiAgICByZXR1cm4gc29tZShrZXlzKGRhc2hib2FyZCksIHByb3AgPT5cbiAgICAgIG5ldyBSZWdFeHAoXG4gICAgICAgIGBeJHt0aGlzLkZSQUdNRU5UX05BTUV9JHt0aGlzLklOREVYX1NQTElUfSR7Q29udGV4dERhc2hib2FyZFR5cGUuTmFtZWR9JHt0aGlzLklOREVYX1NQTElUfSR7dGhpcy5SRVBPUlRfUEFSVElBTF9OQU1FfWBcbiAgICAgICkudGVzdChwcm9wKVxuICAgICk7XG4gIH1cblxuICBpc0RldmljZVR5cGUoZGFzaGJvYXJkOiBQYXJ0aWFsPENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0Pikge1xuICAgIHJldHVybiBzb21lKGtleXMoZGFzaGJvYXJkKSwgcHJvcCA9PlxuICAgICAgbmV3IFJlZ0V4cChcbiAgICAgICAgYF4ke3RoaXMuRlJBR01FTlRfTkFNRX0ke3RoaXMuSU5ERVhfU1BMSVR9JHtDb250ZXh0RGFzaGJvYXJkVHlwZS5EZXZpY2VUeXBlfSR7dGhpcy5JTkRFWF9TUExJVH1gXG4gICAgICApLnRlc3QocHJvcClcbiAgICApO1xuICB9XG5cbiAgaXNEZXZpY2VEYXNoYm9hcmQoZGFzaGJvYXJkOiBQYXJ0aWFsPENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzb21lKGtleXMoZGFzaGJvYXJkKSwgcHJvcCA9PlxuICAgICAgbmV3IFJlZ0V4cChcbiAgICAgICAgYF4ke3RoaXMuRlJBR01FTlRfTkFNRX0ke3RoaXMuSU5ERVhfU1BMSVR9JHtDb250ZXh0RGFzaGJvYXJkVHlwZS5EZXZpY2V9JHt0aGlzLklOREVYX1NQTElUfWBcbiAgICAgICkudGVzdChwcm9wKVxuICAgICk7XG4gIH1cblxuICBpc0dyb3VwRGFzaGJvYXJkKGRhc2hib2FyZDogUGFydGlhbDxDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdD4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gc29tZShrZXlzKGRhc2hib2FyZCksIHByb3AgPT5cbiAgICAgIG5ldyBSZWdFeHAoXG4gICAgICAgIGBeJHt0aGlzLkZSQUdNRU5UX05BTUV9JHt0aGlzLklOREVYX1NQTElUfSR7Q29udGV4dERhc2hib2FyZFR5cGUuR3JvdXB9JHt0aGlzLklOREVYX1NQTElUfWBcbiAgICAgICkudGVzdChwcm9wKVxuICAgICk7XG4gIH1cblxuICBnZXRGaWx0ZXJlZERhc2hib2FyZFN0eWxlcyhzdHlsZUxpc3Q6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIHN0eWxlTGlzdC5maWx0ZXIoYyA9PlxuICAgICAgU1RZTElOR19DTEFTU19QUkVGSVhFUy5zb21lKGNsYXNzUHJlZml4ID0+IGMuc3RhcnRzV2l0aChjbGFzc1ByZWZpeCkpXG4gICAgKTtcbiAgfVxuXG4gIGdldFN0eWxpbmcoc3R5bGVMaXN0LCBzdHlsZU5hbWUsIGRlZmF1bHRWYWx1ZSkge1xuICAgIGNvbnN0IHN0eWxpbmcgPSBzdHlsZUxpc3QuZmluZChcbiAgICAgIHN0eWxlID0+IHN0eWxlICYmIG5ldyBSZWdFeHAoYC0ke3N0eWxlTmFtZX0kYCwgJ2knKS50ZXN0KHN0eWxlLmNsYXNzKVxuICAgICk7XG4gICAgcmV0dXJuIHN0eWxpbmcgPyBzdHlsaW5nLmNsYXNzIDogZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgbWFwV2lkZ2V0cyh3aWRnZXRzOiBXaWRnZXRbXSkge1xuICAgIHJldHVybiBrZXlCeShcbiAgICAgIHdpZGdldHMubWFwKHdpZGdldCA9PiB7XG4gICAgICAgIHdpZGdldC5pZCA9IFN0cmluZyhNYXRoLnJhbmRvbSgpKS5zdWJzdHIoMik7XG4gICAgICAgIHJldHVybiB3aWRnZXQ7XG4gICAgICB9KSxcbiAgICAgICdpZCdcbiAgICApO1xuICB9XG5cbiAgZ2V0RGFzaGJvYXJkJChkYXNoYm9hcmRJZE9yTmFtZSwgZGFzaGJvYXJkVHlwZTogQ29udGV4dERhc2hib2FyZFR5cGVbXSwgbW8/OiBJTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IGNhY2hlID0gdGhpcy5jYWNoZS5nZXQoZGFzaGJvYXJkSWRPck5hbWUpO1xuXG4gICAgY29uc3QgZGFzaGJvYXJkcyA9IG1vXG4gICAgICA/IHRoaXMuZ2V0Q29udGV4dERhc2hib2FyZHMobW8sIGRhc2hib2FyZFR5cGUpXG4gICAgICA6IFt0aGlzLmdldE5hbWVkRGFzaGJvYXJkKGRhc2hib2FyZElkT3JOYW1lKV07XG5cbiAgICBjb25zdCBjYWNoZVJlZnJlc2ggPSB0aGlzLmdldENvbnRleHREYXNoYm9hcmRzJChkYXNoYm9hcmRzKS5waXBlKFxuICAgICAgdGFwKGRhc2hib2FyZCA9PiB0aGlzLmNhY2hlRGFzaGJvYXJkKGRhc2hib2FyZCkpLFxuICAgICAgZmlsdGVyKFxuICAgICAgICBkYXNoYm9hcmQgPT5cbiAgICAgICAgICBkYXNoYm9hcmQuaWQgPT09IGRhc2hib2FyZElkT3JOYW1lIHx8XG4gICAgICAgICAgaGFzKFxuICAgICAgICAgICAgZGFzaGJvYXJkLFxuICAgICAgICAgICAgYCR7dGhpcy5GUkFHTUVOVF9OQU1FfSR7dGhpcy5JTkRFWF9TUExJVH0ke0NvbnRleHREYXNoYm9hcmRUeXBlLk5hbWVkfSR7dGhpcy5JTkRFWF9TUExJVH0ke2Rhc2hib2FyZElkT3JOYW1lfWBcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICByZXR1cm4gY2FjaGUgPyBvZihjYWNoZSkgOiBjYWNoZVJlZnJlc2g7XG4gIH1cblxuICBhc3luYyBwYXN0ZURhc2hib2FyZChuZXdDb250ZXh0OiBEYXNoYm9hcmRDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuY29weUNsaXBib2FyZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHRoaXMuY2FuUGFzdGVEYXNoYm9hcmQodGhpcy5jb3B5Q2xpcGJvYXJkLCBuZXdDb250ZXh0LmNvbnRleHQpKSB7XG4gICAgICAgICAgY29uc3QgZGFzaGJvYXJkVG9QYXN0ZSA9IHRoaXMuY3JlYXRlQ29udGV4dERhc2hib2FyZENvcHkoXG4gICAgICAgICAgICB0aGlzLmNvcHlDbGlwYm9hcmQuZGFzaGJvYXJkLFxuICAgICAgICAgICAgbmV3Q29udGV4dC5jb250ZXh0RGF0YSxcbiAgICAgICAgICAgIHRoaXMuY29weUNsaXBib2FyZC5jb250ZXh0LmNvbnRleHREYXRhXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBkYXNoYm9hcmQgPSBhd2FpdCB0aGlzLmNyZWF0ZSh0aGlzLmNsZWFuKGRhc2hib2FyZFRvUGFzdGUpLCBuZXdDb250ZXh0KTtcbiAgICAgICAgICB0aGlzLmNvcHlDbGlwYm9hcmQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvRGFzaGJvYXJkKGRhc2hib2FyZCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0aGlzLmFsZXJ0Lndhcm5pbmcoZ2V0dGV4dCgnSW5zdWZmaWNpZW50IHBlcm1pc3Npb25zIGZvciB0aGlzIGFjdGlvbi4nKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWlncmF0ZSBkYXNoYm9hcmRzIGZyb20gcHJldmlvdXMgMTIgY29sdW1ucyBsYXlvdXQgdG8gMjQgY29sdW1ucy5cbiAgICovXG4gIHByaXZhdGUgYWRqdXN0RGFzaGJvYXJkRm9yMjRDb2x1bW5zPFQgZXh0ZW5kcyB7IGM4eV9EYXNoYm9hcmQ/OiBDb250ZXh0RGFzaGJvYXJkIH0+KFxuICAgIGRhc2hib2FyZHM6IFRbXVxuICApOiBUW107XG4gIHByaXZhdGUgYWRqdXN0RGFzaGJvYXJkRm9yMjRDb2x1bW5zPFQgZXh0ZW5kcyB7IGM4eV9EYXNoYm9hcmQ/OiBDb250ZXh0RGFzaGJvYXJkIH0+KFxuICAgIGRhc2hib2FyZHM6IFRcbiAgKTogVDtcbiAgcHJpdmF0ZSBhZGp1c3REYXNoYm9hcmRGb3IyNENvbHVtbnM8VCBleHRlbmRzIHsgYzh5X0Rhc2hib2FyZD86IENvbnRleHREYXNoYm9hcmQgfT4oXG4gICAgZGFzaGJvYXJkczogVCB8IFRbXVxuICApOiBUIHwgVFtdIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXNoYm9hcmRzKSkge1xuICAgICAgcmV0dXJuIGRhc2hib2FyZHMubWFwKGRhc2hib2FyZCA9PiB0aGlzLmFkanVzdERhc2hib2FyZEZvcjI0Q29sdW1ucyhkYXNoYm9hcmQpKTtcbiAgICB9XG4gICAgLy8gaWYgYGNvbHVtbnNgIGF0dHJpYnV0ZSBleGlzdHMsIGRhc2hib2FyZCB3YXMgYWxyZWFkeSBhZGp1c3RlZC5cbiAgICBpZiAoZGFzaGJvYXJkcy5jOHlfRGFzaGJvYXJkLmNvbHVtbnMpIHtcbiAgICAgIHJldHVybiBkYXNoYm9hcmRzO1xuICAgIH1cblxuICAgIGRhc2hib2FyZHMuYzh5X0Rhc2hib2FyZC5jb2x1bW5zID0gMjQ7XG4gICAgaWYgKCFkYXNoYm9hcmRzLmM4eV9EYXNoYm9hcmQuY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBkYXNoYm9hcmRzO1xuICAgIH1cbiAgICAvLyB3ZSBuZWVkIHRvIG11bHRpcGx5IGJvdGggX3dpZHRoIGFuZCBfeCBhdHRyaWJ1dGVzIHdpdGggMiB0byBtaWdyYXRlIGZyb20gMTIgdG8gMjQgY29sdW1ucy5cbiAgICBPYmplY3QudmFsdWVzKGRhc2hib2FyZHMuYzh5X0Rhc2hib2FyZC5jaGlsZHJlbikuZm9yRWFjaCh3aWRnZXQgPT4ge1xuICAgICAgaWYgKHdpZGdldC5fd2lkdGgpIHtcbiAgICAgICAgd2lkZ2V0Ll93aWR0aCA9IHdpZGdldC5fd2lkdGggKiAyO1xuICAgICAgfVxuICAgICAgaWYgKHdpZGdldC5feCkge1xuICAgICAgICB3aWRnZXQuX3ggPSB3aWRnZXQuX3ggKiAyO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkYXNoYm9hcmRzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXJpYWxpemVXaWRnZXRDb25maWdzKGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IGNsb25lRGVlcChkYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5jaGlsZHJlbik7XG4gICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb25maWdzID0gT2JqZWN0LnZhbHVlcyhjaGlsZHJlbik7XG4gICAgY29uc3QgZGV0YWlscyA9IGNvbmZpZ3MubWFwKCh7IGNvbXBvbmVudElkLCBjb25maWcgfSkgPT4gKHsgY29tcG9uZW50SWQsIGNvbmZpZyB9KSk7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuZHluYW1pY0NvbXBvbmVudC5zZXJpYWxpemVDb25maWdzKGRldGFpbHMpO1xuICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0LCBpbmRleCkgPT4ge1xuICAgICAgT2JqZWN0LmVudHJpZXMocmVzdWx0KS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgc2V0KGRldGFpbHNbaW5kZXhdLmNvbmZpZywga2V5LCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBkYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5QYXN0ZURhc2hib2FyZChcbiAgICBjb3B5Q2xpcGJvYXJkOiBEYXNoYm9hcmRDb3B5Q2xpcGJvYXJkLFxuICAgIGN1cnJlbnRDb250ZXh0OiBWaWV3Q29udGV4dFxuICApOiBib29sZWFuIHtcbiAgICBjb25zdCBjbGlwYm9hcmRWaWV3Q29udGV4dCA9IGNvcHlDbGlwYm9hcmQuY29udGV4dC5jb250ZXh0O1xuXG4gICAgaWYgKGN1cnJlbnRDb250ZXh0ICE9PSBjbGlwYm9hcmRWaWV3Q29udGV4dCkge1xuICAgICAgaWYgKGNsaXBib2FyZFZpZXdDb250ZXh0ID09PSBWaWV3Q29udGV4dC5EZXZpY2UpIHtcbiAgICAgICAgdGhpcy5hbGVydC53YXJuaW5nKGdldHRleHQoJ0RldmljZSBkYXNoYm9hcmRzIGNhbiBvbmx5IGJlIGNvcGllZCBpbnRvIGEgZGV2aWNlLicpKTtcbiAgICAgIH0gZWxzZSBpZiAoY2xpcGJvYXJkVmlld0NvbnRleHQgPT09IFZpZXdDb250ZXh0Lkdyb3VwKSB7XG4gICAgICAgIHRoaXMuYWxlcnQud2FybmluZyhnZXR0ZXh0KCdHcm91cCBkYXNoYm9hcmRzIGNhbiBvbmx5IGJlIGNvcGllZCBpbnRvIGEgZ3JvdXAuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ29udGV4dERhc2hib2FyZENvcHkoXG4gICAgZGFzaDogQ29udGV4dERhc2hib2FyZCxcbiAgICBuZXdDb250ZXh0OiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PixcbiAgICBvbGRDb250ZXh0OiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PlxuICApOiBDb250ZXh0RGFzaGJvYXJkIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHJlZHVjZShcbiAgICAgIGRhc2guY2hpbGRyZW4sXG4gICAgICAoX2NoaWxkcmVuLCBjaGlsZCkgPT4ge1xuICAgICAgICBjb25zdCB7IGlkIH0gPSBjaGlsZDtcbiAgICAgICAgY29uc3QgY2ZnID0gY2hpbGQuY29uZmlnO1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzVG9Db3B5ID0ge1xuICAgICAgICAgIGRldmljZTogZGV2aWNlID0+IHRoaXMucmVwbGFjZUNvbnRleHRJbk9iaihkZXZpY2UsIG5ld0NvbnRleHQsIG9sZENvbnRleHQpLFxuICAgICAgICAgIGRhdGFwb2ludHM6IGRhdGFQb2ludHMgPT5cbiAgICAgICAgICAgIHRoaXMucmVwbGFjZUNvbnRleHRJbkRhdGFQb2ludHMoZGF0YVBvaW50cywgbmV3Q29udGV4dCwgb2xkQ29udGV4dCksXG4gICAgICAgICAgZGF0YVBvaW50czogZGF0YVBvaW50cyA9PlxuICAgICAgICAgICAgdGhpcy5yZXBsYWNlQ29udGV4dEluRGF0YVBvaW50cyhkYXRhUG9pbnRzLCBuZXdDb250ZXh0LCBvbGRDb250ZXh0KSxcbiAgICAgICAgICBkYXRhcG9pbnRzR2F1Z2U6IGRhdGFQb2ludHMgPT5cbiAgICAgICAgICAgIHRoaXMucmVwbGFjZUNvbnRleHRJbkRhdGFQb2ludHMoZGF0YVBvaW50cywgbmV3Q29udGV4dCwgb2xkQ29udGV4dCksXG4gICAgICAgICAgZGF0YXBvaW50c0xhYmVsczogZGF0YVBvaW50cyA9PlxuICAgICAgICAgICAgdGhpcy5yZXBsYWNlQ29udGV4dEluRGF0YVBvaW50cyhkYXRhUG9pbnRzLCBuZXdDb250ZXh0LCBvbGRDb250ZXh0KVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChjZmcpIHtcbiAgICAgICAgICB0aGlzLmNvcHlQcm9wZXJ0aWVzKGNmZywgcHJvcGVydGllc1RvQ29weSk7XG4gICAgICAgICAgaWYgKGNmZy5vcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLmNvcHlQcm9wZXJ0aWVzKGNmZy5vcHRpb25zLCBwcm9wZXJ0aWVzVG9Db3B5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBfY2hpbGRyZW5baWRdID0gY2xvbmVEZWVwKGNoaWxkKTtcbiAgICAgICAgcmV0dXJuIF9jaGlsZHJlbjtcbiAgICAgIH0sXG4gICAgICB7fVxuICAgICk7XG5cbiAgICBkYXNoLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgcmV0dXJuIGRhc2g7XG4gIH1cblxuICBwcml2YXRlIGNvcHlQcm9wZXJ0aWVzKG9iaiwgcHJvcGVydGllc1RvQ29weSkge1xuICAgIGZvckVhY2gocHJvcGVydGllc1RvQ29weSwgKGNvcHlGbiwgcHJvcGVydHkpID0+IHtcbiAgICAgIGlmIChvYmpbcHJvcGVydHldKSB7XG4gICAgICAgIG9ialtwcm9wZXJ0eV0gPSBjb3B5Rm4ob2JqW3Byb3BlcnR5XSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VDb250ZXh0SW5EYXRhUG9pbnRzKFxuICAgIGRhdGFQb2ludHMsXG4gICAgbmV3Q29udGV4dDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4sXG4gICAgb2xkQ29udGV4dDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD5cbiAgKSB7XG4gICAgZGF0YVBvaW50cy5mb3JFYWNoKGRwID0+IHtcbiAgICAgIGRwLl9fdGFyZ2V0ID0gdGhpcy5yZXBsYWNlQ29udGV4dEluT2JqKGRwLl9fdGFyZ2V0LCBuZXdDb250ZXh0LCBvbGRDb250ZXh0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YVBvaW50cztcbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZUNvbnRleHRJbk9iaihcbiAgICBvYmo6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+LFxuICAgIG5ld0NvbnRleHQ6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+LFxuICAgIG9sZENvbnRleHQ6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+XG4gICkge1xuICAgIGlmIChvYmogJiYgb2JqLmlkID09PSBvbGRDb250ZXh0LmlkKSB7XG4gICAgICBPYmplY3QuYXNzaWduKG9iaiwgcGljayhuZXdDb250ZXh0LCBbJ2lkJywgJ25hbWUnXSkpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUYWJzJChtbzogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QsIGRhc2hib2FyZFR5cGU6IENvbnRleHREYXNoYm9hcmRUeXBlW10pIHtcbiAgICBjb25zdCBkYXNoYm9hcmRzID0gdGhpcy5nZXRDb250ZXh0RGFzaGJvYXJkcyhtbywgZGFzaGJvYXJkVHlwZSk7XG5cbiAgICByZXR1cm4gdGhpcy5nZXRDb250ZXh0RGFzaGJvYXJkcyQoZGFzaGJvYXJkcykucGlwZShcbiAgICAgIG1lcmdlTWFwKGRhc2hib2FyZCA9PiB0aGlzLnZlcmlmeURhc2hib2FyZEF2YWlsYWJpbGl0eSQoZGFzaGJvYXJkKSksXG4gICAgICBtZXJnZU1hcCgoW2Rhc2hib2FyZF0pID0+IHRoaXMucmVtb3ZlRGFzaGJvYXJkTW9Qcm9wZXJ0eShkYXNoYm9hcmQpKSxcbiAgICAgIHRhcChkYXNoYm9hcmQgPT4gdGhpcy5jYWNoZURhc2hib2FyZChkYXNoYm9hcmQpKSxcbiAgICAgIG1hcChkYXNoYm9hcmQgPT4gdGhpcy5jcmVhdGVEYXNoYm9hcmRUYWIoZGFzaGJvYXJkKSksXG4gICAgICB0b0FycmF5KClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlEYXNoYm9hcmRBdmFpbGFiaWxpdHkkKGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QpIHtcbiAgICBjb25zdCBnbG9iYWxSb2xlc0lkcyA9IGRhc2hib2FyZD8uYzh5X0Rhc2hib2FyZD8uZ2xvYmFsUm9sZXNJZHM7XG4gICAgY29uc3QgY2FuRWRpdCA9IGZyb20oXG4gICAgICB0aGlzLnBlcm1pc3Npb25zLmNhbkVkaXQodGhpcy5JTlZFTlRPUllfUk9MRVMsIGRhc2hib2FyZCwgeyBza2lwUmVxdWVzdENoZWNrOiB0cnVlIH0pXG4gICAgKTtcbiAgICBjb25zdCBoYXNBbnlHbG9iYWxSb2xlID1cbiAgICAgICFnbG9iYWxSb2xlc0lkcyB8fCBnbG9iYWxSb2xlc0lkcyA9PT0gQUxMX0dMT0JBTF9ST0xFU19TRUxFQ1RFRFxuICAgICAgICA/IG9mKHRydWUpXG4gICAgICAgIDogb2YodGhpcy5wZXJtaXNzaW9ucy5oYXNBbnlHbG9iYWxSb2xlKGdsb2JhbFJvbGVzSWRzKSk7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbb2YoZGFzaGJvYXJkKSwgY2FuRWRpdCwgaGFzQW55R2xvYmFsUm9sZV0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKFssIGNhbkVkaXQsIGhhc0FueUdsb2JhbFJvbGVdKSA9PiBjYW5FZGl0IHx8IGhhc0FueUdsb2JhbFJvbGUpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udGV4dERhc2hib2FyZHMkKHJlcXVlc3RzOiBBcnJheTxQcm9taXNlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj4+KSB7XG4gICAgcmV0dXJuIGZyb20ocmVxdWVzdHMpLnBpcGUoXG4gICAgICBtZXJnZUFsbCgpLFxuICAgICAgbWVyZ2VNYXAocmVzcG9uc2UgPT5cbiAgICAgICAgdGhpcy5hZGp1c3REYXNoYm9hcmRGb3IyNENvbHVtbnMocmVzcG9uc2UuZGF0YSBhcyBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdFtdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW5zIGFscmVhZHkgY29ycnVwdGVkIGRhc2hib2FyZHMgZnJvbSBkYXNoYm9hcmRNbyBwcm9wZXJ0eS5cbiAgICogQWRkZWQgdG8gZml4IGRhc2hib2FyZHMgb24gdGhlIGNsb3VkIGluc3RhbmNlIChldS1sYXRlc3QpLlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIGlzIGdvaW5nIHRvIGJlIHJlbW92ZWQgYWZ0ZXIgMTAwNy43LjAuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlbW92ZURhc2hib2FyZE1vUHJvcGVydHkoXG4gICAgZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdFxuICApOiBQcm9taXNlPENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0PiB7XG4gICAgY29uc3QgZGFzaGJvYXJkQ29weSA9IGNsb25lRGVlcChkYXNoYm9hcmQpO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gZ2V0KGRhc2hib2FyZENvcHksICdjOHlfRGFzaGJvYXJkLmNoaWxkcmVuJyk7XG4gICAgbGV0IHVwZGF0ZURhc2hib2FyZCA9IGZhbHNlO1xuXG4gICAgZm9yRWFjaChjaGlsZHJlbiwgY2hpbGQgPT4ge1xuICAgICAgaWYgKGdldChjaGlsZCwgJ2NvbXBvbmVudFRyYW5zZm9ybUNvbmZpZ1dpdGhDb250ZXh0JykpIHtcbiAgICAgICAgZGVsZXRlIGNoaWxkLmNvbXBvbmVudFRyYW5zZm9ybUNvbmZpZ1dpdGhDb250ZXh0O1xuICAgICAgICB1cGRhdGVEYXNoYm9hcmQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGdldChjaGlsZCwgJ2NvbmZpZy5kYXNoYm9hcmRNbycpKSB7XG4gICAgICAgIGRlbGV0ZSBjaGlsZC5jb25maWcuZGFzaGJvYXJkTW87XG4gICAgICAgIHVwZGF0ZURhc2hib2FyZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodXBkYXRlRGFzaGJvYXJkKSB7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZShkYXNoYm9hcmRDb3B5KTtcbiAgICB9XG4gICAgcmV0dXJuIGRhc2hib2FyZENvcHk7XG4gIH1cblxuICBwcml2YXRlIGNhY2hlRGFzaGJvYXJkKGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QpIHtcbiAgICB0aGlzLmNhY2hlLnNldChkYXNoYm9hcmQuaWQsIGRhc2hib2FyZCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURhc2hib2FyZFRhYihkYXNoYm9hcmQ6IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0KSB7XG4gICAgY29uc3QgeyBjOHlfRGFzaGJvYXJkOiBfZGFzaGJvYXJkLCBpZCB9ID0gZGFzaGJvYXJkO1xuICAgIHJldHVybiB7XG4gICAgICBpY29uOiBfZGFzaGJvYXJkLmljb24sXG4gICAgICBwYXRoOiBgJHt0aGlzLkRBU0hCT0FSRF9ST1VURV9QQVRIfS8ke2lkfWAsXG4gICAgICBsYWJlbDogX2Rhc2hib2FyZC5uYW1lLFxuICAgICAgcHJpb3JpdHk6IF9kYXNoYm9hcmQucHJpb3JpdHksXG4gICAgICBoaWRlOiB0aGlzLmlzUmVwb3J0KGRhc2hib2FyZClcbiAgICB9IGFzIFRhYjtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW4oZGFzaGJvYXJkKSB7XG4gICAgY29uc3QganNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGRhc2hib2FyZCwgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgIGlmIChrZXkgPT09ICckJGhhc2hLZXknIHx8IGtleSA9PT0gJ2tsYXNzZXMnKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShqc29uU3RyaW5nKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TmFtZWREYXNoYm9hcmQobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5Lmxpc3Qoe1xuICAgICAgZnJhZ21lbnRUeXBlOiBgJHt0aGlzLkZSQUdNRU5UX05BTUV9JHt0aGlzLklOREVYX1NQTElUfSR7Q29udGV4dERhc2hib2FyZFR5cGUuTmFtZWR9JHt0aGlzLklOREVYX1NQTElUfSR7bmFtZX1gLFxuICAgICAgcGFnZVNpemU6IDFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udGV4dERhc2hib2FyZHMobW86IElNYW5hZ2VkT2JqZWN0LCBkYXNoYm9hcmRUeXBlOiBDb250ZXh0RGFzaGJvYXJkVHlwZVtdKSB7XG4gICAgcmV0dXJuIGRhc2hib2FyZFR5cGUubWFwKCh0eXBlOiBDb250ZXh0RGFzaGJvYXJkVHlwZSkgPT5cbiAgICAgIHRoaXMuaW52ZW50b3J5Lmxpc3Qoe1xuICAgICAgICBmcmFnbWVudFR5cGU6IHRoaXMuY3JlYXRlRGFzaGJvYXJkRnJhZ21lbnQobW8sIHR5cGUpLFxuICAgICAgICBwYWdlU2l6ZTogdGhpcy5ERUZBVUxUX1BBR0VTSVpFXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURhc2hib2FyZEZyYWdtZW50KG1vOiBJTWFuYWdlZE9iamVjdCwgdHlwZTogQ29udGV4dERhc2hib2FyZFR5cGUpIHtcbiAgICBsZXQgdmFsdWU7XG4gICAgaWYgKG1vLmM4eV9SZXBvcnQpIHtcbiAgICAgIHZhbHVlID0gYCR7dGhpcy5SRVBPUlRfUEFSVElBTF9OQU1FfSR7bW8uaWR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSB0eXBlID09PSBDb250ZXh0RGFzaGJvYXJkVHlwZS5EZXZpY2VUeXBlID8gbW8udHlwZSA6IG1vLmlkO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy5GUkFHTUVOVF9OQU1FfSR7dGhpcy5JTkRFWF9TUExJVH0ke3R5cGV9JHt0aGlzLklOREVYX1NQTElUfSR7dmFsdWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGFzaGJvYXJkVHlwZUZyb21WaWV3Q29udGV4dChkYXNoYm9hcmRDZmcsIGNvbnRleHQpIHtcbiAgICBsZXQgZGFzaGJvYXJkVHlwZTtcbiAgICBpZiAoY29udGV4dC5jb250ZXh0ID09PSBWaWV3Q29udGV4dC5EZXZpY2UpIHtcbiAgICAgIGRhc2hib2FyZFR5cGUgPSBkYXNoYm9hcmRDZmcuZGV2aWNlVHlwZVxuICAgICAgICA/IENvbnRleHREYXNoYm9hcmRUeXBlLkRldmljZVR5cGVcbiAgICAgICAgOiBDb250ZXh0RGFzaGJvYXJkVHlwZS5EZXZpY2U7XG4gICAgfVxuICAgIGlmIChjb250ZXh0LmNvbnRleHQgPT09IFZpZXdDb250ZXh0Lkdyb3VwKSB7XG4gICAgICBkYXNoYm9hcmRUeXBlID0gQ29udGV4dERhc2hib2FyZFR5cGUuR3JvdXA7XG4gICAgfVxuICAgIHJldHVybiBkYXNoYm9hcmRUeXBlO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGcmFnbWVudEtleShjb250ZXh0RGFzaGJvYXJkVHlwZTogQ29udGV4dERhc2hib2FyZFR5cGUsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gW3RoaXMuRlJBR01FTlRfTkFNRSwgY29udGV4dERhc2hib2FyZFR5cGUsIHZhbHVlXS5qb2luKHRoaXMuSU5ERVhfU1BMSVQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRTZXRHbG9iYWwoZGFzaGJvYXJkOiBQYXJ0aWFsPENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0PiwgY29udGV4dD8pIHtcbiAgICBpZiAoXG4gICAgICAoIWNvbnRleHQgJiYgdGhpcy5pc05hbWVkKGRhc2hib2FyZCkgJiYgIXRoaXMuaXNSZXBvcnQoZGFzaGJvYXJkKSkgfHxcbiAgICAgIHRoaXMuaXNEZXZpY2VUeXBlKGRhc2hib2FyZClcbiAgICApIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -80,7 +80,7 @@ export class DashboardDetailComponent {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
setupApplyToDevicesOfTypeCheckbox() {
|
|
83
|
-
const rolesToCheck = [
|
|
83
|
+
const rolesToCheck = [Permissions.ROLE_INVENTORY_CREATE, Permissions.ROLE_INVENTORY_ADMIN];
|
|
84
84
|
this.applyToDevicesOfTypePermitted = this.permissionsService.hasAnyRole(rolesToCheck);
|
|
85
85
|
}
|
|
86
86
|
save() {
|
|
@@ -139,4 +139,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
139
139
|
type: ViewChild,
|
|
140
140
|
args: ['dashboardDetailForm', { static: true }]
|
|
141
141
|
}] } });
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9kYXNoYm9hcmQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQWlCLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIscUJBQXFCLEVBRXRCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sd0RBQXdELENBQUM7Ozs7Ozs7Ozs7Ozs7QUFNakgsTUFBTSxPQUFPLHdCQUF3QjtJQTBCbkMsSUFBSSx5QkFBeUI7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLDZCQUE2QjtZQUM3QyxDQUFDLENBQUMsT0FBTyxDQUFDLG1EQUFtRCxDQUFDO1lBQzlELENBQUMsQ0FBQyxPQUFPLENBQUMseUVBQXlFLENBQUMsQ0FBQztRQUN2RixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBU0QsWUFDVSxLQUFpQixFQUNqQix1QkFBZ0QsRUFDaEQsZ0JBQWtDLEVBQ2xDLGtCQUErQixFQUMvQixnQkFBa0M7UUFKbEMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFhO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFsQzVDLFlBQU8sR0FBRztZQUNSLFVBQVUsRUFBRSx1QkFBdUI7WUFDbkMsV0FBVyxFQUFFLHFCQUFxQjtTQUNuQyxDQUFDO1FBQ0Ysb0JBQWUsR0FBRyxFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLENBQUM7UUFJckUsV0FBTSxHQUE4QixJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNsRSxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztZQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztRQVdNLDZCQUF3QixHQUFHLEVBQUUsQ0FBQztRQUM5QiwyQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFDOUIsK0JBQTBCLEdBQUcsS0FBSyxDQUFDO0lBV3pDLENBQUM7SUFFSixrQkFBa0I7UUFDaEIsTUFBTSxtQkFBbUIsR0FBOEI7WUFDckQsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0YsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUNyQixDQUFDLENBQUMsdUNBQXVDO2dCQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLDBCQUEwQjtZQUNuQyxJQUFJLEVBQUUsSUFBSSxDQUFDLHNCQUFzQjtZQUNqQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDaEMsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUNoRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDN0M7UUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1FBQ3BELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7SUFDdEQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDL0U7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNqRjtJQUNILENBQUM7SUFFRCxpQ0FBaUM7UUFDL0IsTUFBTSxZQUFZLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUI7WUFDckUsQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQjtnQkFDdkIsQ0FBQyxDQUFDLElBQUk7Z0JBQ04sQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUN0QixVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDNUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzNDLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBSTtRQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBWTtRQUN6QixJQUFJLElBQUksRUFBRTtZQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2pFO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO1lBQ3pCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhO1NBQ2hDLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNwRSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQy9ELHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQ3hCLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUNoRSxxQkFBcUIsRUFDckIsU0FBUyxFQUNULElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUN6QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztxSEFsSlUsd0JBQXdCO3lHQUF4Qix3QkFBd0Isc01DcEJyQyxvbVhBK1NBOzJGRDNSYSx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0Usc0JBQXNCOytOQUlvQixtQkFBbUI7c0JBQXRFLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGdldHRleHQsIE5hdmlnYXRvck5vZGUsIE5hdmlnYXRvclNlcnZpY2UsIFBlcm1pc3Npb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBjbG9uZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDb250ZXh0RGFzaGJvYXJkLFxuICBEQVNIQk9BUkRfVEhFTUVfQ0xBU1NFUyxcbiAgV0lER0VUX0hFQURFUl9DTEFTU0VTLFxuICBEYXNoYm9hcmRHbG9iYWxSb2xlc1xufSBmcm9tICcuL2NvbnRleHQtZGFzaGJvYXJkLm1vZGVsJztcbmltcG9ydCB7IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IFJFUE9SVF9ERUZBVUxUX05BVklHQVRJT05fTk9ERV9QUklPUklUWSB9IGZyb20gJy4vcmVwb3J0LWRhc2hib2FyZC9yZXBvcnQtZGFzaGJvYXJkLW5hdmlnYXRpb24uZmFjdG9yeSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXNoYm9hcmQtZGV0YWlsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZERldGFpbENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2Rhc2hib2FyZERldGFpbEZvcm0nLCB7IHN0YXRpYzogdHJ1ZSB9KSBkYXNoYm9hcmREZXRhaWxGb3JtOiBOZ0Zvcm07XG4gIGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZDtcbiAgY3VycmVudERhc2hib2FyZDogQ29udGV4dERhc2hib2FyZDtcbiAgZGFzaGJvYXJkTmFtZTogc3RyaW5nO1xuICBpc1JlcG9ydDogYm9vbGVhbjtcbiAgZGV2aWNlVHlwZTogc3RyaW5nO1xuICBpc05hbWVkRGFzaGJvYXJkOiBib29sZWFuO1xuICBpc0RldmljZVR5cGU6IGJvb2xlYW47XG4gIGljb25zOiBzdHJpbmdbXTtcbiAgZmlsdGVyZWRJY29uczogc3RyaW5nW107XG4gIHN0eWxpbmcgPSB7XG4gICAgdGhlbWVDbGFzczogJ2Rhc2hib2FyZC10aGVtZS1saWdodCcsXG4gICAgaGVhZGVyQ2xhc3M6ICdwYW5lbC10aXRsZS1yZWd1bGFyJ1xuICB9O1xuICBwb3NzaWJsZVN0eWxpbmcgPSB7IERBU0hCT0FSRF9USEVNRV9DTEFTU0VTLCBXSURHRVRfSEVBREVSX0NMQVNTRVMgfTtcbiAgdGl0bGU6IHN0cmluZztcbiAgbmFtZVBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIG5hdmlnYXRvck5vZGVzJDogT2JzZXJ2YWJsZTxOYXZpZ2F0b3JOb2RlW10+O1xuICByZXN1bHQ6IFByb21pc2U8Q29udGV4dERhc2hib2FyZD4gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdGhpcy5fc2F2ZSA9IHJlc29sdmU7XG4gICAgdGhpcy5fY2FuY2VsID0gcmVqZWN0O1xuICB9KTtcbiAgZ2xvYmFsUm9sZXNJZHM6IERhc2hib2FyZEdsb2JhbFJvbGVzO1xuXG4gIGFwcGx5VG9EZXZpY2VzT2ZUeXBlUGVybWl0dGVkOiBib29sZWFuO1xuICBnZXQgYXBwbHlUb0RldmljZXNPZlR5cGVUaXRsZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRleHQgPSB0aGlzLmFwcGx5VG9EZXZpY2VzT2ZUeXBlUGVybWl0dGVkXG4gICAgICA/IGdldHRleHQoJ0FwcGx5IGRhc2hib2FyZCB0byBhbGwgZGV2aWNlcyBvZiB0eXBlIHt7IHR5cGUgfX0nKVxuICAgICAgOiBnZXR0ZXh0KCdBcHBseSBkYXNoYm9hcmQgdG8gYWxsIGRldmljZXMgb2YgdHlwZSB7eyB0eXBlIH19IChwZXJtaXNzaW9uIHJlcXVpcmVkKScpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0ZXh0LCB7IHR5cGU6IHRoaXMuZGFzaGJvYXJkLmRldmljZVR5cGVWYWx1ZSB9KTtcbiAgfVxuXG4gIHJlYWRvbmx5IERFRkFVTFRfREFTSEJPQVJEX01BUkdJTiA9IDEyO1xuICByZWFkb25seSBERUZBVUxUX0RBU0hCT0FSRF9JQ09OID0gJ3RoJztcbiAgcmVhZG9ubHkgREVGQVVMVF9EQVNIQk9BUkRfUFJJT1JJVFkgPSAxMDAwMDtcblxuICBwcml2YXRlIF9zYXZlO1xuICBwcml2YXRlIF9jYW5jZWw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtb2RhbDogQnNNb2RhbFJlZixcbiAgICBwcml2YXRlIGNvbnRleHREYXNoYm9hcmRTZXJ2aWNlOiBDb250ZXh0RGFzaGJvYXJkU2VydmljZSxcbiAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uc1NlcnZpY2U6IFBlcm1pc3Npb25zLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGRlZmF1bHREYXNoYm9hcmRDZmc6IFBhcnRpYWw8Q29udGV4dERhc2hib2FyZD4gPSB7XG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLmlzUmVwb3J0ID8gZ2V0dGV4dCgnUmVwb3J0JykgOiBnZXR0ZXh0KCdEYXNoYm9hcmQnKSksXG4gICAgICBwcmlvcml0eTogdGhpcy5pc1JlcG9ydFxuICAgICAgICA/IFJFUE9SVF9ERUZBVUxUX05BVklHQVRJT05fTk9ERV9QUklPUklUWVxuICAgICAgICA6IHRoaXMuREVGQVVMVF9EQVNIQk9BUkRfUFJJT1JJVFksXG4gICAgICBpY29uOiB0aGlzLkRFRkFVTFRfREFTSEJPQVJEX0lDT04sXG4gICAgICBkZXZpY2VUeXBlVmFsdWU6IHRoaXMuZGV2aWNlVHlwZSxcbiAgICAgIGNvbHVtbnM6IDI0XG4gICAgfTtcblxuICAgIGlmICh0aGlzLmRhc2hib2FyZCkge1xuICAgICAgdGhpcy5jdXJyZW50RGFzaGJvYXJkID0gY2xvbmUodGhpcy5kYXNoYm9hcmQpO1xuICAgICAgdGhpcy5kYXNoYm9hcmROYW1lID0gdGhpcy5jdXJyZW50RGFzaGJvYXJkLm5hbWU7XG4gICAgICB0aGlzLnNldERhc2hib2FyZFN0eWxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGFzaGJvYXJkID0gZGVmYXVsdERhc2hib2FyZENmZztcbiAgICAgIHRoaXMuZGFzaGJvYXJkTmFtZSA9IHRoaXMuZGFzaGJvYXJkLm5hbWU7XG4gICAgICB0aGlzLmRhc2hib2FyZERldGFpbEZvcm0uZm9ybS5tYXJrQXNEaXJ0eSgpO1xuICAgIH1cbiAgICB0aGlzLnNldFRpdGxlKCk7XG4gICAgdGhpcy5zZXR1cEFwcGx5VG9EZXZpY2VzT2ZUeXBlQ2hlY2tib3goKTtcbiAgICB0aGlzLm5hdmlnYXRvck5vZGVzJCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5pdGVtcyQ7XG4gICAgdGhpcy5uYW1lUGxhY2Vob2xkZXIgPSB0aGlzLmlzUmVwb3J0ID8gZ2V0dGV4dCgnZS5nLiBNeSByZXBvcnQnKSA6IGdldHRleHQoJ2UuZy4gTXkgZGFzaGJvYXJkJyk7XG4gICAgdGhpcy5nbG9iYWxSb2xlc0lkcyA9IHRoaXMuZGFzaGJvYXJkLmdsb2JhbFJvbGVzSWRzO1xuICB9XG5cbiAgc2V0VGl0bGUoKSB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnREYXNoYm9hcmQpIHtcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLmlzUmVwb3J0ID8gZ2V0dGV4dCgnQWRkIHJlcG9ydCcpIDogZ2V0dGV4dCgnQWRkIGRhc2hib2FyZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRpdGxlID0gdGhpcy5pc1JlcG9ydCA/IGdldHRleHQoJ0VkaXQgcmVwb3J0JykgOiBnZXR0ZXh0KCdFZGl0IGRhc2hib2FyZCcpO1xuICAgIH1cbiAgfVxuXG4gIHNldHVwQXBwbHlUb0RldmljZXNPZlR5cGVDaGVja2JveCgpIHtcbiAgICBjb25zdCByb2xlc1RvQ2hlY2sgPSBbJ1JPTEVfSU5WRU5UT1JZX0NSRUFURScsICdST0xFX0lOVkVOVE9SWV9BRE1JTiddO1xuICAgIHRoaXMuYXBwbHlUb0RldmljZXNPZlR5cGVQZXJtaXR0ZWQgPSB0aGlzLnBlcm1pc3Npb25zU2VydmljZS5oYXNBbnlSb2xlKHJvbGVzVG9DaGVjayk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIHRoaXMuZGFzaGJvYXJkLmdsb2JhbFJvbGVzSWRzID0gdGhpcy5nbG9iYWxSb2xlc0lkcztcbiAgICB0aGlzLmRhc2hib2FyZC5uYW1lID0gdGhpcy5kYXNoYm9hcmROYW1lO1xuICAgIHRoaXMuZGFzaGJvYXJkLmNsYXNzZXMgPSB7IFt0aGlzLnN0eWxpbmcudGhlbWVDbGFzc106IHRydWUgfTtcbiAgICB0aGlzLmRhc2hib2FyZC53aWRnZXRDbGFzc2VzID0geyBbdGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzXTogdHJ1ZSB9O1xuICAgIHRoaXMuZGFzaGJvYXJkLmM4eV9Jc05hdmlnYXRvck5vZGUgPSB0aGlzLmRhc2hib2FyZC5jOHlfSXNOYXZpZ2F0b3JOb2RlXG4gICAgICA/IHt9XG4gICAgICA6IHRoaXMuY3VycmVudERhc2hib2FyZFxuICAgICAgPyBudWxsXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9zYXZlKHRoaXMuZGFzaGJvYXJkKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuX2NhbmNlbCgpO1xuICAgIHRoaXMubW9kYWwuaGlkZSgpO1xuICB9XG5cbiAgZ2V0RGFzaGJvYXJkUHJldmlld1N0eWxlKCkge1xuICAgIGNvbnN0IGNzc0NsYXNzZXMgPSB7fTtcbiAgICBjc3NDbGFzc2VzW3RoaXMuc3R5bGluZy5oZWFkZXJDbGFzc10gPSB0cnVlO1xuICAgIGNzc0NsYXNzZXNbdGhpcy5zdHlsaW5nLnRoZW1lQ2xhc3NdID0gdHJ1ZTtcbiAgICByZXR1cm4gY3NzQ2xhc3NlcztcbiAgfVxuXG4gIHNlbGVjdEljb24oaWNvbikge1xuICAgIHRoaXMuZGFzaGJvYXJkLmljb24gPSBpY29uO1xuICAgIHRoaXMuZGFzaGJvYXJkRGV0YWlsRm9ybS5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICB1cGRhdGVGaWx0ZXJlZCh0ZXJtOiBzdHJpbmcpIHtcbiAgICBpZiAodGVybSkge1xuICAgICAgY29uc3Qgc2VhcmNoID0gbmV3IFJlZ0V4cCh0ZXJtLCAnaScpO1xuICAgICAgdGhpcy5maWx0ZXJlZEljb25zID0gdGhpcy5pY29ucy5maWx0ZXIodmFsID0+IHNlYXJjaC50ZXN0KHZhbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSWNvbnMgPSB0aGlzLmljb25zO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0RGFzaGJvYXJkU3R5bGUoKSB7XG4gICAgY29uc3QgYWxsQ2xhc3NlcyA9IHtcbiAgICAgIC4uLnRoaXMuZGFzaGJvYXJkLmNsYXNzZXMsXG4gICAgICAuLi50aGlzLmRhc2hib2FyZC53aWRnZXRDbGFzc2VzXG4gICAgfTtcblxuICAgIGNvbnN0IHN0eWxlcyA9IE9iamVjdC5rZXlzKGFsbENsYXNzZXMpLm1hcChjID0+IGMuc3BsaXQoJy0nKS5wb3AoKSk7XG4gICAgc3R5bGVzLmZvckVhY2goc3R5bGVOYW1lID0+IHtcbiAgICAgIHRoaXMuc3R5bGluZy50aGVtZUNsYXNzID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5nZXRTdHlsaW5nKFxuICAgICAgICBEQVNIQk9BUkRfVEhFTUVfQ0xBU1NFUyxcbiAgICAgICAgc3R5bGVOYW1lLFxuICAgICAgICB0aGlzLnN0eWxpbmcudGhlbWVDbGFzc1xuICAgICAgKTtcbiAgICAgIHRoaXMuc3R5bGluZy5oZWFkZXJDbGFzcyA9IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuZ2V0U3R5bGluZyhcbiAgICAgICAgV0lER0VUX0hFQURFUl9DTEFTU0VTLFxuICAgICAgICBzdHlsZU5hbWUsXG4gICAgICAgIHRoaXMuc3R5bGluZy5oZWFkZXJDbGFzc1xuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInZpZXdwb3J0LW1vZGFsXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgc2VwYXJhdG9yLWJvdHRvbVwiPlxuICAgIDxoMyBpZD1cIm1vZGFsLXRpdGxlXCI+e3sgdGl0bGUgfCB0cmFuc2xhdGUgfX08L2gzPlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJtb2RhbC1pbm5lci1zY3JvbGxcIlxuICAgIGlkPVwibW9kYWwtYm9keVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwicC1sLTI0IHAtci0yNFwiPlxuICAgICAgPGZvcm1cbiAgICAgICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICAgICAgI2Rhc2hib2FyZERldGFpbEZvcm09XCJuZ0Zvcm1cIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzTmFtZWREYXNoYm9hcmQgfHwgaXNSZXBvcnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgJ0dlbmVyYWwnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgICAgIDxjOHktaWNvbi1zZWxlY3Rvci13cmFwcGVyXG4gICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRJY29uXT1cImRhc2hib2FyZC5pY29uIHx8ICd0aCdcIlxuICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cInNlbGVjdEljb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvYzh5LWljb24tc2VsZWN0b3Itd3JhcHBlcj5cbiAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJmbGV4LWdyb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cIm1lbnVMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyAnTWVudSBsYWJlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyPVwie3tcbiAgICAgICAgICAgICAgICAgICAgICAgICdNZW51IGxhYmVsIHRvIGRpc3BsYXkgaW4gc3VibWVudSB3aGVuIGRhc2hib2FyZCBpcyBhdHRhY2hlZCcgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJtZW51TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IG5hbWVQbGFjZWhvbGRlciB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhc2hib2FyZE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI1MTJcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwICpuZ0lmPVwiaXNSZXBvcnRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgaWQ9XCJkZXNjcmlwdGlvblwiPnt7ICdEZXNjcmlwdGlvbiAnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICByb3dzPVwiMlwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhc2hib2FyZC5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1zbS02XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzUmVwb3J0XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwb3NpdGlvbk5hdlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicG9zaXRpb25OYXZcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdQb3NpdGlvbiBpbiBuYXZpZ2F0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyPVwie3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Bvc2l0aW9uIGluIG5hdmlnYXRpb24gbWVudSAoMTAwMDAgZmlyc3QsIC0xMDAwMCBsYXN0KScgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInBvc2l0aW9uTmF2XCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuJyB8IHRyYW5zbGF0ZSB9fSA1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwcmlvcml0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhc2hib2FyZC5wcmlvcml0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgbWluPVwiLTEwMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgICBtYXg9XCIxMDAwMFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtc20tNlwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImlzUmVwb3J0XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPk5hdmlnYXRvciBtZW51IGl0ZW08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2hvdyBpbiBuYXZpZ2F0b3InIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlzTmF2aWdhdG9yTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCIhIWRhc2hib2FyZC5jOHlfSXNOYXZpZ2F0b3JOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnU2hvdyBpbiBuYXZpZ2F0b3InIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1zbS02XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNSZXBvcnRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBvc2l0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLXItNFwiPnt7ICdQb3NpdGlvbiBpbiBuYXZpZ2F0b3InIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcG9zaXRpb25Jbk5hdlBvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQb3NpdGlvbiBpbiBuYXZpZ2F0b3IgKDEwMDAxIGZpcnN0LCAtMTAwMDAgbGFzdCkuJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fSZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnRXhpc3Rpbmcgbm9kZXM6JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBtLXQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBub2RlIG9mIG5hdmlnYXRvck5vZGVzJCB8IGFzeW5jXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwibm9kZS5pY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid29yZC1icmVhayBtLWwtNCBtLXItMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUubGFiZWwubGVuZ3RoID4gMTVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChub2RlLmxhYmVsIHwgc2xpY2U6IDA6MTUpICsgJy4uLidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG5vZGUubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHVsbC1yaWdodFwiPnt7IG5vZGUucHJpb3JpdHkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BvcG92ZXJdPVwicG9zaXRpb25Jbk5hdlBvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0gNTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicHJpb3JpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgIGZvcj1cInBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhc2hib2FyZC5wcmlvcml0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgbWluPVwiLTEwMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgICBtYXg9XCIyMDAwMFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWN1cnJlbnREYXNoYm9hcmQgJiYgZGV2aWNlVHlwZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGFwcGx5VG9EZXZpY2VzT2ZUeXBlVGl0bGUgfX1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZGV2aWNlVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhc2hib2FyZC5kZXZpY2VUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWFwcGx5VG9EZXZpY2VzT2ZUeXBlUGVybWl0dGVkXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1yLTRcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwieyB0eXBlOiBkYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIH1cIlxuICAgICAgICAgICAgICAgICAgICAgIG5nTm9uQmluZGFibGVcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIEFwcGx5IGRhc2hib2FyZCB0byBhbGwgZGV2aWNlcyBvZiB0eXBlXG4gICAgICAgICAgICAgICAgICAgICAgPGk+e3sgdHlwZSB9fTwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mbyBtLWItMjRcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0RldmljZVR5cGVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIGM4eS1pY29uPVwiaW5mb1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInsgdHlwZTogZGFzaGJvYXJkLmRldmljZVR5cGVWYWx1ZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBUaGlzIGRhc2hib2FyZCBpcyBzaGFyZWQgYmV0d2VlbiBhbGwgZGV2aWNlcyBvZiB0aGUgdHlwZVxuICAgICAgICAgICAgICAgICAgICA8aT57eyB0eXBlIH19PC9pPlxuICAgICAgICAgICAgICAgICAgICAuXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Yzh5LWRhc2hib2FyZC1hdmFpbGFiaWxpdHlcbiAgICAgICAgICAgICAgKm5nSWY9XCIhIWlzUmVwb3J0ID09PSBmYWxzZVwiXG4gICAgICAgICAgICAgIFsoZ2xvYmFsUm9sZXNJZHMpXT1cImdsb2JhbFJvbGVzSWRzXCJcbiAgICAgICAgICAgICAgKGdsb2JhbFJvbGVzSWRzQ2hhbmdlKT1cImRhc2hib2FyZERldGFpbEZvcm0/LmZvcm0/Lm1hcmtBc0RpcnR5KClcIlxuICAgICAgICAgICAgPjwvYzh5LWRhc2hib2FyZC1hdmFpbGFiaWxpdHk+XG4gICAgICAgICAgICA8Yzh5LWFwcGVhcmFuY2Utc2V0dGluZ3NcbiAgICAgICAgICAgICAgWyh0aGVtZUNsYXNzKV09XCJzdHlsaW5nLnRoZW1lQ2xhc3NcIlxuICAgICAgICAgICAgICBbKGhlYWRlckNsYXNzKV09XCJzdHlsaW5nLmhlYWRlckNsYXNzXCJcbiAgICAgICAgICAgID48L2M4eS1hcHBlYXJhbmNlLXNldHRpbmdzPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJwLWItMjQgbS1iLTBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJtYXJnaW5cIj57eyAnV2lkZ2V0IG1hcmdpbicgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cIm1hcmdpblwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBERUZBVUxUX0RBU0hCT0FSRF9NQVJHSU4gfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJtYXJnaW5cIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLndpZGdldE1hcmdpblwiXG4gICAgICAgICAgICAgICAgICAgICAgbWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgbWF4PVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+cHg8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwicC1iLTI0IG0tYi0wXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPldpZGdldCB0aXRsZXM8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYzh5LWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnVHJhbnNsYXRlIGlmIHBvc3NpYmxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ0cmFuc2xhdGVXaWRnZXRUaXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhc2hib2FyZC50cmFuc2xhdGVXaWRnZXRUaXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ1RyYW5zbGF0ZSBpZiBwb3NzaWJsZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgIDxjOHktd2lkZ2V0LXByZXZpZXdcbiAgICAgICAgICAgICAgW3RhYl09XCIhaXNOYW1lZERhc2hib2FyZCA/IGRhc2hib2FyZCA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIFtwcmV2aWV3Q2xhc3Nlc109XCJnZXREYXNoYm9hcmRQcmV2aWV3U3R5bGUoKVwiXG4gICAgICAgICAgICA+PC9jOHktd2lkZ2V0LXByZXZpZXc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBkYXRhLWN5PVwiZGFzaGJvYXJkLWRldGFpbC0tY2FuY2VsLWRhc2hib2FyZFwiXG4gICAgICB0aXRsZT1cInt7ICdDYW5jZWwnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgID5cbiAgICAgIHt7ICdDYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBkYXRhLWN5PVwiZGFzaGJvYXJkLWRldGFpbC0tc2F2ZS1kYXNoYm9hcmRcIlxuICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwic2F2ZSgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkYXNoYm9hcmREZXRhaWxGb3JtLmZvcm0uaW52YWxpZCB8fCBkYXNoYm9hcmREZXRhaWxGb3JtLmZvcm0ucHJpc3RpbmVcIlxuICAgID5cbiAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9kYXNoYm9hcmQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQWlCLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIscUJBQXFCLEVBRXRCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sd0RBQXdELENBQUM7Ozs7Ozs7Ozs7Ozs7QUFNakgsTUFBTSxPQUFPLHdCQUF3QjtJQTJCbkMsSUFBSSx5QkFBeUI7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLDZCQUE2QjtZQUM3QyxDQUFDLENBQUMsT0FBTyxDQUFDLG1EQUFtRCxDQUFDO1lBQzlELENBQUMsQ0FBQyxPQUFPLENBQUMseUVBQXlFLENBQUMsQ0FBQztRQUN2RixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFF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LENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNwRSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQy9ELHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQ3hCLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUNoRSxxQkFBcUIsRUFDckIsU0FBUyxFQUNULElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUN6QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztxSEFuSlUsd0JBQXdCO3lHQUF4Qix3QkFBd0Isc01DcEJyQyxvbVhBK1NBOzJGRDNSYSx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0Usc0JBQXNCOytOQUlvQixtQkFBbUI7c0JBQXRFLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGdldHRleHQsIE5hdmlnYXRvck5vZGUsIE5hdmlnYXRvclNlcnZpY2UsIFBlcm1pc3Npb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBjbG9uZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDb250ZXh0RGFzaGJvYXJkLFxuICBEQVNIQk9BUkRfVEhFTUVfQ0xBU1NFUyxcbiAgV0lER0VUX0hFQURFUl9DTEFTU0VTLFxuICBEYXNoYm9hcmRHbG9iYWxSb2xlc1xufSBmcm9tICcuL2NvbnRleHQtZGFzaGJvYXJkLm1vZGVsJztcbmltcG9ydCB7IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IFJFUE9SVF9ERUZBVUxUX05BVklHQVRJT05fTk9ERV9QUklPUklUWSB9IGZyb20gJy4vcmVwb3J0LWRhc2hib2FyZC9yZXBvcnQtZGFzaGJvYXJkLW5hdmlnYXRpb24uZmFjdG9yeSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXNoYm9hcmQtZGV0YWlsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZERldGFpbENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2Rhc2hib2FyZERldGFpbEZvcm0nLCB7IHN0YXRpYzogdHJ1ZSB9KSBkYXNoYm9hcmREZXRhaWxGb3JtOiBOZ0Zvcm07XG4gIGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZDtcbiAgY3VycmVudERhc2hib2FyZDogQ29udGV4dERhc2hib2FyZDtcbiAgZGFzaGJvYXJkTmFtZTogc3RyaW5nO1xuICBpc1JlcG9ydDogYm9vbGVhbjtcbiAgZGV2aWNlVHlwZTogc3RyaW5nO1xuICBpc05hbWVkRGFzaGJvYXJkOiBib29sZWFuO1xuICBpc0RldmljZVR5cGU6IGJvb2xlYW47XG4gIGljb25zOiBzdHJpbmdbXTtcbiAgZmlsdGVyZWRJY29uczogc3RyaW5nW107XG4gIHN0eWxpbmcgPSB7XG4gICAgdGhlbWVDbGFzczogJ2Rhc2hib2FyZC10aGVtZS1saWdodCcsXG4gICAgaGVhZGVyQ2xhc3M6ICdwYW5lbC10aXRsZS1yZWd1bGFyJ1xuICB9O1xuICBwb3NzaWJsZVN0eWxpbmcgPSB7IERBU0hCT0FSRF9USEVNRV9DTEFTU0VTLCBXSURHRVRfSEVBREVSX0NMQVNTRVMgfTtcbiAgdGl0bGU6IHN0cmluZztcbiAgbmFtZVBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIG5hdmlnYXRvck5vZGVzJDogT2JzZXJ2YWJsZTxOYXZpZ2F0b3JOb2RlW10+O1xuICByZXN1bHQ6IFByb21pc2U8Q29udGV4dERhc2hib2FyZD4gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdGhpcy5fc2F2ZSA9IHJlc29sdmU7XG4gICAgdGhpcy5fY2FuY2VsID0gcmVqZWN0O1xuICB9KTtcbiAgZ2xvYmFsUm9sZXNJZHM6IERhc2hib2FyZEdsb2JhbFJvbGVzO1xuXG4gIGFwcGx5VG9EZXZpY2VzT2ZUeXBlUGVybWl0dGVkOiBib29sZWFuO1xuXG4gIGdldCBhcHBseVRvRGV2aWNlc09mVHlwZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMuYXBwbHlUb0RldmljZXNPZlR5cGVQZXJtaXR0ZWRcbiAgICAgID8gZ2V0dGV4dCgnQXBwbHkgZGFzaGJvYXJkIHRvIGFsbCBkZXZpY2VzIG9mIHR5cGUge3sgdHlwZSB9fScpXG4gICAgICA6IGdldHRleHQoJ0FwcGx5IGRhc2hib2FyZCB0byBhbGwgZGV2aWNlcyBvZiB0eXBlIHt7IHR5cGUgfX0gKHBlcm1pc3Npb24gcmVxdWlyZWQpJyk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRleHQsIHsgdHlwZTogdGhpcy5kYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIH0pO1xuICB9XG5cbiAgcmVhZG9ubHkgREVGQVVMVF9EQVNIQk9BUkRfTUFSR0lOID0gMTI7XG4gIHJlYWRvbmx5IERFRkFVTFRfREFTSEJPQVJEX0lDT04gPSAndGgnO1xuICByZWFkb25seSBERUZBVUxUX0RBU0hCT0FSRF9QUklPUklUWSA9IDEwMDAwO1xuXG4gIHByaXZhdGUgX3NhdmU7XG4gIHByaXZhdGUgX2NhbmNlbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGFsOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgY29udGV4dERhc2hib2FyZFNlcnZpY2U6IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zU2VydmljZTogUGVybWlzc2lvbnMsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgZGVmYXVsdERhc2hib2FyZENmZzogUGFydGlhbDxDb250ZXh0RGFzaGJvYXJkPiA9IHtcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuaXNSZXBvcnQgPyBnZXR0ZXh0KCdSZXBvcnQnKSA6IGdldHRleHQoJ0Rhc2hib2FyZCcpKSxcbiAgICAgIHByaW9yaXR5OiB0aGlzLmlzUmVwb3J0XG4gICAgICAgID8gUkVQT1JUX0RFRkFVTFRfTkFWSUdBVElPTl9OT0RFX1BSSU9SSVRZXG4gICAgICAgIDogdGhpcy5ERUZBVUxUX0RBU0hCT0FSRF9QUklPUklUWSxcbiAgICAgIGljb246IHRoaXMuREVGQVVMVF9EQVNIQk9BUkRfSUNPTixcbiAgICAgIGRldmljZVR5cGVWYWx1ZTogdGhpcy5kZXZpY2VUeXBlLFxuICAgICAgY29sdW1uczogMjRcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuZGFzaGJvYXJkKSB7XG4gICAgICB0aGlzLmN1cnJlbnREYXNoYm9hcmQgPSBjbG9uZSh0aGlzLmRhc2hib2FyZCk7XG4gICAgICB0aGlzLmRhc2hib2FyZE5hbWUgPSB0aGlzLmN1cnJlbnREYXNoYm9hcmQubmFtZTtcbiAgICAgIHRoaXMuc2V0RGFzaGJvYXJkU3R5bGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXNoYm9hcmQgPSBkZWZhdWx0RGFzaGJvYXJkQ2ZnO1xuICAgICAgdGhpcy5kYXNoYm9hcmROYW1lID0gdGhpcy5kYXNoYm9hcmQubmFtZTtcbiAgICAgIHRoaXMuZGFzaGJvYXJkRGV0YWlsRm9ybS5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgfVxuICAgIHRoaXMuc2V0VGl0bGUoKTtcbiAgICB0aGlzLnNldHVwQXBwbHlUb0RldmljZXNPZlR5cGVDaGVja2JveCgpO1xuICAgIHRoaXMubmF2aWdhdG9yTm9kZXMkID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLml0ZW1zJDtcbiAgICB0aGlzLm5hbWVQbGFjZWhvbGRlciA9IHRoaXMuaXNSZXBvcnQgPyBnZXR0ZXh0KCdlLmcuIE15IHJlcG9ydCcpIDogZ2V0dGV4dCgnZS5nLiBNeSBkYXNoYm9hcmQnKTtcbiAgICB0aGlzLmdsb2JhbFJvbGVzSWRzID0gdGhpcy5kYXNoYm9hcmQuZ2xvYmFsUm9sZXNJZHM7XG4gIH1cblxuICBzZXRUaXRsZSgpIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudERhc2hib2FyZCkge1xuICAgICAgdGhpcy50aXRsZSA9IHRoaXMuaXNSZXBvcnQgPyBnZXR0ZXh0KCdBZGQgcmVwb3J0JykgOiBnZXR0ZXh0KCdBZGQgZGFzaGJvYXJkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLmlzUmVwb3J0ID8gZ2V0dGV4dCgnRWRpdCByZXBvcnQnKSA6IGdldHRleHQoJ0VkaXQgZGFzaGJvYXJkJyk7XG4gICAgfVxuICB9XG5cbiAgc2V0dXBBcHBseVRvRGV2aWNlc09mVHlwZUNoZWNrYm94KCkge1xuICAgIGNvbnN0IHJvbGVzVG9DaGVjayA9IFtQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9DUkVBVEUsIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOXTtcbiAgICB0aGlzLmFwcGx5VG9EZXZpY2VzT2ZUeXBlUGVybWl0dGVkID0gdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UuaGFzQW55Um9sZShyb2xlc1RvQ2hlY2spO1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLmRhc2hib2FyZC5nbG9iYWxSb2xlc0lkcyA9IHRoaXMuZ2xvYmFsUm9sZXNJZHM7XG4gICAgdGhpcy5kYXNoYm9hcmQubmFtZSA9IHRoaXMuZGFzaGJvYXJkTmFtZTtcbiAgICB0aGlzLmRhc2hib2FyZC5jbGFzc2VzID0geyBbdGhpcy5zdHlsaW5nLnRoZW1lQ2xhc3NdOiB0cnVlIH07XG4gICAgdGhpcy5kYXNoYm9hcmQud2lkZ2V0Q2xhc3NlcyA9IHsgW3RoaXMuc3R5bGluZy5oZWFkZXJDbGFzc106IHRydWUgfTtcbiAgICB0aGlzLmRhc2hib2FyZC5jOHlfSXNOYXZpZ2F0b3JOb2RlID0gdGhpcy5kYXNoYm9hcmQuYzh5X0lzTmF2aWdhdG9yTm9kZVxuICAgICAgPyB7fVxuICAgICAgOiB0aGlzLmN1cnJlbnREYXNoYm9hcmRcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuX3NhdmUodGhpcy5kYXNoYm9hcmQpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5fY2FuY2VsKCk7XG4gICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gIH1cblxuICBnZXREYXNoYm9hcmRQcmV2aWV3U3R5bGUoKSB7XG4gICAgY29uc3QgY3NzQ2xhc3NlcyA9IHt9O1xuICAgIGNzc0NsYXNzZXNbdGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzXSA9IHRydWU7XG4gICAgY3NzQ2xhc3Nlc1t0aGlzLnN0eWxpbmcudGhlbWVDbGFzc10gPSB0cnVlO1xuICAgIHJldHVybiBjc3NDbGFzc2VzO1xuICB9XG5cbiAgc2VsZWN0SWNvbihpY29uKSB7XG4gICAgdGhpcy5kYXNoYm9hcmQuaWNvbiA9IGljb247XG4gICAgdGhpcy5kYXNoYm9hcmREZXRhaWxGb3JtLmZvcm0ubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIHVwZGF0ZUZpbHRlcmVkKHRlcm06IHN0cmluZykge1xuICAgIGlmICh0ZXJtKSB7XG4gICAgICBjb25zdCBzZWFyY2ggPSBuZXcgUmVnRXhwKHRlcm0sICdpJyk7XG4gICAgICB0aGlzLmZpbHRlcmVkSWNvbnMgPSB0aGlzLmljb25zLmZpbHRlcih2YWwgPT4gc2VhcmNoLnRlc3QodmFsKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJY29ucyA9IHRoaXMuaWNvbnM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXREYXNoYm9hcmRTdHlsZSgpIHtcbiAgICBjb25zdCBhbGxDbGFzc2VzID0ge1xuICAgICAgLi4udGhpcy5kYXNoYm9hcmQuY2xhc3NlcyxcbiAgICAgIC4uLnRoaXMuZGFzaGJvYXJkLndpZGdldENsYXNzZXNcbiAgICB9O1xuXG4gICAgY29uc3Qgc3R5bGVzID0gT2JqZWN0LmtleXMoYWxsQ2xhc3NlcykubWFwKGMgPT4gYy5zcGxpdCgnLScpLnBvcCgpKTtcbiAgICBzdHlsZXMuZm9yRWFjaChzdHlsZU5hbWUgPT4ge1xuICAgICAgdGhpcy5zdHlsaW5nLnRoZW1lQ2xhc3MgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmdldFN0eWxpbmcoXG4gICAgICAgIERBU0hCT0FSRF9USEVNRV9DTEFTU0VTLFxuICAgICAgICBzdHlsZU5hbWUsXG4gICAgICAgIHRoaXMuc3R5bGluZy50aGVtZUNsYXNzXG4gICAgICApO1xuICAgICAgdGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5nZXRTdHlsaW5nKFxuICAgICAgICBXSURHRVRfSEVBREVSX0NMQVNTRVMsXG4gICAgICAgIHN0eWxlTmFtZSxcbiAgICAgICAgdGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzXG4gICAgICApO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidmlld3BvcnQtbW9kYWxcIj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBzZXBhcmF0b3ItYm90dG9tXCI+XG4gICAgPGgzIGlkPVwibW9kYWwtdGl0bGVcIj57eyB0aXRsZSB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cIm1vZGFsLWlubmVyLXNjcm9sbFwiXG4gICAgaWQ9XCJtb2RhbC1ib2R5XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJwLWwtMjQgcC1yLTI0XCI+XG4gICAgICA8Zm9ybVxuICAgICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgICAjZGFzaGJvYXJkRGV0YWlsRm9ybT1cIm5nRm9ybVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNOYW1lZERhc2hib2FyZCB8fCBpc1JlcG9ydFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2tcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyAnR2VuZXJhbCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPGM4eS1pY29uLXNlbGVjdG9yLXdyYXBwZXJcbiAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZEljb25dPVwiZGFzaGJvYXJkLmljb24gfHwgJ3RoJ1wiXG4gICAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwic2VsZWN0SWNvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktaWNvbi1zZWxlY3Rvci13cmFwcGVyPlxuICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cImZsZXgtZ3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1yLTRcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwibWVudUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdNZW51IGxhYmVsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXI9XCJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgJ01lbnUgbGFiZWwgdG8gZGlzcGxheSBpbiBzdWJtZW51IHdoZW4gZGFzaGJvYXJkIGlzIGF0dGFjaGVkJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cIm1lbnVMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgbmFtZVBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjUxMlwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgKm5nSWY9XCJpc1JlcG9ydFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBpZD1cImRlc2NyaXB0aW9uXCI+e3sgJ0Rlc2NyaXB0aW9uICcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgIHJvd3M9XCIyXCJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLXNtLTZcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNSZXBvcnRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBvc2l0aW9uTmF2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1yLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJwb3NpdGlvbk5hdlwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ1Bvc2l0aW9uIGluIG5hdmlnYXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXI9XCJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnUG9zaXRpb24gaW4gbmF2aWdhdGlvbiBtZW51ICgxMDAwMCBmaXJzdCwgLTEwMDAwIGxhc3QpJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwicG9zaXRpb25OYXZcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IDUwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInByaW9yaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLnByaW9yaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICBtaW49XCItMTAwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjEwMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1zbS02XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNSZXBvcnRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TmF2aWdhdG9yIG1lbnUgaXRlbTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYzh5LWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTaG93IGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaXNOYXZpZ2F0b3JOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIiEhZGFzaGJvYXJkLmM4eV9Jc05hdmlnYXRvck5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdTaG93IGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLXNtLTZcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc1JlcG9ydFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicG9zaXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tci00XCI+e3sgJ1Bvc2l0aW9uIGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwb3NpdGlvbkluTmF2UG9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Bvc2l0aW9uIGluIG5hdmlnYXRvciAoMTAwMDEgZmlyc3QsIC0xMDAwMCBsYXN0KS4nIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19Jm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdFeGlzdGluZyBub2RlczonIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIG0tdC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG5vZGUgb2YgbmF2aWdhdG9yTm9kZXMkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCJub2RlLmljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3b3JkLWJyZWFrIG0tbC00IG0tci0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5sYWJlbC5sZW5ndGggPiAxNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKG5vZGUubGFiZWwgfCBzbGljZTogMDoxNSkgKyAnLi4uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbm9kZS5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0XCI+e3sgbm9kZS5wcmlvcml0eSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJwb3NpdGlvbkluTmF2UG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuJyB8IHRyYW5zbGF0ZSB9fSA1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwcmlvcml0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgZm9yPVwicG9zaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLnByaW9yaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICBtaW49XCItMTAwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjIwMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhY3VycmVudERhc2hib2FyZCAmJiBkZXZpY2VUeXBlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgYXBwbHlUb0RldmljZXNPZlR5cGVUaXRsZSB9fVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXZpY2VUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLmRldmljZVR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhYXBwbHlUb0RldmljZXNPZlR5cGVQZXJtaXR0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLXItNFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7IHR5cGU6IGRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWUgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgQXBwbHkgZGFzaGJvYXJkIHRvIGFsbCBkZXZpY2VzIG9mIHR5cGVcbiAgICAgICAgICAgICAgICAgICAgICA8aT57eyB0eXBlIH19PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvIG0tYi0yNFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImlzRGV2aWNlVHlwZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgYzh5LWljb249XCJpbmZvXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwieyB0eXBlOiBkYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIH1cIlxuICAgICAgICAgICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIFRoaXMgZGFzaGJvYXJkIGlzIHNoYXJlZCBiZXR3ZWVuIGFsbCBkZXZpY2VzIG9mIHRoZSB0eXBlXG4gICAgICAgICAgICAgICAgICAgIDxpPnt7IHR5cGUgfX08L2k+XG4gICAgICAgICAgICAgICAgICAgIC5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxjOHktZGFzaGJvYXJkLWF2YWlsYWJpbGl0eVxuICAgICAgICAgICAgICAqbmdJZj1cIiEhaXNSZXBvcnQgPT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgWyhnbG9iYWxSb2xlc0lkcyldPVwiZ2xvYmFsUm9sZXNJZHNcIlxuICAgICAgICAgICAgICAoZ2xvYmFsUm9sZXNJZHNDaGFuZ2UpPVwiZGFzaGJvYXJkRGV0YWlsRm9ybT8uZm9ybT8ubWFya0FzRGlydHkoKVwiXG4gICAgICAgICAgICA+PC9jOHktZGFzaGJvYXJkLWF2YWlsYWJpbGl0eT5cbiAgICAgICAgICAgIDxjOHktYXBwZWFyYW5jZS1zZXR0aW5nc1xuICAgICAgICAgICAgICBbKHRoZW1lQ2xhc3MpXT1cInN0eWxpbmcudGhlbWVDbGFzc1wiXG4gICAgICAgICAgICAgIFsoaGVhZGVyQ2xhc3MpXT1cInN0eWxpbmcuaGVhZGVyQ2xhc3NcIlxuICAgICAgICAgICAgPjwvYzh5LWFwcGVhcmFuY2Utc2V0dGluZ3M+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cInAtYi0yNCBtLWItMFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm1hcmdpblwiPnt7ICdXaWRnZXQgbWFyZ2luJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwibWFyZ2luXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IERFRkFVTFRfREFTSEJPQVJEX01BUkdJTiB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm1hcmdpblwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmQud2lkZ2V0TWFyZ2luXCJcbiAgICAgICAgICAgICAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICBtYXg9XCI1MFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj5weDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJwLWItMjQgbS1iLTBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+V2lkZ2V0IHRpdGxlczwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdUcmFuc2xhdGUgaWYgcG9zc2libGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInRyYW5zbGF0ZVdpZGdldFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLnRyYW5zbGF0ZVdpZGdldFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnVHJhbnNsYXRlIGlmIHBvc3NpYmxlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgPGM4eS13aWRnZXQtcHJldmlld1xuICAgICAgICAgICAgICBbdGFiXT1cIiFpc05hbWVkRGFzaGJvYXJkID8gZGFzaGJvYXJkIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgW3ByZXZpZXdDbGFzc2VzXT1cImdldERhc2hib2FyZFByZXZpZXdTdHlsZSgpXCJcbiAgICAgICAgICAgID48L2M4eS13aWRnZXQtcHJldmlldz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGRhdGEtY3k9XCJkYXNoYm9hcmQtZGV0YWlsLS1jYW5jZWwtZGFzaGJvYXJkXCJcbiAgICAgIHRpdGxlPVwie3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgPlxuICAgICAge3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGRhdGEtY3k9XCJkYXNoYm9hcmQtZGV0YWlsLS1zYXZlLWRhc2hib2FyZFwiXG4gICAgICB0aXRsZT1cInt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgICAgW2Rpc2FibGVkXT1cImRhc2hib2FyZERldGFpbEZvcm0uZm9ybS5pbnZhbGlkIHx8IGRhc2hib2FyZERldGFpbEZvcm0uZm9ybS5wcmlzdGluZVwiXG4gICAgPlxuICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -44,8 +44,8 @@ export class ReportDashboardListComponent {
|
|
|
44
44
|
}
|
|
45
45
|
ngOnInit() {
|
|
46
46
|
this.canAddReport = this.permissions.hasAnyRole([
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
Permissions.ROLE_INVENTORY_CREATE,
|
|
48
|
+
Permissions.ROLE_INVENTORY_ADMIN
|
|
49
49
|
]);
|
|
50
50
|
}
|
|
51
51
|
async loadReports(partialName) {
|
|
@@ -135,4 +135,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
135
135
|
type: ViewChild,
|
|
136
136
|
args: [FilterInputComponent, { static: false }]
|
|
137
137
|
}] } });
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL3JlcG9ydC1kYXNoYm9hcmQvcmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL3JlcG9ydC1kYXNoYm9hcmQvcmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQWtCLGdCQUFnQixFQUFlLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCxZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU1wRSxNQUFNLE9BQU8s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QUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQztZQUM1RCxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7O3lIQXJJVSw0QkFBNEI7NkdBQTVCLDRCQUE0Qix5R0FDNUIsb0JBQW9CLGdEQ3hCakMsK2lMQXdNQTsyRkRqTGEsNEJBQTRCO2tCQUp4QyxTQUFTOytCQUNFLDJCQUEyQjs4VEFJZSxNQUFNO3NCQUF6RCxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlLCBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEZpbHRlcklucHV0Q29tcG9uZW50LFxuICBnZXR0ZXh0LFxuICBNb2RhbFNlcnZpY2UsXG4gIFN0YXR1cyxcbiAgQWxlcnRTZXJ2aWNlLFxuICBQZXJtaXNzaW9uc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IERhc2hib2FyZERldGFpbENvbXBvbmVudCB9IGZyb20gJy4uL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50JztcbmltcG9ydCB7IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi4vY29udGV4dC1kYXNoYm9hcmQuc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZXh0RGFzaGJvYXJkVHlwZSB9IGZyb20gJy4uL2NvbnRleHQtZGFzaGJvYXJkLm1vZGVsJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFJlcG9ydERhc2hib2FyZFNlcnZpY2UgfSBmcm9tICcuL3JlcG9ydC1kYXNoYm9hcmQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1yZXBvcnQtZGFzaGJvYXJkLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBSZXBvcnREYXNoYm9hcmRMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZChGaWx0ZXJJbnB1dENvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIGZpbHRlcjogRmlsdGVySW5wdXRDb21wb25lbnQ7XG4gIHRleHRGaWx0ZXIkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICByZWxvYWQkOiBCZWhhdmlvclN1YmplY3Q8dm9pZD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuICByZWxvYWRpbmcgPSBmYWxzZTtcbiAgcmVwb3J0cyQ6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SU1hbmFnZWRPYmplY3Q+PiA9IGNvbWJpbmVMYXRlc3QoXG4gICAgdGhpcy50ZXh0RmlsdGVyJC5waXBlKGRlYm91bmNlVGltZSg0MDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSxcbiAgICB0aGlzLnJlbG9hZCRcbiAgKS5waXBlKFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLnJlbG9hZGluZyA9IHRydWU7XG4gICAgfSksXG4gICAgc3dpdGNoTWFwKChbdGV4dF0pID0+IHRoaXMubG9hZFJlcG9ydHModGV4dCkpLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLnJlbG9hZGluZyA9IGZhbHNlO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG4gIGNhbkFkZFJlcG9ydCA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IERFTEVURURfU1VDQ0VTU19NU0cgPSBnZXR0ZXh0KCdSZXBvcnQgZGVsZXRlZC4nKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGludmVudG9yeVNlcnZpY2U6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0RGFzaGJvYXJkU2VydmljZTogQ29udGV4dERhc2hib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBic01vZGFsOiBCc01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbDogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXBvcnREYXNoYm9hcmRTZXJ2aWNlOiBSZXBvcnREYXNoYm9hcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNhbkFkZFJlcG9ydCA9IHRoaXMucGVybWlzc2lvbnMuaGFzQW55Um9sZShbXG4gICAgICAnUk9MRV9JTlZFTlRPUllfQ1JFQVRFJyxcbiAgICAgICdST0xFX0lOVkVOVE9SWV9BRE1JTidcbiAgICBdKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRSZXBvcnRzKHBhcnRpYWxOYW1lPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhcnRpYWxOYW1lXG4gICAgICA/IHRoaXMucmVwb3J0RGFzaGJvYXJkU2VydmljZS5saXN0UmVwb3J0cyh7IGZpbHRlcjogeyBuYW1lOiBgKiR7cGFydGlhbE5hbWV9KmAgfSB9KVxuICAgICAgOiB0aGlzLnJlcG9ydERhc2hib2FyZFNlcnZpY2UubGlzdFJlcG9ydHMoKTtcbiAgfVxuXG4gIGFzeW5jIGFkZCgpIHtcbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gICAgICBpc1JlcG9ydDogdHJ1ZSxcbiAgICAgIGlzTmFtZWREYXNoYm9hcmQ6IHRydWVcbiAgICB9O1xuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5ic01vZGFsLnNob3coRGFzaGJvYXJkRGV0YWlsQ29tcG9uZW50LCB7XG4gICAgICBjbGFzczogJ21vZGFsLWxnJyxcbiAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUsXG4gICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgICBhcmlhRGVzY3JpYmVkYnk6ICdtb2RhbC1ib2R5JyxcbiAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnLFxuICAgICAgaW5pdGlhbFN0YXRlXG4gICAgfSkuY29udGVudCBhcyBEYXNoYm9hcmREZXRhaWxDb21wb25lbnQ7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNmZyA9IGF3YWl0IG1vZGFsLnJlc3VsdDtcbiAgICAgIGNvbnN0IHsgbmFtZSwgaWNvbiwgYzh5X0lzTmF2aWdhdG9yTm9kZSwgcHJpb3JpdHksIGRlc2NyaXB0aW9uLCAuLi5kYXNoYm9hcmRDZmcgfSA9IGNmZztcbiAgICAgIGNvbnN0IHJlcG9ydCA9IChcbiAgICAgICAgYXdhaXQgdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLmNyZWF0ZVJlcG9ydCh7XG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBpY29uLFxuICAgICAgICAgIGM4eV9Jc05hdmlnYXRvck5vZGUsXG4gICAgICAgICAgcHJpb3JpdHksXG4gICAgICAgICAgZGVzY3JpcHRpb25cbiAgICAgICAgfSBhcyBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PilcbiAgICAgICkuZGF0YTtcblxuICAgICAgYXdhaXQgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5jcmVhdGUoXG4gICAgICAgIGRhc2hib2FyZENmZyxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICBgJHt0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLlJFUE9SVF9QQVJUSUFMX05BTUV9JHtyZXBvcnQuaWR9YFxuICAgICAgKTtcbiAgICAgIGlmIChyZXBvcnQuYzh5X0lzTmF2aWdhdG9yTm9kZSkge1xuICAgICAgICB0aGlzLnJlcG9ydERhc2hib2FyZFNlcnZpY2UuYWRkUmVwb3J0TmF2aWdhdG9yTm9kZShyZXBvcnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5yZWxvYWQkLm5leHQoKTtcbiAgICAgIG1vZGFsLmNsb3NlKCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGlmIChleCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNvbWV0aGluZyB3ZW50IHdyb25nOiAke2V4fWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShyZXBvcnQ6IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhc2hib2FyZCA9IGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2VcbiAgICAgICAgLmdldERhc2hib2FyZCQoYHJlcG9ydF8ke3JlcG9ydC5pZH1gLCBbQ29udGV4dERhc2hib2FyZFR5cGUuTmFtZWRdKVxuICAgICAgICAudG9Qcm9taXNlKCk7XG4gICAgICBjb25zdCBpc0Rhc2hib2FyZEZyb3plbiA9ICEhZGFzaGJvYXJkPy5jOHlfRGFzaGJvYXJkPy5pc0Zyb3plbjtcblxuICAgICAgY29uc3QgbXNnID0gaXNEYXNoYm9hcmRGcm96ZW5cbiAgICAgICAgPyBnZXR0ZXh0KFxuICAgICAgICAgICAgYFlvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoZSByZXBvcnQgXCJ7eyByZXBvcnROYW1lIH19XCIuIEJlIGF3YXJlIHRoYXQgdGhlIHJlcG9ydCBoYXMgYSBsb2NrZWQgZGFzaGJvYXJkIGFzc2lnbmVkLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkP2BcbiAgICAgICAgICApXG4gICAgICAgIDogZ2V0dGV4dChgWW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIHJlcG9ydCBcInt7IHJlcG9ydE5hbWUgfX1cIi4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD9gKTtcblxuICAgICAgYXdhaXQgdGhpcy5tb2RhbC5jb25maXJtKFxuICAgICAgICBnZXR0ZXh0KCdEZWxldGUgcmVwb3J0JyksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KG1zZywge1xuICAgICAgICAgIHJlcG9ydE5hbWU6IHJlcG9ydC5uYW1lXG4gICAgICAgIH0pLFxuICAgICAgICBTdGF0dXMuREFOR0VSLFxuICAgICAgICB7XG4gICAgICAgICAgb2s6IGdldHRleHQoJ0RlbGV0ZScpLFxuICAgICAgICAgIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJylcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgYXdhaXQgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5kZWxldGUoZGFzaGJvYXJkLCBmYWxzZSk7XG4gICAgICBhd2FpdCB0aGlzLmludmVudG9yeVNlcnZpY2UuZGVsZXRlKHJlcG9ydC5pZCk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKHRoaXMuREVMRVRFRF9TVUNDRVNTX01TRyk7XG4gICAgICBpZiAocmVwb3J0LmM4eV9Jc05hdmlnYXRvck5vZGUpIHtcbiAgICAgICAgdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLnJlbW92ZU5hdmlnYXRvck5vZGUocmVwb3J0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVsb2FkJC5uZXh0KCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGlmIChleCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNvbWV0aGluZyB3ZW50IHdyb25nOiAke2V4fWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZShyZXBvcnQ6IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmVwb3J0LmM4eV9Jc05hdmlnYXRvck5vZGUgPSByZXBvcnQuYzh5X0lzTmF2aWdhdG9yTm9kZSA/IHt9IDogbnVsbDtcbiAgICBhd2FpdCB0aGlzLmludmVudG9yeVNlcnZpY2UudXBkYXRlKHJlcG9ydCk7XG4gICAgcmVwb3J0LmM4eV9Jc05hdmlnYXRvck5vZGVcbiAgICAgID8gdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLmFkZFJlcG9ydE5hdmlnYXRvck5vZGUocmVwb3J0KVxuICAgICAgOiB0aGlzLnJlcG9ydERhc2hib2FyZFNlcnZpY2UucmVtb3ZlTmF2aWdhdG9yTm9kZShyZXBvcnQpO1xuICB9XG59XG4iLCI8Yzh5LXRpdGxlPlxuICB7eyAnUmVwb3J0cycgfCB0cmFuc2xhdGUgfX1cbjwvYzh5LXRpdGxlPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidsZWZ0J1wiXG4gIGl0ZW1DbGFzcz1cIm5hdmJhci1mb3JtXCJcbj5cbiAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLXNlYXJjaFwiPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRmlsdGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7ICdGaWx0ZXLigKYnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgW25nTW9kZWxdPVwidGV4dEZpbHRlciQgfCBhc3luY1wiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJ0ZXh0RmlsdGVyJC5uZXh0KCRldmVudClcIlxuICAgIC8+XG4gICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiPlxuICAgICAgPGlcbiAgICAgICAgYzh5SWNvbj1cInNlYXJjaFwiXG4gICAgICAgICpuZ0lmPVwiKHRleHRGaWx0ZXIkIHwgYXN5bmMpLmxlbmd0aCA9PT0gMFwiXG4gICAgICA+PC9pPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LW11dGVkXCJcbiAgICAgICAgYzh5SWNvbj1cInRpbWVzXCJcbiAgICAgICAgKm5nSWY9XCIodGV4dEZpbHRlciQgfCBhc3luYykubGVuZ3RoID4gMFwiXG4gICAgICAgIChjbGljayk9XCJ0ZXh0RmlsdGVyJC5uZXh0KCcnKVwiXG4gICAgICAgIHB4LWV2ZW50PVwiQ2xlYXIgZmlsdGVyaW5nIHJlcG9ydHNcIlxuICAgICAgPjwvaT5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdBZGQgcmVwb3J0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2F0dHIuZGF0YS1jeV09XCIncmVwb3J0cy1hZGQtcmVwb3J0LWFjdGlvbi1iYXItYnV0dG9uJ1wiXG4gICAgKGNsaWNrKT1cImFkZCgpXCJcbiAgICBbZGlzYWJsZWRdPVwiIWNhbkFkZFJlcG9ydFwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIj48L2k+XG4gICAge3sgJ0FkZCByZXBvcnQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWRvdCBtLXItMTZcIlxuICAgIGFyaWEtbGFiZWw9XCJ7eyAnSW5mbycgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHBvcG92ZXI9XCJ7eyAnWW91IGRvblxcJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFkZCByZXBvcnRzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAqbmdJZj1cIiFjYW5BZGRSZXBvcnRcIlxuICA+XG4gICAgPGlcbiAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5XCJcbiAgICAgIFtjOHlJY29uXT1cIidpbmZvLWNpcmNsZSdcIlxuICAgID48L2k+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdSZWxvYWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAoY2xpY2spPVwibG9hZFJlcG9ydHMoKVwiXG4gID5cbiAgICA8aVxuICAgICAgYzh5SWNvbj1cInJlZnJlc2hcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnaWNvbi1zcGluJzogcmVsb2FkaW5nIH1cIlxuICAgID48L2k+XG4gICAge3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktaGVscCBzcmM9XCIvdXNlcnMtZ3VpZGUvY29ja3BpdC8jcmVwb3J0c1wiPjwvYzh5LWhlbHA+XG5cbjxjOHktbGlzdC1ncm91cD5cbiAgPGM4eS1saVxuICAgIGNsYXNzPVwicGFnZS1zdGlja3ktaGVhZGVyIGhpZGRlbi14cyBoaWRkZW4tc21cIlxuICAgICpuZ0lmPVwiKHJlcG9ydHMkIHwgYXN5bmMpPy5kYXRhLmxlbmd0aCA+IDBcIlxuICA+XG4gICAgPGM4eS1saS1pY29uPlxuICAgICAgPGkgY2xhc3M9XCJwLWwtMjRcIj48L2k+XG4gICAgPC9jOHktbGktaWNvbj5cbiAgICA8Yzh5LWxpLWJvZHkgY2xhc3M9XCJjb250ZW50LWZsZXgtNjBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICB7eyAnUmVwb3J0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAge3sgJ0Rlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cbiAgICAgICAge3sgJ1Nob3cgaW4gbmF2aWdhdG9yJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9jOHktbGktYm9keT5cbiAgPC9jOHktbGk+XG5cbiAgPGM4eS1saSAqYzh5Rm9yPVwibGV0IHJlcG9ydCBvZiByZXBvcnRzJDsgbGV0IGkgPSBpbmRleDsgbG9hZE1vcmU6ICdhdXRvJ1wiPlxuICAgIDxjOHktbGktaWNvbiBbaWNvbl09XCJyZXBvcnQuaWNvblwiPjwvYzh5LWxpLWljb24+XG4gICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiY29udGVudC1mbGV4LTYwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuXCJcbiAgICAgICAgICB0aXRsZT1cInt7IHJlcG9ydC5uYW1lIH19XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICByb3V0ZXJMaW5rPVwiL3JlcG9ydHMve3sgcmVwb3J0LmlkIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgICAge3sgcmVwb3J0Lm5hbWUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJzbWFsbCB0ZXh0LXRydW5jYXRlLXdyYXBcIj5cbiAgICAgICAgICA8ZW1cbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1tdXRlZFwiXG4gICAgICAgICAgICAqbmdJZj1cIiFyZXBvcnQuZGVzY3JpcHRpb247IGVsc2Ugc2hvd0Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnTm8gZGVzY3JpcHRpb24gYXZhaWxhYmxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZW0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNzaG93RGVzY3JpcHRpb24+XG4gICAgICAgICAgICB7eyByZXBvcnQuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMiBmaXQtaC0yMCBtLXQteHMtOFwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBjbGFzcz1cImM4eS1zd2l0Y2ggYzh5LXN3aXRjaC0taW5saW5lXCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdTaG93IGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCIhIXJlcG9ydC5jOHlfSXNOYXZpZ2F0b3JOb2RlXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlKHJlcG9ydClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzaWJsZS14c1wiPlxuICAgICAgICAgICAge3sgJ1Nob3cgaW4gbmF2aWdhdG9yJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xIGhpZGRlbi14c1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdCBidG4tZG90LS1kYW5nZXIgc2hvd09uSG92ZXIgbS1sLWF1dG8gZC1mbGV4XCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZW1vdmUgcmVwb3J0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgdG9vbHRpcD1cInt7ICdSZW1vdmUgcmVwb3J0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZShyZXBvcnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidmlzaWJsZS14cyBwLXQtOCB0ZXh0LXJpZ2h0XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZSByZXBvcnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlKHJlcG9ydClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImRlbGV0ZVwiPjwvaT5cbiAgICAgICAgICB7eyAnUmVtb3ZlIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2M4eS1saS1ib2R5PlxuICA8L2M4eS1saT5cbjwvYzh5LWxpc3QtZ3JvdXA+XG5cbjxjOHktdWktZW1wdHktc3RhdGVcbiAgW2ljb25dPVwiJ2M4eS1yZXBvcnRzJ1wiXG4gIFt0aXRsZV09XCInVGhlcmUgYXJlIG5vIHJlcG9ydHMgZGVmaW5lZC4nIHwgdHJhbnNsYXRlXCJcbiAgW3N1YnRpdGxlXT1cIidBZGQgYSByZXBvcnQgZmlyc3QuJyB8IHRyYW5zbGF0ZVwiXG4gICpuZ0lmPVwiKHJlcG9ydHMkIHwgYXN5bmMpPy5kYXRhLmxlbmd0aCA9PT0gMFwiXG4+XG4gIDxwPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIHRpdGxlPVwie3sgJ0FkZCByZXBvcnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuZGF0YS1jeV09XCIncmVwb3J0cy1hZGQtcmVwb3J0LWVtcHR5LXN0YXRlLWJ1dHRvbidcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFjYW5BZGRSZXBvcnRcIlxuICAgICAgKGNsaWNrKT1cImFkZCgpXCJcbiAgICA+XG4gICAgICB7eyAnQWRkIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9wPlxuICA8cCBjOHktZ3VpZGUtZG9jcz5cbiAgICA8c21hbGxcbiAgICAgIHRyYW5zbGF0ZVxuICAgICAgbmdOb25CaW5kYWJsZVxuICAgID5cbiAgICAgIEZpbmQgb3V0IG1vcmUgaW4gdGhlXG4gICAgICA8YSBjOHktZ3VpZGUtaHJlZj1cInVzZXJzLWd1aWRlL2NvY2twaXQvI3JlcG9ydHNcIj5Vc2VyIGd1aWRlYEtFRVBfT1JJR0lOQUxgPC9hPlxuICAgICAgLlxuICAgIDwvc21hbGw+XG4gIDwvcD5cbjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuIl19
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL3JlcG9ydC1kYXNoYm9hcmQvcmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL3JlcG9ydC1kYXNoYm9hcmQvcmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQWtCLGdCQUFnQixFQUFlLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCxZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU1wRSxNQUFNLE9BQU8s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QyxNQUFNLENBQUMsbUJBQW1CO1lBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDO1lBQzVELENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7eUhBcklVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLHlHQUM1QixvQkFBb0IsZ0RDeEJqQywraUxBd01BOzJGRGpMYSw0QkFBNEI7a0JBSnhDLFNBQVM7K0JBQ0UsMkJBQTJCOzhUQUllLE1BQU07c0JBQXpELFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UsIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgRmlsdGVySW5wdXRDb21wb25lbnQsXG4gIGdldHRleHQsXG4gIE1vZGFsU2VydmljZSxcbiAgU3RhdHVzLFxuICBBbGVydFNlcnZpY2UsXG4gIFBlcm1pc3Npb25zXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkRGV0YWlsQ29tcG9uZW50IH0gZnJvbSAnLi4vZGFzaGJvYXJkLWRldGFpbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGV4dERhc2hib2FyZFNlcnZpY2UgfSBmcm9tICcuLi9jb250ZXh0LWRhc2hib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRleHREYXNoYm9hcmRUeXBlIH0gZnJvbSAnLi4vY29udGV4dC1kYXNoYm9hcmQubW9kZWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgUmVwb3J0RGFzaGJvYXJkU2VydmljZSB9IGZyb20gJy4vcmVwb3J0LWRhc2hib2FyZC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXJlcG9ydC1kYXNoYm9hcmQtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBvcnQtZGFzaGJvYXJkLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFJlcG9ydERhc2hib2FyZExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKEZpbHRlcklucHV0Q29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSkgZmlsdGVyOiBGaWx0ZXJJbnB1dENvbXBvbmVudDtcbiAgdGV4dEZpbHRlciQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gIHJlbG9hZCQ6IEJlaGF2aW9yU3ViamVjdDx2b2lkPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIHJlbG9hZGluZyA9IGZhbHNlO1xuICByZXBvcnRzJDogT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxJTWFuYWdlZE9iamVjdD4+ID0gY29tYmluZUxhdGVzdChcbiAgICB0aGlzLnRleHRGaWx0ZXIkLnBpcGUoZGVib3VuY2VUaW1lKDQwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgIHRoaXMucmVsb2FkJFxuICApLnBpcGUoXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMucmVsb2FkaW5nID0gdHJ1ZTtcbiAgICB9KSxcbiAgICBzd2l0Y2hNYXAoKFt0ZXh0XSkgPT4gdGhpcy5sb2FkUmVwb3J0cyh0ZXh0KSksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMucmVsb2FkaW5nID0gZmFsc2U7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcbiAgY2FuQWRkUmVwb3J0ID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVMRVRFRF9TVUNDRVNTX01TRyA9IGdldHRleHQoJ1JlcG9ydCBkZWxldGVkLicpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW52ZW50b3J5U2VydmljZTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHREYXNoYm9hcmRTZXJ2aWNlOiBDb250ZXh0RGFzaGJvYXJkU2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWw6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlcG9ydERhc2hib2FyZFNlcnZpY2U6IFJlcG9ydERhc2hib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uczogUGVybWlzc2lvbnNcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2FuQWRkUmVwb3J0ID0gdGhpcy5wZXJtaXNzaW9ucy5oYXNBbnlSb2xlKFtcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0NSRUFURSxcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOXG4gICAgXSk7XG4gIH1cblxuICBhc3luYyBsb2FkUmVwb3J0cyhwYXJ0aWFsTmFtZT86IHN0cmluZykge1xuICAgIHJldHVybiBwYXJ0aWFsTmFtZVxuICAgICAgPyB0aGlzLnJlcG9ydERhc2hib2FyZFNlcnZpY2UubGlzdFJlcG9ydHMoeyBmaWx0ZXI6IHsgbmFtZTogYCoke3BhcnRpYWxOYW1lfSpgIH0gfSlcbiAgICAgIDogdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLmxpc3RSZXBvcnRzKCk7XG4gIH1cblxuICBhc3luYyBhZGQoKSB7XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICAgICAgaXNSZXBvcnQ6IHRydWUsXG4gICAgICBpc05hbWVkRGFzaGJvYXJkOiB0cnVlXG4gICAgfTtcbiAgICBjb25zdCBtb2RhbCA9IHRoaXMuYnNNb2RhbC5zaG93KERhc2hib2FyZERldGFpbENvbXBvbmVudCwge1xuICAgICAgY2xhc3M6ICdtb2RhbC1sZycsXG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgICAga2V5Ym9hcmQ6IGZhbHNlLFxuICAgICAgYXJpYURlc2NyaWJlZGJ5OiAnbW9kYWwtYm9keScsXG4gICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJyxcbiAgICAgIGluaXRpYWxTdGF0ZVxuICAgIH0pLmNvbnRlbnQgYXMgRGFzaGJvYXJkRGV0YWlsQ29tcG9uZW50O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjZmcgPSBhd2FpdCBtb2RhbC5yZXN1bHQ7XG4gICAgICBjb25zdCB7IG5hbWUsIGljb24sIGM4eV9Jc05hdmlnYXRvck5vZGUsIHByaW9yaXR5LCBkZXNjcmlwdGlvbiwgLi4uZGFzaGJvYXJkQ2ZnIH0gPSBjZmc7XG4gICAgICBjb25zdCByZXBvcnQgPSAoXG4gICAgICAgIGF3YWl0IHRoaXMucmVwb3J0RGFzaGJvYXJkU2VydmljZS5jcmVhdGVSZXBvcnQoe1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgaWNvbixcbiAgICAgICAgICBjOHlfSXNOYXZpZ2F0b3JOb2RlLFxuICAgICAgICAgIHByaW9yaXR5LFxuICAgICAgICAgIGRlc2NyaXB0aW9uXG4gICAgICAgIH0gYXMgUGFydGlhbDxJTWFuYWdlZE9iamVjdD4pXG4gICAgICApLmRhdGE7XG5cbiAgICAgIGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuY3JlYXRlKFxuICAgICAgICBkYXNoYm9hcmRDZmcsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgYCR7dGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5SRVBPUlRfUEFSVElBTF9OQU1FfSR7cmVwb3J0LmlkfWBcbiAgICAgICk7XG4gICAgICBpZiAocmVwb3J0LmM4eV9Jc05hdmlnYXRvck5vZGUpIHtcbiAgICAgICAgdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLmFkZFJlcG9ydE5hdmlnYXRvck5vZGUocmVwb3J0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVsb2FkJC5uZXh0KCk7XG4gICAgICBtb2RhbC5jbG9zZSgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTb21ldGhpbmcgd2VudCB3cm9uZzogJHtleH1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGUocmVwb3J0OiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXNoYm9hcmQgPSBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlXG4gICAgICAgIC5nZXREYXNoYm9hcmQkKGByZXBvcnRfJHtyZXBvcnQuaWR9YCwgW0NvbnRleHREYXNoYm9hcmRUeXBlLk5hbWVkXSlcbiAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgICAgY29uc3QgaXNEYXNoYm9hcmRGcm96ZW4gPSAhIWRhc2hib2FyZD8uYzh5X0Rhc2hib2FyZD8uaXNGcm96ZW47XG5cbiAgICAgIGNvbnN0IG1zZyA9IGlzRGFzaGJvYXJkRnJvemVuXG4gICAgICAgID8gZ2V0dGV4dChcbiAgICAgICAgICAgIGBZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSB0aGUgcmVwb3J0IFwie3sgcmVwb3J0TmFtZSB9fVwiLiBCZSBhd2FyZSB0aGF0IHRoZSByZXBvcnQgaGFzIGEgbG9ja2VkIGRhc2hib2FyZCBhc3NpZ25lZC4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD9gXG4gICAgICAgICAgKVxuICAgICAgICA6IGdldHRleHQoYFlvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoZSByZXBvcnQgXCJ7eyByZXBvcnROYW1lIH19XCIuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/YCk7XG5cbiAgICAgIGF3YWl0IHRoaXMubW9kYWwuY29uZmlybShcbiAgICAgICAgZ2V0dGV4dCgnRGVsZXRlIHJlcG9ydCcpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChtc2csIHtcbiAgICAgICAgICByZXBvcnROYW1lOiByZXBvcnQubmFtZVxuICAgICAgICB9KSxcbiAgICAgICAgU3RhdHVzLkRBTkdFUixcbiAgICAgICAge1xuICAgICAgICAgIG9rOiBnZXR0ZXh0KCdEZWxldGUnKSxcbiAgICAgICAgICBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuZGVsZXRlKGRhc2hib2FyZCwgZmFsc2UpO1xuICAgICAgYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmRlbGV0ZShyZXBvcnQuaWQpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2Vzcyh0aGlzLkRFTEVURURfU1VDQ0VTU19NU0cpO1xuICAgICAgaWYgKHJlcG9ydC5jOHlfSXNOYXZpZ2F0b3JOb2RlKSB7XG4gICAgICAgIHRoaXMucmVwb3J0RGFzaGJvYXJkU2VydmljZS5yZW1vdmVOYXZpZ2F0b3JOb2RlKHJlcG9ydCk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlbG9hZCQubmV4dCgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTb21ldGhpbmcgd2VudCB3cm9uZzogJHtleH1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGRhdGUocmVwb3J0OiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJlcG9ydC5jOHlfSXNOYXZpZ2F0b3JOb2RlID0gcmVwb3J0LmM4eV9Jc05hdmlnYXRvck5vZGUgPyB7fSA6IG51bGw7XG4gICAgYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLnVwZGF0ZShyZXBvcnQpO1xuICAgIHJlcG9ydC5jOHlfSXNOYXZpZ2F0b3JOb2RlXG4gICAgICA/IHRoaXMucmVwb3J0RGFzaGJvYXJkU2VydmljZS5hZGRSZXBvcnROYXZpZ2F0b3JOb2RlKHJlcG9ydClcbiAgICAgIDogdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLnJlbW92ZU5hdmlnYXRvck5vZGUocmVwb3J0KTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT5cbiAge3sgJ1JlcG9ydHMnIHwgdHJhbnNsYXRlIH19XG48L2M4eS10aXRsZT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCInbGVmdCdcIlxuICBpdGVtQ2xhc3M9XCJuYXZiYXItZm9ybVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1zZWFyY2hcIj5cbiAgICA8aW5wdXRcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0ZpbHRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnRmlsdGVy4oCmJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgIFtuZ01vZGVsXT1cInRleHRGaWx0ZXIkIHwgYXN5bmNcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidGV4dEZpbHRlciQubmV4dCgkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj5cbiAgICAgIDxpXG4gICAgICAgIGM4eUljb249XCJzZWFyY2hcIlxuICAgICAgICAqbmdJZj1cIih0ZXh0RmlsdGVyJCB8IGFzeW5jKS5sZW5ndGggPT09IDBcIlxuICAgICAgPjwvaT5cbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwidGV4dC1tdXRlZFwiXG4gICAgICAgIGM4eUljb249XCJ0aW1lc1wiXG4gICAgICAgICpuZ0lmPVwiKHRleHRGaWx0ZXIkIHwgYXN5bmMpLmxlbmd0aCA+IDBcIlxuICAgICAgICAoY2xpY2spPVwidGV4dEZpbHRlciQubmV4dCgnJylcIlxuICAgICAgICBweC1ldmVudD1cIkNsZWFyIGZpbHRlcmluZyByZXBvcnRzXCJcbiAgICAgID48L2k+XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCIncmlnaHQnXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7eyAnQWRkIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFthdHRyLmRhdGEtY3ldPVwiJ3JlcG9ydHMtYWRkLXJlcG9ydC1hY3Rpb24tYmFyLWJ1dHRvbidcIlxuICAgIChjbGljayk9XCJhZGQoKVwiXG4gICAgW2Rpc2FibGVkXT1cIiFjYW5BZGRSZXBvcnRcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cInBsdXMtY2lyY2xlXCI+PC9pPlxuICAgIHt7ICdBZGQgcmVwb3J0JyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3QgbS1yLTE2XCJcbiAgICBhcmlhLWxhYmVsPVwie3sgJ0luZm8nIHwgdHJhbnNsYXRlIH19XCJcbiAgICBwb3BvdmVyPVwie3sgJ1lvdSBkb25cXCd0IGhhdmUgcGVybWlzc2lvbiB0byBhZGQgcmVwb3J0cycgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKm5nSWY9XCIhY2FuQWRkUmVwb3J0XCJcbiAgPlxuICAgIDxpXG4gICAgICBjbGFzcz1cInRleHQtcHJpbWFyeVwiXG4gICAgICBbYzh5SWNvbl09XCInaW5mby1jaXJjbGUnXCJcbiAgICA+PC9pPlxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCIncmlnaHQnXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKGNsaWNrKT1cImxvYWRSZXBvcnRzKClcIlxuICA+XG4gICAgPGlcbiAgICAgIGM4eUljb249XCJyZWZyZXNoXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2ljb24tc3Bpbic6IHJlbG9hZGluZyB9XCJcbiAgICA+PC9pPlxuICAgIHt7ICdSZWxvYWQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWhlbHAgc3JjPVwiL3VzZXJzLWd1aWRlL2NvY2twaXQvI3JlcG9ydHNcIj48L2M4eS1oZWxwPlxuXG48Yzh5LWxpc3QtZ3JvdXA+XG4gIDxjOHktbGlcbiAgICBjbGFzcz1cInBhZ2Utc3RpY2t5LWhlYWRlciBoaWRkZW4teHMgaGlkZGVuLXNtXCJcbiAgICAqbmdJZj1cIihyZXBvcnRzJCB8IGFzeW5jKT8uZGF0YS5sZW5ndGggPiAwXCJcbiAgPlxuICAgIDxjOHktbGktaWNvbj5cbiAgICAgIDxpIGNsYXNzPVwicC1sLTI0XCI+PC9pPlxuICAgIDwvYzh5LWxpLWljb24+XG4gICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiY29udGVudC1mbGV4LTYwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAge3sgJ1JlcG9ydCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgIHt7ICdEZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgIHt7ICdTaG93IGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvYzh5LWxpLWJvZHk+XG4gIDwvYzh5LWxpPlxuXG4gIDxjOHktbGkgKmM4eUZvcj1cImxldCByZXBvcnQgb2YgcmVwb3J0cyQ7IGxldCBpID0gaW5kZXg7IGxvYWRNb3JlOiAnYXV0bydcIj5cbiAgICA8Yzh5LWxpLWljb24gW2ljb25dPVwicmVwb3J0Lmljb25cIj48L2M4eS1saS1pY29uPlxuICAgIDxjOHktbGktYm9keSBjbGFzcz1cImNvbnRlbnQtZmxleC02MFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0bi1jbGVhblwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyByZXBvcnQubmFtZSB9fVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgcm91dGVyTGluaz1cIi9yZXBvcnRzL3t7IHJlcG9ydC5pZCB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgIHt7IHJlcG9ydC5uYW1lIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgIDxwIGNsYXNzPVwic21hbGwgdGV4dC10cnVuY2F0ZS13cmFwXCI+XG4gICAgICAgICAgPGVtXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtbXV0ZWRcIlxuICAgICAgICAgICAgKm5nSWY9XCIhcmVwb3J0LmRlc2NyaXB0aW9uOyBlbHNlIHNob3dEZXNjcmlwdGlvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ05vIGRlc2NyaXB0aW9uIGF2YWlsYWJsZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2VtPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0Rlc2NyaXB0aW9uPlxuICAgICAgICAgICAge3sgcmVwb3J0LmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTIgZml0LWgtMjAgbS10LXhzLThcIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoIGM4eS1zd2l0Y2gtLWlubGluZVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyAnU2hvdyBpbiBuYXZpZ2F0b3InIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiISFyZXBvcnQuYzh5X0lzTmF2aWdhdG9yTm9kZVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZShyZXBvcnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc2libGUteHNcIj5cbiAgICAgICAgICAgIHt7ICdTaG93IGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMSBoaWRkZW4teHNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3QgYnRuLWRvdC0tZGFuZ2VyIHNob3dPbkhvdmVyIG0tbC1hdXRvIGQtZmxleFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInUmVtb3ZlIHJlcG9ydCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIHRvb2x0aXA9XCJ7eyAnUmVtb3ZlIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgIChjbGljayk9XCJkZWxldGUocmVwb3J0KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjOHlJY29uPVwibWludXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInZpc2libGUteHMgcC10LTggdGV4dC1yaWdodFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdSZW1vdmUgcmVwb3J0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZShyZXBvcnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGM4eUljb249XCJkZWxldGVcIj48L2k+XG4gICAgICAgICAge3sgJ1JlbW92ZSByZXBvcnQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9jOHktbGktYm9keT5cbiAgPC9jOHktbGk+XG48L2M4eS1saXN0LWdyb3VwPlxuXG48Yzh5LXVpLWVtcHR5LXN0YXRlXG4gIFtpY29uXT1cIidjOHktcmVwb3J0cydcIlxuICBbdGl0bGVdPVwiJ1RoZXJlIGFyZSBubyByZXBvcnRzIGRlZmluZWQuJyB8IHRyYW5zbGF0ZVwiXG4gIFtzdWJ0aXRsZV09XCInQWRkIGEgcmVwb3J0IGZpcnN0LicgfCB0cmFuc2xhdGVcIlxuICAqbmdJZj1cIihyZXBvcnRzJCB8IGFzeW5jKT8uZGF0YS5sZW5ndGggPT09IDBcIlxuPlxuICA8cD5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICB0aXRsZT1cInt7ICdBZGQgcmVwb3J0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmRhdGEtY3ldPVwiJ3JlcG9ydHMtYWRkLXJlcG9ydC1lbXB0eS1zdGF0ZS1idXR0b24nXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhY2FuQWRkUmVwb3J0XCJcbiAgICAgIChjbGljayk9XCJhZGQoKVwiXG4gICAgPlxuICAgICAge3sgJ0FkZCByZXBvcnQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvcD5cbiAgPHAgYzh5LWd1aWRlLWRvY3M+XG4gICAgPHNtYWxsXG4gICAgICB0cmFuc2xhdGVcbiAgICAgIG5nTm9uQmluZGFibGVcbiAgICA+XG4gICAgICBGaW5kIG91dCBtb3JlIGluIHRoZVxuICAgICAgPGEgYzh5LWd1aWRlLWhyZWY9XCJ1c2Vycy1ndWlkZS9jb2NrcGl0LyNyZXBvcnRzXCI+VXNlciBndWlkZWBLRUVQX09SSUdJTkFMYDwvYT5cbiAgICAgIC5cbiAgICA8L3NtYWxsPlxuICA8L3A+XG48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiJdfQ==
|