ngx-oauth 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,33 @@
1
- import { InjectionToken } from '@angular/core';
1
+ import { inject, Injectable, InjectionToken } from '@angular/core';
2
+ import * as i0 from "@angular/core";
2
3
  export const SERVER_HOST = new InjectionToken('SERVER_HOST');
3
4
  export const SERVER_PATH = new InjectionToken('SERVER_PATH');
4
5
  export const LOCATION = new InjectionToken('Location');
5
6
  export const STORAGE = new InjectionToken('Storage');
6
7
  export const OAUTH_CONFIG = new InjectionToken('OAuthConfig');
7
8
  export const OAUTH_TOKEN = new InjectionToken('OAuthToken');
9
+ export class OAuthConfig {
10
+ }
11
+ OAuthConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12
+ OAuthConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthConfig, providedIn: 'root', useFactory: () => inject(OAUTH_CONFIG).reduce((p, c) => ({ ...p, ...c }), {}) });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthConfig, decorators: [{
14
+ type: Injectable,
15
+ args: [{
16
+ providedIn: 'root',
17
+ useFactory: () => inject(OAUTH_CONFIG).reduce((p, c) => ({ ...p, ...c }), {})
18
+ }]
19
+ }] });
20
+ export const provideOAuthConfig = (config = {}) => ({
21
+ provide: OAUTH_CONFIG,
22
+ useValue: config,
23
+ multi: true
24
+ });
25
+ export const provideOAuthConfigFactory = (factory, deps) => ({
26
+ provide: OAUTH_CONFIG,
27
+ useFactory: factory,
28
+ deps: deps,
29
+ multi: true
30
+ });
8
31
  export var OAuthType;
9
32
  (function (OAuthType) {
10
33
  OAuthType["RESOURCE"] = "password";
@@ -18,4 +41,4 @@ export var OAuthStatus;
18
41
  OAuthStatus["AUTHORIZED"] = "AUTHORIZED";
19
42
  OAuthStatus["DENIED"] = "DENIED";
20
43
  })(OAuthStatus || (OAuthStatus = {}));
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2F1dGgvc3JjL2xpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQVMsYUFBYSxDQUFDLENBQUM7QUFDckUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFTLGFBQWEsQ0FBQyxDQUFDO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQWMsQ0FBVyxVQUFVLENBQUMsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxjQUFjLENBQVUsU0FBUyxDQUFDLENBQUM7QUFDOUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFjLGFBQWEsQ0FBQyxDQUFDO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBYSxZQUFZLENBQUMsQ0FBQztBQUV4RSxNQUFNLENBQU4sSUFBWSxTQUtYO0FBTEQsV0FBWSxTQUFTO0lBQ25CLGtDQUFxQixDQUFBO0lBQ3JCLHdDQUEyQixDQUFBO0lBQzNCLCtCQUFrQixDQUFBO0lBQ2xCLHFEQUF3QyxDQUFBO0FBQzFDLENBQUMsRUFMVyxTQUFTLEtBQVQsU0FBUyxRQUtwQjtBQW1GRCxNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ3JCLGdEQUFpQyxDQUFBO0lBQ2pDLHdDQUF5QixDQUFBO0lBQ3pCLGdDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgU0VSVkVSX0hPU1QgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignU0VSVkVSX0hPU1QnKTtcbmV4cG9ydCBjb25zdCBTRVJWRVJfUEFUSCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdTRVJWRVJfUEFUSCcpO1xuZXhwb3J0IGNvbnN0IExPQ0FUSU9OID0gbmV3IEluamVjdGlvblRva2VuPExvY2F0aW9uPignTG9jYXRpb24nKTtcbmV4cG9ydCBjb25zdCBTVE9SQUdFID0gbmV3IEluamVjdGlvblRva2VuPFN0b3JhZ2U+KCdTdG9yYWdlJyk7XG5leHBvcnQgY29uc3QgT0FVVEhfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPE9BdXRoQ29uZmlnPignT0F1dGhDb25maWcnKTtcbmV4cG9ydCBjb25zdCBPQVVUSF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPQXV0aFRva2VuPignT0F1dGhUb2tlbicpO1xuXG5leHBvcnQgZW51bSBPQXV0aFR5cGUge1xuICBSRVNPVVJDRSA9ICdwYXNzd29yZCcsXG4gIEFVVEhPUklaQVRJT05fQ09ERSA9ICdjb2RlJyxcbiAgSU1QTElDSVQgPSAndG9rZW4nLFxuICBDTElFTlRfQ1JFREVOVElBTCA9ICdjbGllbnRfY3JlZGVudGlhbHMnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT0F1dGhDb25maWcge1xuICB0eXBlOiBPQXV0aFR5cGU7XG4gIGNvbmZpZzogT0F1dGhUeXBlQ29uZmlnO1xuICBzdG9yYWdlS2V5Pzogc3RyaW5nO1xuICBzdG9yYWdlPzogU3RvcmFnZTtcbiAgaWdub3JlUGF0aHM/OiBSZWdFeHBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbGllbnRDcmVkZW50aWFsQ29uZmlnIHtcbiAgdG9rZW5QYXRoOiBzdHJpbmc7XG4gIHJldm9rZVBhdGg/OiBzdHJpbmc7XG4gIGNsaWVudElkOiBzdHJpbmc7XG4gIGNsaWVudFNlY3JldD86IHN0cmluZztcbiAgc2NvcGU/OiBzdHJpbmc7XG59XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1lbXB0eS1pbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VDb25maWcgZXh0ZW5kcyBDbGllbnRDcmVkZW50aWFsQ29uZmlnIHtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbXBsaWNpdENvbmZpZyB7XG4gIGF1dGhvcml6ZVBhdGg6IHN0cmluZztcbiAgcmV2b2tlUGF0aD86IHN0cmluZztcbiAgY2xpZW50SWQ6IHN0cmluZztcbiAgc2NvcGU/OiBzdHJpbmc7XG4gIGxvZ291dFBhdGg/OiBzdHJpbmc7XG4gIGxvZ291dFJlZGlyZWN0VXJpPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhvcml6YXRpb25Db2RlQ29uZmlnIGV4dGVuZHMgUmVzb3VyY2VDb25maWcge1xuICBhdXRob3JpemVQYXRoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXphdGlvbkNvZGVQS0NFQ29uZmlnIGV4dGVuZHMgQXV0aG9yaXphdGlvbkNvZGVDb25maWcge1xuICBwa2NlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5JZENvbmZpZyB7XG4gIGlzc3VlclBhdGg6IHN0cmluZztcbiAgY2xpZW50SWQ6IHN0cmluZztcbiAgY2xpZW50U2VjcmV0Pzogc3RyaW5nO1xuICBzY29wZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVBhcmFtZXRlcnMge1xuICB1c2VybmFtZTogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltcGxpY2l0UGFyYW1ldGVycyB7XG4gIHJlZGlyZWN0VXJpOiBzdHJpbmc7XG4gIHN0YXRlPzogc3RyaW5nO1xufVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZW1wdHktaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhvcml6YXRpb25Db2RlUGFyYW1ldGVycyBleHRlbmRzIEltcGxpY2l0UGFyYW1ldGVycyB7XG59XG5cbmV4cG9ydCB0eXBlIE9BdXRoUGFyYW1ldGVycyA9IFJlc291cmNlUGFyYW1ldGVycyB8IEF1dGhvcml6YXRpb25Db2RlUGFyYW1ldGVycyB8IEltcGxpY2l0UGFyYW1ldGVycztcbmV4cG9ydCB0eXBlIE9BdXRoVHlwZUNvbmZpZyA9IE9wZW5JZENvbmZpZ1xuICB8IEF1dGhvcml6YXRpb25Db2RlUEtDRUNvbmZpZ1xuICB8IEF1dGhvcml6YXRpb25Db2RlQ29uZmlnXG4gIHwgSW1wbGljaXRDb25maWdcbiAgfCBSZXNvdXJjZUNvbmZpZ1xuICB8IENsaWVudENyZWRlbnRpYWxDb25maWc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT0F1dGhUb2tlbiB7XG4gIGlkX3Rva2VuPzogc3RyaW5nO1xuICBhY2Nlc3NfdG9rZW4/OiBzdHJpbmc7XG4gIHJlZnJlc2hfdG9rZW4/OiBzdHJpbmc7XG4gIHRva2VuX3R5cGU/OiBzdHJpbmc7XG4gIHN0YXRlPzogc3RyaW5nO1xuICBlcnJvcj86IHN0cmluZztcbiAgZXJyb3JfZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGV4cGlyZXNfaW4/OiBudW1iZXIgfCBzdHJpbmc7XG4gIHJlZnJlc2hfZXhwaXJlc19pbj86IG51bWJlcjtcbiAgc2NvcGU/OiBzdHJpbmc7XG4gIGNvZGVWZXJpZmllcj86IHN0cmluZztcbiAgbm9uY2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIE9BdXRoU3RhdHVzIHtcbiAgTk9UX0FVVEhPUklaRUQgPSAnTk9UX0FVVEhPUklaRUQnLFxuICBBVVRIT1JJWkVEID0gJ0FVVEhPUklaRUQnLFxuICBERU5JRUQgPSAnREVOSUVEJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5JZENvbmZpZ3VyYXRpb24ge1xuICBpc3N1ZXI/OiBzdHJpbmc7XG4gIGF1dGhvcml6YXRpb25fZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIGludHJvc3BlY3Rpb25fZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIHRva2VuX2VuZHBvaW50Pzogc3RyaW5nO1xuICB1c2VyaW5mb19lbmRwb2ludD86IHN0cmluZztcbiAgZW5kX3Nlc3Npb25fZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIHJldm9jYXRpb25fZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIHNjb3Blc19zdXBwb3J0ZWQ/OiBzdHJpbmdbXTtcbiAgY29kZV9jaGFsbGVuZ2VfbWV0aG9kc19zdXBwb3J0ZWQ/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VySW5mbyB7XG4gIGVtYWlsPzogc3RyaW5nO1xuICBlbWFpbF92ZXJpZmllZD86IGJvb2xlYW47XG4gIGZhbWlseV9uYW1lPzogc3RyaW5nO1xuICBnaXZlbl9uYW1lPzogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBwcmVmZXJyZWRfdXNlcm5hbWU/OiBzdHJpbmc7XG4gIHN1Yj86IHN0cmluZztcbiAgYWRkcmVzcz86IG9iamVjdDtcbiAgcGljdHVyZT86IHN0cmluZztcbiAgbG9jYWxlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludHJvc3BlY3RJbmZvIGV4dGVuZHMgVXNlckluZm8ge1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIHNjb3BlOiBzdHJpbmc7XG4gIGNsaWVudF9pZD86IHN0cmluZztcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgZXhwOiBudW1iZXI7XG59XG4iXX0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtb2F1dGgvc3JjL2xpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBZ0IsTUFBTSxlQUFlLENBQUM7O0FBRWpHLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBUyxhQUFhLENBQUMsQ0FBQztBQUNyRSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQVMsYUFBYSxDQUFDLENBQUM7QUFDckUsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksY0FBYyxDQUFXLFVBQVUsQ0FBQyxDQUFDO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLGNBQWMsQ0FBVSxTQUFTLENBQUMsQ0FBQztBQUM5RCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQWdCLGFBQWEsQ0FBQyxDQUFDO0FBQzdFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBYSxZQUFZLENBQUMsQ0FBQztBQU14RSxNQUFNLE9BQWdCLFdBQVc7O3dHQUFYLFdBQVc7NEdBQVgsV0FBVyxjQUhuQixNQUFNLGNBQ04sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBRSxDQUFDOzJGQUV2RCxXQUFXO2tCQUpoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO29CQUNsQixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2lCQUM1RTs7QUFTRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFNBQXNCLEVBQUUsRUFBaUIsRUFBRSxDQUFDLENBQUM7SUFDOUUsT0FBTyxFQUFFLFlBQVk7SUFDckIsUUFBUSxFQUFFLE1BQU07SUFDaEIsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDLENBQUE7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLE9BQWlCLEVBQUUsSUFBWSxFQUFtQixFQUFFLENBQUMsQ0FBQztJQUM5RixPQUFPLEVBQUUsWUFBWTtJQUNyQixVQUFVLEVBQUUsT0FBTztJQUNuQixJQUFJLEVBQUUsSUFBSTtJQUNWLEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFOLElBQVksU0FLWDtBQUxELFdBQVksU0FBUztJQUNuQixrQ0FBcUIsQ0FBQTtJQUNyQix3Q0FBMkIsQ0FBQTtJQUMzQiwrQkFBa0IsQ0FBQTtJQUNsQixxREFBd0MsQ0FBQTtBQUMxQyxDQUFDLEVBTFcsU0FBUyxLQUFULFNBQVMsUUFLcEI7QUEyRUQsTUFBTSxDQUFOLElBQVksV0FJWDtBQUpELFdBQVksV0FBVztJQUNyQixnREFBaUMsQ0FBQTtJQUNqQyx3Q0FBeUIsQ0FBQTtJQUN6QixnQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSlcsV0FBVyxLQUFYLFdBQVcsUUFJdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZhY3RvcnlQcm92aWRlciwgaW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgVmFsdWVQcm92aWRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBTRVJWRVJfSE9TVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdTRVJWRVJfSE9TVCcpO1xuZXhwb3J0IGNvbnN0IFNFUlZFUl9QQVRIID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ1NFUlZFUl9QQVRIJyk7XG5leHBvcnQgY29uc3QgTE9DQVRJT04gPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9jYXRpb24+KCdMb2NhdGlvbicpO1xuZXhwb3J0IGNvbnN0IFNUT1JBR0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3RvcmFnZT4oJ1N0b3JhZ2UnKTtcbmV4cG9ydCBjb25zdCBPQVVUSF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48T0F1dGhDb25maWdbXT4oJ09BdXRoQ29uZmlnJyk7XG5leHBvcnQgY29uc3QgT0FVVEhfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48T0F1dGhUb2tlbj4oJ09BdXRoVG9rZW4nKTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIHVzZUZhY3Rvcnk6ICgpID0+IGluamVjdChPQVVUSF9DT05GSUcpLnJlZHVjZSgocCwgYykgPT4gKHsuLi5wLCAuLi5jfSksIHt9KVxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBPQXV0aENvbmZpZyB7XG4gIHR5cGU/OiBPQXV0aFR5cGU7XG4gIGNvbmZpZz86IE9BdXRoVHlwZUNvbmZpZztcbiAgc3RvcmFnZUtleT86IHN0cmluZztcbiAgc3RvcmFnZT86IFN0b3JhZ2U7XG4gIGlnbm9yZVBhdGhzPzogUmVnRXhwW107XG59XG5cbmV4cG9ydCBjb25zdCBwcm92aWRlT0F1dGhDb25maWcgPSAoY29uZmlnOiBPQXV0aENvbmZpZyA9IHt9KTogVmFsdWVQcm92aWRlciA9PiAoe1xuICBwcm92aWRlOiBPQVVUSF9DT05GSUcsXG4gIHVzZVZhbHVlOiBjb25maWcsXG4gIG11bHRpOiB0cnVlXG59KVxuXG5leHBvcnQgY29uc3QgcHJvdmlkZU9BdXRoQ29uZmlnRmFjdG9yeSA9IChmYWN0b3J5OiBGdW5jdGlvbiwgZGVwcz86IGFueVtdKTogRmFjdG9yeVByb3ZpZGVyID0+ICh7XG4gIHByb3ZpZGU6IE9BVVRIX0NPTkZJRyxcbiAgdXNlRmFjdG9yeTogZmFjdG9yeSxcbiAgZGVwczogZGVwcyxcbiAgbXVsdGk6IHRydWVcbn0pO1xuXG5leHBvcnQgZW51bSBPQXV0aFR5cGUge1xuICBSRVNPVVJDRSA9ICdwYXNzd29yZCcsXG4gIEFVVEhPUklaQVRJT05fQ09ERSA9ICdjb2RlJyxcbiAgSU1QTElDSVQgPSAndG9rZW4nLFxuICBDTElFTlRfQ1JFREVOVElBTCA9ICdjbGllbnRfY3JlZGVudGlhbHMnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpZW50Q3JlZGVudGlhbENvbmZpZyB7XG4gIHRva2VuUGF0aDogc3RyaW5nO1xuICByZXZva2VQYXRoPzogc3RyaW5nO1xuICBjbGllbnRJZDogc3RyaW5nO1xuICBjbGllbnRTZWNyZXQ/OiBzdHJpbmc7XG4gIHNjb3BlPzogc3RyaW5nO1xufVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZW1wdHktaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQ29uZmlnIGV4dGVuZHMgQ2xpZW50Q3JlZGVudGlhbENvbmZpZyB7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1wbGljaXRDb25maWcge1xuICBhdXRob3JpemVQYXRoOiBzdHJpbmc7XG4gIHJldm9rZVBhdGg/OiBzdHJpbmc7XG4gIGNsaWVudElkOiBzdHJpbmc7XG4gIHNjb3BlPzogc3RyaW5nO1xuICBsb2dvdXRQYXRoPzogc3RyaW5nO1xuICBsb2dvdXRSZWRpcmVjdFVyaT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRob3JpemF0aW9uQ29kZUNvbmZpZyBleHRlbmRzIFJlc291cmNlQ29uZmlnIHtcbiAgYXV0aG9yaXplUGF0aDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhvcml6YXRpb25Db2RlUEtDRUNvbmZpZyBleHRlbmRzIEF1dGhvcml6YXRpb25Db2RlQ29uZmlnIHtcbiAgcGtjZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcGVuSWRDb25maWcge1xuICBpc3N1ZXJQYXRoOiBzdHJpbmc7XG4gIGNsaWVudElkOiBzdHJpbmc7XG4gIGNsaWVudFNlY3JldD86IHN0cmluZztcbiAgc2NvcGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VQYXJhbWV0ZXJzIHtcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbXBsaWNpdFBhcmFtZXRlcnMge1xuICByZWRpcmVjdFVyaTogc3RyaW5nO1xuICBzdGF0ZT86IHN0cmluZztcbn1cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWVtcHR5LWludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBBdXRob3JpemF0aW9uQ29kZVBhcmFtZXRlcnMgZXh0ZW5kcyBJbXBsaWNpdFBhcmFtZXRlcnMge1xufVxuXG5leHBvcnQgdHlwZSBPQXV0aFBhcmFtZXRlcnMgPSBSZXNvdXJjZVBhcmFtZXRlcnMgfCBBdXRob3JpemF0aW9uQ29kZVBhcmFtZXRlcnMgfCBJbXBsaWNpdFBhcmFtZXRlcnM7XG5leHBvcnQgdHlwZSBPQXV0aFR5cGVDb25maWcgPSBPcGVuSWRDb25maWdcbiAgfCBBdXRob3JpemF0aW9uQ29kZVBLQ0VDb25maWdcbiAgfCBBdXRob3JpemF0aW9uQ29kZUNvbmZpZ1xuICB8IEltcGxpY2l0Q29uZmlnXG4gIHwgUmVzb3VyY2VDb25maWdcbiAgfCBDbGllbnRDcmVkZW50aWFsQ29uZmlnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9BdXRoVG9rZW4ge1xuICBpZF90b2tlbj86IHN0cmluZztcbiAgYWNjZXNzX3Rva2VuPzogc3RyaW5nO1xuICByZWZyZXNoX3Rva2VuPzogc3RyaW5nO1xuICB0b2tlbl90eXBlPzogc3RyaW5nO1xuICBzdGF0ZT86IHN0cmluZztcbiAgZXJyb3I/OiBzdHJpbmc7XG4gIGVycm9yX2Rlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBleHBpcmVzX2luPzogbnVtYmVyIHwgc3RyaW5nO1xuICByZWZyZXNoX2V4cGlyZXNfaW4/OiBudW1iZXI7XG4gIHNjb3BlPzogc3RyaW5nO1xuICBjb2RlVmVyaWZpZXI/OiBzdHJpbmc7XG4gIG5vbmNlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBPQXV0aFN0YXR1cyB7XG4gIE5PVF9BVVRIT1JJWkVEID0gJ05PVF9BVVRIT1JJWkVEJyxcbiAgQVVUSE9SSVpFRCA9ICdBVVRIT1JJWkVEJyxcbiAgREVOSUVEID0gJ0RFTklFRCdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcGVuSWRDb25maWd1cmF0aW9uIHtcbiAgaXNzdWVyPzogc3RyaW5nO1xuICBhdXRob3JpemF0aW9uX2VuZHBvaW50Pzogc3RyaW5nO1xuICBpbnRyb3NwZWN0aW9uX2VuZHBvaW50Pzogc3RyaW5nO1xuICB0b2tlbl9lbmRwb2ludD86IHN0cmluZztcbiAgdXNlcmluZm9fZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIGVuZF9zZXNzaW9uX2VuZHBvaW50Pzogc3RyaW5nO1xuICByZXZvY2F0aW9uX2VuZHBvaW50Pzogc3RyaW5nO1xuICBzY29wZXNfc3VwcG9ydGVkPzogc3RyaW5nW107XG4gIGNvZGVfY2hhbGxlbmdlX21ldGhvZHNfc3VwcG9ydGVkPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckluZm8ge1xuICBlbWFpbD86IHN0cmluZztcbiAgZW1haWxfdmVyaWZpZWQ/OiBib29sZWFuO1xuICBmYW1pbHlfbmFtZT86IHN0cmluZztcbiAgZ2l2ZW5fbmFtZT86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcHJlZmVycmVkX3VzZXJuYW1lPzogc3RyaW5nO1xuICBzdWI/OiBzdHJpbmc7XG4gIGFkZHJlc3M/OiBvYmplY3Q7XG4gIHBpY3R1cmU/OiBzdHJpbmc7XG4gIGxvY2FsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRyb3NwZWN0SW5mbyBleHRlbmRzIFVzZXJJbmZvIHtcbiAgYWN0aXZlOiBib29sZWFuO1xuICBzY29wZTogc3RyaW5nO1xuICBjbGllbnRfaWQ/OiBzdHJpbmc7XG4gIHVzZXJuYW1lOiBzdHJpbmc7XG4gIGV4cDogbnVtYmVyO1xufVxuIl19
@@ -2,7 +2,7 @@ import { NgModule, Optional, PLATFORM_ID } from '@angular/core';
2
2
  import { FormsModule } from '@angular/forms';
