@ondewo/csi-client-angular 5.1.0 → 5.2.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.
Files changed (63) hide show
  1. package/api/ondewo/csi/conversation.pb.d.ts +4 -1
  2. package/fesm2022/ondewo-csi-client-angular.mjs +56 -53
  3. package/fesm2022/ondewo-csi-client-angular.mjs.map +1 -1
  4. package/package.json +1 -3
  5. package/esm2022/api/google/api/annotations.pb.mjs +0 -2
  6. package/esm2022/api/google/api/http.pb.mjs +0 -524
  7. package/esm2022/api/google/rpc/status.pb.mjs +0 -138
  8. package/esm2022/api/google/type/latlng.pb.mjs +0 -119
  9. package/esm2022/api/ondewo/csi/conversation.pb.mjs +0 -2070
  10. package/esm2022/api/ondewo/csi/conversation.pbconf.mjs +0 -13
  11. package/esm2022/api/ondewo/csi/conversation.pbsc.mjs +0 -315
  12. package/esm2022/api/ondewo/nlu/agent.pb.mjs +0 -11502
  13. package/esm2022/api/ondewo/nlu/agent.pbconf.mjs +0 -13
  14. package/esm2022/api/ondewo/nlu/agent.pbsc.mjs +0 -1246
  15. package/esm2022/api/ondewo/nlu/aiservices.pb.mjs +0 -5313
  16. package/esm2022/api/ondewo/nlu/aiservices.pbconf.mjs +0 -13
  17. package/esm2022/api/ondewo/nlu/aiservices.pbsc.mjs +0 -374
  18. package/esm2022/api/ondewo/nlu/ccai-project.pb.mjs +0 -2691
  19. package/esm2022/api/ondewo/nlu/ccai-project.pbconf.mjs +0 -13
  20. package/esm2022/api/ondewo/nlu/ccai-project.pbsc.mjs +0 -224
  21. package/esm2022/api/ondewo/nlu/common.pb.mjs +0 -1963
  22. package/esm2022/api/ondewo/nlu/context.pb.mjs +0 -1380
  23. package/esm2022/api/ondewo/nlu/context.pbconf.mjs +0 -13
  24. package/esm2022/api/ondewo/nlu/context.pbsc.mjs +0 -225
  25. package/esm2022/api/ondewo/nlu/entity-type.pb.mjs +0 -3909
  26. package/esm2022/api/ondewo/nlu/entity-type.pbconf.mjs +0 -13
  27. package/esm2022/api/ondewo/nlu/entity-type.pbsc.mjs +0 -526
  28. package/esm2022/api/ondewo/nlu/intent.pb.mjs +0 -11252
  29. package/esm2022/api/ondewo/nlu/intent.pbconf.mjs +0 -13
  30. package/esm2022/api/ondewo/nlu/intent.pbsc.mjs +0 -856
  31. package/esm2022/api/ondewo/nlu/operation-metadata.pb.mjs +0 -487
  32. package/esm2022/api/ondewo/nlu/operations.pb.mjs +0 -1003
  33. package/esm2022/api/ondewo/nlu/operations.pbconf.mjs +0 -13
  34. package/esm2022/api/ondewo/nlu/operations.pbsc.mjs +0 -165
  35. package/esm2022/api/ondewo/nlu/project-role.pb.mjs +0 -1061
  36. package/esm2022/api/ondewo/nlu/project-role.pbconf.mjs +0 -13
  37. package/esm2022/api/ondewo/nlu/project-role.pbsc.mjs +0 -195
  38. package/esm2022/api/ondewo/nlu/project-statistics.pb.mjs +0 -460
  39. package/esm2022/api/ondewo/nlu/project-statistics.pbconf.mjs +0 -13
  40. package/esm2022/api/ondewo/nlu/project-statistics.pbsc.mjs +0 -285
  41. package/esm2022/api/ondewo/nlu/server-statistics.pb.mjs +0 -103
  42. package/esm2022/api/ondewo/nlu/server-statistics.pbconf.mjs +0 -13
  43. package/esm2022/api/ondewo/nlu/server-statistics.pbsc.mjs +0 -136
  44. package/esm2022/api/ondewo/nlu/session.pb.mjs +0 -13750
  45. package/esm2022/api/ondewo/nlu/session.pbconf.mjs +0 -13
  46. package/esm2022/api/ondewo/nlu/session.pbsc.mjs +0 -1246
  47. package/esm2022/api/ondewo/nlu/user.pb.mjs +0 -3865
  48. package/esm2022/api/ondewo/nlu/user.pbconf.mjs +0 -13
  49. package/esm2022/api/ondewo/nlu/user.pbsc.mjs +0 -706
  50. package/esm2022/api/ondewo/nlu/utility.pb.mjs +0 -3302
  51. package/esm2022/api/ondewo/nlu/utility.pbconf.mjs +0 -13
  52. package/esm2022/api/ondewo/nlu/utility.pbsc.mjs +0 -284
  53. package/esm2022/api/ondewo/nlu/webhook.pb.mjs +0 -1596
  54. package/esm2022/api/ondewo/nlu/webhook.pbconf.mjs +0 -13
  55. package/esm2022/api/ondewo/nlu/webhook.pbsc.mjs +0 -225
  56. package/esm2022/api/ondewo/s2t/speech-to-text.pb.mjs +0 -8350
  57. package/esm2022/api/ondewo/s2t/speech-to-text.pbconf.mjs +0 -13
  58. package/esm2022/api/ondewo/s2t/speech-to-text.pbsc.mjs +0 -495
  59. package/esm2022/api/ondewo/t2s/text-to-speech.pb.mjs +0 -7974
  60. package/esm2022/api/ondewo/t2s/text-to-speech.pbconf.mjs +0 -13
  61. package/esm2022/api/ondewo/t2s/text-to-speech.pbsc.mjs +0 -525
  62. package/esm2022/ondewo-csi-client-angular.mjs +0 -5
  63. package/esm2022/public-api.mjs +0 -58
