ontimize-web-ngx 15.6.0-next.2 → 15.6.0-next.3
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/esm2020/lib/components/filter-builder/o-filter-builder.component.mjs +1 -1
- package/esm2020/lib/components/form/navigation/o-form-navigation.component.mjs +2 -2
- package/esm2020/lib/components/form/o-form.component.mjs +6 -4
- package/esm2020/lib/components/grid/o-grid.component.mjs +3 -2
- package/esm2020/lib/components/input/o-form-service-component.class.mjs +2 -2
- package/esm2020/lib/components/list/o-list.component.mjs +3 -2
- package/esm2020/lib/components/o-service-base-component.class.mjs +2 -2
- package/esm2020/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.mjs +3 -3
- package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +2 -2
- package/esm2020/lib/components/table/extensions/o-table.dao.mjs +6 -4
- package/esm2020/lib/components/table/o-table.component.mjs +3 -2
- package/esm2020/lib/config/o-providers.mjs +3 -2
- package/esm2020/lib/injection-tokens/index.mjs +17 -0
- package/esm2020/lib/interfaces/base-response.interface.mjs +1 -1
- package/esm2020/lib/interfaces/form-layout-manager.interface.mjs +1 -1
- package/esm2020/lib/interfaces/jsonapi-response.interface.mjs +2 -1
- package/esm2020/lib/interfaces/service-response.interface.mjs +1 -1
- package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +3 -2
- package/esm2020/lib/services/base-service.class.mjs +3 -3
- package/esm2020/lib/services/factories.mjs +13 -46
- package/esm2020/lib/services/index.mjs +2 -2
- package/esm2020/lib/services/jsonapi/jsonapi-preferences.service.mjs +2 -2
- package/esm2020/lib/services/jsonapi/jsonapi.service.mjs +10 -15
- package/esm2020/lib/services/request-adapter/base-request-argument.adapter.mjs +12 -0
- package/esm2020/lib/services/request-adapter/base-request-argument.interface.mjs +2 -0
- package/esm2020/lib/services/request-adapter/index.mjs +5 -0
- package/esm2020/lib/services/request-adapter/jsonapi-request-arguments.adapter.mjs +70 -0
- package/esm2020/lib/services/request-adapter/ontimize-request-arguments.adapter.mjs +19 -0
- package/esm2020/lib/services/state/o-filter-builder-component-state.service.mjs +1 -1
- package/esm2020/lib/services/translate/o-translate.service.mjs +3 -2
- package/esm2020/lib/util/errors.mjs +2 -2
- package/esm2020/lib/util/index.mjs +2 -1
- package/esm2020/lib/util/injection-token.utils.mjs +4 -0
- package/esm2020/lib/util/util.mjs +15 -4
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/ontimize-web-ngx.mjs +4444 -4435
- package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
- package/fesm2020/ontimize-web-ngx.mjs +4108 -4099
- package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/filter-builder/o-filter-builder.component.d.ts +1 -1
- package/lib/injection-tokens/index.d.ts +29 -0
- package/lib/interfaces/base-response.interface.d.ts +0 -2
- package/lib/interfaces/form-layout-manager.interface.d.ts +1 -1
- package/lib/interfaces/jsonapi-response.interface.d.ts +47 -7
- package/lib/interfaces/service-response.interface.d.ts +2 -0
- package/lib/services/base-service.class.d.ts +2 -2
- package/lib/services/factories.d.ts +7 -28
- package/lib/services/index.d.ts +1 -1
- package/lib/services/jsonapi/jsonapi.service.d.ts +3 -4
- package/lib/services/{query-arguments/base-query-argument.adapter.d.ts → request-adapter/base-request-argument.adapter.d.ts} +2 -1
- package/lib/services/{query-arguments/base-query-argument.interface.d.ts → request-adapter/base-request-argument.interface.d.ts} +1 -1
- package/lib/services/request-adapter/index.d.ts +4 -0
- package/lib/services/request-adapter/jsonapi-request-arguments.adapter.d.ts +13 -0
- package/lib/services/request-adapter/ontimize-request-arguments.adapter.d.ts +8 -0
- package/lib/services/state/o-filter-builder-component-state.service.d.ts +1 -1
- package/lib/util/index.d.ts +1 -0
- package/lib/util/injection-token.utils.d.ts +2 -0
- package/lib/util/util.d.ts +2 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/theme.scss +69 -69
- package/esm2020/lib/services/query-arguments/base-query-argument.adapter.mjs +0 -9
- package/esm2020/lib/services/query-arguments/base-query-argument.interface.mjs +0 -2
- package/esm2020/lib/services/query-arguments/index.mjs +0 -5
- package/esm2020/lib/services/query-arguments/jsonapi-query-arguments.adapter.mjs +0 -62
- package/esm2020/lib/services/query-arguments/ontimize-query-arguments.adapter.mjs +0 -19
- package/lib/services/query-arguments/index.d.ts +0 -4
- package/lib/services/query-arguments/jsonapi-query-arguments.adapter.d.ts +0 -12
- package/lib/services/query-arguments/ontimize-query-arguments.adapter.d.ts +0 -8
|
@@ -5,7 +5,7 @@ import { Router } from '@angular/router';
|
|
|
5
5
|
import { combineLatest } from 'rxjs';
|
|
6
6
|
import { AppConfig, O_INPUTS_OPTIONS } from '../config/app-config';
|
|
7
7
|
import { appConfigFactory } from '../services/app-config.provider';
|
|
8
|
-
import { ComponentStateServiceProvider, ExportDataServiceProvider, NameConventionProvider,
|
|
8
|
+
import { ComponentStateServiceProvider, ExportDataServiceProvider, NameConventionProvider, OntimizeAuthServiceProvider, OntimizeExportServiceProvider, OntimizeLocalStorageServiceProvider, OntimizeServiceProvider, ServiceRequestAdapter, ServiceResponseAdapter } from '../services/factories';
|
|
9
9
|
import { LocalStorageService } from '../services/local-storage.service';
|
|
10
10
|
import { NavigationService } from '../services/navigation.service';
|
|
11
11
|
import { OntimizeMatIconRegistry } from '../services/ontimize-icon-registry.service';
|
|
@@ -14,6 +14,7 @@ import { ORemoteConfigurationService } from '../services/remote-config.service';
|
|
|
14
14
|
import { Error403Component } from '../shared/components/error403/o-error-403.component';
|
|
15
15
|
import { Codes } from '../util/codes';
|
|
16
16
|
import { Util } from '../util/util';
|
|
17
|
+
import { O_MAT_ERROR_OPTIONS } from '../injection-tokens';
|
|
17
18
|
function addPermissionsRouteGuard(injector) {
|
|
18
19
|
const route = injector.get(Router);
|
|
19
20
|
const exists403 = route.config.find(r => r.path === Codes.FORBIDDEN_ROUTE);
|
|
@@ -82,4 +83,4 @@ export const ONTIMIZE_PROVIDERS = [
|
|
|
82
83
|
{ provide: O_MAT_ERROR_OPTIONS, useValue: {} },
|
|
83
84
|
{ provide: O_INPUTS_OPTIONS, useValue: {} }
|
|
84
85
|
];
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29uZmlnL28tcHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIsMkJBQTJCLEVBQzNCLDZCQUE2QixFQUM3QixtQ0FBbUMsRUFDbkMsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdkIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxREFBcUQs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QUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7Q0FDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExPQ0FUSU9OX0lOSVRJQUxJWkVEIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdG9yLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTUFUX1JJUFBMRV9HTE9CQUxfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBwQ29uZmlnLCBPX0lOUFVUU19PUFRJT05TIH0gZnJvbSAnLi4vY29uZmlnL2FwcC1jb25maWcnO1xuaW1wb3J0IHsgYXBwQ29uZmlnRmFjdG9yeSB9IGZyb20gJy4uL3NlcnZpY2VzL2FwcC1jb25maWcucHJvdmlkZXInO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50U3RhdGVTZXJ2aWNlUHJvdmlkZXIsXG4gIEV4cG9ydERhdGFTZXJ2aWNlUHJvdmlkZXIsXG4gIE5hbWVDb252ZW50aW9uUHJvdmlkZXIsXG4gIE9fTUFUX0VSUk9SX09QVElPTlMsXG4gIE9udGltaXplQXV0aFNlcnZpY2VQcm92aWRlcixcbiAgT250aW1pemVFeHBvcnRTZXJ2aWNlUHJvdmlkZXIsXG4gIE9udGltaXplTG9jYWxTdG9yYWdlU2VydmljZVByb3ZpZGVyLFxuICBPbnRpbWl6ZVNlcnZpY2VQcm92aWRlcixcbiAgU2VydmljZVJlcXVlc3RBZGFwdGVyLFxuICBTZXJ2aWNlUmVzcG9uc2VBZGFwdGVyXG59IGZyb20gJy4uL3NlcnZpY2VzL2ZhY3Rvcmllcyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnLi4vc2VydmljZXMvb250aW1pemUtaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IE9QcmVmZXJlbmNlUmVzcG9uc2VBZGFwdGVyIH0gZnJvbSAnLi4vc2VydmljZXMvb250aW1pemUvby1wcmVmZXJlbmNlLXJlc3BvbnNlLmFkYXB0ZXInO1xuaW1wb3J0IHsgT1JlbW90ZUNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmVtb3RlLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdHJhbnNsYXRlL28tdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXJyb3I0MDNDb21wb25lbnQgfSBmcm9tICcuLi9zaGFyZWQvY29tcG9uZW50cy9lcnJvcjQwMy9vLWVycm9yLTQwMy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvY29uZmlnLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuXG5mdW5jdGlvbiBhZGRQZXJtaXNzaW9uc1JvdXRlR3VhcmQoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gIGNvbnN0IHJvdXRlID0gaW5qZWN0b3IuZ2V0KFJvdXRlcik7XG4gIGNvbnN0IGV4aXN0czQwMyA9IHJvdXRlLmNvbmZpZy5maW5kKHIgPT4gci5wYXRoID09PSBDb2Rlcy5GT1JCSURERU5fUk9VVEUpO1xuICBpZiAoIWV4aXN0czQwMykge1xuICAgIHJvdXRlLmNvbmZpZy5wdXNoKHsgcGF0aDogQ29kZXMuRk9SQklEREVOX1JPVVRFLCBjb21wb25lbnQ6IEVycm9yNDAzQ29tcG9uZW50IH0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBJbml0aWFsaXplckZhY3RvcnkoaW5qZWN0b3I6IEluamVjdG9yLCBjb25maWc6IENvbmZpZywgb1RyYW5zbGF0ZTogT1RyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgcmV0dXJuICgpID0+IG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmU6IGFueSkgPT4ge1xuICAgIGNvbnN0IG9ic2VydmFibGVBcnJheSA9IFtdO1xuICAgIGNvbnN0IGxvY2F0aW9uSW5pdGlhbGl6ZWQgPSBpbmplY3Rvci5nZXQoTE9DQVRJT05fSU5JVElBTElaRUQsIFByb21pc2UucmVzb2x2ZShudWxsKSk7XG4gICAgbG9jYXRpb25Jbml0aWFsaXplZC50aGVuKCgpID0+IHtcbiAgICAgIGNvbnN0IHN0b3JlZExhbmcgPSBvVHJhbnNsYXRlLmdldFN0b3JlZExhbmd1YWdlKCk7XG4gICAgICBjb25zdCBjb25maWdMYW5nID0gY29uZmlnWydsb2NhbGUnXTtcbiAgICAgIGNvbnN0IGJyb3dzZXJMYW5nID0gb1RyYW5zbGF0ZS5nZXRCcm93c2VyTGFuZygpO1xuICAgICAgbGV0IHVzZXJMYW5nID0gVXRpbC5pc0RlZmluZWQoY29uZmlnWydkZWZhdWx0TG9jYWxlJ10pID8gY29uZmlnWydkZWZhdWx0TG9jYWxlJ10gOiAnZW4nO1xuICAgICAgbGV0IGRlZmF1bHRMYW5nID0gVXRpbC5pc0RlZmluZWQoY29uZmlnWydkZWZhdWx0TG9jYWxlJ10pID8gY29uZmlnWydkZWZhdWx0TG9jYWxlJ10gOiAnZW4nO1xuICAgICAgaWYgKHN0b3JlZExhbmcpIHtcbiAgICAgICAgdXNlckxhbmcgPSBzdG9yZWRMYW5nO1xuICAgICAgfSBlbHNlIGlmIChjb25maWdMYW5nKSB7XG4gICAgICAgIHVzZXJMYW5nID0gY29uZmlnTGFuZztcbiAgICAgICAgZGVmYXVsdExhbmcgPSBjb25maWdMYW5nO1xuICAgICAgfSBlbHNlIGlmIChicm93c2VyTGFuZykge1xuICAgICAgICB1c2VyTGFuZyA9IGJyb3dzZXJMYW5nO1xuICAgICAgICBkZWZhdWx0TGFuZyA9IGJyb3dzZXJMYW5nO1xuICAgICAgfVxuICAgICAgb1RyYW5zbGF0ZS5zZXREZWZhdWx0TGFuZyhkZWZhdWx0TGFuZyk7XG5cbiAgICAgIGNvbnN0IGxvY2FsZXMgPSBuZXcgU2V0KGNvbmZpZy5hcHBsaWNhdGlvbkxvY2FsZXMgfHwgW10pO1xuICAgICAgbG9jYWxlcy5hZGQoJ2VuJyk7XG4gICAgICBsb2NhbGVzLmFkZCh1c2VyTGFuZyk7XG5cbiAgICAgIC8vIGluaXRpYWxpemUgYXZhaWxhYmxlIGxvY2FsZXMgYXJyYXkgaWYgbmVlZGVkXG4gICAgICBpZiAoIWNvbmZpZy5hcHBsaWNhdGlvbkxvY2FsZXMpIHtcbiAgICAgICAgY29uZmlnLmFwcGxpY2F0aW9uTG9jYWxlcyA9IFsuLi5sb2NhbGVzXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy51dWlkID09IG51bGwgfHwgY29uZmlnLnV1aWQgPT09ICcnKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1lvdXIgYXBwIG11c3QgaGF2ZSBhbiBcXCd1dWlkXFwnIHByb3BlcnR5IGRlZmluZWQgb24geW91ciBhcHAuY29uZmlnIGZpbGUuIE90aGVyd2lzZSwgeW91ciBhcHBsaWNhdGlvbiB3aWxsIG5vdCB3b3JrIGNvcnJlY3RseS4nKTtcbiAgICAgICAgYWxlcnQoJ1lvdXIgYXBwIG11c3QgaGF2ZSBhbiBcXCd1dWlkXFwnIHByb3BlcnR5IGRlZmluZWQgb24geW91ciBhcHAuY29uZmlnIGZpbGUuIE90aGVyd2lzZSwgeW91ciBhcHBsaWNhdGlvbiB3aWxsIG5vdCB3b3JrIGNvcnJlY3RseS4nKTtcbiAgICAgIH1cbiAgICAgIGluamVjdG9yLmdldChOYXZpZ2F0aW9uU2VydmljZSkuaW5pdGlhbGl6ZSgpO1xuICAgICAgaW5qZWN0b3IuZ2V0KE9udGltaXplTWF0SWNvblJlZ2lzdHJ5KS5pbml0aWFsaXplKCk7XG4gICAgICBpbmplY3Rvci5nZXQoTG9jYWxTdG9yYWdlU2VydmljZSkuc2V0QmFja3dhcmRDb21wYXRpYmlsaXR5KCk7XG4gICAgICBhZGRQZXJtaXNzaW9uc1JvdXRlR3VhcmQoaW5qZWN0b3IpO1xuICAgICAgb2JzZXJ2YWJsZUFycmF5LnB1c2gob1RyYW5zbGF0ZS5zZXRBcHBMYW5nKHVzZXJMYW5nKSk7XG4gICAgICBjb25zdCByZW1vdGVDb25maWdTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE9SZW1vdGVDb25maWd1cmF0aW9uU2VydmljZSk7XG4gICAgICBvYnNlcnZhYmxlQXJyYXkucHVzaChyZW1vdGVDb25maWdTZXJ2aWNlLmluaXRpYWxpemUoKSk7XG4gICAgICBjb21iaW5lTGF0ZXN0KG9ic2VydmFibGVBcnJheSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgT05USU1JWkVfUFJPVklERVJTOiBQcm92aWRlcltdID0gW1xuICB7IHByb3ZpZGU6IEFwcENvbmZpZywgdXNlRmFjdG9yeTogYXBwQ29uZmlnRmFjdG9yeSwgZGVwczogW0luamVjdG9yXSB9LFxuICBPbnRpbWl6ZVNlcnZpY2VQcm92aWRlcixcbiAgU2VydmljZVJlc3BvbnNlQWRhcHRlcixcbiAgU2VydmljZVJlcXVlc3RBZGFwdGVyLFxuICBPbnRpbWl6ZUF1dGhTZXJ2aWNlUHJvdmlkZXIsXG4gIENvbXBvbmVudFN0YXRlU2VydmljZVByb3ZpZGVyLFxuICBFeHBvcnREYXRhU2VydmljZVByb3ZpZGVyLFxuICBPbnRpbWl6ZUV4cG9ydFNlcnZpY2VQcm92aWRlcixcbiAgTmFtZUNvbnZlbnRpb25Qcm92aWRlcixcbiAgT250aW1pemVMb2NhbFN0b3JhZ2VTZXJ2aWNlUHJvdmlkZXIsXG4gIE9QcmVmZXJlbmNlUmVzcG9uc2VBZGFwdGVyLFxuICAvLyBkaXNhYmxlZCBnbG9iYWwgcmlwcGxlXG4gIHsgcHJvdmlkZTogTUFUX1JJUFBMRV9HTE9CQUxfT1BUSU9OUywgdXNlVmFsdWU6IHsgZGlzYWJsZWQ6IHRydWUgfSB9LFxuICB7IHByb3ZpZGU6IE9fTUFUX0VSUk9SX09QVElPTlMsIHVzZVZhbHVlOiB7fSB9LFxuICB7IHByb3ZpZGU6IE9fSU5QVVRTX09QVElPTlMsIHVzZVZhbHVlOiB7fSB9XG5dO1xuIl19
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29uZmlnL28tcHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDM0IsNkJBQTZCLEVBQzdCLG1DQUFtQyxFQUNuQyx1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN2QixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRXhGLE9B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QUU7SUFDOUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtDQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTE9DQVRJT05fSU5JVElBTElaRUQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0b3IsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQVRfUklQUExFX0dMT0JBTF9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBcHBDb25maWcsIE9fSU5QVVRTX09QVElPTlMgfSBmcm9tICcuLi9jb25maWcvYXBwLWNvbmZpZyc7XG5pbXBvcnQgeyBhcHBDb25maWdGYWN0b3J5IH0gZnJvbSAnLi4vc2VydmljZXMvYXBwLWNvbmZpZy5wcm92aWRlcic7XG5pbXBvcnQge1xuICBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlcixcbiAgRXhwb3J0RGF0YVNlcnZpY2VQcm92aWRlcixcbiAgTmFtZUNvbnZlbnRpb25Qcm92aWRlcixcbiAgT250aW1pemVBdXRoU2VydmljZVByb3ZpZGVyLFxuICBPbnRpbWl6ZUV4cG9ydFNlcnZpY2VQcm92aWRlcixcbiAgT250aW1pemVMb2NhbFN0b3JhZ2VTZXJ2aWNlUHJvdmlkZXIsXG4gIE9udGltaXplU2VydmljZVByb3ZpZGVyLFxuICBTZXJ2aWNlUmVxdWVzdEFkYXB0ZXIsXG4gIFNlcnZpY2VSZXNwb25zZUFkYXB0ZXJcbn0gZnJvbSAnLi4vc2VydmljZXMvZmFjdG9yaWVzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT250aW1pemVNYXRJY29uUmVnaXN0cnkgfSBmcm9tICcuLi9zZXJ2aWNlcy9vbnRpbWl6ZS1pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgT1ByZWZlcmVuY2VSZXNwb25zZUFkYXB0ZXIgfSBmcm9tICcuLi9zZXJ2aWNlcy9vbnRpbWl6ZS9vLXByZWZlcmVuY2UtcmVzcG9uc2UuYWRhcHRlcic7XG5pbXBvcnQgeyBPUmVtb3RlQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZW1vdGUtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBFcnJvcjQwM0NvbXBvbmVudCB9IGZyb20gJy4uL3NoYXJlZC9jb21wb25lbnRzL2Vycm9yNDAzL28tZXJyb3ItNDAzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLi90eXBlcy9jb25maWcudHlwZSc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPX01BVF9FUlJPUl9PUFRJT05TIH0gZnJvbSAnLi4vaW5qZWN0aW9uLXRva2Vucyc7XG5cbmZ1bmN0aW9uIGFkZFBlcm1pc3Npb25zUm91dGVHdWFyZChpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgY29uc3Qgcm91dGUgPSBpbmplY3Rvci5nZXQoUm91dGVyKTtcbiAgY29uc3QgZXhpc3RzNDAzID0gcm91dGUuY29uZmlnLmZpbmQociA9PiByLnBhdGggPT09IENvZGVzLkZPUkJJRERFTl9ST1VURSk7XG4gIGlmICghZXhpc3RzNDAzKSB7XG4gICAgcm91dGUuY29uZmlnLnB1c2goeyBwYXRoOiBDb2Rlcy5GT1JCSURERU5fUk9VVEUsIGNvbXBvbmVudDogRXJyb3I0MDNDb21wb25lbnQgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcEluaXRpYWxpemVyRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IsIGNvbmZpZzogQ29uZmlnLCBvVHJhbnNsYXRlOiBPVHJhbnNsYXRlU2VydmljZSkge1xuICByZXR1cm4gKCkgPT4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZTogYW55KSA9PiB7XG4gICAgY29uc3Qgb2JzZXJ2YWJsZUFycmF5ID0gW107XG4gICAgY29uc3QgbG9jYXRpb25Jbml0aWFsaXplZCA9IGluamVjdG9yLmdldChMT0NBVElPTl9JTklUSUFMSVpFRCwgUHJvbWlzZS5yZXNvbHZlKG51bGwpKTtcbiAgICBsb2NhdGlvbkluaXRpYWxpemVkLnRoZW4oKCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcmVkTGFuZyA9IG9UcmFuc2xhdGUuZ2V0U3RvcmVkTGFuZ3VhZ2UoKTtcbiAgICAgIGNvbnN0IGNvbmZpZ0xhbmcgPSBjb25maWdbJ2xvY2FsZSddO1xuICAgICAgY29uc3QgYnJvd3NlckxhbmcgPSBvVHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCk7XG4gICAgICBsZXQgdXNlckxhbmcgPSBVdGlsLmlzRGVmaW5lZChjb25maWdbJ2RlZmF1bHRMb2NhbGUnXSkgPyBjb25maWdbJ2RlZmF1bHRMb2NhbGUnXSA6ICdlbic7XG4gICAgICBsZXQgZGVmYXVsdExhbmcgPSBVdGlsLmlzRGVmaW5lZChjb25maWdbJ2RlZmF1bHRMb2NhbGUnXSkgPyBjb25maWdbJ2RlZmF1bHRMb2NhbGUnXSA6ICdlbic7XG4gICAgICBpZiAoc3RvcmVkTGFuZykge1xuICAgICAgICB1c2VyTGFuZyA9IHN0b3JlZExhbmc7XG4gICAgICB9IGVsc2UgaWYgKGNvbmZpZ0xhbmcpIHtcbiAgICAgICAgdXNlckxhbmcgPSBjb25maWdMYW5nO1xuICAgICAgICBkZWZhdWx0TGFuZyA9IGNvbmZpZ0xhbmc7XG4gICAgICB9IGVsc2UgaWYgKGJyb3dzZXJMYW5nKSB7XG4gICAgICAgIHVzZXJMYW5nID0gYnJvd3Nlckxhbmc7XG4gICAgICAgIGRlZmF1bHRMYW5nID0gYnJvd3Nlckxhbmc7XG4gICAgICB9XG4gICAgICBvVHJhbnNsYXRlLnNldERlZmF1bHRMYW5nKGRlZmF1bHRMYW5nKTtcblxuICAgICAgY29uc3QgbG9jYWxlcyA9IG5ldyBTZXQoY29uZmlnLmFwcGxpY2F0aW9uTG9jYWxlcyB8fCBbXSk7XG4gICAgICBsb2NhbGVzLmFkZCgnZW4nKTtcbiAgICAgIGxvY2FsZXMuYWRkKHVzZXJMYW5nKTtcblxuICAgICAgLy8gaW5pdGlhbGl6ZSBhdmFpbGFibGUgbG9jYWxlcyBhcnJheSBpZiBuZWVkZWRcbiAgICAgIGlmICghY29uZmlnLmFwcGxpY2F0aW9uTG9jYWxlcykge1xuICAgICAgICBjb25maWcuYXBwbGljYXRpb25Mb2NhbGVzID0gWy4uLmxvY2FsZXNdO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLnV1aWQgPT0gbnVsbCB8fCBjb25maWcudXVpZCA9PT0gJycpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignWW91ciBhcHAgbXVzdCBoYXZlIGFuIFxcJ3V1aWRcXCcgcHJvcGVydHkgZGVmaW5lZCBvbiB5b3VyIGFwcC5jb25maWcgZmlsZS4gT3RoZXJ3aXNlLCB5b3VyIGFwcGxpY2F0aW9uIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5LicpO1xuICAgICAgICBhbGVydCgnWW91ciBhcHAgbXVzdCBoYXZlIGFuIFxcJ3V1aWRcXCcgcHJvcGVydHkgZGVmaW5lZCBvbiB5b3VyIGFwcC5jb25maWcgZmlsZS4gT3RoZXJ3aXNlLCB5b3VyIGFwcGxpY2F0aW9uIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5LicpO1xuICAgICAgfVxuICAgICAgaW5qZWN0b3IuZ2V0KE5hdmlnYXRpb25TZXJ2aWNlKS5pbml0aWFsaXplKCk7XG4gICAgICBpbmplY3Rvci5nZXQoT250aW1pemVNYXRJY29uUmVnaXN0cnkpLmluaXRpYWxpemUoKTtcbiAgICAgIGluamVjdG9yLmdldChMb2NhbFN0b3JhZ2VTZXJ2aWNlKS5zZXRCYWNrd2FyZENvbXBhdGliaWxpdHkoKTtcbiAgICAgIGFkZFBlcm1pc3Npb25zUm91dGVHdWFyZChpbmplY3Rvcik7XG4gICAgICBvYnNlcnZhYmxlQXJyYXkucHVzaChvVHJhbnNsYXRlLnNldEFwcExhbmcodXNlckxhbmcpKTtcbiAgICAgIGNvbnN0IHJlbW90ZUNvbmZpZ1NlcnZpY2UgPSBpbmplY3Rvci5nZXQoT1JlbW90ZUNvbmZpZ3VyYXRpb25TZXJ2aWNlKTtcbiAgICAgIG9ic2VydmFibGVBcnJheS5wdXNoKHJlbW90ZUNvbmZpZ1NlcnZpY2UuaW5pdGlhbGl6ZSgpKTtcbiAgICAgIGNvbWJpbmVMYXRlc3Qob2JzZXJ2YWJsZUFycmF5KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBPTlRJTUlaRV9QUk9WSURFUlM6IFByb3ZpZGVyW10gPSBbXG4gIHsgcHJvdmlkZTogQXBwQ29uZmlnLCB1c2VGYWN0b3J5OiBhcHBDb25maWdGYWN0b3J5LCBkZXBzOiBbSW5qZWN0b3JdIH0sXG4gIE9udGltaXplU2VydmljZVByb3ZpZGVyLFxuICBTZXJ2aWNlUmVzcG9uc2VBZGFwdGVyLFxuICBTZXJ2aWNlUmVxdWVzdEFkYXB0ZXIsXG4gIE9udGltaXplQXV0aFNlcnZpY2VQcm92aWRlcixcbiAgQ29tcG9uZW50U3RhdGVTZXJ2aWNlUHJvdmlkZXIsXG4gIEV4cG9ydERhdGFTZXJ2aWNlUHJvdmlkZXIsXG4gIE9udGltaXplRXhwb3J0U2VydmljZVByb3ZpZGVyLFxuICBOYW1lQ29udmVudGlvblByb3ZpZGVyLFxuICBPbnRpbWl6ZUxvY2FsU3RvcmFnZVNlcnZpY2VQcm92aWRlcixcbiAgT1ByZWZlcmVuY2VSZXNwb25zZUFkYXB0ZXIsXG4gIC8vIGRpc2FibGVkIGdsb2JhbCByaXBwbGVcbiAgeyBwcm92aWRlOiBNQVRfUklQUExFX0dMT0JBTF9PUFRJT05TLCB1c2VWYWx1ZTogeyBkaXNhYmxlZDogdHJ1ZSB9IH0sXG4gIHsgcHJvdmlkZTogT19NQVRfRVJST1JfT1BUSU9OUywgdXNlVmFsdWU6IHt9IH0sXG4gIHsgcHJvdmlkZTogT19JTlBVVFNfT1BUSU9OUywgdXNlVmFsdWU6IHt9IH1cbl07XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { InjectionToken } from "@angular/core";
|
|
2
|
+
export const O_DATA_SERVICE = new InjectionToken('Ontimize data service');
|
|
3
|
+
export const O_RESPONSE_ADAPTER = new InjectionToken('Service response adapter');
|
|
4
|
+
export const O_TRANSLATE_SERVICE = new InjectionToken('Translate service');
|
|
5
|
+
export const O_FILE_SERVICE = new InjectionToken('File uploader service');
|
|
6
|
+
export const O_LOCALSTORAGE_SERVICE = new InjectionToken('Local storage service');
|
|
7
|
+
export const O_EXPORT_SERVICE = new InjectionToken('Export service');
|
|
8
|
+
export const O_PERMISSION_SERVICE = new InjectionToken('Permission service');
|
|
9
|
+
export const O_AUTH_SERVICE = new InjectionToken('Authentication service');
|
|
10
|
+
export const O_COMPONENT_STATE_SERVICE = new InjectionToken('Component state service');
|
|
11
|
+
export const O_CHART_ON_DEMAND_SERVICE = new InjectionToken('Chart on demand service');
|
|
12
|
+
export const O_REPORT_SERVICE = new InjectionToken('Report service');
|
|
13
|
+
export const O_ERROR_DIALOG_MANAGER = new InjectionToken('Error dialog manager');
|
|
14
|
+
export const O_EXPORT_DATA_SERVICE = new InjectionToken('Export data provider');
|
|
15
|
+
export const O_MAT_ERROR_OPTIONS = new InjectionToken('o-mat-error-options');
|
|
16
|
+
export const O_FORM_MESSAGE_SERVICE = new InjectionToken('Ontimize o-form message service');
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvaW5qZWN0aW9uLXRva2Vucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBbUIvQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUUxRSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBK0MsMEJBQTBCLENBQUMsQ0FBQztBQUsvSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBSzNFLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBZSx1QkFBdUIsQ0FBQyxDQUFDO0FBS3hGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUF1Qix1QkFBdUIsQ0FBQyxDQUFDO0FBS3hHLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBS3JGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUFzQixvQkFBb0IsQ0FBQyxDQUFDO0FBS2xHLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBZSx3QkFBd0IsQ0FBQyxDQUFDO0FBS3pGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksY0FBYyxDQUErQix5QkFBeUIsQ0FBQyxDQUFDO0FBTXJILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksY0FBYyxDQUF3Qix5QkFBeUIsQ0FBQyxDQUFDO0FBRTlHLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBRXJGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUFzQixzQkFBc0IsQ0FBQyxDQUFDO0FBRXRHLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFzQixzQkFBc0IsQ0FBQyxDQUFDO0FBRXJHLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFtQixxQkFBcUIsQ0FBQyxDQUFDO0FBRS9GLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUFDLGlDQUFpQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJTkpFQ1RJT04gVE9LRU5TIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElTZXJ2aWNlUmVzcG9uc2VBZGFwdGVyIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvc2VydmljZS1yZXNwb25zZS1hZGFwdGVyLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2VSZXNwb25zZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9iYXNlLXNlcnZpY2UtcmVzcG9uc2UuY2xhc3NcIjtcbmltcG9ydCB7IElGaWxlU2VydmljZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2ZpbGUtc2VydmljZS5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IElMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvbG9jYWwtc2VydmljZS5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IElFeHBvcnRTZXJ2aWNlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvZXhwb3J0LXNlcnZpY2UuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBJUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvcGVybWlzc2lvbnMtc2VydmljZS5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IERlZmF1bHRDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvc3RhdGUvby1jb21wb25lbnQtc3RhdGUuc2VydmljZVwiO1xuaW1wb3J0IHsgSUNoYXJ0T25EZW1hbmRTZXJ2aWNlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvY2hhcnQtb24tZGVtYW5kLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgSVJlcG9ydFNlcnZpY2UgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9yZXBvcnQtb24tZGVtYW5kLXNlcnZpY2UuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBPRXJyb3JEaWFsb2dNYW5hZ2VyIH0gZnJvbSBcIi4uL3NlcnZpY2VzL28tZXJyb3ItZGlhbG9nLW1hbmFnZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgT01hdEVycm9yT3B0aW9ucyB9IGZyb20gXCIuLi90eXBlcy9vLW1hdC1lcnJvci50eXBlXCI7XG5pbXBvcnQgeyBJRXhwb3J0RGF0YVByb3ZpZGVyIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvZXhwb3J0LWRhdGEtcHJvdmlkZXIuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBJQXV0aFNlcnZpY2UgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9hdXRoLXNlcnZpY2UuaW50ZXJmYWNlXCI7XG5cblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byByZXBsYWNlIHRoZSBkYXRhIHNlcnZpY2UgYE9udGltaXplU2VydmljZWAgb3IgYE9udGltaXplRUVTZXJ2aWNlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IE9fREFUQV9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuKCdPbnRpbWl6ZSBkYXRhIHNlcnZpY2UnKTtcblxuZXhwb3J0IGNvbnN0IE9fUkVTUE9OU0VfQURBUFRFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJU2VydmljZVJlc3BvbnNlQWRhcHRlcjxCYXNlU2VydmljZVJlc3BvbnNlPj4oJ1NlcnZpY2UgcmVzcG9uc2UgYWRhcHRlcicpO1xuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcGxhY2UgdGhlIHRyYW5zbGF0ZSBzZXJ2aWNlIGBPVHJhbnNsYXRlU2VydmljZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBPX1RSQU5TTEFURV9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuKCdUcmFuc2xhdGUgc2VydmljZScpO1xuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcGxhY2UgdGhlIGZpbGUgc2VydmljZSBgT250aW1pemVGaWxlU2VydmljZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBPX0ZJTEVfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJRmlsZVNlcnZpY2U+KCdGaWxlIHVwbG9hZGVyIHNlcnZpY2UnKTtcblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byByZXBsYWNlIHRoZSBsb2NhbHN0b3JhZ2Ugc2VydmljZSBgTG9jYWxTdG9yYWdlU2VydmljZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBPX0xPQ0FMU1RPUkFHRV9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPElMb2NhbFN0b3JhZ2VTZXJ2aWNlPignTG9jYWwgc3RvcmFnZSBzZXJ2aWNlJyk7XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVwbGFjZSB0aGUgZXhwb3J0YXRpb24gc2VydmljZSBgT250aW1pemVFeHBvcnRTZXJ2aWNlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IE9fRVhQT1JUX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SUV4cG9ydFNlcnZpY2U+KCdFeHBvcnQgc2VydmljZScpO1xuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcGxhY2UgdGhlIHBlcm1pc3Npb24gc2VydmljZSBgT250aW1pemVQZXJtaXNzaW9uc1NlcnZpY2Ugb3IgT250aW1pemVFRVBlcm1pc3Npb25zU2VydmljZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBPX1BFUk1JU1NJT05fU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJUGVybWlzc2lvbnNTZXJ2aWNlPignUGVybWlzc2lvbiBzZXJ2aWNlJyk7XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVwbGFjZSB0aGUgYXV0aGVudGljYXRpb24gc2VydmljZSBgQXV0aFNlcnZpY2VgLlxuICovXG5leHBvcnQgY29uc3QgT19BVVRIX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SUF1dGhTZXJ2aWNlPignQXV0aGVudGljYXRpb24gc2VydmljZScpO1xuXG4vKipcbiogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVwbGFjZSB0aGUgY29tcG9uZW50IHN0YXRlIHNlcnZpY2UgYERlZmF1bHRDb21wb25lbnRTdGF0ZVNlcnZpY2VgLlxuKi9cbmV4cG9ydCBjb25zdCBPX0NPTVBPTkVOVF9TVEFURV9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPERlZmF1bHRDb21wb25lbnRTdGF0ZVNlcnZpY2U+KCdDb21wb25lbnQgc3RhdGUgc2VydmljZScpO1xuXG5cbi8qKlxuKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byByZXBsYWNlIHRoZSBjb21wb25lbnQgc3RhdGUgc2VydmljZSBgRGVmYXVsdENvbXBvbmVudFN0YXRlU2VydmljZWAuXG4qL1xuZXhwb3J0IGNvbnN0IE9fQ0hBUlRfT05fREVNQU5EX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SUNoYXJ0T25EZW1hbmRTZXJ2aWNlPignQ2hhcnQgb24gZGVtYW5kIHNlcnZpY2UnKTtcblxuZXhwb3J0IGNvbnN0IE9fUkVQT1JUX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SVJlcG9ydFNlcnZpY2U+KCdSZXBvcnQgc2VydmljZScpO1xuXG5leHBvcnQgY29uc3QgT19FUlJPUl9ESUFMT0dfTUFOQUdFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPRXJyb3JEaWFsb2dNYW5hZ2VyPignRXJyb3IgZGlhbG9nIG1hbmFnZXInKTtcblxuZXhwb3J0IGNvbnN0IE9fRVhQT1JUX0RBVEFfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJRXhwb3J0RGF0YVByb3ZpZGVyPignRXhwb3J0IGRhdGEgcHJvdmlkZXInKTtcblxuZXhwb3J0IGNvbnN0IE9fTUFUX0VSUk9SX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48T01hdEVycm9yT3B0aW9ucz4oJ28tbWF0LWVycm9yLW9wdGlvbnMnKTtcblxuZXhwb3J0IGNvbnN0IE9fRk9STV9NRVNTQUdFX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ09udGltaXplIG8tZm9ybSBtZXNzYWdlIHNlcnZpY2UnKTtcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZXNwb25zZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvaW50ZXJmYWNlcy9iYXNlLXJlc3BvbnNlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VSZXNwb25zZSB7XG4gIGlzU3VjY2Vzc2Z1bCgpOiBib29sZWFuO1xuICBpc0ZhaWxlZCgpOiBib29sZWFuO1xuICBpc1VuYXV0aG9yaXplZCgpOiBib29sZWFuO1xufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1sYXlvdXQtbWFuYWdlci5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvaW50ZXJmYWNlcy9mb3JtLWxheW91dC1tYW5hZ2VyLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRleHQgfSBmcm9tICcuLi90eXBlcy9mb3JtLWxheW91dC1tYW5hZ2VyLWNvbnRleHQudHlwZSc7XG5pbXBvcnQgeyBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zLCBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSB9IGZyb20gJy4uL3R5cGVzL2Zvcm0tbGF5b3V0LWRldGFpbC1jb21wb25lbnQtZGF0YS50eXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBJT0Zvcm1MYXlvdXRNYW5hZ2VyIHtcbiAgb2F0dHI6IHN0cmluZztcbiAgbW9kZTogc3RyaW5nO1xuICBzZXBhcmF0b3I6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgc3RvcmVTdGF0ZTogYm9vbGVhbjtcbiAgbGFiZWxDb2x1bW5zOiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkgdGFiR3JvdXBPcHRpb25zOiBhbnk7XG4gIHJlYWRvbmx5IGRpYWxvZ09wdGlvbnM6IGFueTtcbiAgcmVhZG9ubHkgc3BsaXRQYW5lT3B0aW9uczogYW55O1xuXG4gIG9uTWFpblRhYlNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgb25TZWxlY3RlZFRhYkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT47XG4gIG9uQ2xvc2VUYWI6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBvblRyaWdnZXJVcGRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG5cbiAgYWRkRGV0YWlsQ29tcG9uZW50KGNoaWxkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHVybDogc3RyaW5nLCBjb250ZXh0PzogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29udGV4dCk6IHZvaWQ7XG4gIGFsbG93VG9VcGRhdGVOYXZpZ2F0aW9uKGZvcm1BdHRyOiBzdHJpbmcpOiBib29sZWFuO1xuICBjbG9zZURldGFpbChvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyk6IHZvaWQ7XG4gIGNsb3NlRGV0YWlscyhkZXRhaWxzRGF0YTogYW55W10sIG9wdGlvbnM/OiBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zKTogdm9pZDtcbiAgZ2V0QXR0cmlidXRlKCk6IHN0cmluZztcbiAgZ2V0Q29tcG9uZW50S2V5KCk6IHN0cmluZztcbiAgZ2V0RGF0YVRvU3RvcmUoKTogYW55O1xuICBnZXRGb3JtQ2FjaGVEYXRhKCk6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhO1xuICBnZXRGb3JtRGF0YUZyb21MYWJlbENvbHVtbnMoZGF0YTogYW55KTogYW55O1xuICBnZXRMYWJlbEZyb21EYXRhKGRhdGE6IGFueSk6IHN0cmluZztcbiAgZ2V0TGFiZWxGcm9tVXJsUGFyYW1zKHVybFBhcmFtczogb2JqZWN0KTogc3RyaW5nO1xuICBnZXRSb3V0ZUZvckNvbXBvbmVudChjb21wOiBhbnkpOiBhbnlbXTtcbiAgZ2V0Um91dGVLZXkoKTogc3RyaW5nO1xuICBnZXRSb3V0ZU9mQWN0aXZlSXRlbSgpOiBhbnlbXTtcbiAgaXNEaWFsb2dNb2RlKCk6IGJvb2xlYW47XG4gIGlzTWFpbkNvbXBvbmVudChjb21wOiBhbnkpOiBib29sZWFuO1xuICBpc1NwbGl0UGFuZU1vZGUoKTogYm9vbGVhbjtcbiAgaXNUYWJNb2RlKCk6IGJvb2xlYW47XG4gIHJlbG9hZE1haW5Db21wb25lbnRzKCk6IHZvaWQ7XG4gIHNldEFzQWN0aXZlRm9ybUxheW91dE1hbmFnZXIoKTogdm9pZDtcbiAgc2V0TW9kaWZpZWRTdGF0ZShmb3JtQXR0cjogc3RyaW5nLCBtb2RpZmllZDogYm9vbGVhbiwgY29uZmlybUV4aXQ6IGJvb2xlYW4pOiB2b2lkO1xuICB1cGRhdGVBY3RpdmVEYXRhKGRhdGE6IGFueSk6IHZvaWQ7XG4gIHVwZGF0ZU5hdmlnYXRpb24oZGF0YTogYW55LCBrZXlzVmFsdWVzOiBhbnksIGluc2VydGlvbk1vZGU6IGJvb2xlYW4pOiB2b2lkO1xuICB1cGRhdGVTdGF0ZVN0b3JhZ2UoKTogdm9pZDtcbn1cbiJdfQ==
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
;
|
|
1
2
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbmFwaS1yZXNwb25zZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvaW50ZXJmYWNlcy9qc29uYXBpLXJlc3BvbnNlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErRDBHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlUmVzcG9uc2UgfSBmcm9tICcuL2Jhc2UtcmVzcG9uc2UuaW50ZXJmYWNlJztcbi8vIEludGVyZmFjZSBmb3IgZGVzY3JpYmluZyBlcnJvcnNcbmludGVyZmFjZSBKU09OQVBJRXJyb3Ige1xuICBpZD86IHN0cmluZzsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgcGFydGljdWxhciBlcnJvciBvY2N1cnJlbmNlXG4gIHN0YXR1cz86IHN0cmluZzsgICAgICAgICAgICAgICAgICAgICAvLyBIVFRQIHN0YXR1cyBjb2RlIGFwcGxpY2FibGUgdG8gdGhpcyBwcm9ibGVtXG4gIGNvZGU/OiBzdHJpbmc7ICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBsaWNhdGlvbi1zcGVjaWZpYyBlcnJvciBjb2RlXG4gIHRpdGxlPzogc3RyaW5nOyAgICAgICAgICAgICAgICAgICAgICAvLyBTaG9ydCwgaHVtYW4tcmVhZGFibGUgc3VtbWFyeSBvZiB0aGUgcHJvYmxlbVxuICBkZXRhaWw/OiBzdHJpbmc7ICAgICAgICAgICAgICAgICAgICAgLy8gRGV0YWlsZWQgZXhwbGFuYXRpb24gb2YgdGhlIGVycm9yXG4gIHNvdXJjZT86IHtcbiAgICBwb2ludGVyPzogc3RyaW5nOyAgICAgICAgICAgICAgICAgIC8vIEpTT04gUG9pbnRlciB0byB0aGUgb2ZmZW5kaW5nIHBhcnQgb2YgdGhlIGRvY3VtZW50XG4gICAgcGFyYW1ldGVyPzogc3RyaW5nO1xuICAgIGhlYWRlcj86IHN0cmluZyAgICAgICAgICAgICAgICAgICAgLy8gYSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgbmFtZSBvZiBhIHNpbmdsZSByZXF1ZXN0IGhlYWRlciB3aGljaCBjYXVzZWQgdGhlIGVycm9yXG4gIH07XG4gIGxpbmtzPzoge1xuICAgIGFib3V0Pzogc3RyaW5nOyAgICAgICAgICAgICAgICAgICAvLyBBIGxpbmsgdGhhdCBsZWFkcyB0byBmdXJ0aGVyIGRldGFpbHMgYWJvdXQgdGhpcyBlcnJvclxuICAgIHR5cGU/OiBzdHJpbmc7ICAgICAgICAgICAgICAgICAgICAvLyBPcHRpb25hbCBhZGRpdGlvbmFsIGxpbmtzXG4gIH07XG4gIG1ldGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyAgICAgICAgIC8vIE9wdGlvbmFsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbn1cblxudHlwZSBKc29uQXBpTGlua1ZhbHVlID1cbiAgfCBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbXBsZSBVUkkgc3RyaW5nXG4gIHwgSnNvbkFwaUxpbmtPYmplY3QgICAgICAgICAgICAgICAgICAgICAvLyBGdWxsIGxpbmsgb2JqZWN0IHdpdGggbWV0YWRhdGFcbiAgfCBudWxsO1xuXG4vLyBJbnRlcmZhY2UgZm9yIGxpbmtzIChjYW4gYmUgZXh0ZW5kZWQgYXMgbmVlZGVkKVxuaW50ZXJmYWNlIEpTT05BUElMaW5rcyB7XG5cbiAgW2xpbmtOYW1lOiBzdHJpbmddOiBKc29uQXBpTGlua1ZhbHVlOyAgIC8vIER5bmFtaWMga2V5czogXCJzZWxmXCIsIFwicmVsYXRlZFwiLCBldGMuXG59XG5cbmludGVyZmFjZSBKc29uQXBpTGlua09iamVjdCB7XG4gIGhyZWY6IHN0cmluZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXF1aXJlZDogVGhlIGFjdHVhbCBsaW5rIFVSSVxuICBtZXRhPzogUmVjb3JkPHN0cmluZywgYW55PjsgICAgICAgICAgICAgLy8gT3B0aW9uYWwgbWV0YWRhdGEgYWJvdXQgdGhlIGxpbmtcbiAgcmVsPzogc3RyaW5nOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9wdGlvbmFsOiBSZWxhdGlvbiB0eXBlIChpZiBub3QgaW5mZXJyZWQpXG4gIHR5cGU/OiBzdHJpbmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPcHRpb25hbDogTWVkaWEgdHlwZSBvZiB0aGUgcmVzb3VyY2VcbiAgdGl0bGU/OiBzdHJpbmc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9wdGlvbmFsOiBIdW1hbi1yZWFkYWJsZSB0aXRsZVxufVxuXG4vLyBJbnRlcmZhY2UgZm9yIHJlc291cmNlc1xuaW50ZXJmYWNlIEpTT05BUElSZXNvdXJjZSB7XG4gIHR5cGU6IHN0cmluZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNvdXJjZSB0eXBlIChlLmcuLCBcImFydGljbGVzXCIsIFwidXNlcnNcIilcbiAgaWQ6IHN0cmluZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSByZXNvdXJjZVxuICBhdHRyaWJ1dGVzPzogUmVjb3JkPHN0cmluZywgYW55PjsgICAgICAgLy8gQXR0cmlidXRlcyBvZiB0aGUgcmVzb3VyY2VcbiAgcmVsYXRpb25zaGlwcz86IFJlY29yZDxzdHJpbmcsIGFueT47ICAgIC8vIFJlbGF0aW9uc2hpcHMgd2l0aCBvdGhlciByZXNvdXJjZXMgKG9wdGlvbmFsKVxuICBsaW5rcz86IEpTT05BUElMaW5rczsgICAgICAgICAgICAgICAgICAgLy8gTGlua3MgcmVsYXRlZCB0byB0aGUgcmVzb3VyY2UgKG9wdGlvbmFsKVxuICBtZXRhPzogUmVjb3JkPHN0cmluZywgYW55PjsgICAgICAgICAgICAgLy8gTWV0YWRhdGEgKG9wdGlvbmFsKVxufVxuXG4vLyBJbnRlcmZhY2UgZm9yIHN1Y2Nlc3NmdWwgcmVzcG9uc2VzXG5pbnRlcmZhY2UgSlNPTkFQSVN1Y2Nlc3NmdWxSZXNwb25zZSB7XG4gIGRhdGE/OiBKU09OQVBJUmVzb3VyY2UgfCBKU09OQVBJUmVzb3VyY2VbXTsgLy8gQ2FuIGJlIGEgc2luZ2xlIHJlc291cmNlIG9yIGEgY29sbGVjdGlvblxuICBpbmNsdWRlZD86IEpTT05BUElSZXNvdXJjZVtdOyAgICAgICAgICAgICAgIC8vIFJlbGF0ZWQgcmVzb3VyY2VzIChvcHRpb25hbClcbiAgbWV0YT86IFJlY29yZDxzdHJpbmcsIGFueT47ICAgICAgICAgICAgICAgICAvLyBNZXRhZGF0YSAob3B0aW9uYWwpXG4gIGxpbmtzPzogSlNPTkFQSUxpbmtzOyAgICAgICAgICAgICAgICAgICAgICAgLy8gTGlua3MgKG9wdGlvbmFsKVxufVxuXG4vLyBJbnRlcmZhY2UgZm9yIGVycm9yIHJlc3BvbnNlc1xuaW50ZXJmYWNlIEpTT05BUElFcnJvclJlc3BvbnNlIHtcbiAgZXJyb3JzPzogSlNPTkFQSUVycm9yW107IC8vIEEgbGlzdCBvZiBlcnJvcnNcbn1cblxuLy8gR2VuZXJpYyBpbnRlcmZhY2UgdGhhdCBjYW4gYmUgdXNlZCBmb3IgYW55IEFQSSByZXNwb25zZSwgZWl0aGVyIHN1Y2Nlc3NmdWwgb3IgZXJyb3JcbmV4cG9ydCBpbnRlcmZhY2UgSlNPTkFQSVJlc3BvbnNlIGV4dGVuZHMgSlNPTkFQSVN1Y2Nlc3NmdWxSZXNwb25zZSwgSlNPTkFQSUVycm9yUmVzcG9uc2UsIEJhc2VSZXNwb25zZSB7IH07XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1yZXNwb25zZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvaW50ZXJmYWNlcy9zZXJ2aWNlLXJlc3BvbnNlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZVJlc3BvbnNlIH0gZnJvbSBcIi4vYmFzZS1yZXNwb25zZS5pbnRlcmZhY2VcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlUmVzcG9uc2UgZXh0ZW5kcyBCYXNlUmVzcG9uc2V7XG4gIGNvZGU6IG51bWJlcjtcbiAgc3FsVHlwZXM/OiB7IFtrZXk6IHN0cmluZ106IG51bWJlcjsgfTtcbiAgc3RhcnRSZWNvcmRJbmRleD86IG51bWJlcjtcbiAgdG90YWxRdWVyeVJlY29yZHNOdW1iZXI/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1yZXNwb25zZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvaW50ZXJmYWNlcy9zZXJ2aWNlLXJlc3BvbnNlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZVJlc3BvbnNlIH0gZnJvbSBcIi4vYmFzZS1yZXNwb25zZS5pbnRlcmZhY2VcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlUmVzcG9uc2UgZXh0ZW5kcyBCYXNlUmVzcG9uc2V7XG4gIGNvZGU6IG51bWJlcjtcbiAgc3FsVHlwZXM/OiB7IFtrZXk6IHN0cmluZ106IG51bWJlcjsgfTtcbiAgc3RhcnRSZWNvcmRJbmRleD86IG51bWJlcjtcbiAgdG90YWxRdWVyeVJlY29yZHNOdW1iZXI/OiBudW1iZXI7XG4gIGRhdGE6IGFueTtcbiAgbWVzc2FnZTogc3RyaW5nO1xuXG59XG4iXX0=
|
|
@@ -4,7 +4,7 @@ import { MatDialog } from '@angular/material/dialog';
|
|
|
4
4
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
5
5
|
import { BehaviorSubject, Subscription } from 'rxjs';
|
|
6
6
|
import { BooleanInputConverter } from '../../decorators/input-converter';
|
|
7
|
-
import { ComponentStateServiceProvider
|
|
7
|
+
import { ComponentStateServiceProvider } from '../../services/factories';
|
|
8
8
|
import { LocalStorageService } from '../../services/local-storage.service';
|
|
9
9
|
import { NavigationService } from '../../services/navigation.service';
|
|
10
10
|
import { OFormLayoutManagerService } from '../../services/o-form-layout-manager.service';
|
|
@@ -17,6 +17,7 @@ import { Util } from '../../util/util';
|
|
|
17
17
|
import { OFormLayoutDialogComponent } from './dialog/o-form-layout-dialog.component';
|
|
18
18
|
import { CanActivateFormLayoutChildGuard } from './guards/o-form-layout-can-activate-child.guard';
|
|
19
19
|
import { OFormLayoutManagerBase } from './o-form-layout-manager-base.class';
|
|
20
|
+
import { O_COMPONENT_STATE_SERVICE } from '../../injection-tokens';
|
|
20
21
|
import * as i0 from "@angular/core";
|
|
21
22
|
import * as i1 from "@angular/router";
|
|
22
23
|
import * as i2 from "@angular/material/dialog";
|
|
@@ -554,4 +555,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
554
555
|
type: HostListener,
|
|
555
556
|
args: ['window:beforeunload', []]
|
|
556
557
|
}] } });
|
|
557
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L28tZm9ybS1sYXlvdXQtbWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvbGF5b3V0cy9mb3JtLWxheW91dC9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUdSLFFBQVEsRUFDUixRQUFRLEVBRVIsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQWlDLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBaUMsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEYsT0FBTyxFQUFFLGVBQWUsRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFJekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFL0YsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sb0VB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UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2tpcFNlbGYsXG4gIFR5cGUsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgSUxheW91dE1hbmFnZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2xheW91dC1tYW5hZ2VyLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUxvY2FsU3RvcmFnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbG9jYWwtc3RvcmFnZS1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlck1vZGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL28tZm9ybS1sYXlvdXQtbWFuYWdlci1tb2RlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlciwgT19DT01QT05FTlRfU1RBVEVfU0VSVklDRSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZhY3Rvcmllcyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVDbGFzcyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tZm9ybS1sYXlvdXQtbWFuYWdlci1jb21wb25lbnQtc3RhdGUuY2xhc3MnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdGUvby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbXBvbmVudC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlL28tdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucywgRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEgfSBmcm9tICcuLi8uLi90eXBlcy9mb3JtLWxheW91dC1kZXRhaWwtY29tcG9uZW50LWRhdGEudHlwZSc7XG5pbXBvcnQgeyBPX0dMT0JBTF9DT05GSUcgfSBmcm9tICcuLi8uLi90eXBlcy9vLWdsb2JhbC1jb25maWcudHlwZSc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZGlhbG9nL28tZm9ybS1sYXlvdXQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZUZvcm1MYXlvdXRDaGlsZEd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvby1mb3JtLWxheW91dC1jYW4tYWN0aXZhdGUtY2hpbGQuZ3VhcmQnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSB9IGZyb20gJy4vby1mb3JtLWxheW91dC1tYW5hZ2VyLWJhc2UuY2xhc3MnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29udGV4dCB9IGZyb20gJy4uLy4uL3R5cGVzL2Zvcm0tbGF5b3V0LW1hbmFnZXItY29udGV4dC50eXBlJztcbmltcG9ydCB7IElPRm9ybUxheW91dE1hbmFnZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Zvcm0tbGF5b3V0LW1hbmFnZXIuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fRk9STV9MQVlPVVRfTUFOQUdFUiA9IFtcbiAgJ29hdHRyOiBhdHRyJyxcbiAgJ21vZGUnLFxuICAnc3RvcmVTdGF0ZTogc3RvcmUtc3RhdGUnLFxuXG4gIC8vIENvbW1vbiBmb3IgZGlhbG9nIGFuZCB0YWIgbW9kZVxuICAvLyBkZXByZWNhdGVkLCBvbmx5IG1hbnRhaW5lZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgJ3RpdGxlJyxcbiAgJ2xhYmVsQ29sdW1uczogbGFiZWwtY29sdW1ucycsXG4gICdzZXBhcmF0b3InLFxuXG4gIC8vIGF0dHIgb2YgdGhlIGNoaWxkIGZvcm0gZnJvbSB3aGljaCB0aGUgZGF0YSBmb3IgYnVpbGRpbmcgdGhlIHRhYiB0aXRsZSB3aWxsIGJlIG9idGFpbmVkIChvbmx5IGluIHRhYiBtb2RlKVxuICAvLyBkZXByZWNhdGVkLCBvbmx5IG1hbnRhaW5lZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgJ3RpdGxlRGF0YU9yaWdpbjogdGl0bGUtZGF0YS1vcmlnaW4nLFxuXG4gIC8vIE9ubHkgZGlhbG9nIG9wdGlvbnMgY29uZmlndXJhYmxlIGFzIGFuIGlucHV0IG9mIHRoZSBvLWZvcm0tbGF5b3V0LW1hbmFnZXIgKHVzZSB0aGUgby1mb3JtLWxheW91dC1kaWFsb2ctb3B0aW9ucyBkaXJlY3RpdmUpXG4gIC8vIGRlcHJlY2F0ZWQsIG9ubHkgbWFudGFpbmVkIGZvciBsZWdhY3kgcmVhc29uc1xuICAnZGlhbG9nV2lkdGg6IGRpYWxvZy13aWR0aCcsXG4gICdkaWFsb2dNaW5XaWR0aDogZGlhbG9nLW1pbi13aWR0aCcsXG4gICdkaWFsb2dNYXhXaWR0aDogZGlhbG9nLW1heC13aWR0aCcsXG4gICdkaWFsb2dIZWlnaHQ6IGRpYWxvZy1oZWlnaHQnLFxuICAnZGlhbG9nTWluSGVpZ2h0OiBkaWFsb2ctbWluLWhlaWdodCcsXG4gICdkaWFsb2dNYXhIZWlnaHQgZGlhbG9nLW1heC1oZWlnaHQnLFxuICAnZGlhbG9nQ2xhc3M6IGRpYWxvZy1jbGFzcycsXG4gICdkaWFsb2dUaXRsZVNlcGFyYXRvcjogZGlhbG9nLXRpdGxlLXNlcGFyYXRvcidcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19GT1JNX0xBWU9VVF9NQU5BR0VSID0gW1xuICAnb25NYWluVGFiU2VsZWN0ZWQnLFxuICAnb25TZWxlY3RlZFRhYkNoYW5nZScsXG4gICdvbkNsb3NlVGFiJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby1mb3JtLWxheW91dC1tYW5hZ2VyJyxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX0ZPUk1fTEFZT1VUX01BTkFHRVIsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX0ZPUk1fTEFZT1VUX01BTkFHRVIsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQ29tcG9uZW50U3RhdGVTZXJ2aWNlUHJvdmlkZXIsXG4gICAgeyBwcm92aWRlOiBPX0NPTVBPTkVOVF9TVEFURV9TRVJWSUNFLCB1c2VDbGFzczogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlIH0sXG4gICAgeyBwcm92aWRlOiBPRm9ybUxheW91dE1hbmFnZXJCYXNlLCB1c2VFeGlzdGluZzogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50IH1cbiAgXSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1mb3JtLWxheW91dC1tYW5hZ2VyXSc6ICd0cnVlJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95LCBJTG9jYWxTdG9yYWdlQ29tcG9uZW50LElPRm9ybUxheW91dE1hbmFnZXIge1xuXG4gIC8vIGRlY2xhcmluZyB0aGlzIHByb3BlcnR5IHRvIGhhdmUgYWNjZXMgdG8gc3RhdGljIG1lbWJlcnMgaW4gdGhlIHRlbXBsYXRlXG4gIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCA9IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudDtcblxuXG4gIHB1YmxpYyBzdGF0aWMgRElBTE9HX01PREUgPSAnZGlhbG9nJztcbiAgcHVibGljIHN0YXRpYyBUQUJfTU9ERSA9ICd0YWInO1xuICBwdWJsaWMgc3RhdGljIFNQTElUX1BBTkVfTU9ERSA9ICdzcGxpdC1wYW5lJztcblxuICBwdWJsaWMgb2F0dHI6IHN0cmluZztcbiAgcHVibGljIF9tb2RlOiBzdHJpbmcgPSBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuRElBTE9HX01PREU7XG4gIHB1YmxpYyBzdHJldGNoVGFicyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBnZXQgbW9kZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9tb2RlO1xuICB9XG5cbiAgcHVibGljIHNldCBtb2RlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhdmFpbGFibGVNb2RlVmFsdWVzID0gW09Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERSwgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlRBQl9NT0RFLCBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuU1BMSVRfUEFORV9NT0RFXTtcbiAgICB0aGlzLl9tb2RlID0gKHZhbHVlIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChhdmFpbGFibGVNb2RlVmFsdWVzLmluZGV4T2YodGhpcy5fbW9kZSkgPT09IC0xKSB7XG4gICAgICB0aGlzLl9tb2RlID0gT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LkRJQUxPR19NT0RFO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfc2VwYXJhdG9yOiBzdHJpbmcgPSAnICc7XG5cbiAgLyoqXG4gICogQGRlcHJlY2F0ZWQgdXNlciBzaG91bGQgdXNlIHRoZSBvcHRpb25zIGlucHV0XG4gICovXG4gIHNldCBzZXBhcmF0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3NlcGFyYXRvciA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHNlcGFyYXRvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXBhcmF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlciBzaG91bGQgdXNlIHRoZSBvcHRpb25zIGlucHV0XG4gICAqL1xuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIHN0b3JlU3RhdGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAqIEBkZXByZWNhdGVkIHVzZXIgc2hvdWxkIHVzZSB0aGUgb3B0aW9ucyBpbnB1dFxuICAqL1xuICBwdWJsaWMgdGl0bGVEYXRhT3JpZ2luOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoZSBuZXh0IGlucHV0cyBhcmUgZGVwcmVjYXRlZCBhbmQgdXNlciBzaG91bGQgdXNlIHRoZSBPRm9ybUxheW91dERpYWxvZ09wdGlvbnNEaXJlY3RpdmUgaW5wdXRzXG4gICAqL1xuICBwdWJsaWMgZGlhbG9nV2lkdGg6IHN0cmluZztcbiAgcHVibGljIGRpYWxvZ01pbldpZHRoOiBzdHJpbmc7XG4gIHB1YmxpYyBkaWFsb2dNYXhXaWR0aDogc3RyaW5nO1xuICBwdWJsaWMgZGlhbG9nSGVpZ2h0OiBzdHJpbmc7XG4gIHB1YmxpYyBkaWFsb2dNaW5IZWlnaHQ6IHN0cmluZztcbiAgcHVibGljIGRpYWxvZ01heEhlaWdodDogc3RyaW5nO1xuICBwdWJsaWMgZGlhbG9nQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgZGlhbG9nVGl0bGVTZXBhcmF0b3IgPSAnOic7XG5cbiAgQFZpZXdDaGlsZCgndGFiR3JvdXAnKVxuICBwdWJsaWMgb1RhYkdyb3VwOiBPRm9ybUxheW91dE1hbmFnZXJNb2RlO1xuICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8T0Zvcm1MYXlvdXREaWFsb2dDb21wb25lbnQ+O1xuICBAVmlld0NoaWxkKCdzcGxpdFBhbmUnKVxuICBwdWJsaWMgb1NwbGl0UGFuZTogT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZTtcblxuICBwdWJsaWMgb25NYWluVGFiU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBvblNlbGVjdGVkVGFiQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25DbG9zZVRhYjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcm90ZWN0ZWQgX2xhYmVsQ29sdW1uczogc3RyaW5nO1xuXG4gIGdldCBsYWJlbENvbHVtbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxDb2x1bW5zO1xuICB9XG5cbiAgLyoqXG4gICogQGRlcHJlY2F0ZWQgdXNlciBzaG91bGQgdXNlIHRoZSBvcHRpb25zIGlucHV0XG4gICovXG4gIHNldCBsYWJlbENvbHVtbnModmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2xhYmVsQ29sdW1ucyA9IHZhbHVlO1xuICAgIHRoaXMuX2xhYmVsQ29sc0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfbGFiZWxDb2xzQXJyYXk6IHN0cmluZ1tdID0gW107XG5cbiAgZ2V0IGxhYmVsQ29sc0FycmF5KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxDb2xzQXJyYXk7XG4gIH1cblxuICBzZXQgbGFiZWxDb2xzQXJyYXkodmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fbGFiZWxDb2xzQXJyYXkgPSB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBPVHJhbnNsYXRlU2VydmljZTtcbiAgcHJvdGVjdGVkIG9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2U6IE9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2U7XG4gIHByb3RlY3RlZCBsb2NhbFN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlO1xuXG4gIHByb3RlY3RlZCBfdGFiR3JvdXBPcHRpb25zOiBhbnkgPSB7fTtcblxuICBnZXQgdGFiR3JvdXBPcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYkdyb3VwT3B0aW9ucztcbiAgfVxuXG4gIGFkZFRhYkdyb3VwT3B0aW9ucyh2YWx1ZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl90YWJHcm91cE9wdGlvbnMsIHZhbHVlKTtcbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ2xhYmVsQ29sdW1ucycpKSB7XG4gICAgICB0aGlzLmxhYmVsQ29sc0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHZhbHVlWydsYWJlbENvbHVtbnMnXSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnc2VwYXJhdG9yJykpIHtcbiAgICAgIHRoaXMuc2VwYXJhdG9yID0gdmFsdWVbJ3NlcGFyYXRvciddO1xuICAgIH1cbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ3N0cmV0Y2hUYWJzJykpIHtcbiAgICAgIHRoaXMuc3RyZXRjaFRhYnMgPSB2YWx1ZVsnc3RyZXRjaFRhYnMnXTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX2RpYWxvZ09wdGlvbnM6IGFueSA9IHt9O1xuXG4gIGdldCBkaWFsb2dPcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2RpYWxvZ09wdGlvbnM7XG4gIH1cblxuICBhZGREaWFsb2dPcHRpb25zKHZhbHVlOiBhbnkpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuX2RpYWxvZ09wdGlvbnMsIHZhbHVlKTtcbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ2xhYmVsQ29sdW1ucycpKSB7XG4gICAgICB0aGlzLmxhYmVsQ29sc0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHZhbHVlWydsYWJlbENvbHVtbnMnXSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnc2VwYXJhdG9yJykpIHtcbiAgICAgIHRoaXMuc2VwYXJhdG9yID0gdmFsdWVbJ3NlcGFyYXRvciddO1xuICAgIH1cbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ2RpYWxvZ1RpdGxlU2VwYXJhdG9yJykpIHtcbiAgICAgIHRoaXMuZGlhbG9nVGl0bGVTZXBhcmF0b3IgPSB2YWx1ZVsnZGlhbG9nVGl0bGVTZXBhcmF0b3InXTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NwbGl0UGFuZU9wdGlvbnM6IGFueSA9IHt9O1xuXG4gIGdldCBzcGxpdFBhbmVPcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3NwbGl0UGFuZU9wdGlvbnM7XG4gIH1cblxuICBhZGRTcGxpdFBhbmVPcHRpb25zKHZhbHVlOiBhbnkpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuX3NwbGl0UGFuZU9wdGlvbnMsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGRpbmdHdWFyZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2U7XG5cbiAgcHVibGljIF9tYXJrRm9yVXBkYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBvblRyaWdnZXJVcGRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByb3RlY3RlZCBjb21wb25lbnRTdGF0ZVNlcnZpY2U6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlU2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgYWN0Um91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByb3RlY3RlZCBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcm90ZWN0ZWQgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgQFNraXBTZWxmKCkgQE9wdGlvbmFsKClcbiAgICBwdWJsaWMgcGFyZW50Rm9ybUxheW91dE1hbmFnZXI6IE9Gb3JtTGF5b3V0TWFuYWdlckJhc2VcbiAgKSB7XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZSk7XG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTG9jYWxTdG9yYWdlU2VydmljZSk7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT1RyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChOYXZpZ2F0aW9uU2VydmljZSk7XG4gICAgdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZVNlcnZpY2U+KEFic3RyYWN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlIGFzIFR5cGU8T0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlPik7XG4gICAgaWYgKHRoaXMuc3RvcmVTdGF0ZSkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5vblJvdXRlQ2hhbmdlLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlU3RvcmFnZSgpO1xuICAgICAgfSkpO1xuICAgIH1cbiAgICB0aGlzLmdldEluamVjdGlvblRva2VuQ29uZmlnKCk7XG5cbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5qZWN0aW9uVG9rZW5Db25maWcoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG9HbG9iYWxDb25maWcgPSB0aGlzLmluamVjdG9yLmdldChPX0dMT0JBTF9DT05GSUcpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKG9HbG9iYWxDb25maWcuc3RvcmVTdGF0ZSkpIHtcbiAgICAgICAgdGhpcy5zdG9yZVN0YXRlID0gb0dsb2JhbENvbmZpZy5zdG9yZVN0YXRlO1xuICAgICAgICBpZiAoIXRoaXMuc3RvcmVTdGF0ZSkge1xuICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gRG8gbm90aGluZyBiZWNhdXNlIGlzIG9wdGlvbmFsXG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlQ2xhc3Mge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFN0YXRlU2VydmljZS5zdGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEFjdGl2YXRlQ2hpbGRHdWFyZCgpO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5vYXR0cikpIHtcbiAgICAgIHRoaXMub2F0dHIgPSAodGhpcy50aXRsZSB8fCAnJykgKyB0aGlzLm1vZGU7XG4gICAgICBjb25zb2xlLndhcm4oJ28tZm9ybS1sYXlvdXQtbWFuYWdlciBtdXN0IGhhdmUgYW4gdW5pcXVlIGF0dHInKTtcbiAgICB9XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLnJlZ2lzdGVyRm9ybUxheW91dE1hbmFnZXIodGhpcyk7XG4gICAgaWYgKHRoaXMuc3RvcmVTdGF0ZSkge1xuICAgICAgdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2UuaW5pdGlhbGl6ZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZWxSZWYpIHtcbiAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgndGl0bGUnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZS5yZW1vdmVGb3JtTGF5b3V0TWFuYWdlcih0aGlzKTtcbiAgICB0aGlzLmRlc3Ryb3lBY3RpdmF0ZUNoaWxkR3VhcmQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBdHRyaWJ1dGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vYXR0cjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb21wb25lbnRLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ09Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudF8nICsgdGhpcy5vYXR0cjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZUtleSgpOiBzdHJpbmcge1xuICAgIGxldCByb3V0ZSA9IHRoaXMucm91dGVyLnVybDtcbiAgICB0aGlzLmFjdFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICByb3V0ZSA9IHJvdXRlLnJlcGxhY2UocGFyYW1zW2tleV0sIGtleSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gcm91dGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YVRvU3RvcmUoKTogYW55IHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpID8gY29tcFJlZi5nZXREYXRhVG9TdG9yZSgpIDoge307XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJywgW10pXG4gIHB1YmxpYyBiZWZvcmV1bmxvYWRIYW5kbGVyKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlU3RhdGVTdG9yYWdlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFiZWxGcm9tVXJsUGFyYW1zKHVybFBhcmFtczogb2JqZWN0KTogc3RyaW5nIHtcbiAgICBsZXQgbGFiZWwgPSAnJztcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModXJsUGFyYW1zKTtcbiAgICBrZXlzLmZvckVhY2goKHBhcmFtLCBpKSA9PiB7XG4gICAgICBsYWJlbCArPSB1cmxQYXJhbXNbcGFyYW1dICsgKChpIDwga2V5cy5sZW5ndGggLSAxKSA/IHRoaXMuc2VwYXJhdG9yIDogJycpO1xuICAgIH0pO1xuICAgIHJldHVybiBsYWJlbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtRGF0YUZyb21MYWJlbENvbHVtbnMoZGF0YTogYW55KSB7XG4gICAgY29uc3QgZm9ybURhdGEgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKHggPT4ge1xuICAgICAgaWYgKHRoaXMubGFiZWxDb2xzQXJyYXkuaW5kZXhPZih4KSA+IC0xKSB7XG4gICAgICAgIGZvcm1EYXRhW3hdID0gZGF0YVt4XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZm9ybURhdGE7XG4gIH1cblxuICBwdWJsaWMgYWRkQWN0aXZhdGVDaGlsZEd1YXJkKCk6IHZvaWQge1xuICAgIGNvbnN0IHJvdXRlQ29uZmlnID0gdGhpcy5nZXRQYXJlbnRBY3RSb3V0ZVJvdXRlKCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJvdXRlQ29uZmlnKSkge1xuICAgICAgY29uc3QgY2FuQWN0aXZhdGVDaGlsZEFycmF5ID0gKHJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlQ2hpbGQgfHwgW10pO1xuICAgICAgbGV0IHByZXZpb3VzbHlBZGRlZCA9IGZhbHNlO1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGNhbkFjdGl2YXRlQ2hpbGRBcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBjb25zdCBndWFyZENoaWxkID0gdGhpcy5pbmplY3Rvci5nZXQoQ2FuQWN0aXZhdGVGb3JtTGF5b3V0Q2hpbGRHdWFyZCk7XG4gICAgICAgIHByZXZpb3VzbHlBZGRlZCA9IChjYW5BY3RpdmF0ZUNoaWxkQXJyYXlbaV0gPT09IGd1YXJkQ2hpbGQuY29uc3RydWN0b3IpO1xuICAgICAgICBpZiAocHJldmlvdXNseUFkZGVkKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghcHJldmlvdXNseUFkZGVkKSB7XG4gICAgICAgIHRoaXMuYWRkaW5nR3VhcmQgPSB0cnVlO1xuICAgICAgICBjYW5BY3RpdmF0ZUNoaWxkQXJyYXkucHVzaChDYW5BY3RpdmF0ZUZvcm1MYXlvdXRDaGlsZEd1YXJkKTtcbiAgICAgICAgcm91dGVDb25maWcuY2FuQWN0aXZhdGVDaGlsZCA9IGNhbkFjdGl2YXRlQ2hpbGRBcnJheTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveUFjdGl2YXRlQ2hpbGRHdWFyZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWRkaW5nR3VhcmQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLmFjdGl2ZUZvcm1MYXlvdXRNYW5hZ2VyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZS5jb250ZXh0ID0gdm9pZCAwO1xuICAgIGNvbnN0IHJvdXRlQ29uZmlnID0gdGhpcy5nZXRQYXJlbnRBY3RSb3V0ZVJvdXRlKCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJvdXRlQ29uZmlnKSkge1xuICAgICAgZm9yIChsZXQgaSA9IChyb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkIHx8IFtdKS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBndWFyZENoaWxkID0gdGhpcy5pbmplY3Rvci5nZXQoQ2FuQWN0aXZhdGVGb3JtTGF5b3V0Q2hpbGRHdWFyZCk7XG4gICAgICAgIGlmIChyb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkW2ldID09PSBndWFyZENoaWxkLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgcm91dGVDb25maWcuY2FuQWN0aXZhdGVDaGlsZC5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNEaWFsb2dNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERTtcbiAgfVxuXG4gIHB1YmxpYyBpc1RhYk1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlRBQl9NT0RFO1xuICB9XG5cbiAgcHVibGljIGlzU3BsaXRQYW5lTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuU1BMSVRfUEFORV9NT0RFO1xuICB9XG5cbiAgcHVibGljIGFkZERldGFpbENvbXBvbmVudChjaGlsZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCB1cmw6IHN0cmluZywgY29udGV4dD86IE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRleHQpOiB2b2lkIHtcbiAgICBjaGlsZFJvdXRlID0gVXRpbC5nZXRMYXN0QWN0aXZhdGVSb3V0ZShjaGlsZFJvdXRlKTtcbiAgICBjb25zdCBuZXdEZXRhaWxDb21wOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSA9IHtcbiAgICAgIHBhcmFtczogY2hpbGRSb3V0ZS5wYXJhbXMsXG4gICAgICBxdWVyeVBhcmFtczogY2hpbGRSb3V0ZS5xdWVyeVBhcmFtcyxcbiAgICAgIHVybFNlZ21lbnRzOiBjaGlsZFJvdXRlLnVybCxcbiAgICAgIGNvbXBvbmVudDogY2hpbGRSb3V0ZS5yb3V0ZUNvbmZpZy5jb21wb25lbnQsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGlkOiBVdGlsLnJhbmRvbU51bWJlcigpLnRvU3RyaW5nKCksXG4gICAgICBsYWJlbDogY29udGV4dD8ubGFiZWwgfHwgJycsXG4gICAgICBpbm5lckZvcm1zSW5mbzoge30sXG4gICAgICByZW5kZXJlZDogZmFsc2UsXG4gICAgICBpbnNlcnRpb25Nb2RlOiBjaGlsZFJvdXRlLnF1ZXJ5UGFyYW1zW0NvZGVzLklOU0VSVElPTl9NT0RFXSA9PT0gJ3RydWUnLFxuICAgICAgcmVuZGVyZXJTdWJqZWN0OiBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKVxuICAgIH07XG4gICAgLyoqIGxpc3RlbmluZyBmb3IgdGhlIGNvbXBvbmVudHMgdG8gYmUgcmVuZGVyZWQgdG8gZGV0ZXJtaW5lIHRoYXQgdGhlIGZvcm0tbGF5b3V0LW1hbmFnZXIgaXMgZmluaXNoZWQgbmF2aWdhdGluZy4gKi9cbiAgICBuZXdEZXRhaWxDb21wLnJlbmRlcmVyU3ViamVjdC5zdWJzY3JpYmUoKHJlbmRlcmVyOmJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChyZW5kZXJlcikge1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmlzTmF2aWdhdGluZyA9ICFyZW5kZXJlcjtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmlzRGlhbG9nTW9kZSgpKSB7XG4gICAgICB0aGlzLm9wZW5Gb3JtTGF5b3V0RGlhbG9nKG5ld0RldGFpbENvbXApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZikpIHtcbiAgICAgICAgY29tcFJlZi5vcGVuRGV0YWlsKG5ld0RldGFpbENvbXApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbG9zZURldGFpbChvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZikpIHtcbiAgICAgIGNvbXBSZWYuY2xvc2VEZXRhaWwob3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlRGV0YWlscyhkZXRhaWxzRGF0YTogYW55W10gPSBbXSwgb3B0aW9ucz86IEZvcm1MYXlvdXRDbG9zZURldGFpbE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1RhYk1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9UYWJHcm91cCkpIHtcbiAgICAgIHRoaXMub1RhYkdyb3VwLmNsb3NlRGV0YWlscyhkZXRhaWxzRGF0YSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW5Gb3JtTGF5b3V0RGlhbG9nKGRldGFpbENvbXA6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhKTogdm9pZCB7XG4gICAgY29uc3QgY3NzY2xhc3MgPSBbJ28tZm9ybS1sYXlvdXQtZGlhbG9nLW92ZXJsYXknXTtcbiAgICBpZiAodGhpcy5kaWFsb2dDbGFzcykge1xuICAgICAgY3NzY2xhc3MucHVzaCh0aGlzLmRpYWxvZ0NsYXNzKTtcbiAgICB9XG5cbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0gKHRoaXMuZGlhbG9nT3B0aW9ucyB8fCB7fSk7XG5cbiAgICBjb25zdCBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZyA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZGF0YTogZGV0YWlsQ29tcCxcbiAgICAgICAgbGF5b3V0TWFuYWdlckNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgdGl0bGU6ICh0aGlzLnRpdGxlIHx8IGRpYWxvZ09wdGlvbnMudGl0bGUpLFxuICAgICAgICBkaWFsb2dUaXRsZVNlcGFyYXRvcjogdGhpcy5kaWFsb2dUaXRsZVNlcGFyYXRvclxuICAgICAgfSxcbiAgICAgIHdpZHRoOiBkaWFsb2dPcHRpb25zLndpZHRoIHx8IHRoaXMuZGlhbG9nV2lkdGgsXG4gICAgICBtaW5XaWR0aDogZGlhbG9nT3B0aW9ucy5taW5XaWR0aCB8fCB0aGlzLmRpYWxvZ01pbldpZHRoLFxuICAgICAgbWF4V2lkdGg6IGRpYWxvZ09wdGlvbnMubWF4V2lkdGggfHwgdGhpcy5kaWFsb2dNYXhXaWR0aCxcbiAgICAgIGhlaWdodDogZGlhbG9nT3B0aW9ucy5oZWlnaHQgfHwgdGhpcy5kaWFsb2dIZWlnaHQsXG4gICAgICBtaW5IZWlnaHQ6IGRpYWxvZ09wdGlvbnMubWluSGVpZ2h0IHx8IHRoaXMuZGlhbG9nTWluSGVpZ2h0LFxuICAgICAgbWF4SGVpZ2h0OiBkaWFsb2dPcHRpb25zLm1heEhlaWdodCB8fCB0aGlzLmRpYWxvZ01heEhlaWdodCxcbiAgICAgIGRpc2FibGVDbG9zZTogZGlhbG9nT3B0aW9ucy5kaXNhYmxlQ2xvc2UgfHwgdHJ1ZSxcbiAgICAgIHBhbmVsQ2xhc3M6IGRpYWxvZ09wdGlvbnMuY2xhc3MgfHwgY3NzY2xhc3NcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuZGlhbG9nT3B0aW9ucykge1xuICAgICAgZGlhbG9nQ29uZmlnLmNsb3NlT25OYXZpZ2F0aW9uID0gdGhpcy5kaWFsb2dPcHRpb25zLmNsb3NlT25OYXZpZ2F0aW9uO1xuICAgICAgZGlhbG9nQ29uZmlnLmJhY2tkcm9wQ2xhc3MgPSB0aGlzLmRpYWxvZ09wdGlvbnMuYmFja2Ryb3BDbGFzcztcbiAgICAgIGRpYWxvZ0NvbmZpZy5wb3NpdGlvbiA9IHRoaXMuZGlhbG9nT3B0aW9ucy5wb3NpdGlvbjtcbiAgICAgIGRpYWxvZ0NvbmZpZy5kaXNhYmxlQ2xvc2UgPSB0aGlzLmRpYWxvZ09wdGlvbnMuZGlzYWJsZUNsb3NlO1xuICAgIH1cblxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcbiAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5tYXJrRm9yVXBkYXRlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlSWZOZWVkZWQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVsb2FkTWFpbkNvbXBvbmVudHMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlck9wZW5lZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBkZXRhaWxDb21wLnJlbmRlcmVkID0gdHJ1ZTtcbiAgICAgIGRldGFpbENvbXAucmVuZGVyZXJTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rm9ybUNhY2hlRGF0YSgpOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuZ2V0Rm9ybUNhY2hlRGF0YSgpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHNldE1vZGlmaWVkU3RhdGUoZm9ybUF0dHI6IHN0cmluZywgbW9kaWZpZWQ6IGJvb2xlYW4sIGNvbmZpcm1FeGl0OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgY29tcFJlZi5zZXRNb2RpZmllZFN0YXRlKGZvcm1BdHRyLCBtb2RpZmllZCwgY29uZmlybUV4aXQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRMYWJlbEZyb21EYXRhKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IGxhYmVsID0gJyc7XG4gICAgY29uc3QgaXNEYXRhRGVmaW5lZCA9IFV0aWwuaXNEZWZpbmVkKGRhdGEpO1xuICAgIGlmIChpc0RhdGFEZWZpbmVkICYmIGRhdGEuaGFzT3duUHJvcGVydHkoJ25ld190YWJfdGl0bGUnKSkge1xuICAgICAgbGFiZWwgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KGRhdGEubmV3X3RhYl90aXRsZSk7XG4gICAgfSBlbHNlIGlmIChpc0RhdGFEZWZpbmVkICYmIHRoaXMubGFiZWxDb2xzQXJyYXkubGVuZ3RoICE9PSAwKSB7XG4gICAgICB0aGlzLmxhYmVsQ29sc0FycmF5LmZvckVhY2goKGNvbCwgaWR4KSA9PiB7XG4gICAgICAgIGlmIChkYXRhW2NvbF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxhYmVsICs9IGRhdGFbY29sXSArICgoaWR4IDwgdGhpcy5sYWJlbENvbHNBcnJheS5sZW5ndGggLSAxKSA/IHRoaXMuc2VwYXJhdG9yIDogJycpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxhYmVsO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU5hdmlnYXRpb24oZGF0YTogYW55LCBrZXlzVmFsdWVzOiBhbnksIGluc2VydGlvbk1vZGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpKSB7XG4gICAgICBjb21wUmVmLnVwZGF0ZU5hdmlnYXRpb24oZGF0YSwga2V5c1ZhbHVlcywgaW5zZXJ0aW9uTW9kZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFjdGl2ZURhdGEoZGF0YTogYW55KSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgY29tcFJlZi51cGRhdGVBY3RpdmVEYXRhKGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZU9mQWN0aXZlSXRlbSgpOiBhbnlbXSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuZ2V0Um91dGVPZkFjdGl2ZUl0ZW0oKSA6IFtdO1xuICB9XG5cbiAgcHVibGljIGlzTWFpbkNvbXBvbmVudChjb21wOiBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmlzRGlhbG9nTW9kZSgpKSB7XG4gICAgICByZXR1cm4gIWNvbXAub0Zvcm1MYXlvdXREaWFsb2c7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZilcbiAgICAgICYmIChjb21wUmVmLmlzTWFpbkNvbXBvbmVudChjb21wKVxuICAgICAgICB8fCAoVXRpbC5pc0RlZmluZWQoY29tcC5wYXJlbnRDb21wb25lbnQpKSAmJiBjb21wUmVmLmlzTWFpbkNvbXBvbmVudChjb21wLnBhcmVudENvbXBvbmVudCkpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZUZvckNvbXBvbmVudChjb21wOiBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCk6IGFueVtdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAodGhpcy5wYXJlbnRGb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgY29uc3QgcGFyZW50Um91dGUgPSB0aGlzLnBhcmVudEZvcm1MYXlvdXRNYW5hZ2VyLmdldFJvdXRlRm9yQ29tcG9uZW50KGNvbXApO1xuICAgICAgaWYgKHBhcmVudFJvdXRlICYmIHBhcmVudFJvdXRlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4ucGFyZW50Um91dGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNNYWluQ29tcG9uZW50KGNvbXApKSB7XG4gICAgICBjb25zdCBhY3RpdmVSb3V0ZSA9IHRoaXMuZ2V0Um91dGVPZkFjdGl2ZUl0ZW0oKTtcblxuICAgICAgaWYgKGFjdGl2ZVJvdXRlICYmIGFjdGl2ZVJvdXRlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4uYWN0aXZlUm91dGUpO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBc0FjdGl2ZUZvcm1MYXlvdXRNYW5hZ2VyKCk6IHZvaWQge1xuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZS5hY3RpdmVGb3JtTGF5b3V0TWFuYWdlciA9IHRoaXM7XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkTWFpbkNvbXBvbmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5vblRyaWdnZXJVcGRhdGUuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIGFsbG93VG9VcGRhdGVOYXZpZ2F0aW9uKGZvcm1BdHRyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuaXNUYWJNb2RlKCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5vVGFiR3JvdXApICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMudGl0bGVEYXRhT3JpZ2luKSkgP1xuICAgICAgdGhpcy50aXRsZURhdGFPcmlnaW4gPT09IGZvcm1BdHRyIDpcbiAgICAgIHRydWU7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU3RhdGVTdG9yYWdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlIHx8ICF0aGlzLnN0b3JlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXNUYWJNb2RlID0gdGhpcy5pc1RhYk1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9UYWJHcm91cCk7XG4gICAgY29uc3QgaXNTcGxpdFBhbmVNb2RlID0gdGhpcy5pc1NwbGl0UGFuZU1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9TcGxpdFBhbmUpO1xuICAgIGlmIChpc1RhYk1vZGUgfHwgaXNTcGxpdFBhbmVNb2RlKSB7XG4gICAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UudXBkYXRlQ29tcG9uZW50U3RvcmFnZSh0aGlzLCB0aGlzLmdldFJvdXRlS2V5KCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFyZW50QWN0Um91dGVSb3V0ZSgpOiBSb3V0ZSB7XG4gICAgbGV0IGFjdFJvdXRlID0gdGhpcy5hY3RSb3V0ZTtcbiAgICB3aGlsZSAoYWN0Um91dGUucGFyZW50ICE9PSB1bmRlZmluZWQgJiYgYWN0Um91dGUucGFyZW50ICE9PSBudWxsKSB7XG4gICAgICBpZiAoYWN0Um91dGUucm91dGVDb25maWcuY2hpbGRyZW4gfHwgYWN0Um91dGUucm91dGVDb25maWcubG9hZENoaWxkcmVuKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYWN0Um91dGUgPSBhY3RSb3V0ZS5wYXJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBhY3RSb3V0ZS5yb3V0ZUNvbmZpZztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVJZk5lZWRlZCgpIHtcbiAgICBpZiAodGhpcy5tYXJrRm9yVXBkYXRlKSB7XG4gICAgICB0aGlzLm1hcmtGb3JVcGRhdGUgPSBmYWxzZTtcbiAgICAgIHRoaXMub25UcmlnZ2VyVXBkYXRlLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0UGFyYW1zKCk6IGFueSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuZ2V0UGFyYW1zKCkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBzZXQgbWFya0ZvclVwZGF0ZShhcmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tYXJrRm9yVXBkYXRlID0gYXJnO1xuICAgIGlmICh0aGlzLmlzU3BsaXRQYW5lTW9kZSgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZUlmTmVlZGVkKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG1hcmtGb3JVcGRhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtGb3JVcGRhdGU7XG4gIH1cblxuICBnZXQgaWdub3JlQ2FuRGVhY3RpdmF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNTcGxpdFBhbmVNb2RlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpOiBPRm9ybUxheW91dE1hbmFnZXJNb2RlIHtcbiAgICBsZXQgY29tcFJlZjtcbiAgICBpZiAodGhpcy5pc1RhYk1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9UYWJHcm91cCkpIHtcbiAgICAgIGNvbXBSZWYgPSB0aGlzLm9UYWJHcm91cDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNEaWFsb2dNb2RlKCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5kaWFsb2dSZWYpKSB7XG4gICAgICBjb21wUmVmID0gdGhpcy5kaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzU3BsaXRQYW5lTW9kZSgpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMub1NwbGl0UGFuZSkpIHtcbiAgICAgIGNvbXBSZWYgPSB0aGlzLm9TcGxpdFBhbmU7XG4gICAgfVxuICAgIHJldHVybiBjb21wUmVmO1xuICB9XG5cbiAgYWxsb3dOYXZpZ2F0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc1RhYk1vZGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5BZGREZXRhaWxDb21wb25lbnQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLndyYXBJbnRvT2JzZXJ2YWJsZShVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuY2FuQWRkRGV0YWlsQ29tcG9uZW50KCkgOiB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNUb0NvbmZpcm1FeGl0KGRhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhLCBvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChvcHRpb25zKSAmJiBvcHRpb25zLmV4aXRXaXRob3V0Q29uZmlybWF0aW9uKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1zQXR0ciA9IE9iamVjdC5rZXlzKGRhdGEuaW5uZXJGb3Jtc0luZm8pO1xuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpZiAoZm9ybXNBdHRyLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvcm1zQXR0ci5mb3JFYWNoKGZvcm1BdHRyID0+IHtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IGRhdGEuaW5uZXJGb3Jtc0luZm9bZm9ybUF0dHJdO1xuICAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhLmNvbmZpcm1PbkV4aXQgJiYgZm9ybURhdGEubW9kaWZpZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGdldElkT2ZBY3RpdmVJdGVtKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGAke3RoaXMub2F0dHJ9LSR7Y29tcFJlZi5nZXRJZE9mQWN0aXZlSXRlbSgpfS1gIDogJyc7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIm1vZGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlRBQl9NT0RFXCI+XG4gICAgPG8tZm9ybS1sYXlvdXQtdGFiZ3JvdXAgI3RhYkdyb3VwIFt0aXRsZV09XCJ0aXRsZVwiIChvbk1haW5UYWJTZWxlY3RlZCk9XCJvbk1haW5UYWJTZWxlY3RlZC5lbWl0KCRldmVudClcIlxuICAgICAgKG9uU2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25TZWxlY3RlZFRhYkNoYW5nZS5lbWl0KCRldmVudClcIiAob25DbG9zZVRhYik9XCJvbkNsb3NlVGFiLmVtaXQoJGV2ZW50KVwiXG4gICAgICBbb3B0aW9uc109XCJ0YWJHcm91cE9wdGlvbnNcIiBbc3RyZXRjaC10YWJzXT1cInN0cmV0Y2hUYWJzXCI+XG4gICAgICA8bmctY29udGVudCAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRCbG9ja1wiPjwvbmctY29udGVudD5cbiAgICA8L28tZm9ybS1sYXlvdXQtdGFiZ3JvdXA+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIk9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5TUExJVF9QQU5FX01PREVcIj5cbiAgICA8by1mb3JtLWxheW91dC1zcGxpdC1wYW5lICNzcGxpdFBhbmUgW29wdGlvbnNdPVwic3BsaXRQYW5lT3B0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRlbnQgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50QmxvY2tcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9vLWZvcm0tbGF5b3V0LXNwbGl0LXBhbmU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIk9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERVwiPlxuICAgIDxuZy1jb250ZW50ICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEJsb2NrXCI+PC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudEJsb2NrPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
558
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L28tZm9ybS1sYXlvdXQtbWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvbGF5b3V0cy9mb3JtLWxheW91dC9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUdSLFFBQVEsRUFDUixRQUFRLEVBRVIsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQWlDLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBaUMsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEYsT0FBTyxFQUFFLGVBQWUsRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFJekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFL0YsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDN0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDckYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFHNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7O0FBRW5FLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHO0lBQ2xELGFBQWE7SUFDYixNQUFNO0lBQ04seUJBQXlCO0lBSXpCLE9BQU87SUFDUCw2QkFBNkI7SUFDN0IsV0FBVztJQUlYLG9DQUFvQztJQUlwQywyQkFBMkI7SUFDM0Isa0NBQWtDO0lBQ2xDLGtDQUFrQztJQUNsQyw2QkFBNkI7SUFDN0Isb0NBQW9DO0lBQ3BDLG1DQUFtQztJQUNuQywyQkFBMkI7SUFDM0IsOENBQThDO0NBQy9DLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRztJQUNuRCxtQkFBbUI7SUFDbkIscUJBQXFCO0lBQ3JCLFlBQVk7Q0FDYixDQUFDO0FBaUJGLE1BQU0sT0FBTywyQkFBMkI7SUFjdEMsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFXLElBQUksQ0FBQyxLQUFhO1FBQzNCLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLENBQUMsUUFBUSxFQUFFLDJCQUEyQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pKLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekMsSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2xELElBQUksQ0FBQyxLQUFLLEdBQUcsMkJBQTJCLENBQUMsV0FBVyxDQUFDO1NBQ3REO0lBQ0gsQ0FBQztJQU9ELElBQUksU0FBUyxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBdUNELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBS0QsSUFBSSxZQUFZLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUlELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksY0FBYyxDQUFDLEtBQWU7UUFDaEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQVFELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBVTtRQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUlELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBVTtRQUN6QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztTQUM5RDtRQUNELElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNyQztRQUNELElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1lBQ2hELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztTQUMzRDtJQUNILENBQUM7SUFJRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBVTtRQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBYUQsWUFDWSxRQUFrQixFQUNsQixNQUFjLEVBQ2QsUUFBd0IsRUFDeEIsTUFBaUIsRUFDakIsS0FBaUIsRUFFcEIsdUJBQStDO1FBTjVDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUVwQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXdCO1FBckt4RCxnQ0FBMkIsR0FBRywyQkFBMkIsQ0FBQztRQVFuRCxVQUFLLEdBQVcsMkJBQTJCLENBQUMsV0FBVyxDQUFDO1FBQ3hELGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBY2pCLGVBQVUsR0FBVyxHQUFHLENBQUM7UUFtQjVCLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFnQjNCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLHlCQUFvQixHQUFHLEdBQUcsQ0FBQztRQVEzQixzQkFBaUIsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMvRCx3QkFBbUIsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNqRSxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFnQnJELG9CQUFlLEdBQWEsRUFBRSxDQUFDO1FBYy9CLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztRQW1CM0IsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFtQnpCLHNCQUFpQixHQUFRLEVBQUUsQ0FBQztRQVU1QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUloQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxvQkFBZSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTFELGlCQUFZLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFheEQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUEwQyw2QkFBOEUsQ0FBQyxDQUFDO1FBQ3hLLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDM0UsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNMO1FBQ0QsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFFakMsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixJQUFJO1lBQ0YsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDekQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFDakM7YUFDRjtZQUFBLENBQUM7U0FFSDtRQUFDLE9BQU8sS0FBSyxFQUFFO1NBRWY7SUFDSCxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDNUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0QsSUFBSSxDQUFDLHlCQUF5QixDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9ELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUVNLGVBQWU7UUFDcEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDbkQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLHlCQUF5QixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRU0sZUFBZTtRQUNwQixPQUFPLDhCQUE4QixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDckQsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNoQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGNBQWM7UUFDbkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBR00sbUJBQW1CO1FBQ3hCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxTQUFpQjtRQUM1QyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDeEIsS0FBSyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sMkJBQTJCLENBQUMsSUFBUztRQUMxQyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDdkMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN2QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVNLHFCQUFxQjtRQUMxQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNsRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDL0IsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNuRSxJQUFJLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDNUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNoRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO2dCQUN0RSxlQUFlLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3hFLElBQUksZUFBZSxFQUFFO29CQUNuQixNQUFNO2lCQUNQO2FBQ0Y7WUFDRCxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDeEIscUJBQXFCLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUM7Z0JBQzVELFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQzthQUN0RDtTQUNGO0lBQ0gsQ0FBQztJQUVNLHlCQUF5QjtRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMseUJBQXlCLENBQUMsdUJBQXVCLEdBQUcsU0FBUyxDQUFDO1FBQ25FLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDaEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDbEQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQy9CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN6RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVLENBQUMsV0FBVyxFQUFFO29CQUM5RCxXQUFXLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDMUMsTUFBTTtpQkFDUDthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssMkJBQTJCLENBQUMsV0FBVyxDQUFDO0lBQy9ELENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLDJCQUEyQixDQUFDLFFBQVEsQ0FBQztJQUM1RCxDQUFDO0lBRU0sZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssMkJBQTJCLENBQUMsZUFBZSxDQUFDO0lBQ25FLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxVQUFrQyxFQUFFLEdBQVcsRUFBRSxPQUFtQztRQUM1RyxVQUFVLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sYUFBYSxHQUFrQztZQUNuRCxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07WUFDekIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXO1lBQ25DLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRztZQUMzQixTQUFTLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxTQUFTO1lBQzNDLEdBQUcsRUFBRSxHQUFHO1lBQ1IsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLEVBQUU7WUFDbEMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLElBQUksRUFBRTtZQUMzQixjQUFjLEVBQUUsRUFBRTtZQUNsQixRQUFRLEVBQUUsS0FBSztZQUNmLGFBQWEsRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxNQUFNO1lBQ3RFLGVBQWUsRUFBRSxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUM7U0FDNUMsQ0FBQztRQUVGLGFBQWEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxFQUFFO1lBQzNELElBQUksUUFBUSxFQUFFO2dCQUNaLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxRQUFRLENBQUM7YUFDakQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0wsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDOUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUMzQixPQUFPLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ25DO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNDO1FBQ3ZELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzQixPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVNLFlBQVksQ0FBQyxjQUFxQixFQUFFLEVBQUUsT0FBc0M7UUFDakYsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVNLG9CQUFvQixDQUFDLFVBQXlDO1FBQ25FLE1BQU0sUUFBUSxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUNsRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDakM7UUFFRCxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUM7UUFFakQsTUFBTSxZQUFZLEdBQW9CO1lBQ3BDLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsVUFBVTtnQkFDaEIsc0JBQXNCLEVBQUUsSUFBSTtnQkFDNUIsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDO2dCQUMxQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsb0JBQW9CO2FBQ2hEO1lBQ0QsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVc7WUFDOUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWM7WUFDdkQsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWM7WUFDdkQsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVk7WUFDakQsU0FBUyxFQUFFLGFBQWEsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGVBQWU7WUFDMUQsU0FBUyxFQUFFLGFBQWEsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGVBQWU7WUFDMUQsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUFZLElBQUksSUFBSTtZQUNoRCxVQUFVLEVBQUUsYUFBYSxDQUFDLEtBQUssSUFBSSxRQUFRO1NBQzVDLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsWUFBWSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUM7WUFDdEUsWUFBWSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztZQUM5RCxZQUFZLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1lBQ3BELFlBQVksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7U0FDN0Q7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMxQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUN2QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUM3QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzFDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQzNCLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDMUUsQ0FBQztJQUVNLGdCQUFnQixDQUFDLFFBQWdCLEVBQUUsUUFBaUIsRUFBRSxXQUFvQjtRQUMvRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDM0IsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDM0Q7SUFDSCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsSUFBUztRQUMvQixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDZixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDekQsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3ZEO2FBQU0sSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzVELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUN2QyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLEVBQUU7b0JBQzNCLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3JGO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGdCQUFnQixDQUFDLElBQVMsRUFBRSxVQUFlLEVBQUUsYUFBc0I7UUFDeEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQztJQUVNLGdCQUFnQixDQUFDLElBQVM7UUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFTSxvQkFBb0I7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3ZFLENBQUM7SUFFTSxlQUFlLENBQUMsSUFBNkI7UUFDbEQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztTQUNoQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztlQUMxQixDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO21CQUM1QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxJQUE2QjtRQUN2RCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVFLElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUM7YUFDN0I7U0FDRjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9CLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBRWhELElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUM7YUFDN0I7U0FFRjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSw0QkFBNEI7UUFDakMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztJQUNoRSxDQUFDO0lBRU0sb0JBQW9CO1FBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLHVCQUF1QixDQUFDLFFBQWdCO1FBQzdDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25HLElBQUksQ0FBQyxlQUFlLEtBQUssUUFBUSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDO0lBQ1QsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqRCxPQUFPO1NBQ1I7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckUsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xGLElBQUksU0FBUyxJQUFJLGVBQWUsRUFBRTtZQUNoQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQzNFO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdCLE9BQU8sUUFBUSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDaEUsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRTtnQkFDdEUsTUFBTTthQUNQO1lBQ0QsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7U0FDNUI7UUFDRCxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDOUIsQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRU0sU0FBUztRQUNkLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQUksYUFBYSxDQUFDLEdBQVk7UUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRVMsc0JBQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDO1FBQ1osSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDdEQsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDMUI7YUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNoRSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztTQUM1QzthQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3BFLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxxQkFBcUI7UUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxJQUFtQyxFQUFFLE9BQXNDO1FBQ2pHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsdUJBQXVCLEVBQUU7WUFDOUQsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ25ELElBQUksTUFBTSxHQUFZLEtBQUssQ0FBQztRQUM1QixJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQ1gsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDL0MsTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQztpQkFDdEQ7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEYsQ0FBQzs7QUFsbEJhLHVDQUFXLEdBQUcsUUFBUSxDQUFDO0FBQ3ZCLG9DQUFRLEdBQUcsS0FBSyxDQUFDO0FBQ2pCLDJDQUFlLEdBQUcsWUFBWSxDQUFDO3dIQVJsQywyQkFBMkI7NEdBQTNCLDJCQUEyQiwwK0JBVDNCO1FBQ1QsNkJBQTZCO1FBQzdCLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFFBQVEsRUFBRSx1Q0FBdUMsRUFBRTtRQUN6RixFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUU7S0FDOUUsMk5DcEZILHloQ0F1QmM7QUQ4R1o7SUFBQyxxQkFBcUIsRUFBRTs7K0RBQ1U7MkZBN0N2QiwyQkFBMkI7a0JBZnZDLFNBQVM7K0JBQ0UsdUJBQXVCLFVBQ3pCLG9DQUFvQyxXQUNuQyxxQ0FBcUMsYUFHbkM7d0JBQ1QsNkJBQTZCO3dCQUM3QixFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxRQUFRLEVBQUUsdUNBQXVDLEVBQUU7d0JBQ3pGLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFdBQVcsNkJBQTZCLEVBQUU7cUJBQzlFLFFBQ0s7d0JBQ0osK0JBQStCLEVBQUUsTUFBTTtxQkFDeEM7OzBCQXlLRSxRQUFROzswQkFBSSxRQUFROzRDQTFIaEIsVUFBVSxNQW9CVixTQUFTO3NCQURmLFNBQVM7dUJBQUMsVUFBVTtnQkFJZCxVQUFVO3NCQURoQixTQUFTO3VCQUFDLFdBQVc7Z0JBNExmLG1CQUFtQjtzQkFEekIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2tpcFNlbGYsXG4gIFR5cGUsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgSUxheW91dE1hbmFnZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2xheW91dC1tYW5hZ2VyLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUxvY2FsU3RvcmFnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbG9jYWwtc3RvcmFnZS1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlck1vZGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL28tZm9ybS1sYXlvdXQtbWFuYWdlci1tb2RlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZhY3Rvcmllcyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVDbGFzcyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tZm9ybS1sYXlvdXQtbWFuYWdlci1jb21wb25lbnQtc3RhdGUuY2xhc3MnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdGUvby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbXBvbmVudC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlL28tdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucywgRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEgfSBmcm9tICcuLi8uLi90eXBlcy9mb3JtLWxheW91dC1kZXRhaWwtY29tcG9uZW50LWRhdGEudHlwZSc7XG5pbXBvcnQgeyBPX0dMT0JBTF9DT05GSUcgfSBmcm9tICcuLi8uLi90eXBlcy9vLWdsb2JhbC1jb25maWcudHlwZSc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZGlhbG9nL28tZm9ybS1sYXlvdXQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZUZvcm1MYXlvdXRDaGlsZEd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvby1mb3JtLWxheW91dC1jYW4tYWN0aXZhdGUtY2hpbGQuZ3VhcmQnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSB9IGZyb20gJy4vby1mb3JtLWxheW91dC1tYW5hZ2VyLWJhc2UuY2xhc3MnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29udGV4dCB9IGZyb20gJy4uLy4uL3R5cGVzL2Zvcm0tbGF5b3V0LW1hbmFnZXItY29udGV4dC50eXBlJztcbmltcG9ydCB7IElPRm9ybUxheW91dE1hbmFnZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Zvcm0tbGF5b3V0LW1hbmFnZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9fQ09NUE9ORU5UX1NUQVRFX1NFUlZJQ0UgfSBmcm9tICcuLi8uLi9pbmplY3Rpb24tdG9rZW5zJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fRk9STV9MQVlPVVRfTUFOQUdFUiA9IFtcbiAgJ29hdHRyOiBhdHRyJyxcbiAgJ21vZGUnLFxuICAnc3RvcmVTdGF0ZTogc3RvcmUtc3RhdGUnLFxuXG4gIC8vIENvbW1vbiBmb3IgZGlhbG9nIGFuZCB0YWIgbW9kZVxuICAvLyBkZXByZWNhdGVkLCBvbmx5IG1hbnRhaW5lZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgJ3RpdGxlJyxcbiAgJ2xhYmVsQ29sdW1uczogbGFiZWwtY29sdW1ucycsXG4gICdzZXBhcmF0b3InLFxuXG4gIC8vIGF0dHIgb2YgdGhlIGNoaWxkIGZvcm0gZnJvbSB3aGljaCB0aGUgZGF0YSBmb3IgYnVpbGRpbmcgdGhlIHRhYiB0aXRsZSB3aWxsIGJlIG9idGFpbmVkIChvbmx5IGluIHRhYiBtb2RlKVxuICAvLyBkZXByZWNhdGVkLCBvbmx5IG1hbnRhaW5lZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgJ3RpdGxlRGF0YU9yaWdpbjogdGl0bGUtZGF0YS1vcmlnaW4nLFxuXG4gIC8vIE9ubHkgZGlhbG9nIG9wdGlvbnMgY29uZmlndXJhYmxlIGFzIGFuIGlucHV0IG9mIHRoZSBvLWZvcm0tbGF5b3V0LW1hbmFnZXIgKHVzZSB0aGUgby1mb3JtLWxheW91dC1kaWFsb2ctb3B0aW9ucyBkaXJlY3RpdmUpXG4gIC8vIGRlcHJlY2F0ZWQsIG9ubHkgbWFudGFpbmVkIGZvciBsZWdhY3kgcmVhc29uc1xuICAnZGlhbG9nV2lkdGg6IGRpYWxvZy13aWR0aCcsXG4gICdkaWFsb2dNaW5XaWR0aDogZGlhbG9nLW1pbi13aWR0aCcsXG4gICdkaWFsb2dNYXhXaWR0aDogZGlhbG9nLW1heC13aWR0aCcsXG4gICdkaWFsb2dIZWlnaHQ6IGRpYWxvZy1oZWlnaHQnLFxuICAnZGlhbG9nTWluSGVpZ2h0OiBkaWFsb2ctbWluLWhlaWdodCcsXG4gICdkaWFsb2dNYXhIZWlnaHQgZGlhbG9nLW1heC1oZWlnaHQnLFxuICAnZGlhbG9nQ2xhc3M6IGRpYWxvZy1jbGFzcycsXG4gICdkaWFsb2dUaXRsZVNlcGFyYXRvcjogZGlhbG9nLXRpdGxlLXNlcGFyYXRvcidcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19GT1JNX0xBWU9VVF9NQU5BR0VSID0gW1xuICAnb25NYWluVGFiU2VsZWN0ZWQnLFxuICAnb25TZWxlY3RlZFRhYkNoYW5nZScsXG4gICdvbkNsb3NlVGFiJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby1mb3JtLWxheW91dC1tYW5hZ2VyJyxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX0ZPUk1fTEFZT1VUX01BTkFHRVIsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX0ZPUk1fTEFZT1VUX01BTkFHRVIsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQ29tcG9uZW50U3RhdGVTZXJ2aWNlUHJvdmlkZXIsXG4gICAgeyBwcm92aWRlOiBPX0NPTVBPTkVOVF9TVEFURV9TRVJWSUNFLCB1c2VDbGFzczogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlIH0sXG4gICAgeyBwcm92aWRlOiBPRm9ybUxheW91dE1hbmFnZXJCYXNlLCB1c2VFeGlzdGluZzogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50IH1cbiAgXSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1mb3JtLWxheW91dC1tYW5hZ2VyXSc6ICd0cnVlJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95LCBJTG9jYWxTdG9yYWdlQ29tcG9uZW50LElPRm9ybUxheW91dE1hbmFnZXIge1xuXG4gIC8vIGRlY2xhcmluZyB0aGlzIHByb3BlcnR5IHRvIGhhdmUgYWNjZXMgdG8gc3RhdGljIG1lbWJlcnMgaW4gdGhlIHRlbXBsYXRlXG4gIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCA9IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudDtcblxuXG4gIHB1YmxpYyBzdGF0aWMgRElBTE9HX01PREUgPSAnZGlhbG9nJztcbiAgcHVibGljIHN0YXRpYyBUQUJfTU9ERSA9ICd0YWInO1xuICBwdWJsaWMgc3RhdGljIFNQTElUX1BBTkVfTU9ERSA9ICdzcGxpdC1wYW5lJztcblxuICBwdWJsaWMgb2F0dHI6IHN0cmluZztcbiAgcHVibGljIF9tb2RlOiBzdHJpbmcgPSBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuRElBTE9HX01PREU7XG4gIHB1YmxpYyBzdHJldGNoVGFicyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBnZXQgbW9kZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9tb2RlO1xuICB9XG5cbiAgcHVibGljIHNldCBtb2RlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhdmFpbGFibGVNb2RlVmFsdWVzID0gW09Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERSwgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlRBQl9NT0RFLCBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuU1BMSVRfUEFORV9NT0RFXTtcbiAgICB0aGlzLl9tb2RlID0gKHZhbHVlIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChhdmFpbGFibGVNb2RlVmFsdWVzLmluZGV4T2YodGhpcy5fbW9kZSkgPT09IC0xKSB7XG4gICAgICB0aGlzLl9tb2RlID0gT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LkRJQUxPR19NT0RFO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfc2VwYXJhdG9yOiBzdHJpbmcgPSAnICc7XG5cbiAgLyoqXG4gICogQGRlcHJlY2F0ZWQgdXNlciBzaG91bGQgdXNlIHRoZSBvcHRpb25zIGlucHV0XG4gICovXG4gIHNldCBzZXBhcmF0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3NlcGFyYXRvciA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHNlcGFyYXRvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXBhcmF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlciBzaG91bGQgdXNlIHRoZSBvcHRpb25zIGlucHV0XG4gICAqL1xuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIHN0b3JlU3RhdGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAqIEBkZXByZWNhdGVkIHVzZXIgc2hvdWxkIHVzZSB0aGUgb3B0aW9ucyBpbnB1dFxuICAqL1xuICBwdWJsaWMgdGl0bGVEYXRhT3JpZ2luOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoZSBuZXh0IGlucHV0cyBhcmUgZGVwcmVjYXRlZCBhbmQgdXNlciBzaG91bGQgdXNlIHRoZSBPRm9ybUxheW91dERpYWxvZ09wdGlvbnNEaXJlY3RpdmUgaW5wdXRzXG4gICAqL1xuICBwdWJsaWMgZGlhbG9nV2lkdGg6IHN0cmluZztcbiAgcHVibGljIGRpYWxvZ01pbldpZHRoOiBzdHJpbmc7XG4gIHB1YmxpYyBkaWFsb2dNYXhXaWR0aDogc3RyaW5nO1xuICBwdWJsaWMgZGlhbG9nSGVpZ2h0OiBzdHJpbmc7XG4gIHB1YmxpYyBkaWFsb2dNaW5IZWlnaHQ6IHN0cmluZztcbiAgcHVibGljIGRpYWxvZ01heEhlaWdodDogc3RyaW5nO1xuICBwdWJsaWMgZGlhbG9nQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgZGlhbG9nVGl0bGVTZXBhcmF0b3IgPSAnOic7XG5cbiAgQFZpZXdDaGlsZCgndGFiR3JvdXAnKVxuICBwdWJsaWMgb1RhYkdyb3VwOiBPRm9ybUxheW91dE1hbmFnZXJNb2RlO1xuICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8T0Zvcm1MYXlvdXREaWFsb2dDb21wb25lbnQ+O1xuICBAVmlld0NoaWxkKCdzcGxpdFBhbmUnKVxuICBwdWJsaWMgb1NwbGl0UGFuZTogT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZTtcblxuICBwdWJsaWMgb25NYWluVGFiU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBvblNlbGVjdGVkVGFiQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25DbG9zZVRhYjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcm90ZWN0ZWQgX2xhYmVsQ29sdW1uczogc3RyaW5nO1xuXG4gIGdldCBsYWJlbENvbHVtbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxDb2x1bW5zO1xuICB9XG5cbiAgLyoqXG4gICogQGRlcHJlY2F0ZWQgdXNlciBzaG91bGQgdXNlIHRoZSBvcHRpb25zIGlucHV0XG4gICovXG4gIHNldCBsYWJlbENvbHVtbnModmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2xhYmVsQ29sdW1ucyA9IHZhbHVlO1xuICAgIHRoaXMuX2xhYmVsQ29sc0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfbGFiZWxDb2xzQXJyYXk6IHN0cmluZ1tdID0gW107XG5cbiAgZ2V0IGxhYmVsQ29sc0FycmF5KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxDb2xzQXJyYXk7XG4gIH1cblxuICBzZXQgbGFiZWxDb2xzQXJyYXkodmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fbGFiZWxDb2xzQXJyYXkgPSB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBPVHJhbnNsYXRlU2VydmljZTtcbiAgcHJvdGVjdGVkIG9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2U6IE9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2U7XG4gIHByb3RlY3RlZCBsb2NhbFN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlO1xuXG4gIHByb3RlY3RlZCBfdGFiR3JvdXBPcHRpb25zOiBhbnkgPSB7fTtcblxuICBnZXQgdGFiR3JvdXBPcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYkdyb3VwT3B0aW9ucztcbiAgfVxuXG4gIGFkZFRhYkdyb3VwT3B0aW9ucyh2YWx1ZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl90YWJHcm91cE9wdGlvbnMsIHZhbHVlKTtcbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ2xhYmVsQ29sdW1ucycpKSB7XG4gICAgICB0aGlzLmxhYmVsQ29sc0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHZhbHVlWydsYWJlbENvbHVtbnMnXSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnc2VwYXJhdG9yJykpIHtcbiAgICAgIHRoaXMuc2VwYXJhdG9yID0gdmFsdWVbJ3NlcGFyYXRvciddO1xuICAgIH1cbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ3N0cmV0Y2hUYWJzJykpIHtcbiAgICAgIHRoaXMuc3RyZXRjaFRhYnMgPSB2YWx1ZVsnc3RyZXRjaFRhYnMnXTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX2RpYWxvZ09wdGlvbnM6IGFueSA9IHt9O1xuXG4gIGdldCBkaWFsb2dPcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2RpYWxvZ09wdGlvbnM7XG4gIH1cblxuICBhZGREaWFsb2dPcHRpb25zKHZhbHVlOiBhbnkpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuX2RpYWxvZ09wdGlvbnMsIHZhbHVlKTtcbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ2xhYmVsQ29sdW1ucycpKSB7XG4gICAgICB0aGlzLmxhYmVsQ29sc0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHZhbHVlWydsYWJlbENvbHVtbnMnXSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnc2VwYXJhdG9yJykpIHtcbiAgICAgIHRoaXMuc2VwYXJhdG9yID0gdmFsdWVbJ3NlcGFyYXRvciddO1xuICAgIH1cbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ2RpYWxvZ1RpdGxlU2VwYXJhdG9yJykpIHtcbiAgICAgIHRoaXMuZGlhbG9nVGl0bGVTZXBhcmF0b3IgPSB2YWx1ZVsnZGlhbG9nVGl0bGVTZXBhcmF0b3InXTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NwbGl0UGFuZU9wdGlvbnM6IGFueSA9IHt9O1xuXG4gIGdldCBzcGxpdFBhbmVPcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3NwbGl0UGFuZU9wdGlvbnM7XG4gIH1cblxuICBhZGRTcGxpdFBhbmVPcHRpb25zKHZhbHVlOiBhbnkpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuX3NwbGl0UGFuZU9wdGlvbnMsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGRpbmdHdWFyZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2U7XG5cbiAgcHVibGljIF9tYXJrRm9yVXBkYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBvblRyaWdnZXJVcGRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByb3RlY3RlZCBjb21wb25lbnRTdGF0ZVNlcnZpY2U6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlU2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgYWN0Um91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByb3RlY3RlZCBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcm90ZWN0ZWQgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgQFNraXBTZWxmKCkgQE9wdGlvbmFsKClcbiAgICBwdWJsaWMgcGFyZW50Rm9ybUxheW91dE1hbmFnZXI6IE9Gb3JtTGF5b3V0TWFuYWdlckJhc2VcbiAgKSB7XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZSk7XG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTG9jYWxTdG9yYWdlU2VydmljZSk7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT1RyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChOYXZpZ2F0aW9uU2VydmljZSk7XG4gICAgdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZVNlcnZpY2U+KEFic3RyYWN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlIGFzIFR5cGU8T0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlPik7XG4gICAgaWYgKHRoaXMuc3RvcmVTdGF0ZSkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5vblJvdXRlQ2hhbmdlLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlU3RvcmFnZSgpO1xuICAgICAgfSkpO1xuICAgIH1cbiAgICB0aGlzLmdldEluamVjdGlvblRva2VuQ29uZmlnKCk7XG5cbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5qZWN0aW9uVG9rZW5Db25maWcoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG9HbG9iYWxDb25maWcgPSB0aGlzLmluamVjdG9yLmdldChPX0dMT0JBTF9DT05GSUcpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKG9HbG9iYWxDb25maWcuc3RvcmVTdGF0ZSkpIHtcbiAgICAgICAgdGhpcy5zdG9yZVN0YXRlID0gb0dsb2JhbENvbmZpZy5zdG9yZVN0YXRlO1xuICAgICAgICBpZiAoIXRoaXMuc3RvcmVTdGF0ZSkge1xuICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gRG8gbm90aGluZyBiZWNhdXNlIGlzIG9wdGlvbmFsXG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlQ2xhc3Mge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFN0YXRlU2VydmljZS5zdGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEFjdGl2YXRlQ2hpbGRHdWFyZCgpO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5vYXR0cikpIHtcbiAgICAgIHRoaXMub2F0dHIgPSAodGhpcy50aXRsZSB8fCAnJykgKyB0aGlzLm1vZGU7XG4gICAgICBjb25zb2xlLndhcm4oJ28tZm9ybS1sYXlvdXQtbWFuYWdlciBtdXN0IGhhdmUgYW4gdW5pcXVlIGF0dHInKTtcbiAgICB9XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLnJlZ2lzdGVyRm9ybUxheW91dE1hbmFnZXIodGhpcyk7XG4gICAgaWYgKHRoaXMuc3RvcmVTdGF0ZSkge1xuICAgICAgdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2UuaW5pdGlhbGl6ZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZWxSZWYpIHtcbiAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgndGl0bGUnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZS5yZW1vdmVGb3JtTGF5b3V0TWFuYWdlcih0aGlzKTtcbiAgICB0aGlzLmRlc3Ryb3lBY3RpdmF0ZUNoaWxkR3VhcmQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBdHRyaWJ1dGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vYXR0cjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb21wb25lbnRLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ09Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudF8nICsgdGhpcy5vYXR0cjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZUtleSgpOiBzdHJpbmcge1xuICAgIGxldCByb3V0ZSA9IHRoaXMucm91dGVyLnVybDtcbiAgICB0aGlzLmFjdFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICByb3V0ZSA9IHJvdXRlLnJlcGxhY2UocGFyYW1zW2tleV0sIGtleSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gcm91dGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YVRvU3RvcmUoKTogYW55IHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpID8gY29tcFJlZi5nZXREYXRhVG9TdG9yZSgpIDoge307XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJywgW10pXG4gIHB1YmxpYyBiZWZvcmV1bmxvYWRIYW5kbGVyKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlU3RhdGVTdG9yYWdlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFiZWxGcm9tVXJsUGFyYW1zKHVybFBhcmFtczogb2JqZWN0KTogc3RyaW5nIHtcbiAgICBsZXQgbGFiZWwgPSAnJztcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModXJsUGFyYW1zKTtcbiAgICBrZXlzLmZvckVhY2goKHBhcmFtLCBpKSA9PiB7XG4gICAgICBsYWJlbCArPSB1cmxQYXJhbXNbcGFyYW1dICsgKChpIDwga2V5cy5sZW5ndGggLSAxKSA/IHRoaXMuc2VwYXJhdG9yIDogJycpO1xuICAgIH0pO1xuICAgIHJldHVybiBsYWJlbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtRGF0YUZyb21MYWJlbENvbHVtbnMoZGF0YTogYW55KSB7XG4gICAgY29uc3QgZm9ybURhdGEgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKHggPT4ge1xuICAgICAgaWYgKHRoaXMubGFiZWxDb2xzQXJyYXkuaW5kZXhPZih4KSA+IC0xKSB7XG4gICAgICAgIGZvcm1EYXRhW3hdID0gZGF0YVt4XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZm9ybURhdGE7XG4gIH1cblxuICBwdWJsaWMgYWRkQWN0aXZhdGVDaGlsZEd1YXJkKCk6IHZvaWQge1xuICAgIGNvbnN0IHJvdXRlQ29uZmlnID0gdGhpcy5nZXRQYXJlbnRBY3RSb3V0ZVJvdXRlKCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJvdXRlQ29uZmlnKSkge1xuICAgICAgY29uc3QgY2FuQWN0aXZhdGVDaGlsZEFycmF5ID0gKHJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlQ2hpbGQgfHwgW10pO1xuICAgICAgbGV0IHByZXZpb3VzbHlBZGRlZCA9IGZhbHNlO1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGNhbkFjdGl2YXRlQ2hpbGRBcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBjb25zdCBndWFyZENoaWxkID0gdGhpcy5pbmplY3Rvci5nZXQoQ2FuQWN0aXZhdGVGb3JtTGF5b3V0Q2hpbGRHdWFyZCk7XG4gICAgICAgIHByZXZpb3VzbHlBZGRlZCA9IChjYW5BY3RpdmF0ZUNoaWxkQXJyYXlbaV0gPT09IGd1YXJkQ2hpbGQuY29uc3RydWN0b3IpO1xuICAgICAgICBpZiAocHJldmlvdXNseUFkZGVkKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghcHJldmlvdXNseUFkZGVkKSB7XG4gICAgICAgIHRoaXMuYWRkaW5nR3VhcmQgPSB0cnVlO1xuICAgICAgICBjYW5BY3RpdmF0ZUNoaWxkQXJyYXkucHVzaChDYW5BY3RpdmF0ZUZvcm1MYXlvdXRDaGlsZEd1YXJkKTtcbiAgICAgICAgcm91dGVDb25maWcuY2FuQWN0aXZhdGVDaGlsZCA9IGNhbkFjdGl2YXRlQ2hpbGRBcnJheTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveUFjdGl2YXRlQ2hpbGRHdWFyZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWRkaW5nR3VhcmQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLmFjdGl2ZUZvcm1MYXlvdXRNYW5hZ2VyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZS5jb250ZXh0ID0gdm9pZCAwO1xuICAgIGNvbnN0IHJvdXRlQ29uZmlnID0gdGhpcy5nZXRQYXJlbnRBY3RSb3V0ZVJvdXRlKCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJvdXRlQ29uZmlnKSkge1xuICAgICAgZm9yIChsZXQgaSA9IChyb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkIHx8IFtdKS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBndWFyZENoaWxkID0gdGhpcy5pbmplY3Rvci5nZXQoQ2FuQWN0aXZhdGVGb3JtTGF5b3V0Q2hpbGRHdWFyZCk7XG4gICAgICAgIGlmIChyb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkW2ldID09PSBndWFyZENoaWxkLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgcm91dGVDb25maWcuY2FuQWN0aXZhdGVDaGlsZC5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNEaWFsb2dNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERTtcbiAgfVxuXG4gIHB1YmxpYyBpc1RhYk1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlRBQl9NT0RFO1xuICB9XG5cbiAgcHVibGljIGlzU3BsaXRQYW5lTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuU1BMSVRfUEFORV9NT0RFO1xuICB9XG5cbiAgcHVibGljIGFkZERldGFpbENvbXBvbmVudChjaGlsZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCB1cmw6IHN0cmluZywgY29udGV4dD86IE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRleHQpOiB2b2lkIHtcbiAgICBjaGlsZFJvdXRlID0gVXRpbC5nZXRMYXN0QWN0aXZhdGVSb3V0ZShjaGlsZFJvdXRlKTtcbiAgICBjb25zdCBuZXdEZXRhaWxDb21wOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSA9IHtcbiAgICAgIHBhcmFtczogY2hpbGRSb3V0ZS5wYXJhbXMsXG4gICAgICBxdWVyeVBhcmFtczogY2hpbGRSb3V0ZS5xdWVyeVBhcmFtcyxcbiAgICAgIHVybFNlZ21lbnRzOiBjaGlsZFJvdXRlLnVybCxcbiAgICAgIGNvbXBvbmVudDogY2hpbGRSb3V0ZS5yb3V0ZUNvbmZpZy5jb21wb25lbnQsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGlkOiBVdGlsLnJhbmRvbU51bWJlcigpLnRvU3RyaW5nKCksXG4gICAgICBsYWJlbDogY29udGV4dD8ubGFiZWwgfHwgJycsXG4gICAgICBpbm5lckZvcm1zSW5mbzoge30sXG4gICAgICByZW5kZXJlZDogZmFsc2UsXG4gICAgICBpbnNlcnRpb25Nb2RlOiBjaGlsZFJvdXRlLnF1ZXJ5UGFyYW1zW0NvZGVzLklOU0VSVElPTl9NT0RFXSA9PT0gJ3RydWUnLFxuICAgICAgcmVuZGVyZXJTdWJqZWN0OiBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKVxuICAgIH07XG4gICAgLyoqIGxpc3RlbmluZyBmb3IgdGhlIGNvbXBvbmVudHMgdG8gYmUgcmVuZGVyZWQgdG8gZGV0ZXJtaW5lIHRoYXQgdGhlIGZvcm0tbGF5b3V0LW1hbmFnZXIgaXMgZmluaXNoZWQgbmF2aWdhdGluZy4gKi9cbiAgICBuZXdEZXRhaWxDb21wLnJlbmRlcmVyU3ViamVjdC5zdWJzY3JpYmUoKHJlbmRlcmVyOmJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChyZW5kZXJlcikge1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmlzTmF2aWdhdGluZyA9ICFyZW5kZXJlcjtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmlzRGlhbG9nTW9kZSgpKSB7XG4gICAgICB0aGlzLm9wZW5Gb3JtTGF5b3V0RGlhbG9nKG5ld0RldGFpbENvbXApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZikpIHtcbiAgICAgICAgY29tcFJlZi5vcGVuRGV0YWlsKG5ld0RldGFpbENvbXApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbG9zZURldGFpbChvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZikpIHtcbiAgICAgIGNvbXBSZWYuY2xvc2VEZXRhaWwob3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlRGV0YWlscyhkZXRhaWxzRGF0YTogYW55W10gPSBbXSwgb3B0aW9ucz86IEZvcm1MYXlvdXRDbG9zZURldGFpbE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1RhYk1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9UYWJHcm91cCkpIHtcbiAgICAgIHRoaXMub1RhYkdyb3VwLmNsb3NlRGV0YWlscyhkZXRhaWxzRGF0YSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW5Gb3JtTGF5b3V0RGlhbG9nKGRldGFpbENvbXA6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhKTogdm9pZCB7XG4gICAgY29uc3QgY3NzY2xhc3MgPSBbJ28tZm9ybS1sYXlvdXQtZGlhbG9nLW92ZXJsYXknXTtcbiAgICBpZiAodGhpcy5kaWFsb2dDbGFzcykge1xuICAgICAgY3NzY2xhc3MucHVzaCh0aGlzLmRpYWxvZ0NsYXNzKTtcbiAgICB9XG5cbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0gKHRoaXMuZGlhbG9nT3B0aW9ucyB8fCB7fSk7XG5cbiAgICBjb25zdCBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZyA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZGF0YTogZGV0YWlsQ29tcCxcbiAgICAgICAgbGF5b3V0TWFuYWdlckNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgdGl0bGU6ICh0aGlzLnRpdGxlIHx8IGRpYWxvZ09wdGlvbnMudGl0bGUpLFxuICAgICAgICBkaWFsb2dUaXRsZVNlcGFyYXRvcjogdGhpcy5kaWFsb2dUaXRsZVNlcGFyYXRvclxuICAgICAgfSxcbiAgICAgIHdpZHRoOiBkaWFsb2dPcHRpb25zLndpZHRoIHx8IHRoaXMuZGlhbG9nV2lkdGgsXG4gICAgICBtaW5XaWR0aDogZGlhbG9nT3B0aW9ucy5taW5XaWR0aCB8fCB0aGlzLmRpYWxvZ01pbldpZHRoLFxuICAgICAgbWF4V2lkdGg6IGRpYWxvZ09wdGlvbnMubWF4V2lkdGggfHwgdGhpcy5kaWFsb2dNYXhXaWR0aCxcbiAgICAgIGhlaWdodDogZGlhbG9nT3B0aW9ucy5oZWlnaHQgfHwgdGhpcy5kaWFsb2dIZWlnaHQsXG4gICAgICBtaW5IZWlnaHQ6IGRpYWxvZ09wdGlvbnMubWluSGVpZ2h0IHx8IHRoaXMuZGlhbG9nTWluSGVpZ2h0LFxuICAgICAgbWF4SGVpZ2h0OiBkaWFsb2dPcHRpb25zLm1heEhlaWdodCB8fCB0aGlzLmRpYWxvZ01heEhlaWdodCxcbiAgICAgIGRpc2FibGVDbG9zZTogZGlhbG9nT3B0aW9ucy5kaXNhYmxlQ2xvc2UgfHwgdHJ1ZSxcbiAgICAgIHBhbmVsQ2xhc3M6IGRpYWxvZ09wdGlvbnMuY2xhc3MgfHwgY3NzY2xhc3NcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuZGlhbG9nT3B0aW9ucykge1xuICAgICAgZGlhbG9nQ29uZmlnLmNsb3NlT25OYXZpZ2F0aW9uID0gdGhpcy5kaWFsb2dPcHRpb25zLmNsb3NlT25OYXZpZ2F0aW9uO1xuICAgICAgZGlhbG9nQ29uZmlnLmJhY2tkcm9wQ2xhc3MgPSB0aGlzLmRpYWxvZ09wdGlvbnMuYmFja2Ryb3BDbGFzcztcbiAgICAgIGRpYWxvZ0NvbmZpZy5wb3NpdGlvbiA9IHRoaXMuZGlhbG9nT3B0aW9ucy5wb3NpdGlvbjtcbiAgICAgIGRpYWxvZ0NvbmZpZy5kaXNhYmxlQ2xvc2UgPSB0aGlzLmRpYWxvZ09wdGlvbnMuZGlzYWJsZUNsb3NlO1xuICAgIH1cblxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcbiAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5tYXJrRm9yVXBkYXRlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlSWZOZWVkZWQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVsb2FkTWFpbkNvbXBvbmVudHMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlck9wZW5lZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBkZXRhaWxDb21wLnJlbmRlcmVkID0gdHJ1ZTtcbiAgICAgIGRldGFpbENvbXAucmVuZGVyZXJTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rm9ybUNhY2hlRGF0YSgpOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuZ2V0Rm9ybUNhY2hlRGF0YSgpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHNldE1vZGlmaWVkU3RhdGUoZm9ybUF0dHI6IHN0cmluZywgbW9kaWZpZWQ6IGJvb2xlYW4sIGNvbmZpcm1FeGl0OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgY29tcFJlZi5zZXRNb2RpZmllZFN0YXRlKGZvcm1BdHRyLCBtb2RpZmllZCwgY29uZmlybUV4aXQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRMYWJlbEZyb21EYXRhKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IGxhYmVsID0gJyc7XG4gICAgY29uc3QgaXNEYXRhRGVmaW5lZCA9IFV0aWwuaXNEZWZpbmVkKGRhdGEpO1xuICAgIGlmIChpc0RhdGFEZWZpbmVkICYmIGRhdGEuaGFzT3duUHJvcGVydHkoJ25ld190YWJfdGl0bGUnKSkge1xuICAgICAgbGFiZWwgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KGRhdGEubmV3X3RhYl90aXRsZSk7XG4gICAgfSBlbHNlIGlmIChpc0RhdGFEZWZpbmVkICYmIHRoaXMubGFiZWxDb2xzQXJyYXkubGVuZ3RoICE9PSAwKSB7XG4gICAgICB0aGlzLmxhYmVsQ29sc0FycmF5LmZvckVhY2goKGNvbCwgaWR4KSA9PiB7XG4gICAgICAgIGlmIChkYXRhW2NvbF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxhYmVsICs9IGRhdGFbY29sXSArICgoaWR4IDwgdGhpcy5sYWJlbENvbHNBcnJheS5sZW5ndGggLSAxKSA/IHRoaXMuc2VwYXJhdG9yIDogJycpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxhYmVsO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU5hdmlnYXRpb24oZGF0YTogYW55LCBrZXlzVmFsdWVzOiBhbnksIGluc2VydGlvbk1vZGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpKSB7XG4gICAgICBjb21wUmVmLnVwZGF0ZU5hdmlnYXRpb24oZGF0YSwga2V5c1ZhbHVlcywgaW5zZXJ0aW9uTW9kZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFjdGl2ZURhdGEoZGF0YTogYW55KSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgY29tcFJlZi51cGRhdGVBY3RpdmVEYXRhKGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZU9mQWN0aXZlSXRlbSgpOiBhbnlbXSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuZ2V0Um91dGVPZkFjdGl2ZUl0ZW0oKSA6IFtdO1xuICB9XG5cbiAgcHVibGljIGlzTWFpbkNvbXBvbmVudChjb21wOiBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmlzRGlhbG9nTW9kZSgpKSB7XG4gICAgICByZXR1cm4gIWNvbXAub0Zvcm1MYXlvdXREaWFsb2c7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZilcbiAgICAgICYmIChjb21wUmVmLmlzTWFpbkNvbXBvbmVudChjb21wKVxuICAgICAgICB8fCAoVXRpbC5pc0RlZmluZWQoY29tcC5wYXJlbnRDb21wb25lbnQpKSAmJiBjb21wUmVmLmlzTWFpbkNvbXBvbmVudChjb21wLnBhcmVudENvbXBvbmVudCkpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZUZvckNvbXBvbmVudChjb21wOiBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCk6IGFueVtdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAodGhpcy5wYXJlbnRGb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgY29uc3QgcGFyZW50Um91dGUgPSB0aGlzLnBhcmVudEZvcm1MYXlvdXRNYW5hZ2VyLmdldFJvdXRlRm9yQ29tcG9uZW50KGNvbXApO1xuICAgICAgaWYgKHBhcmVudFJvdXRlICYmIHBhcmVudFJvdXRlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4ucGFyZW50Um91dGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNNYWluQ29tcG9uZW50KGNvbXApKSB7XG4gICAgICBjb25zdCBhY3RpdmVSb3V0ZSA9IHRoaXMuZ2V0Um91dGVPZkFjdGl2ZUl0ZW0oKTtcblxuICAgICAgaWYgKGFjdGl2ZVJvdXRlICYmIGFjdGl2ZVJvdXRlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4uYWN0aXZlUm91dGUpO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBc0FjdGl2ZUZvcm1MYXlvdXRNYW5hZ2VyKCk6IHZvaWQge1xuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZS5hY3RpdmVGb3JtTGF5b3V0TWFuYWdlciA9IHRoaXM7XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkTWFpbkNvbXBvbmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5vblRyaWdnZXJVcGRhdGUuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIGFsbG93VG9VcGRhdGVOYXZpZ2F0aW9uKGZvcm1BdHRyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuaXNUYWJNb2RlKCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5vVGFiR3JvdXApICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMudGl0bGVEYXRhT3JpZ2luKSkgP1xuICAgICAgdGhpcy50aXRsZURhdGFPcmlnaW4gPT09IGZvcm1BdHRyIDpcbiAgICAgIHRydWU7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU3RhdGVTdG9yYWdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlIHx8ICF0aGlzLnN0b3JlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXNUYWJNb2RlID0gdGhpcy5pc1RhYk1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9UYWJHcm91cCk7XG4gICAgY29uc3QgaXNTcGxpdFBhbmVNb2RlID0gdGhpcy5pc1NwbGl0UGFuZU1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9TcGxpdFBhbmUpO1xuICAgIGlmIChpc1RhYk1vZGUgfHwgaXNTcGxpdFBhbmVNb2RlKSB7XG4gICAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UudXBkYXRlQ29tcG9uZW50U3RvcmFnZSh0aGlzLCB0aGlzLmdldFJvdXRlS2V5KCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFyZW50QWN0Um91dGVSb3V0ZSgpOiBSb3V0ZSB7XG4gICAgbGV0IGFjdFJvdXRlID0gdGhpcy5hY3RSb3V0ZTtcbiAgICB3aGlsZSAoYWN0Um91dGUucGFyZW50ICE9PSB1bmRlZmluZWQgJiYgYWN0Um91dGUucGFyZW50ICE9PSBudWxsKSB7XG4gICAgICBpZiAoYWN0Um91dGUucm91dGVDb25maWcuY2hpbGRyZW4gfHwgYWN0Um91dGUucm91dGVDb25maWcubG9hZENoaWxkcmVuKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYWN0Um91dGUgPSBhY3RSb3V0ZS5wYXJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBhY3RSb3V0ZS5yb3V0ZUNvbmZpZztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVJZk5lZWRlZCgpIHtcbiAgICBpZiAodGhpcy5tYXJrRm9yVXBkYXRlKSB7XG4gICAgICB0aGlzLm1hcmtGb3JVcGRhdGUgPSBmYWxzZTtcbiAgICAgIHRoaXMub25UcmlnZ2VyVXBkYXRlLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0UGFyYW1zKCk6IGFueSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuZ2V0UGFyYW1zKCkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBzZXQgbWFya0ZvclVwZGF0ZShhcmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tYXJrRm9yVXBkYXRlID0gYXJnO1xuICAgIGlmICh0aGlzLmlzU3BsaXRQYW5lTW9kZSgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZUlmTmVlZGVkKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG1hcmtGb3JVcGRhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtGb3JVcGRhdGU7XG4gIH1cblxuICBnZXQgaWdub3JlQ2FuRGVhY3RpdmF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNTcGxpdFBhbmVNb2RlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpOiBPRm9ybUxheW91dE1hbmFnZXJNb2RlIHtcbiAgICBsZXQgY29tcFJlZjtcbiAgICBpZiAodGhpcy5pc1RhYk1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9UYWJHcm91cCkpIHtcbiAgICAgIGNvbXBSZWYgPSB0aGlzLm9UYWJHcm91cDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNEaWFsb2dNb2RlKCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5kaWFsb2dSZWYpKSB7XG4gICAgICBjb21wUmVmID0gdGhpcy5kaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzU3BsaXRQYW5lTW9kZSgpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMub1NwbGl0UGFuZSkpIHtcbiAgICAgIGNvbXBSZWYgPSB0aGlzLm9TcGxpdFBhbmU7XG4gICAgfVxuICAgIHJldHVybiBjb21wUmVmO1xuICB9XG5cbiAgYWxsb3dOYXZpZ2F0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc1RhYk1vZGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5BZGREZXRhaWxDb21wb25lbnQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLndyYXBJbnRvT2JzZXJ2YWJsZShVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuY2FuQWRkRGV0YWlsQ29tcG9uZW50KCkgOiB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNUb0NvbmZpcm1FeGl0KGRhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhLCBvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChvcHRpb25zKSAmJiBvcHRpb25zLmV4aXRXaXRob3V0Q29uZmlybWF0aW9uKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1zQXR0ciA9IE9iamVjdC5rZXlzKGRhdGEuaW5uZXJGb3Jtc0luZm8pO1xuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpZiAoZm9ybXNBdHRyLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvcm1zQXR0ci5mb3JFYWNoKGZvcm1BdHRyID0+IHtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IGRhdGEuaW5uZXJGb3Jtc0luZm9bZm9ybUF0dHJdO1xuICAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhLmNvbmZpcm1PbkV4aXQgJiYgZm9ybURhdGEubW9kaWZpZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGdldElkT2ZBY3RpdmVJdGVtKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGAke3RoaXMub2F0dHJ9LSR7Y29tcFJlZi5nZXRJZE9mQWN0aXZlSXRlbSgpfS1gIDogJyc7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIm1vZGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlRBQl9NT0RFXCI+XG4gICAgPG8tZm9ybS1sYXlvdXQtdGFiZ3JvdXAgI3RhYkdyb3VwIFt0aXRsZV09XCJ0aXRsZVwiIChvbk1haW5UYWJTZWxlY3RlZCk9XCJvbk1haW5UYWJTZWxlY3RlZC5lbWl0KCRldmVudClcIlxuICAgICAgKG9uU2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25TZWxlY3RlZFRhYkNoYW5nZS5lbWl0KCRldmVudClcIiAob25DbG9zZVRhYik9XCJvbkNsb3NlVGFiLmVtaXQoJGV2ZW50KVwiXG4gICAgICBbb3B0aW9uc109XCJ0YWJHcm91cE9wdGlvbnNcIiBbc3RyZXRjaC10YWJzXT1cInN0cmV0Y2hUYWJzXCI+XG4gICAgICA8bmctY29udGVudCAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRCbG9ja1wiPjwvbmctY29udGVudD5cbiAgICA8L28tZm9ybS1sYXlvdXQtdGFiZ3JvdXA+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIk9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5TUExJVF9QQU5FX01PREVcIj5cbiAgICA8by1mb3JtLWxheW91dC1zcGxpdC1wYW5lICNzcGxpdFBhbmUgW29wdGlvbnNdPVwic3BsaXRQYW5lT3B0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRlbnQgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50QmxvY2tcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9vLWZvcm0tbGF5b3V0LXNwbGl0LXBhbmU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIk9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERVwiPlxuICAgIDxuZy1jb250ZW50ICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEJsb2NrXCI+PC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudEJsb2NrPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
@@ -12,7 +12,7 @@ import { NameConvention } from './name-convention/name-convention.service';
|
|
|
12
12
|
import { OntimizeServiceResponseAdapter } from './ontimize/ontimize-service-response.adapter';
|
|
13
13
|
import { PaginationContextService } from './pagination-context.service';
|
|
14
14
|
import { OntimizeServiceResponseParser } from './parser/o-service-response.parser';
|
|
15
|
-
import {
|
|
15
|
+
import { OntimizeRequestArgumentsAdapter } from './request-adapter/ontimize-request-arguments.adapter';
|
|
16
16
|
import * as i0 from "@angular/core";
|
|
17
17
|
export class BaseService {
|
|
18
18
|
constructor(injector) {
|
|
@@ -26,7 +26,7 @@ export class BaseService {
|
|
|
26
26
|
this.loginStorageService = this.injector.get(LoginStorageService);
|
|
27
27
|
this.nameConvention = this.injector.get(NameConvention);
|
|
28
28
|
this.paginationContextService = new PaginationContextService();
|
|
29
|
-
this.
|
|
29
|
+
this.requestArgumentAdapter = this.injector.get(OntimizeRequestArgumentsAdapter);
|
|
30
30
|
}
|
|
31
31
|
configureAdapter() {
|
|
32
32
|
this.adapter = this.injector.get(OntimizeServiceResponseAdapter);
|
|
@@ -171,4 +171,4 @@ BaseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version:
|
|
|
171
171
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseService, decorators: [{
|
|
172
172
|
type: Injectable
|
|
173
173
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZXJ2aWNlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL3NlcnZpY2VzL2Jhc2Utc2VydmljZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFxQixXQUFXLEVBQWdCLE1BQU0sc0JBQXNCLENBQUM7QUFDaEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFPakQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7O0FBR25HLE1BQU0sT0FBTyxXQUFXO0lBaUJ0QixZQUFzQixRQUFrQjtRQUFsQixh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IEh0dHBIZWFkZXJzLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2hhcmUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEFwcENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy9hcHAtY29uZmlnJztcbmltcG9ydCB7IFBhZ2luYXRpb25Db250ZXh0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wYWdpbmF0aW9uLWNvbnRleHQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElTZXJ2aWNlUmVzcG9uc2VBZGFwdGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZXJ2aWNlLXJlc3BvbnNlLWFkYXB0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNlcnZpY2VSZXNwb25zZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VydmljZS1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvY29uZmlnLnR5cGUnO1xuaW1wb3J0IHsgSHR0cFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvaHR0cC1yZXF1ZXN0LW9wdGlvbnMudHlwZSc7XG5pbXBvcnQgeyBTZXJ2aWNlUmVxdWVzdFBhcmFtIH0gZnJvbSAnLi4vdHlwZXMvc2VydmljZS1yZXF1ZXN0LXBhcmFtLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnLi9iYXNlLXNlcnZpY2UtcmVzcG9uc2UuY2xhc3MnO1xuaW1wb3J0IHsgTG9naW5TdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbG9naW4tc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5hbWVDb252ZW50aW9uIH0gZnJvbSAnLi9uYW1lLWNvbnZlbnRpb24vbmFtZS1jb252ZW50aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT250aW1pemVTZXJ2aWNlUmVzcG9uc2VBZGFwdGVyIH0gZnJvbSAnLi9vbnRpbWl6ZS9vbnRpbWl6ZS1zZXJ2aWNlLXJlc3BvbnNlLmFkYXB0ZXInO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9wYWdpbmF0aW9uLWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBPbnRpbWl6ZVNlcnZpY2VSZXNwb25zZVBhcnNlciB9IGZyb20gJy4vcGFyc2VyL28tc2VydmljZS1yZXNwb25zZS5wYXJzZXInO1xuaW1wb3J0IHsgQmFzZVF1ZXJ5QXJndW1lbnQgfSBmcm9tICcuL3F1ZXJ5LWFyZ3VtZW50cy9iYXNlLXF1ZXJ5LWFyZ3VtZW50LmFkYXB0ZXInO1xuaW1wb3J0IHsgT250aW1pemVRdWVyeUFyZ3VtZW50c0FkYXB0ZXIgfSBmcm9tICcuL3F1ZXJ5LWFyZ3VtZW50cy9vbnRpbWl6ZS1xdWVyeS1hcmd1bWVudHMuYWRhcHRlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCYXNlU2VydmljZTxUIGV4dGVuZHMgU2VydmljZVJlc3BvbnNlPiB7XG5cbiAgcHJvdGVjdGVkIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQ7XG4gIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcjtcblxuICBwcm90ZWN0ZWQgX3VybEJhc2U6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9hcHBDb25maWc6IENvbmZpZztcbiAgcHJvdGVjdGVkIF9jb25maWc6IEFwcENvbmZpZztcbiAgcHJvdGVjdGVkIHJlc3BvbnNlUGFyc2VyOiBPbnRpbWl6ZVNlcnZpY2VSZXNwb25zZVBhcnNlcjxUPjtcbiAgcHJvdGVjdGVkIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZTtcbiAgcHJvdGVjdGVkIGFkYXB0ZXI6IElTZXJ2aWNlUmVzcG9uc2VBZGFwdGVyPEJhc2VTZXJ2aWNlUmVzcG9uc2U+O1xuICBwcm90ZWN0ZWQgbG9naW5TdG9yYWdlU2VydmljZTogTG9naW5TdG9yYWdlU2VydmljZTtcbiAgbmFtZUNvbnZlbnRpb246IE5hbWVDb252ZW50aW9uO1xuICBxdWVyeUFyZ3VtZW50QWRhcHRlcjogQmFzZVF1ZXJ5QXJndW1lbnQ7XG4gIHByb3RlY3RlZCBwYWdpbmF0aW9uQ29udGV4dFNlcnZpY2U6IFBhZ2luYXRpb25Db250ZXh0U2VydmljZTtcblxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLmh0dHBDbGllbnQgPSB0aGlzLmluamVjdG9yLmdldDxIdHRwQ2xpZW50PihIdHRwQ2xpZW50IGFzIFR5cGU8SHR0cENsaWVudD4pO1xuICAgIHRoaXMucm91dGVyID0gdGhpcy5pbmplY3Rvci5nZXQ8Um91dGVyPihSb3V0ZXIgYXMgVHlwZTxSb3V0ZXI+KTtcbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLmluamVjdG9yLmdldDxBcHBDb25maWc+KEFwcENvbmZpZyBhcyBUeXBlPEFwcENvbmZpZz4pO1xuICAgIHRoaXMuX2FwcENvbmZpZyA9IHRoaXMuX2NvbmZpZy5nZXRDb25maWd1cmF0aW9uKCk7XG4gICAgdGhpcy5yZXNwb25zZVBhcnNlciA9IHRoaXMuaW5qZWN0b3IuZ2V0PE9udGltaXplU2VydmljZVJlc3BvbnNlUGFyc2VyPFQ+PihPbnRpbWl6ZVNlcnZpY2VSZXNwb25zZVBhcnNlciBhcyBUeXBlPE9udGltaXplU2VydmljZVJlc3BvbnNlUGFyc2VyPFQ+Pik7XG4gICAgdGhpcy5hdXRoU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PEF1dGhTZXJ2aWNlPihBdXRoU2VydmljZSBhcyBUeXBlPEF1dGhTZXJ2aWNlPik7XG4gICAgdGhpcy5sb2dpblN0b3JhZ2VTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8TG9naW5TdG9yYWdlU2VydmljZT4oTG9naW5TdG9yYWdlU2VydmljZSk7XG4gICAgdGhpcy5uYW1lQ29udmVudGlvbiA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5hbWVDb252ZW50aW9uKTtcbiAgICB0aGlzLnBhZ2luYXRpb25Db250ZXh0U2VydmljZSA9IG5ldyBQYWdpbmF0aW9uQ29udGV4dFNlcnZpY2UoKTsgLy9cbiAgICB0aGlzLnF1ZXJ5QXJndW1lbnRBZGFwdGVyID0gdGhpcy5pbmplY3Rvci5nZXQoT250aW1pemVRdWVyeUFyZ3VtZW50c0FkYXB0ZXIpO1xuICB9XG5cbiAgcHVibGljIGNvbmZpZ3VyZUFkYXB0ZXIoKSB7XG4gICAgdGhpcy5hZGFwdGVyID0gdGhpcy5pbmplY3Rvci5nZXQoT250aW1pemVTZXJ2aWNlUmVzcG9uc2VBZGFwdGVyKTtcbiAgfVxuXG5cbiAgcHVibGljIGNvbmZpZ3VyZVNlcnZpY2UoY29uZmlnOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZ3VyZUFkYXB0ZXIoKTtcbiAgICB0aGlzLl91cmxCYXNlID0gY29uZmlnLnVybEJhc2UgPyBjb25maWcudXJsQmFzZSA6IHRoaXMuX2FwcENvbmZpZy5hcGlFbmRwb2ludDtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZWZhdWx0U2VydmljZUNvbmZpZ3VyYXRpb24oc2VydmljZU5hbWU/OiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLl9jb25maWcuZ2V0U2VydmljZUNvbmZpZ3VyYXRpb24oKTtcbiAgICBsZXQgc2VydkNvbmZpZyA9IHt9O1xuICAgIGlmIChzZXJ2aWNlTmFtZSAmJiBjb25maWd1cmF0aW9uLmhhc093blByb3BlcnR5KHNlcnZpY2VOYW1lKSkge1xuICAgICAgc2VydkNvbmZpZyA9IGNvbmZpZ3VyYXRpb25bc2VydmljZU5hbWVdO1xuICAgIH1cbiAgICBzZXJ2Q29uZmlnW0NvZGVzLlNFU1NJT05fS0VZXSA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0U2Vzc2lvbkluZm8oKTtcbiAgICByZXR1cm4gc2VydkNvbmZpZztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdXJsQmFzZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmxCYXNlO1xuICB9XG5cbiAgcHVibGljIHNldCB1cmxCYXNlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl91cmxCYXNlID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZG9SZXF1ZXN0KHBhcmFtOiBTZXJ2aWNlUmVxdWVzdFBhcmFtPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgaWYgKHBhcmFtPy51cmwubGVuZ3RoID49IDIwNDgpIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhlIG1heGltdW0gbGVuZ3RoIGluIHRoZSBVUkwgcmVxdWVzdCBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gMjA0OCBjaGFyYWN0ZXJzLicpXG4gICAgfVxuXG4gICAgY29uc3QgZGF0YU9ic2VydmFibGU6IE9ic2VydmFibGU8VD4gPSBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IFN1YnNjcmliZXI8VD4pID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBwYXJhbS5vcHRpb25zIHx8IHtcbiAgICAgICAgaGVhZGVyczogdGhpcy5idWlsZEhlYWRlcnMoKVxuICAgICAgfTtcbiAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9ICdyZXNwb25zZSc7XG4gICAgICBsZXQgcmVxdWVzdE9iczogT2JzZXJ2YWJsZTxUPjtcbiAgICAgIHN3aXRjaCAocGFyYW0ubWV0aG9kKSB7XG4gICAgICAgIGNhc2UgJ0dFVCc6XG4gICAgICAgICAgcmVxdWVzdE9icyA9IHRoaXMuaHR0cENsaWVudC5nZXQ8VD4ocGFyYW0udXJsLCBvcHRpb25zKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUFVUJzpcbiAgICAgICAgICByZXF1ZXN0T2JzID0gdGhpcy5odHRwQ2xpZW50LnB1dDxUPihwYXJhbS51cmwsIHBhcmFtLmJvZHksIG9wdGlvbnMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdERUxFVEUnOlxuICAgICAgICAgIGNvbnN0IGRlbGV0ZU9wdGlvbnM6IEh0dHBSZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG9wdGlvbnMuaGVhZGVycyxcbiAgICAgICAgICAgIGJvZHk6IHBhcmFtLmJvZHlcbiAgICAgICAgICB9O1xuICAgICAgICAgIGRlbGV0ZU9wdGlvbnMub2JzZXJ2ZSA9ICdyZXNwb25zZSc7XG4gICAgICAgICAgcmVxdWVzdE9icyA9IHRoaXMuaHR0cENsaWVudC5kZWxldGU8VD4ocGFyYW0udXJsLCBkZWxldGVPcHRpb25zKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUEFUQ0gnOlxuICAgICAgICAgIHJlcXVlc3RPYnMgPSB0aGlzLmh0dHBDbGllbnQucGF0Y2g8VD4ocGFyYW0udXJsLCBwYXJhbS5ib2R5LCBvcHRpb25zKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUE9TVCc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVxdWVzdE9icyA9IHRoaXMuaHR0cENsaWVudC5wb3N0PFQ+KHBhcmFtLnVybCwgcGFyYW0uYm9keSwgb3B0aW9ucyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHJlcXVlc3RPYnMucGlwZShcbiAgICAgICAgbWFwKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hBdXRoVG9rZW4oZGF0YSk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5hZGFwdChkYXRhKTtcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlc3ApID0+IHtcbiAgICAgICAgICAocGFyYW0uc3VjY2Vzc0NhbGxiYWNrIHx8IHRoaXMucGFyc2VTdWNjZXNzZnVsUmVzcG9uc2UpLmJpbmQodGhpcykocmVzcCwgb2JzZXJ2ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgKHBhcmFtLmVycm9yQ2FsbEJhY2sgfHwgdGhpcy5wYXJzZVVuc3VjY2Vzc2Z1bFJlc3BvbnNlKS5iaW5kKHRoaXMpKGVycm9yLCBvYnNlcnZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YU9ic2VydmFibGUucGlwZShzaGFyZSgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEhlYWRlcnMoKTogSHR0cEhlYWRlcnMge1xuICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbic6ICcqJyxcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04J1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNsaWVudEVycm9yRmFsbGJhY2soZXJyb3JDb2RlOiBudW1iZXIpIHtcblxuICB9XG5cbiAgcHVibGljIHNlcnZlckVycm9yRmFsbGJhY2soZXJyb3JDb2RlOiBudW1iZXIpIHtcblxuICB9XG5cbiAgLypcbiAgICogU3VjY2Vzc2Z1bCByZXNwb25zZSBwYXJzZXJzLCB0aGVyZSBpcyBvbmUgcGFyc2VyIGZvciBlYWNoIENSVUQgbWV0aG9kIHdoaWNoIGNhbGxzIHRvIHRoZSBjb21tb24gcGFyc2VyLlxuICAgKiBVc2VyIGNhbiBvdmVyd3JpdGUgdGhlIGNob3NlbiBtZXRob2RzIHBhcnNlcnMgb3IgdGhlIGNvbW1vbiBwYXJzZXJcbiAgICovXG4gIHByb3RlY3RlZCBwYXJzZVN1Y2Nlc3NmdWxSZXNwb25zZShyZXNwOiBULCBvYnNlcnZlcjogU3Vic2NyaWJlcjxUPikge1xuICAgIHRoaXMucmVzcG9uc2VQYXJzZXIucGFyc2VTdWNjZXNzZnVsUmVzcG9uc2UocmVzcCwgb2JzZXJ2ZXIsIHRoaXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlU3VjY2Vzc2Z1bFF1ZXJ5UmVzcG9uc2UocmVzcDogVCwgb2JzZXJ2ZXI6IFN1YnNjcmliZXI8VD4pIHtcbiAgICB0aGlzLnBhcnNlU3VjY2Vzc2Z1bFJlc3BvbnNlKHJlc3AsIG9ic2VydmVyKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVN1Y2Nlc3NmdWxBZHZhbmNlZFF1ZXJ5UmVzcG9uc2UocmVzcDogVCwgb2JzZXJ2ZXI6IFN1YnNjcmliZXI8VD4pIHtcbiAgICB0aGlzLnBhcnNlU3VjY2Vzc2Z1bFJlc3BvbnNlKHJlc3AsIG9ic2VydmVyKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVN1Y2Nlc3NmdWxJbnNlcnRSZXNwb25zZShyZXNwOiBULCBvYnNlcnZlcjogU3Vic2NyaWJlcjxUPikge1xuICAgIHRoaXMucGFyc2VTdWNjZXNzZnVsUmVzcG9uc2UocmVzcCwgb2JzZXJ2ZXIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlU3VjY2Vzc2Z1bFVwZGF0ZVJlc3BvbnNlKHJlc3A6IFQsIG9ic2VydmVyOiBTdWJzY3JpYmVyPFQ+KSB7XG4gICAgdGhpcy5wYXJzZVN1Y2Nlc3NmdWxSZXNwb25zZShyZXNwLCBvYnNlcnZlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VTdWNjZXNzZnVsRGVsZXRlUmVzcG9uc2UocmVzcDogVCwgb2JzZXJ2ZXI6IFN1YnNjcmliZXI8VD4pIHtcbiAgICB0aGlzLnBhcnNlU3VjY2Vzc2Z1bFJlc3BvbnNlKHJlc3AsIG9ic2VydmVyKTtcbiAgfVxuXG4gIC8qXG4gICAqIFVuc3VjY2Vzc2Z1bCByZXNwb25zZSBwYXJzZXJzLCB0aGVyZSBpcyBvbmUgcGFyc2VyIGZvciBlYWNoIENSVUQgbWV0aG9kIHdoaWNoIGNhbGxzIHRvIHRoZSBjb21tb24gcGFyc2VyLlxuICAgKiBVc2VyIGNhbiBvdmVyd3JpdGUgdGhlIGNob3NlbiBtZXRob2RzIHBhcnNlcnMgb3IgdGhlIGNvbW1vbiBwYXJzZXJcbiAgICovXG4gIHByb3RlY3RlZCBwYXJzZVVuc3VjY2Vzc2Z1bFJlc3BvbnNlKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSwgb2JzZXJ2ZXI6IFN1YnNjcmliZXI8VD4pIHtcbiAgICBpZiAodGhpcy5hZGFwdGVyPy5hZGFwdEVycm9yKSB7XG4gICAgICBjb25zdCBhZGFwdGVkRXJyb3IgPSB0aGlzLmFkYXB0ZXIuYWRhcHRFcnJvcihlcnJvcik7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQoYWRhcHRlZEVycm9yKSkge1xuICAgICAgICBlcnJvciA9IGFkYXB0ZWRFcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yZXNwb25zZVBhcnNlci5wYXJzZVVuc3VjY2Vzc2Z1bFJlc3BvbnNlKGVycm9yLCBvYnNlcnZlciwgdGhpcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VVbnN1Y2Nlc3NmdWxRdWVyeVJlc3BvbnNlKHJlc3A6IEh0dHBFcnJvclJlc3BvbnNlLCBvYnNlcnZlcjogU3Vic2NyaWJlcjxUPikge1xuICAgIHRoaXMucGFyc2VVbnN1Y2Nlc3NmdWxSZXNwb25zZShyZXNwLCBvYnNlcnZlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VVbnN1Y2Nlc3NmdWxBZHZhbmNlZFF1ZXJ5UmVzcG9uc2UocmVzcDogSHR0cEVycm9yUmVzcG9uc2UsIG9ic2VydmVyOiBTdWJzY3JpYmVyPFQ+KSB7XG4gICAgdGhpcy5wYXJzZVVuc3VjY2Vzc2Z1bFJlc3BvbnNlKHJlc3AsIG9ic2VydmVyKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVVuc3VjY2Vzc2Z1bEluc2VydFJlc3BvbnNlKHJlc3A6IEh0dHBFcnJvclJlc3BvbnNlLCBvYnNlcnZlcjogU3Vic2NyaWJlcjxUPikge1xuICAgIHRoaXMucGFyc2VVbnN1Y2Nlc3NmdWxSZXNwb25zZShyZXNwLCBvYnNlcnZlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VVbnN1Y2Nlc3NmdWxVcGRhdGVSZXNwb25zZShyZXNwOiBIdHRwRXJyb3JSZXNwb25zZSwgb2JzZXJ2ZXI6IFN1YnNjcmliZXI8VD4pIHtcbiAgICB0aGlzLnBhcnNlVW5zdWNjZXNzZnVsUmVzcG9uc2UocmVzcCwgb2JzZXJ2ZXIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlVW5zdWNjZXNzZnVsRGVsZXRlUmVzcG9uc2UocmVzcDogSHR0cEVycm9yUmVzcG9uc2UsIG9ic2VydmVyOiBTdWJzY3JpYmVyPFQ+KSB7XG4gICAgdGhpcy5wYXJzZVVuc3VjY2Vzc2Z1bFJlc3BvbnNlKHJlc3AsIG9ic2VydmVyKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWZyZXNoQXV0aFRva2VuKHJlczogSHR0cFJlc3BvbnNlPGFueT4pIHtcbiAgICBjb25zdCBhdXRoVG9rZW4gPSByZXMuaGVhZGVycy5nZXQoJ1gtQXV0aC1Ub2tlbicpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChhdXRoVG9rZW4pKSB7XG4gICAgICB0aGlzLmxvZ2luU3RvcmFnZVNlcnZpY2UudXBkYXRlU2Vzc2lvbklkKGF1dGhUb2tlbik7XG4gICAgfVxuICB9XG5cbiAgc2V0UGFnaW5hdGlvbkNvbnRleHQoY29udGV4dDogUGFnaW5hdGlvbkNvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRpb25Db250ZXh0U2VydmljZS5zZXRDb250ZXh0KHsgLi4udGhpcy5nZXRQYWdpbmF0aW9uQ29udGV4dCgpLCAuLi5jb250ZXh0IH0pO1xuICB9XG5cbiAgZ2V0UGFnaW5hdGlvbkNvbnRleHQoKTogUGFnaW5hdGlvbkNvbnRleHQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYWdpbmF0aW9uQ29udGV4dFNlcnZpY2UuZ2V0Q29udGV4dCgpO1xuICB9XG5cbiAgcmVpbml0aWFsaXplUGFnaW5hdGlvbkNvbnRleHQocGFnZVNpemU/OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRpb25Db250ZXh0U2VydmljZS5yZWluaXRpYWxpemVDb250ZXh0KHBhZ2VTaXplKTtcbiAgfVxuXG59XG4iXX0=
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZXJ2aWNlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL3NlcnZpY2VzL2Jhc2Utc2VydmljZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFxQixXQUFXLEVBQWdCLE1BQU0sc0JBQXNCLENBQUM7QUFDaEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFPakQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0RBQXNELENBQUM7O0FBR3ZHLE1BQU0sT0FBTyxXQUFXO0lBaUJ0QixZQUFzQixRQUFrQjtRQUFsQixh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IEh0dHBIZWFkZXJzLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2hhcmUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEFwcENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy9hcHAtY29uZmlnJztcbmltcG9ydCB7IFBhZ2luYXRpb25Db250ZXh0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wYWdpbmF0aW9uLWNvbnRleHQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElTZXJ2aWNlUmVzcG9uc2VBZGFwdGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZXJ2aWNlLXJlc3BvbnNlLWFkYXB0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNlcnZpY2VSZXNwb25zZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VydmljZS1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvY29uZmlnLnR5cGUnO1xuaW1wb3J0IHsgSHR0cFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvaHR0cC1yZXF1ZXN0LW9wdGlvbnMudHlwZSc7XG5pbXBvcnQgeyBTZXJ2aWNlUmVxdWVzdFBhcmFtIH0gZnJvbSAnLi4vdHlwZXMvc2VydmljZS1yZXF1ZXN0LXBhcmFtLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnLi9iYXNlLXNlcnZpY2UtcmVzcG9uc2UuY2xhc3MnO1xuaW1wb3J0IHsgTG9naW5TdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbG9naW4tc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5hbWVDb252ZW50aW9uIH0gZnJvbSAnLi9uYW1lLWNvbnZlbnRpb24vbmFtZS1jb252ZW50aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT250aW1pemVTZXJ2aWNlUmVzcG9uc2VBZGFwdGVyIH0gZnJvbSAnLi9vbnRpbWl6ZS9vbnRpbWl6ZS1zZXJ2aWNlLXJlc3BvbnNlLmFkYXB0ZXInO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9wYWdpbmF0aW9uLWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBPbnRpbWl6ZVNlcnZpY2VSZXNwb25zZVBhcnNlciB9IGZyb20gJy4vcGFyc2VyL28tc2VydmljZS1yZXNwb25zZS5wYXJzZXInO1xuaW1wb3J0IHsgQmFzZVJlcXVlc3RBcmd1bWVudCB9IGZyb20gJy4vcmVxdWVzdC1hZGFwdGVyL2Jhc2UtcmVxdWVzdC1hcmd1bWVudC5hZGFwdGVyJztcbmltcG9ydCB7IE9udGltaXplUmVxdWVzdEFyZ3VtZW50c0FkYXB0ZXIgfSBmcm9tICcuL3JlcXVlc3QtYWRhcHRlci9vbnRpbWl6ZS1yZXF1ZXN0LWFyZ3VtZW50cy5hZGFwdGVyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEJhc2VTZXJ2aWNlPFQgZXh0ZW5kcyBTZXJ2aWNlUmVzcG9uc2U+IHtcblxuICBwcm90ZWN0ZWQgaHR0cENsaWVudDogSHR0cENsaWVudDtcbiAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyO1xuXG4gIHByb3RlY3RlZCBfdXJsQmFzZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2FwcENvbmZpZzogQ29uZmlnO1xuICBwcm90ZWN0ZWQgX2NvbmZpZzogQXBwQ29uZmlnO1xuICBwcm90ZWN0ZWQgcmVzcG9uc2VQYXJzZXI6IE9udGltaXplU2VydmljZVJlc3BvbnNlUGFyc2VyPFQ+O1xuICBwcm90ZWN0ZWQgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgYWRhcHRlcjogSVNlcnZpY2VSZXNwb25zZUFkYXB0ZXI8QmFzZVNlcnZpY2VSZXNwb25zZT47XG4gIHByb3RlY3RlZCBsb2dpblN0b3JhZ2VTZXJ2aWNlOiBMb2dpblN0b3JhZ2VTZXJ2aWNlO1xuICBuYW1lQ29udmVudGlvbjogTmFtZUNvbnZlbnRpb247XG4gIHJlcXVlc3RBcmd1bWVudEFkYXB0ZXI6IEJhc2VSZXF1ZXN0QXJndW1lbnQ7XG4gIHByb3RlY3RlZCBwYWdpbmF0aW9uQ29udGV4dFNlcnZpY2U6IFBhZ2luYXRpb25Db250ZXh0U2VydmljZTtcblxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLmh0dHBDbGllbnQgPSB0aGlzLmluamVjdG9yLmdldDxIdHRwQ2xpZW50PihIdHRwQ2xpZW50IGFzIFR5cGU8SHR0cENsaWVudD4pO1xuICAgIHRoaXMucm91dGVyID0gdGhpcy5pbmplY3Rvci5nZXQ8Um91dGVyPihSb3V0ZXIgYXMgVHlwZTxSb3V0ZXI+KTtcbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLmluamVjdG9yLmdldDxBcHBDb25maWc+KEFwcENvbmZpZyBhcyBUeXBlPEFwcENvbmZpZz4pO1xuICAgIHRoaXMuX2FwcENvbmZpZyA9IHRoaXMuX2NvbmZpZy5nZXRDb25maWd1cmF0aW9uKCk7XG4gICAgdGhpcy5yZXNwb25zZVBhcnNlciA9IHRoaXMuaW5qZWN0b3IuZ2V0PE9udGltaXplU2VydmljZVJlc3BvbnNlUGFyc2VyPFQ+PihPbnRpbWl6ZVNlcnZpY2VSZXNwb25zZVBhcnNlciBhcyBUeXBlPE9udGltaXplU2VydmljZVJlc3BvbnNlUGFyc2VyPFQ+Pik7XG4gICAgdGhpcy5hdXRoU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PEF1dGhTZXJ2aWNlPihBdXRoU2VydmljZSBhcyBUeXBlPEF1dGhTZXJ2aWNlPik7XG4gICAgdGhpcy5sb2dpblN0b3JhZ2VTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8TG9naW5TdG9yYWdlU2VydmljZT4oTG9naW5TdG9yYWdlU2VydmljZSk7XG4gICAgdGhpcy5uYW1lQ29udmVudGlvbiA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5hbWVDb252ZW50aW9uKTtcbiAgICB0aGlzLnBhZ2luYXRpb25Db250ZXh0U2VydmljZSA9IG5ldyBQYWdpbmF0aW9uQ29udGV4dFNlcnZpY2UoKTsgLy9cbiAgICB0aGlzLnJlcXVlc3RBcmd1bWVudEFkYXB0ZXIgPSB0aGlzLmluamVjdG9yLmdldChPbnRpbWl6ZVJlcXVlc3RBcmd1bWVudHNBZGFwdGVyKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVBZGFwdGVyKCkge1xuICAgIHRoaXMuYWRhcHRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9udGltaXplU2VydmljZVJlc3BvbnNlQWRhcHRlcik7XG4gIH1cblxuXG4gIHB1YmxpYyBjb25maWd1cmVTZXJ2aWNlKGNvbmZpZzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb25maWd1cmVBZGFwdGVyKCk7XG4gICAgdGhpcy5fdXJsQmFzZSA9IGNvbmZpZy51cmxCYXNlID8gY29uZmlnLnVybEJhc2UgOiB0aGlzLl9hcHBDb25maWcuYXBpRW5kcG9pbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGVmYXVsdFNlcnZpY2VDb25maWd1cmF0aW9uKHNlcnZpY2VOYW1lPzogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5fY29uZmlnLmdldFNlcnZpY2VDb25maWd1cmF0aW9uKCk7XG4gICAgbGV0IHNlcnZDb25maWcgPSB7fTtcbiAgICBpZiAoc2VydmljZU5hbWUgJiYgY29uZmlndXJhdGlvbi5oYXNPd25Qcm9wZXJ0eShzZXJ2aWNlTmFtZSkpIHtcbiAgICAgIHNlcnZDb25maWcgPSBjb25maWd1cmF0aW9uW3NlcnZpY2VOYW1lXTtcbiAgICB9XG4gICAgc2VydkNvbmZpZ1tDb2Rlcy5TRVNTSU9OX0tFWV0gPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFNlc3Npb25JbmZvKCk7XG4gICAgcmV0dXJuIHNlcnZDb25maWc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHVybEJhc2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsQmFzZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdXJsQmFzZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdXJsQmFzZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGRvUmVxdWVzdChwYXJhbTogU2VydmljZVJlcXVlc3RQYXJhbTxUPik6IE9ic2VydmFibGU8VD4ge1xuICAgIGlmIChwYXJhbT8udXJsLmxlbmd0aCA+PSAyMDQ4KSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RoZSBtYXhpbXVtIGxlbmd0aCBpbiB0aGUgVVJMIHJlcXVlc3QgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIDIwNDggY2hhcmFjdGVycy4nKVxuICAgIH1cblxuICAgIGNvbnN0IGRhdGFPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFQ+ID0gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyOiBTdWJzY3JpYmVyPFQ+KSA9PiB7XG4gICAgICBjb25zdCBvcHRpb25zID0gcGFyYW0ub3B0aW9ucyB8fCB7XG4gICAgICAgIGhlYWRlcnM6IHRoaXMuYnVpbGRIZWFkZXJzKClcbiAgICAgIH07XG4gICAgICBvcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xuICAgICAgbGV0IHJlcXVlc3RPYnM6IE9ic2VydmFibGU8VD47XG4gICAgICBzd2l0Y2ggKHBhcmFtLm1ldGhvZCkge1xuICAgICAgICBjYXNlICdHRVQnOlxuICAgICAgICAgIHJlcXVlc3RPYnMgPSB0aGlzLmh0dHBDbGllbnQuZ2V0PFQ+KHBhcmFtLnVybCwgb3B0aW9ucyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1BVVCc6XG4gICAgICAgICAgcmVxdWVzdE9icyA9IHRoaXMuaHR0cENsaWVudC5wdXQ8VD4ocGFyYW0udXJsLCBwYXJhbS5ib2R5LCBvcHRpb25zKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnREVMRVRFJzpcbiAgICAgICAgICBjb25zdCBkZWxldGVPcHRpb25zOiBIdHRwUmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBoZWFkZXJzOiBvcHRpb25zLmhlYWRlcnMsXG4gICAgICAgICAgICBib2R5OiBwYXJhbS5ib2R5XG4gICAgICAgICAgfTtcbiAgICAgICAgICBkZWxldGVPcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xuICAgICAgICAgIHJlcXVlc3RPYnMgPSB0aGlzLmh0dHBDbGllbnQuZGVsZXRlPFQ+KHBhcmFtLnVybCwgZGVsZXRlT3B0aW9ucyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1BBVENIJzpcbiAgICAgICAgICByZXF1ZXN0T2JzID0gdGhpcy5odHRwQ2xpZW50LnBhdGNoPFQ+KHBhcmFtLnVybCwgcGFyYW0uYm9keSwgb3B0aW9ucyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1BPU1QnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlcXVlc3RPYnMgPSB0aGlzLmh0dHBDbGllbnQucG9zdDxUPihwYXJhbS51cmwsIHBhcmFtLmJvZHksIG9wdGlvbnMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXF1ZXN0T2JzLnBpcGUoXG4gICAgICAgIG1hcCgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoQXV0aFRva2VuKGRhdGEpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuYWRhcHQoZGF0YSk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXNwKSA9PiB7XG4gICAgICAgICAgKHBhcmFtLnN1Y2Nlc3NDYWxsYmFjayB8fCB0aGlzLnBhcnNlU3VjY2Vzc2Z1bFJlc3BvbnNlKS5iaW5kKHRoaXMpKHJlc3AsIG9ic2VydmVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgIChwYXJhbS5lcnJvckNhbGxCYWNrIHx8IHRoaXMucGFyc2VVbnN1Y2Nlc3NmdWxSZXNwb25zZSkuYmluZCh0aGlzKShlcnJvciwgb2JzZXJ2ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogKCkgPT4gb2JzZXJ2ZXIuY29tcGxldGUoKVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGFPYnNlcnZhYmxlLnBpcGUoc2hhcmUoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRIZWFkZXJzKCk6IEh0dHBIZWFkZXJzIHtcbiAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nOiAnKicsXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCdcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGllbnRFcnJvckZhbGxiYWNrKGVycm9yQ29kZTogbnVtYmVyKSB7XG5cbiAgfVxuXG4gIHB1YmxpYyBzZXJ2ZXJFcnJvckZhbGxiYWNrKGVycm9yQ29kZTogbnVtYmVyKSB7XG5cbiAgfVxuXG4gIC8qXG4gICAqIFN1Y2Nlc3NmdWwgcmVzcG9uc2UgcGFyc2VycywgdGhlcmUgaXMgb25lIHBhcnNlciBmb3IgZWFjaCBDUlVEIG1ldGhvZCB3aGljaCBjYWxscyB0byB0aGUgY29tbW9uIHBhcnNlci5cbiAgICogVXNlciBjYW4gb3ZlcndyaXRlIHRoZSBjaG9zZW4gbWV0aG9kcyBwYXJzZXJzIG9yIHRoZSBjb21tb24gcGFyc2VyXG4gICAqL1xuICBwcm90ZWN0ZWQgcGFyc2VTdWNjZXNzZnVsUmVzcG9uc2UocmVzcDogVCwgb2JzZXJ2ZXI6IFN1YnNjcmliZXI8VD4pIHtcbiAgICB0aGlzLnJlc3BvbnNlUGFyc2VyLnBhcnNlU3VjY2Vzc2Z1bFJlc3BvbnNlKHJlc3AsIG9ic2VydmVyLCB0aGlzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVN1Y2Nlc3NmdWxRdWVyeVJlc3BvbnNlKHJlc3A6IFQsIG9ic2VydmVyOiBTdWJzY3JpYmVyPFQ+KSB7XG4gICAgdGhpcy5wYXJzZVN1Y2Nlc3NmdWxSZXNwb25zZShyZXNwLCBvYnNlcnZlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VTdWNjZXNzZnVsQWR2YW5jZWRRdWVyeVJlc3BvbnNlKHJlc3A6IFQsIG9ic2VydmVyOiBTdWJzY3JpYmVyPFQ+KSB7XG4gICAgdGhpcy5wYXJzZVN1Y2Nlc3NmdWxSZXNwb25zZShyZXNwLCBvYnNlcnZlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VTdWNjZXNzZnVsSW5zZXJ0UmVzcG9uc2UocmVzcDogVCwgb2JzZXJ2ZXI6IFN1YnNjcmliZXI8VD4pIHtcbiAgICB0aGlzLnBhcnNlU3VjY2Vzc2Z1bFJlc3BvbnNlKHJlc3AsIG9ic2VydmVyKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVN1Y2Nlc3NmdWxVcGRhdGVSZXNwb25zZShyZXNwOiBULCBvYnNlcnZlcjogU3Vic2NyaWJlcjxUPikge1xuICAgIHRoaXMucGFyc2VTdWNjZXNzZnVsUmVzcG9uc2UocmVzcCwgb2JzZXJ2ZXIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlU3VjY2Vzc2Z1bERlbGV0ZVJlc3BvbnNlKHJlc3A6IFQsIG9ic2VydmVyOiBTdWJzY3JpYmVyPFQ+KSB7XG4gICAgdGhpcy5wYXJzZVN1Y2Nlc3NmdWxSZXNwb25zZShyZXNwLCBvYnNlcnZlcik7XG4gIH1cblxuICAvKlxuICAgKiBVbnN1Y2Nlc3NmdWwgcmVzcG9uc2UgcGFyc2VycywgdGhlcmUgaXMgb25lIHBhcnNlciBmb3IgZWFjaCBDUlVEIG1ldGhvZCB3aGljaCBjYWxscyB0byB0aGUgY29tbW9uIHBhcnNlci5cbiAgICogVXNlciBjYW4gb3ZlcndyaXRlIHRoZSBjaG9zZW4gbWV0aG9kcyBwYXJzZXJzIG9yIHRoZSBjb21tb24gcGFyc2VyXG4gICAqL1xuICBwcm90ZWN0ZWQgcGFyc2VVbnN1Y2Nlc3NmdWxSZXNwb25zZShlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsIG9ic2VydmVyOiBTdWJzY3JpYmVyPFQ+KSB7XG4gICAgaWYgKHRoaXMuYWRhcHRlcj8uYWRhcHRFcnJvcikge1xuICAgICAgY29uc3QgYWRhcHRlZEVycm9yID0gdGhpcy5hZGFwdGVyLmFkYXB0RXJyb3IoZXJyb3IpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGFkYXB0ZWRFcnJvcikpIHtcbiAgICAgICAgZXJyb3IgPSBhZGFwdGVkRXJyb3I7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucmVzcG9uc2VQYXJzZXIucGFyc2VVbnN1Y2Nlc3NmdWxSZXNwb25zZShlcnJvciwgb2JzZXJ2ZXIsIHRoaXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlVW5zdWNjZXNzZnVsUXVlcnlSZXNwb25zZShyZXNwOiBIdHRwRXJyb3JSZXNwb25zZSwgb2JzZXJ2ZXI6IFN1YnNjcmliZXI8VD4pIHtcbiAgICB0aGlzLnBhcnNlVW5zdWNjZXNzZnVsUmVzcG9uc2UocmVzcCwgb2JzZXJ2ZXIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlVW5zdWNjZXNzZnVsQWR2YW5jZWRRdWVyeVJlc3BvbnNlKHJlc3A6IEh0dHBFcnJvclJlc3BvbnNlLCBvYnNlcnZlcjogU3Vic2NyaWJlcjxUPikge1xuICAgIHRoaXMucGFyc2VVbnN1Y2Nlc3NmdWxSZXNwb25zZShyZXNwLCBvYnNlcnZlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VVbnN1Y2Nlc3NmdWxJbnNlcnRSZXNwb25zZShyZXNwOiBIdHRwRXJyb3JSZXNwb25zZSwgb2JzZXJ2ZXI6IFN1YnNjcmliZXI8VD4pIHtcbiAgICB0aGlzLnBhcnNlVW5zdWNjZXNzZnVsUmVzcG9uc2UocmVzcCwgb2JzZXJ2ZXIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlVW5zdWNjZXNzZnVsVXBkYXRlUmVzcG9uc2UocmVzcDogSHR0cEVycm9yUmVzcG9uc2UsIG9ic2VydmVyOiBTdWJzY3JpYmVyPFQ+KSB7XG4gICAgdGhpcy5wYXJzZVVuc3VjY2Vzc2Z1bFJlc3BvbnNlKHJlc3AsIG9ic2VydmVyKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVVuc3VjY2Vzc2Z1bERlbGV0ZVJlc3BvbnNlKHJlc3A6IEh0dHBFcnJvclJlc3BvbnNlLCBvYnNlcnZlcjogU3Vic2NyaWJlcjxUPikge1xuICAgIHRoaXMucGFyc2VVbnN1Y2Nlc3NmdWxSZXNwb25zZShyZXNwLCBvYnNlcnZlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVmcmVzaEF1dGhUb2tlbihyZXM6IEh0dHBSZXNwb25zZTxhbnk+KSB7XG4gICAgY29uc3QgYXV0aFRva2VuID0gcmVzLmhlYWRlcnMuZ2V0KCdYLUF1dGgtVG9rZW4nKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoYXV0aFRva2VuKSkge1xuICAgICAgdGhpcy5sb2dpblN0b3JhZ2VTZXJ2aWNlLnVwZGF0ZVNlc3Npb25JZChhdXRoVG9rZW4pO1xuICAgIH1cbiAgfVxuXG4gIHNldFBhZ2luYXRpb25Db250ZXh0KGNvbnRleHQ6IFBhZ2luYXRpb25Db250ZXh0KTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0aW9uQ29udGV4dFNlcnZpY2Uuc2V0Q29udGV4dCh7IC4uLnRoaXMuZ2V0UGFnaW5hdGlvbkNvbnRleHQoKSwgLi4uY29udGV4dCB9KTtcbiAgfVxuXG4gIGdldFBhZ2luYXRpb25Db250ZXh0KCk6IFBhZ2luYXRpb25Db250ZXh0IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvbkNvbnRleHRTZXJ2aWNlLmdldENvbnRleHQoKTtcbiAgfVxuXG4gIHJlaW5pdGlhbGl6ZVBhZ2luYXRpb25Db250ZXh0KHBhZ2VTaXplPzogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0aW9uQ29udGV4dFNlcnZpY2UucmVpbml0aWFsaXplQ29udGV4dChwYWdlU2l6ZSk7XG4gIH1cblxufVxuIl19
|