3
3
  import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
4
4
  import { RouterModule } from '@angular/router';
5
- import { OAUTH_CONFIG, LOCATION, SERVER_HOST, SERVER_PATH, STORAGE } from './models';
5
+ import { LOCATION, SERVER_HOST, SERVER_PATH, STORAGE, provideOAuthConfigFactory } from './models';
6
6
  import { OAuthService } from './services/oauth.service';
7
7
  import { OAuthLoginComponent } from './components/login/oauth-login.component';
8
8
  import { CommonModule, isPlatformBrowser } from '@angular/common';
@@ -68,7 +68,7 @@ const defaultConfig = (storage) => {
68
68
  };
69
69
  };
70
70
  export class OAuthModule {
71
- static forRoot(config) {
71
+ static forRoot(config = {}) {
72
72
  return {
73
73
  ngModule: OAuthModule,
74
74
  providers: [
@@ -76,18 +76,10 @@ export class OAuthModule {
76
76
  StorageService,
77
77
  OAuthService,
78
78
  OAuthInterceptorService,
79
- {
80
- provide: OAUTH_CONFIG,
81
- useFactory(storage) {
82
- return {
83
- ...defaultConfig(storage),
84
- ...config,
85
- };
86
- },
87
- deps: [
88
- STORAGE
89
- ]
90
- }
79
+ provideOAuthConfigFactory((storage) => ({
80
+ ...defaultConfig(storage),
81
+ ...config
82
+ }), [STORAGE]),
91
83
  ]
92
84
  };
93
85
  }
@@ -97,12 +89,7 @@ OAuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "1
97
89
  FormsModule,
98
90
  HttpClientModule,
99
91
  RouterModule], exports: [OAuthLoginComponent] });
100
- OAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthModule, providers: [
101
- LocationService,
102
- StorageService,
103
- OAuthService,
104
- OAuthInterceptorService,
105
- ], imports: [CommonModule,
92
+ OAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthModule, imports: [CommonModule,
106
93
  FormsModule,
107
94
  HttpClientModule,
108
95
  RouterModule] });
@@ -116,13 +103,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
116
103
  RouterModule,
117
104
  ],
118
105
  declarations: [OAuthLoginComponent],
119
- exports: [OAuthLoginComponent],
120
- providers: [
121
- LocationService,
122
- StorageService,
123
- OAuthService,
124
- OAuthInterceptorService,
125
- ]
106
+ exports: [OAuthLoginComponent]
126
107
  }]
127
108
  }] });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9hdXRoL3NyYy9saWIvb2F1dGgubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0IsUUFBUSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQWMsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNoRyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDOztBQUU5RCxNQUFNLFlBQVksR0FBRyxDQUFDLFVBQWtCLEVBQUUsVUFBa0IsRUFBWSxFQUFFO0lBQ3hFLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2xHLE1BQU0sRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFB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O21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixZQUFZO3FCQUNiO29CQUNELFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQyxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDOUIsU0FBUyxFQUFFO3dCQUNULGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLHVCQUF1QjtxQkFDeEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBPcHRpb25hbCwgUExBVEZPUk1fSUR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtIVFRQX0lOVEVSQ0VQVE9SUywgSHR0cENsaWVudE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge09BdXRoQ29uZmlnLCBPQVVUSF9DT05GSUcsIExPQ0FUSU9OLCBTRVJWRVJfSE9TVCwgU0VSVkVSX1BBVEgsIFNUT1JBR0V9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7T0F1dGhTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2VzL29hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHtPQXV0aExvZ2luQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvbG9naW4vb2F1dGgtbG9naW4uY29tcG9uZW50JztcbmltcG9ydCB7Q29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3Nlcn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7T0F1dGhJbnRlcmNlcHRvcn0gZnJvbSAnLi9zZXJ2aWNlcy9vYXV0aC5pbnRlcmNlcHRvcic7XG5cbmNvbnN0IG1vY2tMb2NhdGlvbiA9IChzZXJ2ZXJIb3N0OiBzdHJpbmcsIHNlcnZlclBhdGg6IHN0cmluZyk6IExvY2F0aW9uID0+IHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChzZXJ2ZXJIb3N0ICYmIHNlcnZlclBhdGggPyBgJHtzZXJ2ZXJIb3N0fSR7c2VydmVyUGF0aH1gIDogJ2h0dHA6Ly9sb2NhbGhvc3QnKTtcbiAgY29uc3Qge2hyZWYsIG9yaWdpbiwgcHJvdG9jb2wsIGhvc3QsIGhvc3RuYW1lLCBwb3J0LCBwYXRobmFtZSwgc2VhcmNoLCBoYXNofSA9IHVybDtcbiAgcmV0dXJuIHtcbiAgICBocmVmLCBvcmlnaW4sIHByb3RvY29sLCBob3N0LCBob3N0bmFtZSwgcG9ydCwgcGF0aG5hbWUsIHNlYXJjaCwgaGFzaCxcbiAgICByZWxvYWQoKSB7XG4gICAgfSxcbiAgICBhc3NpZ24odTogc3RyaW5nKSB7XG4gICAgfSxcbiAgICBhbmNlc3Rvck9yaWdpbnM6IHt9IGFzIGFueSxcbiAgICByZXBsYWNlKHU6IHN0cmluZykge1xuICAgIH1cbiAgfTtcbn07XG5cbmNvbnN0IExvY2F0aW9uU2VydmljZSA9IHtcbiAgcHJvdmlkZTogTE9DQVRJT04sXG4gIHVzZUZhY3RvcnkocGxhdGZvcm1JZDogT2JqZWN0LCBzZXJ2ZXJIb3N0OiBzdHJpbmcsIHNlcnZlclBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSA/IGxvY2F0aW9uIDogbW9ja0xvY2F0aW9uKHNlcnZlckhvc3QsIHNlcnZlclBhdGgpO1xuICB9LFxuICBkZXBzOiBbXG4gICAgUExBVEZPUk1fSUQsXG4gICAgW25ldyBPcHRpb25hbCgpLCBTRVJWRVJfSE9TVF0sXG4gICAgW25ldyBPcHRpb25hbCgpLCBTRVJWRVJfUEFUSF1cbiAgXVxufTtcblxuY29uc3QgbW9ja1N0b3JhZ2U6IFN0b3JhZ2UgPSB7XG4gIGNsZWFyKCkge1xuICB9LFxuICBnZXRJdGVtKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG4gIGtleShpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpIHtcbiAgfSxcbiAgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICB9LFxuICBsZW5ndGg6IDBcbn07XG5cbmNvbnN0IFN0b3JhZ2VTZXJ2aWNlID0ge1xuICBwcm92aWRlOiBTVE9SQUdFLFxuICB1c2VGYWN0b3J5KHBsYXRmb3JtSWQ6IE9iamVjdCkge1xuICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSA/IGxvY2FsU3RvcmFnZSA6IG1vY2tTdG9yYWdlO1xuICB9LFxuICBkZXBzOiBbUExBVEZPUk1fSURdXG59O1xuXG5jb25zdCBPQXV0aEludGVyY2VwdG9yU2VydmljZSA9IHtcbiAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXG4gIHVzZUNsYXNzOiBPQXV0aEludGVyY2VwdG9yLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmNvbnN0IGRlZmF1bHRDb25maWcgPSAoc3RvcmFnZTogU3RvcmFnZSkgPT4ge1xuICByZXR1cm4ge1xuICAgIHN0b3JhZ2UsXG4gICAgc3RvcmFnZUtleTogJ3Rva2VuJyxcbiAgICBpZ25vcmVQYXRoczogW11cbiAgfTtcbn07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSHR0cENsaWVudE1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW09BdXRoTG9naW5Db21wb25lbnRdLFxuICBleHBvcnRzOiBbT0F1dGhMb2dpbkNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW1xuICAgIExvY2F0aW9uU2VydmljZSxcbiAgICBTdG9yYWdlU2VydmljZSxcbiAgICBPQXV0aFNlcnZpY2UsXG4gICAgT0F1dGhJbnRlcmNlcHRvclNlcnZpY2UsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgT0F1dGhNb2R1bGUge1xuXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogT0F1dGhDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE9BdXRoTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBPQXV0aE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBMb2NhdGlvblNlcnZpY2UsXG4gICAgICAgIFN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICBPQXV0aFNlcnZpY2UsXG4gICAgICAgIE9BdXRoSW50ZXJjZXB0b3JTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogT0FVVEhfQ09ORklHLFxuICAgICAgICAgIHVzZUZhY3Rvcnkoc3RvcmFnZTogU3RvcmFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uZGVmYXVsdENvbmZpZyhzdG9yYWdlKSxcbiAgICAgICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlcHM6IFtcbiAgICAgICAgICAgIFNUT1JBR0VcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0=
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW9hdXRoL3NyYy9saWIvb2F1dGgubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0IsUUFBUSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQWMsUUFBUSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzdHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOEJBQThCLENBQUM7O0FBRTlELE1BQU0sWUFBWSxHQUFHLENBQUMsVUFBa0IsRUFBRSxVQUFrQixFQUFZLEVBQUU7SUFDeEUsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDbEcsTUFBTSxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxF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QVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQyxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBPcHRpb25hbCwgUExBVEZPUk1fSUR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtIVFRQX0lOVEVSQ0VQVE9SUywgSHR0cENsaWVudE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge09BdXRoQ29uZmlnLCBMT0NBVElPTiwgU0VSVkVSX0hPU1QsIFNFUlZFUl9QQVRILCBTVE9SQUdFLCBwcm92aWRlT0F1dGhDb25maWdGYWN0b3J5fSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQge09BdXRoU2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcy9vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7T0F1dGhMb2dpbkNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL2xvZ2luL29hdXRoLWxvZ2luLmNvbXBvbmVudCc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge09BdXRoSW50ZXJjZXB0b3J9IGZyb20gJy4vc2VydmljZXMvb2F1dGguaW50ZXJjZXB0b3InO1xuXG5jb25zdCBtb2NrTG9jYXRpb24gPSAoc2VydmVySG9zdDogc3RyaW5nLCBzZXJ2ZXJQYXRoOiBzdHJpbmcpOiBMb2NhdGlvbiA9PiB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoc2VydmVySG9zdCAmJiBzZXJ2ZXJQYXRoID8gYCR7c2VydmVySG9zdH0ke3NlcnZlclBhdGh9YCA6ICdodHRwOi8vbG9jYWxob3N0Jyk7XG4gIGNvbnN0IHtocmVmLCBvcmlnaW4sIHByb3RvY29sLCBob3N0LCBob3N0bmFtZSwgcG9ydCwgcGF0aG5hbWUsIHNlYXJjaCwgaGFzaH0gPSB1cmw7XG4gIHJldHVybiB7XG4gICAgaHJlZiwgb3JpZ2luLCBwcm90b2NvbCwgaG9zdCwgaG9zdG5hbWUsIHBvcnQsIHBhdGhuYW1lLCBzZWFyY2gsIGhhc2gsXG4gICAgcmVsb2FkKCkge1xuICAgIH0sXG4gICAgYXNzaWduKHU6IHN0cmluZykge1xuICAgIH0sXG4gICAgYW5jZXN0b3JPcmlnaW5zOiB7fSBhcyBhbnksXG4gICAgcmVwbGFjZSh1OiBzdHJpbmcpIHtcbiAgICB9XG4gIH07XG59O1xuXG5jb25zdCBMb2NhdGlvblNlcnZpY2UgPSB7XG4gIHByb3ZpZGU6IExPQ0FUSU9OLFxuICB1c2VGYWN0b3J5KHBsYXRmb3JtSWQ6IE9iamVjdCwgc2VydmVySG9zdDogc3RyaW5nLCBzZXJ2ZXJQYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkgPyBsb2NhdGlvbiA6IG1vY2tMb2NhdGlvbihzZXJ2ZXJIb3N0LCBzZXJ2ZXJQYXRoKTtcbiAgfSxcbiAgZGVwczogW1xuICAgIFBMQVRGT1JNX0lELFxuICAgIFtuZXcgT3B0aW9uYWwoKSwgU0VSVkVSX0hPU1RdLFxuICAgIFtuZXcgT3B0aW9uYWwoKSwgU0VSVkVSX1BBVEhdXG4gIF1cbn07XG5cbmNvbnN0IG1vY2tTdG9yYWdlOiBTdG9yYWdlID0ge1xuICBjbGVhcigpIHtcbiAgfSxcbiAgZ2V0SXRlbShrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBudWxsO1xuICB9LFxuICBrZXkoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9LFxuICByZW1vdmVJdGVtKGtleTogc3RyaW5nKSB7XG4gIH0sXG4gIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgfSxcbiAgbGVuZ3RoOiAwXG59O1xuXG5jb25zdCBTdG9yYWdlU2VydmljZSA9IHtcbiAgcHJvdmlkZTogU1RPUkFHRSxcbiAgdXNlRmFjdG9yeShwbGF0Zm9ybUlkOiBPYmplY3QpIHtcbiAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkgPyBsb2NhbFN0b3JhZ2UgOiBtb2NrU3RvcmFnZTtcbiAgfSxcbiAgZGVwczogW1BMQVRGT1JNX0lEXVxufTtcblxuY29uc3QgT0F1dGhJbnRlcmNlcHRvclNlcnZpY2UgPSB7XG4gIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxuICB1c2VDbGFzczogT0F1dGhJbnRlcmNlcHRvcixcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5jb25zdCBkZWZhdWx0Q29uZmlnID0gKHN0b3JhZ2U6IFN0b3JhZ2UpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBzdG9yYWdlLFxuICAgIHN0b3JhZ2VLZXk6ICd0b2tlbicsXG4gICAgaWdub3JlUGF0aHM6IFtdXG4gIH07XG59O1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEh0dHBDbGllbnRNb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtPQXV0aExvZ2luQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW09BdXRoTG9naW5Db21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIE9BdXRoTW9kdWxlIHtcblxuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IE9BdXRoQ29uZmlnID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE9BdXRoTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBPQXV0aE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBMb2NhdGlvblNlcnZpY2UsXG4gICAgICAgIFN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICBPQXV0aFNlcnZpY2UsXG4gICAgICAgIE9BdXRoSW50ZXJjZXB0b3JTZXJ2aWNlLFxuICAgICAgICBwcm92aWRlT0F1dGhDb25maWdGYWN0b3J5KChzdG9yYWdlOiBTdG9yYWdlKSA9PiAoe1xuICAgICAgICAgIC4uLmRlZmF1bHRDb25maWcoc3RvcmFnZSksXG4gICAgICAgICAgLi4uY29uZmlnXG4gICAgICAgIH0pLCBbU1RPUkFHRV0pLFxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -2,10 +2,11 @@ import { Inject, Injectable } from '@angular/core';
2
2
  import { HttpHeaders, HttpParams } from '@angular/common/http';
