client-core-services 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/clientCore.module.mjs +94 -0
- package/esm2020/lib/services/api/api.service.mjs +7 -7
- package/esm2020/lib/services/api/auth/auth.service.mjs +5 -5
- package/esm2020/lib/services/data-share/data-share.service.mjs +29 -8
- package/esm2020/lib/services/env/env.service.mjs +6 -1
- package/esm2020/lib/services/env/serverHostList.mjs +2 -52
- package/esm2020/lib/services/form/form-creation/form-creation.service.mjs +7 -7
- package/esm2020/lib/services/storage/storage.service.mjs +1 -203
- package/esm2020/public-api.mjs +2 -2
- package/fesm2015/client-core-services.mjs +53 -283
- package/fesm2015/client-core-services.mjs.map +1 -1
- package/fesm2020/client-core-services.mjs +53 -283
- package/fesm2020/client-core-services.mjs.map +1 -1
- package/lib/{my-lib.module.d.ts → clientCore.module.d.ts} +2 -3
- package/lib/services/data-share/data-share.service.d.ts +17 -4
- package/lib/services/env/env.service.d.ts +3 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/esm2020/lib/my-lib.module.mjs +0 -98
|
@@ -336,208 +336,6 @@ export class StorageService {
|
|
|
336
336
|
//console.log(response);
|
|
337
337
|
}));
|
|
338
338
|
}
|
|
339
|
-
// setPackaging(cartData:any) {
|
|
340
|
-
// switch (cartData.type) {
|
|
341
|
-
// case 'TAB': this.packDetails.packing = 'Packing : 1 strip (' + cartData.packing + ' Tablets Each)';
|
|
342
|
-
// this.packDetails.unit = 'Strip(s)';
|
|
343
|
-
// break;
|
|
344
|
-
// case 'SYP': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Syrup Each)';
|
|
345
|
-
// this.packDetails.unit = 'Bottle(s)';
|
|
346
|
-
// break;
|
|
347
|
-
// case 'LOT': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Lotion Each)';
|
|
348
|
-
// this.packDetails.unit = 'Bottle(s)';
|
|
349
|
-
// break;
|
|
350
|
-
// case 'INJ': this.packDetails.packing = 'Packing : 1 Vial (' + cartData.packing + ' Injection Each)';
|
|
351
|
-
// this.packDetails.unit = 'Vial(s)';
|
|
352
|
-
// break;
|
|
353
|
-
// case 'POWD': this.packDetails.packing = 'Packing : 1 Box (' + cartData.packing + ' Powder Each)';
|
|
354
|
-
// this.packDetails.unit = 'Box(es)';
|
|
355
|
-
// break;
|
|
356
|
-
// case 'CAP': this.packDetails.packing = 'Packing : 1 strip (' + cartData.packing + ' Capsule Each)';
|
|
357
|
-
// this.packDetails.unit = 'Strip(s)';
|
|
358
|
-
// break;
|
|
359
|
-
// case 'SACH': this.packDetails.packing = 'Packing : 1 Packet (' + cartData.packing + ' Sachet Each)';
|
|
360
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
361
|
-
// break;
|
|
362
|
-
// case 'INH': this.packDetails.packing = 'Packing : 1 Box (' + cartData.packing + ' Inhaler Each)';
|
|
363
|
-
// this.packDetails.unit = 'Box(es)';
|
|
364
|
-
// break;
|
|
365
|
-
// case 'ROTO': this.packDetails.packing = 'Packing : 1 Box (' + cartData.packing + ' Redicaps Each)';
|
|
366
|
-
// this.packDetails.unit = 'Box(es)';
|
|
367
|
-
// break;
|
|
368
|
-
// case 'E/DR': this.packDetails.packing = 'Packing : 1 Packet (' + cartData.packing + ' Eye Drop Each)';
|
|
369
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
370
|
-
// break;
|
|
371
|
-
// case 'EDRP': this.packDetails.packing = 'Packing : 1 Packet (' + cartData.packing + ' Eye Drop Each)';
|
|
372
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
373
|
-
// break;
|
|
374
|
-
// case 'OINT': this.packDetails.packing = 'Packing : 1 Tube (' + cartData.packing + ' Ointment Each)';
|
|
375
|
-
// this.packDetails.unit = 'Tube(s)';
|
|
376
|
-
// break;
|
|
377
|
-
// case 'OIL': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';
|
|
378
|
-
// this.packDetails.unit = 'Bottle(s)';
|
|
379
|
-
// break;
|
|
380
|
-
// case 'SOAP': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
381
|
-
// this.packDetails.unit = 'Pack(s)';
|
|
382
|
-
// break;
|
|
383
|
-
// case 'FWSH': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
384
|
-
// this.packDetails.unit = 'Pack(s)';
|
|
385
|
-
// break;
|
|
386
|
-
// case 'DRP': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
387
|
-
// this.packDetails.unit = 'Pack(s)';
|
|
388
|
-
// break;
|
|
389
|
-
// case 'JELY': this.packDetails.packing = 'Packing : 1 Packet (' + cartData.packing + ' Jelly Each)';
|
|
390
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
391
|
-
// break;
|
|
392
|
-
// case 'CREM': this.packDetails.packing = 'Packing : 1 Tube (' + cartData.packing + ' Cream Each)';
|
|
393
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
394
|
-
// break;
|
|
395
|
-
// case 'CRTG': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';
|
|
396
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
397
|
-
// break;
|
|
398
|
-
// case 'CONER': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
399
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
400
|
-
// break;
|
|
401
|
-
// case 'CHRN': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
402
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
403
|
-
// break;
|
|
404
|
-
// case 'FLOS': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
405
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
406
|
-
// break;
|
|
407
|
-
// case 'DIAP': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
408
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
409
|
-
// break;
|
|
410
|
-
// case 'DRES': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
411
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
412
|
-
// break;
|
|
413
|
-
// case 'DRNK': this.packDetails.packing = 'Packing :1 Bottle (' + cartData.packing + ' Bottle each)';
|
|
414
|
-
// this.packDetails.unit = 'Bottle(s)';
|
|
415
|
-
// break;
|
|
416
|
-
// case 'DSYP': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';
|
|
417
|
-
// this.packDetails.unit = 'Bottle(s)';
|
|
418
|
-
// break;
|
|
419
|
-
// case 'DPO': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
420
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
421
|
-
// break;
|
|
422
|
-
// case 'ENM': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
423
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
424
|
-
// break;
|
|
425
|
-
// case 'EXP': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';
|
|
426
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
427
|
-
// break;
|
|
428
|
-
// case 'EOINT': this.packDetails.packing = 'Packing : 1 Tube (' + cartData.packing + ' Ointment Each)';
|
|
429
|
-
// this.packDetails.unit = 'Tube(s)';
|
|
430
|
-
// break;
|
|
431
|
-
// case 'GEL': this.packDetails.packing = 'Packing : 1 Tube (' + cartData.packing + ' Gel Each)';
|
|
432
|
-
// this.packDetails.unit = 'Gel(s)';
|
|
433
|
-
// break;
|
|
434
|
-
// case 'GRGL': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';
|
|
435
|
-
// this.packDetails.unit = 'Bottle(s)';
|
|
436
|
-
// break;
|
|
437
|
-
// case 'GMTR': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
438
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
439
|
-
// break;
|
|
440
|
-
// case 'HAISER': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';
|
|
441
|
-
// this.packDetails.unit = 'Bottle(s)';
|
|
442
|
-
// break;
|
|
443
|
-
// case 'HWSH': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';
|
|
444
|
-
// this.packDetails.unit = 'Bottle(s)';
|
|
445
|
-
// break;
|
|
446
|
-
// case 'INFN': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
447
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
448
|
-
// break;
|
|
449
|
-
// case 'VWASH': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
450
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
451
|
-
// break;
|
|
452
|
-
// case 'JAR': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
453
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
454
|
-
// break;
|
|
455
|
-
// case 'JUIC': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
456
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
457
|
-
// break;
|
|
458
|
-
// case 'KIT': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Kit Each)';
|
|
459
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
460
|
-
// break;
|
|
461
|
-
// case 'LBALM': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
462
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
463
|
-
// break;
|
|
464
|
-
// case 'LQD': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';
|
|
465
|
-
// this.packDetails.unit = 'Bottle(s)';
|
|
466
|
-
// break;
|
|
467
|
-
// case 'MPNT': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
468
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
469
|
-
// break;
|
|
470
|
-
// case 'MWSH': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';
|
|
471
|
-
// this.packDetails.unit = 'Bottle(s)';
|
|
472
|
-
// break;
|
|
473
|
-
// case 'NDRP': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
474
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
475
|
-
// break;
|
|
476
|
-
// case 'NIPLE': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
477
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
478
|
-
// break;
|
|
479
|
-
// case 'ODRPS': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';
|
|
480
|
-
// this.packDetails.unit = 'Bottle(s)';
|
|
481
|
-
// break;
|
|
482
|
-
// case 'PKT': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
483
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
484
|
-
// break;
|
|
485
|
-
// case 'PFS': this.packDetails.packing = 'Packing : 1 Syringe (' + cartData.packing + ' Syringe Each)';
|
|
486
|
-
// this.packDetails.unit = 'Syringe(s)';
|
|
487
|
-
// break;
|
|
488
|
-
// case 'RPSLS': this.packDetails.packing = 'Packing : 1 Respule (' + cartData.packing + ' Respule Each)';
|
|
489
|
-
// this.packDetails.unit = 'Respule(s)';
|
|
490
|
-
// break;
|
|
491
|
-
// case 'ROLL': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
492
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
493
|
-
// break;
|
|
494
|
-
// case 'SACH': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
495
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
496
|
-
// break;
|
|
497
|
-
// case 'SCRUB': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
498
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
499
|
-
// break;
|
|
500
|
-
// case 'SHAMP': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';
|
|
501
|
-
// this.packDetails.unit = 'Bottle(s)';
|
|
502
|
-
// break;
|
|
503
|
-
// case 'SLTN': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';
|
|
504
|
-
// this.packDetails.unit = 'Bottle(s)';
|
|
505
|
-
// break;
|
|
506
|
-
// case 'SPRY': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';
|
|
507
|
-
// this.packDetails.unit = 'Bottle(s)';
|
|
508
|
-
// break;
|
|
509
|
-
// case 'TPAST': this.packDetails.packing = 'Packing : 1 Paste (' + cartData.packing + ' Paste Each)';
|
|
510
|
-
// this.packDetails.unit = 'Paste(s)';
|
|
511
|
-
// break;
|
|
512
|
-
// case 'VACC': this.packDetails.packing = 'Packing : 1 Vaccine (' + cartData.packing + ' Pack Each)';
|
|
513
|
-
// this.packDetails.unit = 'Paste(s)';
|
|
514
|
-
// break;
|
|
515
|
-
// case 'VTAB': this.packDetails.packing = 'Packing : 1 Tablet (' + cartData.packing + ' Tablet Each)';
|
|
516
|
-
// this.packDetails.unit = 'Tablet(s)';
|
|
517
|
-
// break;
|
|
518
|
-
// case 'WIPS': this.packDetails.packing = 'Packing : 1 Wipes (' + cartData.packing + ' Wipes Each)';
|
|
519
|
-
// this.packDetails.unit = 'Wipe(s)';
|
|
520
|
-
// break;
|
|
521
|
-
// case 'TULL': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
522
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
523
|
-
// break;
|
|
524
|
-
// case 'TBAG': this.packDetails.packing = 'Packing : 1 Pack (' + cartData.packing + ' Pack Each)';
|
|
525
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
526
|
-
// break;
|
|
527
|
-
// case 'SYRNEE': this.packDetails.packing = 'Packing : 1 Pack Syringe (' + cartData.packing + ' Pack Syringe Each)';
|
|
528
|
-
// this.packDetails.unit = 'Packet(s)';
|
|
529
|
-
// break;
|
|
530
|
-
// case 'NSPRY': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';
|
|
531
|
-
// this.packDetails.unit = 'Bottle(s)';
|
|
532
|
-
// break;
|
|
533
|
-
// case 'RMSRP': this.packDetails.packing = 'Packing : 1 Bottle (' + cartData.packing + ' Bottle Each)';
|
|
534
|
-
// this.packDetails.unit = 'Bottle(s)';
|
|
535
|
-
// break;
|
|
536
|
-
// default: this.packDetails.packing = 'Packing : 1 strip (' + cartData.packing + ' Tablets Each)';
|
|
537
|
-
// this.packDetails.unit = 'Strip(s)';
|
|
538
|
-
// }
|
|
539
|
-
// return this.packDetails;
|
|
540
|
-
// }
|
|
541
339
|
setHostNameDinamically(host) {
|
|
542
340
|
let domainName = this.document.location['hostname'];
|
|
543
341
|
localStorage.setItem(this.HOST_NAME, host);
|
|
@@ -746,4 +544,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
746
544
|
type: Inject,
|
|
747
545
|
args: [DOCUMENT]
|
|
748
546
|
}] }, { type: i2.EncryptionService }, { type: i3.CoreFunctionService }, { type: i4.CookiesService }]; } });
|
|
749
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zdG9yYWdlL3N0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBa0QsR0FBRyxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7QUFPM0MsTUFBTSxPQUFPLGNBQWM7SUFxQ3pCLFlBQ1UsSUFBZ0IsRUFDRCxHQUFPLEVBQ0osUUFBa0IsRUFDcEMsaUJBQW1DLEVBQ25DLG1CQUF1QyxFQUN2QyxjQUE2QjtRQUw3QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ0QsUUFBRyxHQUFILEdBQUcsQ0FBSTtRQUNKLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBMUN2QyxhQUFRLEdBQVcsVUFBVSxDQUFDO1FBQzlCLGlCQUFZLEdBQVcsY0FBYyxDQUFDO1FBQ3RDLGtCQUFhLEdBQVcsZUFBZSxDQUFDO1FBQ3hDLHVCQUFrQixHQUFVLG9CQUFvQixDQUFDO1FBQ2pELGNBQVMsR0FBTSxXQUFXLENBQUM7UUFDM0Is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LDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsdUdBQXVHO0lBQ3ZHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsdUdBQXVHO0lBQ3ZHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsMEdBQTBHO0lBQzFHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsMkdBQTJHO0lBQzNHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2Ysc0dBQXNHO0lBQ3RHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2Ysc0dBQXNHO0lBQ3RHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsMEdBQTBHO0lBQzFHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsNEdBQTRHO0lBQzVHLDJDQUEyQztJQUMzQyxlQUFlO0lBQ2YscUdBQXFHO0lBQ3JHLDBDQUEwQztJQUMxQyxlQUFlO0lBQ2YsMkdBQTJHO0lBQzNHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsdUdBQXVHO0lBQ3ZHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsNkdBQTZHO0lBQzdHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsMkdBQTJHO0lBQzNHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsdUdBQXVHO0lBQ3ZHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2Ysd0dBQXdHO0lBQ3hHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2Ysc0dBQXNHO0lBQ3RHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsdUdBQXVHO0lBQ3ZHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YscUdBQXFHO0lBQ3JHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2Ysd0dBQXdHO0lBQ3hHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsMEdBQTBHO0lBQzFHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsdUdBQXVHO0lBQ3ZHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsMkdBQTJHO0lBQzNHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsdUdBQXVHO0lBQ3ZHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2Ysd0dBQXdHO0lBQ3hHLDZDQUE2QztJQUM3QyxlQUFlO0lBQ2YsNEdBQTRHO0lBQzVH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QztZQUNSLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7YUFBSTtZQUNILE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDOzs0R0F4dUJVLGNBQWMsNENBdUNmLEtBQUssYUFDTCxRQUFRO2dIQXhDUCxjQUFjLGNBRmIsTUFBTTs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBd0NJLE1BQU07MkJBQUMsS0FBSzs7MEJBQ1osTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29yZUZ1bmN0aW9uU2VydmljZSB9IGZyb20gJy4vLi4vY29tbW9uLXV0aWxzL2NvcmUtZnVuY3Rpb24vY29yZS1mdW5jdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLy4uL2VuY3J5cHRpb24vZW5jcnlwdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgdGFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN0b3JhZ2VUb2tlblN0YXR1cyB9IGZyb20gJy4uLy4uL3NoYXJlZC9lbnVtcy9zdG9yYWdlLXRva2VuLXN0YXR1cy5lbnVtJztcclxuaW1wb3J0IHsgUExBVEZPUk1fTkFNRSB9IGZyb20gJy4uLy4uL3NoYXJlZC9wbGF0Zm9ybSc7XHJcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4uLy4uL3NoYXJlZC9lbnVtcy9jb21tb24uZW51bSc7XHJcbmltcG9ydCB7IENvb2tpZXNTZXJ2aWNlIH0gZnJvbSAnLi9jb29raWVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0b3JhZ2VTZXJ2aWNlIHtcclxuICBJRF9UT0tFTjogc3RyaW5nID0gJ0lEX1RPS0VOJztcclxuICBBQ0NFU1NfVE9LRU46IHN0cmluZyA9ICdBQ0NFU1NfVE9LRU4nO1xyXG4gIFJFRlJFU0hfVE9LRU46IHN0cmluZyA9ICdSRUZSRVNIX1RPS0VOJztcclxuICBSRVNFVF9QQVNTX1NFU1NJT046c3RyaW5nID0gJ1JFU0VUX1BBU1NfU0VTU0lPTic7XHJcbiAgRVhQSVJZX0lOOmFueT0gJ0VYUElSWV9JTic7XHJcbiAgVVNFUl9LRVk6IHN0cmluZyA9ICdVU0VSJztcclxuICBST0xFOnN0cmluZyA9IFwiUk9MRVwiO1xyXG4gIEFDVElWRV9NRU5VOiBzdHJpbmcgPSAnTUVOVSc7XHJcbiAgTUVOVV9UWVBFOiBzdHJpbmcgPSAnTUVOVV9UWVBFJztcclxuICBJRF9UT0tFTl9FWFBJUllfVElNRTogc3RyaW5nID0gJ0lEX1RPS0VOX0VYUElSWV9USU1FJztcclxuICBSRUZSRVNIX1RPS0VOX0VYUElSWV9USU1FOnN0cmluZz0nUkVGUkVTSF9UT0tFTl9FWFBJUllfVElNRSc7XHJcbiAgdXNlckluZm86IGFueTtcclxuICBsb2c6IGFueTtcclxuICBhZ2U6YW55PTM1NDAwMDA7IC8vNTkgbWludXRzXHJcbiAgcmVmcmVzaFRva2VuQWdlOmFueT0yNTA1NjAwMDAwIC8vcmVmcmVzaCB0b2tlbiBhZ2UgMjkgZGF5c1xyXG4gIHBhY2tEZXRhaWxzOiBhbnkgPSB7fTtcclxuXHJcbiAgSE9TVF9OQU1FIDogc3RyaW5nID0gJ0hPU1RfTkFNRSc7XHJcbiAgUFJPSkVDVF9GT0xERVJfTkFNRTogc3RyaW5nID0gJ1BST0pFQ1RfRk9MREVSX05BTUUnO1xyXG4gIFRFTVBfTkFNRTpzdHJpbmcgPSBcIlRFTVBfTkFNRVwiO1xyXG4gIFRFTVBfVEhFTUU6c3RyaW5nID0gXCJURU1QX1RIRU1FXCI7XHJcbiAgUEFHRV9USVRMRTpzdHJpbmcgPSBcIlBBR0VfVElUTEVcIjtcclxuICBWRVJJRllfVFlQRTpzdHJpbmcgPSBcIlZFUklGWV9UWVBFXCI7XHJcbiAgTU9EVUxFOnN0cmluZyA9IFwiTU9EVUxFXCI7XHJcbiAgVEVBTV9OQU1FOnN0cmluZyA9IFwiVEVBTV9OQU1FXCI7XHJcbiAgVVNFUl9QUkVGRVJFTkNFOmFueTtcclxuICBSRURJUkVDVF9VUkw6c3RyaW5nID0gXCJSRURJUkVDVF9VUkxcIjtcclxuICBDSElMRF9XSU5ET1dfVVJMOnN0cmluZyA9IFwiQ0hJTERfV0lORE9XX1VSTFwiO1xyXG4gIE1PRElGWV9NT0RVTEVTOmFueSA9ICdNT0RJRllfTU9EVUxFUyc7XHJcbiAgYXBwTmFtZTphbnk7XHJcbiAgQ0xJRU5UX05BTUU6YW55ID0gJ0NMSUVOVF9OQU1FJztcclxuICBBTExfVEVNUExBVEU6YW55ID0gJ0FMTF9URU1QTEFURSc7XHJcbiAgVEVNUExBVEVfSU5ERVg6YW55ID0gXCJURU1QTEFURV9JTkRFWFwiO1xyXG4gIFRBQl9DT1VOVFM6YW55PVwiVEFCX0NPVU5UU1wiO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBASW5qZWN0KCdlbnYnKSBwcml2YXRlIGVudjphbnksXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcclxuICAgIHByaXZhdGUgZW5jcnlwdGlvblNlcnZpY2U6RW5jcnlwdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvcmVGdW5jdGlvblNlcnZpY2U6Q29yZUZ1bmN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgY29va2llc1NlcnZpY2U6Q29va2llc1NlcnZpY2VcclxuICAgICkgeyB9XHJcblxyXG4gIGxvYWQoKTogT2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuZW52O1xyXG4gIH1cclxuICBzZXRBcHBOYW1lKGFwcG5hbWU6c3RyaW5nKXtcclxuICAgIHRoaXMuYXBwTmFtZSA9IGFwcG5hbWU7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIkFwcE5hbWVcIiwgSlNPTi5zdHJpbmdpZnkoYXBwbmFtZSkpO1xyXG59XHJcbiAgc2V0TW9kdWxlKG1vZHVsZTpzdHJpbmcpe1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcIk1PRFVMRVwiLG1vZHVsZSk7XHJcbiAgfVxyXG4gIGdldE1vZHVsZSgpe1xyXG4gICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ01PRFVMRScpO1xyXG4gIH1cclxuICBzZXRDaGlsZFdpbmRvd1VybCh1cmw6c3RyaW5nKXtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiQ0hJTERfV0lORE9XX1VSTFwiLHVybCk7XHJcbiAgfVxyXG4gIGdldENoaWxkV2luZG93VXJsKCl7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0NISUxEX1dJTkRPV19VUkwnKTtcclxuICB9XHJcbiAgc2V0UmVkaXJlY3RVcmwodXJsOnN0cmluZyl7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFwiUkVESVJFQ1RfVVJMXCIsdXJsKTtcclxuICB9XHJcbiAgZ2V0UmVkaXJlY3RVcmwoKXtcclxuICAgIHJldHVybiBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdSRURJUkVDVF9VUkwnKTtcclxuICB9XHJcbiAgc2V0VXNlclByZWZlcmVuY2UodXNlcl9wcmVmZXJlbmNlOmFueSl7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIlVTRVJfUFJFRkVSRU5DRVwiLEpTT04uc3RyaW5naWZ5KHVzZXJfcHJlZmVyZW5jZSkpO1xyXG4gIH1cclxuICBnZXRVc2VyUHJlZmVyZW5jZSgpe1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoPGFueT5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnVVNFUl9QUkVGRVJFTkNFJykpO1xyXG4gIH1cclxuXHJcbiAgc2V0VGhlbWVTZXR0aW5nKHNldHRpbmdPYmo6YW55KXtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiVEhFTUVfU0VUVElOR1wiLEpTT04uc3RyaW5naWZ5KHNldHRpbmdPYmopKTtcclxuICB9XHJcbiAgZ2V0VGhlbWVTZXR0aW5nKCl7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZSg8YW55PmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdUSEVNRV9TRVRUSU5HJykpO1xyXG4gIH1cclxuXHJcbiAgc2V0QXBwbGljYXRpb25TZXR0aW5nKGFwcGxpY2F0aW9uU2V0dGluZzphbnkpe1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJBUFBMSUNBVElPTl9TRVRUSU5HXCIsSlNPTi5zdHJpbmdpZnkoYXBwbGljYXRpb25TZXR0aW5nKSk7XHJcbiAgfVxyXG4gIGdldEFwcGxpY2F0aW9uU2V0dGluZygpe1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoPGFueT5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQVBQTElDQVRJT05fU0VUVElORycpKTtcclxuICB9XHJcblxyXG4gIHNldEFwcElkKGFwcElkOnN0cmluZyl7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXBwSWQnLCBhcHBJZCk7XHJcbiAgfVxyXG5cclxuICBnZXRBcHBJZCgpe1xyXG4gICAgY29uc3QgdXNlciA9IHRoaXMuR2V0VXNlckluZm8oKTtcclxuICAgIGlmKHVzZXIgJiYgdXNlci5hcHBJZCAmJiB1c2VyLmFwcElkICE9IG51bGwpe1xyXG4gICAgICByZXR1cm4gdXNlci5hcHBJZDtcclxuICAgIH1lbHNle1xyXG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FwcElkJylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEV4cGlyZXNJbihleHBpcnk6IGFueSl7XHJcbiAgICBsZXQgZXhwaXJ5VGltZSA9IChleHBpcnkgLSAzMDApKjEwMDBcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuRVhQSVJZX0lOLCBKU09OLnN0cmluZ2lmeShleHBpcnlUaW1lKSk7XHJcbiAgICB0aGlzLnNldElkVG9rZW5FeHBpcnkoKTtcclxuICB9XHJcbiAgZ2V0RXhwaXJlc0luKCl7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5FWFBJUllfSU4pO1xyXG4gIH1cclxuICBTZXRJZFRva2VuKHRva2VuOiBhbnkpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuSURfVE9LRU4sIEpTT04uc3RyaW5naWZ5KHRva2VuKSk7XHJcbiAgfVxyXG4gIEdldElkVG9rZW4oKSB7XHJcbiAgICBsZXQgb2JqID0gSlNPTi5wYXJzZSg8YW55PmxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuSURfVE9LRU4pKTtcclxuICAgIGlmKG9iaiAmJiBvYmogIT0gbnVsbCApe1xyXG4gICAgICByZXR1cm4gb2JqO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuICBJc0pzb25TdHJpbmcoc3RyOmFueSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgICAgSlNPTi5wYXJzZShzdHIpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIFNldEFjY2Vzc1Rva2VuKHRva2VuOiBhbnkpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuQUNDRVNTX1RPS0VOLCBKU09OLnN0cmluZ2lmeSh0b2tlbikpO1xyXG4gIH1cclxuICBHZXRBY2Nlc3NUb2tlbigpIHtcclxuICAgIGxldCBvYmogPSBKU09OLnBhcnNlKDxhbnk+bG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5BQ0NFU1NfVE9LRU4pKTtcclxuICAgIGlmKG9iaiAmJiBvYmogIT0gbnVsbCl7XHJcbiAgICAgICAgcmV0dXJuIG9iajtcclxuICAgIH1cclxuICB9XHJcbiAgU2V0UmVmcmVzaFRva2VuKHRva2VuOiBzdHJpbmcpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuUkVGUkVTSF9UT0tFTiwgdG9rZW4pO1xyXG4gICAgdGhpcy5zZXRSZWZyZXNoVG9rZW5FeHBpcnkoKTtcclxuICB9XHJcbiAgR2V0UmVmcmVzaFRva2VuKCkge1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuUkVGUkVTSF9UT0tFTik7XHJcbiAgfVxyXG4gIEdldElkVG9rZW5TdGF0dXMoKXtcclxuICAgIGxldCBleHBpcmVkID0gMDtcclxuICAgIGxldCBleHBpcmVUaW1lID0gTnVtYmVyKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuSURfVE9LRU5fRVhQSVJZX1RJTUUpKTtcclxuICAgIGxldCBjdXJyZW50VGltZSA9IERhdGUubm93KCk7XHJcbiAgICBsZXQgZXhwaXJlc0luMjRIb3VycyA9IDA7XHJcblxyXG5cdGlmKGV4cGlyZVRpbWUgPiBjdXJyZW50VGltZSlcclxuICAgICAgZXhwaXJlc0luMjRIb3VycyA9ICAoKChleHBpcmVUaW1lLWN1cnJlbnRUaW1lKS8xMDAwKS8zNjAwKSA7XHJcblxyXG5cdGlmKGN1cnJlbnRUaW1lID4gZXhwaXJlVGltZSl7XHJcbiAgICAgIGlmKGV4cGlyZVRpbWUgPiAwKXtcclxuICAgICAgICByZXR1cm4gU3RvcmFnZVRva2VuU3RhdHVzLklEX1RPS0VOX0VYUElSRUQ7ICAvLyBhcHBDb25zdGFudC5UT0tFTl9TVEFUVVMuSURfVE9LRU5fRVhQSVJFRDsgLy8gbm90aWZ5LCBkdWUgdG8gZXhwaXJlZFxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAgU3RvcmFnZVRva2VuU3RhdHVzLklEX1RPS0VOX05PVF9DUkVBVEVEOyAvL2FwcENvbnN0YW50LlRPS0VOX1NUQVRVUy5JRF9UT0tFTl9OT1RfQ1JFQVRFRDsgIC8vIGZpcnN0IHRpbWUgbG9hZGluZyBzbyBubyBub3RpZnlcclxuICAgIH0gZWxzZSBpZihleHBpcmVzSW4yNEhvdXJzID4gMjQpe1xyXG5cdFx0cmV0dXJuIFN0b3JhZ2VUb2tlblN0YXR1cy5JRF9UT0tFTl9FWFBJUkVEIC8vYXBwQ29uc3RhbnQuVE9LRU5fU1RBVFVTLklEX1RPS0VOX0VYUElSRUQ7IC8vIG5vdGlmeSwgZHVlIHRvIGV4cGlyZWRcclxuXHR9XHJcblxyXG4gICAgcmV0dXJuIFN0b3JhZ2VUb2tlblN0YXR1cy5JRF9UT0tFTl9BQ1RJVkU7IC8vYXBwQ29uc3RhbnQuVE9LRU5fU1RBVFVTLklEX1RPS0VOX0FDVElWRTsgLy8gbm90IGV4cGlyZWRcclxuICB9XHJcblxyXG5cclxuXHJcbiAgR2V0UmVmcmVzaFRva2VuU3RhdHVzKCl7XHJcbiAgICBsZXQgZXhwaXJlZCA9IDA7XHJcbiAgICBsZXQgZXhwaXJlVGltZSA9IE51bWJlcihsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlJFRlJFU0hfVE9LRU5fRVhQSVJZX1RJTUUpKTtcclxuICAgIGxldCBjdXJyZW50VGltZSA9IERhdGUubm93KCk7XHJcbiAgICBpZihjdXJyZW50VGltZSA+IGV4cGlyZVRpbWUpe1xyXG4gICAgICBpZihleHBpcmVUaW1lID4gMCl7XHJcbiAgICAgICAgcmV0dXJuIFN0b3JhZ2VUb2tlblN0YXR1cy5SRUZSRVNIX1RPS0VOX0VYUElSRUQ7IC8vIGFwcENvbnN0YW50LlRPS0VOX1NUQVRVUy5SRUZSRVNIX1RPS0VOX0VYUElSRUQ7IC8vIG5vdGlmeSwgZHVlIHRvIGV4cGlyZWRcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gU3RvcmFnZVRva2VuU3RhdHVzLlJFRlJFU0hfVE9LRU5fTk9UX0NSRUFURUQ7IC8vIGFwcENvbnN0YW50LlRPS0VOX1NUQVRVUy5SRUZSRVNIX1RPS0VOX05PVF9DUkVBVEVEOyAgLy8gZmlyc3QgdGltZSBsb2FkaW5nIHNvIG5vIG5vdGlmeVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIFN0b3JhZ2VUb2tlblN0YXR1cy5SRUZSRVNIX1RPS0VOX0FDVElWRTsgLy8gYXBwQ29uc3RhbnQuVE9LRU5fU1RBVFVTLlJFRlJFU0hfVE9LRU5fQUNUSVZFOyAvLyBub3QgZXhwaXJlZFxyXG4gIH1cclxuXHJcbiAgU2V0VXNlckluZm8odXNlcjogYW55KSB7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLlVTRVJfS0VZLCBKU09OLnN0cmluZ2lmeSh1c2VyKSk7XHJcbiAgfVxyXG4gIEdldFVzZXJJbmZvKCkge1xyXG4gICAgY29uc3Qgb2JqOmFueSA9IEpTT04ucGFyc2UoPGFueT5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlVTRVJfS0VZKSk7XHJcbiAgICBpZihvYmogJiYgb2JqLnVzZXIpe1xyXG4gICAgICByZXR1cm4gb2JqLnVzZXJcclxuICAgIH1lbHNle1xyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcbiAgfVxyXG4gIEdldFJvbGVMaXN0KCl7XHJcbiAgICBjb25zdCBvYmo6YW55ID0gSlNPTi5wYXJzZSg8YW55PmxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuVVNFUl9LRVkpKTtcclxuICAgIGlmKG9iaiAmJiBvYmoucm9sbExpc3Qpe1xyXG4gICAgICByZXR1cm4gb2JqLnJvbGxMaXN0XHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXRBY3RpdmVSb2xlKHJvbGU6YW55KXtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuUk9MRSwgSlNPTi5zdHJpbmdpZnkocm9sZSkpO1xyXG4gIH1cclxuICBnZXRBY3RpdmVSb2xlKCl7XHJcbiAgICBjb25zdCBvYmo6YW55ID0gSlNPTi5wYXJzZSg8YW55PmxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuUk9MRSkpO1xyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcbiAgR2V0VXNlclJlZmVyZW5jZSgpIHtcclxuICAgIGxldCB1c2VyID0gdGhpcy5HZXRVc2VySW5mbygpO1xyXG4gICAgbGV0IHVzZXJSZWY6YW55ID0ge307XHJcbiAgICB1c2VyUmVmWydfaWQnXSA9IHVzZXJbJ19pZCddO1xyXG4gICAgdXNlclJlZlsnbmFtZSddID0gdXNlclsnbmFtZSddO1xyXG4gICAgcmV0dXJuIHVzZXJSZWY7XHJcbiAgfVxyXG4gIEdldFBlcm1pc3Npb24oKSB7XHJcbiAgICBjb25zdCBvYmogPSBKU09OLnBhcnNlKDxhbnk+bG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5VU0VSX0tFWSkpO1xyXG4gICAgaWYob2JqICYmIG9iai5wZXJtaXNzaW9uKXtcclxuICAgICAgcmV0dXJuIG9iai5wZXJtaXNzaW9uXHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBHZXRNb2R1bGVzKCl7XHJcbiAgICBjb25zdCBvYmogPSBKU09OLnBhcnNlKDxhbnk+bG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5VU0VSX0tFWSkpO1xyXG4gICAgaWYob2JqICYmIG9iai5tb2R1bGVzKXtcclxuICAgICAgcmV0dXJuIG9iai5tb2R1bGVzXHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIFNldE1vZGlmeU1vZHVsZXMobW9kdWxlczphbnkpe1xyXG4gIC8vICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5NT0RJRllfTU9EVUxFUyxKU09OLnN0cmluZ2lmeShtb2R1bGVzKSk7XHJcbiAgLy8gfVxyXG4gIC8vIEdldE1vZGlmeU1vZHVsZXMoKXtcclxuICAvLyAgIHJldHVybiBKU09OLnBhcnNlKDxhbnk+bG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5NT0RJRllfTU9EVUxFUykpO1xyXG4gIC8vIH1cclxuICBHZXRNZW51VHlwZSgpe1xyXG4gICAgY29uc3QgbWVudV9UeXBlID0gdGhpcy5nZXRBcHBsaWNhdGlvblZhbHVlQnlLZXkoJ21lbnVfdHlwZScpO1xyXG4gICAgaWYobWVudV9UeXBlKXtcclxuICAgICAgICByZXR1cm4gbWVudV9UeXBlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFVzZXJMb2coKSB7XHJcbiAgICBjb25zdCB1c2VyID0gSlNPTi5wYXJzZSg8YW55PmxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuVVNFUl9LRVkpKTtcclxuICAgIGlmKHVzZXIgJiYgdXNlciAhPSBudWxsICYmIHVzZXIgIT0gdW5kZWZpbmVkICYmIHVzZXIudXNlcil7XHJcbiAgICAgIHRoaXMudXNlckluZm8gPSB1c2VyLnVzZXI7XHJcbiAgICAgIHRoaXMubG9nID0geyB1c2VySWQ6IHRoaXMudXNlckluZm8uZW1haWwsIGFwcElkOiB0aGlzLmdldEFwcElkKCksIHJlZkNvZGU6IHRoaXMudXNlckluZm8ucmVmQ29kZSB9O1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2c7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFNldEFjdGl2ZU1lbnUobWVudTogYW55KSB7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuQUNUSVZFX01FTlUsIEpTT04uc3RyaW5naWZ5KG1lbnUpKTtcclxuICB9XHJcbiAgR2V0QWN0aXZlTWVudSgpIHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKDxhbnk+c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkFDVElWRV9NRU5VKSk7XHJcbiAgfVxyXG4gIGdldFJlZkNvZGUoKSB7XHJcbiAgICBjb25zdCB1c2VyaW5mbyA9IHRoaXMuR2V0VXNlckluZm8oKTtcclxuICAgIGlmKHVzZXJpbmZvICYmIHVzZXJpbmZvLnJlZkNvZGUpe1xyXG4gICAgICByZXR1cm4gdXNlcmluZm8ucmVmQ29kZTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBnZXRVc2VyQXBwSWQoKXtcclxuICAgIHJldHVybiB0aGlzLnVzZXJJbmZvLmFwcElkO1xyXG4gIH1cclxuICByZW1vdmVEYXRhRm9ybVN0b3JhZ2UoYWxsPzpzdHJpbmcpIHtcclxuICAgIGxldCBkb05vdENsZWFyQ2FjaGU6YW55ID0gW107XHJcbiAgICBpZihhbGwgIT0gXCJhbGxcIil7XHJcbiAgICAgIGlmKHRoaXMuY2hlY2tQbGF0Rm9ybSgpID09ICdtb2JpbGUnKXtcclxuICAgICAgICBsZXQgY2xpZW50Q29kZSA9IHRoaXMuZ2V0Q2xpZW50TmFtZSgpO1xyXG4gICAgICAgIGlmKGNsaWVudENvZGUgJiYgY2xpZW50Q29kZSAhPSAnJyl7XHJcbiAgICAgICAgICBsZXQgb2JqZWN0OmFueSA9IHt9O1xyXG4gICAgICAgICAgb2JqZWN0WydrZXknXSA9IHRoaXMuQ0xJRU5UX05BTUU7XHJcbiAgICAgICAgICBvYmplY3RbXCJ2YWx1ZVwiXSA9IGNsaWVudENvZGU7XHJcbiAgICAgICAgICBvYmplY3RbJ3R5cGUnXSA9ICdsb2NhbHN0b3JhZ2UnXHJcbiAgICAgICAgICBkb05vdENsZWFyQ2FjaGUucHVzaChvYmplY3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgaWYoZG9Ob3RDbGVhckNhY2hlICYmIGRvTm90Q2xlYXJDYWNoZS5sZW5ndGggPiAwKXtcclxuICAgICAgZG9Ob3RDbGVhckNhY2hlLmZvckVhY2goKG9iajphbnkpID0+IHtcclxuICAgICAgICBpZihvYmogJiYgb2JqLnR5cGUgPT0gJ2xvY2Fsc3RvcmFnZScpe1xyXG4gICAgICAgICAgbGV0IGtleSA9IG9ialsna2V5J107XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSBvYmpbJ3ZhbHVlJ107XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldElkVG9rZW5FeHBpcnkoKXtcclxuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XHJcbiAgICBjb25zdCBleHBpcnkgPSBOdW1iZXIodGhpcy5nZXRFeHBpcmVzSW4oKSk7XHJcbiAgICAvL2NvbnN0IGV4cGlyeSA9IHRoaXMuZ2V0RXhwaXJlc0luKCk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLklEX1RPS0VOX0VYUElSWV9USU1FLCBcIlwiKyhzdGFydFRpbWUgKyBleHBpcnkpKTtcclxuICB9XHJcblxyXG4gIHNldFJlZnJlc2hUb2tlbkV4cGlyeSgpe1xyXG4gICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuUkVGUkVTSF9UT0tFTl9FWFBJUllfVElNRSwgc3RhcnRUaW1lICsgdGhpcy5yZWZyZXNoVG9rZW5BZ2UpO1xyXG4gIH1cclxuICBzZWFyY2godXJsOiBzdHJpbmcsIHRlcm06IHN0cmluZykge1xyXG4gICAgaWYgKHRlcm0gPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodXJsICsgdGVybSkucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKHJlc3BvbnNlKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuICBzZXRSZXNldE5ld1Bhc3N3b3JkU2Vzc2lvbihzZXNzaW9uOmFueSl7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnUkVTRVRfUEFTU19TRVNTSU9OJyxzZXNzaW9uKTtcclxuICB9XHJcbiAgZ2V0UmVzZXROZXdQYXNzd29yZFNlc3Npb24oKXtcclxuICAgIGNvbnN0IHNlc3Npb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnUkVTRVRfUEFTU19TRVNTSU9OJyk7XHJcbiAgICByZXR1cm4gc2Vzc2lvbjtcclxuICB9XHJcbiAgc2VhcmNoUG9zdE1ldGhvZCh1cmw6IHN0cmluZywgcGF5bG9hZDogYW55KSB7XHJcbiAgICBpZiAocGF5bG9hZCA9PT0gJycpIHtcclxuICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QodXJsLCBwYXlsb2FkKS5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8vIHNldFBhY2thZ2luZyhjYXJ0RGF0YTphbnkpIHtcclxuICAvLyAgIHN3aXRjaCAoY2FydERhdGEudHlwZSkge1xyXG4gIC8vICAgICBjYXNlICdUQUInOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgc3RyaXAgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBUYWJsZXRzIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnU3RyaXAocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdTWVAnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgQm90dGxlICgnICsgY2FydERhdGEucGFja2luZyArICcgU3lydXAgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdCb3R0bGUocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdMT1QnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgQm90dGxlICgnICsgY2FydERhdGEucGFja2luZyArICcgTG90aW9uIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnQm90dGxlKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnSU5KJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIFZpYWwgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBJbmplY3Rpb24gRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdWaWFsKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnUE9XRCc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBCb3ggKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBQb3dkZXIgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdCb3goZXMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnQ0FQJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIHN0cmlwICgnICsgY2FydERhdGEucGFja2luZyArICcgQ2Fwc3VsZSBFYWNoKSc7XHJcbiAgLy8gICAgICAgdGhpcy5wYWNrRGV0YWlscy51bml0ID0gJ1N0cmlwKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnU0FDSCc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBQYWNrZXQgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBTYWNoZXQgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdQYWNrZXQocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdJTkgnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgQm94ICgnICsgY2FydERhdGEucGFja2luZyArICcgSW5oYWxlciBFYWNoKSc7XHJcbiAgLy8gICAgICAgdGhpcy5wYWNrRGV0YWlscy51bml0ID0gJ0JveChlcyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdST1RPJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIEJveCAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIFJlZGljYXBzIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnQm94KGVzKSc7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgJ0UvRFInOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgUGFja2V0ICgnICsgY2FydERhdGEucGFja2luZyArICcgRXllIERyb3AgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdQYWNrZXQocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdFRFJQJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIFBhY2tldCAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIEV5ZSBEcm9wIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnUGFja2V0KHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnT0lOVCc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBUdWJlICgnICsgY2FydERhdGEucGFja2luZyArICcgT2ludG1lbnQgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdUdWJlKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnT0lMJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIEJvdHRsZSAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIEJvdHRsZSBFYWNoKSc7XHJcbiAgLy8gICAgICAgdGhpcy5wYWNrRGV0YWlscy51bml0ID0gJ0JvdHRsZShzKSc7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgJ1NPQVAnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgUGFjayAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIFBhY2sgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdQYWNrKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnRldTSCc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBQYWNrICgnICsgY2FydERhdGEucGFja2luZyArICcgUGFjayBFYWNoKSc7XHJcbiAgLy8gICAgICAgdGhpcy5wYWNrRGV0YWlscy51bml0ID0gJ1BhY2socyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdEUlAnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgUGFjayAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIFBhY2sgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdQYWNrKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnSkVMWSc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBQYWNrZXQgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBKZWxseSBFYWNoKSc7XHJcbiAgLy8gICAgICAgdGhpcy5wYWNrRGV0YWlscy51bml0ID0gJ1BhY2tldChzKSc7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgJ0NSRU0nOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgVHViZSAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIENyZWFtIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnUGFja2V0KHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnQ1JURyc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBCb3R0bGUgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBCb3R0bGUgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdQYWNrZXQocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdDT05FUic6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBQYWNrICgnICsgY2FydERhdGEucGFja2luZyArICcgUGFjayBFYWNoKSc7XHJcbiAgLy8gICAgICAgdGhpcy5wYWNrRGV0YWlscy51bml0ID0gJ1BhY2tldChzKSc7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgJ0NIUk4nOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgUGFjayAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIFBhY2sgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdQYWNrZXQocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdGTE9TJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIFBhY2sgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBQYWNrIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnUGFja2V0KHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnRElBUCc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBQYWNrICgnICsgY2FydERhdGEucGFja2luZyArICcgUGFjayBFYWNoKSc7XHJcbiAgLy8gICAgICAgdGhpcy5wYWNrRGV0YWlscy51bml0ID0gJ1BhY2tldChzKSc7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgJ0RSRVMnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgUGFjayAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIFBhY2sgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdQYWNrZXQocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdEUk5LJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOjEgQm90dGxlICgnICsgY2FydERhdGEucGFja2luZyArICcgQm90dGxlIGVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnQm90dGxlKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnRFNZUCc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBCb3R0bGUgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBCb3R0bGUgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdCb3R0bGUocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdEUE8nOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgUGFjayAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIFBhY2sgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdQYWNrZXQocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdFTk0nOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgUGFjayAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIFBhY2sgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdQYWNrZXQocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdFWFAnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgQm90dGxlICgnICsgY2FydERhdGEucGFja2luZyArICcgQm90dGxlIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnUGFja2V0KHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnRU9JTlQnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgVHViZSAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIE9pbnRtZW50IEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnVHViZShzKSc7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgJ0dFTCc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBUdWJlICgnICsgY2FydERhdGEucGFja2luZyArICcgR2VsIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnR2VsKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnR1JHTCc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBCb3R0bGUgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBCb3R0bGUgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdCb3R0bGUocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdHTVRSJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIFBhY2sgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBQYWNrIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnUGFja2V0KHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnSEFJU0VSJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIEJvdHRsZSAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIEJvdHRsZSBFYWNoKSc7XHJcbiAgLy8gICAgICAgdGhpcy5wYWNrRGV0YWlscy51bml0ID0gJ0JvdHRsZShzKSc7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgJ0hXU0gnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgQm90dGxlICgnICsgY2FydERhdGEucGFja2luZyArICcgQm90dGxlIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnQm90dGxlKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnSU5GTic6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBQYWNrICgnICsgY2FydERhdGEucGFja2luZyArICcgUGFjayBFYWNoKSc7XHJcbiAgLy8gICAgICAgdGhpcy5wYWNrRGV0YWlscy51bml0ID0gJ1BhY2tldChzKSc7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgJ1ZXQVNIJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIFBhY2sgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBQYWNrIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnUGFja2V0KHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnSkFSJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIFBhY2sgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBQYWNrIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnUGFja2V0KHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnSlVJQyc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBQYWNrICgnICsgY2FydERhdGEucGFja2luZyArICcgUGFjayBFYWNoKSc7XHJcbiAgLy8gICAgICAgdGhpcy5wYWNrRGV0YWlscy51bml0ID0gJ1BhY2tldChzKSc7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgJ0tJVCc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBQYWNrICgnICsgY2FydERhdGEucGFja2luZyArICcgS2l0IEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnUGFja2V0KHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnTEJBTE0nOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgUGFjayAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIFBhY2sgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdQYWNrZXQocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdMUUQnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgQm90dGxlICgnICsgY2FydERhdGEucGFja2luZyArICcgQm90dGxlIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnQm90dGxlKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnTVBOVCc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBQYWNrICgnICsgY2FydERhdGEucGFja2luZyArICcgUGFjayBFYWNoKSc7XHJcbiAgLy8gICAgICAgdGhpcy5wYWNrRGV0YWlscy51bml0ID0gJ1BhY2tldChzKSc7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgJ01XU0gnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgQm90dGxlICgnICsgY2FydERhdGEucGFja2luZyArICcgQm90dGxlIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnQm90dGxlKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnTkRSUCc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBQYWNrICgnICsgY2FydERhdGEucGFja2luZyArICcgUGFjayBFYWNoKSc7XHJcbiAgLy8gICAgICAgdGhpcy5wYWNrRGV0YWlscy51bml0ID0gJ1BhY2tldChzKSc7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgJ05JUExFJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIFBhY2sgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBQYWNrIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnUGFja2V0KHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnT0RSUFMnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgQm90dGxlICgnICsgY2FydERhdGEucGFja2luZyArICcgQm90dGxlIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnQm90dGxlKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnUEtUJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIFBhY2sgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBQYWNrIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnUGFja2V0KHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnUEZTJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIFN5cmluZ2UgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBTeXJpbmdlIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnU3lyaW5nZShzKSc7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgJ1JQU0xTJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIFJlc3B1bGUgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBSZXNwdWxlIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnUmVzcHVsZShzKSc7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgJ1JPTEwnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgUGFjayAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIFBhY2sgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdQYWNrZXQocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdTQUNIJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIFBhY2sgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBQYWNrIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnUGFja2V0KHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnU0NSVUInOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgUGFjayAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIFBhY2sgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdQYWNrZXQocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdTSEFNUCc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBCb3R0bGUgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBCb3R0bGUgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdCb3R0bGUocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdTTFROJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIEJvdHRsZSAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIEJvdHRsZSBFYWNoKSc7XHJcbiAgLy8gICAgICAgdGhpcy5wYWNrRGV0YWlscy51bml0ID0gJ0JvdHRsZShzKSc7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgJ1NQUlknOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgQm90dGxlICgnICsgY2FydERhdGEucGFja2luZyArICcgQm90dGxlIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnQm90dGxlKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnVFBBU1QnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgUGFzdGUgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBQYXN0ZSBFYWNoKSc7XHJcbiAgLy8gICAgICAgdGhpcy5wYWNrRGV0YWlscy51bml0ID0gJ1Bhc3RlKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnVkFDQyc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBWYWNjaW5lICgnICsgY2FydERhdGEucGFja2luZyArICcgUGFjayBFYWNoKSc7XHJcbiAgLy8gICAgICAgdGhpcy5wYWNrRGV0YWlscy51bml0ID0gJ1Bhc3RlKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnVlRBQic6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBUYWJsZXQgKCcgKyBjYXJ0RGF0YS5wYWNraW5nICsgJyBUYWJsZXQgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdUYWJsZXQocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdXSVBTJzogdGhpcy5wYWNrRGV0YWlscy5wYWNraW5nID0gJ1BhY2tpbmcgOiAxIFdpcGVzICgnICsgY2FydERhdGEucGFja2luZyArICcgV2lwZXMgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdXaXBlKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnVFVMTCc6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBQYWNrICgnICsgY2FydERhdGEucGFja2luZyArICcgUGFjayBFYWNoKSc7XHJcbiAgLy8gICAgICAgdGhpcy5wYWNrRGV0YWlscy51bml0ID0gJ1BhY2tldChzKSc7XHJcbiAgLy8gICAgICAgYnJlYWs7XHJcbiAgLy8gICAgIGNhc2UgJ1RCQUcnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgUGFjayAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIFBhY2sgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdQYWNrZXQocyknO1xyXG4gIC8vICAgICAgIGJyZWFrO1xyXG4gIC8vICAgICBjYXNlICdTWVJORUUnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgUGFjayBTeXJpbmdlICgnICsgY2FydERhdGEucGFja2luZyArICcgUGFjayBTeXJpbmdlIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnUGFja2V0KHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnTlNQUlknOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgQm90dGxlICgnICsgY2FydERhdGEucGFja2luZyArICcgQm90dGxlIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnQm90dGxlKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuICAvLyAgICAgY2FzZSAnUk1TUlAnOiB0aGlzLnBhY2tEZXRhaWxzLnBhY2tpbmcgPSAnUGFja2luZyA6IDEgQm90dGxlICgnICsgY2FydERhdGEucGFja2luZyArICcgQm90dGxlIEVhY2gpJztcclxuICAvLyAgICAgICB0aGlzLnBhY2tEZXRhaWxzLnVuaXQgPSAnQm90dGxlKHMpJztcclxuICAvLyAgICAgICBicmVhaztcclxuXHJcbiAgLy8gICAgIGRlZmF1bHQ6IHRoaXMucGFja0RldGFpbHMucGFja2luZyA9ICdQYWNraW5nIDogMSBzdHJpcCAoJyArIGNhcnREYXRhLnBhY2tpbmcgKyAnIFRhYmxldHMgRWFjaCknO1xyXG4gIC8vICAgICAgIHRoaXMucGFja0RldGFpbHMudW5pdCA9ICdTdHJpcChzKSc7XHJcbiAgLy8gICB9XHJcbiAgLy8gICByZXR1cm4gdGhpcy5wYWNrRGV0YWlscztcclxuICAvLyB9XHJcblxyXG4gIHNldEhvc3ROYW1lRGluYW1pY2FsbHkoaG9zdDpzdHJpbmcpe1xyXG4gICAgbGV0IGRvbWFpbk5hbWUgPSB0aGlzLmRvY3VtZW50LmxvY2F0aW9uWydob3N0bmFtZSddO1xyXG5cclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuSE9TVF9OQU1FLCBob3N0KTtcclxuICAgIGlmKGRvbWFpbk5hbWUhPVwibG9jYWxob3N0XCIgJiYgdGhpcy5jb29raWVzU2VydmljZS5pc0Nvb2tpZUV4cGlyZWQoZG9tYWluTmFtZSkpe1xyXG4gICAgICB0aGlzLmNvb2tpZXNTZXJ2aWNlLnNldENvb2tpZUJ5TmFtZShkb21haW5OYW1lLGhvc3QsMzApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SG9zdE5hbWVEaW5hbWljYWxseSgpe1xyXG4gICAgbGV0IGhvc3QgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkhPU1RfTkFNRSk7XHJcbiAgICBpZih0aGlzLmNvcmVGdW5jdGlvblNlcnZpY2UuaXNOb3RCbGFuayhob3N0KSl7XHJcbiAgICAgIHJldHVybiBob3N0O1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIGxldCBkb21haW5OYW1lID0gdGhpcy5kb2N1bWVudC5sb2NhdGlvblsnaG9zdG5hbWUnXTtcclxuXHJcbiAgICAgIGhvc3QgPSB0aGlzLmNvb2tpZXNTZXJ2aWNlLmdldENvb2tpZUJ5TmFtZShkb21haW5OYW1lKTtcclxuICAgICAgaWYgKGhvc3QgJiYgaG9zdCAhPVwiXCIpIHRoaXMuc2V0SG9zdE5hbWVEaW5hbWljYWxseShob3N0KTtcclxuICAgICAgcmV0dXJuIGhvc3Q7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldExvZ29QYXRoKCl7XHJcbiAgICBsZXQgcHJvamVjdEZvbGRlck5hbWUgPSB0aGlzLmdldEFwcGxpY2F0aW9uVmFsdWVCeUtleSgnZm9sZGVyJylcclxuICAgIHJldHVybiAnYXNzZXRzL2ltZy9sb2dvLycgKyBwcm9qZWN0Rm9sZGVyTmFtZSArICcvJztcclxuICB9XHJcbiAgZ2V0UGFnZVRpdGxlKCl7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRBcHBsaWNhdGlvblZhbHVlQnlLZXkoJ3RpdGxlJyk7XHJcbiAgfVxyXG4gIGdldFZlcmlmeVR5cGUoKXtcclxuICAgIHJldHVybiB0aGlzLmdldEFwcGxpY2F0aW9uVmFsdWVCeUtleSgndmFyaWZ5X21vZGUnKTtcclxuICB9XHJcbiAgZ2V0UGFnZVRobWVtKCl7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRBcHBsaWNhdGlvblZhbHVlQnlLZXkoJ3RoZW1lJyk7XHJcbiAgfVxyXG4gIGdldFRlbXBsYXRlTmFtZSgpe1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QXBwbGljYXRpb25WYWx1ZUJ5S2V5KCd0ZW1wX25hbWUnKTtcclxuICB9XHJcbiAgZ2V0VGVhbU5hbWUoKXtcclxuICAgIHJldHVybiB0aGlzLmdldEFwcGxpY2F0aW9uVmFsdWVCeUtleSgndGVhbW5hbWUnKTtcclxuICB9XHJcblxyXG4gIGdldEJ1Y2tldE5hbWUoKXtcclxuICAgIHJldHVybiB0aGlzLmdldEFwcGxpY2F0aW9uVmFsdWVCeUtleSgnYnVja2V0Jyk7XHJcbiAgfVxyXG4gIGdldEF1dGhlbnRpY2F0aW9uU2V0dGluZygpe1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QXBwbGljYXRpb25WYWx1ZUJ5S2V5KCdhdXRoZW50aWNhdGlvblNldHRpbmdzJyk7XHJcbiAgfVxyXG4gIGdldEFkbWluRW1haWwoKXtcclxuICAgIGxldCBhdXRoZW50aWNhdGlvblNldHRpbmdzOmFueSA9IHRoaXMuZ2V0QXV0aGVudGljYXRpb25TZXR0aW5nKCk7XHJcbiAgICBsZXQgYWRtaW5FbWFpbCA9IFwiXCI7XHJcbiAgICBpZihhdXRoZW50aWNhdGlvblNldHRpbmdzICYmIGF1dGhlbnRpY2F0aW9uU2V0dGluZ3NbJ2FkbWluRW1haWxJZCddICYmIGF1dGhlbnRpY2F0aW9uU2V0dGluZ3NbJ2FkbWluRW1haWxJZCddICE9IFwiXCIpe1xyXG4gICAgICBhZG1pbkVtYWlsID0gYXV0aGVudGljYXRpb25TZXR0aW5nc1snYWRtaW5FbWFpbElkJ107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYWRtaW5FbWFpbDtcclxuICB9XHJcbiAgZ2V0QXBwbGljYXRpb25WYWx1ZUJ5S2V5KGtleTphbnkpe1xyXG4gICAgbGV0IHZhbHVlOmFueSA9IFwiXCI7XHJcbiAgICBsZXQgYXBwbGljYXRpb25TZXR0aW5nID0gdGhpcy5nZXRBcHBsaWNhdGlvblNldHRpbmcoKTtcclxuICAgIGlmKGFwcGxpY2F0aW9uU2V0dGluZyAmJiBhcHBsaWNhdGlvblNldHRpbmdba2V5XSAhPSB1bmRlZmluZWQgJiYgYXBwbGljYXRpb25TZXR0aW5nW2tleV0gIT0gbnVsbCAmJiBhcHBsaWNhdGlvblNldHRpbmdba2V5XSAhPSBcIlwiKXtcclxuICAgICAgdmFsdWUgPSBhcHBsaWNhdGlvblNldHRpbmdba2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbiAgLy8gZm9yIEFwcFxyXG4gIHNldENsaWVudE5BbWUobmFtZTpzdHJpbmcpe1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5DTElFTlRfTkFNRSxuYW1lKTtcclxuICB9XHJcbiAgZ2V0Q2xpZW50TmFtZSgpe1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ0xJRU5UX05BTUUpO1xyXG4gIH1cclxuICByZW1vdmVLZXlGcm9tU3RvcmFnZShrZXk6c3RyaW5nKXtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XHJcbiAgfVxyXG4gIGdldFBsYXRmb3JtKCl7XHJcbiAgICByZXR1cm4gdGhpcy5lbnYucGxhdGVmb3JtTmFtZTtcclxuICB9XHJcbiAgZ2V0Q2xpZW50Q29kZUVudmlvcm1lbnQoKXtcclxuICAgIHJldHVybiB0aGlzLmVudjtcclxuICB9XHJcbiAgY2hlY2tQbGF0Rm9ybSgpe1xyXG4gICAgbGV0IHBsYXRGb3JtID0gJ3dlYic7XHJcbiAgICBsZXQgcGxhdEZvcm1OYW1lID0gdGhpcy5nZXRQbGF0Zm9ybSgpO1xyXG4gICAgaWYocGxhdEZvcm1OYW1lICYmIHBsYXRGb3JtTmFtZSAhPSBcIlwiICYmIFBMQVRGT1JNX05BTUUuaW5jbHVkZXMocGxhdEZvcm1OYW1lKSl7XHJcbiAgICAgIHBsYXRGb3JtID0gJ21vYmlsZSc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGxhdEZvcm07XHJcbiAgfVxyXG5cclxuICBnZXREZWZhdWx0TnVtT2ZJdGVtKCkge1xyXG4gICAgbGV0IGl0ZW1OdW1PZkdyaWQgPSBDb21tb24uSVRFTV9OVU1fT0ZfR1JJRDtcclxuICAgIGxldCBkZWZhdWx0U2V0dGluZ3MgPSB0aGlzLmdldEFwcGxpY2F0aW9uRGVmYXVsdFNldHRpbmdzKCk7XHJcbiAgICBpZihkZWZhdWx0U2V0dGluZ3MgJiYgZGVmYXVsdFNldHRpbmdzLmRlZmF1bHRJdGVtTm9PZkdyaWQgJiYgZGVmYXVsdFNldHRpbmdzLmRlZmF1bHRJdGVtTm9PZkdyaWQgIT0gXCJcIiAmJiBkZWZhdWx0U2V0dGluZ3MuZGVmYXVsdEl0ZW1Ob09mR3JpZCA+IDApIHtcclxuICAgICAgaXRlbU51bU9mR3JpZCA9IGRlZmF1bHRTZXR0aW5ncy5kZWZhdWx0SXRlbU5vT2ZHcmlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGl0ZW1OdW1PZkdyaWRcclxuICB9XHJcblxyXG4gIGdldEFwcGxpY2F0aW9uRGVmYXVsdFNldHRpbmdzKCl7XHJcbiAgICBsZXQgYXBwbGljYXRpb25TZXR0aW5nID0gdGhpcy5nZXRBcHBsaWNhdGlvblNldHRpbmcoKTtcclxuICAgIHJldHVybiBhcHBsaWNhdGlvblNldHRpbmcuZGVmYXVsdEFwcGxpY2F0aW9uU2V0dGluZ3M7XHJcbiAgfVxyXG4gIGdldEFwcGxpY2F0aW9uQXV0aGVudGljYXRpb25TZXR0aW5ncygpe1xyXG4gICAgbGV0IGFwcGxpY2F0aW9uU2V0dGluZyA9IHRoaXMuZ2V0QXBwbGljYXRpb25TZXR0aW5nKCk7XHJcbiAgICBpZihhcHBsaWNhdGlvblNldHRpbmcgJiYgYXBwbGljYXRpb25TZXR0aW5nLmF1dGhlbnRpY2F0aW9uU2V0dGluZ3Mpe1xyXG4gICAgICByZXR1cm4gYXBwbGljYXRpb25TZXR0aW5nLmF1dGhlbnRpY2F0aW9uU2V0dGluZ3M7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBnZXRUd29GYWN0b3JBdXRoZW50aWNhdGlvblR5cGUoKXtcclxuICAgIGxldCBhdXRoZW50aWNhdGlvblNldHRpbmcgPSB0aGlzLmdldEFwcGxpY2F0aW9uQXV0aGVudGljYXRpb25TZXR0aW5ncygpO1xyXG4gICAgaWYoYXV0aGVudGljYXRpb25TZXR0aW5nICYmIGF1dGhlbnRpY2F0aW9uU2V0dGluZy50d29GYWN0b3JBdXRoZW50aWNhdGlvbiAmJiBhdXRoZW50aWNhdGlvblNldHRpbmcudHdvRmFjdG9yQXV0aGVudGljYXRpb25UeXBlKXtcclxuICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0aW9uU2V0dGluZy50d29GYWN0b3JBdXRoZW50aWNhdGlvblR5cGU7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RGVmYXVsdFNlYXJjaE9wZXJhdG9yKCkge1xyXG4gICAgbGV0IGRlZmF1bHRTZWFyY2hPcGVyYXRvciA9IENvbW1vbi5ERUZBVUxUX09QRVJBVE9SO1xyXG4gICAgbGV0IGRlZmF1bHRTZXR0aW5ncyA9IHRoaXMuZ2V0QXBwbGljYXRpb25EZWZhdWx0U2V0dGluZ3MoKTtcclxuICAgIGlmKGRlZmF1bHRTZXR0aW5ncyAmJiBkZWZhdWx0U2V0dGluZ3MuZGVmYXVsdFNlYXJjaE9wZXJhdG9ySW5HcmlkICYmIGRlZmF1bHRTZXR0aW5ncy5kZWZhdWx0U2VhcmNoT3BlcmF0b3JJbkdyaWQgIT0gXCJcIikge1xyXG4gICAgICBkZWZhdWx0U2VhcmNoT3BlcmF0b3IgPSBkZWZhdWx0U2V0dGluZ3MuZGVmYXVsdFNlYXJjaE9wZXJhdG9ySW5HcmlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlZmF1bHRTZWFyY2hPcGVyYXRvcjtcclxuICB9XHJcbiAgc3RvcmVBbGxUZW1wbGF0ZShkYXRhOmFueSl7XHJcbiAgICAvLyBsZXQgZW5jcnlwdERhdGEgPSB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRSZXF1ZXN0KGRhdGEpO1xyXG4gICAgLy8gY29uc29sZS5sb2coZW5jcnlwdERhdGEpO1xyXG4gICAgbGV0IG1vZGlmaWVkTGlzdCA9IHRoaXMubW9kaWZ5VGVtcGxhdGVMaXN0KGRhdGEpO1xyXG4gICAgaWYobW9kaWZpZWRMaXN0KXtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5BTExfVEVNUExBVEUsSlNPTi5zdHJpbmdpZnkobW9kaWZpZWRMaXN0LnRlbXBsYXRMaXN0KSk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuVEVNUExBVEVfSU5ERVgsSlNPTi5zdHJpbmdpZnkobW9kaWZpZWRMaXN0LnRlbXBsYXRlSW5kZXhMaXN0KSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG1vZGlmeVRlbXBsYXRlTGlzdChvYmo6YW55KXtcclxuICAgIGxldCBsaXN0OmFueSA9IHt9O1xyXG4gICAgbGV0IGluZGV4TGlzdDphbnkgPSBbXTtcclxuICAgIGxldCBvbGRMaXN0ID0gdGhpcy5nZXRBbGxUZW1wbGF0ZUxpc3QoKTtcclxuICAgIGxldCBhbGxJbmRleExpc3QgPSBKU09OLnBhcnNlKDxhbnk+bG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5URU1QTEFURV9JTkRFWCkpO1xyXG4gICAgaWYoYWxsSW5kZXhMaXN0ICYmIGFsbEluZGV4TGlzdC5sZW5ndGggPiAwKXtcclxuICAgICAgaW5kZXhMaXN0ID0gYWxsSW5kZXhMaXN0O1xyXG4gICAgfVxyXG4gICAgaWYob2xkTGlzdCAmJiBPYmplY3Qua2V5cyhvbGRMaXN0KS5sZW5ndGggPiAwKXtcclxuICAgICAgbGV0IHNpemU6bnVtYmVyID0gdGhpcy5jb3JlRnVuY3Rpb25TZXJ2aWNlLmdldEpzb25TaXplSW5LaWxvYnl0ZShvbGRMaXN0KTtcclxuICAgICAgLy8gY29uc29sZS5sb2coc2l6ZSk7XHJcbiAgICAgIGlmKHNpemUgPj0gMTAyNCl7XHJcbiAgICAgICAgbGV0IGtleU5hbWUgPSBpbmRleExpc3RbMF07XHJcbiAgICAgICAgZGVsZXRlIChvbGRMaXN0W2tleU5hbWVdKTtcclxuICAgICAgICBpbmRleExpc3Quc3BsaWNlKDAsMSk7XHJcbiAgICAgIH1cclxuICAgICAgbGlzdCA9IG9sZExpc3Q7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgbGlzdCA9IHt9O1xyXG4gICAgfVxyXG4gICAgaWYob2JqICYmIG9iail7XHJcbiAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGxpc3Rba2V5XSA9IG9ialtrZXldO1xyXG4gICAgICAgIGluZGV4TGlzdC5wdXNoKGtleSk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBsZXQgcmVzcG9uY2UgPSB7XHJcbiAgICAgIHRlbXBsYXRMaXN0IDogbGlzdCxcclxuICAgICAgdGVtcGxhdGVJbmRleExpc3Q6aW5kZXhMaXN0XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzcG9uY2U7XHJcbiAgfVxyXG4gIGdldEFsbFRlbXBsYXRlTGlzdCgpe1xyXG4gICAgLy9sZXQgYWxsVGVtcGxhdGUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkFMTF9URU1QTEFURSk7XHJcbiAgICBjb25zdCBvYmo6YW55ID0gSlNPTi5wYXJzZSg8YW55PmxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQUxMX1RFTVBMQVRFKSk7XHJcbiAgICAvL3JldHVybiB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHRSZXF1ZXN0KGFsbFRlbXBsYXRlKTtcclxuICAgIHJldHVybiBvYmo7XHJcbiAgfVxyXG4gIGdldFRlbXBsYXRlKHRlbXBOYW1lOnN0cmluZyxtb2R1bGVOYW1lOnN0cmluZyl7XHJcbiAgICBsZXQgdGVtcGxhdGVMaXN0OmFueSA9IHRoaXMuZ2V0QWxsVGVtcGxhdGVMaXN0KCk7XHJcbiAgICBsZXQgbmFtZSA9IG1vZHVsZU5hbWUrXCJfXCIrdGVtcE5hbWU7XHJcbiAgICBpZih0ZW1wbGF0ZUxpc3QgJiYgdGVtcGxhdGVMaXN0W25hbWVdKXtcclxuICAgICAgcmV0dXJuIHRlbXBsYXRlTGlzdFtuYW1lXTtcclxuICAgIH1lbHNle1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgU2V0VGFiQ291bnRzKHRhYkNvdW50czogYW55KSB7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLlRBQl9DT1VOVFMsIEpTT04uc3RyaW5naWZ5KHRhYkNvdW50cykpO1xyXG4gIH1cclxuICBHZXRUYWJDb3VudHMoKSB7XHJcbiAgICBsZXQgY291bnRzID0gSlNPTi5wYXJzZSg8YW55PmxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuVEFCX0NPVU5UUykpO1xyXG4gICAgaWYoY291bnRzKXtcclxuICAgICAgcmV0dXJuIGNvdW50cztcclxuICAgIH1lbHNle1xyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
547
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zdG9yYWdlL3N0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBa0QsR0FBRyxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7QUFPM0MsTUFBTSxPQUFPLGNBQWM7SUFxQ3pCLFlBQ1UsSUFBZ0IsRUFDRCxHQUFPLEVBQ0osUUFBa0IsRUFDcEMsaUJBQW1DLEVBQ25DLG1CQUF1QyxFQUN2QyxjQUE2QjtRQUw3QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ0QsUUFBRyxHQUFILEdBQUcsQ0FBSTtRQUNKLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBMUN2QyxhQUFRLEdBQVcsVUFBVSxDQUFDO1FBQzlCLGlCQUFZLEdBQVcsY0FBYyxDQUFDO1FBQ3RDLGtCQUFhLEdBQVcsZUFBZSxDQUFDO1FBQ3hDLHVCQUFrQixHQUFVLG9CQUFvQixDQUFDO1FBQ2pELGNBQVMsR0FBTSxXQUFXLENBQUM7UUFDM0Is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QUFJO1lBQ0gsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFDRCxZQUFZLENBQUMsU0FBYztRQUN6QixZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxZQUFZO1FBQ1YsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBTSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLElBQUcsTUFBTSxFQUFDO1lBQ1IsT0FBTyxNQUFNLENBQUM7U0FDZjthQUFJO1lBQ0gsT0FBTyxFQUFFLENBQUM7U0FDWDtJQUNILENBQUM7OzRHQTloQlUsY0FBYyw0Q0F1Q2YsS0FBSyxhQUNMLFFBQVE7Z0hBeENQLGNBQWMsY0FGYixNQUFNOzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkF3Q0ksTUFBTTsyQkFBQyxLQUFLOzswQkFDWixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3JlRnVuY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi8uLi9jb21tb24tdXRpbHMvY29yZS1mdW5jdGlvbi9jb3JlLWZ1bmN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4vLi4vZW5jcnlwdGlvbi9lbmNyeXB0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCB0YXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3RvcmFnZVRva2VuU3RhdHVzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2VudW1zL3N0b3JhZ2UtdG9rZW4tc3RhdHVzLmVudW0nO1xyXG5pbXBvcnQgeyBQTEFURk9STV9OQU1FIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3BsYXRmb3JtJztcclxuaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2VudW1zL2NvbW1vbi5lbnVtJztcclxuaW1wb3J0IHsgQ29va2llc1NlcnZpY2UgfSBmcm9tICcuL2Nvb2tpZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcblxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RvcmFnZVNlcnZpY2Uge1xyXG4gIElEX1RPS0VOOiBzdHJpbmcgPSAnSURfVE9LRU4nO1xyXG4gIEFDQ0VTU19UT0tFTjogc3RyaW5nID0gJ0FDQ0VTU19UT0tFTic7XHJcbiAgUkVGUkVTSF9UT0tFTjogc3RyaW5nID0gJ1JFRlJFU0hfVE9LRU4nO1xyXG4gIFJFU0VUX1BBU1NfU0VTU0lPTjpzdHJpbmcgPSAnUkVTRVRfUEFTU19TRVNTSU9OJztcclxuICBFWFBJUllfSU46YW55PSAnRVhQSVJZX0lOJztcclxuICBVU0VSX0tFWTogc3RyaW5nID0gJ1VTRVInO1xyXG4gIFJPTEU6c3RyaW5nID0gXCJST0xFXCI7XHJcbiAgQUNUSVZFX01FTlU6IHN0cmluZyA9ICdNRU5VJztcclxuICBNRU5VX1RZUEU6IHN0cmluZyA9ICdNRU5VX1RZUEUnO1xyXG4gIElEX1RPS0VOX0VYUElSWV9USU1FOiBzdHJpbmcgPSAnSURfVE9LRU5fRVhQSVJZX1RJTUUnO1xyXG4gIFJFRlJFU0hfVE9LRU5fRVhQSVJZX1RJTUU6c3RyaW5nPSdSRUZSRVNIX1RPS0VOX0VYUElSWV9USU1FJztcclxuICB1c2VySW5mbzogYW55O1xyXG4gIGxvZzogYW55O1xyXG4gIGFnZTphbnk9MzU0MDAwMDsgLy81OSBtaW51dHNcclxuICByZWZyZXNoVG9rZW5BZ2U6YW55PTI1MDU2MDAwMDAgLy9yZWZyZXNoIHRva2VuIGFnZSAyOSBkYXlzXHJcbiAgcGFja0RldGFpbHM6IGFueSA9IHt9O1xyXG5cclxuICBIT1NUX05BTUUgOiBzdHJpbmcgPSAnSE9TVF9OQU1FJztcclxuICBQUk9KRUNUX0ZPTERFUl9OQU1FOiBzdHJpbmcgPSAnUFJPSkVDVF9GT0xERVJfTkFNRSc7XHJcbiAgVEVNUF9OQU1FOnN0cmluZyA9IFwiVEVNUF9OQU1FXCI7XHJcbiAgVEVNUF9USEVNRTpzdHJpbmcgPSBcIlRFTVBfVEhFTUVcIjtcclxuICBQQUdFX1RJVExFOnN0cmluZyA9IFwiUEFHRV9USVRMRVwiO1xyXG4gIFZFUklGWV9UWVBFOnN0cmluZyA9IFwiVkVSSUZZX1RZUEVcIjtcclxuICBNT0RVTEU6c3RyaW5nID0gXCJNT0RVTEVcIjtcclxuICBURUFNX05BTUU6c3RyaW5nID0gXCJURUFNX05BTUVcIjtcclxuICBVU0VSX1BSRUZFUkVOQ0U6YW55O1xyXG4gIFJFRElSRUNUX1VSTDpzdHJpbmcgPSBcIlJFRElSRUNUX1VSTFwiO1xyXG4gIENISUxEX1dJTkRPV19VUkw6c3RyaW5nID0gXCJDSElMRF9XSU5ET1dfVVJMXCI7XHJcbiAgTU9ESUZZX01PRFVMRVM6YW55ID0gJ01PRElGWV9NT0RVTEVTJztcclxuICBhcHBOYW1lOmFueTtcclxuICBDTElFTlRfTkFNRTphbnkgPSAnQ0xJRU5UX05BTUUnO1xyXG4gIEFMTF9URU1QTEFURTphbnkgPSAnQUxMX1RFTVBMQVRFJztcclxuICBURU1QTEFURV9JTkRFWDphbnkgPSBcIlRFTVBMQVRFX0lOREVYXCI7XHJcbiAgVEFCX0NPVU5UUzphbnk9XCJUQUJfQ09VTlRTXCI7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIEBJbmplY3QoJ2VudicpIHByaXZhdGUgZW52OmFueSxcclxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxyXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTpFbmNyeXB0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZUZ1bmN0aW9uU2VydmljZTpDb3JlRnVuY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb29raWVzU2VydmljZTpDb29raWVzU2VydmljZVxyXG4gICAgKSB7IH1cclxuXHJcbiAgbG9hZCgpOiBPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5lbnY7XHJcbiAgfVxyXG4gIHNldEFwcE5hbWUoYXBwbmFtZTpzdHJpbmcpe1xyXG4gICAgdGhpcy5hcHBOYW1lID0gYXBwbmFtZTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiQXBwTmFtZVwiLCBKU09OLnN0cmluZ2lmeShhcHBuYW1lKSk7XHJcbn1cclxuICBzZXRNb2R1bGUobW9kdWxlOnN0cmluZyl7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFwiTU9EVUxFXCIsbW9kdWxlKTtcclxuICB9XHJcbiAgZ2V0TW9kdWxlKCl7XHJcbiAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnTU9EVUxFJyk7XHJcbiAgfVxyXG4gIHNldENoaWxkV2luZG93VXJsKHVybDpzdHJpbmcpe1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJDSElMRF9XSU5ET1dfVVJMXCIsdXJsKTtcclxuICB9XHJcbiAgZ2V0Q2hpbGRXaW5kb3dVcmwoKXtcclxuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQ0hJTERfV0lORE9XX1VSTCcpO1xyXG4gIH1cclxuICBzZXRSZWRpcmVjdFVybCh1cmw6c3RyaW5nKXtcclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXCJSRURJUkVDVF9VUkxcIix1cmwpO1xyXG4gIH1cclxuICBnZXRSZWRpcmVjdFVybCgpe1xyXG4gICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ1JFRElSRUNUX1VSTCcpO1xyXG4gIH1cclxuICBzZXRVc2VyUHJlZmVyZW5jZSh1c2VyX3ByZWZlcmVuY2U6YW55KXtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiVVNFUl9QUkVGRVJFTkNFXCIsSlNPTi5zdHJpbmdpZnkodXNlcl9wcmVmZXJlbmNlKSk7XHJcbiAgfVxyXG4gIGdldFVzZXJQcmVmZXJlbmNlKCl7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZSg8YW55PmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdVU0VSX1BSRUZFUkVOQ0UnKSk7XHJcbiAgfVxyXG5cclxuICBzZXRUaGVtZVNldHRpbmcoc2V0dGluZ09iajphbnkpe1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJUSEVNRV9TRVRUSU5HXCIsSlNPTi5zdHJpbmdpZnkoc2V0dGluZ09iaikpO1xyXG4gIH1cclxuICBnZXRUaGVtZVNldHRpbmcoKXtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKDxhbnk+bG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1RIRU1FX1NFVFRJTkcnKSk7XHJcbiAgfVxyXG5cclxuICBzZXRBcHBsaWNhdGlvblNldHRpbmcoYXBwbGljYXRpb25TZXR0aW5nOmFueSl7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIkFQUExJQ0FUSU9OX1NFVFRJTkdcIixKU09OLnN0cmluZ2lmeShhcHBsaWNhdGlvblNldHRpbmcpKTtcclxuICB9XHJcbiAgZ2V0QXBwbGljYXRpb25TZXR0aW5nKCl7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZSg8YW55PmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdBUFBMSUNBVElPTl9TRVRUSU5HJykpO1xyXG4gIH1cclxuXHJcbiAgc2V0QXBwSWQoYXBwSWQ6c3RyaW5nKXtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcHBJZCcsIGFwcElkKTtcclxuICB9XHJcblxyXG4gIGdldEFwcElkKCl7XHJcbiAgICBjb25zdCB1c2VyID0gdGhpcy5HZXRVc2VySW5mbygpO1xyXG4gICAgaWYodXNlciAmJiB1c2VyLmFwcElkICYmIHVzZXIuYXBwSWQgIT0gbnVsbCl7XHJcbiAgICAgIHJldHVybiB1c2VyLmFwcElkO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYXBwSWQnKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RXhwaXJlc0luKGV4cGlyeTogYW55KXtcclxuICAgIGxldCBleHBpcnlUaW1lID0gKGV4cGlyeSAtIDMwMCkqMTAwMFxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5FWFBJUllfSU4sIEpTT04uc3RyaW5naWZ5KGV4cGlyeVRpbWUpKTtcclxuICAgIHRoaXMuc2V0SWRUb2tlbkV4cGlyeSgpO1xyXG4gIH1cclxuICBnZXRFeHBpcmVzSW4oKXtcclxuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkVYUElSWV9JTik7XHJcbiAgfVxyXG4gIFNldElkVG9rZW4odG9rZW46IGFueSkge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5JRF9UT0tFTiwgSlNPTi5zdHJpbmdpZnkodG9rZW4pKTtcclxuICB9XHJcbiAgR2V0SWRUb2tlbigpIHtcclxuICAgIGxldCBvYmogPSBKU09OLnBhcnNlKDxhbnk+bG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5JRF9UT0tFTikpO1xyXG4gICAgaWYob2JqICYmIG9iaiAhPSBudWxsICl7XHJcbiAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIElzSnNvblN0cmluZyhzdHI6YW55KSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgICBKU09OLnBhcnNlKHN0cik7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbiAgU2V0QWNjZXNzVG9rZW4odG9rZW46IGFueSkge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5BQ0NFU1NfVE9LRU4sIEpTT04uc3RyaW5naWZ5KHRva2VuKSk7XHJcbiAgfVxyXG4gIEdldEFjY2Vzc1Rva2VuKCkge1xyXG4gICAgbGV0IG9iaiA9IEpTT04ucGFyc2UoPGFueT5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkFDQ0VTU19UT0tFTikpO1xyXG4gICAgaWYob2JqICYmIG9iaiAhPSBudWxsKXtcclxuICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgfVxyXG4gIH1cclxuICBTZXRSZWZyZXNoVG9rZW4odG9rZW46IHN0cmluZykge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5SRUZSRVNIX1RPS0VOLCB0b2tlbik7XHJcbiAgICB0aGlzLnNldFJlZnJlc2hUb2tlbkV4cGlyeSgpO1xyXG4gIH1cclxuICBHZXRSZWZyZXNoVG9rZW4oKSB7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5SRUZSRVNIX1RPS0VOKTtcclxuICB9XHJcbiAgR2V0SWRUb2tlblN0YXR1cygpe1xyXG4gICAgbGV0IGV4cGlyZWQgPSAwO1xyXG4gICAgbGV0IGV4cGlyZVRpbWUgPSBOdW1iZXIobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5JRF9UT0tFTl9FWFBJUllfVElNRSkpO1xyXG4gICAgbGV0IGN1cnJlbnRUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgIGxldCBleHBpcmVzSW4yNEhvdXJzID0gMDtcclxuXHJcblx0aWYoZXhwaXJlVGltZSA+IGN1cnJlbnRUaW1lKVxyXG4gICAgICBleHBpcmVzSW4yNEhvdXJzID0gICgoKGV4cGlyZVRpbWUtY3VycmVudFRpbWUpLzEwMDApLzM2MDApIDtcclxuXHJcblx0aWYoY3VycmVudFRpbWUgPiBleHBpcmVUaW1lKXtcclxuICAgICAgaWYoZXhwaXJlVGltZSA+IDApe1xyXG4gICAgICAgIHJldHVybiBTdG9yYWdlVG9rZW5TdGF0dXMuSURfVE9LRU5fRVhQSVJFRDsgIC8vIGFwcENvbnN0YW50LlRPS0VOX1NUQVRVUy5JRF9UT0tFTl9FWFBJUkVEOyAvLyBub3RpZnksIGR1ZSB0byBleHBpcmVkXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuICBTdG9yYWdlVG9rZW5TdGF0dXMuSURfVE9LRU5fTk9UX0NSRUFURUQ7IC8vYXBwQ29uc3RhbnQuVE9LRU5fU1RBVFVTLklEX1RPS0VOX05PVF9DUkVBVEVEOyAgLy8gZmlyc3QgdGltZSBsb2FkaW5nIHNvIG5vIG5vdGlmeVxyXG4gICAgfSBlbHNlIGlmKGV4cGlyZXNJbjI0SG91cnMgPiAyNCl7XHJcblx0XHRyZXR1cm4gU3RvcmFnZVRva2VuU3RhdHVzLklEX1RPS0VOX0VYUElSRUQgLy9hcHBDb25zdGFudC5UT0tFTl9TVEFUVVMuSURfVE9LRU5fRVhQSVJFRDsgLy8gbm90aWZ5LCBkdWUgdG8gZXhwaXJlZFxyXG5cdH1cclxuXHJcbiAgICByZXR1cm4gU3RvcmFnZVRva2VuU3RhdHVzLklEX1RPS0VOX0FDVElWRTsgLy9hcHBDb25zdGFudC5UT0tFTl9TVEFUVVMuSURfVE9LRU5fQUNUSVZFOyAvLyBub3QgZXhwaXJlZFxyXG4gIH1cclxuXHJcblxyXG5cclxuICBHZXRSZWZyZXNoVG9rZW5TdGF0dXMoKXtcclxuICAgIGxldCBleHBpcmVkID0gMDtcclxuICAgIGxldCBleHBpcmVUaW1lID0gTnVtYmVyKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuUkVGUkVTSF9UT0tFTl9FWFBJUllfVElNRSkpO1xyXG4gICAgbGV0IGN1cnJlbnRUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgIGlmKGN1cnJlbnRUaW1lID4gZXhwaXJlVGltZSl7XHJcbiAgICAgIGlmKGV4cGlyZVRpbWUgPiAwKXtcclxuICAgICAgICByZXR1cm4gU3RvcmFnZVRva2VuU3RhdHVzLlJFRlJFU0hfVE9LRU5fRVhQSVJFRDsgLy8gYXBwQ29uc3RhbnQuVE9LRU5fU1RBVFVTLlJFRlJFU0hfVE9LRU5fRVhQSVJFRDsgLy8gbm90aWZ5LCBkdWUgdG8gZXhwaXJlZFxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBTdG9yYWdlVG9rZW5TdGF0dXMuUkVGUkVTSF9UT0tFTl9OT1RfQ1JFQVRFRDsgLy8gYXBwQ29uc3RhbnQuVE9LRU5fU1RBVFVTLlJFRlJFU0hfVE9LRU5fTk9UX0NSRUFURUQ7ICAvLyBmaXJzdCB0aW1lIGxvYWRpbmcgc28gbm8gbm90aWZ5XHJcbiAgICB9XHJcbiAgICByZXR1cm4gU3RvcmFnZVRva2VuU3RhdHVzLlJFRlJFU0hfVE9LRU5fQUNUSVZFOyAvLyBhcHBDb25zdGFudC5UT0tFTl9TVEFUVVMuUkVGUkVTSF9UT0tFTl9BQ1RJVkU7IC8vIG5vdCBleHBpcmVkXHJcbiAgfVxyXG5cclxuICBTZXRVc2VySW5mbyh1c2VyOiBhbnkpIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuVVNFUl9LRVksIEpTT04uc3RyaW5naWZ5KHVzZXIpKTtcclxuICB9XHJcbiAgR2V0VXNlckluZm8oKSB7XHJcbiAgICBjb25zdCBvYmo6YW55ID0gSlNPTi5wYXJzZSg8YW55PmxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuVVNFUl9LRVkpKTtcclxuICAgIGlmKG9iaiAmJiBvYmoudXNlcil7XHJcbiAgICAgIHJldHVybiBvYmoudXNlclxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICB9XHJcbiAgR2V0Um9sZUxpc3QoKXtcclxuICAgIGNvbnN0IG9iajphbnkgPSBKU09OLnBhcnNlKDxhbnk+bG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5VU0VSX0tFWSkpO1xyXG4gICAgaWYob2JqICYmIG9iai5yb2xsTGlzdCl7XHJcbiAgICAgIHJldHVybiBvYmoucm9sbExpc3RcclxuICAgIH1lbHNle1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldEFjdGl2ZVJvbGUocm9sZTphbnkpe1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5ST0xFLCBKU09OLnN0cmluZ2lmeShyb2xlKSk7XHJcbiAgfVxyXG4gIGdldEFjdGl2ZVJvbGUoKXtcclxuICAgIGNvbnN0IG9iajphbnkgPSBKU09OLnBhcnNlKDxhbnk+bG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5ST0xFKSk7XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuICBHZXRVc2VyUmVmZXJlbmNlKCkge1xyXG4gICAgbGV0IHVzZXIgPSB0aGlzLkdldFVzZXJJbmZvKCk7XHJcbiAgICBsZXQgdXNlclJlZjphbnkgPSB7fTtcclxuICAgIHVzZXJSZWZbJ19pZCddID0gdXNlclsnX2lkJ107XHJcbiAgICB1c2VyUmVmWyduYW1lJ10gPSB1c2VyWyduYW1lJ107XHJcbiAgICByZXR1cm4gdXNlclJlZjtcclxuICB9XHJcbiAgR2V0UGVybWlzc2lvbigpIHtcclxuICAgIGNvbnN0IG9iaiA9IEpTT04ucGFyc2UoPGFueT5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlVTRVJfS0VZKSk7XHJcbiAgICBpZihvYmogJiYgb2JqLnBlcm1pc3Npb24pe1xyXG4gICAgICByZXR1cm4gb2JqLnBlcm1pc3Npb25cclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEdldE1vZHVsZXMoKXtcclxuICAgIGNvbnN0IG9iaiA9IEpTT04ucGFyc2UoPGFueT5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlVTRVJfS0VZKSk7XHJcbiAgICBpZihvYmogJiYgb2JqLm1vZHVsZXMpe1xyXG4gICAgICByZXR1cm4gb2JqLm1vZHVsZXNcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gU2V0TW9kaWZ5TW9kdWxlcyhtb2R1bGVzOmFueSl7XHJcbiAgLy8gICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLk1PRElGWV9NT0RVTEVTLEpTT04uc3RyaW5naWZ5KG1vZHVsZXMpKTtcclxuICAvLyB9XHJcbiAgLy8gR2V0TW9kaWZ5TW9kdWxlcygpe1xyXG4gIC8vICAgcmV0dXJuIEpTT04ucGFyc2UoPGFueT5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLk1PRElGWV9NT0RVTEVTKSk7XHJcbiAgLy8gfVxyXG4gIEdldE1lbnVUeXBlKCl7XHJcbiAgICBjb25zdCBtZW51X1R5cGUgPSB0aGlzLmdldEFwcGxpY2F0aW9uVmFsdWVCeUtleSgnbWVudV90eXBlJyk7XHJcbiAgICBpZihtZW51X1R5cGUpe1xyXG4gICAgICAgIHJldHVybiBtZW51X1R5cGU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0VXNlckxvZygpIHtcclxuICAgIGNvbnN0IHVzZXIgPSBKU09OLnBhcnNlKDxhbnk+bG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5VU0VSX0tFWSkpO1xyXG4gICAgaWYodXNlciAmJiB1c2VyICE9IG51bGwgJiYgdXNlciAhPSB1bmRlZmluZWQgJiYgdXNlci51c2VyKXtcclxuICAgICAgdGhpcy51c2VySW5mbyA9IHVzZXIudXNlcjtcclxuICAgICAgdGhpcy5sb2cgPSB7IHVzZXJJZDogdGhpcy51c2VySW5mby5lbWFpbCwgYXBwSWQ6IHRoaXMuZ2V0QXBwSWQoKSwgcmVmQ29kZTogdGhpcy51c2VySW5mby5yZWZDb2RlIH07XHJcbiAgICAgIHJldHVybiB0aGlzLmxvZztcclxuICAgIH1lbHNle1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgU2V0QWN0aXZlTWVudShtZW51OiBhbnkpIHtcclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5BQ1RJVkVfTUVOVSwgSlNPTi5zdHJpbmdpZnkobWVudSkpO1xyXG4gIH1cclxuICBHZXRBY3RpdmVNZW51KCkge1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoPGFueT5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuQUNUSVZFX01FTlUpKTtcclxuICB9XHJcbiAgZ2V0UmVmQ29kZSgpIHtcclxuICAgIGNvbnN0IHVzZXJpbmZvID0gdGhpcy5HZXRVc2VySW5mbygpO1xyXG4gICAgaWYodXNlcmluZm8gJiYgdXNlcmluZm8ucmVmQ29kZSl7XHJcbiAgICAgIHJldHVybiB1c2VyaW5mby5yZWZDb2RlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGdldFVzZXJBcHBJZCgpe1xyXG4gICAgcmV0dXJuIHRoaXMudXNlckluZm8uYXBwSWQ7XHJcbiAgfVxyXG4gIHJlbW92ZURhdGFGb3JtU3RvcmFnZShhbGw/OnN0cmluZykge1xyXG4gICAgbGV0IGRvTm90Q2xlYXJDYWNoZTphbnkgPSBbXTtcclxuICAgIGlmKGFsbCAhPSBcImFsbFwiKXtcclxuICAgICAgaWYodGhpcy5jaGVja1BsYXRGb3JtKCkgPT0gJ21vYmlsZScpe1xyXG4gICAgICAgIGxldCBjbGllbnRDb2RlID0gdGhpcy5nZXRDbGllbnROYW1lKCk7XHJcbiAgICAgICAgaWYoY2xpZW50Q29kZSAmJiBjbGllbnRDb2RlICE9ICcnKXtcclxuICAgICAgICAgIGxldCBvYmplY3Q6YW55ID0ge307XHJcbiAgICAgICAgICBvYmplY3RbJ2tleSddID0gdGhpcy5DTElFTlRfTkFNRTtcclxuICAgICAgICAgIG9iamVjdFtcInZhbHVlXCJdID0gY2xpZW50Q29kZTtcclxuICAgICAgICAgIG9iamVjdFsndHlwZSddID0gJ2xvY2Fsc3RvcmFnZSdcclxuICAgICAgICAgIGRvTm90Q2xlYXJDYWNoZS5wdXNoKG9iamVjdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcclxuICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XHJcbiAgICBpZihkb05vdENsZWFyQ2FjaGUgJiYgZG9Ob3RDbGVhckNhY2hlLmxlbmd0aCA+IDApe1xyXG4gICAgICBkb05vdENsZWFyQ2FjaGUuZm9yRWFjaCgob2JqOmFueSkgPT4ge1xyXG4gICAgICAgIGlmKG9iaiAmJiBvYmoudHlwZSA9PSAnbG9jYWxzdG9yYWdlJyl7XHJcbiAgICAgICAgICBsZXQga2V5ID0gb2JqWydrZXknXTtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IG9ialsndmFsdWUnXTtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSx2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0SWRUb2tlbkV4cGlyeSgpe1xyXG4gICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgIGNvbnN0IGV4cGlyeSA9IE51bWJlcih0aGlzLmdldEV4cGlyZXNJbigpKTtcclxuICAgIC8vY29uc3QgZXhwaXJ5ID0gdGhpcy5nZXRFeHBpcmVzSW4oKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuSURfVE9LRU5fRVhQSVJZX1RJTUUsIFwiXCIrKHN0YXJ0VGltZSArIGV4cGlyeSkpO1xyXG4gIH1cclxuXHJcbiAgc2V0UmVmcmVzaFRva2VuRXhwaXJ5KCl7XHJcbiAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5SRUZSRVNIX1RPS0VOX0VYUElSWV9USU1FLCBzdGFydFRpbWUgKyB0aGlzLnJlZnJlc2hUb2tlbkFnZSk7XHJcbiAgfVxyXG4gIHNlYXJjaCh1cmw6IHN0cmluZywgdGVybTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGVybSA9PT0gJycpIHtcclxuICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh1cmwgKyB0ZXJtKS5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIHNldFJlc2V0TmV3UGFzc3dvcmRTZXNzaW9uKHNlc3Npb246YW55KXtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdSRVNFVF9QQVNTX1NFU1NJT04nLHNlc3Npb24pO1xyXG4gIH1cclxuICBnZXRSZXNldE5ld1Bhc3N3b3JkU2Vzc2lvbigpe1xyXG4gICAgY29uc3Qgc2Vzc2lvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdSRVNFVF9QQVNTX1NFU1NJT04nKTtcclxuICAgIHJldHVybiBzZXNzaW9uO1xyXG4gIH1cclxuICBzZWFyY2hQb3N0TWV0aG9kKHVybDogc3RyaW5nLCBwYXlsb2FkOiBhbnkpIHtcclxuICAgIGlmIChwYXlsb2FkID09PSAnJykge1xyXG4gICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdCh1cmwsIHBheWxvYWQpLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhyZXNwb25zZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgXHJcblxyXG4gIHNldEhvc3ROYW1lRGluYW1pY2FsbHkoaG9zdDpzdHJpbmcpe1xyXG4gICAgbGV0IGRvbWFpbk5hbWUgPSB0aGlzLmRvY3VtZW50LmxvY2F0aW9uWydob3N0bmFtZSddO1xyXG5cclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuSE9TVF9OQU1FLCBob3N0KTtcclxuICAgIGlmKGRvbWFpbk5hbWUhPVwibG9jYWxob3N0XCIgJiYgdGhpcy5jb29raWVzU2VydmljZS5pc0Nvb2tpZUV4cGlyZWQoZG9tYWluTmFtZSkpe1xyXG4gICAgICB0aGlzLmNvb2tpZXNTZXJ2aWNlLnNldENvb2tpZUJ5TmFtZShkb21haW5OYW1lLGhvc3QsMzApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SG9zdE5hbWVEaW5hbWljYWxseSgpe1xyXG4gICAgbGV0IGhvc3QgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkhPU1RfTkFNRSk7XHJcbiAgICBpZih0aGlzLmNvcmVGdW5jdGlvblNlcnZpY2UuaXNOb3RCbGFuayhob3N0KSl7XHJcbiAgICAgIHJldHVybiBob3N0O1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIGxldCBkb21haW5OYW1lID0gdGhpcy5kb2N1bWVudC5sb2NhdGlvblsnaG9zdG5hbWUnXTtcclxuXHJcbiAgICAgIGhvc3QgPSB0aGlzLmNvb2tpZXNTZXJ2aWNlLmdldENvb2tpZUJ5TmFtZShkb21haW5OYW1lKTtcclxuICAgICAgaWYgKGhvc3QgJiYgaG9zdCAhPVwiXCIpIHRoaXMuc2V0SG9zdE5hbWVEaW5hbWljYWxseShob3N0KTtcclxuICAgICAgcmV0dXJuIGhvc3Q7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldExvZ29QYXRoKCl7XHJcbiAgICBsZXQgcHJvamVjdEZvbGRlck5hbWUgPSB0aGlzLmdldEFwcGxpY2F0aW9uVmFsdWVCeUtleSgnZm9sZGVyJylcclxuICAgIHJldHVybiAnYXNzZXRzL2ltZy9sb2dvLycgKyBwcm9qZWN0Rm9sZGVyTmFtZSArICcvJztcclxuICB9XHJcbiAgZ2V0UGFnZVRpdGxlKCl7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRBcHBsaWNhdGlvblZhbHVlQnlLZXkoJ3RpdGxlJyk7XHJcbiAgfVxyXG4gIGdldFZlcmlmeVR5cGUoKXtcclxuICAgIHJldHVybiB0aGlzLmdldEFwcGxpY2F0aW9uVmFsdWVCeUtleSgndmFyaWZ5X21vZGUnKTtcclxuICB9XHJcbiAgZ2V0UGFnZVRobWVtKCl7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRBcHBsaWNhdGlvblZhbHVlQnlLZXkoJ3RoZW1lJyk7XHJcbiAgfVxyXG4gIGdldFRlbXBsYXRlTmFtZSgpe1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QXBwbGljYXRpb25WYWx1ZUJ5S2V5KCd0ZW1wX25hbWUnKTtcclxuICB9XHJcbiAgZ2V0VGVhbU5hbWUoKXtcclxuICAgIHJldHVybiB0aGlzLmdldEFwcGxpY2F0aW9uVmFsdWVCeUtleSgndGVhbW5hbWUnKTtcclxuICB9XHJcblxyXG4gIGdldEJ1Y2tldE5hbWUoKXtcclxuICAgIHJldHVybiB0aGlzLmdldEFwcGxpY2F0aW9uVmFsdWVCeUtleSgnYnVja2V0Jyk7XHJcbiAgfVxyXG4gIGdldEF1dGhlbnRpY2F0aW9uU2V0dGluZygpe1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QXBwbGljYXRpb25WYWx1ZUJ5S2V5KCdhdXRoZW50aWNhdGlvblNldHRpbmdzJyk7XHJcbiAgfVxyXG4gIGdldEFkbWluRW1haWwoKXtcclxuICAgIGxldCBhdXRoZW50aWNhdGlvblNldHRpbmdzOmFueSA9IHRoaXMuZ2V0QXV0aGVudGljYXRpb25TZXR0aW5nKCk7XHJcbiAgICBsZXQgYWRtaW5FbWFpbCA9IFwiXCI7XHJcbiAgICBpZihhdXRoZW50aWNhdGlvblNldHRpbmdzICYmIGF1dGhlbnRpY2F0aW9uU2V0dGluZ3NbJ2FkbWluRW1haWxJZCddICYmIGF1dGhlbnRpY2F0aW9uU2V0dGluZ3NbJ2FkbWluRW1haWxJZCddICE9IFwiXCIpe1xyXG4gICAgICBhZG1pbkVtYWlsID0gYXV0aGVudGljYXRpb25TZXR0aW5nc1snYWRtaW5FbWFpbElkJ107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYWRtaW5FbWFpbDtcclxuICB9XHJcbiAgZ2V0QXBwbGljYXRpb25WYWx1ZUJ5S2V5KGtleTphbnkpe1xyXG4gICAgbGV0IHZhbHVlOmFueSA9IFwiXCI7XHJcbiAgICBsZXQgYXBwbGljYXRpb25TZXR0aW5nID0gdGhpcy5nZXRBcHBsaWNhdGlvblNldHRpbmcoKTtcclxuICAgIGlmKGFwcGxpY2F0aW9uU2V0dGluZyAmJiBhcHBsaWNhdGlvblNldHRpbmdba2V5XSAhPSB1bmRlZmluZWQgJiYgYXBwbGljYXRpb25TZXR0aW5nW2tleV0gIT0gbnVsbCAmJiBhcHBsaWNhdGlvblNldHRpbmdba2V5XSAhPSBcIlwiKXtcclxuICAgICAgdmFsdWUgPSBhcHBsaWNhdGlvblNldHRpbmdba2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbiAgLy8gZm9yIEFwcFxyXG4gIHNldENsaWVudE5BbWUobmFtZTpzdHJpbmcpe1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5DTElFTlRfTkFNRSxuYW1lKTtcclxuICB9XHJcbiAgZ2V0Q2xpZW50TmFtZSgpe1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ0xJRU5UX05BTUUpO1xyXG4gIH1cclxuICByZW1vdmVLZXlGcm9tU3RvcmFnZShrZXk6c3RyaW5nKXtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XHJcbiAgfVxyXG4gIGdldFBsYXRmb3JtKCl7XHJcbiAgICByZXR1cm4gdGhpcy5lbnYucGxhdGVmb3JtTmFtZTtcclxuICB9XHJcbiAgZ2V0Q2xpZW50Q29kZUVudmlvcm1lbnQoKXtcclxuICAgIHJldHVybiB0aGlzLmVudjtcclxuICB9XHJcbiAgY2hlY2tQbGF0Rm9ybSgpe1xyXG4gICAgbGV0IHBsYXRGb3JtID0gJ3dlYic7XHJcbiAgICBsZXQgcGxhdEZvcm1OYW1lID0gdGhpcy5nZXRQbGF0Zm9ybSgpO1xyXG4gICAgaWYocGxhdEZvcm1OYW1lICYmIHBsYXRGb3JtTmFtZSAhPSBcIlwiICYmIFBMQVRGT1JNX05BTUUuaW5jbHVkZXMocGxhdEZvcm1OYW1lKSl7XHJcbiAgICAgIHBsYXRGb3JtID0gJ21vYmlsZSc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGxhdEZvcm07XHJcbiAgfVxyXG5cclxuICBnZXREZWZhdWx0TnVtT2ZJdGVtKCkge1xyXG4gICAgbGV0IGl0ZW1OdW1PZkdyaWQgPSBDb21tb24uSVRFTV9OVU1fT0ZfR1JJRDtcclxuICAgIGxldCBkZWZhdWx0U2V0dGluZ3MgPSB0aGlzLmdldEFwcGxpY2F0aW9uRGVmYXVsdFNldHRpbmdzKCk7XHJcbiAgICBpZihkZWZhdWx0U2V0dGluZ3MgJiYgZGVmYXVsdFNldHRpbmdzLmRlZmF1bHRJdGVtTm9PZkdyaWQgJiYgZGVmYXVsdFNldHRpbmdzLmRlZmF1bHRJdGVtTm9PZkdyaWQgIT0gXCJcIiAmJiBkZWZhdWx0U2V0dGluZ3MuZGVmYXVsdEl0ZW1Ob09mR3JpZCA+IDApIHtcclxuICAgICAgaXRlbU51bU9mR3JpZCA9IGRlZmF1bHRTZXR0aW5ncy5kZWZhdWx0SXRlbU5vT2ZHcmlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGl0ZW1OdW1PZkdyaWRcclxuICB9XHJcblxyXG4gIGdldEFwcGxpY2F0aW9uRGVmYXVsdFNldHRpbmdzKCl7XHJcbiAgICBsZXQgYXBwbGljYXRpb25TZXR0aW5nID0gdGhpcy5nZXRBcHBsaWNhdGlvblNldHRpbmcoKTtcclxuICAgIHJldHVybiBhcHBsaWNhdGlvblNldHRpbmcuZGVmYXVsdEFwcGxpY2F0aW9uU2V0dGluZ3M7XHJcbiAgfVxyXG4gIGdldEFwcGxpY2F0aW9uQXV0aGVudGljYXRpb25TZXR0aW5ncygpe1xyXG4gICAgbGV0IGFwcGxpY2F0aW9uU2V0dGluZyA9IHRoaXMuZ2V0QXBwbGljYXRpb25TZXR0aW5nKCk7XHJcbiAgICBpZihhcHBsaWNhdGlvblNldHRpbmcgJiYgYXBwbGljYXRpb25TZXR0aW5nLmF1dGhlbnRpY2F0aW9uU2V0dGluZ3Mpe1xyXG4gICAgICByZXR1cm4gYXBwbGljYXRpb25TZXR0aW5nLmF1dGhlbnRpY2F0aW9uU2V0dGluZ3M7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBnZXRUd29GYWN0b3JBdXRoZW50aWNhdGlvblR5cGUoKXtcclxuICAgIGxldCBhdXRoZW50aWNhdGlvblNldHRpbmcgPSB0aGlzLmdldEFwcGxpY2F0aW9uQXV0aGVudGljYXRpb25TZXR0aW5ncygpO1xyXG4gICAgaWYoYXV0aGVudGljYXRpb25TZXR0aW5nICYmIGF1dGhlbnRpY2F0aW9uU2V0dGluZy50d29GYWN0b3JBdXRoZW50aWNhdGlvbiAmJiBhdXRoZW50aWNhdGlvblNldHRpbmcudHdvRmFjdG9yQXV0aGVudGljYXRpb25UeXBlKXtcclxuICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0aW9uU2V0dGluZy50d29GYWN0b3JBdXRoZW50aWNhdGlvblR5cGU7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RGVmYXVsdFNlYXJjaE9wZXJhdG9yKCkge1xyXG4gICAgbGV0IGRlZmF1bHRTZWFyY2hPcGVyYXRvciA9IENvbW1vbi5ERUZBVUxUX09QRVJBVE9SO1xyXG4gICAgbGV0IGRlZmF1bHRTZXR0aW5ncyA9IHRoaXMuZ2V0QXBwbGljYXRpb25EZWZhdWx0U2V0dGluZ3MoKTtcclxuICAgIGlmKGRlZmF1bHRTZXR0aW5ncyAmJiBkZWZhdWx0U2V0dGluZ3MuZGVmYXVsdFNlYXJjaE9wZXJhdG9ySW5HcmlkICYmIGRlZmF1bHRTZXR0aW5ncy5kZWZhdWx0U2VhcmNoT3BlcmF0b3JJbkdyaWQgIT0gXCJcIikge1xyXG4gICAgICBkZWZhdWx0U2VhcmNoT3BlcmF0b3IgPSBkZWZhdWx0U2V0dGluZ3MuZGVmYXVsdFNlYXJjaE9wZXJhdG9ySW5HcmlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlZmF1bHRTZWFyY2hPcGVyYXRvcjtcclxuICB9XHJcbiAgc3RvcmVBbGxUZW1wbGF0ZShkYXRhOmFueSl7XHJcbiAgICAvLyBsZXQgZW5jcnlwdERhdGEgPSB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHRSZXF1ZXN0KGRhdGEpO1xyXG4gICAgLy8gY29uc29sZS5sb2coZW5jcnlwdERhdGEpO1xyXG4gICAgbGV0IG1vZGlmaWVkTGlzdCA9IHRoaXMubW9kaWZ5VGVtcGxhdGVMaXN0KGRhdGEpO1xyXG4gICAgaWYobW9kaWZpZWRMaXN0KXtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5BTExfVEVNUExBVEUsSlNPTi5zdHJpbmdpZnkobW9kaWZpZWRMaXN0LnRlbXBsYXRMaXN0KSk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuVEVNUExBVEVfSU5ERVgsSlNPTi5zdHJpbmdpZnkobW9kaWZpZWRMaXN0LnRlbXBsYXRlSW5kZXhMaXN0KSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG1vZGlmeVRlbXBsYXRlTGlzdChvYmo6YW55KXtcclxuICAgIGxldCBsaXN0OmFueSA9IHt9O1xyXG4gICAgbGV0IGluZGV4TGlzdDphbnkgPSBbXTtcclxuICAgIGxldCBvbGRMaXN0ID0gdGhpcy5nZXRBbGxUZW1wbGF0ZUxpc3QoKTtcclxuICAgIGxldCBhbGxJbmRleExpc3QgPSBKU09OLnBhcnNlKDxhbnk+bG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5URU1QTEFURV9JTkRFWCkpO1xyXG4gICAgaWYoYWxsSW5kZXhMaXN0ICYmIGFsbEluZGV4TGlzdC5sZW5ndGggPiAwKXtcclxuICAgICAgaW5kZXhMaXN0ID0gYWxsSW5kZXhMaXN0O1xyXG4gICAgfVxyXG4gICAgaWYob2xkTGlzdCAmJiBPYmplY3Qua2V5cyhvbGRMaXN0KS5sZW5ndGggPiAwKXtcclxuICAgICAgbGV0IHNpemU6bnVtYmVyID0gdGhpcy5jb3JlRnVuY3Rpb25TZXJ2aWNlLmdldEpzb25TaXplSW5LaWxvYnl0ZShvbGRMaXN0KTtcclxuICAgICAgLy8gY29uc29sZS5sb2coc2l6ZSk7XHJcbiAgICAgIGlmKHNpemUgPj0gMTAyNCl7XHJcbiAgICAgICAgbGV0IGtleU5hbWUgPSBpbmRleExpc3RbMF07XHJcbiAgICAgICAgZGVsZXRlIChvbGRMaXN0W2tleU5hbWVdKTtcclxuICAgICAgICBpbmRleExpc3Quc3BsaWNlKDAsMSk7XHJcbiAgICAgIH1cclxuICAgICAgbGlzdCA9IG9sZExpc3Q7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgbGlzdCA9IHt9O1xyXG4gICAgfVxyXG4gICAgaWYob2JqICYmIG9iail7XHJcbiAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGxpc3Rba2V5XSA9IG9ialtrZXldO1xyXG4gICAgICAgIGluZGV4TGlzdC5wdXNoKGtleSk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBsZXQgcmVzcG9uY2UgPSB7XHJcbiAgICAgIHRlbXBsYXRMaXN0IDogbGlzdCxcclxuICAgICAgdGVtcGxhdGVJbmRleExpc3Q6aW5kZXhMaXN0XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzcG9uY2U7XHJcbiAgfVxyXG4gIGdldEFsbFRlbXBsYXRlTGlzdCgpe1xyXG4gICAgLy9sZXQgYWxsVGVtcGxhdGUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkFMTF9URU1QTEFURSk7XHJcbiAgICBjb25zdCBvYmo6YW55ID0gSlNPTi5wYXJzZSg8YW55PmxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQUxMX1RFTVBMQVRFKSk7XHJcbiAgICAvL3JldHVybiB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHRSZXF1ZXN0KGFsbFRlbXBsYXRlKTtcclxuICAgIHJldHVybiBvYmo7XHJcbiAgfVxyXG4gIGdldFRlbXBsYXRlKHRlbXBOYW1lOnN0cmluZyxtb2R1bGVOYW1lOnN0cmluZyl7XHJcbiAgICBsZXQgdGVtcGxhdGVMaXN0OmFueSA9IHRoaXMuZ2V0QWxsVGVtcGxhdGVMaXN0KCk7XHJcbiAgICBsZXQgbmFtZSA9IG1vZHVsZU5hbWUrXCJfXCIrdGVtcE5hbWU7XHJcbiAgICBpZih0ZW1wbGF0ZUxpc3QgJiYgdGVtcGxhdGVMaXN0W25hbWVdKXtcclxuICAgICAgcmV0dXJuIHRlbXBsYXRlTGlzdFtuYW1lXTtcclxuICAgIH1lbHNle1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgU2V0VGFiQ291bnRzKHRhYkNvdW50czogYW55KSB7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLlRBQl9DT1VOVFMsIEpTT04uc3RyaW5naWZ5KHRhYkNvdW50cykpO1xyXG4gIH1cclxuICBHZXRUYWJDb3VudHMoKSB7XHJcbiAgICBsZXQgY291bnRzID0gSlNPTi5wYXJzZSg8YW55PmxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuVEFCX0NPVU5UUykpO1xyXG4gICAgaWYoY291bnRzKXtcclxuICAgICAgcmV0dXJuIGNvdW50cztcclxuICAgIH1lbHNle1xyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Public API Surface of my-lib
|
|
3
3
|
*/
|
|
4
|
-
export * from './lib/
|
|
4
|
+
export * from './lib/clientCore.module';
|
|
5
5
|
export * from './lib/services/api/api.service';
|
|
6
6
|
export * from './lib/services/api/auth/auth-guard.service';
|
|
7
7
|
export * from './lib/services/api/auth/auth.service';
|
|
@@ -50,4 +50,4 @@ export * from './lib/services/userPrefrence/user-prefrence.service';
|
|
|
50
50
|
export * from './lib/services/api/aws-secret-manager/aws-secret-manager.service';
|
|
51
51
|
export * from './lib/services/storage/cookies.service';
|
|
52
52
|
export * from './lib/services/router/router.service';
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1jb3JlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBSUgsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsMkRBQTJELENBQUM7QUFDMUUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG9FQUFvRSxDQUFDO0FBQ25GLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsbUVBQW1FLENBQUM7QUFDbEYsY0FBYywrRUFBK0UsQ0FBQztBQUM5RixjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxnRUFBZ0UsQ0FBQztBQUMvRSxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBteS1saWJcclxuICovXHJcblxyXG5pbXBvcnQgeyBmcm9tIH0gZnJvbSAncnhqcyc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGllbnRDb3JlLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2FwaS9hcGkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2FwaS9hdXRoL2F1dGgtZ3VhcmQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2FwaS9hdXRoL2F1dGguc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2FwaS9jb21tb24tYXBpL2NvbW1vbi1hcGkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2FwaS9kb2MtYXBpL2RvYy1hcGkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2FwaS9wdWJsaWMtYXBpL3B1YmxpYy1hcGkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2NoYXJ0L2NoYXJ0LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9jb21tb24tdXRpbHMvY29tbW9uLWZ1bmN0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9jb21tb24tdXRpbHMvY29yZS1mdW5jdGlvbi9jb3JlLWZ1bmN0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9jdXN0b212YWxpZGF0aW9uL2N1c3RvbXZhbGlkYXRpb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2RhdGEtc2hhcmUvZGF0YS1zaGFyZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZGF0YS1zaGFyZS9kb2MtZGF0YS1zaGFyZS9kb2MtZGF0YS1zaGFyZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZGF0YS1zaGFyZS9wdWJsaWMtZGF0YS1zaGFyZS9wdWJsaWMtZGF0YS1zaGFyZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9lbnYvZW52LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9ncmlkL2dyaWQtY29tbW9uLWZ1bmN0aW9uL2dyaWQtY29tbW9uLWZ1bmN0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9ncmlkL2dyaWQtc2VsZWN0aW9uL2dyaWQtc2VsZWN0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9sb2FkZXIvbG9hZGVyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9tZW51LW9yLW1vZHVsZS1jb21tb24vbWVudS1vci1tb2R1bGUtY29tbW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9tb2RlbC9tb2RlbC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvbm90aWZ5L25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvcGVybWlzc2lvbi9wZXJtaXNzaW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9zdG9yYWdlL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2xpbXMtY2FsY3VsYXRpb25zL2xpbXMtY2FsY3VsYXRpb25zLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cmVlLWNvbXBvbmVudC90cmVlLWNvbXBvbmVudC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdm9pY2UtcmVjb2duaXRpb24vdm9pY2UtcmVjb2duaXRpb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9lbnVtcy9jb21tb24uZW51bSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9lbnVtcy9lbmQtcG9pbnQuZW51bSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9lbnVtcy9zdG9yYWdlLXRva2VuLXN0YXR1cy5lbnVtJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2VudW1zL2tleWNvZGVzLmVudW0nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvZW51bXMvb3BlcmF0b3JfdHlwZS5lbnVtJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZGF0YS1zaGFyZS9hdXRoLWRhdGEtc2hhcmUvYXV0aC1kYXRhLXNoYXJlLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9kYXRhLXNoYXJlL2NvbW1vbi1hcHAtZGF0YS1zaGFyZS9jb21tb24tYXBwLWRhdGEtc2hhcmUuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2ZpbGVIYW5kbGVyL2ZpbGUtaGFuZGxlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2NvbmZpZ3VyYXRpb24vZWRpdG9yLWNvbmZpZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9jb25maWd1cmF0aW9uL2NvbmZpZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2Zvcm0vZm9ybS1jcmVhdGlvbi9mb3JtLWNyZWF0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9mb3JtL2Zvcm0tdmFsdWUvZm9ybS12YWx1ZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvYXBpL2FwaS1jYWxsL2FwaS1jYWxsLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9mb3JtL2Zvcm0tY29udHJvbC9mb3JtLWNvbnRyb2wuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2NoZWNrLWlmL2NoZWNrLWlmLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9hcGkvYXBpLWNhbGwtcmVzcG9uY2UvYXBpLWNhbGwtcmVzcG9uY2Uuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2Zvcm0vbXVsdGlwbGUtZm9ybS9tdWx0aXBsZS1mb3JtLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9kb3dubG9hZC9kb3dubG9hZC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdXNlclByZWZyZW5jZS91c2VyLXByZWZyZW5jZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvYXBpL2F3cy1zZWNyZXQtbWFuYWdlci9hd3Mtc2VjcmV0LW1hbmFnZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3N0b3JhZ2UvY29va2llcy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvcm91dGVyL3JvdXRlci5zZXJ2aWNlJztcclxuXHJcbiJdfQ==
|