@senior-gestao-empresarial/erpx-components 4.16.0 → 4.17.1-develop-5b4a01dc

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/bundles/senior-gestao-empresarial-erpx-components.umd.js +2223 -498
  2. package/bundles/senior-gestao-empresarial-erpx-components.umd.js.map +1 -1
  3. package/bundles/senior-gestao-empresarial-erpx-components.umd.min.js +2 -2
  4. package/bundles/senior-gestao-empresarial-erpx-components.umd.min.js.map +1 -1
  5. package/components/tributos/erp-tributos.component.d.ts +1 -0
  6. package/components/tributos/erp-tributos.types.d.ts +3 -0
  7. package/components/tributos/rules/calculation/rules/taxable-base-calculation-rule.d.ts +1 -1
  8. package/components/tributos/rules/status/registries/incoming-invoice-status-rules.registry.d.ts +5 -1
  9. package/components/tributos/rules/status/registries/purchase-order-status-rules.registry.d.ts +5 -1
  10. package/components/tributos/rules/status/rules/tax-rate-status-rule.d.ts +5 -0
  11. package/components/tributos/rules/status/rules/taxable-base-status-rule.d.ts +5 -0
  12. package/components/tributos/rules/types/schemas/incoming-invoice.schema.d.ts +30 -0
  13. package/components/tributos/rules/types/schemas/purchase-order.schema.d.ts +3 -0
  14. package/esm2015/components/tributos/erp-tributos.component.js +53 -5
  15. package/esm2015/components/tributos/erp-tributos.types.js +4 -1
  16. package/esm2015/components/tributos/rules/calculation/registries/calculation-rules-registries/incoming-invoice-calculation-rules.registry.js +421 -1
  17. package/esm2015/components/tributos/rules/calculation/registries/calculation-rules-registries/purchase-order-calculation-rules.registry.js +43 -1
  18. package/esm2015/components/tributos/rules/calculation/rules/tax-amount-calculation-rule.js +4 -1
  19. package/esm2015/components/tributos/rules/calculation/rules/tax-rate-calculation-rule.js +37 -1
  20. package/esm2015/components/tributos/rules/calculation/rules/taxable-base-calculation-rule.js +39 -2
  21. package/esm2015/components/tributos/rules/status/registries/incoming-invoice-status-rules.registry.js +312 -4
  22. package/esm2015/components/tributos/rules/status/registries/purchase-order-status-rules.registry.js +48 -4
  23. package/esm2015/components/tributos/rules/status/rules/tax-rate-status-rule.js +61 -0
  24. package/esm2015/components/tributos/rules/status/rules/taxable-base-status-rule.js +65 -0
  25. package/esm2015/components/tributos/rules/types/schemas/incoming-invoice.schema.js +211 -1
  26. package/esm2015/components/tributos/rules/types/schemas/purchase-order.schema.js +22 -1
  27. package/esm2015/components/tributos/rules/validation/registries/incoming-invoice-validation-rules.registry.js +421 -1
  28. package/esm2015/components/tributos/rules/validation/registries/purchase-order-validation-rules.registry.js +43 -1
  29. package/esm2015/components/tributos/rules/validation/rules/required/tax-amount-required-validation-rule.js +70 -14
  30. package/esm2015/components/tributos/rules/validation/rules/required/tax-rate-required-validation-rule.js +64 -2
  31. package/esm2015/components/tributos/rules/validation/rules/required/taxable-base-required-validation-rule.js +61 -1
  32. package/esm2015/components/tributos/tax-reform-utilities.js +4 -1
  33. package/esm2015/senior-gestao-empresarial-erpx-components.js +45 -43
  34. package/esm5/components/tributos/erp-tributos.component.js +202 -155
  35. package/esm5/components/tributos/erp-tributos.types.js +4 -1
  36. package/esm5/components/tributos/rules/calculation/registries/calculation-rules-registries/incoming-invoice-calculation-rules.registry.js +421 -1
  37. package/esm5/components/tributos/rules/calculation/registries/calculation-rules-registries/purchase-order-calculation-rules.registry.js +43 -1
  38. package/esm5/components/tributos/rules/calculation/rules/tax-amount-calculation-rule.js +4 -1
  39. package/esm5/components/tributos/rules/calculation/rules/tax-rate-calculation-rule.js +45 -1
  40. package/esm5/components/tributos/rules/calculation/rules/taxable-base-calculation-rule.js +45 -2
  41. package/esm5/components/tributos/rules/status/registries/incoming-invoice-status-rules.registry.js +312 -4
  42. package/esm5/components/tributos/rules/status/registries/purchase-order-status-rules.registry.js +49 -4
  43. package/esm5/components/tributos/rules/status/rules/tax-rate-status-rule.js +68 -0
  44. package/esm5/components/tributos/rules/status/rules/taxable-base-status-rule.js +72 -0
  45. package/esm5/components/tributos/rules/types/schemas/incoming-invoice.schema.js +211 -1
  46. package/esm5/components/tributos/rules/types/schemas/purchase-order.schema.js +22 -1
  47. package/esm5/components/tributos/rules/validation/registries/incoming-invoice-validation-rules.registry.js +421 -1
  48. package/esm5/components/tributos/rules/validation/registries/purchase-order-validation-rules.registry.js +43 -1
  49. package/esm5/components/tributos/rules/validation/rules/required/tax-amount-required-validation-rule.js +74 -14
  50. package/esm5/components/tributos/rules/validation/rules/required/tax-rate-required-validation-rule.js +68 -2
  51. package/esm5/components/tributos/rules/validation/rules/required/taxable-base-required-validation-rule.js +65 -1
  52. package/esm5/components/tributos/tax-reform-utilities.js +4 -1
  53. package/esm5/senior-gestao-empresarial-erpx-components.js +45 -43
  54. package/fesm2015/senior-gestao-empresarial-erpx-components.js +1898 -215
  55. package/fesm2015/senior-gestao-empresarial-erpx-components.js.map +1 -1
  56. package/fesm5/senior-gestao-empresarial-erpx-components.js +2180 -457
  57. package/fesm5/senior-gestao-empresarial-erpx-components.js.map +1 -1
  58. package/package.json +1 -1
  59. package/senior-gestao-empresarial-erpx-components.d.ts +44 -42
  60. package/senior-gestao-empresarial-erpx-components.metadata.json +1 -1
