@aneoconsultingfr/armonik.api.angular 3.11.0-edge.89.ab31d7c → 3.11.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 (55) hide show
  1. package/README.md +1 -1
  2. package/esm2022/lib/generated/applications-common.pb.mjs +22 -618
  3. package/esm2022/lib/generated/applications-fields.pb.mjs +231 -0
  4. package/esm2022/lib/generated/applications-filters.pb.mjs +349 -0
  5. package/esm2022/lib/generated/applications-service.pb.mjs +1 -1
  6. package/esm2022/lib/generated/applications-service.pbsc.mjs +6 -36
  7. package/esm2022/lib/generated/events-common.pb.mjs +19 -3
  8. package/esm2022/lib/generated/filters-common.pb.mjs +642 -0
  9. package/esm2022/lib/generated/partitions-common.pb.mjs +25 -433
  10. package/esm2022/lib/generated/partitions-fields.pb.mjs +233 -0
  11. package/esm2022/lib/generated/partitions-filters.pb.mjs +431 -0
  12. package/esm2022/lib/generated/partitions-service.pb.mjs +1 -1
  13. package/esm2022/lib/generated/partitions-service.pbsc.mjs +10 -10
  14. package/esm2022/lib/generated/results-common.pb.mjs +33 -565
  15. package/esm2022/lib/generated/results-fields.pb.mjs +234 -0
  16. package/esm2022/lib/generated/results-filters.pb.mjs +546 -0
  17. package/esm2022/lib/generated/results-service.pb.mjs +1 -1
  18. package/esm2022/lib/generated/results-service.pbsc.mjs +39 -39
  19. package/esm2022/lib/generated/sessions-common.pb.mjs +104 -822
  20. package/esm2022/lib/generated/sessions-fields.pb.mjs +504 -0
  21. package/esm2022/lib/generated/sessions-filters.pb.mjs +602 -0
  22. package/esm2022/lib/generated/sessions-service.pb.mjs +1 -1
  23. package/esm2022/lib/generated/sessions-service.pbsc.mjs +24 -24
  24. package/esm2022/lib/generated/tasks-common.pb.mjs +166 -900
  25. package/esm2022/lib/generated/tasks-fields.pb.mjs +513 -0
  26. package/esm2022/lib/generated/tasks-filters.pb.mjs +602 -0
  27. package/esm2022/lib/generated/tasks-service.pb.mjs +1 -1
  28. package/esm2022/lib/generated/tasks-service.pbsc.mjs +36 -36
  29. package/esm2022/lib/index.mjs +22 -12
  30. package/fesm2022/aneoconsultingfr-armonik.api.angular.mjs +11857 -10006
  31. package/fesm2022/aneoconsultingfr-armonik.api.angular.mjs.map +1 -1
  32. package/lib/generated/applications-common.pb.d.ts +11 -388
  33. package/lib/generated/applications-fields.pb.d.ts +153 -0
  34. package/lib/generated/applications-filters.pb.d.ts +222 -0
  35. package/lib/generated/applications-service.pbsc.d.ts +5 -21
  36. package/lib/generated/events-common.pb.d.ts +5 -0
  37. package/lib/generated/filters-common.pb.d.ts +408 -0
  38. package/lib/generated/partitions-common.pb.d.ts +15 -260
  39. package/lib/generated/partitions-fields.pb.d.ts +155 -0
  40. package/lib/generated/partitions-filters.pb.d.ts +240 -0
  41. package/lib/generated/partitions-service.pbsc.d.ts +9 -9
  42. package/lib/generated/results-common.pb.d.ts +24 -295
  43. package/lib/generated/results-fields.pb.d.ts +156 -0
  44. package/lib/generated/results-filters.pb.d.ts +315 -0
  45. package/lib/generated/results-service.pbsc.d.ts +38 -38
  46. package/lib/generated/sessions-common.pb.d.ts +76 -489
  47. package/lib/generated/sessions-fields.pb.d.ts +318 -0
  48. package/lib/generated/sessions-filters.pb.d.ts +327 -0
  49. package/lib/generated/sessions-service.pbsc.d.ts +19 -19
  50. package/lib/generated/tasks-common.pb.d.ts +139 -561
  51. package/lib/generated/tasks-fields.pb.d.ts +327 -0
  52. package/lib/generated/tasks-filters.pb.d.ts +327 -0
  53. package/lib/generated/tasks-service.pbsc.d.ts +31 -31
  54. package/lib/index.d.ts +21 -11
  55. package/package.json +2 -2