@@ -1,13 +0,0 @@
1
- /* tslint:disable */
2
- /* eslint-disable */
3
- // @ts-nocheck
4
- //
5
- // THIS IS A GENERATED FILE
6
- // DO NOT MODIFY IT! YOUR CHANGES WILL BE LOST
7
- import { InjectionToken } from '@angular/core';
8
- /**
9
- * Specific GrpcClientSettings for Conversations.
10
- * Use it only if your default settings are not set or the service requires other settings.
11
- */
12
- export const GRPC_CONVERSATIONS_CLIENT_SETTINGS = new InjectionToken('GRPC_CONVERSATIONS_CLIENT_SETTINGS');
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnBiY29uZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2FwaS9vbmRld28vY3NpL2NvbnZlcnNhdGlvbi5wYmNvbmYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQixjQUFjO0FBQ2QsRUFBRTtBQUNGLDJCQUEyQjtBQUMzQiw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxJQUFJLGNBQWMsQ0FDbEUsb0NBQW9DLENBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuLyogZXNsaW50LWRpc2FibGUgKi9cbi8vIEB0cy1ub2NoZWNrXG4vL1xuLy8gVEhJUyBJUyBBIEdFTkVSQVRFRCBGSUxFXG4vLyBETyBOT1QgTU9ESUZZIElUISBZT1VSIENIQU5HRVMgV0lMTCBCRSBMT1NUXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFNwZWNpZmljIEdycGNDbGllbnRTZXR0aW5ncyBmb3IgQ29udmVyc2F0aW9ucy5cbiAqIFVzZSBpdCBvbmx5IGlmIHlvdXIgZGVmYXVsdCBzZXR0aW5ncyBhcmUgbm90IHNldCBvciB0aGUgc2VydmljZSByZXF1aXJlcyBvdGhlciBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdSUENfQ09OVkVSU0FUSU9OU19DTElFTlRfU0VUVElOR1MgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PihcbiAgJ0dSUENfQ09OVkVSU0FUSU9OU19DTElFTlRfU0VUVElOR1MnXG4pO1xuIl19
@@ -1,315 +0,0 @@
1
- /* tslint:disable */
2
- /* eslint-disable */
3
- // @ts-nocheck
4
- //
5
- // THIS IS A GENERATED FILE
6
- // DO NOT MODIFY IT! YOUR CHANGES WILL BE LOST
7
- import { Inject, Injectable, Optional } from '@angular/core';
8
- import { GrpcCallType, GrpcMetadata } from '@ngx-grpc/common';
9
- import { GRPC_CLIENT_FACTORY, takeMessages, throwStatusErrors } from '@ngx-grpc/core';
10
- import * as thisProto from './conversation.pb';
11
- import * as googleProtobuf002 from '@ngx-grpc/well-known-types';
12
- import { GRPC_CONVERSATIONS_CLIENT_SETTINGS } from './conversation.pbconf';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "@ngx-grpc/core";
15
- /**
16
- * Service client implementation for ondewo.csi.Conversations
17
- */
18
- export class ConversationsClient {
19
- constructor(settings, clientFactory, handler) {
20
- this.handler = handler;
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
- this.$raw = {
27
- /**
28
- * Unary call: /ondewo.csi.Conversations/CreateS2sPipeline
29
- *
30
- * @param requestMessage Request message
31
- * @param requestMetadata Request metadata
32
- * @returns Observable<GrpcEvent<googleProtobuf002.Empty>>
33
- */
34
- createS2sPipeline: (requestData, requestMetadata = new GrpcMetadata()) => {
35
- return this.handler.handle({
36
- type: GrpcCallType.unary,
37
- client: this.client,
38
- path: '/ondewo.csi.Conversations/CreateS2sPipeline',
39
- requestData,
40
- requestMetadata,
41
- requestClass: thisProto.S2sPipeline,
42
- responseClass: googleProtobuf002.Empty
43
- });
44
- },
45
- /**
46
- * Unary call: /ondewo.csi.Conversations/GetS2sPipeline
47
- *
48
- * @param requestMessage Request message
49
- * @param requestMetadata Request metadata
50
- * @returns Observable<GrpcEvent<thisProto.S2sPipeline>>
51
- */
52
- getS2sPipeline: (requestData, requestMetadata = new GrpcMetadata()) => {
53
- return this.handler.handle({
54
- type: GrpcCallType.unary,
55
- client: this.client,
56
- path: '/ondewo.csi.Conversations/GetS2sPipeline',
57
- requestData,
58
- requestMetadata,
59
- requestClass: thisProto.S2sPipelineId,
60
- responseClass: thisProto.S2sPipeline
61
- });
62
- },
63
- /**
64
- * Unary call: /ondewo.csi.Conversations/UpdateS2sPipeline
65
- *
66
- * @param requestMessage Request message
67
- * @param requestMetadata Request metadata
68
- * @returns Observable<GrpcEvent<googleProtobuf002.Empty>>
69
- */
70
- updateS2sPipeline: (requestData, requestMetadata = new GrpcMetadata()) => {
71
- return this.handler.handle({
72
- type: GrpcCallType.unary,
73
- client: this.client,
74
- path: '/ondewo.csi.Conversations/UpdateS2sPipeline',
75
- requestData,
76
- requestMetadata,
77
- requestClass: thisProto.S2sPipeline,
78
- responseClass: googleProtobuf002.Empty
79
- });
80
- },
81
- /**
82
- * Unary call: /ondewo.csi.Conversations/DeleteS2sPipeline
83
- *
84
- * @param requestMessage Request message
85
- * @param requestMetadata Request metadata
86
- * @returns Observable<GrpcEvent<googleProtobuf002.Empty>>
87
- */
88
- deleteS2sPipeline: (requestData, requestMetadata = new GrpcMetadata()) => {
89
- return this.handler.handle({
90
- type: GrpcCallType.unary,
91
- client: this.client,
92
- path: '/ondewo.csi.Conversations/DeleteS2sPipeline',
93
- requestData,
94
- requestMetadata,
95
- requestClass: thisProto.S2sPipelineId,
96
- responseClass: googleProtobuf002.Empty
97
- });
98
- },
99
- /**
100
- * Unary call: /ondewo.csi.Conversations/ListS2sPipelines
101
- *
102
- * @param requestMessage Request message
103
- * @param requestMetadata Request metadata
104
- * @returns Observable<GrpcEvent<thisProto.ListS2sPipelinesResponse>>
105
- */
106
- listS2sPipelines: (requestData, requestMetadata = new GrpcMetadata()) => {
107
- return this.handler.handle({
108
- type: GrpcCallType.unary,
109
- client: this.client,
110
- path: '/ondewo.csi.Conversations/ListS2sPipelines',
111
- requestData,
112
- requestMetadata,
113
- requestClass: thisProto.ListS2sPipelinesRequest,
114
- responseClass: thisProto.ListS2sPipelinesResponse
115
- });
116
- },
117
- /**
118
- * Bidirectional streaming: /ondewo.csi.Conversations/S2sStream
119
- *
120
- * @param requestMessage Request message
121
- * @param requestMetadata Request metadata
122
- * @returns Observable<GrpcEvent<thisProto.S2sStreamResponse>>
123
- */
124
- s2sStream: (requestData, requestMetadata = new GrpcMetadata()) => {
125
- return this.handler.handle({
126
- type: GrpcCallType.bidiStream,
127
- client: this.client,
128
- path: '/ondewo.csi.Conversations/S2sStream',
129
- requestData,
130
- requestMetadata,
131
- requestClass: thisProto.S2sStreamRequest,
132
- responseClass: thisProto.S2sStreamResponse
133
- });
134
- },
135
- /**
136
- * Unary call: /ondewo.csi.Conversations/CheckUpstreamHealth
137
- *
138
- * @param requestMessage Request message
139
- * @param requestMetadata Request metadata
140
- * @returns Observable<GrpcEvent<thisProto.CheckUpstreamHealthResponse>>
141
- */
142
- checkUpstreamHealth: (requestData, requestMetadata = new GrpcMetadata()) => {
143
- return this.handler.handle({
144
- type: GrpcCallType.unary,
145
- client: this.client,
146
- path: '/ondewo.csi.Conversations/CheckUpstreamHealth',
147
- requestData,
148
- requestMetadata,
149
- requestClass: googleProtobuf002.Empty,
150
- responseClass: thisProto.CheckUpstreamHealthResponse
151
- });
152
- },
153
- /**
154
- * Server streaming: /ondewo.csi.Conversations/GetControlStream
155
- *
156
- * @param requestMessage Request message
157
- * @param requestMetadata Request metadata
158
- * @returns Observable<GrpcEvent<thisProto.ControlStreamResponse>>
159
- */
160
- getControlStream: (requestData, requestMetadata = new GrpcMetadata()) => {
161
- return this.handler.handle({
162
- type: GrpcCallType.serverStream,
163
- client: this.client,
164
- path: '/ondewo.csi.Conversations/GetControlStream',
165
- requestData,
166
- requestMetadata,
167
- requestClass: thisProto.ControlStreamRequest,
168
- responseClass: thisProto.ControlStreamResponse
169
- });
170
- },
171
- /**
172
- * Unary call: /ondewo.csi.Conversations/SetControlStatus
173
- *
174
- * @param requestMessage Request message
175
- * @param requestMetadata Request metadata
176
- * @returns Observable<GrpcEvent<thisProto.SetControlStatusResponse>>
177
- */
178
- setControlStatus: (requestData, requestMetadata = new GrpcMetadata()) => {
179
- return this.handler.handle({
180
- type: GrpcCallType.unary,
181
- client: this.client,
182
- path: '/ondewo.csi.Conversations/SetControlStatus',
183
- requestData,
184
- requestMetadata,
185
- requestClass: thisProto.SetControlStatusRequest,
186
- responseClass: thisProto.SetControlStatusResponse
187
- });
188
- }
189
- };
190
- this.client = clientFactory.createClient('ondewo.csi.Conversations', settings);
191
- }
192
- /**
193
- * Unary call @/ondewo.csi.Conversations/CreateS2sPipeline
194
- *
195
- * @param requestMessage Request message
196
- * @param requestMetadata Request metadata
197
- * @returns Observable<googleProtobuf002.Empty>
198
- */
199
- createS2sPipeline(requestData, requestMetadata = new GrpcMetadata()) {
200
- return this.$raw
201
- .createS2sPipeline(requestData, requestMetadata)
202
- .pipe(throwStatusErrors(), takeMessages());
203
- }
204
- /**
205
- * Unary call @/ondewo.csi.Conversations/GetS2sPipeline
206
- *
207
- * @param requestMessage Request message
208
- * @param requestMetadata Request metadata
209
- * @returns Observable<thisProto.S2sPipeline>
210
- */
211
- getS2sPipeline(requestData, requestMetadata = new GrpcMetadata()) {
212
- return this.$raw
213
- .getS2sPipeline(requestData, requestMetadata)
214
- .pipe(throwStatusErrors(), takeMessages());
215
- }
216
- /**
217
- * Unary call @/ondewo.csi.Conversations/UpdateS2sPipeline
218
- *
219
- * @param requestMessage Request message
220
- * @param requestMetadata Request metadata
221
- * @returns Observable<googleProtobuf002.Empty>
222
- */
223
- updateS2sPipeline(requestData, requestMetadata = new GrpcMetadata()) {
224
- return this.$raw
225
- .updateS2sPipeline(requestData, requestMetadata)
226
- .pipe(throwStatusErrors(), takeMessages());
227
- }
228
- /**
229
- * Unary call @/ondewo.csi.Conversations/DeleteS2sPipeline
230
- *
231
- * @param requestMessage Request message
232
- * @param requestMetadata Request metadata
233
- * @returns Observable<googleProtobuf002.Empty>
234
- */
235
- deleteS2sPipeline(requestData, requestMetadata = new GrpcMetadata()) {
236
- return this.$raw
237
- .deleteS2sPipeline(requestData, requestMetadata)
238
- .pipe(throwStatusErrors(), takeMessages());
239
- }
240
- /**
241
- * Unary call @/ondewo.csi.Conversations/ListS2sPipelines
242
- *
243
- * @param requestMessage Request message
244
- * @param requestMetadata Request metadata
245
- * @returns Observable<thisProto.ListS2sPipelinesResponse>
246
- */
247
- listS2sPipelines(requestData, requestMetadata = new GrpcMetadata()) {
248
- return this.$raw
249
- .listS2sPipelines(requestData, requestMetadata)
250
- .pipe(throwStatusErrors(), takeMessages());
251
- }
252
- /**
253
- * Bidirectional streaming @/ondewo.csi.Conversations/S2sStream
254
- *
255
- * @param requestMessage Request message
256
- * @param requestMetadata Request metadata
257
- * @returns Observable<thisProto.S2sStreamResponse>
258
- */
259
- s2sStream(requestData, requestMetadata = new GrpcMetadata()) {
260
- return this.$raw
261
- .s2sStream(requestData, requestMetadata)
262
- .pipe(throwStatusErrors(), takeMessages());
263
- }
264
- /**
265
- * Unary call @/ondewo.csi.Conversations/CheckUpstreamHealth
266
- *
267
- * @param requestMessage Request message
268
- * @param requestMetadata Request metadata
269
- * @returns Observable<thisProto.CheckUpstreamHealthResponse>
270
- */
271
- checkUpstreamHealth(requestData, requestMetadata = new GrpcMetadata()) {
272
- return this.$raw
273
- .checkUpstreamHealth(requestData, requestMetadata)
274
- .pipe(throwStatusErrors(), takeMessages());
275
- }
276
- /**
277
- * Server streaming @/ondewo.csi.Conversations/GetControlStream
278
- *
279
- * @param requestMessage Request message
280
- * @param requestMetadata Request metadata
281
- * @returns Observable<thisProto.ControlStreamResponse>
282
- */
283
- getControlStream(requestData, requestMetadata = new GrpcMetadata()) {
284
- return this.$raw
285
- .getControlStream(requestData, requestMetadata)
286
- .pipe(throwStatusErrors(), takeMessages());
287
- }
288
- /**
289
- * Unary call @/ondewo.csi.Conversations/SetControlStatus
290
- *
291
- * @param requestMessage Request message
292
- * @param requestMetadata Request metadata
293
- * @returns Observable<thisProto.SetControlStatusResponse>
294
- */
295
- setControlStatus(requestData, requestMetadata = new GrpcMetadata()) {
296
- return this.$raw
297
- .setControlStatus(requestData, requestMetadata)
298
- .pipe(throwStatusErrors(), takeMessages());
299
- }
300
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ConversationsClient, deps: [{ token: GRPC_CONVERSATIONS_CLIENT_SETTINGS, optional: true }, { token: GRPC_CLIENT_FACTORY }, { token: i1.GrpcHandler }], target: i0.ɵɵFactoryTarget.Injectable }); }
301
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ConversationsClient, providedIn: 'any' }); }
302
- }
303
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ConversationsClient, decorators: [{
304
- type: Injectable,
305
- args: [{ providedIn: 'any' }]
306
- }], ctorParameters: () => [{ type: undefined, decorators: [{
307
- type: Optional
308
- }, {
309
- type: Inject,
310
- args: [GRPC_CONVERSATIONS_CLIENT_SETTINGS]
311
- }] }, { type: undefined, decorators: [{
312
- type: Inject,
313
- args: [GRPC_CLIENT_FACTORY]
314
- }] }, { type: i1.GrpcHandler }] });
315
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnBic2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9hcGkvb25kZXdvL2NzaS9jb252ZXJzYXRpb24ucGJzYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ3BCLGNBQWM7QUFDZCxFQUFFO0FBQ0YsMkJBQTJCO0FBQzNCLDhDQUE4QztBQUM5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUNMLFlBQVksRUFJWixZQUFZLEVBQ2IsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsbUJBQW1CLEVBRW5CLFlBQVksRUFDWixpQkFBaUIsRUFDbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEtBQUssU0FBUyxNQUFNLG1CQUFtQixDQUFDO0FBRy9DLE9BQU8sS0FBSyxpQkFBaUIsTUFBTSw0QkFBNEIsQ0FBQztBQWFoRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBQzNFOztHQUVHO0FBRUgsTUFBTSxPQUFPLG1CQUFtQjtJQXdNOUIsWUFDMEQsUUFBYSxFQUN4QyxhQUFxQyxFQUMxRCxPQUFvQjtRQUFwQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBeE05Qjs7OztXQUlHO1FBQ0gsU0FBSSxHQUFHO1lBQ0w7Ozs7OztlQU1HO1lBQ0gsaUJBQWlCLEVBQUUsQ0FDakIsV0FBa0MsRUFDbEMsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFFLEVBQ1ksRUFBRTtnQkFDbEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDekIsSUFBSSxFQUFFLFlBQVksQ0FBQyxLQUFLO29CQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLElBQUksRUFBRSw2Q0FBNkM7b0JBQ25ELFdBQVc7b0JBQ1gsZUFBZTtvQkFD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QyxXQUFXLEVBQUUsZUFBZSxDQUFDO2FBQzlDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQzsrR0FqV1UsbUJBQW1CLGtCQXlNUixrQ0FBa0MsNkJBQzlDLG1CQUFtQjttSEExTWxCLG1CQUFtQixjQUROLEtBQUs7OzRGQUNsQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFOzswQkEwTTVCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0NBQWtDOzswQkFDckQsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuLyogZXNsaW50LWRpc2FibGUgKi9cbi8vIEB0cy1ub2NoZWNrXG4vL1xuLy8gVEhJUyBJUyBBIEdFTkVSQVRFRCBGSUxFXG4vLyBETyBOT1QgTU9ESUZZIElUISBZT1VSIENIQU5HRVMgV0lMTCBCRSBMT1NUXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBHcnBjQ2FsbFR5cGUsXG4gIEdycGNDbGllbnQsXG4gIEdycGNDbGllbnRGYWN0b3J5LFxuICBHcnBjRXZlbnQsXG4gIEdycGNNZXRhZGF0YVxufSBmcm9tICdAbmd4LWdycGMvY29tbW9uJztcbmltcG9ydCB7XG4gIEdSUENfQ0xJRU5UX0ZBQ1RPUlksXG4gIEdycGNIYW5kbGVyLFxuICB0YWtlTWVzc2FnZXMsXG4gIHRocm93U3RhdHVzRXJyb3JzXG59IGZyb20gJ0BuZ3gtZ3JwYy9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIHRoaXNQcm90byBmcm9tICcuL2NvbnZlcnNhdGlvbi5wYic7XG5pbXBvcnQgKiBhcyBnb29nbGVQcm90b2J1ZjAwMCBmcm9tICdAbmd4LWdycGMvd2VsbC1rbm93bi10eXBlcyc7XG5pbXBvcnQgKiBhcyBnb29nbGVBcGkwMDEgZnJvbSAnLi4vLi4vZ29vZ2xlL2FwaS9hbm5vdGF0aW9ucy5wYic7XG5pbXBvcnQgKiBhcyBnb29nbGVQcm90b2J1ZjAwMiBmcm9tICdAbmd4LWdycGMvd2VsbC1rbm93bi10eXBlcyc7XG5pbXBvcnQgKiBhcyBnb29nbGVQcm90b2J1ZjAwMyBmcm9tICdAbmd4LWdycGMvd2VsbC1rbm93bi10eXBlcyc7XG5pbXBvcnQgKiBhcyBnb29nbGVQcm90b2J1ZjAwNCBmcm9tICdAbmd4LWdycGMvd2VsbC1rbm93bi10eXBlcyc7XG5pbXBvcnQgKiBhcyBnb29nbGVQcm90b2J1ZjAwNSBmcm9tICdAbmd4LWdycGMvd2VsbC1rbm93bi10eXBlcyc7XG5pbXBvcnQgKiBhcyBnb29nbGVScGMwMDYgZnJvbSAnLi4vLi4vZ29vZ2xlL3JwYy9zdGF0dXMucGInO1xuaW1wb3J0ICogYXMgZ29vZ2xlVHlwZTAwNyBmcm9tICcuLi8uLi9nb29nbGUvdHlwZS9sYXRsbmcucGInO1xuaW1wb3J0ICogYXMgb25kZXdvTmx1MDA4IGZyb20gJy4uLy4uL29uZGV3by9ubHUvY29tbW9uLnBiJztcbmltcG9ydCAqIGFzIG9uZGV3b05sdTAwOSBmcm9tICcuLi8uLi9vbmRld28vbmx1L2NvbnRleHQucGInO1xuaW1wb3J0ICogYXMgb25kZXdvTmx1MDEwIGZyb20gJy4uLy4uL29uZGV3by9ubHUvaW50ZW50LnBiJztcbmltcG9ydCAqIGFzIG9uZGV3b05sdTAxMSBmcm9tICcuLi8uLi9vbmRld28vbmx1L2VudGl0eS10eXBlLnBiJztcbmltcG9ydCAqIGFzIG9uZGV3b05sdTAxMiBmcm9tICcuLi8uLi9vbmRld28vbmx1L3Nlc3Npb24ucGInO1xuaW1wb3J0ICogYXMgb25kZXdvVDJzMDEzIGZyb20gJy4uLy4uL29uZGV3by90MnMvdGV4dC10by1zcGVlY2gucGInO1xuaW1wb3J0ICogYXMgb25kZXdvUzJ0MDE0IGZyb20gJy4uLy4uL29uZGV3by9zMnQvc3BlZWNoLXRvLXRleHQucGInO1xuaW1wb3J0IHsgR1JQQ19DT05WRVJTQVRJT05TX0NMSUVOVF9TRVRUSU5HUyB9IGZyb20gJy4vY29udmVyc2F0aW9uLnBiY29uZic7XG4vKipcbiAqIFNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIGZvciBvbmRld28uY3NpLkNvbnZlcnNhdGlvbnNcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAnYW55JyB9KVxuZXhwb3J0IGNsYXNzIENvbnZlcnNhdGlvbnNDbGllbnQge1xuICBwcml2YXRlIGNsaWVudDogR3JwY0NsaWVudDxhbnk+O1xuXG4gIC8qKlxuICAgKiBSYXcgUlBDIGltcGxlbWVudGF0aW9uIGZvciBlYWNoIHNlcnZpY2UgY2xpZW50IG1ldGhvZC5cbiAgICogVGhlIHJhdyBtZXRob2RzIHByb3ZpZGUgbW9yZSBjb250cm9sIG9uIHRoZSBpbmNvbWluZyBkYXRhIGFuZCBldmVudHMuIEUuZy4gdGhleSBjYW4gYmUgdXNlZnVsIHRvIHJlYWQgc3RhdHVzIGBPS2AgbWV0YWRhdGEuXG4gICAqIEF0dGVudGlvbjogdGhlc2UgbWV0aG9kcyBkbyBub3QgdGhyb3cgZXJyb3JzIHdoZW4gbm9uLXplcm8gc3RhdHVzIGNvZGVzIGFyZSByZWNlaXZlZC5cbiAgICovXG4gICRyYXcgPSB7XG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5jc2kuQ29udmVyc2F0aW9ucy9DcmVhdGVTMnNQaXBlbGluZVxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGdvb2dsZVByb3RvYnVmMDAyLkVtcHR5Pj5cbiAgICAgKi9cbiAgICBjcmVhdGVTMnNQaXBlbGluZTogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5TMnNQaXBlbGluZSxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PGdvb2dsZVByb3RvYnVmMDAyLkVtcHR5Pj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLmNzaS5Db252ZXJzYXRpb25zL0NyZWF0ZVMyc1BpcGVsaW5lJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uUzJzUGlwZWxpbmUsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IGdvb2dsZVByb3RvYnVmMDAyLkVtcHR5XG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28uY3NpLkNvbnZlcnNhdGlvbnMvR2V0UzJzUGlwZWxpbmVcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uUzJzUGlwZWxpbmU+PlxuICAgICAqL1xuICAgIGdldFMyc1BpcGVsaW5lOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLlMyc1BpcGVsaW5lSWQsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uUzJzUGlwZWxpbmU+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9vbmRld28uY3NpLkNvbnZlcnNhdGlvbnMvR2V0UzJzUGlwZWxpbmUnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5TMnNQaXBlbGluZUlkLFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uUzJzUGlwZWxpbmVcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5jc2kuQ29udmVyc2F0aW9ucy9VcGRhdGVTMnNQaXBlbGluZVxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGdvb2dsZVByb3RvYnVmMDAyLkVtcHR5Pj5cbiAgICAgKi9cbiAgICB1cGRhdGVTMnNQaXBlbGluZTogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5TMnNQaXBlbGluZSxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PGdvb2dsZVByb3RvYnVmMDAyLkVtcHR5Pj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLmNzaS5Db252ZXJzYXRpb25zL1VwZGF0ZVMyc1BpcGVsaW5lJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uUzJzUGlwZWxpbmUsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IGdvb2dsZVByb3RvYnVmMDAyLkVtcHR5XG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28uY3NpLkNvbnZlcnNhdGlvbnMvRGVsZXRlUzJzUGlwZWxpbmVcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxnb29nbGVQcm90b2J1ZjAwMi5FbXB0eT4+XG4gICAgICovXG4gICAgZGVsZXRlUzJzUGlwZWxpbmU6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uUzJzUGlwZWxpbmVJZCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PGdvb2dsZVByb3RvYnVmMDAyLkVtcHR5Pj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLmNzaS5Db252ZXJzYXRpb25zL0RlbGV0ZVMyc1BpcGVsaW5lJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiB0aGlzUHJvdG8uUzJzUGlwZWxpbmVJZCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogZ29vZ2xlUHJvdG9idWYwMDIuRW1wdHlcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5jc2kuQ29udmVyc2F0aW9ucy9MaXN0UzJzUGlwZWxpbmVzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkxpc3RTMnNQaXBlbGluZXNSZXNwb25zZT4+XG4gICAgICovXG4gICAgbGlzdFMyc1BpcGVsaW5lczogKFxuICAgICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5MaXN0UzJzUGlwZWxpbmVzUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5MaXN0UzJzUGlwZWxpbmVzUmVzcG9uc2U+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9vbmRld28uY3NpLkNvbnZlcnNhdGlvbnMvTGlzdFMyc1BpcGVsaW5lcycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkxpc3RTMnNQaXBlbGluZXNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uTGlzdFMyc1BpcGVsaW5lc1Jlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIEJpZGlyZWN0aW9uYWwgc3RyZWFtaW5nOiAvb25kZXdvLmNzaS5Db252ZXJzYXRpb25zL1Myc1N0cmVhbVxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5TMnNTdHJlYW1SZXNwb25zZT4+XG4gICAgICovXG4gICAgczJzU3RyZWFtOiAoXG4gICAgICByZXF1ZXN0RGF0YTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uUzJzU3RyZWFtUmVxdWVzdD4sXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uUzJzU3RyZWFtUmVzcG9uc2U+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS5iaWRpU3RyZWFtLFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5jc2kuQ29udmVyc2F0aW9ucy9TMnNTdHJlYW0nLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5TMnNTdHJlYW1SZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uUzJzU3RyZWFtUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL29uZGV3by5jc2kuQ29udmVyc2F0aW9ucy9DaGVja1Vwc3RyZWFtSGVhbHRoXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkNoZWNrVXBzdHJlYW1IZWFsdGhSZXNwb25zZT4+XG4gICAgICovXG4gICAgY2hlY2tVcHN0cmVhbUhlYWx0aDogKFxuICAgICAgcmVxdWVzdERhdGE6IGdvb2dsZVByb3RvYnVmMDAyLkVtcHR5LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkNoZWNrVXBzdHJlYW1IZWFsdGhSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL29uZGV3by5jc2kuQ29udmVyc2F0aW9ucy9DaGVja1Vwc3RyZWFtSGVhbHRoJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBnb29nbGVQcm90b2J1ZjAwMi5FbXB0eSxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLkNoZWNrVXBzdHJlYW1IZWFsdGhSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBTZXJ2ZXIgc3RyZWFtaW5nOiAvb25kZXdvLmNzaS5Db252ZXJzYXRpb25zL0dldENvbnRyb2xTdHJlYW1cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uQ29udHJvbFN0cmVhbVJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBnZXRDb250cm9sU3RyZWFtOiAoXG4gICAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLkNvbnRyb2xTdHJlYW1SZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8dGhpc1Byb3RvLkNvbnRyb2xTdHJlYW1SZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnNlcnZlclN0cmVhbSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9vbmRld28uY3NpLkNvbnZlcnNhdGlvbnMvR2V0Q29udHJvbFN0cmVhbScsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogdGhpc1Byb3RvLkNvbnRyb2xTdHJlYW1SZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiB0aGlzUHJvdG8uQ29udHJvbFN0cmVhbVJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9vbmRld28uY3NpLkNvbnZlcnNhdGlvbnMvU2V0Q29udHJvbFN0YXR1c1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PHRoaXNQcm90by5TZXRDb250cm9sU3RhdHVzUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIHNldENvbnRyb2xTdGF0dXM6IChcbiAgICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uU2V0Q29udHJvbFN0YXR1c1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDx0aGlzUHJvdG8uU2V0Q29udHJvbFN0YXR1c1Jlc3BvbnNlPj4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvb25kZXdvLmNzaS5Db252ZXJzYXRpb25zL1NldENvbnRyb2xTdGF0dXMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IHRoaXNQcm90by5TZXRDb250cm9sU3RhdHVzUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogdGhpc1Byb3RvLlNldENvbnRyb2xTdGF0dXNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoR1JQQ19DT05WRVJTQVRJT05TX0NMSUVOVF9TRVRUSU5HUykgc2V0dGluZ3M6IGFueSxcbiAgICBASW5qZWN0KEdSUENfQ0xJRU5UX0ZBQ1RPUlkpIGNsaWVudEZhY3Rvcnk6IEdycGNDbGllbnRGYWN0b3J5PGFueT4sXG4gICAgcHJpdmF0ZSBoYW5kbGVyOiBHcnBjSGFuZGxlclxuICApIHtcbiAgICB0aGlzLmNsaWVudCA9IGNsaWVudEZhY3RvcnkuY3JlYXRlQ2xpZW50KFxuICAgICAgJ29uZGV3by5jc2kuQ29udmVyc2F0aW9ucycsXG4gICAgICBzZXR0aW5nc1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5jc2kuQ29udmVyc2F0aW9ucy9DcmVhdGVTMnNQaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGdvb2dsZVByb3RvYnVmMDAyLkVtcHR5PlxuICAgKi9cbiAgY3JlYXRlUzJzUGlwZWxpbmUoXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5TMnNQaXBlbGluZSxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxnb29nbGVQcm90b2J1ZjAwMi5FbXB0eT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5jcmVhdGVTMnNQaXBlbGluZShyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28uY3NpLkNvbnZlcnNhdGlvbnMvR2V0UzJzUGlwZWxpbmVcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx0aGlzUHJvdG8uUzJzUGlwZWxpbmU+XG4gICAqL1xuICBnZXRTMnNQaXBlbGluZShcbiAgICByZXF1ZXN0RGF0YTogdGhpc1Byb3RvLlMyc1BpcGVsaW5lSWQsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLlMyc1BpcGVsaW5lPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmdldFMyc1BpcGVsaW5lKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5jc2kuQ29udmVyc2F0aW9ucy9VcGRhdGVTMnNQaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGdvb2dsZVByb3RvYnVmMDAyLkVtcHR5PlxuICAgKi9cbiAgdXBkYXRlUzJzUGlwZWxpbmUoXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5TMnNQaXBlbGluZSxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxnb29nbGVQcm90b2J1ZjAwMi5FbXB0eT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC51cGRhdGVTMnNQaXBlbGluZShyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28uY3NpLkNvbnZlcnNhdGlvbnMvRGVsZXRlUzJzUGlwZWxpbmVcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxnb29nbGVQcm90b2J1ZjAwMi5FbXB0eT5cbiAgICovXG4gIGRlbGV0ZVMyc1BpcGVsaW5lKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uUzJzUGlwZWxpbmVJZCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxnb29nbGVQcm90b2J1ZjAwMi5FbXB0eT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5kZWxldGVTMnNQaXBlbGluZShyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9vbmRld28uY3NpLkNvbnZlcnNhdGlvbnMvTGlzdFMyc1BpcGVsaW5lc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5MaXN0UzJzUGlwZWxpbmVzUmVzcG9uc2U+XG4gICAqL1xuICBsaXN0UzJzUGlwZWxpbmVzKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uTGlzdFMyc1BpcGVsaW5lc1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLkxpc3RTMnNQaXBlbGluZXNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0UzJzUGlwZWxpbmVzKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogQmlkaXJlY3Rpb25hbCBzdHJlYW1pbmcgQC9vbmRld28uY3NpLkNvbnZlcnNhdGlvbnMvUzJzU3RyZWFtXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLlMyc1N0cmVhbVJlc3BvbnNlPlxuICAgKi9cbiAgczJzU3RyZWFtKFxuICAgIHJlcXVlc3REYXRhOiBPYnNlcnZhYmxlPHRoaXNQcm90by5TMnNTdHJlYW1SZXF1ZXN0PixcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uUzJzU3RyZWFtUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuczJzU3RyZWFtKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5jc2kuQ29udmVyc2F0aW9ucy9DaGVja1Vwc3RyZWFtSGVhbHRoXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLkNoZWNrVXBzdHJlYW1IZWFsdGhSZXNwb25zZT5cbiAgICovXG4gIGNoZWNrVXBzdHJlYW1IZWFsdGgoXG4gICAgcmVxdWVzdERhdGE6IGdvb2dsZVByb3RvYnVmMDAyLkVtcHR5LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPHRoaXNQcm90by5DaGVja1Vwc3RyZWFtSGVhbHRoUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuY2hlY2tVcHN0cmVhbUhlYWx0aChyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcnZlciBzdHJlYW1pbmcgQC9vbmRld28uY3NpLkNvbnZlcnNhdGlvbnMvR2V0Q29udHJvbFN0cmVhbVxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHRoaXNQcm90by5Db250cm9sU3RyZWFtUmVzcG9uc2U+XG4gICAqL1xuICBnZXRDb250cm9sU3RyZWFtKFxuICAgIHJlcXVlc3REYXRhOiB0aGlzUHJvdG8uQ29udHJvbFN0cmVhbVJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8dGhpc1Byb3RvLkNvbnRyb2xTdHJlYW1SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5nZXRDb250cm9sU3RyZWFtKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL29uZGV3by5jc2kuQ29udmVyc2F0aW9ucy9TZXRDb250cm9sU3RhdHVzXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dGhpc1Byb3RvLlNldENvbnRyb2xTdGF0dXNSZXNwb25zZT5cbiAgICovXG4gIHNldENvbnRyb2xTdGF0dXMoXG4gICAgcmVxdWVzdERhdGE6IHRoaXNQcm90by5TZXRDb250cm9sU3RhdHVzUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTx0aGlzUHJvdG8uU2V0Q29udHJvbFN0YXR1c1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLnNldENvbnRyb2xTdGF0dXMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxufVxuIl19