dcdx 1.3.0-next.29 → 1.3.0-next.30

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.
@@ -320,568 +320,583 @@ const ActionHandler = async (program, { action, errorHandler }, options) => {
320
320
  };
321
321
 
322
322
  var jira = [
323
- "9.4.29-ubuntu-jdk11",
324
- "9.4",
325
- "9.4-ubuntu-jdk11",
326
- "9.4.29",
327
- "9.4-jdk11",
328
- "9.4.29-jdk11",
329
- "10.3.0-RC-ubuntu-jdk17",
330
- "10.3.0-RC-jdk17",
331
- "10.3.0-RC",
332
- "10.3.0-RC-ubi9-jdk17",
333
- "10.3.0-RC-ubi9",
334
- "9.15.0",
335
- "9.15.0-ubuntu-jdk17",
336
323
  "9.15.0-jdk17",
337
- "9.15.1-ubuntu-jdk17",
324
+ "9.15.0-ubuntu-jdk17",
325
+ "10.0.0-ubuntu-jdk17",
326
+ "10.0.0",
327
+ "10.0.0-jdk17",
328
+ "9.15.0",
329
+ "10.0.1-ubuntu-jdk17",
330
+ "10.0-ubuntu-jdk17",
331
+ "10.0-jdk17",
332
+ "10.0",
333
+ "10.0.1-jdk17",
334
+ "10.0.1",
338
335
  "9.15.1-jdk17",
339
336
  "9.15.1",
340
- "10.0.0-jdk17",
341
- "10.0.0",
342
- "10.0.0-ubuntu-jdk17",
343
- "9.15-ubuntu-jdk17",
344
- "9.15-jdk17",
345
- "9.15.2-ubuntu-jdk17",
337
+ "9.15.1-ubuntu-jdk17",
338
+ "9.11",
339
+ "9.11-ubuntu-jdk17",
340
+ "9.11.3-ubuntu-jdk17",
341
+ "9.11.3",
342
+ "9.11-jdk17",
343
+ "9.11.3-jdk17",
344
+ "9.12.3",
345
+ "9.12.3-jdk17",
346
+ "9.12.3-ubuntu-jdk17",
346
347
  "9.15.2",
347
348
  "9.15",
349
+ "9.15-ubuntu-jdk17",
348
350
  "9.15.2-jdk17",
349
- "9.7.1-jdk11",
350
- "9.7.1",
351
- "9.7.1-ubuntu-jdk11",
351
+ "9.15.2-ubuntu-jdk17",
352
+ "9.15-jdk17",
352
353
  "9.12.4-jdk17",
353
354
  "9.12.4-ubuntu-jdk17",
354
355
  "9.12.4",
355
- "10.0-ubuntu-jdk17",
356
- "10.0-jdk17",
357
- "10.0.1-ubuntu-jdk17",
358
- "10.0.1-jdk17",
359
- "10.0",
360
- "10.0.1",
361
- "9.7",
362
- "9.7.2-jdk11",
363
- "9.7.2-ubuntu-jdk11",
364
- "9.7.2",
365
- "9.7-ubuntu-jdk11",
366
- "9.7-jdk11",
367
- "9.12.5",
356
+ "9.12.0",
357
+ "9.12.0-ubuntu-jdk17",
358
+ "10.1.1-ubuntu-jdk17",
359
+ "9.12.0-jdk17",
360
+ "10.1.1",
361
+ "10.1.1-jdk17",
368
362
  "9.12.5-jdk17",
363
+ "9.12.5",
369
364
  "9.12.5-ubuntu-jdk17",
370
- "9.16.0-ubuntu-jdk17",
371
365
  "9.16.0",
366
+ "9.16.0-ubuntu-jdk17",
372
367
  "9.16.0-jdk17",
373
- "10.1.1-ubuntu-jdk17",
374
- "10.1.1-jdk17",
375
- "10.1.1",
376
- "9.12.0-ubuntu-jdk17",
377
- "9.12.0",
378
- "9.12.0-jdk17",
379
- "9.12.6-ubuntu-jdk17",
368
+ "9.7.1-jdk11",
369
+ "9.7.1",
370
+ "9.7.1-ubuntu-jdk11",
371
+ "9.12.1-jdk17",
372
+ "9.12.1",
373
+ "9.12.1-ubuntu-jdk17",
374
+ "10.1.2-ubuntu-jdk17",
375
+ "10.1-jdk17",
376
+ "10.1.2",
377
+ "10.1-ubuntu-jdk17",
378
+ "10.1",
379
+ "10.1.2-jdk17",
380
380
  "9.12.6-jdk17",
381
+ "9.12.6-ubuntu-jdk17",
381
382
  "9.12.6",
382
- "9.16",
383
+ "9.4.6",
384
+ "9.4.6-jdk11",
385
+ "9.4.6-ubuntu-jdk11",
386
+ "9.7",
387
+ "9.16.1",
383
388
  "9.16-ubuntu-jdk17",
389
+ "9.7.2-ubuntu-jdk11",
390
+ "9.7-jdk11",
391
+ "9.7.2-jdk11",
392
+ "9.7.2",
393
+ "9.7-ubuntu-jdk11",
394
+ "9.12.10",
395
+ "9.12.10-ubuntu-jdk17",
396
+ "9.12.10-jdk17",
384
397
  "9.16-jdk17",
385
- "9.16.1",
386
398
  "9.16.1-ubuntu-jdk17",
399
+ "9.16",
387
400
  "9.16.1-jdk17",
388
401
  "9.14-jdk11",
402
+ "9.14.1-ubuntu-jdk11",
389
403
  "9.14-ubuntu-jdk11",
390
404
  "9.14.1-jdk11",
391
- "9.14.1-ubuntu-jdk11",
392
- "9.12.1-jdk17",
393
- "9.8.0-ubuntu-jdk11",
394
- "9.12.1-ubuntu-jdk17",
395
- "9.12.1",
396
- "9.8.0-jdk11",
397
- "9.8.0",
398
- "10.1.2-jdk17",
399
- "10.1",
400
- "10.1-jdk17",
401
- "10.1.2",
402
- "10.1-ubuntu-jdk17",
403
- "10.1.2-ubuntu-jdk17",
405
+ "9.12.7-ubuntu-jdk17",
404
406
  "9.12.7-jdk17",
405
407
  "9.12.7",
406
- "9.12.7-ubuntu-jdk17",
407
- "9.4.26",
408
- "9.4.26-ubuntu-jdk11",
409
- "9.4.26-jdk11",
410
- "9.12.10-ubuntu-jdk17",
411
- "9.12.10-jdk17",
412
- "9.12.10",
413
- "9.17.0",
414
- "9.8.1",
415
- "9.8.1-jdk11",
416
- "9.8.1-ubuntu-jdk11",
417
- "9.15.0-jdk11",
418
- "9.17.0-jdk17",
419
- "9.12.8-ubuntu-jdk17",
420
- "9.15.0-ubuntu-jdk11",
421
- "9.17.0-ubuntu-jdk17",
422
- "9.17.0-jdk11",
423
- "latest",
424
- "9.12.8",
425
- "9.12.8-jdk17",
426
- "9.17.0-ubuntu-jdk11",
427
- "9.4.27",
428
- "9.4.27-ubuntu-jdk11",
429
- "9.4.27-jdk11",
430
408
  "9.4.7-jdk11",
431
- "9.4.7-ubuntu-jdk11",
432
409
  "9.4.7",
433
- "10.2.0-jdk17",
434
- "10.2.0-ubuntu-jdk17",
435
- "10.2.0",
436
- "9.12.11",
410
+ "9.4.7-ubuntu-jdk11",
437
411
  "9.12.11-jdk17",
438
412
  "9.12.11-ubuntu-jdk17",
439
- "10.0.0-ubi9",
440
- "9.17.1-ubuntu-jdk17",
441
- "9.12.1-ubi9",
442
- "9.10.0-ubuntu-jdk11",
413
+ "9.12.11",
414
+ "10.2.0",
415
+ "10.2.0-jdk17",
416
+ "10.2.0-ubuntu-jdk17",
417
+ "9.4.26-jdk11",
443
418
  "9.10.0-jdk11",
444
- "9.8.2-ubuntu-jdk11",
445
- "9.12.9-ubuntu-jdk17",
446
- "9.12.7-ubuntu-jdk11",
447
- "9.4.28",
448
- "9.4.28-jdk11",
449
- "10.0.0-ubi9-jdk17",
450
- "9.15.1-jdk11",
451
- "9.12.1-ubi9-jdk17",
452
- "9.15.1-ubuntu-jdk11",
453
419
  "9.10.0",
454
- "9.17.1-ubuntu-jdk11",
455
- "9.17.1-jdk17",
456
- "9.17.1",
457
- "9.8.2-jdk11",
458
- "9.8-jdk11",
459
- "9.8",
460
- "9.8.2",
461
- "9.4.8",
462
- "9.8-ubuntu-jdk11",
420
+ "10.0.0-ubi9-jdk17",
421
+ "9.10.0-ubuntu-jdk11",
422
+ "10.0.0-ubi9",
423
+ "9.12.8-ubuntu-jdk17",
424
+ "9.4.26",
425
+ "9.4.26-ubuntu-jdk11",
426
+ "9.17.2-ubi9",
427
+ "9.17.2-ubi9-jdk17",
428
+ "9.8.0-ubuntu-jdk11",
429
+ "9.8.0-jdk11",
430
+ "9.12.8-jdk17",
431
+ "9.8.0",
432
+ "9.12.8",
433
+ "9.17.0-jdk17",
434
+ "9.17.0",
435
+ "9.17.0-ubuntu-jdk11",
436
+ "9.17.0-ubuntu-jdk17",
437
+ "9.17.0-jdk11",
463
438
  "9.4.8-jdk11",
439
+ "9.4.8",
464
440
  "9.4.8-ubuntu-jdk11",
465
- "9.12.9",
466
- "9.12.9-jdk17",
441
+ "9.11.0-ubuntu-jdk11",
467
442
  "9.12.7-jdk11",
468
- "9.4.28-ubuntu-jdk11",
443
+ "9.7.1-ubi9-jdk17",
444
+ "9.12.7-ubuntu-jdk11",
445
+ "9.7.1-ubi9",
446
+ "9.4.2",
447
+ "9.12.16-jdk11",
469
448
  "9.12-jdk11",
470
- "9.12.15-ubuntu-jdk11",
449
+ "9.4.2-ubuntu-jdk11",
450
+ "9.4.2-jdk11",
451
+ "9.4.12",
471
452
  "9.12-ubuntu-jdk11",
472
- "9.17.1-jdk11",
473
- "9.12.15-jdk11",
474
- "10.2.1",
475
- "ubuntu-jdk17",
476
- "10-ubuntu-jdk17",
477
- "jdk17",
478
- "10-jdk17",
479
- "10.2.1-ubuntu-jdk17",
453
+ "9.12.16-ubuntu-jdk11",
454
+ "9.4.12-jdk11",
480
455
  "9.12.12-ubuntu-jdk17",
456
+ "9.4.12-ubuntu-jdk11",
481
457
  "9.12.12",
458
+ "9.12.12-jdk17",
459
+ "9.17.3-ubi9",
460
+ "9.11.0-jdk11",
461
+ "9.17.3-ubi9-jdk17",
462
+ "9.4.27-ubuntu-jdk11",
463
+ "9.15.0-jdk11",
464
+ "9.15.0-ubuntu-jdk11",
482
465
  "10.2-jdk17",
483
- "9.5.0-jdk17",
484
- "10",
485
- "10.2-ubuntu-jdk17",
466
+ "9.15.0-ubi9",
467
+ "10.2.1-ubuntu-jdk17",
486
468
  "10.2.1-jdk17",
469
+ "10.2-ubuntu-jdk17",
470
+ "10.2.1",
471
+ "9.15.0-ubi9-jdk17",
472
+ "9.8.1",
487
473
  "10.2",
488
- "9.12.12-jdk17",
489
- "9.5.0-ubuntu-jdk17",
490
- "9.4.2",
491
- "9.4.2-ubuntu-jdk11",
492
- "9.4.2-jdk11",
493
- "9.12.9-ubi9-jdk17",
494
- "9.12.9-ubi9",
495
- "9.4.12-jdk11",
496
- "9.4.12",
497
- "9.11.0-ubuntu-jdk11",
498
- "9.11.0-jdk11",
499
- "9.4.12-ubuntu-jdk11",
500
- "9.10.1",
474
+ "9.4.27",
475
+ "10.0.1-ubi9",
476
+ "9.12.9",
501
477
  "9.10.1-ubuntu-jdk11",
502
- "9.10.1-jdk11",
503
478
  "10.0.1-ubi9-jdk17",
504
- "10.0.1-ubi9",
505
- "9.12.8-ubuntu-jdk11",
506
- "9.7.2-ubi9-jdk17",
507
- "9.17.2-jdk17",
508
- "9.17.2-ubuntu-jdk17",
509
- "9.4.9-jdk11",
510
- "9.13.0-ubuntu-jdk17",
511
- "9.13.0",
512
- "9.12.10-ubi9",
479
+ "9.10.1-jdk11",
480
+ "9.4.27-jdk11",
481
+ "9.10.1",
482
+ "9.17.1-ubuntu-jdk11",
483
+ "9.17.1",
484
+ "9.12.10-jdk11",
485
+ "9.8.1-ubuntu-jdk11",
486
+ "9.8.1-jdk11",
487
+ "9.17.1-jdk11",
488
+ "9.12.9-jdk17",
489
+ "9.7.2-ubi9-jdk17",
513
490
  "9.7.2-ubi9",
514
- "9.12.8-jdk11",
515
- "9.17.4-ubi9",
516
- "9.12.10-ubi9-jdk17",
491
+ "9.12.9-ubuntu-jdk17",
492
+ "9.12.8-ubuntu-jdk11",
493
+ "9.12.13-jdk17",
517
494
  "9.4.9",
495
+ "9.12.10-ubuntu-jdk11",
496
+ "9.15.1-jdk11",
497
+ "9.17.1-ubuntu-jdk17",
498
+ "9.17.1-jdk17",
499
+ "9.4.9-jdk11",
500
+ "9.11.1-ubuntu-jdk11",
518
501
  "9.4.9-ubuntu-jdk11",
519
- "9.17.2",
520
- "9.17.4-ubi9-jdk17",
521
- "9.13.0-jdk17",
522
- "9.15.2-ubi9-jdk17",
523
- "9.15.2-ubi9",
524
- "9.15.2-ubuntu-jdk11",
525
- "9.15.2-jdk11",
526
- "9.15-ubuntu-jdk11",
527
- "9.15-jdk11",
528
- "9.12.1-jdk11",
529
- "9.12.1-ubuntu-jdk11",
530
- "9.17.2-ubuntu-jdk11",
531
- "9.17.2-jdk11",
532
- "9.12.13-ubuntu-jdk17",
533
- "9.12.13",
534
- "9.4.20",
535
502
  "9.4.20-jdk11",
536
- "9.4.20-ubuntu-jdk11",
537
- "9.12.13-jdk17",
538
- "9.10.1-ubi9-jdk17",
539
- "9.12.2-ubi9",
540
- "9.12.2-ubi9-jdk17",
541
- "9.10.1-ubi9",
503
+ "9.4.20",
542
504
  "9.4.14",
543
- "9.5.1-ubuntu-jdk17",
544
- "9.5-jdk17",
545
- "9.5.1-jdk17",
546
- "9.10",
547
- "9.10.2-ubuntu-jdk11",
548
- "9.11.1-jdk11",
549
- "9.13.0-ubi9-jdk17",
505
+ "9.12.7-ubi9",
506
+ "9.12.7-ubi9-jdk17",
507
+ "9.12.8-jdk11",
508
+ "9.4.20-ubuntu-jdk11",
550
509
  "9.4.14-jdk11",
551
510
  "9.4.14-ubuntu-jdk11",
552
- "9.13.0-ubi9",
553
- "9.5-ubuntu-jdk17",
554
- "9.8-ubuntu-jdk17",
555
- "9.12.9-ubuntu-jdk11",
556
- "9.8-jdk17",
557
- "9.10.2",
558
- "9.9.0-jdk11",
559
- "9.10.2-jdk11",
560
- "9.17.5-ubi9-jdk17",
561
- "9.11.1-ubuntu-jdk11",
511
+ "9.11.1-jdk11",
512
+ "9.12.13",
513
+ "9.15.1-ubuntu-jdk11",
514
+ "9.12.15-ubi9-jdk17",
515
+ "9.12.13-ubuntu-jdk17",
516
+ "9.4.28",
517
+ "9.10.2-ubuntu-jdk11",
518
+ "9.12.15-ubi9",
519
+ "9.15.1-ubi9",
520
+ "9.10",
521
+ "9.15.1-ubi9-jdk17",
562
522
  "9.10-ubuntu-jdk11",
523
+ "latest",
524
+ "9.4.28-jdk11",
525
+ "9.10.2",
526
+ "9.4.28-ubuntu-jdk11",
563
527
  "9.10-jdk11",
528
+ "9.5.0-jdk11",
529
+ "9.10.2-jdk11",
530
+ "9.8.2-jdk11",
531
+ "9.8.2-ubuntu-jdk11",
532
+ "9.8-jdk11",
533
+ "9.8-ubuntu-jdk11",
534
+ "9.8.2",
535
+ "9.5.0",
536
+ "9.13.0-ubuntu-jdk17",
564
537
  "9.5.0-ubuntu-jdk11",
538
+ "9.17.2-ubuntu-jdk17",
539
+ "9.8-ubuntu-jdk17",
540
+ "9.10.0-ubi9-jdk17",
541
+ "9.17.2-jdk11",
542
+ "9.17.4-ubi9-jdk17",
543
+ "9.17.2-ubuntu-jdk11",
544
+ "9.17.4-ubi9",
565
545
  "9.8.2-jdk17",
566
- "9.5.0",
567
- "9.5.0-jdk11",
568
- "9.12.9-jdk11",
569
546
  "9.8.2-ubuntu-jdk17",
570
- "9.9.0-ubuntu-jdk11",
571
- "9.17.5-ubi9",
572
- "9.12.2-ubuntu-jdk11",
573
- "9.9.0",
574
- "9.12.2-jdk11",
575
- "9.12.10-ubuntu-jdk11",
576
- "9.12.10-jdk11",
577
- "9.13",
578
- "9.13-jdk17",
579
- "9.13.1",
580
- "9.13-ubuntu-jdk17",
581
- "9.13.1-jdk17",
582
- "9.13.1-ubuntu-jdk17",
583
- "9.17.3-ubuntu-jdk17",
584
- "9.11.0",
585
- "9.17.3-jdk17",
586
- "9.17.3",
587
- "9.12.11-ubi9-jdk17",
588
- "9.12.11-ubi9",
547
+ "9.12.8-ubi9",
548
+ "10.3",
549
+ "jdk17",
550
+ "9.13.0-jdk17",
551
+ "9.13.0",
589
552
  "9.4.21",
590
- "9.11.0-jdk17",
591
- "9.10.2-ubi9-jdk17",
592
- "9.10.2-ubi9",
593
- "9.11.0-ubuntu-jdk17",
594
- "9.4.3",
595
553
  "9.4.21-ubuntu-jdk11",
596
- "9.12.14-ubuntu-jdk17",
597
- "9.4.3-jdk11",
598
554
  "9.4.21-jdk11",
555
+ "9.8",
556
+ "10.1.1-ubi9",
557
+ "9.10.0-ubi9",
558
+ "9.12.8-ubi9-jdk17",
559
+ "9.12.11-ubuntu-jdk11",
560
+ "9.12.11-jdk11",
561
+ "ubuntu-jdk17",
562
+ "9.15.2-ubi9-jdk17",
563
+ "9.17.2-jdk17",
564
+ "9.12.14-ubuntu-jdk17",
565
+ "9.8-jdk17",
566
+ "9.5.0-jdk17",
567
+ "9.15.2-jdk11",
568
+ "9.15.2-ubuntu-jdk11",
569
+ "9.17.2",
570
+ "10",
571
+ "10-jdk17",
572
+ "10.3-jdk17",
573
+ "10.3-ubuntu-jdk17",
574
+ "9.4-jdk11",
575
+ "9.4.29-jdk11",
576
+ "9.4.15-jdk11",
577
+ "9.12.2-jdk11",
578
+ "9.12.2-ubuntu-jdk11",
579
+ "10.1.1-ubi9-jdk17",
580
+ "9.12.9-jdk11",
581
+ "9.12.9-ubuntu-jdk11",
582
+ "10.3.0-jdk17",
583
+ "10.3.0-ubuntu-jdk17",
584
+ "10.3.0",
585
+ "9.4.15",
586
+ "9.12.0-ubi9-jdk17",
587
+ "9.4.15-ubuntu-jdk11",
588
+ "9.15-ubuntu-jdk11",
589
+ "9.12.0-ubi9",
590
+ "9.11.2-ubuntu-jdk11",
591
+ "10-ubuntu-jdk17",
592
+ "9.12.14-jdk17",
593
+ "9.4-ubuntu-jdk11",
599
594
  "9.8.0-ubi9-jdk17",
600
595
  "9.12.14",
601
- "9.4.3-ubuntu-jdk11",
602
- "9.12.14-jdk17",
603
- "9.4.15",
604
- "9.17.3-jdk11",
605
- "9.16.0-ubi9-jdk17",
606
596
  "9.8.0-ubi9",
607
- "9.13.1-ubi9",
597
+ "9.11.2-jdk11",
598
+ "9.17.5-ubi9-jdk17",
599
+ "9.15.2-ubi9",
600
+ "9.4",
601
+ "9.5",
602
+ "9.5-ubuntu-jdk11",
603
+ "9.12.16-ubi9-jdk17",
604
+ "9.13-jdk17",
605
+ "9.15-jdk11",
606
+ "9.17.3-jdk11",
607
+ "9.17.3-ubuntu-jdk11",
608
+ "9.5.0-ubuntu-jdk17",
609
+ "9.12.16-ubi9",
610
+ "9.17.5-ubi9",
608
611
  "9.7.1-jdk17",
609
612
  "9.7.1-ubuntu-jdk17",
610
- "9.4.15-jdk11",
611
- "9.4.15-ubuntu-jdk11",
612
- "9.17.3-ubuntu-jdk11",
613
- "9.16.0-ubi9",
614
- "9.12.3-ubi9-jdk17",
615
- "9.12.3-ubi9",
616
- "9.5-ubuntu-jdk11",
613
+ "9.4.29-ubuntu-jdk11",
614
+ "9.4.29",
615
+ "9.12.12-jdk11",
617
616
  "9.5.1-ubuntu-jdk11",
618
- "9.5.1-jdk11",
619
- "10.1.1-ubi9",
620
- "9.13.1-ubi9-jdk17",
621
- "10.1.1-ubi9-jdk17",
617
+ "9.4.22-ubuntu-jdk11",
618
+ "9.4.22-jdk11",
619
+ "9.10.1-ubi9",
622
620
  "9.5-jdk11",
623
- "9.13.0-jdk11",
624
- "9.12.11-jdk11",
625
- "9.11.2-jdk11",
626
- "9.11.2-ubuntu-jdk11",
627
- "9.5",
621
+ "9.11.3-jdk11",
622
+ "9.13.1",
623
+ "9.13.1-jdk17",
628
624
  "9.5.1",
629
- "9.11.1",
630
- "9.12-jdk17",
631
- "9.12.15-ubuntu-jdk17",
632
- "9.12-ubuntu-jdk17",
633
- "9.13.0-ubuntu-jdk11",
634
- "9.9.1-ubuntu-jdk11",
625
+ "9.5.1-jdk11",
626
+ "9.8.1-ubi9-jdk17",
627
+ "9.11-ubuntu-jdk11",
628
+ "9.13.1-ubuntu-jdk17",
629
+ "9.4.22",
630
+ "9.9.0",
631
+ "9.9.0-ubuntu-jdk11",
632
+ "9.10.1-ubi9-jdk17",
633
+ "9.12.1-ubi9",
634
+ "9.12.9-ubi9-jdk17",
635
+ "9.13-ubuntu-jdk17",
636
+ "9.17.3",
637
+ "9.13",
635
638
  "9.12.3-ubuntu-jdk11",
639
+ "9.12.12-ubuntu-jdk11",
640
+ "9.4.0-jdk11",
641
+ "9.11.3-ubuntu-jdk11",
642
+ "9.12.9-ubi9",
643
+ "9.13.0-ubuntu-jdk11",
644
+ "9.17.3-jdk17",
636
645
  "9.12.3-jdk11",
646
+ "9.17.3-ubuntu-jdk17",
647
+ "10.1.2-ubi9-jdk17",
648
+ "10.1.2-ubi9",
649
+ "9.11-jdk11",
650
+ "9.4.16-jdk11",
651
+ "9.10.2-ubi9",
652
+ "9.9.0-jdk17",
653
+ "9.9.0-ubuntu-jdk17",
654
+ "9.8.1-ubi9",
655
+ "9.5.1-ubuntu-jdk17",
656
+ "9.12.15-ubuntu-jdk17",
657
+ "9.5-jdk17",
658
+ "9.13.0-ubi9-jdk17",
637
659
  "9.4.16",
638
- "9.10.0-ubuntu-jdk17",
639
- "9.12.11-ubuntu-jdk11",
640
- "9.10.0-jdk17",
641
- "9.16.0-ubuntu-jdk11",
642
- "9.11.1-ubuntu-jdk17",
643
- "9.11.1-jdk17",
644
- "9.16.0-jdk11",
645
- "9.4.4-ubuntu-jdk11",
646
- "9.12.15-jdk17",
647
- "9.12",
648
- "9.12.15",
649
- "9.9.1",
650
- "9.4.22-ubuntu-jdk11",
651
- "9.4.22",
652
- "9.16.1-ubi9-jdk17",
653
- "9.9.1-jdk11",
654
- "9.4.22-jdk11",
655
- "9.17.4",
656
- "9.8.1-ubi9-jdk17",
657
- "9.17.4-ubuntu-jdk17",
658
- "9.8.1-ubi9",
659
- "9.6.0-jdk17",
660
- "9.7-ubuntu-jdk17",
661
- "9.9.0-ubuntu-jdk17",
662
- "9.5.0-ubi9-jdk17",
663
- "9.4.16-jdk11",
664
660
  "9.4.16-ubuntu-jdk11",
665
- "9.17.4-jdk11",
666
- "9.17.4-ubuntu-jdk11",
667
- "10.1.2-ubi9",
668
- "10.1.2-ubi9-jdk17",
669
- "9.12.4-ubi9-jdk17",
670
- "9.14.0-ubuntu-jdk17",
671
- "9.13.1-ubuntu-jdk11",
672
- "9.14.0-jdk17",
673
- "9.11.3-jdk11",
674
- "9.16.1-ubi9",
675
- "9.17.4-jdk17",
676
- "9.9.0-jdk17",
677
- "9.4.4",
678
- "9.4.4-jdk11",
679
- "9.13-ubuntu-jdk11",
680
- "9.13-jdk11",
681
- "9.8.2-ubi9-jdk17",
682
- "9.11.0-ubi9-jdk17",
683
- "9.12.12-ubi9",
684
- "9.6.0-ubuntu-jdk17",
685
- "9.11.2-jdk17",
686
- "9.5.0-ubi9",
687
- "9.7.2-ubuntu-jdk17",
661
+ "9.13.0-jdk11",
662
+ "9.5.1-jdk17",
663
+ "9.5-ubuntu-jdk17",
664
+ "9.12.1-ubi9-jdk17",
665
+ "9.9.0-jdk11",
666
+ "9.12.15",
667
+ "9.12.15-jdk17",
668
+ "9.4.23-ubuntu-jdk11",
688
669
  "9.7.2-jdk17",
689
- "9.7-jdk17",
670
+ "9.4.17-ubuntu-jdk11",
671
+ "9.12.4-jdk11",
672
+ "9.11.0",
673
+ "9.4.17-jdk11",
674
+ "9.11.0-ubuntu-jdk17",
690
675
  "9.4.0",
691
676
  "9.4.0-ubuntu-jdk11",
692
- "9.12.12-ubi9-jdk17",
693
- "9.4.0-jdk11",
694
- "9.6-jdk17",
677
+ "9.12.13-ubuntu-jdk11",
695
678
  "9.8.2-ubi9",
696
- "9.6-ubuntu-jdk17",
697
- "9.11.0-ubi9",
698
- "9.12.12-jdk11",
699
- "9.11-jdk11",
700
- "9.11.3-ubuntu-jdk11",
701
- "9.12.4-ubi9",
702
- "9.14.0",
703
- "9.11-ubuntu-jdk11",
704
- "9.14.0-ubi9",
705
- "9.13.1-jdk11",
706
- "9.12.4-jdk11",
679
+ "9.13.1-ubuntu-jdk11",
680
+ "9.10.2-ubi9-jdk17",
681
+ "9.11.0-jdk17",
682
+ "9.13.0-ubi9",
683
+ "9.7-ubuntu-jdk17",
684
+ "9.7.2-ubuntu-jdk17",
685
+ "9.4.3-ubuntu-jdk11",
686
+ "9.4.3",
687
+ "9.7-jdk17",
688
+ "9.12.13-jdk11",
689
+ "9.10.0-jdk17",
690
+ "9.10.0-ubuntu-jdk17",
691
+ "9.14.0-ubuntu-jdk17",
707
692
  "9.12.4-ubuntu-jdk11",
708
- "9.14.0-ubi9-jdk17",
693
+ "9.4.3-jdk11",
709
694
  "9.9.1-jdk17",
710
- "9.9.1-ubuntu-jdk17",
711
- "9.11.2",
712
- "9.4.17-ubuntu-jdk11",
713
- "9.6.0-ubuntu-jdk11",
714
- "9.4.17-jdk11",
715
- "9.6.0-jdk11",
716
- "9.4.23-ubuntu-jdk11",
717
- "9.6.0",
718
- "9.11.2-ubuntu-jdk17",
719
- "9.6-jdk11",
720
- "9.12.12-ubuntu-jdk11",
721
- "9.6",
722
- "9.10.1-jdk17",
723
- "9.9.2-ubuntu-jdk11",
695
+ "9.6-ubuntu-jdk11",
696
+ "9.13-jdk11",
697
+ "9.17.4-ubuntu-jdk11",
698
+ "9.13.1-jdk11",
724
699
  "9.4.23",
725
700
  "9.4.23-jdk11",
701
+ "9.13-ubuntu-jdk11",
702
+ "9.12.16",
703
+ "9.17.4-jdk11",
704
+ "9.5.0-ubi9",
705
+ "9.5.0-ubi9-jdk17",
706
+ "9.8.2-ubi9-jdk17",
707
+ "9.16.0-jdk11",
726
708
  "9.4.17",
727
- "9.17-ubuntu-jdk17",
709
+ "9.16.0-ubuntu-jdk11",
710
+ "9.12.2-ubi9-jdk17",
711
+ "9.17.4-ubuntu-jdk17",
712
+ "9.14.0-jdk17",
713
+ "9.12.2-ubi9",
714
+ "9.17.4-jdk17",
715
+ "9.12",
716
+ "9.9.1",
717
+ "9.17.4",
718
+ "9.6.0-jdk11",
719
+ "9.14.0",
720
+ "9.4.1",
721
+ "9.9.1-ubuntu-jdk11",
722
+ "9.12.10-ubi9",
723
+ "9.12.10-ubi9-jdk17",
724
+ "9.4.1-jdk11",
725
+ "9.12.16-jdk17",
726
+ "9.4.24-ubuntu-jdk11",
727
+ "9.4.24",
728
+ "9.12.16-ubuntu-jdk17",
729
+ "9.6",
730
+ "9.12-jdk17",
731
+ "9.6-jdk11",
732
+ "9.11.1-ubuntu-jdk17",
733
+ "10.2.0-ubi9-jdk17",
734
+ "9.12.5-jdk11",
735
+ "9.4.18",
736
+ "9.9.1-jdk11",
737
+ "9.12-ubuntu-jdk17",
738
+ "9.4.1-ubuntu-jdk11",
739
+ "9.16.0-ubi9",
740
+ "9.6.0",
741
+ "9.17.5-ubuntu-jdk11",
742
+ "9.12.3-ubi9-jdk17",
743
+ "9.9.1-ubuntu-jdk17",
744
+ "9.6.0-ubuntu-jdk11",
745
+ "9.16.0-ubi9-jdk17",
728
746
  "9.10.1-ubuntu-jdk17",
729
- "9.17.5-jdk17",
730
- "9.16.1-jdk11",
731
- "9.6-ubuntu-jdk11",
732
- "9.17",
747
+ "9.6-ubuntu-jdk17",
748
+ "9.12.0-jdk11",
749
+ "9.6.0-ubuntu-jdk17",
750
+ "9.6.0-jdk17",
751
+ "9.6-jdk17",
752
+ "9.10.1-jdk17",
753
+ "9.12.5-ubuntu-jdk11",
754
+ "9.12.14-jdk11",
755
+ "9.12.0-ubuntu-jdk11",
756
+ "9.13.1-ubi9",
757
+ "9.13.1-ubi9-jdk17",
758
+ "9.12.14-ubuntu-jdk11",
733
759
  "9.9.2-jdk11",
734
- "9.16-ubuntu-jdk11",
735
- "9.12.13-ubi9",
760
+ "9.9.2-ubuntu-jdk11",
761
+ "10.2.0-ubi9",
736
762
  "9.9",
737
- "9.17.5",
738
- "9.5.1-ubi9-jdk17",
739
- "9.9-ubuntu-jdk11",
763
+ "9.4.10",
740
764
  "9.9-jdk11",
741
- "9.16.1-ubuntu-jdk11",
742
- "9.16-jdk11",
765
+ "9.17.5-jdk11",
766
+ "9.11.1",
767
+ "9.11.0-ubi9",
768
+ "9.11.1-jdk17",
769
+ "9.11.0-ubi9-jdk17",
770
+ "9.4.24-jdk11",
771
+ "9.8.0-jdk17",
772
+ "9.12.11-ubi9",
773
+ "9-ubuntu-jdk17",
774
+ "9.8.0-ubuntu-jdk17",
743
775
  "9.17-jdk17",
744
- "9.4.5-jdk11",
745
- "9.11.1-ubi9-jdk17",
746
- "9.4.5-ubuntu-jdk11",
747
- "9.4.5",
748
- "9.4.1-jdk11",
749
- "9.4.1",
750
- "9.4.1-ubuntu-jdk11",
751
- "9.14",
752
- "9.5.1-ubi9",
776
+ "9.16-jdk11",
777
+ "9.4.18-jdk11",
778
+ "9.12.3-ubi9",
779
+ "9-jdk11",
780
+ "9.17-ubuntu-jdk11",
781
+ "9.16.1-ubuntu-jdk11",
782
+ "9.16.1-jdk11",
783
+ "9.9-ubuntu-jdk11",
784
+ "9-ubuntu-jdk11",
785
+ "9.16-ubuntu-jdk11",
786
+ "9.4.18-ubuntu-jdk11",
787
+ "9.17.5-jdk17",
788
+ "9.4.4-jdk11",
789
+ "9.4.10-jdk11",
790
+ "9.17.5-ubuntu-jdk17",
753
791
  "9.9.2",
754
- "9.12.5-jdk11",
755
- "9.12.5-ubuntu-jdk11",
756
- "9.12.13-ubi9-jdk17",
757
- "9",
758
- "9-ubuntu-jdk17",
759
- "9.12.2",
760
- "9.12.5-ubi9",
761
- "9.11.1-ubi9",
762
- "9.12.5-ubi9-jdk17",
792
+ "9.16.1-ubi9-jdk17",
793
+ "9.5.1-ubi9-jdk17",
794
+ "9.4.4-ubuntu-jdk11",
795
+ "9.9-jdk17",
763
796
  "9-jdk17",
764
- "9.17.5-ubuntu-jdk17",
765
- "9.17.5-jdk11",
766
- "9.17.5-ubuntu-jdk11",
767
- "9.12.13-jdk11",
768
- "9.14.1",
769
- "9.17-ubuntu-jdk11",
770
- "9.14.1-jdk17",
771
- "9.11.3",
772
- "9.11-jdk17",
773
- "9.11.3-ubuntu-jdk17",
774
- "9.11.3-jdk17",
775
- "9.12.2-ubuntu-jdk17",
776
- "9.17.0-ubi9-jdk17",
797
+ "9.4.4",
798
+ "9.4.10-ubuntu-jdk11",
799
+ "9.5.1-ubi9",
800
+ "9.17.5",
777
801
  "9.17-jdk11",
778
- "9-ubuntu-jdk11",
779
- "9-jdk11",
780
- "9.12.13-ubuntu-jdk11",
781
- "9.14-ubuntu-jdk17",
782
- "9.14.1-ubuntu-jdk17",
783
- "9.11",
802
+ "9.17",
803
+ "9.14",
804
+ "9",
805
+ "9.16.1-ubi9",
806
+ "9.17-ubuntu-jdk17",
784
807
  "9.14-jdk17",
785
- "9.11-ubuntu-jdk17",
786
- "9.12.2-jdk17",
787
- "9.14.1-ubi9",
788
- "9.14.1-ubi9-jdk17",
789
- "9.4.24",
790
- "9.4.24-ubuntu-jdk11",
791
- "9.4.24-jdk11",
792
- "9.17.0-ubi9",
793
- "9.4.10",
794
- "9.4.18-jdk11",
795
- "10.2.0-ubi9-jdk17",
796
- "10.2.0-ubi9",
797
- "9.4.10-ubuntu-jdk11",
798
808
  "9.9.2-ubuntu-jdk17",
799
- "9.9-jdk17",
800
- "9.10-jdk17",
801
- "9.10-ubuntu-jdk17",
802
- "9.8.0-ubuntu-jdk17",
803
- "9.8.0-jdk17",
804
- "9.4.18-ubuntu-jdk11",
805
- "9.4.18",
806
- "9.11.2-ubi9-jdk17",
807
- "9.11.2-ubi9",
808
- "9.7.0-ubuntu-jdk17",
809
+ "9.14.1-ubuntu-jdk17",
810
+ "9.14.1-jdk17",
811
+ "10.2.1-ubi9",
812
+ "9.9.2-jdk17",
813
+ "9.14-ubuntu-jdk17",
814
+ "9.9-ubuntu-jdk17",
815
+ "9.14.1",
816
+ "9.12.11-ubi9-jdk17",
809
817
  "9.9.0-ubi9",
810
- "9.7.0-jdk17",
811
- "9.4.10-jdk11",
812
818
  "9.9.0-ubi9-jdk17",
813
- "9.4.6-ubuntu-jdk11",
814
- "9.4.6-jdk11",
815
- "9.9-ubuntu-jdk17",
816
819
  "9.10.2-ubuntu-jdk17",
817
- "9.9.2-jdk17",
820
+ "10.2.1-ubi9-jdk17",
818
821
  "9.10.2-jdk17",
819
- "9.4.6",
820
- "9.14.0-jdk11",
821
- "9.6.0-ubi9",
822
- "9.12.6-ubi9-jdk17",
822
+ "9.10-jdk17",
823
+ "9.11.1-ubi9",
824
+ "9.10-ubuntu-jdk17",
825
+ "9.12.2",
826
+ "9.11.1-ubi9-jdk17",
827
+ "9.11.2-jdk17",
828
+ "9.11.2",
829
+ "9.4.25-ubuntu-jdk11",
830
+ "9.4.19-jdk11",
831
+ "9.12.2-jdk17",
832
+ "9.4.25",
823
833
  "9.14.0-ubuntu-jdk11",
824
- "9.6.0-ubi9-jdk17",
825
- "9.12.0-jdk11",
826
- "9.12.0-ubuntu-jdk11",
827
- "9.12.3-jdk17",
828
- "9.12.3",
829
- "9.12.14-ubi9",
830
- "9.12.14-ubi9-jdk17",
831
- "9.12.6-jdk11",
834
+ "9.14.0-jdk11",
835
+ "9.12.15-jdk11",
836
+ "9.12.12-ubi9-jdk17",
837
+ "9.12.15-ubuntu-jdk11",
838
+ "9.12.2-ubuntu-jdk17",
839
+ "9.7.0-ubuntu-jdk17",
840
+ "9.8.1-jdk17",
841
+ "9.11.2-ubuntu-jdk17",
842
+ "9.11.2-ubi9",
832
843
  "9.4.25-jdk11",
833
- "9.12.6-ubuntu-jdk11",
834
- "9.4.25",
835
- "9.4.25-ubuntu-jdk11",
836
- "9.12.6-ubi9",
837
- "9.7.0-ubuntu-jdk11",
838
- "9.12.14-ubuntu-jdk11",
839
- "9.7.0",
840
- "9.12.3-ubuntu-jdk17",
841
- "9.17.1-ubi9",
842
- "9.8.1-ubuntu-jdk17",
844
+ "9.14.0-ubi9",
845
+ "9.12.12-ubi9",
846
+ "9.4.5-jdk11",
847
+ "9.12.4-ubi9",
848
+ "9.12.4-ubi9-jdk17",
849
+ "9.14.0-ubi9-jdk17",
850
+ "9.7.0-jdk17",
843
851
  "9.4.19-ubuntu-jdk11",
844
- "9.8.1-jdk17",
845
- "9.4.11-jdk11",
846
- "9.12.14-jdk11",
852
+ "9.4.11-ubuntu-jdk11",
853
+ "9.12.1-ubuntu-jdk11",
854
+ "9.12.6-ubuntu-jdk11",
855
+ "9.12.6-jdk11",
856
+ "9.9.1-ubi9",
857
+ "9.11.2-ubi9-jdk17",
847
858
  "9.7.0-jdk11",
859
+ "9.4.11-jdk11",
848
860
  "9.4.19",
849
- "9.4.19-jdk11",
850
861
  "9.4.11",
851
- "9.4.11-ubuntu-jdk11",
852
- "9.17.1-ubi9-jdk17",
853
- "ubi9",
854
- "9.9.1-ubi9",
862
+ "9.12.5-ubi9",
863
+ "9.12.1-jdk11",
864
+ "9.12.5-ubi9-jdk17",
865
+ "9.8.1-ubuntu-jdk17",
866
+ "9.7.0-ubuntu-jdk11",
867
+ "9.6.0-ubi9-jdk17",
868
+ "9.4.5-ubuntu-jdk11",
869
+ "9.7.0",
870
+ "9.4.5",
871
+ "9.17.0-ubi9",
872
+ "9.6.0-ubi9",
873
+ "9.17.0-ubi9-jdk17",
874
+ "9.12.13-ubi9-jdk17",
855
875
  "9.9.1-ubi9-jdk17",
856
- "10.2.1-ubi9-jdk17",
857
- "10.2.1-ubi9",
876
+ "10.3.0-ubi9",
877
+ "10.3.0-ubi9-jdk17",
878
+ "ubi9",
858
879
  "ubi9-jdk17",
859
- "9.11.3-ubi9-jdk17",
880
+ "9.14.1-ubi9-jdk17",
881
+ "9.14.1-ubi9",
882
+ "9.12.13-ubi9",
883
+ "9.9.2-ubi9-jdk17",
860
884
  "9.11.3-ubi9",
861
- "9.12.15-ubi9-jdk17",
862
- "9.12.15-ubi9",
863
- "9.12.7-ubi9-jdk17",
864
- "9.12.7-ubi9",
865
- "9.15.0-ubi9",
866
- "9.15.0-ubi9-jdk17",
867
- "9.17.2-ubi9-jdk17",
868
- "9.17.2-ubi9",
869
885
  "9.9.2-ubi9",
870
- "9.9.2-ubi9-jdk17",
871
- "9.7.0-ubi9-jdk17",
886
+ "9.11.3-ubi9-jdk17",
887
+ "9.12.6-ubi9-jdk17",
888
+ "9.17.1-ubi9",
889
+ "9.17.1-ubi9-jdk17",
890
+ "9.12.14-ubi9",
891
+ "9.12.6-ubi9",
892
+ "9.12.14-ubi9-jdk17",
872
893
  "9.7.0-ubi9",
873
- "9.12.8-ubi9",
874
- "9.15.1-ubi9-jdk17",
875
- "9.12.8-ubi9-jdk17",
876
- "9.15.1-ubi9",
877
- "9.17.3-ubi9",
878
- "9.12.0-ubi9",
879
- "9.12.0-ubi9-jdk17",
880
- "9.17.3-ubi9-jdk17",
881
- "9.10.0-ubi9",
882
- "9.10.0-ubi9-jdk17",
883
- "9.7.1-ubi9-jdk17",
884
- "9.7.1-ubi9",
894
+ "9.7.0-ubi9-jdk17",
895
+ "10.3.0-RC-ubuntu-jdk17",
896
+ "10.3.0-RC-jdk17",
897
+ "10.3.0-RC",
898
+ "10.3.0-RC-ubi9-jdk17",
899
+ "10.3.0-RC-ubi9",
885
900
  "10.3.0-EAP01-jdk17",
886
901
  "10.3.0-EAP01",
887
902
  "10.3.0-EAP01-ubuntu-jdk17",
@@ -2325,592 +2340,592 @@ var jira = [
2325
2340
  "8.8.0-RC02"
2326
2341
  ];
2327
2342
  var confluence = [
2328
- "8.5.18-jdk17",
2329
- "8.5-ubuntu-jdk17",
2330
- "8.5.18-ubuntu-jdk17",
2331
- "8.5",
2332
- "8.5-jdk17",
2333
- "8.5.18",
2334
- "8.5-jdk11",
2335
- "8.5.18-ubuntu-jdk11",
2336
- "8.5.18-jdk11",
2337
- "8.5-ubuntu-jdk11",
2338
- "7.19",
2339
- "7.19.30-ubuntu-jdk11",
2340
- "7.19-jdk11",
2341
- "7.19-ubuntu-jdk11",
2342
- "7.19.30-jdk11",
2343
- "7.19.30",
2344
- "8.5.18-ubi9-jdk17",
2345
- "8.5.18-ubi9",
2346
- "9.2.0-rc1-jdk21",
2347
- "9.2.0-rc1-ubuntu-jdk21",
2348
- "9.2.0-rc1",
2349
- "eap",
2350
- "9.2.0-rc1-jdk17",
2351
- "eap-jdk17",
2352
- "eap-ubuntu-jdk17",
2353
- "9.2.0-rc1-ubuntu-jdk17",
2354
- "9.2.0-rc1-ubi9-jdk17",
2355
- "9.2.0-rc1-ubi9",
2356
- "9.2.0-rc1-ubi9-jdk21",
2343
+ "8.9.0",
2344
+ "8.9.0-jdk17",
2345
+ "8.9.0-ubuntu-jdk17",
2346
+ "8.6.1-jdk17",
2347
+ "8.6.1",
2348
+ "8.6.1-ubuntu-jdk17",
2349
+ "8.9.7",
2357
2350
  "8.9.7-ubuntu-jdk17",
2358
2351
  "8.9.7-jdk17",
2359
- "8.9.7",
2352
+ "8.4.1",
2353
+ "8.4.1-jdk17",
2354
+ "8.4.1-ubuntu-jdk17",
2355
+ "8.5.16",
2356
+ "8.5.16-ubuntu-jdk17",
2357
+ "8.5.16-jdk17",
2358
+ "8.9.1-ubuntu-jdk17",
2359
+ "8.6",
2360
+ "8.9.1-jdk17",
2361
+ "8.6.2",
2362
+ "8.6.2-jdk17",
2363
+ "8.9.1",
2360
2364
  "8.6.2-ubuntu-jdk17",
2361
2365
  "8.6-ubuntu-jdk17",
2362
- "8.6.2-jdk17",
2363
- "8.6.2",
2364
2366
  "8.6-jdk17",
2365
- "8.6",
2367
+ "8.5.5-jdk17",
2368
+ "8.3.0-jdk17",
2369
+ "8.5.5-ubuntu-jdk17",
2370
+ "8.5.5",
2371
+ "8.3.0-ubuntu-jdk17",
2372
+ "8.3.0",
2366
2373
  "8",
2374
+ "8.9",
2375
+ "8-jdk17",
2376
+ "8.7-ubuntu-jdk11",
2377
+ "8.9.8-ubuntu-jdk17",
2367
2378
  "8.9-ubuntu-jdk17",
2379
+ "8.9.8-jdk17",
2380
+ "8.7.2-ubuntu-jdk11",
2368
2381
  "8-ubuntu-jdk17",
2369
2382
  "8.9-jdk17",
2370
- "8-jdk17",
2371
2383
  "8.9.8",
2372
- "8.9.8-jdk17",
2373
- "8.9.8-ubuntu-jdk17",
2374
- "8.9",
2375
- "8.7.1",
2376
- "8.7.1-ubuntu-jdk17",
2377
- "8.9.3-jdk11",
2378
- "8.7.1-jdk17",
2379
- "8.9.3-ubuntu-jdk11",
2380
2384
  "8.7-jdk11",
2381
2385
  "8.7.2-jdk11",
2382
- "8.7.2-ubuntu-jdk11",
2383
- "8.7-ubuntu-jdk11",
2384
- "7.19.24-ubuntu-jdk11",
2385
- "7.19.24",
2386
- "7.19.24-jdk11",
2387
- "8.5.16-ubuntu-jdk17",
2388
- "8.1.3",
2389
- "8.5.16-jdk17",
2390
- "8.5.8-jdk11",
2391
- "8.1.3-ubuntu-jdk11",
2392
- "7.19.9",
2393
- "8.9.1",
2394
- "8.9.1-ubuntu-jdk17",
2395
- "8.5.16",
2396
- "8.4.1-ubuntu-jdk17",
2397
- "8.4.1",
2398
- "8.1.3-jdk11",
2399
- "7.19.9-ubuntu-jdk11",
2400
- "9.0.1",
2401
- "8.5.8-ubuntu-jdk11",
2402
- "8.4.1-jdk17",
2403
- "7.19.9-jdk11",
2404
- "8.9.1-jdk17",
2405
- "9.0.1-ubuntu-jdk17",
2406
- "9.0.1-jdk17",
2407
2386
  "8.5.1",
2408
- "8.7.2-ubuntu-jdk17",
2409
- "8.3.0",
2410
2387
  "8.5.1-ubuntu-jdk17",
2411
- "8.7-ubuntu-jdk17",
2412
- "8.7",
2413
- "7.19.19-jdk11",
2414
- "7.19.19-ubuntu-jdk11",
2415
- "7.19.19",
2416
- "8.3.0-ubuntu-jdk17",
2417
- "8.3.0-jdk17",
2418
2388
  "8.5.1-jdk17",
2419
- "8.7.2-jdk17",
2420
- "8.7-jdk17",
2421
- "8.7.2",
2422
- "8.0.1",
2423
- "8.0.1-ubuntu-jdk11",
2424
- "8.9.4-jdk11",
2425
- "8.5.2-jdk11",
2426
- "8.9.4-ubuntu-jdk11",
2427
- "8.5.6-jdk17",
2389
+ "8.5.8-ubuntu-jdk11",
2390
+ "8.9.2",
2391
+ "8.9.3-jdk11",
2392
+ "8.4.2-jdk17",
2393
+ "8.9.3-ubuntu-jdk11",
2394
+ "8.5.17-jdk17",
2395
+ "8.4.2",
2396
+ "8.5.10-ubuntu-jdk17",
2397
+ "8.5.17-ubuntu-jdk17",
2398
+ "8.4.2-ubuntu-jdk17",
2399
+ "8.5.17",
2400
+ "8.1.3",
2401
+ "8.1.3-ubuntu-jdk11",
2402
+ "8.1.3-jdk11",
2403
+ "8.5.8-jdk11",
2404
+ "8.9.2-ubuntu-jdk17",
2405
+ "8.9.2-jdk17",
2428
2406
  "8.5.6-ubuntu-jdk17",
2429
- "8.0.1-jdk11",
2430
2407
  "8.5.6",
2408
+ "8.5.12-jdk11",
2409
+ "8.3.1-jdk17",
2410
+ "8.5.12-ubuntu-jdk11",
2411
+ "8.5.6-jdk17",
2412
+ "8.3.1-ubuntu-jdk17",
2413
+ "8.3.1",
2414
+ "7.19",
2415
+ "7.19.14-jdk11",
2416
+ "7.19.30",
2417
+ "7.19.30-jdk11",
2418
+ "7.19.30-ubuntu-jdk11",
2419
+ "7.19-ubuntu-jdk11",
2420
+ "7.19-jdk11",
2421
+ "7.19.14-ubuntu-jdk11",
2422
+ "8.5.2-jdk11",
2423
+ "7.19.14",
2431
2424
  "8.5.2-ubuntu-jdk11",
2432
- "7.19.3-jdk11",
2433
- "7.19.3-ubuntu-jdk11",
2434
- "7.19.3",
2435
- "8.4-ubuntu-jdk11",
2425
+ "8.5.10",
2436
2426
  "7.19.25-jdk11",
2437
- "8.4.5-ubuntu-jdk11",
2427
+ "8.7.1-ubuntu-jdk17",
2438
2428
  "7.19.25-ubuntu-jdk11",
2429
+ "7.19.9",
2430
+ "7.19.9-ubuntu-jdk11",
2431
+ "7.19.9-jdk11",
2432
+ "8.9.4-jdk11",
2433
+ "8.5.10-jdk17",
2434
+ "8.9.4-ubuntu-jdk11",
2435
+ "7.19.2-ubuntu-jdk11",
2436
+ "8.7.1",
2439
2437
  "7.19.25",
2440
- "8.4-jdk11",
2438
+ "8.7.1-jdk17",
2439
+ "7.19.2-jdk11",
2440
+ "7.19.2",
2441
+ "8.4.3-jdk17",
2441
2442
  "8.1-ubuntu-jdk11",
2443
+ "8.4.5-ubuntu-jdk11",
2442
2444
  "8.1",
2443
- "8.1.4-jdk11",
2445
+ "8.0.1",
2446
+ "8.0.1-jdk11",
2447
+ "8.0.1-ubuntu-jdk11",
2448
+ "9.0.1-jdk17",
2449
+ "9.0.1-ubuntu-jdk17",
2450
+ "9.0.1",
2444
2451
  "8.8.0-jdk11",
2445
- "8.1.4-ubuntu-jdk11",
2452
+ "8.8.0-ubuntu-jdk11",
2453
+ "8.3.2-ubuntu-jdk17",
2454
+ "8.5-ubuntu-jdk17",
2455
+ "8.5.18-jdk17",
2456
+ "8.4.3-ubuntu-jdk17",
2457
+ "8.5-jdk17",
2458
+ "9.0.1-ubi9",
2459
+ "8.4.3",
2460
+ "8.5.9-jdk11",
2461
+ "8.4-jdk11",
2462
+ "8.5.18-ubuntu-jdk17",
2463
+ "8.5.9-ubuntu-jdk11",
2446
2464
  "8.1.4",
2465
+ "9.0.1-ubi9-jdk17",
2447
2466
  "8.4.5-jdk11",
2467
+ "8.5.18",
2468
+ "7.19.15",
2469
+ "8.5",
2448
2470
  "8.1-jdk11",
2449
- "8.5.17",
2450
- "8.8.0-ubuntu-jdk11",
2451
- "8.5.17-ubuntu-jdk17",
2452
- "8.5.17-jdk17",
2453
- "8.5.9-ubuntu-jdk11",
2471
+ "8.4-ubuntu-jdk11",
2472
+ "8.1.4-jdk11",
2473
+ "8.1.4-ubuntu-jdk11",
2474
+ "8.9.3",
2475
+ "8.5.7-jdk17",
2476
+ "8.7.2-jdk17",
2477
+ "8.9.3-jdk17",
2478
+ "8.9.3-ubuntu-jdk17",
2454
2479
  "7.20.0-jdk11",
2455
- "7.20.0",
2456
- "8.5.9-jdk11",
2457
- "7.20.0-ubuntu-jdk11",
2458
- "8.5.12-ubuntu-jdk11",
2459
- "8.9.2",
2460
- "8.9.2-jdk17",
2461
- "8.4.2-ubuntu-jdk17",
2462
- "8.9.2-ubuntu-jdk17",
2463
- "8.4.2-jdk17",
2464
- "8.4.2",
2465
- "8.5.12-jdk11",
2466
- "9.0.2",
2467
- "9.0.2-ubuntu-jdk17",
2468
- "8.6.1-ubi9-jdk17",
2469
- "9.0.2-jdk17",
2470
- "8.3.1-ubuntu-jdk17",
2471
- "8.4.0-ubuntu-jdk11",
2472
- "8.3.1-jdk17",
2473
- "8.3.1",
2480
+ "8.3.2",
2474
2481
  "8.3.0-jdk11",
2475
- "8.4.0-jdk11",
2476
- "8.6.1-ubi9",
2477
- "8.5.10-ubuntu-jdk17",
2478
- "8.3.0-ubuntu-jdk11",
2479
- "8.5.10",
2480
- "9.0.2-ubi9-jdk17",
2481
- "9.0.2-ubi9",
2482
- "8.0.2",
2483
- "8.9.6-ubi9",
2484
- "8.0.2-jdk11",
2485
- "8.5.10-jdk17",
2486
- "8.8.0-ubi9",
2487
- "8.8.0-ubi9-jdk17",
2488
- "7.19.14-jdk11",
2489
- "8.9.6-ubi9-jdk17",
2490
- "8.0.2-ubuntu-jdk11",
2491
- "7.19.14",
2492
- "7.19.2-jdk11",
2493
- "7.19.2",
2494
- "7.19.14-ubuntu-jdk11",
2495
- "7.19.2-ubuntu-jdk11",
2496
- "8.5.3-ubuntu-jdk11",
2482
+ "8.3.2-jdk17",
2483
+ "8.5.14-ubuntu-jdk11",
2484
+ "7.19.15-ubuntu-jdk11",
2485
+ "7.19.0",
2497
2486
  "8.5.7-ubuntu-jdk17",
2498
- "8.5.3-jdk11",
2499
- "8.9.5-jdk11",
2500
2487
  "8.5.7",
2501
- "8.5.7-jdk17",
2502
- "8.9.5-ubuntu-jdk11",
2503
- "8.8.0-ubuntu-jdk17",
2504
- "8.8.0-jdk17",
2505
- "7.19.4-jdk11",
2506
- "7.19.4",
2507
- "9.0.1-ubuntu-jdk21",
2488
+ "8.5.11-jdk17",
2489
+ "7.19.20-jdk11",
2490
+ "8.5.14-jdk11",
2491
+ "7.19.15-jdk11",
2492
+ "8.3.0-ubuntu-jdk11",
2493
+ "7.19.20-ubuntu-jdk11",
2494
+ "8.5.11",
2495
+ "8.5.11-ubuntu-jdk17",
2508
2496
  "7.19.4-ubuntu-jdk11",
2509
- "9.0.1-jdk21",
2510
- "7.19.0",
2511
- "8.8.0",
2512
- "7.19.0-jdk11",
2497
+ "7.20.0-ubuntu-jdk11",
2513
2498
  "7.19.0-ubuntu-jdk11",
2514
- "7.19.26-jdk11",
2499
+ "8.7.2",
2500
+ "7.19.20",
2501
+ "8.0.2",
2502
+ "9.0.2-ubi9-jdk17",
2503
+ "8.9.5-ubuntu-jdk11",
2504
+ "7.20.0",
2505
+ "8.9.5-jdk11",
2506
+ "8.7-jdk17",
2507
+ "7.19.0-jdk11",
2508
+ "8.7.2-ubuntu-jdk17",
2515
2509
  "7.19.26-ubuntu-jdk11",
2510
+ "8.5.3-jdk11",
2516
2511
  "7.19.26",
2517
- "8.8-ubuntu-jdk11",
2512
+ "8.0.2-ubuntu-jdk11",
2513
+ "8.7",
2514
+ "8.5.3-ubuntu-jdk11",
2515
+ "7.19.26-jdk11",
2516
+ "8.7-ubuntu-jdk17",
2517
+ "8.0.2-jdk11",
2518
+ "9.0.2-jdk17",
2519
+ "8.4.4-ubuntu-jdk17",
2520
+ "9.0.2",
2521
+ "7.19.4",
2522
+ "8.6.0-ubuntu-jdk11",
2523
+ "8.7.2-ubi9-jdk17",
2518
2524
  "8.8.1-jdk11",
2519
- "8.8.1-ubuntu-jdk11",
2520
- "8.8-jdk11",
2525
+ "8.8-ubuntu-jdk11",
2526
+ "9.0.2-ubuntu-jdk17",
2527
+ "7.19.4-jdk11",
2528
+ "8.9.1-ubi9",
2529
+ "8.9.1-ubi9-jdk17",
2530
+ "8.4.0-jdk11",
2531
+ "8.4.0-ubuntu-jdk11",
2532
+ "8.4.4",
2521
2533
  "8.6.0-jdk11",
2522
- "8.4.3-ubuntu-jdk17",
2523
- "8.6.0-ubuntu-jdk11",
2524
- "8.4.3-jdk17",
2525
- "8.4.3",
2526
- "8.5.14-ubuntu-jdk11",
2527
- "8.5.14-jdk11",
2528
- "7.20.1-ubuntu-jdk11",
2529
- "7.20.1-jdk11",
2530
- "8.3.2-jdk17",
2531
- "8.9.3",
2532
- "7.20.1",
2533
- "8.2.0-jdk11",
2534
- "8.3.2",
2535
- "9.0.3",
2536
- "9.0.3-ubuntu-jdk17",
2537
- "8.3.2-ubuntu-jdk17",
2538
- "9.0-jdk17",
2539
- "9.0-ubuntu-jdk17",
2534
+ "8.5.8",
2535
+ "8.8-jdk11",
2536
+ "8.8.1-ubuntu-jdk11",
2537
+ "8.5.2-ubuntu-jdk17",
2538
+ "8.5.2-jdk17",
2540
2539
  "8.3.1-jdk11",
2541
- "8.2.0",
2542
- "8.4.1-ubuntu-jdk11",
2543
- "8.9.3-jdk17",
2544
- "8.9.3-ubuntu-jdk17",
2545
- "8.9.2-ubi9-jdk17",
2546
- "8.3.1-ubuntu-jdk11",
2540
+ "8.4.4-jdk17",
2541
+ "8.9.4",
2542
+ "7.19.21-ubuntu-jdk11",
2543
+ "8.5.2",
2544
+ "8.3.3",
2545
+ "9.0.2-ubi9",
2546
+ "8.9.4-ubuntu-jdk17",
2547
+ "8.9.4-jdk17",
2548
+ "9.0.1-ubuntu-jdk21",
2549
+ "8.5.12-ubuntu-jdk17",
2550
+ "8.5.12-jdk17",
2551
+ "8.5.15-ubuntu-jdk11",
2552
+ "8.5.12",
2553
+ "8.7.2-ubi9",
2554
+ "8.5.15-jdk11",
2555
+ "8.5.0-jdk11",
2556
+ "8.3.3-jdk17",
2547
2557
  "8.2.0-ubuntu-jdk11",
2548
- "8.4.1-jdk11",
2558
+ "8.3.3-ubuntu-jdk17",
2559
+ "8.3.1-ubuntu-jdk11",
2560
+ "8.5.8-jdk17",
2561
+ "8.2.0",
2562
+ "8.2.0-jdk11",
2563
+ "8.9.5-ubi9-jdk17",
2564
+ "7.19.16-ubuntu-jdk11",
2565
+ "7.19.21",
2566
+ "8.9.5-ubi9",
2567
+ "8.5.8-ubuntu-jdk17",
2568
+ "7.19.16",
2569
+ "7.19.16-jdk11",
2570
+ "8.5.4-ubuntu-jdk11",
2571
+ "8.5.0-ubuntu-jdk11",
2572
+ "9.0.1-jdk21",
2573
+ "7.20.1",
2574
+ "7.20.1-ubuntu-jdk11",
2575
+ "7.19.1-ubuntu-jdk11",
2576
+ "8.6.0-ubi9-jdk17",
2549
2577
  "8.0.3",
2578
+ "7.19.21-jdk11",
2550
2579
  "8.0.3-jdk11",
2580
+ "7.19.27",
2581
+ "7.20.1-jdk11",
2551
2582
  "8.0.3-ubuntu-jdk11",
2552
- "9.0",
2553
- "9.0.3-jdk17",
2554
- "8.5.11-jdk17",
2555
- "8.5.4-jdk11",
2556
- "8.5.2-jdk17",
2557
- "8.5.4-ubuntu-jdk11",
2558
- "8.5.11",
2559
- "7.19.15",
2560
- "8.5.15-ubi9-jdk17",
2561
- "7.19.15-ubuntu-jdk11",
2562
2583
  "8.5.15-ubi9",
2563
- "7.19.20",
2564
- "7.19.20-ubuntu-jdk11",
2565
- "8.5.0-jdk11",
2566
- "8.5.0-ubuntu-jdk11",
2567
- "8.9.2-ubi9",
2568
- "7.19.20-jdk11",
2569
- "8.5.2",
2570
- "8.5.8",
2571
- "8.5.11-ubuntu-jdk17",
2572
- "8.5.8-ubuntu-jdk17",
2573
- "8.5.10-ubi9",
2574
- "7.19.15-jdk11",
2575
- "8.5.7-ubi9",
2576
- "8.5.2-ubuntu-jdk17",
2577
- "8.5.7-ubi9-jdk17",
2584
+ "8.5.15-ubi9-jdk17",
2585
+ "9.0.3-ubi9-jdk21",
2586
+ "8.4.1-ubuntu-jdk11",
2587
+ "8.6.1-ubuntu-jdk11",
2588
+ "8.5.4-jdk11",
2589
+ "7.19.1",
2578
2590
  "7.19.5-ubuntu-jdk11",
2591
+ "8.8.0-jdk17",
2592
+ "7.19.27-jdk11",
2593
+ "7.19.27-ubuntu-jdk11",
2594
+ "9.0",
2595
+ "9.0.3-jdk17",
2596
+ "7.19.1-jdk11",
2597
+ "8.4.5-ubuntu-jdk17",
2579
2598
  "7.19.5",
2580
- "7.19.1",
2581
- "8.5.8-jdk17",
2582
- "8.5.10-ubi9-jdk17",
2583
- "8.9.7-ubi9-jdk17",
2599
+ "9.0-ubuntu-jdk17",
2600
+ "8.3.2-ubuntu-jdk11",
2601
+ "8.2.1",
2602
+ "9.0.3-ubuntu-jdk17",
2603
+ "8.4.1-jdk11",
2584
2604
  "8.9.6-ubuntu-jdk11",
2585
- "9.0.3-ubi9",
2586
- "7.19.1-ubuntu-jdk11",
2587
- "8.9.7-ubi9",
2588
- "9.0.2-ubuntu-jdk21",
2589
- "9.0.2-jdk21",
2590
- "8.8",
2591
- "8.8-ubuntu-jdk17",
2592
- "7.19.27",
2605
+ "9.0-jdk17",
2606
+ "9.0.3",
2607
+ "7.19.5-jdk11",
2608
+ "8.9.0-jdk11",
2609
+ "8.9.0-ubuntu-jdk11",
2610
+ "8.6.1-jdk11",
2611
+ "8.6.0-ubi9",
2612
+ "8.5.16-ubuntu-jdk11",
2613
+ "8.9.6-ubi9-jdk17",
2593
2614
  "8.9.6-jdk11",
2594
- "7.19.1-jdk11",
2615
+ "8.3.4",
2616
+ "8.5.5-jdk11",
2617
+ "8.5.10-ubi9",
2618
+ "8.4-jdk17",
2619
+ "8.2.1-jdk11",
2620
+ "8.5.10-ubi9-jdk17",
2621
+ "8.4.5",
2622
+ "8.4",
2623
+ "8.4.5-jdk17",
2624
+ "8.9.5",
2625
+ "8.0.4-jdk11",
2626
+ "8.0-ubuntu-jdk11",
2627
+ "8.8.0",
2628
+ "8.5.3-jdk17",
2629
+ "7.20.2",
2630
+ "7.19.17-ubuntu-jdk11",
2631
+ "8.5.5-ubuntu-jdk11",
2632
+ "9.0.2-ubuntu-jdk21",
2633
+ "8.9.6-ubi9",
2634
+ "8.3-ubuntu-jdk17",
2595
2635
  "9.0.3-ubi9-jdk17",
2596
- "8.4.4",
2597
- "7.19.5-jdk11",
2598
- "8.2.1-jdk11",
2599
- "8.3.3",
2600
- "8.0-ubuntu-jdk11",
2601
- "8.6.2-ubi9-jdk17",
2602
- "8.6.2-ubi9",
2603
- "8.8.1-jdk17",
2604
- "8.5.15-ubuntu-jdk11",
2605
- "8.8.1-ubuntu-jdk17",
2636
+ "8.5.6-ubi9",
2637
+ "8.8.0-ubuntu-jdk17",
2638
+ "8.4-ubuntu-jdk17",
2639
+ "8.3-jdk17",
2640
+ "8.5.6-ubi9-jdk17",
2641
+ "8.2.1-ubuntu-jdk11",
2606
2642
  "8.3.2-jdk11",
2607
- "8.8.1-ubi9",
2608
- "8.8.1-ubi9-jdk17",
2609
- "9.0.3-ubi9-jdk21",
2643
+ "latest",
2644
+ "8.3.4-ubuntu-jdk17",
2645
+ "8.5.16-jdk11",
2646
+ "8.8.0-ubi9",
2647
+ "8.3.4-jdk17",
2648
+ "7.19.6-ubuntu-jdk11",
2649
+ "8.3",
2650
+ "8.9.5-jdk17",
2651
+ "8.9.2-ubi9",
2652
+ "9.0.3-ubi9",
2653
+ "9.0.2-jdk21",
2654
+ "7.19.28-ubuntu-jdk11",
2655
+ "8.5.14-jdk17",
2656
+ "8.4.2-jdk11",
2657
+ "8.9.2-ubi9-jdk17",
2658
+ "8.6.1-ubi9-jdk17",
2659
+ "8.5.1-ubuntu-jdk11",
2660
+ "8.9.5-ubuntu-jdk17",
2610
2661
  "8.8-jdk17",
2611
- "7.19.27-ubuntu-jdk11",
2612
- "8.5.12-jdk17",
2662
+ "8.5.14-ubuntu-jdk17",
2663
+ "7.19.10",
2613
2664
  "8.5.1-jdk11",
2614
- "8.3.3-jdk17",
2615
- "8.4.4-ubuntu-jdk17",
2616
- "7.20.2-jdk11",
2617
- "8.5.15-jdk11",
2618
- "8.6.1-jdk11",
2619
- "8.8.1",
2620
- "7.20.2",
2621
- "7.20.2-ubuntu-jdk11",
2622
- "8.5.5-jdk11",
2623
- "8.3.2-ubuntu-jdk11",
2624
- "8.4.4-jdk17",
2625
- "7.19.27-jdk11",
2626
- "8.3.3-ubuntu-jdk17",
2627
- "8.6.1-ubuntu-jdk11",
2628
- "latest",
2629
- "8.5.12",
2630
- "8.9.4",
2631
- "8.0.4-ubuntu-jdk11",
2632
- "8.2.1-ubuntu-jdk11",
2633
- "8.0.4",
2634
2665
  "8.0",
2635
- "8.5.12-ubuntu-jdk17",
2636
- "8.2.1",
2637
- "7.19.21-ubuntu-jdk11",
2638
- "8.0.4-jdk11",
2639
2666
  "8.0-jdk11",
2640
- "7.19.21",
2667
+ "7.20.2-jdk11",
2668
+ "8.0.4",
2669
+ "8.0.4-ubuntu-jdk11",
2670
+ "7.20.2-ubuntu-jdk11",
2671
+ "7.19.17-jdk11",
2641
2672
  "8.4.2-ubuntu-jdk11",
2642
- "8.5.9-ubuntu-jdk17",
2643
- "8.5.5-ubuntu-jdk11",
2644
- "8.4.2-jdk11",
2645
- "8.5.1-ubuntu-jdk11",
2646
- "8.9.4-jdk17",
2647
- "8.9.4-ubuntu-jdk17",
2648
- "7.19.21-jdk11",
2673
+ "8.5.14",
2674
+ "7.19.10-jdk11",
2675
+ "8.6.1-ubi9",
2649
2676
  "7.19.6",
2650
- "7.19.10",
2677
+ "8.5.9-ubuntu-jdk17",
2678
+ "7.19.17",
2651
2679
  "8.5.9",
2652
- "8.5.16-ubi9",
2653
- "7.19.10-jdk11",
2654
- "8.9.0-jdk11",
2655
- "8.9.0-ubuntu-jdk11",
2656
- "8.9.3-ubi9-jdk17",
2657
- "8.5.3",
2658
- "8.9.3-ubi9",
2680
+ "8.5.9-jdk17",
2659
2681
  "7.19.10-ubuntu-jdk11",
2660
- "8.9.7-jdk11",
2682
+ "8.5.3",
2683
+ "7.19.22",
2684
+ "7.19.22-jdk11",
2685
+ "8.6.2-ubuntu-jdk11",
2686
+ "7.19.6-jdk11",
2687
+ "8.6-ubuntu-jdk11",
2688
+ "7.19.28-jdk11",
2689
+ "7.19.28",
2661
2690
  "8.5.16-ubi9-jdk17",
2662
- "8.5.9-jdk17",
2663
- "8.5.3-jdk17",
2664
- "7.19.16-ubuntu-jdk11",
2665
- "7.19.16",
2666
- "9.0.3-jdk21",
2667
2691
  "8.5.3-ubuntu-jdk17",
2668
- "7.19.6-ubuntu-jdk11",
2669
- "8.5.8-ubi9",
2670
- "7.19.16-jdk11",
2671
- "9-jdk21",
2692
+ "8.9.7-jdk11",
2693
+ "8.8.0-ubi9-jdk17",
2694
+ "7.19.22-ubuntu-jdk11",
2695
+ "8.5.16-ubi9",
2696
+ "8.5.11-ubi9",
2697
+ "8.6-jdk11",
2672
2698
  "8.9.7-ubuntu-jdk11",
2673
- "8.5.8-ubi9-jdk17",
2674
- "7.19.28-jdk11",
2675
- "8.4.5-ubuntu-jdk17",
2676
- "7.19.6-jdk11",
2677
- "8.4.5-jdk17",
2678
- "8.4",
2679
- "9.1.0-jdk17",
2699
+ "8.6.2-jdk11",
2700
+ "8.8.1-ubuntu-jdk17",
2701
+ "8.8-ubuntu-jdk17",
2702
+ "8.8.1",
2680
2703
  "8.5.11-ubi9-jdk17",
2681
- "7.20-ubuntu-jdk11",
2682
- "7-ubuntu-jdk11",
2683
- "7.19.28-ubuntu-jdk11",
2684
- "8.5.11-ubi9",
2685
- "7.20.3-jdk11",
2686
- "8.4-ubuntu-jdk17",
2687
- "7.19.28",
2688
- "8.4.5",
2689
- "8.6.2-ubuntu-jdk11",
2690
- "9.0-jdk21",
2691
- "9.0-ubuntu-jdk21",
2692
- "9.1.1",
2693
- "8.5.16-ubuntu-jdk11",
2694
- "jdk21",
2695
- "9",
2696
- "9.1",
2697
- "8.1.3-ubuntu-jdk17",
2698
- "8.9.8-ubi9-jdk17",
2699
- "8.2.2-ubuntu-jdk17",
2700
- "8.2.2-jdk11",
2701
- "8.5.16-jdk11",
2702
- "8.4-jdk17",
2703
- "9.0.3-ubuntu-jdk21",
2704
+ "8.8.1-jdk17",
2705
+ "8.8",
2704
2706
  "9.1.0-ubuntu-jdk17",
2705
- "9.1.0",
2707
+ "8.9.6",
2708
+ "8.9.6-ubuntu-jdk17",
2709
+ "8.1.3-ubuntu-jdk17",
2706
2710
  "9.1-jdk21",
2707
- "9.1.1-jdk21",
2708
- "9.1-ubuntu-jdk21",
2709
- "9-ubuntu-jdk21",
2710
- "ubuntu-jdk21",
2711
+ "8.5.17-jdk11",
2712
+ "8.5.7-ubi9-jdk17",
2713
+ "8.5.7-ubi9",
2714
+ "7",
2715
+ "8.5.10-ubuntu-jdk11",
2716
+ "8.2.2",
2717
+ "8.5.15-ubuntu-jdk17",
2718
+ "8.2.2-ubuntu-jdk11",
2719
+ "8.5.15-jdk17",
2711
2720
  "9.1.1-ubuntu-jdk21",
2721
+ "9-ubuntu-jdk21",
2722
+ "7-ubuntu-jdk11",
2723
+ "9.1.0-jdk17",
2724
+ "8.2.2-jdk11",
2712
2725
  "8.1.3-jdk17",
2713
- "8.6.2-jdk11",
2714
- "7-jdk11",
2715
- "8.6-jdk11",
2716
- "8.7.1-ubi9-jdk17",
2717
- "8.5.10-jdk11",
2718
- "7.20-jdk11",
2719
- "8.4.3-ubuntu-jdk11",
2720
- "8.4.3-jdk11",
2721
- "8.9.8-ubi9",
2722
- "8.7.1-ubi9",
2726
+ "8.3.3-ubuntu-jdk11",
2723
2727
  "8.9.1-jdk11",
2724
- "8.5.10-ubuntu-jdk11",
2725
- "8.2.2-ubuntu-jdk11",
2726
- "8.2.2",
2727
- "8.3.4-jdk17",
2728
+ "9",
2729
+ "8.5.17-ubuntu-jdk11",
2730
+ "8.3.3-jdk11",
2731
+ "7.19.7-jdk11",
2732
+ "9.1.1-jdk21",
2733
+ "9.1-ubuntu-jdk21",
2734
+ "jdk21",
2735
+ "9.1",
2736
+ "ubuntu-jdk21",
2737
+ "9-jdk21",
2728
2738
  "8.9.1-ubuntu-jdk11",
2729
- "8.3",
2730
- "8.3.4",
2731
- "7",
2732
- "8.9.0",
2733
- "8.9.0-ubuntu-jdk17",
2739
+ "8.0.3-jdk17",
2740
+ "8.5.15",
2741
+ "9.1.0-jdk21",
2742
+ "8.2.2-ubuntu-jdk17",
2743
+ "8.9.6-jdk17",
2744
+ "8.2.2-jdk17",
2745
+ "7.20-ubuntu-jdk11",
2746
+ "8.0.3-ubuntu-jdk17",
2747
+ "9.1.1",
2734
2748
  "7.20.3-ubuntu-jdk11",
2735
- "8.9.0-jdk17",
2736
- "8.6-ubuntu-jdk11",
2749
+ "7-jdk11",
2737
2750
  "7.20.3",
2738
- "9.1.0-ubi9-jdk17",
2751
+ "7.20-jdk11",
2752
+ "7.20.3-jdk11",
2753
+ "7.19.7",
2754
+ "8.6.0",
2755
+ "9.0-jdk21",
2739
2756
  "7.20",
2740
- "8.1.0",
2741
- "8.3.3-ubuntu-jdk11",
2757
+ "8.6.2-ubi9-jdk17",
2758
+ "9.0.3-ubuntu-jdk21",
2759
+ "9.0-ubuntu-jdk21",
2760
+ "8.5.10-jdk11",
2742
2761
  "9.1.0-ubuntu-jdk21",
2743
- "8.0.3-ubuntu-jdk17",
2744
- "8.9.5-jdk17",
2745
- "8.5.14",
2746
- "9.1.0-jdk21",
2747
- "8.5.14-ubuntu-jdk17",
2748
- "7.19.22-jdk11",
2749
- "8.1.0-ubuntu-jdk11",
2750
- "9.1.0-ubi9-jdk21",
2751
- "8.5.4-ubuntu-jdk17",
2752
- "8.3-ubuntu-jdk17",
2753
- "8.1.0-jdk11",
2754
- "8.5.6-jdk11",
2755
- "8.2.2-jdk17",
2756
- "8.3-jdk17",
2757
- "8.3.4-ubuntu-jdk17",
2758
- "9.1.0-ubi9",
2759
- "8.9.5",
2760
- "8.9.5-ubuntu-jdk17",
2761
- "7.19.17",
2762
- "7.19.17-ubuntu-jdk11",
2763
- "8.5.4",
2762
+ "9.1.0",
2763
+ "8.6.0-ubuntu-jdk17",
2764
+ "8.4.3-ubuntu-jdk11",
2765
+ "7.19.29-jdk11",
2766
+ "8.2.0-jdk17",
2767
+ "7.19.11-ubuntu-jdk11",
2768
+ "8.4.0",
2769
+ "8.5.6-jdk11",
2764
2770
  "8.5.6-ubuntu-jdk11",
2765
- "8.5.12-ubi9-jdk17",
2766
- "8.6.0-ubuntu-jdk17",
2767
- "8.9.0-ubi9-jdk17",
2768
- "8.3.3-jdk11",
2769
- "8.9.4-ubi9",
2770
- "8.9.0-ubi9",
2771
- "8.9.4-ubi9-jdk17",
2772
- "7.19.22-ubuntu-jdk11",
2773
- "8.0.3-jdk17",
2774
- "8.5.17-ubi9",
2775
- "7.19.22",
2771
+ "8.5.0-jdk17",
2772
+ "8.4.3-jdk11",
2776
2773
  "8.1.0-jdk17",
2774
+ "8.2.0-ubuntu-jdk17",
2775
+ "8.5.0-ubuntu-jdk17",
2776
+ "9.0.3-jdk21",
2777
2777
  "8.6.0-jdk17",
2778
- "8.5.17-ubi9-jdk17",
2779
- "7.19.17-jdk11",
2780
- "8.5.4-jdk17",
2781
- "8.5.9-ubi9",
2778
+ "7.19.11",
2779
+ "8.4.0-ubuntu-jdk17",
2782
2780
  "7.19.11-jdk11",
2783
- "8.5.14-jdk17",
2784
- "8.5.12-ubi9",
2785
- "8.2.0-ubuntu-jdk17",
2786
- "9.0.1-ubi9-jdk21",
2787
- "7.19.7",
2788
- "7.19.11-ubuntu-jdk11",
2789
- "7.19.7-jdk11",
2790
- "8.5.9-ubi9-jdk17",
2791
- "8.6.0",
2781
+ "8.5.4",
2782
+ "7.19.23-jdk11",
2783
+ "7.19.18-ubuntu-jdk11",
2784
+ "8.5.4-ubuntu-jdk17",
2785
+ "8.9.7-ubi9-jdk17",
2786
+ "8.4.0-jdk17",
2792
2787
  "7.19.7-ubuntu-jdk11",
2793
- "8.1.0-ubuntu-jdk17",
2794
- "7.19.11",
2795
- "9.0.1-ubi9",
2796
- "8.2.0-jdk17",
2797
- "9-jdk17",
2798
- "9.1.1-ubuntu-jdk17",
2799
- "8.9.8-ubuntu-jdk11",
2800
- "8-ubuntu-jdk11",
2801
- "ubuntu-jdk17",
2802
- "8.9.8-jdk11",
2803
- "9.1-ubuntu-jdk17",
2804
- "8.9-ubuntu-jdk11",
2805
- "9.1.1-jdk17",
2806
- "9-ubuntu-jdk17",
2807
- "9.1-jdk17",
2808
- "8.9-jdk11",
2809
- "8.1.4-ubuntu-jdk17",
2788
+ "7.19.18-jdk11",
2789
+ "7.19.23-ubuntu-jdk11",
2790
+ "8.1.0-ubuntu-jdk11",
2791
+ "8.5.0",
2792
+ "7.19.18",
2810
2793
  "8.1-jdk17",
2811
- "8.2-jdk17",
2812
- "7.19.29-jdk11",
2813
- "8.2.3-jdk11",
2814
- "8-jdk11",
2815
- "jdk17",
2816
- "8.2.3-ubuntu-jdk17",
2794
+ "8.1.0-ubuntu-jdk17",
2795
+ "8.9.3-ubi9-jdk17",
2796
+ "7.19.23",
2797
+ "9.1.0-ubi9-jdk17",
2798
+ "8.9.3-ubi9",
2799
+ "8.5.4-jdk17",
2800
+ "9.1.0-ubi9",
2801
+ "8.6.2-ubi9",
2802
+ "8.9.7-ubi9",
2803
+ "9.1.0-ubi9-jdk21",
2804
+ "8.0.0-ubuntu-jdk17",
2805
+ "8.0.0-jdk17",
2817
2806
  "7.19.29-ubuntu-jdk11",
2818
- "8.2-ubuntu-jdk17",
2807
+ "8.1.0-jdk11",
2819
2808
  "7.19.29",
2809
+ "8.1.0",
2810
+ "8.2-jdk17",
2811
+ "8.5.17-ubi9",
2820
2812
  "8.1-ubuntu-jdk17",
2813
+ "9.0.1-ubi9-jdk21",
2814
+ "8.8.1-ubi9",
2815
+ "8.9.8-jdk11",
2816
+ "8-ubuntu-jdk11",
2817
+ "8.8.1-ubi9-jdk17",
2818
+ "8.5.8-ubi9-jdk17",
2819
+ "8.2.3-ubuntu-jdk17",
2820
+ "8.1.4-ubuntu-jdk17",
2821
2821
  "8.1.4-jdk17",
2822
+ "8.5.11-ubuntu-jdk11",
2823
+ "9.1.1-ubuntu-jdk17",
2822
2824
  "8.2-ubuntu-jdk11",
2823
- "8.5.17-ubuntu-jdk11",
2824
- "7.19.23-ubuntu-jdk11",
2825
- "8.9.6",
2826
- "8.2.3-jdk17",
2825
+ "8.9-jdk11",
2826
+ "8-jdk11",
2827
+ "8.2.3-jdk11",
2827
2828
  "8.2.3",
2828
- "8.0.1-ubuntu-jdk17",
2829
- "8.2.3-ubuntu-jdk11",
2830
- "8.0-jdk17",
2831
- "8.0.4-jdk17",
2832
- "8.5.17-jdk11",
2833
2829
  "8.2",
2834
- "8.2-jdk11",
2835
- "8.3.4-ubuntu-jdk11",
2836
- "8.7.2-ubi9",
2837
- "8.7.2-ubi9-jdk17",
2838
- "8.9.6-jdk17",
2839
- "8.3-ubuntu-jdk11",
2840
- "8.3-jdk11",
2841
- "8.4.4-jdk11",
2830
+ "8.2-ubuntu-jdk17",
2831
+ "8.5-ubuntu-jdk11",
2842
2832
  "8.0-ubuntu-jdk17",
2833
+ "7.19.19-ubuntu-jdk11",
2834
+ "8.5.18-jdk11",
2835
+ "8.9.8-ubuntu-jdk11",
2836
+ "8.2.3-jdk17",
2837
+ "8.9-ubuntu-jdk11",
2838
+ "8.5.17-ubi9-jdk17",
2843
2839
  "8.0.4-ubuntu-jdk17",
2844
- "9.1.1-ubi9",
2845
- "9.1.1-ubi9-jdk21",
2846
- "8.3.4-jdk11",
2847
- "ubi9-jdk21",
2848
- "8.5.15-jdk17",
2849
- "8.5.15-ubuntu-jdk17",
2850
- "8.5.15",
2840
+ "7.19.24-jdk11",
2851
2841
  "8.4.4-ubuntu-jdk11",
2852
- "8.9.6-ubuntu-jdk17",
2853
- "8.5.0-ubuntu-jdk17",
2854
- "8.5.0",
2855
- "7.19.23-jdk11",
2856
- "8.5.7-ubuntu-jdk11",
2857
- "ubi9",
2858
- "8.1.1",
2842
+ "8.9.2-ubuntu-jdk11",
2843
+ "9.1.1-jdk17",
2844
+ "8.0.4-jdk17",
2845
+ "7.19.19-jdk11",
2846
+ "8.2.3-ubuntu-jdk11",
2847
+ "9-jdk17",
2848
+ "8.5-jdk11",
2849
+ "8.3-jdk11",
2859
2850
  "8.9.2-jdk11",
2860
- "8.5.11-ubuntu-jdk11",
2861
- "8.5.5-jdk17",
2862
- "8.5.5-ubuntu-jdk17",
2863
- "8.1.1-jdk11",
2864
- "8.5.5",
2865
- "8.1.1-ubuntu-jdk11",
2851
+ "8.0.2-ubuntu-jdk17",
2866
2852
  "8.0.1-jdk17",
2867
- "8.5.0-jdk17",
2868
- "7.19.23",
2869
- "8.5.7-jdk11",
2870
- "8.4.0",
2871
- "8.9.2-ubuntu-jdk11",
2872
- "8.0.0-ubuntu-jdk17",
2873
- "8.0.0-jdk17",
2853
+ "9-ubuntu-jdk17",
2854
+ "8.5.12-ubi9-jdk17",
2855
+ "8.7.1-jdk11",
2856
+ "9.1-ubuntu-jdk17",
2857
+ "8.5.12-ubi9",
2858
+ "7.19.12-ubuntu-jdk11",
2859
+ "7.19.24",
2860
+ "ubuntu-jdk17",
2861
+ "8.2.1-ubuntu-jdk17",
2862
+ "8.4.4-jdk11",
2863
+ "jdk17",
2864
+ "9.1-jdk17",
2865
+ "8.5.8-ubi9",
2866
+ "8.0.2-jdk17",
2874
2867
  "ubi9-jdk17",
2868
+ "8.1.1-jdk11",
2869
+ "8.3.4-ubuntu-jdk11",
2870
+ "7.19.8",
2871
+ "7.19.24-ubuntu-jdk11",
2872
+ "8.2-jdk11",
2873
+ "7.19.12",
2874
+ "8.3.4-jdk11",
2875
+ "ubi9-jdk21",
2876
+ "8.9.4-ubi9-jdk17",
2877
+ "8.5.11-jdk11",
2878
+ "8.1.1",
2879
+ "7.19.3-ubuntu-jdk11",
2880
+ "8.3-ubuntu-jdk11",
2881
+ "8.5.18-ubuntu-jdk11",
2875
2882
  "8.2.1-jdk17",
2876
- "9.1.1-ubi9-jdk17",
2877
- "8.7.1-jdk11",
2878
2883
  "8.7.1-ubuntu-jdk11",
2879
- "8.5.11-jdk11",
2880
- "8.4.0-jdk17",
2881
- "7.19.8-ubuntu-jdk11",
2882
- "8.0.0",
2883
- "8.6.1-ubuntu-jdk17",
2884
+ "8.0-jdk17",
2885
+ "7.19.19",
2886
+ "8.9.4-ubi9",
2887
+ "ubi9",
2888
+ "8.0.1-ubuntu-jdk17",
2889
+ "8.9.8-ubi9",
2884
2890
  "8.0.0-jdk11",
2885
- "8.6.1-jdk17",
2891
+ "8.1.1-ubuntu-jdk17",
2892
+ "9.1.1-ubi9",
2893
+ "8.5.7-ubuntu-jdk11",
2886
2894
  "8.0.0-ubuntu-jdk11",
2887
- "8.4.0-ubuntu-jdk17",
2888
- "8.1.1-jdk17",
2889
- "7.19.12-ubuntu-jdk11",
2890
- "8.2.1-ubuntu-jdk17",
2891
2895
  "7.19.8-jdk11",
2896
+ "8.9.8-ubi9-jdk17",
2892
2897
  "7.19.12-jdk11",
2893
- "8.0.2-jdk17",
2894
- "8.6.0-ubi9",
2895
- "7.19.18",
2896
- "8.1.1-ubuntu-jdk17",
2897
- "7.19.18-ubuntu-jdk11",
2898
- "8.9.5-ubi9",
2899
- "8.6.1",
2900
- "8.9.5-ubi9-jdk17",
2901
- "8.6.0-ubi9-jdk17",
2902
- "7.19.8",
2903
- "7.19.18-jdk11",
2904
- "7.19.12",
2898
+ "9.1.1-ubi9-jdk21",
2899
+ "9.1.1-ubi9-jdk17",
2900
+ "7.19.8-ubuntu-jdk11",
2901
+ "8.1.1-ubuntu-jdk11",
2902
+ "8.5.7-jdk11",
2903
+ "8.0.0",
2904
+ "7.19.3",
2905
+ "7.19.3-jdk11",
2906
+ "8.1.1-jdk17",
2905
2907
  "9.0.2-ubi9-jdk21",
2906
- "8.0.2-ubuntu-jdk17",
2907
- "8.5.14-ubi9",
2908
+ "8.7.1-ubi9",
2909
+ "8.7.1-ubi9-jdk17",
2910
+ "8.5.9-ubi9",
2908
2911
  "8.5.14-ubi9-jdk17",
2909
- "8.5.6-ubi9-jdk17",
2910
- "8.5.6-ubi9",
2911
- "8.9.1-ubi9",
2912
- "8.9.1-ubi9-jdk17",
2913
- "9.0.1-ubi9-jdk17",
2912
+ "8.5.9-ubi9-jdk17",
2913
+ "8.9.0-ubi9-jdk17",
2914
+ "8.9.0-ubi9",
2915
+ "8.5.14-ubi9",
2916
+ "8.5.18-ubi9",
2917
+ "8.5.18-ubi9-jdk17",
2918
+ "9.2.0-rc1-jdk21",
2919
+ "9.2.0-rc1-ubuntu-jdk21",
2920
+ "9.2.0-rc1",
2921
+ "eap",
2922
+ "9.2.0-rc1-jdk17",
2923
+ "eap-jdk17",
2924
+ "eap-ubuntu-jdk17",
2925
+ "9.2.0-rc1-ubuntu-jdk17",
2926
+ "9.2.0-rc1-ubi9-jdk17",
2927
+ "9.2.0-rc1-ubi9",
2928
+ "9.2.0-rc1-ubi9-jdk21",
2914
2929
  "9.2.0-beta3-ubuntu-jdk17",
2915
2930
  "9.2.0-beta3-jdk17",
2916
2931
  "9.2.0-beta3",
@@ -9770,4 +9785,4 @@ process.on('SIGINT', () => {
9770
9785
  console.log(`Received term signal, trying to stop gracefully 💪`);
9771
9786
  gracefulExit(1);
9772
9787
  });
9773
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9saWNlbmNlcy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvdXBtLmpzIiwiLi4vLi4vZGlzdC9zcmMvYXB0L2hlbHBlcnMvaW5zdGFsbEFwcC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvQWN0aW9uSGFuZGxlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0RhdGFiYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvdHlwZXMvQXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2FtcHMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2lzUmVjdXJzaXZlQnVpbGQuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3Nob3dSZWN1cnNpdmVCdWlsZFdhcm5pbmcuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL0N1c3RvbUJ1aWxkZXIuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2RvY2tlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvSW5zdGFsbGVyLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9GaWxlV2F0Y2hlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGguanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldFZlcnNpb25zLmpzIiwiLi4vLi4vZGlzdC9zcmMvY29tbWFuZHMvaW5zdGFsbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdGltZWJvbWIgPSB7XG4gICAgJ2ppcmEnOiAnQUFBQ0JBME9EQW9QZU5wOWtsMXYyakFVaHUveks0NjBPeVFIU0x1VklrVWFUYndOVkJLVWhFbmJ1Z3NURHVBMnNTUGJnYkZmUHhPQzFpKzR5RVhPNSt2blBSK3lHaUdTVy9DdW9YYzd2Qm9NdlQ0RU5BT3Y1L1djdFVJVUcxbFZxTng3bnFQUVNKZmNjQ2w4R21VMG1TWGpsRHBSWFM1UXhhdTVScVY5MG5jQ0tRekxUY1JLOUV1OTQ0SXAvY1EvTTFNd3JUa1RiaTVMWjFhcmZNTTBoc3lnNy9YNkE5THZFODl6MmozWnZzSm1RQkJQcHpRSnhxUDdVNHIrcWJqYU4zMnpHKy9iYVIyZE1sNmMzNWVpMnFJYWgvNGR2YUhrT3Z6cGtVL3g1SVo4dmJvZE9JOWNNYmRTY2xubnhqMzhFQzFYWnNjVXVuWXkzNkp2VkkzT3hHWm1iWlhkendJVTVsVkpXaTkwcm5qVlFHb2k3MEI4NzNHTmhQT1FPNTFPRkdma1M1eVFXUktIOHlBYnh4R1pwOVFtL0VDaHBiR0V4UjdNQnFHZEFsVGtjb2tLN01NZU1UZndhMk5NOVREc2R0ZlNmUUduV3h3N0NCNDdmcnNRU2hEU3dKSnJvL2lpTm1nbmN3MUdRbDVySTB0cnRldFk0c0tnWUNKL1k0cVZGU1IwbE5HUTNQMDRhRHhyVEt2V09qTVhUMEx1eENVMzN0eGFTaVBmZnVSanIzZnNPL21DNm9nL1Ztc211R1lOMElqOTNURlljVlh1blFhYURiNCt3SmJGZDd2ZzBPSTVJZjUzTkVOdG9LMkFsVlF3R1NjalNGdDVscmpkV3ltdThXRUlnU3d0cHB5ekFzTGd4Ums4UDVoRzlQTUEzYktpUHNwZHNVTGpKUndYN3VrZjUvTlg3VEF0QWhVQWhRU0h6OURneWNPWDd3Y3dFUk1KYjNUTEdiNENGR2tCL3hVV1NSSzNCWkxyUEY5Um42Wm1yVXFKWDAyb2MnLFxuICAgICdjb25mbHVlbmNlJzogJ0FBQUN6ZzBPREFvUGVOcDlWTzl2MmpBUS9aNi93dEsrSVlXR3NFS0hGR21RbUphdS9HZ0ltOWlZSmhNT1lwcllrZTFBNGErZlNjaEdLdHFQUHZ2ZXZYdjN6cC82Z3FMSExFYjJIYktzVHZOenA5bEM5OE1BMlpiZE5LWWdkaUFHbnRQRFEyejY4OEhjZEgvYU03UDVvMmtaVHpRRUppRTRwREFpQ1RnQm5nYUQwYjBSQ3I1ZjFTOXVIZmNVV1hTUUJ6dUllUXJDQ0RsYjEwbW82QTRjSlRMUVNWbElsekZVZ2dwSThpY2tNYkFWRWJJK3lwSWxpUEc2UjVJbDV6NGtYRUYzQTB4SnAxR3l3YThwRlFlUEtIQW1EZHQ2K0E5Y0pWUUVLNXlXbWhNVjhIR1pMUldrd3JGOFBaTWdwR1BmR2g3SVVOQlVVYzZjQUtSQ2NWRVlyYmxBYVp4dEtFT3JzcWo4Vi9VUzg1enhYZCtmVUd3RDcwaWNrUnd5ZjdBUkFDemlxVVlvKzhJcm10L2pVWUQ5aVQrWVltTklLRlBBQ0F1dnlISWFRRVVTSFlnejBHOHJvcmdDOHJwNXF2YUVaVnAzcHQwdThzdmUzVGlUQ3NTSXIwQTZsbEdyMVZ3ZmR3UHNtYjI1UGpqYlZ3cTJFY1pjbTZuUzZES1grSTNpVDF5UC9DeTQyVEJlNEZBSzBXaFpWdHU2YXpZYlplWmxCMFUyd3JwbmtRb3FxNDBVeXN0NjdScUI5elU4azY0b2xZZXFLbkdtTkN6V2lzZU9Vb0t3aExMb0sxRXhrWklTVmc5NWNyM1pOL1lxZHVlU1lXNjQ5L21kcmZKQVpPUU0zYjNiOTZEUnVoVmszMjYxa2tGdmV4d2U0MVVRdEpOMTJ1NUd6NkdjUFQ3UG43MUg3MHQ2OUNQY2J4L2E5cmNqM3JEdXdsazR4cHJLQ0E1Vk4rb0pqc2FCMlIvNzVzUWZlek0zR0l4SDVteUtUNlBOL1FFcnREd2dGUUU2RTlWRENMVVp0TjhGMzBLbzBLOUlxWFRSdWJuWjhIcEZsWnR6QXlZVUdiL3J5T09JY1lWV1ZDcEJsNWtDalV3bFVoeUYybVk4MFdhb1h4ZHpFaE9XZTJZc05vUlJXV3hNdDZ4WC9oSDZQNXV4RjhiM3JMSklsejFMcFFXOTVwUVB2cWZMcTBrbXdvaEllTHMybDlQTXpmUTQ4THZ2V1RiZk1ZMUFYRGc5S0pETENWMkM5SFVNSCtDYUpmT2Z1ZGkvdjBrSUdWc3dMQUlVRU1ROVg3N2dxR0JkZkgwSEl6QmFWOE5hZFBVQ0ZCbitSaVVBNEQrSXFWUXBUVG91TFZZNjZhQ0dYMDIxMjEnLFxuICAgICdiaXRidWNrZXQnOiAnQUFBQm1nME9EQW9QZU5wOVVsMXYwekFVZmMrdnNNUmJKYWRKdGpHcFVpUzJKSlJPTk9sYUI0U0FCOWU5VzB4VHU3SnZDdjMzZUltRE9vUjR2ZWZlNC9QaE41OWhSNWJja1BpV1JOZXpLSjVGQ1prdkdVbWlKQTR5clpBTExQa0JVckhYb3RFbnU1ZUJSVzZiOEtNVW9DeXc4eEg2QlZaczJLS2NlM1RKcFVKUVhBa29maDJsT2VjY0lWMWRmUmhKQzdmUlhySnV3SnpBTFBMMC9xRitwSTlYR2FQeit1R0dzcHZia2RSeDhBd2NyMG5SZE9DbmxYbm1TbHFPVXF2MERsdHVyZVRLZzZ2T2lJWmI2SjlQb3ZpYVJtOXBISHMwTTlDZi9SdjFEdi9TUDVsTXlvclI5OVdhcnRaVlhtZHNVWlcwM2hRT1NIdENGK24yVExBQjRobElvWVRlZ1NGSG8zK0FRUEsxUVR4K20wMm56enJrbytKUTZNTzBIUzRvREJmZlE1SnJvalNTbmJSbzVMWkRjTXpTRXRSRWRCYjFBWXdOUnpzWGZmMEpnakN3TGpHLzRtQjVnaUUrSnpoYkYzZXN5T245bHhmMUYyMTQ1YTZPV3UyVi9xbUMvMmRWZG9jdG1PcXB0azVQR2lkK1hKeDQydzNOUFBIV1F1RDlmWEpiTDhQa3RmTGhVMkF2K04ycllNWTZ1VUVGcG5jWS9BWUNnZkZBTUN3Q0ZIemtCbGtHSC92UmRUZWVCU2ZVTXpVRGI0VzJBaFF5TTg5M1dQZzJROG9RQVlSZEJTeUtlVlVkb2c9PVgwMmpyJyxcbiAgICAnYmFtYm9vJzogJ0FBQUIzdzBPREFvUGVOcDlVbHRyMnpBWWZmZXZFT3d0b01SMTBxWUxHSmJZV3NubzdHQTdnOTBlWlBscm90V1dqQ1Nuelg3OUZGOElZV2tmRFBKM09lZHd6dmNoMnpkb1dTdmt6cEY3djVqZExyd3BDa2lhSWMvMVBPZVJNeEFhc21NTkVhM0F6MnhuSFQwNGdRSnF1QlFoTmVCNzd2UUd1elBzM2prNXJYSXB4NVFaZmdEZnFBYUdVdFJVT2FqNGFkWCtQa3BHeStVT2hORSt2bkdHNWxhRGFnczlMM210dVRvT0pGNVBramE1Wm9yWEp3RVhIRytwSlFkYU52Uy9jWXRMQXlzQlZGZnUxOWVodnhYUFFyNElKd1YxQUdVTEt6SW5lQmIrOFBCZC9HV09INllmNzUxTm85aWVhdWpsZVlNSEtZbDgrK0ZiMTNWR28xRVVaL2h6bk9CTkVvZmJJRnZIRWQ2bXhEYjgxa1FvVUg1RVpnK29wMGRFTUZtQVFyV1NmNEFaOUhOdlRQMXJNWm5zckxHbXBGcHpLc1pNVnBPeTI4RFFiZndlbzFBaUlRMHF1RGFLNTQwQmk4dzFNaEt4Umh0WldYdkhUZ2huK3pMUUJ2VTQ2RWxhMXJMWmNZRUtPRUFwYXp2dmZLWGNlaVNvWUcva2NUWGhUVWxGRytYVmJnS1ZOSEErZ0Y3Qk44dDNVdVU1c2RwUndYVVhHbm1sVlYwQ0NtUlZVM0c4RXZmNU1LVXc5dnFJRlYzNnRYN21vTmpmbzdDUFR4ZmVuWklKRXJMTVNJaFgzMDlwdkRkOFNVZ0szc21LTXBKc2tuVktCdHIyNnQ0RCtnZDNBQzVxTUN3Q0ZIT2FUV2ZGdkxDTEpQZnQzcWt0Vm8zRmFmbVpBaFJvamI5SUF4ajhLRXFQRFF5MHN0b3MzOTRTUVE9PVgwMm1xJ1xufTtcbmV4cG9ydCBjb25zdCBhcHAzaG91ciA9ICdBQUFCQ0EwT0RBb1BlTnBkajAxUHdrQVVSZmZ6S3laeFoxSXlVekFSa2xsUTI0Z1JhUU10R25hUDhWRW10alBOZkZUNTl5SlZGeXpmdWJrbjc5NlV4MEJ6NlNtYlVNNW5iRHpqOTdSSVN4b3pIcE1VbmJTcTg4cG9VYUx6dEZFU3RVTjZNSloyVGFpVnB1L1lZMk02dEk2c1FydEhteDhxZDc0RVorVEJJdnlVVS9Bb1lzN2ppRTBqemtuV1F4TXVpZkEySUJsVWJuUTdBdWxWandOOUFhVTlhdEFTczY5TzJkTkZVNHdYSkxjMWFPVUd3OXczNEp3Q1RUWm9lN1JQcVVnZXAyWDBWbTBuMGZOdXQ0Z1N4bC9KY25qOW5GYjZRNXRQL1VldTNMKzBQSFc0Z2haRm1tMnpaVjVrNi85NUNiUjdZOWJZR28vekdyVjNJcjRqUmJEeUNBNnZ0MzRETzhwM1NEQXNBaFFuSmpMRDVrOUZyM3VhSXprWEtmODNvNXZEZFFJVWU0WGVxdU5DQzNEKzlodDlaWWhOWkZLbW5oYz1YMDJkaCc7XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IEZvcm1EYXRhIGZyb20gJ2Zvcm0tZGF0YSc7XG5pbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtIH0gZnJvbSAnZnMnO1xuZXhwb3J0IGNvbnN0IHVwbG9hZFRvVVBNID0gYXN5bmMgKGJhc2VVcmwsIHBhdGgsIHVzZXJuYW1lLCBwYXNzd29yZCwgdmVyYm9zZSA9IHRydWUpID0+IHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHVzZXJuYW1lICYmIHBhc3N3b3JkID8gQnVmZmVyLmZyb20oYCR7dXNlcm5hbWV9OiR7cGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpIDogbnVsbDtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChgJHtiYXNlVXJsfS9yZXN0L3BsdWdpbnMvMS4wLz9vc19hdXRoVHlwZT1iYXNpY2AsIGNyZWRlbnRpYWxzID8ge1xuICAgICAgICBoZWFkZXJzOiB7ICdBdXRob3JpemF0aW9uJzogYEJhc2ljICR7Y3JlZGVudGlhbHN9YCB9XG4gICAgfSA6IHVuZGVmaW5lZCkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmFpbGVkIHRvIHVwbG9hZCBwbHVnaW4gYXJjaGl2ZSBmaWxlIHRvIFVQTSwgdW5hYmxlIHRvIHJldHJpZXZlIHRva2VuJywgZXJyKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gcmVzcG9uc2UuaGVhZGVyc1sndXBtLXRva2VuJ107XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncGx1Z2luJywgY3JlYXRlUmVhZFN0cmVhbShwYXRoKSk7XG4gICAgICAgICAgICByZXR1cm4gYXhpb3MucG9zdChgJHtiYXNlVXJsfS9yZXN0L3BsdWdpbnMvMS4wLz90b2tlbj0ke3Rva2VufWAsIGZvcm1EYXRhLCB7IGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybURhdGEuZ2V0SGVhZGVycygpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jcmVkZW50aWFscyA/IHsgJ0F1dGhvcml6YXRpb24nOiBgQmFzaWMgJHtjcmVkZW50aWFsc31gIH0gOiB7fVxuICAgICAgICAgICAgICAgIH0gfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmluaXNoZWQgdXBsb2FkaW5nIHBsdWdpbiBhcmNoaXZlIHRvIFVQTScpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gdXBsb2FkIHBsdWdpbiBhcmNoaXZlIGZpbGUgdG8gVVBNLCB1bmFibGUgdG8gcmV0cmlldmUgdG9rZW4gZnJvbSBoZWFkZXJzOicsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmhlYWRlcnMsIG51bGwsIDIpKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuZXhwb3J0IGNvbnN0IHdhaXRGb3JQbHVnaW5Ub0JlRW5hYmxlZCA9IGFzeW5jIChhcHBLZXksIGJhc2VVcmwsIHVzZXJuYW1lLCBwYXNzd29yZCwgdmVyYm9zZSA9IHRydWUpID0+IHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHVzZXJuYW1lICYmIHBhc3N3b3JkID8gQnVmZmVyLmZyb20oYCR7dXNlcm5hbWV9OiR7cGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpIDogbnVsbDtcbiAgICB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdXYWl0aW5nIGZvciBwbHVnaW4gdG8gYmVjb21lIGVuYWJsZWQnKTtcbiAgICBsZXQgaXNFbmFibGVkID0gZmFsc2U7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICB3aGlsZSAoIWlzRW5hYmxlZCAmJiBjb3VudCA8IDEyMCkge1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICB2ZXJib3NlICYmIGNvbnNvbGUubG9nKGBXYWl0aW5nIGZvciBwbHVnaW4gdG8gYmVjb21lIGVuYWJsZWQuLi4gJHtjb3VudH1zYCk7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgYXhpb3MuZ2V0KGAke2Jhc2VVcmx9L3Jlc3QvcGx1Z2lucy8xLjAvJHthcHBLZXl9LWtleWAsIGNyZWRlbnRpYWxzID8ge1xuICAgICAgICAgICAgaGVhZGVyczogeyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfVxuICAgICAgICB9IDogdW5kZWZpbmVkKS5jYXRjaCgoKSA9PiAoeyBkYXRhOiB7IGVuYWJsZWQ6IGZhbHNlIH0gfSkpO1xuICAgICAgICBpc0VuYWJsZWQgPSBkYXRhPy5lbmFibGVkO1xuICAgICAgICBjb3VudCsrO1xuICAgIH1cbiAgICByZXR1cm4gaXNFbmFibGVkO1xufTtcbmV4cG9ydCBjb25zdCByZWdpc3RlckxpY2Vuc2UgPSBhc3luYyAoYXBwS2V5LCBsaWNlbnNlLCBiYXNlVXJsLCB1c2VybmFtZSwgcGFzc3dvcmQsIHZlcmJvc2UgPSB0cnVlKSA9PiB7XG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSB1c2VybmFtZSAmJiBwYXNzd29yZCA/IEJ1ZmZlci5mcm9tKGAke3VzZXJuYW1lfToke3Bhc3N3b3JkfWApLnRvU3RyaW5nKCdiYXNlNjQnKSA6IG51bGw7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBheGlvcy5nZXQoYCR7YmFzZVVybH0vcmVzdC9wbHVnaW5zLzEuMC8ke2FwcEtleX0ta2V5L2xpY2Vuc2VgLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdYLUF0bGFzc2lhbi1Ub2tlbic6ICduby1jaGVjaycsXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3ZuZC5hdGwucGx1Z2lucytqc29uJyxcbiAgICAgICAgICAgIC4uLmNyZWRlbnRpYWxzID8geyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfSA6IHt9XG4gICAgICAgIH1cbiAgICB9KS5jYXRjaCgoKSA9PiAoeyBkYXRhOiB7fSB9KSk7XG4gICAgY29uc3QgeyByYXdMaWNlbnNlIH0gPSBkYXRhO1xuICAgIGlmICghcmF3TGljZW5zZSB8fCByYXdMaWNlbnNlICE9PSBsaWNlbnNlKSB7XG4gICAgICAgIHJldHVybiBheGlvcy5wdXQoYCR7YmFzZVVybH0vcmVzdC9wbHVnaW5zLzEuMC8ke2FwcEtleX0ta2V5L2xpY2Vuc2VgLCBgeyBcInJhd0xpY2Vuc2VcIjogXCIke2xpY2Vuc2V9XCIgfWAsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnWC1BdGxhc3NpYW4tVG9rZW4nOiAnbm8tY2hlY2snLFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vdm5kLmF0bC5wbHVnaW5zK2pzb24nLFxuICAgICAgICAgICAgICAgIC4uLmNyZWRlbnRpYWxzID8geyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfSA6IHt9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmluaXNoZWQgdXBsb2FkaW5nIGxpY2Vuc2UgdG8gVVBNJyk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHZlcmJvc2UgJiYgY29uc29sZS5sb2coJ0ZhaWxlZCB0byB1cGxvYWQgbGljZW5zZSB0byBVUE0nLCBlcnIpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgY29uZmlybSwgaW5wdXQsIHNlbGVjdCB9IGZyb20gJ0BpbnF1aXJlci9wcm9tcHRzJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBQcmVzZXRzLCBTaW5nbGVCYXIgfSBmcm9tICdjbGktcHJvZ3Jlc3MnO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICdjb250ZW50LWRpc3Bvc2l0aW9uJztcbmltcG9ydCB7IGNyZWF0ZVdyaXRlU3RyZWFtLCBta2RpclN5bmMsIHJtU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBhcHAzaG91ciB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbGljZW5jZXMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJMaWNlbnNlLCB1cGxvYWRUb1VQTSwgd2FpdEZvclBsdWdpblRvQmVFbmFibGVkIH0gZnJvbSAnLi4vLi4vaGVscGVycy91cG0nO1xuY29uc3QgcHJvZ3Jlc3NCYXIgPSBuZXcgU2luZ2xlQmFyKHtcbiAgICBmb3JtYXQ6ICcgIFt7YmFyfV0ge3BlcmNlbnRhZ2V9JSB8IEVUQToge2V0YV9mb3JtYXR0ZWR9bScsXG4gICAgZm9ybWF0VGltZTogKHZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdGFsID0gcHJvZ3Jlc3NCYXIuZ2V0VG90YWwoKSAvIDYwO1xuICAgICAgICBjb25zdCB0aW1lUGFzc2VkID0gcm91bmQoKHByb2dyZXNzQmFyLmdldFRvdGFsKCkgLSB2YWx1ZSkgLyA2MCwgMC41KTtcbiAgICAgICAgcmV0dXJuIHRpbWVQYXNzZWQgPT09IHRvdGFsID8gYCR7dG90YWx9YCA6IGAke3RvdGFsIC0gdGltZVBhc3NlZH1gO1xuICAgIH0sXG4gICAgaGlkZUN1cnNvcjogdHJ1ZVxufSwgUHJlc2V0cy5sZWdhY3kpO1xuY29uc3Qgcm91bmQgPSAodmFsdWUsIHN0ZXAgPSAxLjApID0+IHtcbiAgICBjb25zdCBpbnYgPSAxLjAgLyBzdGVwO1xuICAgIHJldHVybiBNYXRoLmZsb29yKHZhbHVlICogaW52KSAvIGludjtcbn07XG5jb25zdCBkb3dubG9hZCA9IGFzeW5jIChhZGRvbktleSkgPT4ge1xuICAgIGNvbnN0IHRtcERpciA9IGpvaW4oaG9tZWRpcigpLCAnLmRjZHgnLCAndG1wJyk7XG4gICAgbGV0IHRtcEZpbGUgPSBqb2luKHRtcERpciwgYWRkb25LZXkpO1xuICAgIG1rZGlyU3luYyh0bXBEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGF3YWl0IGF4aW9zKHtcbiAgICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgICAgdXJsOiBgaHR0cHM6Ly9tYXJrZXRwbGFjZS5hdGxhc3NpYW4uY29tL2Rvd25sb2FkL3BsdWdpbnMvJHthZGRvbktleX1gLFxuICAgICAgICByZXNwb25zZVR5cGU6ICdzdHJlYW0nXG4gICAgfSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGNvbnN0IGRpc3Bvc2l0aW9uID0gcGFyc2UocmVzcG9uc2UuaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddKTtcbiAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBkaXNwb3NpdGlvbj8ucGFyYW1ldGVycz8uZmlsZW5hbWUgfHwgYWRkb25LZXk7XG4gICAgICAgIHRtcEZpbGUgPSBmaWxlbmFtZTtcbiAgICAgICAgcmVzcG9uc2UuZGF0YS5waXBlKGNyZWF0ZVdyaXRlU3RyZWFtKHRtcEZpbGUpKTtcbiAgICB9KS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICByZXR1cm4gdG1wRmlsZTtcbn07XG5leHBvcnQgY29uc3QgaW5zdGFsbEFwcCA9IGFzeW5jIChiYXNlVXJsLCBhcHBLZXksIGxpY2Vuc2UgPSBhcHAzaG91ciwgZm9yY2UpID0+IHtcbiAgICAvLyBJZiB3ZSBhcmUgaW4gbm9uLWludGVyYWN0aXZlIG1vZGUsIHdlIHdpbGwgZG93bmxvYWQgaXQgZnJvbSBNUEFDXG4gICAgaWYgKGZvcmNlKSB7XG4gICAgICAgIC8vIEluIG9yZGVyIHRvIGRvIHNvLCB3ZSBuZWVkIGFuIGFwcGtleS4gSWYgdGhpcyBpcyBub3QgcHJvdmlkZWQsIHRocm93IGEgaGlzc3kgZml0XG4gICAgICAgIGlmICghYXBwS2V5KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBhdXRvbWF0aWNhbGx5IGluc3RhbGwgYXBwIGludG8gY2x1c3RlciwgYGFwcEtleWAgd2FzIG5vdCBwcm92aWRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIERvd25sb2FkIHRoZSBmaWxlIGZyb20gTVBBQ1xuICAgICAgICBjb25zdCBmaWxlID0gYXdhaXQgZG93bmxvYWQoYXBwS2V5KTtcbiAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgbGV0IHRpbWVySWQgPSBudWxsO1xuICAgICAgICBsZXQgaXNJbnN0YWxsZWRTdWNjZXNmdWxseSA9IGZhbHNlO1xuICAgICAgICB3aGlsZSAoIWlzSW5zdGFsbGVkU3VjY2VzZnVsbHkgJiYgY291bnQgPD0gNCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoY291bnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFxuICBJbnN0YWxsaW5nIHRoZSBhcHAgKCR7YXBwS2V5fSkgaW50byB0aGUgY2x1c3RlciB1c2luZyB0aGUgVW5pdmVyc2FsIFBsdWdpbiBNYW5hZ2VyIFJFU1QgQVBJYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgXG4gIFJldHJ5aW5nIGluc3RhbGxhdGlvbiBvZiB0aGUgYXBwICgke2FwcEtleX0pIGludG8gdGhlIGNsdXN0ZXIgdXNpbmcgdGhlIFVuaXZlcnNhbCBQbHVnaW4gTWFuYWdlciBSRVNUIEFQSSAoYXR0ZW1wdCAke2NvdW50ICsgMX0pYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFNob3cgYSBwcm9ncmVzcyBiYXJcbiAgICAgICAgICAgICAgICBwcm9ncmVzc0Jhci5zdGFydCgxODAsIDApO1xuICAgICAgICAgICAgICAgIHRpbWVySWQgPSBzZXRJbnRlcnZhbCgoKSA9PiBwcm9ncmVzc0Jhci5pbmNyZW1lbnQoKSwgMTAwMCk7XG4gICAgICAgICAgICAgICAgLy8gVXBsb2FkIGl0IGludG8gdGhlIGNsdXN0ZXIgdXNpbmcgdGhlIFVQTSBSRVNUIEFQSVxuICAgICAgICAgICAgICAgIGNvbnN0IGlzSW5zdGFsbGVkID0gYXdhaXQgdXBsb2FkVG9VUE0oYmFzZVVybCwgZmlsZSwgJ2FkbWluJywgJ2FkbWluJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmICghaXNJbnN0YWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gaW5zdGFsbCBhcHAgaW50byB0aGUgY2x1c3RlciB1c2luZyB0aGUgVW5pdmVyc2FsIFBsdWdpbiBNYW5hZ2VyIFJFU1QgQVBJJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSBwbHVnaW4gdG8gYmUgZW5hYmxlZFxuICAgICAgICAgICAgICAgIGNvbnN0IGlzRW5hYmxlZCA9IGF3YWl0IHdhaXRGb3JQbHVnaW5Ub0JlRW5hYmxlZChhcHBLZXksIGJhc2VVcmwsICdhZG1pbicsICdhZG1pbicsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBhcHAgY291bGQgbm90IGJlIGVuYWJsZWQgb24gdGhlIGNsdXN0ZXIsIHBsZWFzZSByZWZlciB0byB0aGUgYXBwbGljYXRpb24gbG9nIGZpbGVzIGZvciBtb3JlIGluZm9ybWF0aW9uJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBsaWNlbnNlICh1c2UgdGhlIDMgaG91ciB0aW1lYm9tYiBpbiBub24taW50ZXJhY3RpdmUgbW9kZSlcbiAgICAgICAgICAgICAgICBjb25zdCBpc0xpY2Vuc2VkID0gYXdhaXQgcmVnaXN0ZXJMaWNlbnNlKGFwcEtleSwgbGljZW5zZSwgYmFzZVVybCwgJ2FkbWluJywgJ2FkbWluJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmICghaXNMaWNlbnNlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBsaWNlbnNlIGNvdWxkIG5vdCBiZSBhcHBsaWVkIGZvciB0aGUgYXBwIG9uIHRoZSBjbHVzdGVyLCBwbGVhc2UgcmVmZXIgdG8gdGhlIGFwcGxpY2F0aW9uIGxvZyBmaWxlcyBmb3IgbW9yZSBpbmZvcm1hdGlvbicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpc0luc3RhbGxlZFN1Y2Nlc2Z1bGx5ID0gaXNJbnN0YWxsZWQgJiYgaXNFbmFibGVkICYmIGlzTGljZW5zZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvdW50IDw9IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2FpdCBhIG1pbnV0ZSAoY29vbGRvd24gcGVyaW9kKSBiZWZvcmUgcmV0cnlpbmdcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgIC8vIFN0b3AgdGhlIHByb2dyZXNzIGJhclxuICAgICAgICAgICAgICAgIHByb2dyZXNzQmFyLnN0b3AoKTtcbiAgICAgICAgICAgICAgICBpZiAodGltZXJJZCkge1xuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVySWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBSZW1vdmUgdGhlIHRlbXBvcmFyeSBmaWxlXG4gICAgICAgIHJtU3luYyhmaWxlLCB7IGZvcmNlOiB0cnVlIH0pO1xuICAgICAgICAvLyBUZWxsIHRoZW0gd2Ugc3VjY2VlZGVkXG4gICAgICAgIGNvbnNvbGUubG9nKGDinJQgRmluaXNoZWQgaW5zdGFsbGluZyB0aGUgYXBwICgke2FwcEtleX0pYCk7XG4gICAgICAgIC8vIElmIHdlJ3JlIGluIGludGVyYWN0aXZlIG1vZGUsIGxldCdzIGJlIG5pY2VcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIFRlbGwgdGhlIHVzZXIgdGhleSBoYXZlIG9wdGlvbnNcbiAgICAgICAgY29uc29sZS5sb2coYFxuICBJdCBpcyBub3cgcmVxdWlyZWQgdG8gaW5zdGFsbCB0aGUgYXBwIGludG8gdGhlIEppcmEgY2x1c3Rlci5cbiAgV2UgY2FuIGluc3RhbGwgaXQgZnJvbSB0aGUgQXRsYXNzaWFuIE1hcmtldHBsYWNlIG9yIHlvdSBjYW4gaW5zdGFsbCBpdCBtYW51YWxseS5cbmApO1xuICAgICAgICAvLyBBc2sgdGhlbSBpZiB0aGV5IHByZWZlciBhdXRvbWF0aW9uIG9yIHRlZGlvdXMgbWFudWFsIHRhc2tzXG4gICAgICAgIGNvbnN0IG1ldGhvZCA9IGF3YWl0IHNlbGVjdCh7XG4gICAgICAgICAgICBtZXNzYWdlOiBgSG93IGRvIHlvdSB3YW50IHRvIGluc3RhbGwgdGhlIGFwcD9gLFxuICAgICAgICAgICAgZGVmYXVsdDogJ21wYWMnLFxuICAgICAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgICAgICAgIHsgbmFtZTogJ01hcmtldHBsYWNlJywgdmFsdWU6ICdtcGFjJyB9LFxuICAgICAgICAgICAgICAgIHsgbmFtZTogJ01hbnVhbCcsIHZhbHVlOiAnbWFudWFsJyB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBJZiB0aGV5IGNob3NlIGF1dG9tYXRpb24sIGxldCdzIGF1dG9tYXRlIVxuICAgICAgICBpZiAobWV0aG9kID09PSAnbXBhYycpIHtcbiAgICAgICAgICAgIC8vIEFzayB0aGVtIG5pY2VseSBmb3IgdGhlIGFwcCBrZXlcbiAgICAgICAgICAgIGNvbnN0IGFkZG9uS2V5ID0gYXdhaXQgaW5wdXQoe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgcHJvdmlkZSB0aGUga2V5IG9mIHRoZSBhcHAgdG8gYmUgaW5zdGFsbGVkJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBhcHBLZXksXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gQXNrIHRoZW0gbmljZWx5IGZvciB0aGUgYXBwIGxpY2Vuc2UgdG8gYmUgdXNlZFxuICAgICAgICAgICAgY29uc3QgYXBwTGljZW5zZSA9IGF3YWl0IGlucHV0KHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgTGljZW5zZWAsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogbGljZW5zZSxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBUZWxsIHRoZW0gd2UgYXJlIHN0YXJ0aW5nXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgXG4gIEluc3RhbGxpbmcgdGhlIGFwcCAoJHthZGRvbktleX0pIGludG8gdGhlIGNsdXN0ZXIgdXNpbmcgdGhlIFVuaXZlcnNhbCBQbHVnaW4gTWFuYWdlciBSRVNUIEFQSWApO1xuICAgICAgICAgICAgLy8gU2hvdyBhIHByb2dyZXNzIGJhclxuICAgICAgICAgICAgcHJvZ3Jlc3NCYXIuc3RhcnQoMTgwLCAwKTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVySWQgPSBzZXRJbnRlcnZhbCgoKSA9PiBwcm9ncmVzc0Jhci5pbmNyZW1lbnQoKSwgMTAwMCk7XG4gICAgICAgICAgICAvLyBEb3dubG9hZCB0aGUgZmlsZSBmcm9tIE1QQUNcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBkb3dubG9hZChhZGRvbktleSk7XG4gICAgICAgICAgICAvLyBVcGxvYWQgaXQgaW50byB0aGUgY2x1c3RlciB1c2luZyB0aGUgVVBNIFJFU1QgQVBJXG4gICAgICAgICAgICBjb25zdCBpc0luc3RhbGxlZCA9IGF3YWl0IHVwbG9hZFRvVVBNKGJhc2VVcmwsIGZpbGUsICdhZG1pbicsICdhZG1pbicsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmICghaXNJbnN0YWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBpbnN0YWxsIGFwcCBpbnRvIHRoZSBjbHVzdGVyIHVzaW5nIHRoZSBVbml2ZXJzYWwgUGx1Z2luIE1hbmFnZXIgUkVTVCBBUEknKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSBwbHVnaW4gdG8gYmUgZW5hYmxlZFxuICAgICAgICAgICAgY29uc3QgaXNFbmFibGVkID0gYXdhaXQgd2FpdEZvclBsdWdpblRvQmVFbmFibGVkKGFkZG9uS2V5LCBiYXNlVXJsLCAnYWRtaW4nLCAnYWRtaW4nLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIWlzRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGFwcCBjb3VsZCBub3QgYmUgZW5hYmxlZCBvbiB0aGUgY2x1c3RlciwgcGxlYXNlIHJlZmVyIHRvIHRoZSBhcHBsaWNhdGlvbiBsb2cgZmlsZXMgZm9yIG1vcmUgaW5mb3JtYXRpb24nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBwcm92aWRlZCBsaWNlbnNlXG4gICAgICAgICAgICBjb25zdCBpc0xpY2Vuc2VkID0gYXdhaXQgcmVnaXN0ZXJMaWNlbnNlKGFkZG9uS2V5LCBhcHBMaWNlbnNlLCBiYXNlVXJsLCAnYWRtaW4nLCAnYWRtaW4nLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIWlzTGljZW5zZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBsaWNlbnNlIGNvdWxkIG5vdCBiZSBhcHBsaWVkIGZvciB0aGUgYXBwIG9uIHRoZSBjbHVzdGVyLCBwbGVhc2UgcmVmZXIgdG8gdGhlIGFwcGxpY2F0aW9uIGxvZyBmaWxlcyBmb3IgbW9yZSBpbmZvcm1hdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSB0ZW1wb3JhcnkgZmlsZVxuICAgICAgICAgICAgcm1TeW5jKGZpbGUsIHsgZm9yY2U6IHRydWUgfSk7XG4gICAgICAgICAgICAvLyBTdG9wIHRoZSBwcm9ncmVzcyBiYXJcbiAgICAgICAgICAgIHByb2dyZXNzQmFyLnN0b3AoKTtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJJZCk7XG4gICAgICAgICAgICAvLyBUZWxsIHRoZW0gd2Ugc3VjY2VlZGVkXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhg4pyUIEZpbmlzaGVkIGluc3RhbGxpbmcgdGhlIGFwcCAoJHthZGRvbktleX0pYCk7XG4gICAgICAgICAgICAvLyBUaGV5IGNob3NlIHZpb2xlbmNlXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBSdWIgaXQgaW4gdGhlaXIgZmFjZVxuICAgICAgICAgICAgY29uc29sZS5sb2coYFxuICBZb3UgY2FuIG5vdyBpbnN0YWxsIHRoZSBhcHAgbWFudWFsbHkgaW50byB0aGUgY2x1c3Rlci5cbiAgUGxlYXNlIGdvIHRvIHRoZSBmb2xsb3dpbmcgcGFnZSAobG9naW4gd2l0aCAnYWRtaW4nLydhZG1pbicpOlxuICAgIFxuICAke2Jhc2VVcmx9L3BsdWdpbnMvc2VydmxldC91cG0/c291cmNlPXNpZGVfbmF2X21hbmFnZV9hZGRvbnNcbmApO1xuICAgICAgICAgICAgLy8gTWFrZSB0aGVtIGdyb3ZlbFxuICAgICAgICAgICAgY29uc3QgaXNJbnN0YWxsZWRNYW51YWxseSA9IGF3YWl0IGNvbmZpcm0oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBQbGVhc2UgY29uZmlybSB0aGF0IHlvdSBoYXZlIGluc3RhbGxlZCB0aGUgYXBwIG1hbnVhbGx5YFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBJZiB0aGUgYXBwIGFpbid0IGluc3RhbGxlZCwgd2UgYWluJ3QgZG9pbmcgbm90aGluJy4gU28gd2UgYmV0dGVyIHRocm93IGEgaGlzc3kgZml0XG4gICAgICAgICAgICBpZiAoIWlzSW5zdGFsbGVkTWFudWFsbHkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0l0IGlzIHJlcXVpcmVkIHRvIGluc3RhbGwgdGhlIGFwcCB0byBydW4gdGhlIHNlY29uZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHRlc3QnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG4iLCJpbXBvcnQgeyBhc3luY0V4aXRIb29rLCBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgQWN0aW9uSGFuZGxlciA9IGFzeW5jIChwcm9ncmFtLCB7IGFjdGlvbiwgZXJyb3JIYW5kbGVyIH0sIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBvcHMgPSBvcHRpb25zIHx8IHByb2dyYW0ub3B0cygpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xuICAgICAgICBhc3luY0V4aXRIb29rKGFzeW5jIChjb2RlKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGVycm9ySGFuZGxlcihvcHMpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UudHJpbSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSByZWplY3RpbmcgdGhlIHByb21pc2UgdG8gYXZvaWQgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIFwiQ2FsbGluZyBwcm9jZXNzLmV4aXRcIiBsb2cgbWVzc2FnZSBmcm9tIGV4aXQtaG9va1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyO1xuICAgICAgICAgICAgICAgIHJlamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgd2FpdDogNjAgKiAxICogMTAwMFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uKG9wcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMCk7XG4gICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgICAgICAgICAgIGVyci5pc3N1ZXMuZm9yRWFjaChpc3N1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSArPSBgVW5hYmxlIHRvIHBhcnNlIG9wdGlvbiAke2lzc3VlLnBhdGguam9pbignLCcpfTogJHtpc3N1ZS5tZXNzYWdlfVxcbmA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvciB8fCB0eXBlb2YgZXJyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVyci50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDEpO1xuICAgICAgICB9KTtcbiAgICB9KS5jYXRjaChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHByb2dyYW0uZXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlLFxuICAgICAgICAgICAgLy8gd2UgY2FuIGFzc3VtZSBhIGNsZWFuIGV4aXRcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHZlcnNpb25zIGZyb20gJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJztcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgPSB6LmVudW0oW1xuICAgICdwb3N0Z3Jlc3FsJyxcbiAgICAnbXlzcWwnLFxuICAgICdtc3NxbCdcbl0pO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMgPSB6LmVudW0oW1xuICAgICdEZXZlbG9wZXInLFxuICAgICdFeHByZXNzJyxcbiAgICAnU3RhbmRhcmQnLFxuICAgICdFbnRlcnByaXNlJyxcbiAgICAnRW50ZXJwcmlzZUNvcmUnXG5dKTtcbmV4cG9ydCBjb25zdCBEYXRhYmFzZU9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKSxcbiAgICBkYXRhYmFzZTogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIHBhc3N3b3JkOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICBjbGVhbjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcHJ1bmU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHZlcmJvc2U6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKVxufSk7XG5leHBvcnQgY29uc3QgUG9zdGdyZVNRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDU0MzIpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnb3JnLnBvc3RncmVzcWwuRHJpdmVyJykuZGVmYXVsdCgnb3JnLnBvc3RncmVzcWwuRHJpdmVyJylcbn0pO1xuZXhwb3J0IGNvbnN0IE15U1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoMzMwNiksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdjb20ubXlzcWwuamRiYy5Ecml2ZXInKS5kZWZhdWx0KCdjb20ubXlzcWwuamRiYy5Ecml2ZXInKVxufSk7XG5leHBvcnQgY29uc3QgTVNTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBlZGl0aW9uOiBTdXBwb3J0ZWRNU1NRTEVkaXRpb25zLmRlZmF1bHQoJ0RldmVsb3BlcicpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDE0MzMpLFxuICAgIHVzZXJuYW1lOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdzYScpLmRlZmF1bHQoJ3NhJyksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKCkuZGVmYXVsdCgnRGF0YUNlbnRlckRYIScpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnY29tLm1pY3Jvc29mdC5zcWxzZXJ2ZXIuamRiYy5TUUxTZXJ2ZXJEcml2ZXInKS5kZWZhdWx0KCdjb20ubWljcm9zb2Z0LnNxbHNlcnZlci5qZGJjLlNRTFNlcnZlckRyaXZlcicpXG59KTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzIH0gZnJvbSAnLi9EYXRhYmFzZSc7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkQXBwbGljYXRpb25zID0gei5lbnVtKFtcbiAgICAnamlyYScsXG4gICAgJ2NvbmZsdWVuY2UnLFxuICAgICdiaXRidWNrZXQnLFxuICAgICdiYW1ib28nXG5dKTtcbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvbk9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLFxuICAgIHRhZzogei5zdHJpbmcoKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBkYXRhYmFzZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLmRlZmF1bHQoJ3Bvc3RncmVzcWwnKSxcbiAgICBkYXRhYmFzZVRhZzogei5zdHJpbmcoKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkuZGVmYXVsdCgnODAnKSxcbiAgICBjb250ZXh0UGF0aDogei5zdHJpbmcoKSxcbiAgICB4bXM6IHouc3RyaW5nKCkuZGVmYXVsdCgnMTAyNG0nKSxcbiAgICB4bXg6IHouc3RyaW5nKCkuZGVmYXVsdCgnMTAyNG0nKSxcbiAgICB3YXRjaDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZXh0OiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAgIGluc3RhbGw6IHouYm9vbGVhbigpLFxuICAgIG91dHB1dERpcmVjdG9yeTogei5zdHJpbmcoKSxcbiAgICBhY3RpdmF0ZVByb2ZpbGVzOiB6LnN0cmluZygpLFxuICAgIGNsZWFuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBwcnVuZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZGVidWc6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gICAgY3dkOiB6LnN0cmluZygpXG59KS5wYXJ0aWFsKHtcbiAgICBjb250ZXh0UGF0aDogdHJ1ZSxcbiAgICBleHQ6IHRydWUsXG4gICAgaW5zdGFsbDogdHJ1ZSxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IHRydWUsXG4gICAgYWN0aXZhdGVQcm9maWxlczogdHJ1ZSxcbiAgICBjd2Q6IHRydWVcbn0pO1xuIiwiaW1wb3J0IHsgRE9NUGFyc2VyLCBYTUxTZXJpYWxpemVyIH0gZnJvbSAnQHhtbGRvbS94bWxkb20nO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IFhNTFBhcnNlciB9IGZyb20gJ2Zhc3QteG1sLXBhcnNlcic7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB4cGF0aCBmcm9tICd4cGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5leHBvcnQgY2xhc3MgQU1QUyB7XG4gICAgb3B0aW9ucztcbiAgICBtYXZlbiA9IG51bGw7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IHtcbiAgICAgICAgcHJvZmlsZXM6IFtdXG4gICAgfSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHVibGljIE1ldGhvZHNcbiAgICBzdG9wKCkge1xuICAgICAgICBpZiAodGhpcy5tYXZlbikge1xuICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5tYXZlbi5raWxsKDApO1xuICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgTWF2ZW4gcHJvY2VzcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hdmVuKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5tYXZlbi5raWxsKDApO1xuICAgICAgICAgICAgICAgIGlmICgha2lsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgTWF2ZW4gcHJvY2VzcycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm1hdmVuID0gc3Bhd24oJ212bicsIFsncGFja2FnZScsIC4uLmFyZ3NdLCB7IGN3ZDogdGhpcy5vcHRpb25zPy5jd2QgfHwgY3dkKCksIHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICB0aGlzLm1hdmVuLm9uKCdleGl0JywgKGNvZGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1hdmVuID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gMCB8fCBjb2RlID09PSAxMzApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgTWF2ZW4gZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaXNBdGxhc3NpYW5QbHVnaW4gPSAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoJy8vKltsb2NhbC1uYW1lKCk9XFwncGFja2FnaW5nXFwnXScpO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVzLnNvbWUoaXRlbSA9PiBpdGVtLnRleHRDb250ZW50ID09PSAnYXRsYXNzaWFuLXBsdWdpbicpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZ2V0QXBwbGljYXRpb25WZXJzaW9uKCkge1xuICAgICAgICBjb25zdCBhcHBsaWNhdGlvbnMgPSB0aGlzLmdldEFwcGxpY2F0aW9ucygpO1xuICAgICAgICBpZiAoYXBwbGljYXRpb25zLnNpemUgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IFssIHZlcnNpb25dID0gQXJyYXkuZnJvbShhcHBsaWNhdGlvbnMpWzBdO1xuICAgICAgICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXBwbGljYXRpb25zLnNpemUgPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgY29udGFpbnMgbXVsdGlwbGUgQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGVjaWRlIHdoaWNoIHByb2R1Y3QgdG8gdXNlIPCfmLAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBnZXRBcHBsaWNhdGlvbigpIHtcbiAgICAgICAgY29uc3QgYXBwbGljYXRpb25zID0gdGhpcy5nZXRBcHBsaWNhdGlvbnMoKTtcbiAgICAgICAgaWYgKGFwcGxpY2F0aW9ucy5zaXplID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBbbmFtZV0gPSBBcnJheS5mcm9tKGFwcGxpY2F0aW9ucylbMF07XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBjb250YWlucyBtdWx0aXBsZSBBTVBTIGNvbmZpZ3VyYXRpb24sIHVuYWJsZSB0byBkZWNpZGUgd2hpY2ggcHJvZHVjdCB0byB1c2Ug8J+YsCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBnZXRBcHBsaWNhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldE5vZGVzKCcvLypbbG9jYWwtbmFtZSgpPVxcJ2dyb3VwSWRcXCcgYW5kIHRleHQoKT1cXCdjb20uYXRsYXNzaWFuLm1hdmVuLnBsdWdpbnNcXCddJyk7XG4gICAgICAgIGNvbnN0IG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUgPSBub2Rlcy5maWx0ZXIobm9kZSA9PiB0aGlzLmlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSk7XG4gICAgICAgIG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcGx1Z2luIH0gPSB0aGlzLnRvT2JqZWN0KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgIGlmICgnYW1wcy1tYXZlbi1wbHVnaW4nID09PSBwbHVnaW4/LmFydGlmYWN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjb25maWd1cmF0aW9uIH0gPSBwbHVnaW4gfHwge307XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uPy5wcm9kdWN0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5wcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0LmlkKSB8fCB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByb2R1Y3QgfSA9IGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0LmlkKSB8fCB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdXBwb3J0ZWRBcHBsaWNhdGlvbiA9IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocGx1Z2luPy5hcnRpZmFjdElkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZ2V0VmVyc2lvbihub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KHN1cHBvcnRlZEFwcGxpY2F0aW9uLCB2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbih2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYSkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZ2V0VmVyc2lvbihub2RlKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBjb25zdCB7IHBsdWdpbiB9ID0gdGhpcy50b09iamVjdChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHsgY29uZmlndXJhdGlvbiB9ID0gcGx1Z2luIHx8IHt9O1xuICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHBsdWdpbi5jb25maWd1cmF0aW9uLnByb2R1Y3RWZXJzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdCA9IEFycmF5LmlzQXJyYXkoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpID8gY29uZmlndXJhdGlvbj8ucHJvZHVjdHNbMF0gOiBjb25maWd1cmF0aW9uLnByb2R1Y3RzLnByb2R1Y3Q7XG4gICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QgJiYgcHJvZHVjdC52ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwcm9kdWN0LnZlcnNpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBkb1Byb3BlcnR5UmVwbGFjZW1lbnQodmFsdWUpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHByb2ZpbGUsIHJlcGxhY2UgcHJvZmlsZSBwcm9wZXJ0aWVzIGZpcnN0IGFzIHRoZXkgdGFrZSBwcmVjZWRlbmNlXG4gICAgICAgIGNvbnN0IHByb2ZpbGVQcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByb2ZpbGVQcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbChgJFxceyR7cHJvcGVydHlLZXl9fWAsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydGllcygpO1xuICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbChgJFxceyR7cHJvcGVydHlLZXl9fWAsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0UHJvcGVydGllcygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXROb2RlcygnLy8qW2xvY2FsLW5hbWUoKT1cXCdwcm9wZXJ0aWVzXFwnXScpO1xuICAgICAgICBjb25zdCBub2Rlc1dpdGhBY3RpdmVQcm9maWxlID0gbm9kZXMuZmlsdGVyKG5vZGUgPT4gdGhpcy5pc0FjdGl2YXRlZFByb2ZpbGUobm9kZSkpO1xuICAgICAgICBub2Rlc1dpdGhBY3RpdmVQcm9maWxlLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHByb3BlcnRpZXMgfSA9IHRoaXMudG9PYmplY3Qobm9kZSk7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHJlc3VsdFtrZXldID0gdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0Tm9kZXMoZXhwcmVzc2lvbiwgc2luZ2xlKSB7XG4gICAgICAgIGNvbnN0IHBvbUZpbGVQYXRoID0gam9pbih0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgJy4vcG9tLnhtbCcpO1xuICAgICAgICBjb25zdCBoYXNQb21GaWxlID0gZXhpc3RzU3luYyhwb21GaWxlUGF0aCk7XG4gICAgICAgIGlmIChoYXNQb21GaWxlKSB7XG4gICAgICAgICAgICBjb25zdCB4bWwgPSByZWFkRmlsZVN5bmMocG9tRmlsZVBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgICBjb25zdCBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHhtbCwgJ3RleHQveG1sJyk7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHNpbmdsZSA/IHhwYXRoLnNlbGVjdChleHByZXNzaW9uLCBkb2MsIHRydWUpIDogeHBhdGguc2VsZWN0KGV4cHJlc3Npb24sIGRvYywgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc2luZ2xlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdG9PYmplY3Qobm9kZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IFhNTFBhcnNlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZShuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKG5vZGUpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmaW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSh0YWdOYW1lLCBub2RlKSB7XG4gICAgICAgIGNvbnN0IHsgcGFyZW50Tm9kZSB9ID0gbm9kZTtcbiAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnROb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZFBhcmVudE5vZGVCeVRhZ05hbWUodGFnTmFtZSwgcGFyZW50Tm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSB7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVQYXJlbnROb2RlID0gdGhpcy5maW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSgncHJvZmlsZScsIG5vZGUpO1xuICAgICAgICBjb25zdCBwcm9maWxlTm9kZSA9IHByb2ZpbGVQYXJlbnROb2RlID8gdGhpcy50b09iamVjdChwcm9maWxlUGFyZW50Tm9kZSkgOiBudWxsO1xuICAgICAgICBpZiAoIXByb2ZpbGVOb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcm9maWxlTm9kZSAmJiAocHJvZmlsZU5vZGUuYWN0aXZlQnlEZWZhdWx0ID09PSAndHJ1ZScgfHwgdGhpcy5vcHRpb25zLnByb2ZpbGVzLmluY2x1ZGVzKHByb2ZpbGVOb2RlLnByb2ZpbGUuaWQpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJleHBvcnQgY29uc3QgaXNSZWN1cnNpdmVCdWlsZCA9IChsYXN0QnVpbGRDb21wbGV0ZWQpID0+IGxhc3RCdWlsZENvbXBsZXRlZCA+IChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIDUgKiAxMDAwKTtcbiIsImV4cG9ydCBjb25zdCBzaG93UmVjdXJzaXZlQnVpbGRXYXJuaW5nID0gKG91dHB1dERpcmVjdG9yeSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmVjdXJzaXZlIGJ1aWxkIHRyaWdnZXIgZGV0ZWN0ZWQuIFRoZSBsYXN0IGJ1aWxkIGNvbXBsZXRlZCBsYXN0IHRoYW4gNSBzZWNvbmRzIGFnb1xuVGhpcyBtYXkgaW5kaWNhdGUgdGhhdCB0aGUgYnVpbGQgY2hhbmdlcyBmaWxlcyBvdXRzaWRlIG9mIHRoZSBvdXRwdXQgZGlyZWN0b3J5XG5BbHRlcm5hdGl2ZWx5LCBNYXZlbiBpcyB1c2luZyBhIGRpZmZlcmVudCBvdXRwdXQgZGlyZWN0b3J5IHRoYW4gY29uZmlndXJlZDpcbicke291dHB1dERpcmVjdG9yeX0nXG5cblBsZWFzZSBtYWtlIHN1cmUgdG8gY2hlY2sgeW91ciBidWlsZCBwcm9jZXNzIGFuZC9vciBzcGVjaWZ5IGEgZGlmZmVyZW50IG91dHB1dCBkaXJlY3RvcnkgdXNpbmcgdGhlICctbycgb3B0aW9uXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1gKTtcbn07XG4iLCJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5leHBvcnQgY2xhc3MgQ3VzdG9tQnVpbGRlciB7XG4gICAgb3B0aW9ucztcbiAgICBwcm9jID0gbnVsbDtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQdWJsaWMgTWV0aG9kc1xuICAgIHN0b3AoKSB7XG4gICAgICAgIGlmICh0aGlzLnByb2MpIHtcbiAgICAgICAgICAgIGNvbnN0IGtpbGxlZCA9IHRoaXMucHJvYy5raWxsKDApO1xuICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgYnVpbGQgcHJvY2VzcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJvYykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtpbGxlZCA9IHRoaXMucHJvYy5raWxsKDApO1xuICAgICAgICAgICAgICAgIGlmICgha2lsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgYnVpbGQgcHJvY2VzcycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGV4ZWNTeW5jKHRoaXMub3B0aW9ucy5jbWQsIHsgY3dkOiB0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdGF0dXMgfSA9IGVycjtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBCdWlsZCBleGl0ZWQgd2l0aCBjb2RlICR7c3RhdHVzfWApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBEb2NrZXJvZGUgZnJvbSAnZG9ja2Vyb2RlJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuY29uc3QgZG9ja2VyID0gbmV3IERvY2tlcm9kZSgpO1xuZXhwb3J0IGNvbnN0IGdldFJ1bm5pbmdDb250YWluZXJJZHMgPSBhc3luYyAoYXBwbGljYXRpb24pID0+IHtcbiAgICBjb25zdCBjb250YWluZXJzID0gYXdhaXQgZG9ja2VyLmxpc3RDb250YWluZXJzKHsgZmlsdGVyczoge1xuICAgICAgICAgICAgc3RhdHVzOiBbJ3J1bm5pbmcnXSxcbiAgICAgICAgICAgIGxhYmVsOiBbYGNvbS5kb2NrZXIuY29tcG9zZS5zZXJ2aWNlPSR7YXBwbGljYXRpb259YF1cbiAgICAgICAgfSB9KTtcbiAgICByZXR1cm4gY29udGFpbmVycy5tYXAoaXRlbSA9PiBpdGVtLklkKTtcbn07XG5leHBvcnQgY29uc3QgY29weSA9IGFzeW5jIChzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgpID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBkb2NrZXIgPSBzcGF3bignZG9ja2VyJywgWydjcCcsIHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aF0sIHsgY3dkOiBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgZG9ja2VyLm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICAgIGRvY2tlci5vbignZXhpdCcsIChjb2RlKSA9PiAoY29kZSA9PT0gMCkgPyByZXNvbHZlKCkgOiByZWplY3QobmV3IEVycm9yKGBEb2NrZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpKTtcbiAgICB9KTtcbn07XG4iLCJpbXBvcnQgeyByZXNvbHZlIGFzIHJlc29sdmVQYXRoIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCAqIGFzIERvY2tlciBmcm9tICcuL2RvY2tlcic7XG5pbXBvcnQgeyB1cGxvYWRUb1VQTSB9IGZyb20gJy4vdXBtJztcbmV4cG9ydCBjb25zdCBJbnN0YWxsZXIgPSBhc3luYyAobmFtZSwgcGF0aCwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lcklkcyA9IGF3YWl0IERvY2tlci5nZXRSdW5uaW5nQ29udGFpbmVySWRzKG5hbWUpO1xuICAgIGlmICghY29udGFpbmVySWRzIHx8IGNvbnRhaW5lcklkcy5sZW5ndGggPD0gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgVGhlcmUgYXJlIG5vIHJ1bm5pbmcgaW5zdGFuY2Ugb2YgJHtuYW1lfSwgdW5hYmxlIHRvIGluc3RhbGwgcGx1Z2luIPCfpJRgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbHNlIGlmIChjb250YWluZXJJZHMubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgVGhlcmUgYXJlIG11bHRwbGUgcnVubmluZyBpbnN0YW5jZSBvZiAke25hbWV9LCB1bmFibGUgdG8gZGV0ZXJtaW5lIHdoaWNoIG9uZSB0byB1c2Ug8J+klGApO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbnRhaW5lcklkID0gY29udGFpbmVySWRzWzBdO1xuICAgIGlmIChjb250YWluZXJJZCkge1xuICAgICAgICBpZiAob3B0aW9ucy5vYnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGb3VuZCB1cGRhdGVkIHBsdWdpbiwgdXBsb2FkaW5nIGl0IHRvIFVQTSBvbiBydW5uaW5nIGluc3RhbmNlcyBvZiAke25hbWV9YCk7XG4gICAgICAgICAgICBjb25zdCBob3N0VXJsID0gb3B0aW9ucy5wb3J0ID8gYGxvY2FsaG9zdDoke29wdGlvbnMucG9ydH1gIDogYGxvY2FsaG9zdGA7XG4gICAgICAgICAgICBjb25zdCBiYXNlVXJsID0gb3B0aW9ucy51c2VybmFtZSAmJiBvcHRpb25zLnBhc3N3b3JkID8gYGh0dHA6Ly8ke29wdGlvbnMudXNlcm5hbWV9OiR7b3B0aW9ucy5wYXNzd29yZH1AJHtob3N0VXJsfWAgOiBgaHR0cDovLyR7aG9zdFVybH1gO1xuICAgICAgICAgICAgYXdhaXQgdXBsb2FkVG9VUE0ocmVzb2x2ZVBhdGgob3B0aW9ucy5jd2QgfHwgY3dkKCksIHBhdGgpLCBiYXNlVXJsKS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gdXBsb2FkIHBsdWdpbiBhcmNoaXZlIGZpbGUgdG8gVVBNJywgZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYEZvdW5kIHVwZGF0ZWQgcGx1Z2luLCB1cGxvYWRpbmcgaXQgdG8gUXVpY2tSZWxvYWQgb24gcnVubmluZyBpbnN0YW5jZXMgb2YgJHtuYW1lfWApO1xuICAgICAgICAgICAgYXdhaXQgRG9ja2VyLmNvcHkocmVzb2x2ZVBhdGgob3B0aW9ucy5jd2QgfHwgY3dkKCksIHBhdGgpLCBgJHtjb250YWluZXJJZH06L29wdC9xdWlja3JlbG9hZC9gKVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IGNvbnNvbGUubG9nKCdGaW5pc2hlZCB1cGxvYWRpbmcgcGx1Z2luIGFyY2hpdmUgdG8gUXVpY2tSZWxvYWQnKSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gdXBsb2FkIHBsdWdpbiBhcmNoaXZlIGZpbGUgdG8gUXVpY2tSZWxvYWQnLCBlcnIpKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG4iLCJpbXBvcnQgeyB3YXRjaCB9IGZyb20gJ2Nob2tpZGFyJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHsgaXNSZWN1cnNpdmVCdWlsZCB9IGZyb20gJy4uL2hlbHBlcnMvaXNSZWN1cnNpdmVCdWlsZCc7XG5pbXBvcnQgeyBzaG93UmVjdXJzaXZlQnVpbGRXYXJuaW5nIH0gZnJvbSAnLi4vaGVscGVycy9zaG93UmVjdXJzaXZlQnVpbGRXYXJuaW5nJztcbmltcG9ydCB7IEFNUFMgfSBmcm9tICcuL2FtcHMnO1xuaW1wb3J0IHsgQ3VzdG9tQnVpbGRlciB9IGZyb20gJy4vQ3VzdG9tQnVpbGRlcic7XG5pbXBvcnQgeyBJbnN0YWxsZXIgfSBmcm9tICcuL0luc3RhbGxlcic7XG5leHBvcnQgY29uc3QgRmlsZVdhdGNoZXIgPSAobmFtZSwgb3B0aW9ucywgbWF2ZW5PcHRzLCBpbnN0YWxsT25seSA9IGZhbHNlKSA9PiB7XG4gICAgbGV0IGxhc3RCdWlsZENvbXBsZXRlZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGNvbnN0IG91dHB1dERpcmVjdG9yeSA9IG9wdGlvbnMub3V0cHV0RGlyZWN0b3J5IHx8ICd0YXJnZXQnO1xuICAgIGNvbnN0IHBhdHRlcm5zID0gb3B0aW9ucy5leHQgfHwgWycqKi8qJ107XG4gICAgY29uc29sZS5sb2coYFdhdGNoaW5nIGZpbGVzeXN0ZW0gZm9yIGNoYW5nZXMgdG8gc291cmNlIGZpbGVzICgke3BhdHRlcm5zLmpvaW4oJywgJyl9KWApO1xuICAgIGNvbnN0IGFtcHMgPSBuZXcgQU1QUyh7XG4gICAgICAgIGN3ZDogb3B0aW9ucy5jd2QsXG4gICAgICAgIHByb2ZpbGVzOiBvcHRpb25zLmFjdGl2YXRlUHJvZmlsZXM/LnNwbGl0KCcsJykgfHwgW11cbiAgICB9KTtcbiAgICBjb25zdCBkZWxpdmVyYWJsZUV4dGVuc2lvbiA9IG9wdGlvbnMub2JyID8gJy5vYnInIDogJy5qYXInO1xuICAgIHJldHVybiB3YXRjaChwYXR0ZXJucywge1xuICAgICAgICBjd2Q6IG9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICB1c2VQb2xsaW5nOiB0cnVlLFxuICAgICAgICBpbnRlcnZhbDogMiAqIDEwMDAsXG4gICAgICAgIGJpbmFyeUludGVydmFsOiAyICogMTAwMCxcbiAgICAgICAgYXdhaXRXcml0ZUZpbmlzaDogdHJ1ZSxcbiAgICAgICAgcGVyc2lzdGVudDogdHJ1ZSxcbiAgICAgICAgYXRvbWljOiB0cnVlXG4gICAgfSkub24oJ2NoYW5nZScsIGFzeW5jIChwYXRoKSA9PiB7XG4gICAgICAgIGlmIChvcHRpb25zLmluc3RhbGwgJiYgcGF0aC5zdGFydHNXaXRoKG91dHB1dERpcmVjdG9yeSkgJiYgcGF0aC50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKGRlbGl2ZXJhYmxlRXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgYXdhaXQgSW5zdGFsbGVyKG5hbWUsIHBhdGgsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFwYXRoLnN0YXJ0c1dpdGgob3V0cHV0RGlyZWN0b3J5KSAmJiAhaW5zdGFsbE9ubHkpIHtcbiAgICAgICAgICAgIGlmIChpc1JlY3Vyc2l2ZUJ1aWxkKGxhc3RCdWlsZENvbXBsZXRlZCkpIHtcbiAgICAgICAgICAgICAgICBzaG93UmVjdXJzaXZlQnVpbGRXYXJuaW5nKG91dHB1dERpcmVjdG9yeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRGV0ZWN0ZWQgZmlsZSBjaGFuZ2UsIHJlYnVpbGRpbmcgQXRsYXNpYW4gRGF0YSBDZW50ZXIgcGx1Z2luJyk7XG4gICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLmV4ZWMpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgYW1wcy5idWlsZChtYXZlbk9wdHMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZpbmlzaGVkIGJ1aWxkaW5nIEF0bGFzc2lhbiBEYXRhIENlbnRlciBwbHVnaW4gZm9yICR7bmFtZX0uLi4g8J+SqmApO1xuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIGJ1aWxkIEF0bGFzc2lhbiBEYXRhIENlbnRlciBwbHVnaW4gZm9yICR7bmFtZX0uLi4g8J+YsGApO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ3VzdG9tQnVpbGRlcih7IGNtZDogb3B0aW9ucy5leGVjLCBjd2Q6IG9wdGlvbnMuY3dkIHx8IGN3ZCgpIH0pO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBidWlsZGVyLmJ1aWxkKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmluaXNoZWQgYnVpbGRpbmcgQXRsYXNzaWFuIERhdGEgQ2VudGVyIHBsdWdpbiBmb3IgJHtuYW1lfS4uLiDwn5KqYCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGYWlsZWQgdG8gYnVpbGQgQXRsYXNzaWFuIERhdGEgQ2VudGVyIHBsdWdpbiBmb3IgJHtuYW1lfS4uLiDwn5iwYCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYXN0QnVpbGRDb21wbGV0ZWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufTtcbiIsImltcG9ydCB7IHJlYWxwYXRoU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tICdwYXRoJztcbmV4cG9ydCBjb25zdCB0b0Fic29sdXRlUGF0aCA9IChyZWxhdGl2ZVBhdGgpID0+IHtcbiAgICBjb25zdCBbLCBmaWxlUGF0aF0gPSBwcm9jZXNzLmFyZ3Y7XG4gICAgY29uc3QgZXhlY3V0YWJsZUZpbGVEaXIgPSBkaXJuYW1lKHJlYWxwYXRoU3luYyhmaWxlUGF0aCkpO1xuICAgIGNvbnN0IGJhc2VkaXIgPSBleGVjdXRhYmxlRmlsZURpci5zdWJzdHJpbmcoMCwgZXhlY3V0YWJsZUZpbGVEaXIuaW5kZXhPZignZGNkeCcpICsgNCk7XG4gICAgcmV0dXJuIGpvaW4oYmFzZWRpciwgcmVsYXRpdmVQYXRoLnJlcGxhY2VBbGwoJy4uLycsICcnKSk7XG59O1xuIiwiaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgdG9BYnNvbHV0ZVBhdGggfSBmcm9tICcuL3RvQWJzb2x1dGVQYXRoJztcbmV4cG9ydCBjb25zdCBnZXRWZXJzaW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gcmVhZEZpbGVTeW5jKHRvQWJzb2x1dGVQYXRoKCcuLi8uLi9hc3NldHMvdmVyc2lvbnMuanNvbicpLCAndXRmLTgnKTtcbiAgICBjb25zdCB2ZXJzaW9ucyA9IEpTT04ucGFyc2UoY29udGVudCk7XG4gICAgcmV0dXJuIHZlcnNpb25zO1xufTtcbiIsIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IENvbW1hbmQgYXMgQ29tbWFuZGVyLCBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvciwgT3B0aW9uIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGdyYWNlZnVsRXhpdCB9IGZyb20gJ2V4aXQtaG9vayc7XG5pbXBvcnQgeyBnbG9iIH0gZnJvbSAnZ2xvYic7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7IGluc3RhbGxBcHAgfSBmcm9tICcuLi9hcHQvaGVscGVycy9pbnN0YWxsQXBwJztcbmltcG9ydCB7IEFjdGlvbkhhbmRsZXIgfSBmcm9tICcuLi9oZWxwZXJzL0FjdGlvbkhhbmRsZXInO1xuaW1wb3J0IHsgQU1QUyB9IGZyb20gJy4uL2hlbHBlcnMvYW1wcyc7XG5pbXBvcnQgeyBGaWxlV2F0Y2hlciB9IGZyb20gJy4uL2hlbHBlcnMvRmlsZVdhdGNoZXInO1xuaW1wb3J0IHsgZ2V0VmVyc2lvbnMgfSBmcm9tICcuLi9oZWxwZXJzL2dldFZlcnNpb25zJztcbmltcG9ydCB7IEluc3RhbGxlciB9IGZyb20gJy4uL2hlbHBlcnMvSW5zdGFsbGVyJztcbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZGVyKCk7XG5jb25zdCB2ZXJzaW9ucyA9IGdldFZlcnNpb25zKCk7XG5jb25zdCBDb21tYW5kID0gKCkgPT4ge1xuICAgIGxldCBxdWlja1JlbG9hZCA9IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWN0aW9uOiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW1wcyA9IG5ldyBBTVBTKHtcbiAgICAgICAgICAgICAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgICAgICAgICAgICAgIHByb2ZpbGVzOiBvcHRpb25zLmFjdGl2YXRlUHJvZmlsZXM/LnNwbGl0KCcsJykgfHwgW11cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubXBhYykge1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5iYXNlVXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvcignTWlzc2luZyBhcmd1bWVudCBcIi0tYmFzZVVybFwiLCByZXF1aXJlZCBmb3IgaW5zdGFsbGluZyBmcm9tIHRoZSBBdGxhc3NpYW4gTWFya2V0cGxhY2UnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIW9wdGlvbnMuYXBwS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvcignTWlzc2luZyBhcmd1bWVudCBcIi0tYXBwS2V5XCIsIHJlcXVpcmVkIGZvciBpbnN0YWxsaW5nIGZyb20gdGhlIEF0bGFzc2lhbiBNYXJrZXRwbGFjZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhd2FpdCBpbnN0YWxsQXBwKG9wdGlvbnMuYmFzZVVybCwgb3B0aW9ucy5hcHBLZXksIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIWFtcHMuaXNBdGxhc3NpYW5QbHVnaW4oKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIGFuIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnkg8J+klCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gYW1wcy5nZXRBcHBsaWNhdGlvbigpO1xuICAgICAgICAgICAgICAgIGlmICghbmFtZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgZG9lcyBub3QgY29udGFpbiBhbiBBTVBTIGNvbmZpZ3VyYXRpb24sIHVuYWJsZSB0byBkZXRlY3QgcHJvZHVjdCDwn5iwJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSBhbXBzLmdldEFwcGxpY2F0aW9uVmVyc2lvbigpO1xuICAgICAgICAgICAgICAgIGlmICghdmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBkZXRlcm1pbmUgdmVyc2lvbiBmcm9tIEFNUFMgYW5kIG5vIHByb2R1Y3QgdmVyc2lvbiBwcm92aWRlZCAoLS10YWcpJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF2ZXJzaW9uc1tuYW1lXS5pbmNsdWRlcyh2ZXJzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2R1Y3QgdmVyc2lvbiAnJHt2ZXJzaW9ufScgaXMgaW52YWxpZC4gQWxsb3dlZCBjaG9pY2VzIGFyZSAke3ZlcnNpb25zW25hbWVdLmpvaW4oJywgJyl9LmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5vYnIgJiYgIW9wdGlvbnMudXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50IFwiLS11c2VybmFtZVwiLCByZXF1aXJlZCBmb3IgaW5zdGFsbGluZyBPQlIgYXJ0aWZhY3RzJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMub2JyICYmICFvcHRpb25zLnBhc3N3b3JkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvcignTWlzc2luZyBhcmd1bWVudCBcIi0tcGFzc3dvcmRcIiwgcmVxdWlyZWQgZm9yIGluc3RhbGxpbmcgT0JSIGFydGlmYWN0cycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy53YXRjaCkge1xuICAgICAgICAgICAgICAgICAgICBxdWlja1JlbG9hZCA9IEZpbGVXYXRjaGVyKG5hbWUsIG9wdGlvbnMsIFtdLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0RGlyZWN0b3J5ID0gb3B0aW9ucy5vdXRwdXREaXJlY3RvcnkgfHwgJ3RhcmdldCc7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVsaXZlcmFibGVFeHRlbnNpb24gPSBvcHRpb25zLm9iciA/ICdvYnInIDogJ2phcic7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnbG9iKGAke291dHB1dERpcmVjdG9yeX0vKi4ke2RlbGl2ZXJhYmxlRXh0ZW5zaW9ufWAsIHsgY3dkOiByZXNvbHZlKG9wdGlvbnMuY3dkIHx8IGN3ZCgpKSB9KTtcbiAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChmaWxlcy5tYXAocGF0aCA9PiBJbnN0YWxsZXIobmFtZSwgcGF0aCwgb3B0aW9ucykpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3JIYW5kbGVyOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAocXVpY2tSZWxvYWQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RvcHBpbmcgZmlsZXN5c3RlbSB3YXRjaGVyLi4uIOKPs2ApO1xuICAgICAgICAgICAgICAgIGF3YWl0IHF1aWNrUmVsb2FkLmNsb3NlKCkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgU3VjY2Vzc2Z1bGx5IHN0b3BwZWQgYWxsIHJ1bm5pbmcgcHJvY2Vzc2VzIPCfkqpgKTtcbiAgICAgICAgfVxuICAgIH07XG59O1xucHJvZ3JhbVxuICAgIC5uYW1lKCdkY2R4IGluc3RhbGwnKVxuICAgIC5kZXNjcmlwdGlvbihgSW5zdGFsbCB0aGUgQXRsYXNzaWFuIERhdGEgQ2VudGVyIHBsdWdpbiB1c2luZyB0aGUgQXRsYXNzaWFuIE1hdmVuIFBsdWdpbiBTdWl0ZSAoQU1QUykgY29uZmlndXJhdGlvbi5cbklmIHRoZXJlIGlzIGEgcnVubmluZyBpbnN0YW5jZSwgaXQgd2lsbCB0cnkgdG8gaW5zdGFsbCB0aGUgcGx1Z2luIHVzaW5nIFF1aWNrUmVsb2FkIG9yIHRoZSBVUE0gKGZvciBPQlIpLmApXG4gICAgLnNob3dIZWxwQWZ0ZXJFcnJvcih0cnVlKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXcsIC0td2F0Y2gnLCAnV2F0Y2ggZm9yIGZpbGVzeXN0ZW0gY2hhbmdlcyB0byBKQVIgb3IgT0JSIGZpbGVzIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5JykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctbywgLS1vdXRwdXREaXJlY3RvcnkgPGRpcmVjdG9yeT4nLCAnT3V0cHV0IGRpcmVjdG9yeSB3aGVyZSB0byBsb29rIGZvciBnZW5lcmF0ZWQgSkFSIG9yIE9CUiBmaWxlcyAoZGVmYXVsdHMgdG8gYHRhcmdldGApJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLW9icicsICdVcGxvYWQgZ2VuZXJhdGVkIE9CUiBmaWxlIGluc3RlYWQgb2YgSkFSIGZpbGUgd2hlbiBpbnN0YWxsaW5nIHRoZSBhcHAnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tdXNlcm5hbWUgPHVzZXJuYW1lPicsICdUaGUgdXNlcm5hbWUgb2YgdGhlIGFkbWluaXN0cmF0b3IgKHJlcXVpcmVkIHdpdGggLS1vYnIpJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnVGhlIHBhc3N3b3JkIG9mIHRoZSBhZG1pbmlzdHJhdG9yIChyZXF1aXJlZCB3aXRoIC0tb2JyKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tYWN0aXZhdGUtcHJvZmlsZXMgPGFyZz4nLCAnQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgcHJvZmlsZXMgdG8gYWN0aXZhdGUnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tbXBhYycsICdJbnN0YWxsIHRoZSBhcHAgZnJvbSB0aGUgQXRsYXNzaWFuIE1hcmtldHBsYWNlJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWJhc2VVcmwgPHVybD4nLCAnVVJMIG9mIHRoZSBpbnN0YW5jZSAocmVxdWlyZWQgd2l0aCAtLW1wYWMpJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWFwcEtleSA8a2V5PicsICdUaGUga2V5IG9mIHRoZSBhcHAgdG8gYmUgaW5zdGFsbGVkIChyZXF1aXJlZCB3aXRoIC0tbXBhYyknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHdoZXJlIHRvIGZpbmQgdGhlIEFNUFMgY29uZmlndXJhdGlvbicpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBpbnN0YWxsOiB0cnVlIH0pKTtcbnByb2dyYW0ucGFyc2VBc3luYyhwcm9jZXNzLmFyZ3YpLmNhdGNoKCgpID0+IGdyYWNlZnVsRXhpdCgxKSk7XG5wcm9jZXNzLm9uKCdTSUdJTlQnLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFJlY2VpdmVkIHRlcm0gc2lnbmFsLCB0cnlpbmcgdG8gc3RvcCBncmFjZWZ1bGx5IPCfkqpgKTtcbiAgICBncmFjZWZ1bEV4aXQoMSk7XG59KTtcbiJdLCJuYW1lcyI6WyJ2ZXJzaW9ucyIsIkRvY2tlci5nZXRSdW5uaW5nQ29udGFpbmVySWRzIiwicmVzb2x2ZVBhdGgiLCJEb2NrZXIuY29weSIsIkNvbW1hbmRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTU8sTUFBTSxRQUFRLEdBQUcsMmFBQTJhOztBQ0g1YixNQUFNLFdBQVcsR0FBRyxPQUFPLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEdBQUcsSUFBSSxLQUFLO0FBQ3hGLElBQUksTUFBTSxXQUFXLEdBQUcsUUFBUSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ2hILElBQUksTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxP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QUMsQ0FBQztBQUNQLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoRE0sTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQy9DLElBQUksWUFBWTtBQUNoQixJQUFJ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
9788
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9saWNlbmNlcy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvdXBtLmpzIiwiLi4vLi4vZGlzdC9zcmMvYXB0L2hlbHBlcnMvaW5zdGFsbEFwcC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvQWN0aW9uSGFuZGxlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0RhdGFiYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvdHlwZXMvQXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2FtcHMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2lzUmVjdXJzaXZlQnVpbGQuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3Nob3dSZWN1cnNpdmVCdWlsZFdhcm5pbmcuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL0N1c3RvbUJ1aWxkZXIuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2RvY2tlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvSW5zdGFsbGVyLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9GaWxlV2F0Y2hlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGguanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldFZlcnNpb25zLmpzIiwiLi4vLi4vZGlzdC9zcmMvY29tbWFuZHMvaW5zdGFsbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdGltZWJvbWIgPSB7XG4gICAgJ2ppcmEnOiAnQUFBQ0JBME9EQW9QZU5wOWtsMXYyakFVaHUveks0NjBPeVFIU0x1VklrVWFUYndOVkJLVWhFbmJ1Z3NURHVBMnNTUGJnYkZmUHhPQzFpKzR5RVhPNSt2blBSK3lHaUdTVy9DdW9YYzd2Qm9NdlQ0RU5BT3Y1L1djdFVJVUcxbFZxTng3bnFQUVNKZmNjQ2w4R21VMG1TWGpsRHBSWFM1UXhhdTVScVY5MG5jQ0tRekxUY1JLOUV1OTQ0SXAvY1EvTTFNd3JUa1RiaTVMWjFhcmZNTTBoc3lnNy9YNkE5THZFODl6MmozWnZzSm1RQkJQcHpRSnhxUDdVNHIrcWJqYU4zMnpHKy9iYVIyZE1sNmMzNWVpMnFJYWgvNGR2YUhrT3Z6cGtVL3g1SVo4dmJvZE9JOWNNYmRTY2xubnhqMzhFQzFYWnNjVXVuWXkzNkp2VkkzT3hHWm1iWlhkendJVTVsVkpXaTkwcm5qVlFHb2k3MEI4NzNHTmhQT1FPNTFPRkdma1M1eVFXUktIOHlBYnh4R1pwOVFtL0VDaHBiR0V4UjdNQnFHZEFsVGtjb2tLN01NZU1UZndhMk5NOVREc2R0ZlNmUUduV3h3N0NCNDdmcnNRU2hEU3dKSnJvL2lpTm1nbmN3MUdRbDVySTB0cnRldFk0c0tnWUNKL1k0cVZGU1IwbE5HUTNQMDRhRHhyVEt2V09qTVhUMEx1eENVMzN0eGFTaVBmZnVSanIzZnNPL21DNm9nL1Ztc211R1lOMElqOTNURlljVlh1blFhYURiNCt3SmJGZDd2ZzBPSTVJZjUzTkVOdG9LMkFsVlF3R1NjalNGdDVscmpkV3ltdThXRUlnU3d0cHB5ekFzTGd4Ums4UDVoRzlQTUEzYktpUHNwZHNVTGpKUndYN3VrZjUvTlg3VEF0QWhVQWhRU0h6OURneWNPWDd3Y3dFUk1KYjNUTEdiNENGR2tCL3hVV1NSSzNCWkxyUEY5Um42Wm1yVXFKWDAyb2MnLFxuICAgICdjb25mbHVlbmNlJzogJ0FBQUN6ZzBPREFvUGVOcDlWTzl2MmpBUS9aNi93dEsrSVlXR3NFS0hGR21RbUphdS9HZ0ltOWlZSmhNT1lwcllrZTFBNGErZlNjaEdLdHFQUHZ2ZXZYdjN6cC82Z3FMSExFYjJIYktzVHZOenA5bEM5OE1BMlpiZE5LWWdkaUFHbnRQRFEyejY4OEhjZEgvYU03UDVvMmtaVHpRRUppRTRwREFpQ1RnQm5nYUQwYjBSQ3I1ZjFTOXVIZmNVV1hTUUJ6dUllUXJDQ0RsYjEwbW82QTRjSlRMUVNWbElsekZVZ2dwSThpY2tNYkFWRWJJK3lwSWxpUEc2UjVJbDV6NGtYRUYzQTB4SnAxR3l3YThwRlFlUEtIQW1EZHQ2K0E5Y0pWUUVLNXlXbWhNVjhIR1pMUldrd3JGOFBaTWdwR1BmR2g3SVVOQlVVYzZjQUtSQ2NWRVlyYmxBYVp4dEtFT3JzcWo4Vi9VUzg1enhYZCtmVUd3RDcwaWNrUnd5ZjdBUkFDemlxVVlvKzhJcm10L2pVWUQ5aVQrWVltTklLRlBBQ0F1dnlISWFRRVVTSFlnejBHOHJvcmdDOHJwNXF2YUVaVnAzcHQwdThzdmUzVGlUQ3NTSXIwQTZsbEdyMVZ3ZmR3UHNtYjI1UGpqYlZ3cTJFY1pjbTZuUzZES1grSTNpVDF5UC9DeTQyVEJlNEZBSzBXaFpWdHU2YXpZYlplWmxCMFUyd3JwbmtRb3FxNDBVeXN0NjdScUI5elU4azY0b2xZZXFLbkdtTkN6V2lzZU9Vb0t3aExMb0sxRXhrWklTVmc5NWNyM1pOL1lxZHVlU1lXNjQ5L21kcmZKQVpPUU0zYjNiOTZEUnVoVmszMjYxa2tGdmV4d2U0MVVRdEpOMTJ1NUd6NkdjUFQ3UG43MUg3MHQ2OUNQY2J4L2E5cmNqM3JEdXdsazR4cHJLQ0E1Vk4rb0pqc2FCMlIvNzVzUWZlek0zR0l4SDVteUtUNlBOL1FFcnREd2dGUUU2RTlWRENMVVp0TjhGMzBLbzBLOUlxWFRSdWJuWjhIcEZsWnR6QXlZVUdiL3J5T09JY1lWV1ZDcEJsNWtDalV3bFVoeUYybVk4MFdhb1h4ZHpFaE9XZTJZc05vUlJXV3hNdDZ4WC9oSDZQNXV4RjhiM3JMSklsejFMcFFXOTVwUVB2cWZMcTBrbXdvaEllTHMybDlQTXpmUTQ4THZ2V1RiZk1ZMUFYRGc5S0pETENWMkM5SFVNSCtDYUpmT2Z1ZGkvdjBrSUdWc3dMQUlVRU1ROVg3N2dxR0JkZkgwSEl6QmFWOE5hZFBVQ0ZCbitSaVVBNEQrSXFWUXBUVG91TFZZNjZhQ0dYMDIxMjEnLFxuICAgICdiaXRidWNrZXQnOiAnQUFBQm1nME9EQW9QZU5wOVVsMXYwekFVZmMrdnNNUmJKYWRKdGpHcFVpUzJKSlJPTk9sYUI0U0FCOWU5VzB4VHU3SnZDdjMzZUltRE9vUjR2ZWZlNC9QaE41OWhSNWJja1BpV1JOZXpLSjVGQ1prdkdVbWlKQTR5clpBTExQa0JVckhYb3RFbnU1ZUJSVzZiOEtNVW9DeXc4eEg2QlZaczJLS2NlM1RKcFVKUVhBa29maDJsT2VjY0lWMWRmUmhKQzdmUlhySnV3SnpBTFBMMC9xRitwSTlYR2FQeit1R0dzcHZia2RSeDhBd2NyMG5SZE9DbmxYbm1TbHFPVXF2MERsdHVyZVRLZzZ2T2lJWmI2SjlQb3ZpYVJtOXBISHMwTTlDZi9SdjFEdi9TUDVsTXlvclI5OVdhcnRaVlhtZHNVWlcwM2hRT1NIdENGK24yVExBQjRobElvWVRlZ1NGSG8zK0FRUEsxUVR4K20wMm56enJrbytKUTZNTzBIUzRvREJmZlE1SnJvalNTbmJSbzVMWkRjTXpTRXRSRWRCYjFBWXdOUnpzWGZmMEpnakN3TGpHLzRtQjVnaUUrSnpoYkYzZXN5T245bHhmMUYyMTQ1YTZPV3UyVi9xbUMvMmRWZG9jdG1PcXB0azVQR2lkK1hKeDQydzNOUFBIV1F1RDlmWEpiTDhQa3RmTGhVMkF2K04ycllNWTZ1VUVGcG5jWS9BWUNnZkZBTUN3Q0ZIemtCbGtHSC92UmRUZWVCU2ZVTXpVRGI0VzJBaFF5TTg5M1dQZzJROG9RQVlSZEJTeUtlVlVkb2c9PVgwMmpyJyxcbiAgICAnYmFtYm9vJzogJ0FBQUIzdzBPREFvUGVOcDlVbHRyMnpBWWZmZXZFT3d0b01SMTBxWUxHSmJZV3NubzdHQTdnOTBlWlBscm90V1dqQ1Nuelg3OUZGOElZV2tmRFBKM09lZHd6dmNoMnpkb1dTdmt6cEY3djVqZExyd3BDa2lhSWMvMVBPZVJNeEFhc21NTkVhM0F6MnhuSFQwNGdRSnF1QlFoTmVCNzd2UUd1elBzM2prNXJYSXB4NVFaZmdEZnFBYUdVdFJVT2FqNGFkWCtQa3BHeStVT2hORSt2bkdHNWxhRGFnczlMM210dVRvT0pGNVBramE1Wm9yWEp3RVhIRytwSlFkYU52Uy9jWXRMQXlzQlZGZnUxOWVodnhYUFFyNElKd1YxQUdVTEt6SW5lQmIrOFBCZC9HV09INllmNzUxTm85aWVhdWpsZVlNSEtZbDgrK0ZiMTNWR28xRVVaL2h6bk9CTkVvZmJJRnZIRWQ2bXhEYjgxa1FvVUg1RVpnK29wMGRFTUZtQVFyV1NmNEFaOUhOdlRQMXJNWm5zckxHbXBGcHpLc1pNVnBPeTI4RFFiZndlbzFBaUlRMHF1RGFLNTQwQmk4dzFNaEt4Umh0WldYdkhUZ2huK3pMUUJ2VTQ2RWxhMXJMWmNZRUtPRUFwYXp2dmZLWGNlaVNvWUcva2NUWGhUVWxGRytYVmJnS1ZOSEErZ0Y3Qk44dDNVdVU1c2RwUndYVVhHbm1sVlYwQ0NtUlZVM0c4RXZmNU1LVXc5dnFJRlYzNnRYN21vTmpmbzdDUFR4ZmVuWklKRXJMTVNJaFgzMDlwdkRkOFNVZ0szc21LTXBKc2tuVktCdHIyNnQ0RCtnZDNBQzVxTUN3Q0ZIT2FUV2ZGdkxDTEpQZnQzcWt0Vm8zRmFmbVpBaFJvamI5SUF4ajhLRXFQRFF5MHN0b3MzOTRTUVE9PVgwMm1xJ1xufTtcbmV4cG9ydCBjb25zdCBhcHAzaG91ciA9ICdBQUFCQ0EwT0RBb1BlTnBkajAxUHdrQVVSZmZ6S3laeFoxSXlVekFSa2xsUTI0Z1JhUU10R25hUDhWRW10alBOZkZUNTl5SlZGeXpmdWJrbjc5NlV4MEJ6NlNtYlVNNW5iRHpqOTdSSVN4b3pIcE1VbmJTcTg4cG9VYUx6dEZFU3RVTjZNSloyVGFpVnB1L1lZMk02dEk2c1FydEhteDhxZDc0RVorVEJJdnlVVS9Bb1lzN2ppRTBqemtuV1F4TXVpZkEySUJsVWJuUTdBdWxWandOOUFhVTlhdEFTczY5TzJkTkZVNHdYSkxjMWFPVUd3OXczNEp3Q1RUWm9lN1JQcVVnZXAyWDBWbTBuMGZOdXQ0Z1N4bC9KY25qOW5GYjZRNXRQL1VldTNMKzBQSFc0Z2haRm1tMnpaVjVrNi85NUNiUjdZOWJZR28vekdyVjNJcjRqUmJEeUNBNnZ0MzRETzhwM1NEQXNBaFFuSmpMRDVrOUZyM3VhSXprWEtmODNvNXZEZFFJVWU0WGVxdU5DQzNEKzlodDlaWWhOWkZLbW5oYz1YMDJkaCc7XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IEZvcm1EYXRhIGZyb20gJ2Zvcm0tZGF0YSc7XG5pbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtIH0gZnJvbSAnZnMnO1xuZXhwb3J0IGNvbnN0IHVwbG9hZFRvVVBNID0gYXN5bmMgKGJhc2VVcmwsIHBhdGgsIHVzZXJuYW1lLCBwYXNzd29yZCwgdmVyYm9zZSA9IHRydWUpID0+IHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHVzZXJuYW1lICYmIHBhc3N3b3JkID8gQnVmZmVyLmZyb20oYCR7dXNlcm5hbWV9OiR7cGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpIDogbnVsbDtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChgJHtiYXNlVXJsfS9yZXN0L3BsdWdpbnMvMS4wLz9vc19hdXRoVHlwZT1iYXNpY2AsIGNyZWRlbnRpYWxzID8ge1xuICAgICAgICBoZWFkZXJzOiB7ICdBdXRob3JpemF0aW9uJzogYEJhc2ljICR7Y3JlZGVudGlhbHN9YCB9XG4gICAgfSA6IHVuZGVmaW5lZCkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmFpbGVkIHRvIHVwbG9hZCBwbHVnaW4gYXJjaGl2ZSBmaWxlIHRvIFVQTSwgdW5hYmxlIHRvIHJldHJpZXZlIHRva2VuJywgZXJyKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gcmVzcG9uc2UuaGVhZGVyc1sndXBtLXRva2VuJ107XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncGx1Z2luJywgY3JlYXRlUmVhZFN0cmVhbShwYXRoKSk7XG4gICAgICAgICAgICByZXR1cm4gYXhpb3MucG9zdChgJHtiYXNlVXJsfS9yZXN0L3BsdWdpbnMvMS4wLz90b2tlbj0ke3Rva2VufWAsIGZvcm1EYXRhLCB7IGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybURhdGEuZ2V0SGVhZGVycygpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jcmVkZW50aWFscyA/IHsgJ0F1dGhvcml6YXRpb24nOiBgQmFzaWMgJHtjcmVkZW50aWFsc31gIH0gOiB7fVxuICAgICAgICAgICAgICAgIH0gfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmluaXNoZWQgdXBsb2FkaW5nIHBsdWdpbiBhcmNoaXZlIHRvIFVQTScpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gdXBsb2FkIHBsdWdpbiBhcmNoaXZlIGZpbGUgdG8gVVBNLCB1bmFibGUgdG8gcmV0cmlldmUgdG9rZW4gZnJvbSBoZWFkZXJzOicsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmhlYWRlcnMsIG51bGwsIDIpKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuZXhwb3J0IGNvbnN0IHdhaXRGb3JQbHVnaW5Ub0JlRW5hYmxlZCA9IGFzeW5jIChhcHBLZXksIGJhc2VVcmwsIHVzZXJuYW1lLCBwYXNzd29yZCwgdmVyYm9zZSA9IHRydWUpID0+IHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHVzZXJuYW1lICYmIHBhc3N3b3JkID8gQnVmZmVyLmZyb20oYCR7dXNlcm5hbWV9OiR7cGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpIDogbnVsbDtcbiAgICB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdXYWl0aW5nIGZvciBwbHVnaW4gdG8gYmVjb21lIGVuYWJsZWQnKTtcbiAgICBsZXQgaXNFbmFibGVkID0gZmFsc2U7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICB3aGlsZSAoIWlzRW5hYmxlZCAmJiBjb3VudCA8IDEyMCkge1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICB2ZXJib3NlICYmIGNvbnNvbGUubG9nKGBXYWl0aW5nIGZvciBwbHVnaW4gdG8gYmVjb21lIGVuYWJsZWQuLi4gJHtjb3VudH1zYCk7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgYXhpb3MuZ2V0KGAke2Jhc2VVcmx9L3Jlc3QvcGx1Z2lucy8xLjAvJHthcHBLZXl9LWtleWAsIGNyZWRlbnRpYWxzID8ge1xuICAgICAgICAgICAgaGVhZGVyczogeyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfVxuICAgICAgICB9IDogdW5kZWZpbmVkKS5jYXRjaCgoKSA9PiAoeyBkYXRhOiB7IGVuYWJsZWQ6IGZhbHNlIH0gfSkpO1xuICAgICAgICBpc0VuYWJsZWQgPSBkYXRhPy5lbmFibGVkO1xuICAgICAgICBjb3VudCsrO1xuICAgIH1cbiAgICByZXR1cm4gaXNFbmFibGVkO1xufTtcbmV4cG9ydCBjb25zdCByZWdpc3RlckxpY2Vuc2UgPSBhc3luYyAoYXBwS2V5LCBsaWNlbnNlLCBiYXNlVXJsLCB1c2VybmFtZSwgcGFzc3dvcmQsIHZlcmJvc2UgPSB0cnVlKSA9PiB7XG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSB1c2VybmFtZSAmJiBwYXNzd29yZCA/IEJ1ZmZlci5mcm9tKGAke3VzZXJuYW1lfToke3Bhc3N3b3JkfWApLnRvU3RyaW5nKCdiYXNlNjQnKSA6IG51bGw7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBheGlvcy5nZXQoYCR7YmFzZVVybH0vcmVzdC9wbHVnaW5zLzEuMC8ke2FwcEtleX0ta2V5L2xpY2Vuc2VgLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdYLUF0bGFzc2lhbi1Ub2tlbic6ICduby1jaGVjaycsXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3ZuZC5hdGwucGx1Z2lucytqc29uJyxcbiAgICAgICAgICAgIC4uLmNyZWRlbnRpYWxzID8geyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfSA6IHt9XG4gICAgICAgIH1cbiAgICB9KS5jYXRjaCgoKSA9PiAoeyBkYXRhOiB7fSB9KSk7XG4gICAgY29uc3QgeyByYXdMaWNlbnNlIH0gPSBkYXRhO1xuICAgIGlmICghcmF3TGljZW5zZSB8fCByYXdMaWNlbnNlICE9PSBsaWNlbnNlKSB7XG4gICAgICAgIHJldHVybiBheGlvcy5wdXQoYCR7YmFzZVVybH0vcmVzdC9wbHVnaW5zLzEuMC8ke2FwcEtleX0ta2V5L2xpY2Vuc2VgLCBgeyBcInJhd0xpY2Vuc2VcIjogXCIke2xpY2Vuc2V9XCIgfWAsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnWC1BdGxhc3NpYW4tVG9rZW4nOiAnbm8tY2hlY2snLFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vdm5kLmF0bC5wbHVnaW5zK2pzb24nLFxuICAgICAgICAgICAgICAgIC4uLmNyZWRlbnRpYWxzID8geyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfSA6IHt9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmluaXNoZWQgdXBsb2FkaW5nIGxpY2Vuc2UgdG8gVVBNJyk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHZlcmJvc2UgJiYgY29uc29sZS5sb2coJ0ZhaWxlZCB0byB1cGxvYWQgbGljZW5zZSB0byBVUE0nLCBlcnIpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgY29uZmlybSwgaW5wdXQsIHNlbGVjdCB9IGZyb20gJ0BpbnF1aXJlci9wcm9tcHRzJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBQcmVzZXRzLCBTaW5nbGVCYXIgfSBmcm9tICdjbGktcHJvZ3Jlc3MnO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICdjb250ZW50LWRpc3Bvc2l0aW9uJztcbmltcG9ydCB7IGNyZWF0ZVdyaXRlU3RyZWFtLCBta2RpclN5bmMsIHJtU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBhcHAzaG91ciB9IGZyb20gJy4uLy4uL2hlbHBlcnMvbGljZW5jZXMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJMaWNlbnNlLCB1cGxvYWRUb1VQTSwgd2FpdEZvclBsdWdpblRvQmVFbmFibGVkIH0gZnJvbSAnLi4vLi4vaGVscGVycy91cG0nO1xuY29uc3QgcHJvZ3Jlc3NCYXIgPSBuZXcgU2luZ2xlQmFyKHtcbiAgICBmb3JtYXQ6ICcgIFt7YmFyfV0ge3BlcmNlbnRhZ2V9JSB8IEVUQToge2V0YV9mb3JtYXR0ZWR9bScsXG4gICAgZm9ybWF0VGltZTogKHZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdGFsID0gcHJvZ3Jlc3NCYXIuZ2V0VG90YWwoKSAvIDYwO1xuICAgICAgICBjb25zdCB0aW1lUGFzc2VkID0gcm91bmQoKHByb2dyZXNzQmFyLmdldFRvdGFsKCkgLSB2YWx1ZSkgLyA2MCwgMC41KTtcbiAgICAgICAgcmV0dXJuIHRpbWVQYXNzZWQgPT09IHRvdGFsID8gYCR7dG90YWx9YCA6IGAke3RvdGFsIC0gdGltZVBhc3NlZH1gO1xuICAgIH0sXG4gICAgaGlkZUN1cnNvcjogdHJ1ZVxufSwgUHJlc2V0cy5sZWdhY3kpO1xuY29uc3Qgcm91bmQgPSAodmFsdWUsIHN0ZXAgPSAxLjApID0+IHtcbiAgICBjb25zdCBpbnYgPSAxLjAgLyBzdGVwO1xuICAgIHJldHVybiBNYXRoLmZsb29yKHZhbHVlICogaW52KSAvIGludjtcbn07XG5jb25zdCBkb3dubG9hZCA9IGFzeW5jIChhZGRvbktleSkgPT4ge1xuICAgIGNvbnN0IHRtcERpciA9IGpvaW4oaG9tZWRpcigpLCAnLmRjZHgnLCAndG1wJyk7XG4gICAgbGV0IHRtcEZpbGUgPSBqb2luKHRtcERpciwgYWRkb25LZXkpO1xuICAgIG1rZGlyU3luYyh0bXBEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGF3YWl0IGF4aW9zKHtcbiAgICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgICAgdXJsOiBgaHR0cHM6Ly9tYXJrZXRwbGFjZS5hdGxhc3NpYW4uY29tL2Rvd25sb2FkL3BsdWdpbnMvJHthZGRvbktleX1gLFxuICAgICAgICByZXNwb25zZVR5cGU6ICdzdHJlYW0nXG4gICAgfSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGNvbnN0IGRpc3Bvc2l0aW9uID0gcGFyc2UocmVzcG9uc2UuaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddKTtcbiAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBkaXNwb3NpdGlvbj8ucGFyYW1ldGVycz8uZmlsZW5hbWUgfHwgYWRkb25LZXk7XG4gICAgICAgIHRtcEZpbGUgPSBmaWxlbmFtZTtcbiAgICAgICAgcmVzcG9uc2UuZGF0YS5waXBlKGNyZWF0ZVdyaXRlU3RyZWFtKHRtcEZpbGUpKTtcbiAgICB9KS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICByZXR1cm4gdG1wRmlsZTtcbn07XG5leHBvcnQgY29uc3QgaW5zdGFsbEFwcCA9IGFzeW5jIChiYXNlVXJsLCBhcHBLZXksIGxpY2Vuc2UgPSBhcHAzaG91ciwgZm9yY2UpID0+IHtcbiAgICAvLyBJZiB3ZSBhcmUgaW4gbm9uLWludGVyYWN0aXZlIG1vZGUsIHdlIHdpbGwgZG93bmxvYWQgaXQgZnJvbSBNUEFDXG4gICAgaWYgKGZvcmNlKSB7XG4gICAgICAgIC8vIEluIG9yZGVyIHRvIGRvIHNvLCB3ZSBuZWVkIGFuIGFwcGtleS4gSWYgdGhpcyBpcyBub3QgcHJvdmlkZWQsIHRocm93IGEgaGlzc3kgZml0XG4gICAgICAgIGlmICghYXBwS2V5KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBhdXRvbWF0aWNhbGx5IGluc3RhbGwgYXBwIGludG8gY2x1c3RlciwgYGFwcEtleWAgd2FzIG5vdCBwcm92aWRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIERvd25sb2FkIHRoZSBmaWxlIGZyb20gTVBBQ1xuICAgICAgICBjb25zdCBmaWxlID0gYXdhaXQgZG93bmxvYWQoYXBwS2V5KTtcbiAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgbGV0IHRpbWVySWQgPSBudWxsO1xuICAgICAgICBsZXQgaXNJbnN0YWxsZWRTdWNjZXNmdWxseSA9IGZhbHNlO1xuICAgICAgICB3aGlsZSAoIWlzSW5zdGFsbGVkU3VjY2VzZnVsbHkgJiYgY291bnQgPD0gNCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoY291bnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFxuICBJbnN0YWxsaW5nIHRoZSBhcHAgKCR7YXBwS2V5fSkgaW50byB0aGUgY2x1c3RlciB1c2luZyB0aGUgVW5pdmVyc2FsIFBsdWdpbiBNYW5hZ2VyIFJFU1QgQVBJYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgXG4gIFJldHJ5aW5nIGluc3RhbGxhdGlvbiBvZiB0aGUgYXBwICgke2FwcEtleX0pIGludG8gdGhlIGNsdXN0ZXIgdXNpbmcgdGhlIFVuaXZlcnNhbCBQbHVnaW4gTWFuYWdlciBSRVNUIEFQSSAoYXR0ZW1wdCAke2NvdW50ICsgMX0pYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFNob3cgYSBwcm9ncmVzcyBiYXJcbiAgICAgICAgICAgICAgICBwcm9ncmVzc0Jhci5zdGFydCgxODAsIDApO1xuICAgICAgICAgICAgICAgIHRpbWVySWQgPSBzZXRJbnRlcnZhbCgoKSA9PiBwcm9ncmVzc0Jhci5pbmNyZW1lbnQoKSwgMTAwMCk7XG4gICAgICAgICAgICAgICAgLy8gVXBsb2FkIGl0IGludG8gdGhlIGNsdXN0ZXIgdXNpbmcgdGhlIFVQTSBSRVNUIEFQSVxuICAgICAgICAgICAgICAgIGNvbnN0IGlzSW5zdGFsbGVkID0gYXdhaXQgdXBsb2FkVG9VUE0oYmFzZVVybCwgZmlsZSwgJ2FkbWluJywgJ2FkbWluJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmICghaXNJbnN0YWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gaW5zdGFsbCBhcHAgaW50byB0aGUgY2x1c3RlciB1c2luZyB0aGUgVW5pdmVyc2FsIFBsdWdpbiBNYW5hZ2VyIFJFU1QgQVBJJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSBwbHVnaW4gdG8gYmUgZW5hYmxlZFxuICAgICAgICAgICAgICAgIGNvbnN0IGlzRW5hYmxlZCA9IGF3YWl0IHdhaXRGb3JQbHVnaW5Ub0JlRW5hYmxlZChhcHBLZXksIGJhc2VVcmwsICdhZG1pbicsICdhZG1pbicsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBhcHAgY291bGQgbm90IGJlIGVuYWJsZWQgb24gdGhlIGNsdXN0ZXIsIHBsZWFzZSByZWZlciB0byB0aGUgYXBwbGljYXRpb24gbG9nIGZpbGVzIGZvciBtb3JlIGluZm9ybWF0aW9uJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBsaWNlbnNlICh1c2UgdGhlIDMgaG91ciB0aW1lYm9tYiBpbiBub24taW50ZXJhY3RpdmUgbW9kZSlcbiAgICAgICAgICAgICAgICBjb25zdCBpc0xpY2Vuc2VkID0gYXdhaXQgcmVnaXN0ZXJMaWNlbnNlKGFwcEtleSwgbGljZW5zZSwgYmFzZVVybCwgJ2FkbWluJywgJ2FkbWluJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmICghaXNMaWNlbnNlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBsaWNlbnNlIGNvdWxkIG5vdCBiZSBhcHBsaWVkIGZvciB0aGUgYXBwIG9uIHRoZSBjbHVzdGVyLCBwbGVhc2UgcmVmZXIgdG8gdGhlIGFwcGxpY2F0aW9uIGxvZyBmaWxlcyBmb3IgbW9yZSBpbmZvcm1hdGlvbicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpc0luc3RhbGxlZFN1Y2Nlc2Z1bGx5ID0gaXNJbnN0YWxsZWQgJiYgaXNFbmFibGVkICYmIGlzTGljZW5zZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvdW50IDw9IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2FpdCBhIG1pbnV0ZSAoY29vbGRvd24gcGVyaW9kKSBiZWZvcmUgcmV0cnlpbmdcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgIC8vIFN0b3AgdGhlIHByb2dyZXNzIGJhclxuICAgICAgICAgICAgICAgIHByb2dyZXNzQmFyLnN0b3AoKTtcbiAgICAgICAgICAgICAgICBpZiAodGltZXJJZCkge1xuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVySWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBSZW1vdmUgdGhlIHRlbXBvcmFyeSBmaWxlXG4gICAgICAgIHJtU3luYyhmaWxlLCB7IGZvcmNlOiB0cnVlIH0pO1xuICAgICAgICAvLyBUZWxsIHRoZW0gd2Ugc3VjY2VlZGVkXG4gICAgICAgIGNvbnNvbGUubG9nKGDinJQgRmluaXNoZWQgaW5zdGFsbGluZyB0aGUgYXBwICgke2FwcEtleX0pYCk7XG4gICAgICAgIC8vIElmIHdlJ3JlIGluIGludGVyYWN0aXZlIG1vZGUsIGxldCdzIGJlIG5pY2VcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIFRlbGwgdGhlIHVzZXIgdGhleSBoYXZlIG9wdGlvbnNcbiAgICAgICAgY29uc29sZS5sb2coYFxuICBJdCBpcyBub3cgcmVxdWlyZWQgdG8gaW5zdGFsbCB0aGUgYXBwIGludG8gdGhlIEppcmEgY2x1c3Rlci5cbiAgV2UgY2FuIGluc3RhbGwgaXQgZnJvbSB0aGUgQXRsYXNzaWFuIE1hcmtldHBsYWNlIG9yIHlvdSBjYW4gaW5zdGFsbCBpdCBtYW51YWxseS5cbmApO1xuICAgICAgICAvLyBBc2sgdGhlbSBpZiB0aGV5IHByZWZlciBhdXRvbWF0aW9uIG9yIHRlZGlvdXMgbWFudWFsIHRhc2tzXG4gICAgICAgIGNvbnN0IG1ldGhvZCA9IGF3YWl0IHNlbGVjdCh7XG4gICAgICAgICAgICBtZXNzYWdlOiBgSG93IGRvIHlvdSB3YW50IHRvIGluc3RhbGwgdGhlIGFwcD9gLFxuICAgICAgICAgICAgZGVmYXVsdDogJ21wYWMnLFxuICAgICAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgICAgICAgIHsgbmFtZTogJ01hcmtldHBsYWNlJywgdmFsdWU6ICdtcGFjJyB9LFxuICAgICAgICAgICAgICAgIHsgbmFtZTogJ01hbnVhbCcsIHZhbHVlOiAnbWFudWFsJyB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBJZiB0aGV5IGNob3NlIGF1dG9tYXRpb24sIGxldCdzIGF1dG9tYXRlIVxuICAgICAgICBpZiAobWV0aG9kID09PSAnbXBhYycpIHtcbiAgICAgICAgICAgIC8vIEFzayB0aGVtIG5pY2VseSBmb3IgdGhlIGFwcCBrZXlcbiAgICAgICAgICAgIGNvbnN0IGFkZG9uS2V5ID0gYXdhaXQgaW5wdXQoe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgcHJvdmlkZSB0aGUga2V5IG9mIHRoZSBhcHAgdG8gYmUgaW5zdGFsbGVkJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBhcHBLZXksXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gQXNrIHRoZW0gbmljZWx5IGZvciB0aGUgYXBwIGxpY2Vuc2UgdG8gYmUgdXNlZFxuICAgICAgICAgICAgY29uc3QgYXBwTGljZW5zZSA9IGF3YWl0IGlucHV0KHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgTGljZW5zZWAsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogbGljZW5zZSxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBUZWxsIHRoZW0gd2UgYXJlIHN0YXJ0aW5nXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgXG4gIEluc3RhbGxpbmcgdGhlIGFwcCAoJHthZGRvbktleX0pIGludG8gdGhlIGNsdXN0ZXIgdXNpbmcgdGhlIFVuaXZlcnNhbCBQbHVnaW4gTWFuYWdlciBSRVNUIEFQSWApO1xuICAgICAgICAgICAgLy8gU2hvdyBhIHByb2dyZXNzIGJhclxuICAgICAgICAgICAgcHJvZ3Jlc3NCYXIuc3RhcnQoMTgwLCAwKTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVySWQgPSBzZXRJbnRlcnZhbCgoKSA9PiBwcm9ncmVzc0Jhci5pbmNyZW1lbnQoKSwgMTAwMCk7XG4gICAgICAgICAgICAvLyBEb3dubG9hZCB0aGUgZmlsZSBmcm9tIE1QQUNcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBkb3dubG9hZChhZGRvbktleSk7XG4gICAgICAgICAgICAvLyBVcGxvYWQgaXQgaW50byB0aGUgY2x1c3RlciB1c2luZyB0aGUgVVBNIFJFU1QgQVBJXG4gICAgICAgICAgICBjb25zdCBpc0luc3RhbGxlZCA9IGF3YWl0IHVwbG9hZFRvVVBNKGJhc2VVcmwsIGZpbGUsICdhZG1pbicsICdhZG1pbicsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmICghaXNJbnN0YWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBpbnN0YWxsIGFwcCBpbnRvIHRoZSBjbHVzdGVyIHVzaW5nIHRoZSBVbml2ZXJzYWwgUGx1Z2luIE1hbmFnZXIgUkVTVCBBUEknKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSBwbHVnaW4gdG8gYmUgZW5hYmxlZFxuICAgICAgICAgICAgY29uc3QgaXNFbmFibGVkID0gYXdhaXQgd2FpdEZvclBsdWdpblRvQmVFbmFibGVkKGFkZG9uS2V5LCBiYXNlVXJsLCAnYWRtaW4nLCAnYWRtaW4nLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIWlzRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGFwcCBjb3VsZCBub3QgYmUgZW5hYmxlZCBvbiB0aGUgY2x1c3RlciwgcGxlYXNlIHJlZmVyIHRvIHRoZSBhcHBsaWNhdGlvbiBsb2cgZmlsZXMgZm9yIG1vcmUgaW5mb3JtYXRpb24nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBwcm92aWRlZCBsaWNlbnNlXG4gICAgICAgICAgICBjb25zdCBpc0xpY2Vuc2VkID0gYXdhaXQgcmVnaXN0ZXJMaWNlbnNlKGFkZG9uS2V5LCBhcHBMaWNlbnNlLCBiYXNlVXJsLCAnYWRtaW4nLCAnYWRtaW4nLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIWlzTGljZW5zZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBsaWNlbnNlIGNvdWxkIG5vdCBiZSBhcHBsaWVkIGZvciB0aGUgYXBwIG9uIHRoZSBjbHVzdGVyLCBwbGVhc2UgcmVmZXIgdG8gdGhlIGFwcGxpY2F0aW9uIGxvZyBmaWxlcyBmb3IgbW9yZSBpbmZvcm1hdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSB0ZW1wb3JhcnkgZmlsZVxuICAgICAgICAgICAgcm1TeW5jKGZpbGUsIHsgZm9yY2U6IHRydWUgfSk7XG4gICAgICAgICAgICAvLyBTdG9wIHRoZSBwcm9ncmVzcyBiYXJcbiAgICAgICAgICAgIHByb2dyZXNzQmFyLnN0b3AoKTtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJJZCk7XG4gICAgICAgICAgICAvLyBUZWxsIHRoZW0gd2Ugc3VjY2VlZGVkXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhg4pyUIEZpbmlzaGVkIGluc3RhbGxpbmcgdGhlIGFwcCAoJHthZGRvbktleX0pYCk7XG4gICAgICAgICAgICAvLyBUaGV5IGNob3NlIHZpb2xlbmNlXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBSdWIgaXQgaW4gdGhlaXIgZmFjZVxuICAgICAgICAgICAgY29uc29sZS5sb2coYFxuICBZb3UgY2FuIG5vdyBpbnN0YWxsIHRoZSBhcHAgbWFudWFsbHkgaW50byB0aGUgY2x1c3Rlci5cbiAgUGxlYXNlIGdvIHRvIHRoZSBmb2xsb3dpbmcgcGFnZSAobG9naW4gd2l0aCAnYWRtaW4nLydhZG1pbicpOlxuICAgIFxuICAke2Jhc2VVcmx9L3BsdWdpbnMvc2VydmxldC91cG0/c291cmNlPXNpZGVfbmF2X21hbmFnZV9hZGRvbnNcbmApO1xuICAgICAgICAgICAgLy8gTWFrZSB0aGVtIGdyb3ZlbFxuICAgICAgICAgICAgY29uc3QgaXNJbnN0YWxsZWRNYW51YWxseSA9IGF3YWl0IGNvbmZpcm0oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBQbGVhc2UgY29uZmlybSB0aGF0IHlvdSBoYXZlIGluc3RhbGxlZCB0aGUgYXBwIG1hbnVhbGx5YFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBJZiB0aGUgYXBwIGFpbid0IGluc3RhbGxlZCwgd2UgYWluJ3QgZG9pbmcgbm90aGluJy4gU28gd2UgYmV0dGVyIHRocm93IGEgaGlzc3kgZml0XG4gICAgICAgICAgICBpZiAoIWlzSW5zdGFsbGVkTWFudWFsbHkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0l0IGlzIHJlcXVpcmVkIHRvIGluc3RhbGwgdGhlIGFwcCB0byBydW4gdGhlIHNlY29uZCBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHRlc3QnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG4iLCJpbXBvcnQgeyBhc3luY0V4aXRIb29rLCBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgQWN0aW9uSGFuZGxlciA9IGFzeW5jIChwcm9ncmFtLCB7IGFjdGlvbiwgZXJyb3JIYW5kbGVyIH0sIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBvcHMgPSBvcHRpb25zIHx8IHByb2dyYW0ub3B0cygpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xuICAgICAgICBhc3luY0V4aXRIb29rKGFzeW5jIChjb2RlKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGVycm9ySGFuZGxlcihvcHMpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UudHJpbSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSByZWplY3RpbmcgdGhlIHByb21pc2UgdG8gYXZvaWQgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIFwiQ2FsbGluZyBwcm9jZXNzLmV4aXRcIiBsb2cgbWVzc2FnZSBmcm9tIGV4aXQtaG9va1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyO1xuICAgICAgICAgICAgICAgIHJlamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgd2FpdDogNjAgKiAxICogMTAwMFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uKG9wcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMCk7XG4gICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgICAgICAgICAgIGVyci5pc3N1ZXMuZm9yRWFjaChpc3N1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSArPSBgVW5hYmxlIHRvIHBhcnNlIG9wdGlvbiAke2lzc3VlLnBhdGguam9pbignLCcpfTogJHtpc3N1ZS5tZXNzYWdlfVxcbmA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvciB8fCB0eXBlb2YgZXJyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVyci50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDEpO1xuICAgICAgICB9KTtcbiAgICB9KS5jYXRjaChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHByb2dyYW0uZXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlLFxuICAgICAgICAgICAgLy8gd2UgY2FuIGFzc3VtZSBhIGNsZWFuIGV4aXRcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHZlcnNpb25zIGZyb20gJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJztcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgPSB6LmVudW0oW1xuICAgICdwb3N0Z3Jlc3FsJyxcbiAgICAnbXlzcWwnLFxuICAgICdtc3NxbCdcbl0pO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMgPSB6LmVudW0oW1xuICAgICdEZXZlbG9wZXInLFxuICAgICdFeHByZXNzJyxcbiAgICAnU3RhbmRhcmQnLFxuICAgICdFbnRlcnByaXNlJyxcbiAgICAnRW50ZXJwcmlzZUNvcmUnXG5dKTtcbmV4cG9ydCBjb25zdCBEYXRhYmFzZU9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKSxcbiAgICBkYXRhYmFzZTogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIHBhc3N3b3JkOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICBjbGVhbjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcHJ1bmU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHZlcmJvc2U6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKVxufSk7XG5leHBvcnQgY29uc3QgUG9zdGdyZVNRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDU0MzIpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnb3JnLnBvc3RncmVzcWwuRHJpdmVyJykuZGVmYXVsdCgnb3JnLnBvc3RncmVzcWwuRHJpdmVyJylcbn0pO1xuZXhwb3J0IGNvbnN0IE15U1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoMzMwNiksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdjb20ubXlzcWwuamRiYy5Ecml2ZXInKS5kZWZhdWx0KCdjb20ubXlzcWwuamRiYy5Ecml2ZXInKVxufSk7XG5leHBvcnQgY29uc3QgTVNTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBlZGl0aW9uOiBTdXBwb3J0ZWRNU1NRTEVkaXRpb25zLmRlZmF1bHQoJ0RldmVsb3BlcicpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDE0MzMpLFxuICAgIHVzZXJuYW1lOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdzYScpLmRlZmF1bHQoJ3NhJyksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKCkuZGVmYXVsdCgnRGF0YUNlbnRlckRYIScpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnY29tLm1pY3Jvc29mdC5zcWxzZXJ2ZXIuamRiYy5TUUxTZXJ2ZXJEcml2ZXInKS5kZWZhdWx0KCdjb20ubWljcm9zb2Z0LnNxbHNlcnZlci5qZGJjLlNRTFNlcnZlckRyaXZlcicpXG59KTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzIH0gZnJvbSAnLi9EYXRhYmFzZSc7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkQXBwbGljYXRpb25zID0gei5lbnVtKFtcbiAgICAnamlyYScsXG4gICAgJ2NvbmZsdWVuY2UnLFxuICAgICdiaXRidWNrZXQnLFxuICAgICdiYW1ib28nXG5dKTtcbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvbk9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLFxuICAgIHRhZzogei5zdHJpbmcoKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBkYXRhYmFzZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLmRlZmF1bHQoJ3Bvc3RncmVzcWwnKSxcbiAgICBkYXRhYmFzZVRhZzogei5zdHJpbmcoKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkuZGVmYXVsdCgnODAnKSxcbiAgICBjb250ZXh0UGF0aDogei5zdHJpbmcoKSxcbiAgICB4bXM6IHouc3RyaW5nKCkuZGVmYXVsdCgnMTAyNG0nKSxcbiAgICB4bXg6IHouc3RyaW5nKCkuZGVmYXVsdCgnMTAyNG0nKSxcbiAgICB3YXRjaDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZXh0OiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAgIGluc3RhbGw6IHouYm9vbGVhbigpLFxuICAgIG91dHB1dERpcmVjdG9yeTogei5zdHJpbmcoKSxcbiAgICBhY3RpdmF0ZVByb2ZpbGVzOiB6LnN0cmluZygpLFxuICAgIGNsZWFuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBwcnVuZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZGVidWc6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gICAgY3dkOiB6LnN0cmluZygpXG59KS5wYXJ0aWFsKHtcbiAgICBjb250ZXh0UGF0aDogdHJ1ZSxcbiAgICBleHQ6IHRydWUsXG4gICAgaW5zdGFsbDogdHJ1ZSxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IHRydWUsXG4gICAgYWN0aXZhdGVQcm9maWxlczogdHJ1ZSxcbiAgICBjd2Q6IHRydWVcbn0pO1xuIiwiaW1wb3J0IHsgRE9NUGFyc2VyLCBYTUxTZXJpYWxpemVyIH0gZnJvbSAnQHhtbGRvbS94bWxkb20nO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IFhNTFBhcnNlciB9IGZyb20gJ2Zhc3QteG1sLXBhcnNlcic7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB4cGF0aCBmcm9tICd4cGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5leHBvcnQgY2xhc3MgQU1QUyB7XG4gICAgb3B0aW9ucztcbiAgICBtYXZlbiA9IG51bGw7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IHtcbiAgICAgICAgcHJvZmlsZXM6IFtdXG4gICAgfSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHVibGljIE1ldGhvZHNcbiAgICBzdG9wKCkge1xuICAgICAgICBpZiAodGhpcy5tYXZlbikge1xuICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5tYXZlbi5raWxsKDApO1xuICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgTWF2ZW4gcHJvY2VzcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hdmVuKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5tYXZlbi5raWxsKDApO1xuICAgICAgICAgICAgICAgIGlmICgha2lsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgTWF2ZW4gcHJvY2VzcycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm1hdmVuID0gc3Bhd24oJ212bicsIFsncGFja2FnZScsIC4uLmFyZ3NdLCB7IGN3ZDogdGhpcy5vcHRpb25zPy5jd2QgfHwgY3dkKCksIHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICB0aGlzLm1hdmVuLm9uKCdleGl0JywgKGNvZGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1hdmVuID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gMCB8fCBjb2RlID09PSAxMzApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgTWF2ZW4gZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaXNBdGxhc3NpYW5QbHVnaW4gPSAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoJy8vKltsb2NhbC1uYW1lKCk9XFwncGFja2FnaW5nXFwnXScpO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVzLnNvbWUoaXRlbSA9PiBpdGVtLnRleHRDb250ZW50ID09PSAnYXRsYXNzaWFuLXBsdWdpbicpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZ2V0QXBwbGljYXRpb25WZXJzaW9uKCkge1xuICAgICAgICBjb25zdCBhcHBsaWNhdGlvbnMgPSB0aGlzLmdldEFwcGxpY2F0aW9ucygpO1xuICAgICAgICBpZiAoYXBwbGljYXRpb25zLnNpemUgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IFssIHZlcnNpb25dID0gQXJyYXkuZnJvbShhcHBsaWNhdGlvbnMpWzBdO1xuICAgICAgICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXBwbGljYXRpb25zLnNpemUgPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgY29udGFpbnMgbXVsdGlwbGUgQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGVjaWRlIHdoaWNoIHByb2R1Y3QgdG8gdXNlIPCfmLAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBnZXRBcHBsaWNhdGlvbigpIHtcbiAgICAgICAgY29uc3QgYXBwbGljYXRpb25zID0gdGhpcy5nZXRBcHBsaWNhdGlvbnMoKTtcbiAgICAgICAgaWYgKGFwcGxpY2F0aW9ucy5zaXplID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBbbmFtZV0gPSBBcnJheS5mcm9tKGFwcGxpY2F0aW9ucylbMF07XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBjb250YWlucyBtdWx0aXBsZSBBTVBTIGNvbmZpZ3VyYXRpb24sIHVuYWJsZSB0byBkZWNpZGUgd2hpY2ggcHJvZHVjdCB0byB1c2Ug8J+YsCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBnZXRBcHBsaWNhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldE5vZGVzKCcvLypbbG9jYWwtbmFtZSgpPVxcJ2dyb3VwSWRcXCcgYW5kIHRleHQoKT1cXCdjb20uYXRsYXNzaWFuLm1hdmVuLnBsdWdpbnNcXCddJyk7XG4gICAgICAgIGNvbnN0IG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUgPSBub2Rlcy5maWx0ZXIobm9kZSA9PiB0aGlzLmlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSk7XG4gICAgICAgIG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcGx1Z2luIH0gPSB0aGlzLnRvT2JqZWN0KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgIGlmICgnYW1wcy1tYXZlbi1wbHVnaW4nID09PSBwbHVnaW4/LmFydGlmYWN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjb25maWd1cmF0aW9uIH0gPSBwbHVnaW4gfHwge307XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uPy5wcm9kdWN0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5wcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0LmlkKSB8fCB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByb2R1Y3QgfSA9IGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0LmlkKSB8fCB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdXBwb3J0ZWRBcHBsaWNhdGlvbiA9IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocGx1Z2luPy5hcnRpZmFjdElkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZ2V0VmVyc2lvbihub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KHN1cHBvcnRlZEFwcGxpY2F0aW9uLCB2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbih2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYSkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZ2V0VmVyc2lvbihub2RlKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBjb25zdCB7IHBsdWdpbiB9ID0gdGhpcy50b09iamVjdChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHsgY29uZmlndXJhdGlvbiB9ID0gcGx1Z2luIHx8IHt9O1xuICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHBsdWdpbi5jb25maWd1cmF0aW9uLnByb2R1Y3RWZXJzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdCA9IEFycmF5LmlzQXJyYXkoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpID8gY29uZmlndXJhdGlvbj8ucHJvZHVjdHNbMF0gOiBjb25maWd1cmF0aW9uLnByb2R1Y3RzLnByb2R1Y3Q7XG4gICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QgJiYgcHJvZHVjdC52ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwcm9kdWN0LnZlcnNpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBkb1Byb3BlcnR5UmVwbGFjZW1lbnQodmFsdWUpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHByb2ZpbGUsIHJlcGxhY2UgcHJvZmlsZSBwcm9wZXJ0aWVzIGZpcnN0IGFzIHRoZXkgdGFrZSBwcmVjZWRlbmNlXG4gICAgICAgIGNvbnN0IHByb2ZpbGVQcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByb2ZpbGVQcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbChgJFxceyR7cHJvcGVydHlLZXl9fWAsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydGllcygpO1xuICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbChgJFxceyR7cHJvcGVydHlLZXl9fWAsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0UHJvcGVydGllcygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXROb2RlcygnLy8qW2xvY2FsLW5hbWUoKT1cXCdwcm9wZXJ0aWVzXFwnXScpO1xuICAgICAgICBjb25zdCBub2Rlc1dpdGhBY3RpdmVQcm9maWxlID0gbm9kZXMuZmlsdGVyKG5vZGUgPT4gdGhpcy5pc0FjdGl2YXRlZFByb2ZpbGUobm9kZSkpO1xuICAgICAgICBub2Rlc1dpdGhBY3RpdmVQcm9maWxlLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHByb3BlcnRpZXMgfSA9IHRoaXMudG9PYmplY3Qobm9kZSk7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHJlc3VsdFtrZXldID0gdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0Tm9kZXMoZXhwcmVzc2lvbiwgc2luZ2xlKSB7XG4gICAgICAgIGNvbnN0IHBvbUZpbGVQYXRoID0gam9pbih0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgJy4vcG9tLnhtbCcpO1xuICAgICAgICBjb25zdCBoYXNQb21GaWxlID0gZXhpc3RzU3luYyhwb21GaWxlUGF0aCk7XG4gICAgICAgIGlmIChoYXNQb21GaWxlKSB7XG4gICAgICAgICAgICBjb25zdCB4bWwgPSByZWFkRmlsZVN5bmMocG9tRmlsZVBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgICBjb25zdCBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHhtbCwgJ3RleHQveG1sJyk7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHNpbmdsZSA/IHhwYXRoLnNlbGVjdChleHByZXNzaW9uLCBkb2MsIHRydWUpIDogeHBhdGguc2VsZWN0KGV4cHJlc3Npb24sIGRvYywgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc2luZ2xlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdG9PYmplY3Qobm9kZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IFhNTFBhcnNlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZShuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKG5vZGUpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmaW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSh0YWdOYW1lLCBub2RlKSB7XG4gICAgICAgIGNvbnN0IHsgcGFyZW50Tm9kZSB9ID0gbm9kZTtcbiAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnROb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZFBhcmVudE5vZGVCeVRhZ05hbWUodGFnTmFtZSwgcGFyZW50Tm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSB7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVQYXJlbnROb2RlID0gdGhpcy5maW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSgncHJvZmlsZScsIG5vZGUpO1xuICAgICAgICBjb25zdCBwcm9maWxlTm9kZSA9IHByb2ZpbGVQYXJlbnROb2RlID8gdGhpcy50b09iamVjdChwcm9maWxlUGFyZW50Tm9kZSkgOiBudWxsO1xuICAgICAgICBpZiAoIXByb2ZpbGVOb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcm9maWxlTm9kZSAmJiAocHJvZmlsZU5vZGUuYWN0aXZlQnlEZWZhdWx0ID09PSAndHJ1ZScgfHwgdGhpcy5vcHRpb25zLnByb2ZpbGVzLmluY2x1ZGVzKHByb2ZpbGVOb2RlLnByb2ZpbGUuaWQpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJleHBvcnQgY29uc3QgaXNSZWN1cnNpdmVCdWlsZCA9IChsYXN0QnVpbGRDb21wbGV0ZWQpID0+IGxhc3RCdWlsZENvbXBsZXRlZCA+IChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIDUgKiAxMDAwKTtcbiIsImV4cG9ydCBjb25zdCBzaG93UmVjdXJzaXZlQnVpbGRXYXJuaW5nID0gKG91dHB1dERpcmVjdG9yeSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmVjdXJzaXZlIGJ1aWxkIHRyaWdnZXIgZGV0ZWN0ZWQuIFRoZSBsYXN0IGJ1aWxkIGNvbXBsZXRlZCBsYXN0IHRoYW4gNSBzZWNvbmRzIGFnb1xuVGhpcyBtYXkgaW5kaWNhdGUgdGhhdCB0aGUgYnVpbGQgY2hhbmdlcyBmaWxlcyBvdXRzaWRlIG9mIHRoZSBvdXRwdXQgZGlyZWN0b3J5XG5BbHRlcm5hdGl2ZWx5LCBNYXZlbiBpcyB1c2luZyBhIGRpZmZlcmVudCBvdXRwdXQgZGlyZWN0b3J5IHRoYW4gY29uZmlndXJlZDpcbicke291dHB1dERpcmVjdG9yeX0nXG5cblBsZWFzZSBtYWtlIHN1cmUgdG8gY2hlY2sgeW91ciBidWlsZCBwcm9jZXNzIGFuZC9vciBzcGVjaWZ5IGEgZGlmZmVyZW50IG91dHB1dCBkaXJlY3RvcnkgdXNpbmcgdGhlICctbycgb3B0aW9uXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1gKTtcbn07XG4iLCJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5leHBvcnQgY2xhc3MgQ3VzdG9tQnVpbGRlciB7XG4gICAgb3B0aW9ucztcbiAgICBwcm9jID0gbnVsbDtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQdWJsaWMgTWV0aG9kc1xuICAgIHN0b3AoKSB7XG4gICAgICAgIGlmICh0aGlzLnByb2MpIHtcbiAgICAgICAgICAgIGNvbnN0IGtpbGxlZCA9IHRoaXMucHJvYy5raWxsKDApO1xuICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgYnVpbGQgcHJvY2VzcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJvYykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtpbGxlZCA9IHRoaXMucHJvYy5raWxsKDApO1xuICAgICAgICAgICAgICAgIGlmICgha2lsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgYnVpbGQgcHJvY2VzcycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGV4ZWNTeW5jKHRoaXMub3B0aW9ucy5jbWQsIHsgY3dkOiB0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdGF0dXMgfSA9IGVycjtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBCdWlsZCBleGl0ZWQgd2l0aCBjb2RlICR7c3RhdHVzfWApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBEb2NrZXJvZGUgZnJvbSAnZG9ja2Vyb2RlJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuY29uc3QgZG9ja2VyID0gbmV3IERvY2tlcm9kZSgpO1xuZXhwb3J0IGNvbnN0IGdldFJ1bm5pbmdDb250YWluZXJJZHMgPSBhc3luYyAoYXBwbGljYXRpb24pID0+IHtcbiAgICBjb25zdCBjb250YWluZXJzID0gYXdhaXQgZG9ja2VyLmxpc3RDb250YWluZXJzKHsgZmlsdGVyczoge1xuICAgICAgICAgICAgc3RhdHVzOiBbJ3J1bm5pbmcnXSxcbiAgICAgICAgICAgIGxhYmVsOiBbYGNvbS5kb2NrZXIuY29tcG9zZS5zZXJ2aWNlPSR7YXBwbGljYXRpb259YF1cbiAgICAgICAgfSB9KTtcbiAgICByZXR1cm4gY29udGFpbmVycy5tYXAoaXRlbSA9PiBpdGVtLklkKTtcbn07XG5leHBvcnQgY29uc3QgY29weSA9IGFzeW5jIChzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgpID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBkb2NrZXIgPSBzcGF3bignZG9ja2VyJywgWydjcCcsIHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aF0sIHsgY3dkOiBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgZG9ja2VyLm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICAgIGRvY2tlci5vbignZXhpdCcsIChjb2RlKSA9PiAoY29kZSA9PT0gMCkgPyByZXNvbHZlKCkgOiByZWplY3QobmV3IEVycm9yKGBEb2NrZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpKTtcbiAgICB9KTtcbn07XG4iLCJpbXBvcnQgeyByZXNvbHZlIGFzIHJlc29sdmVQYXRoIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCAqIGFzIERvY2tlciBmcm9tICcuL2RvY2tlcic7XG5pbXBvcnQgeyB1cGxvYWRUb1VQTSB9IGZyb20gJy4vdXBtJztcbmV4cG9ydCBjb25zdCBJbnN0YWxsZXIgPSBhc3luYyAobmFtZSwgcGF0aCwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lcklkcyA9IGF3YWl0IERvY2tlci5nZXRSdW5uaW5nQ29udGFpbmVySWRzKG5hbWUpO1xuICAgIGlmICghY29udGFpbmVySWRzIHx8IGNvbnRhaW5lcklkcy5sZW5ndGggPD0gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgVGhlcmUgYXJlIG5vIHJ1bm5pbmcgaW5zdGFuY2Ugb2YgJHtuYW1lfSwgdW5hYmxlIHRvIGluc3RhbGwgcGx1Z2luIPCfpJRgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbHNlIGlmIChjb250YWluZXJJZHMubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgVGhlcmUgYXJlIG11bHRwbGUgcnVubmluZyBpbnN0YW5jZSBvZiAke25hbWV9LCB1bmFibGUgdG8gZGV0ZXJtaW5lIHdoaWNoIG9uZSB0byB1c2Ug8J+klGApO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbnRhaW5lcklkID0gY29udGFpbmVySWRzWzBdO1xuICAgIGlmIChjb250YWluZXJJZCkge1xuICAgICAgICBpZiAob3B0aW9ucy5vYnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGb3VuZCB1cGRhdGVkIHBsdWdpbiwgdXBsb2FkaW5nIGl0IHRvIFVQTSBvbiBydW5uaW5nIGluc3RhbmNlcyBvZiAke25hbWV9YCk7XG4gICAgICAgICAgICBjb25zdCBob3N0VXJsID0gb3B0aW9ucy5wb3J0ID8gYGxvY2FsaG9zdDoke29wdGlvbnMucG9ydH1gIDogYGxvY2FsaG9zdGA7XG4gICAgICAgICAgICBjb25zdCBiYXNlVXJsID0gb3B0aW9ucy51c2VybmFtZSAmJiBvcHRpb25zLnBhc3N3b3JkID8gYGh0dHA6Ly8ke29wdGlvbnMudXNlcm5hbWV9OiR7b3B0aW9ucy5wYXNzd29yZH1AJHtob3N0VXJsfWAgOiBgaHR0cDovLyR7aG9zdFVybH1gO1xuICAgICAgICAgICAgYXdhaXQgdXBsb2FkVG9VUE0ocmVzb2x2ZVBhdGgob3B0aW9ucy5jd2QgfHwgY3dkKCksIHBhdGgpLCBiYXNlVXJsKS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gdXBsb2FkIHBsdWdpbiBhcmNoaXZlIGZpbGUgdG8gVVBNJywgZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYEZvdW5kIHVwZGF0ZWQgcGx1Z2luLCB1cGxvYWRpbmcgaXQgdG8gUXVpY2tSZWxvYWQgb24gcnVubmluZyBpbnN0YW5jZXMgb2YgJHtuYW1lfWApO1xuICAgICAgICAgICAgYXdhaXQgRG9ja2VyLmNvcHkocmVzb2x2ZVBhdGgob3B0aW9ucy5jd2QgfHwgY3dkKCksIHBhdGgpLCBgJHtjb250YWluZXJJZH06L29wdC9xdWlja3JlbG9hZC9gKVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IGNvbnNvbGUubG9nKCdGaW5pc2hlZCB1cGxvYWRpbmcgcGx1Z2luIGFyY2hpdmUgdG8gUXVpY2tSZWxvYWQnKSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gdXBsb2FkIHBsdWdpbiBhcmNoaXZlIGZpbGUgdG8gUXVpY2tSZWxvYWQnLCBlcnIpKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG4iLCJpbXBvcnQgeyB3YXRjaCB9IGZyb20gJ2Nob2tpZGFyJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHsgaXNSZWN1cnNpdmVCdWlsZCB9IGZyb20gJy4uL2hlbHBlcnMvaXNSZWN1cnNpdmVCdWlsZCc7XG5pbXBvcnQgeyBzaG93UmVjdXJzaXZlQnVpbGRXYXJuaW5nIH0gZnJvbSAnLi4vaGVscGVycy9zaG93UmVjdXJzaXZlQnVpbGRXYXJuaW5nJztcbmltcG9ydCB7IEFNUFMgfSBmcm9tICcuL2FtcHMnO1xuaW1wb3J0IHsgQ3VzdG9tQnVpbGRlciB9IGZyb20gJy4vQ3VzdG9tQnVpbGRlcic7XG5pbXBvcnQgeyBJbnN0YWxsZXIgfSBmcm9tICcuL0luc3RhbGxlcic7XG5leHBvcnQgY29uc3QgRmlsZVdhdGNoZXIgPSAobmFtZSwgb3B0aW9ucywgbWF2ZW5PcHRzLCBpbnN0YWxsT25seSA9IGZhbHNlKSA9PiB7XG4gICAgbGV0IGxhc3RCdWlsZENvbXBsZXRlZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGNvbnN0IG91dHB1dERpcmVjdG9yeSA9IG9wdGlvbnMub3V0cHV0RGlyZWN0b3J5IHx8ICd0YXJnZXQnO1xuICAgIGNvbnN0IHBhdHRlcm5zID0gb3B0aW9ucy5leHQgfHwgWycqKi8qJ107XG4gICAgY29uc29sZS5sb2coYFdhdGNoaW5nIGZpbGVzeXN0ZW0gZm9yIGNoYW5nZXMgdG8gc291cmNlIGZpbGVzICgke3BhdHRlcm5zLmpvaW4oJywgJyl9KWApO1xuICAgIGNvbnN0IGFtcHMgPSBuZXcgQU1QUyh7XG4gICAgICAgIGN3ZDogb3B0aW9ucy5jd2QsXG4gICAgICAgIHByb2ZpbGVzOiBvcHRpb25zLmFjdGl2YXRlUHJvZmlsZXM/LnNwbGl0KCcsJykgfHwgW11cbiAgICB9KTtcbiAgICBjb25zdCBkZWxpdmVyYWJsZUV4dGVuc2lvbiA9IG9wdGlvbnMub2JyID8gJy5vYnInIDogJy5qYXInO1xuICAgIHJldHVybiB3YXRjaChwYXR0ZXJucywge1xuICAgICAgICBjd2Q6IG9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICB1c2VQb2xsaW5nOiB0cnVlLFxuICAgICAgICBpbnRlcnZhbDogMiAqIDEwMDAsXG4gICAgICAgIGJpbmFyeUludGVydmFsOiAyICogMTAwMCxcbiAgICAgICAgYXdhaXRXcml0ZUZpbmlzaDogdHJ1ZSxcbiAgICAgICAgcGVyc2lzdGVudDogdHJ1ZSxcbiAgICAgICAgYXRvbWljOiB0cnVlXG4gICAgfSkub24oJ2NoYW5nZScsIGFzeW5jIChwYXRoKSA9PiB7XG4gICAgICAgIGlmIChvcHRpb25zLmluc3RhbGwgJiYgcGF0aC5zdGFydHNXaXRoKG91dHB1dERpcmVjdG9yeSkgJiYgcGF0aC50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKGRlbGl2ZXJhYmxlRXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgYXdhaXQgSW5zdGFsbGVyKG5hbWUsIHBhdGgsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFwYXRoLnN0YXJ0c1dpdGgob3V0cHV0RGlyZWN0b3J5KSAmJiAhaW5zdGFsbE9ubHkpIHtcbiAgICAgICAgICAgIGlmIChpc1JlY3Vyc2l2ZUJ1aWxkKGxhc3RCdWlsZENvbXBsZXRlZCkpIHtcbiAgICAgICAgICAgICAgICBzaG93UmVjdXJzaXZlQnVpbGRXYXJuaW5nKG91dHB1dERpcmVjdG9yeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRGV0ZWN0ZWQgZmlsZSBjaGFuZ2UsIHJlYnVpbGRpbmcgQXRsYXNpYW4gRGF0YSBDZW50ZXIgcGx1Z2luJyk7XG4gICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLmV4ZWMpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgYW1wcy5idWlsZChtYXZlbk9wdHMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZpbmlzaGVkIGJ1aWxkaW5nIEF0bGFzc2lhbiBEYXRhIENlbnRlciBwbHVnaW4gZm9yICR7bmFtZX0uLi4g8J+SqmApO1xuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIGJ1aWxkIEF0bGFzc2lhbiBEYXRhIENlbnRlciBwbHVnaW4gZm9yICR7bmFtZX0uLi4g8J+YsGApO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQ3VzdG9tQnVpbGRlcih7IGNtZDogb3B0aW9ucy5leGVjLCBjd2Q6IG9wdGlvbnMuY3dkIHx8IGN3ZCgpIH0pO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBidWlsZGVyLmJ1aWxkKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmluaXNoZWQgYnVpbGRpbmcgQXRsYXNzaWFuIERhdGEgQ2VudGVyIHBsdWdpbiBmb3IgJHtuYW1lfS4uLiDwn5KqYCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGYWlsZWQgdG8gYnVpbGQgQXRsYXNzaWFuIERhdGEgQ2VudGVyIHBsdWdpbiBmb3IgJHtuYW1lfS4uLiDwn5iwYCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYXN0QnVpbGRDb21wbGV0ZWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufTtcbiIsImltcG9ydCB7IHJlYWxwYXRoU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tICdwYXRoJztcbmV4cG9ydCBjb25zdCB0b0Fic29sdXRlUGF0aCA9IChyZWxhdGl2ZVBhdGgpID0+IHtcbiAgICBjb25zdCBbLCBmaWxlUGF0aF0gPSBwcm9jZXNzLmFyZ3Y7XG4gICAgY29uc3QgZXhlY3V0YWJsZUZpbGVEaXIgPSBkaXJuYW1lKHJlYWxwYXRoU3luYyhmaWxlUGF0aCkpO1xuICAgIGNvbnN0IGJhc2VkaXIgPSBleGVjdXRhYmxlRmlsZURpci5zdWJzdHJpbmcoMCwgZXhlY3V0YWJsZUZpbGVEaXIuaW5kZXhPZignZGNkeCcpICsgNCk7XG4gICAgcmV0dXJuIGpvaW4oYmFzZWRpciwgcmVsYXRpdmVQYXRoLnJlcGxhY2VBbGwoJy4uLycsICcnKSk7XG59O1xuIiwiaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgdG9BYnNvbHV0ZVBhdGggfSBmcm9tICcuL3RvQWJzb2x1dGVQYXRoJztcbmV4cG9ydCBjb25zdCBnZXRWZXJzaW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gcmVhZEZpbGVTeW5jKHRvQWJzb2x1dGVQYXRoKCcuLi8uLi9hc3NldHMvdmVyc2lvbnMuanNvbicpLCAndXRmLTgnKTtcbiAgICBjb25zdCB2ZXJzaW9ucyA9IEpTT04ucGFyc2UoY29udGVudCk7XG4gICAgcmV0dXJuIHZlcnNpb25zO1xufTtcbiIsIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IENvbW1hbmQgYXMgQ29tbWFuZGVyLCBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvciwgT3B0aW9uIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGdyYWNlZnVsRXhpdCB9IGZyb20gJ2V4aXQtaG9vayc7XG5pbXBvcnQgeyBnbG9iIH0gZnJvbSAnZ2xvYic7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7IGluc3RhbGxBcHAgfSBmcm9tICcuLi9hcHQvaGVscGVycy9pbnN0YWxsQXBwJztcbmltcG9ydCB7IEFjdGlvbkhhbmRsZXIgfSBmcm9tICcuLi9oZWxwZXJzL0FjdGlvbkhhbmRsZXInO1xuaW1wb3J0IHsgQU1QUyB9IGZyb20gJy4uL2hlbHBlcnMvYW1wcyc7XG5pbXBvcnQgeyBGaWxlV2F0Y2hlciB9IGZyb20gJy4uL2hlbHBlcnMvRmlsZVdhdGNoZXInO1xuaW1wb3J0IHsgZ2V0VmVyc2lvbnMgfSBmcm9tICcuLi9oZWxwZXJzL2dldFZlcnNpb25zJztcbmltcG9ydCB7IEluc3RhbGxlciB9IGZyb20gJy4uL2hlbHBlcnMvSW5zdGFsbGVyJztcbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZGVyKCk7XG5jb25zdCB2ZXJzaW9ucyA9IGdldFZlcnNpb25zKCk7XG5jb25zdCBDb21tYW5kID0gKCkgPT4ge1xuICAgIGxldCBxdWlja1JlbG9hZCA9IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWN0aW9uOiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW1wcyA9IG5ldyBBTVBTKHtcbiAgICAgICAgICAgICAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgICAgICAgICAgICAgIHByb2ZpbGVzOiBvcHRpb25zLmFjdGl2YXRlUHJvZmlsZXM/LnNwbGl0KCcsJykgfHwgW11cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubXBhYykge1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5iYXNlVXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvcignTWlzc2luZyBhcmd1bWVudCBcIi0tYmFzZVVybFwiLCByZXF1aXJlZCBmb3IgaW5zdGFsbGluZyBmcm9tIHRoZSBBdGxhc3NpYW4gTWFya2V0cGxhY2UnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIW9wdGlvbnMuYXBwS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvcignTWlzc2luZyBhcmd1bWVudCBcIi0tYXBwS2V5XCIsIHJlcXVpcmVkIGZvciBpbnN0YWxsaW5nIGZyb20gdGhlIEF0bGFzc2lhbiBNYXJrZXRwbGFjZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhd2FpdCBpbnN0YWxsQXBwKG9wdGlvbnMuYmFzZVVybCwgb3B0aW9ucy5hcHBLZXksIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIWFtcHMuaXNBdGxhc3NpYW5QbHVnaW4oKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIGFuIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnkg8J+klCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gYW1wcy5nZXRBcHBsaWNhdGlvbigpO1xuICAgICAgICAgICAgICAgIGlmICghbmFtZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgZG9lcyBub3QgY29udGFpbiBhbiBBTVBTIGNvbmZpZ3VyYXRpb24sIHVuYWJsZSB0byBkZXRlY3QgcHJvZHVjdCDwn5iwJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSBhbXBzLmdldEFwcGxpY2F0aW9uVmVyc2lvbigpO1xuICAgICAgICAgICAgICAgIGlmICghdmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBkZXRlcm1pbmUgdmVyc2lvbiBmcm9tIEFNUFMgYW5kIG5vIHByb2R1Y3QgdmVyc2lvbiBwcm92aWRlZCAoLS10YWcpJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF2ZXJzaW9uc1tuYW1lXS5pbmNsdWRlcyh2ZXJzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2R1Y3QgdmVyc2lvbiAnJHt2ZXJzaW9ufScgaXMgaW52YWxpZC4gQWxsb3dlZCBjaG9pY2VzIGFyZSAke3ZlcnNpb25zW25hbWVdLmpvaW4oJywgJyl9LmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5vYnIgJiYgIW9wdGlvbnMudXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50IFwiLS11c2VybmFtZVwiLCByZXF1aXJlZCBmb3IgaW5zdGFsbGluZyBPQlIgYXJ0aWZhY3RzJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMub2JyICYmICFvcHRpb25zLnBhc3N3b3JkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvcignTWlzc2luZyBhcmd1bWVudCBcIi0tcGFzc3dvcmRcIiwgcmVxdWlyZWQgZm9yIGluc3RhbGxpbmcgT0JSIGFydGlmYWN0cycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy53YXRjaCkge1xuICAgICAgICAgICAgICAgICAgICBxdWlja1JlbG9hZCA9IEZpbGVXYXRjaGVyKG5hbWUsIG9wdGlvbnMsIFtdLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0RGlyZWN0b3J5ID0gb3B0aW9ucy5vdXRwdXREaXJlY3RvcnkgfHwgJ3RhcmdldCc7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVsaXZlcmFibGVFeHRlbnNpb24gPSBvcHRpb25zLm9iciA/ICdvYnInIDogJ2phcic7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnbG9iKGAke291dHB1dERpcmVjdG9yeX0vKi4ke2RlbGl2ZXJhYmxlRXh0ZW5zaW9ufWAsIHsgY3dkOiByZXNvbHZlKG9wdGlvbnMuY3dkIHx8IGN3ZCgpKSB9KTtcbiAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChmaWxlcy5tYXAocGF0aCA9PiBJbnN0YWxsZXIobmFtZSwgcGF0aCwgb3B0aW9ucykpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3JIYW5kbGVyOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAocXVpY2tSZWxvYWQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RvcHBpbmcgZmlsZXN5c3RlbSB3YXRjaGVyLi4uIOKPs2ApO1xuICAgICAgICAgICAgICAgIGF3YWl0IHF1aWNrUmVsb2FkLmNsb3NlKCkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgU3VjY2Vzc2Z1bGx5IHN0b3BwZWQgYWxsIHJ1bm5pbmcgcHJvY2Vzc2VzIPCfkqpgKTtcbiAgICAgICAgfVxuICAgIH07XG59O1xucHJvZ3JhbVxuICAgIC5uYW1lKCdkY2R4IGluc3RhbGwnKVxuICAgIC5kZXNjcmlwdGlvbihgSW5zdGFsbCB0aGUgQXRsYXNzaWFuIERhdGEgQ2VudGVyIHBsdWdpbiB1c2luZyB0aGUgQXRsYXNzaWFuIE1hdmVuIFBsdWdpbiBTdWl0ZSAoQU1QUykgY29uZmlndXJhdGlvbi5cbklmIHRoZXJlIGlzIGEgcnVubmluZyBpbnN0YW5jZSwgaXQgd2lsbCB0cnkgdG8gaW5zdGFsbCB0aGUgcGx1Z2luIHVzaW5nIFF1aWNrUmVsb2FkIG9yIHRoZSBVUE0gKGZvciBPQlIpLmApXG4gICAgLnNob3dIZWxwQWZ0ZXJFcnJvcih0cnVlKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXcsIC0td2F0Y2gnLCAnV2F0Y2ggZm9yIGZpbGVzeXN0ZW0gY2hhbmdlcyB0byBKQVIgb3IgT0JSIGZpbGVzIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5JykuZGVmYXVsdChmYWxzZSkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctbywgLS1vdXRwdXREaXJlY3RvcnkgPGRpcmVjdG9yeT4nLCAnT3V0cHV0IGRpcmVjdG9yeSB3aGVyZSB0byBsb29rIGZvciBnZW5lcmF0ZWQgSkFSIG9yIE9CUiBmaWxlcyAoZGVmYXVsdHMgdG8gYHRhcmdldGApJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLW9icicsICdVcGxvYWQgZ2VuZXJhdGVkIE9CUiBmaWxlIGluc3RlYWQgb2YgSkFSIGZpbGUgd2hlbiBpbnN0YWxsaW5nIHRoZSBhcHAnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tdXNlcm5hbWUgPHVzZXJuYW1lPicsICdUaGUgdXNlcm5hbWUgb2YgdGhlIGFkbWluaXN0cmF0b3IgKHJlcXVpcmVkIHdpdGggLS1vYnIpJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnVGhlIHBhc3N3b3JkIG9mIHRoZSBhZG1pbmlzdHJhdG9yIChyZXF1aXJlZCB3aXRoIC0tb2JyKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tYWN0aXZhdGUtcHJvZmlsZXMgPGFyZz4nLCAnQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgcHJvZmlsZXMgdG8gYWN0aXZhdGUnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tbXBhYycsICdJbnN0YWxsIHRoZSBhcHAgZnJvbSB0aGUgQXRsYXNzaWFuIE1hcmtldHBsYWNlJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWJhc2VVcmwgPHVybD4nLCAnVVJMIG9mIHRoZSBpbnN0YW5jZSAocmVxdWlyZWQgd2l0aCAtLW1wYWMpJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWFwcEtleSA8a2V5PicsICdUaGUga2V5IG9mIHRoZSBhcHAgdG8gYmUgaW5zdGFsbGVkIChyZXF1aXJlZCB3aXRoIC0tbXBhYyknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHdoZXJlIHRvIGZpbmQgdGhlIEFNUFMgY29uZmlndXJhdGlvbicpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBpbnN0YWxsOiB0cnVlIH0pKTtcbnByb2dyYW0ucGFyc2VBc3luYyhwcm9jZXNzLmFyZ3YpLmNhdGNoKCgpID0+IGdyYWNlZnVsRXhpdCgxKSk7XG5wcm9jZXNzLm9uKCdTSUdJTlQnLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFJlY2VpdmVkIHRlcm0gc2lnbmFsLCB0cnlpbmcgdG8gc3RvcCBncmFjZWZ1bGx5IPCfkqpgKTtcbiAgICBncmFjZWZ1bEV4aXQoMSk7XG59KTtcbiJdLCJuYW1lcyI6WyJ2ZXJzaW9ucyIsIkRvY2tlci5nZXRSdW5uaW5nQ29udGFpbmVySWRzIiwicmVzb2x2ZVBhdGgiLCJEb2NrZXIuY29weSIsIkNvbW1hbmRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTU8sTUFBTSxRQUFRLEdBQUcsMmFBQTJhOztBQ0g1YixNQUFNLFdBQVcsR0FBRyxPQUFPLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEdBQUcsSUFBSSxLQUFLO0FBQ3hGLElBQUksTUFBTSxXQUFXLEdBQUcsUUFBUSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ2hILElBQUksTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxP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QUMsQ0FBQztBQUNQLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoRE0sTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQy9DLElBQUks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