3
3
  import { catchError, concatMap, delay, filter, map, shareReplay, switchMap, tap } from 'rxjs/operators';
4
4
  import { EMPTY, from, noop, of, ReplaySubject } from 'rxjs';
5
- import { LOCATION, OAUTH_CONFIG, OAuthStatus, OAuthType } from '../models';
5
+ import { LOCATION, OAuthStatus, OAuthType } from '../models';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/common/http";
8
- import * as i2 from "@angular/common";
8
+ import * as i2 from "../models";
9
+ import * as i3 from "@angular/common";
9
10
  const arrToString = (buf) => buf.reduce((s, b) => s + String.fromCharCode(b), '');
10
11
  const base64url = (str) => btoa(str)
11
12
  .replace(/\+/g, '-')
@@ -60,7 +61,7 @@ export class OAuthService {
60
61
  if (config && config.clientId) {
61
62
  const { issuerPath, scope } = config;
62
63
  if (issuerPath) {
63
- return this.http.get(`${issuerPath}/.well-known/openid-configuration`).pipe(tap(v => this.set(this.type, {
64
+ return this.http.get(`${issuerPath}/.well-known/openid-configuration`).pipe(tap(v => this.type && this.set(this.type, {
64
65
  ...v.authorization_endpoint && { authorizePath: v.authorization_endpoint } || {},
65
66
  ...v.token_endpoint && { tokenPath: v.token_endpoint } || {},
66
67
  ...v.revocation_endpoint && { revokePath: v.revocation_endpoint } || {},
@@ -391,15 +392,12 @@ export class OAuthService {
391
392
  }
392
393
  }
393
394
  }
394
- OAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthService, deps: [{ token: i1.HttpClient }, { token: i0.NgZone }, { token: OAUTH_CONFIG }, { token: LOCATION }, { token: i2.Location }], target: i0.ɵɵFactoryTarget.Injectable });
395
+ OAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthService, deps: [{ token: i1.HttpClient }, { token: i0.NgZone }, { token: i2.OAuthConfig }, { token: LOCATION }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Injectable });
395
396
  OAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthService });
396
397
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthService, decorators: [{
397
398
  type: Injectable
398
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i0.NgZone }, { type: undefined, decorators: [{
399
- type: Inject,
400
- args: [OAUTH_CONFIG]
401
- }] }, { type: Location, decorators: [{
399
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i0.NgZone }, { type: i2.OAuthConfig }, { type: Location, decorators: [{
402
400
  type: Inject,
403
401
  args: [LOCATION]
404
- }] }, { type: i2.Location }]; } });
405
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vYXV0aC9zcmMvbGliL3NlcnZpY2VzL29hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFhLFdBQVcsRUFBRSxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RHLE9BQU8sRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsYUFBYSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFHTCxRQUFRLEVBQ1IsWUFBWSxFQUdaLFdBQVcsRUFFWCxTQUFTLEVBR1YsTUFBTSxXQUFXLENBQUM7Ozs7QUFHbkIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFlLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUU5RixNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztLQUN6QyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztLQUNuQixPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztLQUNuQixPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRXJCLE1BQU0sWUFBWSxHQUFHLENBQUMsU0FB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RSxFQUFFO1lBQzNCLE1BQU0sRUFBRSxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsR0FBRyxPQUFPLEdBQUcsYUFBYSxHQUFHLE9BQU8sR0FBRyxhQUFhLENBQUMsQ0FBQztZQUMvRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQUVPLFNBQVMsQ0FBQyxVQUF5QztRQUN6RCxNQUFNLEVBQUMsS0FBSyxFQUFDLEdBQUcsVUFBaUIsQ0FBQztRQUNsQyxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQzs7eUdBMVlVLFlBQVksa0VBb0JILFlBQVksYUFDWixRQUFROzZHQXJCakIsWUFBWTsyRkFBWixZQUFZO2tCQUR4QixVQUFVOzswQkFxQkksTUFBTTsyQkFBQyxZQUFZOzhCQUNnQixRQUFROzBCQUEzQyxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgY29uY2F0TWFwLCBkZWxheSwgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtFTVBUWSwgZnJvbSwgbm9vcCwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQXV0aG9yaXphdGlvbkNvZGVQYXJhbWV0ZXJzLFxuICBJbXBsaWNpdFBhcmFtZXRlcnMsXG4gIExPQ0FUSU9OLFxuICBPQVVUSF9DT05GSUcsXG4gIE9BdXRoQ29uZmlnLFxuICBPQXV0aFBhcmFtZXRlcnMsXG4gIE9BdXRoU3RhdHVzLFxuICBPQXV0aFRva2VuLFxuICBPQXV0aFR5cGUsXG4gIE9BdXRoVHlwZUNvbmZpZywgT3BlbklkQ29uZmlnLCBPcGVuSWRDb25maWd1cmF0aW9uLFxuICBSZXNvdXJjZVBhcmFtZXRlcnMsIFVzZXJJbmZvXG59IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge0xvY2F0aW9uIGFzIExvY2F0aW9uMn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuY29uc3QgYXJyVG9TdHJpbmcgPSAoYnVmOiBVaW50OEFycmF5KSA9PiBidWYucmVkdWNlKChzLCBiKSA9PiBzICsgU3RyaW5nLmZyb21DaGFyQ29kZShiKSwgJycpO1xuXG5jb25zdCBiYXNlNjR1cmwgPSAoc3RyOiBzdHJpbmcpID0+IGJ0b2Eoc3RyKVxuICAucmVwbGFjZSgvXFwrL2csICctJylcbiAgLnJlcGxhY2UoL1xcLy9nLCAnXycpXG4gIC5yZXBsYWNlKC89L2csICcnKTtcblxuY29uc3QgcmFuZG9tU3RyaW5nID0gKGxlbmd0aDogbnVtYmVyID0gNDgpID0+IHtcbiAgY29uc3QgYnVmZiA9IGFyclRvU3RyaW5nKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkobGVuZ3RoICogMikpKTtcbiAgcmV0dXJuIGJhc2U2NHVybChidWZmKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKTtcbn07XG5cbmNvbnN0IHBrY2UgPSBhc3luYyAodmFsdWU6IHN0cmluZykgPT4ge1xuICBjb25zdCBidWZmID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoJ1NIQS0yNTYnLCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsdWUpKTtcbiAgcmV0dXJuIGJhc2U2NHVybChhcnJUb1N0cmluZyhuZXcgVWludDhBcnJheShidWZmKSkpO1xufTtcblxuY29uc3QgUkVRVUVTVF9IRUFERVIgPSBuZXcgSHR0cEhlYWRlcnMoeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30pO1xuXG5jb25zdCBwYXJzZU9hdXRoVXJpID0gKGhhc2g6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBudWxsID0+IHtcbiAgY29uc3QgcmVnZXggPSAvKFteJj1dKyk9KFteJl0qKS9nO1xuICBjb25zdCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgbGV0IG07XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1jb25kaXRpb25hbC1hc3NpZ25tZW50XG4gIHdoaWxlICgobSA9IHJlZ2V4LmV4ZWMoaGFzaCkpICE9PSBudWxsKSB7XG4gICAgcGFyYW1zW2RlY29kZVVSSUNvbXBvbmVudChtWzFdKV0gPSBkZWNvZGVVUklDb21wb25lbnQobVsyXSk7XG4gIH1cbiAgaWYgKE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbmNvbnN0IGp3dCA9ICh0b2tlbjogc3RyaW5nKSA9PiBKU09OLnBhcnNlKGF0b2IodG9rZW4uc3BsaXQoJy4nKVsxXSkpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT0F1dGhTZXJ2aWNlIHtcblxuICBwcml2YXRlIF90b2tlbjogT0F1dGhUb2tlbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9zdGF0dXMgPSBPQXV0aFN0YXR1cy5OT1RfQVVUSE9SSVpFRDtcbiAgcHJpdmF0ZSB0aW1lcjogYW55O1xuICBzdGF0ZSQ6IFJlcGxheVN1YmplY3Q8c3RyaW5nPiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICBzdGF0dXMkOiBSZXBsYXlTdWJqZWN0PE9BdXRoU3RhdHVzPiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICB1c2VySW5mbyQ6IE9ic2VydmFibGU8VXNlckluZm8+ID0gdGhpcy5zdGF0dXMkLnBpcGUoXG4gICAgZmlsdGVyKHMgPT4gcyA9PT0gT0F1dGhTdGF0dXMuQVVUSE9SSVpFRCksXG4gICAgbWFwKCgpID0+IHtcbiAgICAgIGNvbnN0IHtjb25maWd9ID0gdGhpcy5hdXRoQ29uZmlnIGFzIGFueTtcbiAgICAgIHJldHVybiBjb25maWcudXNlclBhdGg7XG4gICAgfSksXG4gICAgZmlsdGVyKHAgPT4gISFwKSxcbiAgICBzd2l0Y2hNYXAocGF0aCA9PiB0aGlzLmh0dHAuZ2V0PFVzZXJJbmZvPihwYXRoKSksXG4gICAgc2hhcmVSZXBsYXkoKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgICAgICAgICAgIEBJbmplY3QoT0FVVEhfQ09ORklHKSBwcml2YXRlIGF1dGhDb25maWc6IE9BdXRoQ29uZmlnLFxuICAgICAgICAgICAgICBASW5qZWN0KExPQ0FUSU9OKSBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsb2NhdGlvblNlcnZpY2U6IExvY2F0aW9uMikge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5pbml0KCkpOyAvLyBkZWNvdXBsZSBmb3IgaHR0cCBpbnRlcmNlcHRvclxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgb2F1dGggY29uZmlnIGZvciBpbml0aWFsaXplLiBJZiBPcGVuSWQgd2l0aCBpc3N1ZXJQYXRoIGlzIGNvbmZpZ3VyZWQgdGhlbiBjb25maWd1cmUgZnJvbSBzZXJ2ZXIgb3BlbmlkIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgY29uZmlnJCgpIHtcbiAgICBsZXQge2NvbmZpZ30gPSB0aGlzLmF1dGhDb25maWc7XG4gICAgaWYgKGNvbmZpZyAmJiBjb25maWcuY2xpZW50SWQpIHtcbiAgICAgIGNvbnN0IHtpc3N1ZXJQYXRoLCBzY29wZX0gPSBjb25maWcgYXMgT3BlbklkQ29uZmlnO1xuICAgICAgaWYgKGlzc3VlclBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8T3BlbklkQ29uZmlndXJhdGlvbj4oYCR7aXNzdWVyUGF0aH0vLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb25gKS5waXBlKFxuICAgICAgICAgIHRhcCh2ID0+IHRoaXMuc2V0KHRoaXMudHlwZSwge1xuICAgICAgICAgICAgLi4udi5hdXRob3JpemF0aW9uX2VuZHBvaW50ICYmIHthdXRob3JpemVQYXRoOiB2LmF1dGhvcml6YXRpb25fZW5kcG9pbnR9IHx8IHt9LFxuICAgICAgICAgICAgLi4udi50b2tlbl9lbmRwb2ludCAmJiB7dG9rZW5QYXRoOiB2LnRva2VuX2VuZHBvaW50fSB8fCB7fSxcbiAgICAgICAgICAgIC4uLnYucmV2b2NhdGlvbl9lbmRwb2ludCAmJiB7cmV2b2tlUGF0aDogdi5yZXZvY2F0aW9uX2VuZHBvaW50fSB8fCB7fSxcbiAgICAgICAgICAgIC4uLnYuY29kZV9jaGFsbGVuZ2VfbWV0aG9kc19zdXBwb3J0ZWQgJiYge3BrY2U6IHYuY29kZV9jaGFsbGVuZ2VfbWV0aG9kc19zdXBwb3J0ZWQuaW5kZXhPZignUzI1NicpID4gLTF9IHx8IHt9LFxuICAgICAgICAgICAgLi4udi51c2VyaW5mb19lbmRwb2ludCAmJiB7dXNlclBhdGg6IHYudXNlcmluZm9fZW5kcG9pbnR9IHx8IHt9LFxuICAgICAgICAgICAgLi4udi5pbnRyb3NwZWN0aW9uX2VuZHBvaW50ICYmIHtpbnRyb3NwZWN0aW9uUGF0aDogdi5pbnRyb3NwZWN0aW9uX2VuZHBvaW50fSB8fCB7fSxcbiAgICAgICAgICAgIC4uLnYuZW5kX3Nlc3Npb25fZW5kcG9pbnQgJiYge2xvZ291dFBhdGg6IHYuZW5kX3Nlc3Npb25fZW5kcG9pbnR9IHx8IHt9LFxuICAgICAgICAgICAgLi4uc2NvcGUgJiYge30gfHwge3Njb3BlOiAnb3BlbmlkJ31cbiAgICAgICAgICB9IGFzIGFueSkpLFxuICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmF1dGhDb25maWcuY29uZmlnKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9mKGNvbmZpZyk7XG4gICAgfVxuICAgIGNvbnNvbGUud2FybignY2xpZW50SWQgaXMgbWlzc2luZyBpbiBvYXV0aCBjb25maWcnKTtcbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdC4gV2lsbCBjaGVjayB0aGUgdXJsIGltcGxpY2l0IG9yIGF1dGhvcml6YXRpb24gZmxvdyBvciBleGlzdGluZyBzYXZlZCB0b2tlbi5cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGluaXQoKTogdm9pZCB7XG4gICAgY29uc3Qge2hhc2gsIHNlYXJjaCwgb3JpZ2luLCBwYXRobmFtZX0gPSB0aGlzLmxvY2F0aW9uO1xuICAgIGNvbnN0IGlzSW1wbGljaXRSZWRpcmVjdCA9IGhhc2ggJiYgLyhhY2Nlc3NfdG9rZW49KXwoZXJyb3I9KS8udGVzdChoYXNoKTtcbiAgICBjb25zdCBpc0F1dGhDb2RlUmVkaXJlY3QgPSBzZWFyY2ggJiYgLyhjb2RlPSl8KGVycm9yPSkvLnRlc3Qoc2VhcmNoKTtcbiAgICBjb25zdCB7c3RvcmFnZUtleX0gPSB0aGlzLmF1dGhDb25maWc7XG4gICAgY29uc3Qgc2F2ZWRUb2tlbiA9IHN0b3JhZ2VLZXkgJiYgdGhpcy5hdXRoQ29uZmlnLnN0b3JhZ2UgJiYgdGhpcy5hdXRoQ29uZmlnLnN0b3JhZ2Vbc3RvcmFnZUtleV0gJiZcbiAgICAgIEpTT04ucGFyc2UodGhpcy5hdXRoQ29uZmlnLnN0b3JhZ2Vbc3RvcmFnZUtleV0pO1xuICAgIHRoaXMuY29uZmlnJC5zdWJzY3JpYmUoY29uZmlnID0+IHtcbiAgICAgIGlmIChpc0ltcGxpY2l0UmVkaXJlY3QpIHtcbiAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IHBhcnNlT2F1dGhVcmkoaGFzaC5zdWJzdHIoMSkpO1xuICAgICAgICB0aGlzLnRva2VuID0gcGFyYW1ldGVycztcbiAgICAgICAgdGhpcy5zdGF0dXMgPSB0aGlzLmNoZWNrUmVzcG9uc2Uoc2F2ZWRUb2tlbiwgcGFyYW1ldGVycykgJiYgT0F1dGhTdGF0dXMuQVVUSE9SSVpFRCB8fCBPQXV0aFN0YXR1cy5ERU5JRUQ7XG4gICAgICB9IGVsc2UgaWYgKGlzQXV0aENvZGVSZWRpcmVjdCkge1xuICAgICAgICBjb25zdCBwYXJhbWV0ZXJzID0gcGFyc2VPYXV0aFVyaShzZWFyY2guc3Vic3RyKDEpKTtcbiAgICAgICAgaWYgKCF0aGlzLmNoZWNrUmVzcG9uc2Uoc2F2ZWRUb2tlbiwgcGFyYW1ldGVycykpIHtcbiAgICAgICAgICB0aGlzLnRva2VuID0gcGFyYW1ldGVycztcbiAgICAgICAgICB0aGlzLnN0YXR1cyA9IE9BdXRoU3RhdHVzLkRFTklFRDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXdQYXJhbWV0ZXJzU3RyaW5nID0gdGhpcy5nZXRDbGVhbmVkVW5TZWFyY2hQYXJhbWV0ZXJzKCk7XG4gICAgICAgICAgY29uc3Qge2NsaWVudElkLCBjbGllbnRTZWNyZXQsIHRva2VuUGF0aCwgc2NvcGV9ID0gY29uZmlnIGFzIGFueTtcbiAgICAgICAgICBjb25zdCBjb2RlVmVyaWZpZXIgPSBzYXZlZFRva2VuICYmIHNhdmVkVG9rZW4uY29kZVZlcmlmaWVyO1xuICAgICAgICAgIHRoaXMuaHR0cC5wb3N0KHRva2VuUGF0aCwgbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgICAgICAgZnJvbU9iamVjdDoge1xuICAgICAgICAgICAgICBjb2RlOiBwYXJhbWV0ZXJzPy5bJ2NvZGUnXSxcbiAgICAgICAgICAgICAgY2xpZW50X2lkOiBjbGllbnRJZCxcbiAgICAgICAgICAgICAgLi4uY2xpZW50U2VjcmV0ICYmIHtjbGllbnRfc2VjcmV0OiBjbGllbnRTZWNyZXR9IHx8IHt9LFxuICAgICAgICAgICAgICByZWRpcmVjdF91cmk6IGAke29yaWdpbn0ke3BhdGhuYW1lfWAsXG4gICAgICAgICAgICAgIGdyYW50X3R5cGU6ICdhdXRob3JpemF0aW9uX2NvZGUnLFxuICAgICAgICAgICAgICAuLi5zY29wZSAmJiB7c2NvcGV9IHx8IHt9LFxuICAgICAgICAgICAgICAuLi5jb2RlVmVyaWZpZXIgJiYge2NvZGVfdmVyaWZpZXI6IGNvZGVWZXJpZmllcn0gfHwge31cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSwge2hlYWRlcnM6IFJFUVVFU1RfSEVBREVSfSkucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnRva2VuID0gZXJyO1xuICAgICAgICAgICAgICB0aGlzLnN0YXR1cyA9IE9BdXRoU3RhdHVzLkRFTklFRDtcbiAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvblNlcnZpY2UucmVwbGFjZVN0YXRlKGAke3BhdGhuYW1lfSR7bmV3UGFyYW1ldGVyc1N0cmluZ31gKTtcbiAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApLnN1YnNjcmliZSh0b2tlbiA9PiB7XG4gICAgICAgICAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgICAgICAgICB0aGlzLnN0YXR1cyA9IE9BdXRoU3RhdHVzLkFVVEhPUklaRUQ7XG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uU2VydmljZS5yZXBsYWNlU3RhdGUoYCR7cGF0aG5hbWV9JHtuZXdQYXJhbWV0ZXJzU3RyaW5nfWApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHNhdmVkVG9rZW4pIHtcbiAgICAgICAgdGhpcy5fdG9rZW4gPSBzYXZlZFRva2VuO1xuICAgICAgICBjb25zdCB7YWNjZXNzX3Rva2VuLCByZWZyZXNoX3Rva2VuLCBlcnJvcn0gPSBzYXZlZFRva2VuO1xuICAgICAgICBpZiAoYWNjZXNzX3Rva2VuKSB7XG4gICAgICAgICAgaWYgKHJlZnJlc2hfdG9rZW4pIHsgLy8gZm9yY2UgcmVmcmVzaCBzaW5jZSBtaWdodCBiZSBhIG1hbnVhbCBwYWdlIHJlZnJlc2hcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gT0F1dGhTdGF0dXMuQVVUSE9SSVpFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSBlcnJvciAmJiBPQXV0aFN0YXR1cy5ERU5JRUQgfHwgT0F1dGhTdGF0dXMuTk9UX0FVVEhPUklaRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gT0F1dGhTdGF0dXMuTk9UX0FVVEhPUklaRUQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsb2dpbihwYXJhbWV0ZXJzPzogT0F1dGhQYXJhbWV0ZXJzKSB7XG4gICAgaWYgKHRoaXMuaXNSZXNvdXJjZVR5cGUocGFyYW1ldGVycyBhcyBSZXNvdXJjZVBhcmFtZXRlcnMpKSB7XG4gICAgICB0aGlzLnJlc291cmNlTG9naW4ocGFyYW1ldGVycyBhcyBSZXNvdXJjZVBhcmFtZXRlcnMpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0F1dGhvcml6YXRpb25Db2RlVHlwZShwYXJhbWV0ZXJzIGFzIEF1dGhvcml6YXRpb25Db2RlUGFyYW1ldGVycykpIHtcbiAgICAgIGF3YWl0IHRoaXMuYXV0aG9yaXphdGlvbkNvZGVMb2dpbihwYXJhbWV0ZXJzIGFzIEF1dGhvcml6YXRpb25Db2RlUGFyYW1ldGVycyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzSW1wbGljaXRUeXBlKHBhcmFtZXRlcnMgYXMgSW1wbGljaXRQYXJhbWV0ZXJzKSkge1xuICAgICAgYXdhaXQgdGhpcy5pbXBsaWNpdExvZ2luKHBhcmFtZXRlcnMgYXMgSW1wbGljaXRQYXJhbWV0ZXJzKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNDbGllbnRDcmVkZW50aWFsVHlwZSgpKSB7XG4gICAgICB0aGlzLmNsaWVudENyZWRlbnRpYWxMb2dpbigpO1xuICAgIH1cbiAgfVxuXG4gIGxvZ291dCh1c2VMb2dvdXRVcmw/OiBib29sZWFuKSB7XG4gICAgdGhpcy5yZXZva2UoKTtcbiAgICB0aGlzLnRva2VuID0gbnVsbDtcbiAgICB0aGlzLnN0YXR1cyA9IE9BdXRoU3RhdHVzLk5PVF9BVVRIT1JJWkVEO1xuICAgIGNvbnN0IHtsb2dvdXRQYXRoLCBsb2dvdXRSZWRpcmVjdFVyaX0gPSB0aGlzLmF1dGhDb25maWcuY29uZmlnIGFzIGFueTtcbiAgICBpZiAodXNlTG9nb3V0VXJsICYmIGxvZ291dFBhdGgpIHtcbiAgICAgIGNvbnN0IHtvcmlnaW4sIHBhdGhuYW1lfSA9IHRoaXMubG9jYXRpb247XG4gICAgICBjb25zdCBjdXJyZW50UGF0aCA9IGAke29yaWdpbn0ke3BhdGhuYW1lfWA7XG4gICAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2UoYCR7bG9nb3V0UGF0aH0/cG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpPSR7bG9nb3V0UmVkaXJlY3RVcmkgfHwgY3VycmVudFBhdGh9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV2b2tlKCkge1xuICAgIGNvbnN0IHtyZXZva2VQYXRoLCBjbGllbnRJZCwgY2xpZW50U2VjcmV0fSA9IHRoaXMuYXV0aENvbmZpZy5jb25maWcgYXMgYW55O1xuICAgIGlmIChyZXZva2VQYXRoKSB7XG4gICAgICBjb25zdCB7YWNjZXNzX3Rva2VuLCByZWZyZXNoX3Rva2VufSA9IHRoaXMudG9rZW4gYXMgT0F1dGhUb2tlbjtcbiAgICAgIGNvbnN0IHRvUmV2b2tlID0gW107XG4gICAgICBpZiAoYWNjZXNzX3Rva2VuKSB7XG4gICAgICAgIHRvUmV2b2tlLnB1c2goe1xuICAgICAgICAgIC4uLmNsaWVudElkICYmIHtjbGllbnRfaWQ6IGNsaWVudElkfSB8fCB7fSxcbiAgICAgICAgICAuLi5jbGllbnRTZWNyZXQgJiYge2NsaWVudF9zZWNyZXQ6IGNsaWVudFNlY3JldH0gfHwge30sXG4gICAgICAgICAgdG9rZW46IGFjY2Vzc190b2tlbixcbiAgICAgICAgICB0b2tlbl90eXBlX2hpbnQ6ICdhY2Nlc3NfdG9rZW4nXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHJlZnJlc2hfdG9rZW4pIHtcbiAgICAgICAgdG9SZXZva2UucHVzaCh7XG4gICAgICAgICAgLi4uY2xpZW50SWQgJiYge2NsaWVudF9pZDogY2xpZW50SWR9IHx8IHt9LFxuICAgICAgICAgIC4uLmNsaWVudFNlY3JldCAmJiB7Y2xpZW50X3NlY3JldDogY2xpZW50U2VjcmV0fSB8fCB7fSxcbiAgICAgICAgICB0b2tlbjogcmVmcmVzaF90b2tlbixcbiAgICAgICAgICB0b2tlbl90eXBlX2hpbnQ6ICdyZWZyZXNoX3Rva2VuJ1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGZyb20odG9SZXZva2UpLnBpcGUoXG4gICAgICAgIGNvbmNhdE1hcChvID0+IG9mKG8pLnBpcGUoZGVsYXkoMzAwKSkpLCAvLyBzcGFjZSByZXF1ZXN0IHRvIGF2b2lkIGNhbmNlbGxhdGlvblxuICAgICAgICBzd2l0Y2hNYXAobyA9PiB0aGlzLmh0dHAucG9zdChyZXZva2VQYXRoLCBuZXcgSHR0cFBhcmFtcyh7ZnJvbU9iamVjdDogb30pKSksXG4gICAgICApLnN1YnNjcmliZShub29wKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc3RhdHVzKCk6IE9BdXRoU3RhdHVzIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHVzO1xuICB9XG5cbiAgc2V0IHN0YXR1cyhzdGF0dXMpIHtcbiAgICB0aGlzLl9zdGF0dXMgPSBzdGF0dXM7XG4gICAgdGhpcy5zdGF0dXMkLm5leHQoc3RhdHVzKTtcbiAgfVxuXG4gIHNldCh0eXBlOiBPQXV0aFR5cGUsIGNvbmZpZz86IE9BdXRoVHlwZUNvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuYXV0aENvbmZpZy50eXBlID0gdHlwZTtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLmF1dGhDb25maWcuY29uZmlnID0ge1xuICAgICAgICAuLi50aGlzLmF1dGhDb25maWcuY29uZmlnLFxuICAgICAgICAuLi5jb25maWdcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgZ2V0IHR5cGUoKTogT0F1dGhUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoQ29uZmlnLnR5cGU7XG4gIH1cblxuICBnZXQgaWdub3JlUGF0aHMoKTogUmVnRXhwW10ge1xuICAgIHJldHVybiB0aGlzLmF1dGhDb25maWcuaWdub3JlUGF0aHMgfHwgW107XG4gIH1cblxuICBwcml2YXRlIHJlc291cmNlTG9naW4ocGFyYW1ldGVyczogUmVzb3VyY2VQYXJhbWV0ZXJzKSB7XG4gICAgY29uc3Qge2NsaWVudElkLCBjbGllbnRTZWNyZXQsIHRva2VuUGF0aCwgc2NvcGV9ID0gdGhpcy5hdXRoQ29uZmlnLmNvbmZpZyBhcyBhbnk7XG4gICAgY29uc3Qge3VzZXJuYW1lLCBwYXNzd29yZH0gPSBwYXJhbWV0ZXJzO1xuICAgIHRoaXMuaHR0cC5wb3N0KHRva2VuUGF0aCwgbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgZnJvbU9iamVjdDoge1xuICAgICAgICBjbGllbnRfaWQ6IGNsaWVudElkLFxuICAgICAgICAuLi5jbGllbnRTZWNyZXQgJiYge2NsaWVudF9zZWNyZXQ6IGNsaWVudFNlY3JldH0gfHwge30sXG4gICAgICAgIGdyYW50X3R5cGU6IE9BdXRoVHlwZS5SRVNPVVJDRSxcbiAgICAgICAgLi4uc2NvcGUgJiYge3Njb3BlfSB8fCB7fSxcbiAgICAgICAgdXNlcm5hbWUsXG4gICAgICAgIHBhc3N3b3JkXG4gICAgICB9XG4gICAgfSksIHtoZWFkZXJzOiBSRVFVRVNUX0hFQURFUn0pLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgIHRoaXMudG9rZW4gPSBlcnI7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gT0F1dGhTdGF0dXMuREVOSUVEO1xuICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICB9KVxuICAgICkuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICB0aGlzLnRva2VuID0gcGFyYW1zO1xuICAgICAgdGhpcy5zdGF0dXMgPSBPQXV0aFN0YXR1cy5BVVRIT1JJWkVEO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhdXRob3JpemF0aW9uQ29kZUxvZ2luKHBhcmFtZXRlcnM6IEF1dGhvcml6YXRpb25Db2RlUGFyYW1ldGVycykge1xuICAgIGNvbnN0IGF1dGhVcmwgPSBhd2FpdCB0aGlzLnRvQXV0aG9yaXphdGlvblVybChwYXJhbWV0ZXJzLCBPQXV0aFR5cGUuQVVUSE9SSVpBVElPTl9DT0RFKTtcbiAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2UoYXV0aFVybCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGltcGxpY2l0TG9naW4ocGFyYW1ldGVyczogSW1wbGljaXRQYXJhbWV0ZXJzKSB7XG4gICAgY29uc3QgYXV0aFVybCA9IGF3YWl0IHRoaXMudG9BdXRob3JpemF0aW9uVXJsKHBhcmFtZXRlcnMsIE9BdXRoVHlwZS5JTVBMSUNJVCk7XG4gICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlKGF1dGhVcmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGllbnRDcmVkZW50aWFsTG9naW4oKSB7XG4gICAgY29uc3Qge2NsaWVudElkLCBjbGllbnRTZWNyZXQsIHRva2VuUGF0aCwgc2NvcGV9ID0gdGhpcy5hdXRoQ29uZmlnLmNvbmZpZyBhcyBhbnk7XG4gICAgdGhpcy5odHRwLnBvc3QodG9rZW5QYXRoLCBuZXcgSHR0cFBhcmFtcyh7XG4gICAgICBmcm9tT2JqZWN0OiB7XG4gICAgICAgIGNsaWVudF9pZDogY2xpZW50SWQsXG4gICAgICAgIGNsaWVudF9zZWNyZXQ6IGNsaWVudFNlY3JldCxcbiAgICAgICAgZ3JhbnRfdHlwZTogT0F1dGhUeXBlLkNMSUVOVF9DUkVERU5USUFMLFxuICAgICAgICAuLi5zY29wZSA/IHtzY29wZX0gOiB7fSxcbiAgICAgIH1cbiAgICB9KSwge2hlYWRlcnM6IFJFUVVFU1RfSEVBREVSfSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICB0aGlzLnRva2VuID0gZXJyO1xuICAgICAgICB0aGlzLnN0YXR1cyA9IE9BdXRoU3RhdHVzLkRFTklFRDtcbiAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgfSlcbiAgICApLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgdGhpcy50b2tlbiA9IHBhcmFtcztcbiAgICAgIHRoaXMuc3RhdHVzID0gT0F1dGhTdGF0dXMuQVVUSE9SSVpFRDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNDbGllbnRDcmVkZW50aWFsVHlwZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoQ29uZmlnLnR5cGUgPT09IE9BdXRoVHlwZS5DTElFTlRfQ1JFREVOVElBTDtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZXNvdXJjZVR5cGUocGFyYW1ldGVycz86IFJlc291cmNlUGFyYW1ldGVycyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhDb25maWcudHlwZSA9PT0gT0F1dGhUeXBlLlJFU09VUkNFICYmICEhcGFyYW1ldGVycz8ucGFzc3dvcmQ7XG4gIH1cblxuICBwcml2YXRlIGlzSW1wbGljaXRUeXBlKHBhcmFtZXRlcnM/OiBJbXBsaWNpdFBhcmFtZXRlcnMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoQ29uZmlnLnR5cGUgPT09IE9BdXRoVHlwZS5JTVBMSUNJVCAmJiAhIXBhcmFtZXRlcnM/LnJlZGlyZWN0VXJpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0F1dGhvcml6YXRpb25Db2RlVHlwZShwYXJhbWV0ZXJzPzogQXV0aG9yaXphdGlvbkNvZGVQYXJhbWV0ZXJzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aENvbmZpZy50eXBlID09PSBPQXV0aFR5cGUuQVVUSE9SSVpBVElPTl9DT0RFICYmICEhcGFyYW1ldGVycz8ucmVkaXJlY3RVcmk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHRvQXV0aG9yaXphdGlvblVybChwYXJhbWV0ZXJzOiBBdXRob3JpemF0aW9uQ29kZVBhcmFtZXRlcnMgfCBJbXBsaWNpdFBhcmFtZXRlcnMsIHJlc3BvbnNlVHlwZTogT0F1dGhUeXBlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCB7Y29uZmlnfSA9IHRoaXMuYXV0aENvbmZpZyBhcyBhbnk7XG4gICAgbGV0IGF1dGhvcml6YXRpb25VcmwgPSBgJHtjb25maWcuYXV0aG9yaXplUGF0aH1gO1xuICAgIGF1dGhvcml6YXRpb25VcmwgKz0gY29uZmlnLmF1dGhvcml6ZVBhdGguaW5jbHVkZXMoJz8nKSAmJiAnJicgfHwgJz8nO1xuICAgIGF1dGhvcml6YXRpb25VcmwgKz0gYGNsaWVudF9pZD0ke2NvbmZpZy5jbGllbnRJZH1gO1xuICAgIGF1dGhvcml6YXRpb25VcmwgKz0gYCZyZWRpcmVjdF91cmk9JHtlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVycy5yZWRpcmVjdFVyaSl9YDtcbiAgICBhdXRob3JpemF0aW9uVXJsICs9IGAmcmVzcG9uc2VfdHlwZT0ke3Jlc3BvbnNlVHlwZX1gO1xuICAgIGF1dGhvcml6YXRpb25VcmwgKz0gYCZzY29wZT0ke2VuY29kZVVSSUNvbXBvbmVudChjb25maWcuc2NvcGUgfHwgJycpfWA7XG4gICAgYXV0aG9yaXphdGlvblVybCArPSBgJnN0YXRlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlcnMuc3RhdGUgfHwgJycpfWA7XG4gICAgcmV0dXJuIGAke2F1dGhvcml6YXRpb25Vcmx9JHt0aGlzLmdlbmVyYXRlTm9uY2UoY29uZmlnKX0ke2F3YWl0IHRoaXMuZ2VuZXJhdGVDb2RlQ2hhbGxlbmdlKGNvbmZpZyl9YDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2VuZXJhdGVDb2RlQ2hhbGxlbmdlKGNvbmZpZzogYW55KSB7XG4gICAgaWYgKGNvbmZpZy5wa2NlKSB7XG4gICAgICBjb25zdCBjb2RlVmVyaWZpZXIgPSByYW5kb21TdHJpbmcoKTtcbiAgICAgIHRoaXMudG9rZW4gPSB7Li4udGhpcy50b2tlbiwgY29kZVZlcmlmaWVyfTtcbiAgICAgIHJldHVybiBgJmNvZGVfY2hhbGxlbmdlPSR7YXdhaXQgcGtjZShjb2RlVmVyaWZpZXIpfSZjb2RlX2NoYWxsZW5nZV9tZXRob2Q9UzI1NmA7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVOb25jZShjb25maWc6IGFueSkge1xuICAgIGlmIChjb25maWcgJiYgY29uZmlnLnNjb3BlICYmIGNvbmZpZy5zY29wZS5pbmRleE9mKCdvcGVuaWQnKSA+IC0xKSB7XG4gICAgICBjb25zdCBub25jZSA9IHJhbmRvbVN0cmluZygxMCk7XG4gICAgICB0aGlzLnRva2VuID0gey4uLnRoaXMudG9rZW4sIG5vbmNlfTtcbiAgICAgIHJldHVybiBgJm5vbmNlPSR7bm9uY2V9YDtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1Jlc3BvbnNlKHRva2VuOiBhbnksIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBudWxsKSB7XG4gICAgdGhpcy5lbWl0U3RhdGUocGFyYW1ldGVycyk7XG4gICAgdGhpcy5jbGVhbkxvY2F0aW9uSGFzaCgpO1xuICAgIGlmICghcGFyYW1ldGVycyB8fCBwYXJhbWV0ZXJzWydlcnJvciddKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0b2tlbiAmJiB0b2tlbi5ub25jZSAmJiBwYXJhbWV0ZXJzWydhY2Nlc3NfdG9rZW4nXSkge1xuICAgICAgY29uc3Qgand0VG9rZW4gPSBqd3QocGFyYW1ldGVyc1snYWNjZXNzX3Rva2VuJ10pO1xuICAgICAgcmV0dXJuIHRva2VuLm5vbmNlID09PSBqd3RUb2tlbi5ub25jZTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtZXRlcnNbJ2FjY2Vzc190b2tlbiddIHx8IHBhcmFtZXRlcnNbJ2NvZGUnXTtcbiAgfVxuXG4gIHNldCB0b2tlbih0b2tlbjogT0F1dGhUb2tlbiB8IG51bGwpIHtcbiAgICB0aGlzLl90b2tlbiA9IHRva2VuO1xuICAgIGNvbnN0IHtzdG9yYWdlS2V5fSA9IHRoaXMuYXV0aENvbmZpZztcbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuYXV0aENvbmZpZy5zdG9yYWdlW3N0b3JhZ2VLZXldID0gSlNPTi5zdHJpbmdpZnkodGhpcy50b2tlbik7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XG4gICAgICBpZiAodGhpcy50b2tlbiAmJiB0aGlzLnRva2VuLmV4cGlyZXNfaW4pIHtcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sIE51bWJlcih0aGlzLnRva2VuPy5leHBpcmVzX2luKSAqIDEwMDApO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZGVsZXRlIHRoaXMuYXV0aENvbmZpZy5zdG9yYWdlW3N0b3JhZ2VLZXldO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0b2tlbigpIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW47XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hUb2tlbigpIHtcbiAgICBjb25zdCB7dG9rZW5QYXRoLCBjbGllbnRJZCwgY2xpZW50U2VjcmV0LCBzY29wZX0gPSB0aGlzLmF1dGhDb25maWcuY29uZmlnIGFzIGFueTtcbiAgICBjb25zdCB7cmVmcmVzaF90b2tlbn0gPSB0aGlzLnRva2VuIGFzIE9BdXRoVG9rZW47XG4gICAgaWYgKHRva2VuUGF0aCAmJiByZWZyZXNoX3Rva2VuKSB7XG4gICAgICB0aGlzLmh0dHAucG9zdCh0b2tlblBhdGgsIG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgICAgZnJvbU9iamVjdDoge1xuICAgICAgICAgIGNsaWVudF9pZDogY2xpZW50SWQsXG4gICAgICAgICAgLi4uY2xpZW50U2VjcmV0ICYmIHtjbGllbnRfc2VjcmV0OiBjbGllbnRTZWNyZXR9IHx8IHt9LFxuICAgICAgICAgIGdyYW50X3R5cGU6ICdyZWZyZXNoX3Rva2VuJyxcbiAgICAgICAgICByZWZyZXNoX3Rva2VuLFxuICAgICAgICAgIC4uLnNjb3BlICYmIHtzY29wZX0gfHwge30sXG4gICAgICAgIH1cbiAgICAgIH0pLCB7aGVhZGVyczogUkVRVUVTVF9IRUFERVJ9KS5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvZ291dCgpO1xuICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgIHRoaXMudG9rZW4gPSB7XG4gICAgICAgICAgLi4udGhpcy50b2tlbixcbiAgICAgICAgICAuLi5wYXJhbXNcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBPQXV0aFN0YXR1cy5BVVRIT1JJWkVEO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDbGVhbmVkVW5TZWFyY2hQYXJhbWV0ZXJzKCk6IHN0cmluZyB7XG4gICAgY29uc3Qge3NlYXJjaH0gPSB0aGlzLmxvY2F0aW9uO1xuICAgIGxldCBzZWFyY2hTdHJpbmcgPSBzZWFyY2guc3Vic3RyKDEpO1xuICAgIGNvbnN0IGhhc2hLZXlzID0gWydjb2RlJywgJ3N0YXRlJywgJ2Vycm9yJywgJ2Vycm9yX2Rlc2NyaXB0aW9uJywgJ3Nlc3Npb25fc3RhdGUnLCAnc2NvcGUnLCAnYXV0aHVzZXInLCAncHJvbXB0J107XG4gICAgaGFzaEtleXMuZm9yRWFjaCgoaGFzaEtleSkgPT4ge1xuICAgICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKCcmJyArIGhhc2hLZXkgKyAnKD1bXiZdKik/fF4nICsgaGFzaEtleSArICcoPVteJl0qKT8mPycpO1xuICAgICAgc2VhcmNoU3RyaW5nID0gc2VhcmNoU3RyaW5nLnJlcGxhY2UocmUsICcnKTtcbiAgICB9KTtcbiAgICByZXR1cm4gc2VhcmNoU3RyaW5nLmxlbmd0aCAmJiBgPyR7c2VhcmNoU3RyaW5nfWAgfHwgJyc7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuTG9jYXRpb25IYXNoKCkge1xuICAgIGNvbnN0IHtoYXNofSA9IHRoaXMubG9jYXRpb247XG4gICAgbGV0IGN1ckhhc2ggPSBoYXNoLnN1YnN0cigxKTtcbiAgICBjb25zdCBoYXNoS2V5cyA9IFsnYWNjZXNzX3Rva2VuJywgJ3Rva2VuX3R5cGUnLCAnZXhwaXJlc19pbicsICdzY29wZScsICdzdGF0ZScsICdlcnJvcicsICdlcnJvcl9kZXNjcmlwdGlvbicsICdzZXNzaW9uX3N0YXRlJywgJ25vbmNlJ107XG4gICAgaGFzaEtleXMuZm9yRWFjaCgoaGFzaEtleSkgPT4ge1xuICAgICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKCcmJyArIGhhc2hLZXkgKyAnKD1bXiZdKik/fF4nICsgaGFzaEtleSArICcoPVteJl0qKT8mPycpO1xuICAgICAgY3VySGFzaCA9IGN1ckhhc2gucmVwbGFjZShyZSwgJycpO1xuICAgIH0pO1xuICAgIHRoaXMubG9jYXRpb24uaGFzaCA9IGN1ckhhc2g7XG4gIH1cblxuICBwcml2YXRlIGVtaXRTdGF0ZShwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCkge1xuICAgIGNvbnN0IHtzdGF0ZX0gPSBwYXJhbWV0ZXJzIGFzIGFueTtcbiAgICBpZiAoc3RhdGUpIHtcbiAgICAgIHRoaXMuc3RhdGUkLm5leHQoc3RhdGUpO1xuICAgIH1cbiAgfVxufVxuIl19
402
+ }] }, { type: i3.Location }]; } });
403
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1vYXV0aC9zcmMvbGliL3NlcnZpY2VzL29hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFhLFdBQVcsRUFBRSxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RHLE9BQU8sRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsYUFBYSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFHTCxRQUFRLEVBR1IsV0FBVyxFQUVYLFNBQVMsRUFHVixNQUFNLFdBQVcsQ0FBQzs7Ozs7QUFHbkIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFlLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUU5RixNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztLQUN6QyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztLQUNuQixPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztLQUNuQixPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRXJCLE1BQU0sWUFBWSxHQUFHLENBQUMsU0FBaUIsRUFBRSxF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LE9BQU8sRUFBRSxFQUFFO1lBQzNCLE1BQU0sRUFBRSxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsR0FBRyxPQUFPLEdBQUcsYUFBYSxHQUFHLE9BQU8sR0FBRyxhQUFhLENBQUMsQ0FBQztZQUMvRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQUVPLFNBQVMsQ0FBQyxVQUF5QztRQUN6RCxNQUFNLEVBQUMsS0FBSyxFQUFDLEdBQUcsVUFBaUIsQ0FBQztRQUNsQyxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQzs7eUdBMVlVLFlBQVksNkZBcUJILFFBQVE7NkdBckJqQixZQUFZOzJGQUFaLFlBQVk7a0JBRHhCLFVBQVU7a0lBc0J1QyxRQUFROzBCQUEzQyxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgY29uY2F0TWFwLCBkZWxheSwgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtFTVBUWSwgZnJvbSwgbm9vcCwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQXV0aG9yaXphdGlvbkNvZGVQYXJhbWV0ZXJzLFxuICBJbXBsaWNpdFBhcmFtZXRlcnMsXG4gIExPQ0FUSU9OLFxuICBPQXV0aENvbmZpZyxcbiAgT0F1dGhQYXJhbWV0ZXJzLFxuICBPQXV0aFN0YXR1cyxcbiAgT0F1dGhUb2tlbixcbiAgT0F1dGhUeXBlLFxuICBPQXV0aFR5cGVDb25maWcsIE9wZW5JZENvbmZpZywgT3BlbklkQ29uZmlndXJhdGlvbixcbiAgUmVzb3VyY2VQYXJhbWV0ZXJzLCBVc2VySW5mb1xufSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtMb2NhdGlvbiBhcyBMb2NhdGlvbjJ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmNvbnN0IGFyclRvU3RyaW5nID0gKGJ1ZjogVWludDhBcnJheSkgPT4gYnVmLnJlZHVjZSgocywgYikgPT4gcyArIFN0cmluZy5mcm9tQ2hhckNvZGUoYiksICcnKTtcblxuY29uc3QgYmFzZTY0dXJsID0gKHN0cjogc3RyaW5nKSA9PiBidG9hKHN0cilcbiAgLnJlcGxhY2UoL1xcKy9nLCAnLScpXG4gIC5yZXBsYWNlKC9cXC8vZywgJ18nKVxuICAucmVwbGFjZSgvPS9nLCAnJyk7XG5cbmNvbnN0IHJhbmRvbVN0cmluZyA9IChsZW5ndGg6IG51bWJlciA9IDQ4KSA9PiB7XG4gIGNvbnN0IGJ1ZmYgPSBhcnJUb1N0cmluZyhjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KGxlbmd0aCAqIDIpKSk7XG4gIHJldHVybiBiYXNlNjR1cmwoYnVmZikuc3Vic3RyaW5nKDAsIGxlbmd0aCk7XG59O1xuXG5jb25zdCBwa2NlID0gYXN5bmMgKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgYnVmZiA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCdTSEEtMjU2JywgbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHZhbHVlKSk7XG4gIHJldHVybiBiYXNlNjR1cmwoYXJyVG9TdHJpbmcobmV3IFVpbnQ4QXJyYXkoYnVmZikpKTtcbn07XG5cbmNvbnN0IFJFUVVFU1RfSEVBREVSID0gbmV3IEh0dHBIZWFkZXJzKHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCd9KTtcblxuY29uc3QgcGFyc2VPYXV0aFVyaSA9IChoYXNoOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCA9PiB7XG4gIGNvbnN0IHJlZ2V4ID0gLyhbXiY9XSspPShbXiZdKikvZztcbiAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGxldCBtO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uZGl0aW9uYWwtYXNzaWdubWVudFxuICB3aGlsZSAoKG0gPSByZWdleC5leGVjKGhhc2gpKSAhPT0gbnVsbCkge1xuICAgIHBhcmFtc1tkZWNvZGVVUklDb21wb25lbnQobVsxXSldID0gZGVjb2RlVVJJQ29tcG9uZW50KG1bMl0pO1xuICB9XG4gIGlmIChPYmplY3Qua2V5cyhwYXJhbXMpLmxlbmd0aCkge1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBqd3QgPSAodG9rZW46IHN0cmluZykgPT4gSlNPTi5wYXJzZShhdG9iKHRva2VuLnNwbGl0KCcuJylbMV0pKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9BdXRoU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBfdG9rZW46IE9BdXRoVG9rZW4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfc3RhdHVzID0gT0F1dGhTdGF0dXMuTk9UX0FVVEhPUklaRUQ7XG4gIHByaXZhdGUgdGltZXI6IGFueTtcbiAgc3RhdGUkOiBSZXBsYXlTdWJqZWN0PHN0cmluZz4gPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcbiAgc3RhdHVzJDogUmVwbGF5U3ViamVjdDxPQXV0aFN0YXR1cz4gPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcbiAgdXNlckluZm8kOiBPYnNlcnZhYmxlPFVzZXJJbmZvPiA9IHRoaXMuc3RhdHVzJC5waXBlKFxuICAgIGZpbHRlcihzID0+IHMgPT09IE9BdXRoU3RhdHVzLkFVVEhPUklaRUQpLFxuICAgIG1hcCgoKSA9PiB7XG4gICAgICBjb25zdCB7Y29uZmlnfSA9IHRoaXMuYXV0aENvbmZpZyBhcyBhbnk7XG4gICAgICByZXR1cm4gY29uZmlnLnVzZXJQYXRoO1xuICAgIH0pLFxuICAgIGZpbHRlcihwID0+ICEhcCksXG4gICAgc3dpdGNoTWFwKHBhdGggPT4gdGhpcy5odHRwLmdldDxVc2VySW5mbz4ocGF0aCkpLFxuICAgIHNoYXJlUmVwbGF5KClcbiAgKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgICAgICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgICAgICAgICAgICBwcml2YXRlIGF1dGhDb25maWc6IE9BdXRoQ29uZmlnLFxuICAgICAgICAgICAgICBASW5qZWN0KExPQ0FUSU9OKSBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsb2NhdGlvblNlcnZpY2U6IExvY2F0aW9uMikge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5pbml0KCkpOyAvLyBkZWNvdXBsZSBmb3IgaHR0cCBpbnRlcmNlcHRvclxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgb2F1dGggY29uZmlnIGZvciBpbml0aWFsaXplLiBJZiBPcGVuSWQgd2l0aCBpc3N1ZXJQYXRoIGlzIGNvbmZpZ3VyZWQgdGhlbiBjb25maWd1cmUgZnJvbSBzZXJ2ZXIgb3BlbmlkIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgY29uZmlnJCgpIHtcbiAgICBsZXQge2NvbmZpZ30gPSB0aGlzLmF1dGhDb25maWc7XG4gICAgaWYgKGNvbmZpZyAmJiBjb25maWcuY2xpZW50SWQpIHtcbiAgICAgIGNvbnN0IHtpc3N1ZXJQYXRoLCBzY29wZX0gPSBjb25maWcgYXMgT3BlbklkQ29uZmlnO1xuICAgICAgaWYgKGlzc3VlclBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8T3BlbklkQ29uZmlndXJhdGlvbj4oYCR7aXNzdWVyUGF0aH0vLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb25gKS5waXBlKFxuICAgICAgICAgIHRhcCh2ID0+IHRoaXMudHlwZSAmJiB0aGlzLnNldCh0aGlzLnR5cGUsIHtcbiAgICAgICAgICAgIC4uLnYuYXV0aG9yaXphdGlvbl9lbmRwb2ludCAmJiB7YXV0aG9yaXplUGF0aDogdi5hdXRob3JpemF0aW9uX2VuZHBvaW50fSB8fCB7fSxcbiAgICAgICAgICAgIC4uLnYudG9rZW5fZW5kcG9pbnQgJiYge3Rva2VuUGF0aDogdi50b2tlbl9lbmRwb2ludH0gfHwge30sXG4gICAgICAgICAgICAuLi52LnJldm9jYXRpb25fZW5kcG9pbnQgJiYge3Jldm9rZVBhdGg6IHYucmV2b2NhdGlvbl9lbmRwb2ludH0gfHwge30sXG4gICAgICAgICAgICAuLi52LmNvZGVfY2hhbGxlbmdlX21ldGhvZHNfc3VwcG9ydGVkICYmIHtwa2NlOiB2LmNvZGVfY2hhbGxlbmdlX21ldGhvZHNfc3VwcG9ydGVkLmluZGV4T2YoJ1MyNTYnKSA+IC0xfSB8fCB7fSxcbiAgICAgICAgICAgIC4uLnYudXNlcmluZm9fZW5kcG9pbnQgJiYge3VzZXJQYXRoOiB2LnVzZXJpbmZvX2VuZHBvaW50fSB8fCB7fSxcbiAgICAgICAgICAgIC4uLnYuaW50cm9zcGVjdGlvbl9lbmRwb2ludCAmJiB7aW50cm9zcGVjdGlvblBhdGg6IHYuaW50cm9zcGVjdGlvbl9lbmRwb2ludH0gfHwge30sXG4gICAgICAgICAgICAuLi52LmVuZF9zZXNzaW9uX2VuZHBvaW50ICYmIHtsb2dvdXRQYXRoOiB2LmVuZF9zZXNzaW9uX2VuZHBvaW50fSB8fCB7fSxcbiAgICAgICAgICAgIC4uLnNjb3BlICYmIHt9IHx8IHtzY29wZTogJ29wZW5pZCd9XG4gICAgICAgICAgfSBhcyBhbnkpKSxcbiAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5hdXRoQ29uZmlnLmNvbmZpZylcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvZihjb25maWcpO1xuICAgIH1cbiAgICBjb25zb2xlLndhcm4oJ2NsaWVudElkIGlzIG1pc3NpbmcgaW4gb2F1dGggY29uZmlnJyk7XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXQuIFdpbGwgY2hlY2sgdGhlIHVybCBpbXBsaWNpdCBvciBhdXRob3JpemF0aW9uIGZsb3cgb3IgZXhpc3Rpbmcgc2F2ZWQgdG9rZW4uXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBpbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHtoYXNoLCBzZWFyY2gsIG9yaWdpbiwgcGF0aG5hbWV9ID0gdGhpcy5sb2NhdGlvbjtcbiAgICBjb25zdCBpc0ltcGxpY2l0UmVkaXJlY3QgPSBoYXNoICYmIC8oYWNjZXNzX3Rva2VuPSl8KGVycm9yPSkvLnRlc3QoaGFzaCk7XG4gICAgY29uc3QgaXNBdXRoQ29kZVJlZGlyZWN0ID0gc2VhcmNoICYmIC8oY29kZT0pfChlcnJvcj0pLy50ZXN0KHNlYXJjaCk7XG4gICAgY29uc3Qge3N0b3JhZ2VLZXl9ID0gdGhpcy5hdXRoQ29uZmlnO1xuICAgIGNvbnN0IHNhdmVkVG9rZW4gPSBzdG9yYWdlS2V5ICYmIHRoaXMuYXV0aENvbmZpZy5zdG9yYWdlICYmIHRoaXMuYXV0aENvbmZpZy5zdG9yYWdlW3N0b3JhZ2VLZXldICYmXG4gICAgICBKU09OLnBhcnNlKHRoaXMuYXV0aENvbmZpZy5zdG9yYWdlW3N0b3JhZ2VLZXldKTtcbiAgICB0aGlzLmNvbmZpZyQuc3Vic2NyaWJlKGNvbmZpZyA9PiB7XG4gICAgICBpZiAoaXNJbXBsaWNpdFJlZGlyZWN0KSB7XG4gICAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBwYXJzZU9hdXRoVXJpKGhhc2guc3Vic3RyKDEpKTtcbiAgICAgICAgdGhpcy50b2tlbiA9IHBhcmFtZXRlcnM7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gdGhpcy5jaGVja1Jlc3BvbnNlKHNhdmVkVG9rZW4sIHBhcmFtZXRlcnMpICYmIE9BdXRoU3RhdHVzLkFVVEhPUklaRUQgfHwgT0F1dGhTdGF0dXMuREVOSUVEO1xuICAgICAgfSBlbHNlIGlmIChpc0F1dGhDb2RlUmVkaXJlY3QpIHtcbiAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IHBhcnNlT2F1dGhVcmkoc2VhcmNoLnN1YnN0cigxKSk7XG4gICAgICAgIGlmICghdGhpcy5jaGVja1Jlc3BvbnNlKHNhdmVkVG9rZW4sIHBhcmFtZXRlcnMpKSB7XG4gICAgICAgICAgdGhpcy50b2tlbiA9IHBhcmFtZXRlcnM7XG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSBPQXV0aFN0YXR1cy5ERU5JRUQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3UGFyYW1ldGVyc1N0cmluZyA9IHRoaXMuZ2V0Q2xlYW5lZFVuU2VhcmNoUGFyYW1ldGVycygpO1xuICAgICAgICAgIGNvbnN0IHtjbGllbnRJZCwgY2xpZW50U2VjcmV0LCB0b2tlblBhdGgsIHNjb3BlfSA9IGNvbmZpZyBhcyBhbnk7XG4gICAgICAgICAgY29uc3QgY29kZVZlcmlmaWVyID0gc2F2ZWRUb2tlbiAmJiBzYXZlZFRva2VuLmNvZGVWZXJpZmllcjtcbiAgICAgICAgICB0aGlzLmh0dHAucG9zdCh0b2tlblBhdGgsIG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHtcbiAgICAgICAgICAgICAgY29kZTogcGFyYW1ldGVycz8uWydjb2RlJ10sXG4gICAgICAgICAgICAgIGNsaWVudF9pZDogY2xpZW50SWQsXG4gICAgICAgICAgICAgIC4uLmNsaWVudFNlY3JldCAmJiB7Y2xpZW50X3NlY3JldDogY2xpZW50U2VjcmV0fSB8fCB7fSxcbiAgICAgICAgICAgICAgcmVkaXJlY3RfdXJpOiBgJHtvcmlnaW59JHtwYXRobmFtZX1gLFxuICAgICAgICAgICAgICBncmFudF90eXBlOiAnYXV0aG9yaXphdGlvbl9jb2RlJyxcbiAgICAgICAgICAgICAgLi4uc2NvcGUgJiYge3Njb3BlfSB8fCB7fSxcbiAgICAgICAgICAgICAgLi4uY29kZVZlcmlmaWVyICYmIHtjb2RlX3ZlcmlmaWVyOiBjb2RlVmVyaWZpZXJ9IHx8IHt9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksIHtoZWFkZXJzOiBSRVFVRVNUX0hFQURFUn0pLnBpcGUoXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy50b2tlbiA9IGVycjtcbiAgICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSBPQXV0aFN0YXR1cy5ERU5JRUQ7XG4gICAgICAgICAgICAgIHRoaXMubG9jYXRpb25TZXJ2aWNlLnJlcGxhY2VTdGF0ZShgJHtwYXRobmFtZX0ke25ld1BhcmFtZXRlcnNTdHJpbmd9YCk7XG4gICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKS5zdWJzY3JpYmUodG9rZW4gPT4ge1xuICAgICAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSBPQXV0aFN0YXR1cy5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgdGhpcy5sb2NhdGlvblNlcnZpY2UucmVwbGFjZVN0YXRlKGAke3BhdGhuYW1lfSR7bmV3UGFyYW1ldGVyc1N0cmluZ31gKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzYXZlZFRva2VuKSB7XG4gICAgICAgIHRoaXMuX3Rva2VuID0gc2F2ZWRUb2tlbjtcbiAgICAgICAgY29uc3Qge2FjY2Vzc190b2tlbiwgcmVmcmVzaF90b2tlbiwgZXJyb3J9ID0gc2F2ZWRUb2tlbjtcbiAgICAgICAgaWYgKGFjY2Vzc190b2tlbikge1xuICAgICAgICAgIGlmIChyZWZyZXNoX3Rva2VuKSB7IC8vIGZvcmNlIHJlZnJlc2ggc2luY2UgbWlnaHQgYmUgYSBtYW51YWwgcGFnZSByZWZyZXNoXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbigpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXR1cyA9IE9BdXRoU3RhdHVzLkFVVEhPUklaRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc3RhdHVzID0gZXJyb3IgJiYgT0F1dGhTdGF0dXMuREVOSUVEIHx8IE9BdXRoU3RhdHVzLk5PVF9BVVRIT1JJWkVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXR1cyA9IE9BdXRoU3RhdHVzLk5PVF9BVVRIT1JJWkVEO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbG9naW4ocGFyYW1ldGVycz86IE9BdXRoUGFyYW1ldGVycykge1xuICAgIGlmICh0aGlzLmlzUmVzb3VyY2VUeXBlKHBhcmFtZXRlcnMgYXMgUmVzb3VyY2VQYXJhbWV0ZXJzKSkge1xuICAgICAgdGhpcy5yZXNvdXJjZUxvZ2luKHBhcmFtZXRlcnMgYXMgUmVzb3VyY2VQYXJhbWV0ZXJzKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNBdXRob3JpemF0aW9uQ29kZVR5cGUocGFyYW1ldGVycyBhcyBBdXRob3JpemF0aW9uQ29kZVBhcmFtZXRlcnMpKSB7XG4gICAgICBhd2FpdCB0aGlzLmF1dGhvcml6YXRpb25Db2RlTG9naW4ocGFyYW1ldGVycyBhcyBBdXRob3JpemF0aW9uQ29kZVBhcmFtZXRlcnMpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0ltcGxpY2l0VHlwZShwYXJhbWV0ZXJzIGFzIEltcGxpY2l0UGFyYW1ldGVycykpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW1wbGljaXRMb2dpbihwYXJhbWV0ZXJzIGFzIEltcGxpY2l0UGFyYW1ldGVycyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQ2xpZW50Q3JlZGVudGlhbFR5cGUoKSkge1xuICAgICAgdGhpcy5jbGllbnRDcmVkZW50aWFsTG9naW4oKTtcbiAgICB9XG4gIH1cblxuICBsb2dvdXQodXNlTG9nb3V0VXJsPzogYm9vbGVhbikge1xuICAgIHRoaXMucmV2b2tlKCk7XG4gICAgdGhpcy50b2tlbiA9IG51bGw7XG4gICAgdGhpcy5zdGF0dXMgPSBPQXV0aFN0YXR1cy5OT1RfQVVUSE9SSVpFRDtcbiAgICBjb25zdCB7bG9nb3V0UGF0aCwgbG9nb3V0UmVkaXJlY3RVcml9ID0gdGhpcy5hdXRoQ29uZmlnLmNvbmZpZyBhcyBhbnk7XG4gICAgaWYgKHVzZUxvZ291dFVybCAmJiBsb2dvdXRQYXRoKSB7XG4gICAgICBjb25zdCB7b3JpZ2luLCBwYXRobmFtZX0gPSB0aGlzLmxvY2F0aW9uO1xuICAgICAgY29uc3QgY3VycmVudFBhdGggPSBgJHtvcmlnaW59JHtwYXRobmFtZX1gO1xuICAgICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlKGAke2xvZ291dFBhdGh9P3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaT0ke2xvZ291dFJlZGlyZWN0VXJpIHx8IGN1cnJlbnRQYXRofWApO1xuICAgIH1cbiAgfVxuXG4gIHJldm9rZSgpIHtcbiAgICBjb25zdCB7cmV2b2tlUGF0aCwgY2xpZW50SWQsIGNsaWVudFNlY3JldH0gPSB0aGlzLmF1dGhDb25maWcuY29uZmlnIGFzIGFueTtcbiAgICBpZiAocmV2b2tlUGF0aCkge1xuICAgICAgY29uc3Qge2FjY2Vzc190b2tlbiwgcmVmcmVzaF90b2tlbn0gPSB0aGlzLnRva2VuIGFzIE9BdXRoVG9rZW47XG4gICAgICBjb25zdCB0b1Jldm9rZSA9IFtdO1xuICAgICAgaWYgKGFjY2Vzc190b2tlbikge1xuICAgICAgICB0b1Jldm9rZS5wdXNoKHtcbiAgICAgICAgICAuLi5jbGllbnRJZCAmJiB7Y2xpZW50X2lkOiBjbGllbnRJZH0gfHwge30sXG4gICAgICAgICAgLi4uY2xpZW50U2VjcmV0ICYmIHtjbGllbnRfc2VjcmV0OiBjbGllbnRTZWNyZXR9IHx8IHt9LFxuICAgICAgICAgIHRva2VuOiBhY2Nlc3NfdG9rZW4sXG4gICAgICAgICAgdG9rZW5fdHlwZV9oaW50OiAnYWNjZXNzX3Rva2VuJ1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWZyZXNoX3Rva2VuKSB7XG4gICAgICAgIHRvUmV2b2tlLnB1c2goe1xuICAgICAgICAgIC4uLmNsaWVudElkICYmIHtjbGllbnRfaWQ6IGNsaWVudElkfSB8fCB7fSxcbiAgICAgICAgICAuLi5jbGllbnRTZWNyZXQgJiYge2NsaWVudF9zZWNyZXQ6IGNsaWVudFNlY3JldH0gfHwge30sXG4gICAgICAgICAgdG9rZW46IHJlZnJlc2hfdG9rZW4sXG4gICAgICAgICAgdG9rZW5fdHlwZV9oaW50OiAncmVmcmVzaF90b2tlbidcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBmcm9tKHRvUmV2b2tlKS5waXBlKFxuICAgICAgICBjb25jYXRNYXAobyA9PiBvZihvKS5waXBlKGRlbGF5KDMwMCkpKSwgLy8gc3BhY2UgcmVxdWVzdCB0byBhdm9pZCBjYW5jZWxsYXRpb25cbiAgICAgICAgc3dpdGNoTWFwKG8gPT4gdGhpcy5odHRwLnBvc3QocmV2b2tlUGF0aCwgbmV3IEh0dHBQYXJhbXMoe2Zyb21PYmplY3Q6IG99KSkpLFxuICAgICAgKS5zdWJzY3JpYmUobm9vcCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0YXR1cygpOiBPQXV0aFN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXR1cztcbiAgfVxuXG4gIHNldCBzdGF0dXMoc3RhdHVzKSB7XG4gICAgdGhpcy5fc3RhdHVzID0gc3RhdHVzO1xuICAgIHRoaXMuc3RhdHVzJC5uZXh0KHN0YXR1cyk7XG4gIH1cblxuICBzZXQodHlwZTogT0F1dGhUeXBlLCBjb25maWc/OiBPQXV0aFR5cGVDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhDb25maWcudHlwZSA9IHR5cGU7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5hdXRoQ29uZmlnLmNvbmZpZyA9IHtcbiAgICAgICAgLi4udGhpcy5hdXRoQ29uZmlnLmNvbmZpZyxcbiAgICAgICAgLi4uY29uZmlnXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmF1dGhDb25maWcudHlwZTtcbiAgfVxuXG4gIGdldCBpZ25vcmVQYXRocygpOiBSZWdFeHBbXSB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aENvbmZpZy5pZ25vcmVQYXRocyB8fCBbXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb3VyY2VMb2dpbihwYXJhbWV0ZXJzOiBSZXNvdXJjZVBhcmFtZXRlcnMpIHtcbiAgICBjb25zdCB7Y2xpZW50SWQsIGNsaWVudFNlY3JldCwgdG9rZW5QYXRoLCBzY29wZX0gPSB0aGlzLmF1dGhDb25maWcuY29uZmlnIGFzIGFueTtcbiAgICBjb25zdCB7dXNlcm5hbWUsIHBhc3N3b3JkfSA9IHBhcmFtZXRlcnM7XG4gICAgdGhpcy5odHRwLnBvc3QodG9rZW5QYXRoLCBuZXcgSHR0cFBhcmFtcyh7XG4gICAgICBmcm9tT2JqZWN0OiB7XG4gICAgICAgIGNsaWVudF9pZDogY2xpZW50SWQsXG4gICAgICAgIC4uLmNsaWVudFNlY3JldCAmJiB7Y2xpZW50X3NlY3JldDogY2xpZW50U2VjcmV0fSB8fCB7fSxcbiAgICAgICAgZ3JhbnRfdHlwZTogT0F1dGhUeXBlLlJFU09VUkNFLFxuICAgICAgICAuLi5zY29wZSAmJiB7c2NvcGV9IHx8IHt9LFxuICAgICAgICB1c2VybmFtZSxcbiAgICAgICAgcGFzc3dvcmRcbiAgICAgIH1cbiAgICB9KSwge2hlYWRlcnM6IFJFUVVFU1RfSEVBREVSfSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgdGhpcy50b2tlbiA9IGVycjtcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBPQXV0aFN0YXR1cy5ERU5JRUQ7XG4gICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgIH0pXG4gICAgKS5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIHRoaXMudG9rZW4gPSBwYXJhbXM7XG4gICAgICB0aGlzLnN0YXR1cyA9IE9BdXRoU3RhdHVzLkFVVEhPUklaRUQ7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGF1dGhvcml6YXRpb25Db2RlTG9naW4ocGFyYW1ldGVyczogQXV0aG9yaXphdGlvbkNvZGVQYXJhbWV0ZXJzKSB7XG4gICAgY29uc3QgYXV0aFVybCA9IGF3YWl0IHRoaXMudG9BdXRob3JpemF0aW9uVXJsKHBhcmFtZXRlcnMsIE9BdXRoVHlwZS5BVVRIT1JJWkFUSU9OX0NPREUpO1xuICAgIHRoaXMubG9jYXRpb24ucmVwbGFjZShhdXRoVXJsKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaW1wbGljaXRMb2dpbihwYXJhbWV0ZXJzOiBJbXBsaWNpdFBhcmFtZXRlcnMpIHtcbiAgICBjb25zdCBhdXRoVXJsID0gYXdhaXQgdGhpcy50b0F1dGhvcml6YXRpb25VcmwocGFyYW1ldGVycywgT0F1dGhUeXBlLklNUExJQ0lUKTtcbiAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2UoYXV0aFVybCk7XG4gIH1cblxuICBwcml2YXRlIGNsaWVudENyZWRlbnRpYWxMb2dpbigpIHtcbiAgICBjb25zdCB7Y2xpZW50SWQsIGNsaWVudFNlY3JldCwgdG9rZW5QYXRoLCBzY29wZX0gPSB0aGlzLmF1dGhDb25maWcuY29uZmlnIGFzIGFueTtcbiAgICB0aGlzLmh0dHAucG9zdCh0b2tlblBhdGgsIG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgIGZyb21PYmplY3Q6IHtcbiAgICAgICAgY2xpZW50X2lkOiBjbGllbnRJZCxcbiAgICAgICAgY2xpZW50X3NlY3JldDogY2xpZW50U2VjcmV0LFxuICAgICAgICBncmFudF90eXBlOiBPQXV0aFR5cGUuQ0xJRU5UX0NSRURFTlRJQUwsXG4gICAgICAgIC4uLnNjb3BlID8ge3Njb3BlfSA6IHt9LFxuICAgICAgfVxuICAgIH0pLCB7aGVhZGVyczogUkVRVUVTVF9IRUFERVJ9KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMudG9rZW4gPSBlcnI7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gT0F1dGhTdGF0dXMuREVOSUVEO1xuICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICB9KVxuICAgICkuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICB0aGlzLnRva2VuID0gcGFyYW1zO1xuICAgICAgdGhpcy5zdGF0dXMgPSBPQXV0aFN0YXR1cy5BVVRIT1JJWkVEO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NsaWVudENyZWRlbnRpYWxUeXBlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhDb25maWcudHlwZSA9PT0gT0F1dGhUeXBlLkNMSUVOVF9DUkVERU5USUFMO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jlc291cmNlVHlwZShwYXJhbWV0ZXJzPzogUmVzb3VyY2VQYXJhbWV0ZXJzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aENvbmZpZy50eXBlID09PSBPQXV0aFR5cGUuUkVTT1VSQ0UgJiYgISFwYXJhbWV0ZXJzPy5wYXNzd29yZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNJbXBsaWNpdFR5cGUocGFyYW1ldGVycz86IEltcGxpY2l0UGFyYW1ldGVycyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhDb25maWcudHlwZSA9PT0gT0F1dGhUeXBlLklNUExJQ0lUICYmICEhcGFyYW1ldGVycz8ucmVkaXJlY3RVcmk7XG4gIH1cblxuICBwcml2YXRlIGlzQXV0aG9yaXphdGlvbkNvZGVUeXBlKHBhcmFtZXRlcnM/OiBBdXRob3JpemF0aW9uQ29kZVBhcmFtZXRlcnMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoQ29uZmlnLnR5cGUgPT09IE9BdXRoVHlwZS5BVVRIT1JJWkFUSU9OX0NPREUgJiYgISFwYXJhbWV0ZXJzPy5yZWRpcmVjdFVyaTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdG9BdXRob3JpemF0aW9uVXJsKHBhcmFtZXRlcnM6IEF1dGhvcml6YXRpb25Db2RlUGFyYW1ldGVycyB8IEltcGxpY2l0UGFyYW1ldGVycywgcmVzcG9uc2VUeXBlOiBPQXV0aFR5cGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHtjb25maWd9ID0gdGhpcy5hdXRoQ29uZmlnIGFzIGFueTtcbiAgICBsZXQgYXV0aG9yaXphdGlvblVybCA9IGAke2NvbmZpZy5hdXRob3JpemVQYXRofWA7XG4gICAgYXV0aG9yaXphdGlvblVybCArPSBjb25maWcuYXV0aG9yaXplUGF0aC5pbmNsdWRlcygnPycpICYmICcmJyB8fCAnPyc7XG4gICAgYXV0aG9yaXphdGlvblVybCArPSBgY2xpZW50X2lkPSR7Y29uZmlnLmNsaWVudElkfWA7XG4gICAgYXV0aG9yaXphdGlvblVybCArPSBgJnJlZGlyZWN0X3VyaT0ke2VuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLnJlZGlyZWN0VXJpKX1gO1xuICAgIGF1dGhvcml6YXRpb25VcmwgKz0gYCZyZXNwb25zZV90eXBlPSR7cmVzcG9uc2VUeXBlfWA7XG4gICAgYXV0aG9yaXphdGlvblVybCArPSBgJnNjb3BlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGNvbmZpZy5zY29wZSB8fCAnJyl9YDtcbiAgICBhdXRob3JpemF0aW9uVXJsICs9IGAmc3RhdGU9JHtlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVycy5zdGF0ZSB8fCAnJyl9YDtcbiAgICByZXR1cm4gYCR7YXV0aG9yaXphdGlvblVybH0ke3RoaXMuZ2VuZXJhdGVOb25jZShjb25maWcpfSR7YXdhaXQgdGhpcy5nZW5lcmF0ZUNvZGVDaGFsbGVuZ2UoY29uZmlnKX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZW5lcmF0ZUNvZGVDaGFsbGVuZ2UoY29uZmlnOiBhbnkpIHtcbiAgICBpZiAoY29uZmlnLnBrY2UpIHtcbiAgICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IHJhbmRvbVN0cmluZygpO1xuICAgICAgdGhpcy50b2tlbiA9IHsuLi50aGlzLnRva2VuLCBjb2RlVmVyaWZpZXJ9O1xuICAgICAgcmV0dXJuIGAmY29kZV9jaGFsbGVuZ2U9JHthd2FpdCBwa2NlKGNvZGVWZXJpZmllcil9JmNvZGVfY2hhbGxlbmdlX21ldGhvZD1TMjU2YDtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZU5vbmNlKGNvbmZpZzogYW55KSB7XG4gICAgaWYgKGNvbmZpZyAmJiBjb25maWcuc2NvcGUgJiYgY29uZmlnLnNjb3BlLmluZGV4T2YoJ29wZW5pZCcpID4gLTEpIHtcbiAgICAgIGNvbnN0IG5vbmNlID0gcmFuZG9tU3RyaW5nKDEwKTtcbiAgICAgIHRoaXMudG9rZW4gPSB7Li4udGhpcy50b2tlbiwgbm9uY2V9O1xuICAgICAgcmV0dXJuIGAmbm9uY2U9JHtub25jZX1gO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrUmVzcG9uc2UodG9rZW46IGFueSwgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IG51bGwpIHtcbiAgICB0aGlzLmVtaXRTdGF0ZShwYXJhbWV0ZXJzKTtcbiAgICB0aGlzLmNsZWFuTG9jYXRpb25IYXNoKCk7XG4gICAgaWYgKCFwYXJhbWV0ZXJzIHx8IHBhcmFtZXRlcnNbJ2Vycm9yJ10pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRva2VuICYmIHRva2VuLm5vbmNlICYmIHBhcmFtZXRlcnNbJ2FjY2Vzc190b2tlbiddKSB7XG4gICAgICBjb25zdCBqd3RUb2tlbiA9IGp3dChwYXJhbWV0ZXJzWydhY2Nlc3NfdG9rZW4nXSk7XG4gICAgICByZXR1cm4gdG9rZW4ubm9uY2UgPT09IGp3dFRva2VuLm5vbmNlO1xuICAgIH1cbiAgICByZXR1cm4gcGFyYW1ldGVyc1snYWNjZXNzX3Rva2VuJ10gfHwgcGFyYW1ldGVyc1snY29kZSddO1xuICB9XG5cbiAgc2V0IHRva2VuKHRva2VuOiBPQXV0aFRva2VuIHwgbnVsbCkge1xuICAgIHRoaXMuX3Rva2VuID0gdG9rZW47XG4gICAgY29uc3Qge3N0b3JhZ2VLZXl9ID0gdGhpcy5hdXRoQ29uZmlnO1xuICAgIGlmICh0b2tlbikge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5hdXRoQ29uZmlnLnN0b3JhZ2Vbc3RvcmFnZUtleV0gPSBKU09OLnN0cmluZ2lmeSh0aGlzLnRva2VuKTtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcbiAgICAgIGlmICh0aGlzLnRva2VuICYmIHRoaXMudG9rZW4uZXhwaXJlc19pbikge1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSwgTnVtYmVyKHRoaXMudG9rZW4/LmV4cGlyZXNfaW4pICogMTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBkZWxldGUgdGhpcy5hdXRoQ29uZmlnLnN0b3JhZ2Vbc3RvcmFnZUtleV07XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLl90b2tlbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaFRva2VuKCkge1xuICAgIGNvbnN0IHt0b2tlblBhdGgsIGNsaWVudElkLCBjbGllbnRTZWNyZXQsIHNjb3BlfSA9IHRoaXMuYXV0aENvbmZpZy5jb25maWcgYXMgYW55O1xuICAgIGNvbnN0IHtyZWZyZXNoX3Rva2VufSA9IHRoaXMudG9rZW4gYXMgT0F1dGhUb2tlbjtcbiAgICBpZiAodG9rZW5QYXRoICYmIHJlZnJlc2hfdG9rZW4pIHtcbiAgICAgIHRoaXMuaHR0cC5wb3N0KHRva2VuUGF0aCwgbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgICBmcm9tT2JqZWN0OiB7XG4gICAgICAgICAgY2xpZW50X2lkOiBjbGllbnRJZCxcbiAgICAgICAgICAuLi5jbGllbnRTZWNyZXQgJiYge2NsaWVudF9zZWNyZXQ6IGNsaWVudFNlY3JldH0gfHwge30sXG4gICAgICAgICAgZ3JhbnRfdHlwZTogJ3JlZnJlc2hfdG9rZW4nLFxuICAgICAgICAgIHJlZnJlc2hfdG9rZW4sXG4gICAgICAgICAgLi4uc2NvcGUgJiYge3Njb3BlfSB8fCB7fSxcbiAgICAgICAgfVxuICAgICAgfSksIHtoZWFkZXJzOiBSRVFVRVNUX0hFQURFUn0pLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9nb3V0KCk7XG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgdGhpcy50b2tlbiA9IHtcbiAgICAgICAgICAuLi50aGlzLnRva2VuLFxuICAgICAgICAgIC4uLnBhcmFtc1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnN0YXR1cyA9IE9BdXRoU3RhdHVzLkFVVEhPUklaRUQ7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldENsZWFuZWRVblNlYXJjaFBhcmFtZXRlcnMoKTogc3RyaW5nIHtcbiAgICBjb25zdCB7c2VhcmNofSA9IHRoaXMubG9jYXRpb247XG4gICAgbGV0IHNlYXJjaFN0cmluZyA9IHNlYXJjaC5zdWJzdHIoMSk7XG4gICAgY29uc3QgaGFzaEtleXMgPSBbJ2NvZGUnLCAnc3RhdGUnLCAnZXJyb3InLCAnZXJyb3JfZGVzY3JpcHRpb24nLCAnc2Vzc2lvbl9zdGF0ZScsICdzY29wZScsICdhdXRodXNlcicsICdwcm9tcHQnXTtcbiAgICBoYXNoS2V5cy5mb3JFYWNoKChoYXNoS2V5KSA9PiB7XG4gICAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoJyYnICsgaGFzaEtleSArICcoPVteJl0qKT98XicgKyBoYXNoS2V5ICsgJyg9W14mXSopPyY/Jyk7XG4gICAgICBzZWFyY2hTdHJpbmcgPSBzZWFyY2hTdHJpbmcucmVwbGFjZShyZSwgJycpO1xuICAgIH0pO1xuICAgIHJldHVybiBzZWFyY2hTdHJpbmcubGVuZ3RoICYmIGA/JHtzZWFyY2hTdHJpbmd9YCB8fCAnJztcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5Mb2NhdGlvbkhhc2goKSB7XG4gICAgY29uc3Qge2hhc2h9ID0gdGhpcy5sb2NhdGlvbjtcbiAgICBsZXQgY3VySGFzaCA9IGhhc2guc3Vic3RyKDEpO1xuICAgIGNvbnN0IGhhc2hLZXlzID0gWydhY2Nlc3NfdG9rZW4nLCAndG9rZW5fdHlwZScsICdleHBpcmVzX2luJywgJ3Njb3BlJywgJ3N0YXRlJywgJ2Vycm9yJywgJ2Vycm9yX2Rlc2NyaXB0aW9uJywgJ3Nlc3Npb25fc3RhdGUnLCAnbm9uY2UnXTtcbiAgICBoYXNoS2V5cy5mb3JFYWNoKChoYXNoS2V5KSA9PiB7XG4gICAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoJyYnICsgaGFzaEtleSArICcoPVteJl0qKT98XicgKyBoYXNoS2V5ICsgJyg9W14mXSopPyY/Jyk7XG4gICAgICBjdXJIYXNoID0gY3VySGFzaC5yZXBsYWNlKHJlLCAnJyk7XG4gICAgfSk7XG4gICAgdGhpcy5sb2NhdGlvbi5oYXNoID0gY3VySGFzaDtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFN0YXRlKHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBudWxsKSB7XG4gICAgY29uc3Qge3N0YXRlfSA9IHBhcmFtZXRlcnMgYXMgYW55O1xuICAgIGlmIChzdGF0ZSkge1xuICAgICAgdGhpcy5zdGF0ZSQubmV4dChzdGF0ZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, Injectable, Inject, EventEmitter, Component, ViewEncapsulation, Input, Output, ContentChild, HostListener, PLATFORM_ID, Optional, NgModule } from '@angular/core';
2
+ import { InjectionToken, inject, Injectable, Inject, EventEmitter, Component, ViewEncapsulation, Input, Output, ContentChild, HostListener, PLATFORM_ID, Optional, NgModule } from '@angular/core';
3
3
  import { __awaiter } from 'tslib';
