@appconda/nextjs 1.0.400 → 1.0.401
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.
@@ -1,9 +1,9 @@
|
|
1
1
|
'use server';
|
2
2
|
import { AppcondaException } from '../../client';
|
3
|
-
import {
|
3
|
+
import { getSDKForService } from '../../getSDKForService';
|
4
4
|
export async function CreateEmploid(parsedInput) {
|
5
5
|
try {
|
6
|
-
const { emploid } = await
|
6
|
+
const { emploid } = await getSDKForService();
|
7
7
|
//@ts-ignore
|
8
8
|
const app = await emploid.CreateEmploid(parsedInput);
|
9
9
|
return app;
|
@@ -17,7 +17,7 @@ export async function CreateEmploid(parsedInput) {
|
|
17
17
|
}
|
18
18
|
export const UpdateEmploid = async (parsedInput) => {
|
19
19
|
try {
|
20
|
-
const { emploid } = await
|
20
|
+
const { emploid } = await getSDKForService();
|
21
21
|
//@ts-ignore
|
22
22
|
const app = await emploid.UpdateEmploid(parsedInput);
|
23
23
|
return app;
|
@@ -31,7 +31,7 @@ export const UpdateEmploid = async (parsedInput) => {
|
|
31
31
|
};
|
32
32
|
export const DeleteEmploid = async (parsedInput) => {
|
33
33
|
try {
|
34
|
-
const { emploid } = await
|
34
|
+
const { emploid } = await getSDKForService();
|
35
35
|
//@ts-ignore
|
36
36
|
const app = await emploid.DeleteEmploid(parsedInput);
|
37
37
|
return app;
|
@@ -45,7 +45,7 @@ export const DeleteEmploid = async (parsedInput) => {
|
|
45
45
|
};
|
46
46
|
export const ListEmploids = async (parsedInput) => {
|
47
47
|
try {
|
48
|
-
const { emploid } = await
|
48
|
+
const { emploid } = await getSDKForService();
|
49
49
|
//@ts-ignore
|
50
50
|
const app = await emploid.ListEmploids(parsedInput);
|
51
51
|
return app;
|
@@ -59,7 +59,7 @@ export const ListEmploids = async (parsedInput) => {
|
|
59
59
|
};
|
60
60
|
export const ListEmploidsPaginated = async (parsedInput) => {
|
61
61
|
try {
|
62
|
-
const { emploid } = await
|
62
|
+
const { emploid } = await getSDKForService();
|
63
63
|
//@ts-ignore
|
64
64
|
const app = await emploid.ListEmploidsPaginated(parsedInput);
|
65
65
|
return app;
|
@@ -73,7 +73,7 @@ export const ListEmploidsPaginated = async (parsedInput) => {
|
|
73
73
|
};
|
74
74
|
export const ListScopes = async (parsedInput) => {
|
75
75
|
try {
|
76
|
-
const { emploid } = await
|
76
|
+
const { emploid } = await getSDKForService();
|
77
77
|
//@ts-ignore
|
78
78
|
const app = await emploid.ListScopes(parsedInput);
|
79
79
|
return app;
|
@@ -87,7 +87,7 @@ export const ListScopes = async (parsedInput) => {
|
|
87
87
|
};
|
88
88
|
export const CreateOccupation = async (parsedInput) => {
|
89
89
|
try {
|
90
|
-
const { emploid } = await
|
90
|
+
const { emploid } = await getSDKForService();
|
91
91
|
//@ts-ignore
|
92
92
|
const app = await emploid.CreateOccupation(parsedInput);
|
93
93
|
return app;
|
@@ -101,7 +101,7 @@ export const CreateOccupation = async (parsedInput) => {
|
|
101
101
|
};
|
102
102
|
export const UpdateOccupation = async (parsedInput) => {
|
103
103
|
try {
|
104
|
-
const { emploid } = await
|
104
|
+
const { emploid } = await getSDKForService();
|
105
105
|
//@ts-ignore
|
106
106
|
const app = await emploid.UpdateOccupation(parsedInput);
|
107
107
|
return app;
|
@@ -115,7 +115,7 @@ export const UpdateOccupation = async (parsedInput) => {
|
|
115
115
|
};
|
116
116
|
export const DeleteOccupation = async (parsedInput) => {
|
117
117
|
try {
|
118
|
-
const { emploid } = await
|
118
|
+
const { emploid } = await getSDKForService();
|
119
119
|
//@ts-ignore
|
120
120
|
const app = await emploid.DeleteOccupation(parsedInput);
|
121
121
|
return app;
|
@@ -129,7 +129,7 @@ export const DeleteOccupation = async (parsedInput) => {
|
|
129
129
|
};
|
130
130
|
export const CreateScope = async (parsedInput) => {
|
131
131
|
try {
|
132
|
-
const { emploid } = await
|
132
|
+
const { emploid } = await getSDKForService();
|
133
133
|
//@ts-ignore
|
134
134
|
const app = await emploid.CreateScope(parsedInput);
|
135
135
|
return app;
|
@@ -143,7 +143,7 @@ export const CreateScope = async (parsedInput) => {
|
|
143
143
|
};
|
144
144
|
export const UpdateScope = async (parsedInput) => {
|
145
145
|
try {
|
146
|
-
const { emploid } = await
|
146
|
+
const { emploid } = await getSDKForService();
|
147
147
|
//@ts-ignore
|
148
148
|
const app = await emploid.UpdateScope(parsedInput);
|
149
149
|
return app;
|
@@ -157,7 +157,7 @@ export const UpdateScope = async (parsedInput) => {
|
|
157
157
|
};
|
158
158
|
export const DeleteScope = async (parsedInput) => {
|
159
159
|
try {
|
160
|
-
const { emploid } = await
|
160
|
+
const { emploid } = await getSDKForService();
|
161
161
|
//@ts-ignore
|
162
162
|
const app = await emploid.DeleteScope(parsedInput);
|
163
163
|
return app;
|
@@ -171,7 +171,7 @@ export const DeleteScope = async (parsedInput) => {
|
|
171
171
|
};
|
172
172
|
export const ListOccupations = async (parsedInput) => {
|
173
173
|
try {
|
174
|
-
const { emploid } = await
|
174
|
+
const { emploid } = await getSDKForService();
|
175
175
|
//@ts-ignore
|
176
176
|
const app = await emploid.ListOccupations(parsedInput);
|
177
177
|
return app;
|
@@ -185,7 +185,7 @@ export const ListOccupations = async (parsedInput) => {
|
|
185
185
|
};
|
186
186
|
export const CreateJobDefinition = async (parsedInput) => {
|
187
187
|
try {
|
188
|
-
const { emploid } = await
|
188
|
+
const { emploid } = await getSDKForService();
|
189
189
|
//@ts-ignore
|
190
190
|
const app = await emploid.CreateJobDefinition(parsedInput);
|
191
191
|
return app;
|
@@ -199,7 +199,7 @@ export const CreateJobDefinition = async (parsedInput) => {
|
|
199
199
|
};
|
200
200
|
export const UpdateJobDefinition = async (parsedInput) => {
|
201
201
|
try {
|
202
|
-
const { emploid } = await
|
202
|
+
const { emploid } = await getSDKForService();
|
203
203
|
//@ts-ignore
|
204
204
|
const app = await emploid.UpdateJobDefinition(parsedInput);
|
205
205
|
return app;
|
@@ -213,7 +213,7 @@ export const UpdateJobDefinition = async (parsedInput) => {
|
|
213
213
|
};
|
214
214
|
export const DeleteJobDefinition = async (parsedInput) => {
|
215
215
|
try {
|
216
|
-
const { emploid } = await
|
216
|
+
const { emploid } = await getSDKForService();
|
217
217
|
//@ts-ignore
|
218
218
|
const app = await emploid.DeleteJobDefinition(parsedInput);
|
219
219
|
return app;
|
@@ -227,7 +227,7 @@ export const DeleteJobDefinition = async (parsedInput) => {
|
|
227
227
|
};
|
228
228
|
export const ListJobDefinitions = async (parsedInput) => {
|
229
229
|
try {
|
230
|
-
const { emploid } = await
|
230
|
+
const { emploid } = await getSDKForService();
|
231
231
|
//@ts-ignore
|
232
232
|
const app = await emploid.ListJobDefinitions(parsedInput);
|
233
233
|
return app;
|
@@ -241,7 +241,7 @@ export const ListJobDefinitions = async (parsedInput) => {
|
|
241
241
|
};
|
242
242
|
export const CreateCompetency = async (parsedInput) => {
|
243
243
|
try {
|
244
|
-
const { emploid } = await
|
244
|
+
const { emploid } = await getSDKForService();
|
245
245
|
//@ts-ignore
|
246
246
|
const app = await emploid.CreateCompetency(parsedInput);
|
247
247
|
return app;
|
@@ -255,7 +255,7 @@ export const CreateCompetency = async (parsedInput) => {
|
|
255
255
|
};
|
256
256
|
export const UpdateCompetency = async (parsedInput) => {
|
257
257
|
try {
|
258
|
-
const { emploid } = await
|
258
|
+
const { emploid } = await getSDKForService();
|
259
259
|
//@ts-ignore
|
260
260
|
const app = await emploid.UpdateCompetency(parsedInput);
|
261
261
|
return app;
|
@@ -269,7 +269,7 @@ export const UpdateCompetency = async (parsedInput) => {
|
|
269
269
|
};
|
270
270
|
export const DeleteCompetency = async (parsedInput) => {
|
271
271
|
try {
|
272
|
-
const { emploid } = await
|
272
|
+
const { emploid } = await getSDKForService();
|
273
273
|
//@ts-ignore
|
274
274
|
const app = await emploid.DeleteCompetency(parsedInput);
|
275
275
|
return app;
|
@@ -283,7 +283,7 @@ export const DeleteCompetency = async (parsedInput) => {
|
|
283
283
|
};
|
284
284
|
export const ListCompetencies = async (parsedInput) => {
|
285
285
|
try {
|
286
|
-
const { emploid } = await
|
286
|
+
const { emploid } = await getSDKForService();
|
287
287
|
//@ts-ignore
|
288
288
|
const app = await emploid.ListCompetencies(parsedInput);
|
289
289
|
return app;
|
@@ -297,7 +297,7 @@ export const ListCompetencies = async (parsedInput) => {
|
|
297
297
|
};
|
298
298
|
export const CreateAgentFlow = async (parsedInput) => {
|
299
299
|
try {
|
300
|
-
const { emploid } = await
|
300
|
+
const { emploid } = await getSDKForService();
|
301
301
|
//@ts-ignore
|
302
302
|
const app = await emploid.CreateAgentFlow(parsedInput);
|
303
303
|
return app;
|
@@ -311,7 +311,7 @@ export const CreateAgentFlow = async (parsedInput) => {
|
|
311
311
|
};
|
312
312
|
export const ListAgentFlows = async (parsedInput) => {
|
313
313
|
try {
|
314
|
-
const { emploid } = await
|
314
|
+
const { emploid } = await getSDKForService();
|
315
315
|
//@ts-ignore
|
316
316
|
const app = await emploid.ListAgentFlows(parsedInput);
|
317
317
|
return app;
|
@@ -325,7 +325,7 @@ export const ListAgentFlows = async (parsedInput) => {
|
|
325
325
|
};
|
326
326
|
export const CreateExtension = async (parsedInput) => {
|
327
327
|
try {
|
328
|
-
const { emploid } = await
|
328
|
+
const { emploid } = await getSDKForService();
|
329
329
|
//@ts-ignore
|
330
330
|
const app = await emploid.CreateExtension(parsedInput);
|
331
331
|
return app;
|
@@ -339,7 +339,7 @@ export const CreateExtension = async (parsedInput) => {
|
|
339
339
|
};
|
340
340
|
export const ListExtensions = async (parsedInput) => {
|
341
341
|
try {
|
342
|
-
const { emploid } = await
|
342
|
+
const { emploid } = await getSDKForService();
|
343
343
|
//@ts-ignore
|
344
344
|
const app = await emploid.ListExtensions(parsedInput);
|
345
345
|
return app;
|
@@ -353,7 +353,7 @@ export const ListExtensions = async (parsedInput) => {
|
|
353
353
|
};
|
354
354
|
export const CreateAssistant = async (parsedInput) => {
|
355
355
|
try {
|
356
|
-
const { emploid } = await
|
356
|
+
const { emploid } = await getSDKForService();
|
357
357
|
//@ts-ignore
|
358
358
|
const app = await emploid.CreateAssistant(parsedInput);
|
359
359
|
return app;
|
@@ -367,7 +367,7 @@ export const CreateAssistant = async (parsedInput) => {
|
|
367
367
|
};
|
368
368
|
export const UpdateAssistant = async (parsedInput) => {
|
369
369
|
try {
|
370
|
-
const { emploid } = await
|
370
|
+
const { emploid } = await getSDKForService();
|
371
371
|
//@ts-ignore
|
372
372
|
const app = await emploid.UpdateAssistant(parsedInput);
|
373
373
|
return app;
|
@@ -381,7 +381,7 @@ export const UpdateAssistant = async (parsedInput) => {
|
|
381
381
|
};
|
382
382
|
export const DeleteAssistant = async (parsedInput) => {
|
383
383
|
try {
|
384
|
-
const { emploid } = await
|
384
|
+
const { emploid } = await getSDKForService();
|
385
385
|
//@ts-ignore
|
386
386
|
const app = await emploid.DeleteAssistant(parsedInput);
|
387
387
|
return app;
|
@@ -395,7 +395,7 @@ export const DeleteAssistant = async (parsedInput) => {
|
|
395
395
|
};
|
396
396
|
export const ListAssistants = async (parsedInput) => {
|
397
397
|
try {
|
398
|
-
const { emploid } = await
|
398
|
+
const { emploid } = await getSDKForService();
|
399
399
|
//@ts-ignore
|
400
400
|
const app = await emploid.ListAssistants(parsedInput);
|
401
401
|
return app;
|
@@ -409,7 +409,7 @@ export const ListAssistants = async (parsedInput) => {
|
|
409
409
|
};
|
410
410
|
export const CreateWorker = async (parsedInput) => {
|
411
411
|
try {
|
412
|
-
const { emploid } = await
|
412
|
+
const { emploid } = await getSDKForService();
|
413
413
|
//@ts-ignore
|
414
414
|
const app = await emploid.CreateWorker(parsedInput);
|
415
415
|
return app;
|
@@ -423,7 +423,7 @@ export const CreateWorker = async (parsedInput) => {
|
|
423
423
|
};
|
424
424
|
export const UpdateWorker = async (parsedInput) => {
|
425
425
|
try {
|
426
|
-
const { emploid } = await
|
426
|
+
const { emploid } = await getSDKForService();
|
427
427
|
//@ts-ignore
|
428
428
|
const app = await emploid.UpdateWorker(parsedInput);
|
429
429
|
return app;
|
@@ -437,7 +437,7 @@ export const UpdateWorker = async (parsedInput) => {
|
|
437
437
|
};
|
438
438
|
export const DeleteWorker = async (parsedInput) => {
|
439
439
|
try {
|
440
|
-
const { emploid } = await
|
440
|
+
const { emploid } = await getSDKForService();
|
441
441
|
//@ts-ignore
|
442
442
|
const app = await emploid.DeleteWorker(parsedInput);
|
443
443
|
return app;
|
@@ -451,7 +451,7 @@ export const DeleteWorker = async (parsedInput) => {
|
|
451
451
|
};
|
452
452
|
export const ListWorkers = async (parsedInput) => {
|
453
453
|
try {
|
454
|
-
const { emploid } = await
|
454
|
+
const { emploid } = await getSDKForService();
|
455
455
|
//@ts-ignore
|
456
456
|
const app = await emploid.ListWorkers(parsedInput);
|
457
457
|
return app;
|
@@ -465,7 +465,7 @@ export const ListWorkers = async (parsedInput) => {
|
|
465
465
|
};
|
466
466
|
export const CreateInput = async (parsedInput) => {
|
467
467
|
try {
|
468
|
-
const { emploid } = await
|
468
|
+
const { emploid } = await getSDKForService();
|
469
469
|
//@ts-ignore
|
470
470
|
const app = await emploid.CreateInput(parsedInput);
|
471
471
|
return app;
|
@@ -479,7 +479,7 @@ export const CreateInput = async (parsedInput) => {
|
|
479
479
|
};
|
480
480
|
export const UpdateInput = async (parsedInput) => {
|
481
481
|
try {
|
482
|
-
const { emploid } = await
|
482
|
+
const { emploid } = await getSDKForService();
|
483
483
|
//@ts-ignore
|
484
484
|
const app = await emploid.UpdateInput(parsedInput);
|
485
485
|
return app;
|
@@ -493,7 +493,7 @@ export const UpdateInput = async (parsedInput) => {
|
|
493
493
|
};
|
494
494
|
export const DeleteInput = async (parsedInput) => {
|
495
495
|
try {
|
496
|
-
const { emploid } = await
|
496
|
+
const { emploid } = await getSDKForService();
|
497
497
|
//@ts-ignore
|
498
498
|
const app = await emploid.DeleteInput(parsedInput);
|
499
499
|
return app;
|
@@ -507,7 +507,7 @@ export const DeleteInput = async (parsedInput) => {
|
|
507
507
|
};
|
508
508
|
export const ListInputs = async (parsedInput) => {
|
509
509
|
try {
|
510
|
-
const { emploid } = await
|
510
|
+
const { emploid } = await getSDKForService();
|
511
511
|
//@ts-ignore
|
512
512
|
const app = await emploid.ListInputs(parsedInput);
|
513
513
|
return app;
|
@@ -521,7 +521,7 @@ export const ListInputs = async (parsedInput) => {
|
|
521
521
|
};
|
522
522
|
export const CreateTeam = async (parsedInput) => {
|
523
523
|
try {
|
524
|
-
const { emploid } = await
|
524
|
+
const { emploid } = await getSDKForService();
|
525
525
|
//@ts-ignore
|
526
526
|
const app = await emploid.CreateTeam(parsedInput);
|
527
527
|
return app;
|
@@ -535,7 +535,7 @@ export const CreateTeam = async (parsedInput) => {
|
|
535
535
|
};
|
536
536
|
export const UpdateTeam = async (parsedInput) => {
|
537
537
|
try {
|
538
|
-
const { emploid } = await
|
538
|
+
const { emploid } = await getSDKForService();
|
539
539
|
//@ts-ignore
|
540
540
|
const app = await emploid.UpdateTeam(parsedInput);
|
541
541
|
return app;
|
@@ -549,7 +549,7 @@ export const UpdateTeam = async (parsedInput) => {
|
|
549
549
|
};
|
550
550
|
export const DeleteTeam = async (parsedInput) => {
|
551
551
|
try {
|
552
|
-
const { emploid } = await
|
552
|
+
const { emploid } = await getSDKForService();
|
553
553
|
//@ts-ignore
|
554
554
|
const app = await emploid.DeleteTeam(parsedInput);
|
555
555
|
return app;
|
@@ -563,7 +563,7 @@ export const DeleteTeam = async (parsedInput) => {
|
|
563
563
|
};
|
564
564
|
export const ListTeams = async (parsedInput) => {
|
565
565
|
try {
|
566
|
-
const { emploid } = await
|
566
|
+
const { emploid } = await getSDKForService();
|
567
567
|
//@ts-ignore
|
568
568
|
const app = await emploid.ListTeams(parsedInput);
|
569
569
|
return app;
|
@@ -577,7 +577,7 @@ export const ListTeams = async (parsedInput) => {
|
|
577
577
|
};
|
578
578
|
export const SaveChat = async (parsedInput) => {
|
579
579
|
try {
|
580
|
-
const { emploid } = await
|
580
|
+
const { emploid } = await getSDKForService();
|
581
581
|
//@ts-ignore
|
582
582
|
const app = await emploid.SaveChat(parsedInput);
|
583
583
|
return app;
|
@@ -591,7 +591,7 @@ export const SaveChat = async (parsedInput) => {
|
|
591
591
|
};
|
592
592
|
export const DeleteChatById = async (parsedInput) => {
|
593
593
|
try {
|
594
|
-
const { emploid } = await
|
594
|
+
const { emploid } = await getSDKForService();
|
595
595
|
//@ts-ignore
|
596
596
|
const app = await emploid.DeleteChatById(parsedInput);
|
597
597
|
return app;
|
@@ -605,7 +605,7 @@ export const DeleteChatById = async (parsedInput) => {
|
|
605
605
|
};
|
606
606
|
export const GetChatById = async (parsedInput) => {
|
607
607
|
try {
|
608
|
-
const { emploid } = await
|
608
|
+
const { emploid } = await getSDKForService();
|
609
609
|
//@ts-ignore
|
610
610
|
const app = await emploid.GetChatById(parsedInput);
|
611
611
|
return app;
|
@@ -619,7 +619,7 @@ export const GetChatById = async (parsedInput) => {
|
|
619
619
|
};
|
620
620
|
export const GetChatsByUserId = async (parsedInput) => {
|
621
621
|
try {
|
622
|
-
const { emploid } = await
|
622
|
+
const { emploid } = await getSDKForService();
|
623
623
|
//@ts-ignore
|
624
624
|
const app = await emploid.GetChatsByUserId(parsedInput);
|
625
625
|
return app;
|
@@ -633,7 +633,7 @@ export const GetChatsByUserId = async (parsedInput) => {
|
|
633
633
|
};
|
634
634
|
export const SaveMessages = async (parsedInput) => {
|
635
635
|
try {
|
636
|
-
const { emploid } = await
|
636
|
+
const { emploid } = await getSDKForService();
|
637
637
|
//@ts-ignore
|
638
638
|
const app = await emploid.SaveMessages(parsedInput);
|
639
639
|
return app;
|
@@ -647,7 +647,7 @@ export const SaveMessages = async (parsedInput) => {
|
|
647
647
|
};
|
648
648
|
export const GetMessagesByChatId = async (parsedInput) => {
|
649
649
|
try {
|
650
|
-
const { emploid } = await
|
650
|
+
const { emploid } = await getSDKForService();
|
651
651
|
//@ts-ignore
|
652
652
|
const app = await emploid.GetMessagesByChatId(parsedInput);
|
653
653
|
return app;
|
@@ -661,7 +661,7 @@ export const GetMessagesByChatId = async (parsedInput) => {
|
|
661
661
|
};
|
662
662
|
export const GetMessageById = async (parsedInput) => {
|
663
663
|
try {
|
664
|
-
const { emploid } = await
|
664
|
+
const { emploid } = await getSDKForService();
|
665
665
|
//@ts-ignore
|
666
666
|
const app = await emploid.GetMessageById(parsedInput);
|
667
667
|
return app;
|
@@ -675,7 +675,7 @@ export const GetMessageById = async (parsedInput) => {
|
|
675
675
|
};
|
676
676
|
export const VoteMessage = async (parsedInput) => {
|
677
677
|
try {
|
678
|
-
const { emploid } = await
|
678
|
+
const { emploid } = await getSDKForService();
|
679
679
|
//@ts-ignore
|
680
680
|
const app = await emploid.VoteMessage(parsedInput);
|
681
681
|
return app;
|
@@ -689,7 +689,7 @@ export const VoteMessage = async (parsedInput) => {
|
|
689
689
|
};
|
690
690
|
export const GetVotesByChatId = async (parsedInput) => {
|
691
691
|
try {
|
692
|
-
const { emploid } = await
|
692
|
+
const { emploid } = await getSDKForService();
|
693
693
|
//@ts-ignore
|
694
694
|
const app = await emploid.GetVotesByChatId(parsedInput);
|
695
695
|
return app;
|
@@ -703,7 +703,7 @@ export const GetVotesByChatId = async (parsedInput) => {
|
|
703
703
|
};
|
704
704
|
export const DeleteDocumentsByIdAfterTimestamp = async (parsedInput) => {
|
705
705
|
try {
|
706
|
-
const { emploid } = await
|
706
|
+
const { emploid } = await getSDKForService();
|
707
707
|
//@ts-ignore
|
708
708
|
const app = await emploid.DeleteDocumentsByIdAfterTimestamp(parsedInput);
|
709
709
|
return app;
|
@@ -717,7 +717,7 @@ export const DeleteDocumentsByIdAfterTimestamp = async (parsedInput) => {
|
|
717
717
|
};
|
718
718
|
export const SaveSuggestions = async (parsedInput) => {
|
719
719
|
try {
|
720
|
-
const { emploid } = await
|
720
|
+
const { emploid } = await getSDKForService();
|
721
721
|
//@ts-ignore
|
722
722
|
const app = await emploid.SaveSuggestions(parsedInput);
|
723
723
|
return app;
|
@@ -731,7 +731,7 @@ export const SaveSuggestions = async (parsedInput) => {
|
|
731
731
|
};
|
732
732
|
export const GetSuggestionsByDocumentId = async (parsedInput) => {
|
733
733
|
try {
|
734
|
-
const { emploid } = await
|
734
|
+
const { emploid } = await getSDKForService();
|
735
735
|
//@ts-ignore
|
736
736
|
const app = await emploid.GetSuggestionsByDocumentId(parsedInput);
|
737
737
|
return app;
|
@@ -745,7 +745,7 @@ export const GetSuggestionsByDocumentId = async (parsedInput) => {
|
|
745
745
|
};
|
746
746
|
export const DeleteMessagesByChatIdAfterTimestamp = async (parsedInput) => {
|
747
747
|
try {
|
748
|
-
const { emploid } = await
|
748
|
+
const { emploid } = await getSDKForService();
|
749
749
|
//@ts-ignore
|
750
750
|
const app = await emploid.DeleteMessagesByChatIdAfterTimestamp(parsedInput);
|
751
751
|
return app;
|
@@ -759,7 +759,7 @@ export const DeleteMessagesByChatIdAfterTimestamp = async (parsedInput) => {
|
|
759
759
|
};
|
760
760
|
export const UpdateChatVisiblityById = async (parsedInput) => {
|
761
761
|
try {
|
762
|
-
const { emploid } = await
|
762
|
+
const { emploid } = await getSDKForService();
|
763
763
|
//@ts-ignore
|
764
764
|
const app = await emploid.UpdateChatVisiblityById(parsedInput);
|
765
765
|
return app;
|
@@ -773,7 +773,7 @@ export const UpdateChatVisiblityById = async (parsedInput) => {
|
|
773
773
|
};
|
774
774
|
export const UpdateChatLastContextById = async (parsedInput) => {
|
775
775
|
try {
|
776
|
-
const { emploid } = await
|
776
|
+
const { emploid } = await getSDKForService();
|
777
777
|
//@ts-ignore
|
778
778
|
const app = await emploid.UpdateChatLastContextById(parsedInput);
|
779
779
|
return app;
|
@@ -787,7 +787,7 @@ export const UpdateChatLastContextById = async (parsedInput) => {
|
|
787
787
|
};
|
788
788
|
export const GetMessageCountByUserId = async (parsedInput) => {
|
789
789
|
try {
|
790
|
-
const { emploid } = await
|
790
|
+
const { emploid } = await getSDKForService();
|
791
791
|
//@ts-ignore
|
792
792
|
const app = await emploid.GetMessageCountByUserId(parsedInput);
|
793
793
|
return app;
|
@@ -801,7 +801,7 @@ export const GetMessageCountByUserId = async (parsedInput) => {
|
|
801
801
|
};
|
802
802
|
export const CreateStreamId = async (parsedInput) => {
|
803
803
|
try {
|
804
|
-
const { emploid } = await
|
804
|
+
const { emploid } = await getSDKForService();
|
805
805
|
//@ts-ignore
|
806
806
|
const app = await emploid.CreateStreamId(parsedInput);
|
807
807
|
return app;
|
@@ -815,7 +815,7 @@ export const CreateStreamId = async (parsedInput) => {
|
|
815
815
|
};
|
816
816
|
export const GetStreamIdsByChatId = async (parsedInput) => {
|
817
817
|
try {
|
818
|
-
const { emploid } = await
|
818
|
+
const { emploid } = await getSDKForService();
|
819
819
|
//@ts-ignore
|
820
820
|
const app = await emploid.GetStreamIdsByChatId(parsedInput);
|
821
821
|
return app;
|
@@ -829,7 +829,7 @@ export const GetStreamIdsByChatId = async (parsedInput) => {
|
|
829
829
|
};
|
830
830
|
export const SaveDocument = async (parsedInput) => {
|
831
831
|
try {
|
832
|
-
const { emploid } = await
|
832
|
+
const { emploid } = await getSDKForService();
|
833
833
|
//@ts-ignore
|
834
834
|
const app = await emploid.SaveDocument(parsedInput);
|
835
835
|
return app;
|
@@ -843,7 +843,7 @@ export const SaveDocument = async (parsedInput) => {
|
|
843
843
|
};
|
844
844
|
export const GetDocumentById = async (parsedInput) => {
|
845
845
|
try {
|
846
|
-
const { emploid } = await
|
846
|
+
const { emploid } = await getSDKForService();
|
847
847
|
//@ts-ignore
|
848
848
|
const app = await emploid.GetDocumentById(parsedInput);
|
849
849
|
return app;
|
@@ -857,7 +857,7 @@ export const GetDocumentById = async (parsedInput) => {
|
|
857
857
|
};
|
858
858
|
export const GetDocumentsById = async (parsedInput) => {
|
859
859
|
try {
|
860
|
-
const { emploid } = await
|
860
|
+
const { emploid } = await getSDKForService();
|
861
861
|
//@ts-ignore
|
862
862
|
const app = await emploid.GetDocumentsById(parsedInput);
|
863
863
|
return app;
|
@@ -871,7 +871,7 @@ export const GetDocumentsById = async (parsedInput) => {
|
|
871
871
|
};
|
872
872
|
export const CreateSkill = async (parsedInput) => {
|
873
873
|
try {
|
874
|
-
const { emploid } = await
|
874
|
+
const { emploid } = await getSDKForService();
|
875
875
|
//@ts-ignore
|
876
876
|
const app = await emploid.CreateSkill(parsedInput);
|
877
877
|
return app;
|
@@ -885,7 +885,7 @@ export const CreateSkill = async (parsedInput) => {
|
|
885
885
|
};
|
886
886
|
export const UpdateSkill = async (parsedInput) => {
|
887
887
|
try {
|
888
|
-
const { emploid } = await
|
888
|
+
const { emploid } = await getSDKForService();
|
889
889
|
//@ts-ignore
|
890
890
|
const app = await emploid.UpdateSkill(parsedInput);
|
891
891
|
return app;
|
@@ -899,7 +899,7 @@ export const UpdateSkill = async (parsedInput) => {
|
|
899
899
|
};
|
900
900
|
export const DeleteSkill = async (parsedInput) => {
|
901
901
|
try {
|
902
|
-
const { emploid } = await
|
902
|
+
const { emploid } = await getSDKForService();
|
903
903
|
//@ts-ignore
|
904
904
|
const app = await emploid.DeleteSkill(parsedInput);
|
905
905
|
return app;
|
@@ -913,7 +913,7 @@ export const DeleteSkill = async (parsedInput) => {
|
|
913
913
|
};
|
914
914
|
export const ListSkills = async (parsedInput) => {
|
915
915
|
try {
|
916
|
-
const { emploid } = await
|
916
|
+
const { emploid } = await getSDKForService();
|
917
917
|
//@ts-ignore
|
918
918
|
const app = await emploid.ListSkills(parsedInput);
|
919
919
|
return app;
|
@@ -925,4 +925,4 @@ export const ListSkills = async (parsedInput) => {
|
|
925
925
|
throw error;
|
926
926
|
}
|
927
927
|
};
|
928
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZHVsZXMvZW1wbG9pZC9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDO0FBR2IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSWxFLE1BQU0sQ0FBQyxLQUFLLFVBQVUsYUFBYSxDQUFDLFdBQWdEO0lBQ2hGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLG9CQUFvQixFQUFFLENBQUM7UUFDakQsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUVMLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUFFLFdBQWdELEVBQXFCLEVBQUU7SUFDdkcsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sb0JBQW9CLEVBQUUsQ0FBQztRQUNqRCxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1B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OUUsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sb0JBQW9CLEVBQUUsQ0FBQztRQUNqRCxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInO1xuXG5pbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB7IEFwcGNvbmRhRXhjZXB0aW9uIH0gZnJvbSAnLi4vLi4vY2xpZW50JztcbmltcG9ydCB7IGdldFNES0ZvckN1cnJlbnRVc2VyIH0gZnJvbSAnLi4vLi4vZ2V0U0RLRm9yQ3VycmVudFVzZXInO1xuaW1wb3J0IHsgQ3JlYXRlQWdlbnRGbG93U2NoZW1hLCBDcmVhdGVBc3Npc3RhbnRTY2hlbWEsIENyZWF0ZUNvbXBldGVuY3lTY2hlbWEsIENyZWF0ZUVtcGxvaWRTY2hlbWEsIENyZWF0ZUV4dGVuc2lvblNjaGVtYSwgQ3JlYXRlSW5wdXRTY2hlbWEsIENyZWF0ZUpvYkRlZmluaXRpb25TY2hlbWEsIENyZWF0ZU9jY3VwYXRpb25TY2hlbWEsIENyZWF0ZVNjb3BlU2NoZW1hLCBDcmVhdGVTa2lsbFNjaGVtYSwgQ3JlYXRlU3RyZWFtSWRTY2hlbWEsIENyZWF0ZVRlYW1TY2hlbWEsIENyZWF0ZVdvcmtlclNjaGVtYSwgRGVsZXRlQXNzaXN0YW50U2NoZW1hLCBEZWxldGVDaGF0QnlJZFNjaGVtYSwgRGVsZXRlQ29tcGV0ZW5jeVNjaGVtYSwgRGVsZXRlRG9jdW1lbnRzQnlJZEFmdGVyVGltZXN0YW1wU2NoZW1hLCBEZWxldGVFbXBsb2lkU2NoZW1hLCBEZWxldGVJbnB1dFNjaGVtYSwgRGVsZXRlSm9iRGVmaW5pdGlvblNjaGVtYSwgRGVsZXRlTWVzc2FnZXNCeUNoYXRJZEFmdGVyVGltZXN0YW1wU2NoZW1hLCBEZWxldGVPY2N1cGF0aW9uU2NoZW1hLCBEZWxldGVTY29wZVNjaGVtYSwgRGVsZXRlU2tpbGxTY2hlbWEsIERlbGV0ZVRlYW1TY2hlbWEsIERlbGV0ZVdvcmtlclNjaGVtYSwgR2V0Q2hhdEJ5SWRTY2hlbWEsIEdldENoYXRzQnlVc2VySWRTY2hlbWEsIEdldERvY3VtZW50QnlJZFNjaGVtYSwgR2V0RG9jdW1lbnRzQnlJZFNjaGVtYSwgR2V0TWVzc2FnZUJ5SWRTY2hlbWEsIEdldE1lc3NhZ2VDb3VudEJ5VXNlcklkU2NoZW1hLCBHZXRNZXNzYWdlc0J5Q2hhdElkU2NoZW1hLCBHZXRTdHJlYW1JZHNCeUNoYXRJZFNjaGVtYSwgR2V0U3VnZ2VzdGlvbnNCeURvY3VtZW50SWRTY2hlbWEsIEdldFZvdGVzQnlDaGF0SWRTY2hlbWEsIExpc3RBZ2VudEZsb3dzU2NoZW1hLCBMaXN0QXNzaXN0YW50c1NjaGVtYSwgTGlzdENvbXBldGVuY2llc1NjaGVtYSwgTGlzdEVtcGxvaWRzUGFnaW5hdGVkU2NoZW1hLCBMaXN0RW1wbG9pZHNTY2hlbWEsIExpc3RFeHRlbnNpb25zU2NoZW1hLCBMaXN0SW5wdXRTY2hlbWEsIExpc3RKb2JEZWZpbml0aW9uU2NoZW1hLCBMaXN0T2NjdXBhdGlvbnNTY2hlbWEsIExpc3RTY29wZXNTY2hlbWEsIExpc3RTa2lsbHNTY2hlbWEsIExpc3RUZWFtc1NjaGVtYSwgTGlzdFdvcmtlcnNTY2hlbWEsIFNhdmVDaGF0U2NoZW1hLCBTYXZlRG9jdW1lbnRTY2hlbWEsIFNhdmVNZXNzYWdlc1NjaGVtYSwgU2F2ZVN1Z2dlc3Rpb25zU2NoZW1hLCBVcGRhdGVBc3Npc3RhbnRTY2hlbWEsIFVwZGF0ZUNoYXRMYXN0Q29udGV4dEJ5SWRTY2hlbWEsIFVwZGF0ZUNoYXRWaXNpYmxpdHlCeUlkU2NoZW1hLCBVcGRhdGVDb21wZXRlbmN5U2NoZW1hLCBVcGRhdGVFbXBsb2lkU2NoZW1hLCBVcGRhdGVJbnB1dFNjaGVtYSwgVXBkYXRlSm9iRGVmaW5pdGlvblNjaGVtYSwgVXBkYXRlT2NjdXBhdGlvblNjaGVtYSwgVXBkYXRlU2NvcGVTY2hlbWEsIFVwZGF0ZVNraWxsU2NoZW1hLCBVcGRhdGVUZWFtU2NoZW1hLCBVcGRhdGVXb3JrZXJTY2hlbWEsIFZvdGVNZXNzYWdlU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IHsgVEVtcGxvaWQgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIENyZWF0ZUVtcGxvaWQocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUVtcGxvaWRTY2hlbWE+KTogUHJvbWlzZTxURW1wbG9pZD4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlRW1wbG9pZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxufVxuXG5leHBvcnQgY29uc3QgVXBkYXRlRW1wbG9pZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgVXBkYXRlRW1wbG9pZFNjaGVtYT4pOiBQcm9taXNlPFRFbXBsb2lkPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5VcGRhdGVFbXBsb2lkKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgRGVsZXRlRW1wbG9pZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRW1wbG9pZFNjaGVtYT4pOiBQcm9taXNlPFRFbXBsb2lkPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5EZWxldGVFbXBsb2lkKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufVxuXG5cbmV4cG9ydCBjb25zdCBMaXN0RW1wbG9pZHMgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIExpc3RFbXBsb2lkc1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RFbXBsb2lkcyhwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaXN0RW1wbG9pZHNQYWdpbmF0ZWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIExpc3RFbXBsb2lkc1BhZ2luYXRlZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RFbXBsb2lkc1BhZ2luYXRlZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaXN0U2NvcGVzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0U2NvcGVzU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuTGlzdFNjb3BlcyhwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVPY2N1cGF0aW9uID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBDcmVhdGVPY2N1cGF0aW9uU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlT2NjdXBhdGlvbihwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVPY2N1cGF0aW9uID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVPY2N1cGF0aW9uU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlT2NjdXBhdGlvbihwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IERlbGV0ZU9jY3VwYXRpb24gPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZU9jY3VwYXRpb25TY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5EZWxldGVPY2N1cGF0aW9uKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufVxuXG5cbmV4cG9ydCBjb25zdCBDcmVhdGVTY29wZSA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlU2NvcGVTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5DcmVhdGVTY29wZShwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IFVwZGF0ZVNjb3BlID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVTY29wZVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLlVwZGF0ZVNjb3BlKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZVNjb3BlID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBEZWxldGVTY29wZVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkRlbGV0ZVNjb3BlKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuXG5leHBvcnQgY29uc3QgTGlzdE9jY3VwYXRpb25zID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0T2NjdXBhdGlvbnNTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5MaXN0T2NjdXBhdGlvbnMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlSm9iRGVmaW5pdGlvbiA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlSm9iRGVmaW5pdGlvblNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkNyZWF0ZUpvYkRlZmluaXRpb24ocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgVXBkYXRlSm9iRGVmaW5pdGlvbiA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgVXBkYXRlSm9iRGVmaW5pdGlvblNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLlVwZGF0ZUpvYkRlZmluaXRpb24ocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgRGVsZXRlSm9iRGVmaW5pdGlvbiA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgRGVsZXRlSm9iRGVmaW5pdGlvblNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkRlbGV0ZUpvYkRlZmluaXRpb24ocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdEpvYkRlZmluaXRpb25zID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0Sm9iRGVmaW5pdGlvblNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RKb2JEZWZpbml0aW9ucyhwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cblxuZXhwb3J0IGNvbnN0IENyZWF0ZUNvbXBldGVuY3kgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbXBldGVuY3lTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5DcmVhdGVDb21wZXRlbmN5KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFVwZGF0ZUNvbXBldGVuY3kgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbXBldGVuY3lTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5VcGRhdGVDb21wZXRlbmN5KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUNvbXBldGVuY3kgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbXBldGVuY3lTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5EZWxldGVDb21wZXRlbmN5KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExpc3RDb21wZXRlbmNpZXMgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb21wZXRlbmNpZXNTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5MaXN0Q29tcGV0ZW5jaWVzKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZUFnZW50RmxvdyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQWdlbnRGbG93U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlQWdlbnRGbG93KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExpc3RBZ2VudEZsb3dzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0QWdlbnRGbG93c1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RBZ2VudEZsb3dzKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZUV4dGVuc2lvbiA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRXh0ZW5zaW9uU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlRXh0ZW5zaW9uKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExpc3RFeHRlbnNpb25zID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0RXh0ZW5zaW9uc1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RFeHRlbnNpb25zKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZUFzc2lzdGFudCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlQXNzaXN0YW50KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFVwZGF0ZUFzc2lzdGFudCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQXNzaXN0YW50U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlQXNzaXN0YW50KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUFzc2lzdGFudCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQXNzaXN0YW50U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuRGVsZXRlQXNzaXN0YW50KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExpc3RBc3Npc3RhbnRzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50c1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RBc3Npc3RhbnRzKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZVdvcmtlciA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlV29ya2VyU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlV29ya2VyKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFVwZGF0ZVdvcmtlciA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgVXBkYXRlV29ya2VyU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlV29ya2VyKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZVdvcmtlciA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgRGVsZXRlV29ya2VyU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuRGVsZXRlV29ya2VyKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExpc3RXb3JrZXJzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0V29ya2Vyc1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RXb3JrZXJzKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZUlucHV0ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBDcmVhdGVJbnB1dFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkNyZWF0ZUlucHV0KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFVwZGF0ZUlucHV0ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVJbnB1dFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLlVwZGF0ZUlucHV0KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUlucHV0ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBEZWxldGVJbnB1dFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkRlbGV0ZUlucHV0KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExpc3RJbnB1dHMgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIExpc3RJbnB1dFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RJbnB1dHMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlVGVhbSA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlVGVhbVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkNyZWF0ZVRlYW0ocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgVXBkYXRlVGVhbSA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgVXBkYXRlVGVhbVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLlVwZGF0ZVRlYW0ocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgRGVsZXRlVGVhbSA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgRGVsZXRlVGVhbVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkRlbGV0ZVRlYW0ocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdFRlYW1zID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0VGVhbXNTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5MaXN0VGVhbXMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgU2F2ZUNoYXQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIFNhdmVDaGF0U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuU2F2ZUNoYXQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgRGVsZXRlQ2hhdEJ5SWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNoYXRCeUlkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuRGVsZXRlQ2hhdEJ5SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0Q2hhdEJ5SWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIEdldENoYXRCeUlkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuR2V0Q2hhdEJ5SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0Q2hhdHNCeVVzZXJJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0Q2hhdHNCeVVzZXJJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkdldENoYXRzQnlVc2VySWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgU2F2ZU1lc3NhZ2VzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBTYXZlTWVzc2FnZXNTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5TYXZlTWVzc2FnZXMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0TWVzc2FnZXNCeUNoYXRJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0TWVzc2FnZXNCeUNoYXRJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkdldE1lc3NhZ2VzQnlDaGF0SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0TWVzc2FnZUJ5SWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIEdldE1lc3NhZ2VCeUlkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuR2V0TWVzc2FnZUJ5SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgVm90ZU1lc3NhZ2UgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIFZvdGVNZXNzYWdlU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVm90ZU1lc3NhZ2UocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0Vm90ZXNCeUNoYXRJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0Vm90ZXNCeUNoYXRJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkdldFZvdGVzQnlDaGF0SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgRGVsZXRlRG9jdW1lbnRzQnlJZEFmdGVyVGltZXN0YW1wID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBEZWxldGVEb2N1bWVudHNCeUlkQWZ0ZXJUaW1lc3RhbXBTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5EZWxldGVEb2N1bWVudHNCeUlkQWZ0ZXJUaW1lc3RhbXAocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgU2F2ZVN1Z2dlc3Rpb25zID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBTYXZlU3VnZ2VzdGlvbnNTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5TYXZlU3VnZ2VzdGlvbnMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0U3VnZ2VzdGlvbnNCeURvY3VtZW50SWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIEdldFN1Z2dlc3Rpb25zQnlEb2N1bWVudElkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuR2V0U3VnZ2VzdGlvbnNCeURvY3VtZW50SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgRGVsZXRlTWVzc2FnZXNCeUNoYXRJZEFmdGVyVGltZXN0YW1wID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBEZWxldGVNZXNzYWdlc0J5Q2hhdElkQWZ0ZXJUaW1lc3RhbXBTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5EZWxldGVNZXNzYWdlc0J5Q2hhdElkQWZ0ZXJUaW1lc3RhbXAocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgVXBkYXRlQ2hhdFZpc2libGl0eUJ5SWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNoYXRWaXNpYmxpdHlCeUlkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlQ2hhdFZpc2libGl0eUJ5SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLlVwZGF0ZUNoYXRMYXN0Q29udGV4dEJ5SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0TWVzc2FnZUNvdW50QnlVc2VySWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIEdldE1lc3NhZ2VDb3VudEJ5VXNlcklkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuR2V0TWVzc2FnZUNvdW50QnlVc2VySWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlU3RyZWFtSWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVN0cmVhbUlkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlU3RyZWFtSWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0U3RyZWFtSWRzQnlDaGF0SWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIEdldFN0cmVhbUlkc0J5Q2hhdElkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuR2V0U3RyZWFtSWRzQnlDaGF0SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgU2F2ZURvY3VtZW50ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBTYXZlRG9jdW1lbnRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5TYXZlRG9jdW1lbnQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0RG9jdW1lbnRCeUlkID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBHZXREb2N1bWVudEJ5SWRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5HZXREb2N1bWVudEJ5SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0RG9jdW1lbnRzQnlJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0RG9jdW1lbnRzQnlJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkdldERvY3VtZW50c0J5SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlU2tpbGwgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVNraWxsU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlU2tpbGwocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgVXBkYXRlU2tpbGwgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVNraWxsU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlU2tpbGwocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgRGVsZXRlU2tpbGwgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVNraWxsU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuRGVsZXRlU2tpbGwocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdFNraWxscyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgTGlzdFNraWxsc1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RTa2lsbHMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG4iXX0=
|
928
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZHVsZXMvZW1wbG9pZC9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDO0FBR2IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFELE1BQU0sQ0FBQyxLQUFLLFVBQVUsYUFBYSxDQUFDLFdBQWdEO0lBQ2hGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUVMLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUFFLFdBQWdELEVBQXFCLEVBQUU7SUFDdkcsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1B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OUUsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxZQUFZO1FBQ1osTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzZXJ2ZXInO1xuXG5pbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB7IEFwcGNvbmRhRXhjZXB0aW9uIH0gZnJvbSAnLi4vLi4vY2xpZW50JztcbmltcG9ydCB7IENyZWF0ZUFnZW50Rmxvd1NjaGVtYSwgQ3JlYXRlQXNzaXN0YW50U2NoZW1hLCBDcmVhdGVDb21wZXRlbmN5U2NoZW1hLCBDcmVhdGVFbXBsb2lkU2NoZW1hLCBDcmVhdGVFeHRlbnNpb25TY2hlbWEsIENyZWF0ZUlucHV0U2NoZW1hLCBDcmVhdGVKb2JEZWZpbml0aW9uU2NoZW1hLCBDcmVhdGVPY2N1cGF0aW9uU2NoZW1hLCBDcmVhdGVTY29wZVNjaGVtYSwgQ3JlYXRlU2tpbGxTY2hlbWEsIENyZWF0ZVN0cmVhbUlkU2NoZW1hLCBDcmVhdGVUZWFtU2NoZW1hLCBDcmVhdGVXb3JrZXJTY2hlbWEsIERlbGV0ZUFzc2lzdGFudFNjaGVtYSwgRGVsZXRlQ2hhdEJ5SWRTY2hlbWEsIERlbGV0ZUNvbXBldGVuY3lTY2hlbWEsIERlbGV0ZURvY3VtZW50c0J5SWRBZnRlclRpbWVzdGFtcFNjaGVtYSwgRGVsZXRlRW1wbG9pZFNjaGVtYSwgRGVsZXRlSW5wdXRTY2hlbWEsIERlbGV0ZUpvYkRlZmluaXRpb25TY2hlbWEsIERlbGV0ZU1lc3NhZ2VzQnlDaGF0SWRBZnRlclRpbWVzdGFtcFNjaGVtYSwgRGVsZXRlT2NjdXBhdGlvblNjaGVtYSwgRGVsZXRlU2NvcGVTY2hlbWEsIERlbGV0ZVNraWxsU2NoZW1hLCBEZWxldGVUZWFtU2NoZW1hLCBEZWxldGVXb3JrZXJTY2hlbWEsIEdldENoYXRCeUlkU2NoZW1hLCBHZXRDaGF0c0J5VXNlcklkU2NoZW1hLCBHZXREb2N1bWVudEJ5SWRTY2hlbWEsIEdldERvY3VtZW50c0J5SWRTY2hlbWEsIEdldE1lc3NhZ2VCeUlkU2NoZW1hLCBHZXRNZXNzYWdlQ291bnRCeVVzZXJJZFNjaGVtYSwgR2V0TWVzc2FnZXNCeUNoYXRJZFNjaGVtYSwgR2V0U3RyZWFtSWRzQnlDaGF0SWRTY2hlbWEsIEdldFN1Z2dlc3Rpb25zQnlEb2N1bWVudElkU2NoZW1hLCBHZXRWb3Rlc0J5Q2hhdElkU2NoZW1hLCBMaXN0QWdlbnRGbG93c1NjaGVtYSwgTGlzdEFzc2lzdGFudHNTY2hlbWEsIExpc3RDb21wZXRlbmNpZXNTY2hlbWEsIExpc3RFbXBsb2lkc1BhZ2luYXRlZFNjaGVtYSwgTGlzdEVtcGxvaWRzU2NoZW1hLCBMaXN0RXh0ZW5zaW9uc1NjaGVtYSwgTGlzdElucHV0U2NoZW1hLCBMaXN0Sm9iRGVmaW5pdGlvblNjaGVtYSwgTGlzdE9jY3VwYXRpb25zU2NoZW1hLCBMaXN0U2NvcGVzU2NoZW1hLCBMaXN0U2tpbGxzU2NoZW1hLCBMaXN0VGVhbXNTY2hlbWEsIExpc3RXb3JrZXJzU2NoZW1hLCBTYXZlQ2hhdFNjaGVtYSwgU2F2ZURvY3VtZW50U2NoZW1hLCBTYXZlTWVzc2FnZXNTY2hlbWEsIFNhdmVTdWdnZXN0aW9uc1NjaGVtYSwgVXBkYXRlQXNzaXN0YW50U2NoZW1hLCBVcGRhdGVDaGF0TGFzdENvbnRleHRCeUlkU2NoZW1hLCBVcGRhdGVDaGF0VmlzaWJsaXR5QnlJZFNjaGVtYSwgVXBkYXRlQ29tcGV0ZW5jeVNjaGVtYSwgVXBkYXRlRW1wbG9pZFNjaGVtYSwgVXBkYXRlSW5wdXRTY2hlbWEsIFVwZGF0ZUpvYkRlZmluaXRpb25TY2hlbWEsIFVwZGF0ZU9jY3VwYXRpb25TY2hlbWEsIFVwZGF0ZVNjb3BlU2NoZW1hLCBVcGRhdGVTa2lsbFNjaGVtYSwgVXBkYXRlVGVhbVNjaGVtYSwgVXBkYXRlV29ya2VyU2NoZW1hLCBWb3RlTWVzc2FnZVNjaGVtYSB9IGZyb20gJy4vc2NoZW1hJztcbmltcG9ydCB7IFRFbXBsb2lkIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRTREtGb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZ2V0U0RLRm9yU2VydmljZSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBDcmVhdGVFbXBsb2lkKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBDcmVhdGVFbXBsb2lkU2NoZW1hPik6IFByb21pc2U8VEVtcGxvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlRW1wbG9pZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxufVxuXG5leHBvcnQgY29uc3QgVXBkYXRlRW1wbG9pZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgVXBkYXRlRW1wbG9pZFNjaGVtYT4pOiBQcm9taXNlPFRFbXBsb2lkPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLlVwZGF0ZUVtcGxvaWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBEZWxldGVFbXBsb2lkID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBEZWxldGVFbXBsb2lkU2NoZW1hPik6IFByb21pc2U8VEVtcGxvaWQ+ID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuRGVsZXRlRW1wbG9pZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn1cblxuXG5leHBvcnQgY29uc3QgTGlzdEVtcGxvaWRzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0RW1wbG9pZHNTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RFbXBsb2lkcyhwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaXN0RW1wbG9pZHNQYWdpbmF0ZWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIExpc3RFbXBsb2lkc1BhZ2luYXRlZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuTGlzdEVtcGxvaWRzUGFnaW5hdGVkKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExpc3RTY29wZXMgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIExpc3RTY29wZXNTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RTY29wZXMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlT2NjdXBhdGlvbiA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlT2NjdXBhdGlvblNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlT2NjdXBhdGlvbihwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVPY2N1cGF0aW9uID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVPY2N1cGF0aW9uU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5VcGRhdGVPY2N1cGF0aW9uKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgRGVsZXRlT2NjdXBhdGlvbiA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgRGVsZXRlT2NjdXBhdGlvblNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuRGVsZXRlT2NjdXBhdGlvbihwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn1cblxuXG5leHBvcnQgY29uc3QgQ3JlYXRlU2NvcGUgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVNjb3BlU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5DcmVhdGVTY29wZShwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IFVwZGF0ZVNjb3BlID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVTY29wZVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlU2NvcGUocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgRGVsZXRlU2NvcGUgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVNjb3BlU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5EZWxldGVTY29wZShwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cblxuZXhwb3J0IGNvbnN0IExpc3RPY2N1cGF0aW9ucyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgTGlzdE9jY3VwYXRpb25zU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5MaXN0T2NjdXBhdGlvbnMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlSm9iRGVmaW5pdGlvbiA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlSm9iRGVmaW5pdGlvblNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlSm9iRGVmaW5pdGlvbihwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVKb2JEZWZpbml0aW9uID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVKb2JEZWZpbml0aW9uU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5VcGRhdGVKb2JEZWZpbml0aW9uKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUpvYkRlZmluaXRpb24gPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUpvYkRlZmluaXRpb25TY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkRlbGV0ZUpvYkRlZmluaXRpb24ocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdEpvYkRlZmluaXRpb25zID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0Sm9iRGVmaW5pdGlvblNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuTGlzdEpvYkRlZmluaXRpb25zKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuXG5leHBvcnQgY29uc3QgQ3JlYXRlQ29tcGV0ZW5jeSA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29tcGV0ZW5jeVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlQ29tcGV0ZW5jeShwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVDb21wZXRlbmN5ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb21wZXRlbmN5U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5VcGRhdGVDb21wZXRlbmN5KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUNvbXBldGVuY3kgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbXBldGVuY3lTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkRlbGV0ZUNvbXBldGVuY3kocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdENvbXBldGVuY2llcyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgTGlzdENvbXBldGVuY2llc1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuTGlzdENvbXBldGVuY2llcyhwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVBZ2VudEZsb3cgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFnZW50Rmxvd1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlQWdlbnRGbG93KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExpc3RBZ2VudEZsb3dzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0QWdlbnRGbG93c1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuTGlzdEFnZW50Rmxvd3MocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlRXh0ZW5zaW9uID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBDcmVhdGVFeHRlbnNpb25TY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkNyZWF0ZUV4dGVuc2lvbihwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaXN0RXh0ZW5zaW9ucyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgTGlzdEV4dGVuc2lvbnNTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RFeHRlbnNpb25zKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZUFzc2lzdGFudCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5DcmVhdGVBc3Npc3RhbnQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgVXBkYXRlQXNzaXN0YW50ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBc3Npc3RhbnRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLlVwZGF0ZUFzc2lzdGFudChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBEZWxldGVBc3Npc3RhbnQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUFzc2lzdGFudFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuRGVsZXRlQXNzaXN0YW50KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExpc3RBc3Npc3RhbnRzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50c1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuTGlzdEFzc2lzdGFudHMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlV29ya2VyID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBDcmVhdGVXb3JrZXJTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkNyZWF0ZVdvcmtlcihwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVXb3JrZXIgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVdvcmtlclNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlV29ya2VyKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZVdvcmtlciA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgRGVsZXRlV29ya2VyU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5EZWxldGVXb3JrZXIocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdFdvcmtlcnMgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIExpc3RXb3JrZXJzU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5MaXN0V29ya2VycyhwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVJbnB1dCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlSW5wdXRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkNyZWF0ZUlucHV0KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFVwZGF0ZUlucHV0ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVJbnB1dFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlSW5wdXQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgRGVsZXRlSW5wdXQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUlucHV0U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5EZWxldGVJbnB1dChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaXN0SW5wdXRzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0SW5wdXRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RJbnB1dHMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlVGVhbSA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlVGVhbVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlVGVhbShwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVUZWFtID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVUZWFtU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5VcGRhdGVUZWFtKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZVRlYW0gPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVRlYW1TY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkRlbGV0ZVRlYW0ocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdFRlYW1zID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0VGVhbXNTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkxpc3RUZWFtcyhwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBTYXZlQ2hhdCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgU2F2ZUNoYXRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLlNhdmVDaGF0KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUNoYXRCeUlkID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBEZWxldGVDaGF0QnlJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuRGVsZXRlQ2hhdEJ5SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0Q2hhdEJ5SWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIEdldENoYXRCeUlkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5HZXRDaGF0QnlJZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBHZXRDaGF0c0J5VXNlcklkID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBHZXRDaGF0c0J5VXNlcklkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5HZXRDaGF0c0J5VXNlcklkKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFNhdmVNZXNzYWdlcyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgU2F2ZU1lc3NhZ2VzU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5TYXZlTWVzc2FnZXMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0TWVzc2FnZXNCeUNoYXRJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0TWVzc2FnZXNCeUNoYXRJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuR2V0TWVzc2FnZXNCeUNoYXRJZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBHZXRNZXNzYWdlQnlJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0TWVzc2FnZUJ5SWRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkdldE1lc3NhZ2VCeUlkKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFZvdGVNZXNzYWdlID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBWb3RlTWVzc2FnZVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVm90ZU1lc3NhZ2UocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0Vm90ZXNCeUNoYXRJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0Vm90ZXNCeUNoYXRJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuR2V0Vm90ZXNCeUNoYXRJZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBEZWxldGVEb2N1bWVudHNCeUlkQWZ0ZXJUaW1lc3RhbXAgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURvY3VtZW50c0J5SWRBZnRlclRpbWVzdGFtcFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuRGVsZXRlRG9jdW1lbnRzQnlJZEFmdGVyVGltZXN0YW1wKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFNhdmVTdWdnZXN0aW9ucyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgU2F2ZVN1Z2dlc3Rpb25zU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5TYXZlU3VnZ2VzdGlvbnMocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0U3VnZ2VzdGlvbnNCeURvY3VtZW50SWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIEdldFN1Z2dlc3Rpb25zQnlEb2N1bWVudElkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5HZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBEZWxldGVNZXNzYWdlc0J5Q2hhdElkQWZ0ZXJUaW1lc3RhbXAgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZU1lc3NhZ2VzQnlDaGF0SWRBZnRlclRpbWVzdGFtcFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuRGVsZXRlTWVzc2FnZXNCeUNoYXRJZEFmdGVyVGltZXN0YW1wKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFVwZGF0ZUNoYXRWaXNpYmxpdHlCeUlkID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDaGF0VmlzaWJsaXR5QnlJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlQ2hhdFZpc2libGl0eUJ5SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBHZXRNZXNzYWdlQ291bnRCeVVzZXJJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0TWVzc2FnZUNvdW50QnlVc2VySWRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkdldE1lc3NhZ2VDb3VudEJ5VXNlcklkKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZVN0cmVhbUlkID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBDcmVhdGVTdHJlYW1JZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuQ3JlYXRlU3RyZWFtSWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0U3RyZWFtSWRzQnlDaGF0SWQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIEdldFN0cmVhbUlkc0J5Q2hhdElkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5HZXRTdHJlYW1JZHNCeUNoYXRJZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBTYXZlRG9jdW1lbnQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIFNhdmVEb2N1bWVudFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuU2F2ZURvY3VtZW50KHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEdldERvY3VtZW50QnlJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0RG9jdW1lbnRCeUlkU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5HZXREb2N1bWVudEJ5SWQocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0RG9jdW1lbnRzQnlJZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0RG9jdW1lbnRzQnlJZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuR2V0RG9jdW1lbnRzQnlJZChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVTa2lsbCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlU2tpbGxTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBlbXBsb2lkIH0gPSBhd2FpdCBnZXRTREtGb3JTZXJ2aWNlKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBlbXBsb2lkLkNyZWF0ZVNraWxsKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFVwZGF0ZVNraWxsID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVTa2lsbFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGVtcGxvaWQgfSA9IGF3YWl0IGdldFNES0ZvclNlcnZpY2UoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IGVtcGxvaWQuVXBkYXRlU2tpbGwocGFyc2VkSW5wdXQpO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgRGVsZXRlU2tpbGwgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVNraWxsU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5EZWxldGVTa2lsbChwYXJzZWRJbnB1dCk7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaXN0U2tpbGxzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0U2tpbGxzU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZW1wbG9pZCB9ID0gYXdhaXQgZ2V0U0RLRm9yU2VydmljZSgpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZW1wbG9pZC5MaXN0U2tpbGxzKHBhcnNlZElucHV0KTtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuIl19
|