@stemy/ngx-utils 13.5.0 → 13.5.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.
- package/esm2020/ngx-utils/services/base-http.service.mjs +9 -5
- package/fesm2015/stemy-ngx-utils.mjs +7 -3
- package/fesm2015/stemy-ngx-utils.mjs.map +1 -1
- package/fesm2020/stemy-ngx-utils.mjs +7 -3
- package/fesm2020/stemy-ngx-utils.mjs.map +1 -1
- package/ngx-utils/services/base-http.service.d.ts +4 -2
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Inject, Injectable, Optional } from "@angular/core";
|
|
1
|
+
import { Inject, Injectable, Injector, Optional } from "@angular/core";
|
|
2
2
|
import { HttpEventType } from "@angular/common/http";
|
|
3
3
|
import { CONFIG_SERVICE, EXPRESS_REQUEST, HttpPromise, LANGUAGE_SERVICE, TOASTER_SERVICE } from "../common-types";
|
|
4
4
|
import { ObjectUtils } from "../utils/object.utils";
|
|
@@ -11,7 +11,8 @@ import * as i0 from "@angular/core";
|
|
|
11
11
|
import * as i1 from "./base-http.client";
|
|
12
12
|
import * as i2 from "./storage.service";
|
|
13
13
|
export class BaseHttpService {
|
|
14
|
-
constructor(client, storage, language, toaster, configs, request = null) {
|
|
14
|
+
constructor(injector, client, storage, language, toaster, configs, request = null) {
|
|
15
|
+
this.injector = injector;
|
|
15
16
|
this.client = client;
|
|
16
17
|
this.storage = storage;
|
|
17
18
|
this.language = language;
|
|
@@ -273,11 +274,14 @@ export class BaseHttpService {
|
|
|
273
274
|
}
|
|
274
275
|
}
|
|
275
276
|
BaseHttpService.failedRequests = [];
|
|
276
|
-
BaseHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: BaseHttpService, deps: [{ token: BaseHttpClient }, { token: StorageService }, { token: LANGUAGE_SERVICE }, { token: TOASTER_SERVICE }, { token: CONFIG_SERVICE }, { token: EXPRESS_REQUEST, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
277
|
+
BaseHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: BaseHttpService, deps: [{ token: Injector }, { token: BaseHttpClient }, { token: StorageService }, { token: LANGUAGE_SERVICE }, { token: TOASTER_SERVICE }, { token: CONFIG_SERVICE }, { token: EXPRESS_REQUEST, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
277
278
|
BaseHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: BaseHttpService });
|
|
278
279
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: BaseHttpService, decorators: [{
|
|
279
280
|
type: Injectable
|
|
280
|
-
}], ctorParameters: function () { return [{ type:
|
|
281
|
+
}], ctorParameters: function () { return [{ type: i0.Injector, decorators: [{
|
|
282
|
+
type: Inject,
|
|
283
|
+
args: [Injector]
|
|
284
|
+
}] }, { type: i1.BaseHttpClient, decorators: [{
|
|
281
285
|
type: Inject,
|
|
282
286
|
args: [BaseHttpClient]
|
|
283
287
|
}] }, { type: i2.StorageService, decorators: [{
|
|
@@ -298,4 +302,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
298
302
|
type: Inject,
|
|
299
303
|
args: [EXPRESS_REQUEST]
|
|
300
304
|
}] }]; } });
|
|
301
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1odHRwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2Jhc2UtaHR0cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQW9CLGFBQWEsRUFBd0MsTUFBTSxzQkFBc0IsQ0FBQztBQUc3RyxPQUFPLEVBQ0gsY0FBYyxFQUNkLGVBQWUsRUFDZixXQUFXLEVBVVgsZ0JBQWdCLEVBRWhCLGVBQWUsRUFDbEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTlDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7QUFHbEMsTUFBTSxPQUFPLGVBQWU7SUF5QnhCLFlBQTZDLE1BQXNCLEVBQ3RCLE9BQXVCLEVBQ3JCLFFBQTBCLEVBQzNCLE9BQXdCLEVBQ3pCLE9BQXVCLEVBQ1YsVUFBbUIsSUFBSTtRQUxwQyxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNWLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBRTdFLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxD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QixNQUFNOzJCQUFDLGNBQWM7OzBCQUNyQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2UsIEh0dHBFdmVudFR5cGUsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLCBIdHRwUmVzcG9uc2V9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge1JlcXVlc3R9IGZyb20gXCJleHByZXNzXCI7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgQ09ORklHX1NFUlZJQ0UsXHJcbiAgICBFWFBSRVNTX1JFUVVFU1QsXHJcbiAgICBIdHRwUHJvbWlzZSxcclxuICAgIElDb25maWdTZXJ2aWNlLFxyXG4gICAgSUh0dHBIZWFkZXJzLFxyXG4gICAgSUh0dHBQYXJhbXMsXHJcbiAgICBJSHR0cFNlcnZpY2UsXHJcbiAgICBJSXNzdWVDb250ZXh0LFxyXG4gICAgSUxhbmd1YWdlU2VydmljZSxcclxuICAgIElQYWdpbmF0aW9uRGF0YSxcclxuICAgIElSZXF1ZXN0T3B0aW9ucyxcclxuICAgIElUb2FzdGVyU2VydmljZSxcclxuICAgIExBTkdVQUdFX1NFUlZJQ0UsXHJcbiAgICBQcm9ncmVzc0xpc3RlbmVyLFxyXG4gICAgVE9BU1RFUl9TRVJWSUNFXHJcbn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5pbXBvcnQge01hdGhVdGlsc30gZnJvbSBcIi4uL3V0aWxzL21hdGgudXRpbHNcIjtcclxuXHJcbmltcG9ydCB7QmFzZUh0dHBDbGllbnR9IGZyb20gXCIuL2Jhc2UtaHR0cC5jbGllbnRcIjtcclxuaW1wb3J0IHtVbml2ZXJzYWxTZXJ2aWNlfSBmcm9tIFwiLi91bml2ZXJzYWwuc2VydmljZVwiO1xyXG5pbXBvcnQge1N0b3JhZ2VTZXJ2aWNlfSBmcm9tIFwiLi9zdG9yYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHt0aW1lb3V0fSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtUaW1lb3V0RXJyb3J9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCYXNlSHR0cFNlcnZpY2UgaW1wbGVtZW50cyBJSHR0cFNlcnZpY2Uge1xyXG5cclxuICAgIHByb3RlY3RlZCBzdGF0aWMgZmFpbGVkUmVxdWVzdHM6IEFycmF5PCgpID0+IHZvaWQ+ID0gW107XHJcblxyXG4gICAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gXCJiYXNlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldCB3aXRoQ3JlZGVudGlhbHMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmVxdWVzdEhlYWRlcnM6IElIdHRwSGVhZGVycztcclxuICAgIHJlcXVlc3RQYXJhbXM6IElIdHRwUGFyYW1zO1xyXG4gICAgY2FjaGU6IGFueTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgc3RhdGljIHJldHJ5RmFpbGVkUmVxdWVzdHMoKTogdm9pZCB7XHJcbiAgICAgICAgQmFzZUh0dHBTZXJ2aWNlLmZhaWxlZFJlcXVlc3RzLmZvckVhY2gociA9PiByKCkpO1xyXG4gICAgICAgIEJhc2VIdHRwU2VydmljZS5mYWlsZWRSZXF1ZXN0cyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB1bml2ZXJzYWwoKTogVW5pdmVyc2FsU2VydmljZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS51bml2ZXJzYWw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChCYXNlSHR0cENsaWVudCkgcmVhZG9ubHkgY2xpZW50OiBCYXNlSHR0cENsaWVudCxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoU3RvcmFnZVNlcnZpY2UpIHJlYWRvbmx5IHN0b3JhZ2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChMQU5HVUFHRV9TRVJWSUNFKSByZWFkb25seSBsYW5ndWFnZTogSUxhbmd1YWdlU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoVE9BU1RFUl9TRVJWSUNFKSByZWFkb25seSB0b2FzdGVyOiBJVG9hc3RlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KENPTkZJR19TRVJWSUNFKSByZWFkb25seSBjb25maWdzOiBJQ29uZmlnU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRVhQUkVTU19SRVFVRVNUKSByZWFkb25seSByZXF1ZXN0OiBSZXF1ZXN0ID0gbnVsbFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0SGVhZGVycyA9IHt9O1xyXG4gICAgICAgIHRoaXMucmVxdWVzdFBhcmFtcyA9IHt9O1xyXG4gICAgICAgIHRoaXMuY2FjaGUgPSB7fTtcclxuICAgICAgICB0aGlzLmluaXRTZXJ2aWNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGluaXRTZXJ2aWNlKCk6IHZvaWQge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICB1cmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlVXJsKHVybDogc3RyaW5nLCBwYXJhbXM6IElIdHRwUGFyYW1zKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBodHRwUGFyYW1zID0gdGhpcy5jbGllbnQubWFrZVBhcmFtcyhwYXJhbXMpO1xyXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gaHR0cFBhcmFtcy5rZXlzKCkubWFwKGtleSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtrZXl9PSR7aHR0cFBhcmFtcy5nZXQoa2V5KX1gO1xyXG4gICAgICAgIH0pLmpvaW4oXCImXCIpO1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnVybCh1cmwpfT8ke3F1ZXJ5fWA7XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUxpc3RQYXJhbXMocGFnZTogbnVtYmVyLCBpdGVtc1BlclBhZ2U6IG51bWJlciwgb3JkZXJCeTogc3RyaW5nID0gbnVsbCwgb3JkZXJEZXNjZW5kaW5nOiBib29sZWFuID0gbnVsbCwgZmlsdGVyOiBzdHJpbmcgPSBudWxsKTogSUh0dHBQYXJhbXMge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtczogSUh0dHBQYXJhbXMgPSB7XHJcbiAgICAgICAgICAgIHBhZ2U6IChwYWdlIC0gMSksXHJcbiAgICAgICAgICAgIGxpbWl0OiBpdGVtc1BlclBhZ2VcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQob3JkZXJCeSkgJiYgIU9iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKG9yZGVyRGVzY2VuZGluZykpIHtcclxuICAgICAgICAgICAgcGFyYW1zLnNvcnQgPSBgJHtvcmRlckRlc2NlbmRpbmcgPyBcIi1cIiA6IFwiXCJ9JHtvcmRlckJ5fWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQoZmlsdGVyKSkge1xyXG4gICAgICAgICAgICBwYXJhbXMuZmlsdGVyID0gZmlsdGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRQcm9taXNlKHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zLCBib2R5PzogYW55KTogSHR0cFByb21pc2Uge1xyXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm1ha2VPcHRpb25zKG9wdGlvbnMsIFwiR0VUXCIsIGJvZHkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBkZWxldGVQcm9taXNlKHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zLCBib2R5PzogYW55KTogSHR0cFByb21pc2Uge1xyXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm1ha2VPcHRpb25zKG9wdGlvbnMsIFwiREVMRVRFXCIsIGJvZHkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBwb3N0UHJvbWlzZSh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IEh0dHBQcm9taXNlIHtcclxuICAgICAgICBvcHRpb25zID0gdGhpcy5tYWtlT3B0aW9ucyhvcHRpb25zLCBcIlBPU1RcIiwgYm9keSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Qcm9taXNlKHVybCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHB1dFByb21pc2UodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBIdHRwUHJvbWlzZSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMubWFrZU9wdGlvbnMob3B0aW9ucywgXCJQVVRcIiwgYm9keSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Qcm9taXNlKHVybCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHBhdGNoUHJvbWlzZSh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IEh0dHBQcm9taXNlIHtcclxuICAgICAgICBvcHRpb25zID0gdGhpcy5tYWtlT3B0aW9ucyhvcHRpb25zLCBcIlBBVENIXCIsIGJvZHkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB1cGxvYWRQcm9taXNlKHVybDogc3RyaW5nLCBib2R5OiBhbnksIGxpc3RlbmVyPzogUHJvZ3Jlc3NMaXN0ZW5lciwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IEh0dHBQcm9taXNlIHtcclxuICAgICAgICBjb25zdCBoZWFkZXJzOiBhbnkgPSB7fTtcclxuICAgICAgICBpZiAoYm9keSBpbnN0YW5jZW9mIEJsb2IpIHtcclxuICAgICAgICAgICAgaGVhZGVyc1tcIkNvbnRlbnQtVHlwZVwiXSA9IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm1ha2VPcHRpb25zKE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxyXG4gICAgICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZVxyXG4gICAgICAgIH0sIG9wdGlvbnMpLCBcIlBPU1RcIiwgYm9keSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Qcm9taXNlKHVybCwgb3B0aW9ucywgbGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBsaXN0UHJvbWlzZSh1cmw6IHN0cmluZywgcGFyYW1zOiBJSHR0cFBhcmFtcyk6IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT4ocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UHJvbWlzZSh1cmwsIHtwYXJhbXM6IHBhcmFtc30pLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbDogZGF0YS5sZW5ndGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB7fVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsOiBkYXRhLm1ldGE/LnRvdGFsIHx8IGRhdGE/LnRvdGFsIHx8IGRhdGEuaXRlbXM/Lmxlbmd0aCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBkYXRhLml0ZW1zIHx8IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIG1ldGE6IGRhdGEubWV0YSB8fCB7fVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMCB8fCByZXNwb25zZS5zdGF0dXMgPT0gMzAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsOiAxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogW3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiTm90IGltcGxlbWVudGVkLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB7fVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgdG90YWw6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIG1ldGE6IHt9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGhhbmRsZVVuYXV0aG9yaXplZEVycm9yKGFic29sdXRlVXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucywgcmVqZWN0OiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgcmVqZWN0KCk7XHJcbiAgICAgICAgaWYgKEJhc2VIdHRwU2VydmljZS5mYWlsZWRSZXF1ZXN0cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyKSByZXR1cm47XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJVc2VyIGF1dGggZXJyb3JcIiwgYWJzb2x1dGVVcmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0b2FzdFdhcm5pbmcobWVzc2FnZTogc3RyaW5nLCBpc3N1ZUNvbnRleHQ6IElJc3N1ZUNvbnRleHQsIHJlYXNvbjogYW55LCBvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXIud2FybmluZyhtZXNzYWdlLCB7aXNzdWVDb250ZXh0LCByZWFzb24sIG9wdGlvbnN9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdG9hc3RFcnJvcihtZXNzYWdlOiBzdHJpbmcsIGlzc3VlQ29udGV4dDogSUlzc3VlQ29udGV4dCwgcmVhc29uOiBhbnksIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudG9hc3Rlci53YXJuaW5nKG1lc3NhZ2UsIHtpc3N1ZUNvbnRleHQsIHJlYXNvbiwgb3B0aW9uc30pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0b1Byb21pc2UodXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucywgbGlzdGVuZXI/OiBQcm9ncmVzc0xpc3RlbmVyKTogSHR0cFByb21pc2Uge1xyXG4gICAgICAgIGNvbnN0IGlzc3VlQ29udGV4dDogSUlzc3VlQ29udGV4dCA9IHt1cmw6IFwiXCJ9O1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IEh0dHBQcm9taXNlKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgaWYgKCFyZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIllvdSBtYXkgbm90IG5lZWQgYSByZWplY3QgSGFuZGxlciBmb3IgdGhpcyByZXF1ZXN0IVwiLCB0aGlzLm5hbWUsIHVybCwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgcmVhc29uID0gcmVzcG9uc2UuZXJyb3IgfHwge307XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMCB8fCByZXNwb25zZS5zdGF0dXMgPT0gMzAxKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0V2FybmluZyhgJHt1cmx9IGVuZHBvaW50IGlzIG5vdCBpbXBsZW1lbnRlZCEgQ2xpY2sgaGVyZSwgdG8gcXVpY2tseSBjcmVhdGUgYW4gaXNzdWUuYCwgaXNzdWVDb250ZXh0LCByZWFzb24sIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gLygoRTExMDAwIGR1cGxpY2F0ZSBrZXkgZXJyb3IgY29sbGVjdGlvbjogKC4pK1xcLil8KF8xIGR1cCBrZXk6KC4pKykpL2c7XHJcbiAgICAgICAgICAgIGlmIChyZWFzb24ubWVzc2FnZSAmJiByZWdleC50ZXN0KHJlYXNvbi5tZXNzYWdlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdEVycm9yKFwibWVzc2FnZS5kdXBsaWNhdGUta2V5LmVycm9yLlwiICsgcmVhc29uLm1lc3NhZ2UucmVwbGFjZShyZWdleCwgXCJcIikucmVwbGFjZShcIiBpbmRleDogXCIsIFwiLVwiKSwgaXNzdWVDb250ZXh0LCByZWFzb24sIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RXYXJuaW5nKGAke3VybH0gZW5kcG9pbnQgZXJyb3IgaXMgbm90IGhhbmRsZWQgcHJvcGVybHkhIENsaWNrIGhlcmUsIHRvIHF1aWNrbHkgY3JlYXRlIGFuIGlzc3VlLmAsIGlzc3VlQ29udGV4dCwgcmVhc29uLCBvcHRpb25zKTtcclxuICAgICAgICB9LCAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWJzb2x1dGVVcmwodXJsLCBvcHRpb25zKS50aGVuKGFic29sdXRlVXJsID0+IHtcclxuICAgICAgICAgICAgICAgIGlzc3VlQ29udGV4dC51cmwgPSBhYnNvbHV0ZVVybDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmNsaWVudC5yZXF1ZXN0KG9wdGlvbnMubWV0aG9kLCBhYnNvbHV0ZVVybCwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaW5hbFJlcXVlc3QgPSBPYmplY3RVdGlscy5pc051bWJlcihvcHRpb25zLnRpbWVvdXQpICYmIG9wdGlvbnMudGltZW91dCA+IDBcclxuICAgICAgICAgICAgICAgICAgICA/IHJlcXVlc3QucGlwZSh0aW1lb3V0KG9wdGlvbnMudGltZW91dCkpIDogcmVxdWVzdDtcclxuICAgICAgICAgICAgICAgIGZpbmFsUmVxdWVzdC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5yZXBvcnRQcm9ncmVzcyAmJiBldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2dyZXNzID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudGFnZTogTWF0aFV0aWxzLnJvdW5kKGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsLCAyLCAwLjAxKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlZDogZXZlbnQubG9hZGVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw6IGV2ZW50LnRvdGFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaXN0ZW5lcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIocHJvZ3Jlc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLnBhcnNlUmVzcG9uc2UoZXZlbnQsIHVybCwgb3B0aW9ucykpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgYXMgSHR0cEhlYWRlcnM7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0aEtleSA9IFwiQXV0aG9yaXphdGlvblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIHVzZSB0b2tlbiBhdXRoXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xpZW50LnJlbmV3VG9rZW5GdW5jICYmIGhlYWRlcnMuaGFzKGF1dGhLZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJUb2tlblRpbWUgPSB0aGlzLmdldFVzZXJUb2tlblRpbWUoKSB8fCBjdXJyZW50VGltZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW5kIHRoZSBsYXN0IHJlcXVlc3Qgd2FzIGEgbG9uZy1sb25nIHRpbWUgYWdvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VGltZSAtIDYwMDAwMCA+IHVzZXJUb2tlblRpbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xpZW50LnJlbmV3VG9rZW5GdW5jKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlIHwgVGltZW91dEVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgVGltZW91dEVycm9yIHx8IHJlc3BvbnNlLnN0YXR1cyA9PSAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PSAzMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzIGFzIEh0dHBIZWFkZXJzO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dGhLZXkgPSBcIkF1dGhvcml6YXRpb25cIjtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBhbiBhdXRob3JpemF0aW9uIGhlYWRlciBleGlzdHMsIGFuZCB3ZSBzdGlsbCBoYXZlIGFuIFVuYXV0aG9yaXplZCByZXNwb25zZSBwcm9tcHQgdGhlIHVzZXIgdG8gbG9nIGluIGFnYWluXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlcnMuaGFzKGF1dGhLZXkpICYmIHJlc3BvbnNlLnN0YXR1cyA9PSA0MDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHVzaGVkID0gdGhpcy5wdXNoRmFpbGVkUmVxdWVzdCh1cmwsIG9wdGlvbnMsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IHRoaXMubWFrZUhlYWRlcnMob3B0aW9ucy5vcmlnaW5hbEhlYWRlcnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b1Byb21pc2UodXJsLCBvcHRpb25zLCBsaXN0ZW5lcikudGhlbihyZXNvbHZlLCByZWplY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB1c2hlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVVbmF1dGhvcml6ZWRFcnJvcihhYnNvbHV0ZVVybCwgb3B0aW9ucywgKCkgPT4gcmVqZWN0KHJlc3BvbnNlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0VXNlclRva2VuVGltZSgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZ2V0KFwidXNlclRva2VuVGltZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcHVzaEZhaWxlZFJlcXVlc3QodXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucywgcmVxOiAoKSA9PiB2b2lkKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKFwidG9rZW5cIikgPj0gMCB8fCB1cmwgPT09IFwidXNlclwiKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgQmFzZUh0dHBTZXJ2aWNlLmZhaWxlZFJlcXVlc3RzLnB1c2gocmVxKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgY2hlY2tIZWFkZXJzKGhlYWRlcnM6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghaGVhZGVycyB8fCAhaGVhZGVycy5jb29raWUgfHwgIWhlYWRlcnMucmVmZXJlciB8fCAhaGVhZGVycy5ob3N0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGhlYWRlcnMucmVmZXJlci5pbmRleE9mKGhlYWRlcnMuaG9zdCkgPj0gMDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgbWFrZU9wdGlvbnMob3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucywgbWV0aG9kOiBzdHJpbmcgPSBcIkdFVFwiLCBib2R5PzogYW55KTogSVJlcXVlc3RPcHRpb25zIHtcclxuICAgICAgICAvLyBTZXQgYmFzZSBvcHRpb25zXHJcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgPyB7Li4ub3B0aW9uc30gOiB7fTtcclxuICAgICAgICBvcHRpb25zLm1ldGhvZCA9IG1ldGhvZDtcclxuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSBvcHRpb25zLm9ic2VydmUgfHwgXCJib2R5XCI7XHJcbiAgICAgICAgb3B0aW9ucy5vcmlnaW5hbEhlYWRlcnMgPSBvcHRpb25zLm9yaWdpbmFsSGVhZGVycyB8fCAob3B0aW9ucy5oZWFkZXJzIGFzIElIdHRwSGVhZGVycykgfHwge307XHJcbiAgICAgICAgb3B0aW9ucy53aXRoQ3JlZGVudGlhbHMgPSBPYmplY3RVdGlscy5pc0Jvb2xlYW4ob3B0aW9ucy53aXRoQ3JlZGVudGlhbHMpID8gb3B0aW9ucy53aXRoQ3JlZGVudGlhbHMgOiB0aGlzLndpdGhDcmVkZW50aWFscztcclxuICAgICAgICBvcHRpb25zLmJvZHkgPSBib2R5IHx8IHt9O1xyXG4gICAgICAgIC8vIFNldCBjb29raWVzIGZyb20gc2VydmVyIHNpZGUgcmVxdWVzdFxyXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSAhdGhpcy5yZXF1ZXN0ID8gbnVsbCA6IHRoaXMucmVxdWVzdC5oZWFkZXJzO1xyXG4gICAgICAgIGlmICh0aGlzLmNoZWNrSGVhZGVycyhoZWFkZXJzKSkge1xyXG4gICAgICAgICAgICBvcHRpb25zLmhlYWRlcnNbXCJDb29raWVcIl0gPSBoZWFkZXJzLmNvb2tpZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gdGhpcy5tYWtlSGVhZGVycyhvcHRpb25zKTtcclxuICAgICAgICBvcHRpb25zLnBhcmFtcyA9IHRoaXMubWFrZVBhcmFtcyhvcHRpb25zKTtcclxuICAgICAgICByZXR1cm4gb3B0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgbWFrZUhlYWRlcnMob3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogSHR0cEhlYWRlcnMge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNsaWVudC5tYWtlSGVhZGVycyhPYmplY3QuYXNzaWduKHt9LCB0aGlzLnJlcXVlc3RIZWFkZXJzLCBvcHRpb25zPy5oZWFkZXJzIHx8IHt9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG1ha2VQYXJhbXMob3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogSHR0cFBhcmFtcyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50Lm1ha2VQYXJhbXMoT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5yZXF1ZXN0UGFyYW1zLCBvcHRpb25zPy5wYXJhbXMgfHwge30pKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcGFyc2VSZXNwb25zZShyZXNwb25zZTogYW55LCB1cmw6IHN0cmluZywgb3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogYW55IHtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHBhcnNlVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51cmwodXJsKS5yZXBsYWNlKC8oPzooKD8hOikuXFwvKVxcLykvZywgXCIkMVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgYWJzb2x1dGVVcmwodXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VVcmwodXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZXhwcmVzc1JlcXVlc3RVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHJlcSA9IHRoaXMucmVxdWVzdDtcclxuICAgICAgICBpZiAoIXJlcSB8fCAhdXJsIHx8IHVybC5zdGFydHNXaXRoKFwiaHR0cFwiKSB8fCB1cmwuc3RhcnRzV2l0aChcIi8vXCIpKSByZXR1cm4gdXJsO1xyXG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHVybC5zdGFydHNXaXRoKFwiL1wiKSA/IFwiXCIgOiBcIi9cIjtcclxuICAgICAgICByZXR1cm4gYCR7cmVxLnByb3RvY29sfTovLyR7cmVxLmdldChcImhvc3RcIil9JHtzZXBhcmF0b3J9JHt1cmx9YDtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
305
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1odHRwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2Jhc2UtaHR0cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFvQixhQUFhLEVBQXdDLE1BQU0sc0JBQXNCLENBQUM7QUFHN0csT0FBTyxFQUNILGNBQWMsRUFDZCxlQUFlLEVBQ2YsV0FBVyxFQVVYLGdCQUFnQixFQUVoQixlQUFlLEVBQ2xCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUU5QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7O0FBR2xDLE1BQU0sT0FBTyxlQUFlO0lBeUJ4QixZQUF1QyxRQUFrQixFQUNaLE1BQXNCLEVBQ3RCLE9BQXVCLEVBQ3JCLFFBQTBCLEVBQzNCLE9BQXdCLEVBQ3pCLE9BQXVCLEVBQ1YsVUFBbUIsSUFBSTtRQU4xQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ1osV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDVixZQUFPLEdB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OzBCQUNyQixNQUFNOzJCQUFDLGNBQWM7OzBCQUNyQixNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ3ZCLE1BQU07MkJBQUMsZUFBZTs7MEJBQ3RCLE1BQU07MkJBQUMsY0FBYzs7MEJBQ3JCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgT3B0aW9uYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2UsIEh0dHBFdmVudFR5cGUsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLCBIdHRwUmVzcG9uc2V9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge1JlcXVlc3R9IGZyb20gXCJleHByZXNzXCI7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgQ09ORklHX1NFUlZJQ0UsXHJcbiAgICBFWFBSRVNTX1JFUVVFU1QsXHJcbiAgICBIdHRwUHJvbWlzZSxcclxuICAgIElDb25maWdTZXJ2aWNlLFxyXG4gICAgSUh0dHBIZWFkZXJzLFxyXG4gICAgSUh0dHBQYXJhbXMsXHJcbiAgICBJSHR0cFNlcnZpY2UsXHJcbiAgICBJSXNzdWVDb250ZXh0LFxyXG4gICAgSUxhbmd1YWdlU2VydmljZSxcclxuICAgIElQYWdpbmF0aW9uRGF0YSxcclxuICAgIElSZXF1ZXN0T3B0aW9ucyxcclxuICAgIElUb2FzdGVyU2VydmljZSxcclxuICAgIExBTkdVQUdFX1NFUlZJQ0UsXHJcbiAgICBQcm9ncmVzc0xpc3RlbmVyLFxyXG4gICAgVE9BU1RFUl9TRVJWSUNFXHJcbn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5pbXBvcnQge01hdGhVdGlsc30gZnJvbSBcIi4uL3V0aWxzL21hdGgudXRpbHNcIjtcclxuXHJcbmltcG9ydCB7QmFzZUh0dHBDbGllbnR9IGZyb20gXCIuL2Jhc2UtaHR0cC5jbGllbnRcIjtcclxuaW1wb3J0IHtVbml2ZXJzYWxTZXJ2aWNlfSBmcm9tIFwiLi91bml2ZXJzYWwuc2VydmljZVwiO1xyXG5pbXBvcnQge1N0b3JhZ2VTZXJ2aWNlfSBmcm9tIFwiLi9zdG9yYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHt0aW1lb3V0fSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtUaW1lb3V0RXJyb3J9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCYXNlSHR0cFNlcnZpY2UgaW1wbGVtZW50cyBJSHR0cFNlcnZpY2Uge1xyXG5cclxuICAgIHByb3RlY3RlZCBzdGF0aWMgZmFpbGVkUmVxdWVzdHM6IEFycmF5PCgpID0+IHZvaWQ+ID0gW107XHJcblxyXG4gICAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gXCJiYXNlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldCB3aXRoQ3JlZGVudGlhbHMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmVxdWVzdEhlYWRlcnM6IElIdHRwSGVhZGVycztcclxuICAgIHJlcXVlc3RQYXJhbXM6IElIdHRwUGFyYW1zO1xyXG4gICAgY2FjaGU6IGFueTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgc3RhdGljIHJldHJ5RmFpbGVkUmVxdWVzdHMoKTogdm9pZCB7XHJcbiAgICAgICAgQmFzZUh0dHBTZXJ2aWNlLmZhaWxlZFJlcXVlc3RzLmZvckVhY2gociA9PiByKCkpO1xyXG4gICAgICAgIEJhc2VIdHRwU2VydmljZS5mYWlsZWRSZXF1ZXN0cyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB1bml2ZXJzYWwoKTogVW5pdmVyc2FsU2VydmljZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS51bml2ZXJzYWw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChJbmplY3RvcikgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChCYXNlSHR0cENsaWVudCkgcmVhZG9ubHkgY2xpZW50OiBCYXNlSHR0cENsaWVudCxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoU3RvcmFnZVNlcnZpY2UpIHJlYWRvbmx5IHN0b3JhZ2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChMQU5HVUFHRV9TRVJWSUNFKSByZWFkb25seSBsYW5ndWFnZTogSUxhbmd1YWdlU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoVE9BU1RFUl9TRVJWSUNFKSByZWFkb25seSB0b2FzdGVyOiBJVG9hc3RlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KENPTkZJR19TRVJWSUNFKSByZWFkb25seSBjb25maWdzOiBJQ29uZmlnU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRVhQUkVTU19SRVFVRVNUKSByZWFkb25seSByZXF1ZXN0OiBSZXF1ZXN0ID0gbnVsbFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0SGVhZGVycyA9IHt9O1xyXG4gICAgICAgIHRoaXMucmVxdWVzdFBhcmFtcyA9IHt9O1xyXG4gICAgICAgIHRoaXMuY2FjaGUgPSB7fTtcclxuICAgICAgICB0aGlzLmluaXRTZXJ2aWNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGluaXRTZXJ2aWNlKCk6IHZvaWQge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICB1cmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlVXJsKHVybDogc3RyaW5nLCBwYXJhbXM6IElIdHRwUGFyYW1zKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBodHRwUGFyYW1zID0gdGhpcy5jbGllbnQubWFrZVBhcmFtcyhwYXJhbXMpO1xyXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gaHR0cFBhcmFtcy5rZXlzKCkubWFwKGtleSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtrZXl9PSR7aHR0cFBhcmFtcy5nZXQoa2V5KX1gO1xyXG4gICAgICAgIH0pLmpvaW4oXCImXCIpO1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnVybCh1cmwpfT8ke3F1ZXJ5fWA7XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUxpc3RQYXJhbXMocGFnZTogbnVtYmVyLCBpdGVtc1BlclBhZ2U6IG51bWJlciwgb3JkZXJCeTogc3RyaW5nID0gbnVsbCwgb3JkZXJEZXNjZW5kaW5nOiBib29sZWFuID0gbnVsbCwgZmlsdGVyOiBzdHJpbmcgPSBudWxsKTogSUh0dHBQYXJhbXMge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtczogSUh0dHBQYXJhbXMgPSB7XHJcbiAgICAgICAgICAgIHBhZ2U6IChwYWdlIC0gMSksXHJcbiAgICAgICAgICAgIGxpbWl0OiBpdGVtc1BlclBhZ2VcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQob3JkZXJCeSkgJiYgIU9iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKG9yZGVyRGVzY2VuZGluZykpIHtcclxuICAgICAgICAgICAgcGFyYW1zLnNvcnQgPSBgJHtvcmRlckRlc2NlbmRpbmcgPyBcIi1cIiA6IFwiXCJ9JHtvcmRlckJ5fWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQoZmlsdGVyKSkge1xyXG4gICAgICAgICAgICBwYXJhbXMuZmlsdGVyID0gZmlsdGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRQcm9taXNlKHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zLCBib2R5PzogYW55KTogSHR0cFByb21pc2Uge1xyXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm1ha2VPcHRpb25zKG9wdGlvbnMsIFwiR0VUXCIsIGJvZHkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBkZWxldGVQcm9taXNlKHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zLCBib2R5PzogYW55KTogSHR0cFByb21pc2Uge1xyXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm1ha2VPcHRpb25zKG9wdGlvbnMsIFwiREVMRVRFXCIsIGJvZHkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBwb3N0UHJvbWlzZSh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IEh0dHBQcm9taXNlIHtcclxuICAgICAgICBvcHRpb25zID0gdGhpcy5tYWtlT3B0aW9ucyhvcHRpb25zLCBcIlBPU1RcIiwgYm9keSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Qcm9taXNlKHVybCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHB1dFByb21pc2UodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBIdHRwUHJvbWlzZSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMubWFrZU9wdGlvbnMob3B0aW9ucywgXCJQVVRcIiwgYm9keSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Qcm9taXNlKHVybCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHBhdGNoUHJvbWlzZSh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IEh0dHBQcm9taXNlIHtcclxuICAgICAgICBvcHRpb25zID0gdGhpcy5tYWtlT3B0aW9ucyhvcHRpb25zLCBcIlBBVENIXCIsIGJvZHkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZSh1cmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB1cGxvYWRQcm9taXNlKHVybDogc3RyaW5nLCBib2R5OiBhbnksIGxpc3RlbmVyPzogUHJvZ3Jlc3NMaXN0ZW5lciwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IEh0dHBQcm9taXNlIHtcclxuICAgICAgICBjb25zdCBoZWFkZXJzOiBhbnkgPSB7fTtcclxuICAgICAgICBpZiAoYm9keSBpbnN0YW5jZW9mIEJsb2IpIHtcclxuICAgICAgICAgICAgaGVhZGVyc1tcIkNvbnRlbnQtVHlwZVwiXSA9IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm1ha2VPcHRpb25zKE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxyXG4gICAgICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZVxyXG4gICAgICAgIH0sIG9wdGlvbnMpLCBcIlBPU1RcIiwgYm9keSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Qcm9taXNlKHVybCwgb3B0aW9ucywgbGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBsaXN0UHJvbWlzZSh1cmw6IHN0cmluZywgcGFyYW1zOiBJSHR0cFBhcmFtcyk6IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT4ocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UHJvbWlzZSh1cmwsIHtwYXJhbXM6IHBhcmFtc30pLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbDogZGF0YS5sZW5ndGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB7fVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsOiBkYXRhLm1ldGE/LnRvdGFsIHx8IGRhdGE/LnRvdGFsIHx8IGRhdGEuaXRlbXM/Lmxlbmd0aCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBkYXRhLml0ZW1zIHx8IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIG1ldGE6IGRhdGEubWV0YSB8fCB7fVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMCB8fCByZXNwb25zZS5zdGF0dXMgPT0gMzAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsOiAxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogW3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiTm90IGltcGxlbWVudGVkLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB7fVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgdG90YWw6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIG1ldGE6IHt9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGhhbmRsZVVuYXV0aG9yaXplZEVycm9yKGFic29sdXRlVXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucywgcmVqZWN0OiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgcmVqZWN0KCk7XHJcbiAgICAgICAgaWYgKEJhc2VIdHRwU2VydmljZS5mYWlsZWRSZXF1ZXN0cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyKSByZXR1cm47XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJVc2VyIGF1dGggZXJyb3JcIiwgYWJzb2x1dGVVcmwsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0b2FzdFdhcm5pbmcobWVzc2FnZTogc3RyaW5nLCBpc3N1ZUNvbnRleHQ6IElJc3N1ZUNvbnRleHQsIHJlYXNvbjogYW55LCBvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXIud2FybmluZyhtZXNzYWdlLCB7aXNzdWVDb250ZXh0LCByZWFzb24sIG9wdGlvbnN9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdG9hc3RFcnJvcihtZXNzYWdlOiBzdHJpbmcsIGlzc3VlQ29udGV4dDogSUlzc3VlQ29udGV4dCwgcmVhc29uOiBhbnksIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudG9hc3Rlci53YXJuaW5nKG1lc3NhZ2UsIHtpc3N1ZUNvbnRleHQsIHJlYXNvbiwgb3B0aW9uc30pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB0b1Byb21pc2UodXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucywgbGlzdGVuZXI/OiBQcm9ncmVzc0xpc3RlbmVyKTogSHR0cFByb21pc2Uge1xyXG4gICAgICAgIGNvbnN0IGlzc3VlQ29udGV4dDogSUlzc3VlQ29udGV4dCA9IHt1cmw6IFwiXCJ9O1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IEh0dHBQcm9taXNlKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgaWYgKCFyZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIllvdSBtYXkgbm90IG5lZWQgYSByZWplY3QgSGFuZGxlciBmb3IgdGhpcyByZXF1ZXN0IVwiLCB0aGlzLm5hbWUsIHVybCwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgcmVhc29uID0gcmVzcG9uc2UuZXJyb3IgfHwge307XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMCB8fCByZXNwb25zZS5zdGF0dXMgPT0gMzAxKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0V2FybmluZyhgJHt1cmx9IGVuZHBvaW50IGlzIG5vdCBpbXBsZW1lbnRlZCEgQ2xpY2sgaGVyZSwgdG8gcXVpY2tseSBjcmVhdGUgYW4gaXNzdWUuYCwgaXNzdWVDb250ZXh0LCByZWFzb24sIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gLygoRTExMDAwIGR1cGxpY2F0ZSBrZXkgZXJyb3IgY29sbGVjdGlvbjogKC4pK1xcLil8KF8xIGR1cCBrZXk6KC4pKykpL2c7XHJcbiAgICAgICAgICAgIGlmIChyZWFzb24ubWVzc2FnZSAmJiByZWdleC50ZXN0KHJlYXNvbi5tZXNzYWdlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdEVycm9yKFwibWVzc2FnZS5kdXBsaWNhdGUta2V5LmVycm9yLlwiICsgcmVhc29uLm1lc3NhZ2UucmVwbGFjZShyZWdleCwgXCJcIikucmVwbGFjZShcIiBpbmRleDogXCIsIFwiLVwiKSwgaXNzdWVDb250ZXh0LCByZWFzb24sIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RXYXJuaW5nKGAke3VybH0gZW5kcG9pbnQgZXJyb3IgaXMgbm90IGhhbmRsZWQgcHJvcGVybHkhIENsaWNrIGhlcmUsIHRvIHF1aWNrbHkgY3JlYXRlIGFuIGlzc3VlLmAsIGlzc3VlQ29udGV4dCwgcmVhc29uLCBvcHRpb25zKTtcclxuICAgICAgICB9LCAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWJzb2x1dGVVcmwodXJsLCBvcHRpb25zKS50aGVuKGFic29sdXRlVXJsID0+IHtcclxuICAgICAgICAgICAgICAgIGlzc3VlQ29udGV4dC51cmwgPSBhYnNvbHV0ZVVybDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmNsaWVudC5yZXF1ZXN0KG9wdGlvbnMubWV0aG9kLCBhYnNvbHV0ZVVybCwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaW5hbFJlcXVlc3QgPSBPYmplY3RVdGlscy5pc051bWJlcihvcHRpb25zLnRpbWVvdXQpICYmIG9wdGlvbnMudGltZW91dCA+IDBcclxuICAgICAgICAgICAgICAgICAgICA/IHJlcXVlc3QucGlwZSh0aW1lb3V0KG9wdGlvbnMudGltZW91dCkpIDogcmVxdWVzdDtcclxuICAgICAgICAgICAgICAgIGZpbmFsUmVxdWVzdC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5yZXBvcnRQcm9ncmVzcyAmJiBldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2dyZXNzID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudGFnZTogTWF0aFV0aWxzLnJvdW5kKGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsLCAyLCAwLjAxKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlZDogZXZlbnQubG9hZGVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw6IGV2ZW50LnRvdGFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaXN0ZW5lcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIocHJvZ3Jlc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLnBhcnNlUmVzcG9uc2UoZXZlbnQsIHVybCwgb3B0aW9ucykpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgYXMgSHR0cEhlYWRlcnM7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0aEtleSA9IFwiQXV0aG9yaXphdGlvblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIHVzZSB0b2tlbiBhdXRoXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xpZW50LnJlbmV3VG9rZW5GdW5jICYmIGhlYWRlcnMuaGFzKGF1dGhLZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJUb2tlblRpbWUgPSB0aGlzLmdldFVzZXJUb2tlblRpbWUoKSB8fCBjdXJyZW50VGltZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW5kIHRoZSBsYXN0IHJlcXVlc3Qgd2FzIGEgbG9uZy1sb25nIHRpbWUgYWdvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VGltZSAtIDYwMDAwMCA+IHVzZXJUb2tlblRpbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xpZW50LnJlbmV3VG9rZW5GdW5jKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlIHwgVGltZW91dEVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgVGltZW91dEVycm9yIHx8IHJlc3BvbnNlLnN0YXR1cyA9PSAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PSAzMDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzIGFzIEh0dHBIZWFkZXJzO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dGhLZXkgPSBcIkF1dGhvcml6YXRpb25cIjtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBhbiBhdXRob3JpemF0aW9uIGhlYWRlciBleGlzdHMsIGFuZCB3ZSBzdGlsbCBoYXZlIGFuIFVuYXV0aG9yaXplZCByZXNwb25zZSBwcm9tcHQgdGhlIHVzZXIgdG8gbG9nIGluIGFnYWluXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlcnMuaGFzKGF1dGhLZXkpICYmIHJlc3BvbnNlLnN0YXR1cyA9PSA0MDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHVzaGVkID0gdGhpcy5wdXNoRmFpbGVkUmVxdWVzdCh1cmwsIG9wdGlvbnMsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IHRoaXMubWFrZUhlYWRlcnMob3B0aW9ucy5vcmlnaW5hbEhlYWRlcnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b1Byb21pc2UodXJsLCBvcHRpb25zLCBsaXN0ZW5lcikudGhlbihyZXNvbHZlLCByZWplY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB1c2hlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVVbmF1dGhvcml6ZWRFcnJvcihhYnNvbHV0ZVVybCwgb3B0aW9ucywgKCkgPT4gcmVqZWN0KHJlc3BvbnNlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0VXNlclRva2VuVGltZSgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZ2V0KFwidXNlclRva2VuVGltZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcHVzaEZhaWxlZFJlcXVlc3QodXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucywgcmVxOiAoKSA9PiB2b2lkKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKFwidG9rZW5cIikgPj0gMCB8fCB1cmwgPT09IFwidXNlclwiKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgQmFzZUh0dHBTZXJ2aWNlLmZhaWxlZFJlcXVlc3RzLnB1c2gocmVxKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgY2hlY2tIZWFkZXJzKGhlYWRlcnM6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghaGVhZGVycyB8fCAhaGVhZGVycy5jb29raWUgfHwgIWhlYWRlcnMucmVmZXJlciB8fCAhaGVhZGVycy5ob3N0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGhlYWRlcnMucmVmZXJlci5pbmRleE9mKGhlYWRlcnMuaG9zdCkgPj0gMDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgbWFrZU9wdGlvbnMob3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucywgbWV0aG9kOiBzdHJpbmcgPSBcIkdFVFwiLCBib2R5PzogYW55KTogSVJlcXVlc3RPcHRpb25zIHtcclxuICAgICAgICAvLyBTZXQgYmFzZSBvcHRpb25zXHJcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgPyB7Li4ub3B0aW9uc30gOiB7fTtcclxuICAgICAgICBvcHRpb25zLm1ldGhvZCA9IG1ldGhvZDtcclxuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSBvcHRpb25zLm9ic2VydmUgfHwgXCJib2R5XCI7XHJcbiAgICAgICAgb3B0aW9ucy5vcmlnaW5hbEhlYWRlcnMgPSBvcHRpb25zLm9yaWdpbmFsSGVhZGVycyB8fCAob3B0aW9ucy5oZWFkZXJzIGFzIElIdHRwSGVhZGVycykgfHwge307XHJcbiAgICAgICAgb3B0aW9ucy53aXRoQ3JlZGVudGlhbHMgPSBPYmplY3RVdGlscy5pc0Jvb2xlYW4ob3B0aW9ucy53aXRoQ3JlZGVudGlhbHMpID8gb3B0aW9ucy53aXRoQ3JlZGVudGlhbHMgOiB0aGlzLndpdGhDcmVkZW50aWFscztcclxuICAgICAgICBvcHRpb25zLmJvZHkgPSBib2R5IHx8IHt9O1xyXG4gICAgICAgIC8vIFNldCBjb29raWVzIGZyb20gc2VydmVyIHNpZGUgcmVxdWVzdFxyXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSAhdGhpcy5yZXF1ZXN0ID8gbnVsbCA6IHRoaXMucmVxdWVzdC5oZWFkZXJzO1xyXG4gICAgICAgIGlmICh0aGlzLmNoZWNrSGVhZGVycyhoZWFkZXJzKSkge1xyXG4gICAgICAgICAgICBvcHRpb25zLmhlYWRlcnNbXCJDb29raWVcIl0gPSBoZWFkZXJzLmNvb2tpZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gdGhpcy5tYWtlSGVhZGVycyhvcHRpb25zKTtcclxuICAgICAgICBvcHRpb25zLnBhcmFtcyA9IHRoaXMubWFrZVBhcmFtcyhvcHRpb25zKTtcclxuICAgICAgICByZXR1cm4gb3B0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgbWFrZUhlYWRlcnMob3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogSHR0cEhlYWRlcnMge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNsaWVudC5tYWtlSGVhZGVycyhPYmplY3QuYXNzaWduKHt9LCB0aGlzLnJlcXVlc3RIZWFkZXJzLCBvcHRpb25zPy5oZWFkZXJzIHx8IHt9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG1ha2VQYXJhbXMob3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogSHR0cFBhcmFtcyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50Lm1ha2VQYXJhbXMoT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5yZXF1ZXN0UGFyYW1zLCBvcHRpb25zPy5wYXJhbXMgfHwge30pKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcGFyc2VSZXNwb25zZShyZXNwb25zZTogYW55LCB1cmw6IHN0cmluZywgb3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogYW55IHtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHBhcnNlVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51cmwodXJsKS5yZXBsYWNlKC8oPzooKD8hOikuXFwvKVxcLykvZywgXCIkMVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgYWJzb2x1dGVVcmwodXJsOiBzdHJpbmcsIG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VVcmwodXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZXhwcmVzc1JlcXVlc3RVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHJlcSA9IHRoaXMucmVxdWVzdDtcclxuICAgICAgICBpZiAoIXJlcSB8fCAhdXJsIHx8IHVybC5zdGFydHNXaXRoKFwiaHR0cFwiKSB8fCB1cmwuc3RhcnRzV2l0aChcIi8vXCIpKSByZXR1cm4gdXJsO1xyXG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHVybC5zdGFydHNXaXRoKFwiL1wiKSA/IFwiXCIgOiBcIi9cIjtcclxuICAgICAgICByZXR1cm4gYCR7cmVxLnByb3RvY29sfTovLyR7cmVxLmdldChcImhvc3RcIil9JHtzZXBhcmF0b3J9JHt1cmx9YDtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -2373,7 +2373,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
2373
2373
|
}], ctorParameters: function () { return [{ type: UniversalService }]; } });
|
|
2374
2374
|
|
|
2375
2375
|
class BaseHttpService {
|
|
2376
|
-
constructor(client, storage, language, toaster, configs, request = null) {
|
|
2376
|
+
constructor(injector, client, storage, language, toaster, configs, request = null) {
|
|
2377
|
+
this.injector = injector;
|
|
2377
2378
|
this.client = client;
|
|
2378
2379
|
this.storage = storage;
|
|
2379
2380
|
this.language = language;
|
|
@@ -2638,12 +2639,15 @@ class BaseHttpService {
|
|
|
2638
2639
|
}
|
|
2639
2640
|
}
|
|
2640
2641
|
BaseHttpService.failedRequests = [];
|
|
2641
|
-
BaseHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: BaseHttpService, deps: [{ token: BaseHttpClient }, { token: StorageService }, { token: LANGUAGE_SERVICE }, { token: TOASTER_SERVICE }, { token: CONFIG_SERVICE }, { token: EXPRESS_REQUEST, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2642
|
+
BaseHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: BaseHttpService, deps: [{ token: Injector }, { token: BaseHttpClient }, { token: StorageService }, { token: LANGUAGE_SERVICE }, { token: TOASTER_SERVICE }, { token: CONFIG_SERVICE }, { token: EXPRESS_REQUEST, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2642
2643
|
BaseHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: BaseHttpService });
|
|
2643
2644
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: BaseHttpService, decorators: [{
|
|
2644
2645
|
type: Injectable
|
|
2645
2646
|
}], ctorParameters: function () {
|
|
2646
|
-
return [{ type:
|
|
2647
|
+
return [{ type: i0.Injector, decorators: [{
|
|
2648
|
+
type: Inject,
|
|
2649
|
+
args: [Injector]
|
|
2650
|
+
}] }, { type: BaseHttpClient, decorators: [{
|
|
2647
2651
|
type: Inject,
|
|
2648
2652
|
args: [BaseHttpClient]
|
|
2649
2653
|
}] }, { type: StorageService, decorators: [{
|