4
4
  import * as i1 from '@angular/common/http';
5
5
  import { HttpHeaders, HttpParams, HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
@@ -17,6 +17,28 @@ const LOCATION = new InjectionToken('Location');
17
17
  const STORAGE = new InjectionToken('Storage');
18
18
  const OAUTH_CONFIG = new InjectionToken('OAuthConfig');
19
19
  const OAUTH_TOKEN = new InjectionToken('OAuthToken');
20
+ class OAuthConfig {
21
+ }
22
+ OAuthConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
23
+ OAuthConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthConfig, providedIn: 'root', useFactory: () => inject(OAUTH_CONFIG).reduce((p, c) => (Object.assign(Object.assign({}, p), c)), {}) });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthConfig, decorators: [{
25
+ type: Injectable,
26
+ args: [{
27
+ providedIn: 'root',
28
+ useFactory: () => inject(OAUTH_CONFIG).reduce((p, c) => (Object.assign(Object.assign({}, p), c)), {})
29
+ }]
30
+ }] });
31
+ const provideOAuthConfig = (config = {}) => ({
32
+ provide: OAUTH_CONFIG,
33
+ useValue: config,
34
+ multi: true
35
+ });
36
+ const provideOAuthConfigFactory = (factory, deps) => ({
37
+ provide: OAUTH_CONFIG,
38
+ useFactory: factory,
39
+ deps: deps,
40
+ multi: true
41
+ });
20
42
  var OAuthType;
