@veeroute/lss-account-angular 4.0.173743-RC → 4.7.1599
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/README.md +3 -3
- package/api/api.d.ts +7 -7
- package/api/auditService.d.ts +17 -14
- package/api/auditServiceInterface.d.ts +11 -10
- package/api/authService.d.ts +27 -18
- package/api/authServiceInterface.d.ts +11 -11
- package/api/dataService.d.ts +82 -0
- package/api/dataServiceInterface.d.ts +45 -0
- package/api/infoService.d.ts +20 -14
- package/api/infoServiceInterface.d.ts +8 -8
- package/api/{quotaService.d.ts → quotasService.d.ts} +17 -14
- package/api/{quotaServiceInterface.d.ts → quotasServiceInterface.d.ts} +7 -7
- package/api/statisticsService.d.ts +30 -8
- package/api/statisticsServiceInterface.d.ts +17 -7
- package/api/systemService.d.ts +14 -8
- package/api/systemServiceInterface.d.ts +5 -5
- package/bundles/veeroute-lss-account-angular.umd.js +588 -294
- package/bundles/veeroute-lss-account-angular.umd.js.map +1 -1
- package/cfg/audit_operations.json +143 -0
- package/cfg/method_groups.json +88 -0
- package/esm2015/api/api.js +8 -8
- package/esm2015/api/auditService.js +48 -30
- package/esm2015/api/auditServiceInterface.js +1 -1
- package/esm2015/api/authService.js +86 -46
- package/esm2015/api/authServiceInterface.js +1 -1
- package/esm2015/api/dataService.js +236 -0
- package/esm2015/api/dataServiceInterface.js +2 -0
- package/esm2015/api/infoService.js +63 -36
- package/esm2015/api/infoServiceInterface.js +1 -1
- package/esm2015/api/quotasService.js +133 -0
- package/esm2015/api/quotasServiceInterface.js +2 -0
- package/esm2015/api/statisticsService.js +98 -28
- package/esm2015/api/statisticsServiceInterface.js +1 -1
- package/esm2015/api/systemService.js +53 -26
- package/esm2015/api/systemServiceInterface.js +1 -1
- package/esm2015/api.module.js +1 -1
- package/esm2015/model/accountAuditResult.js +2 -0
- package/esm2015/model/accountInfo.js +4 -4
- package/esm2015/model/auditAction.js +2 -0
- package/esm2015/model/auditActionStatistics.js +13 -0
- package/esm2015/model/auditStats.js +1 -1
- package/esm2015/model/auditStatsDetail.js +4 -4
- package/esm2015/model/checkResult.js +4 -4
- package/esm2015/model/dateStatistics.js +1 -1
- package/esm2015/model/inlineResponse400.js +1 -1
- package/esm2015/model/inlineResponse401.js +1 -1
- package/esm2015/model/inlineResponse402.js +1 -1
- package/esm2015/model/inlineResponse403.js +1 -1
- package/esm2015/model/inlineResponse404.js +1 -1
- package/esm2015/model/inlineResponse404Detail.js +2 -0
- package/esm2015/model/inlineResponse429.js +1 -1
- package/esm2015/model/inlineResponse500.js +1 -1
- package/esm2015/model/methodGroup.js +31 -0
- package/esm2015/model/methodQuota.js +1 -1
- package/esm2015/model/methodStatistics.js +1 -1
- package/esm2015/model/models.js +11 -16
- package/esm2015/model/passwordRequest.js +4 -4
- package/esm2015/model/quotaBase.js +2 -0
- package/esm2015/model/quotasResult.js +2 -0
- package/esm2015/model/serviceName.js +10 -13
- package/esm2015/model/serviceQuota.js +1 -1
- package/esm2015/model/serviceStatistics.js +1 -1
- package/esm2015/model/tokenRequest.js +4 -4
- package/esm2015/model/tokenValidationResult.js +2 -0
- package/esm2015/model/tracedata.js +2 -0
- package/esm2015/model/userRole.js +23 -0
- package/esm2015/model/userStatistics.js +1 -1
- package/esm2015/model/versionResult.js +4 -4
- package/fesm2015/veeroute-lss-account-angular.js +586 -296
- package/fesm2015/veeroute-lss-account-angular.js.map +1 -1
- package/model/accountAuditResult.d.ts +23 -0
- package/model/accountInfo.d.ts +8 -8
- package/model/auditAction.d.ts +30 -0
- package/model/auditActionStatistics.d.ts +24 -0
- package/model/auditStats.d.ts +3 -3
- package/model/auditStatsDetail.d.ts +3 -3
- package/model/checkResult.d.ts +3 -3
- package/model/dateStatistics.d.ts +3 -3
- package/model/inlineResponse400.d.ts +6 -6
- package/model/inlineResponse401.d.ts +6 -6
- package/model/inlineResponse402.d.ts +6 -6
- package/model/inlineResponse403.d.ts +7 -7
- package/model/inlineResponse404.d.ts +7 -7
- package/model/inlineResponse404Detail.d.ts +18 -0
- package/model/inlineResponse429.d.ts +6 -6
- package/model/inlineResponse500.d.ts +6 -6
- package/model/{methodName.d.ts → methodGroup.d.ts} +9 -7
- package/model/methodQuota.d.ts +7 -7
- package/model/methodStatistics.d.ts +5 -5
- package/model/models.d.ts +10 -15
- package/model/passwordRequest.d.ts +3 -3
- package/model/{quota.d.ts → quotaBase.d.ts} +4 -4
- package/model/quotasResult.d.ts +18 -0
- package/model/serviceName.d.ts +10 -13
- package/model/serviceQuota.d.ts +4 -4
- package/model/serviceStatistics.d.ts +3 -3
- package/model/tokenRequest.d.ts +4 -4
- package/model/{tokenValidation.d.ts → tokenValidationResult.d.ts} +6 -9
- package/model/tracedata.d.ts +38 -0
- package/model/userRole.d.ts +20 -0
- package/model/userStatistics.d.ts +4 -4
- package/model/versionResult.d.ts +3 -3
- package/package.json +8 -9
- package/veeroute-lss-account-angular.metadata.json +1 -1
- package/api/reportsService.d.ts +0 -41
- package/api/reportsServiceInterface.d.ts +0 -28
- package/bundles/veeroute-lss-account-angular.umd.min.js +0 -2
- package/bundles/veeroute-lss-account-angular.umd.min.js.map +0 -1
- package/esm2015/api/quotaService.js +0 -120
- package/esm2015/api/quotaServiceInterface.js +0 -2
- package/esm2015/api/reportsService.js +0 -132
- package/esm2015/api/reportsServiceInterface.js +0 -2
- package/esm2015/model/accountAction.js +0 -2
- package/esm2015/model/additionalQuota.js +0 -2
- package/esm2015/model/dateWindow.js +0 -13
- package/esm2015/model/inlineResponse405.js +0 -2
- package/esm2015/model/inlineResponse406.js +0 -2
- package/esm2015/model/inlineResponse415.js +0 -2
- package/esm2015/model/methodName.js +0 -29
- package/esm2015/model/quota.js +0 -2
- package/esm2015/model/tokenValidation.js +0 -18
- package/esm2015/model/traceData.js +0 -2
- package/esm2015/model/userActionDetail.js +0 -2
- package/esm2015/model/userAuditResult.js +0 -2
- package/esm2015/model/userQuotaResult.js +0 -2
- package/esm2015/model/userReportFilter.js +0 -6
- package/esm2015/model/userStatisticsFilter.js +0 -2
- package/model/accountAction.d.ts +0 -26
- package/model/additionalQuota.d.ts +0 -20
- package/model/dateWindow.d.ts +0 -24
- package/model/inlineResponse405.d.ts +0 -22
- package/model/inlineResponse406.d.ts +0 -22
- package/model/inlineResponse415.d.ts +0 -22
- package/model/traceData.d.ts +0 -36
- package/model/userActionDetail.d.ts +0 -22
- package/model/userAuditResult.d.ts +0 -23
- package/model/userQuotaResult.d.ts +0 -20
- package/model/userReportFilter.d.ts +0 -25
- package/model/userStatisticsFilter.d.ts +0 -18
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* VRt.Account [AC]
|
|
3
|
-
* Veeroute Account Panel
|
|
3
|
+
* # Description Veeroute Account Panel. ## Entity relationship diagram 
|
|
4
4
|
*
|
|
5
|
-
* The version of the OpenAPI document: 4.
|
|
6
|
-
* Contact:
|
|
5
|
+
* The version of the OpenAPI document: 4.7.1599
|
|
6
|
+
* Contact: servicedesk@veeroute.com
|
|
7
7
|
*
|
|
8
8
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
9
9
|
* https://openapi-generator.tech
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
*/
|
|
12
12
|
/* tslint:disable:no-unused-variable member-ordering */
|
|
13
13
|
import { Inject, Injectable, Optional } from '@angular/core';
|
|
14
|
-
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
14
|
+
import { HttpClient, HttpHeaders, HttpContext } from '@angular/common/http';
|
|
15
15
|
import { CustomHttpParameterCodec } from '../encoder';
|
|
16
|
+
// @ts-ignore
|
|
16
17
|
import { BASE_PATH } from '../variables';
|
|
17
18
|
import { Configuration } from '../configuration';
|
|
18
19
|
import * as i0 from "@angular/core";
|
|
@@ -22,7 +23,7 @@ import * as i3 from "../configuration";
|
|
|
22
23
|
export class AuthService {
|
|
23
24
|
constructor(httpClient, basePath, configuration) {
|
|
24
25
|
this.httpClient = httpClient;
|
|
25
|
-
this.basePath = 'https://api.veeroute.tech
|
|
26
|
+
this.basePath = 'https://api.edge.veeroute.tech';
|
|
26
27
|
this.defaultHeaders = new HttpHeaders();
|
|
27
28
|
this.configuration = new Configuration();
|
|
28
29
|
if (configuration) {
|
|
@@ -75,23 +76,27 @@ export class AuthService {
|
|
|
75
76
|
}
|
|
76
77
|
changePassword(requestParameters, observe = 'body', reportProgress = false, options) {
|
|
77
78
|
const passwordRequestAccount = requestParameters.passwordRequestAccount;
|
|
78
|
-
let
|
|
79
|
-
let
|
|
79
|
+
let localVarHeaders = this.defaultHeaders;
|
|
80
|
+
let localVarCredential;
|
|
80
81
|
// authentication (ApiKeyAuth) required
|
|
81
|
-
|
|
82
|
-
if (
|
|
83
|
-
|
|
82
|
+
localVarCredential = this.configuration.lookupCredential('ApiKeyAuth');
|
|
83
|
+
if (localVarCredential) {
|
|
84
|
+
localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential);
|
|
84
85
|
}
|
|
85
|
-
let
|
|
86
|
-
if (
|
|
86
|
+
let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
|
|
87
|
+
if (localVarHttpHeaderAcceptSelected === undefined) {
|
|
87
88
|
// to determine the Accept header
|
|
88
89
|
const httpHeaderAccepts = [
|
|
89
90
|
'application/json'
|
|
90
91
|
];
|
|
91
|
-
|
|
92
|
+
localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
92
93
|
}
|
|
93
|
-
if (
|
|
94
|
-
|
|
94
|
+
if (localVarHttpHeaderAcceptSelected !== undefined) {
|
|
95
|
+
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
|
|
96
|
+
}
|
|
97
|
+
let localVarHttpContext = options && options.context;
|
|
98
|
+
if (localVarHttpContext === undefined) {
|
|
99
|
+
localVarHttpContext = new HttpContext();
|
|
95
100
|
}
|
|
96
101
|
// to determine the Content-Type header
|
|
97
102
|
const consumes = [
|
|
@@ -99,36 +104,49 @@ export class AuthService {
|
|
|
99
104
|
];
|
|
100
105
|
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
|
|
101
106
|
if (httpContentTypeSelected !== undefined) {
|
|
102
|
-
|
|
107
|
+
localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
|
|
103
108
|
}
|
|
104
109
|
let responseType_ = 'json';
|
|
105
|
-
if (
|
|
106
|
-
|
|
110
|
+
if (localVarHttpHeaderAcceptSelected) {
|
|
111
|
+
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
|
|
112
|
+
responseType_ = 'text';
|
|
113
|
+
}
|
|
114
|
+
else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
|
|
115
|
+
responseType_ = 'json';
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
responseType_ = 'blob';
|
|
119
|
+
}
|
|
107
120
|
}
|
|
108
121
|
return this.httpClient.post(`${this.configuration.basePath}/account/password`, passwordRequestAccount, {
|
|
122
|
+
context: localVarHttpContext,
|
|
109
123
|
responseType: responseType_,
|
|
110
124
|
withCredentials: this.configuration.withCredentials,
|
|
111
|
-
headers:
|
|
125
|
+
headers: localVarHeaders,
|
|
112
126
|
observe: observe,
|
|
113
127
|
reportProgress: reportProgress
|
|
114
128
|
});
|
|
115
129
|
}
|
|
116
|
-
|
|
130
|
+
runTokenGeneration(requestParameters, observe = 'body', reportProgress = false, options) {
|
|
117
131
|
const tokenRequestAccount = requestParameters.tokenRequestAccount;
|
|
118
132
|
if (tokenRequestAccount === null || tokenRequestAccount === undefined) {
|
|
119
|
-
throw new Error('Required parameter tokenRequestAccount was null or undefined when calling
|
|
133
|
+
throw new Error('Required parameter tokenRequestAccount was null or undefined when calling runTokenGeneration.');
|
|
120
134
|
}
|
|
121
|
-
let
|
|
122
|
-
let
|
|
123
|
-
if (
|
|
135
|
+
let localVarHeaders = this.defaultHeaders;
|
|
136
|
+
let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
|
|
137
|
+
if (localVarHttpHeaderAcceptSelected === undefined) {
|
|
124
138
|
// to determine the Accept header
|
|
125
139
|
const httpHeaderAccepts = [
|
|
126
140
|
'application/json'
|
|
127
141
|
];
|
|
128
|
-
|
|
142
|
+
localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
143
|
+
}
|
|
144
|
+
if (localVarHttpHeaderAcceptSelected !== undefined) {
|
|
145
|
+
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
|
|
129
146
|
}
|
|
130
|
-
|
|
131
|
-
|
|
147
|
+
let localVarHttpContext = options && options.context;
|
|
148
|
+
if (localVarHttpContext === undefined) {
|
|
149
|
+
localVarHttpContext = new HttpContext();
|
|
132
150
|
}
|
|
133
151
|
// to determine the Content-Type header
|
|
134
152
|
const consumes = [
|
|
@@ -136,36 +154,49 @@ export class AuthService {
|
|
|
136
154
|
];
|
|
137
155
|
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
|
|
138
156
|
if (httpContentTypeSelected !== undefined) {
|
|
139
|
-
|
|
157
|
+
localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
|
|
140
158
|
}
|
|
141
159
|
let responseType_ = 'json';
|
|
142
|
-
if (
|
|
143
|
-
|
|
160
|
+
if (localVarHttpHeaderAcceptSelected) {
|
|
161
|
+
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
|
|
162
|
+
responseType_ = 'text';
|
|
163
|
+
}
|
|
164
|
+
else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
|
|
165
|
+
responseType_ = 'json';
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
responseType_ = 'blob';
|
|
169
|
+
}
|
|
144
170
|
}
|
|
145
|
-
return this.httpClient.post(`${this.configuration.basePath}/account/token`, tokenRequestAccount, {
|
|
171
|
+
return this.httpClient.post(`${this.configuration.basePath}/account/token/generation`, tokenRequestAccount, {
|
|
172
|
+
context: localVarHttpContext,
|
|
146
173
|
responseType: responseType_,
|
|
147
174
|
withCredentials: this.configuration.withCredentials,
|
|
148
|
-
headers:
|
|
175
|
+
headers: localVarHeaders,
|
|
149
176
|
observe: observe,
|
|
150
177
|
reportProgress: reportProgress
|
|
151
178
|
});
|
|
152
179
|
}
|
|
153
|
-
|
|
180
|
+
runTokenValidation(requestParameters, observe = 'body', reportProgress = false, options) {
|
|
154
181
|
const body = requestParameters.body;
|
|
155
182
|
if (body === null || body === undefined) {
|
|
156
|
-
throw new Error('Required parameter body was null or undefined when calling
|
|
183
|
+
throw new Error('Required parameter body was null or undefined when calling runTokenValidation.');
|
|
157
184
|
}
|
|
158
|
-
let
|
|
159
|
-
let
|
|
160
|
-
if (
|
|
185
|
+
let localVarHeaders = this.defaultHeaders;
|
|
186
|
+
let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
|
|
187
|
+
if (localVarHttpHeaderAcceptSelected === undefined) {
|
|
161
188
|
// to determine the Accept header
|
|
162
189
|
const httpHeaderAccepts = [
|
|
163
190
|
'application/json'
|
|
164
191
|
];
|
|
165
|
-
|
|
192
|
+
localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
166
193
|
}
|
|
167
|
-
if (
|
|
168
|
-
|
|
194
|
+
if (localVarHttpHeaderAcceptSelected !== undefined) {
|
|
195
|
+
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
|
|
196
|
+
}
|
|
197
|
+
let localVarHttpContext = options && options.context;
|
|
198
|
+
if (localVarHttpContext === undefined) {
|
|
199
|
+
localVarHttpContext = new HttpContext();
|
|
169
200
|
}
|
|
170
201
|
// to determine the Content-Type header
|
|
171
202
|
const consumes = [
|
|
@@ -173,16 +204,25 @@ export class AuthService {
|
|
|
173
204
|
];
|
|
174
205
|
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
|
|
175
206
|
if (httpContentTypeSelected !== undefined) {
|
|
176
|
-
|
|
207
|
+
localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
|
|
177
208
|
}
|
|
178
209
|
let responseType_ = 'json';
|
|
179
|
-
if (
|
|
180
|
-
|
|
210
|
+
if (localVarHttpHeaderAcceptSelected) {
|
|
211
|
+
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
|
|
212
|
+
responseType_ = 'text';
|
|
213
|
+
}
|
|
214
|
+
else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
|
|
215
|
+
responseType_ = 'json';
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
responseType_ = 'blob';
|
|
219
|
+
}
|
|
181
220
|
}
|
|
182
|
-
return this.httpClient.post(`${this.configuration.basePath}/account/token/
|
|
221
|
+
return this.httpClient.post(`${this.configuration.basePath}/account/token/validation`, body, {
|
|
222
|
+
context: localVarHttpContext,
|
|
183
223
|
responseType: responseType_,
|
|
184
224
|
withCredentials: this.configuration.withCredentials,
|
|
185
|
-
headers:
|
|
225
|
+
headers: localVarHeaders,
|
|
186
226
|
observe: observe,
|
|
187
227
|
reportProgress: reportProgress
|
|
188
228
|
});
|
|
@@ -199,4 +239,4 @@ AuthService.ctorParameters = () => [
|
|
|
199
239
|
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [BASE_PATH,] }] },
|
|
200
240
|
{ type: Configuration, decorators: [{ type: Optional }] }
|
|
201
241
|
];
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvYXV0aFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUNILHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBMkIsZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUNzQixNQUFZLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUErQixZQUFZLENBQUM7QUFlL0UsT0FBTyxFQUFFLFNBQVMsRUFBc0IsTUFBMEIsY0FBYyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBMEMsa0JBQWtCLENBQUM7Ozs7O0FBYXJGLE1BQU0sT0FBTyxXQUFXO0lBT3BCLFlBQXNCLFVBQXNCLEVBQWdDLFFBQWdCLEVBQWMsYUFBNEI7UUFBaEgsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUxsQyxhQUFRLEdBQUcsOEJBQThCLENBQUM7UUFDN0MsbUJBQWMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ25DLGtCQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUl2QyxJQUFJLGFBQWEsRUFBRTtZQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtZQUNqRCxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRTtnQkFDOUIsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDNUI7WUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDMUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxJQUFJLElBQUksd0JB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QUUsdUJBQXVCLENBQUMsQ0FBQztTQUNsRTtRQUVELElBQUksYUFBYSxHQUFvQixNQUFNLENBQUM7UUFDNUMsSUFBRyx3QkFBd0IsSUFBSSx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDeEUsYUFBYSxHQUFHLE1BQU0sQ0FBQztTQUMxQjtRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQXlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLHlCQUF5QixFQUN2RyxJQUFJLEVBQ0o7WUFDSSxZQUFZLEVBQU8sYUFBYTtZQUNoQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlO1lBQ25ELE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLGNBQWMsRUFBRSxjQUFjO1NBQ2pDLENBQ0osQ0FBQztJQUNOLENBQUM7Ozs7WUF6T0osVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUE5QlEsVUFBVTt5Q0FzQ2dDLFFBQVEsWUFBRyxNQUFNLFNBQUMsU0FBUztZQXBCckUsYUFBYSx1QkFvQjZFLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZSdC5BY2NvdW50IFtBQ11cbiAqIFZlZXJvdXRlIEFjY291bnQgUGFuZWxcbiAqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgT3BlbkFQSSBkb2N1bWVudDogNC4wLjE3Mzc0M1JDXG4gKiBDb250YWN0OiBzdXBwb3J0QHZlZXJvdXRlLmNvbVxuICpcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgT3BlbkFQSSBHZW5lcmF0b3IgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkuXG4gKiBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2hcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuLyogdHNsaW50OmRpc2FibGU6bm8tdW51c2VkLXZhcmlhYmxlIG1lbWJlci1vcmRlcmluZyAqL1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gICAgICAgICAgICAgICAgICAgICAgZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyxcbiAgICAgICAgIEh0dHBSZXNwb25zZSwgSHR0cEV2ZW50LCBIdHRwUGFyYW1ldGVyQ29kZWMgfSAgICAgICBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDdXN0b21IdHRwUGFyYW1ldGVyQ29kZWMgfSAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi4vZW5jb2Rlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IElubGluZVJlc3BvbnNlNDAwQWNjb3VudCB9IGZyb20gJy4uL21vZGVsL21vZGVscyc7XG5pbXBvcnQgeyBJbmxpbmVSZXNwb25zZTQwMUFjY291bnQgfSBmcm9tICcuLi9tb2RlbC9tb2RlbHMnO1xuaW1wb3J0IHsgSW5saW5lUmVzcG9uc2U0MDJBY2NvdW50IH0gZnJvbSAnLi4vbW9kZWwvbW9kZWxzJztcbmltcG9ydCB7IElubGluZVJlc3BvbnNlNDAzQWNjb3VudCB9IGZyb20gJy4uL21vZGVsL21vZGVscyc7XG5pbXBvcnQgeyBJbmxpbmVSZXNwb25zZTQwNEFjY291bnQgfSBmcm9tICcuLi9tb2RlbC9tb2RlbHMnO1xuaW1wb3J0IHsgSW5saW5lUmVzcG9uc2U0MTVBY2NvdW50IH0gZnJvbSAnLi4vbW9kZWwvbW9kZWxzJztcbmltcG9ydCB7IElubGluZVJlc3BvbnNlNDI5QWNjb3VudCB9IGZyb20gJy4uL21vZGVsL21vZGVscyc7XG5pbXBvcnQgeyBJbmxpbmVSZXNwb25zZTUwMEFjY291bnQgfSBmcm9tICcuLi9tb2RlbC9tb2RlbHMnO1xuaW1wb3J0IHsgUGFzc3dvcmRSZXF1ZXN0QWNjb3VudCB9IGZyb20gJy4uL21vZGVsL21vZGVscyc7XG5pbXBvcnQgeyBUb2tlblJlcXVlc3RBY2NvdW50IH0gZnJvbSAnLi4vbW9kZWwvbW9kZWxzJztcbmltcG9ydCB7IFRva2VuVmFsaWRhdGlvbkFjY291bnQgfSBmcm9tICcuLi9tb2RlbC9tb2RlbHMnO1xuXG5pbXBvcnQgeyBCQVNFX1BBVEgsIENPTExFQ1RJT05fRk9STUFUUyB9ICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi4vdmFyaWFibGVzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi9jb25maWd1cmF0aW9uJztcbmltcG9ydCB7XG4gICAgQXV0aFNlcnZpY2VJbnRlcmZhY2UsXG4gICAgQ2hhbmdlUGFzc3dvcmRSZXF1ZXN0UGFyYW1zLFxuICAgIEdlbmVyYXRlVG9rZW5SZXF1ZXN0UGFyYW1zLFxuICAgIFZhbGlkYXRlVG9rZW5SZXF1ZXN0UGFyYW1zXG59IGZyb20gJy4vYXV0aFNlcnZpY2VJbnRlcmZhY2UnO1xuXG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2UgaW1wbGVtZW50cyBBdXRoU2VydmljZUludGVyZmFjZSB7XG5cbiAgICBwcm90ZWN0ZWQgYmFzZVBhdGggPSAnaHR0cHM6Ly9hcGkudmVlcm91dGUudGVjaC92NCc7XG4gICAgcHVibGljIGRlZmF1bHRIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgcHVibGljIGNvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbigpO1xuICAgIHB1YmxpYyBlbmNvZGVyOiBIdHRwUGFyYW1ldGVyQ29kZWM7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaHR0cENsaWVudDogSHR0cENsaWVudCwgQE9wdGlvbmFsKClASW5qZWN0KEJBU0VfUEFUSCkgYmFzZVBhdGg6IHN0cmluZywgQE9wdGlvbmFsKCkgY29uZmlndXJhdGlvbjogQ29uZmlndXJhdGlvbikge1xuICAgICAgICBpZiAoY29uZmlndXJhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYmFzZVBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgYmFzZVBhdGggPSB0aGlzLmJhc2VQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRoID0gYmFzZVBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbmNvZGVyID0gdGhpcy5jb25maWd1cmF0aW9uLmVuY29kZXIgfHwgbmV3IEN1c3RvbUh0dHBQYXJhbWV0ZXJDb2RlYygpO1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBhZGRUb0h0dHBQYXJhbXMoaHR0cFBhcmFtczogSHR0cFBhcmFtcywgdmFsdWU6IGFueSwga2V5Pzogc3RyaW5nKTogSHR0cFBhcmFtcyB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgaW5zdGFuY2VvZiBEYXRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgaHR0cFBhcmFtcyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zUmVjdXJzaXZlKGh0dHBQYXJhbXMsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGh0dHBQYXJhbXMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtc1JlY3Vyc2l2ZShodHRwUGFyYW1zLCB2YWx1ZSwga2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaHR0cFBhcmFtcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZFRvSHR0cFBhcmFtc1JlY3Vyc2l2ZShodHRwUGFyYW1zOiBIdHRwUGFyYW1zLCB2YWx1ZT86IGFueSwga2V5Pzogc3RyaW5nKTogSHR0cFBhcmFtcyB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gaHR0cFBhcmFtcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICh2YWx1ZSBhcyBhbnlbXSkuZm9yRWFjaCggZWxlbSA9PiBodHRwUGFyYW1zID0gdGhpcy5hZGRUb0h0dHBQYXJhbXNSZWN1cnNpdmUoaHR0cFBhcmFtcywgZWxlbSwga2V5KSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5hcHBlbmQoa2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlIGFzIERhdGUpLnRvSVNPU3RyaW5nKCkuc3Vic3RyKDAsIDEwKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcImtleSBtYXkgbm90IGJlIG51bGwgaWYgdmFsdWUgaXMgRGF0ZVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHZhbHVlKS5mb3JFYWNoKCBrID0+IGh0dHBQYXJhbXMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtc1JlY3Vyc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgaHR0cFBhcmFtcywgdmFsdWVba10sIGtleSAhPSBudWxsID8gYCR7a2V5fS4ke2t9YCA6IGspKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChrZXkgIT0gbnVsbCkge1xuICAgICAgICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuYXBwZW5kKGtleSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJrZXkgbWF5IG5vdCBiZSBudWxsIGlmIHZhbHVlIGlzIG5vdCBvYmplY3Qgb3IgYXJyYXlcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGh0dHBQYXJhbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlIHBhc3N3b3JkLlxuICAgICAqIENoYW5nZSBwYXNzd29yZCBhbmQgZ2V0IG5ldyB0b2tlbi5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdFBhcmFtZXRlcnNcbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2hhbmdlUGFzc3dvcmQocmVxdWVzdFBhcmFtZXRlcnM6IENoYW5nZVBhc3N3b3JkUmVxdWVzdFBhcmFtcywgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbid9KTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgIHB1YmxpYyBjaGFuZ2VQYXNzd29yZChyZXF1ZXN0UGFyYW1ldGVyczogQ2hhbmdlUGFzc3dvcmRSZXF1ZXN0UGFyYW1zLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbid9KTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8c3RyaW5nPj47XG4gICAgcHVibGljIGNoYW5nZVBhc3N3b3JkKHJlcXVlc3RQYXJhbWV0ZXJzOiBDaGFuZ2VQYXNzd29yZFJlcXVlc3RQYXJhbXMsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbid9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8c3RyaW5nPj47XG4gICAgcHVibGljIGNoYW5nZVBhc3N3b3JkKHJlcXVlc3RQYXJhbWV0ZXJzOiBDaGFuZ2VQYXNzd29yZFJlcXVlc3RQYXJhbXMsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nfSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IHBhc3N3b3JkUmVxdWVzdEFjY291bnQgPSByZXF1ZXN0UGFyYW1ldGVycy5wYXNzd29yZFJlcXVlc3RBY2NvdW50O1xuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcblxuICAgICAgICBsZXQgY3JlZGVudGlhbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICAvLyBhdXRoZW50aWNhdGlvbiAoQXBpS2V5QXV0aCkgcmVxdWlyZWRcbiAgICAgICAgY3JlZGVudGlhbCA9IHRoaXMuY29uZmlndXJhdGlvbi5sb29rdXBDcmVkZW50aWFsKCdBcGlLZXlBdXRoJyk7XG4gICAgICAgIGlmIChjcmVkZW50aWFsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyICcgKyBjcmVkZW50aWFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5odHRwSGVhZGVyQWNjZXB0O1xuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBDb250ZW50VHlwZVNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xuICAgICAgICBpZiAoaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCBodHRwQ29udGVudFR5cGVTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmVzcG9uc2VUeXBlXzogJ3RleHQnIHwgJ2pzb24nID0gJ2pzb24nO1xuICAgICAgICBpZihodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgJiYgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkLnN0YXJ0c1dpdGgoJ3RleHQnKSkge1xuICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICd0ZXh0JztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxzdHJpbmc+KGAke3RoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aH0vYWNjb3VudC9wYXNzd29yZGAsXG4gICAgICAgICAgICBwYXNzd29yZFJlcXVlc3RBY2NvdW50LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogPGFueT5yZXNwb25zZVR5cGVfLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2J0YWluaW5nIGEgdG9rZW4uXG4gICAgICogT2J0YWluaW5nIGEgdG9rZW4gdXNpbmcgdGhlIGxvZ2luIGFuZCBwYXNzd29yZC5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdFBhcmFtZXRlcnNcbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2VuZXJhdGVUb2tlbihyZXF1ZXN0UGFyYW1ldGVyczogR2VuZXJhdGVUb2tlblJlcXVlc3RQYXJhbXMsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nfSk6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBwdWJsaWMgZ2VuZXJhdGVUb2tlbihyZXF1ZXN0UGFyYW1ldGVyczogR2VuZXJhdGVUb2tlblJlcXVlc3RQYXJhbXMsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJ30pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxzdHJpbmc+PjtcbiAgICBwdWJsaWMgZ2VuZXJhdGVUb2tlbihyZXF1ZXN0UGFyYW1ldGVyczogR2VuZXJhdGVUb2tlblJlcXVlc3RQYXJhbXMsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbid9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8c3RyaW5nPj47XG4gICAgcHVibGljIGdlbmVyYXRlVG9rZW4ocmVxdWVzdFBhcmFtZXRlcnM6IEdlbmVyYXRlVG9rZW5SZXF1ZXN0UGFyYW1zLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UsIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJ30pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBjb25zdCB0b2tlblJlcXVlc3RBY2NvdW50ID0gcmVxdWVzdFBhcmFtZXRlcnMudG9rZW5SZXF1ZXN0QWNjb3VudDtcbiAgICAgICAgaWYgKHRva2VuUmVxdWVzdEFjY291bnQgPT09IG51bGwgfHwgdG9rZW5SZXF1ZXN0QWNjb3VudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciB0b2tlblJlcXVlc3RBY2NvdW50IHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZ2VuZXJhdGVUb2tlbi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcblxuICAgICAgICBsZXQgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuaHR0cEhlYWRlckFjY2VwdDtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwQ29udGVudFR5cGVTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckNvbnRlbnRUeXBlKGNvbnN1bWVzKTtcbiAgICAgICAgaWYgKGh0dHBDb250ZW50VHlwZVNlbGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQ29udGVudC1UeXBlJywgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlc3BvbnNlVHlwZV86ICd0ZXh0JyB8ICdqc29uJyA9ICdqc29uJztcbiAgICAgICAgaWYoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICYmIGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZC5zdGFydHNXaXRoKCd0ZXh0JykpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAndGV4dCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8c3RyaW5nPihgJHt0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGh9L2FjY291bnQvdG9rZW5gLFxuICAgICAgICAgICAgdG9rZW5SZXF1ZXN0QWNjb3VudCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRpbmcgYSB0b2tlbi5cbiAgICAgKiBWYWxpZGF0aW5nIGEgdG9rZW4uXG4gICAgICogQHBhcmFtIHJlcXVlc3RQYXJhbWV0ZXJzXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRlVG9rZW4ocmVxdWVzdFBhcmFtZXRlcnM6IFZhbGlkYXRlVG9rZW5SZXF1ZXN0UGFyYW1zLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJ30pOiBPYnNlcnZhYmxlPFRva2VuVmFsaWRhdGlvbkFjY291bnQ+O1xuICAgIHB1YmxpYyB2YWxpZGF0ZVRva2VuKHJlcXVlc3RQYXJhbWV0ZXJzOiBWYWxpZGF0ZVRva2VuUmVxdWVzdFBhcmFtcywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nfSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPFRva2VuVmFsaWRhdGlvbkFjY291bnQ+PjtcbiAgICBwdWJsaWMgdmFsaWRhdGVUb2tlbihyZXF1ZXN0UGFyYW1ldGVyczogVmFsaWRhdGVUb2tlblJlcXVlc3RQYXJhbXMsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbid9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8VG9rZW5WYWxpZGF0aW9uQWNjb3VudD4+O1xuICAgIHB1YmxpYyB2YWxpZGF0ZVRva2VuKHJlcXVlc3RQYXJhbWV0ZXJzOiBWYWxpZGF0ZVRva2VuUmVxdWVzdFBhcmFtcywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbid9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgY29uc3QgYm9keSA9IHJlcXVlc3RQYXJhbWV0ZXJzLmJvZHk7XG4gICAgICAgIGlmIChib2R5ID09PSBudWxsIHx8IGJvZHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgYm9keSB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHZhbGlkYXRlVG9rZW4uJyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG5cbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmh0dHBIZWFkZXJBY2NlcHQ7XG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0FjY2VwdCcsIGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJDb250ZW50VHlwZShjb25zdW1lcyk7XG4gICAgICAgIGlmIChodHRwQ29udGVudFR5cGVTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsIGh0dHBDb250ZW50VHlwZVNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXNwb25zZVR5cGVfOiAndGV4dCcgfCAnanNvbicgPSAnanNvbic7XG4gICAgICAgIGlmKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAmJiBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQuc3RhcnRzV2l0aCgndGV4dCcpKSB7XG4gICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ3RleHQnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PFRva2VuVmFsaWRhdGlvbkFjY291bnQ+KGAke3RoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aH0vYWNjb3VudC90b2tlbi92YWxpZGF0ZWAsXG4gICAgICAgICAgICBib2R5LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogPGFueT5yZXNwb25zZVR5cGVfLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG59XG4iXX0=
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvYXV0aFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUNILHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBMkIsZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUNzQixXQUFXLEVBQ3hELE1BQVksc0JBQXNCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQStCLFlBQVksQ0FBQztBQXdCL0UsYUFBYTtBQUNiLE9BQU8sRUFBRSxTQUFTLEVBQXNCLE1BQTBCLGNBQWMsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQTBDLGtCQUFrQixDQUFDOzs7OztBQWFyRixNQUFNLE9BQU8sV0FBVztJQU9wQixZQUFzQixVQUFzQixFQUFnQyxRQUFnQixFQUFjLGFBQTRCO1FBQWhILGVBQVUsR0FBVixVQUFVLENBQVk7UUFMbEMsYUFBUSxHQUFHLGdDQUFnQyxDQUFDO1FBQy9DLG1CQUFjLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFJdkMsSUFBSSxhQUFhLEVBQUU7WUFDZixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztTQUN0QztRQUNELElBQUksT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7WUFDakQsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUU7Z0JBQzlCLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQzVCO1lBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1NBQzFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxD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YSxHQUFHLE1BQU0sQ0FBQzthQUMxQjtpQkFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLGdDQUFnQyxDQUFDLEVBQUU7Z0JBQ3hFLGFBQWEsR0FBRyxNQUFNLENBQUM7YUFDMUI7aUJBQU07Z0JBQ0gsYUFBYSxHQUFHLE1BQU0sQ0FBQzthQUMxQjtTQUNKO1FBR0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBK0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsMkJBQTJCLEVBQy9HLElBQUksRUFFSjtZQUNJLE9BQU8sRUFBRSxtQkFBbUI7WUFDNUIsWUFBWSxFQUFPLGFBQWE7WUFDaEMsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZTtZQUNuRCxPQUFPLEVBQUUsZUFBZTtZQUN4QixPQUFPLEVBQUUsT0FBTztZQUNoQixjQUFjLEVBQUUsY0FBYztTQUNqQyxDQUNKLENBQUM7SUFDTixDQUFDOzs7O1lBblJKLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBekNRLFVBQVU7eUNBaURnQyxRQUFRLFlBQUcsTUFBTSxTQUFDLFNBQVM7WUFwQnJFLGFBQWEsdUJBb0I2RSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWUnQuQWNjb3VudCBbQUNdXG4gKiAjIERlc2NyaXB0aW9uICBWZWVyb3V0ZSBBY2NvdW50IFBhbmVsLiAgIyMgRW50aXR5IHJlbGF0aW9uc2hpcCBkaWFncmFtICAhW2VyZF0oLi4vdW1sL2FjY291bnQuc3ZnKVxuICpcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiA0LjcuMTU5OVxuICogQ29udGFjdDogc2VydmljZWRlc2tAdmVlcm91dGUuY29tXG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSBPcGVuQVBJIEdlbmVyYXRvciAoaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKS5cbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxuICovXG4vKiB0c2xpbnQ6ZGlzYWJsZTpuby11bnVzZWQtdmFyaWFibGUgbWVtYmVyLW9yZGVyaW5nICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSAgICAgICAgICAgICAgICAgICAgICBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLFxuICAgICAgICAgSHR0cFJlc3BvbnNlLCBIdHRwRXZlbnQsIEh0dHBQYXJhbWV0ZXJDb2RlYywgSHR0cENvbnRleHQgXG4gICAgICAgIH0gICAgICAgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ3VzdG9tSHR0cFBhcmFtZXRlckNvZGVjIH0gICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL2VuY29kZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ3J4anMnO1xuXG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBJbmxpbmVSZXNwb25zZTQwMEFjY291bnQgfSBmcm9tICcuLi9tb2RlbC9pbmxpbmVSZXNwb25zZTQwMCc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBJbmxpbmVSZXNwb25zZTQwMUFjY291bnQgfSBmcm9tICcuLi9tb2RlbC9pbmxpbmVSZXNwb25zZTQwMSc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBJbmxpbmVSZXNwb25zZTQwMkFjY291bnQgfSBmcm9tICcuLi9tb2RlbC9pbmxpbmVSZXNwb25zZTQwMic7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBJbmxpbmVSZXNwb25zZTQwM0FjY291bnQgfSBmcm9tICcuLi9tb2RlbC9pbmxpbmVSZXNwb25zZTQwMyc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBJbmxpbmVSZXNwb25zZTQwNEFjY291bnQgfSBmcm9tICcuLi9tb2RlbC9pbmxpbmVSZXNwb25zZTQwNCc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBJbmxpbmVSZXNwb25zZTQyOUFjY291bnQgfSBmcm9tICcuLi9tb2RlbC9pbmxpbmVSZXNwb25zZTQyOSc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBJbmxpbmVSZXNwb25zZTUwMEFjY291bnQgfSBmcm9tICcuLi9tb2RlbC9pbmxpbmVSZXNwb25zZTUwMCc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBQYXNzd29yZFJlcXVlc3RBY2NvdW50IH0gZnJvbSAnLi4vbW9kZWwvcGFzc3dvcmRSZXF1ZXN0Jztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IFRva2VuUmVxdWVzdEFjY291bnQgfSBmcm9tICcuLi9tb2RlbC90b2tlblJlcXVlc3QnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgVG9rZW5WYWxpZGF0aW9uUmVzdWx0QWNjb3VudCB9IGZyb20gJy4uL21vZGVsL3Rva2VuVmFsaWRhdGlvblJlc3VsdCc7XG5cbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEJBU0VfUEFUSCwgQ09MTEVDVElPTl9GT1JNQVRTIH0gICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi92YXJpYWJsZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL2NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtcbiAgICBBdXRoU2VydmljZUludGVyZmFjZSxcbiAgICBDaGFuZ2VQYXNzd29yZFJlcXVlc3RQYXJhbXMsXG4gICAgUnVuVG9rZW5HZW5lcmF0aW9uUmVxdWVzdFBhcmFtcyxcbiAgICBSdW5Ub2tlblZhbGlkYXRpb25SZXF1ZXN0UGFyYW1zXG59IGZyb20gJy4vYXV0aFNlcnZpY2VJbnRlcmZhY2UnO1xuXG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2UgaW1wbGVtZW50cyBBdXRoU2VydmljZUludGVyZmFjZSB7XG5cbiAgICBwcm90ZWN0ZWQgYmFzZVBhdGggPSAnaHR0cHM6Ly9hcGkuZWRnZS52ZWVyb3V0ZS50ZWNoJztcbiAgICBwdWJsaWMgZGVmYXVsdEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICBwdWJsaWMgY29uZmlndXJhdGlvbiA9IG5ldyBDb25maWd1cmF0aW9uKCk7XG4gICAgcHVibGljIGVuY29kZXI6IEh0dHBQYXJhbWV0ZXJDb2RlYztcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBAT3B0aW9uYWwoKUBJbmplY3QoQkFTRV9QQVRIKSBiYXNlUGF0aDogc3RyaW5nLCBAT3B0aW9uYWwoKSBjb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBiYXNlUGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBiYXNlUGF0aCA9IHRoaXMuYmFzZVBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGggPSBiYXNlUGF0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVuY29kZXIgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlciB8fCBuZXcgQ3VzdG9tSHR0cFBhcmFtZXRlckNvZGVjKCk7XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIGFkZFRvSHR0cFBhcmFtcyhodHRwUGFyYW1zOiBIdHRwUGFyYW1zLCB2YWx1ZTogYW55LCBrZXk/OiBzdHJpbmcpOiBIdHRwUGFyYW1zIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBodHRwUGFyYW1zID0gdGhpcy5hZGRUb0h0dHBQYXJhbXNSZWN1cnNpdmUoaHR0cFBhcmFtcywgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaHR0cFBhcmFtcyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zUmVjdXJzaXZlKGh0dHBQYXJhbXMsIHZhbHVlLCBrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBodHRwUGFyYW1zO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkVG9IdHRwUGFyYW1zUmVjdXJzaXZlKGh0dHBQYXJhbXM6IEh0dHBQYXJhbXMsIHZhbHVlPzogYW55LCBrZXk/OiBzdHJpbmcpOiBIdHRwUGFyYW1zIHtcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBodHRwUGFyYW1zO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgKHZhbHVlIGFzIGFueVtdKS5mb3JFYWNoKCBlbGVtID0+IGh0dHBQYXJhbXMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtc1JlY3Vyc2l2ZShodHRwUGFyYW1zLCBlbGVtLCBrZXkpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLmFwcGVuZChrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKS5zdWJzdHIoMCwgMTApKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwia2V5IG1heSBub3QgYmUgbnVsbCBpZiB2YWx1ZSBpcyBEYXRlXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXModmFsdWUpLmZvckVhY2goIGsgPT4gaHR0cFBhcmFtcyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zUmVjdXJzaXZlKFxuICAgICAgICAgICAgICAgICAgICBodHRwUGFyYW1zLCB2YWx1ZVtrXSwga2V5ICE9IG51bGwgPyBgJHtrZXl9LiR7a31gIDogaykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGtleSAhPSBudWxsKSB7XG4gICAgICAgICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5hcHBlbmQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcImtleSBtYXkgbm90IGJlIG51bGwgaWYgdmFsdWUgaXMgbm90IG9iamVjdCBvciBhcnJheVwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaHR0cFBhcmFtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2UgcGFzc3dvcmRcbiAgICAgKiBDaGFuZ2UgcGFzc3dvcmQgYW5kIGdldCBuZXcgdG9rZW4uXG4gICAgICogQHBhcmFtIHJlcXVlc3RQYXJhbWV0ZXJzXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGNoYW5nZVBhc3N3b3JkKHJlcXVlc3RQYXJhbWV0ZXJzOiBDaGFuZ2VQYXNzd29yZFJlcXVlc3RQYXJhbXMsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgIHB1YmxpYyBjaGFuZ2VQYXNzd29yZChyZXF1ZXN0UGFyYW1ldGVyczogQ2hhbmdlUGFzc3dvcmRSZXF1ZXN0UGFyYW1zLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxzdHJpbmc+PjtcbiAgICBwdWJsaWMgY2hhbmdlUGFzc3dvcmQocmVxdWVzdFBhcmFtZXRlcnM6IENoYW5nZVBhc3N3b3JkUmVxdWVzdFBhcmFtcywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8SHR0cEV2ZW50PHN0cmluZz4+O1xuICAgIHB1YmxpYyBjaGFuZ2VQYXNzd29yZChyZXF1ZXN0UGFyYW1ldGVyczogQ2hhbmdlUGFzc3dvcmRSZXF1ZXN0UGFyYW1zLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UsIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IHBhc3N3b3JkUmVxdWVzdEFjY291bnQgPSByZXF1ZXN0UGFyYW1ldGVycy5wYXNzd29yZFJlcXVlc3RBY2NvdW50O1xuXG4gICAgICAgIGxldCBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuXG4gICAgICAgIGxldCBsb2NhbFZhckNyZWRlbnRpYWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gYXV0aGVudGljYXRpb24gKEFwaUtleUF1dGgpIHJlcXVpcmVkXG4gICAgICAgIGxvY2FsVmFyQ3JlZGVudGlhbCA9IHRoaXMuY29uZmlndXJhdGlvbi5sb29rdXBDcmVkZW50aWFsKCdBcGlLZXlBdXRoJyk7XG4gICAgICAgIGlmIChsb2NhbFZhckNyZWRlbnRpYWwpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyICcgKyBsb2NhbFZhckNyZWRlbnRpYWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuaHR0cEhlYWRlckFjY2VwdDtcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoJ0FjY2VwdCcsIGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBDb250ZXh0OiBIdHRwQ29udGV4dCB8IHVuZGVmaW5lZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5jb250ZXh0O1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwQ29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2NhbFZhckh0dHBDb250ZXh0ID0gbmV3IEh0dHBDb250ZXh0KCk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJDb250ZW50VHlwZShjb25zdW1lcyk7XG4gICAgICAgIGlmIChodHRwQ29udGVudFR5cGVTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCBodHRwQ29udGVudFR5cGVTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmVzcG9uc2VUeXBlXzogJ3RleHQnIHwgJ2pzb24nIHwgJ2Jsb2InID0gJ2pzb24nO1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZC5zdGFydHNXaXRoKCd0ZXh0JykpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ3RleHQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uaXNKc29uTWltZShsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2pzb24nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2Jsb2InO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8c3RyaW5nPihgJHt0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGh9L2FjY291bnQvcGFzc3dvcmRgLFxuICAgICAgICAgICAgcGFzc3dvcmRSZXF1ZXN0QWNjb3VudCxcbiAgIFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IGxvY2FsVmFySHR0cENvbnRleHQsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiA8YW55PnJlc3BvbnNlVHlwZV8sXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9idGFpbmluZyBhIHRva2VuXG4gICAgICogT2J0YWluaW5nIGEgdG9rZW4gdXNpbmcgdGhlIGxvZ2luIGFuZCBwYXNzd29yZC5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdFBhcmFtZXRlcnNcbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcnVuVG9rZW5HZW5lcmF0aW9uKHJlcXVlc3RQYXJhbWV0ZXJzOiBSdW5Ub2tlbkdlbmVyYXRpb25SZXF1ZXN0UGFyYW1zLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBwdWJsaWMgcnVuVG9rZW5HZW5lcmF0aW9uKHJlcXVlc3RQYXJhbWV0ZXJzOiBSdW5Ub2tlbkdlbmVyYXRpb25SZXF1ZXN0UGFyYW1zLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxzdHJpbmc+PjtcbiAgICBwdWJsaWMgcnVuVG9rZW5HZW5lcmF0aW9uKHJlcXVlc3RQYXJhbWV0ZXJzOiBSdW5Ub2tlbkdlbmVyYXRpb25SZXF1ZXN0UGFyYW1zLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8c3RyaW5nPj47XG4gICAgcHVibGljIHJ1blRva2VuR2VuZXJhdGlvbihyZXF1ZXN0UGFyYW1ldGVyczogUnVuVG9rZW5HZW5lcmF0aW9uUmVxdWVzdFBhcmFtcywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBjb25zdCB0b2tlblJlcXVlc3RBY2NvdW50ID0gcmVxdWVzdFBhcmFtZXRlcnMudG9rZW5SZXF1ZXN0QWNjb3VudDtcbiAgICAgICAgaWYgKHRva2VuUmVxdWVzdEFjY291bnQgPT09IG51bGwgfHwgdG9rZW5SZXF1ZXN0QWNjb3VudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciB0b2tlblJlcXVlc3RBY2NvdW50IHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgcnVuVG9rZW5HZW5lcmF0aW9uLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFySGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG5cbiAgICAgICAgbGV0IGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuaHR0cEhlYWRlckFjY2VwdDtcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoJ0FjY2VwdCcsIGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBDb250ZXh0OiBIdHRwQ29udGV4dCB8IHVuZGVmaW5lZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5jb250ZXh0O1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwQ29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2NhbFZhckh0dHBDb250ZXh0ID0gbmV3IEh0dHBDb250ZXh0KCk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJDb250ZW50VHlwZShjb25zdW1lcyk7XG4gICAgICAgIGlmIChodHRwQ29udGVudFR5cGVTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCBodHRwQ29udGVudFR5cGVTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmVzcG9uc2VUeXBlXzogJ3RleHQnIHwgJ2pzb24nIHwgJ2Jsb2InID0gJ2pzb24nO1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZC5zdGFydHNXaXRoKCd0ZXh0JykpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ3RleHQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uaXNKc29uTWltZShsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2pzb24nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2Jsb2InO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8c3RyaW5nPihgJHt0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGh9L2FjY291bnQvdG9rZW4vZ2VuZXJhdGlvbmAsXG4gICAgICAgICAgICB0b2tlblJlcXVlc3RBY2NvdW50LFxuICAgXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogbG9jYWxWYXJIdHRwQ29udGV4dCxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogbG9jYWxWYXJIZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRhdGluZyBhIHRva2VuXG4gICAgICogVmFsaWRhdGluZyBhIHRva2VuLlxuICAgICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBydW5Ub2tlblZhbGlkYXRpb24ocmVxdWVzdFBhcmFtZXRlcnM6IFJ1blRva2VuVmFsaWRhdGlvblJlcXVlc3RQYXJhbXMsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxUb2tlblZhbGlkYXRpb25SZXN1bHRBY2NvdW50PjtcbiAgICBwdWJsaWMgcnVuVG9rZW5WYWxpZGF0aW9uKHJlcXVlc3RQYXJhbWV0ZXJzOiBSdW5Ub2tlblZhbGlkYXRpb25SZXF1ZXN0UGFyYW1zLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxUb2tlblZhbGlkYXRpb25SZXN1bHRBY2NvdW50Pj47XG4gICAgcHVibGljIHJ1blRva2VuVmFsaWRhdGlvbihyZXF1ZXN0UGFyYW1ldGVyczogUnVuVG9rZW5WYWxpZGF0aW9uUmVxdWVzdFBhcmFtcywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8SHR0cEV2ZW50PFRva2VuVmFsaWRhdGlvblJlc3VsdEFjY291bnQ+PjtcbiAgICBwdWJsaWMgcnVuVG9rZW5WYWxpZGF0aW9uKHJlcXVlc3RQYXJhbWV0ZXJzOiBSdW5Ub2tlblZhbGlkYXRpb25SZXF1ZXN0UGFyYW1zLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UsIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0UGFyYW1ldGVycy5ib2R5O1xuICAgICAgICBpZiAoYm9keSA9PT0gbnVsbCB8fCBib2R5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGJvZHkgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBydW5Ub2tlblZhbGlkYXRpb24uJyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcblxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5odHRwSGVhZGVyQWNjZXB0O1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnQWNjZXB0JywgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFySHR0cENvbnRleHQ6IEh0dHBDb250ZXh0IHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmNvbnRleHQ7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBDb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySHR0cENvbnRleHQgPSBuZXcgSHR0cENvbnRleHQoKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwQ29udGVudFR5cGVTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckNvbnRlbnRUeXBlKGNvbnN1bWVzKTtcbiAgICAgICAgaWYgKGh0dHBDb250ZW50VHlwZVNlbGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsIGh0dHBDb250ZW50VHlwZVNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXNwb25zZVR5cGVfOiAndGV4dCcgfCAnanNvbicgfCAnYmxvYicgPSAnanNvbic7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkge1xuICAgICAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkLnN0YXJ0c1dpdGgoJ3RleHQnKSkge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAndGV4dCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5pc0pzb25NaW1lKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSkge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAnanNvbic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAnYmxvYic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxUb2tlblZhbGlkYXRpb25SZXN1bHRBY2NvdW50PihgJHt0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGh9L2FjY291bnQvdG9rZW4vdmFsaWRhdGlvbmAsXG4gICAgICAgICAgICBib2R5LFxuICAgXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogbG9jYWxWYXJIdHRwQ29udGV4dCxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogbG9jYWxWYXJIZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aFNlcnZpY2VJbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvYXV0aFNlcnZpY2VJbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVlJ0LkFjY291bnQgW0FDXVxuICogIyBEZXNjcmlwdGlvbiAgVmVlcm91dGUgQWNjb3VudCBQYW5lbC4gICMjIEVudGl0eSByZWxhdGlvbnNoaXAgZGlhZ3JhbSAgIVtlcmRdKC4uL3VtbC9hY2NvdW50LnN2ZylcbiAqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgT3BlbkFQSSBkb2N1bWVudDogNC43LjE1OTlcbiAqIENvbnRhY3Q6IHNlcnZpY2VkZXNrQHZlZXJvdXRlLmNvbVxuICpcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgT3BlbkFQSSBHZW5lcmF0b3IgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkuXG4gKiBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2hcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJbmxpbmVSZXNwb25zZTQwMEFjY291bnQgfSBmcm9tICcuLi9tb2RlbC9tb2RlbHMnO1xuaW1wb3J0IHsgSW5saW5lUmVzcG9uc2U0MDFBY2NvdW50IH0gZnJvbSAnLi4vbW9kZWwvbW9kZWxzJztcbmltcG9ydCB7IElubGluZVJlc3BvbnNlNDAyQWNjb3VudCB9IGZyb20gJy4uL21vZGVsL21vZGVscyc7XG5pbXBvcnQgeyBJbmxpbmVSZXNwb25zZTQwM0FjY291bnQgfSBmcm9tICcuLi9tb2RlbC9tb2RlbHMnO1xuaW1wb3J0IHsgSW5saW5lUmVzcG9uc2U0MDRBY2NvdW50IH0gZnJvbSAnLi4vbW9kZWwvbW9kZWxzJztcbmltcG9ydCB7IElubGluZVJlc3BvbnNlNDI5QWNjb3VudCB9IGZyb20gJy4uL21vZGVsL21vZGVscyc7XG5pbXBvcnQgeyBJbmxpbmVSZXNwb25zZTUwMEFjY291bnQgfSBmcm9tICcuLi9tb2RlbC9tb2RlbHMnO1xuaW1wb3J0IHsgUGFzc3dvcmRSZXF1ZXN0QWNjb3VudCB9IGZyb20gJy4uL21vZGVsL21vZGVscyc7XG5pbXBvcnQgeyBUb2tlblJlcXVlc3RBY2NvdW50IH0gZnJvbSAnLi4vbW9kZWwvbW9kZWxzJztcbmltcG9ydCB7IFRva2VuVmFsaWRhdGlvblJlc3VsdEFjY291bnQgfSBmcm9tICcuLi9tb2RlbC9tb2RlbHMnO1xuXG5cbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi9jb25maWd1cmF0aW9uJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIENoYW5nZVBhc3N3b3JkUmVxdWVzdFBhcmFtcyB7XG4gICAgcGFzc3dvcmRSZXF1ZXN0QWNjb3VudD86IFBhc3N3b3JkUmVxdWVzdEFjY291bnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVuVG9rZW5HZW5lcmF0aW9uUmVxdWVzdFBhcmFtcyB7XG4gICAgdG9rZW5SZXF1ZXN0QWNjb3VudDogVG9rZW5SZXF1ZXN0QWNjb3VudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdW5Ub2tlblZhbGlkYXRpb25SZXF1ZXN0UGFyYW1zIHtcbiAgICBib2R5OiBzdHJpbmc7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoU2VydmljZUludGVyZmFjZSB7XG4gICAgZGVmYXVsdEhlYWRlcnM6IEh0dHBIZWFkZXJzO1xuICAgIGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb247XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2UgcGFzc3dvcmRcbiAgICAgKiBDaGFuZ2UgcGFzc3dvcmQgYW5kIGdldCBuZXcgdG9rZW4uXG4qIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgICAqL1xuICAgIGNoYW5nZVBhc3N3b3JkKHJlcXVlc3RQYXJhbWV0ZXJzOiBDaGFuZ2VQYXNzd29yZFJlcXVlc3RQYXJhbXMsIGV4dHJhSHR0cFJlcXVlc3RQYXJhbXM/OiBhbnkpOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBPYnRhaW5pbmcgYSB0b2tlblxuICAgICAqIE9idGFpbmluZyBhIHRva2VuIHVzaW5nIHRoZSBsb2dpbiBhbmQgcGFzc3dvcmQuXG4qIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgICAqL1xuICAgIHJ1blRva2VuR2VuZXJhdGlvbihyZXF1ZXN0UGFyYW1ldGVyczogUnVuVG9rZW5HZW5lcmF0aW9uUmVxdWVzdFBhcmFtcywgZXh0cmFIdHRwUmVxdWVzdFBhcmFtcz86IGFueSk6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRpbmcgYSB0b2tlblxuICAgICAqIFZhbGlkYXRpbmcgYSB0b2tlbi5cbiogQHBhcmFtIHJlcXVlc3RQYXJhbWV0ZXJzXG4gICAgICovXG4gICAgcnVuVG9rZW5WYWxpZGF0aW9uKHJlcXVlc3RQYXJhbWV0ZXJzOiBSdW5Ub2tlblZhbGlkYXRpb25SZXF1ZXN0UGFyYW1zLCBleHRyYUh0dHBSZXF1ZXN0UGFyYW1zPzogYW55KTogT2JzZXJ2YWJsZTxUb2tlblZhbGlkYXRpb25SZXN1bHRBY2NvdW50PjtcblxufVxuIl19
|