@ondewo/csi-client-angular 3.2.0 → 4.0.0
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 +2 -5
- package/api/ondewo/csi/conversation.pb.d.ts +24 -24
- package/api/ondewo/nlu/agent.pb.d.ts +258 -18
- package/api/ondewo/nlu/agent.pbsc.d.ts +141 -60
- package/api/ondewo/nlu/ccai-project.pb.d.ts +1337 -0
- package/api/ondewo/nlu/ccai-project.pbconf.d.ts +6 -0
- package/api/ondewo/nlu/ccai-project.pbsc.d.ts +102 -0
- package/api/ondewo/nlu/common.pb.d.ts +957 -0
- package/api/ondewo/nlu/context.pb.d.ts +41 -0
- package/api/ondewo/nlu/entity-type.pb.d.ts +55 -14
- package/api/ondewo/nlu/entity-type.pbsc.d.ts +5 -5
- package/api/ondewo/nlu/intent.pb.d.ts +129 -9
- package/api/ondewo/nlu/intent.pbsc.d.ts +4 -4
- package/api/ondewo/nlu/operation-metadata.pb.d.ts +22 -1
- package/api/ondewo/nlu/project-role.pb.d.ts +26 -5
- package/api/ondewo/nlu/project-role.pbsc.d.ts +5 -5
- package/api/ondewo/nlu/server-statistics.pbsc.d.ts +14 -14
- package/api/ondewo/nlu/session.pb.d.ts +1593 -146
- package/api/ondewo/nlu/session.pbsc.d.ts +150 -5
- package/api/ondewo/nlu/user.pb.d.ts +761 -18
- package/api/ondewo/nlu/user.pbsc.d.ts +126 -13
- package/api/ondewo/nlu/webhook.pb.d.ts +545 -10
- package/api/ondewo/nlu/webhook.pbsc.d.ts +49 -0
- package/api/ondewo/s2t/speech-to-text.pb.d.ts +66 -315
- package/api/ondewo/t2s/text-to-speech.pb.d.ts +391 -5
- package/api/ondewo/t2s/text-to-speech.pbconf.d.ts +0 -5
- package/api/ondewo/t2s/text-to-speech.pbsc.d.ts +47 -64
- package/esm2022/api/google/api/http.pb.mjs +8 -25
- package/esm2022/api/google/rpc/status.pb.mjs +3 -7
- package/esm2022/api/google/type/latlng.pb.mjs +3 -6
- package/esm2022/api/ondewo/csi/conversation.pb.mjs +57 -111
- package/esm2022/api/ondewo/csi/conversation.pbsc.mjs +174 -177
- package/esm2022/api/ondewo/nlu/agent.pb.mjs +1053 -502
- package/esm2022/api/ondewo/nlu/agent.pbsc.mjs +899 -751
- package/esm2022/api/ondewo/nlu/aiservices.pb.mjs +61 -197
- package/esm2022/api/ondewo/nlu/aiservices.pbsc.mjs +156 -159
- package/esm2022/api/ondewo/nlu/ccai-project.pb.mjs +2490 -0
- package/esm2022/api/ondewo/nlu/ccai-project.pbconf.mjs +13 -0
- package/esm2022/api/ondewo/nlu/ccai-project.pbsc.mjs +194 -0
- package/esm2022/api/ondewo/nlu/common.pb.mjs +1856 -5
- package/esm2022/api/ondewo/nlu/context.pb.mjs +170 -52
- package/esm2022/api/ondewo/nlu/context.pbsc.mjs +120 -123
- package/esm2022/api/ondewo/nlu/entity-type.pb.mjs +224 -177
- package/esm2022/api/ondewo/nlu/entity-type.pbsc.mjs +302 -305
- package/esm2022/api/ondewo/nlu/intent.pb.mjs +593 -414
- package/esm2022/api/ondewo/nlu/intent.pbsc.mjs +499 -502
- package/esm2022/api/ondewo/nlu/operation-metadata.pb.mjs +78 -24
- package/esm2022/api/ondewo/nlu/operations.pb.mjs +18 -46
- package/esm2022/api/ondewo/nlu/operations.pbsc.mjs +84 -87
- package/esm2022/api/ondewo/nlu/project-role.pb.mjs +96 -51
- package/esm2022/api/ondewo/nlu/project-role.pbsc.mjs +104 -107
- package/esm2022/api/ondewo/nlu/project-statistics.pb.mjs +9 -20
- package/esm2022/api/ondewo/nlu/project-statistics.pbsc.mjs +156 -159
- package/esm2022/api/ondewo/nlu/server-statistics.pb.mjs +3 -5
- package/esm2022/api/ondewo/nlu/server-statistics.pbsc.mjs +71 -74
- package/esm2022/api/ondewo/nlu/session.pb.mjs +3086 -623
- package/esm2022/api/ondewo/nlu/session.pbsc.mjs +789 -521
- package/esm2022/api/ondewo/nlu/user.pb.mjs +1392 -123
- package/esm2022/api/ondewo/nlu/user.pbsc.mjs +497 -289
- package/esm2022/api/ondewo/nlu/utility.pb.mjs +42 -140
- package/esm2022/api/ondewo/nlu/utility.pbsc.mjs +156 -159
- package/esm2022/api/ondewo/nlu/webhook.pb.mjs +925 -54
- package/esm2022/api/ondewo/nlu/webhook.pbsc.mjs +157 -69
- package/esm2022/api/ondewo/s2t/speech-to-text.pb.mjs +327 -990
- package/esm2022/api/ondewo/s2t/speech-to-text.pbsc.mjs +282 -285
- package/esm2022/api/ondewo/t2s/text-to-speech.pb.mjs +964 -365
- package/esm2022/api/ondewo/t2s/text-to-speech.pbconf.mjs +1 -6
- package/esm2022/api/ondewo/t2s/text-to-speech.pbsc.mjs +307 -343
- package/esm2022/public-api.mjs +4 -1
- package/fesm2022/ondewo-csi-client-angular.mjs +45360 -34604
- package/fesm2022/ondewo-csi-client-angular.mjs.map +1 -1
- package/package.json +5 -5
- package/public-api.d.ts +3 -0
|
@@ -8,529 +8,690 @@ import { Inject, Injectable, Optional } from '@angular/core';
|
|
|
8
8
|
import { GrpcCallType, GrpcMetadata } from '@ngx-grpc/common';
|
|
9
9
|
import { GRPC_CLIENT_FACTORY, takeMessages, throwStatusErrors } from '@ngx-grpc/core';
|
|
10
10
|
import * as thisProto from './session.pb';
|
|
11
|
-
import * as
|
|
11
|
+
import * as googleProtobuf006 from '@ngx-grpc/well-known-types';
|
|
12
|
+
import * as ondewoNlu008 from '../../ondewo/nlu/common.pb';
|
|
12
13
|
import { GRPC_SESSIONS_CLIENT_SETTINGS } from './session.pbconf';
|
|
13
14
|
import * as i0 from "@angular/core";
|
|
14
15
|
import * as i1 from "@ngx-grpc/core";
|
|
15
16
|
/**
|
|
16
17
|
* Service client implementation for ondewo.nlu.Sessions
|
|
17
18
|
*/
|
|
18
|
-
class SessionsClient {
|
|
19
|
-
handler;
|
|
20
|
-
client;
|
|
21
|
-
/**
|
|
22
|
-
* Raw RPC implementation for each service client method.
|
|
23
|
-
* The raw methods provide more control on the incoming data and events. E.g. they can be useful to read status `OK` metadata.
|
|
24
|
-
* Attention: these methods do not throw errors when non-zero status codes are received.
|
|
25
|
-
*/
|
|
26
|
-
$raw = {
|
|
27
|
-
/**
|
|
28
|
-
* Unary call: /ondewo.nlu.Sessions/DetectIntent
|
|
29
|
-
*
|
|
30
|
-
* @param requestMessage Request message
|
|
31
|
-
* @param requestMetadata Request metadata
|
|
32
|
-
* @returns Observable<GrpcEvent<thisProto.DetectIntentResponse>>
|
|
33
|
-
*/
|
|
34
|
-
detectIntent: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
35
|
-
return this.handler.handle({
|
|
36
|
-
type: GrpcCallType.unary,
|
|
37
|
-
client: this.client,
|
|
38
|
-
path: '/ondewo.nlu.Sessions/DetectIntent',
|
|
39
|
-
requestData,
|
|
40
|
-
requestMetadata,
|
|
41
|
-
requestClass: thisProto.DetectIntentRequest,
|
|
42
|
-
responseClass: thisProto.DetectIntentResponse
|
|
43
|
-
});
|
|
44
|
-
},
|
|
45
|
-
/**
|
|
46
|
-
* Bidirectional streaming: /ondewo.nlu.Sessions/StreamingDetectIntent
|
|
47
|
-
*
|
|
48
|
-
* @param requestMessage Request message
|
|
49
|
-
* @param requestMetadata Request metadata
|
|
50
|
-
* @returns Observable<GrpcEvent<thisProto.StreamingDetectIntentResponse>>
|
|
51
|
-
*/
|
|
52
|
-
streamingDetectIntent: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
53
|
-
return this.handler.handle({
|
|
54
|
-
type: GrpcCallType.bidiStream,
|
|
55
|
-
client: this.client,
|
|
56
|
-
path: '/ondewo.nlu.Sessions/StreamingDetectIntent',
|
|
57
|
-
requestData,
|
|
58
|
-
requestMetadata,
|
|
59
|
-
requestClass: thisProto.StreamingDetectIntentRequest,
|
|
60
|
-
responseClass: thisProto.StreamingDetectIntentResponse
|
|
61
|
-
});
|
|
62
|
-
},
|
|
63
|
-
/**
|
|
64
|
-
* Unary call: /ondewo.nlu.Sessions/ListSessions
|
|
65
|
-
*
|
|
66
|
-
* @param requestMessage Request message
|
|
67
|
-
* @param requestMetadata Request metadata
|
|
68
|
-
* @returns Observable<GrpcEvent<thisProto.ListSessionsResponse>>
|
|
69
|
-
*/
|
|
70
|
-
listSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
71
|
-
return this.handler.handle({
|
|
72
|
-
type: GrpcCallType.unary,
|
|
73
|
-
client: this.client,
|
|
74
|
-
path: '/ondewo.nlu.Sessions/ListSessions',
|
|
75
|
-
requestData,
|
|
76
|
-
requestMetadata,
|
|
77
|
-
requestClass: thisProto.ListSessionsRequest,
|
|
78
|
-
responseClass: thisProto.ListSessionsResponse
|
|
79
|
-
});
|
|
80
|
-
},
|
|
81
|
-
/**
|
|
82
|
-
* Unary call: /ondewo.nlu.Sessions/GetSession
|
|
83
|
-
*
|
|
84
|
-
* @param requestMessage Request message
|
|
85
|
-
* @param requestMetadata Request metadata
|
|
86
|
-
* @returns Observable<GrpcEvent<thisProto.Session>>
|
|
87
|
-
*/
|
|
88
|
-
getSession: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
89
|
-
return this.handler.handle({
|
|
90
|
-
type: GrpcCallType.unary,
|
|
91
|
-
client: this.client,
|
|
92
|
-
path: '/ondewo.nlu.Sessions/GetSession',
|
|
93
|
-
requestData,
|
|
94
|
-
requestMetadata,
|
|
95
|
-
requestClass: thisProto.GetSessionRequest,
|
|
96
|
-
responseClass: thisProto.Session
|
|
97
|
-
});
|
|
98
|
-
},
|
|
99
|
-
/**
|
|
100
|
-
* Unary call: /ondewo.nlu.Sessions/CreateSession
|
|
101
|
-
*
|
|
102
|
-
* @param requestMessage Request message
|
|
103
|
-
* @param requestMetadata Request metadata
|
|
104
|
-
* @returns Observable<GrpcEvent<thisProto.Session>>
|
|
105
|
-
*/
|
|
106
|
-
createSession: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
107
|
-
return this.handler.handle({
|
|
108
|
-
type: GrpcCallType.unary,
|
|
109
|
-
client: this.client,
|
|
110
|
-
path: '/ondewo.nlu.Sessions/CreateSession',
|
|
111
|
-
requestData,
|
|
112
|
-
requestMetadata,
|
|
113
|
-
requestClass: thisProto.CreateSessionRequest,
|
|
114
|
-
responseClass: thisProto.Session
|
|
115
|
-
});
|
|
116
|
-
},
|
|
117
|
-
/**
|
|
118
|
-
* Unary call: /ondewo.nlu.Sessions/TrackSessionStep
|
|
119
|
-
*
|
|
120
|
-
* @param requestMessage Request message
|
|
121
|
-
* @param requestMetadata Request metadata
|
|
122
|
-
* @returns Observable<GrpcEvent<thisProto.Session>>
|
|
123
|
-
*/
|
|
124
|
-
trackSessionStep: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
125
|
-
return this.handler.handle({
|
|
126
|
-
type: GrpcCallType.unary,
|
|
127
|
-
client: this.client,
|
|
128
|
-
path: '/ondewo.nlu.Sessions/TrackSessionStep',
|
|
129
|
-
requestData,
|
|
130
|
-
requestMetadata,
|
|
131
|
-
requestClass: thisProto.TrackSessionStepRequest,
|
|
132
|
-
responseClass: thisProto.Session
|
|
133
|
-
});
|
|
134
|
-
},
|
|
135
|
-
/**
|
|
136
|
-
* Unary call: /ondewo.nlu.Sessions/DeleteSession
|
|
137
|
-
*
|
|
138
|
-
* @param requestMessage Request message
|
|
139
|
-
* @param requestMetadata Request metadata
|
|
140
|
-
* @returns Observable<GrpcEvent<googleProtobuf004.Empty>>
|
|
141
|
-
*/
|
|
142
|
-
deleteSession: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
143
|
-
return this.handler.handle({
|
|
144
|
-
type: GrpcCallType.unary,
|
|
145
|
-
client: this.client,
|
|
146
|
-
path: '/ondewo.nlu.Sessions/DeleteSession',
|
|
147
|
-
requestData,
|
|
148
|
-
requestMetadata,
|
|
149
|
-
requestClass: thisProto.DeleteSessionRequest,
|
|
150
|
-
responseClass: googleProtobuf004.Empty
|
|
151
|
-
});
|
|
152
|
-
},
|
|
153
|
-
/**
|
|
154
|
-
* Unary call: /ondewo.nlu.Sessions/ListSessionLabels
|
|
155
|
-
*
|
|
156
|
-
* @param requestMessage Request message
|
|
157
|
-
* @param requestMetadata Request metadata
|
|
158
|
-
* @returns Observable<GrpcEvent<thisProto.ListSessionLabelsResponse>>
|
|
159
|
-
*/
|
|
160
|
-
listSessionLabels: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
161
|
-
return this.handler.handle({
|
|
162
|
-
type: GrpcCallType.unary,
|
|
163
|
-
client: this.client,
|
|
164
|
-
path: '/ondewo.nlu.Sessions/ListSessionLabels',
|
|
165
|
-
requestData,
|
|
166
|
-
requestMetadata,
|
|
167
|
-
requestClass: thisProto.ListSessionLabelsRequest,
|
|
168
|
-
responseClass: thisProto.ListSessionLabelsResponse
|
|
169
|
-
});
|
|
170
|
-
},
|
|
171
|
-
/**
|
|
172
|
-
* Unary call: /ondewo.nlu.Sessions/ListSessionLabelsOfAllSessions
|
|
173
|
-
*
|
|
174
|
-
* @param requestMessage Request message
|
|
175
|
-
* @param requestMetadata Request metadata
|
|
176
|
-
* @returns Observable<GrpcEvent<thisProto.ListSessionLabelsResponse>>
|
|
177
|
-
*/
|
|
178
|
-
listSessionLabelsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
179
|
-
return this.handler.handle({
|
|
180
|
-
type: GrpcCallType.unary,
|
|
181
|
-
client: this.client,
|
|
182
|
-
path: '/ondewo.nlu.Sessions/ListSessionLabelsOfAllSessions',
|
|
183
|
-
requestData,
|
|
184
|
-
requestMetadata,
|
|
185
|
-
requestClass: thisProto.ListSessionLabelsOfAllSessionsRequest,
|
|
186
|
-
responseClass: thisProto.ListSessionLabelsResponse
|
|
187
|
-
});
|
|
188
|
-
},
|
|
189
|
-
/**
|
|
190
|
-
* Unary call: /ondewo.nlu.Sessions/ListLanguageCodesOfAllSessions
|
|
191
|
-
*
|
|
192
|
-
* @param requestMessage Request message
|
|
193
|
-
* @param requestMetadata Request metadata
|
|
194
|
-
* @returns Observable<GrpcEvent<thisProto.ListLanguageCodesResponse>>
|
|
195
|
-
*/
|
|
196
|
-
listLanguageCodesOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
197
|
-
return this.handler.handle({
|
|
198
|
-
type: GrpcCallType.unary,
|
|
199
|
-
client: this.client,
|
|
200
|
-
path: '/ondewo.nlu.Sessions/ListLanguageCodesOfAllSessions',
|
|
201
|
-
requestData,
|
|
202
|
-
requestMetadata,
|
|
203
|
-
requestClass: thisProto.ListLanguageCodesOfAllSessionsRequest,
|
|
204
|
-
responseClass: thisProto.ListLanguageCodesResponse
|
|
205
|
-
});
|
|
206
|
-
},
|
|
207
|
-
/**
|
|
208
|
-
* Unary call: /ondewo.nlu.Sessions/ListMatchedIntentsOfAllSessions
|
|
209
|
-
*
|
|
210
|
-
* @param requestMessage Request message
|
|
211
|
-
* @param requestMetadata Request metadata
|
|
212
|
-
* @returns Observable<GrpcEvent<thisProto.ListMatchedIntentsResponse>>
|
|
213
|
-
*/
|
|
214
|
-
listMatchedIntentsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
215
|
-
return this.handler.handle({
|
|
216
|
-
type: GrpcCallType.unary,
|
|
217
|
-
client: this.client,
|
|
218
|
-
path: '/ondewo.nlu.Sessions/ListMatchedIntentsOfAllSessions',
|
|
219
|
-
requestData,
|
|
220
|
-
requestMetadata,
|
|
221
|
-
requestClass: thisProto.ListMatchedIntentsOfAllSessionsRequest,
|
|
222
|
-
responseClass: thisProto.ListMatchedIntentsResponse
|
|
223
|
-
});
|
|
224
|
-
},
|
|
225
|
-
/**
|
|
226
|
-
* Unary call: /ondewo.nlu.Sessions/ListMatchedEntityTypesOfAllSessions
|
|
227
|
-
*
|
|
228
|
-
* @param requestMessage Request message
|
|
229
|
-
* @param requestMetadata Request metadata
|
|
230
|
-
* @returns Observable<GrpcEvent<thisProto.ListMatchedEntityTypesResponse>>
|
|
231
|
-
*/
|
|
232
|
-
listMatchedEntityTypesOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
233
|
-
return this.handler.handle({
|
|
234
|
-
type: GrpcCallType.unary,
|
|
235
|
-
client: this.client,
|
|
236
|
-
path: '/ondewo.nlu.Sessions/ListMatchedEntityTypesOfAllSessions',
|
|
237
|
-
requestData,
|
|
238
|
-
requestMetadata,
|
|
239
|
-
requestClass: thisProto.ListMatchedEntityTypesOfAllSessionsRequest,
|
|
240
|
-
responseClass: thisProto.ListMatchedEntityTypesResponse
|
|
241
|
-
});
|
|
242
|
-
},
|
|
243
|
-
/**
|
|
244
|
-
* Unary call: /ondewo.nlu.Sessions/ListUserIdsOfAllSessions
|
|
245
|
-
*
|
|
246
|
-
* @param requestMessage Request message
|
|
247
|
-
* @param requestMetadata Request metadata
|
|
248
|
-
* @returns Observable<GrpcEvent<thisProto.ListUserIdsResponse>>
|
|
249
|
-
*/
|
|
250
|
-
listUserIdsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
251
|
-
return this.handler.handle({
|
|
252
|
-
type: GrpcCallType.unary,
|
|
253
|
-
client: this.client,
|
|
254
|
-
path: '/ondewo.nlu.Sessions/ListUserIdsOfAllSessions',
|
|
255
|
-
requestData,
|
|
256
|
-
requestMetadata,
|
|
257
|
-
requestClass: thisProto.ListUserIdsOfAllSessionsRequest,
|
|
258
|
-
responseClass: thisProto.ListUserIdsResponse
|
|
259
|
-
});
|
|
260
|
-
},
|
|
261
|
-
/**
|
|
262
|
-
* Unary call: /ondewo.nlu.Sessions/ListIdentifiedUserIdsOfAllSessions
|
|
263
|
-
*
|
|
264
|
-
* @param requestMessage Request message
|
|
265
|
-
* @param requestMetadata Request metadata
|
|
266
|
-
* @returns Observable<GrpcEvent<thisProto.ListIdentifiedUserIdsResponse>>
|
|
267
|
-
*/
|
|
268
|
-
listIdentifiedUserIdsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
269
|
-
return this.handler.handle({
|
|
270
|
-
type: GrpcCallType.unary,
|
|
271
|
-
client: this.client,
|
|
272
|
-
path: '/ondewo.nlu.Sessions/ListIdentifiedUserIdsOfAllSessions',
|
|
273
|
-
requestData,
|
|
274
|
-
requestMetadata,
|
|
275
|
-
requestClass: thisProto.ListIdentifiedUserIdsOfAllSessionsRequest,
|
|
276
|
-
responseClass: thisProto.ListIdentifiedUserIdsResponse
|
|
277
|
-
});
|
|
278
|
-
},
|
|
279
|
-
/**
|
|
280
|
-
* Unary call: /ondewo.nlu.Sessions/ListTagsOfAllSessions
|
|
281
|
-
*
|
|
282
|
-
* @param requestMessage Request message
|
|
283
|
-
* @param requestMetadata Request metadata
|
|
284
|
-
* @returns Observable<GrpcEvent<thisProto.ListTagsResponse>>
|
|
285
|
-
*/
|
|
286
|
-
listTagsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
287
|
-
return this.handler.handle({
|
|
288
|
-
type: GrpcCallType.unary,
|
|
289
|
-
client: this.client,
|
|
290
|
-
path: '/ondewo.nlu.Sessions/ListTagsOfAllSessions',
|
|
291
|
-
requestData,
|
|
292
|
-
requestMetadata,
|
|
293
|
-
requestClass: thisProto.ListTagsOfAllSessionsRequest,
|
|
294
|
-
responseClass: thisProto.ListTagsResponse
|
|
295
|
-
});
|
|
296
|
-
},
|
|
297
|
-
/**
|
|
298
|
-
* Unary call: /ondewo.nlu.Sessions/ListInputContextsOfAllSessions
|
|
299
|
-
*
|
|
300
|
-
* @param requestMessage Request message
|
|
301
|
-
* @param requestMetadata Request metadata
|
|
302
|
-
* @returns Observable<GrpcEvent<thisProto.ListInputContextsResponse>>
|
|
303
|
-
*/
|
|
304
|
-
listInputContextsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
305
|
-
return this.handler.handle({
|
|
306
|
-
type: GrpcCallType.unary,
|
|
307
|
-
client: this.client,
|
|
308
|
-
path: '/ondewo.nlu.Sessions/ListInputContextsOfAllSessions',
|
|
309
|
-
requestData,
|
|
310
|
-
requestMetadata,
|
|
311
|
-
requestClass: thisProto.ListInputContextsOfAllSessionsRequest,
|
|
312
|
-
responseClass: thisProto.ListInputContextsResponse
|
|
313
|
-
});
|
|
314
|
-
},
|
|
315
|
-
/**
|
|
316
|
-
* Unary call: /ondewo.nlu.Sessions/ListOutputContextsOfAllSessions
|
|
317
|
-
*
|
|
318
|
-
* @param requestMessage Request message
|
|
319
|
-
* @param requestMetadata Request metadata
|
|
320
|
-
* @returns Observable<GrpcEvent<thisProto.ListOutputContextsResponse>>
|
|
321
|
-
*/
|
|
322
|
-
listOutputContextsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
323
|
-
return this.handler.handle({
|
|
324
|
-
type: GrpcCallType.unary,
|
|
325
|
-
client: this.client,
|
|
326
|
-
path: '/ondewo.nlu.Sessions/ListOutputContextsOfAllSessions',
|
|
327
|
-
requestData,
|
|
328
|
-
requestMetadata,
|
|
329
|
-
requestClass: thisProto.ListOutputContextsOfAllSessionsRequest,
|
|
330
|
-
responseClass: thisProto.ListOutputContextsResponse
|
|
331
|
-
});
|
|
332
|
-
},
|
|
333
|
-
/**
|
|
334
|
-
* Unary call: /ondewo.nlu.Sessions/ListPlatformsOfAllSessions
|
|
335
|
-
*
|
|
336
|
-
* @param requestMessage Request message
|
|
337
|
-
* @param requestMetadata Request metadata
|
|
338
|
-
* @returns Observable<GrpcEvent<thisProto.ListPlatformsResponse>>
|
|
339
|
-
*/
|
|
340
|
-
listPlatformsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
341
|
-
return this.handler.handle({
|
|
342
|
-
type: GrpcCallType.unary,
|
|
343
|
-
client: this.client,
|
|
344
|
-
path: '/ondewo.nlu.Sessions/ListPlatformsOfAllSessions',
|
|
345
|
-
requestData,
|
|
346
|
-
requestMetadata,
|
|
347
|
-
requestClass: thisProto.ListPlatformsOfAllSessionsRequest,
|
|
348
|
-
responseClass: thisProto.ListPlatformsResponse
|
|
349
|
-
});
|
|
350
|
-
},
|
|
351
|
-
/**
|
|
352
|
-
* Unary call: /ondewo.nlu.Sessions/ListAccountIdsOfAllSessions
|
|
353
|
-
*
|
|
354
|
-
* @param requestMessage Request message
|
|
355
|
-
* @param requestMetadata Request metadata
|
|
356
|
-
* @returns Observable<GrpcEvent<thisProto.ListAccountIdsResponse>>
|
|
357
|
-
*/
|
|
358
|
-
listAccountIdsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
359
|
-
return this.handler.handle({
|
|
360
|
-
type: GrpcCallType.unary,
|
|
361
|
-
client: this.client,
|
|
362
|
-
path: '/ondewo.nlu.Sessions/ListAccountIdsOfAllSessions',
|
|
363
|
-
requestData,
|
|
364
|
-
requestMetadata,
|
|
365
|
-
requestClass: thisProto.ListAccountIdsOfAllSessionsRequest,
|
|
366
|
-
responseClass: thisProto.ListAccountIdsResponse
|
|
367
|
-
});
|
|
368
|
-
},
|
|
369
|
-
/**
|
|
370
|
-
* Unary call: /ondewo.nlu.Sessions/ListPropertyIdsOfAllSessions
|
|
371
|
-
*
|
|
372
|
-
* @param requestMessage Request message
|
|
373
|
-
* @param requestMetadata Request metadata
|
|
374
|
-
* @returns Observable<GrpcEvent<thisProto.ListPropertyIdsResponse>>
|
|
375
|
-
*/
|
|
376
|
-
listPropertyIdsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
377
|
-
return this.handler.handle({
|
|
378
|
-
type: GrpcCallType.unary,
|
|
379
|
-
client: this.client,
|
|
380
|
-
path: '/ondewo.nlu.Sessions/ListPropertyIdsOfAllSessions',
|
|
381
|
-
requestData,
|
|
382
|
-
requestMetadata,
|
|
383
|
-
requestClass: thisProto.ListPropertyIdsOfAllSessionsRequest,
|
|
384
|
-
responseClass: thisProto.ListPropertyIdsResponse
|
|
385
|
-
});
|
|
386
|
-
},
|
|
387
|
-
/**
|
|
388
|
-
* Unary call: /ondewo.nlu.Sessions/ListDatastreamIdsOfAllSessions
|
|
389
|
-
*
|
|
390
|
-
* @param requestMessage Request message
|
|
391
|
-
* @param requestMetadata Request metadata
|
|
392
|
-
* @returns Observable<GrpcEvent<thisProto.ListDatastreamIdsResponse>>
|
|
393
|
-
*/
|
|
394
|
-
listDatastreamIdsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
395
|
-
return this.handler.handle({
|
|
396
|
-
type: GrpcCallType.unary,
|
|
397
|
-
client: this.client,
|
|
398
|
-
path: '/ondewo.nlu.Sessions/ListDatastreamIdsOfAllSessions',
|
|
399
|
-
requestData,
|
|
400
|
-
requestMetadata,
|
|
401
|
-
requestClass: thisProto.ListDatastreamIdsOfAllSessionsRequest,
|
|
402
|
-
responseClass: thisProto.ListDatastreamIdsResponse
|
|
403
|
-
});
|
|
404
|
-
},
|
|
405
|
-
/**
|
|
406
|
-
* Unary call: /ondewo.nlu.Sessions/ListOriginIdsOfAllSessions
|
|
407
|
-
*
|
|
408
|
-
* @param requestMessage Request message
|
|
409
|
-
* @param requestMetadata Request metadata
|
|
410
|
-
* @returns Observable<GrpcEvent<thisProto.ListOriginIdsResponse>>
|
|
411
|
-
*/
|
|
412
|
-
listOriginIdsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
413
|
-
return this.handler.handle({
|
|
414
|
-
type: GrpcCallType.unary,
|
|
415
|
-
client: this.client,
|
|
416
|
-
path: '/ondewo.nlu.Sessions/ListOriginIdsOfAllSessions',
|
|
417
|
-
requestData,
|
|
418
|
-
requestMetadata,
|
|
419
|
-
requestClass: thisProto.ListOriginIdsOfAllSessionsRequest,
|
|
420
|
-
responseClass: thisProto.ListOriginIdsResponse
|
|
421
|
-
});
|
|
422
|
-
},
|
|
423
|
-
/**
|
|
424
|
-
* Unary call: /ondewo.nlu.Sessions/AddSessionLabels
|
|
425
|
-
*
|
|
426
|
-
* @param requestMessage Request message
|
|
427
|
-
* @param requestMetadata Request metadata
|
|
428
|
-
* @returns Observable<GrpcEvent<thisProto.Session>>
|
|
429
|
-
*/
|
|
430
|
-
addSessionLabels: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
431
|
-
return this.handler.handle({
|
|
432
|
-
type: GrpcCallType.unary,
|
|
433
|
-
client: this.client,
|
|
434
|
-
path: '/ondewo.nlu.Sessions/AddSessionLabels',
|
|
435
|
-
requestData,
|
|
436
|
-
requestMetadata,
|
|
437
|
-
requestClass: thisProto.AddSessionLabelsRequest,
|
|
438
|
-
responseClass: thisProto.Session
|
|
439
|
-
});
|
|
440
|
-
},
|
|
441
|
-
/**
|
|
442
|
-
* Unary call: /ondewo.nlu.Sessions/DeleteSessionLabels
|
|
443
|
-
*
|
|
444
|
-
* @param requestMessage Request message
|
|
445
|
-
* @param requestMetadata Request metadata
|
|
446
|
-
* @returns Observable<GrpcEvent<thisProto.Session>>
|
|
447
|
-
*/
|
|
448
|
-
deleteSessionLabels: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
449
|
-
return this.handler.handle({
|
|
450
|
-
type: GrpcCallType.unary,
|
|
451
|
-
client: this.client,
|
|
452
|
-
path: '/ondewo.nlu.Sessions/DeleteSessionLabels',
|
|
453
|
-
requestData,
|
|
454
|
-
requestMetadata,
|
|
455
|
-
requestClass: thisProto.DeleteSessionLabelsRequest,
|
|
456
|
-
responseClass: thisProto.Session
|
|
457
|
-
});
|
|
458
|
-
},
|
|
459
|
-
/**
|
|
460
|
-
* Unary call: /ondewo.nlu.Sessions/ListSessionReviews
|
|
461
|
-
*
|
|
462
|
-
* @param requestMessage Request message
|
|
463
|
-
* @param requestMetadata Request metadata
|
|
464
|
-
* @returns Observable<GrpcEvent<thisProto.ListSessionReviewsResponse>>
|
|
465
|
-
*/
|
|
466
|
-
listSessionReviews: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
467
|
-
return this.handler.handle({
|
|
468
|
-
type: GrpcCallType.unary,
|
|
469
|
-
client: this.client,
|
|
470
|
-
path: '/ondewo.nlu.Sessions/ListSessionReviews',
|
|
471
|
-
requestData,
|
|
472
|
-
requestMetadata,
|
|
473
|
-
requestClass: thisProto.ListSessionReviewsRequest,
|
|
474
|
-
responseClass: thisProto.ListSessionReviewsResponse
|
|
475
|
-
});
|
|
476
|
-
},
|
|
477
|
-
/**
|
|
478
|
-
* Unary call: /ondewo.nlu.Sessions/GetSessionReview
|
|
479
|
-
*
|
|
480
|
-
* @param requestMessage Request message
|
|
481
|
-
* @param requestMetadata Request metadata
|
|
482
|
-
* @returns Observable<GrpcEvent<thisProto.SessionReview>>
|
|
483
|
-
*/
|
|
484
|
-
getSessionReview: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
485
|
-
return this.handler.handle({
|
|
486
|
-
type: GrpcCallType.unary,
|
|
487
|
-
client: this.client,
|
|
488
|
-
path: '/ondewo.nlu.Sessions/GetSessionReview',
|
|
489
|
-
requestData,
|
|
490
|
-
requestMetadata,
|
|
491
|
-
requestClass: thisProto.GetSessionReviewRequest,
|
|
492
|
-
responseClass: thisProto.SessionReview
|
|
493
|
-
});
|
|
494
|
-
},
|
|
495
|
-
/**
|
|
496
|
-
* Unary call: /ondewo.nlu.Sessions/GetLatestSessionReview
|
|
497
|
-
*
|
|
498
|
-
* @param requestMessage Request message
|
|
499
|
-
* @param requestMetadata Request metadata
|
|
500
|
-
* @returns Observable<GrpcEvent<thisProto.SessionReview>>
|
|
501
|
-
*/
|
|
502
|
-
getLatestSessionReview: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
503
|
-
return this.handler.handle({
|
|
504
|
-
type: GrpcCallType.unary,
|
|
505
|
-
client: this.client,
|
|
506
|
-
path: '/ondewo.nlu.Sessions/GetLatestSessionReview',
|
|
507
|
-
requestData,
|
|
508
|
-
requestMetadata,
|
|
509
|
-
requestClass: thisProto.GetLatestSessionReviewRequest,
|
|
510
|
-
responseClass: thisProto.SessionReview
|
|
511
|
-
});
|
|
512
|
-
},
|
|
513
|
-
/**
|
|
514
|
-
* Unary call: /ondewo.nlu.Sessions/CreateSessionReview
|
|
515
|
-
*
|
|
516
|
-
* @param requestMessage Request message
|
|
517
|
-
* @param requestMetadata Request metadata
|
|
518
|
-
* @returns Observable<GrpcEvent<thisProto.SessionReview>>
|
|
519
|
-
*/
|
|
520
|
-
createSessionReview: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
521
|
-
return this.handler.handle({
|
|
522
|
-
type: GrpcCallType.unary,
|
|
523
|
-
client: this.client,
|
|
524
|
-
path: '/ondewo.nlu.Sessions/CreateSessionReview',
|
|
525
|
-
requestData,
|
|
526
|
-
requestMetadata,
|
|
527
|
-
requestClass: thisProto.CreateSessionReviewRequest,
|
|
528
|
-
responseClass: thisProto.SessionReview
|
|
529
|
-
});
|
|
530
|
-
}
|
|
531
|
-
};
|
|
19
|
+
export class SessionsClient {
|
|
532
20
|
constructor(settings, clientFactory, handler) {
|
|
533
21
|
this.handler = handler;
|
|
22
|
+
/**
|
|
23
|
+
* Raw RPC implementation for each service client method.
|
|
24
|
+
* The raw methods provide more control on the incoming data and events. E.g. they can be useful to read status `OK` metadata.
|
|
25
|
+
* Attention: these methods do not throw errors when non-zero status codes are received.
|
|
26
|
+
*/
|
|
27
|
+
this.$raw = {
|
|
28
|
+
/**
|
|
29
|
+
* Unary call: /ondewo.nlu.Sessions/DetectIntent
|
|
30
|
+
*
|
|
31
|
+
* @param requestMessage Request message
|
|
32
|
+
* @param requestMetadata Request metadata
|
|
33
|
+
* @returns Observable<GrpcEvent<thisProto.DetectIntentResponse>>
|
|
34
|
+
*/
|
|
35
|
+
detectIntent: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
36
|
+
return this.handler.handle({
|
|
37
|
+
type: GrpcCallType.unary,
|
|
38
|
+
client: this.client,
|
|
39
|
+
path: '/ondewo.nlu.Sessions/DetectIntent',
|
|
40
|
+
requestData,
|
|
41
|
+
requestMetadata,
|
|
42
|
+
requestClass: thisProto.DetectIntentRequest,
|
|
43
|
+
responseClass: thisProto.DetectIntentResponse
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
/**
|
|
47
|
+
* Bidirectional streaming: /ondewo.nlu.Sessions/StreamingDetectIntent
|
|
48
|
+
*
|
|
49
|
+
* @param requestMessage Request message
|
|
50
|
+
* @param requestMetadata Request metadata
|
|
51
|
+
* @returns Observable<GrpcEvent<thisProto.StreamingDetectIntentResponse>>
|
|
52
|
+
*/
|
|
53
|
+
streamingDetectIntent: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
54
|
+
return this.handler.handle({
|
|
55
|
+
type: GrpcCallType.bidiStream,
|
|
56
|
+
client: this.client,
|
|
57
|
+
path: '/ondewo.nlu.Sessions/StreamingDetectIntent',
|
|
58
|
+
requestData,
|
|
59
|
+
requestMetadata,
|
|
60
|
+
requestClass: thisProto.StreamingDetectIntentRequest,
|
|
61
|
+
responseClass: thisProto.StreamingDetectIntentResponse
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
/**
|
|
65
|
+
* Unary call: /ondewo.nlu.Sessions/ListSessions
|
|
66
|
+
*
|
|
67
|
+
* @param requestMessage Request message
|
|
68
|
+
* @param requestMetadata Request metadata
|
|
69
|
+
* @returns Observable<GrpcEvent<thisProto.ListSessionsResponse>>
|
|
70
|
+
*/
|
|
71
|
+
listSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
72
|
+
return this.handler.handle({
|
|
73
|
+
type: GrpcCallType.unary,
|
|
74
|
+
client: this.client,
|
|
75
|
+
path: '/ondewo.nlu.Sessions/ListSessions',
|
|
76
|
+
requestData,
|
|
77
|
+
requestMetadata,
|
|
78
|
+
requestClass: thisProto.ListSessionsRequest,
|
|
79
|
+
responseClass: thisProto.ListSessionsResponse
|
|
80
|
+
});
|
|
81
|
+
},
|
|
82
|
+
/**
|
|
83
|
+
* Unary call: /ondewo.nlu.Sessions/GetSession
|
|
84
|
+
*
|
|
85
|
+
* @param requestMessage Request message
|
|
86
|
+
* @param requestMetadata Request metadata
|
|
87
|
+
* @returns Observable<GrpcEvent<thisProto.Session>>
|
|
88
|
+
*/
|
|
89
|
+
getSession: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
90
|
+
return this.handler.handle({
|
|
91
|
+
type: GrpcCallType.unary,
|
|
92
|
+
client: this.client,
|
|
93
|
+
path: '/ondewo.nlu.Sessions/GetSession',
|
|
94
|
+
requestData,
|
|
95
|
+
requestMetadata,
|
|
96
|
+
requestClass: thisProto.GetSessionRequest,
|
|
97
|
+
responseClass: thisProto.Session
|
|
98
|
+
});
|
|
99
|
+
},
|
|
100
|
+
/**
|
|
101
|
+
* Unary call: /ondewo.nlu.Sessions/CreateSession
|
|
102
|
+
*
|
|
103
|
+
* @param requestMessage Request message
|
|
104
|
+
* @param requestMetadata Request metadata
|
|
105
|
+
* @returns Observable<GrpcEvent<thisProto.Session>>
|
|
106
|
+
*/
|
|
107
|
+
createSession: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
108
|
+
return this.handler.handle({
|
|
109
|
+
type: GrpcCallType.unary,
|
|
110
|
+
client: this.client,
|
|
111
|
+
path: '/ondewo.nlu.Sessions/CreateSession',
|
|
112
|
+
requestData,
|
|
113
|
+
requestMetadata,
|
|
114
|
+
requestClass: thisProto.CreateSessionRequest,
|
|
115
|
+
responseClass: thisProto.Session
|
|
116
|
+
});
|
|
117
|
+
},
|
|
118
|
+
/**
|
|
119
|
+
* Unary call: /ondewo.nlu.Sessions/TrackSessionStep
|
|
120
|
+
*
|
|
121
|
+
* @param requestMessage Request message
|
|
122
|
+
* @param requestMetadata Request metadata
|
|
123
|
+
* @returns Observable<GrpcEvent<thisProto.Session>>
|
|
124
|
+
*/
|
|
125
|
+
trackSessionStep: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
126
|
+
return this.handler.handle({
|
|
127
|
+
type: GrpcCallType.unary,
|
|
128
|
+
client: this.client,
|
|
129
|
+
path: '/ondewo.nlu.Sessions/TrackSessionStep',
|
|
130
|
+
requestData,
|
|
131
|
+
requestMetadata,
|
|
132
|
+
requestClass: thisProto.TrackSessionStepRequest,
|
|
133
|
+
responseClass: thisProto.Session
|
|
134
|
+
});
|
|
135
|
+
},
|
|
136
|
+
/**
|
|
137
|
+
* Unary call: /ondewo.nlu.Sessions/DeleteSession
|
|
138
|
+
*
|
|
139
|
+
* @param requestMessage Request message
|
|
140
|
+
* @param requestMetadata Request metadata
|
|
141
|
+
* @returns Observable<GrpcEvent<googleProtobuf006.Empty>>
|
|
142
|
+
*/
|
|
143
|
+
deleteSession: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
144
|
+
return this.handler.handle({
|
|
145
|
+
type: GrpcCallType.unary,
|
|
146
|
+
client: this.client,
|
|
147
|
+
path: '/ondewo.nlu.Sessions/DeleteSession',
|
|
148
|
+
requestData,
|
|
149
|
+
requestMetadata,
|
|
150
|
+
requestClass: thisProto.DeleteSessionRequest,
|
|
151
|
+
responseClass: googleProtobuf006.Empty
|
|
152
|
+
});
|
|
153
|
+
},
|
|
154
|
+
/**
|
|
155
|
+
* Unary call: /ondewo.nlu.Sessions/ListSessionLabels
|
|
156
|
+
*
|
|
157
|
+
* @param requestMessage Request message
|
|
158
|
+
* @param requestMetadata Request metadata
|
|
159
|
+
* @returns Observable<GrpcEvent<thisProto.ListSessionLabelsResponse>>
|
|
160
|
+
*/
|
|
161
|
+
listSessionLabels: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
162
|
+
return this.handler.handle({
|
|
163
|
+
type: GrpcCallType.unary,
|
|
164
|
+
client: this.client,
|
|
165
|
+
path: '/ondewo.nlu.Sessions/ListSessionLabels',
|
|
166
|
+
requestData,
|
|
167
|
+
requestMetadata,
|
|
168
|
+
requestClass: thisProto.ListSessionLabelsRequest,
|
|
169
|
+
responseClass: thisProto.ListSessionLabelsResponse
|
|
170
|
+
});
|
|
171
|
+
},
|
|
172
|
+
/**
|
|
173
|
+
* Unary call: /ondewo.nlu.Sessions/ListSessionLabelsOfAllSessions
|
|
174
|
+
*
|
|
175
|
+
* @param requestMessage Request message
|
|
176
|
+
* @param requestMetadata Request metadata
|
|
177
|
+
* @returns Observable<GrpcEvent<thisProto.ListSessionLabelsResponse>>
|
|
178
|
+
*/
|
|
179
|
+
listSessionLabelsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
180
|
+
return this.handler.handle({
|
|
181
|
+
type: GrpcCallType.unary,
|
|
182
|
+
client: this.client,
|
|
183
|
+
path: '/ondewo.nlu.Sessions/ListSessionLabelsOfAllSessions',
|
|
184
|
+
requestData,
|
|
185
|
+
requestMetadata,
|
|
186
|
+
requestClass: thisProto.ListSessionLabelsOfAllSessionsRequest,
|
|
187
|
+
responseClass: thisProto.ListSessionLabelsResponse
|
|
188
|
+
});
|
|
189
|
+
},
|
|
190
|
+
/**
|
|
191
|
+
* Unary call: /ondewo.nlu.Sessions/ListLanguageCodesOfAllSessions
|
|
192
|
+
*
|
|
193
|
+
* @param requestMessage Request message
|
|
194
|
+
* @param requestMetadata Request metadata
|
|
195
|
+
* @returns Observable<GrpcEvent<thisProto.ListLanguageCodesResponse>>
|
|
196
|
+
*/
|
|
197
|
+
listLanguageCodesOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
198
|
+
return this.handler.handle({
|
|
199
|
+
type: GrpcCallType.unary,
|
|
200
|
+
client: this.client,
|
|
201
|
+
path: '/ondewo.nlu.Sessions/ListLanguageCodesOfAllSessions',
|
|
202
|
+
requestData,
|
|
203
|
+
requestMetadata,
|
|
204
|
+
requestClass: thisProto.ListLanguageCodesOfAllSessionsRequest,
|
|
205
|
+
responseClass: thisProto.ListLanguageCodesResponse
|
|
206
|
+
});
|
|
207
|
+
},
|
|
208
|
+
/**
|
|
209
|
+
* Unary call: /ondewo.nlu.Sessions/ListMatchedIntentsOfAllSessions
|
|
210
|
+
*
|
|
211
|
+
* @param requestMessage Request message
|
|
212
|
+
* @param requestMetadata Request metadata
|
|
213
|
+
* @returns Observable<GrpcEvent<thisProto.ListMatchedIntentsResponse>>
|
|
214
|
+
*/
|
|
215
|
+
listMatchedIntentsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
216
|
+
return this.handler.handle({
|
|
217
|
+
type: GrpcCallType.unary,
|
|
218
|
+
client: this.client,
|
|
219
|
+
path: '/ondewo.nlu.Sessions/ListMatchedIntentsOfAllSessions',
|
|
220
|
+
requestData,
|
|
221
|
+
requestMetadata,
|
|
222
|
+
requestClass: thisProto.ListMatchedIntentsOfAllSessionsRequest,
|
|
223
|
+
responseClass: thisProto.ListMatchedIntentsResponse
|
|
224
|
+
});
|
|
225
|
+
},
|
|
226
|
+
/**
|
|
227
|
+
* Unary call: /ondewo.nlu.Sessions/ListMatchedEntityTypesOfAllSessions
|
|
228
|
+
*
|
|
229
|
+
* @param requestMessage Request message
|
|
230
|
+
* @param requestMetadata Request metadata
|
|
231
|
+
* @returns Observable<GrpcEvent<thisProto.ListMatchedEntityTypesResponse>>
|
|
232
|
+
*/
|
|
233
|
+
listMatchedEntityTypesOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
234
|
+
return this.handler.handle({
|
|
235
|
+
type: GrpcCallType.unary,
|
|
236
|
+
client: this.client,
|
|
237
|
+
path: '/ondewo.nlu.Sessions/ListMatchedEntityTypesOfAllSessions',
|
|
238
|
+
requestData,
|
|
239
|
+
requestMetadata,
|
|
240
|
+
requestClass: thisProto.ListMatchedEntityTypesOfAllSessionsRequest,
|
|
241
|
+
responseClass: thisProto.ListMatchedEntityTypesResponse
|
|
242
|
+
});
|
|
243
|
+
},
|
|
244
|
+
/**
|
|
245
|
+
* Unary call: /ondewo.nlu.Sessions/ListUserIdsOfAllSessions
|
|
246
|
+
*
|
|
247
|
+
* @param requestMessage Request message
|
|
248
|
+
* @param requestMetadata Request metadata
|
|
249
|
+
* @returns Observable<GrpcEvent<thisProto.ListUserIdsResponse>>
|
|
250
|
+
*/
|
|
251
|
+
listUserIdsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
252
|
+
return this.handler.handle({
|
|
253
|
+
type: GrpcCallType.unary,
|
|
254
|
+
client: this.client,
|
|
255
|
+
path: '/ondewo.nlu.Sessions/ListUserIdsOfAllSessions',
|
|
256
|
+
requestData,
|
|
257
|
+
requestMetadata,
|
|
258
|
+
requestClass: thisProto.ListUserIdsOfAllSessionsRequest,
|
|
259
|
+
responseClass: thisProto.ListUserIdsResponse
|
|
260
|
+
});
|
|
261
|
+
},
|
|
262
|
+
/**
|
|
263
|
+
* Unary call: /ondewo.nlu.Sessions/ListIdentifiedUserIdsOfAllSessions
|
|
264
|
+
*
|
|
265
|
+
* @param requestMessage Request message
|
|
266
|
+
* @param requestMetadata Request metadata
|
|
267
|
+
* @returns Observable<GrpcEvent<thisProto.ListIdentifiedUserIdsResponse>>
|
|
268
|
+
*/
|
|
269
|
+
listIdentifiedUserIdsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
270
|
+
return this.handler.handle({
|
|
271
|
+
type: GrpcCallType.unary,
|
|
272
|
+
client: this.client,
|
|
273
|
+
path: '/ondewo.nlu.Sessions/ListIdentifiedUserIdsOfAllSessions',
|
|
274
|
+
requestData,
|
|
275
|
+
requestMetadata,
|
|
276
|
+
requestClass: thisProto.ListIdentifiedUserIdsOfAllSessionsRequest,
|
|
277
|
+
responseClass: thisProto.ListIdentifiedUserIdsResponse
|
|
278
|
+
});
|
|
279
|
+
},
|
|
280
|
+
/**
|
|
281
|
+
* Unary call: /ondewo.nlu.Sessions/ListTagsOfAllSessions
|
|
282
|
+
*
|
|
283
|
+
* @param requestMessage Request message
|
|
284
|
+
* @param requestMetadata Request metadata
|
|
285
|
+
* @returns Observable<GrpcEvent<thisProto.ListTagsResponse>>
|
|
286
|
+
*/
|
|
287
|
+
listTagsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
288
|
+
return this.handler.handle({
|
|
289
|
+
type: GrpcCallType.unary,
|
|
290
|
+
client: this.client,
|
|
291
|
+
path: '/ondewo.nlu.Sessions/ListTagsOfAllSessions',
|
|
292
|
+
requestData,
|
|
293
|
+
requestMetadata,
|
|
294
|
+
requestClass: thisProto.ListTagsOfAllSessionsRequest,
|
|
295
|
+
responseClass: thisProto.ListTagsResponse
|
|
296
|
+
});
|
|
297
|
+
},
|
|
298
|
+
/**
|
|
299
|
+
* Unary call: /ondewo.nlu.Sessions/ListInputContextsOfAllSessions
|
|
300
|
+
*
|
|
301
|
+
* @param requestMessage Request message
|
|
302
|
+
* @param requestMetadata Request metadata
|
|
303
|
+
* @returns Observable<GrpcEvent<thisProto.ListInputContextsResponse>>
|
|
304
|
+
*/
|
|
305
|
+
listInputContextsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
306
|
+
return this.handler.handle({
|
|
307
|
+
type: GrpcCallType.unary,
|
|
308
|
+
client: this.client,
|
|
309
|
+
path: '/ondewo.nlu.Sessions/ListInputContextsOfAllSessions',
|
|
310
|
+
requestData,
|
|
311
|
+
requestMetadata,
|
|
312
|
+
requestClass: thisProto.ListInputContextsOfAllSessionsRequest,
|
|
313
|
+
responseClass: thisProto.ListInputContextsResponse
|
|
314
|
+
});
|
|
315
|
+
},
|
|
316
|
+
/**
|
|
317
|
+
* Unary call: /ondewo.nlu.Sessions/ListOutputContextsOfAllSessions
|
|
318
|
+
*
|
|
319
|
+
* @param requestMessage Request message
|
|
320
|
+
* @param requestMetadata Request metadata
|
|
321
|
+
* @returns Observable<GrpcEvent<thisProto.ListOutputContextsResponse>>
|
|
322
|
+
*/
|
|
323
|
+
listOutputContextsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
324
|
+
return this.handler.handle({
|
|
325
|
+
type: GrpcCallType.unary,
|
|
326
|
+
client: this.client,
|
|
327
|
+
path: '/ondewo.nlu.Sessions/ListOutputContextsOfAllSessions',
|
|
328
|
+
requestData,
|
|
329
|
+
requestMetadata,
|
|
330
|
+
requestClass: thisProto.ListOutputContextsOfAllSessionsRequest,
|
|
331
|
+
responseClass: thisProto.ListOutputContextsResponse
|
|
332
|
+
});
|
|
333
|
+
},
|
|
334
|
+
/**
|
|
335
|
+
* Unary call: /ondewo.nlu.Sessions/ListPlatformsOfAllSessions
|
|
336
|
+
*
|
|
337
|
+
* @param requestMessage Request message
|
|
338
|
+
* @param requestMetadata Request metadata
|
|
339
|
+
* @returns Observable<GrpcEvent<thisProto.ListPlatformsResponse>>
|
|
340
|
+
*/
|
|
341
|
+
listPlatformsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
342
|
+
return this.handler.handle({
|
|
343
|
+
type: GrpcCallType.unary,
|
|
344
|
+
client: this.client,
|
|
345
|
+
path: '/ondewo.nlu.Sessions/ListPlatformsOfAllSessions',
|
|
346
|
+
requestData,
|
|
347
|
+
requestMetadata,
|
|
348
|
+
requestClass: thisProto.ListPlatformsOfAllSessionsRequest,
|
|
349
|
+
responseClass: thisProto.ListPlatformsResponse
|
|
350
|
+
});
|
|
351
|
+
},
|
|
352
|
+
/**
|
|
353
|
+
* Unary call: /ondewo.nlu.Sessions/ListAccountIdsOfAllSessions
|
|
354
|
+
*
|
|
355
|
+
* @param requestMessage Request message
|
|
356
|
+
* @param requestMetadata Request metadata
|
|
357
|
+
* @returns Observable<GrpcEvent<thisProto.ListAccountIdsResponse>>
|
|
358
|
+
*/
|
|
359
|
+
listAccountIdsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
360
|
+
return this.handler.handle({
|
|
361
|
+
type: GrpcCallType.unary,
|
|
362
|
+
client: this.client,
|
|
363
|
+
path: '/ondewo.nlu.Sessions/ListAccountIdsOfAllSessions',
|
|
364
|
+
requestData,
|
|
365
|
+
requestMetadata,
|
|
366
|
+
requestClass: thisProto.ListAccountIdsOfAllSessionsRequest,
|
|
367
|
+
responseClass: thisProto.ListAccountIdsResponse
|
|
368
|
+
});
|
|
369
|
+
},
|
|
370
|
+
/**
|
|
371
|
+
* Unary call: /ondewo.nlu.Sessions/ListPropertyIdsOfAllSessions
|
|
372
|
+
*
|
|
373
|
+
* @param requestMessage Request message
|
|
374
|
+
* @param requestMetadata Request metadata
|
|
375
|
+
* @returns Observable<GrpcEvent<thisProto.ListPropertyIdsResponse>>
|
|
376
|
+
*/
|
|
377
|
+
listPropertyIdsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
378
|
+
return this.handler.handle({
|
|
379
|
+
type: GrpcCallType.unary,
|
|
380
|
+
client: this.client,
|
|
381
|
+
path: '/ondewo.nlu.Sessions/ListPropertyIdsOfAllSessions',
|
|
382
|
+
requestData,
|
|
383
|
+
requestMetadata,
|
|
384
|
+
requestClass: thisProto.ListPropertyIdsOfAllSessionsRequest,
|
|
385
|
+
responseClass: thisProto.ListPropertyIdsResponse
|
|
386
|
+
});
|
|
387
|
+
},
|
|
388
|
+
/**
|
|
389
|
+
* Unary call: /ondewo.nlu.Sessions/ListDatastreamIdsOfAllSessions
|
|
390
|
+
*
|
|
391
|
+
* @param requestMessage Request message
|
|
392
|
+
* @param requestMetadata Request metadata
|
|
393
|
+
* @returns Observable<GrpcEvent<thisProto.ListDatastreamIdsResponse>>
|
|
394
|
+
*/
|
|
395
|
+
listDatastreamIdsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
396
|
+
return this.handler.handle({
|
|
397
|
+
type: GrpcCallType.unary,
|
|
398
|
+
client: this.client,
|
|
399
|
+
path: '/ondewo.nlu.Sessions/ListDatastreamIdsOfAllSessions',
|
|
400
|
+
requestData,
|
|
401
|
+
requestMetadata,
|
|
402
|
+
requestClass: thisProto.ListDatastreamIdsOfAllSessionsRequest,
|
|
403
|
+
responseClass: thisProto.ListDatastreamIdsResponse
|
|
404
|
+
});
|
|
405
|
+
},
|
|
406
|
+
/**
|
|
407
|
+
* Unary call: /ondewo.nlu.Sessions/ListOriginIdsOfAllSessions
|
|
408
|
+
*
|
|
409
|
+
* @param requestMessage Request message
|
|
410
|
+
* @param requestMetadata Request metadata
|
|
411
|
+
* @returns Observable<GrpcEvent<thisProto.ListOriginIdsResponse>>
|
|
412
|
+
*/
|
|
413
|
+
listOriginIdsOfAllSessions: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
414
|
+
return this.handler.handle({
|
|
415
|
+
type: GrpcCallType.unary,
|
|
416
|
+
client: this.client,
|
|
417
|
+
path: '/ondewo.nlu.Sessions/ListOriginIdsOfAllSessions',
|
|
418
|
+
requestData,
|
|
419
|
+
requestMetadata,
|
|
420
|
+
requestClass: thisProto.ListOriginIdsOfAllSessionsRequest,
|
|
421
|
+
responseClass: thisProto.ListOriginIdsResponse
|
|
422
|
+
});
|
|
423
|
+
},
|
|
424
|
+
/**
|
|
425
|
+
* Unary call: /ondewo.nlu.Sessions/AddSessionLabels
|
|
426
|
+
*
|
|
427
|
+
* @param requestMessage Request message
|
|
428
|
+
* @param requestMetadata Request metadata
|
|
429
|
+
* @returns Observable<GrpcEvent<thisProto.Session>>
|
|
430
|
+
*/
|
|
431
|
+
addSessionLabels: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
432
|
+
return this.handler.handle({
|
|
433
|
+
type: GrpcCallType.unary,
|
|
434
|
+
client: this.client,
|
|
435
|
+
path: '/ondewo.nlu.Sessions/AddSessionLabels',
|
|
436
|
+
requestData,
|
|
437
|
+
requestMetadata,
|
|
438
|
+
requestClass: thisProto.AddSessionLabelsRequest,
|
|
439
|
+
responseClass: thisProto.Session
|
|
440
|
+
});
|
|
441
|
+
},
|
|
442
|
+
/**
|
|
443
|
+
* Unary call: /ondewo.nlu.Sessions/DeleteSessionLabels
|
|
444
|
+
*
|
|
445
|
+
* @param requestMessage Request message
|
|
446
|
+
* @param requestMetadata Request metadata
|
|
447
|
+
* @returns Observable<GrpcEvent<thisProto.Session>>
|
|
448
|
+
*/
|
|
449
|
+
deleteSessionLabels: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
450
|
+
return this.handler.handle({
|
|
451
|
+
type: GrpcCallType.unary,
|
|
452
|
+
client: this.client,
|
|
453
|
+
path: '/ondewo.nlu.Sessions/DeleteSessionLabels',
|
|
454
|
+
requestData,
|
|
455
|
+
requestMetadata,
|
|
456
|
+
requestClass: thisProto.DeleteSessionLabelsRequest,
|
|
457
|
+
responseClass: thisProto.Session
|
|
458
|
+
});
|
|
459
|
+
},
|
|
460
|
+
/**
|
|
461
|
+
* Unary call: /ondewo.nlu.Sessions/AddSessionComment
|
|
462
|
+
*
|
|
463
|
+
* @param requestMessage Request message
|
|
464
|
+
* @param requestMetadata Request metadata
|
|
465
|
+
* @returns Observable<GrpcEvent<ondewoNlu008.Comment>>
|
|
466
|
+
*/
|
|
467
|
+
addSessionComment: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
468
|
+
return this.handler.handle({
|
|
469
|
+
type: GrpcCallType.unary,
|
|
470
|
+
client: this.client,
|
|
471
|
+
path: '/ondewo.nlu.Sessions/AddSessionComment',
|
|
472
|
+
requestData,
|
|
473
|
+
requestMetadata,
|
|
474
|
+
requestClass: thisProto.AddSessionCommentRequest,
|
|
475
|
+
responseClass: ondewoNlu008.Comment
|
|
476
|
+
});
|
|
477
|
+
},
|
|
478
|
+
/**
|
|
479
|
+
* Unary call: /ondewo.nlu.Sessions/DeleteSessionComments
|
|
480
|
+
*
|
|
481
|
+
* @param requestMessage Request message
|
|
482
|
+
* @param requestMetadata Request metadata
|
|
483
|
+
* @returns Observable<GrpcEvent<thisProto.Session>>
|
|
484
|
+
*/
|
|
485
|
+
deleteSessionComments: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
486
|
+
return this.handler.handle({
|
|
487
|
+
type: GrpcCallType.unary,
|
|
488
|
+
client: this.client,
|
|
489
|
+
path: '/ondewo.nlu.Sessions/DeleteSessionComments',
|
|
490
|
+
requestData,
|
|
491
|
+
requestMetadata,
|
|
492
|
+
requestClass: thisProto.DeleteSessionCommentsRequest,
|
|
493
|
+
responseClass: thisProto.Session
|
|
494
|
+
});
|
|
495
|
+
},
|
|
496
|
+
/**
|
|
497
|
+
* Unary call: /ondewo.nlu.Sessions/UpdateSessionComments
|
|
498
|
+
*
|
|
499
|
+
* @param requestMessage Request message
|
|
500
|
+
* @param requestMetadata Request metadata
|
|
501
|
+
* @returns Observable<GrpcEvent<thisProto.Session>>
|
|
502
|
+
*/
|
|
503
|
+
updateSessionComments: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
504
|
+
return this.handler.handle({
|
|
505
|
+
type: GrpcCallType.unary,
|
|
506
|
+
client: this.client,
|
|
507
|
+
path: '/ondewo.nlu.Sessions/UpdateSessionComments',
|
|
508
|
+
requestData,
|
|
509
|
+
requestMetadata,
|
|
510
|
+
requestClass: thisProto.UpdateSessionCommentsRequest,
|
|
511
|
+
responseClass: thisProto.Session
|
|
512
|
+
});
|
|
513
|
+
},
|
|
514
|
+
/**
|
|
515
|
+
* Unary call: /ondewo.nlu.Sessions/ListSessionComments
|
|
516
|
+
*
|
|
517
|
+
* @param requestMessage Request message
|
|
518
|
+
* @param requestMetadata Request metadata
|
|
519
|
+
* @returns Observable<GrpcEvent<thisProto.ListSessionCommentsResponse>>
|
|
520
|
+
*/
|
|
521
|
+
listSessionComments: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
522
|
+
return this.handler.handle({
|
|
523
|
+
type: GrpcCallType.unary,
|
|
524
|
+
client: this.client,
|
|
525
|
+
path: '/ondewo.nlu.Sessions/ListSessionComments',
|
|
526
|
+
requestData,
|
|
527
|
+
requestMetadata,
|
|
528
|
+
requestClass: thisProto.ListSessionCommentsRequest,
|
|
529
|
+
responseClass: thisProto.ListSessionCommentsResponse
|
|
530
|
+
});
|
|
531
|
+
},
|
|
532
|
+
/**
|
|
533
|
+
* Unary call: /ondewo.nlu.Sessions/ListSessionReviews
|
|
534
|
+
*
|
|
535
|
+
* @param requestMessage Request message
|
|
536
|
+
* @param requestMetadata Request metadata
|
|
537
|
+
* @returns Observable<GrpcEvent<thisProto.ListSessionReviewsResponse>>
|
|
538
|
+
*/
|
|
539
|
+
listSessionReviews: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
540
|
+
return this.handler.handle({
|
|
541
|
+
type: GrpcCallType.unary,
|
|
542
|
+
client: this.client,
|
|
543
|
+
path: '/ondewo.nlu.Sessions/ListSessionReviews',
|
|
544
|
+
requestData,
|
|
545
|
+
requestMetadata,
|
|
546
|
+
requestClass: thisProto.ListSessionReviewsRequest,
|
|
547
|
+
responseClass: thisProto.ListSessionReviewsResponse
|
|
548
|
+
});
|
|
549
|
+
},
|
|
550
|
+
/**
|
|
551
|
+
* Unary call: /ondewo.nlu.Sessions/GetSessionReview
|
|
552
|
+
*
|
|
553
|
+
* @param requestMessage Request message
|
|
554
|
+
* @param requestMetadata Request metadata
|
|
555
|
+
* @returns Observable<GrpcEvent<thisProto.SessionReview>>
|
|
556
|
+
*/
|
|
557
|
+
getSessionReview: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
558
|
+
return this.handler.handle({
|
|
559
|
+
type: GrpcCallType.unary,
|
|
560
|
+
client: this.client,
|
|
561
|
+
path: '/ondewo.nlu.Sessions/GetSessionReview',
|
|
562
|
+
requestData,
|
|
563
|
+
requestMetadata,
|
|
564
|
+
requestClass: thisProto.GetSessionReviewRequest,
|
|
565
|
+
responseClass: thisProto.SessionReview
|
|
566
|
+
});
|
|
567
|
+
},
|
|
568
|
+
/**
|
|
569
|
+
* Unary call: /ondewo.nlu.Sessions/GetLatestSessionReview
|
|
570
|
+
*
|
|
571
|
+
* @param requestMessage Request message
|
|
572
|
+
* @param requestMetadata Request metadata
|
|
573
|
+
* @returns Observable<GrpcEvent<thisProto.SessionReview>>
|
|
574
|
+
*/
|
|
575
|
+
getLatestSessionReview: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
576
|
+
return this.handler.handle({
|
|
577
|
+
type: GrpcCallType.unary,
|
|
578
|
+
client: this.client,
|
|
579
|
+
path: '/ondewo.nlu.Sessions/GetLatestSessionReview',
|
|
580
|
+
requestData,
|
|
581
|
+
requestMetadata,
|
|
582
|
+
requestClass: thisProto.GetLatestSessionReviewRequest,
|
|
583
|
+
responseClass: thisProto.SessionReview
|
|
584
|
+
});
|
|
585
|
+
},
|
|
586
|
+
/**
|
|
587
|
+
* Unary call: /ondewo.nlu.Sessions/CreateSessionReview
|
|
588
|
+
*
|
|
589
|
+
* @param requestMessage Request message
|
|
590
|
+
* @param requestMetadata Request metadata
|
|
591
|
+
* @returns Observable<GrpcEvent<thisProto.SessionReview>>
|
|
592
|
+
*/
|
|
593
|
+
createSessionReview: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
594
|
+
return this.handler.handle({
|
|
595
|
+
type: GrpcCallType.unary,
|
|
596
|
+
client: this.client,
|
|
597
|
+
path: '/ondewo.nlu.Sessions/CreateSessionReview',
|
|
598
|
+
requestData,
|
|
599
|
+
requestMetadata,
|
|
600
|
+
requestClass: thisProto.CreateSessionReviewRequest,
|
|
601
|
+
responseClass: thisProto.SessionReview
|
|
602
|
+
});
|
|
603
|
+
},
|
|
604
|
+
/**
|
|
605
|
+
* Unary call: /ondewo.nlu.Sessions/GetAudioFiles
|
|
606
|
+
*
|
|
607
|
+
* @param requestMessage Request message
|
|
608
|
+
* @param requestMetadata Request metadata
|
|
609
|
+
* @returns Observable<GrpcEvent<thisProto.GetAudioFilesResponse>>
|
|
610
|
+
*/
|
|
611
|
+
getAudioFiles: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
612
|
+
return this.handler.handle({
|
|
613
|
+
type: GrpcCallType.unary,
|
|
614
|
+
client: this.client,
|
|
615
|
+
path: '/ondewo.nlu.Sessions/GetAudioFiles',
|
|
616
|
+
requestData,
|
|
617
|
+
requestMetadata,
|
|
618
|
+
requestClass: thisProto.GetAudioFilesRequest,
|
|
619
|
+
responseClass: thisProto.GetAudioFilesResponse
|
|
620
|
+
});
|
|
621
|
+
},
|
|
622
|
+
/**
|
|
623
|
+
* Unary call: /ondewo.nlu.Sessions/AddAudioFiles
|
|
624
|
+
*
|
|
625
|
+
* @param requestMessage Request message
|
|
626
|
+
* @param requestMetadata Request metadata
|
|
627
|
+
* @returns Observable<GrpcEvent<thisProto.AddAudioFilesResponse>>
|
|
628
|
+
*/
|
|
629
|
+
addAudioFiles: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
630
|
+
return this.handler.handle({
|
|
631
|
+
type: GrpcCallType.unary,
|
|
632
|
+
client: this.client,
|
|
633
|
+
path: '/ondewo.nlu.Sessions/AddAudioFiles',
|
|
634
|
+
requestData,
|
|
635
|
+
requestMetadata,
|
|
636
|
+
requestClass: thisProto.AddAudioFilesRequest,
|
|
637
|
+
responseClass: thisProto.AddAudioFilesResponse
|
|
638
|
+
});
|
|
639
|
+
},
|
|
640
|
+
/**
|
|
641
|
+
* Unary call: /ondewo.nlu.Sessions/DeleteAudioFiles
|
|
642
|
+
*
|
|
643
|
+
* @param requestMessage Request message
|
|
644
|
+
* @param requestMetadata Request metadata
|
|
645
|
+
* @returns Observable<GrpcEvent<thisProto.DeleteAudioFilesResponse>>
|
|
646
|
+
*/
|
|
647
|
+
deleteAudioFiles: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
648
|
+
return this.handler.handle({
|
|
649
|
+
type: GrpcCallType.unary,
|
|
650
|
+
client: this.client,
|
|
651
|
+
path: '/ondewo.nlu.Sessions/DeleteAudioFiles',
|
|
652
|
+
requestData,
|
|
653
|
+
requestMetadata,
|
|
654
|
+
requestClass: thisProto.DeleteAudioFilesRequest,
|
|
655
|
+
responseClass: thisProto.DeleteAudioFilesResponse
|
|
656
|
+
});
|
|
657
|
+
},
|
|
658
|
+
/**
|
|
659
|
+
* Unary call: /ondewo.nlu.Sessions/GetAudioFileOfSession
|
|
660
|
+
*
|
|
661
|
+
* @param requestMessage Request message
|
|
662
|
+
* @param requestMetadata Request metadata
|
|
663
|
+
* @returns Observable<GrpcEvent<thisProto.AudioFileResource>>
|
|
664
|
+
*/
|
|
665
|
+
getAudioFileOfSession: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
666
|
+
return this.handler.handle({
|
|
667
|
+
type: GrpcCallType.unary,
|
|
668
|
+
client: this.client,
|
|
669
|
+
path: '/ondewo.nlu.Sessions/GetAudioFileOfSession',
|
|
670
|
+
requestData,
|
|
671
|
+
requestMetadata,
|
|
672
|
+
requestClass: thisProto.GetAudioFileOfSessionRequest,
|
|
673
|
+
responseClass: thisProto.AudioFileResource
|
|
674
|
+
});
|
|
675
|
+
},
|
|
676
|
+
/**
|
|
677
|
+
* Unary call: /ondewo.nlu.Sessions/ListAudioFiles
|
|
678
|
+
*
|
|
679
|
+
* @param requestMessage Request message
|
|
680
|
+
* @param requestMetadata Request metadata
|
|
681
|
+
* @returns Observable<GrpcEvent<thisProto.ListAudioFilesResponse>>
|
|
682
|
+
*/
|
|
683
|
+
listAudioFiles: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
684
|
+
return this.handler.handle({
|
|
685
|
+
type: GrpcCallType.unary,
|
|
686
|
+
client: this.client,
|
|
687
|
+
path: '/ondewo.nlu.Sessions/ListAudioFiles',
|
|
688
|
+
requestData,
|
|
689
|
+
requestMetadata,
|
|
690
|
+
requestClass: thisProto.ListAudioFilesRequest,
|
|
691
|
+
responseClass: thisProto.ListAudioFilesResponse
|
|
692
|
+
});
|
|
693
|
+
}
|
|
694
|
+
};
|
|
534
695
|
this.client = clientFactory.createClient('ondewo.nlu.Sessions', settings);
|
|
535
696
|
}
|
|
536
697
|
/**
|
|
@@ -610,7 +771,7 @@ class SessionsClient {
|
|
|
610
771
|
*
|
|
611
772
|
* @param requestMessage Request message
|
|
612
773
|
* @param requestMetadata Request metadata
|
|
613
|
-
* @returns Observable<
|
|
774
|
+
* @returns Observable<googleProtobuf006.Empty>
|
|
614
775
|
*/
|
|
615
776
|
deleteSession(requestData, requestMetadata = new GrpcMetadata()) {
|
|
616
777
|
return this.$raw
|
|
@@ -821,6 +982,54 @@ class SessionsClient {
|
|
|
821
982
|
.deleteSessionLabels(requestData, requestMetadata)
|
|
822
983
|
.pipe(throwStatusErrors(), takeMessages());
|
|
823
984
|
}
|
|
985
|
+
/**
|
|
986
|
+
* Unary call @/ondewo.nlu.Sessions/AddSessionComment
|
|
987
|
+
*
|
|
988
|
+
* @param requestMessage Request message
|
|
989
|
+
* @param requestMetadata Request metadata
|
|
990
|
+
* @returns Observable<ondewoNlu008.Comment>
|
|
991
|
+
*/
|
|
992
|
+
addSessionComment(requestData, requestMetadata = new GrpcMetadata()) {
|
|
993
|
+
return this.$raw
|
|
994
|
+
.addSessionComment(requestData, requestMetadata)
|
|
995
|
+
.pipe(throwStatusErrors(), takeMessages());
|
|
996
|
+
}
|
|
997
|
+
/**
|
|
998
|
+
* Unary call @/ondewo.nlu.Sessions/DeleteSessionComments
|
|
999
|
+
*
|
|
1000
|
+
* @param requestMessage Request message
|
|
1001
|
+
* @param requestMetadata Request metadata
|
|
1002
|
+
* @returns Observable<thisProto.Session>
|
|
1003
|
+
*/
|
|
1004
|
+
deleteSessionComments(requestData, requestMetadata = new GrpcMetadata()) {
|
|
1005
|
+
return this.$raw
|
|
1006
|
+
.deleteSessionComments(requestData, requestMetadata)
|
|
1007
|
+
.pipe(throwStatusErrors(), takeMessages());
|
|
1008
|
+
}
|
|
1009
|
+
/**
|
|
1010
|
+
* Unary call @/ondewo.nlu.Sessions/UpdateSessionComments
|
|
1011
|
+
*
|
|
1012
|
+
* @param requestMessage Request message
|
|
1013
|
+
* @param requestMetadata Request metadata
|
|
1014
|
+
* @returns Observable<thisProto.Session>
|
|
1015
|
+
*/
|
|
1016
|
+
updateSessionComments(requestData, requestMetadata = new GrpcMetadata()) {
|
|
1017
|
+
return this.$raw
|
|
1018
|
+
.updateSessionComments(requestData, requestMetadata)
|
|
1019
|
+
.pipe(throwStatusErrors(), takeMessages());
|
|
1020
|
+
}
|
|
1021
|
+
/**
|
|
1022
|
+
* Unary call @/ondewo.nlu.Sessions/ListSessionComments
|
|
1023
|
+
*
|
|
1024
|
+
* @param requestMessage Request message
|
|
1025
|
+
* @param requestMetadata Request metadata
|
|
1026
|
+
* @returns Observable<thisProto.ListSessionCommentsResponse>
|
|
1027
|
+
*/
|
|
1028
|
+
listSessionComments(requestData, requestMetadata = new GrpcMetadata()) {
|
|
1029
|
+
return this.$raw
|
|
1030
|
+
.listSessionComments(requestData, requestMetadata)
|
|
1031
|
+
.pipe(throwStatusErrors(), takeMessages());
|
|
1032
|
+
}
|
|
824
1033
|
/**
|
|
825
1034
|
* Unary call @/ondewo.nlu.Sessions/ListSessionReviews
|
|
826
1035
|
*
|
|
@@ -869,11 +1078,70 @@ class SessionsClient {
|
|
|
869
1078
|
.createSessionReview(requestData, requestMetadata)
|
|
870
1079
|
.pipe(throwStatusErrors(), takeMessages());
|
|
871
1080
|
}
|
|
872
|
-
|
|
873
|
-
|
|
1081
|
+
/**
|
|
1082
|
+
* Unary call @/ondewo.nlu.Sessions/GetAudioFiles
|
|
1083
|
+
*
|
|
1084
|
+
* @param requestMessage Request message
|
|
1085
|
+
* @param requestMetadata Request metadata
|
|
1086
|
+
* @returns Observable<thisProto.GetAudioFilesResponse>
|
|
1087
|
+
*/
|
|
1088
|
+
getAudioFiles(requestData, requestMetadata = new GrpcMetadata()) {
|
|
1089
|
+
return this.$raw
|
|
1090
|
+
.getAudioFiles(requestData, requestMetadata)
|
|
1091
|
+
.pipe(throwStatusErrors(), takeMessages());
|
|
1092
|
+
}
|
|
1093
|
+
/**
|
|
1094
|
+
* Unary call @/ondewo.nlu.Sessions/AddAudioFiles
|
|
1095
|
+
*
|
|
1096
|
+
* @param requestMessage Request message
|
|
1097
|
+
* @param requestMetadata Request metadata
|
|
1098
|
+
* @returns Observable<thisProto.AddAudioFilesResponse>
|
|
1099
|
+
*/
|
|
1100
|
+
addAudioFiles(requestData, requestMetadata = new GrpcMetadata()) {
|
|
1101
|
+
return this.$raw
|
|
1102
|
+
.addAudioFiles(requestData, requestMetadata)
|
|
1103
|
+
.pipe(throwStatusErrors(), takeMessages());
|
|
1104
|
+
}
|
|
1105
|
+
/**
|
|
1106
|
+
* Unary call @/ondewo.nlu.Sessions/DeleteAudioFiles
|
|
1107
|
+
*
|
|
1108
|
+
* @param requestMessage Request message
|
|
1109
|
+
* @param requestMetadata Request metadata
|
|
1110
|
+
* @returns Observable<thisProto.DeleteAudioFilesResponse>
|
|
1111
|
+
*/
|
|
1112
|
+
deleteAudioFiles(requestData, requestMetadata = new GrpcMetadata()) {
|
|
1113
|
+
return this.$raw
|
|
1114
|
+
.deleteAudioFiles(requestData, requestMetadata)
|
|
1115
|
+
.pipe(throwStatusErrors(), takeMessages());
|
|
1116
|
+
}
|
|
1117
|
+
/**
|
|
1118
|
+
* Unary call @/ondewo.nlu.Sessions/GetAudioFileOfSession
|
|
1119
|
+
*
|
|
1120
|
+
* @param requestMessage Request message
|
|
1121
|
+
* @param requestMetadata Request metadata
|
|
1122
|
+
* @returns Observable<thisProto.AudioFileResource>
|
|
1123
|
+
*/
|
|
1124
|
+
getAudioFileOfSession(requestData, requestMetadata = new GrpcMetadata()) {
|
|
1125
|
+
return this.$raw
|
|
1126
|
+
.getAudioFileOfSession(requestData, requestMetadata)
|
|
1127
|
+
.pipe(throwStatusErrors(), takeMessages());
|
|
1128
|
+
}
|
|
1129
|
+
/**
|
|
1130
|
+
* Unary call @/ondewo.nlu.Sessions/ListAudioFiles
|
|
1131
|
+
*
|
|
1132
|
+
* @param requestMessage Request message
|
|
1133
|
+
* @param requestMetadata Request metadata
|
|
1134
|
+
* @returns Observable<thisProto.ListAudioFilesResponse>
|
|
1135
|
+
*/
|
|
1136
|
+
listAudioFiles(requestData, requestMetadata = new GrpcMetadata()) {
|
|
1137
|
+
return this.$raw
|
|
1138
|
+
.listAudioFiles(requestData, requestMetadata)
|
|
1139
|
+
.pipe(throwStatusErrors(), takeMessages());
|
|
1140
|
+
}
|
|
1141
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SessionsClient, deps: [{ token: GRPC_SESSIONS_CLIENT_SETTINGS, optional: true }, { token: GRPC_CLIENT_FACTORY }, { token: i1.GrpcHandler }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1142
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SessionsClient, providedIn: 'any' }); }
|
|
874
1143
|
}
|
|
875
|
-
|
|
876
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: SessionsClient, decorators: [{
|
|
1144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SessionsClient, decorators: [{
|
|
877
1145
|
type: Injectable,
|
|
878
1146
|
args: [{ providedIn: 'any' }]
|
|
879
1147
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
@@ -885,4 +1153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImpor
|
|
|
885
1153
|
type: Inject,
|
|
886
1154
|
args: [GRPC_CLIENT_FACTORY]
|
|
887
1155
|
}] }, { type: i1.GrpcHandler }]; } });
|
|
888
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5wYnNjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vYXBpL29uZGV3by9ubHUvc2Vzc2lvbi5wYnNjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsY0FBYztBQUNkLEVBQUU7QUFDRiwyQkFBMkI7QUFDM0IsOENBQThDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsWUFBWSxFQUlaLFlBQVksRUFDYixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFDTCxtQkFBbUIsRUFFbkIsWUFBWSxFQUNaLGlCQUFpQixFQUNsQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sS0FBSyxTQUFTLE1BQU0sY0FBYyxDQUFDO0FBSzFDLE9BQU8sS0FBSyxpQkFBaUIsTUFBTSw0QkFBNEIsQ0FBQztBQVdoRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBQ2pFOztHQUVHO0FBQ0gsTUFDYSxjQUFjO0lBMGxCZjtJQXpsQkYsTUFBTSxDQUFrQjtJQUVoQzs7OztPQUlHO0lBQ0gsSUFBSSxHQUFHO1FBQ0w7Ozs7OztXQU1HO1FBQ0gsWUFBWSxFQUFFLENBQ1osV0FBMEMsRUFDMUMsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFFLEVBQ21CLEVBQUU7WUFDekQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFDekIsSUFBSSxFQUFFLFlBQVksQ0FBQyxLQUFLO2dCQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLElBQUksRUFBRSxtQ0FBbUM7Z0JBQ3pDLFdBQVc7Z0JBQ1gsZUFBZTtnQkFDZixZQUFZLEVBQUUsU0FBUyxDQUFDLG1CQUFtQjtnQkFDM0MsYUFBYSxFQUFFLFNBQVMsQ0FBQyxvQkFBb0I7YUFD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QUNqQixXQUFpRCxFQUNqRCxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUU7UUFFcEMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7YUFDakQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO3VHQTdoQ1UsY0FBYyxrQkF3bEJILDZCQUE2Qiw2QkFDekMsbUJBQW1COzJHQXpsQmxCLGNBQWMsY0FERCxLQUFLOztTQUNsQixjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFOzswQkF5bEI1QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLDZCQUE2Qjs7MEJBQ2hELE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGUgKi9cbi8qIGVzbGludC1kaXNhYmxlICovXG4vLyBAdHMtbm9jaGVja1xuLy9cbi8vIFRISVMgSVMgQSBHRU5FUkFURUQgRklMRVxuLy8gRE8gTk9UIE1PRElGWSBJVCEgWU9VUiBDSEFOR0VTIFdJTEwgQkUgTE9TVFxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgR3JwY0NhbGxUeXBlLFxuICBHcnBjQ2xpZW50LFxuICBHcnBjQ2xpZW50RmFjdG9yeSxcbiAgR3JwY0V2ZW50LFxuICBHcnBjTWV0YWRhdGFcbn0gZnJvbSAnQG5neC1ncnBjL2NvbW1vbic7XG5pbXBvcnQge1xuICBHUlBDX0NMSUVOVF9GQUNUT1JZLFxuICBHcnBjSGFuZGxlcixcbiAgdGFrZU1lc3NhZ2VzLFxuICB0aHJvd1N0YXR1c0Vycm9yc1xufSBmcm9tICdAbmd4LWdycGMvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyB0aGlzUHJvdG8gZnJvbSAnLi9zZXNzaW9uLnBiJztcbmltcG9ydCAqIGFzIGdvb2dsZUFwaTAwMCBmcm9tICcuLi8uLi9nb29nbGUvYXBpL2h0dHAucGInO1xuaW1wb3J0ICogYXMgZ29vZ2xlUHJvdG9idWYwMDEgZnJvbSAnQG5neC1ncnBjL3dlbGwta25vd24tdHlwZXMnO1xuaW1wb3J0ICogYXMgZ29vZ2xlUHJvdG9idWYwMDIgZnJvbSAnQG5neC1ncnBjL3dlbGwta25vd24tdHlwZXMnO1xuaW1wb3J0ICogYXMgZ29vZ2xlQXBpMDAzIGZyb20gJy4uLy4uL2dvb2dsZS9hcGkvYW5ub3RhdGlvbnMucGInO1xuaW1wb3J0ICogYXMgZ29vZ2xlUHJvdG9idWYwMDQgZnJvbSAnQG5neC1ncnBjL3dlbGwta25vd24tdHlwZXMnO1xuaW1wb3J0ICogYXMgZ29vZ2xlUHJvdG9idWYwMDUgZnJvbSAnQG5neC1ncnBjL3dlbGwta25vd24tdHlwZXMnO1xuaW1wb3J0ICogYXMgb25kZXdvTmx1MDA2IGZyb20gJy4uLy4uL29uZGV3by9ubHUvY29udGV4dC5wYic7XG5pbXBvcnQgKiBhcyBvbmRld29ObHUwMDcgZnJvbSAnLi4vLi4vb25kZXdvL25sdS9jb21tb24ucGInO1xuaW1wb3J0ICogYXMgb25kZXdvTmx1MDA4IGZyb20gJy4uLy4uL29uZGV3by9ubHUvb3BlcmF0aW9ucy5wYic7XG5pbXBvcnQgKiBhcyBnb29nbGVQcm90b2J1ZjAwOSBmcm9tICdAbmd4LWdycGMvd2VsbC1rbm93bi10eXBlcyc7XG5pbXBvcnQgKiBhcyBnb29nbGVQcm90b2J1ZjAxMCBmcm9tICdAbmd4LWdycGMvd2VsbC1rbm93bi10eXBlcyc7XG5pbXBvcnQgKiBhcyBnb29nbGVScGMwMTEgZnJvbSAnLi4vLi4vZ29vZ2xlL3JwYy9zdGF0dXMucGInO1xuaW1wb3J0ICogYXMgZ29vZ2xlVHlwZTAxMiBmcm9tICcuLi8uLi9nb29nbGUvdHlwZS9sYXRsbmcucGInO1xuaW1wb3J0ICogYXMgb25kZXdvTmx1MDEzIGZyb20gJy4uLy4uL29uZGV3by9ubHUvaW50ZW50LnBiJztcbmltcG9ydCAqIGFzIG9uZGV3b05sdTAxNCBmcm9tICcuLi8uLi9vbmRld28vbmx1L2VudGl0eS10eXBlLnBiJztcbmltcG9ydCB7IEdSUENfU0VTU0lPTlNfQ0xJRU5UX1NFVFRJTkdTIH0gZnJvbSAnLi9zZXNzaW9uLnBiY29uZic7XG4vKipcbiAqIFNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIGZvciBvbmRld28ubmx1LlNlc3Npb25zXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ2FueScgfSlcbmV4cG9ydCBjbGFzcyBTZXNzaW9uc0NsaWVudCB7XG4gIHByaXZhdGUgY2xpZW50OiBHcnBjQ2xpZW50PGFueT47XG5cbiAgLyoqXG4gICAqIFJhdyBSUEMgaW1wbGVtZW50YXRpb24gZm9yIGVhY2ggc2VydmljZSBjbGllbnQgbWV0aG9kLlxuICAgKiBUaGUgcmF3IG1ldGhvZHMgcHJvdmlkZSBtb3JlIGNvbnRyb2wgb24gdGhlIGluY29taW5nIGRhdGEgYW5kIGV2ZW50cy4gRS5nLiB0aGV5IGNhbiBiZSB1c2VmdWwgdG8gcmVhZCBzdGF0dXMgYE9LYCBtZXRhZGF0YS5cbiAgICogQXR0ZW50aW9uOiB0aGVzZSBtZXRob2RzIGRvIG5vdCB0aHJvdyBlcnJvcnMgd2hlbiBub24temVybyBzdGF0dXMgY29kZXMgYXJlIHJlY2VpdmVkLlxuICAgKi9cbiAgJHJhdyA9IHtcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9EZXRlY3RJbnRlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uRGV0ZWN0SW50ZW50UmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGRldGVjdEludGVudDogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5EZXRlY3RJbnRlbnRSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkRldGVjdEludGVudFJlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9EZXRlY3RJbnRlbnQnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5EZXRlY3RJbnRlbnRSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uRGV0ZWN0SW50ZW50UmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogQmlkaXJlY3Rpb25hbCBzdHJlYW1pbmc6IC9vbmRld28ubmx1LlNlc3Npb25zL1N0cmVhbWluZ0RldGVjdEludGVudFxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5TdHJlYW1pbmdEZXRlY3RJbnRlbnRSZXNwb25zZT4+XG4gICAgICovXG4gICAgc3RyZWFtaW5nRGV0ZWN0SW50ZW50OiAoXG4gICAgICByZXF1ZXN0RGF0YTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU3RyZWFtaW5nRGV0ZWN0SW50ZW50UmVxdWVzdD4sXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU3RyZWFtaW5nRGV0ZWN0SW50ZW50UmVzcG9uc2U+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS5iaWRpU3RyZWFtLFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvU3RyZWFtaW5nRGV0ZWN0SW50ZW50JyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uU3RyZWFtaW5nRGV0ZWN0SW50ZW50UmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLlN0cmVhbWluZ0RldGVjdEludGVudFJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RTZXNzaW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0U2Vzc2lvbnNSZXNwb25zZT4+XG4gICAgICovXG4gICAgbGlzdFNlc3Npb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RTZXNzaW9uc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdFNlc3Npb25zUmVzcG9uc2U+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RTZXNzaW9ucycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkxpc3RTZXNzaW9uc1JlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IHRoaXNQcm90by5MaXN0U2Vzc2lvbnNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9HZXRTZXNzaW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLlNlc3Npb24+PlxuICAgICAqL1xuICAgIGdldFNlc3Npb246IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uR2V0U2Vzc2lvblJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU2Vzc2lvbj4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvR2V0U2Vzc2lvbicsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkdldFNlc3Npb25SZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uU2Vzc2lvblxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9DcmVhdGVTZXNzaW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLlNlc3Npb24+PlxuICAgICAqL1xuICAgIGNyZWF0ZVNlc3Npb246IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uQ3JlYXRlU2Vzc2lvblJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU2Vzc2lvbj4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvQ3JlYXRlU2Vzc2lvbicsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkNyZWF0ZVNlc3Npb25SZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uU2Vzc2lvblxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9UcmFja1Nlc3Npb25TdGVwXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLlNlc3Npb24+PlxuICAgICAqL1xuICAgIHRyYWNrU2Vzc2lvblN0ZXA6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uVHJhY2tTZXNzaW9uU3RlcFJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU2Vzc2lvbj4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvVHJhY2tTZXNzaW9uU3RlcCcsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLlRyYWNrU2Vzc2lvblN0ZXBSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uU2Vzc2lvblxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9EZWxldGVTZXNzaW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8Z29vZ2xlUHJvdG9idWYwMDQuRW1wdHk+PlxuICAgICAqL1xuICAgIGRlbGV0ZVNlc3Npb246IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uRGVsZXRlU2Vzc2lvblJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDxnb29nbGVQcm90b2J1ZjAwNC5FbXB0eT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvRGVsZXRlU2Vzc2lvbicsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkRlbGV0ZVNlc3Npb25SZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBnb29nbGVQcm90b2J1ZjAwNC5FbXB0eVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0U2Vzc2lvbkxhYmVsc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0U2Vzc2lvbkxhYmVsczogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdFNlc3Npb25MYWJlbHNSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFNlc3Npb25MYWJlbHMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc1JlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc1Jlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RTZXNzaW9uTGFiZWxzT2ZBbGxTZXNzaW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0U2Vzc2lvbkxhYmVsc09mQWxsU2Vzc2lvbnM6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdFNlc3Npb25MYWJlbHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0U2Vzc2lvbkxhYmVsc09mQWxsU2Vzc2lvbnMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uTGlzdFNlc3Npb25MYWJlbHNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0TGFuZ3VhZ2VDb2Rlc09mQWxsU2Vzc2lvbnNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdExhbmd1YWdlQ29kZXNSZXNwb25zZT4+XG4gICAgICovXG4gICAgbGlzdExhbmd1YWdlQ29kZXNPZkFsbFNlc3Npb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RMYW5ndWFnZUNvZGVzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdExhbmd1YWdlQ29kZXNSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdExhbmd1YWdlQ29kZXNPZkFsbFNlc3Npb25zJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uTGlzdExhbmd1YWdlQ29kZXNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLkxpc3RMYW5ndWFnZUNvZGVzUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdE1hdGNoZWRJbnRlbnRzT2ZBbGxTZXNzaW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0TWF0Y2hlZEludGVudHNSZXNwb25zZT4+XG4gICAgICovXG4gICAgbGlzdE1hdGNoZWRJbnRlbnRzT2ZBbGxTZXNzaW9uczogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0TWF0Y2hlZEludGVudHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0TWF0Y2hlZEludGVudHNSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdE1hdGNoZWRJbnRlbnRzT2ZBbGxTZXNzaW9ucycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkxpc3RNYXRjaGVkSW50ZW50c09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uTGlzdE1hdGNoZWRJbnRlbnRzUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdE1hdGNoZWRFbnRpdHlUeXBlc09mQWxsU2Vzc2lvbnNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdE1hdGNoZWRFbnRpdHlUeXBlc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0TWF0Y2hlZEVudGl0eVR5cGVzT2ZBbGxTZXNzaW9uczogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0TWF0Y2hlZEVudGl0eVR5cGVzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdE1hdGNoZWRFbnRpdHlUeXBlc1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0TWF0Y2hlZEVudGl0eVR5cGVzT2ZBbGxTZXNzaW9ucycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkxpc3RNYXRjaGVkRW50aXR5VHlwZXNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLkxpc3RNYXRjaGVkRW50aXR5VHlwZXNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0VXNlcklkc09mQWxsU2Vzc2lvbnNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdFVzZXJJZHNSZXNwb25zZT4+XG4gICAgICovXG4gICAgbGlzdFVzZXJJZHNPZkFsbFNlc3Npb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RVc2VySWRzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdFVzZXJJZHNSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFVzZXJJZHNPZkFsbFNlc3Npb25zJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uTGlzdFVzZXJJZHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLkxpc3RVc2VySWRzUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdElkZW50aWZpZWRVc2VySWRzT2ZBbGxTZXNzaW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0SWRlbnRpZmllZFVzZXJJZHNSZXNwb25zZT4+XG4gICAgICovXG4gICAgbGlzdElkZW50aWZpZWRVc2VySWRzT2ZBbGxTZXNzaW9uczogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0SWRlbnRpZmllZFVzZXJJZHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0SWRlbnRpZmllZFVzZXJJZHNSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdElkZW50aWZpZWRVc2VySWRzT2ZBbGxTZXNzaW9ucycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkxpc3RJZGVudGlmaWVkVXNlcklkc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uTGlzdElkZW50aWZpZWRVc2VySWRzUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFRhZ3NPZkFsbFNlc3Npb25zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkxpc3RUYWdzUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGxpc3RUYWdzT2ZBbGxTZXNzaW9uczogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0VGFnc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkxpc3RUYWdzUmVzcG9uc2U+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RUYWdzT2ZBbGxTZXNzaW9ucycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkxpc3RUYWdzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IHRoaXNQcm90by5MaXN0VGFnc1Jlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RJbnB1dENvbnRleHRzT2ZBbGxTZXNzaW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0SW5wdXRDb250ZXh0c1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0SW5wdXRDb250ZXh0c09mQWxsU2Vzc2lvbnM6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdElucHV0Q29udGV4dHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0SW5wdXRDb250ZXh0c1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0SW5wdXRDb250ZXh0c09mQWxsU2Vzc2lvbnMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5MaXN0SW5wdXRDb250ZXh0c09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uTGlzdElucHV0Q29udGV4dHNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0T3V0cHV0Q29udGV4dHNPZkFsbFNlc3Npb25zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkxpc3RPdXRwdXRDb250ZXh0c1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0T3V0cHV0Q29udGV4dHNPZkFsbFNlc3Npb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RPdXRwdXRDb250ZXh0c09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkxpc3RPdXRwdXRDb250ZXh0c1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0T3V0cHV0Q29udGV4dHNPZkFsbFNlc3Npb25zJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uTGlzdE91dHB1dENvbnRleHRzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IHRoaXNQcm90by5MaXN0T3V0cHV0Q29udGV4dHNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0UGxhdGZvcm1zT2ZBbGxTZXNzaW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0UGxhdGZvcm1zUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGxpc3RQbGF0Zm9ybXNPZkFsbFNlc3Npb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RQbGF0Zm9ybXNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0UGxhdGZvcm1zUmVzcG9uc2U+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RQbGF0Zm9ybXNPZkFsbFNlc3Npb25zJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uTGlzdFBsYXRmb3Jtc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uTGlzdFBsYXRmb3Jtc1Jlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RBY2NvdW50SWRzT2ZBbGxTZXNzaW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0QWNjb3VudElkc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0QWNjb3VudElkc09mQWxsU2Vzc2lvbnM6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdEFjY291bnRJZHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0QWNjb3VudElkc1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0QWNjb3VudElkc09mQWxsU2Vzc2lvbnMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5MaXN0QWNjb3VudElkc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uTGlzdEFjY291bnRJZHNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0UHJvcGVydHlJZHNPZkFsbFNlc3Npb25zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkxpc3RQcm9wZXJ0eUlkc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0UHJvcGVydHlJZHNPZkFsbFNlc3Npb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RQcm9wZXJ0eUlkc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkxpc3RQcm9wZXJ0eUlkc1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0UHJvcGVydHlJZHNPZkFsbFNlc3Npb25zJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uTGlzdFByb3BlcnR5SWRzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IHRoaXNQcm90by5MaXN0UHJvcGVydHlJZHNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0RGF0YXN0cmVhbUlkc09mQWxsU2Vzc2lvbnNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdERhdGFzdHJlYW1JZHNSZXNwb25zZT4+XG4gICAgICovXG4gICAgbGlzdERhdGFzdHJlYW1JZHNPZkFsbFNlc3Npb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3REYXRhc3RyZWFtSWRzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdERhdGFzdHJlYW1JZHNSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdERhdGFzdHJlYW1JZHNPZkFsbFNlc3Npb25zJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uTGlzdERhdGFzdHJlYW1JZHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLkxpc3REYXRhc3RyZWFtSWRzUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdE9yaWdpbklkc09mQWxsU2Vzc2lvbnNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdE9yaWdpbklkc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0T3JpZ2luSWRzT2ZBbGxTZXNzaW9uczogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0T3JpZ2luSWRzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdE9yaWdpbklkc1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0T3JpZ2luSWRzT2ZBbGxTZXNzaW9ucycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkxpc3RPcmlnaW5JZHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLkxpc3RPcmlnaW5JZHNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9BZGRTZXNzaW9uTGFiZWxzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLlNlc3Npb24+PlxuICAgICAqL1xuICAgIGFkZFNlc3Npb25MYWJlbHM6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uQWRkU2Vzc2lvbkxhYmVsc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU2Vzc2lvbj4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvQWRkU2Vzc2lvbkxhYmVscycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkFkZFNlc3Npb25MYWJlbHNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uU2Vzc2lvblxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9EZWxldGVTZXNzaW9uTGFiZWxzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLlNlc3Npb24+PlxuICAgICAqL1xuICAgIGRlbGV0ZVNlc3Npb25MYWJlbHM6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uRGVsZXRlU2Vzc2lvbkxhYmVsc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU2Vzc2lvbj4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvRGVsZXRlU2Vzc2lvbkxhYmVscycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkRlbGV0ZVNlc3Npb25MYWJlbHNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uU2Vzc2lvblxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0U2Vzc2lvblJldmlld3NcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdFNlc3Npb25SZXZpZXdzUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGxpc3RTZXNzaW9uUmV2aWV3czogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0U2Vzc2lvblJldmlld3NSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkxpc3RTZXNzaW9uUmV2aWV3c1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0U2Vzc2lvblJldmlld3MnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5MaXN0U2Vzc2lvblJldmlld3NSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uTGlzdFNlc3Npb25SZXZpZXdzUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5ubHUuU2Vzc2lvbnMvR2V0U2Vzc2lvblJldmlld1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5TZXNzaW9uUmV2aWV3Pj5cbiAgICAgKi9cbiAgICBnZXRTZXNzaW9uUmV2aWV3OiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkdldFNlc3Npb25SZXZpZXdSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLlNlc3Npb25SZXZpZXc+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9vbmRld28ubmx1LlNlc3Npb25zL0dldFNlc3Npb25SZXZpZXcnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5HZXRTZXNzaW9uUmV2aWV3UmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLlNlc3Npb25SZXZpZXdcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5ubHUuU2Vzc2lvbnMvR2V0TGF0ZXN0U2Vzc2lvblJldmlld1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5TZXNzaW9uUmV2aWV3Pj5cbiAgICAgKi9cbiAgICBnZXRMYXRlc3RTZXNzaW9uUmV2aWV3OiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkdldExhdGVzdFNlc3Npb25SZXZpZXdSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLlNlc3Npb25SZXZpZXc+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9vbmRld28ubmx1LlNlc3Npb25zL0dldExhdGVzdFNlc3Npb25SZXZpZXcnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5HZXRMYXRlc3RTZXNzaW9uUmV2aWV3UmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLlNlc3Npb25SZXZpZXdcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5ubHUuU2Vzc2lvbnMvQ3JlYXRlU2Vzc2lvblJldmlld1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5TZXNzaW9uUmV2aWV3Pj5cbiAgICAgKi9cbiAgICBjcmVhdGVTZXNzaW9uUmV2aWV3OiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkNyZWF0ZVNlc3Npb25SZXZpZXdSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLlNlc3Npb25SZXZpZXc+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9vbmRld28ubmx1LlNlc3Npb25zL0NyZWF0ZVNlc3Npb25SZXZpZXcnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5DcmVhdGVTZXNzaW9uUmV2aWV3UmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLlNlc3Npb25SZXZpZXdcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEdSUENfU0VTU0lPTlNfQ0xJRU5UX1NFVFRJTkdTKSBzZXR0aW5nczogYW55LFxuICAgIEBJbmplY3QoR1JQQ19DTElFTlRfRkFDVE9SWSkgY2xpZW50RmFjdG9yeTogR3JwY0NsaWVudEZhY3Rvcnk8YW55PixcbiAgICBwcml2YXRlIGhhbmRsZXI6IEdycGNIYW5kbGVyXG4gICkge1xuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50RmFjdG9yeS5jcmVhdGVDbGllbnQoJ29uZGV3by5ubHUuU2Vzc2lvbnMnLCBzZXR0aW5ncyk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvRGV0ZWN0SW50ZW50XG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLkRldGVjdEludGVudFJlc3BvbnNlPlxuICAgKi9cbiAgZGV0ZWN0SW50ZW50KFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uRGV0ZWN0SW50ZW50UmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uRGV0ZWN0SW50ZW50UmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuZGV0ZWN0SW50ZW50KHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogQmlkaXJlY3Rpb25hbCBzdHJlYW1pbmcgQC9vbmRld28ubmx1LlNlc3Npb25zL1N0cmVhbWluZ0RldGVjdEludGVudFxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5TdHJlYW1pbmdEZXRlY3RJbnRlbnRSZXNwb25zZT5cbiAgICovXG4gIHN0cmVhbWluZ0RldGVjdEludGVudChcbiAgICByZXF1ZXN0RGF0YTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU3RyZWFtaW5nRGV0ZWN0SW50ZW50UmVxdWVzdD4sXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLlN0cmVhbWluZ0RldGVjdEludGVudFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLnN0cmVhbWluZ0RldGVjdEludGVudChyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RTZXNzaW9uc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0U2Vzc2lvbnNSZXNwb25zZT5cbiAgICovXG4gIGxpc3RTZXNzaW9ucyhcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RTZXNzaW9uc1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RTZXNzaW9uc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmxpc3RTZXNzaW9ucyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0dldFNlc3Npb25cbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU2Vzc2lvbj5cbiAgICovXG4gIGdldFNlc3Npb24oXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5HZXRTZXNzaW9uUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU2Vzc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5nZXRTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvQ3JlYXRlU2Vzc2lvblxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5TZXNzaW9uPlxuICAgKi9cbiAgY3JlYXRlU2Vzc2lvbihcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkNyZWF0ZVNlc3Npb25SZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5TZXNzaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmNyZWF0ZVNlc3Npb24ocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9UcmFja1Nlc3Npb25TdGVwXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLlNlc3Npb24+XG4gICAqL1xuICB0cmFja1Nlc3Npb25TdGVwKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uVHJhY2tTZXNzaW9uU3RlcFJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLlNlc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAudHJhY2tTZXNzaW9uU3RlcChyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0RlbGV0ZVNlc3Npb25cbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxnb29nbGVQcm90b2J1ZjAwNC5FbXB0eT5cbiAgICovXG4gIGRlbGV0ZVNlc3Npb24oXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5EZWxldGVTZXNzaW9uUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxnb29nbGVQcm90b2J1ZjAwNC5FbXB0eT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5kZWxldGVTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFNlc3Npb25MYWJlbHNcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdFNlc3Npb25MYWJlbHNSZXNwb25zZT5cbiAgICovXG4gIGxpc3RTZXNzaW9uTGFiZWxzKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdFNlc3Npb25MYWJlbHNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmxpc3RTZXNzaW9uTGFiZWxzKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFNlc3Npb25MYWJlbHNPZkFsbFNlc3Npb25zXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RTZXNzaW9uTGFiZWxzUmVzcG9uc2U+XG4gICAqL1xuICBsaXN0U2Vzc2lvbkxhYmVsc09mQWxsU2Vzc2lvbnMoXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmxpc3RTZXNzaW9uTGFiZWxzT2ZBbGxTZXNzaW9ucyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RMYW5ndWFnZUNvZGVzT2ZBbGxTZXNzaW9uc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0TGFuZ3VhZ2VDb2Rlc1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdExhbmd1YWdlQ29kZXNPZkFsbFNlc3Npb25zKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdExhbmd1YWdlQ29kZXNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdExhbmd1YWdlQ29kZXNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0TGFuZ3VhZ2VDb2Rlc09mQWxsU2Vzc2lvbnMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0TWF0Y2hlZEludGVudHNPZkFsbFNlc3Npb25zXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RNYXRjaGVkSW50ZW50c1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdE1hdGNoZWRJbnRlbnRzT2ZBbGxTZXNzaW9ucyhcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RNYXRjaGVkSW50ZW50c09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0TWF0Y2hlZEludGVudHNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0TWF0Y2hlZEludGVudHNPZkFsbFNlc3Npb25zKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdE1hdGNoZWRFbnRpdHlUeXBlc09mQWxsU2Vzc2lvbnNcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdE1hdGNoZWRFbnRpdHlUeXBlc1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdE1hdGNoZWRFbnRpdHlUeXBlc09mQWxsU2Vzc2lvbnMoXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0TWF0Y2hlZEVudGl0eVR5cGVzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RNYXRjaGVkRW50aXR5VHlwZXNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0TWF0Y2hlZEVudGl0eVR5cGVzT2ZBbGxTZXNzaW9ucyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RVc2VySWRzT2ZBbGxTZXNzaW9uc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0VXNlcklkc1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdFVzZXJJZHNPZkFsbFNlc3Npb25zKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdFVzZXJJZHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdFVzZXJJZHNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0VXNlcklkc09mQWxsU2Vzc2lvbnMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0SWRlbnRpZmllZFVzZXJJZHNPZkFsbFNlc3Npb25zXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RJZGVudGlmaWVkVXNlcklkc1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdElkZW50aWZpZWRVc2VySWRzT2ZBbGxTZXNzaW9ucyhcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RJZGVudGlmaWVkVXNlcklkc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0SWRlbnRpZmllZFVzZXJJZHNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0SWRlbnRpZmllZFVzZXJJZHNPZkFsbFNlc3Npb25zKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFRhZ3NPZkFsbFNlc3Npb25zXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RUYWdzUmVzcG9uc2U+XG4gICAqL1xuICBsaXN0VGFnc09mQWxsU2Vzc2lvbnMoXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0VGFnc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0VGFnc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmxpc3RUYWdzT2ZBbGxTZXNzaW9ucyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RJbnB1dENvbnRleHRzT2ZBbGxTZXNzaW9uc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0SW5wdXRDb250ZXh0c1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdElucHV0Q29udGV4dHNPZkFsbFNlc3Npb25zKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdElucHV0Q29udGV4dHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdElucHV0Q29udGV4dHNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0SW5wdXRDb250ZXh0c09mQWxsU2Vzc2lvbnMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0T3V0cHV0Q29udGV4dHNPZkFsbFNlc3Npb25zXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RPdXRwdXRDb250ZXh0c1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdE91dHB1dENvbnRleHRzT2ZBbGxTZXNzaW9ucyhcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RPdXRwdXRDb250ZXh0c09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0T3V0cHV0Q29udGV4dHNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0T3V0cHV0Q29udGV4dHNPZkFsbFNlc3Npb25zKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFBsYXRmb3Jtc09mQWxsU2Vzc2lvbnNcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdFBsYXRmb3Jtc1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdFBsYXRmb3Jtc09mQWxsU2Vzc2lvbnMoXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0UGxhdGZvcm1zT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RQbGF0Zm9ybXNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0UGxhdGZvcm1zT2ZBbGxTZXNzaW9ucyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RBY2NvdW50SWRzT2ZBbGxTZXNzaW9uc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0QWNjb3VudElkc1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdEFjY291bnRJZHNPZkFsbFNlc3Npb25zKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdEFjY291bnRJZHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdEFjY291bnRJZHNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0QWNjb3VudElkc09mQWxsU2Vzc2lvbnMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0UHJvcGVydHlJZHNPZkFsbFNlc3Npb25zXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RQcm9wZXJ0eUlkc1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdFByb3BlcnR5SWRzT2ZBbGxTZXNzaW9ucyhcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RQcm9wZXJ0eUlkc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0UHJvcGVydHlJZHNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0UHJvcGVydHlJZHNPZkFsbFNlc3Npb25zKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdERhdGFzdHJlYW1JZHNPZkFsbFNlc3Npb25zXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3REYXRhc3RyZWFtSWRzUmVzcG9uc2U+XG4gICAqL1xuICBsaXN0RGF0YXN0cmVhbUlkc09mQWxsU2Vzc2lvbnMoXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0RGF0YXN0cmVhbUlkc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0RGF0YXN0cmVhbUlkc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmxpc3REYXRhc3RyZWFtSWRzT2ZBbGxTZXNzaW9ucyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RPcmlnaW5JZHNPZkFsbFNlc3Npb25zXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RPcmlnaW5JZHNSZXNwb25zZT5cbiAgICovXG4gIGxpc3RPcmlnaW5JZHNPZkFsbFNlc3Npb25zKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdE9yaWdpbklkc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0T3JpZ2luSWRzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdE9yaWdpbklkc09mQWxsU2Vzc2lvbnMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9BZGRTZXNzaW9uTGFiZWxzXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLlNlc3Npb24+XG4gICAqL1xuICBhZGRTZXNzaW9uTGFiZWxzKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uQWRkU2Vzc2lvbkxhYmVsc1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLlNlc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuYWRkU2Vzc2lvbkxhYmVscyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0RlbGV0ZVNlc3Npb25MYWJlbHNcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU2Vzc2lvbj5cbiAgICovXG4gIGRlbGV0ZVNlc3Npb25MYWJlbHMoXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5EZWxldGVTZXNzaW9uTGFiZWxzUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU2Vzc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5kZWxldGVTZXNzaW9uTGFiZWxzKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFNlc3Npb25SZXZpZXdzXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RTZXNzaW9uUmV2aWV3c1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdFNlc3Npb25SZXZpZXdzKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdFNlc3Npb25SZXZpZXdzUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdFNlc3Npb25SZXZpZXdzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdFNlc3Npb25SZXZpZXdzKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvR2V0U2Vzc2lvblJldmlld1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5TZXNzaW9uUmV2aWV3PlxuICAgKi9cbiAgZ2V0U2Vzc2lvblJldmlldyhcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkdldFNlc3Npb25SZXZpZXdSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5TZXNzaW9uUmV2aWV3PiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmdldFNlc3Npb25SZXZpZXcocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9HZXRMYXRlc3RTZXNzaW9uUmV2aWV3XG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLlNlc3Npb25SZXZpZXc+XG4gICAqL1xuICBnZXRMYXRlc3RTZXNzaW9uUmV2aWV3KFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uR2V0TGF0ZXN0U2Vzc2lvblJldmlld1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLlNlc3Npb25SZXZpZXc+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuZ2V0TGF0ZXN0U2Vzc2lvblJldmlldyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0NyZWF0ZVNlc3Npb25SZXZpZXdcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU2Vzc2lvblJldmlldz5cbiAgICovXG4gIGNyZWF0ZVNlc3Npb25SZXZpZXcoXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5DcmVhdGVTZXNzaW9uUmV2aWV3UmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU2Vzc2lvblJldmlldz4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5jcmVhdGVTZXNzaW9uUmV2aWV3KHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cbn1cbiJdfQ==
|
|
1156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5wYnNjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vYXBpL29uZGV3by9ubHUvc2Vzc2lvbi5wYnNjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsY0FBYztBQUNkLEVBQUU7QUFDRiwyQkFBMkI7QUFDM0IsOENBQThDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsWUFBWSxFQUlaLFlBQVksRUFDYixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFDTCxtQkFBbUIsRUFFbkIsWUFBWSxFQUNaLGlCQUFpQixFQUNsQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sS0FBSyxTQUFTLE1BQU0sY0FBYyxDQUFDO0FBTzFDLE9BQU8sS0FBSyxpQkFBaUIsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEtBQUssWUFBWSxNQUFNLDRCQUE0QixDQUFDO0FBTzNELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFDakU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQW94QnpCLFlBQ3FELFFBQWEsRUFDbkMsYUFBcUMsRUFDMUQsT0FBb0I7UUFBcEIsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQXB4QjlCOzs7O1dBSUc7UUFDSCxTQUFJLEdBQUc7WUFDTDs7Ozs7O2VBTUc7WUFDSCxZQUFZLEVBQUUsQ0FDWixXQUEwQyxFQUMxQyxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsRUFDbUIsRUFBRTtnQkFDekQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDekIsSUFBSSxFQUFFLFlBQVksQ0FBQyxLQUFLO29CQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLElBQUksRUFBRSxtQ0FBbUM7b0JB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QWdCLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQzthQUM5QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxxQkFBcUIsQ0FDbkIsV0FBbUQsRUFDbkQsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFFO1FBRXBDLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDO2FBQ25ELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGNBQWMsQ0FDWixXQUE0QyxFQUM1QyxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUU7UUFFcEMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLGNBQWMsQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDO2FBQzVDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQzsrR0ExMkNVLGNBQWMsa0JBcXhCSCw2QkFBNkIsNkJBQ3pDLG1CQUFtQjttSEF0eEJsQixjQUFjLGNBREQsS0FBSzs7NEZBQ2xCLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFOzswQkFzeEI1QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLDZCQUE2Qjs7MEJBQ2hELE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGUgKi9cbi8qIGVzbGludC1kaXNhYmxlICovXG4vLyBAdHMtbm9jaGVja1xuLy9cbi8vIFRISVMgSVMgQSBHRU5FUkFURUQgRklMRVxuLy8gRE8gTk9UIE1PRElGWSBJVCEgWU9VUiBDSEFOR0VTIFdJTEwgQkUgTE9TVFxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgR3JwY0NhbGxUeXBlLFxuICBHcnBjQ2xpZW50LFxuICBHcnBjQ2xpZW50RmFjdG9yeSxcbiAgR3JwY0V2ZW50LFxuICBHcnBjTWV0YWRhdGFcbn0gZnJvbSAnQG5neC1ncnBjL2NvbW1vbic7XG5pbXBvcnQge1xuICBHUlBDX0NMSUVOVF9GQUNUT1JZLFxuICBHcnBjSGFuZGxlcixcbiAgdGFrZU1lc3NhZ2VzLFxuICB0aHJvd1N0YXR1c0Vycm9yc1xufSBmcm9tICdAbmd4LWdycGMvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyB0aGlzUHJvdG8gZnJvbSAnLi9zZXNzaW9uLnBiJztcbmltcG9ydCAqIGFzIGdvb2dsZUFwaTAwMCBmcm9tICcuLi8uLi9nb29nbGUvYXBpL2h0dHAucGInO1xuaW1wb3J0ICogYXMgZ29vZ2xlUHJvdG9idWYwMDEgZnJvbSAnQG5neC1ncnBjL3dlbGwta25vd24tdHlwZXMnO1xuaW1wb3J0ICogYXMgZ29vZ2xlUHJvdG9idWYwMDIgZnJvbSAnQG5neC1ncnBjL3dlbGwta25vd24tdHlwZXMnO1xuaW1wb3J0ICogYXMgZ29vZ2xlUHJvdG9idWYwMDMgZnJvbSAnQG5neC1ncnBjL3dlbGwta25vd24tdHlwZXMnO1xuaW1wb3J0ICogYXMgZ29vZ2xlUHJvdG9idWYwMDQgZnJvbSAnQG5neC1ncnBjL3dlbGwta25vd24tdHlwZXMnO1xuaW1wb3J0ICogYXMgZ29vZ2xlQXBpMDA1IGZyb20gJy4uLy4uL2dvb2dsZS9hcGkvYW5ub3RhdGlvbnMucGInO1xuaW1wb3J0ICogYXMgZ29vZ2xlUHJvdG9idWYwMDYgZnJvbSAnQG5neC1ncnBjL3dlbGwta25vd24tdHlwZXMnO1xuaW1wb3J0ICogYXMgb25kZXdvTmx1MDA3IGZyb20gJy4uLy4uL29uZGV3by9ubHUvY29udGV4dC5wYic7XG5pbXBvcnQgKiBhcyBvbmRld29ObHUwMDggZnJvbSAnLi4vLi4vb25kZXdvL25sdS9jb21tb24ucGInO1xuaW1wb3J0ICogYXMgb25kZXdvTmx1MDA5IGZyb20gJy4uLy4uL29uZGV3by9ubHUvb3BlcmF0aW9ucy5wYic7XG5pbXBvcnQgKiBhcyBnb29nbGVQcm90b2J1ZjAxMCBmcm9tICdAbmd4LWdycGMvd2VsbC1rbm93bi10eXBlcyc7XG5pbXBvcnQgKiBhcyBnb29nbGVScGMwMTEgZnJvbSAnLi4vLi4vZ29vZ2xlL3JwYy9zdGF0dXMucGInO1xuaW1wb3J0ICogYXMgZ29vZ2xlVHlwZTAxMiBmcm9tICcuLi8uLi9nb29nbGUvdHlwZS9sYXRsbmcucGInO1xuaW1wb3J0ICogYXMgb25kZXdvTmx1MDEzIGZyb20gJy4uLy4uL29uZGV3by9ubHUvaW50ZW50LnBiJztcbmltcG9ydCAqIGFzIG9uZGV3b05sdTAxNCBmcm9tICcuLi8uLi9vbmRld28vbmx1L2VudGl0eS10eXBlLnBiJztcbmltcG9ydCB7IEdSUENfU0VTU0lPTlNfQ0xJRU5UX1NFVFRJTkdTIH0gZnJvbSAnLi9zZXNzaW9uLnBiY29uZic7XG4vKipcbiAqIFNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIGZvciBvbmRld28ubmx1LlNlc3Npb25zXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ2FueScgfSlcbmV4cG9ydCBjbGFzcyBTZXNzaW9uc0NsaWVudCB7XG4gIHByaXZhdGUgY2xpZW50OiBHcnBjQ2xpZW50PGFueT47XG5cbiAgLyoqXG4gICAqIFJhdyBSUEMgaW1wbGVtZW50YXRpb24gZm9yIGVhY2ggc2VydmljZSBjbGllbnQgbWV0aG9kLlxuICAgKiBUaGUgcmF3IG1ldGhvZHMgcHJvdmlkZSBtb3JlIGNvbnRyb2wgb24gdGhlIGluY29taW5nIGRhdGEgYW5kIGV2ZW50cy4gRS5nLiB0aGV5IGNhbiBiZSB1c2VmdWwgdG8gcmVhZCBzdGF0dXMgYE9LYCBtZXRhZGF0YS5cbiAgICogQXR0ZW50aW9uOiB0aGVzZSBtZXRob2RzIGRvIG5vdCB0aHJvdyBlcnJvcnMgd2hlbiBub24temVybyBzdGF0dXMgY29kZXMgYXJlIHJlY2VpdmVkLlxuICAgKi9cbiAgJHJhdyA9IHtcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9EZXRlY3RJbnRlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uRGV0ZWN0SW50ZW50UmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGRldGVjdEludGVudDogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5EZXRlY3RJbnRlbnRSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkRldGVjdEludGVudFJlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9EZXRlY3RJbnRlbnQnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5EZXRlY3RJbnRlbnRSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uRGV0ZWN0SW50ZW50UmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogQmlkaXJlY3Rpb25hbCBzdHJlYW1pbmc6IC9vbmRld28ubmx1LlNlc3Npb25zL1N0cmVhbWluZ0RldGVjdEludGVudFxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5TdHJlYW1pbmdEZXRlY3RJbnRlbnRSZXNwb25zZT4+XG4gICAgICovXG4gICAgc3RyZWFtaW5nRGV0ZWN0SW50ZW50OiAoXG4gICAgICByZXF1ZXN0RGF0YTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU3RyZWFtaW5nRGV0ZWN0SW50ZW50UmVxdWVzdD4sXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU3RyZWFtaW5nRGV0ZWN0SW50ZW50UmVzcG9uc2U+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS5iaWRpU3RyZWFtLFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvU3RyZWFtaW5nRGV0ZWN0SW50ZW50JyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uU3RyZWFtaW5nRGV0ZWN0SW50ZW50UmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLlN0cmVhbWluZ0RldGVjdEludGVudFJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RTZXNzaW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0U2Vzc2lvbnNSZXNwb25zZT4+XG4gICAgICovXG4gICAgbGlzdFNlc3Npb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RTZXNzaW9uc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdFNlc3Npb25zUmVzcG9uc2U+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RTZXNzaW9ucycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkxpc3RTZXNzaW9uc1JlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IHRoaXNQcm90by5MaXN0U2Vzc2lvbnNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9HZXRTZXNzaW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLlNlc3Npb24+PlxuICAgICAqL1xuICAgIGdldFNlc3Npb246IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uR2V0U2Vzc2lvblJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU2Vzc2lvbj4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvR2V0U2Vzc2lvbicsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkdldFNlc3Npb25SZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uU2Vzc2lvblxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9DcmVhdGVTZXNzaW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLlNlc3Npb24+PlxuICAgICAqL1xuICAgIGNyZWF0ZVNlc3Npb246IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uQ3JlYXRlU2Vzc2lvblJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU2Vzc2lvbj4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvQ3JlYXRlU2Vzc2lvbicsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkNyZWF0ZVNlc3Npb25SZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uU2Vzc2lvblxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9UcmFja1Nlc3Npb25TdGVwXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLlNlc3Npb24+PlxuICAgICAqL1xuICAgIHRyYWNrU2Vzc2lvblN0ZXA6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uVHJhY2tTZXNzaW9uU3RlcFJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU2Vzc2lvbj4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvVHJhY2tTZXNzaW9uU3RlcCcsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLlRyYWNrU2Vzc2lvblN0ZXBSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uU2Vzc2lvblxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9EZWxldGVTZXNzaW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8Z29vZ2xlUHJvdG9idWYwMDYuRW1wdHk+PlxuICAgICAqL1xuICAgIGRlbGV0ZVNlc3Npb246IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uRGVsZXRlU2Vzc2lvblJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDxnb29nbGVQcm90b2J1ZjAwNi5FbXB0eT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvRGVsZXRlU2Vzc2lvbicsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkRlbGV0ZVNlc3Npb25SZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBnb29nbGVQcm90b2J1ZjAwNi5FbXB0eVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0U2Vzc2lvbkxhYmVsc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0U2Vzc2lvbkxhYmVsczogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdFNlc3Npb25MYWJlbHNSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFNlc3Npb25MYWJlbHMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc1JlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc1Jlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RTZXNzaW9uTGFiZWxzT2ZBbGxTZXNzaW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0U2Vzc2lvbkxhYmVsc09mQWxsU2Vzc2lvbnM6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdFNlc3Npb25MYWJlbHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0U2Vzc2lvbkxhYmVsc09mQWxsU2Vzc2lvbnMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uTGlzdFNlc3Npb25MYWJlbHNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0TGFuZ3VhZ2VDb2Rlc09mQWxsU2Vzc2lvbnNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdExhbmd1YWdlQ29kZXNSZXNwb25zZT4+XG4gICAgICovXG4gICAgbGlzdExhbmd1YWdlQ29kZXNPZkFsbFNlc3Npb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RMYW5ndWFnZUNvZGVzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdExhbmd1YWdlQ29kZXNSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdExhbmd1YWdlQ29kZXNPZkFsbFNlc3Npb25zJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uTGlzdExhbmd1YWdlQ29kZXNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLkxpc3RMYW5ndWFnZUNvZGVzUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdE1hdGNoZWRJbnRlbnRzT2ZBbGxTZXNzaW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0TWF0Y2hlZEludGVudHNSZXNwb25zZT4+XG4gICAgICovXG4gICAgbGlzdE1hdGNoZWRJbnRlbnRzT2ZBbGxTZXNzaW9uczogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0TWF0Y2hlZEludGVudHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0TWF0Y2hlZEludGVudHNSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdE1hdGNoZWRJbnRlbnRzT2ZBbGxTZXNzaW9ucycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkxpc3RNYXRjaGVkSW50ZW50c09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uTGlzdE1hdGNoZWRJbnRlbnRzUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdE1hdGNoZWRFbnRpdHlUeXBlc09mQWxsU2Vzc2lvbnNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdE1hdGNoZWRFbnRpdHlUeXBlc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0TWF0Y2hlZEVudGl0eVR5cGVzT2ZBbGxTZXNzaW9uczogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0TWF0Y2hlZEVudGl0eVR5cGVzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdE1hdGNoZWRFbnRpdHlUeXBlc1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0TWF0Y2hlZEVudGl0eVR5cGVzT2ZBbGxTZXNzaW9ucycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkxpc3RNYXRjaGVkRW50aXR5VHlwZXNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLkxpc3RNYXRjaGVkRW50aXR5VHlwZXNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0VXNlcklkc09mQWxsU2Vzc2lvbnNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdFVzZXJJZHNSZXNwb25zZT4+XG4gICAgICovXG4gICAgbGlzdFVzZXJJZHNPZkFsbFNlc3Npb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RVc2VySWRzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdFVzZXJJZHNSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFVzZXJJZHNPZkFsbFNlc3Npb25zJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uTGlzdFVzZXJJZHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLkxpc3RVc2VySWRzUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdElkZW50aWZpZWRVc2VySWRzT2ZBbGxTZXNzaW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0SWRlbnRpZmllZFVzZXJJZHNSZXNwb25zZT4+XG4gICAgICovXG4gICAgbGlzdElkZW50aWZpZWRVc2VySWRzT2ZBbGxTZXNzaW9uczogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0SWRlbnRpZmllZFVzZXJJZHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0SWRlbnRpZmllZFVzZXJJZHNSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdElkZW50aWZpZWRVc2VySWRzT2ZBbGxTZXNzaW9ucycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkxpc3RJZGVudGlmaWVkVXNlcklkc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uTGlzdElkZW50aWZpZWRVc2VySWRzUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFRhZ3NPZkFsbFNlc3Npb25zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkxpc3RUYWdzUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGxpc3RUYWdzT2ZBbGxTZXNzaW9uczogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0VGFnc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkxpc3RUYWdzUmVzcG9uc2U+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RUYWdzT2ZBbGxTZXNzaW9ucycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkxpc3RUYWdzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IHRoaXNQcm90by5MaXN0VGFnc1Jlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RJbnB1dENvbnRleHRzT2ZBbGxTZXNzaW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0SW5wdXRDb250ZXh0c1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0SW5wdXRDb250ZXh0c09mQWxsU2Vzc2lvbnM6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdElucHV0Q29udGV4dHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0SW5wdXRDb250ZXh0c1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0SW5wdXRDb250ZXh0c09mQWxsU2Vzc2lvbnMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5MaXN0SW5wdXRDb250ZXh0c09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uTGlzdElucHV0Q29udGV4dHNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0T3V0cHV0Q29udGV4dHNPZkFsbFNlc3Npb25zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkxpc3RPdXRwdXRDb250ZXh0c1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0T3V0cHV0Q29udGV4dHNPZkFsbFNlc3Npb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RPdXRwdXRDb250ZXh0c09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkxpc3RPdXRwdXRDb250ZXh0c1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0T3V0cHV0Q29udGV4dHNPZkFsbFNlc3Npb25zJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uTGlzdE91dHB1dENvbnRleHRzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IHRoaXNQcm90by5MaXN0T3V0cHV0Q29udGV4dHNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0UGxhdGZvcm1zT2ZBbGxTZXNzaW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0UGxhdGZvcm1zUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGxpc3RQbGF0Zm9ybXNPZkFsbFNlc3Npb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RQbGF0Zm9ybXNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0UGxhdGZvcm1zUmVzcG9uc2U+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RQbGF0Zm9ybXNPZkFsbFNlc3Npb25zJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uTGlzdFBsYXRmb3Jtc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uTGlzdFBsYXRmb3Jtc1Jlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RBY2NvdW50SWRzT2ZBbGxTZXNzaW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0QWNjb3VudElkc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0QWNjb3VudElkc09mQWxsU2Vzc2lvbnM6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdEFjY291bnRJZHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0QWNjb3VudElkc1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0QWNjb3VudElkc09mQWxsU2Vzc2lvbnMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5MaXN0QWNjb3VudElkc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uTGlzdEFjY291bnRJZHNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0UHJvcGVydHlJZHNPZkFsbFNlc3Npb25zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkxpc3RQcm9wZXJ0eUlkc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0UHJvcGVydHlJZHNPZkFsbFNlc3Npb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RQcm9wZXJ0eUlkc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkxpc3RQcm9wZXJ0eUlkc1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0UHJvcGVydHlJZHNPZkFsbFNlc3Npb25zJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uTGlzdFByb3BlcnR5SWRzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IHRoaXNQcm90by5MaXN0UHJvcGVydHlJZHNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0RGF0YXN0cmVhbUlkc09mQWxsU2Vzc2lvbnNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdERhdGFzdHJlYW1JZHNSZXNwb25zZT4+XG4gICAgICovXG4gICAgbGlzdERhdGFzdHJlYW1JZHNPZkFsbFNlc3Npb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3REYXRhc3RyZWFtSWRzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdERhdGFzdHJlYW1JZHNSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdERhdGFzdHJlYW1JZHNPZkFsbFNlc3Npb25zJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uTGlzdERhdGFzdHJlYW1JZHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLkxpc3REYXRhc3RyZWFtSWRzUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdE9yaWdpbklkc09mQWxsU2Vzc2lvbnNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdE9yaWdpbklkc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0T3JpZ2luSWRzT2ZBbGxTZXNzaW9uczogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0T3JpZ2luSWRzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdE9yaWdpbklkc1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0T3JpZ2luSWRzT2ZBbGxTZXNzaW9ucycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkxpc3RPcmlnaW5JZHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLkxpc3RPcmlnaW5JZHNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9BZGRTZXNzaW9uTGFiZWxzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLlNlc3Npb24+PlxuICAgICAqL1xuICAgIGFkZFNlc3Npb25MYWJlbHM6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uQWRkU2Vzc2lvbkxhYmVsc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU2Vzc2lvbj4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvQWRkU2Vzc2lvbkxhYmVscycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkFkZFNlc3Npb25MYWJlbHNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uU2Vzc2lvblxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9EZWxldGVTZXNzaW9uTGFiZWxzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLlNlc3Npb24+PlxuICAgICAqL1xuICAgIGRlbGV0ZVNlc3Npb25MYWJlbHM6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uRGVsZXRlU2Vzc2lvbkxhYmVsc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU2Vzc2lvbj4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvRGVsZXRlU2Vzc2lvbkxhYmVscycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkRlbGV0ZVNlc3Npb25MYWJlbHNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uU2Vzc2lvblxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9BZGRTZXNzaW9uQ29tbWVudFxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PG9uZGV3b05sdTAwOC5Db21tZW50Pj5cbiAgICAgKi9cbiAgICBhZGRTZXNzaW9uQ29tbWVudDogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5BZGRTZXNzaW9uQ29tbWVudFJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDxvbmRld29ObHUwMDguQ29tbWVudD4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvQWRkU2Vzc2lvbkNvbW1lbnQnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5BZGRTZXNzaW9uQ29tbWVudFJlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IG9uZGV3b05sdTAwOC5Db21tZW50XG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28ubmx1LlNlc3Npb25zL0RlbGV0ZVNlc3Npb25Db21tZW50c1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5TZXNzaW9uPj5cbiAgICAgKi9cbiAgICBkZWxldGVTZXNzaW9uQ29tbWVudHM6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uRGVsZXRlU2Vzc2lvbkNvbW1lbnRzUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5TZXNzaW9uPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9EZWxldGVTZXNzaW9uQ29tbWVudHMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5EZWxldGVTZXNzaW9uQ29tbWVudHNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uU2Vzc2lvblxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9VcGRhdGVTZXNzaW9uQ29tbWVudHNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU2Vzc2lvbj4+XG4gICAgICovXG4gICAgdXBkYXRlU2Vzc2lvbkNvbW1lbnRzOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLlVwZGF0ZVNlc3Npb25Db21tZW50c1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU2Vzc2lvbj4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvVXBkYXRlU2Vzc2lvbkNvbW1lbnRzJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uVXBkYXRlU2Vzc2lvbkNvbW1lbnRzUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLlNlc3Npb25cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFNlc3Npb25Db21tZW50c1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0U2Vzc2lvbkNvbW1lbnRzUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGxpc3RTZXNzaW9uQ29tbWVudHM6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdFNlc3Npb25Db21tZW50c1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdFNlc3Npb25Db21tZW50c1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0U2Vzc2lvbkNvbW1lbnRzJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uTGlzdFNlc3Npb25Db21tZW50c1JlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IHRoaXNQcm90by5MaXN0U2Vzc2lvbkNvbW1lbnRzUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFNlc3Npb25SZXZpZXdzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkxpc3RTZXNzaW9uUmV2aWV3c1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0U2Vzc2lvblJldmlld3M6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdFNlc3Npb25SZXZpZXdzUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0U2Vzc2lvblJldmlld3NSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFNlc3Npb25SZXZpZXdzJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uTGlzdFNlc3Npb25SZXZpZXdzUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLkxpc3RTZXNzaW9uUmV2aWV3c1Jlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28ubmx1LlNlc3Npb25zL0dldFNlc3Npb25SZXZpZXdcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU2Vzc2lvblJldmlldz4+XG4gICAgICovXG4gICAgZ2V0U2Vzc2lvblJldmlldzogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5HZXRTZXNzaW9uUmV2aWV3UmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5TZXNzaW9uUmV2aWV3Pj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9HZXRTZXNzaW9uUmV2aWV3JyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uR2V0U2Vzc2lvblJldmlld1JlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IHRoaXNQcm90by5TZXNzaW9uUmV2aWV3XG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28ubmx1LlNlc3Npb25zL0dldExhdGVzdFNlc3Npb25SZXZpZXdcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU2Vzc2lvblJldmlldz4+XG4gICAgICovXG4gICAgZ2V0TGF0ZXN0U2Vzc2lvblJldmlldzogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5HZXRMYXRlc3RTZXNzaW9uUmV2aWV3UmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5TZXNzaW9uUmV2aWV3Pj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9HZXRMYXRlc3RTZXNzaW9uUmV2aWV3JyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uR2V0TGF0ZXN0U2Vzc2lvblJldmlld1JlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IHRoaXNQcm90by5TZXNzaW9uUmV2aWV3XG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28ubmx1LlNlc3Npb25zL0NyZWF0ZVNlc3Npb25SZXZpZXdcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU2Vzc2lvblJldmlldz4+XG4gICAgICovXG4gICAgY3JlYXRlU2Vzc2lvblJldmlldzogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5DcmVhdGVTZXNzaW9uUmV2aWV3UmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5TZXNzaW9uUmV2aWV3Pj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLm5sdS5TZXNzaW9ucy9DcmVhdGVTZXNzaW9uUmV2aWV3JyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uQ3JlYXRlU2Vzc2lvblJldmlld1JlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IHRoaXNQcm90by5TZXNzaW9uUmV2aWV3XG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28ubmx1LlNlc3Npb25zL0dldEF1ZGlvRmlsZXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uR2V0QXVkaW9GaWxlc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBnZXRBdWRpb0ZpbGVzOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkdldEF1ZGlvRmlsZXNSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkdldEF1ZGlvRmlsZXNSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvR2V0QXVkaW9GaWxlcycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkdldEF1ZGlvRmlsZXNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uR2V0QXVkaW9GaWxlc1Jlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28ubmx1LlNlc3Npb25zL0FkZEF1ZGlvRmlsZXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uQWRkQXVkaW9GaWxlc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBhZGRBdWRpb0ZpbGVzOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkFkZEF1ZGlvRmlsZXNSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkFkZEF1ZGlvRmlsZXNSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvQWRkQXVkaW9GaWxlcycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkFkZEF1ZGlvRmlsZXNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uQWRkQXVkaW9GaWxlc1Jlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28ubmx1LlNlc3Npb25zL0RlbGV0ZUF1ZGlvRmlsZXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uRGVsZXRlQXVkaW9GaWxlc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBkZWxldGVBdWRpb0ZpbGVzOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkRlbGV0ZUF1ZGlvRmlsZXNSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkRlbGV0ZUF1ZGlvRmlsZXNSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvRGVsZXRlQXVkaW9GaWxlcycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkRlbGV0ZUF1ZGlvRmlsZXNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uRGVsZXRlQXVkaW9GaWxlc1Jlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28ubmx1LlNlc3Npb25zL0dldEF1ZGlvRmlsZU9mU2Vzc2lvblxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5BdWRpb0ZpbGVSZXNvdXJjZT4+XG4gICAgICovXG4gICAgZ2V0QXVkaW9GaWxlT2ZTZXNzaW9uOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkdldEF1ZGlvRmlsZU9mU2Vzc2lvblJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uQXVkaW9GaWxlUmVzb3VyY2U+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9vbmRld28ubmx1LlNlc3Npb25zL0dldEF1ZGlvRmlsZU9mU2Vzc2lvbicsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkdldEF1ZGlvRmlsZU9mU2Vzc2lvblJlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IHRoaXNQcm90by5BdWRpb0ZpbGVSZXNvdXJjZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0QXVkaW9GaWxlc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0QXVkaW9GaWxlc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0QXVkaW9GaWxlczogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0QXVkaW9GaWxlc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uTGlzdEF1ZGlvRmlsZXNSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdEF1ZGlvRmlsZXMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5MaXN0QXVkaW9GaWxlc1JlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IHRoaXNQcm90by5MaXN0QXVkaW9GaWxlc1Jlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChHUlBDX1NFU1NJT05TX0NMSUVOVF9TRVRUSU5HUykgc2V0dGluZ3M6IGFueSxcbiAgICBASW5qZWN0KEdSUENfQ0xJRU5UX0ZBQ1RPUlkpIGNsaWVudEZhY3Rvcnk6IEdycGNDbGllbnRGYWN0b3J5PGFueT4sXG4gICAgcHJpdmF0ZSBoYW5kbGVyOiBHcnBjSGFuZGxlclxuICApIHtcbiAgICB0aGlzLmNsaWVudCA9IGNsaWVudEZhY3RvcnkuY3JlYXRlQ2xpZW50KCdvbmRld28ubmx1LlNlc3Npb25zJywgc2V0dGluZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0RldGVjdEludGVudFxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5EZXRlY3RJbnRlbnRSZXNwb25zZT5cbiAgICovXG4gIGRldGVjdEludGVudChcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkRldGVjdEludGVudFJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLkRldGVjdEludGVudFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmRldGVjdEludGVudChyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpZGlyZWN0aW9uYWwgc3RyZWFtaW5nIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9TdHJlYW1pbmdEZXRlY3RJbnRlbnRcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU3RyZWFtaW5nRGV0ZWN0SW50ZW50UmVzcG9uc2U+XG4gICAqL1xuICBzdHJlYW1pbmdEZXRlY3RJbnRlbnQoXG4gICAgcmVxdWVzdERhdGE6IE9ic2VydmFibGU8dGhpc1Byb3RvLlN0cmVhbWluZ0RldGVjdEludGVudFJlcXVlc3Q+LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5TdHJlYW1pbmdEZXRlY3RJbnRlbnRSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5zdHJlYW1pbmdEZXRlY3RJbnRlbnQocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0U2Vzc2lvbnNcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdFNlc3Npb25zUmVzcG9uc2U+XG4gICAqL1xuICBsaXN0U2Vzc2lvbnMoXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0U2Vzc2lvbnNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0U2Vzc2lvbnNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0U2Vzc2lvbnMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9HZXRTZXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLlNlc3Npb24+XG4gICAqL1xuICBnZXRTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uR2V0U2Vzc2lvblJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLlNlc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuZ2V0U2Vzc2lvbihyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0NyZWF0ZVNlc3Npb25cbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU2Vzc2lvbj5cbiAgICovXG4gIGNyZWF0ZVNlc3Npb24oXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5DcmVhdGVTZXNzaW9uUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU2Vzc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5jcmVhdGVTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvVHJhY2tTZXNzaW9uU3RlcFxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5TZXNzaW9uPlxuICAgKi9cbiAgdHJhY2tTZXNzaW9uU3RlcChcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLlRyYWNrU2Vzc2lvblN0ZXBSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5TZXNzaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLnRyYWNrU2Vzc2lvblN0ZXAocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9EZWxldGVTZXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8Z29vZ2xlUHJvdG9idWYwMDYuRW1wdHk+XG4gICAqL1xuICBkZWxldGVTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uRGVsZXRlU2Vzc2lvblJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8Z29vZ2xlUHJvdG9idWYwMDYuRW1wdHk+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuZGVsZXRlU2Vzc2lvbihyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RTZXNzaW9uTGFiZWxzXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RTZXNzaW9uTGFiZWxzUmVzcG9uc2U+XG4gICAqL1xuICBsaXN0U2Vzc2lvbkxhYmVscyhcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RTZXNzaW9uTGFiZWxzUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdFNlc3Npb25MYWJlbHNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0U2Vzc2lvbkxhYmVscyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RTZXNzaW9uTGFiZWxzT2ZBbGxTZXNzaW9uc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0U2Vzc2lvbkxhYmVsc1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdFNlc3Npb25MYWJlbHNPZkFsbFNlc3Npb25zKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdFNlc3Npb25MYWJlbHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdFNlc3Npb25MYWJlbHNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0U2Vzc2lvbkxhYmVsc09mQWxsU2Vzc2lvbnMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0TGFuZ3VhZ2VDb2Rlc09mQWxsU2Vzc2lvbnNcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdExhbmd1YWdlQ29kZXNSZXNwb25zZT5cbiAgICovXG4gIGxpc3RMYW5ndWFnZUNvZGVzT2ZBbGxTZXNzaW9ucyhcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RMYW5ndWFnZUNvZGVzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RMYW5ndWFnZUNvZGVzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdExhbmd1YWdlQ29kZXNPZkFsbFNlc3Npb25zKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdE1hdGNoZWRJbnRlbnRzT2ZBbGxTZXNzaW9uc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0TWF0Y2hlZEludGVudHNSZXNwb25zZT5cbiAgICovXG4gIGxpc3RNYXRjaGVkSW50ZW50c09mQWxsU2Vzc2lvbnMoXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0TWF0Y2hlZEludGVudHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdE1hdGNoZWRJbnRlbnRzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdE1hdGNoZWRJbnRlbnRzT2ZBbGxTZXNzaW9ucyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RNYXRjaGVkRW50aXR5VHlwZXNPZkFsbFNlc3Npb25zXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RNYXRjaGVkRW50aXR5VHlwZXNSZXNwb25zZT5cbiAgICovXG4gIGxpc3RNYXRjaGVkRW50aXR5VHlwZXNPZkFsbFNlc3Npb25zKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdE1hdGNoZWRFbnRpdHlUeXBlc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0TWF0Y2hlZEVudGl0eVR5cGVzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdE1hdGNoZWRFbnRpdHlUeXBlc09mQWxsU2Vzc2lvbnMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0VXNlcklkc09mQWxsU2Vzc2lvbnNcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdFVzZXJJZHNSZXNwb25zZT5cbiAgICovXG4gIGxpc3RVc2VySWRzT2ZBbGxTZXNzaW9ucyhcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RVc2VySWRzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RVc2VySWRzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdFVzZXJJZHNPZkFsbFNlc3Npb25zKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdElkZW50aWZpZWRVc2VySWRzT2ZBbGxTZXNzaW9uc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0SWRlbnRpZmllZFVzZXJJZHNSZXNwb25zZT5cbiAgICovXG4gIGxpc3RJZGVudGlmaWVkVXNlcklkc09mQWxsU2Vzc2lvbnMoXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0SWRlbnRpZmllZFVzZXJJZHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdElkZW50aWZpZWRVc2VySWRzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdElkZW50aWZpZWRVc2VySWRzT2ZBbGxTZXNzaW9ucyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RUYWdzT2ZBbGxTZXNzaW9uc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0VGFnc1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdFRhZ3NPZkFsbFNlc3Npb25zKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdFRhZ3NPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdFRhZ3NSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0VGFnc09mQWxsU2Vzc2lvbnMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0SW5wdXRDb250ZXh0c09mQWxsU2Vzc2lvbnNcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdElucHV0Q29udGV4dHNSZXNwb25zZT5cbiAgICovXG4gIGxpc3RJbnB1dENvbnRleHRzT2ZBbGxTZXNzaW9ucyhcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RJbnB1dENvbnRleHRzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RJbnB1dENvbnRleHRzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdElucHV0Q29udGV4dHNPZkFsbFNlc3Npb25zKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdE91dHB1dENvbnRleHRzT2ZBbGxTZXNzaW9uc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0T3V0cHV0Q29udGV4dHNSZXNwb25zZT5cbiAgICovXG4gIGxpc3RPdXRwdXRDb250ZXh0c09mQWxsU2Vzc2lvbnMoXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0T3V0cHV0Q29udGV4dHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdE91dHB1dENvbnRleHRzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdE91dHB1dENvbnRleHRzT2ZBbGxTZXNzaW9ucyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3RQbGF0Zm9ybXNPZkFsbFNlc3Npb25zXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RQbGF0Zm9ybXNSZXNwb25zZT5cbiAgICovXG4gIGxpc3RQbGF0Zm9ybXNPZkFsbFNlc3Npb25zKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdFBsYXRmb3Jtc09mQWxsU2Vzc2lvbnNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0UGxhdGZvcm1zUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdFBsYXRmb3Jtc09mQWxsU2Vzc2lvbnMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0QWNjb3VudElkc09mQWxsU2Vzc2lvbnNcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdEFjY291bnRJZHNSZXNwb25zZT5cbiAgICovXG4gIGxpc3RBY2NvdW50SWRzT2ZBbGxTZXNzaW9ucyhcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RBY2NvdW50SWRzT2ZBbGxTZXNzaW9uc1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RBY2NvdW50SWRzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdEFjY291bnRJZHNPZkFsbFNlc3Npb25zKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFByb3BlcnR5SWRzT2ZBbGxTZXNzaW9uc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0UHJvcGVydHlJZHNSZXNwb25zZT5cbiAgICovXG4gIGxpc3RQcm9wZXJ0eUlkc09mQWxsU2Vzc2lvbnMoXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0UHJvcGVydHlJZHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdFByb3BlcnR5SWRzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdFByb3BlcnR5SWRzT2ZBbGxTZXNzaW9ucyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0xpc3REYXRhc3RyZWFtSWRzT2ZBbGxTZXNzaW9uc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0RGF0YXN0cmVhbUlkc1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdERhdGFzdHJlYW1JZHNPZkFsbFNlc3Npb25zKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdERhdGFzdHJlYW1JZHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdERhdGFzdHJlYW1JZHNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0RGF0YXN0cmVhbUlkc09mQWxsU2Vzc2lvbnMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9MaXN0T3JpZ2luSWRzT2ZBbGxTZXNzaW9uc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0T3JpZ2luSWRzUmVzcG9uc2U+XG4gICAqL1xuICBsaXN0T3JpZ2luSWRzT2ZBbGxTZXNzaW9ucyhcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkxpc3RPcmlnaW5JZHNPZkFsbFNlc3Npb25zUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdE9yaWdpbklkc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmxpc3RPcmlnaW5JZHNPZkFsbFNlc3Npb25zKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvQWRkU2Vzc2lvbkxhYmVsc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5TZXNzaW9uPlxuICAgKi9cbiAgYWRkU2Vzc2lvbkxhYmVscyhcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkFkZFNlc3Npb25MYWJlbHNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5TZXNzaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmFkZFNlc3Npb25MYWJlbHMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9EZWxldGVTZXNzaW9uTGFiZWxzXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLlNlc3Npb24+XG4gICAqL1xuICBkZWxldGVTZXNzaW9uTGFiZWxzKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uRGVsZXRlU2Vzc2lvbkxhYmVsc1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLlNlc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuZGVsZXRlU2Vzc2lvbkxhYmVscyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0FkZFNlc3Npb25Db21tZW50XG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8b25kZXdvTmx1MDA4LkNvbW1lbnQ+XG4gICAqL1xuICBhZGRTZXNzaW9uQ29tbWVudChcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkFkZFNlc3Npb25Db21tZW50UmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxvbmRld29ObHUwMDguQ29tbWVudD4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5hZGRTZXNzaW9uQ29tbWVudChyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0RlbGV0ZVNlc3Npb25Db21tZW50c1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5TZXNzaW9uPlxuICAgKi9cbiAgZGVsZXRlU2Vzc2lvbkNvbW1lbnRzKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uRGVsZXRlU2Vzc2lvbkNvbW1lbnRzUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU2Vzc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5kZWxldGVTZXNzaW9uQ29tbWVudHMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9VcGRhdGVTZXNzaW9uQ29tbWVudHNcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU2Vzc2lvbj5cbiAgICovXG4gIHVwZGF0ZVNlc3Npb25Db21tZW50cyhcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLlVwZGF0ZVNlc3Npb25Db21tZW50c1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLlNlc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAudXBkYXRlU2Vzc2lvbkNvbW1lbnRzKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFNlc3Npb25Db21tZW50c1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0U2Vzc2lvbkNvbW1lbnRzUmVzcG9uc2U+XG4gICAqL1xuICBsaXN0U2Vzc2lvbkNvbW1lbnRzKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdFNlc3Npb25Db21tZW50c1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RTZXNzaW9uQ29tbWVudHNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0U2Vzc2lvbkNvbW1lbnRzKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdFNlc3Npb25SZXZpZXdzXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RTZXNzaW9uUmV2aWV3c1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdFNlc3Npb25SZXZpZXdzKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdFNlc3Npb25SZXZpZXdzUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdFNlc3Npb25SZXZpZXdzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdFNlc3Npb25SZXZpZXdzKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvR2V0U2Vzc2lvblJldmlld1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5TZXNzaW9uUmV2aWV3PlxuICAgKi9cbiAgZ2V0U2Vzc2lvblJldmlldyhcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkdldFNlc3Npb25SZXZpZXdSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5TZXNzaW9uUmV2aWV3PiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmdldFNlc3Npb25SZXZpZXcocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvb25kZXdvLm5sdS5TZXNzaW9ucy9HZXRMYXRlc3RTZXNzaW9uUmV2aWV3XG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLlNlc3Npb25SZXZpZXc+XG4gICAqL1xuICBnZXRMYXRlc3RTZXNzaW9uUmV2aWV3KFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uR2V0TGF0ZXN0U2Vzc2lvblJldmlld1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLlNlc3Npb25SZXZpZXc+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuZ2V0TGF0ZXN0U2Vzc2lvblJldmlldyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28ubmx1LlNlc3Npb25zL0NyZWF0ZVNlc3Npb25SZXZpZXdcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU2Vzc2lvblJldmlldz5cbiAgICovXG4gIGNyZWF0ZVNlc3Npb25SZXZpZXcoXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5DcmVhdGVTZXNzaW9uUmV2aWV3UmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU2Vzc2lvblJldmlldz4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5jcmVhdGVTZXNzaW9uUmV2aWV3KHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvR2V0QXVkaW9GaWxlc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5HZXRBdWRpb0ZpbGVzUmVzcG9uc2U+XG4gICAqL1xuICBnZXRBdWRpb0ZpbGVzKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uR2V0QXVkaW9GaWxlc1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLkdldEF1ZGlvRmlsZXNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5nZXRBdWRpb0ZpbGVzKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvQWRkQXVkaW9GaWxlc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5BZGRBdWRpb0ZpbGVzUmVzcG9uc2U+XG4gICAqL1xuICBhZGRBdWRpb0ZpbGVzKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uQWRkQXVkaW9GaWxlc1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLkFkZEF1ZGlvRmlsZXNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5hZGRBdWRpb0ZpbGVzKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvRGVsZXRlQXVkaW9GaWxlc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5EZWxldGVBdWRpb0ZpbGVzUmVzcG9uc2U+XG4gICAqL1xuICBkZWxldGVBdWRpb0ZpbGVzKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uRGVsZXRlQXVkaW9GaWxlc1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLkRlbGV0ZUF1ZGlvRmlsZXNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5kZWxldGVBdWRpb0ZpbGVzKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvR2V0QXVkaW9GaWxlT2ZTZXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLkF1ZGlvRmlsZVJlc291cmNlPlxuICAgKi9cbiAgZ2V0QXVkaW9GaWxlT2ZTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uR2V0QXVkaW9GaWxlT2ZTZXNzaW9uUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uQXVkaW9GaWxlUmVzb3VyY2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuZ2V0QXVkaW9GaWxlT2ZTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5ubHUuU2Vzc2lvbnMvTGlzdEF1ZGlvRmlsZXNcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uTGlzdEF1ZGlvRmlsZXNSZXNwb25zZT5cbiAgICovXG4gIGxpc3RBdWRpb0ZpbGVzKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdEF1ZGlvRmlsZXNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0QXVkaW9GaWxlc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmxpc3RBdWRpb0ZpbGVzKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cbn1cbiJdfQ==
|