21
43
  (function (OAuthType) {
22
44
  OAuthType["RESOURCE"] = "password";
@@ -85,7 +107,7 @@ class OAuthService {
85
107
  if (config && config.clientId) {
86
108
  const { issuerPath, scope } = config;
87
109
  if (issuerPath) {
88
- return this.http.get(`${issuerPath}/.well-known/openid-configuration`).pipe(tap(v => this.set(this.type, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, v.authorization_endpoint && { authorizePath: v.authorization_endpoint } || {}), v.token_endpoint && { tokenPath: v.token_endpoint } || {}), v.revocation_endpoint && { revokePath: v.revocation_endpoint } || {}), v.code_challenge_methods_supported && { pkce: v.code_challenge_methods_supported.indexOf('S256') > -1 } || {}), v.userinfo_endpoint && { userPath: v.userinfo_endpoint } || {}), v.introspection_endpoint && { introspectionPath: v.introspection_endpoint } || {}), v.end_session_endpoint && { logoutPath: v.end_session_endpoint } || {}), scope && {} || { scope: 'openid' }))), map(() => this.authConfig.config));
110
+ return this.http.get(`${issuerPath}/.well-known/openid-configuration`).pipe(tap(v => this.type && this.set(this.type, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, v.authorization_endpoint && { authorizePath: v.authorization_endpoint } || {}), v.token_endpoint && { tokenPath: v.token_endpoint } || {}), v.revocation_endpoint && { revokePath: v.revocation_endpoint } || {}), v.code_challenge_methods_supported && { pkce: v.code_challenge_methods_supported.indexOf('S256') > -1 } || {}), v.userinfo_endpoint && { userPath: v.userinfo_endpoint } || {}), v.introspection_endpoint && { introspectionPath: v.introspection_endpoint } || {}), v.end_session_endpoint && { logoutPath: v.end_session_endpoint } || {}), scope && {} || { scope: 'openid' }))), map(() => this.authConfig.config));
89
111
  }