@@ -407,17 +407,20 @@ var ErpTributosComponent = /** @class */ (function () {
407
407
  this.tributosValue.map(function (it) {
408
408
  switch (it.tipoImposto) {
409
409
  case EnumTipoTributo.CBS:
410
+ case EnumTipoTributo.CBS_A_APROPRIAR:
410
411
  case EnumTipoTributo.CBS_DIFERIDO:
411
412
  case EnumTipoTributo.CBS_CREDITO_PRESUMIDO:
412
413
  case EnumTipoTributo.CBS_TRIBUTACAO_REGULAR:
413
414
  _this.montaCBS();
414
415
  break;
415
416
  case EnumTipoTributo.IBS_ESTADUAL:
417
+ case EnumTipoTributo.IBS_ESTADUAL_A_APROPRIAR:
416
418
  case EnumTipoTributo.IBS_ESTADUAL_DIFERIDO:
417
419
  case EnumTipoTributo.IBS_ESTADUAL_TRIBUTACAO_REGULAR:
418
420
  _this.montaIBSEstadual();
419
421
  break;
420
422
  case EnumTipoTributo.IBS_MUNICIPAL:
423
+ case EnumTipoTributo.IBS_MUNICIPAL_A_APROPRIAR:
421
424
  case EnumTipoTributo.IBS_MUNICIPAL_DIFERIDO:
422
425
  case EnumTipoTributo.IBS_MUNICIPAL_TRIBUTACAO_REGULAR:
423
426
  _this.montaIBSMunicipal();
@@ -2315,15 +2318,26 @@ var ErpTributosComponent = /** @class */ (function () {
2315
2318
  campo: EnumCampoTributo.ClassificacaoTributaria
2316
2319
  });
2317
2320
  }
2318
- item.unshift(__assign({ name: EnumTipoTributo.CBS, label: 'erpx.tributos.enum_tipo_tributo_cbs' }, this.montaCampos(campos, EnumTipoTributo.CBS)), __assign({ name: EnumTipoTributo.CBS_DIFERIDO, label: 'erpx.tributos.enum_tipo_tributo_cbs_diferido' }, this.montaCampos([
2319
- { campo: EnumCampoTributo.BaseCalculo },
2320
- { campo: EnumCampoTributo.Aliquota },
2321
- { campo: EnumCampoTributo.Valor, disabled: true }
2322
- ], EnumTipoTributo.CBS_DIFERIDO)), __assign({ name: EnumTipoTributo.CBS_CREDITO_PRESUMIDO, label: 'erpx.tributos.enum_tipo_tributo_cbs_credito_presumido' }, this.montaCampos(campos_CBS_CREDITO_PRESUMIDO, EnumTipoTributo.CBS_CREDITO_PRESUMIDO)), __assign({ name: EnumTipoTributo.CBS_TRIBUTACAO_REGULAR, label: 'erpx.tributos.enum_tipo_tributo_cbs_tributacao_regular' }, this.montaCampos(campos_CBS_TRIBUTACAO_REGULAR, EnumTipoTributo.CBS_TRIBUTACAO_REGULAR)), __assign({ name: EnumTipoTributo.CBS_GOVERNAMENTAL, label: 'erpx.tributos.enum_tipo_tributo_cbs_governamental' }, this.montaCampos([
2323
- { campo: EnumCampoTributo.BaseCalculo },
2324
- { campo: EnumCampoTributo.Aliquota },
2325
- { campo: EnumCampoTributo.Valor, disabled: true }
2326
- ], EnumTipoTributo.CBS_GOVERNAMENTAL)));
2321
+ item.unshift.apply(item, __spread([__assign({ name: EnumTipoTributo.CBS, label: 'erpx.tributos.enum_tipo_tributo_cbs' }, this.montaCampos(campos, EnumTipoTributo.CBS))], (this.isAccrualTaxDocument()
2322
+ ? [
2323
+ __assign({ name: EnumTipoTributo.CBS_A_APROPRIAR, label: 'erpx.tributos.enum_tipo_tributo_cbs_a_apropriar' }, this.montaCampos([
2324
+ { campo: EnumCampoTributo.BaseCalculo },
2325
+ { campo: EnumCampoTributo.Aliquota },
2326
+ {
2327
+ campo: EnumCampoTributo.Valor,
2328
+ disabled: true
2329
+ }
2330
+ ], EnumTipoTributo.CBS_A_APROPRIAR))
2331
+ ]
2332
+ : []), [__assign({ name: EnumTipoTributo.CBS_DIFERIDO, label: 'erpx.tributos.enum_tipo_tributo_cbs_diferido' }, this.montaCampos([
2333
+ { campo: EnumCampoTributo.BaseCalculo },
2334
+ { campo: EnumCampoTributo.Aliquota },
2335
+ { campo: EnumCampoTributo.Valor, disabled: true }
2336
+ ], EnumTipoTributo.CBS_DIFERIDO)), __assign({ name: EnumTipoTributo.CBS_CREDITO_PRESUMIDO, label: 'erpx.tributos.enum_tipo_tributo_cbs_credito_presumido' }, this.montaCampos(campos_CBS_CREDITO_PRESUMIDO, EnumTipoTributo.CBS_CREDITO_PRESUMIDO)), __assign({ name: EnumTipoTributo.CBS_TRIBUTACAO_REGULAR, label: 'erpx.tributos.enum_tipo_tributo_cbs_tributacao_regular' }, this.montaCampos(campos_CBS_TRIBUTACAO_REGULAR, EnumTipoTributo.CBS_TRIBUTACAO_REGULAR)), __assign({ name: EnumTipoTributo.CBS_GOVERNAMENTAL, label: 'erpx.tributos.enum_tipo_tributo_cbs_governamental' }, this.montaCampos([
2337
+ { campo: EnumCampoTributo.BaseCalculo },
2338
+ { campo: EnumCampoTributo.Aliquota },
2339
+ { campo: EnumCampoTributo.Valor, disabled: true }
2340
+ ], EnumTipoTributo.CBS_GOVERNAMENTAL))]));
2327
2341
  this.grupos.unshift({
2328
2342
  grupo: "" + ('erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.CBS + '_label'),
2329
2343
  grupoTributo: EnumGrupoTributo.CBS,
@@ -2336,85 +2350,96 @@ var ErpTributosComponent = /** @class */ (function () {
2336
2350
  return;
2337
2351
  this.menuItemIBSEstadual = true;
2338
2352
  var item = [];
2339
- item.unshift(__assign({ name: EnumTipoTributo.IBS_ESTADUAL, label: 'erpx.tributos.enum_tipo_tributo_ibs_estadual' }, this.montaCampos(this.context.document === 'Sale Order' ||
2340
- this.context.document === 'Purchase Order'
2353
+ item.unshift.apply(item, __spread([__assign({ name: EnumTipoTributo.IBS_ESTADUAL, label: 'erpx.tributos.enum_tipo_tributo_ibs_estadual' }, this.montaCampos(this.context.document === 'Sale Order' ||
2354
+ this.context.document === 'Purchase Order'
2355
+ ? [
2356
+ {
2357
+ campo: EnumCampoTributo.BaseCalculo,
2358
+ grupo: EnumGrupoTributo.IBS_ESTADUAL
2359
+ },
2360
+ {
2361
+ campo: EnumCampoTributo.Aliquota,
2362
+ grupo: EnumGrupoTributo.IBS_ESTADUAL
2363
+ },
2364
+ {
2365
+ campo: EnumCampoTributo.ValorBruto,
2366
+ disabled: true
2367
+ },
2368
+ { campo: EnumCampoTributo.ReducaoAliquota },
2369
+ {
2370
+ campo: EnumCampoTributo.ReducaoAliquotaGovernamental
2371
+ },
2372
+ {
2373
+ campo: EnumCampoTributo.AliquotaEfetiva,
2374
+ disabled: true
2375
+ },
2376
+ { campo: EnumCampoTributo.Valor }
2377
+ ]
2378
+ : [
2379
+ {
2380
+ campo: EnumCampoTributo.BaseCalculo,
2381
+ grupo: EnumGrupoTributo.IBS_ESTADUAL
2382
+ },
2383
+ {
2384
+ campo: EnumCampoTributo.Aliquota,
2385
+ grupo: EnumGrupoTributo.IBS_ESTADUAL
2386
+ },
2387
+ {
2388
+ campo: EnumCampoTributo.ValorBruto,
2389
+ disabled: true
2390
+ },
2391
+ { campo: EnumCampoTributo.ReducaoAliquota },
2392
+ {
2393
+ campo: EnumCampoTributo.ReducaoAliquotaGovernamental
2394
+ },
2395
+ {
2396
+ campo: EnumCampoTributo.AliquotaEfetiva,
2397
+ disabled: true
2398
+ },
2399
+ { campo: EnumCampoTributo.Valor },
2400
+ { campo: EnumCampoTributo.SituacaoTributaria },
2401
+ {
2402
+ campo: EnumCampoTributo.ClassificacaoTributaria
2403
+ },
2404
+ {
2405
+ campo: EnumCampoTributo.AplicarValorLiquidoDocumento,
2406
+ grupo: EnumGrupoTributo.IBS_ESTADUAL
2407
+ }
2408
+ ], EnumTipoTributo.IBS_ESTADUAL))], (this.isAccrualTaxDocument()
2341
2409
  ? [
2342
- {
2343
- campo: EnumCampoTributo.BaseCalculo,
2344
- grupo: EnumGrupoTributo.IBS_ESTADUAL
2345
- },
2346
- {
2347
- campo: EnumCampoTributo.Aliquota,
2348
- grupo: EnumGrupoTributo.IBS_ESTADUAL
2349
- },
2350
- {
2351
- campo: EnumCampoTributo.ValorBruto,
2352
- disabled: true
2353
- },
2354
- { campo: EnumCampoTributo.ReducaoAliquota },
2355
- {
2356
- campo: EnumCampoTributo.ReducaoAliquotaGovernamental
2357
- },
2358
- {
2359
- campo: EnumCampoTributo.AliquotaEfetiva,
2360
- disabled: true
2361
- },
2362
- { campo: EnumCampoTributo.Valor }
2410
+ __assign({ name: EnumTipoTributo.IBS_ESTADUAL_A_APROPRIAR, label: 'erpx.tributos.enum_tipo_tributo_ibs_estadual_a_apropriar' }, this.montaCampos([
2411
+ { campo: EnumCampoTributo.BaseCalculo },
2412
+ { campo: EnumCampoTributo.Aliquota },
2413
+ {
2414
+ campo: EnumCampoTributo.Valor,
2415
+ disabled: true
2416
+ }
2417
+ ], EnumTipoTributo.IBS_ESTADUAL_A_APROPRIAR))
2363
2418
  ]
2364
- : [
2365
- {
2366
- campo: EnumCampoTributo.BaseCalculo,
2367
- grupo: EnumGrupoTributo.IBS_ESTADUAL
2368
- },
2369
- {
2370
- campo: EnumCampoTributo.Aliquota,
2371
- grupo: EnumGrupoTributo.IBS_ESTADUAL
2372
- },
2373
- {
2374
- campo: EnumCampoTributo.ValorBruto,
2375
- disabled: true
2376
- },
2377
- { campo: EnumCampoTributo.ReducaoAliquota },
2378
- {
2379
- campo: EnumCampoTributo.ReducaoAliquotaGovernamental
2380
- },
2381
- {
2382
- campo: EnumCampoTributo.AliquotaEfetiva,
2383
- disabled: true
2384
- },
2385
- { campo: EnumCampoTributo.Valor },
2386
- { campo: EnumCampoTributo.SituacaoTributaria },
2387
- {
2388
- campo: EnumCampoTributo.ClassificacaoTributaria
2389
- },
2390
- {
2391
- campo: EnumCampoTributo.AplicarValorLiquidoDocumento,
2392
- grupo: EnumGrupoTributo.IBS_ESTADUAL
2393
- }
2394
- ], EnumTipoTributo.IBS_ESTADUAL)), __assign({ name: EnumTipoTributo.IBS_ESTADUAL_DIFERIDO, label: 'erpx.tributos.enum_tipo_tributo_ibs_estadual_diferido' }, this.montaCampos([
2395
- { campo: EnumCampoTributo.BaseCalculo },
2396
- { campo: EnumCampoTributo.Aliquota },
2397
- { campo: EnumCampoTributo.Valor, disabled: true }
2398
- ], EnumTipoTributo.IBS_ESTADUAL_DIFERIDO)), __assign({ name: EnumTipoTributo.IBS_ESTADUAL_TRIBUTACAO_REGULAR, label: 'erpx.tributos.enum_tipo_tributo_ibs_estadual_tributacao_regular' }, this.montaCampos(this.context.document === 'Sale Order' ||
2399
- this.context.document === 'Purchase Order'
2400
- ? [
2419
+ : []), [__assign({ name: EnumTipoTributo.IBS_ESTADUAL_DIFERIDO, label: 'erpx.tributos.enum_tipo_tributo_ibs_estadual_diferido' }, this.montaCampos([
2401
2420
  { campo: EnumCampoTributo.BaseCalculo },
2402
2421
  { campo: EnumCampoTributo.Aliquota },
2403
2422
  { campo: EnumCampoTributo.Valor, disabled: true }
2404
- ]
2405
- : [
2423
+ ], EnumTipoTributo.IBS_ESTADUAL_DIFERIDO)), __assign({ name: EnumTipoTributo.IBS_ESTADUAL_TRIBUTACAO_REGULAR, label: 'erpx.tributos.enum_tipo_tributo_ibs_estadual_tributacao_regular' }, this.montaCampos(this.context.document === 'Sale Order' ||
2424
+ this.context.document === 'Purchase Order'
2425
+ ? [
2426
+ { campo: EnumCampoTributo.BaseCalculo },
2427
+ { campo: EnumCampoTributo.Aliquota },
2428
+ { campo: EnumCampoTributo.Valor, disabled: true }
2429
+ ]
2430
+ : [
2431
+ { campo: EnumCampoTributo.BaseCalculo },
2432
+ { campo: EnumCampoTributo.Aliquota },
2433
+ { campo: EnumCampoTributo.Valor, disabled: true },
2434
+ { campo: EnumCampoTributo.SituacaoTributaria },
2435
+ {
2436
+ campo: EnumCampoTributo.ClassificacaoTributaria
2437
+ }
2438
+ ], EnumTipoTributo.IBS_ESTADUAL_TRIBUTACAO_REGULAR)), __assign({ name: EnumTipoTributo.IBS_ESTADUAL_GOVERNAMENTAL, label: 'erpx.tributos.enum_tipo_tributo_ibs_estadual_governamental' }, this.montaCampos([
2406
2439
  { campo: EnumCampoTributo.BaseCalculo },
2407
2440
  { campo: EnumCampoTributo.Aliquota },
2408
- { campo: EnumCampoTributo.Valor, disabled: true },
2409
- { campo: EnumCampoTributo.SituacaoTributaria },
2410
- {
2411
- campo: EnumCampoTributo.ClassificacaoTributaria
2412
- }
2413
- ], EnumTipoTributo.IBS_ESTADUAL_TRIBUTACAO_REGULAR)), __assign({ name: EnumTipoTributo.IBS_ESTADUAL_GOVERNAMENTAL, label: 'erpx.tributos.enum_tipo_tributo_ibs_estadual_governamental' }, this.montaCampos([
2414
- { campo: EnumCampoTributo.BaseCalculo },
2415
- { campo: EnumCampoTributo.Aliquota },
2416
- { campo: EnumCampoTributo.Valor, disabled: true }
2417
- ], EnumTipoTributo.IBS_ESTADUAL_GOVERNAMENTAL)));
2441
+ { campo: EnumCampoTributo.Valor, disabled: true }
2442
+ ], EnumTipoTributo.IBS_ESTADUAL_GOVERNAMENTAL))]));
2418
2443
  this.grupos.unshift({
2419
2444
  grupo: "" + ('erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.IBS_ESTADUAL + '_label'),
2420
2445
  grupoTributo: EnumGrupoTributo.IBS_ESTADUAL,
@@ -2427,85 +2452,96 @@ var ErpTributosComponent = /** @class */ (function () {
2427
2452
  return;
2428
2453
  this.menuItemIBSMunicipal = true;
2429
2454
  var item = [];
2430
- item.unshift(__assign({ name: EnumTipoTributo.IBS_MUNICIPAL, label: 'erpx.tributos.enum_tipo_tributo_ibs_municipal' }, this.montaCampos(this.context.document === 'Sale Order' ||
2431
- this.context.document === 'Purchase Order'
2455
+ item.unshift.apply(item, __spread([__assign({ name: EnumTipoTributo.IBS_MUNICIPAL, label: 'erpx.tributos.enum_tipo_tributo_ibs_municipal' }, this.montaCampos(this.context.document === 'Sale Order' ||
2456
+ this.context.document === 'Purchase Order'
2457
+ ? [
2458
+ {
2459
+ campo: EnumCampoTributo.BaseCalculo,
2460
+ grupo: EnumGrupoTributo.IBS_MUNICIPAL
2461
+ },
2462
+ {
2463
+ campo: EnumCampoTributo.Aliquota,
2464
+ grupo: EnumGrupoTributo.IBS_MUNICIPAL
2465
+ },
2466
+ {
2467
+ campo: EnumCampoTributo.ValorBruto,
2468
+ disabled: true
2469
+ },
2470
+ { campo: EnumCampoTributo.ReducaoAliquota },
2471
+ {
2472
+ campo: EnumCampoTributo.ReducaoAliquotaGovernamental
2473
+ },
2474
+ {
2475
+ campo: EnumCampoTributo.AliquotaEfetiva,
2476
+ disabled: true
2477
+ },
2478
+ { campo: EnumCampoTributo.Valor, disabled: true }
2479
+ ]
2480
+ : [
2481
+ {
2482
+ campo: EnumCampoTributo.BaseCalculo,
2483
+ grupo: EnumGrupoTributo.IBS_MUNICIPAL
2484
+ },
2485
+ {
2486
+ campo: EnumCampoTributo.Aliquota,
2487
+ grupo: EnumGrupoTributo.IBS_MUNICIPAL
2488
+ },
2489
+ {
2490
+ campo: EnumCampoTributo.ValorBruto,
2491
+ disabled: true
2492
+ },
2493
+ { campo: EnumCampoTributo.ReducaoAliquota },
2494
+ {
2495
+ campo: EnumCampoTributo.ReducaoAliquotaGovernamental
2496
+ },
2497
+ {
2498
+ campo: EnumCampoTributo.AliquotaEfetiva,
2499
+ disabled: true
2500
+ },
2501
+ { campo: EnumCampoTributo.Valor },
2502
+ { campo: EnumCampoTributo.SituacaoTributaria },
2503
+ {
2504
+ campo: EnumCampoTributo.ClassificacaoTributaria
2505
+ },
2506
+ {
2507
+ campo: EnumCampoTributo.AplicarValorLiquidoDocumento,
2508
+ grupo: EnumGrupoTributo.IBS_MUNICIPAL
2509
+ }
2510
+ ], EnumTipoTributo.IBS_MUNICIPAL))], (this.isAccrualTaxDocument()
2432
2511
  ? [
2433
- {
2434
- campo: EnumCampoTributo.BaseCalculo,
2435
- grupo: EnumGrupoTributo.IBS_MUNICIPAL
2436
- },
2437
- {
2438
- campo: EnumCampoTributo.Aliquota,
2439
- grupo: EnumGrupoTributo.IBS_MUNICIPAL
2440
- },
2441
- {
2442
- campo: EnumCampoTributo.ValorBruto,
2443
- disabled: true
2444
- },
2445
- { campo: EnumCampoTributo.ReducaoAliquota },
2446
- {
2447
- campo: EnumCampoTributo.ReducaoAliquotaGovernamental
2448
- },
2449
- {
2450
- campo: EnumCampoTributo.AliquotaEfetiva,
2451
- disabled: true
2452
- },
2453
- { campo: EnumCampoTributo.Valor, disabled: true }
2512
+ __assign({ name: EnumTipoTributo.IBS_MUNICIPAL_A_APROPRIAR, label: 'erpx.tributos.enum_tipo_tributo_ibs_municipal_a_apropriar' }, this.montaCampos([
2513
+ { campo: EnumCampoTributo.BaseCalculo },
2514
+ { campo: EnumCampoTributo.Aliquota },
2515
+ {
2516
+ campo: EnumCampoTributo.Valor,
2517
+ disabled: true
2518
+ }
2519
+ ], EnumTipoTributo.IBS_MUNICIPAL_A_APROPRIAR))
2454
2520
  ]
2455
- : [
2456
- {
2457
- campo: EnumCampoTributo.BaseCalculo,
2458
- grupo: EnumGrupoTributo.IBS_MUNICIPAL
2459
- },
2460
- {
2461
- campo: EnumCampoTributo.Aliquota,
2462
- grupo: EnumGrupoTributo.IBS_MUNICIPAL
2463
- },
2464
- {
2465
- campo: EnumCampoTributo.ValorBruto,
2466
- disabled: true
2467
- },
2468
- { campo: EnumCampoTributo.ReducaoAliquota },
2469
- {
2470
- campo: EnumCampoTributo.ReducaoAliquotaGovernamental
2471
- },
2472
- {
2473
- campo: EnumCampoTributo.AliquotaEfetiva,
2474
- disabled: true
2475
- },
2476
- { campo: EnumCampoTributo.Valor },
2477
- { campo: EnumCampoTributo.SituacaoTributaria },
2478
- {
2479
- campo: EnumCampoTributo.ClassificacaoTributaria
2480
- },
2481
- {
2482
- campo: EnumCampoTributo.AplicarValorLiquidoDocumento,
2483
- grupo: EnumGrupoTributo.IBS_MUNICIPAL
2484
- }
2485
- ], EnumTipoTributo.IBS_MUNICIPAL)), __assign({ name: EnumTipoTributo.IBS_MUNICIPAL_DIFERIDO, label: 'erpx.tributos.enum_tipo_tributo_ibs_municipal_diferido' }, this.montaCampos([
2486
- { campo: EnumCampoTributo.BaseCalculo },
2487
- { campo: EnumCampoTributo.Aliquota },
2488
- { campo: EnumCampoTributo.Valor, disabled: true }
2489
- ], EnumTipoTributo.IBS_MUNICIPAL_DIFERIDO)), __assign({ name: EnumTipoTributo.IBS_MUNICIPAL_TRIBUTACAO_REGULAR, label: 'erpx.tributos.enum_tipo_tributo_ibs_municipal_tributacao_regular' }, this.montaCampos(this.context.document === 'Sale Order' ||
2490
- this.context.document === 'Purchase Order'
2491
- ? [
2521
+ : []), [__assign({ name: EnumTipoTributo.IBS_MUNICIPAL_DIFERIDO, label: 'erpx.tributos.enum_tipo_tributo_ibs_municipal_diferido' }, this.montaCampos([
2492
2522
  { campo: EnumCampoTributo.BaseCalculo },
2493
2523
  { campo: EnumCampoTributo.Aliquota },
2494
2524
  { campo: EnumCampoTributo.Valor, disabled: true }
2495
- ]
2496
- : [
2525
+ ], EnumTipoTributo.IBS_MUNICIPAL_DIFERIDO)), __assign({ name: EnumTipoTributo.IBS_MUNICIPAL_TRIBUTACAO_REGULAR, label: 'erpx.tributos.enum_tipo_tributo_ibs_municipal_tributacao_regular' }, this.montaCampos(this.context.document === 'Sale Order' ||
2526
+ this.context.document === 'Purchase Order'
2527
+ ? [
2528
+ { campo: EnumCampoTributo.BaseCalculo },
2529
+ { campo: EnumCampoTributo.Aliquota },
2530
+ { campo: EnumCampoTributo.Valor, disabled: true }
2531
+ ]
2532
+ : [
2533
+ { campo: EnumCampoTributo.BaseCalculo },
2534
+ { campo: EnumCampoTributo.Aliquota },
2535
+ { campo: EnumCampoTributo.Valor, disabled: true },
2536
+ { campo: EnumCampoTributo.SituacaoTributaria },
2537
+ {
2538
+ campo: EnumCampoTributo.ClassificacaoTributaria
2539
+ }
2540
+ ], EnumTipoTributo.IBS_MUNICIPAL_TRIBUTACAO_REGULAR)), __assign({ name: EnumTipoTributo.IBS_MUNICIPAL_GOVERNAMENTAL, label: 'erpx.tributos.enum_tipo_tributo_ibs_municipal_governamental' }, this.montaCampos([
2497
2541
  { campo: EnumCampoTributo.BaseCalculo },
2498
2542
  { campo: EnumCampoTributo.Aliquota },
2499
- { campo: EnumCampoTributo.Valor, disabled: true },
2500
- { campo: EnumCampoTributo.SituacaoTributaria },
2501
- {
2502
- campo: EnumCampoTributo.ClassificacaoTributaria
2503
- }
2504
- ], EnumTipoTributo.IBS_MUNICIPAL_TRIBUTACAO_REGULAR)), __assign({ name: EnumTipoTributo.IBS_MUNICIPAL_GOVERNAMENTAL, label: 'erpx.tributos.enum_tipo_tributo_ibs_municipal_governamental' }, this.montaCampos([
2505
- { campo: EnumCampoTributo.BaseCalculo },
2506
- { campo: EnumCampoTributo.Aliquota },
2507
- { campo: EnumCampoTributo.Valor, disabled: true }
2508
- ], EnumTipoTributo.IBS_MUNICIPAL_GOVERNAMENTAL)));
2543
+ { campo: EnumCampoTributo.Valor, disabled: true }
2544
+ ], EnumTipoTributo.IBS_MUNICIPAL_GOVERNAMENTAL))]));
2509
2545
  this.grupos.unshift({
2510
2546
  grupo: "" + ('erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.IBS_MUNICIPAL + '_label'),
2511
2547
  grupoTributo: EnumGrupoTributo.IBS_MUNICIPAL,
@@ -3962,7 +3998,14 @@ var ErpTributosComponent = /** @class */ (function () {
3962
3998
  ? EnumLogicalOperator.Eq
3963
3999
  : EnumLogicalOperator.Ne,
3964
4000
  values: [EnumIndicativoPadrao.EXIGE]
3965
- },
4001
+ }
4002
+ ]);
4003
+ if (tributo === EnumTipoTributo.CBS ||
4004
+ tributo === EnumTipoTributo.IBS_ESTADUAL ||
4005
+ tributo === EnumTipoTributo.IBS_MUNICIPAL ||
4006
+ tributo === EnumTipoTributo.CBS_AJUSTE ||
4007
+ tributo === EnumTipoTributo.IBS_AJUSTE)
4008
+ defaultFilter = __spread(defaultFilter, [
3966
4009
  {
3967
4010
  field: 'indGAjusteCompet',
3968
4011
  operator: tributo === EnumTipoTributo.CBS_AJUSTE ||
@@ -5132,6 +5175,10 @@ var ErpTributosComponent = /** @class */ (function () {
5132
5175
  return (this.context.document === 'Incoming Invoice' ||
5133
5176
  this.context.document === 'Outgoing Invoice');
5134
5177
  };
5178
+ ErpTributosComponent.prototype.isAccrualTaxDocument = function () {
5179
+ return (this.context.document === 'Incoming Invoice' ||
5180
+ this.context.document === 'Purchase Order');
5181
+ };
5135
5182
  ErpTributosComponent.prototype.isFieldRequired = function (field, taxType) {
5136
5183
  var _a, _b, _c;
5137
5184
  var item = this.grupos
@@ -5237,4 +5284,4 @@ var ErpTributosComponent = /** @class */ (function () {
5237
5284
  return ErpTributosComponent;
5238
5285
  }());
5239
5286
  export { ErpTributosComponent };
5240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLWVtcHJlc2FyaWFsL2VycHgtY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdHJpYnV0b3MvZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sYUFBYSxFQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZUFBZSxFQUNmLFdBQVcsRUFDWCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsNkJBQTZCLEVBQzdCLDZDQUE2QyxFQUM3QyxhQUFhLEVBQ2IsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDeEIsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RCxPQUFPLEVBQ0gsV0FBVyxFQUNYLGVBQWUsRUFDZixjQUFjLEVBQ2QsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsV0FBVyxFQUNkLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFF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Q1AsUUFBUSxFQUFFLGNBQWM7WUFDeEIscW5IQUE0QztZQUU1QyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7O1NBQzlCLENBQUM7T0FDVyxvQkFBb0IsQ0E0c1BoQztJQUFELDJCQUFDO0NBQUEsQUE1c1BELElBNHNQQztTQTVzUFksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWRlbnRpZmllcnMgfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0Q29udHJvbCxcbiAgICBGb3JtQnVpbGRlcixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3JtR3JvdXAsXG4gICAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICAgIEJlbmVmaWNpb0Zpc2NhbExvb2t1cCxcbiAgICBDbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUxvb2t1cCxcbiAgICBDcGxUcmlOb3RhU2FpZGFOYXR1cmV6YVJlY2VpdGFQaXNDb2ZpbnNMb29rdXAsXG4gICAgRTAyN0VxaUxvb2t1cCxcbiAgICBFMDI3U3RyTG9va3VwLFxuICAgIEVudW1Mb2dpY2FsT3BlcmF0b3IsXG4gICAgTG9va3VwVmFsaWRhdGlvblV0aWxzXG59IGZyb20gJ0BzZW5pb3ItZ2VzdGFvLWVtcHJlc2FyaWFsL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICAgIEJhZGdlQ29sb3JzLFxuICAgIEJ1dHRvbkFuaW1hdGlvbixcbiAgICBCdXR0b25Qcmlvcml0eSxcbiAgICBCdXR0b25TaXplLFxuICAgIENhbGVuZGFyTG9jYWxlT3B0aW9ucyxcbiAgICBGaWVsZFR5cGUsXG4gICAgRm9ybUZpZWxkLFxuICAgIGlzTnVsbE9yVW5kZWZpbmVkLFxuICAgIExvY2FsZVNlcnZpY2UsXG4gICAgTG9va3VwRmllbGRcbn0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBGZWF0dXJlVG9nZ2xlU2VydmljZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9wbGF0Zm9ybS1jb21wb25lbnRzJztcbmltcG9ydCB7IEdUYWdTZXJ2aWNlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL3BsYXRmb3JtLXV0aWxzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IE1lbnVJdGVtLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmluYWxpemUsIGZpcnN0LCBzY2FuLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFbnVtU2l0dWFjYW9DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYSB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvZW51bS1jbGFzc2lmaWNhY2FvLXRyaWJ1dGFyaWEnO1xuaW1wb3J0IHsgRW51bVRpcG9DYWxjdWxvSW1wb3N0byB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvZW51bS10aXBvLWNhbGN1bG8taW1wb3N0byc7XG5pbXBvcnQgeyBFbnVtSW5kaWNhdGl2b1BhZHJhbyB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvZXJweC1jb20tcHJvY2Vzc28tZmF0dXJhbWVudG8tYmFja2VuZC9lbnVtLWluZGljYXRpdm8tcGFkcmFvJztcbmltcG9ydCB7IExvYWRpbmdDb250ZXh0IH0gZnJvbSAnLi4vdXRpbHMvbG9hZGluZy1jb250ZXh0JztcbmltcG9ydCB7IFRheEFtb3VudENhbGN1bGF0b3IgfSBmcm9tICcuL2NhbGN1bGF0b3JzL3RheC1hbW91bnQtY2FsY3VsYXRvcic7XG5pbXBvcnQgeyBFcnBUcmlidXRvc1NlcnZpY2UgfSBmcm9tICcuL2VycC10cmlidXRvcy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgQ2FtcG9UcmlidXRvLFxuICAgIEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLFxuICAgIEVudW1DYW1wb1RyaWJ1dG8sXG4gICAgRW51bUVzY3JpdHVyYXJBbGlxdW90YUlTUyxcbiAgICBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLFxuICAgIEVudW1HcnVwb1RyaWJ1dG8sXG4gICAgRW51bU1vZEJjLFxuICAgIEVudW1Nb3REZXMsXG4gICAgRW51bU9yaU1lcixcbiAgICBFbnVtUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucyxcbiAgICBFbnVtU2l0dWFjYW8sXG4gICAgZW51bVRpcENyZWRSZWN1cCxcbiAgICBFbnVtVGlwSW1wQ3N0LFxuICAgIEVudW1UaXBPcGUsXG4gICAgRW51bVRpcG9UcmlidXRvLFxuICAgIEl0ZW0sXG4gICAgU3VnZXN0YW8sXG4gICAgVGF4Q2FsY3VsYXRpb25NZW1vcnlcbn0gZnJvbSAnLi9lcnAtdHJpYnV0b3MudHlwZXMnO1xuaW1wb3J0IHsgbWFwRW51bVRpcG9UcmlidXRvVG9FbnVtVGlwSW1wQ3N0IH0gZnJvbSAnLi9tYXBwaW5ncy9lbnVtLXRpcC1pbXAtY3N0LW1hcHBpbmcnO1xuaW1wb3J0IHsgUnVsZXNTZXJ2aWNlIH0gZnJvbSAnLi9ydWxlcy9ydWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFRheFJvdW5kaW5nU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGF4LXJvdW5kaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGF4U3RvcmUgfSBmcm9tICcuL3N0b3Jlcy90YXguc3RvcmUnO1xuaW1wb3J0IHsgaXNUYXhGcm9tVGF4UmVmb3JtIH0gZnJvbSAnLi90YXgtcmVmb3JtLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi90eXBlcy9jb250ZXh0JztcbmltcG9ydCB7IEdyb3VwIH0gZnJvbSAnLi90eXBlcy9ncm91cCc7XG5pbXBvcnQgeyBUYXggfSBmcm9tICcuL3R5cGVzL3RheCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXJwLXRyaWJ1dG9zJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lcnAtdHJpYnV0b3MuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtMb2FkaW5nQ29udGV4dF1cbn0pXG5leHBvcnQgY2xhc3MgRXJwVHJpYnV0b3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKVxuICAgIGNvbnRleHQ6IENvbnRleHQ7XG4gICAgQElucHV0KCkgc3VnZXN0b2VzOiBTdWdlc3Rhb1tdO1xuICAgIEBJbnB1dCgpIGNhbXBvc0Jsb3F1ZWFkb3MgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCB0cmlidXRvcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJpYnV0b3NWYWx1ZTtcbiAgICB9XG4gICAgc2V0IHRyaWJ1dG9zKHZhbCkge1xuICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUgPSB2YWw7XG4gICAgfVxuICAgIEBJbnB1dCgpIGRvbWluaW8/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2Vydmljbz86IHN0cmluZztcbiAgICBASW5wdXQoKSBjdXJyZW5jeUxvY2FsZU9wdGlvbnM/OiBhbnkgPSB7XG4gICAgICAgIGN1cnJlbmN5U3ltYm9sOiAnJyxcbiAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJywnLFxuICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJ1xuICAgIH07XG4gICAgQElucHV0KCkgaWRzVGF4ZXNNZW1vcmlhQ2FsY3Vsbz86IFRheENhbGN1bGF0aW9uTWVtb3J5W107XG4gICAgQElucHV0KCkgcGVybWlzc2lvbk1lbW9yaWFDYWxjdWxvPzogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKSB0cmlidXRvc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGF4W10+KCk7XG5cbiAgICByZWFkb25seSBCYWRnZUNvbG9ycyA9IEJhZGdlQ29sb3JzO1xuICAgIHJlYWRvbmx5IEJ1dHRvblByaW9yaXR5ID0gQnV0dG9uUHJpb3JpdHk7XG4gICAgcmVhZG9ubHkgQnV0dG9uU2l6ZSA9IEJ1dHRvblNpemU7XG4gICAgcmVhZG9ubHkgQnV0dG9uQW5pbWF0aW9uID0gQnV0dG9uQW5pbWF0aW9uO1xuXG4gICAgcHVibGljIGdydXBvczogR3JvdXBbXSA9IFtdO1xuICAgIHB1YmxpYyB0cmlidXRvc1ZhbHVlOiBUYXhbXSA9IFtdO1xuICAgIHB1YmxpYyByZWxvYWQgPSB0cnVlO1xuICAgIHB1YmxpYyBpbmRleEFjY29yZGlvbjogbnVtYmVyW10gPSBbXTtcbiAgICBwdWJsaWMgcHJlZml4TGFiZWw6IHN0cmluZztcblxuICAgIHByaXZhdGUgbWVudUl0ZW1QaXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ29maW5zID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlwaSA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1Jc3MgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSW1wb3J0YWNvZXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtUmV0ZW5jb2VzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUljbXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ2lkZVRlY25vbG9naWEgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ0JTID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlCU0VzdGFkdWFsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlCU011bmljaXBhbCA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1JQlNDcmVkaXRvUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlTID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUNCU19JQlNfQWp1c3RlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUNic0lic1RyYW5zZmVyZW5jaWFDcmVkaXRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUljbXNDcmVkaXRvUHJlc3VtaWRvID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpQ3JlZGl0YWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcGlEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlzcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXNzUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNzbGxSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlycmZSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUluc3NSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUluc3NQYXRyb25hbCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc1N0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1GY3BTdCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc0NvYnJhZG9BbnRlcmlvcm1lbnRlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1GY3BDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc0VmZXRpdmFtZW50ZUNyZWRpdGFkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtRmNwID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zRGlmZXJpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1EaWZlcmVuY2lhbEFsaWNvdGEgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnMgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUZjcFVmRGVzdGlubyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc1VmRGVzdGlubyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRTaXR1YWNhb1RyaWJ1dGFyaWEgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSWNtc0Z1dHVybyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJY21zU2ltcGxlcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJY21zQ3JlZGl0b1ByZXN1bWlkbyA9IHRydWU7XG4gICAgcHJpdmF0ZSByZXF1aXJlZERpZmFsRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZElDTVNfVUZfRGVzdGlub19EZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkRkNQX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNGYXR1cmFtZW50byA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJbXBvc3RvTmFvUmVjdXBlcmFkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRiYXNlQ2FsY3Vsb0NyZWRpdG8gPSB0cnVlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRQZXJjZW50dWFsUmVkdWNhbyA9IHRydWU7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNTdFNvbGlkYXJpbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJY21zU3RSZXRpZG9BbnQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkRmNwU3RSZWRpdG9BbnQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zPzogYW55O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHJlYWRvbmx5IGxvYWRpbmdDb250ZXh0OiBMb2FkaW5nQ29udGV4dCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZTAyN1N0ckxvb2t1cDogRTAyN1N0ckxvb2t1cCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBiZW5lZmljaW9GaXNjYWxMb29rdXA6IEJlbmVmaWNpb0Zpc2NhbExvb2t1cCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlMDI3ZXFpTG9va3VwOiBFMDI3RXFpTG9va3VwLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG5hdHVyZXphUmVjZWl0YUxvb2t1cDogQ3BsVHJpTm90YVNhaWRhTmF0dXJlemFSZWNlaXRhUGlzQ29maW5zTG9va3VwLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNsYXNzaWZpY2FjYW9UcmlidXRhcmlhTG9va3VwOiBDbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUxvb2t1cCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb29rdXBVdGlsczogTG9va3VwVmFsaWRhdGlvblV0aWxzLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVycFRyaWJ1dG9zU2VydmljZTogRXJwVHJpYnV0b3NTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGd0YWc6IEdUYWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJ1bGVzU2VydmljZTogUnVsZXNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdGF4Um91bmRpbmdTZXJ2aWNlOiBUYXhSb3VuZGluZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdGF4QW1vdW50Q2FsY3VsYXRvcjogVGF4QW1vdW50Q2FsY3VsYXRvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmZWF0dXJlVG9nZ2xlU2VydmljZTogRmVhdHVyZVRvZ2dsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdGF4U3RvcmU6IFRheFN0b3JlXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZG9taW5pbyA9IHRoaXMuZG9taW5pbyA/IHRoaXMuZG9taW5pbyA6ICdlcnB4X2NwbF9pbXAnO1xuICAgICAgICB0aGlzLnNlcnZpY28gPSB0aGlzLnNlcnZpY28gPyB0aGlzLnNlcnZpY28gOiAnY2FkYXN0cm9zJztcblxuICAgICAgICB0aGlzLnByZWZpeExhYmVsID0gYCR7dGhpcy5kb21pbmlvfS4ke3RoaXMuc2Vydmljb31gO1xuXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucykubGVuZ3RoID09IDApXG4gICAgICAgICAgICB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICBjdXJyZW5jeVN5bWJvbDogJycsXG4gICAgICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJywnLFxuICAgICAgICAgICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogJy4nXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICBjdXJyZW5jeVN5bWJvbDogJyUnLFxuICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMudGhvdXNhbmRzU2VwYXJhdG9yXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5nZXRBcnJlZG9uZGFtZW50b0FibnQoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhcmlhdmVpc0FsdGVyYWRhcyA9IE9iamVjdC5rZXlzKGNoYW5nZXMpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdmFyaWF2ZWlzQWx0ZXJhZGFzLmluY2x1ZGVzKCdzdWdlc3RvZXMnKSB8fFxuICAgICAgICAgICAgdmFyaWF2ZWlzQWx0ZXJhZGFzLmxlbmd0aCA+IDFcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyVmFyaWFibGVzKCk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlID09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZS5sZW5ndGggPT0gMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncnVwb3MgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUgPSBbXTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWxvYWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdydXBvcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVHJpYnV0b3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFRyaWJ1dG9zKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuY2FtcG9zQmxvcXVlYWRvcyA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkT25seVRyaWJ1dG9zKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmxvb2t1cFV0aWxzLnJlc2V0U3RvcmVkS2V5cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBtZW1vcmlhQ2FsY3VsbyhpbXBvc3RvOiBhbnkpIHtcbiAgICAgICAgbGV0IHRyaWJ1dG8gPSB0aGlzLmlkc1RheGVzTWVtb3JpYUNhbGN1bG8uZmluZCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC50aXBvVHJpYnV0byA9PSBpbXBvc3RvLm5hbWU7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFicmlyV2luZG93VXJsTWVtb3JpYUNhbGN1bG8odHJpYnV0byk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYWtlVXJsV2luZG93KHBhcmFtczogSWRlbnRpZmllcnMsIHRyaWJ1dG8/OiBhbnkpIHtcbiAgICAgICAgdGhpcy5lcnBUcmlidXRvc1NlcnZpY2VcbiAgICAgICAgICAgIC5nZXRGcm9udGVuZChwYXJhbXMpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgd2luZG93Lm9wZW4oYCR7cmVzcG9uc2UuZnJvbnRlbmRzWzBdLmVtYmVkZGVkVVJMfWAsICdfYmxhbmsnKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZ3RhZy5zZW5kQnV0dG9uQ2xpY2soJ0JvdMOjbyBhY2Vzc2FyIHBhcmFtZXRyaXphw6fDo28nLCB7XG4gICAgICAgICAgICBpbXBvc3RvczogdHJpYnV0by50aXBvVHJpYnV0b1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzYWJsZWRCdXR0b24oaXRlbTogSXRlbSkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAuZ2V0KCdpbXBvc3RvTWFudWFsJykudmFsdWUgfHxcbiAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykudmFsdWUgPT09XG4gICAgICAgICAgICAgICAgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUwgfHxcbiAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykudmFsdWUgPT09XG4gICAgICAgICAgICAgICAgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5IRVJEQURPIHx8XG4gICAgICAgICAgICB0aGlzLmlkc1RheGVzTWVtb3JpYUNhbGN1bG8gPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAhdGhpcy5pZHNUYXhlc01lbW9yaWFDYWxjdWxvLmZpbmQoKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnRpcG9UcmlidXRvID09IGl0ZW0ubmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlkUGFyYW1ldHJvICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBoaWRlQnV0dG9uKGltcG9zdG86IGFueSkge1xuICAgICAgICBzd2l0Y2ggKGltcG9zdG8pIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYWJyaXJXaW5kb3dVcmxNZW1vcmlhQ2FsY3Vsbyh0cmlidXRvOiBhbnkpIHtcbiAgICAgICAgaWYgKCF0cmlidXRvPy5pZFBlcmZpbFRyaWJ1dGFyaW8gJiYgIXRyaWJ1dG8/LmlkUGFyYW1ldHJvKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2Vycm9yX21lbW9yaWFfY2FsY3Vsb19tZXNzYWdlX3RpdGxlJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJyb3JfbWVtb3JpYV9jYWxjdWxvX21lc3NhZ2VfY29udGVudCdcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBpZGVudGlmaWVyczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZG9tYWluTmFtZTogJ2VycHhfY3BsX2ltcCcsXG4gICAgICAgICAgICAgICAgICAgIHNlcnZpY2VOYW1lOiAnaW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgICAgICBhcHBOYW1lOiAnZXJweC1jcGwtaW1wLWltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGU6IGAke3RoaXMudmFsaWRhVGVsYSh0cmlidXRvKX1gXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMubWFrZVVybFdpbmRvdyhwYXJhbXMsIHRyaWJ1dG8pO1xuICAgIH1cblxuICAgIHZhbGlkYVRlbGEodGF4ZXM6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5pc1N0VGF4ZXModGF4ZXMudGlwb1RyaWJ1dG8pKSB7XG4gICAgICAgICAgICBpZiAodGF4ZXMuaWRQYXJhbWV0cm9Fc3RhZG8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYGljbXNzdC8ke3RheGVzLmlkUGFyYW1ldHJvU3R9L2ljbXNzdC1wYXJhbWV0cm9zLyR7dGF4ZXMuaWRQYXJhbWV0cm9Fc3RhZG99P3BlcmZpbFRyaWJ1dGFyaW9JZD0ke3RheGVzLmlkUGVyZmlsVHJpYnV0YXJpb30mcGFyYW1ldHJvSW1wb3N0b3NJZD0ke3RheGVzLmlkUGFyYW1ldHJvfWA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBgaWNtc3N0LyR7dGF4ZXMuaWRQYXJhbWV0cm99L2ljbXNzdC1wYXJhbWV0cm9zLyR7dGF4ZXMuaWRQYXJhbWV0cm9TdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgcGVyZmlsLXRyaWJ1dGFyaW8vJHt0YXhlcy5pZFBlcmZpbFRyaWJ1dGFyaW99L3BhcmFtZXRyaXphY2FvLWltcG9zdG9zLyR7dGhpcy5nZXRUcmlidXRvUGFpKHRheGVzLnRpcG9UcmlidXRvKX0vJHtcbiAgICAgICAgICAgIHRheGVzLmlkUGFyYW1ldHJvXG4gICAgICAgIH1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNTdFRheGVzKHRheGVzOiBhbnkpIHtcbiAgICAgICAgc3dpdGNoICh0YXhlcykge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRyaWJ1dG9QYWkodHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIHN3aXRjaCAodHJpYnV0bykge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwaXMnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdjb2ZpbnMnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2lwaSc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1M6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaXNzJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2lpJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ1NMTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklSUkY6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1M6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9SQVQ6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMOlxuICAgICAgICAgICAgICAgIHJldHVybiAncmV0ZW5jb2VzJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVM6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0VGRVRJVk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVM6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5POlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRPX1BSRVNVTUlETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2ljbXMnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBOlxuICAgICAgICAgICAgICAgIHJldHVybiAnY2lkZSc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlM6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfRElGRVJJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0dPVkVSTkFNRU5UQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdjYnMnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0RJRkVSSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9HT1ZFUk5BTUVOVEFMOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWJzLWVzdGFkdWFsJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0dPVkVSTkFNRU5UQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpYnMtbXVuaWNpcGFsJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaXMnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJWYXJpYWJsZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLnJlbG9hZCkge1xuICAgICAgICAgICAgdGhpcy5pbmRleEFjY29yZGlvbiA9IFstMV07XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ0JTID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSUJTRXN0YWR1YWwgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JQlNNdW5pY2lwYWwgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JUyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVBpcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNvZmlucyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlwaSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlzcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUltcG9ydGFjb2VzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSWNtcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNpZGVUZWNub2xvZ2lhID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNic0lic1RyYW5zZmVyZW5jaWFDcmVkaXRvID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ2lkZVRlY25vbG9naWEgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlPdXRyYXNEZXNwZXNhcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXNzUmV0aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUltcG9zdG9JbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JlY3VwZXJhckltcG9ydGFjYW8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmV0aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNzbGxSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXJyZlJldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUmV0aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUluc3NQYXRyb25hbCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zU3QgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwU3QgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0NvYnJhZG9BbnRlcmlvcm1lbnRlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcENvYnJhZG9BbnRlcmlvcm1lbnRlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0VmZXRpdmFtZW50ZUNyZWRpdGFkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3AgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0RpZmVyaWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbURpZmVyZW5jaWFsQWxpY290YSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNGYXR1cmVtZW50byA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc1VmRGVzdGlubyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BVZkRlc3Rpbm8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRTaXR1YWNhb1RyaWJ1dGFyaWEgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zRnV0dXJvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1NpbXBsZXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzRmF0dXJhbWVudG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zU3RTb2xpZGFyaW8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zU3RSZXRpZG9BbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRGY3BTdFJlZGl0b0FudCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVUcmlidXRvcygpIHtcbiAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlLm1hcCgoaXQpID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXQudGlwb0ltcG9zdG8pIHtcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlM6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0RJRkVSSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19DUkVESVRPX1BSRVNVTUlETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhQ0JTKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfRElGRVJJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUlCU0VzdGFkdWFsKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUw6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9ESUZFUklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUlCU011bmljaXBhbCgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJQlNDcmVkaXRvUHJlc3VtaWRvKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSVMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhQ0JTSUJTRXN0b3Jub0NyZWRpdG8oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0FKVVNURTpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfQUpVU1RFOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhQ0JTX0lCU19BanVzdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSQU5TRkVSRU5DSUFfQ1JFRElUTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhQ0JTSUJTVHJhbnNmZXJlbmNpYUNyZWRpdG8oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJUzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YVBpcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVI6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhQ29maW5zKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSTpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfT1VUUkFTX0RFU1BFU0FTOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSXBpKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTUzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSXNzKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSW1wb3J0YWNvZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNTTEw6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVJSRjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUw6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFSZXRlbmNvZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNUzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRUZFVElWTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSWNtcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSWNtc0NyZWRpdG9QcmVzdW1pZG8oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhQ2lkZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1JBVDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YVJldGVuY29lc0Z1bnJ1cmFsKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRPbmx5VHJpYnV0b3MoKTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGhpcy5ncnVwb3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBncm91cC5pdGVtKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRyaWJ1dG9zKCkge1xuICAgICAgICBpZiAodGhpcy5ncnVwb3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLm1hcCgoZ3J1cG8pID0+XG4gICAgICAgICAgICAgICAgZ3J1cG8uaXRlbS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlLm1hcCgoaXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLm5hbWUgPT09IGl0LnRpcG9JbXBvc3RvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAucGF0Y2hWYWx1ZShpdCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0oaXQudGlwb0ltcG9zdG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyhpdC50aXBvSW1wb3N0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiB0aGlzLmdydXBvcykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBncm91cC5pdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVZhbHVlQ2hhbmdlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhbGlkYXRvcnModHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIGlmICh0aGlzLmdydXBvcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKChncnVwbykgPT4ge1xuICAgICAgICAgICAgICAgIGdydXBvLml0ZW1cbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaXQpID0+IGl0Lm5hbWUgPT0gdHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoaXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1ZhbHVlID0gT2JqZWN0LmtleXMoaXQuZm9ybUdyb3VwLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkgIT09ICdpbXBvc3RvTWFudWFsJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSBFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5nZXQoa2V5KS52YWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmdldChrZXkpLnZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoaXQuZm9ybUdyb3VwLnZhbHVlKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT0gJ3BlcmNlbnR1YWxSZWR1Y2FvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PSAncGVyY2VudHVhbERpZmVyaW1lbnRvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PSAncGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT09ICdwZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCgxMDAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICd2YWxvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ3NpdHVhY2FvVHJpYnV0YXJpYScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdvYnNlcnZhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTIwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdjb2RpZ29BcnJlY2FkYWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2JlbmVmaWNpb0Zpc2NhbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnaW5kaWNhdGl2b0FxdWlzaWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnY29kaWdvVHJpYnV0YWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnSW1wb3N0b05hb1JlY3VwZXJhZG8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdiYXNlQ2FsY3Vsb0NyZWRpdG8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gIT09ICdpbXBvc3RvTWFudWFsJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0byAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gJ25hdHVyZXphUmVjZWl0YScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gIT09ICd2YWxvckRlZHVjYW8nICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAncmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gIT09ICdyZWR1Y2FvQWxpcXVvdGEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoaXQuZm9ybUdyb3VwLnZhbHVlKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT0gJ3BlcmNlbnR1YWxSZWR1Y2FvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PSAncGVyY2VudHVhbERpZmVyaW1lbnRvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PSAncGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT09ICdwZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCgxMDAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICd2YWxvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZSh2YWxpZGF0b3JzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdvYnNlcnZhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTIwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdjb2RpZ29BcnJlY2FkYWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2JlbmVmaWNpb0Zpc2NhbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnaW5kaWNhdGl2b0FxdWlzaWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnSW1wb3N0b05hb1JlY3VwZXJhZG8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlQWxsRm9ybUZpZWxkcyhmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgICAgICBPYmplY3Qua2V5cyhmb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmdldChmaWVsZCk7XG4gICAgICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sKVxuICAgICAgICAgICAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUFsbEZvcm1GaWVsZHMoY29udHJvbCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGEgYSB2YWxpZGHDp8OjbyBkZSB0b2RvcyBvcyBjYW1wb3MgZG9zIGZvcm11bMOhcmlvcyBkZW50cm8gZG9zIGdydXBvcy5cbiAgICAgKlxuICAgICAqICoqQXRlbsOnw6NvOioqIEVzdGUgbcOpdG9kbyAqKm7Do28qKiBkZXZlIHNlciB1dGlsaXphZG8gbm8gdGVtcGxhdGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgc2UgdG9kb3Mgb3MgZm9ybXVsw6FyaW9zIGZvcmVtIHbDoWxpZG9zIGUgbmVuaHVtIHZhbG9yIGRlIGltcG9zdG8gZm9yIG5lZ2F0aXZvOyBjYXNvIGNvbnRyw6FyaW8sIHJldG9ybmEgYGZhbHNlYC5cbiAgICAgKi9cbiAgICB2YWxpZGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmZpbmRHcm91cFdpdGhOZWdhdGl2ZVRheFZhbHVlKCk7XG5cbiAgICAgICAgaWYgKGdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgc3RpY2t5OiB0cnVlLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZXJyb3InKSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVycm9yX3RheF93aXRoX25lZ2F0aXZlX3RheF92YWx1ZScsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRheDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJHtncm91cC5ncnVwb1RyaWJ1dG8udG9Mb3dlckNhc2UoKX1gXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ3J1cG9zLmV2ZXJ5KChncm91cCkgPT5cbiAgICAgICAgICAgIGdyb3VwLml0ZW1cbiAgICAgICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5mb3JtR3JvdXAuZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgLmV2ZXJ5KChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVBbGxGb3JtRmllbGRzKGl0ZW0uZm9ybUdyb3VwKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5mb3JtR3JvdXAudmFsaWQ7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWZXJpZmljYSBzZSBhbGd1bSBmb3JtdWzDoXJpbyBlc3TDoSBpbnbDoWxpZG8uXG4gICAgICpcbiAgICAgKiBEZXZlIHNlciB1dGlsaXphZG8gc29tZW50ZSBubyB0ZW1wbGF0ZSBwYXJhIGNvbnRyb2xlIGRlIGJvdMO1ZXMgb3UgZXhpYmnDp8OjbyBkZSBtZW5zYWdlbnMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgc2UgYWxndW0gYGZvcm1Hcm91cGAgZXN0aXZlciBpbnbDoWxpZG8gb3Ugc2UgYWxndW0gdmFsb3IgZGUgaW1wb3N0byBmb3IgbmVnYXRpdm8uXG4gICAgICovXG4gICAgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgISF0aGlzLmZpbmRHcm91cFdpdGhOZWdhdGl2ZVRheFZhbHVlKCkgfHxcbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnNvbWUoKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgIGdyb3VwLml0ZW0uc29tZSgoaXRlbSkgPT4gaXRlbS5mb3JtR3JvdXAuaW52YWxpZClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRHcm91cFdpdGhOZWdhdGl2ZVRheFZhbHVlKCk6IEdyb3VwIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3J1cG9zXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PSBFbnVtR3J1cG9UcmlidXRvLkNCUyB8fFxuICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMIHx8XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT0gRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMIHx8XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgIEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9ESUZFUklET1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmZpbmQoKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgIGdyb3VwLml0ZW0uc29tZSgoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgbmV3IEJpZ051bWJlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwLmdldCgndmFsb3InKS52YWx1ZSA/PyAwXG4gICAgICAgICAgICAgICAgICAgICkuaXNMZXNzVGhhbigwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVUd29XYXlEYXRhQmluZGluZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXJySXRlbnM6IGFueSA9IFtdO1xuICAgICAgICBpZiAodGhpcy5ncnVwb3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLm1hcCgoZ3J1cG8pID0+IHtcbiAgICAgICAgICAgICAgICBncnVwby5pdGVtLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlQWxsRm9ybUZpZWxkcyhpdGVtLmZvcm1Hcm91cCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyaWJ1dG9zVmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGV1TWF0aCA9IHRoaXMudHJpYnV0b3NWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmlidXRvKSA9PiB0cmlidXRvLnRpcG9JbXBvc3RvID09IGl0ZW0ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh0cmlidXRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50cmlidXRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRldU1hdGggJiYgZGV1TWF0aC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJJdGVucy5wdXNoKGRldU1hdGhbMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJJdGVucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlwb0ltcG9zdG86IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJySXRlbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlwb0ltcG9zdG86IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlbG9hZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRyaWJ1dG9zQ2hhbmdlLmVtaXQoYXJySXRlbnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbm92b0ltcG9zdG9NYW51YWwoaXRlbTogSXRlbSwgc2luZ2xlQ2hhbmdlPzogYm9vbGVhbikge1xuICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybShpdGVtLm5hbWUgYXMgRW51bVRpcG9UcmlidXRvKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmb3JtRmllbGQgb2YgaXRlbS5mb3JtRmllbGQpIHtcbiAgICAgICAgICAgICAgICBmb3JtRmllbGQub25CbHVyPy5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzaW5nbGVDaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5ncnVwb3MuZmluZCgoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgZ3JvdXAuaXRlbS5pbmNsdWRlcyhpdGVtKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVmFsdWVDaGFuZ2VzKHtcbiAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgIGdyb3VwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBY3Rpb25zKCk6IE1lbnVJdGVtW10ge1xuICAgICAgICBjb25zdCBtZW51OiBNZW51SXRlbVtdID0gW107XG5cbiAgICAgICAgbWVudS5wdXNoKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2Nic19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtQ0JTLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFDQlMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09IEVudW1HcnVwb1RyaWJ1dG8uQ0JTXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaWJzX2VzdGFkdWFsX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JQlNFc3RhZHVhbCxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSUJTRXN0YWR1YWwoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaWJzX211bmljaXBhbF9sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSUJTTXVuaWNpcGFsLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJQlNNdW5pY2lwYWwoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2lic19jcmVkaXRvX3ByZXN1bWlkb19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSUJTQ3JlZGl0b1ByZXN1bWlkbyxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSUJTQ3JlZGl0b1ByZXN1bWlkbygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5hY3Rpb25zX2lzX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JUyxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSVMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09IEVudW1HcnVwb1RyaWJ1dG8uSVNcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19jYnNfaWJzX2VzdG9ybm9fY3JlZGl0b19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtQ0JTX0lCU19FU1RPUk5PX0NSRURJVE8sXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUNCU0lCU0VzdG9ybm9DcmVkaXRvKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdydXBvcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtR3J1cG9UcmlidXRvLkNCU19JQlNfRVNUT1JOT19DUkVESVRPXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmlzaWJsZTpcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlICE9PSAnRGViaXQnKSB8fFxuICAgICAgICAgICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLmRlYml0SW52b2ljZVR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ludmVudG9yeSBMb3NzJykgfHxcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlICE9PSAnQ3JlZGl0JylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY2JzX2lic19hanVzdGVfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUNCU19JQlNfQWp1c3RlLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFDQlNfSUJTX0FqdXN0ZSgpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX0FKVVNURVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHZpc2libGU6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29udGV4dC5pbnZvaWNlLmRlYml0SW52b2ljZVR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAnQ3JlZGl0IENhbmNlbGxhdGlvbiBFeGVtcHQgT3V0cHV0cycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLmRlYml0SW52b2ljZVR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlYml0cyBVbnByb2Nlc3NlZCBJbnZvaWNlcyBBc3Nlc3NtZW50JyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UuZGViaXRJbnZvaWNlVHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGlzcXVhbGlmaWNhdGlvbiBmcm9tIFNpbXBsZXMgTmFjaW9uYWwnKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19jYnNfaWJzX3RyYW5zZmVyZW5jaWFfY3JlZGl0b19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtQ2JzSWJzVHJhbnNmZXJlbmNpYUNyZWRpdG8sXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUNCU0lCU1RyYW5zZmVyZW5jaWFDcmVkaXRvKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdydXBvcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtR3J1cG9UcmlidXRvLkNCU19JQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmlzaWJsZTpcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5jb250ZXh0Lmludm9pY2UuZGViaXRJbnZvaWNlVHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ3JlZGl0IFRyYW5zZmVyIENvb3BlcmF0aXZlcycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS5kZWJpdEludm9pY2VUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ3JlZGl0IFRyYW5zZmVyIFN1Y2Nlc3Npb24nKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnQ3JlZGl0JyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UuY3JlZGl0SW52b2ljZVR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NyZWRpdCBUcmFuc2ZlciBTdWNjZXNzaW9uJylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICdyZXRlbmNhb0Z1bnJ1cmFsJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19yZXRlbmNhb19mdW5ydXJhbF9sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YVJldGVuY29lc0Z1bnJ1cmFsKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ3BpcycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfcGlzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1QaXMsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YVBpcygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICdjb2ZpbnMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2NvZmluc19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtQ29maW5zLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFDb2ZpbnMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAnaXBpJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pcGlfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlwaSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSXBpKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ2ljbXMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2ljbXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUljbXMsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUljbXMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGV4dC5kb2N1bWVudCAhPT0gJ1NhbGUgT3JkZXInKSB7XG4gICAgICAgICAgICBtZW51LnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiAnaW1wb3J0YWNvZXMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2ltcG9ydGFjb2VzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSW1wb3J0YWNvZXMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS5pdGVtLnR5cGUgPT09ICdTZXJ2aWNlJykgfHxcbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcicgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQub3JkZXIuaXRlbS50eXBlID09PSAnU2VydmljZScpIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcicgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQub3JkZXIuaXRlbS50eXBlID09PSAnU2VydmljZScpXG4gICAgICAgICkge1xuICAgICAgICAgICAgbWVudS5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogJ2lzcycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaXNzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1Jc3MsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUlzcygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZScgfHxcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lm9yZGVyLml0ZW0udHlwZSA9PT0gJ1NlcnZpY2UnKSB8fFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lm9yZGVyLml0ZW0udHlwZSA9PT0gJ1NlcnZpY2UnKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIG1lbnUucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6ICdyZXRlbmNvZXMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX3JldGVuY29lc19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFSZXRlbmNvZXMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS5pdGVtLnR5cGUgPT09ICdTZXJ2aWNlJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIG1lbnUucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6ICdjaWRlJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19jaWRlX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhQ2lkZSgpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZScgfHxcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlICE9PSAnRGViaXQnKVxuICAgICAgICApXG4gICAgICAgICAgICBtZW51LnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2ljbXNfY3JlZGl0b19wcmVzdW1pZG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUljbXNDcmVkaXRvUHJlc3VtaWRvLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJY21zQ3JlZGl0b1ByZXN1bWlkbygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBtZW51O1xuICAgIH1cblxuICAgIHByaXZhdGUgcG9kZU1vc3RyYXJJbXBvc3RvcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnQ3JlZGl0JykgfHxcbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCcpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUljbXNDcmVkaXRvUHJlc3VtaWRvKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUljbXNDcmVkaXRvUHJlc3VtaWRvKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUljbXNDcmVkaXRvUHJlc3VtaWRvID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfY3JlZGl0b19wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmVuZWZpY2lvRmlzY2FsIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE8gKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDaWRlKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUNpZGVUZWNub2xvZ2lhID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ2lkZVRlY25vbG9naWEgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG4gICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUEsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2lkZV90ZWNub2xvZ2lhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jaWRlX3RlY25vbG9naWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSWNtcygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JY21zID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSWNtcyA9IHRydWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19jcmVkaXRhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc2ltcGxlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGVzb25lcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxEaWZlcmltZW50b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkRJRkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19kaWZhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5ESUZBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiogQElDTVNfU1QgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JSZWNvbGhpZG9QZWxvU3Vic3RpdHV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckljbXNTdFJldGlkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIERJRkFMIERFVk9MVklETyAqL1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm9fZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hRGVzdGlub1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3VmX2Rlc3Rpbm9fZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19jcmVkaXRhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc2ltcGxlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGVzb25lcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxEaWZlcmltZW50b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkRJRkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19kaWZhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5ESUZBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiogQElDTVNfU1QgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JSZWNvbGhpZG9QZWxvU3Vic3RpdHV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckljbXNTdFJldGlkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc2ltcGxlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGVzb25lcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxEaWZlcmltZW50b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkRJRkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19kaWZhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5ESUZBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc191Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiogQElDTVNfU1QgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JSZWNvbGhpZG9QZWxvU3Vic3RpdHV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckljbXNTdFJldGlkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2VmZXRpdm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PcmlnZW0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc191Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3NvbGlkYXJpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9ic2VydmFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zaW1wbGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbXBvc3RvTmFvUmVjdXBlcmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3NvbGlkYXJpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlub19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmFEZXN0aW5vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3BfdWZfZGVzdGlub19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklDTVMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhUmV0ZW5jb2VzKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbVJldGVuY29lcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lcyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NzbGxfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ1NMTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklSUkYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lycmZfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVJSRlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3BhdHJvbmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NzbGxfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUlJGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcGF0cm9uYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlICE9PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklSUkZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ1NMTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklSUkYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lycmZfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklSUkZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NzbGxfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUlJGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVJSRlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3BhdHJvbmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uUkVURU5DT0VTICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uUkVURU5DT0VTLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhUmV0ZW5jb2VzRnVucnVyYWwoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1SZXRlbmNvZXNGdW5ydXJhbCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1MsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mdW5ydXJhbF9pbnNzJyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkluZGljYXRpdm9BcXVpc2ljYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfSU5TU1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9SQVQsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mdW5ydXJhbF9yYXQnLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uSW5kaWNhdGl2b0FxdWlzaWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9SQVRcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVIsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mdW5ydXJhbF9zZW5hcicsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbmRpY2F0aXZvQXF1aXNpY2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfdG90YWwnLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfVE9UQUxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uRlVOUlVSQUwgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5GVU5SVVJBTCxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZnVucnVyYWxUb3RhbCA9IGl0ZW0uZmluZChcbiAgICAgICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5uYW1lID09PSAnRlVOUlVSQUxfVE9UQUwnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZnVucnVyYWxUb3RhbC5mb3JtR3JvdXAuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUltcG9ydGFjb2VzKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUltcG9ydGFjb2VzID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSW1wb3J0YWNvZXMgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5jb250ZXh0LmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnQ29udHJvbGxlcnNoaXAgT3V0Z29pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ltcG9zdG9faW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbXBvc3RvX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmVjdXBlcmFyX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmVjdXBlcmFyX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW1wb3N0b19pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcl9pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JlY3VwZXJhcl9pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSU1QT1JUQUNPRVMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JTVBPUlRBQ09FUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlzcygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1Jc3MgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Jc3MgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuY29udGV4dC5kb2N1bWVudCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ091dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICBjYXNlICdTYWxlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkVzY3JpdHVyYXJBbGlxdW90YUlTU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yRGVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yRGVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yRGVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yRGVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklTUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklTUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNCUygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1DQlMpIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtQ0JTID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBjb25zdCBjYW1wb3MgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8sXG4gICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhLFxuICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLkNCU1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckJydXRvLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGEgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbCB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhRWZldGl2YSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmICh0aGlzLmlzSW52b2ljZURvY3VtZW50KCkpIHtcbiAgICAgICAgICAgIGNhbXBvcy5wdXNoKFxuICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLFxuICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5DQlNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2FtcG9zX0NCU19DUkVESVRPX1BSRVNVTUlETyA9IFtcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3NfQ0JTX0NSRURJVE9fUFJFU1VNSURPLnB1c2goXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUNyZWRpdG9QcmVzdW1pZG9cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50b1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjYW1wb3NfQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUiA9IFtcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3NfQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUi5wdXNoKFxuICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNCUyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2JzJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKGNhbXBvcywgRW51bVRpcG9UcmlidXRvLkNCUylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNCU19ESUZFUklETyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2JzX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DQlNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic19jcmVkaXRvX3ByZXN1bWlkbycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgY2FtcG9zX0NCU19DUkVESVRPX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19DUkVESVRPX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNCU19UUklCVVRBQ0FPX1JFR1VMQVIsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic190cmlidXRhY2FvX3JlZ3VsYXInLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIGNhbXBvc19DQlNfVFJJQlVUQUNBT19SRUdVTEFSLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNCU19HT1ZFUk5BTUVOVEFMLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfZ292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0dPVkVSTkFNRU5UQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkNCUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSUJTRXN0YWR1YWwoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSUJTRXN0YWR1YWwpIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtSUJTRXN0YWR1YWwgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfZXN0YWR1YWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckJydXRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhRWZldGl2YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9ESUZFUklETyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfRElGRVJJRE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfVFJJQlVUQUNBT19SRUdVTEFSLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfZXN0YWR1YWxfdHJpYnV0YWNhb19yZWd1bGFyJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX1RSSUJVVEFDQU9fUkVHVUxBUlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9HT1ZFUk5BTUVOVEFMLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfZXN0YWR1YWxfZ292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0dPVkVSTkFNRU5UQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTCArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSUJTTXVuaWNpcGFsKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlCU011bmljaXBhbCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1JQlNNdW5pY2lwYWwgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX211bmljaXBhbCcsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWxfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfRElGRVJJRE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX1RSSUJVVEFDQU9fUkVHVUxBUixcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX211bmljaXBhbF90cmlidXRhY2FvX3JlZ3VsYXInLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX1RSSUJVVEFDQU9fUkVHVUxBUlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfR09WRVJOQU1FTlRBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX211bmljaXBhbF9nb3Zlcm5hbWVudGFsJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0dPVkVSTkFNRU5UQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUwgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUwsXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJQlNDcmVkaXRvUHJlc3VtaWRvKCk6IEl0ZW1bXSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSUJTQ3JlZGl0b1ByZXN1bWlkbykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1JQlNDcmVkaXRvUHJlc3VtaWRvID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBjb25zdCBjYW1wb3M6IENhbXBvVHJpYnV0b1tdID0gW1xuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmICh0aGlzLmlzSW52b2ljZURvY3VtZW50KCkpIHtcbiAgICAgICAgICAgIGNhbXBvcy5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFDcmVkaXRvUHJlc3VtaWRvXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50b1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlETyxcbiAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfY3JlZGl0b19wcmVzdW1pZG8nLFxuICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhjYW1wb3MsIEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE8pXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE8gKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlETyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlTKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlTKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUlTID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBjb25zdCBjYW1wb3M6IENhbXBvVHJpYnV0b1tdID0gW1xuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmICh0aGlzLmlzSW52b2ljZURvY3VtZW50KCkpIHtcbiAgICAgICAgICAgIGNhbXBvcy5wdXNoKFxuICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSVNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUyxcbiAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcycsXG4gICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKGNhbXBvcywgRW51bVRpcG9UcmlidXRvLklTKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSVMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklTLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhQ0JTSUJTRXN0b3Jub0NyZWRpdG8oKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtQ0JTX0lCU19FU1RPUk5PX0NSRURJVE8pIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtQ0JTX0lCU19FU1RPUk5PX0NSRURJVE8gPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUTyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2JzX2VzdG9ybm9fY3JlZGl0bycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUT1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19lc3Rvcm5vX2NyZWRpdG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkNCU19JQlNfRVNUT1JOT19DUkVESVRPICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX0VTVE9STk9fQ1JFRElUTyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNCU19JQlNfQWp1c3RlKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUNCU19JQlNfQWp1c3RlKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUNCU19JQlNfQWp1c3RlID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNCU19BSlVTVEUsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic19hanVzdGUnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyaW9kb0FwdXJhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX0FKVVNURSxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2FqdXN0ZScsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJpb2RvQXB1cmFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19BSlVTVEVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkNCU19JQlNfQUpVU1RFICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX0FKVVNURSxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNCU0lCU1RyYW5zZmVyZW5jaWFDcmVkaXRvKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUNic0lic1RyYW5zZmVyZW5jaWFDcmVkaXRvKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUNic0lic1RyYW5zZmVyZW5jaWFDcmVkaXRvID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic190cmFuc2ZlcmVuY2lhX2NyZWRpdG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfdHJhbnNmZXJlbmNpYV9jcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX1RSQU5TRkVSRU5DSUFfQ1JFRElUTyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE8sXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFQaXMoKTogYW55W10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbVBpcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVBpcyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcbiAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uYmFzZUNhbGN1bG9DcmVkaXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUlxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19mYXR1cmFtZW50bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTmF0dXJlemFSZWNlaXRhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5iYXNlQ2FsY3Vsb0NyZWRpdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLlBJUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLlBJUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNvZmlucygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1Db2ZpbnMgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Db2ZpbnMgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG4gICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlICE9PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5OYXR1cmV6YVJlY2VpdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgT3V0Z29pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uQ09GSU5TICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uQ09GSU5TLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSXBpKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlwaSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlwaSA9IHRydWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkVucXVhZHJhbWVudG9JcGkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2NyZWRpdGFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX291dHJhc19kZXNwZXNhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfT1VUUkFTX0RFU1BFU0FTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX3ByZXN1bWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9jcmVkaXRhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnUHJvZHVjdCBSZXR1cm4nXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX3ByZXN1bWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uRW5xdWFkcmFtZW50b0lwaSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgT3V0Z29pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkVucXVhZHJhbWVudG9JcGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9ic2VydmFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX3ByZXN1bWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3sgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uSW1wb3N0b05hb1JlY3VwZXJhZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkVucXVhZHJhbWVudG9JcGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9ic2VydmFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX3ByZXN1bWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklQSSArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBzd2l0Y2ggKHRyaWJ1dG8pIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1DaWRlVGVjbm9sb2dpYTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFyO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNEZXZvbHZpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhcjtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpQ3JlZGl0YWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcGlEZXZvbHZpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfT1VUUkFTX0RFU1BFU0FTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaU91dHJhc0Rlc3Blc2FzO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcGlQcmVzdW1pZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1M6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXNzO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Jc3NSZXRpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSW1wb3N0b0ltcG9ydGFjYW87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFySW1wb3J0YWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXJJbXBvcnRhY2FvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZXRpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNTTEw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ3NsbFJldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklSUkY6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXJyZlJldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1M6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSW5zc1JldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSW5zc1BhdHJvbmFsO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zU3Q7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRmNwU3Q7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zQ29icmFkb0FudGVyaW9ybWVudGU7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUZjcENvYnJhZG9BbnRlcmlvcm1lbnRlO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc0VmZXRpdmFtZW50ZUNyZWRpdGFkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3A7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNEaWZlcmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zRGVzb25lcmFkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbURpZmVyZW5jaWFsQWxpY290YTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNGYXR1cmVtZW50bztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc1VmRGVzdGlubztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5POlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUZjcFVmRGVzdGlubztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRTaXR1YWNhb1RyaWJ1dGFyaWE7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEljbXNGdXR1cm87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJY21zU2ltcGxlcztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJY21zQ3JlZGl0b1ByZXN1bWlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZERpZmFsRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZElDTVNfVUZfRGVzdGlub19EZXZvbHZpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRGQ1BfVUZfRGVzdGlub19EZXZvbHZpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfRkFUVVJBTUVOVE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtUGlzRmF0dXJhbWVudG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX05BT19SRUNVUEVSQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSW1wb3N0b05hb1JlY3VwZXJhZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5CQVNFX0NBTENVTE9fQ1JFRElUTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZGJhc2VDYWxjdWxvQ3JlZGl0bztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBFUkNFTlRVQUxfUkVEVUNBTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZFBlcmNlbnR1YWxSZWR1Y2FvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJY21zU3RTb2xpZGFyaW87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJY21zU3RSZXRpZG9BbnQ7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEZjcFN0UmVkaXRvQW50O1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UmVxdWlyZWQodHJpYnV0bzogRW51bVRpcG9UcmlidXRvLCB2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBzd2l0Y2ggKHRyaWJ1dG8pIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQToge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ2lkZVRlY25vbG9naWEgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVI6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JlY3VwZXJhciA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzRGV2b2x2aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXIgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0Rldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGkgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaUNyZWRpdGFkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpRGV2b2x2aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfT1VUUkFTX0RFU1BFU0FTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlPdXRyYXNEZXNwZXNhcyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpUHJlc3VtaWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1M6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlzcyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXNzUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUltcG9zdG9JbXBvcnRhY2FvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JlY3VwZXJhckltcG9ydGFjYW8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFySW1wb3J0YWNhbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZXRpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNTTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNzbGxSZXRpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklSUkY6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlycmZSZXRpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1M6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUluc3NSZXRpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUluc3NQYXRyb25hbCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc1N0ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcFN0ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0NvYnJhZG9BbnRlcmlvcm1lbnRlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNUzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtcyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNFZmV0aXZhbWVudGVDcmVkaXRhZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRGlmZXJpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0Rlc29uZXJhZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1EaWZlcmVuY2lhbEFsaWNvdGEgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJUzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzRmF0dXJlbWVudG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOUzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zRnV0dXJvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1NpbXBsZXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFNvbGlkYXJpbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFJldGlkb0FudCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkRmNwU3RSZWRpdG9BbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWREaWZhbERldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJQ01TX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkRkNQX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfRkFUVVJBTUVOVE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW1wb3N0b0NhbGN1bGFkbyhpbXBvc3RvOiBFbnVtVGlwb1RyaWJ1dG8pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkRJRkFMICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRElGQUxfREVWT0xWSURPICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8gJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLklDTVNfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5GQ1BfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfVE9UQUxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZE1lc3NhZ2VFcnJvckJhc2VEaWZlcmVudGUoXG4gICAgICAgIGltcG9zdG9zOiBzdHJpbmdbXSxcbiAgICAgICAgZ3J1cG86IGFueSxcbiAgICAgICAgc3VtbWFyeU1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgZGV0YWlsTWVzc2FnZTogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGltcG9zdG9GaWx0cmFkbyA9IGltcG9zdG9zLmZpbHRlcihcbiAgICAgICAgICAgIChpbXBvc3RvKSA9PlxuICAgICAgICAgICAgICAgICFbXG4gICAgICAgICAgICAgICAgICAgICdDQlNfRElGRVJJRE8nLFxuICAgICAgICAgICAgICAgICAgICAnSUJTX0VTVEFEVUFMX0RJRkVSSURPJyxcbiAgICAgICAgICAgICAgICAgICAgJ0lCU19NVU5JQ0lQQUxfRElGRVJJRE8nXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhpbXBvc3RvKVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBjb250cm9sZUltcG9zdG8gPSB0aGlzLmNhbGN1bGFySW1wb3N0b3NUb3RhbChcbiAgICAgICAgICAgIGltcG9zdG9GaWx0cmFkbyxcbiAgICAgICAgICAgIGdydXBvXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGNvbnRyb2xlSW1wb3N0by5iYXNlRGlmZXJlbnRlKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHN1bW1hcnlNZXNzYWdlKSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZGV0YWlsTWVzc2FnZSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRyb2xlSW1wb3N0bztcbiAgICB9XG5cbiAgICAvLyBOw6NvIHV0aWxpemFyIGVzdGUgbcOpdG9kbyBwYXJhIGPDoWxjdWxvcyBkZSBpbXBvc3RvcyBkYSBSZWZvcm1hIFRyaWJ1dMOhcmlhLlxuICAgIHByaXZhdGUgY2FsY3VsYXJWYWxvcih0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZ3J1cG9zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdydXBvcy5tYXAoKGdydXBvKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3J1cG8uaXRlbVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChpdDogSXRlbSkgPT4gaXQubmFtZSA9PSB0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChpdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhhc1ZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAudmFsdWUpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQuZm9ybUdyb3VwLnZhbHVlW2l0ZW1dICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNWYWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1ZhbHVlICYmIHRoaXMuaW1wb3N0b0NhbGN1bGFkbyh0cmlidXRvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvICE9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmFsaXF1b3RhICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNUyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdC5mb3JtR3JvdXAuY29udHJvbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNpdHVhY2FvVHJpYnV0YXJpYSA9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2l0dWFjYW9UcmlidXRhcmlhLnZhbHVlID09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYWxpcXVvdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGEgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGF4QW1vdW50Q2FsY3VsYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYWxjdWxhdGVUYXhBbW91bnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhhYmxlQmFzZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyKGJhc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhSYXRlOiBuZXcgQmlnTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyKGFsaXF1b3RhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9OdW1iZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09IEVudW1UaXBvVHJpYnV0by5JQ01TICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuY29kU3RyICE9ICc1MSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYmFzZUNhbGN1bG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGlxdW90YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5hbGlxdW90YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlxdW90YSAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXhBbW91bnRDYWxjdWxhdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhbGN1bGF0ZVRheEFtb3VudCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheGFibGVCYXNlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJpZ051bWJlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIoYmFzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheFJhdGU6IG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIoYWxpcXVvdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b051bWJlcigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1JBVCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5nZXQoJ2Jhc2VDYWxjdWxvJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZSA/PyBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsaXF1b3RhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmdldCgnYWxpcXVvdGEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlID8/IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcihiYXNlICogYWxpcXVvdGEpIC8gMTAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5iYXNlQ2FsY3Vsb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsaXF1b3RhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmFsaXF1b3RhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGF4QW1vdW50Q2FsY3VsYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYWxjdWxhdGVUYXhBbW91bnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhhYmxlQmFzZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyKGJhc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhSYXRlOiBuZXcgQmlnTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyKGFsaXF1b3RhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9OdW1iZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5yZXNldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc051bGxPclVuZGVmaW5lZChiYXNlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOdWxsT3JVbmRlZmluZWQoYWxpcXVvdGEpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNOdWxsT3JVbmRlZmluZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb2RpZ29UcmlidXRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmNvZGlnb1RyaWJ1dGFjYW8ucmVzZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1wb3N0b3MgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZVTlJVUkFMX0lOU1MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGVU5SVVJBTF9SQVQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGVU5SVVJBTF9TRU5BUidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xlRnVucnVyYWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkTWVzc2FnZUVycm9yQmFzZURpZmVyZW50ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3N0b3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lcnJvcl9iYXNlX2Z1bnJ1cmFsX2RpZmVyZW50ZV9zdW1tYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZXJyb3JfYmFzZV9mdW5ydXJhbF9kaWZlcmVudGVfZGV0YWlsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZ1bnJ1cmFsVG90YWwgPSBncnVwby5pdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gJ0ZVTlJVUkFMX1RPVEFMJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVucnVyYWxUb3RhbC5mb3JtR3JvdXAuc2V0VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlQ2FsY3VsbzogY29udHJvbGVGdW5ydXJhbC5iYXNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxvcjogY29udHJvbGVGdW5ydXJhbC52YWxvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3N0b01hbnVhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0VudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXJJbXBvc3Rvc1RvdGFsKGltcG9zdG9zOiBhbnksIGdydXBvKSB7XG4gICAgICAgIGxldCB2YWxvcmVzID0ge1xuICAgICAgICAgICAgYmFzZTogMCxcbiAgICAgICAgICAgIHZhbG9yOiAwLFxuICAgICAgICAgICAgYmFzZURpZmVyZW50ZTogZmFsc2VcbiAgICAgICAgfTtcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaW1wb3N0b3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCBpbXBvc3RvID0gZ3J1cG8uaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IGltcG9zdG9zW2luZGV4XVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChpbXBvc3RvPy5mb3JtR3JvdXAudmFsdWUuYmFzZUNhbGN1bG8pKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB2YWxvcmVzLmJhc2UgPiAwICYmXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yZXMuYmFzZSAhPSBpbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS5iYXNlQ2FsY3Vsb1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB2YWxvcmVzLmJhc2VEaWZlcmVudGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhbG9yZXMuYmFzZSA9XG4gICAgICAgICAgICAgICAgICAgIGltcG9zdG8uZm9ybUdyb3VwLnZhbHVlLmJhc2VDYWxjdWxvID4gdmFsb3Jlcy5iYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGltcG9zdG8uZm9ybUdyb3VwLnZhbHVlLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHZhbG9yZXMuYmFzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChpbXBvc3RvPy5mb3JtR3JvdXAudmFsdWUudmFsb3IpKSB7XG4gICAgICAgICAgICAgICAgdmFsb3Jlcy52YWxvciA9IHRoaXMudGF4Um91bmRpbmdTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5oYWxmVXAoXG4gICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIodmFsb3Jlcy52YWxvcikgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihpbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS52YWxvciksXG4gICAgICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLnRvTnVtYmVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsb3JlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhQ2FtcG9zKGNhbXBvczogQ2FtcG9UcmlidXRvW10sIHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBjb25zdCByZXRvcm5vOiBhbnkgPSB7fTtcbiAgICAgICAgY29uc3QgZm9ybUZpZWxkOiBGb3JtRmllbGRbXSA9IFtdO1xuICAgICAgICBsZXQgZm9ybUdyb3VwOiBhbnkgPSB7fTtcblxuICAgICAgICBjYW1wb3MubWFwKChpdCkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgYmFzZUNhbGN1bG86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaXQuZGlzYWJsZWQgPz8gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdCYXNlQ2FsY3VsbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYmFzZUNhbGN1bG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2Jhc2VfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhclZhbG9yKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNGaWVsZFJlcXVpcmVkKCdiYXNlQ2FsY3VsbycsIHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaXQuZGlzYWJsZWQgPz8gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OS45OTk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQWxpcXVvdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2FsaXF1b3RhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldExhYmVsQWxpcXVvdGEodHJpYnV0byksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhclZhbG9yKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNGaWVsZFJlcXVpcmVkKCdhbGlxdW90YScsIHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLlBlcmlvZG9BcHVyYWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBbRW51bUNhbXBvVHJpYnV0by5QZXJpb2RvQXB1cmFjYW9dOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5EYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bUNhbXBvVHJpYnV0by5QZXJpb2RvQXB1cmFjYW8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyaW9kb19hcHVyYWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3OiAnbW9udGgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG86ICdib2R5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyTG9jYWxlT3B0aW9uczogbmV3IENhbGVuZGFyTG9jYWxlT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5sb2NhbGVTZXJ2aWNlLmdldExvY2FsZU9wdGlvbnMoKS5jYWxlbmRhcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0OiAnbW0veXknXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4gdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZpZWxkUmVxdWlyZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1DYW1wb1RyaWJ1dG8uUGVyaW9kb0FwdXJhY2FvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVkdWNhb19hbGlxdW90YV9nb3Zlcm5hbWVudGFsX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICByZWR1Y2FvQWxpcXVvdGE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1JlZHVjYW9BbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVkdWNhb0FsaXF1b3RhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZWR1Y2FvX2FsaXF1b3RhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhRWZldGl2YSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YUVmZXRpdmE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaXQuZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQWxpcXVvdGFFZmV0aXZhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YUVmZXRpdmEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2VmZXRpdmFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhSW50ZXJuYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTkuOTk5OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0FsaXF1b3RhSW50ZXJuYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxpcXVvdGFJbnRlcm5hJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9pbnRlcm5hX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmFEZXN0aW5vKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhSW50ZXJuYURlc3Rpbm86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5Ljk5OTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdBbGlxdW90YUludGVybmFEZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YUludGVybmFEZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9pbnRlcm5hX2Rlc3Rpbm9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZCgndmFsb3InLCB0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JCcnV0b0ltcG9zdG86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaXQuZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvckJydXRvSW1wb3N0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3JCcnV0b0ltcG9zdG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2JydXRvX2ltcG9zdG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JJc2VudGFzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvcklzZW50YXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9ySXNlbnRhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3JfaXNlbnRhc19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvck91dHJhczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JPdXRyYXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yT3V0cmFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9vdXRyYXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHNpdHVhY2FvVHJpYnV0YXJpYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgbGV0IHNlYXJjaEdyaWRGaWVsZHMhOiBGb3JtRmllbGRbXTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEdyaWRGaWVsZHMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvZFN0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGVzU3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0aXBJbXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfaW1wX3Bpc19jb2ZpbnMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBJbXBDc3QuUElTX0NPRklOU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9pbXBfaXBpJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwSW1wQ3N0LklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9pbXBfaWNtcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcEltcENzdC5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX2ltcF9pc3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBJbXBDc3QuSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0aXBPcGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfb3BlX3Zfc2FpZGEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBPcGUuVlNBSURBXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX29wZV92X2VudHJhZGEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBPcGUuVkVOVFJBREFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfb3BlX3ZfYW1ib3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBPcGUuVkFNQk9TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRGaWx0ZXIgPSBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZXhjbHVpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnZmFsc2UnXVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3RpcEltcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW21hcEVudW1UaXBvVHJpYnV0b1RvRW51bVRpcEltcENzdCh0cmlidXRvKV1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICd0aXBPcGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFtFbnVtVGlwT3BlLlZBTUJPUywgRW51bVRpcE9wZS5WU0FJREFdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogW0VudW1UaXBPcGUuVkFNQk9TLCBFbnVtVGlwT3BlLlZFTlRSQURBXVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3NpdHVhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ1ZBVElWTyddXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTIHx8XG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUwgfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUwgfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE8gfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE8gfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19BSlVTVEUgfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19BSlVTVEVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXIgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kZWZhdWx0RmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEuaW5kR0VzdG9ybm9DcmVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DQlNfRVNUT1JOT19DUkVESVRPIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRW51bUxvZ2ljYWxPcGVyYXRvci5OZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtFbnVtSW5kaWNhdGl2b1BhZHJhby5FWElHRV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdpbmRHQWp1c3RlQ29tcGV0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19BSlVTVEUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19BSlVTVEVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRW51bUxvZ2ljYWxPcGVyYXRvci5FcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBFbnVtTG9naWNhbE9wZXJhdG9yLk5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW0VudW1JbmRpY2F0aXZvUGFkcmFvLkVYSUdFXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSQU5TRkVSRU5DSUFfQ1JFRElUTyB8fFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX1RSQU5TRkVSRU5DSUFfQ1JFRElUT1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlciA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmRlZmF1bHRGaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdpbmRHVHJhbnNmQ3JlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbRW51bUluZGljYXRpdm9QYWRyYW8uRVhJR0VdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmUwMjdTdHJMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluOiB0aGlzLmRvbWluaW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEdyaWRGaWVsZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnc2l0dWFjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19zaXR1YWNhb190cmlidXRhcmlhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNGaWVsZFJlcXVpcmVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0dWFjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0RmlsdGVyID0gW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3NpdHVhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ0FUSVZPJ11cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgKHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5DQlNfRVNUT1JOT19DUkVESVRPIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVE9STk9fQ1JFRElUTylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXIucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2luZEdFc3Rvcm5vQ3JlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW0VudW1JbmRpY2F0aXZvUGFkcmFvLkVYSUdFXVxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiAnZXJweF9jcGxfaW1wLmltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IHRoaXMuZG9taW5pbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY28sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5RmllbGRzOiBbJ2UwMjdzdHIuaWQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlEZXBlbmRlbmN5OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdlMDI3c3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0b3Juby5mb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGVucXVhZHJhbWVudG9JcGk6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3ZXFpTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdlMDI3ZXFpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdlbnF1YWRyYW1lbnRvSXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2l0dWFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnVkFUSVZPJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdleGNsdWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydmYWxzZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0VucXVhZHJhbWVudG9JcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2VucXVhZHJhbWVudG9faXBpX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBwZXJjZW50dWFsUmVkdWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdQZXJjZW50dWFsUmVkdWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbFJlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfcmVkdWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9tdmFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtcykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBkZXNvbmVyYWNhb0ljbXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnTW90aXZvRGVzb25lcmFjYW9JY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZXNvbmVyYWNhb0ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2Rlc29uZXJhY2FvX2ljbXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfNSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl82J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfOCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl85J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WOVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzEwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8xMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjExXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYxMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzE2J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMTZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl85MCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjkwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19kZXNvbmVyYWNhb19pY21zX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5PcmlnZW0pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2VtOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ09yaWdlbScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnb3JpZ2VtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl8wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlYxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfNSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl82J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlY3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfOCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX29yaWdlbV9pY21zX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19vcmlnZW1faWNtc19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDYsIGxnOiA2LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxEaWZlcmltZW50bykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbERpZmVyaW1lbnRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9kaWZlcmltZW50b19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhclZhbG9yKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWw6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9zdXBvcnRhZG9fY29uc3VtaWRvcl9maW5hbF9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JSZWNvbGhpZG9JY21zU3Q6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yUmVjb2xoaWRvSWNtc1N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9yZWNvbGhpZG9fcGVsb19zdWJzdGl0dXRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9ySWNtc1N0UmV0aWRvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JJY21zU3RSZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9ySWNtc1N0UmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9pY21zX3N0X3JldGlkb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDEzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5Nb2RhbGlkYWRlQkMpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgbW9kYWxpZGFkZUJDOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ01vZGFsaWRhZGVCYycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbW9kYWxpZGFkZUJDJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vZGFsaWRhZGVfYmNfdl8wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vZEJjLlYwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb2RhbGlkYWRlX2JjX3ZfMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb2RCYy5WMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW9kYWxpZGFkZV9iY192XzInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW9kQmMuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vZGFsaWRhZGVfYmNfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vZEJjLlYzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tb2RhbGlkYWRlX2JjX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tb2RhbGlkYWRlX2JjX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBuYXR1cmV6YVJlY2VpdGE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5uYXR1cmV6YVJlY2VpdGFMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluOiB0aGlzLmRvbWluaW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ25hdHVyZXphUmVjZWl0YScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwU29ydDogW3sgZmllbGQ6ICdjb2RpZ28nLCBvcmRlcjogMSB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hTb3J0OiBbeyBmaWVsZDogJ2NvZGlnbycsIG9yZGVyOiAxIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnTmF0dXJlemFSZWNlaXRhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19uYXR1cmV6YV9yZWNlaXRhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmFjYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ09ic2VydmFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ29ic2VydmFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX29ic2VydmFjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X2xlbmd0aF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JEZWR1Y2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAndmFsb3JEZWR1Y2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvckRlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2RlZHVjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5JbmRpY2F0aXZvQXF1aXNpY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGluZGljYXRpdm9BcXVpc2ljYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0luZGljYXRpdm9BcXVpc2ljYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2luZGljYXRpdm9BcXVpc2ljYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2luZGljYXRpdm9fYXF1aXNpY2FvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192MSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3YyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlYzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192NCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3Y1J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlY2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjYnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192NydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGNvZGlnb0FycmVjYWRhY2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDYpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdDb2RpZ29BcnJlY2FkYWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29kaWdvQXJyZWNhZGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NvZGlnb19hcnJlY2FkYWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfbGVuZ3RoX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY29kaWdvVHJpYnV0YWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heExlbmd0aCg1KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ29kaWdvVHJpYnV0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29kaWdvVHJpYnV0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfY29kaWdvX3RyaWJ1dGFjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X2xlbmd0aF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkltcG9zdG9OYW9SZWN1cGVyYWRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIEltcG9zdG9OYW9SZWN1cGVyYWRvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdJbXBvc3RvTmFvUmVjdXBlcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnSW1wb3N0b05hb1JlY3VwZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2ltcG9zdG9fbmFvX3JlY3VwZXJhZG8nXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0bykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBiYXNlQ2FsY3Vsb0NyZWRpdG86IFt7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9XVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnYmFzZUNhbGN1bG9DcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdiYXNlQ2FsY3Vsb0NyZWRpdG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl80J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl81J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl82J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl83J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WN1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl84J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl85J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WOVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjEwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzExJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjEzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzE0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xNidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjE2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzE3J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYmFzZV9jYWxjdWxvX2NyZWRpdG9fcGxhY2Vob2xkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2Jhc2VfY2FsY3Vsb19jcmVkaXRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdyZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3JlZ190cmlidXRfcGlzX2NvZmluc19jdW11bGF0aXZvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMuQ1VNVUxBVElWT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fcmVnX3RyaWJ1dF9waXNfY29maW5zX25hb19jdW11bGF0aXZvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMuTkFPX0NVTVVMQVRJVk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlZ2ltZV90cmlidXRhcmlvX3Bpc19jb2ZpbnNfcGxhY2Vob2xkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlZ2ltZV90cmlidXRhcmlvX3Bpc19jb2ZpbnNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBwZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ3BlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9zdXNwZW5zYW9fcGFyY2lhbF9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkJlbmVmaWNpb0Zpc2NhbCkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBiZW5lZmljaW9GaXNjYWw6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmJlbmVmaWNpb0Zpc2NhbExvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IHRoaXMuZG9taW5pbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY28sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnYmVuZWZpY2lvRmlzY2FsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZXhjbHVpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnZmFsc2UnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2JlbmVmaWNpb19maXNjYWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNzdERlc29uZXJhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHNpdHVhY2FvVHJpYnV0YXJpYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3U3RyTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiAnZXJweF9jcGxfaW1wLmltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGlwT3BlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcE9wZS5WRU5UUkFEQSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwT3BlLlZTQUlEQSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwT3BlLlZBTUJPU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3NpdHVhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbRW51bVNpdHVhY2FvLlZBVElWT11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdleGNsdWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydmYWxzZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGlwSW1wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbRW51bVRpcEltcENzdC5DQlNfSUJTXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdzaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2lnbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweF9jcGxfaW1wLmltcG9zdG9zLmNzdF9kZXNvbmVyYWNhb19pbmZvX3NpZ24nXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHhfY3BsX2ltcC5pbXBvc3Rvcy5zaXR1YWNhb190cmlidXRhcmlhX2Rlc29uZXJhY2FvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYURlc29uZXJhY2FvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6ICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXI6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1TaXR1YWNhb0NsYXNzaWZpY2FjYW9UcmlidXRhcmlhLkFUSVZPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cFNvcnQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjb2RpZ28nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU29ydDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2NvZGlnbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlEZXBlbmRlbmN5OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdlMDI3c3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0b3Juby5mb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaWduOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MuY2xhc3NpZmljYWNhb190cmlidXRhcmlhX2Rlc29uZXJhY2FvX2luZm9fc2lnbidcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweF9jcGxfaW1wLmltcG9zdG9zLmNsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9kZXNvbmVyYWNhbydcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50b1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIFtFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9dOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLk5FTkhVTSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hcGxpY2FyX3ZhbG9yX2xpcXVpZG9fZG9jdW1lbnRvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZpZWxkUmVxdWlyZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19DUkVESVRPX1BSRVNVTUlETyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9hcGxpY2FyX3ZhbG9yX2xpcXVpZG9fZG9jdW1lbnRvX3N1YnRyYWlyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8uU1VCVFJBSVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fYXBsaWNhcl92YWxvcl9saXF1aWRvX2RvY3VtZW50b19zb21hcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLlNPTUFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9hcGxpY2FyX3ZhbG9yX2xpcXVpZG9fZG9jdW1lbnRvX25lbmh1bSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLk5FTkhVTVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uRXNjcml0dXJhckFsaXF1b3RhSVNTKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIFtFbnVtQ2FtcG9UcmlidXRvLkVzY3JpdHVyYXJBbGlxdW90YUlTU106IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUVzY3JpdHVyYXJBbGlxdW90YUlTUy5TSU0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1DYW1wb1RyaWJ1dG8uRXNjcml0dXJhckFsaXF1b3RhSVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZXNjcml0dXJhcl9hbGlxdW90YV9pc3MnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZXNjcml0dXJhcl9hbGlxdW90YV9pc3Nfc2ltJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUVzY3JpdHVyYXJBbGlxdW90YUlTUy5TSU1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2VzY3JpdHVyYXJfYWxpcXVvdGFfaXNzX25hbydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Fc2NyaXR1cmFyQWxpcXVvdGFJU1MuTkFPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09XG4gICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUNyZWRpdG9QcmVzdW1pZG9cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNsYXNzaWZpY2FjYW9UcmlidXRhcmlhTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogJ2VycHhfY3BsX2ltcC5pbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeUZpZWxkczogWydjcmVkUHJlc0luZERlZHV6Q3JlZFByZXMnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2l0dWFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnQVRJVk8nXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2NyZWRpdG9QcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsndHJ1ZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZTAyN3N0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5JcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW251bGxdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZpZWxkUmVxdWlyZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuc3VnZXN0b2VzKSB7XG4gICAgICAgICAgICB0aGlzLnN1Z2VzdG9lc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHN1Z2VzdGFvKSA9PiBzdWdlc3Rhby50aXBvVHJpYnV0byA9PT0gdHJpYnV0bylcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoc3VnZXN0YW8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoc3VnZXN0YW8pXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChhdHJpYnV0b3MpID0+IGF0cmlidXRvc1swXSAhPT0gJ3RpcG9UcmlidXRvJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChhdHJpYnV0b3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBbYXRyaWJ1dG9zWzBdXVswXS52YWx1ZSA9IGF0cmlidXRvc1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0b3Juby5mb3JtRmllbGQgPSBmb3JtRmllbGQ7XG4gICAgICAgIHJldG9ybm8uZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICBpbXBvc3RvTWFudWFsOiBbXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogZmFsc2UsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9dOiBbXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICBdXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXRvcm5vO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVZhbHVlQ2hhbmdlcyh7XG4gICAgICAgIGl0ZW0sXG4gICAgICAgIGdyb3VwXG4gICAgfToge1xuICAgICAgICBpdGVtOiBJdGVtO1xuICAgICAgICBncm91cDogR3JvdXA7XG4gICAgfSkge1xuICAgICAgICBpdGVtLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpKSxcbiAgICAgICAgICAgICAgICAvLyBXZSBhcmUgdXNpbmcgZGVib3VuY2VUaW1lIGhlcmUgYmVjYXVzZSBvdXIgTG9va3VwIENvbXBvbmVudCBpcyBlbWl0dGluZyB0d28gZXZlbnRzIHVuZm9ydHVuYXRlbHkuXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwKSxcbiAgICAgICAgICAgICAgICBzY2FuKFxuICAgICAgICAgICAgICAgICAgICAoYWNjKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmdWYWx1ZTogYWNjLnN0YXJ0aW5nVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWU6IGl0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKClcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU6IGl0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWU6IGl0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgc3RhcnRpbmdWYWx1ZSwgY3VycmVudFZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0aW5nVmFsdWUuaW1wb3N0b01hbnVhbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhzdGFydGluZ1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkgIT09ICdpbXBvc3RvTWFudWFsJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSBFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZXZlcnkoKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHR5cGUgfSA9IGl0ZW0uZm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IGtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBGaWVsZFR5cGUuTG9va3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGFLZXkgfSA9IGl0ZW0uZm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgTG9va3VwRmllbGQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmdWYWx1ZT8uW2tleV0/LltkYXRhS2V5XSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWU/LltrZXldPy5bZGF0YUtleV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnRpbmdWYWx1ZVtrZXldID09PSBjdXJyZW50VmFsdWVba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnaW1wb3N0b01hbnVhbCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKGZhbHNlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2ltcG9zdG9NYW51YWwnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZSh0cnVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFya0lDTVNTaW1wbGVzQXNNYW51YWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5uYW1lIGFzIEVudW1UaXBvVHJpYnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtQ2FtcG9UcmlidXRvLkltcG9zdG9NYW51YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWVbRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9dICE9PVxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhzdGFydGluZ1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkgIT09ICdpbXBvc3RvTWFudWFsJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSBFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZXZlcnkoKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHR5cGUgfSA9IGl0ZW0uZm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IGtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBGaWVsZFR5cGUuTG9va3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGFLZXkgfSA9IGl0ZW0uZm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgTG9va3VwRmllbGQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmdWYWx1ZT8uW2tleV0/LltkYXRhS2V5XSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWU/LltrZXldPy5bZGF0YUtleV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnRpbmdWYWx1ZVtrZXldID09PSBjdXJyZW50VmFsdWVba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWVbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXJrSUNNU1NpbXBsZXNBc01hbnVhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm5hbWUgYXMgRW51bVRpcG9UcmlidXRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMYWJlbEFsaXF1b3RhKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0cmlidXRvID09IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8gfHxcbiAgICAgICAgICAgIHRyaWJ1dG8gPT0gRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE9cbiAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2ludGVyZXN0YWR1YWxfbGFiZWwnXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRyaWJ1dG8udG9TdHJpbmcoKS5lbmRzV2l0aCgnX0RJRkVSSURPJykgJiZcbiAgICAgICAgICAgIHRyaWJ1dG8gIT09IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2RpZmVyaWRvX2xhYmVsJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9sYWJlbCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUcmFuc2xhdGVCdXR0b24odmFsdWU6IGFueSkge1xuICAgICAgICBsZXQgdHJhbnNsYXRlID0gJy5idXR0b25fbWVtb3JpYV9jYWxjdWxvX2VtcHR5X2xhYmVsJztcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pZHNUYXhlc01lbW9yaWFDYWxjdWxvLmZpbmQoKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudGlwb1RyaWJ1dG8gPT0gdmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5pZFBhcmFtZXRybyAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0cmFuc2xhdGUgPSAnLmJ1dHRvbl9tZW1vcmlhX2NhbGN1bG9fbGFiZWwnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucHJlZml4TGFiZWwgKyB0cmFuc2xhdGU7XG4gICAgfVxuXG4gICAgaXNHcm91cEludmFsaWQoZ3JvdXA6IHtcbiAgICAgICAgZ3J1cG86IHN0cmluZztcbiAgICAgICAgaXRlbToge1xuICAgICAgICAgICAgZm9ybUZpZWxkOiBGb3JtRmllbGRbXTtcbiAgICAgICAgICAgIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICAgICAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgfVtdO1xuICAgIH0pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGdyb3VwPy5pdGVtPy5zb21lKChpdGVtKSA9PiBpdGVtPy5mb3JtR3JvdXA/LmludmFsaWQpO1xuICAgIH1cblxuICAgIGlzQmFkZ2VWaXNpYmxlKGl0ZW06IEl0ZW0pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGlzVGF4RnJvbVRheFJlZm9ybShpdGVtLm5hbWUgYXMgRW51bVRpcG9UcmlidXRvKSAmJlxuICAgICAgICAgICAgISFpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0QmFkZ2VDb2xvcihpdGVtOiBJdGVtKTogQmFkZ2VDb2xvcnMge1xuICAgICAgICBzd2l0Y2ggKGl0ZW0uZm9ybUdyb3VwLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5DQUxDVUxBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJhZGdlQ29sb3JzLkdyZWVuO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLkhFUkRBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJhZGdlQ29sb3JzLkJsdWU7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMOlxuICAgICAgICAgICAgICAgIHJldHVybiBCYWRnZUNvbG9ycy5ZZWxsb3c7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBCYWRnZUNvbG9ycy5ZZWxsb3c7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRCYWRnZVRleHQoaXRlbTogSXRlbSk6IHN0cmluZyB7XG4gICAgICAgIHN3aXRjaCAoaXRlbS5mb3JtR3JvdXAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKS52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLkNBTENVTEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9fY2FsY3Vsb19hdXRvbWF0aWNvJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9fY2FsY3Vsb19nZXJhZG9fdmlhX3Byb2Nlc3NvJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX21hbnVhbCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9fY2FsY3Vsb19tYW51YWwnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0QmFkZ2VJbmZvU2lnbihpdGVtOiBJdGVtKTogeyB0ZXh0OiBzdHJpbmcgfSB7XG4gICAgICAgIGlmIChpdGVtLmZvcm1Hcm91cC5nZXQoJ2ltcG9zdG9NYW51YWwnKS52YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9faW5mb19zaWduX3RleHRfbWFudWFsJ1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgc3dpdGNoIChpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uQ0FMQ1VMQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19pbmZvX3NpZ25fdGV4dF9jYWxjdWxhZG8nXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLkhFUkRBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X2hlcmRhZG8nXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9faW5mb19zaWduX3RleHRfbWFudWFsJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19pbmZvX3NpZ25fdGV4dF9tYW51YWwnXG4gICAgICAgICAgICApXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ludm9pY2VEb2N1bWVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaWVsZFJlcXVpcmVkKGZpZWxkOiBzdHJpbmcsIHRheFR5cGU6IEVudW1UaXBvVHJpYnV0byk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5ncnVwb3NcbiAgICAgICAgICAgIC5maW5kKChncm91cCkgPT4gZ3JvdXAuaXRlbS5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IHRheFR5cGUpKVxuICAgICAgICAgICAgLml0ZW0uZmluZCgoaXRlbSkgPT4gaXRlbS5uYW1lID09PSB0YXhUeXBlKTtcblxuICAgICAgICByZXR1cm4gaXRlbS5mb3JtR3JvdXAuZ2V0KGZpZWxkKS52YWxpZGF0b3I/Lih7fSBhcyBBYnN0cmFjdENvbnRyb2wpXG4gICAgICAgICAgICA/LnJlcXVpcmVkO1xuICAgIH1cblxuICAgIC8vIFdvcmstYXJvdW5kIHByYSByZXNvbHZlciBhICNFUlBQRVEtMjA1OTUuXG4gICAgLy8gTm8gZnV0dXJvIG1vdmVyIHBhcmEgbyBNYW51YWxUYXhDYWxjdWxhdGlvblJ1bGUgZSBUYXhDYWxjdWxhdGlvblR5cGVDYWxjdWxhdGlvblJ1bGVcbiAgICAvLyBxdWFuZG8gb3MgaW1wb3N0b3MgbGVnYWRvcyBmb3JlbSBtaWdyYWRvcyBwYXJhIG8gbm92byBwYWRyw6NvLlxuICAgIHByaXZhdGUgbWFya0lDTVNTaW1wbGVzQXNNYW51YWwoXG4gICAgICAgIHRheDogRW51bVRpcG9UcmlidXRvLFxuICAgICAgICBncm91cDogR3JvdXAsXG4gICAgICAgIGZpZWxkOiBFbnVtQ2FtcG9UcmlidXRvXG4gICAgKSB7XG4gICAgICAgIGlmICh0YXggIT09IEVudW1UaXBvVHJpYnV0by5JQ01TKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgSUNNU19TSU1QTEVTX0lURU0gPSBncm91cC5pdGVtLmZpbmQoXG4gICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFJQ01TX1NJTVBMRVNfSVRFTSkgcmV0dXJuO1xuXG4gICAgICAgIGlmIChmaWVsZCA9PT0gRW51bUNhbXBvVHJpYnV0by5JbXBvc3RvTWFudWFsKSB7XG4gICAgICAgICAgICBJQ01TX1NJTVBMRVNfSVRFTS5mb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAuZ2V0KCdpbXBvc3RvTWFudWFsJylcbiAgICAgICAgICAgICAgICAuc2V0VmFsdWUodHJ1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkID09PSBFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykge1xuICAgICAgICAgICAgSUNNU19TSU1QTEVTX0lURU0uZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgLmdldChmaWVsZClcbiAgICAgICAgICAgICAgICAuc2V0VmFsdWUoRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QXJyZWRvbmRhbWVudG9BYm50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRpbmdDb250ZXh0LnB1c2goKTtcblxuICAgICAgICB0aGlzLmZlYXR1cmVUb2dnbGVTZXJ2aWNlXG4gICAgICAgICAgICAuaXNFbmFibGVkKHtcbiAgICAgICAgICAgICAgICBkb21haW46ICdlcnB4X2NwbF9pbXAnLFxuICAgICAgICAgICAgICAgIHNlcnZpY2U6ICdjYWxjdWxvX2ltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnYXJyZWRvbmRhbWVudG9BYm50J1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5sb2FkaW5nQ29udGV4dC5wb3AoKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IChhcnJlZG9uZGFtZW50b0FibnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXhTdG9yZS5zZXRBcnJlZG9uZGFtZW50b0FibnQoYXJyZWRvbmRhbWVudG9BYm50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
5287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLWVtcHJlc2FyaWFsL2VycHgtY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdHJpYnV0b3MvZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sYUFBYSxFQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZUFBZSxFQUNmLFdBQVcsRUFDWCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsNkJBQTZCLEVBQzdCLDZDQUE2QyxFQUM3QyxhQUFhLEVBQ2IsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDeEIsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RCxPQUFPLEVBQ0gsV0FBVyxFQUNYLGVBQWUsRUFDZixjQUFjLEVBQ2QsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsV0FBVyxFQUNkLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFF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QUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDNUQsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNYLENBQUM7O2dCQTdxUDRCLGNBQWM7Z0JBQ04sY0FBYztnQkFDakIsV0FBVztnQkFDUixpQkFBaUI7Z0JBQ3RCLGdCQUFnQjtnQkFDWixhQUFhO2dCQUNMLHFCQUFxQjtnQkFDN0IsYUFBYTtnQkFDTCw2Q0FBNkM7Z0JBQ3JDLDZCQUE2QjtnQkFDL0MscUJBQXFCO2dCQUNkLGtCQUFrQjtnQkFDaEMsV0FBVztnQkFDSCxZQUFZO2dCQUNYLGFBQWE7Z0JBQ1Isa0JBQWtCO2dCQUNqQixtQkFBbUI7Z0JBQ2xCLG9CQUFvQjtnQkFDaEMsUUFBUTs7SUE1SHZDO1FBREMsS0FBSyxFQUFFO3lEQUNTO0lBQ1I7UUFBUixLQUFLLEVBQUU7MkRBQXVCO0lBQ3RCO1FBQVIsS0FBSyxFQUFFO2tFQUEwQjtJQUVsQztRQURDLEtBQUssRUFBRTt3REFHUDtJQUlRO1FBQVIsS0FBSyxFQUFFO3lEQUFrQjtJQUNqQjtRQUFSLEtBQUssRUFBRTt5REFBa0I7SUFDakI7UUFBUixLQUFLLEVBQUU7dUVBSU47SUFDTztRQUFSLEtBQUssRUFBRTt3RUFBaUQ7SUFDaEQ7UUFBUixLQUFLLEVBQUU7MEVBQW9DO0lBRWxDO1FBQVQsTUFBTSxFQUFFO2dFQUE0QztJQXRCNUMsb0JBQW9CO1FBTmhDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLHFuSEFBNEM7WUFFNUMsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDOztTQUM5QixDQUFDO09BQ1csb0JBQW9CLENBMHhQaEM7SUFBRCwyQkFBQztDQUFBLEFBMXhQRCxJQTB4UEM7U0ExeFBZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElkZW50aWZpZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2wsXG4gICAgRm9ybUJ1aWxkZXIsXG4gICAgRm9ybUNvbnRyb2wsXG4gICAgRm9ybUdyb3VwLFxuICAgIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBCZW5lZmljaW9GaXNjYWxMb29rdXAsXG4gICAgQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXAsXG4gICAgQ3BsVHJpTm90YVNhaWRhTmF0dXJlemFSZWNlaXRhUGlzQ29maW5zTG9va3VwLFxuICAgIEUwMjdFcWlMb29rdXAsXG4gICAgRTAyN1N0ckxvb2t1cCxcbiAgICBFbnVtTG9naWNhbE9wZXJhdG9yLFxuICAgIExvb2t1cFZhbGlkYXRpb25VdGlsc1xufSBmcm9tICdAc2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgICBCYWRnZUNvbG9ycyxcbiAgICBCdXR0b25BbmltYXRpb24sXG4gICAgQnV0dG9uUHJpb3JpdHksXG4gICAgQnV0dG9uU2l6ZSxcbiAgICBDYWxlbmRhckxvY2FsZU9wdGlvbnMsXG4gICAgRmllbGRUeXBlLFxuICAgIEZvcm1GaWVsZCxcbiAgICBpc051bGxPclVuZGVmaW5lZCxcbiAgICBMb2NhbGVTZXJ2aWNlLFxuICAgIExvb2t1cEZpZWxkXG59IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRmVhdHVyZVRvZ2dsZVNlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvcGxhdGZvcm0tY29tcG9uZW50cyc7XG5pbXBvcnQgeyBHVGFnU2VydmljZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9wbGF0Zm9ybS11dGlscyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBNZW51SXRlbSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbmFsaXplLCBmaXJzdCwgc2Nhbiwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRW51bVNpdHVhY2FvQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEgfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL2VudW0tY2xhc3NpZmljYWNhby10cmlidXRhcmlhJztcbmltcG9ydCB7IEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8gfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL2VudW0tdGlwby1jYWxjdWxvLWltcG9zdG8nO1xuaW1wb3J0IHsgRW51bUluZGljYXRpdm9QYWRyYW8gfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL2VycHgtY29tLXByb2Nlc3NvLWZhdHVyYW1lbnRvLWJhY2tlbmQvZW51bS1pbmRpY2F0aXZvLXBhZHJhbyc7XG5pbXBvcnQgeyBMb2FkaW5nQ29udGV4dCB9IGZyb20gJy4uL3V0aWxzL2xvYWRpbmctY29udGV4dCc7XG5pbXBvcnQgeyBUYXhBbW91bnRDYWxjdWxhdG9yIH0gZnJvbSAnLi9jYWxjdWxhdG9ycy90YXgtYW1vdW50LWNhbGN1bGF0b3InO1xuaW1wb3J0IHsgRXJwVHJpYnV0b3NTZXJ2aWNlIH0gZnJvbSAnLi9lcnAtdHJpYnV0b3Muc2VydmljZSc7XG5pbXBvcnQge1xuICAgIENhbXBvVHJpYnV0byxcbiAgICBFbnVtQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICBFbnVtQ2FtcG9UcmlidXRvLFxuICAgIEVudW1Fc2NyaXR1cmFyQWxpcXVvdGFJU1MsXG4gICAgRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhbyxcbiAgICBFbnVtR3J1cG9UcmlidXRvLFxuICAgIEVudW1Nb2RCYyxcbiAgICBFbnVtTW90RGVzLFxuICAgIEVudW1PcmlNZXIsXG4gICAgRW51bVJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMsXG4gICAgRW51bVNpdHVhY2FvLFxuICAgIGVudW1UaXBDcmVkUmVjdXAsXG4gICAgRW51bVRpcEltcENzdCxcbiAgICBFbnVtVGlwT3BlLFxuICAgIEVudW1UaXBvVHJpYnV0byxcbiAgICBJdGVtLFxuICAgIFN1Z2VzdGFvLFxuICAgIFRheENhbGN1bGF0aW9uTWVtb3J5XG59IGZyb20gJy4vZXJwLXRyaWJ1dG9zLnR5cGVzJztcbmltcG9ydCB7IG1hcEVudW1UaXBvVHJpYnV0b1RvRW51bVRpcEltcENzdCB9IGZyb20gJy4vbWFwcGluZ3MvZW51bS10aXAtaW1wLWNzdC1tYXBwaW5nJztcbmltcG9ydCB7IFJ1bGVzU2VydmljZSB9IGZyb20gJy4vcnVsZXMvcnVsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBUYXhSb3VuZGluZ1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RheC1yb3VuZGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IFRheFN0b3JlIH0gZnJvbSAnLi9zdG9yZXMvdGF4LnN0b3JlJztcbmltcG9ydCB7IGlzVGF4RnJvbVRheFJlZm9ybSB9IGZyb20gJy4vdGF4LXJlZm9ybS11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJy4vdHlwZXMvY29udGV4dCc7XG5pbXBvcnQgeyBHcm91cCB9IGZyb20gJy4vdHlwZXMvZ3JvdXAnO1xuaW1wb3J0IHsgVGF4IH0gZnJvbSAnLi90eXBlcy90YXgnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VycC10cmlidXRvcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VycC10cmlidXRvcy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbTG9hZGluZ0NvbnRleHRdXG59KVxuZXhwb3J0IGNsYXNzIEVycFRyaWJ1dG9zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KClcbiAgICBjb250ZXh0OiBDb250ZXh0O1xuICAgIEBJbnB1dCgpIHN1Z2VzdG9lczogU3VnZXN0YW9bXTtcbiAgICBASW5wdXQoKSBjYW1wb3NCbG9xdWVhZG9zID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgdHJpYnV0b3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyaWJ1dG9zVmFsdWU7XG4gICAgfVxuICAgIHNldCB0cmlidXRvcyh2YWwpIHtcbiAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlID0gdmFsO1xuICAgIH1cbiAgICBASW5wdXQoKSBkb21pbmlvPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNlcnZpY28/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgY3VycmVuY3lMb2NhbGVPcHRpb25zPzogYW55ID0ge1xuICAgICAgICBjdXJyZW5jeVN5bWJvbDogJycsXG4gICAgICAgIGRlY2ltYWxTZXBhcmF0b3I6ICcsJyxcbiAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yOiAnLidcbiAgICB9O1xuICAgIEBJbnB1dCgpIGlkc1RheGVzTWVtb3JpYUNhbGN1bG8/OiBUYXhDYWxjdWxhdGlvbk1lbW9yeVtdO1xuICAgIEBJbnB1dCgpIHBlcm1pc3Npb25NZW1vcmlhQ2FsY3Vsbz86IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgdHJpYnV0b3NDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRheFtdPigpO1xuXG4gICAgcmVhZG9ubHkgQmFkZ2VDb2xvcnMgPSBCYWRnZUNvbG9ycztcbiAgICByZWFkb25seSBCdXR0b25Qcmlvcml0eSA9IEJ1dHRvblByaW9yaXR5O1xuICAgIHJlYWRvbmx5IEJ1dHRvblNpemUgPSBCdXR0b25TaXplO1xuICAgIHJlYWRvbmx5IEJ1dHRvbkFuaW1hdGlvbiA9IEJ1dHRvbkFuaW1hdGlvbjtcblxuICAgIHB1YmxpYyBncnVwb3M6IEdyb3VwW10gPSBbXTtcbiAgICBwdWJsaWMgdHJpYnV0b3NWYWx1ZTogVGF4W10gPSBbXTtcbiAgICBwdWJsaWMgcmVsb2FkID0gdHJ1ZTtcbiAgICBwdWJsaWMgaW5kZXhBY2NvcmRpb246IG51bWJlcltdID0gW107XG4gICAgcHVibGljIHByZWZpeExhYmVsOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIG1lbnVJdGVtUGlzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUNvZmlucyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1JcGkgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSXNzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUltcG9ydGFjb2VzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbVJldGVuY29lcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1SZXRlbmNvZXNGdW5ydXJhbCA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1JY21zID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUNpZGVUZWNub2xvZ2lhID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUNCUyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1JQlNFc3RhZHVhbCA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1JQlNNdW5pY2lwYWwgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSUJTQ3JlZGl0b1ByZXN1bWlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1JUyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1DQlNfSUJTX0VTVE9STk9fQ1JFRElUTyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1DQlNfSUJTX0FqdXN0ZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1DYnNJYnNUcmFuc2ZlcmVuY2lhQ3JlZGl0byA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbyA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFyID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhciA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ29maW5zRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcGkgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaUNyZWRpdGFkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcGlQcmVzdW1pZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaU91dHJhc0Rlc3Blc2FzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Jc3MgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlzc1JldGlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSW1wb3N0b0ltcG9ydGFjYW8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc1JlY3VwZXJhckltcG9ydGFjYW8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhckltcG9ydGFjYW8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc1JldGlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ29maW5zUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Dc2xsUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcnJmUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JbnNzUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JbnNzUGF0cm9uYWwgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXNTdCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtRmNwU3QgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXNDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXNFZmV0aXZhbWVudGVDcmVkaXRhZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUZjcCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc0RpZmVyaWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zRGVzb25lcmFkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNGYXR1cmVtZW50byA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ29maW5zID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1GY3BVZkRlc3Rpbm8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNGdXR1cm8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSWNtc1NpbXBsZXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSWNtc0NyZWRpdG9QcmVzdW1pZG8gPSB0cnVlO1xuICAgIHByaXZhdGUgcmVxdWlyZWREaWZhbERldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJQ01TX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEZDUF9VRl9EZXN0aW5vX0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzRmF0dXJhbWVudG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSW1wb3N0b05hb1JlY3VwZXJhZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkYmFzZUNhbGN1bG9DcmVkaXRvID0gdHJ1ZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkUGVyY2VudHVhbFJlZHVjYW8gPSB0cnVlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJY21zU3RTb2xpZGFyaW8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSWNtc1N0UmV0aWRvQW50ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEZjcFN0UmVkaXRvQW50ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBwZXJjZW50YWdlTG9jYWxlT3B0aW9ucz86IGFueTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICByZWFkb25seSBsb2FkaW5nQ29udGV4dDogTG9hZGluZ0NvbnRleHQsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGUwMjdTdHJMb29rdXA6IEUwMjdTdHJMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYmVuZWZpY2lvRmlzY2FsTG9va3VwOiBCZW5lZmljaW9GaXNjYWxMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZTAyN2VxaUxvb2t1cDogRTAyN0VxaUxvb2t1cCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBuYXR1cmV6YVJlY2VpdGFMb29rdXA6IENwbFRyaU5vdGFTYWlkYU5hdHVyZXphUmVjZWl0YVBpc0NvZmluc0xvb2t1cCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUxvb2t1cDogQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9va3VwVXRpbHM6IExvb2t1cFZhbGlkYXRpb25VdGlscyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlcnBUcmlidXRvc1NlcnZpY2U6IEVycFRyaWJ1dG9zU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBndGFnOiBHVGFnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBydWxlc1NlcnZpY2U6IFJ1bGVzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRheFJvdW5kaW5nU2VydmljZTogVGF4Um91bmRpbmdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRheEFtb3VudENhbGN1bGF0b3I6IFRheEFtb3VudENhbGN1bGF0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmVhdHVyZVRvZ2dsZVNlcnZpY2U6IEZlYXR1cmVUb2dnbGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRheFN0b3JlOiBUYXhTdG9yZVxuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRvbWluaW8gPSB0aGlzLmRvbWluaW8gPyB0aGlzLmRvbWluaW8gOiAnZXJweF9jcGxfaW1wJztcbiAgICAgICAgdGhpcy5zZXJ2aWNvID0gdGhpcy5zZXJ2aWNvID8gdGhpcy5zZXJ2aWNvIDogJ2NhZGFzdHJvcyc7XG5cbiAgICAgICAgdGhpcy5wcmVmaXhMYWJlbCA9IGAke3RoaXMuZG9taW5pb30uJHt0aGlzLnNlcnZpY299YDtcblxuICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMpLmxlbmd0aCA9PSAwKVxuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6ICcnLFxuICAgICAgICAgICAgICAgIGRlY2ltYWxTZXBhcmF0b3I6ICcsJyxcbiAgICAgICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJ1xuICAgICAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zID0ge1xuICAgICAgICAgICAgY3VycmVuY3lTeW1ib2w6ICclJyxcbiAgICAgICAgICAgIGRlY2ltYWxTZXBhcmF0b3I6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLnRob3VzYW5kc1NlcGFyYXRvclxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZ2V0QXJyZWRvbmRhbWVudG9BYm50KCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YXJpYXZlaXNBbHRlcmFkYXMgPSBPYmplY3Qua2V5cyhjaGFuZ2VzKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXZhcmlhdmVpc0FsdGVyYWRhcy5pbmNsdWRlcygnc3VnZXN0b2VzJykgfHxcbiAgICAgICAgICAgIHZhcmlhdmVpc0FsdGVyYWRhcy5sZW5ndGggPiAxXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5jbGVhclZhcmlhYmxlcygpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZSA9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUubGVuZ3RoID09IDBcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3J1cG9zID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlID0gW107XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVsb2FkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncnVwb3MgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRyaWJ1dG9zKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRUcmlidXRvcygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNhbXBvc0Jsb3F1ZWFkb3MgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVhZE9ubHlUcmlidXRvcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5sb29rdXBVdGlscy5yZXNldFN0b3JlZEtleXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWVtb3JpYUNhbGN1bG8oaW1wb3N0bzogYW55KSB7XG4gICAgICAgIGxldCB0cmlidXRvID0gdGhpcy5pZHNUYXhlc01lbW9yaWFDYWxjdWxvLmZpbmQoKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQudGlwb1RyaWJ1dG8gPT0gaW1wb3N0by5uYW1lO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hYnJpcldpbmRvd1VybE1lbW9yaWFDYWxjdWxvKHRyaWJ1dG8pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFrZVVybFdpbmRvdyhwYXJhbXM6IElkZW50aWZpZXJzLCB0cmlidXRvPzogYW55KSB7XG4gICAgICAgIHRoaXMuZXJwVHJpYnV0b3NTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0RnJvbnRlbmQocGFyYW1zKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGAke3Jlc3BvbnNlLmZyb250ZW5kc1swXS5lbWJlZGRlZFVSTH1gLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmd0YWcuc2VuZEJ1dHRvbkNsaWNrKCdCb3TDo28gYWNlc3NhciBwYXJhbWV0cml6YcOnw6NvJywge1xuICAgICAgICAgICAgaW1wb3N0b3M6IHRyaWJ1dG8udGlwb1RyaWJ1dG9cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRpc2FibGVkQnV0dG9uKGl0ZW06IEl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwLmdldCgnaW1wb3N0b01hbnVhbCcpLnZhbHVlIHx8XG4gICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlID09PVxuICAgICAgICAgICAgICAgIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMIHx8XG4gICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlID09PVxuICAgICAgICAgICAgICAgIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETyB8fFxuICAgICAgICAgICAgdGhpcy5pZHNUYXhlc01lbW9yaWFDYWxjdWxvID09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgIXRoaXMuaWRzVGF4ZXNNZW1vcmlhQ2FsY3Vsby5maW5kKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50aXBvVHJpYnV0byA9PSBpdGVtLm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5pZFBhcmFtZXRybyAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZUJ1dHRvbihpbXBvc3RvOiBhbnkpIHtcbiAgICAgICAgc3dpdGNoIChpbXBvc3RvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFicmlyV2luZG93VXJsTWVtb3JpYUNhbGN1bG8odHJpYnV0bzogYW55KSB7XG4gICAgICAgIGlmICghdHJpYnV0bz8uaWRQZXJmaWxUcmlidXRhcmlvICYmICF0cmlidXRvPy5pZFBhcmFtZXRybykge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnJvcl9tZW1vcmlhX2NhbGN1bG9fbWVzc2FnZV90aXRsZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2Vycm9yX21lbW9yaWFfY2FsY3Vsb19tZXNzYWdlX2NvbnRlbnQnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgaWRlbnRpZmllcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRvbWFpbk5hbWU6ICdlcnB4X2NwbF9pbXAnLFxuICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlTmFtZTogJ2ltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICAgICAgYXBwTmFtZTogJ2VycHgtY3BsLWltcC1pbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlOiBgJHt0aGlzLnZhbGlkYVRlbGEodHJpYnV0byl9YFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLm1ha2VVcmxXaW5kb3cocGFyYW1zLCB0cmlidXRvKTtcbiAgICB9XG5cbiAgICB2YWxpZGFUZWxhKHRheGVzOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdFRheGVzKHRheGVzLnRpcG9UcmlidXRvKSkge1xuICAgICAgICAgICAgaWYgKHRheGVzLmlkUGFyYW1ldHJvRXN0YWRvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpY21zc3QvJHt0YXhlcy5pZFBhcmFtZXRyb1N0fS9pY21zc3QtcGFyYW1ldHJvcy8ke3RheGVzLmlkUGFyYW1ldHJvRXN0YWRvfT9wZXJmaWxUcmlidXRhcmlvSWQ9JHt0YXhlcy5pZFBlcmZpbFRyaWJ1dGFyaW99JnBhcmFtZXRyb0ltcG9zdG9zSWQ9JHt0YXhlcy5pZFBhcmFtZXRyb31gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYGljbXNzdC8ke3RheGVzLmlkUGFyYW1ldHJvfS9pY21zc3QtcGFyYW1ldHJvcy8ke3RheGVzLmlkUGFyYW1ldHJvU3R9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYHBlcmZpbC10cmlidXRhcmlvLyR7dGF4ZXMuaWRQZXJmaWxUcmlidXRhcmlvfS9wYXJhbWV0cml6YWNhby1pbXBvc3Rvcy8ke3RoaXMuZ2V0VHJpYnV0b1BhaSh0YXhlcy50aXBvVHJpYnV0byl9LyR7XG4gICAgICAgICAgICB0YXhlcy5pZFBhcmFtZXRyb1xuICAgICAgICB9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU3RUYXhlcyh0YXhlczogYW55KSB7XG4gICAgICAgIHN3aXRjaCAodGF4ZXMpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUcmlidXRvUGFpKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBzd2l0Y2ggKHRyaWJ1dG8pIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOlxuICAgICAgICAgICAgICAgIHJldHVybiAncGlzJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOlxuICAgICAgICAgICAgICAgIHJldHVybiAnY29maW5zJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSTpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpcGknO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2lzcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpaSc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNTTEw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JldGVuY29lcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpY21zJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NpZGUnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0RJRkVSSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19HT1ZFUk5BTUVOVEFMOlxuICAgICAgICAgICAgICAgIHJldHVybiAnY2JzJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9ESUZFUklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfR09WRVJOQU1FTlRBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2licy1lc3RhZHVhbCc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9ESUZFUklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9HT1ZFUk5BTUVOVEFMOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWJzLW11bmljaXBhbCc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2lzJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyVmFyaWFibGVzKCkge1xuICAgICAgICBpZiAodGhpcy5yZWxvYWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbLTFdO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNCUyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSUJTTXVuaWNpcGFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSVMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1QaXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Db2ZpbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JcGkgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Jc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUljbXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSWNtc0NyZWRpdG9QcmVzdW1pZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1DYnNJYnNUcmFuc2ZlcmVuY2lhQ3JlZGl0byA9IGZhbHNlO1xuXG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JlY3VwZXJhciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGkgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpQ3JlZGl0YWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaURldm9sdmlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlQcmVzdW1pZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXNzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlzc1JldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXJJbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhckltcG9ydGFjYW8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzUmV0aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Dc2xsUmV0aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlycmZSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW5zc1JldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUGF0cm9uYWwgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc1N0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcFN0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNFZmV0aXZhbWVudGVDcmVkaXRhZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNEaWZlcmlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRGVzb25lcmFkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1EaWZlcmVuY2lhbEFsaWNvdGEgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzRmF0dXJlbWVudG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc0Z1dHVybyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTaW1wbGVzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1N0U29saWRhcmlvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1N0UmV0aWRvQW50ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkRmNwU3RSZWRpdG9BbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVHJpYnV0b3MoKSB7XG4gICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZS5tYXAoKGl0KSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0LnRpcG9JbXBvc3RvKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19BX0FQUk9QUklBUjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfRElGRVJJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDQlMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9BX0FQUk9QUklBUjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfRElGRVJJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUlCU0VzdGFkdWFsKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUw6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9BX0FQUk9QUklBUjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSUJTTXVuaWNpcGFsKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlETzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUlCU0NyZWRpdG9QcmVzdW1pZG8oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJUygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfRVNUT1JOT19DUkVESVRPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDQlNJQlNFc3Rvcm5vQ3JlZGl0bygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19BSlVTVEU6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDQlNfSUJTX0FqdXN0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDQlNJQlNUcmFuc2ZlcmVuY2lhQ3JlZGl0bygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhUGlzKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDb2ZpbnMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJcGkoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJc3MoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJbXBvcnRhY29lcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ1NMTDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1M6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YVJldGVuY29lcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVM6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJY21zKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJY21zQ3JlZGl0b1ByZXN1bWlkbygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1M6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhUmV0ZW5jb2VzRnVucnVyYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZE9ubHlUcmlidXRvcygpOiB2b2lkIHtcbiAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiB0aGlzLmdydXBvcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3VwLml0ZW0pIHtcbiAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VHJpYnV0b3MoKSB7XG4gICAgICAgIGlmICh0aGlzLmdydXBvcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKChncnVwbykgPT5cbiAgICAgICAgICAgICAgICBncnVwby5pdGVtLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUubWFwKChpdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ubmFtZSA9PT0gaXQudGlwb0ltcG9zdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5wYXRjaFZhbHVlKGl0LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybShpdC50aXBvSW1wb3N0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKGl0LnRpcG9JbXBvc3RvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuZ3J1cG9zKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3VwLml0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVmFsdWVDaGFuZ2VzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFsaWRhdG9ycyh0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pIHtcbiAgICAgICAgaWYgKHRoaXMuZ3J1cG9zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdydXBvcy5tYXAoKGdydXBvKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3J1cG8uaXRlbVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChpdCkgPT4gaXQubmFtZSA9PSB0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChpdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzVmFsdWUgPSBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSAhPT0gJ2ltcG9zdG9NYW51YWwnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkgIT09IEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmdldChrZXkpLnZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuZ2V0KGtleSkudmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAudmFsdWUpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PSAncGVyY2VudHVhbFJlZHVjYW8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsRGlmZXJpbWVudG8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PT0gJ3BlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDEwMDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ3ZhbG9yJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnc2l0dWFjYW9UcmlidXRhcmlhJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ29ic2VydmFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMjApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2NvZGlnb0FycmVjYWRhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnYmVuZWZpY2lvRmlzY2FsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdpbmRpY2F0aXZvQXF1aXNpY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdjb2RpZ29UcmlidXRhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdJbXBvc3RvTmFvUmVjdXBlcmFkbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2Jhc2VDYWxjdWxvQ3JlZGl0bycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gJ2ltcG9zdG9NYW51YWwnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAnbmF0dXJlemFSZWNlaXRhJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gJ3ZhbG9yRGVkdWNhbycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gIT09ICdyZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gJ3JlZHVjYW9BbGlxdW90YSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAudmFsdWUpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PSAncGVyY2VudHVhbFJlZHVjYW8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsRGlmZXJpbWVudG8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9PT0gJ3BlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDEwMDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ3ZhbG9yJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKHZhbGlkYXRvcnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ29ic2VydmFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMjApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2NvZGlnb0FycmVjYWRhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnYmVuZWZpY2lvRmlzY2FsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdpbmRpY2F0aXZvQXF1aXNpY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdJbXBvc3RvTmFvUmVjdXBlcmFkbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVBbGxGb3JtRmllbGRzKGZvcm1Hcm91cDogRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgICAgIE9iamVjdC5rZXlzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGZpZWxkKTtcbiAgICAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpXG4gICAgICAgICAgICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSh7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgICAgICAgICAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cClcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlQWxsRm9ybUZpZWxkcyhjb250cm9sKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0YSBhIHZhbGlkYcOnw6NvIGRlIHRvZG9zIG9zIGNhbXBvcyBkb3MgZm9ybXVsw6FyaW9zIGRlbnRybyBkb3MgZ3J1cG9zLlxuICAgICAqXG4gICAgICogKipBdGVuw6fDo286KiogRXN0ZSBtw6l0b2RvICoqbsOjbyoqIGRldmUgc2VyIHV0aWxpemFkbyBubyB0ZW1wbGF0ZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBzZSB0b2RvcyBvcyBmb3JtdWzDoXJpb3MgZm9yZW0gdsOhbGlkb3MgZSBuZW5odW0gdmFsb3IgZGUgaW1wb3N0byBmb3IgbmVnYXRpdm87IGNhc28gY29udHLDoXJpbywgcmV0b3JuYSBgZmFsc2VgLlxuICAgICAqL1xuICAgIHZhbGlkYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZmluZEdyb3VwV2l0aE5lZ2F0aXZlVGF4VmFsdWUoKTtcblxuICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdGlja3k6IHRydWUsXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lcnJvcicpLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZXJyb3JfdGF4X3dpdGhfbmVnYXRpdmVfdGF4X3ZhbHVlJyxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18ke2dyb3VwLmdydXBvVHJpYnV0by50b0xvd2VyQ2FzZSgpfWBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5ncnVwb3MuZXZlcnkoKGdyb3VwKSA9PlxuICAgICAgICAgICAgZ3JvdXAuaXRlbVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmZvcm1Hcm91cC5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICAuZXZlcnkoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUFsbEZvcm1GaWVsZHMoaXRlbS5mb3JtR3JvdXApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmZvcm1Hcm91cC52YWxpZDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZlcmlmaWNhIHNlIGFsZ3VtIGZvcm11bMOhcmlvIGVzdMOhIGludsOhbGlkby5cbiAgICAgKlxuICAgICAqIERldmUgc2VyIHV0aWxpemFkbyBzb21lbnRlIG5vIHRlbXBsYXRlIHBhcmEgY29udHJvbGUgZGUgYm90w7VlcyBvdSBleGliacOnw6NvIGRlIG1lbnNhZ2Vucy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBzZSBhbGd1bSBgZm9ybUdyb3VwYCBlc3RpdmVyIGludsOhbGlkbyBvdSBzZSBhbGd1bSB2YWxvciBkZSBpbXBvc3RvIGZvciBuZWdhdGl2by5cbiAgICAgKi9cbiAgICBpc0ludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIXRoaXMuZmluZEdyb3VwV2l0aE5lZ2F0aXZlVGF4VmFsdWUoKSB8fFxuICAgICAgICAgICAgdGhpcy5ncnVwb3Muc29tZSgoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgZ3JvdXAuaXRlbS5zb21lKChpdGVtKSA9PiBpdGVtLmZvcm1Hcm91cC5pbnZhbGlkKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEdyb3VwV2l0aE5lZ2F0aXZlVGF4VmFsdWUoKTogR3JvdXAgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5ncnVwb3NcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09IEVudW1HcnVwb1RyaWJ1dG8uQ0JTIHx8XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT0gRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUwgfHxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PSBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUwgfHxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuZmluZCgoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgZ3JvdXAuaXRlbS5zb21lKChpdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICBuZXcgQmlnTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAuZ2V0KCd2YWxvcicpLnZhbHVlID8/IDBcbiAgICAgICAgICAgICAgICAgICAgKS5pc0xlc3NUaGFuKDApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhcnJJdGVuczogYW55ID0gW107XG4gICAgICAgIGlmICh0aGlzLmdydXBvcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKChncnVwbykgPT4ge1xuICAgICAgICAgICAgICAgIGdydXBvLml0ZW0ubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVBbGxGb3JtRmllbGRzKGl0ZW0uZm9ybUdyb3VwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJpYnV0b3NWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXVNYXRoID0gdGhpcy50cmlidXRvc1ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyaWJ1dG8pID0+IHRyaWJ1dG8udGlwb0ltcG9zdG8gPT0gaXRlbS5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHRyaWJ1dG8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRyaWJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGV1TWF0aCAmJiBkZXVNYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyckl0ZW5zLnB1c2goZGV1TWF0aFswXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyckl0ZW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXBvSW1wb3N0bzogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJJdGVucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXBvSW1wb3N0bzogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVsb2FkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudHJpYnV0b3NDaGFuZ2UuZW1pdChhcnJJdGVucyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3ZvSW1wb3N0b01hbnVhbChpdGVtOiBJdGVtLCBzaW5nbGVDaGFuZ2U/OiBib29sZWFuKSB7XG4gICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKGl0ZW0ubmFtZSBhcyBFbnVtVGlwb1RyaWJ1dG8pKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1GaWVsZCBvZiBpdGVtLmZvcm1GaWVsZCkge1xuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5vbkJsdXI/LmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNpbmdsZUNoYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdydXBvcy5maW5kKChncm91cCkgPT5cbiAgICAgICAgICAgICAgICBncm91cC5pdGVtLmluY2x1ZGVzKGl0ZW0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVWYWx1ZUNoYW5nZXMoe1xuICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgZ3JvdXBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFjdGlvbnMoKTogTWVudUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IG1lbnU6IE1lbnVJdGVtW10gPSBbXTtcblxuICAgICAgICBtZW51LnB1c2goXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY2JzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1DQlMsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUNCUygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT0gRW51bUdydXBvVHJpYnV0by5DQlNcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pYnNfZXN0YWR1YWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJQlNFc3RhZHVhbCgpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pYnNfbXVuaWNpcGFsX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JQlNNdW5pY2lwYWwsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUlCU011bmljaXBhbCgpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaWJzX2NyZWRpdG9fcHJlc3VtaWRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JQlNDcmVkaXRvUHJlc3VtaWRvLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJQlNDcmVkaXRvUHJlc3VtaWRvKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdydXBvcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtR3J1cG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaXNfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlTLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJUygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT0gRW51bUdydXBvVHJpYnV0by5JU1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2Nic19pYnNfZXN0b3Jub19jcmVkaXRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1DQlNfSUJTX0VTVE9STk9fQ1JFRElUTyxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhQ0JTSUJTRXN0b3Jub0NyZWRpdG8oKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOlxuICAgICAgICAgICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCcpIHx8XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UuZGViaXRJbnZvaWNlVHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSW52ZW50b3J5IExvc3MnKSB8fFxuICAgICAgICAgICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdDcmVkaXQnKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19jYnNfaWJzX2FqdXN0ZV9sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtQ0JTX0lCU19BanVzdGUsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUNCU19JQlNfQWp1c3RlKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdydXBvcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtR3J1cG9UcmlidXRvLkNCU19JQlNfQUpVU1RFXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdmlzaWJsZTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JyAmJlxuICAgICAgICAgICAgICAgICAgICAodGhpcy5jb250ZXh0Lmludm9pY2UuZGViaXRJbnZvaWNlVHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICdDcmVkaXQgQ2FuY2VsbGF0aW9uIEV4ZW1wdCBPdXRwdXRzJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UuZGViaXRJbnZvaWNlVHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGViaXRzIFVucHJvY2Vzc2VkIEludm9pY2VzIEFzc2Vzc21lbnQnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS5kZWJpdEludm9pY2VUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEaXNxdWFsaWZpY2F0aW9uIGZyb20gU2ltcGxlcyBOYWNpb25hbCcpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2Nic19pYnNfdHJhbnNmZXJlbmNpYV9jcmVkaXRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1DYnNJYnNUcmFuc2ZlcmVuY2lhQ3JlZGl0byxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhQ0JTSUJTVHJhbnNmZXJlbmNpYUNyZWRpdG8oKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE9cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOlxuICAgICAgICAgICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmNvbnRleHQuaW52b2ljZS5kZWJpdEludm9pY2VUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDcmVkaXQgVHJhbnNmZXIgQ29vcGVyYXRpdmVzJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLmRlYml0SW52b2ljZVR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDcmVkaXQgVHJhbnNmZXIgU3VjY2Vzc2lvbicpKSB8fFxuICAgICAgICAgICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdDcmVkaXQnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS5jcmVkaXRJbnZvaWNlVHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ3JlZGl0IFRyYW5zZmVyIFN1Y2Nlc3Npb24nKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ3JldGVuY2FvRnVucnVyYWwnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX3JldGVuY2FvX2Z1bnJ1cmFsX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1SZXRlbmNvZXNGdW5ydXJhbCxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhUmV0ZW5jb2VzRnVucnVyYWwoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAncGlzJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19waXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbVBpcyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhUGlzKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ2NvZmlucycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY29maW5zX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1Db2ZpbnMsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUNvZmlucygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICdpcGknLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2lwaV9sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSXBpLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJcGkoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAnaWNtcycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaWNtc19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSWNtcyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSWNtcygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGhpcy5jb250ZXh0LmRvY3VtZW50ICE9PSAnU2FsZSBPcmRlcicpIHtcbiAgICAgICAgICAgIG1lbnUucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6ICdpbXBvcnRhY29lcycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaW1wb3J0YWNvZXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUltcG9ydGFjb2VzLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJbXBvcnRhY29lcygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZScgfHxcbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLml0ZW0udHlwZSA9PT0gJ1NlcnZpY2UnKSB8fFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5vcmRlci5pdGVtLnR5cGUgPT09ICdTZXJ2aWNlJykgfHxcbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5vcmRlci5pdGVtLnR5cGUgPT09ICdTZXJ2aWNlJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBtZW51LnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiAnaXNzJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pc3NfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlzcyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSXNzKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJyB8fFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgfHxcbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcicgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQub3JkZXIuaXRlbS50eXBlID09PSAnU2VydmljZScpIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcicgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQub3JkZXIuaXRlbS50eXBlID09PSAnU2VydmljZScpXG4gICAgICAgICkge1xuICAgICAgICAgICAgbWVudS5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogJ3JldGVuY29lcycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfcmV0ZW5jb2VzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1SZXRlbmNvZXMsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YVJldGVuY29lcygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLml0ZW0udHlwZSA9PT0gJ1NlcnZpY2UnXG4gICAgICAgICkge1xuICAgICAgICAgICAgbWVudS5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogJ2NpZGUnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2NpZGVfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUNpZGVUZWNub2xvZ2lhLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFDaWRlKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJyB8fFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZScgfHxcbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCcpXG4gICAgICAgIClcbiAgICAgICAgICAgIG1lbnUucHVzaCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaWNtc19jcmVkaXRvX3ByZXN1bWlkb19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSWNtc0NyZWRpdG9QcmVzdW1pZG8sXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUljbXNDcmVkaXRvUHJlc3VtaWRvKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1lbnU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb2RlTW9zdHJhckltcG9zdG9zKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIShcbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdDcmVkaXQnKSB8fFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSWNtc0NyZWRpdG9QcmVzdW1pZG8oKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSWNtc0NyZWRpdG9QcmVzdW1pZG8pIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtSWNtc0NyZWRpdG9QcmVzdW1pZG8gPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRPX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19jcmVkaXRvX3ByZXN1bWlkbycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CZW5lZmljaW9GaXNjYWwgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRPX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSUNNU19DUkVESVRPX1BSRVNVTUlETyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSUNNU19DUkVESVRPX1BSRVNVTUlETyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNpZGUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtQ2lkZVRlY25vbG9naWEgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcbiAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jaWRlX3RlY25vbG9naWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NpZGVfdGVjbm9sb2dpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUEgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUEsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJY21zKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUljbXMgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JY21zID0gdHJ1ZTtcblxuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PcmlnZW0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2NyZWRpdGFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVST1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zaW1wbGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbERpZmVyaW1lbnRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRElGQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2RpZmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkRJRkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBASUNNU19TVCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3NvbGlkYXJpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVST1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLyogRElGQUwgREVWT0xWSURPICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlub19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmFEZXN0aW5vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3BfdWZfZGVzdGlub19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2NyZWRpdGFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVST1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zaW1wbGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbERpZmVyaW1lbnRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRElGQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2RpZmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkRJRkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBASUNNU19TVCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3NvbGlkYXJpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVST1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlICE9PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PcmlnZW0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVST1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zaW1wbGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbERpZmVyaW1lbnRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRElGQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2RpZmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkRJRkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3BfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBASUNNU19TVCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3NvbGlkYXJpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVST1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0VGRVRJVk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZWZldGl2bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0VGRVRJVk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc2ltcGxlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGVzb25lcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxEaWZlcmltZW50b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc191Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiogQElDTVNfU1QgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JSZWNvbGhpZG9QZWxvU3Vic3RpdHV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckljbXNTdFJldGlkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgT3V0Z29pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGVzb25lcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3BfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckljbXNTdFJldGlkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PcmlnZW0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkRJRkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19kaWZhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5ESUZBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkltcG9zdG9OYW9SZWN1cGVyYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckljbXNTdFJldGlkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc191Zl9kZXN0aW5vX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYURlc3Rpbm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSUNNUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklDTVMsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFSZXRlbmNvZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUlJGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcGF0cm9uYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ1NMTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklSUkYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lycmZfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklSUkZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19wYXRyb25hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NzbGxfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ1NMTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklSUkYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lycmZfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVJSRlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVJSRlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgT3V0Z29pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ1NMTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklSUkYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lycmZfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklSUkZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NzbGxfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUlJGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcGF0cm9uYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5SRVRFTkNPRVMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5SRVRFTkNPRVMsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFSZXRlbmNvZXNGdW5ydXJhbCgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1SZXRlbmNvZXNGdW5ydXJhbCA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Z1bnJ1cmFsX2luc3MnLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uSW5kaWNhdGl2b0FxdWlzaWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1JBVCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Z1bnJ1cmFsX3JhdCcsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbmRpY2F0aXZvQXF1aXNpY2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1JBVFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUixcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Z1bnJ1cmFsX3NlbmFyJyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkluZGljYXRpdm9BcXVpc2ljYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfVE9UQUwsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mdW5ydXJhbF90b3RhbCcsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5GVU5SVVJBTCArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkZVTlJVUkFMLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBmdW5ydXJhbFRvdGFsID0gaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLm5hbWUgPT09ICdGVU5SVVJBTF9UT1RBTCdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBmdW5ydXJhbFRvdGFsLmZvcm1Hcm91cC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSW1wb3J0YWNvZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSW1wb3J0YWNvZXMgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmNvbnRleHQuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW1wb3N0b19pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ltcG9zdG9faW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXJfaW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZWN1cGVyYXJfaW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbXBvc3RvX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmVjdXBlcmFyX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmVjdXBlcmFyX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JTVBPUlRBQ09FUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklNUE9SVEFDT0VTLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSXNzKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlzcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlzcyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5jb250ZXh0LmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnT3V0Z29pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uRXNjcml0dXJhckFsaXF1b3RhSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnQ29udHJvbGxlcnNoaXAgT3V0Z29pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JEZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklTU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JEZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JEZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklTU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JEZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSVNTICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSVNTLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhQ0JTKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUNCUykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1DQlMgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IGNhbXBvcyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyxcbiAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5DQlNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEsXG4gICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8sXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSB9LFxuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJbnZvaWNlRG9jdW1lbnQoKSkge1xuICAgICAgICAgICAgY2FtcG9zLnB1c2goXG4gICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLkNCU1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjYW1wb3NfQ0JTX0NSRURJVE9fUFJFU1VNSURPID0gW1xuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmICh0aGlzLmlzSW52b2ljZURvY3VtZW50KCkpIHtcbiAgICAgICAgICAgIGNhbXBvc19DQlNfQ1JFRElUT19QUkVTVU1JRE8ucHVzaChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhQ3JlZGl0b1ByZXN1bWlkb1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhbXBvc19DQlNfVFJJQlVUQUNBT19SRUdVTEFSID0gW1xuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmICh0aGlzLmlzSW52b2ljZURvY3VtZW50KCkpIHtcbiAgICAgICAgICAgIGNhbXBvc19DQlNfVFJJQlVUQUNBT19SRUdVTEFSLnB1c2goXG4gICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0JTLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnMnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoY2FtcG9zLCBFbnVtVGlwb1RyaWJ1dG8uQ0JTKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLih0aGlzLmlzQWNjcnVhbFRheERvY3VtZW50KClcbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfQV9BUFJPUFJJQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfYV9hcHJvcHJpYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19BX0FQUk9QUklBUlxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic19kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfY3JlZGl0b19wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIGNhbXBvc19DQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DQlNfQ1JFRElUT19QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfVFJJQlVUQUNBT19SRUdVTEFSLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfdHJpYnV0YWNhb19yZWd1bGFyJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBjYW1wb3NfQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUixcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19UUklCVVRBQ0FPX1JFR1VMQVJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfR09WRVJOQU1FTlRBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2JzX2dvdmVybmFtZW50YWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19HT1ZFUk5BTUVOVEFMXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DQlMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNCUyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlCU0VzdGFkdWFsKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLi4uKHRoaXMuaXNBY2NydWFsVGF4RG9jdW1lbnQoKVxuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9BX0FQUk9QUklBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19lc3RhZHVhbF9hX2Fwcm9wcmlhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0FfQVBST1BSSUFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9ESUZFUklETyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfRElGRVJJRE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfVFJJQlVUQUNBT19SRUdVTEFSLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfZXN0YWR1YWxfdHJpYnV0YWNhb19yZWd1bGFyJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX1RSSUJVVEFDQU9fUkVHVUxBUlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9HT1ZFUk5BTUVOVEFMLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfZXN0YWR1YWxfZ292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0dPVkVSTkFNRU5UQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTCArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSUJTTXVuaWNpcGFsKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlCU011bmljaXBhbCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1JQlNNdW5pY2lwYWwgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX211bmljaXBhbCcsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi4odGhpcy5pc0FjY3J1YWxUYXhEb2N1bWVudCgpXG4gICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9BX0FQUk9QUklBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWxfYV9hcHJvcHJpYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfQV9BUFJPUFJJQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9ESUZFUklETyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX211bmljaXBhbF9kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9ESUZFUklET1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfVFJJQlVUQUNBT19SRUdVTEFSLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfbXVuaWNpcGFsX3RyaWJ1dGFjYW9fcmVndWxhcicsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfVFJJQlVUQUNBT19SRUdVTEFSXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9HT1ZFUk5BTUVOVEFMLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfbXVuaWNpcGFsX2dvdmVybmFtZW50YWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfR09WRVJOQU1FTlRBTFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTCArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTCxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlCU0NyZWRpdG9QcmVzdW1pZG8oKTogSXRlbVtdIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JQlNDcmVkaXRvUHJlc3VtaWRvKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUlCU0NyZWRpdG9QcmVzdW1pZG8gPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IGNhbXBvczogQ2FtcG9UcmlidXRvW10gPSBbXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJbnZvaWNlRG9jdW1lbnQoKSkge1xuICAgICAgICAgICAgY2FtcG9zLnB1c2goXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUNyZWRpdG9QcmVzdW1pZG9cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19jcmVkaXRvX3ByZXN1bWlkbycsXG4gICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKGNhbXBvcywgRW51bVRpcG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlETylcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlETyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSVMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSVMpIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtSVMgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IGNhbXBvczogQ2FtcG9UcmlidXRvW10gPSBbXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJbnZvaWNlRG9jdW1lbnQoKSkge1xuICAgICAgICAgICAgY2FtcG9zLnB1c2goXG4gICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLFxuICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JU1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTLFxuICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzJyxcbiAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoY2FtcG9zLCBFbnVtVGlwb1RyaWJ1dG8uSVMpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSVMsXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDQlNJQlNFc3Rvcm5vQ3JlZGl0bygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1DQlNfSUJTX0VTVE9STk9fQ1JFRElUTykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1DQlNfSUJTX0VTVE9STk9fQ1JFRElUTyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfRVNUT1JOT19DUkVESVRPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfZXN0b3Jub19jcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DQlNfRVNUT1JOT19DUkVESVRPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVE9STk9fQ1JFRElUTyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdG9ybm9fY3JlZGl0bycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVE9STk9fQ1JFRElUT1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19FU1RPUk5PX0NSRURJVE8gKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNCU19JQlNfRVNUT1JOT19DUkVESVRPLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhQ0JTX0lCU19BanVzdGUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtQ0JTX0lCU19BanVzdGUpIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtQ0JTX0lCU19BanVzdGUgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0FKVVNURSxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2JzX2FqdXN0ZScsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJpb2RvQXB1cmFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19BSlVTVEVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfQUpVU1RFLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfYWp1c3RlJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmlvZG9BcHVyYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX0FKVVNURVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19BSlVTVEUgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNCU19JQlNfQUpVU1RFLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhQ0JTSUJTVHJhbnNmZXJlbmNpYUNyZWRpdG8oKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtQ2JzSWJzVHJhbnNmZXJlbmNpYUNyZWRpdG8pIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtQ2JzSWJzVHJhbnNmZXJlbmNpYUNyZWRpdG8gPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSQU5TRkVSRU5DSUFfQ1JFRElUTyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2JzX3RyYW5zZmVyZW5jaWFfY3JlZGl0bycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSQU5TRkVSRU5DSUFfQ1JFRElUT1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic190cmFuc2ZlcmVuY2lhX2NyZWRpdG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkNCU19JQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX1RSQU5TRkVSRU5DSUFfQ1JFRElUTyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YVBpcygpOiBhbnlbXSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtUGlzID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtUGlzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5iYXNlQ2FsY3Vsb0NyZWRpdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3BpcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTmF0dXJlemFSZWNlaXRhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3BpcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX2ZhdHVyYW1lbnRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5OYXR1cmV6YVJlY2VpdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uUElTICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uUElTLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhQ29maW5zKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUNvZmlucyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNvZmlucyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcbiAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZWN1cGVyYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uYmFzZUNhbGN1bG9DcmVkaXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUlxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmlucycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTmF0dXJlemFSZWNlaXRhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uYmFzZUNhbGN1bG9DcmVkaXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DT0ZJTlMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5DT0ZJTlMsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJcGkoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSXBpID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSXBpID0gdHJ1ZTtcblxuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uRW5xdWFkcmFtZW50b0lwaSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfY3JlZGl0YWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfT1VUUkFTX0RFU1BFU0FTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfb3V0cmFzX2Rlc3Blc2FzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2NyZWRpdGFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX3ByZXN1bWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdQcm9kdWN0IFJldHVybidcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uRW5xdWFkcmFtZW50b0lwaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbXBvc3RvTmFvUmVjdXBlcmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uRW5xdWFkcmFtZW50b0lwaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSVBJICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIHN3aXRjaCAodHJpYnV0bykge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXI7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUEk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaURldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Jc3M7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlzc1JldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXJJbXBvcnRhY2FvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhckltcG9ydGFjYW87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ1NMTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Dc2xsUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVJSRjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUGF0cm9uYWw7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNDb2JyYWRvQW50ZXJpb3JtZW50ZTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGU7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUZjcDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc0RpZmVyaWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmlucztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zVWZEZXN0aW5vO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc0Z1dHVybztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEljbXNTaW1wbGVzO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRPX1BSRVNVTUlETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEljbXNDcmVkaXRvUHJlc3VtaWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUxfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkRGlmYWxEZXZvbHZpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSUNNU19VRl9EZXN0aW5vX0Rldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEZDUF9VRl9EZXN0aW5vX0Rldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19GQVRVUkFNRU5UTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNGYXR1cmFtZW50bztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fTkFPX1JFQ1VQRVJBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJbXBvc3RvTmFvUmVjdXBlcmFkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkJBU0VfQ0FMQ1VMT19DUkVESVRPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkYmFzZUNhbGN1bG9DcmVkaXRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUEVSQ0VOVFVBTF9SRURVQ0FPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkUGVyY2VudHVhbFJlZHVjYW87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEljbXNTdFNvbGlkYXJpbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEljbXNTdFJldGlkb0FudDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkRmNwU3RSZWRpdG9BbnQ7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRSZXF1aXJlZCh0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8sIHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHN3aXRjaCAodHJpYnV0bykge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1DaWRlVGVjbm9sb2dpYSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUjoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFyID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNEZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVI6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhciA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zRGV2b2x2aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUEk6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpQ3JlZGl0YWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlEZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaU91dHJhc0Rlc3Blc2FzID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlQcmVzdW1pZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTUzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXNzID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3NSZXRpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW1wb3N0b0ltcG9ydGFjYW8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFySW1wb3J0YWNhbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXJJbXBvcnRhY2FvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZXRpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ1NMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ3NsbFJldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVJSRjoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXJyZlJldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TUzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW5zc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW5zc1BhdHJvbmFsID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zU3QgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwU3QgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zQ29icmFkb0FudGVyaW9ybWVudGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcENvYnJhZG9BbnRlcmlvcm1lbnRlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0VmZXRpdmFtZW50ZUNyZWRpdGFkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3AgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNEaWZlcmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRGVzb25lcmFkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbURpZmVyZW5jaWFsQWxpY290YSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNGYXR1cmVtZW50byA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5POiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BVZkRlc3Rpbm8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc1VmRGVzdGlubyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRTaXR1YWNhb1RyaWJ1dGFyaWEgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNGdXR1cm8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zU2ltcGxlcyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1N0U29saWRhcmlvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1N0UmV0aWRvQW50ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRGY3BTdFJlZGl0b0FudCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUxfREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZERpZmFsRGV2b2x2aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZElDTVNfVUZfRGVzdGlub19EZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRGQ1BfVUZfRGVzdGlub19EZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19GQVRVUkFNRU5UTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzRmF0dXJhbWVudG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbXBvc3RvQ2FsY3VsYWRvKGltcG9zdG86IEVudW1UaXBvVHJpYnV0byk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRElGQUwgJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLklDTVNfU1QgJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QgJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE8gJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8gJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1QgJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkZDUF9DT0JSQURPX0FOVEVSSU9STUVOVEVfU1QgJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkTWVzc2FnZUVycm9yQmFzZURpZmVyZW50ZShcbiAgICAgICAgaW1wb3N0b3M6IHN0cmluZ1tdLFxuICAgICAgICBncnVwbzogYW55LFxuICAgICAgICBzdW1tYXJ5TWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBkZXRhaWxNZXNzYWdlOiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgY29uc3QgaW1wb3N0b0ZpbHRyYWRvID0gaW1wb3N0b3MuZmlsdGVyKFxuICAgICAgICAgICAgKGltcG9zdG8pID0+XG4gICAgICAgICAgICAgICAgIVtcbiAgICAgICAgICAgICAgICAgICAgJ0NCU19ESUZFUklETycsXG4gICAgICAgICAgICAgICAgICAgICdJQlNfRVNUQURVQUxfRElGRVJJRE8nLFxuICAgICAgICAgICAgICAgICAgICAnSUJTX01VTklDSVBBTF9ESUZFUklETydcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGltcG9zdG8pXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IGNvbnRyb2xlSW1wb3N0byA9IHRoaXMuY2FsY3VsYXJJbXBvc3Rvc1RvdGFsKFxuICAgICAgICAgICAgaW1wb3N0b0ZpbHRyYWRvLFxuICAgICAgICAgICAgZ3J1cG9cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoY29udHJvbGVJbXBvc3RvLmJhc2VEaWZlcmVudGUpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ3dhcm4nLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoc3VtbWFyeU1lc3NhZ2UpLFxuICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChkZXRhaWxNZXNzYWdlKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udHJvbGVJbXBvc3RvO1xuICAgIH1cblxuICAgIC8vIE7Do28gdXRpbGl6YXIgZXN0ZSBtw6l0b2RvIHBhcmEgY8OhbGN1bG9zIGRlIGltcG9zdG9zIGRhIFJlZm9ybWEgVHJpYnV0w6FyaWEuXG4gICAgcHJpdmF0ZSBjYWxjdWxhclZhbG9yKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0byk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5ncnVwb3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLm1hcCgoZ3J1cG8pID0+IHtcbiAgICAgICAgICAgICAgICBncnVwby5pdGVtXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0OiBJdGVtKSA9PiBpdC5uYW1lID09IHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGl0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGFzVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGl0LmZvcm1Hcm91cC52YWx1ZSkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC5mb3JtR3JvdXAudmFsdWVbaXRlbV0gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1ZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzVmFsdWUgJiYgdGhpcy5pbXBvc3RvQ2FsY3VsYWRvKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYmFzZUNhbGN1bG8gIT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYWxpcXVvdGEgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gIT0gRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09IEVudW1UaXBvVHJpYnV0by5JQ01TICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0LmZvcm1Hcm91cC5jb250cm9sc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2l0dWFjYW9UcmlidXRhcmlhID09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zaXR1YWNhb1RyaWJ1dGFyaWEudmFsdWUgPT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYmFzZUNhbGN1bG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGlxdW90YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5hbGlxdW90YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlxdW90YSAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXhBbW91bnRDYWxjdWxhdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhbGN1bGF0ZVRheEFtb3VudCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheGFibGVCYXNlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJpZ051bWJlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIoYmFzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheFJhdGU6IG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIoYWxpcXVvdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b051bWJlcigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT0gRW51bVRpcG9UcmlidXRvLklDTVMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuc2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5jb2RTdHIgIT0gJzUxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5iYXNlQ2FsY3Vsb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsaXF1b3RhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmFsaXF1b3RhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnZhbG9yLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRheEFtb3VudENhbGN1bGF0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2FsY3VsYXRlVGF4QW1vdW50KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4YWJsZUJhc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQmlnTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihiYXNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4UmF0ZTogbmV3IEJpZ051bWJlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihhbGlxdW90YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTnVtYmVyKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1MgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmdldCgnYmFzZUNhbGN1bG8nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlID8/IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuZ2V0KCdhbGlxdW90YScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUgPz8gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKGJhc2UgKiBhbGlxdW90YSkgLyAxMDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYWxpcXVvdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGEgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXhBbW91bnRDYWxjdWxhdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhbGN1bGF0ZVRheEFtb3VudCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheGFibGVCYXNlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJpZ051bWJlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIoYmFzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheFJhdGU6IG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIoYWxpcXVvdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b051bWJlcigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnZhbG9yLnJlc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTnVsbE9yVW5kZWZpbmVkKGJhc2UpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc051bGxPclVuZGVmaW5lZChhbGlxdW90YSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc051bGxPclVuZGVmaW5lZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvZGlnb1RyaWJ1dGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuY29kaWdvVHJpYnV0YWNhby5yZXNldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1MgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9SQVQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbXBvc3RvcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRlVOUlVSQUxfSU5TUycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZVTlJVUkFMX1JBVCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZVTlJVUkFMX1NFTkFSJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udHJvbGVGdW5ydXJhbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRNZXNzYWdlRXJyb3JCYXNlRGlmZXJlbnRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvc3RvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVycm9yX2Jhc2VfZnVucnVyYWxfZGlmZXJlbnRlX3N1bW1hcnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lcnJvcl9iYXNlX2Z1bnJ1cmFsX2RpZmVyZW50ZV9kZXRhaWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZnVucnVyYWxUb3RhbCA9IGdydXBvLml0ZW0uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5uYW1lID09PSAnRlVOUlVSQUxfVE9UQUwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5ydXJhbFRvdGFsLmZvcm1Hcm91cC5zZXRWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VDYWxjdWxvOiBjb250cm9sZUZ1bnJ1cmFsLmJhc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbG9yOiBjb250cm9sZUZ1bnJ1cmFsLnZhbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvc3RvTWFudWFsOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9dOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhckltcG9zdG9zVG90YWwoaW1wb3N0b3M6IGFueSwgZ3J1cG8pIHtcbiAgICAgICAgbGV0IHZhbG9yZXMgPSB7XG4gICAgICAgICAgICBiYXNlOiAwLFxuICAgICAgICAgICAgdmFsb3I6IDAsXG4gICAgICAgICAgICBiYXNlRGlmZXJlbnRlOiBmYWxzZVxuICAgICAgICB9O1xuXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBpbXBvc3Rvcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGltcG9zdG8gPSBncnVwby5pdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gaW1wb3N0b3NbaW5kZXhdXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGltcG9zdG8/LmZvcm1Hcm91cC52YWx1ZS5iYXNlQ2FsY3VsbykpIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yZXMuYmFzZSA+IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgdmFsb3Jlcy5iYXNlICE9IGltcG9zdG8uZm9ybUdyb3VwLnZhbHVlLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbG9yZXMuYmFzZURpZmVyZW50ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFsb3Jlcy5iYXNlID1cbiAgICAgICAgICAgICAgICAgICAgaW1wb3N0by5mb3JtR3JvdXAudmFsdWUuYmFzZUNhbGN1bG8gPiB2YWxvcmVzLmJhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaW1wb3N0by5mb3JtR3JvdXAudmFsdWUuYmFzZUNhbGN1bG9cbiAgICAgICAgICAgICAgICAgICAgICAgIDogdmFsb3Jlcy5iYXNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGltcG9zdG8/LmZvcm1Hcm91cC52YWx1ZS52YWxvcikpIHtcbiAgICAgICAgICAgICAgICB2YWxvcmVzLnZhbG9yID0gdGhpcy50YXhSb3VuZGluZ1NlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLmhhbGZVcChcbiAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcih2YWxvcmVzLnZhbG9yKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyKGltcG9zdG8uZm9ybUdyb3VwLnZhbHVlLnZhbG9yKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAudG9OdW1iZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWxvcmVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDYW1wb3MoY2FtcG9zOiBDYW1wb1RyaWJ1dG9bXSwgdHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIGNvbnN0IHJldG9ybm86IGFueSA9IHt9O1xuICAgICAgICBjb25zdCBmb3JtRmllbGQ6IEZvcm1GaWVsZFtdID0gW107XG4gICAgICAgIGxldCBmb3JtR3JvdXA6IGFueSA9IHt9O1xuXG4gICAgICAgIGNhbXBvcy5tYXAoKGl0KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3Vsbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBiYXNlQ2FsY3VsbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBpdC5kaXNhYmxlZCA/PyBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0Jhc2VDYWxjdWxvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdiYXNlQ2FsY3VsbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYmFzZV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGFyVmFsb3IodHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0byk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0ZpZWxkUmVxdWlyZWQoJ2Jhc2VDYWxjdWxvJywgdHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBpdC5kaXNhYmxlZCA/PyBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5Ljk5OTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdBbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxpcXVvdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0TGFiZWxBbGlxdW90YSh0cmlidXRvKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGFyVmFsb3IodHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0byk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0ZpZWxkUmVxdWlyZWQoJ2FsaXF1b3RhJywgdHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uUGVyaW9kb0FwdXJhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIFtFbnVtQ2FtcG9UcmlidXRvLlBlcmlvZG9BcHVyYWNhb106IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmlvZG9BcHVyYWNhbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19wZXJpb2RvX2FwdXJhY2FvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXc6ICdtb250aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbzogJ2JvZHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJMb2NhbGVPcHRpb25zOiBuZXcgQ2FsZW5kYXJMb2NhbGVPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmxvY2FsZVNlcnZpY2UuZ2V0TG9jYWxlT3B0aW9ucygpLmNhbGVuZGFyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ6ICdtbS95eSdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRmllbGRSZXF1aXJlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5QZXJpb2RvQXB1cmFjYW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWxcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICByZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdSZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZWR1Y2FvX2FsaXF1b3RhX2dvdmVybmFtZW50YWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHJlZHVjYW9BbGlxdW90YTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUmVkdWNhb0FsaXF1b3RhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWR1Y2FvQWxpcXVvdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlZHVjYW9fYWxpcXVvdGFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhRWZldGl2YTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBpdC5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdBbGlxdW90YUVmZXRpdmEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2FsaXF1b3RhRWZldGl2YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfZWZldGl2YV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGFJbnRlcm5hOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OS45OTk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQWxpcXVvdGFJbnRlcm5hJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YUludGVybmEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2ludGVybmFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYURlc3Rpbm8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGFJbnRlcm5hRGVzdGlubzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTkuOTk5OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0FsaXF1b3RhSW50ZXJuYURlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2FsaXF1b3RhSW50ZXJuYURlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2ludGVybmFfZGVzdGlub19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3I6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaXQuZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNGaWVsZFJlcXVpcmVkKCd2YWxvcicsIHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0bykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvckJydXRvSW1wb3N0bzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBpdC5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9yQnJ1dG9JbXBvc3RvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvckJydXRvSW1wb3N0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3JfYnJ1dG9faW1wb3N0b19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvcklzZW50YXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9ySXNlbnRhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3JJc2VudGFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9pc2VudGFzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yT3V0cmFzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvck91dHJhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3JPdXRyYXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX291dHJhc19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgc2l0dWFjYW9UcmlidXRhcmlhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBsZXQgc2VhcmNoR3JpZEZpZWxkcyE6IEZvcm1GaWVsZFtdO1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnQ29udHJvbGxlcnNoaXAgT3V0Z29pbmcgSW52b2ljZSdcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoR3JpZEZpZWxkcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29kU3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZXNTdHInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5TdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3RpcEltcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9pbXBfcGlzX2NvZmlucydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcEltcENzdC5QSVNfQ09GSU5TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX2ltcF9pcGknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBJbXBDc3QuSVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX2ltcF9pY21zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwSW1wQ3N0LklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfaW1wX2lzcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcEltcENzdC5JU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3RpcE9wZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9vcGVfdl9zYWlkYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcE9wZS5WU0FJREFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfb3BlX3ZfZW50cmFkYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcE9wZS5WRU5UUkFEQVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9vcGVfdl9hbWJvcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcE9wZS5WQU1CT1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdEZpbHRlciA9IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdleGNsdWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydmYWxzZSddXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGlwSW1wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbbWFwRW51bVRpcG9UcmlidXRvVG9FbnVtVGlwSW1wQ3N0KHRyaWJ1dG8pXVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3RpcE9wZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gW0VudW1UaXBPcGUuVkFNQk9TLCBFbnVtVGlwT3BlLlZTQUlEQV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbRW51bVRpcE9wZS5WQU1CT1MsIEVudW1UaXBPcGUuVkVOVFJBREFdXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2l0dWFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnVkFUSVZPJ11cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5DQlMgfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTCB8fFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTCB8fFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUTyB8fFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVE9STk9fQ1JFRElUTyB8fFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0FKVVNURSB8fFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0FKVVNURVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlciA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmRlZmF1bHRGaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYS5pbmRHRXN0b3Jub0NyZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE8gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRW51bUxvZ2ljYWxPcGVyYXRvci5FcVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBFbnVtTG9naWNhbE9wZXJhdG9yLk5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW0VudW1JbmRpY2F0aXZvUGFkcmFvLkVYSUdFXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTIHx8XG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUwgfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUwgfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19BSlVTVEUgfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19BSlVTVEVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXIgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kZWZhdWx0RmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnaW5kR0FqdXN0ZUNvbXBldCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfQUpVU1RFXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRW51bUxvZ2ljYWxPcGVyYXRvci5OZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtFbnVtSW5kaWNhdGl2b1BhZHJhby5FWElHRV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE8gfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXIgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kZWZhdWx0RmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnaW5kR1RyYW5zZkNyZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW0VudW1JbmRpY2F0aXZvUGFkcmFvLkVYSUdFXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3U3RyTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hHcmlkRmllbGRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdTaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfc2l0dWFjYW9fdHJpYnV0YXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdEZpbHRlciA9IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydBVElWTyddXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnICYmXG4gICAgICAgICAgICAgICAgICAgICh0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUTyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE8pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdpbmRHRXN0b3Jub0NyZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtFbnVtSW5kaWNhdGl2b1BhZHJhby5FWElHRV1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNsYXNzaWZpY2FjYW9UcmlidXRhcmlhTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogJ2VycHhfY3BsX2ltcC5pbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluOiB0aGlzLmRvbWluaW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeUZpZWxkczogWydlMDI3c3RyLmlkJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5RGVwZW5kZW5jeTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZTAyN3N0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldG9ybm8uZm9ybUdyb3VwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdHVhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19jbGFzc2lmaWNhY2FvX3RyaWJ1dGFyaWFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0byk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0ZpZWxkUmVxdWlyZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uRW5xdWFkcmFtZW50b0lwaSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBlbnF1YWRyYW1lbnRvSXBpOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZTAyN2VxaUxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IHRoaXMuZG9taW5pbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY28sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnZTAyN2VxaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnZW5xdWFkcmFtZW50b0lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3NpdHVhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ1ZBVElWTyddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZXhjbHVpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnZmFsc2UnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdFbnF1YWRyYW1lbnRvSXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19lbnF1YWRyYW1lbnRvX2lwaV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDYsIGxnOiA2LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudHVhbFJlZHVjYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbFJlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3BlcmNlbnR1YWxSZWR1Y2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19wZXJjZW50dWFsX3JlZHVjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkb1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1BlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3BlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfbXZhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IDEwMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXMpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgZGVzb25lcmFjYW9JY21zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ01vdGl2b0Rlc29uZXJhY2FvSWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGVzb25lcmFjYW9JY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19kZXNvbmVyYWNhb19pY21zX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8xJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl80J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfNidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl83J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WN1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfOSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8xMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjEwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMTEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYxMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzEyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMTJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8xNidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjE2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfOTAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY5MFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfZGVzb25lcmFjYW9faWNtc19wbGFjZWhvbGRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdlbTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdPcmlnZW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ29yaWdlbScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl8xJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlYyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfMydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl80J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlY1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfNidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl83J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WN1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlY4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19vcmlnZW1faWNtc19wbGFjZWhvbGRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfb3JpZ2VtX2ljbXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA2LCBsZzogNiwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1BlcmNlbnR1YWxEaWZlcmltZW50bycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxpcXVvdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfZGlmZXJpbWVudG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXJWYWxvcih0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IDEwMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWxcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBwZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1BlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3BlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfc3Vwb3J0YWRvX2NvbnN1bWlkb3JfZmluYWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JSZWNvbGhpZG9QZWxvU3Vic3RpdHV0b1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yUmVjb2xoaWRvSWNtc1N0OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvclJlY29saGlkb0ljbXNTdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3JfcmVjb2xoaWRvX3BlbG9fc3Vic3RpdHV0b19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvckljbXNTdFJldGlkbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvckljbXNTdFJldGlkbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9ySWNtc1N0UmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvckljbXNTdFJldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3JfaWNtc19zdF9yZXRpZG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uTW9kYWxpZGFkZUJDKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIG1vZGFsaWRhZGVCQzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdNb2RhbGlkYWRlQmMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ21vZGFsaWRhZGVCQycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb2RhbGlkYWRlX2JjX3ZfMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb2RCYy5WMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW9kYWxpZGFkZV9iY192XzEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW9kQmMuVjFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vZGFsaWRhZGVfYmNfdl8yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vZEJjLlYyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb2RhbGlkYWRlX2JjX3ZfMydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb2RCYy5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbW9kYWxpZGFkZV9iY19wbGFjZWhvbGRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbW9kYWxpZGFkZV9iY19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5OYXR1cmV6YVJlY2VpdGEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgbmF0dXJlemFSZWNlaXRhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubmF0dXJlemFSZWNlaXRhTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICduYXR1cmV6YVJlY2VpdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cFNvcnQ6IFt7IGZpZWxkOiAnY29kaWdvJywgb3JkZXI6IDEgfV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU29ydDogW3sgZmllbGQ6ICdjb2RpZ28nLCBvcmRlcjogMSB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ05hdHVyZXphUmVjZWl0YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbmF0dXJlemFfcmVjZWl0YV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZhY2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heExlbmd0aCgxMjApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdPYnNlcnZhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdvYnNlcnZhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19vYnNlcnZhY2FvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5TdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF9sZW5ndGhfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JEZWR1Y2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yRGVkdWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ3ZhbG9yRGVkdWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3JEZWR1Y2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9kZWR1Y2FvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uSW5kaWNhdGl2b0FxdWlzaWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBpbmRpY2F0aXZvQXF1aXNpY2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdJbmRpY2F0aXZvQXF1aXNpY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdpbmRpY2F0aXZvQXF1aXNpY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19pbmRpY2F0aXZvX2FxdWlzaWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlYxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192MidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3YzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlY0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192NSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WNixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3Y2J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlY3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBjb2RpZ29BcnJlY2FkYWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heExlbmd0aCg2KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ29kaWdvQXJyZWNhZGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvZGlnb0FycmVjYWRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19jb2RpZ29fYXJyZWNhZGFjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X2xlbmd0aF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGNvZGlnb1RyaWJ1dGFjYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0NvZGlnb1RyaWJ1dGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvZGlnb1RyaWJ1dGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NvZGlnb190cmlidXRhY2FvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5TdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF9sZW5ndGhfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5JbXBvc3RvTmFvUmVjdXBlcmFkbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBJbXBvc3RvTmFvUmVjdXBlcmFkbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnSW1wb3N0b05hb1JlY3VwZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0ltcG9zdG9OYW9SZWN1cGVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19pbXBvc3RvX25hb19yZWN1cGVyYWRvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5iYXNlQ2FsY3Vsb0NyZWRpdG8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgYmFzZUNhbGN1bG9DcmVkaXRvOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfV1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ2Jhc2VDYWxjdWxvQ3JlZGl0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYmFzZUNhbGN1bG9DcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfNCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfNSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfNidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfNydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfOCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfOSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjExXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzEyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xNCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjE0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzE1J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTYnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xNydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjE3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzE4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMThcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2Jhc2VfY2FsY3Vsb19jcmVkaXRvX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19iYXNlX2NhbGN1bG9fY3JlZGl0b19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDYsIGxnOiA2LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAncmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9yZWdfdHJpYnV0X3Bpc19jb2ZpbnNfY3VtdWxhdGl2bydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zLkNVTVVMQVRJVk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3JlZ190cmlidXRfcGlzX2NvZmluc19uYW9fY3VtdWxhdGl2bydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zLk5BT19DVU1VTEFUSVZPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZWdpbWVfdHJpYnV0YXJpb19waXNfY29maW5zX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZWdpbWVfdHJpYnV0YXJpb19waXNfY29maW5zX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWw6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdwZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfc3VzcGVuc2FvX3BhcmNpYWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5CZW5lZmljaW9GaXNjYWwpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgYmVuZWZpY2lvRmlzY2FsOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5iZW5lZmljaW9GaXNjYWxMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluOiB0aGlzLmRvbWluaW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ2JlbmVmaWNpb0Zpc2NhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2V4Y2x1aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ2ZhbHNlJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19iZW5lZmljaW9fZmlzY2FsX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5Dc3REZXNvbmVyYWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBzaXR1YWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZTAyN1N0ckxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogJ2VycHhfY3BsX2ltcC5pbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3RpcE9wZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBPcGUuVkVOVFJBREEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcE9wZS5WU0FJREEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcE9wZS5WQU1CT1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW0VudW1TaXR1YWNhby5WQVRJVk9dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZXhjbHVpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnZmFsc2UnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3RpcEltcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW0VudW1UaXBJbXBDc3QuQ0JTX0lCU11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdTaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnc2l0dWFjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdzaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpZ246IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHhfY3BsX2ltcC5pbXBvc3Rvcy5jc3RfZGVzb25lcmFjYW9faW5mb19zaWduJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4X2NwbF9pbXAuaW1wb3N0b3Muc2l0dWFjYW9fdHJpYnV0YXJpYV9kZXNvbmVyYWNhbydcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFEZXNvbmVyYWNhb1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzaWZpY2FjYW9UcmlidXRhcmlhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNsYXNzaWZpY2FjYW9UcmlidXRhcmlhTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiAnZXJweF9jcGxfaW1wLmltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2l0dWFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtU2l0dWFjYW9DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYS5BVElWT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29rdXBTb3J0OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnY29kaWdvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFNvcnQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjb2RpZ28nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5RGVwZW5kZW5jeTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZTAyN3N0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldG9ybm8uZm9ybUdyb3VwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdHVhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2lnbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweF9jcGxfaW1wLmltcG9zdG9zLmNsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9kZXNvbmVyYWNhb19pbmZvX3NpZ24nXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHhfY3BsX2ltcC5pbXBvc3Rvcy5jbGFzc2lmaWNhY2FvX3RyaWJ1dGFyaWFfZGVzb25lcmFjYW8nXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBbRW51bUNhbXBvVHJpYnV0by5BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvXTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50by5ORU5IVU0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bUNhbXBvVHJpYnV0by5BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYXBsaWNhcl92YWxvcl9saXF1aWRvX2RvY3VtZW50bydcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNGaWVsZFJlcXVpcmVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5DQlNfQ1JFRElUT19QUkVTVU1JRE8gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fYXBsaWNhcl92YWxvcl9saXF1aWRvX2RvY3VtZW50b19zdWJ0cmFpcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLlNVQlRSQUlSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2FwbGljYXJfdmFsb3JfbGlxdWlkb19kb2N1bWVudG9fc29tYXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50by5TT01BUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fYXBsaWNhcl92YWxvcl9saXF1aWRvX2RvY3VtZW50b19uZW5odW0nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50by5ORU5IVU1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkVzY3JpdHVyYXJBbGlxdW90YUlTUykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBbRW51bUNhbXBvVHJpYnV0by5Fc2NyaXR1cmFyQWxpcXVvdGFJU1NdOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Fc2NyaXR1cmFyQWxpcXVvdGFJU1MuU0lNLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtQ2FtcG9UcmlidXRvLkVzY3JpdHVyYXJBbGlxdW90YUlTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVzY3JpdHVyYXJfYWxpcXVvdGFfaXNzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2VzY3JpdHVyYXJfYWxpcXVvdGFfaXNzX3NpbSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Fc2NyaXR1cmFyQWxpcXVvdGFJU1MuU0lNXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9lc2NyaXR1cmFyX2FsaXF1b3RhX2lzc19uYW8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRXNjcml0dXJhckFsaXF1b3RhSVNTLk5BT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PVxuICAgICAgICAgICAgICAgIEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFDcmVkaXRvUHJlc3VtaWRvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6ICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlGaWVsZHM6IFsnY3JlZFByZXNJbmREZWR1ekNyZWRQcmVzJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3NpdHVhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ0FUSVZPJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjcmVkaXRvUHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ3RydWUnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2UwMjdzdHInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuSXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtudWxsXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19jbGFzc2lmaWNhY2FvX3RyaWJ1dGFyaWFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNGaWVsZFJlcXVpcmVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLnN1Z2VzdG9lcykge1xuICAgICAgICAgICAgdGhpcy5zdWdlc3RvZXNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChzdWdlc3RhbykgPT4gc3VnZXN0YW8udGlwb1RyaWJ1dG8gPT09IHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKHN1Z2VzdGFvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHN1Z2VzdGFvKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoYXRyaWJ1dG9zKSA9PiBhdHJpYnV0b3NbMF0gIT09ICd0aXBvVHJpYnV0bycpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoYXRyaWJ1dG9zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwW2F0cmlidXRvc1swXV1bMF0udmFsdWUgPSBhdHJpYnV0b3NbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldG9ybm8uZm9ybUZpZWxkID0gZm9ybUZpZWxkO1xuICAgICAgICByZXRvcm5vLmZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgaW1wb3N0b01hbnVhbDogW1xuICAgICAgICAgICAgICAgIHsgdmFsdWU6IGZhbHNlLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW0VudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXTogW1xuICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgXVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmV0b3JubztcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVWYWx1ZUNoYW5nZXMoe1xuICAgICAgICBpdGVtLFxuICAgICAgICBncm91cFxuICAgIH06IHtcbiAgICAgICAgaXRlbTogSXRlbTtcbiAgICAgICAgZ3JvdXA6IEdyb3VwO1xuICAgIH0pIHtcbiAgICAgICAgaXRlbS5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgoaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSksXG4gICAgICAgICAgICAgICAgLy8gV2UgYXJlIHVzaW5nIGRlYm91bmNlVGltZSBoZXJlIGJlY2F1c2Ugb3VyIExvb2t1cCBDb21wb25lbnQgaXMgZW1pdHRpbmcgdHdvIGV2ZW50cyB1bmZvcnR1bmF0ZWx5LlxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICAgICAgICAgICAgc2NhbihcbiAgICAgICAgICAgICAgICAgICAgKGFjYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU6IGFjYy5zdGFydGluZ1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlOiBpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlOiBpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlOiBpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh7IHN0YXJ0aW5nVmFsdWUsIGN1cnJlbnRWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFzdGFydGluZ1ZhbHVlLmltcG9zdG9NYW51YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RhcnRpbmdWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSAhPT0gRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmV2ZXJ5KChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gRmllbGRUeXBlLkxvb2t1cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU/LltrZXldPy5bZGF0YUtleV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlPy5ba2V5XT8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0aW5nVmFsdWVba2V5XSA9PT0gY3VycmVudFZhbHVlW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2ltcG9zdG9NYW51YWwnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShmYWxzZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdpbXBvc3RvTWFudWFsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodHJ1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtJQ01TU2ltcGxlc0FzTWFudWFsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubmFtZSBhcyBFbnVtVGlwb1RyaWJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5JbXBvc3RvTWFudWFsXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlW0VudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXSAhPT1cbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUxcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RhcnRpbmdWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSAhPT0gRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmV2ZXJ5KChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gRmllbGRUeXBlLkxvb2t1cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBpdGVtLmZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU/LltrZXldPy5bZGF0YUtleV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlPy5ba2V5XT8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0aW5nVmFsdWVba2V5XSA9PT0gY3VycmVudFZhbHVlW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFya0lDTVNTaW1wbGVzQXNNYW51YWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5uYW1lIGFzIEVudW1UaXBvVHJpYnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0b1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TGFiZWxBbGlxdW90YSh0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PIHx8XG4gICAgICAgICAgICB0cmlidXRvID09IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPXG4gICAgICAgIClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9pbnRlcmVzdGFkdWFsX2xhYmVsJ1xuICAgICAgICAgICAgKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0cmlidXRvLnRvU3RyaW5nKCkuZW5kc1dpdGgoJ19ESUZFUklETycpICYmXG4gICAgICAgICAgICB0cmlidXRvICE9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklET1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9kaWZlcmlkb19sYWJlbCdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfbGFiZWwnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VHJhbnNsYXRlQnV0dG9uKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgbGV0IHRyYW5zbGF0ZSA9ICcuYnV0dG9uX21lbW9yaWFfY2FsY3Vsb19lbXB0eV9sYWJlbCc7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaWRzVGF4ZXNNZW1vcmlhQ2FsY3Vsby5maW5kKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnRpcG9UcmlidXRvID09IHZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuaWRQYXJhbWV0cm8gIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkge1xuICAgICAgICAgICAgdHJhbnNsYXRlID0gJy5idXR0b25fbWVtb3JpYV9jYWxjdWxvX2xhYmVsJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnByZWZpeExhYmVsICsgdHJhbnNsYXRlO1xuICAgIH1cblxuICAgIGlzR3JvdXBJbnZhbGlkKGdyb3VwOiB7XG4gICAgICAgIGdydXBvOiBzdHJpbmc7XG4gICAgICAgIGl0ZW06IHtcbiAgICAgICAgICAgIGZvcm1GaWVsZDogRm9ybUZpZWxkW107XG4gICAgICAgICAgICBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgICAgICAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIH1bXTtcbiAgICB9KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBncm91cD8uaXRlbT8uc29tZSgoaXRlbSkgPT4gaXRlbT8uZm9ybUdyb3VwPy5pbnZhbGlkKTtcbiAgICB9XG5cbiAgICBpc0JhZGdlVmlzaWJsZShpdGVtOiBJdGVtKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpc1RheEZyb21UYXhSZWZvcm0oaXRlbS5uYW1lIGFzIEVudW1UaXBvVHJpYnV0bykgJiZcbiAgICAgICAgICAgICEhaXRlbS5mb3JtR3JvdXAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKS52YWx1ZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldEJhZGdlQ29sb3IoaXRlbTogSXRlbSk6IEJhZGdlQ29sb3JzIHtcbiAgICAgICAgc3dpdGNoIChpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uQ0FMQ1VMQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiBCYWRnZUNvbG9ycy5HcmVlbjtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5IRVJEQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiBCYWRnZUNvbG9ycy5CbHVlO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gQmFkZ2VDb2xvcnMuWWVsbG93O1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gQmFkZ2VDb2xvcnMuWWVsbG93O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0QmFkZ2VUZXh0KGl0ZW06IEl0ZW0pOiBzdHJpbmcge1xuICAgICAgICBzd2l0Y2ggKGl0ZW0uZm9ybUdyb3VwLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5DQUxDVUxBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2NhbGN1bG9fYXV0b21hdGljbydcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLkhFUkRBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2NhbGN1bG9fZ2VyYWRvX3ZpYV9wcm9jZXNzbydcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9fY2FsY3Vsb19tYW51YWwnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2NhbGN1bG9fbWFudWFsJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldEJhZGdlSW5mb1NpZ24oaXRlbTogSXRlbSk6IHsgdGV4dDogc3RyaW5nIH0ge1xuICAgICAgICBpZiAoaXRlbS5mb3JtR3JvdXAuZ2V0KCdpbXBvc3RvTWFudWFsJykudmFsdWUpXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X21hbnVhbCdcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgIHN3aXRjaCAoaXRlbS5mb3JtR3JvdXAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKS52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLkNBTENVTEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9faW5mb19zaWduX3RleHRfY2FsY3VsYWRvJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5IRVJEQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19pbmZvX3NpZ25fdGV4dF9oZXJkYWRvJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X21hbnVhbCdcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9faW5mb19zaWduX3RleHRfbWFudWFsJ1xuICAgICAgICAgICAgKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNJbnZvaWNlRG9jdW1lbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJyB8fFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQWNjcnVhbFRheERvY3VtZW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZScgfHxcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaWVsZFJlcXVpcmVkKGZpZWxkOiBzdHJpbmcsIHRheFR5cGU6IEVudW1UaXBvVHJpYnV0byk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5ncnVwb3NcbiAgICAgICAgICAgIC5maW5kKChncm91cCkgPT4gZ3JvdXAuaXRlbS5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IHRheFR5cGUpKVxuICAgICAgICAgICAgLml0ZW0uZmluZCgoaXRlbSkgPT4gaXRlbS5uYW1lID09PSB0YXhUeXBlKTtcblxuICAgICAgICByZXR1cm4gaXRlbS5mb3JtR3JvdXAuZ2V0KGZpZWxkKS52YWxpZGF0b3I/Lih7fSBhcyBBYnN0cmFjdENvbnRyb2wpXG4gICAgICAgICAgICA/LnJlcXVpcmVkO1xuICAgIH1cblxuICAgIC8vIFdvcmstYXJvdW5kIHByYSByZXNvbHZlciBhICNFUlBQRVEtMjA1OTUuXG4gICAgLy8gTm8gZnV0dXJvIG1vdmVyIHBhcmEgbyBNYW51YWxUYXhDYWxjdWxhdGlvblJ1bGUgZSBUYXhDYWxjdWxhdGlvblR5cGVDYWxjdWxhdGlvblJ1bGVcbiAgICAvLyBxdWFuZG8gb3MgaW1wb3N0b3MgbGVnYWRvcyBmb3JlbSBtaWdyYWRvcyBwYXJhIG8gbm92byBwYWRyw6NvLlxuICAgIHByaXZhdGUgbWFya0lDTVNTaW1wbGVzQXNNYW51YWwoXG4gICAgICAgIHRheDogRW51bVRpcG9UcmlidXRvLFxuICAgICAgICBncm91cDogR3JvdXAsXG4gICAgICAgIGZpZWxkOiBFbnVtQ2FtcG9UcmlidXRvXG4gICAgKSB7XG4gICAgICAgIGlmICh0YXggIT09IEVudW1UaXBvVHJpYnV0by5JQ01TKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgSUNNU19TSU1QTEVTX0lURU0gPSBncm91cC5pdGVtLmZpbmQoXG4gICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFJQ01TX1NJTVBMRVNfSVRFTSkgcmV0dXJuO1xuXG4gICAgICAgIGlmIChmaWVsZCA9PT0gRW51bUNhbXBvVHJpYnV0by5JbXBvc3RvTWFudWFsKSB7XG4gICAgICAgICAgICBJQ01TX1NJTVBMRVNfSVRFTS5mb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAuZ2V0KCdpbXBvc3RvTWFudWFsJylcbiAgICAgICAgICAgICAgICAuc2V0VmFsdWUodHJ1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkID09PSBFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykge1xuICAgICAgICAgICAgSUNNU19TSU1QTEVTX0lURU0uZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgLmdldChmaWVsZClcbiAgICAgICAgICAgICAgICAuc2V0VmFsdWUoRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QXJyZWRvbmRhbWVudG9BYm50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRpbmdDb250ZXh0LnB1c2goKTtcblxuICAgICAgICB0aGlzLmZlYXR1cmVUb2dnbGVTZXJ2aWNlXG4gICAgICAgICAgICAuaXNFbmFibGVkKHtcbiAgICAgICAgICAgICAgICBkb21haW46ICdlcnB4X2NwbF9pbXAnLFxuICAgICAgICAgICAgICAgIHNlcnZpY2U6ICdjYWxjdWxvX2ltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnYXJyZWRvbmRhbWVudG9BYm50J1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5sb2FkaW5nQ29udGV4dC5wb3AoKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IChhcnJlZG9uZGFtZW50b0FibnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXhTdG9yZS5zZXRBcnJlZG9uZGFtZW50b0FibnQoYXJyZWRvbmRhbWVudG9BYm50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=