@@ -0,0 +1,504 @@
1
+ import { BinaryReader, BinaryWriter } from 'google-protobuf';
2
+ export var SessionRawEnumField;
3
+ (function (SessionRawEnumField) {
4
+ SessionRawEnumField[SessionRawEnumField["SESSION_RAW_ENUM_FIELD_UNSPECIFIED"] = 0] = "SESSION_RAW_ENUM_FIELD_UNSPECIFIED";
5
+ SessionRawEnumField[SessionRawEnumField["SESSION_RAW_ENUM_FIELD_SESSION_ID"] = 1] = "SESSION_RAW_ENUM_FIELD_SESSION_ID";
6
+ SessionRawEnumField[SessionRawEnumField["SESSION_RAW_ENUM_FIELD_STATUS"] = 2] = "SESSION_RAW_ENUM_FIELD_STATUS";
7
+ SessionRawEnumField[SessionRawEnumField["SESSION_RAW_ENUM_FIELD_PARTITION_IDS"] = 3] = "SESSION_RAW_ENUM_FIELD_PARTITION_IDS";
8
+ SessionRawEnumField[SessionRawEnumField["SESSION_RAW_ENUM_FIELD_OPTIONS"] = 4] = "SESSION_RAW_ENUM_FIELD_OPTIONS";
9
+ SessionRawEnumField[SessionRawEnumField["SESSION_RAW_ENUM_FIELD_CREATED_AT"] = 5] = "SESSION_RAW_ENUM_FIELD_CREATED_AT";
10
+ SessionRawEnumField[SessionRawEnumField["SESSION_RAW_ENUM_FIELD_CANCELLED_AT"] = 6] = "SESSION_RAW_ENUM_FIELD_CANCELLED_AT";
11
+ SessionRawEnumField[SessionRawEnumField["SESSION_RAW_ENUM_FIELD_DURATION"] = 7] = "SESSION_RAW_ENUM_FIELD_DURATION";
12
+ })(SessionRawEnumField || (SessionRawEnumField = {}));
13
+ export var TaskOptionEnumField;
14
+ (function (TaskOptionEnumField) {
15
+ TaskOptionEnumField[TaskOptionEnumField["TASK_OPTION_ENUM_FIELD_UNSPECIFIED"] = 0] = "TASK_OPTION_ENUM_FIELD_UNSPECIFIED";
16
+ TaskOptionEnumField[TaskOptionEnumField["TASK_OPTION_ENUM_FIELD_MAX_DURATION"] = 1] = "TASK_OPTION_ENUM_FIELD_MAX_DURATION";
17
+ TaskOptionEnumField[TaskOptionEnumField["TASK_OPTION_ENUM_FIELD_MAX_RETRIES"] = 2] = "TASK_OPTION_ENUM_FIELD_MAX_RETRIES";
18
+ TaskOptionEnumField[TaskOptionEnumField["TASK_OPTION_ENUM_FIELD_PRIORITY"] = 3] = "TASK_OPTION_ENUM_FIELD_PRIORITY";
19
+ TaskOptionEnumField[TaskOptionEnumField["TASK_OPTION_ENUM_FIELD_PARTITION_ID"] = 4] = "TASK_OPTION_ENUM_FIELD_PARTITION_ID";
20
+ TaskOptionEnumField[TaskOptionEnumField["TASK_OPTION_ENUM_FIELD_APPLICATION_NAME"] = 5] = "TASK_OPTION_ENUM_FIELD_APPLICATION_NAME";
21
+ TaskOptionEnumField[TaskOptionEnumField["TASK_OPTION_ENUM_FIELD_APPLICATION_VERSION"] = 6] = "TASK_OPTION_ENUM_FIELD_APPLICATION_VERSION";
22
+ TaskOptionEnumField[TaskOptionEnumField["TASK_OPTION_ENUM_FIELD_APPLICATION_NAMESPACE"] = 7] = "TASK_OPTION_ENUM_FIELD_APPLICATION_NAMESPACE";
23
+ TaskOptionEnumField[TaskOptionEnumField["TASK_OPTION_ENUM_FIELD_APPLICATION_SERVICE"] = 8] = "TASK_OPTION_ENUM_FIELD_APPLICATION_SERVICE";
24
+ TaskOptionEnumField[TaskOptionEnumField["TASK_OPTION_ENUM_FIELD_ENGINE_TYPE"] = 9] = "TASK_OPTION_ENUM_FIELD_ENGINE_TYPE";
25
+ })(TaskOptionEnumField || (TaskOptionEnumField = {}));
26
+ /**
27
+ * Message implementation for armonik.api.grpc.v1.sessions.SessionRawField
28
+ */
29
+ export class SessionRawField {
30
+ static { this.id = 'armonik.api.grpc.v1.sessions.SessionRawField'; }
31
+ /**
32
+ * Deserialize binary data to message
33
+ * @param instance message instance
34
+ */
35
+ static deserializeBinary(bytes) {
36
+ const instance = new SessionRawField();
37
+ SessionRawField.deserializeBinaryFromReader(instance, new BinaryReader(bytes));
38
+ return instance;
39
+ }
40
+ /**
41
+ * Check all the properties and set default protobuf values if necessary
42
+ * @param _instance message instance
43
+ */
44
+ static refineValues(_instance) {
45
+ _instance.field = _instance.field || 0;
46
+ }
47
+ /**
48
+ * Deserializes / reads binary message into message instance using provided binary reader
49
+ * @param _instance message instance
50
+ * @param _reader binary reader instance
51
+ */
52
+ static deserializeBinaryFromReader(_instance, _reader) {
53
+ while (_reader.nextField()) {
54
+ if (_reader.isEndGroup())
55
+ break;
56
+ switch (_reader.getFieldNumber()) {
57
+ case 1:
58
+ _instance.field = _reader.readEnum();
59
+ break;
60
+ default:
61
+ _reader.skipField();
62
+ }
63
+ }
64
+ SessionRawField.refineValues(_instance);
65
+ }
66
+ /**
67
+ * Serializes a message to binary format using provided binary reader
68
+ * @param _instance message instance
69
+ * @param _writer binary writer instance
70
+ */
71
+ static serializeBinaryToWriter(_instance, _writer) {
72
+ if (_instance.field) {
73
+ _writer.writeEnum(1, _instance.field);
74
+ }
75
+ }
76
+ /**
77
+ * Message constructor. Initializes the properties and applies default Protobuf values if necessary
78
+ * @param _value initial values object or instance of SessionRawField to deeply clone from
79
+ */
80
+ constructor(_value) {
81
+ _value = _value || {};
82
+ this.field = _value.field;
83
+ SessionRawField.refineValues(this);
84
+ }
85
+ get field() {
86
+ return this._field;
87
+ }
88
+ set field(value) {
89
+ this._field = value;
90
+ }
91
+ /**
92
+ * Serialize message to binary data
93
+ * @param instance message instance
94
+ */
95
+ serializeBinary() {
96
+ const writer = new BinaryWriter();
97
+ SessionRawField.serializeBinaryToWriter(this, writer);
98
+ return writer.getResultBuffer();
99
+ }
100
+ /**
101
+ * Cast message to standard JavaScript object (all non-primitive values are deeply cloned)
102
+ */
103
+ toObject() {
104
+ return {
105
+ field: this.field
106
+ };
107
+ }
108
+ /**
109
+ * Convenience method to support JSON.stringify(message), replicates the structure of toObject()
110
+ */
111
+ toJSON() {
112
+ return this.toObject();
113
+ }
114
+ /**
115
+ * Cast message to JSON using protobuf JSON notation: https://developers.google.com/protocol-buffers/docs/proto3#json
116
+ * Attention: output differs from toObject() e.g. enums are represented as names and not as numbers, Timestamp is an ISO Date string format etc.
117
+ * If the message itself or some of descendant messages is google.protobuf.Any, you MUST provide a message pool as options. If not, the messagePool is not required
118
+ */
119
+ toProtobufJSON(
120
+ // @ts-ignore
121
+ options) {
122
+ return {
123
+ field: SessionRawEnumField[this.field === null || this.field === undefined ? 0 : this.field]
124
+ };
125
+ }
126
+ }
127
+ /**
128
+ * Message implementation for armonik.api.grpc.v1.sessions.TaskOptionField
129
+ */
130
+ export class TaskOptionField {
131
+ static { this.id = 'armonik.api.grpc.v1.sessions.TaskOptionField'; }
132
+ /**
133
+ * Deserialize binary data to message
134
+ * @param instance message instance
135
+ */
136
+ static deserializeBinary(bytes) {
137
+ const instance = new TaskOptionField();
138
+ TaskOptionField.deserializeBinaryFromReader(instance, new BinaryReader(bytes));
139
+ return instance;
140
+ }
141
+ /**
142
+ * Check all the properties and set default protobuf values if necessary
143
+ * @param _instance message instance
144
+ */
145
+ static refineValues(_instance) {
146
+ _instance.field = _instance.field || 0;
147
+ }
148
+ /**
149
+ * Deserializes / reads binary message into message instance using provided binary reader
150
+ * @param _instance message instance
151
+ * @param _reader binary reader instance
152
+ */
153
+ static deserializeBinaryFromReader(_instance, _reader) {
154
+ while (_reader.nextField()) {
155
+ if (_reader.isEndGroup())
156
+ break;
157
+ switch (_reader.getFieldNumber()) {
158
+ case 1:
159
+ _instance.field = _reader.readEnum();
160
+ break;
161
+ default:
162
+ _reader.skipField();
163
+ }
164
+ }
165
+ TaskOptionField.refineValues(_instance);
166
+ }
167
+ /**
168
+ * Serializes a message to binary format using provided binary reader
169
+ * @param _instance message instance
170
+ * @param _writer binary writer instance
171
+ */
172
+ static serializeBinaryToWriter(_instance, _writer) {
173
+ if (_instance.field) {
174
+ _writer.writeEnum(1, _instance.field);
175
+ }
176
+ }
177
+ /**
178
+ * Message constructor. Initializes the properties and applies default Protobuf values if necessary
179
+ * @param _value initial values object or instance of TaskOptionField to deeply clone from
180
+ */
181
+ constructor(_value) {
182
+ _value = _value || {};
183
+ this.field = _value.field;
184
+ TaskOptionField.refineValues(this);
185
+ }
186
+ get field() {
187
+ return this._field;
188
+ }
189
+ set field(value) {
190
+ this._field = value;
191
+ }
192
+ /**
193
+ * Serialize message to binary data
194
+ * @param instance message instance
195
+ */
196
+ serializeBinary() {
197
+ const writer = new BinaryWriter();
198
+ TaskOptionField.serializeBinaryToWriter(this, writer);
199
+ return writer.getResultBuffer();
200
+ }
201
+ /**
202
+ * Cast message to standard JavaScript object (all non-primitive values are deeply cloned)
203
+ */
204
+ toObject() {
205
+ return {
206
+ field: this.field
207
+ };
208
+ }
209
+ /**
210
+ * Convenience method to support JSON.stringify(message), replicates the structure of toObject()
211
+ */
212
+ toJSON() {
213
+ return this.toObject();
214
+ }
215
+ /**
216
+ * Cast message to JSON using protobuf JSON notation: https://developers.google.com/protocol-buffers/docs/proto3#json
217
+ * Attention: output differs from toObject() e.g. enums are represented as names and not as numbers, Timestamp is an ISO Date string format etc.
218
+ * If the message itself or some of descendant messages is google.protobuf.Any, you MUST provide a message pool as options. If not, the messagePool is not required
219
+ */
220
+ toProtobufJSON(
221
+ // @ts-ignore
222
+ options) {
223
+ return {
224
+ field: TaskOptionEnumField[this.field === null || this.field === undefined ? 0 : this.field]
225
+ };
226
+ }
227
+ }
228
+ /**
229
+ * Message implementation for armonik.api.grpc.v1.sessions.TaskOptionGenericField
230
+ */
231
+ export class TaskOptionGenericField {
232
+ static { this.id = 'armonik.api.grpc.v1.sessions.TaskOptionGenericField'; }
233
+ /**
234
+ * Deserialize binary data to message
235
+ * @param instance message instance
236
+ */
237
+ static deserializeBinary(bytes) {
238
+ const instance = new TaskOptionGenericField();
239
+ TaskOptionGenericField.deserializeBinaryFromReader(instance, new BinaryReader(bytes));
240
+ return instance;
241
+ }
242
+ /**
243
+ * Check all the properties and set default protobuf values if necessary
244
+ * @param _instance message instance
245
+ */
246
+ static refineValues(_instance) {
247
+ _instance.field = _instance.field || '';
248
+ }
249
+ /**
250
+ * Deserializes / reads binary message into message instance using provided binary reader
251
+ * @param _instance message instance
252
+ * @param _reader binary reader instance
253
+ */
254
+ static deserializeBinaryFromReader(_instance, _reader) {
255
+ while (_reader.nextField()) {
256
+ if (_reader.isEndGroup())
257
+ break;
258
+ switch (_reader.getFieldNumber()) {
259
+ case 1:
260
+ _instance.field = _reader.readString();
261
+ break;
262
+ default:
263
+ _reader.skipField();
264
+ }
265
+ }
266
+ TaskOptionGenericField.refineValues(_instance);
267
+ }
268
+ /**
269
+ * Serializes a message to binary format using provided binary reader
270
+ * @param _instance message instance
271
+ * @param _writer binary writer instance
272
+ */
273
+ static serializeBinaryToWriter(_instance, _writer) {
274
+ if (_instance.field) {
275
+ _writer.writeString(1, _instance.field);
276
+ }
277
+ }
278
+ /**
279
+ * Message constructor. Initializes the properties and applies default Protobuf values if necessary
280
+ * @param _value initial values object or instance of TaskOptionGenericField to deeply clone from
281
+ */
282
+ constructor(_value) {
283
+ _value = _value || {};
284
+ this.field = _value.field;
285
+ TaskOptionGenericField.refineValues(this);
286
+ }
287
+ get field() {
288
+ return this._field;
289
+ }
290
+ set field(value) {
291
+ this._field = value;
292
+ }
293
+ /**
294
+ * Serialize message to binary data
295
+ * @param instance message instance
296
+ */
297
+ serializeBinary() {
298
+ const writer = new BinaryWriter();
299
+ TaskOptionGenericField.serializeBinaryToWriter(this, writer);
300
+ return writer.getResultBuffer();
301
+ }
302
+ /**
303
+ * Cast message to standard JavaScript object (all non-primitive values are deeply cloned)
304
+ */
305
+ toObject() {
306
+ return {
307
+ field: this.field
308
+ };
309
+ }
310
+ /**
311
+ * Convenience method to support JSON.stringify(message), replicates the structure of toObject()
312
+ */
313
+ toJSON() {
314
+ return this.toObject();
315
+ }
316
+ /**
317
+ * Cast message to JSON using protobuf JSON notation: https://developers.google.com/protocol-buffers/docs/proto3#json
318
+ * Attention: output differs from toObject() e.g. enums are represented as names and not as numbers, Timestamp is an ISO Date string format etc.
319
+ * If the message itself or some of descendant messages is google.protobuf.Any, you MUST provide a message pool as options. If not, the messagePool is not required
320
+ */
321
+ toProtobufJSON(
322
+ // @ts-ignore
323
+ options) {
324
+ return {
325
+ field: this.field
326
+ };
327
+ }
328
+ }
329
+ /**
330
+ * Message implementation for armonik.api.grpc.v1.sessions.SessionField
331
+ */
332
+ export class SessionField {
333
+ static { this.id = 'armonik.api.grpc.v1.sessions.SessionField'; }
334
+ /**
335
+ * Deserialize binary data to message
336
+ * @param instance message instance
337
+ */
338
+ static deserializeBinary(bytes) {
339
+ const instance = new SessionField();
340
+ SessionField.deserializeBinaryFromReader(instance, new BinaryReader(bytes));
341
+ return instance;
342
+ }
343
+ /**
344
+ * Check all the properties and set default protobuf values if necessary
345
+ * @param _instance message instance
346
+ */
347
+ static refineValues(_instance) { }
348
+ /**
349
+ * Deserializes / reads binary message into message instance using provided binary reader
350
+ * @param _instance message instance
351
+ * @param _reader binary reader instance
352
+ */
353
+ static deserializeBinaryFromReader(_instance, _reader) {
354
+ while (_reader.nextField()) {
355
+ if (_reader.isEndGroup())
356
+ break;
357
+ switch (_reader.getFieldNumber()) {
358
+ case 1:
359
+ _instance.sessionRawField = new SessionRawField();
360
+ _reader.readMessage(_instance.sessionRawField, SessionRawField.deserializeBinaryFromReader);
361
+ break;
362
+ case 2:
363
+ _instance.taskOptionField = new TaskOptionField();
364
+ _reader.readMessage(_instance.taskOptionField, TaskOptionField.deserializeBinaryFromReader);
365
+ break;
366
+ case 3:
367
+ _instance.taskOptionGenericField = new TaskOptionGenericField();
368
+ _reader.readMessage(_instance.taskOptionGenericField, TaskOptionGenericField.deserializeBinaryFromReader);
369
+ break;
370
+ default:
371
+ _reader.skipField();
372
+ }
373
+ }
374
+ SessionField.refineValues(_instance);
375
+ }
376
+ /**
377
+ * Serializes a message to binary format using provided binary reader
378
+ * @param _instance message instance
379
+ * @param _writer binary writer instance
380
+ */
381
+ static serializeBinaryToWriter(_instance, _writer) {
382
+ if (_instance.sessionRawField) {
383
+ _writer.writeMessage(1, _instance.sessionRawField, SessionRawField.serializeBinaryToWriter);
384
+ }
385
+ if (_instance.taskOptionField) {
386
+ _writer.writeMessage(2, _instance.taskOptionField, TaskOptionField.serializeBinaryToWriter);
387
+ }
388
+ if (_instance.taskOptionGenericField) {
389
+ _writer.writeMessage(3, _instance.taskOptionGenericField, TaskOptionGenericField.serializeBinaryToWriter);
390
+ }
391
+ }
392
+ /**
393
+ * Message constructor. Initializes the properties and applies default Protobuf values if necessary
394
+ * @param _value initial values object or instance of SessionField to deeply clone from
395
+ */
396
+ constructor(_value) {
397
+ this._field = SessionField.FieldCase.none;
398
+ _value = _value || {};
399
+ this.sessionRawField = _value.sessionRawField
400
+ ? new SessionRawField(_value.sessionRawField)
401
+ : undefined;
402
+ this.taskOptionField = _value.taskOptionField
403
+ ? new TaskOptionField(_value.taskOptionField)
404
+ : undefined;
405
+ this.taskOptionGenericField = _value.taskOptionGenericField
406
+ ? new TaskOptionGenericField(_value.taskOptionGenericField)
407
+ : undefined;
408
+ SessionField.refineValues(this);
409
+ }
410
+ get sessionRawField() {
411
+ return this._sessionRawField;
412
+ }
413
+ set sessionRawField(value) {
414
+ if (value !== undefined && value !== null) {
415
+ this._taskOptionField = this._taskOptionGenericField = undefined;
416
+ this._field = SessionField.FieldCase.sessionRawField;
417
+ }
418
+ this._sessionRawField = value;
419
+ }
420
+ get taskOptionField() {
421
+ return this._taskOptionField;
422
+ }
423
+ set taskOptionField(value) {
424
+ if (value !== undefined && value !== null) {
425
+ this._sessionRawField = this._taskOptionGenericField = undefined;
426
+ this._field = SessionField.FieldCase.taskOptionField;
427
+ }
428
+ this._taskOptionField = value;
429
+ }
430
+ get taskOptionGenericField() {
431
+ return this._taskOptionGenericField;
432
+ }
433
+ set taskOptionGenericField(value) {
434
+ if (value !== undefined && value !== null) {
435
+ this._sessionRawField = this._taskOptionField = undefined;
436
+ this._field = SessionField.FieldCase.taskOptionGenericField;
437
+ }
438
+ this._taskOptionGenericField = value;
439
+ }
440
+ get field() {
441
+ return this._field;
442
+ }
443
+ /**
444
+ * Serialize message to binary data
445
+ * @param instance message instance
446
+ */
447
+ serializeBinary() {
448
+ const writer = new BinaryWriter();
449
+ SessionField.serializeBinaryToWriter(this, writer);
450
+ return writer.getResultBuffer();
451
+ }
452
+ /**
453
+ * Cast message to standard JavaScript object (all non-primitive values are deeply cloned)
454
+ */
455
+ toObject() {
456
+ return {
457
+ sessionRawField: this.sessionRawField
458
+ ? this.sessionRawField.toObject()
459
+ : undefined,
460
+ taskOptionField: this.taskOptionField
461
+ ? this.taskOptionField.toObject()
462
+ : undefined,
463
+ taskOptionGenericField: this.taskOptionGenericField
464
+ ? this.taskOptionGenericField.toObject()
465
+ : undefined
466
+ };
467
+ }
468
+ /**
469
+ * Convenience method to support JSON.stringify(message), replicates the structure of toObject()
470
+ */
471
+ toJSON() {
472
+ return this.toObject();
473
+ }
474
+ /**
475
+ * Cast message to JSON using protobuf JSON notation: https://developers.google.com/protocol-buffers/docs/proto3#json
476
+ * Attention: output differs from toObject() e.g. enums are represented as names and not as numbers, Timestamp is an ISO Date string format etc.
477
+ * If the message itself or some of descendant messages is google.protobuf.Any, you MUST provide a message pool as options. If not, the messagePool is not required
478
+ */
479
+ toProtobufJSON(
480
+ // @ts-ignore
481
+ options) {
482
+ return {
483
+ sessionRawField: this.sessionRawField
484
+ ? this.sessionRawField.toProtobufJSON(options)
485
+ : null,
486
+ taskOptionField: this.taskOptionField
487
+ ? this.taskOptionField.toProtobufJSON(options)
488
+ : null,
489
+ taskOptionGenericField: this.taskOptionGenericField
490
+ ? this.taskOptionGenericField.toProtobufJSON(options)
491
+ : null
492
+ };
493
+ }
494
+ }
495
+ (function (SessionField) {
496
+ let FieldCase;
497
+ (function (FieldCase) {
498
+ FieldCase[FieldCase["none"] = 0] = "none";
499
+ FieldCase[FieldCase["sessionRawField"] = 1] = "sessionRawField";
500
+ FieldCase[FieldCase["taskOptionField"] = 2] = "taskOptionField";
501
+ FieldCase[FieldCase["taskOptionGenericField"] = 3] = "taskOptionGenericField";
502
+ })(FieldCase = SessionField.FieldCase || (SessionField.FieldCase = {}));
503
+ })(SessionField || (SessionField = {}));
504
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbnMtZmllbGRzLnBiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5lb2NvbnN1bHRpbmdmci9hcm1vbmlrLmFwaS5hbmd1bGFyL3NyYy9saWIvZ2VuZXJhdGVkL3Nlc3Npb25zLWZpZWxkcy5wYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBYyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pFLE1BQU0sQ0FBTixJQUFZLG1CQVNYO0FBVEQsV0FBWSxtQkFBbUI7SUFDN0IseUhBQXNDLENBQUE7SUFDdEMsdUhBQXFDLENBQUE7SUFDckMsK0dBQWlDLENBQUE7SUFDakMsNkhBQXdDLENBQUE7SUFDeEMsaUhBQWtDLENBQUE7SUFDbEMsdUhBQXFDLENBQUE7SUFDckMsMkhBQXVDLENBQUE7SUFDdkMsbUhBQW1DLENBQUE7QUFDckMsQ0FBQyxFQVRXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFTOUI7QUFDRCxNQUFNLENBQU4sSUFBWSxtQkFXWDtBQVhELFdBQVksbUJBQW1CO0lBQzdCLHlIQUFzQyxDQUFBO0lBQ3RDLDJIQUF1QyxDQUFBO0lBQ3ZDLHlIQUFzQyxDQUFBO0lBQ3RDLG1IQUFtQyxDQUFBO0lBQ25DLDJIQUF1QyxDQUFBO0lBQ3ZDLG1JQUEyQyxDQUFBO0lBQzNDLHlJQUE4QyxDQUFBO0lBQzlDLDZJQUFnRCxDQUFBO0lBQ2hELHlJQUE4QyxDQUFBO0lBQzlDLHlIQUFzQyxDQUFBO0FBQ3hDLENBQUMsRUFYVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBVzlCO0FBQ0Q7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTthQUNuQixPQUFFLEdBQUcsOENBQThDLENBQUM7SUFFM0Q7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQWlCO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDdkMs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QyxFQXhCYSxZQUFZLEtBQVosWUFBWSxRQXdCekIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuLyogZXNsaW50LWRpc2FibGUgKi9cbi8vIEB0cy1ub2NoZWNrXG4vL1xuLy8gVEhJUyBJUyBBIEdFTkVSQVRFRCBGSUxFXG4vLyBETyBOT1QgTU9ESUZZIElUISBZT1VSIENIQU5HRVMgV0lMTCBCRSBMT1NUXG5pbXBvcnQge1xuICBHcnBjTWVzc2FnZSxcbiAgUmVjdXJzaXZlUGFydGlhbCxcbiAgVG9Qcm90b2J1ZkpTT05PcHRpb25zXG59IGZyb20gJ0BuZ3gtZ3JwYy9jb21tb24nO1xuaW1wb3J0IHsgQmluYXJ5UmVhZGVyLCBCaW5hcnlXcml0ZXIsIEJ5dGVTb3VyY2UgfSBmcm9tICdnb29nbGUtcHJvdG9idWYnO1xuZXhwb3J0IGVudW0gU2Vzc2lvblJhd0VudW1GaWVsZCB7XG4gIFNFU1NJT05fUkFXX0VOVU1fRklFTERfVU5TUEVDSUZJRUQgPSAwLFxuICBTRVNTSU9OX1JBV19FTlVNX0ZJRUxEX1NFU1NJT05fSUQgPSAxLFxuICBTRVNTSU9OX1JBV19FTlVNX0ZJRUxEX1NUQVRVUyA9IDIsXG4gIFNFU1NJT05fUkFXX0VOVU1fRklFTERfUEFSVElUSU9OX0lEUyA9IDMsXG4gIFNFU1NJT05fUkFXX0VOVU1fRklFTERfT1BUSU9OUyA9IDQsXG4gIFNFU1NJT05fUkFXX0VOVU1fRklFTERfQ1JFQVRFRF9BVCA9IDUsXG4gIFNFU1NJT05fUkFXX0VOVU1fRklFTERfQ0FOQ0VMTEVEX0FUID0gNixcbiAgU0VTU0lPTl9SQVdfRU5VTV9GSUVMRF9EVVJBVElPTiA9IDdcbn1cbmV4cG9ydCBlbnVtIFRhc2tPcHRpb25FbnVtRmllbGQge1xuICBUQVNLX09QVElPTl9FTlVNX0ZJRUxEX1VOU1BFQ0lGSUVEID0gMCxcbiAgVEFTS19PUFRJT05fRU5VTV9GSUVMRF9NQVhfRFVSQVRJT04gPSAxLFxuICBUQVNLX09QVElPTl9FTlVNX0ZJRUxEX01BWF9SRVRSSUVTID0gMixcbiAgVEFTS19PUFRJT05fRU5VTV9GSUVMRF9QUklPUklUWSA9IDMsXG4gIFRBU0tfT1BUSU9OX0VOVU1fRklFTERfUEFSVElUSU9OX0lEID0gNCxcbiAgVEFTS19PUFRJT05fRU5VTV9GSUVMRF9BUFBMSUNBVElPTl9OQU1FID0gNSxcbiAgVEFTS19PUFRJT05fRU5VTV9GSUVMRF9BUFBMSUNBVElPTl9WRVJTSU9OID0gNixcbiAgVEFTS19PUFRJT05fRU5VTV9GSUVMRF9BUFBMSUNBVElPTl9OQU1FU1BBQ0UgPSA3LFxuICBUQVNLX09QVElPTl9FTlVNX0ZJRUxEX0FQUExJQ0FUSU9OX1NFUlZJQ0UgPSA4LFxuICBUQVNLX09QVElPTl9FTlVNX0ZJRUxEX0VOR0lORV9UWVBFID0gOVxufVxuLyoqXG4gKiBNZXNzYWdlIGltcGxlbWVudGF0aW9uIGZvciBhcm1vbmlrLmFwaS5ncnBjLnYxLnNlc3Npb25zLlNlc3Npb25SYXdGaWVsZFxuICovXG5leHBvcnQgY2xhc3MgU2Vzc2lvblJhd0ZpZWxkIGltcGxlbWVudHMgR3JwY01lc3NhZ2Uge1xuICBzdGF0aWMgaWQgPSAnYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9uUmF3RmllbGQnO1xuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZSBiaW5hcnkgZGF0YSB0byBtZXNzYWdlXG4gICAqIEBwYXJhbSBpbnN0YW5jZSBtZXNzYWdlIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgZGVzZXJpYWxpemVCaW5hcnkoYnl0ZXM6IEJ5dGVTb3VyY2UpIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBTZXNzaW9uUmF3RmllbGQoKTtcbiAgICBTZXNzaW9uUmF3RmllbGQuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKFxuICAgICAgaW5zdGFuY2UsXG4gICAgICBuZXcgQmluYXJ5UmVhZGVyKGJ5dGVzKVxuICAgICk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGFsbCB0aGUgcHJvcGVydGllcyBhbmQgc2V0IGRlZmF1bHQgcHJvdG9idWYgdmFsdWVzIGlmIG5lY2Vzc2FyeVxuICAgKiBAcGFyYW0gX2luc3RhbmNlIG1lc3NhZ2UgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyByZWZpbmVWYWx1ZXMoX2luc3RhbmNlOiBTZXNzaW9uUmF3RmllbGQpIHtcbiAgICBfaW5zdGFuY2UuZmllbGQgPSBfaW5zdGFuY2UuZmllbGQgfHwgMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZXMgLyByZWFkcyBiaW5hcnkgbWVzc2FnZSBpbnRvIG1lc3NhZ2UgaW5zdGFuY2UgdXNpbmcgcHJvdmlkZWQgYmluYXJ5IHJlYWRlclxuICAgKiBAcGFyYW0gX2luc3RhbmNlIG1lc3NhZ2UgaW5zdGFuY2VcbiAgICogQHBhcmFtIF9yZWFkZXIgYmluYXJ5IHJlYWRlciBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIGRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihcbiAgICBfaW5zdGFuY2U6IFNlc3Npb25SYXdGaWVsZCxcbiAgICBfcmVhZGVyOiBCaW5hcnlSZWFkZXJcbiAgKSB7XG4gICAgd2hpbGUgKF9yZWFkZXIubmV4dEZpZWxkKCkpIHtcbiAgICAgIGlmIChfcmVhZGVyLmlzRW5kR3JvdXAoKSkgYnJlYWs7XG5cbiAgICAgIHN3aXRjaCAoX3JlYWRlci5nZXRGaWVsZE51bWJlcigpKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBfaW5zdGFuY2UuZmllbGQgPSBfcmVhZGVyLnJlYWRFbnVtKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgX3JlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBTZXNzaW9uUmF3RmllbGQucmVmaW5lVmFsdWVzKF9pbnN0YW5jZSk7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplcyBhIG1lc3NhZ2UgdG8gYmluYXJ5IGZvcm1hdCB1c2luZyBwcm92aWRlZCBiaW5hcnkgcmVhZGVyXG4gICAqIEBwYXJhbSBfaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gX3dyaXRlciBiaW5hcnkgd3JpdGVyIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIoXG4gICAgX2luc3RhbmNlOiBTZXNzaW9uUmF3RmllbGQsXG4gICAgX3dyaXRlcjogQmluYXJ5V3JpdGVyXG4gICkge1xuICAgIGlmIChfaW5zdGFuY2UuZmllbGQpIHtcbiAgICAgIF93cml0ZXIud3JpdGVFbnVtKDEsIF9pbnN0YW5jZS5maWVsZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZmllbGQ6IFNlc3Npb25SYXdFbnVtRmllbGQ7XG5cbiAgLyoqXG4gICAqIE1lc3NhZ2UgY29uc3RydWN0b3IuIEluaXRpYWxpemVzIHRoZSBwcm9wZXJ0aWVzIGFuZCBhcHBsaWVzIGRlZmF1bHQgUHJvdG9idWYgdmFsdWVzIGlmIG5lY2Vzc2FyeVxuICAgKiBAcGFyYW0gX3ZhbHVlIGluaXRpYWwgdmFsdWVzIG9iamVjdCBvciBpbnN0YW5jZSBvZiBTZXNzaW9uUmF3RmllbGQgdG8gZGVlcGx5IGNsb25lIGZyb21cbiAgICovXG4gIGNvbnN0cnVjdG9yKF92YWx1ZT86IFJlY3Vyc2l2ZVBhcnRpYWw8U2Vzc2lvblJhd0ZpZWxkLkFzT2JqZWN0Pikge1xuICAgIF92YWx1ZSA9IF92YWx1ZSB8fCB7fTtcbiAgICB0aGlzLmZpZWxkID0gX3ZhbHVlLmZpZWxkO1xuICAgIFNlc3Npb25SYXdGaWVsZC5yZWZpbmVWYWx1ZXModGhpcyk7XG4gIH1cbiAgZ2V0IGZpZWxkKCk6IFNlc3Npb25SYXdFbnVtRmllbGQge1xuICAgIHJldHVybiB0aGlzLl9maWVsZDtcbiAgfVxuICBzZXQgZmllbGQodmFsdWU6IFNlc3Npb25SYXdFbnVtRmllbGQpIHtcbiAgICB0aGlzLl9maWVsZCA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZSBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhXG4gICAqIEBwYXJhbSBpbnN0YW5jZSBtZXNzYWdlIGluc3RhbmNlXG4gICAqL1xuICBzZXJpYWxpemVCaW5hcnkoKSB7XG4gICAgY29uc3Qgd3JpdGVyID0gbmV3IEJpbmFyeVdyaXRlcigpO1xuICAgIFNlc3Npb25SYXdGaWVsZC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLCB3cml0ZXIpO1xuICAgIHJldHVybiB3cml0ZXIuZ2V0UmVzdWx0QnVmZmVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FzdCBtZXNzYWdlIHRvIHN0YW5kYXJkIEphdmFTY3JpcHQgb2JqZWN0IChhbGwgbm9uLXByaW1pdGl2ZSB2YWx1ZXMgYXJlIGRlZXBseSBjbG9uZWQpXG4gICAqL1xuICB0b09iamVjdCgpOiBTZXNzaW9uUmF3RmllbGQuQXNPYmplY3Qge1xuICAgIHJldHVybiB7XG4gICAgICBmaWVsZDogdGhpcy5maWVsZFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29udmVuaWVuY2UgbWV0aG9kIHRvIHN1cHBvcnQgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSksIHJlcGxpY2F0ZXMgdGhlIHN0cnVjdHVyZSBvZiB0b09iamVjdCgpXG4gICAqL1xuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9PYmplY3QoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYXN0IG1lc3NhZ2UgdG8gSlNPTiB1c2luZyBwcm90b2J1ZiBKU09OIG5vdGF0aW9uOiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9wcm90b2NvbC1idWZmZXJzL2RvY3MvcHJvdG8zI2pzb25cbiAgICogQXR0ZW50aW9uOiBvdXRwdXQgZGlmZmVycyBmcm9tIHRvT2JqZWN0KCkgZS5nLiBlbnVtcyBhcmUgcmVwcmVzZW50ZWQgYXMgbmFtZXMgYW5kIG5vdCBhcyBudW1iZXJzLCBUaW1lc3RhbXAgaXMgYW4gSVNPIERhdGUgc3RyaW5nIGZvcm1hdCBldGMuXG4gICAqIElmIHRoZSBtZXNzYWdlIGl0c2VsZiBvciBzb21lIG9mIGRlc2NlbmRhbnQgbWVzc2FnZXMgaXMgZ29vZ2xlLnByb3RvYnVmLkFueSwgeW91IE1VU1QgcHJvdmlkZSBhIG1lc3NhZ2UgcG9vbCBhcyBvcHRpb25zLiBJZiBub3QsIHRoZSBtZXNzYWdlUG9vbCBpcyBub3QgcmVxdWlyZWRcbiAgICovXG4gIHRvUHJvdG9idWZKU09OKFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcHRpb25zPzogVG9Qcm90b2J1ZkpTT05PcHRpb25zXG4gICk6IFNlc3Npb25SYXdGaWVsZC5Bc1Byb3RvYnVmSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpZWxkOlxuICAgICAgICBTZXNzaW9uUmF3RW51bUZpZWxkW1xuICAgICAgICAgIHRoaXMuZmllbGQgPT09IG51bGwgfHwgdGhpcy5maWVsZCA9PT0gdW5kZWZpbmVkID8gMCA6IHRoaXMuZmllbGRcbiAgICAgICAgXVxuICAgIH07XG4gIH1cbn1cbmV4cG9ydCBtb2R1bGUgU2Vzc2lvblJhd0ZpZWxkIHtcbiAgLyoqXG4gICAqIFN0YW5kYXJkIEphdmFTY3JpcHQgb2JqZWN0IHJlcHJlc2VudGF0aW9uIGZvciBTZXNzaW9uUmF3RmllbGRcbiAgICovXG4gIGV4cG9ydCBpbnRlcmZhY2UgQXNPYmplY3Qge1xuICAgIGZpZWxkOiBTZXNzaW9uUmF3RW51bUZpZWxkO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3RvYnVmIEpTT04gcmVwcmVzZW50YXRpb24gZm9yIFNlc3Npb25SYXdGaWVsZFxuICAgKi9cbiAgZXhwb3J0IGludGVyZmFjZSBBc1Byb3RvYnVmSlNPTiB7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgfVxufVxuXG4vKipcbiAqIE1lc3NhZ2UgaW1wbGVtZW50YXRpb24gZm9yIGFybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuVGFza09wdGlvbkZpZWxkXG4gKi9cbmV4cG9ydCBjbGFzcyBUYXNrT3B0aW9uRmllbGQgaW1wbGVtZW50cyBHcnBjTWVzc2FnZSB7XG4gIHN0YXRpYyBpZCA9ICdhcm1vbmlrLmFwaS5ncnBjLnYxLnNlc3Npb25zLlRhc2tPcHRpb25GaWVsZCc7XG5cbiAgLyoqXG4gICAqIERlc2VyaWFsaXplIGJpbmFyeSBkYXRhIHRvIG1lc3NhZ2VcbiAgICogQHBhcmFtIGluc3RhbmNlIG1lc3NhZ2UgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBkZXNlcmlhbGl6ZUJpbmFyeShieXRlczogQnl0ZVNvdXJjZSkge1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFRhc2tPcHRpb25GaWVsZCgpO1xuICAgIFRhc2tPcHRpb25GaWVsZC5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIoXG4gICAgICBpbnN0YW5jZSxcbiAgICAgIG5ldyBCaW5hcnlSZWFkZXIoYnl0ZXMpXG4gICAgKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgYWxsIHRoZSBwcm9wZXJ0aWVzIGFuZCBzZXQgZGVmYXVsdCBwcm90b2J1ZiB2YWx1ZXMgaWYgbmVjZXNzYXJ5XG4gICAqIEBwYXJhbSBfaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIHJlZmluZVZhbHVlcyhfaW5zdGFuY2U6IFRhc2tPcHRpb25GaWVsZCkge1xuICAgIF9pbnN0YW5jZS5maWVsZCA9IF9pbnN0YW5jZS5maWVsZCB8fCAwO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2VyaWFsaXplcyAvIHJlYWRzIGJpbmFyeSBtZXNzYWdlIGludG8gbWVzc2FnZSBpbnN0YW5jZSB1c2luZyBwcm92aWRlZCBiaW5hcnkgcmVhZGVyXG4gICAqIEBwYXJhbSBfaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gX3JlYWRlciBiaW5hcnkgcmVhZGVyIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKFxuICAgIF9pbnN0YW5jZTogVGFza09wdGlvbkZpZWxkLFxuICAgIF9yZWFkZXI6IEJpbmFyeVJlYWRlclxuICApIHtcbiAgICB3aGlsZSAoX3JlYWRlci5uZXh0RmllbGQoKSkge1xuICAgICAgaWYgKF9yZWFkZXIuaXNFbmRHcm91cCgpKSBicmVhaztcblxuICAgICAgc3dpdGNoIChfcmVhZGVyLmdldEZpZWxkTnVtYmVyKCkpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIF9pbnN0YW5jZS5maWVsZCA9IF9yZWFkZXIucmVhZEVudW0oKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBfcmVhZGVyLnNraXBGaWVsZCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIFRhc2tPcHRpb25GaWVsZC5yZWZpbmVWYWx1ZXMoX2luc3RhbmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIGEgbWVzc2FnZSB0byBiaW5hcnkgZm9ybWF0IHVzaW5nIHByb3ZpZGVkIGJpbmFyeSByZWFkZXJcbiAgICogQHBhcmFtIF9pbnN0YW5jZSBtZXNzYWdlIGluc3RhbmNlXG4gICAqIEBwYXJhbSBfd3JpdGVyIGJpbmFyeSB3cml0ZXIgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBzZXJpYWxpemVCaW5hcnlUb1dyaXRlcihcbiAgICBfaW5zdGFuY2U6IFRhc2tPcHRpb25GaWVsZCxcbiAgICBfd3JpdGVyOiBCaW5hcnlXcml0ZXJcbiAgKSB7XG4gICAgaWYgKF9pbnN0YW5jZS5maWVsZCkge1xuICAgICAgX3dyaXRlci53cml0ZUVudW0oMSwgX2luc3RhbmNlLmZpZWxkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9maWVsZDogVGFza09wdGlvbkVudW1GaWVsZDtcblxuICAvKipcbiAgICogTWVzc2FnZSBjb25zdHJ1Y3Rvci4gSW5pdGlhbGl6ZXMgdGhlIHByb3BlcnRpZXMgYW5kIGFwcGxpZXMgZGVmYXVsdCBQcm90b2J1ZiB2YWx1ZXMgaWYgbmVjZXNzYXJ5XG4gICAqIEBwYXJhbSBfdmFsdWUgaW5pdGlhbCB2YWx1ZXMgb2JqZWN0IG9yIGluc3RhbmNlIG9mIFRhc2tPcHRpb25GaWVsZCB0byBkZWVwbHkgY2xvbmUgZnJvbVxuICAgKi9cbiAgY29uc3RydWN0b3IoX3ZhbHVlPzogUmVjdXJzaXZlUGFydGlhbDxUYXNrT3B0aW9uRmllbGQuQXNPYmplY3Q+KSB7XG4gICAgX3ZhbHVlID0gX3ZhbHVlIHx8IHt9O1xuICAgIHRoaXMuZmllbGQgPSBfdmFsdWUuZmllbGQ7XG4gICAgVGFza09wdGlvbkZpZWxkLnJlZmluZVZhbHVlcyh0aGlzKTtcbiAgfVxuICBnZXQgZmllbGQoKTogVGFza09wdGlvbkVudW1GaWVsZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkO1xuICB9XG4gIHNldCBmaWVsZCh2YWx1ZTogVGFza09wdGlvbkVudW1GaWVsZCkge1xuICAgIHRoaXMuX2ZpZWxkID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGFcbiAgICogQHBhcmFtIGluc3RhbmNlIG1lc3NhZ2UgaW5zdGFuY2VcbiAgICovXG4gIHNlcmlhbGl6ZUJpbmFyeSgpIHtcbiAgICBjb25zdCB3cml0ZXIgPSBuZXcgQmluYXJ5V3JpdGVyKCk7XG4gICAgVGFza09wdGlvbkZpZWxkLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsIHdyaXRlcik7XG4gICAgcmV0dXJuIHdyaXRlci5nZXRSZXN1bHRCdWZmZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYXN0IG1lc3NhZ2UgdG8gc3RhbmRhcmQgSmF2YVNjcmlwdCBvYmplY3QgKGFsbCBub24tcHJpbWl0aXZlIHZhbHVlcyBhcmUgZGVlcGx5IGNsb25lZClcbiAgICovXG4gIHRvT2JqZWN0KCk6IFRhc2tPcHRpb25GaWVsZC5Bc09iamVjdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpZWxkOiB0aGlzLmZpZWxkXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgdG8gc3VwcG9ydCBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSwgcmVwbGljYXRlcyB0aGUgc3RydWN0dXJlIG9mIHRvT2JqZWN0KClcbiAgICovXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b09iamVjdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhc3QgbWVzc2FnZSB0byBKU09OIHVzaW5nIHByb3RvYnVmIEpTT04gbm90YXRpb246IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3Byb3RvY29sLWJ1ZmZlcnMvZG9jcy9wcm90bzMjanNvblxuICAgKiBBdHRlbnRpb246IG91dHB1dCBkaWZmZXJzIGZyb20gdG9PYmplY3QoKSBlLmcuIGVudW1zIGFyZSByZXByZXNlbnRlZCBhcyBuYW1lcyBhbmQgbm90IGFzIG51bWJlcnMsIFRpbWVzdGFtcCBpcyBhbiBJU08gRGF0ZSBzdHJpbmcgZm9ybWF0IGV0Yy5cbiAgICogSWYgdGhlIG1lc3NhZ2UgaXRzZWxmIG9yIHNvbWUgb2YgZGVzY2VuZGFudCBtZXNzYWdlcyBpcyBnb29nbGUucHJvdG9idWYuQW55LCB5b3UgTVVTVCBwcm92aWRlIGEgbWVzc2FnZSBwb29sIGFzIG9wdGlvbnMuIElmIG5vdCwgdGhlIG1lc3NhZ2VQb29sIGlzIG5vdCByZXF1aXJlZFxuICAgKi9cbiAgdG9Qcm90b2J1ZkpTT04oXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9wdGlvbnM/OiBUb1Byb3RvYnVmSlNPTk9wdGlvbnNcbiAgKTogVGFza09wdGlvbkZpZWxkLkFzUHJvdG9idWZKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGQ6XG4gICAgICAgIFRhc2tPcHRpb25FbnVtRmllbGRbXG4gICAgICAgICAgdGhpcy5maWVsZCA9PT0gbnVsbCB8fCB0aGlzLmZpZWxkID09PSB1bmRlZmluZWQgPyAwIDogdGhpcy5maWVsZFxuICAgICAgICBdXG4gICAgfTtcbiAgfVxufVxuZXhwb3J0IG1vZHVsZSBUYXNrT3B0aW9uRmllbGQge1xuICAvKipcbiAgICogU3RhbmRhcmQgSmF2YVNjcmlwdCBvYmplY3QgcmVwcmVzZW50YXRpb24gZm9yIFRhc2tPcHRpb25GaWVsZFxuICAgKi9cbiAgZXhwb3J0IGludGVyZmFjZSBBc09iamVjdCB7XG4gICAgZmllbGQ6IFRhc2tPcHRpb25FbnVtRmllbGQ7XG4gIH1cblxuICAvKipcbiAgICogUHJvdG9idWYgSlNPTiByZXByZXNlbnRhdGlvbiBmb3IgVGFza09wdGlvbkZpZWxkXG4gICAqL1xuICBleHBvcnQgaW50ZXJmYWNlIEFzUHJvdG9idWZKU09OIHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICB9XG59XG5cbi8qKlxuICogTWVzc2FnZSBpbXBsZW1lbnRhdGlvbiBmb3IgYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5UYXNrT3B0aW9uR2VuZXJpY0ZpZWxkXG4gKi9cbmV4cG9ydCBjbGFzcyBUYXNrT3B0aW9uR2VuZXJpY0ZpZWxkIGltcGxlbWVudHMgR3JwY01lc3NhZ2Uge1xuICBzdGF0aWMgaWQgPSAnYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5UYXNrT3B0aW9uR2VuZXJpY0ZpZWxkJztcblxuICAvKipcbiAgICogRGVzZXJpYWxpemUgYmluYXJ5IGRhdGEgdG8gbWVzc2FnZVxuICAgKiBAcGFyYW0gaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIGRlc2VyaWFsaXplQmluYXJ5KGJ5dGVzOiBCeXRlU291cmNlKSB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgVGFza09wdGlvbkdlbmVyaWNGaWVsZCgpO1xuICAgIFRhc2tPcHRpb25HZW5lcmljRmllbGQuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKFxuICAgICAgaW5zdGFuY2UsXG4gICAgICBuZXcgQmluYXJ5UmVhZGVyKGJ5dGVzKVxuICAgICk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGFsbCB0aGUgcHJvcGVydGllcyBhbmQgc2V0IGRlZmF1bHQgcHJvdG9idWYgdmFsdWVzIGlmIG5lY2Vzc2FyeVxuICAgKiBAcGFyYW0gX2luc3RhbmNlIG1lc3NhZ2UgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyByZWZpbmVWYWx1ZXMoX2luc3RhbmNlOiBUYXNrT3B0aW9uR2VuZXJpY0ZpZWxkKSB7XG4gICAgX2luc3RhbmNlLmZpZWxkID0gX2luc3RhbmNlLmZpZWxkIHx8ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2VyaWFsaXplcyAvIHJlYWRzIGJpbmFyeSBtZXNzYWdlIGludG8gbWVzc2FnZSBpbnN0YW5jZSB1c2luZyBwcm92aWRlZCBiaW5hcnkgcmVhZGVyXG4gICAqIEBwYXJhbSBfaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gX3JlYWRlciBiaW5hcnkgcmVhZGVyIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKFxuICAgIF9pbnN0YW5jZTogVGFza09wdGlvbkdlbmVyaWNGaWVsZCxcbiAgICBfcmVhZGVyOiBCaW5hcnlSZWFkZXJcbiAgKSB7XG4gICAgd2hpbGUgKF9yZWFkZXIubmV4dEZpZWxkKCkpIHtcbiAgICAgIGlmIChfcmVhZGVyLmlzRW5kR3JvdXAoKSkgYnJlYWs7XG5cbiAgICAgIHN3aXRjaCAoX3JlYWRlci5nZXRGaWVsZE51bWJlcigpKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBfaW5zdGFuY2UuZmllbGQgPSBfcmVhZGVyLnJlYWRTdHJpbmcoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBfcmVhZGVyLnNraXBGaWVsZCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIFRhc2tPcHRpb25HZW5lcmljRmllbGQucmVmaW5lVmFsdWVzKF9pbnN0YW5jZSk7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplcyBhIG1lc3NhZ2UgdG8gYmluYXJ5IGZvcm1hdCB1c2luZyBwcm92aWRlZCBiaW5hcnkgcmVhZGVyXG4gICAqIEBwYXJhbSBfaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gX3dyaXRlciBiaW5hcnkgd3JpdGVyIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIoXG4gICAgX2luc3RhbmNlOiBUYXNrT3B0aW9uR2VuZXJpY0ZpZWxkLFxuICAgIF93cml0ZXI6IEJpbmFyeVdyaXRlclxuICApIHtcbiAgICBpZiAoX2luc3RhbmNlLmZpZWxkKSB7XG4gICAgICBfd3JpdGVyLndyaXRlU3RyaW5nKDEsIF9pbnN0YW5jZS5maWVsZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZmllbGQ6IHN0cmluZztcblxuICAvKipcbiAgICogTWVzc2FnZSBjb25zdHJ1Y3Rvci4gSW5pdGlhbGl6ZXMgdGhlIHByb3BlcnRpZXMgYW5kIGFwcGxpZXMgZGVmYXVsdCBQcm90b2J1ZiB2YWx1ZXMgaWYgbmVjZXNzYXJ5XG4gICAqIEBwYXJhbSBfdmFsdWUgaW5pdGlhbCB2YWx1ZXMgb2JqZWN0IG9yIGluc3RhbmNlIG9mIFRhc2tPcHRpb25HZW5lcmljRmllbGQgdG8gZGVlcGx5IGNsb25lIGZyb21cbiAgICovXG4gIGNvbnN0cnVjdG9yKF92YWx1ZT86IFJlY3Vyc2l2ZVBhcnRpYWw8VGFza09wdGlvbkdlbmVyaWNGaWVsZC5Bc09iamVjdD4pIHtcbiAgICBfdmFsdWUgPSBfdmFsdWUgfHwge307XG4gICAgdGhpcy5maWVsZCA9IF92YWx1ZS5maWVsZDtcbiAgICBUYXNrT3B0aW9uR2VuZXJpY0ZpZWxkLnJlZmluZVZhbHVlcyh0aGlzKTtcbiAgfVxuICBnZXQgZmllbGQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGQ7XG4gIH1cbiAgc2V0IGZpZWxkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZCA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZSBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhXG4gICAqIEBwYXJhbSBpbnN0YW5jZSBtZXNzYWdlIGluc3RhbmNlXG4gICAqL1xuICBzZXJpYWxpemVCaW5hcnkoKSB7XG4gICAgY29uc3Qgd3JpdGVyID0gbmV3IEJpbmFyeVdyaXRlcigpO1xuICAgIFRhc2tPcHRpb25HZW5lcmljRmllbGQuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIodGhpcywgd3JpdGVyKTtcbiAgICByZXR1cm4gd3JpdGVyLmdldFJlc3VsdEJ1ZmZlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhc3QgbWVzc2FnZSB0byBzdGFuZGFyZCBKYXZhU2NyaXB0IG9iamVjdCAoYWxsIG5vbi1wcmltaXRpdmUgdmFsdWVzIGFyZSBkZWVwbHkgY2xvbmVkKVxuICAgKi9cbiAgdG9PYmplY3QoKTogVGFza09wdGlvbkdlbmVyaWNGaWVsZC5Bc09iamVjdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpZWxkOiB0aGlzLmZpZWxkXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgdG8gc3VwcG9ydCBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSwgcmVwbGljYXRlcyB0aGUgc3RydWN0dXJlIG9mIHRvT2JqZWN0KClcbiAgICovXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b09iamVjdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhc3QgbWVzc2FnZSB0byBKU09OIHVzaW5nIHByb3RvYnVmIEpTT04gbm90YXRpb246IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3Byb3RvY29sLWJ1ZmZlcnMvZG9jcy9wcm90bzMjanNvblxuICAgKiBBdHRlbnRpb246IG91dHB1dCBkaWZmZXJzIGZyb20gdG9PYmplY3QoKSBlLmcuIGVudW1zIGFyZSByZXByZXNlbnRlZCBhcyBuYW1lcyBhbmQgbm90IGFzIG51bWJlcnMsIFRpbWVzdGFtcCBpcyBhbiBJU08gRGF0ZSBzdHJpbmcgZm9ybWF0IGV0Yy5cbiAgICogSWYgdGhlIG1lc3NhZ2UgaXRzZWxmIG9yIHNvbWUgb2YgZGVzY2VuZGFudCBtZXNzYWdlcyBpcyBnb29nbGUucHJvdG9idWYuQW55LCB5b3UgTVVTVCBwcm92aWRlIGEgbWVzc2FnZSBwb29sIGFzIG9wdGlvbnMuIElmIG5vdCwgdGhlIG1lc3NhZ2VQb29sIGlzIG5vdCByZXF1aXJlZFxuICAgKi9cbiAgdG9Qcm90b2J1ZkpTT04oXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9wdGlvbnM/OiBUb1Byb3RvYnVmSlNPTk9wdGlvbnNcbiAgKTogVGFza09wdGlvbkdlbmVyaWNGaWVsZC5Bc1Byb3RvYnVmSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpZWxkOiB0aGlzLmZpZWxkXG4gICAgfTtcbiAgfVxufVxuZXhwb3J0IG1vZHVsZSBUYXNrT3B0aW9uR2VuZXJpY0ZpZWxkIHtcbiAgLyoqXG4gICAqIFN0YW5kYXJkIEphdmFTY3JpcHQgb2JqZWN0IHJlcHJlc2VudGF0aW9uIGZvciBUYXNrT3B0aW9uR2VuZXJpY0ZpZWxkXG4gICAqL1xuICBleHBvcnQgaW50ZXJmYWNlIEFzT2JqZWN0IHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3RvYnVmIEpTT04gcmVwcmVzZW50YXRpb24gZm9yIFRhc2tPcHRpb25HZW5lcmljRmllbGRcbiAgICovXG4gIGV4cG9ydCBpbnRlcmZhY2UgQXNQcm90b2J1ZkpTT04ge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gIH1cbn1cblxuLyoqXG4gKiBNZXNzYWdlIGltcGxlbWVudGF0aW9uIGZvciBhcm1vbmlrLmFwaS5ncnBjLnYxLnNlc3Npb25zLlNlc3Npb25GaWVsZFxuICovXG5leHBvcnQgY2xhc3MgU2Vzc2lvbkZpZWxkIGltcGxlbWVudHMgR3JwY01lc3NhZ2Uge1xuICBzdGF0aWMgaWQgPSAnYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9uRmllbGQnO1xuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZSBiaW5hcnkgZGF0YSB0byBtZXNzYWdlXG4gICAqIEBwYXJhbSBpbnN0YW5jZSBtZXNzYWdlIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgZGVzZXJpYWxpemVCaW5hcnkoYnl0ZXM6IEJ5dGVTb3VyY2UpIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBTZXNzaW9uRmllbGQoKTtcbiAgICBTZXNzaW9uRmllbGQuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKGluc3RhbmNlLCBuZXcgQmluYXJ5UmVhZGVyKGJ5dGVzKSk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGFsbCB0aGUgcHJvcGVydGllcyBhbmQgc2V0IGRlZmF1bHQgcHJvdG9idWYgdmFsdWVzIGlmIG5lY2Vzc2FyeVxuICAgKiBAcGFyYW0gX2luc3RhbmNlIG1lc3NhZ2UgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyByZWZpbmVWYWx1ZXMoX2luc3RhbmNlOiBTZXNzaW9uRmllbGQpIHt9XG5cbiAgLyoqXG4gICAqIERlc2VyaWFsaXplcyAvIHJlYWRzIGJpbmFyeSBtZXNzYWdlIGludG8gbWVzc2FnZSBpbnN0YW5jZSB1c2luZyBwcm92aWRlZCBiaW5hcnkgcmVhZGVyXG4gICAqIEBwYXJhbSBfaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gX3JlYWRlciBiaW5hcnkgcmVhZGVyIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKFxuICAgIF9pbnN0YW5jZTogU2Vzc2lvbkZpZWxkLFxuICAgIF9yZWFkZXI6IEJpbmFyeVJlYWRlclxuICApIHtcbiAgICB3aGlsZSAoX3JlYWRlci5uZXh0RmllbGQoKSkge1xuICAgICAgaWYgKF9yZWFkZXIuaXNFbmRHcm91cCgpKSBicmVhaztcblxuICAgICAgc3dpdGNoIChfcmVhZGVyLmdldEZpZWxkTnVtYmVyKCkpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIF9pbnN0YW5jZS5zZXNzaW9uUmF3RmllbGQgPSBuZXcgU2Vzc2lvblJhd0ZpZWxkKCk7XG4gICAgICAgICAgX3JlYWRlci5yZWFkTWVzc2FnZShcbiAgICAgICAgICAgIF9pbnN0YW5jZS5zZXNzaW9uUmF3RmllbGQsXG4gICAgICAgICAgICBTZXNzaW9uUmF3RmllbGQuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIF9pbnN0YW5jZS50YXNrT3B0aW9uRmllbGQgPSBuZXcgVGFza09wdGlvbkZpZWxkKCk7XG4gICAgICAgICAgX3JlYWRlci5yZWFkTWVzc2FnZShcbiAgICAgICAgICAgIF9pbnN0YW5jZS50YXNrT3B0aW9uRmllbGQsXG4gICAgICAgICAgICBUYXNrT3B0aW9uRmllbGQuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIF9pbnN0YW5jZS50YXNrT3B0aW9uR2VuZXJpY0ZpZWxkID0gbmV3IFRhc2tPcHRpb25HZW5lcmljRmllbGQoKTtcbiAgICAgICAgICBfcmVhZGVyLnJlYWRNZXNzYWdlKFxuICAgICAgICAgICAgX2luc3RhbmNlLnRhc2tPcHRpb25HZW5lcmljRmllbGQsXG4gICAgICAgICAgICBUYXNrT3B0aW9uR2VuZXJpY0ZpZWxkLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlclxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgX3JlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBTZXNzaW9uRmllbGQucmVmaW5lVmFsdWVzKF9pbnN0YW5jZSk7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplcyBhIG1lc3NhZ2UgdG8gYmluYXJ5IGZvcm1hdCB1c2luZyBwcm92aWRlZCBiaW5hcnkgcmVhZGVyXG4gICAqIEBwYXJhbSBfaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gX3dyaXRlciBiaW5hcnkgd3JpdGVyIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIoXG4gICAgX2luc3RhbmNlOiBTZXNzaW9uRmllbGQsXG4gICAgX3dyaXRlcjogQmluYXJ5V3JpdGVyXG4gICkge1xuICAgIGlmIChfaW5zdGFuY2Uuc2Vzc2lvblJhd0ZpZWxkKSB7XG4gICAgICBfd3JpdGVyLndyaXRlTWVzc2FnZShcbiAgICAgICAgMSxcbiAgICAgICAgX2luc3RhbmNlLnNlc3Npb25SYXdGaWVsZCBhcyBhbnksXG4gICAgICAgIFNlc3Npb25SYXdGaWVsZC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlclxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKF9pbnN0YW5jZS50YXNrT3B0aW9uRmllbGQpIHtcbiAgICAgIF93cml0ZXIud3JpdGVNZXNzYWdlKFxuICAgICAgICAyLFxuICAgICAgICBfaW5zdGFuY2UudGFza09wdGlvbkZpZWxkIGFzIGFueSxcbiAgICAgICAgVGFza09wdGlvbkZpZWxkLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoX2luc3RhbmNlLnRhc2tPcHRpb25HZW5lcmljRmllbGQpIHtcbiAgICAgIF93cml0ZXIud3JpdGVNZXNzYWdlKFxuICAgICAgICAzLFxuICAgICAgICBfaW5zdGFuY2UudGFza09wdGlvbkdlbmVyaWNGaWVsZCBhcyBhbnksXG4gICAgICAgIFRhc2tPcHRpb25HZW5lcmljRmllbGQuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2Vzc2lvblJhd0ZpZWxkPzogU2Vzc2lvblJhd0ZpZWxkO1xuICBwcml2YXRlIF90YXNrT3B0aW9uRmllbGQ/OiBUYXNrT3B0aW9uRmllbGQ7XG4gIHByaXZhdGUgX3Rhc2tPcHRpb25HZW5lcmljRmllbGQ/OiBUYXNrT3B0aW9uR2VuZXJpY0ZpZWxkO1xuXG4gIHByaXZhdGUgX2ZpZWxkOiBTZXNzaW9uRmllbGQuRmllbGRDYXNlID0gU2Vzc2lvbkZpZWxkLkZpZWxkQ2FzZS5ub25lO1xuXG4gIC8qKlxuICAgKiBNZXNzYWdlIGNvbnN0cnVjdG9yLiBJbml0aWFsaXplcyB0aGUgcHJvcGVydGllcyBhbmQgYXBwbGllcyBkZWZhdWx0IFByb3RvYnVmIHZhbHVlcyBpZiBuZWNlc3NhcnlcbiAgICogQHBhcmFtIF92YWx1ZSBpbml0aWFsIHZhbHVlcyBvYmplY3Qgb3IgaW5zdGFuY2Ugb2YgU2Vzc2lvbkZpZWxkIHRvIGRlZXBseSBjbG9uZSBmcm9tXG4gICAqL1xuICBjb25zdHJ1Y3RvcihfdmFsdWU/OiBSZWN1cnNpdmVQYXJ0aWFsPFNlc3Npb25GaWVsZC5Bc09iamVjdD4pIHtcbiAgICBfdmFsdWUgPSBfdmFsdWUgfHwge307XG4gICAgdGhpcy5zZXNzaW9uUmF3RmllbGQgPSBfdmFsdWUuc2Vzc2lvblJhd0ZpZWxkXG4gICAgICA/IG5ldyBTZXNzaW9uUmF3RmllbGQoX3ZhbHVlLnNlc3Npb25SYXdGaWVsZClcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIHRoaXMudGFza09wdGlvbkZpZWxkID0gX3ZhbHVlLnRhc2tPcHRpb25GaWVsZFxuICAgICAgPyBuZXcgVGFza09wdGlvbkZpZWxkKF92YWx1ZS50YXNrT3B0aW9uRmllbGQpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLnRhc2tPcHRpb25HZW5lcmljRmllbGQgPSBfdmFsdWUudGFza09wdGlvbkdlbmVyaWNGaWVsZFxuICAgICAgPyBuZXcgVGFza09wdGlvbkdlbmVyaWNGaWVsZChfdmFsdWUudGFza09wdGlvbkdlbmVyaWNGaWVsZClcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIFNlc3Npb25GaWVsZC5yZWZpbmVWYWx1ZXModGhpcyk7XG4gIH1cbiAgZ2V0IHNlc3Npb25SYXdGaWVsZCgpOiBTZXNzaW9uUmF3RmllbGQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uUmF3RmllbGQ7XG4gIH1cbiAgc2V0IHNlc3Npb25SYXdGaWVsZCh2YWx1ZTogU2Vzc2lvblJhd0ZpZWxkIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3Rhc2tPcHRpb25GaWVsZCA9IHRoaXMuX3Rhc2tPcHRpb25HZW5lcmljRmllbGQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9maWVsZCA9IFNlc3Npb25GaWVsZC5GaWVsZENhc2Uuc2Vzc2lvblJhd0ZpZWxkO1xuICAgIH1cbiAgICB0aGlzLl9zZXNzaW9uUmF3RmllbGQgPSB2YWx1ZTtcbiAgfVxuICBnZXQgdGFza09wdGlvbkZpZWxkKCk6IFRhc2tPcHRpb25GaWVsZCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rhc2tPcHRpb25GaWVsZDtcbiAgfVxuICBzZXQgdGFza09wdGlvbkZpZWxkKHZhbHVlOiBUYXNrT3B0aW9uRmllbGQgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5fc2Vzc2lvblJhd0ZpZWxkID0gdGhpcy5fdGFza09wdGlvbkdlbmVyaWNGaWVsZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2ZpZWxkID0gU2Vzc2lvbkZpZWxkLkZpZWxkQ2FzZS50YXNrT3B0aW9uRmllbGQ7XG4gICAgfVxuICAgIHRoaXMuX3Rhc2tPcHRpb25GaWVsZCA9IHZhbHVlO1xuICB9XG4gIGdldCB0YXNrT3B0aW9uR2VuZXJpY0ZpZWxkKCk6IFRhc2tPcHRpb25HZW5lcmljRmllbGQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl90YXNrT3B0aW9uR2VuZXJpY0ZpZWxkO1xuICB9XG4gIHNldCB0YXNrT3B0aW9uR2VuZXJpY0ZpZWxkKHZhbHVlOiBUYXNrT3B0aW9uR2VuZXJpY0ZpZWxkIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3Nlc3Npb25SYXdGaWVsZCA9IHRoaXMuX3Rhc2tPcHRpb25GaWVsZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2ZpZWxkID0gU2Vzc2lvbkZpZWxkLkZpZWxkQ2FzZS50YXNrT3B0aW9uR2VuZXJpY0ZpZWxkO1xuICAgIH1cbiAgICB0aGlzLl90YXNrT3B0aW9uR2VuZXJpY0ZpZWxkID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGZpZWxkKCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgbWVzc2FnZSB0byBiaW5hcnkgZGF0YVxuICAgKiBAcGFyYW0gaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKi9cbiAgc2VyaWFsaXplQmluYXJ5KCkge1xuICAgIGNvbnN0IHdyaXRlciA9IG5ldyBCaW5hcnlXcml0ZXIoKTtcbiAgICBTZXNzaW9uRmllbGQuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIodGhpcywgd3JpdGVyKTtcbiAgICByZXR1cm4gd3JpdGVyLmdldFJlc3VsdEJ1ZmZlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhc3QgbWVzc2FnZSB0byBzdGFuZGFyZCBKYXZhU2NyaXB0IG9iamVjdCAoYWxsIG5vbi1wcmltaXRpdmUgdmFsdWVzIGFyZSBkZWVwbHkgY2xvbmVkKVxuICAgKi9cbiAgdG9PYmplY3QoKTogU2Vzc2lvbkZpZWxkLkFzT2JqZWN0IHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Vzc2lvblJhd0ZpZWxkOiB0aGlzLnNlc3Npb25SYXdGaWVsZFxuICAgICAgICA/IHRoaXMuc2Vzc2lvblJhd0ZpZWxkLnRvT2JqZWN0KClcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB0YXNrT3B0aW9uRmllbGQ6IHRoaXMudGFza09wdGlvbkZpZWxkXG4gICAgICAgID8gdGhpcy50YXNrT3B0aW9uRmllbGQudG9PYmplY3QoKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHRhc2tPcHRpb25HZW5lcmljRmllbGQ6IHRoaXMudGFza09wdGlvbkdlbmVyaWNGaWVsZFxuICAgICAgICA/IHRoaXMudGFza09wdGlvbkdlbmVyaWNGaWVsZC50b09iamVjdCgpXG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgdG8gc3VwcG9ydCBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSwgcmVwbGljYXRlcyB0aGUgc3RydWN0dXJlIG9mIHRvT2JqZWN0KClcbiAgICovXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b09iamVjdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhc3QgbWVzc2FnZSB0byBKU09OIHVzaW5nIHByb3RvYnVmIEpTT04gbm90YXRpb246IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3Byb3RvY29sLWJ1ZmZlcnMvZG9jcy9wcm90bzMjanNvblxuICAgKiBBdHRlbnRpb246IG91dHB1dCBkaWZmZXJzIGZyb20gdG9PYmplY3QoKSBlLmcuIGVudW1zIGFyZSByZXByZXNlbnRlZCBhcyBuYW1lcyBhbmQgbm90IGFzIG51bWJlcnMsIFRpbWVzdGFtcCBpcyBhbiBJU08gRGF0ZSBzdHJpbmcgZm9ybWF0IGV0Yy5cbiAgICogSWYgdGhlIG1lc3NhZ2UgaXRzZWxmIG9yIHNvbWUgb2YgZGVzY2VuZGFudCBtZXNzYWdlcyBpcyBnb29nbGUucHJvdG9idWYuQW55LCB5b3UgTVVTVCBwcm92aWRlIGEgbWVzc2FnZSBwb29sIGFzIG9wdGlvbnMuIElmIG5vdCwgdGhlIG1lc3NhZ2VQb29sIGlzIG5vdCByZXF1aXJlZFxuICAgKi9cbiAgdG9Qcm90b2J1ZkpTT04oXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9wdGlvbnM/OiBUb1Byb3RvYnVmSlNPTk9wdGlvbnNcbiAgKTogU2Vzc2lvbkZpZWxkLkFzUHJvdG9idWZKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Vzc2lvblJhd0ZpZWxkOiB0aGlzLnNlc3Npb25SYXdGaWVsZFxuICAgICAgICA/IHRoaXMuc2Vzc2lvblJhd0ZpZWxkLnRvUHJvdG9idWZKU09OKG9wdGlvbnMpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRhc2tPcHRpb25GaWVsZDogdGhpcy50YXNrT3B0aW9uRmllbGRcbiAgICAgICAgPyB0aGlzLnRhc2tPcHRpb25GaWVsZC50b1Byb3RvYnVmSlNPTihvcHRpb25zKVxuICAgICAgICA6IG51bGwsXG4gICAgICB0YXNrT3B0aW9uR2VuZXJpY0ZpZWxkOiB0aGlzLnRhc2tPcHRpb25HZW5lcmljRmllbGRcbiAgICAgICAgPyB0aGlzLnRhc2tPcHRpb25HZW5lcmljRmllbGQudG9Qcm90b2J1ZkpTT04ob3B0aW9ucylcbiAgICAgICAgOiBudWxsXG4gICAgfTtcbiAgfVxufVxuZXhwb3J0IG1vZHVsZSBTZXNzaW9uRmllbGQge1xuICAvKipcbiAgICogU3RhbmRhcmQgSmF2YVNjcmlwdCBvYmplY3QgcmVwcmVzZW50YXRpb24gZm9yIFNlc3Npb25GaWVsZFxuICAgKi9cbiAgZXhwb3J0IGludGVyZmFjZSBBc09iamVjdCB7XG4gICAgc2Vzc2lvblJhd0ZpZWxkPzogU2Vzc2lvblJhd0ZpZWxkLkFzT2JqZWN0O1xuICAgIHRhc2tPcHRpb25GaWVsZD86IFRhc2tPcHRpb25GaWVsZC5Bc09iamVjdDtcbiAgICB0YXNrT3B0aW9uR2VuZXJpY0ZpZWxkPzogVGFza09wdGlvbkdlbmVyaWNGaWVsZC5Bc09iamVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm90b2J1ZiBKU09OIHJlcHJlc2VudGF0aW9uIGZvciBTZXNzaW9uRmllbGRcbiAgICovXG4gIGV4cG9ydCBpbnRlcmZhY2UgQXNQcm90b2J1ZkpTT04ge1xuICAgIHNlc3Npb25SYXdGaWVsZDogU2Vzc2lvblJhd0ZpZWxkLkFzUHJvdG9idWZKU09OIHwgbnVsbDtcbiAgICB0YXNrT3B0aW9uRmllbGQ6IFRhc2tPcHRpb25GaWVsZC5Bc1Byb3RvYnVmSlNPTiB8IG51bGw7XG4gICAgdGFza09wdGlvbkdlbmVyaWNGaWVsZDogVGFza09wdGlvbkdlbmVyaWNGaWVsZC5Bc1Byb3RvYnVmSlNPTiB8IG51bGw7XG4gIH1cbiAgZXhwb3J0IGVudW0gRmllbGRDYXNlIHtcbiAgICBub25lID0gMCxcbiAgICBzZXNzaW9uUmF3RmllbGQgPSAxLFxuICAgIHRhc2tPcHRpb25GaWVsZCA9IDIsXG4gICAgdGFza09wdGlvbkdlbmVyaWNGaWVsZCA9IDNcbiAgfVxufVxuIl19