90
112
  return of(config);
91
113
  }
@@ -377,15 +399,12 @@ class OAuthService {
377
399
  }
378
400
  }
379
401
  }
380
- OAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthService, deps: [{ token: i1.HttpClient }, { token: i0.NgZone }, { token: OAUTH_CONFIG }, { token: LOCATION }, { token: i2.Location }], target: i0.ɵɵFactoryTarget.Injectable });
402
+ OAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthService, deps: [{ token: i1.HttpClient }, { token: i0.NgZone }, { token: OAuthConfig }, { token: LOCATION }, { token: i2.Location }], target: i0.ɵɵFactoryTarget.Injectable });
381
403
  OAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthService });
382
404
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthService, decorators: [{
383
405
  type: Injectable
384
406
  }], ctorParameters: function () {
385
- return [{ type: i1.HttpClient }, { type: i0.NgZone }, { type: undefined, decorators: [{
386
- type: Inject,
387
- args: [OAUTH_CONFIG]
388
- }] }, { type: Location, decorators: [{
407
+ return [{ type: i1.HttpClient }, { type: i0.NgZone }, { type: OAuthConfig }, { type: Location, decorators: [{
389
408
  type: Inject,
390
409
  args: [LOCATION]
391
410
  }] }, { type: i2.Location }];
@@ -601,7 +620,7 @@ const defaultConfig = (storage) => {
601
620
  };
602
621
  };
603
622
  class OAuthModule {
604
- static forRoot(config) {
623
+ static forRoot(config = {}) {
605
624
  return {
606
625
  ngModule: OAuthModule,
607
626
  providers: [
@@ -609,15 +628,7 @@ class OAuthModule {
609
628
  StorageService,
610
629
  OAuthService,
611
630
  OAuthInterceptorService,
612
- {
613
- provide: OAUTH_CONFIG,
614
- useFactory(storage) {
615
- return Object.assign(Object.assign({}, defaultConfig(storage)), config);
616
- },
617
- deps: [
618
- STORAGE
619
- ]
620
- }
631
+ provideOAuthConfigFactory((storage) => (Object.assign(Object.assign({}, defaultConfig(storage)), config)), [STORAGE]),
621
632
  ]
622
633
  };
623
634
  }
@@ -627,12 +638,7 @@ OAuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "1
627
638
  FormsModule,
628
639
  HttpClientModule,
629
640
  RouterModule], exports: [OAuthLoginComponent] });
630
- OAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthModule, providers: [
631
- LocationService,
632
- StorageService,
633
- OAuthService,
634
- OAuthInterceptorService,
635
- ], imports: [CommonModule,
641
+ OAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: OAuthModule, imports: [CommonModule,
636
642
  FormsModule,
637
643
  HttpClientModule,
638
644
  RouterModule] });
@@ -646,13 +652,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
646
652
  RouterModule,
647
653
  ],
648
654
  declarations: [OAuthLoginComponent],
649
- exports: [OAuthLoginComponent],
650
- providers: [
651
- LocationService,
652
- StorageService,
653
- OAuthService,
654
- OAuthInterceptorService,
655
- ]
655
+ exports: [OAuthLoginComponent]
656
656
  }]
657
657
  }] });
658
658
 
@@ -664,5 +664,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
664
664
  * Generated bundle index. Do not edit.
665
665
  */
666
666
 
667
- export { LOCATION, OAUTH_CONFIG, OAUTH_TOKEN, OAuthInterceptor, OAuthLoginComponent, OAuthModule, OAuthService, OAuthStatus, OAuthType, SERVER_HOST, SERVER_PATH, STORAGE };
667
+ export { LOCATION, OAUTH_CONFIG, OAUTH_TOKEN, OAuthConfig, OAuthInterceptor, OAuthLoginComponent, OAuthModule, OAuthService, OAuthStatus, OAuthType, SERVER_HOST, SERVER_PATH, STORAGE, provideOAuthConfig, provideOAuthConfigFactory };
668
668
  //# sourceMappingURL=ngx-oauth.mjs.map