@tricoteuses/assemblee 0.25.2 → 0.26.1

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 (79) hide show
  1. package/README.md +5 -0
  2. package/lib/bugs/acteur-00010.js +5 -5
  3. package/lib/bugs/agenda-00002.js +4 -4
  4. package/lib/bugs/agenda-00002.mjs +1 -1
  5. package/lib/bugs/agenda-00008.js +5 -5
  6. package/lib/bugs/agenda-00011.js +3 -3
  7. package/lib/bugs.js +2 -2
  8. package/lib/cleaners/acteurs.js +39 -2
  9. package/lib/cleaners/acteurs.mjs +25 -1
  10. package/lib/cleaners/amendements.mjs +3 -7
  11. package/lib/cleaners/documents.js +3 -1
  12. package/lib/cleaners/documents.mjs +3 -1
  13. package/lib/cleaners/organes.js +19 -2
  14. package/lib/cleaners/organes.mjs +18 -1
  15. package/lib/cleaners/reunions.js +1 -1
  16. package/lib/datasets.js +1 -1
  17. package/lib/datasets.mjs +1 -1
  18. package/lib/dates.js +1 -1
  19. package/lib/dates.mjs +1 -1
  20. package/lib/file_systems.js +7 -3
  21. package/lib/index.d.ts +2 -1
  22. package/lib/index.js +4 -2
  23. package/lib/index.mjs +3 -2
  24. package/lib/inserters.js +1 -1
  25. package/lib/inserters.mjs +1 -1
  26. package/lib/loaders.js +1 -1
  27. package/lib/loaders.mjs +1 -1
  28. package/lib/parsers/documents.js +2 -2
  29. package/lib/parsers/documents.mjs +2 -2
  30. package/lib/parsers/recherche_amendements.js +2 -2
  31. package/lib/raw_types/acteurs_et_organes.d.ts +181 -13
  32. package/lib/raw_types/acteurs_et_organes.js +327 -60
  33. package/lib/raw_types/acteurs_et_organes.mjs +318 -55
  34. package/lib/raw_types/agendas.d.ts +2 -1
  35. package/lib/raw_types/agendas.js +6 -5
  36. package/lib/raw_types/agendas.mjs +4 -3
  37. package/lib/raw_types/amendements.d.ts +2 -2
  38. package/lib/raw_types/amendements.js +5 -5
  39. package/lib/raw_types/amendements.mjs +3 -3
  40. package/lib/raw_types/dossiers_legislatifs.d.ts +80 -714
  41. package/lib/raw_types/dossiers_legislatifs.js +310 -1771
  42. package/lib/raw_types/dossiers_legislatifs.mjs +304 -1747
  43. package/lib/raw_types/scrutins.js +2 -2
  44. package/lib/scripts/bugs_helper.js +2 -2
  45. package/lib/scripts/clean_data.js +2 -2
  46. package/lib/scripts/clean_data.mjs +2 -2
  47. package/lib/scripts/clean_reorganized_data.js +2 -2
  48. package/lib/scripts/clean_reorganized_data.mjs +1 -1
  49. package/lib/scripts/document_dossiers_legislatifs.js +10 -10
  50. package/lib/scripts/document_dossiers_legislatifs.mjs +1 -1
  51. package/lib/scripts/raw_types_from_amendements.js +1 -1
  52. package/lib/scripts/raw_types_from_amendements.mjs +1 -1
  53. package/lib/scripts/reorganize_data.js +195 -136
  54. package/lib/scripts/reorganize_data.mjs +46 -2
  55. package/lib/scripts/retrieve_documents.js +2 -2
  56. package/lib/scripts/retrieve_open_data.js +2 -2
  57. package/lib/scripts/retrieve_open_data.mjs +2 -2
  58. package/lib/scripts/retrieve_pending_amendments.js +2 -2
  59. package/lib/scripts/retrieve_textes_lois.js +2 -2
  60. package/lib/scripts/test_load.js +2 -2
  61. package/lib/scripts/test_load.mjs +2 -2
  62. package/lib/scripts/test_load_big_files.js +2 -2
  63. package/lib/scripts/test_load_big_files.mjs +2 -2
  64. package/lib/scripts/validate_json.js +2 -2
  65. package/lib/shared_types/codes_actes.d.ts +413 -0
  66. package/lib/shared_types/codes_actes.js +262 -0
  67. package/lib/shared_types/codes_actes.mjs +227 -0
  68. package/lib/types/acteurs_et_organes.d.ts +48 -27
  69. package/lib/types/acteurs_et_organes.js +132 -39
  70. package/lib/types/acteurs_et_organes.mjs +128 -35
  71. package/lib/types/agendas.js +2 -2
  72. package/lib/types/amendements.js +2 -2
  73. package/lib/types/dossiers_legislatifs.d.ts +3 -413
  74. package/lib/types/dossiers_legislatifs.js +20 -262
  75. package/lib/types/dossiers_legislatifs.mjs +14 -231
  76. package/lib/types/scrutins.js +2 -2
  77. package/lib/urls.js +1 -1
  78. package/lib/urls.mjs +1 -1
  79. package/package.json +7 -7
@@ -491,4 +491,4 @@ function main(argv) {
491
491
 
492
492
 
493
493
  if (process.argv[1].endsWith("document_dossiers_legislatifs.ts")) process.exit(main(process.argv));
494
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2RvY3VtZW50X2Rvc3NpZXJzX2xlZ2lzbGF0aWZzLnRzIl0sIm5hbWVzIjpbImNvbW1hbmRMaW5lQXJncyIsImNvbW1hbmRMaW5lVXNhZ2UiLCJhc3NlcnQiLCJsb2FkIiwiZ2V0RmlsZXMiLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0T3B0aW9uIiwibXVsdGlwbGUiLCJuYW1lIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJzZWN0aW9ucyIsImhlYWRlciIsImNvbnRlbnQiLCJvcHRpb25MaXN0Iiwib3B0aW9ucyIsImNvbnNvbGUiLCJlcnJvciIsImhlbHAiLCJ1c2FnZSIsIndhcm4iLCJlcVNldCIsImFzIiwiYnMiLCJzaXplIiwiYSIsImhhcyIsIkNvZGUyUGF0dGVybiIsImNvbnN0cnVjdG9yIiwicGF0dGVybiIsImNoaWxkcmVuIiwiX3BhdHRlcm5fIiwiX21hdGNoX2NvdW50XyIsIk9iamVjdCIsImFzc2lnbiIsIkNvZGUyUGF0dGVybkNvbUZvbmQiLCJMZWN0dXJlTWFwcGluZyIsIlNldCIsImlzTGVjdHVyZSIsImFjdGUiLCJjb2RlQWN0ZSIsIm1hdGNoIiwiY29kZXNfbGVjdHVyZV9yZWdleHAiLCJnZXRUeXBlIiwiRXJyb3IiLCJtYXAiLCJyZXBsYWNlIiwiZ2V0Q29kZUFjdGUiLCJhZGQiLCJjb2RlcyIsImxpYmVsbGVBY3RlIiwibm9tQ2Fub25pcXVlIiwibGliZWxsZSIsInJlbWFwIiwidHlwZXMiLCJtZXJnZUNvZGVzIiwiYyIsIkFycmF5IiwiZnJvbSIsInByaW50QW5jaG9ycyIsImNvZGUiLCJsb2ciLCJnZXRDb2RlcyIsImpvaW4iLCJSZWdFeHAiLCJjb2Rlc19sZWN0dXJlIiwiTGVjdHVyZU1hcHBlciIsIm1hcHBpbmciLCJjb2xsZWN0IiwidW5kZWZpbmVkIiwibGVjdHVyZXMiLCJBY3Rlc0RvY3VtZW50YXRpb24iLCJzYW5pdHlDaGVja3MiLCJ2ZXJib3NlIiwibGVjdHVyZSIsIkNNUCIsIkNDIiwiUFJPTSIsIkFOMjEiLCJBTkxVTkkiLCJSw6lzb2x1dGlvbiIsIkFOMjAiLCJFVSIsIkltbXVuaXTDqSIsInByb2NlZHVyZXMiLCJjb2RlMnBhdHRlcm4iLCJ3YWxrRmlsZXMiLCJkYXRhIiwiYWN0aW9uIiwiZmlsZSIsImRvc3NpZXIiLCJwcm9jZWR1cmUiLCJyZW1hcFByb2NlZHVyZSIsInByb2NlZHVyZVBhcmxlbWVudGFpcmUiLCJhY3Rlc0xlZ2lzbGF0aWZzIiwiY29sbGVjdEZpbGVzIiwiX2FjdGVzIiwiX2MycCIsIl9wYXJlbnQiLCJwcm9jZXNzRmlsZXMiLCJhY3RlcyIsImMycCIsInBhcmVudCIsIm1lcmdlIiwidmFsaWRhdGUiLCJyZW1hcEFjdGVzIiwicmVzdWx0cyIsImxlY3R1cmVNYXBwZXIiLCJwdXNoIiwiY29sbGVjdEFjdGVzIiwibWVyZ2VfcHJvY2VkdXJlcyIsIk1hcCIsInJlbWFwcGVkUHJvY2VkdXJlcyIsImdldCIsIm9yZGVyZWRDb2RlcyIsIm9yZGVyZWQiLCJ4IiwidmFsaWRhdGVDaHJvbm9sb2d5Iiwic2VxdWVuY2UiLCJtZXJnZUFjdGUiLCJzaG9ydENvZGUiLCJ4c2lUeXBlIiwibCIsInZhbGlkYXRlTGV2ZWwiLCJwYXRoIiwia2V5IiwidmFsdWUiLCJlbnRyaWVzIiwiY29uY2F0IiwicHJpbnRFbnRyeSIsImVudHJ5IiwidGl0bGUiLCJ1bmRlcmxpbmUiLCJsZW5ndGgiLCJhZGRBbmNob3JzIiwiYW5jaG9yc1ByaW50ZWQiLCJhbmNob3JzIiwicmVuYW1lQ01QIiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwicHJpbnRMZXZlbCIsImtleXMiLCJzdWJzdHJpbmciLCJwcmludENvZGVzIiwicHJpbnRBbmNob3JzSW5kZXgiLCJnZXRBZ2dyZWdhdGVkIiwicmVtYXBwZWQiLCJwcmludCIsImFnZ3JlZ2F0ZWQiLCJtYWluIiwiZG9jIiwicHJvY2VzcyIsImV4aXQiXSwibWFwcGluZ3MiOiI7O0FB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eUIsa0NBQXpCLENBQUosRUFDRVksT0FBTyxDQUFDQyxJQUFSLENBQWFILElBQUksQ0FBQ0UsT0FBTyxDQUFDckosSUFBVCxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBjb21tYW5kTGluZVVzYWdlIGZyb20gXCJjb21tYW5kLWxpbmUtdXNhZ2VcIlxuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IGxvYWQsIGdldEZpbGVzIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhhcmd2OiBzdHJpbmdbXSk6IGFueSB7XG4gIGNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJwYXRobmFtZSB0byBhIEpTT04gZmlsZSBvciBhIGdsb2IgcGF0dGVybiB0byBKU09OIGZpbGVzXCIsXG4gICAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcImRhdGFcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwibm8tc2FuaXR5LWNoZWNrc1wiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkRvIG5vdCBwZXJmb3JtIHNhbml0eSBjaGVja3MuXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcInZlcmJvc2VcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZXNjcmlwdGlvbjogXCJpbmNyZWFzZSB2ZXJib3NpdHlcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiaGVscFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUHJpbnQgdGhpcyB1c2FnZSBndWlkZS5cIixcbiAgICB9LFxuICBdXG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHtcbiAgICAgIGhlYWRlcjogXCJBaWRlIMOgIGxhIGRvY3VtZW50YXRpb24gZHUgZG9zc2llciBsw6lnaXNsYXRpZlwiLFxuICAgICAgY29udGVudDogXCJHw6luw6hyZSB1bmUgaGnDqXJhcmNoaWUgZGVzIGFjdGVzIGzDqWdpc2xhdGlmc1wiLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVhZGVyOiBcIk9wdGlvbnNcIixcbiAgICAgIG9wdGlvbkxpc3Q6IG9wdGlvbnNEZWZpbml0aW9ucyxcbiAgICB9LFxuICBdXG4gIGNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zLCB7XG4gICAgYXJndjogYXJndixcbiAgfSlcbiAgaWYgKCEoXCJoZWxwXCIgaW4gb3B0aW9ucykgJiYgIShcImRhdGFcIiBpbiBvcHRpb25zKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXCItLWRhdGEgaXMgbWFuZGF0b3J5XCIpXG4gICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICB9XG4gIGlmIChcImhlbHBcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgdXNhZ2UgPSBjb21tYW5kTGluZVVzYWdlKHNlY3Rpb25zKVxuICAgIGNvbnNvbGUud2Fybih1c2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIGVxU2V0KGFzOiBTZXQ8c3RyaW5nPiwgYnM6IFNldDxzdHJpbmc+KTogYm9vbGVhbiB7XG4gIGlmIChhcy5zaXplICE9PSBicy5zaXplKSByZXR1cm4gZmFsc2VcbiAgZm9yICh2YXIgYSBvZiBhcykgaWYgKCFicy5oYXMoYSkpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdHJ1ZVxufVxuXG5jbGFzcyBDb2RlMlBhdHRlcm4ge1xuICBfcGF0dGVybl86IGFueVxuICBfbWF0Y2hfY291bnRfOiBudW1iZXJcbiAgY29uc3RydWN0b3IocGF0dGVybjogYW55LCBjaGlsZHJlbjogYW55KSB7XG4gICAgdGhpcy5fcGF0dGVybl8gPSBwYXR0ZXJuXG4gICAgdGhpcy5fbWF0Y2hfY291bnRfID0gMFxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgY2hpbGRyZW4pXG4gIH1cbn1cblxuY2xhc3MgQ29kZTJQYXR0ZXJuQ29tRm9uZCBleHRlbmRzIENvZGUyUGF0dGVybiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiXi9TQUlTSUUvKC9OT01JTi8pKigvUkVVTklPTi8pKigvUkFQUE9SVC8pKiRcIiwge30pXG4gIH1cbn1cblxuY2xhc3MgTGVjdHVyZU1hcHBpbmcge1xuICBsaWJlbGxlOiBhbnkgPSB7fVxuICBjb2RlczogYW55ID0gbmV3IFNldCgpXG5cbiAgc3RhdGljIGNvZGVzX2xlY3R1cmU6IHN0cmluZ1tdID0gW1xuICAgIFwiQU4xXCIsXG4gICAgXCJTTjFcIixcbiAgICBcIkFOTkxFQ1wiLFxuICAgIFwiU05OTEVDXCIsXG4gICAgXCJBTkxERUZcIixcbiAgICBcIkFOMlwiLFxuICAgIFwiU04yXCIsXG4gICAgXCJTTjNcIixcbiAgXVxuICBzdGF0aWMgY29kZXNfbGVjdHVyZV9yZWdleHA6IGFueSA9IG5ldyBSZWdFeHAoXG4gICAgXCJeKD86XCIgKyBMZWN0dXJlTWFwcGluZy5jb2Rlc19sZWN0dXJlLmpvaW4oXCJ8XCIpICsgXCIpKC0uKik/JFwiLFxuICApXG5cbiAgc3RhdGljIGlzTGVjdHVyZShhY3RlOiBhbnkpIHtcbiAgICByZXR1cm4gYWN0ZS5jb2RlQWN0ZS5tYXRjaChMZWN0dXJlTWFwcGluZy5jb2Rlc19sZWN0dXJlX3JlZ2V4cClcbiAgfVxuXG4gIHN0YXRpYyBnZXRUeXBlKGFjdGU6IGFueSkge1xuICAgIGlmIChhY3RlLmNvZGVBY3RlLm1hdGNoKC9eQU4vKSkgcmV0dXJuIFwiQU5cIlxuICAgIGVsc2UgaWYgKGFjdGUuY29kZUFjdGUubWF0Y2goL15TTi8pKSByZXR1cm4gXCJTTlwiXG4gICAgZWxzZSB0aHJvdyBFcnJvcihgJHthY3RlLmNvZGVBY3RlfSBkb2VzIG5vdCBzdGFydCB3aXRoIEFOIG9yIFNOYClcbiAgfVxuXG4gIHN0YXRpYyBtYXAoY29kZUFjdGU6IGFueSkge1xuICAgIHJldHVybiBjb2RlQWN0ZS5yZXBsYWNlKExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmVfcmVnZXhwLCBgbGVjdHVyZSQxYClcbiAgfVxuXG4gIHN0YXRpYyBnZXRDb2RlQWN0ZShhY3RlOiBhbnkpIHtcbiAgICBpZiAoIUxlY3R1cmVNYXBwaW5nLmlzTGVjdHVyZShhY3RlKSkgcmV0dXJuXG5cbiAgICByZXR1cm4gTGVjdHVyZU1hcHBpbmcubWFwKGFjdGUuY29kZUFjdGUpXG4gIH1cblxuICBhZGQoYWN0ZTogYW55KSB7XG4gICAgdGhpcy5jb2Rlcy5hZGQoYWN0ZS5jb2RlQWN0ZSlcblxuICAgIGNvbnN0IHR5cGUgPSBMZWN0dXJlTWFwcGluZy5nZXRUeXBlKGFjdGUpXG5cbiAgICBpZiAoIShhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZSBpbiB0aGlzLmxpYmVsbGUpKVxuICAgICAgdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXSA9IG5ldyBTZXQoKVxuICAgIHRoaXMubGliZWxsZVthY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZV0uYWRkKHR5cGUpXG4gIH1cblxuICByZW1hcChhY3RlOiBhbnksIGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICBhY3RlLmNvZGVBY3RlID0gY29kZUFjdGVcblxuICAgIGxldCB0eXBlcyA9IHRoaXMubGliZWxsZVthY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZV1cbiAgICBpZiAoISh0eXBlcy5oYXMoXCJTTlwiKSAmJiB0eXBlcy5oYXMoXCJBTlwiKSkpIHtcbiAgICAgIGlmICh0eXBlcy5oYXMoXCJTTlwiKSkgYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWUgKz0gXCIgKFPDqW5hdClcIlxuICAgICAgZWxzZSBpZiAodHlwZXMuaGFzKFwiQU5cIikpXG4gICAgICAgIGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlICs9IFwiIChBc3NlbWJsw6llIE5hdGlvbmFsZSlcIlxuICAgIH1cbiAgfVxuXG4gIG1lcmdlQ29kZXMoY29kZXM6IGFueSkge1xuICAgIGZvciAoY29uc3QgYyBvZiBBcnJheS5mcm9tKHRoaXMuY29kZXMpKSBjb2Rlcy5hZGQoYylcbiAgfVxuXG4gIHByaW50QW5jaG9ycygpIHtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgQXJyYXkuZnJvbSh0aGlzLmNvZGVzKSkgY29uc29sZS5sb2coYC4uIF8ke2NvZGV9OmApXG4gIH1cblxuICBnZXRDb2RlcygpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNvZGVzKS5qb2luKFwiLFwiKVxuICB9XG59XG5cbmNsYXNzIExlY3R1cmVNYXBwZXIge1xuICBtYXBwaW5nOiBhbnkgPSB7fVxuXG4gIGhhcyhjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGNvZGVBY3RlIGluIHRoaXMubWFwcGluZ1xuICB9XG5cbiAgY29sbGVjdChhY3RlOiBhbnkpIHtcbiAgICBjb25zdCBjb2RlQWN0ZSA9IExlY3R1cmVNYXBwaW5nLmdldENvZGVBY3RlKGFjdGUpXG4gICAgaWYgKGNvZGVBY3RlICE9IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGxlY3R1cmVzID0gdGhpcy5tYXBwaW5nXG4gICAgICBpZiAoIShjb2RlQWN0ZSBpbiBsZWN0dXJlcykpIGxlY3R1cmVzW2NvZGVBY3RlXSA9IG5ldyBMZWN0dXJlTWFwcGluZygpXG4gICAgICBsZWN0dXJlc1tjb2RlQWN0ZV0uYWRkKGFjdGUpXG4gICAgfVxuICB9XG5cbiAgcmVtYXAoYWN0ZTogYW55KSB7XG4gICAgY29uc3QgY29kZUFjdGUgPSBMZWN0dXJlTWFwcGluZy5nZXRDb2RlQWN0ZShhY3RlKVxuICAgIGlmIChjb2RlQWN0ZSAhPSB1bmRlZmluZWQpIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ucmVtYXAoYWN0ZSwgY29kZUFjdGUpXG4gIH1cblxuICBtZXJnZUNvZGVzKGNvZGVzOiBhbnksIGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLm1lcmdlQ29kZXMoY29kZXMpXG4gIH1cblxuICBwcmludEFuY2hvcnMoY29kZUFjdGU6IHN0cmluZykge1xuICAgIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ucHJpbnRBbmNob3JzKClcbiAgfVxuXG4gIGdldENvZGVzKGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5nZXRDb2RlcygpXG4gIH1cbn1cblxuY2xhc3MgQWN0ZXNEb2N1bWVudGF0aW9uIHtcbiAgdmVyYm9zZTogYm9vbGVhblxuICBzYW5pdHlDaGVja3M6IGJvb2xlYW5cbiAgbGVjdHVyZU1hcHBlcjogYW55ID0gbmV3IExlY3R1cmVNYXBwZXIoKVxuICByZW1hcHBlZFByb2NlZHVyZXM6IGFueSA9IHt9XG4gIGFuY2hvcnNQcmludGVkOiBhbnkgPSB7fVxuICBhbmNob3JzOiBhbnkgPSBuZXcgU2V0KClcbiAgY29kZXM6IGFueSA9IHt9XG4gIHByb2NlZHVyZXM6IGFueSA9IG51bGxcbiAgY29kZTJwYXR0ZXJuOiBhbnkgPSBuZXcgQ29kZTJQYXR0ZXJuKG51bGwsIHtcbiAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4oKCgvbGVjdHVyZS8pKyl8KCgvbGVjdHVyZS8pKy9DTVAvKC9sZWN0dXJlLykqKSkoL0NDLyk/KC9QUk9NLyk/KC9BTi1BUFBMSS8pPyRcIixcbiAgICAgIHtcbiAgICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0RFUE9ULyk/KC9EUFRMRVRUUkVDVC8pPygvRVRJLyk/KC9BVkNFLyk/KC9ER1ZULyk/KC9BQ0lOLyk/KC9NT1RJT04vKSooL1BST0NBQ0MvKT8oL0NPTS8pPygoL0RFQkFUUy8pKyk/KC9SVFJJTkkvKT8kXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJsZWN0dXJlLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvRk9ORC98L0FWSVMvKSskXCIsIHtcbiAgICAgICAgICAgICAgXCJsZWN0dXJlLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgICAgIFwibGVjdHVyZS1DT00tQVZJU1wiOiBuZXcgQ29kZTJQYXR0ZXJuQ29tRm9uZCgpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBcImxlY3R1cmUtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICAgIFwiXigvU0VBTkNFLykqKCgvTU9USU9OLyk/KC9NT1RJT04tVk9URS8pKyk/KC9ERUMvKT8kXCIsXG4gICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgICBDTVA6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9ERVBPVC98L1NBSVNJRS8pezEsMn0oL0NPTS8pPygvREVDLyk/KC9ERUJBVFMtQU4vL0RFQkFUUy1TTi8pP1wiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiQ01QLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgICBcIl4oL05PTUlOLyk/KC9SQVBQT1JULUFOL3wvUkFQUE9SVC1TTi8pezJ9JFwiLFxuICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBcIkNNUC1ERUJBVFMtQU5cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICAgICAgICBcIkNNUC1ERUJBVFMtU05cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICAgQ0M6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TQUlTSUUvKSsoL0NPTkNMVVNJT04vKT8kXCIsIHt9KSxcbiAgICAgICAgUFJPTTogbmV3IENvZGUyUGF0dGVybihcIl4oL1BVQi8pPyRcIiwge30pLFxuICAgICAgICBcIkFOLUFQUExJXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9SQVBQT1JULyk/JFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJBbGxvY3V0aW9uIGR1IFByw6lzaWRlbnQgZGUgbCdBc3NlbWJsw6llIG5hdGlvbmFsZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL0FOMjEvJFwiLFxuICAgICAge1xuICAgICAgICBBTjIxOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQVBBTi8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiUsOpc29sdXRpb24gQXJ0aWNsZSAzNC0xXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTkxVTkkvKT8kXCIsIHtcbiAgICAgIEFOTFVOSTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9ERUJBVFMvKT8oL1JUUklOSS8pPyRcIiwge1xuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKygvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBSw6lzb2x1dGlvbjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pPygvQ0MvKT8kXCIsIHtcbiAgICAgIEFOTFVOSTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9DT00vKT8oL0RFQkFUUy98L1JUUklOSS8pPyRcIiwge1xuICAgICAgICBcIkFOTFVOSS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0NBRS8pPygvRk9ORC8pPyRcIiwge1xuICAgICAgICAgIFwiQU5MVU5JLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgXCJBTkxVTkktQ09NLUNBRVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgXCJeKC9TQUlTSUUvKT8oL05PTUlOLyk/KC9SRVVOSU9OLyk/KC9SQVBQT1JULyk/KC9ERUMvKT8kXCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgXCJBTkxVTkktREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL0RFQy8pPyRcIiwge30pLFxuICAgICAgfSksXG4gICAgICBDQzogbmV3IENvZGUyUGF0dGVybihcIl4oL1NBSVNJRS8pPygvQ09OQ0xVU0lPTi8pPyRcIiwge30pLFxuICAgIH0pLFxuICAgIFwiUmFwcG9ydCBkJ2luZm9ybWF0aW9uIHNhbnMgbWlzc2lvblwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeKC9BTjIwLyk/KC9FVS8pPyRcIixcbiAgICAgIHtcbiAgICAgICAgQU4yMDogbmV3IENvZGUyUGF0dGVybihcIl4oL1JBUFBPUlQvKT8kXCIsIHt9KSxcbiAgICAgICAgRVU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERUMvKSskXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIk1pc3Npb24gZCdpbmZvcm1hdGlvblwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU4yMC8pPyRcIiwge1xuICAgICAgQU4yMDogbmV3IENvZGUyUGF0dGVybihcIl4oL01JU0lORi8pPyRcIiwge1xuICAgICAgICBcIkFOMjAtTUlTSU5GXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9DUkVBLyk/KC9OT01JTi8pPygvUkFQUE9SVC8pPyRcIixcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFwiQ29tbWlzc2lvbiBkJ2VucXXDqnRlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTjIwLyk/JFwiLCB7XG4gICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQ09NRU5RLyk/JFwiLCB7XG4gICAgICAgIFwiQU4yMC1DT01FTlFcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0NSRUEvKT8oL05PTUlOLyk/KC9SQVBQT1JULyk/JFwiLFxuICAgICAgICAgIHt9LFxuICAgICAgICApLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgXCJFbmdhZ2VtZW50IGRlIGxhIHJlc3BvbnNhYmlsaXTDqSBnb3V2ZXJuZW1lbnRhbGVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXi9BTjIxLyRcIixcbiAgICAgIHtcbiAgICAgICAgQU4yMTogbmV3IENvZGUyUGF0dGVybihcIl4oKCgvTU9USU9OLykqL0RFQkFUUy8pfCgvREdWVC8pKXsxLDJ9JFwiLCB7XG4gICAgICAgICAgXCJBTjIxLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9NT1RJT04tVk9URS8pKiRcIiwge30pLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIk1vdGlvbiByw6lmw6lyZW5kYWlyZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvbGVjdHVyZS8pKyRcIiwge1xuICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9DT00vKT8oL0RFQkFUUy8pPyRcIiwge1xuICAgICAgICBcImxlY3R1cmUtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJsZWN0dXJlLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKSooL1JBUFBPUlQvKSokXCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgXCJsZWN0dXJlLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBJbW11bml0w6k6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTkxVTkkvKSskXCIsIHtcbiAgICAgIEFOTFVOSTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9DT00vKT8oL0RFQkFUUy8pPygvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvRk9ORC8pPyRcIiwge1xuICAgICAgICAgIFwiQU5MVU5JLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKSooL1JBUFBPUlQvKSokXCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgXCJBTkxVTkktREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKT8oL0RFQy8pJFwiLCB7fSksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBcIlJlc3BvbnNhYmlsaXTDqSBww6luYWxlIGR1IHByw6lzaWRlbnQgZGUgbGEgcsOpcHVibGlxdWVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXi9sZWN0dXJlLyRcIixcbiAgICAgIHtcbiAgICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9SRUNCVVJFQVUvKT8kXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIlByb3Bvc2l0aW9uIGRlIGxvaSBwcsOpc2VudMOpZSBlbiBhcHBsaWNhdGlvbiBkZSBsJ2FydGljbGUgMTEgZGUgbGEgQ29uc3RpdHV0aW9uXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4vbGVjdHVyZS8kXCIsXG4gICAgICB7XG4gICAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICB9KVxuXG4gIGNvbnN0cnVjdG9yKHNhbml0eUNoZWNrczogYm9vbGVhbiwgdmVyYm9zZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgdGhpcy52ZXJib3NlID0gdmVyYm9zZVxuICAgIHRoaXMuc2FuaXR5Q2hlY2tzID0gc2FuaXR5Q2hlY2tzXG4gICAgdGhpcy5wcm9jZWR1cmVzID0ge31cbiAgICB0aGlzLmNvZGUycGF0dGVybi5fbWF0Y2hfY291bnRfKytcbiAgfVxuXG4gIHdhbGtGaWxlcyhkYXRhOiBzdHJpbmdbXSwgYWN0aW9uOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZ2V0RmlsZXMoZGF0YSkpIHtcbiAgICAgIGNvbnN0IGRvc3NpZXIgPSBsb2FkKGZpbGUpXG4gICAgICBsZXQgcHJvY2VkdXJlOiBzdHJpbmcgPSB0aGlzLnJlbWFwUHJvY2VkdXJlKFxuICAgICAgICBkb3NzaWVyLnByb2NlZHVyZVBhcmxlbWVudGFpcmUubGliZWxsZSxcbiAgICAgIClcbiAgICAgIGlmICghKHByb2NlZHVyZSBpbiB0aGlzLnByb2NlZHVyZXMpKSB0aGlzLnByb2NlZHVyZXNbcHJvY2VkdXJlXSA9IHt9XG4gICAgICBhY3Rpb24oXG4gICAgICAgIHRoaXMucHJvY2VkdXJlc1twcm9jZWR1cmVdLFxuICAgICAgICBkb3NzaWVyLmFjdGVzTGVnaXNsYXRpZnMsXG4gICAgICAgIHRoaXMuY29kZTJwYXR0ZXJuW3Byb2NlZHVyZV0sXG4gICAgICAgIG51bGwsXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgY29sbGVjdEZpbGVzKGRhdGE6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy53YWxrRmlsZXMoXG4gICAgICBkYXRhLFxuICAgICAgKF9hY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIF9jMnA6IGFueSwgX3BhcmVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuY29sbGVjdChhY3Rlc0xlZ2lzbGF0aWZzKVxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBwcm9jZXNzRmlsZXMoZGF0YTogc3RyaW5nW10pIHtcbiAgICB0aGlzLndhbGtGaWxlcyhcbiAgICAgIGRhdGEsXG4gICAgICAoYWN0ZXM6IGFueSwgYWN0ZXNMZWdpc2xhdGlmczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5tZXJnZShhY3RlcywgYWN0ZXNMZWdpc2xhdGlmcywgYzJwLCBwYXJlbnQpXG4gICAgICB9LFxuICAgIClcbiAgICBpZiAodGhpcy5zYW5pdHlDaGVja3MpIHRoaXMudmFsaWRhdGUoKVxuICB9XG5cbiAgcmVtYXBBY3RlcyhhY3RlczogYW55KTogYW55IHtcbiAgICBsZXQgcmVzdWx0cyA9IFtdXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGFjdGVzKSB7XG4gICAgICB0aGlzLmxlY3R1cmVNYXBwZXIucmVtYXAoYWN0ZSlcblxuICAgICAgLy8gQ0MtU0FJU0lFLSBzdWZmaXggZG9lcyBub3QgaW1wbHkgYSBoaWVyYXJjaHlcbiAgICAgIGFjdGUuY29kZUFjdGUgPSBhY3RlLmNvZGVBY3RlLnJlcGxhY2UoL15DQy1TQUlTSUUuKi8sIFwiQ0MtU0FJU0lFXCIpXG5cbiAgICAgIHJlc3VsdHMucHVzaChhY3RlKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cbiAgY29sbGVjdEFjdGVzKGFjdGVzOiBhbnkpOiBhbnkge1xuICAgIGxldCByZXN1bHRzID0gW11cbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgYWN0ZXMpIHtcbiAgICAgIHRoaXMubGVjdHVyZU1hcHBlci5jb2xsZWN0KGFjdGUpXG5cbiAgICAgIHJlc3VsdHMucHVzaChhY3RlKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cbiAgcmVtYXBQcm9jZWR1cmUocHJvY2VkdXJlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1lcmdlX3Byb2NlZHVyZXM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKFtcbiAgICAgIFtcIlByb3Bvc2l0aW9uIGRlIGxvaSBvcmRpbmFpcmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcIlByb2pldCBkZSBsb2kgb3JkaW5haXJlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXG4gICAgICAgIFwiUHJvamV0IGRlIHJhdGlmaWNhdGlvbiBkZXMgdHJhaXTDqXMgZXQgY29udmVudGlvbnNcIixcbiAgICAgICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiLFxuICAgICAgXSxcbiAgICAgIFtcIlByb2pldCBvdSBwcm9wb3NpdGlvbiBkZSBsb2kgb3JnYW5pcXVlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXG4gICAgICAgIFwiUHJvamV0IG91IHByb3Bvc2l0aW9uIGRlIGxvaSBjb25zdGl0dXRpb25uZWxsZVwiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBkZSBmaW5hbmNlcyBkZSBsJ2FubsOpZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBkZSBmaW5hbmNlcyByZWN0aWZpY2F0aXZlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXG4gICAgICAgIFwiUHJvamV0IGRlIGxvaSBkZSBmaW5hbmNlbWVudCBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIixcbiAgICAgICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiLFxuICAgICAgXSxcbiAgICBdKVxuICAgIGlmIChtZXJnZV9wcm9jZWR1cmVzLmhhcyhwcm9jZWR1cmUpKSB7XG4gICAgICB0aGlzLnJlbWFwcGVkUHJvY2VkdXJlc1twcm9jZWR1cmVdID0gbnVsbFxuICAgICAgcmV0dXJuIG1lcmdlX3Byb2NlZHVyZXMuZ2V0KHByb2NlZHVyZSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHByb2NlZHVyZVxuICAgIH1cbiAgfVxuXG4gIC8vIHJldHVybiB0aGUgY29kZUFjdGVzIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgYXBwZWFyIGluIHRoZSByZWdleHBcbiAgb3JkZXJlZENvZGVzKGNvZGVzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IFNldDxzdHJpbmc+IHtcbiAgICBjb2RlcyA9IG5ldyBTZXQoY29kZXMpXG4gICAgaWYgKCF0aGlzLnNhbml0eUNoZWNrcykgcmV0dXJuIGNvZGVzXG4gICAgbGV0IG9yZGVyZWQgPSBjMnBbXCJfcGF0dGVybl9cIl0ubWF0Y2gobmV3IFJlZ0V4cChcIi8uKj8vXCIsIFwiZ1wiKSlcbiAgICBvcmRlcmVkID0gb3JkZXJlZC5tYXAoKHg6IHN0cmluZykgPT4geC5yZXBsYWNlKG5ldyBSZWdFeHAoXCIvKC4qKS9cIiksIFwiJDFcIikpXG4gICAgaWYgKHBhcmVudCAhPSBudWxsKSBvcmRlcmVkID0gb3JkZXJlZC5tYXAoKHg6IHN0cmluZykgPT4gYCR7cGFyZW50fS0ke3h9YClcbiAgICBvcmRlcmVkID0gbmV3IFNldChvcmRlcmVkKVxuICAgIGFzc2VydChlcVNldChvcmRlcmVkLCBjb2RlcyksIGAke1suLi5vcmRlcmVkXX0gIT0gJHtbLi4uY29kZXNdfWApXG4gICAgcmV0dXJuIG9yZGVyZWRcbiAgfVxuXG4gIHZhbGlkYXRlQ2hyb25vbG9neShhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHBhdHRlcm4gPSBjMnBbXCJfcGF0dGVybl9cIl1cbiAgICBjb25zdCBzZXF1ZW5jZSA9IGFjdGVzTGVnaXNsYXRpZnNcbiAgICAgIC5tYXAoKHg6IGFueSkgPT4gYC8ke3guY29kZUFjdGV9L2AucmVwbGFjZShgLyR7cGFyZW50fS1gLCBcIi9cIikpXG4gICAgICAuam9pbihcIlwiKVxuICAgIGFzc2VydChcbiAgICAgIHNlcXVlbmNlLm1hdGNoKG5ldyBSZWdFeHAocGF0dGVybikpLFxuICAgICAgYCR7cGF0dGVybn0gZG9lcyBub3QgbWF0Y2ggJHtzZXF1ZW5jZX1gLFxuICAgIClcbiAgICBjMnAuX21hdGNoX2NvdW50XysrXG4gIH1cblxuICBtZXJnZUFjdGUoYWN0ZXM6IGFueSwgYWN0ZTogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgY29kZTogc3RyaW5nID0gYWN0ZS5jb2RlQWN0ZVxuICAgIGxldCBzaG9ydENvZGU6IHN0cmluZyA9IGNvZGUucmVwbGFjZShuZXcgUmVnRXhwKGBeJHtwYXJlbnR9LWApLCBcIlwiKVxuICAgIHNob3J0Q29kZSA9IHNob3J0Q29kZS5yZXBsYWNlKC8tKEFOfFNOKSQvLCBcIlwiKVxuICAgIHRoaXMuY29kZXNbc2hvcnRDb2RlXSA9IG51bGxcbiAgICBsZXQgbmFtZTogc3RyaW5nID0gYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVcbiAgICBpZiAoIShjb2RlIGluIGFjdGVzKSkge1xuICAgICAgYWN0ZXNbY29kZV0gPSB7XG4gICAgICAgIHR5cGU6IGFjdGUueHNpVHlwZSxcbiAgICAgICAgbmFtZTogbmV3IFNldChbbmFtZV0pLFxuICAgICAgICBzaG9ydENvZGU6IHNob3J0Q29kZSxcbiAgICAgICAgYWN0ZXM6IHt9LFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhY3Rlc1tjb2RlXS5uYW1lLmFkZChuYW1lKVxuICAgIH1cbiAgICBpZiAoXCJhY3Rlc0xlZ2lzbGF0aWZzXCIgaW4gYWN0ZSlcbiAgICAgIHRoaXMubWVyZ2UoYWN0ZXNbY29kZV0uYWN0ZXMsIGFjdGUuYWN0ZXNMZWdpc2xhdGlmcywgYzJwW2NvZGVdLCBjb2RlKVxuICB9XG5cbiAgbWVyZ2UoYWN0ZXM6IGFueSwgYWN0ZXNMZWdpc2xhdGlmczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBsID0gdGhpcy5yZW1hcEFjdGVzKGFjdGVzTGVnaXNsYXRpZnMpXG4gICAgdGhpcy52YWxpZGF0ZUNocm9ub2xvZ3kobCwgYzJwLCBwYXJlbnQpXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGwpIHRoaXMubWVyZ2VBY3RlKGFjdGVzLCBhY3RlLCBjMnAsIHBhcmVudClcbiAgfVxuXG4gIGNvbGxlY3QoYWN0ZXNMZWdpc2xhdGlmczogYW55KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBhY3RlIG9mIHRoaXMuY29sbGVjdEFjdGVzKGFjdGVzTGVnaXNsYXRpZnMpKVxuICAgICAgaWYgKFwiYWN0ZXNMZWdpc2xhdGlmc1wiIGluIGFjdGUpIHRoaXMuY29sbGVjdChhY3RlLmFjdGVzTGVnaXNsYXRpZnMpXG4gIH1cblxuICB2YWxpZGF0ZUxldmVsKGMycDogYW55LCBwYXRoOiBhbnkpIHtcbiAgICBhc3NlcnQoYzJwLl9tYXRjaF9jb3VudF8gPiAwLCBgJHtwYXRofSBpcyBuZXZlciB1c2VkYClcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjMnApIGFzIFtzdHJpbmcsIGFueV1bXSkge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUuY29uc3RydWN0b3IubmFtZSA9PSBcIkNvZGUyUGF0dGVyblwiKVxuICAgICAgICB0aGlzLnZhbGlkYXRlTGV2ZWwodmFsdWUsIHBhdGguY29uY2F0KFtrZXldKSlcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aGlzLnZhbGlkYXRlTGV2ZWwodGhpcy5jb2RlMnBhdHRlcm4sIFtdKVxuICB9XG5cbiAgcHJpbnRFbnRyeShzZWN0aW9uczogc3RyaW5nLCBlbnRyeTogc3RyaW5nLCBjb2Rlczogc3RyaW5nKSB7XG4gICAgY29uc3QgdGl0bGUgPSBgXFxgJHtlbnRyeX1cXGBfX2BcbiAgICBjb25zb2xlLmxvZyh0aXRsZSlcbiAgICBjb25zdCB1bmRlcmxpbmUgPSBuZXcgQXJyYXkodGl0bGUubGVuZ3RoICsgMSkuam9pbihzZWN0aW9uc1swXSlcbiAgICBjb25zb2xlLmxvZyh1bmRlcmxpbmUpXG4gICAgY29uc29sZS5sb2coY29kZXMpXG4gIH1cblxuICBhZGRBbmNob3JzKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm5cbiAgICBpZiAodGhpcy5sZWN0dXJlTWFwcGVyLmhhcyhrZXkpKVxuICAgICAgdGhpcy5sZWN0dXJlTWFwcGVyLm1lcmdlQ29kZXModGhpcy5hbmNob3JzLCBrZXkpXG4gICAgZWxzZSB0aGlzLmFuY2hvcnMuYWRkKGtleSlcbiAgfVxuXG4gIHByaW50QW5jaG9ycyhrZXk6IHN0cmluZykge1xuICAgIGlmIChrZXkgaW4gdGhpcy5hbmNob3JzUHJpbnRlZCkgcmV0dXJuXG4gICAgdGhpcy5hbmNob3JzUHJpbnRlZFtrZXldID0gbnVsbFxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpIHRoaXMubGVjdHVyZU1hcHBlci5wcmludEFuY2hvcnMoa2V5KVxuICAgIGVsc2UgY29uc29sZS5sb2coYC4uIF8ke2tleX06YClcbiAgfVxuXG4gIGdldENvZGVzKGtleTogc3RyaW5nLCBzaG9ydENvZGU6IHN0cmluZykge1xuICAgIGlmIChrZXkgaW4gdGhpcy5hbmNob3JzUHJpbnRlZCkgcmV0dXJuIGBjZiBcXFxcKiR7c2hvcnRDb2RlfVxcXFwqYFxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpIHJldHVybiB0aGlzLmxlY3R1cmVNYXBwZXIuZ2V0Q29kZXMoa2V5KVxuICAgIGVsc2UgcmV0dXJuIGtleVxuICB9XG5cbiAgcmVuYW1lQ01QKGtleTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoXCJDTVBcIikpIHtcbiAgICAgIGlmIChrZXkuZW5kc1dpdGgoXCItU05cIikpIHJldHVybiBgJHtuYW1lfSAoU8OpbmF0KWBcbiAgICAgIGVsc2UgaWYgKGtleS5lbmRzV2l0aChcIi1BTlwiKSkgcmV0dXJuIGAke25hbWV9IChBc3NlbWJsw6llIE5hdGlvbmFsZSlgXG4gICAgICBlbHNlIHJldHVybiBuYW1lXG4gICAgfSBlbHNlIHJldHVybiBuYW1lXG4gIH1cblxuICBwcmludExldmVsKGFjdGVzOiBhbnksIHNlY3Rpb25zOiBzdHJpbmcsIGMycDogYW55LCBwYXJlbnQ6IGFueSkge1xuICAgIGNvbnN0IGtleXM6IFNldDxzdHJpbmc+ID0gdGhpcy5vcmRlcmVkQ29kZXMoT2JqZWN0LmtleXMoYWN0ZXMpLCBjMnAsIHBhcmVudClcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGFjdGVzW2tleV1cbiAgICAgIGxldCBuYW1lID0gQXJyYXkuZnJvbSh2YWx1ZS5uYW1lKS5qb2luKFwiLCBcIilcbiAgICAgIG5hbWUgPSB0aGlzLnJlbmFtZUNNUChrZXksIG5hbWUpXG4gICAgICBjb25zdCBjb2RlcyA9IHRoaXMuZ2V0Q29kZXMoa2V5LCB2YWx1ZS5zaG9ydENvZGUpXG4gICAgICB0aGlzLmFkZEFuY2hvcnMoa2V5KVxuICAgICAgdGhpcy5wcmludEFuY2hvcnMoa2V5KVxuICAgICAgY29uc29sZS5sb2coXCJcIilcbiAgICAgIHRoaXMucHJpbnRFbnRyeShzZWN0aW9ucywgYCR7bmFtZX0gPCR7dmFsdWUuc2hvcnRDb2RlfVRPQ18+YCwgY29kZXMpXG4gICAgICBjb25zb2xlLmxvZyhcIlwiKVxuICAgICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlLmFjdGVzKS5sZW5ndGggPiAwKVxuICAgICAgICB0aGlzLnByaW50TGV2ZWwodmFsdWUuYWN0ZXMsIHNlY3Rpb25zLnN1YnN0cmluZygxKSwgYzJwW2tleV0sIGtleSlcbiAgICB9XG4gIH1cblxuICBwcmludENvZGVzKCkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuY29kZXMpKVxuICAgICAgY29uc29sZS5sb2coYC4uIF8ke2tleX1UT0M6IGh0dHA6Ly9gKVxuICB9XG5cbiAgcHJpbnRBbmNob3JzSW5kZXgoKSB7XG4gICAgZm9yIChjb25zdCBjb2RlIG9mIEFycmF5LmZyb20odGhpcy5hbmNob3JzKSlcbiAgICAgIGNvbnNvbGUubG9nKGAqIDpyZWY6XFxgJHtjb2RlfSA8JHtjb2RlfT5cXGBgKVxuICB9XG5cbiAgZ2V0QWdncmVnYXRlZChwcm9jZWR1cmU6IHN0cmluZykge1xuICAgIGlmIChwcm9jZWR1cmUgPT0gXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiKSB7XG4gICAgICBjb25zdCByZW1hcHBlZCA9IE9iamVjdC5rZXlzKHRoaXMucmVtYXBwZWRQcm9jZWR1cmVzKS5qb2luKFwiLCBcIilcbiAgICAgIHJldHVybiBgIChhZ3LDqWdhdGlvbiBkZSAke3JlbWFwcGVkfSlgXG4gICAgfSBlbHNlIHJldHVybiBcIlwiXG4gIH1cblxuICBwcmludCgpOiB2b2lkIHtcbiAgICB0aGlzLmFuY2hvcnNQcmludGVkID0ge31cbiAgICBmb3IgKGNvbnN0IFtrZXksIGFjdGVzXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnByb2NlZHVyZXMpIGFzIFtcbiAgICAgIHN0cmluZyxcbiAgICAgIGFueSxcbiAgICBdW10pIHtcbiAgICAgIGNvbnN0IGNvZGUgPSBrZXkucmVwbGFjZSgvICsvZywgXCJfXCIpXG4gICAgICB0aGlzLmNvZGVzW2NvZGVdID0gbnVsbFxuICAgICAgY29uc3QgYWdncmVnYXRlZCA9IHRoaXMuZ2V0QWdncmVnYXRlZChrZXkpXG4gICAgICBjb25zdCB0aXRsZSA9IGBcXGAke2tleX0gPCR7Y29kZX1UT0NfPlxcYF9fJHthZ2dyZWdhdGVkfWBcbiAgICAgIGNvbnNvbGUubG9nKHRpdGxlKVxuICAgICAgY29uc3QgdW5kZXJsaW5lID0gbmV3IEFycmF5KHRpdGxlLmxlbmd0aCArIDEpLmpvaW4oXCI9XCIpXG4gICAgICBjb25zb2xlLmxvZyh1bmRlcmxpbmUpXG4gICAgICB0aGlzLnByaW50TGV2ZWwoYWN0ZXMsIFwiLX4uJ1wiLCB0aGlzLmNvZGUycGF0dGVybltrZXldLCBudWxsKVxuICAgIH1cbiAgICB0aGlzLnByaW50Q29kZXMoKVxuICAgIHRoaXMucHJpbnRBbmNob3JzSW5kZXgoKVxuICB9XG59XG5cbmZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogbnVtYmVyIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICBpZiAob3B0aW9ucyA9PT0gbnVsbCkgcmV0dXJuIDFcbiAgbGV0IGRvYyA9IG5ldyBBY3Rlc0RvY3VtZW50YXRpb24oXG4gICAgIW9wdGlvbnNbXCJuby1zYW5pdHktY2hlY2tzXCJdLFxuICAgIG9wdGlvbnMudmVyYm9zZSxcbiAgKVxuICBkb2MuY29sbGVjdEZpbGVzKG9wdGlvbnMuZGF0YSlcbiAgZG9jLnByb2Nlc3NGaWxlcyhvcHRpb25zLmRhdGEpXG4gIGRvYy5wcmludCgpXG4gIHJldHVybiAwXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcImRvY3VtZW50X2Rvc3NpZXJzX2xlZ2lzbGF0aWZzLnRzXCIpKVxuICBwcm9jZXNzLmV4aXQobWFpbihwcm9jZXNzLmFyZ3YpKVxuIl19
494
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2RvY3VtZW50X2Rvc3NpZXJzX2xlZ2lzbGF0aWZzLnRzIl0sIm5hbWVzIjpbImNvbW1hbmRMaW5lQXJncyIsImNvbW1hbmRMaW5lVXNhZ2UiLCJhc3NlcnQiLCJsb2FkIiwiZ2V0RmlsZXMiLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0T3B0aW9uIiwibXVsdGlwbGUiLCJuYW1lIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJzZWN0aW9ucyIsImhlYWRlciIsImNvbnRlbnQiLCJvcHRpb25MaXN0Iiwib3B0aW9ucyIsImNvbnNvbGUiLCJlcnJvciIsImhlbHAiLCJ1c2FnZSIsIndhcm4iLCJlcVNldCIsImFzIiwiYnMiLCJzaXplIiwiYSIsImhhcyIsIkNvZGUyUGF0dGVybiIsImNvbnN0cnVjdG9yIiwicGF0dGVybiIsImNoaWxkcmVuIiwiX3BhdHRlcm5fIiwiX21hdGNoX2NvdW50XyIsIk9iamVjdCIsImFzc2lnbiIsIkNvZGUyUGF0dGVybkNvbUZvbmQiLCJMZWN0dXJlTWFwcGluZyIsIlNldCIsImlzTGVjdHVyZSIsImFjdGUiLCJjb2RlQWN0ZSIsIm1hdGNoIiwiY29kZXNfbGVjdHVyZV9yZWdleHAiLCJnZXRUeXBlIiwiRXJyb3IiLCJtYXAiLCJyZXBsYWNlIiwiZ2V0Q29kZUFjdGUiLCJhZGQiLCJjb2RlcyIsImxpYmVsbGVBY3RlIiwibm9tQ2Fub25pcXVlIiwibGliZWxsZSIsInJlbWFwIiwidHlwZXMiLCJtZXJnZUNvZGVzIiwiYyIsIkFycmF5IiwiZnJvbSIsInByaW50QW5jaG9ycyIsImNvZGUiLCJsb2ciLCJnZXRDb2RlcyIsImpvaW4iLCJSZWdFeHAiLCJjb2Rlc19sZWN0dXJlIiwiTGVjdHVyZU1hcHBlciIsIm1hcHBpbmciLCJjb2xsZWN0IiwidW5kZWZpbmVkIiwibGVjdHVyZXMiLCJBY3Rlc0RvY3VtZW50YXRpb24iLCJzYW5pdHlDaGVja3MiLCJ2ZXJib3NlIiwibGVjdHVyZSIsIkNNUCIsIkNDIiwiUFJPTSIsIkFOMjEiLCJBTkxVTkkiLCJSw6lzb2x1dGlvbiIsIkFOMjAiLCJFVSIsIkltbXVuaXTDqSIsInByb2NlZHVyZXMiLCJjb2RlMnBhdHRlcm4iLCJ3YWxrRmlsZXMiLCJkYXRhIiwiYWN0aW9uIiwiZmlsZSIsImRvc3NpZXIiLCJwcm9jZWR1cmUiLCJyZW1hcFByb2NlZHVyZSIsInByb2NlZHVyZVBhcmxlbWVudGFpcmUiLCJhY3Rlc0xlZ2lzbGF0aWZzIiwiY29sbGVjdEZpbGVzIiwiX2FjdGVzIiwiX2MycCIsIl9wYXJlbnQiLCJwcm9jZXNzRmlsZXMiLCJhY3RlcyIsImMycCIsInBhcmVudCIsIm1lcmdlIiwidmFsaWRhdGUiLCJyZW1hcEFjdGVzIiwicmVzdWx0cyIsImxlY3R1cmVNYXBwZXIiLCJwdXNoIiwiY29sbGVjdEFjdGVzIiwibWVyZ2VfcHJvY2VkdXJlcyIsIk1hcCIsInJlbWFwcGVkUHJvY2VkdXJlcyIsImdldCIsIm9yZGVyZWRDb2RlcyIsIm9yZGVyZWQiLCJ4IiwidmFsaWRhdGVDaHJvbm9sb2d5Iiwic2VxdWVuY2UiLCJtZXJnZUFjdGUiLCJzaG9ydENvZGUiLCJ4c2lUeXBlIiwibCIsInZhbGlkYXRlTGV2ZWwiLCJwYXRoIiwia2V5IiwidmFsdWUiLCJlbnRyaWVzIiwiY29uY2F0IiwicHJpbnRFbnRyeSIsImVudHJ5IiwidGl0bGUiLCJ1bmRlcmxpbmUiLCJsZW5ndGgiLCJhZGRBbmNob3JzIiwiYW5jaG9yc1ByaW50ZWQiLCJhbmNob3JzIiwicmVuYW1lQ01QIiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwicHJpbnRMZXZlbCIsImtleXMiLCJzdWJzdHJpbmciLCJwcmludENvZGVzIiwicHJpbnRBbmNob3JzSW5kZXgiLCJnZXRBZ2dyZWdhdGVkIiwicmVtYXBwZWQiLCJwcmludCIsImFnZ3JlZ2F0ZWQiLCJtYWluIiwiZG9jIiwicHJvY2VzcyIsImV4aXQiXSwibWFwcGluZ3MiOiI7O0FB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QXlCLGtDQUF6QixDQUFKLEVBQ0VZLE9BQU8sQ0FBQ0MsSUFBUixDQUFhSCxJQUFJLENBQUNFLE9BQU8sQ0FBQ3JKLElBQVQsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgY29tbWFuZExpbmVVc2FnZSBmcm9tIFwiY29tbWFuZC1saW5lLXVzYWdlXCJcbmltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgeyBsb2FkLCBnZXRGaWxlcyB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwicGF0aG5hbWUgdG8gYSBKU09OIGZpbGUgb3IgYSBnbG9iIHBhdHRlcm4gdG8gSlNPTiBmaWxlc1wiLFxuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgbmFtZTogXCJkYXRhXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcIm5vLXNhbml0eS1jaGVja3NcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZXNjcmlwdGlvbjogXCJEbyBub3QgcGVyZm9ybSBzYW5pdHkgY2hlY2tzLlwiLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVzY3JpcHRpb246IFwiaW5jcmVhc2UgdmVyYm9zaXR5XCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcImhlbHBcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlByaW50IHRoaXMgdXNhZ2UgZ3VpZGUuXCIsXG4gICAgfSxcbiAgXVxuICBjb25zdCBzZWN0aW9ucyA9IFtcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiQWlkZSDDoCBsYSBkb2N1bWVudGF0aW9uIGR1IGRvc3NpZXIgbMOpZ2lzbGF0aWZcIixcbiAgICAgIGNvbnRlbnQ6IFwiR8OpbsOocmUgdW5lIGhpw6lyYXJjaGllIGRlcyBhY3RlcyBsw6lnaXNsYXRpZnNcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG4gIGlmICghKFwiaGVscFwiIGluIG9wdGlvbnMpICYmICEoXCJkYXRhXCIgaW4gb3B0aW9ucykpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiLS1kYXRhIGlzIG1hbmRhdG9yeVwiKVxuICAgIG9wdGlvbnMuaGVscCA9IHRydWVcbiAgfVxuICBpZiAoXCJoZWxwXCIgaW4gb3B0aW9ucykge1xuICAgIGNvbnN0IHVzYWdlID0gY29tbWFuZExpbmVVc2FnZShzZWN0aW9ucylcbiAgICBjb25zb2xlLndhcm4odXNhZ2UpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiBlcVNldChhczogU2V0PHN0cmluZz4sIGJzOiBTZXQ8c3RyaW5nPik6IGJvb2xlYW4ge1xuICBpZiAoYXMuc2l6ZSAhPT0gYnMuc2l6ZSkgcmV0dXJuIGZhbHNlXG4gIGZvciAodmFyIGEgb2YgYXMpIGlmICghYnMuaGFzKGEpKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHRydWVcbn1cblxuY2xhc3MgQ29kZTJQYXR0ZXJuIHtcbiAgX3BhdHRlcm5fOiBhbnlcbiAgX21hdGNoX2NvdW50XzogbnVtYmVyXG4gIGNvbnN0cnVjdG9yKHBhdHRlcm46IGFueSwgY2hpbGRyZW46IGFueSkge1xuICAgIHRoaXMuX3BhdHRlcm5fID0gcGF0dGVyblxuICAgIHRoaXMuX21hdGNoX2NvdW50XyA9IDBcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGNoaWxkcmVuKVxuICB9XG59XG5cbmNsYXNzIENvZGUyUGF0dGVybkNvbUZvbmQgZXh0ZW5kcyBDb2RlMlBhdHRlcm4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIl4vU0FJU0lFLygvTk9NSU4vKSooL1JFVU5JT04vKSooL1JBUFBPUlQvKSokXCIsIHt9KVxuICB9XG59XG5cbmNsYXNzIExlY3R1cmVNYXBwaW5nIHtcbiAgbGliZWxsZTogYW55ID0ge31cbiAgY29kZXM6IGFueSA9IG5ldyBTZXQoKVxuXG4gIHN0YXRpYyBjb2Rlc19sZWN0dXJlOiBzdHJpbmdbXSA9IFtcbiAgICBcIkFOMVwiLFxuICAgIFwiU04xXCIsXG4gICAgXCJBTk5MRUNcIixcbiAgICBcIlNOTkxFQ1wiLFxuICAgIFwiQU5MREVGXCIsXG4gICAgXCJBTjJcIixcbiAgICBcIlNOMlwiLFxuICAgIFwiU04zXCIsXG4gIF1cbiAgc3RhdGljIGNvZGVzX2xlY3R1cmVfcmVnZXhwOiBhbnkgPSBuZXcgUmVnRXhwKFxuICAgIFwiXig/OlwiICsgTGVjdHVyZU1hcHBpbmcuY29kZXNfbGVjdHVyZS5qb2luKFwifFwiKSArIFwiKSgtLiopPyRcIixcbiAgKVxuXG4gIHN0YXRpYyBpc0xlY3R1cmUoYWN0ZTogYW55KSB7XG4gICAgcmV0dXJuIGFjdGUuY29kZUFjdGUubWF0Y2goTGVjdHVyZU1hcHBpbmcuY29kZXNfbGVjdHVyZV9yZWdleHApXG4gIH1cblxuICBzdGF0aWMgZ2V0VHlwZShhY3RlOiBhbnkpIHtcbiAgICBpZiAoYWN0ZS5jb2RlQWN0ZS5tYXRjaCgvXkFOLykpIHJldHVybiBcIkFOXCJcbiAgICBlbHNlIGlmIChhY3RlLmNvZGVBY3RlLm1hdGNoKC9eU04vKSkgcmV0dXJuIFwiU05cIlxuICAgIGVsc2UgdGhyb3cgRXJyb3IoYCR7YWN0ZS5jb2RlQWN0ZX0gZG9lcyBub3Qgc3RhcnQgd2l0aCBBTiBvciBTTmApXG4gIH1cblxuICBzdGF0aWMgbWFwKGNvZGVBY3RlOiBhbnkpIHtcbiAgICByZXR1cm4gY29kZUFjdGUucmVwbGFjZShMZWN0dXJlTWFwcGluZy5jb2Rlc19sZWN0dXJlX3JlZ2V4cCwgYGxlY3R1cmUkMWApXG4gIH1cblxuICBzdGF0aWMgZ2V0Q29kZUFjdGUoYWN0ZTogYW55KSB7XG4gICAgaWYgKCFMZWN0dXJlTWFwcGluZy5pc0xlY3R1cmUoYWN0ZSkpIHJldHVyblxuXG4gICAgcmV0dXJuIExlY3R1cmVNYXBwaW5nLm1hcChhY3RlLmNvZGVBY3RlKVxuICB9XG5cbiAgYWRkKGFjdGU6IGFueSkge1xuICAgIHRoaXMuY29kZXMuYWRkKGFjdGUuY29kZUFjdGUpXG5cbiAgICBjb25zdCB0eXBlID0gTGVjdHVyZU1hcHBpbmcuZ2V0VHlwZShhY3RlKVxuXG4gICAgaWYgKCEoYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWUgaW4gdGhpcy5saWJlbGxlKSlcbiAgICAgIHRoaXMubGliZWxsZVthY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZV0gPSBuZXcgU2V0KClcbiAgICB0aGlzLmxpYmVsbGVbYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVdLmFkZCh0eXBlKVxuICB9XG5cbiAgcmVtYXAoYWN0ZTogYW55LCBjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgYWN0ZS5jb2RlQWN0ZSA9IGNvZGVBY3RlXG5cbiAgICBsZXQgdHlwZXMgPSB0aGlzLmxpYmVsbGVbYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVdXG4gICAgaWYgKCEodHlwZXMuaGFzKFwiU05cIikgJiYgdHlwZXMuaGFzKFwiQU5cIikpKSB7XG4gICAgICBpZiAodHlwZXMuaGFzKFwiU05cIikpIGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlICs9IFwiIChTw6luYXQpXCJcbiAgICAgIGVsc2UgaWYgKHR5cGVzLmhhcyhcIkFOXCIpKVxuICAgICAgICBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZSArPSBcIiAoQXNzZW1ibMOpZSBOYXRpb25hbGUpXCJcbiAgICB9XG4gIH1cblxuICBtZXJnZUNvZGVzKGNvZGVzOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IGMgb2YgQXJyYXkuZnJvbSh0aGlzLmNvZGVzKSkgY29kZXMuYWRkKGMpXG4gIH1cblxuICBwcmludEFuY2hvcnMoKSB7XG4gICAgZm9yIChjb25zdCBjb2RlIG9mIEFycmF5LmZyb20odGhpcy5jb2RlcykpIGNvbnNvbGUubG9nKGAuLiBfJHtjb2RlfTpgKVxuICB9XG5cbiAgZ2V0Q29kZXMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5jb2Rlcykuam9pbihcIixcIilcbiAgfVxufVxuXG5jbGFzcyBMZWN0dXJlTWFwcGVyIHtcbiAgbWFwcGluZzogYW55ID0ge31cblxuICBoYXMoY29kZUFjdGU6IHN0cmluZykge1xuICAgIHJldHVybiBjb2RlQWN0ZSBpbiB0aGlzLm1hcHBpbmdcbiAgfVxuXG4gIGNvbGxlY3QoYWN0ZTogYW55KSB7XG4gICAgY29uc3QgY29kZUFjdGUgPSBMZWN0dXJlTWFwcGluZy5nZXRDb2RlQWN0ZShhY3RlKVxuICAgIGlmIChjb2RlQWN0ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBsZWN0dXJlcyA9IHRoaXMubWFwcGluZ1xuICAgICAgaWYgKCEoY29kZUFjdGUgaW4gbGVjdHVyZXMpKSBsZWN0dXJlc1tjb2RlQWN0ZV0gPSBuZXcgTGVjdHVyZU1hcHBpbmcoKVxuICAgICAgbGVjdHVyZXNbY29kZUFjdGVdLmFkZChhY3RlKVxuICAgIH1cbiAgfVxuXG4gIHJlbWFwKGFjdGU6IGFueSkge1xuICAgIGNvbnN0IGNvZGVBY3RlID0gTGVjdHVyZU1hcHBpbmcuZ2V0Q29kZUFjdGUoYWN0ZSlcbiAgICBpZiAoY29kZUFjdGUgIT0gdW5kZWZpbmVkKSB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLnJlbWFwKGFjdGUsIGNvZGVBY3RlKVxuICB9XG5cbiAgbWVyZ2VDb2Rlcyhjb2RlczogYW55LCBjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5tZXJnZUNvZGVzKGNvZGVzKVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLnByaW50QW5jaG9ycygpXG4gIH1cblxuICBnZXRDb2Rlcyhjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0uZ2V0Q29kZXMoKVxuICB9XG59XG5cbmNsYXNzIEFjdGVzRG9jdW1lbnRhdGlvbiB7XG4gIHZlcmJvc2U6IGJvb2xlYW5cbiAgc2FuaXR5Q2hlY2tzOiBib29sZWFuXG4gIGxlY3R1cmVNYXBwZXI6IGFueSA9IG5ldyBMZWN0dXJlTWFwcGVyKClcbiAgcmVtYXBwZWRQcm9jZWR1cmVzOiBhbnkgPSB7fVxuICBhbmNob3JzUHJpbnRlZDogYW55ID0ge31cbiAgYW5jaG9yczogYW55ID0gbmV3IFNldCgpXG4gIGNvZGVzOiBhbnkgPSB7fVxuICBwcm9jZWR1cmVzOiBhbnkgPSBudWxsXG4gIGNvZGUycGF0dGVybjogYW55ID0gbmV3IENvZGUyUGF0dGVybihudWxsLCB7XG4gICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeKCgoL2xlY3R1cmUvKSspfCgoL2xlY3R1cmUvKSsvQ01QLygvbGVjdHVyZS8pKikpKC9DQy8pPygvUFJPTS8pPygvQU4tQVBQTEkvKT8kXCIsXG4gICAgICB7XG4gICAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9ERVBPVC8pPygvRFBUTEVUVFJFQ1QvKT8oL0VUSS8pPygvQVZDRS8pPygvREdWVC8pPygvQUNJTi8pPygvTU9USU9OLykqKC9QUk9DQUNDLyk/KC9DT00vKT8oKC9ERUJBVFMvKSspPygvUlRSSU5JLyk/JFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwibGVjdHVyZS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0ZPTkQvfC9BVklTLykrJFwiLCB7XG4gICAgICAgICAgICAgIFwibGVjdHVyZS1DT00tRk9ORFwiOiBuZXcgQ29kZTJQYXR0ZXJuQ29tRm9uZCgpLFxuICAgICAgICAgICAgICBcImxlY3R1cmUtQ09NLUFWSVNcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXCJsZWN0dXJlLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgICBcIl4oL1NFQU5DRS8pKigoL01PVElPTi8pPygvTU9USU9OLVZPVEUvKSspPygvREVDLyk/JFwiLFxuICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICAgQ01QOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvREVQT1QvfC9TQUlTSUUvKXsxLDJ9KC9DT00vKT8oL0RFQy8pPygvREVCQVRTLUFOLy9ERUJBVFMtU04vKT9cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIkNNUC1DT01cIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgICAgXCJeKC9OT01JTi8pPygvUkFQUE9SVC1BTi98L1JBUFBPUlQtU04vKXsyfSRcIixcbiAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgXCJDTVAtREVCQVRTLUFOXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL0RFQy8pPyRcIiwge30pLFxuICAgICAgICAgICAgXCJDTVAtREVCQVRTLVNOXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL0RFQy8pPyRcIiwge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICAgIENDOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0FJU0lFLykrKC9DT05DTFVTSU9OLyk/JFwiLCB7fSksXG4gICAgICAgIFBST006IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9QVUIvKT8kXCIsIHt9KSxcbiAgICAgICAgXCJBTi1BUFBMSVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUkFQUE9SVC8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiQWxsb2N1dGlvbiBkdSBQcsOpc2lkZW50IGRlIGwnQXNzZW1ibMOpZSBuYXRpb25hbGVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXi9BTjIxLyRcIixcbiAgICAgIHtcbiAgICAgICAgQU4yMTogbmV3IENvZGUyUGF0dGVybihcIl4oL0FQQU4vKT8kXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIlLDqXNvbHV0aW9uIEFydGljbGUgMzQtMVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU5MVU5JLyk/JFwiLCB7XG4gICAgICBBTkxVTkk6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvREVCQVRTLyk/KC9SVFJJTkkvKT8kXCIsIHtcbiAgICAgICAgXCJBTkxVTkktREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSsoL0RFQy8pPyRcIiwge30pLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgUsOpc29sdXRpb246IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTkxVTkkvKT8oL0NDLyk/JFwiLCB7XG4gICAgICBBTkxVTkk6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvQ09NLyk/KC9ERUJBVFMvfC9SVFJJTkkvKT8kXCIsIHtcbiAgICAgICAgXCJBTkxVTkktQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9DQUUvKT8oL0ZPTkQvKT8kXCIsIHtcbiAgICAgICAgICBcIkFOTFVOSS1DT00tRk9ORFwiOiBuZXcgQ29kZTJQYXR0ZXJuQ29tRm9uZCgpLFxuICAgICAgICAgIFwiQU5MVU5JLUNPTS1DQUVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pPygvUkVVTklPTi8pPygvUkFQUE9SVC8pPygvREVDLyk/JFwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICAgIFwiQU5MVU5JLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgICAgQ0M6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TQUlTSUUvKT8oL0NPTkNMVVNJT04vKT8kXCIsIHt9KSxcbiAgICB9KSxcbiAgICBcIlJhcHBvcnQgZCdpbmZvcm1hdGlvbiBzYW5zIG1pc3Npb25cIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXigvQU4yMC8pPygvRVUvKT8kXCIsXG4gICAgICB7XG4gICAgICAgIEFOMjA6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9SQVBQT1JULyk/JFwiLCB7fSksXG4gICAgICAgIEVVOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVDLykrJFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJNaXNzaW9uIGQnaW5mb3JtYXRpb25cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOMjAvKT8kXCIsIHtcbiAgICAgIEFOMjA6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9NSVNJTkYvKT8kXCIsIHtcbiAgICAgICAgXCJBTjIwLU1JU0lORlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvQ1JFQS8pPygvTk9NSU4vKT8oL1JBUFBPUlQvKT8kXCIsXG4gICAgICAgICAge30sXG4gICAgICAgICksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBcIkNvbW1pc3Npb24gZCdlbnF1w6p0ZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU4yMC8pPyRcIiwge1xuICAgICAgQU4yMDogbmV3IENvZGUyUGF0dGVybihcIl4oL0NPTUVOUS8pPyRcIiwge1xuICAgICAgICBcIkFOMjAtQ09NRU5RXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9DUkVBLyk/KC9OT01JTi8pPygvUkFQUE9SVC8pPyRcIixcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFwiRW5nYWdlbWVudCBkZSBsYSByZXNwb25zYWJpbGl0w6kgZ291dmVybmVtZW50YWxlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4vQU4yMS8kXCIsXG4gICAgICB7XG4gICAgICAgIEFOMjE6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKCgoL01PVElPTi8pKi9ERUJBVFMvKXwoL0RHVlQvKSl7MSwyfSRcIiwge1xuICAgICAgICAgIFwiQU4yMS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvTU9USU9OLVZPVEUvKSokXCIsIHt9KSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJNb3Rpb24gcsOpZsOpcmVuZGFpcmVcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL2xlY3R1cmUvKSskXCIsIHtcbiAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvQ09NLyk/KC9ERUJBVFMvKT8kXCIsIHtcbiAgICAgICAgXCJsZWN0dXJlLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvRk9ORC8pPyRcIiwge1xuICAgICAgICAgIFwibGVjdHVyZS1DT00tRk9ORFwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgXCJeKC9TQUlTSUUvKT8oL05PTUlOLykqKC9SQVBQT1JULykqJFwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICAgIFwibGVjdHVyZS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFQy8pPyRcIiwge30pLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgSW1tdW5pdMOpOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU5MVU5JLykrJFwiLCB7XG4gICAgICBBTkxVTkk6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvQ09NLyk/KC9ERUJBVFMvKT8oL1JUUklOSS8pPyRcIiwge1xuICAgICAgICBcIkFOTFVOSS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0ZPTkQvKT8kXCIsIHtcbiAgICAgICAgICBcIkFOTFVOSS1DT00tRk9ORFwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgXCJeKC9TQUlTSUUvKT8oL05PTUlOLykqKC9SQVBQT1JULykqJFwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICAgIFwiQU5MVU5JLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLyk/KC9ERUMvKSRcIiwge30pLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgXCJSZXNwb25zYWJpbGl0w6kgcMOpbmFsZSBkdSBwcsOpc2lkZW50IGRlIGxhIHLDqXB1YmxpcXVlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4vbGVjdHVyZS8kXCIsXG4gICAgICB7XG4gICAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvUkVDQlVSRUFVLyk/JFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJQcm9wb3NpdGlvbiBkZSBsb2kgcHLDqXNlbnTDqWUgZW4gYXBwbGljYXRpb24gZGUgbCdhcnRpY2xlIDExIGRlIGxhIENvbnN0aXR1dGlvblwiOlxuICAgICAgbmV3IENvZGUyUGF0dGVybihcIl4vbGVjdHVyZS8kXCIsIHtcbiAgICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgfSlcblxuICBjb25zdHJ1Y3RvcihzYW5pdHlDaGVja3M6IGJvb2xlYW4sIHZlcmJvc2U6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHRoaXMudmVyYm9zZSA9IHZlcmJvc2VcbiAgICB0aGlzLnNhbml0eUNoZWNrcyA9IHNhbml0eUNoZWNrc1xuICAgIHRoaXMucHJvY2VkdXJlcyA9IHt9XG4gICAgdGhpcy5jb2RlMnBhdHRlcm4uX21hdGNoX2NvdW50XysrXG4gIH1cblxuICB3YWxrRmlsZXMoZGF0YTogc3RyaW5nW10sIGFjdGlvbjogYW55KSB7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGdldEZpbGVzKGRhdGEpKSB7XG4gICAgICBjb25zdCBkb3NzaWVyID0gbG9hZChmaWxlKVxuICAgICAgbGV0IHByb2NlZHVyZTogc3RyaW5nID0gdGhpcy5yZW1hcFByb2NlZHVyZShcbiAgICAgICAgZG9zc2llci5wcm9jZWR1cmVQYXJsZW1lbnRhaXJlLmxpYmVsbGUsXG4gICAgICApXG4gICAgICBpZiAoIShwcm9jZWR1cmUgaW4gdGhpcy5wcm9jZWR1cmVzKSkgdGhpcy5wcm9jZWR1cmVzW3Byb2NlZHVyZV0gPSB7fVxuICAgICAgYWN0aW9uKFxuICAgICAgICB0aGlzLnByb2NlZHVyZXNbcHJvY2VkdXJlXSxcbiAgICAgICAgZG9zc2llci5hY3Rlc0xlZ2lzbGF0aWZzLFxuICAgICAgICB0aGlzLmNvZGUycGF0dGVybltwcm9jZWR1cmVdLFxuICAgICAgICBudWxsLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGNvbGxlY3RGaWxlcyhkYXRhOiBzdHJpbmdbXSkge1xuICAgIHRoaXMud2Fsa0ZpbGVzKFxuICAgICAgZGF0YSxcbiAgICAgIChfYWN0ZXM6IGFueSwgYWN0ZXNMZWdpc2xhdGlmczogYW55LCBfYzJwOiBhbnksIF9wYXJlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmNvbGxlY3QoYWN0ZXNMZWdpc2xhdGlmcylcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgcHJvY2Vzc0ZpbGVzKGRhdGE6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy53YWxrRmlsZXMoXG4gICAgICBkYXRhLFxuICAgICAgKGFjdGVzOiBhbnksIGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMubWVyZ2UoYWN0ZXMsIGFjdGVzTGVnaXNsYXRpZnMsIGMycCwgcGFyZW50KVxuICAgICAgfSxcbiAgICApXG4gICAgaWYgKHRoaXMuc2FuaXR5Q2hlY2tzKSB0aGlzLnZhbGlkYXRlKClcbiAgfVxuXG4gIHJlbWFwQWN0ZXMoYWN0ZXM6IGFueSk6IGFueSB7XG4gICAgbGV0IHJlc3VsdHMgPSBbXVxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBhY3Rlcykge1xuICAgICAgdGhpcy5sZWN0dXJlTWFwcGVyLnJlbWFwKGFjdGUpXG5cbiAgICAgIC8vIENDLVNBSVNJRS0gc3VmZml4IGRvZXMgbm90IGltcGx5IGEgaGllcmFyY2h5XG4gICAgICBhY3RlLmNvZGVBY3RlID0gYWN0ZS5jb2RlQWN0ZS5yZXBsYWNlKC9eQ0MtU0FJU0lFLiovLCBcIkNDLVNBSVNJRVwiKVxuXG4gICAgICByZXN1bHRzLnB1c2goYWN0ZSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHNcbiAgfVxuXG4gIGNvbGxlY3RBY3RlcyhhY3RlczogYW55KTogYW55IHtcbiAgICBsZXQgcmVzdWx0cyA9IFtdXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGFjdGVzKSB7XG4gICAgICB0aGlzLmxlY3R1cmVNYXBwZXIuY29sbGVjdChhY3RlKVxuXG4gICAgICByZXN1bHRzLnB1c2goYWN0ZSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHNcbiAgfVxuXG4gIHJlbWFwUHJvY2VkdXJlKHByb2NlZHVyZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXJnZV9wcm9jZWR1cmVzOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcChbXG4gICAgICBbXCJQcm9wb3NpdGlvbiBkZSBsb2kgb3JkaW5haXJlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIG9yZGluYWlyZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1xuICAgICAgICBcIlByb2pldCBkZSByYXRpZmljYXRpb24gZGVzIHRyYWl0w6lzIGV0IGNvbnZlbnRpb25zXCIsXG4gICAgICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIixcbiAgICAgIF0sXG4gICAgICBbXCJQcm9qZXQgb3UgcHJvcG9zaXRpb24gZGUgbG9pIG9yZ2FuaXF1ZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1xuICAgICAgICBcIlByb2pldCBvdSBwcm9wb3NpdGlvbiBkZSBsb2kgY29uc3RpdHV0aW9ubmVsbGVcIixcbiAgICAgICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiLFxuICAgICAgXSxcbiAgICAgIFtcIlByb2pldCBkZSBsb2kgZGUgZmluYW5jZXMgZGUgbCdhbm7DqWVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcIlByb2pldCBkZSBsb2kgZGUgZmluYW5jZXMgcmVjdGlmaWNhdGl2ZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1xuICAgICAgICBcIlByb2pldCBkZSBsb2kgZGUgZmluYW5jZW1lbnQgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCIsXG4gICAgICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIixcbiAgICAgIF0sXG4gICAgXSlcbiAgICBpZiAobWVyZ2VfcHJvY2VkdXJlcy5oYXMocHJvY2VkdXJlKSkge1xuICAgICAgdGhpcy5yZW1hcHBlZFByb2NlZHVyZXNbcHJvY2VkdXJlXSA9IG51bGxcbiAgICAgIHJldHVybiBtZXJnZV9wcm9jZWR1cmVzLmdldChwcm9jZWR1cmUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwcm9jZWR1cmVcbiAgICB9XG4gIH1cblxuICAvLyByZXR1cm4gdGhlIGNvZGVBY3RlcyBpbiB0aGUgc2FtZSBvcmRlciB0aGV5IGFwcGVhciBpbiB0aGUgcmVnZXhwXG4gIG9yZGVyZWRDb2Rlcyhjb2RlczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpOiBTZXQ8c3RyaW5nPiB7XG4gICAgY29kZXMgPSBuZXcgU2V0KGNvZGVzKVxuICAgIGlmICghdGhpcy5zYW5pdHlDaGVja3MpIHJldHVybiBjb2Rlc1xuICAgIGxldCBvcmRlcmVkID0gYzJwW1wiX3BhdHRlcm5fXCJdLm1hdGNoKG5ldyBSZWdFeHAoXCIvLio/L1wiLCBcImdcIikpXG4gICAgb3JkZXJlZCA9IG9yZGVyZWQubWFwKCh4OiBzdHJpbmcpID0+IHgucmVwbGFjZShuZXcgUmVnRXhwKFwiLyguKikvXCIpLCBcIiQxXCIpKVxuICAgIGlmIChwYXJlbnQgIT0gbnVsbCkgb3JkZXJlZCA9IG9yZGVyZWQubWFwKCh4OiBzdHJpbmcpID0+IGAke3BhcmVudH0tJHt4fWApXG4gICAgb3JkZXJlZCA9IG5ldyBTZXQob3JkZXJlZClcbiAgICBhc3NlcnQoZXFTZXQob3JkZXJlZCwgY29kZXMpLCBgJHtbLi4ub3JkZXJlZF19ICE9ICR7Wy4uLmNvZGVzXX1gKVxuICAgIHJldHVybiBvcmRlcmVkXG4gIH1cblxuICB2YWxpZGF0ZUNocm9ub2xvZ3koYWN0ZXNMZWdpc2xhdGlmczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwYXR0ZXJuID0gYzJwW1wiX3BhdHRlcm5fXCJdXG4gICAgY29uc3Qgc2VxdWVuY2UgPSBhY3Rlc0xlZ2lzbGF0aWZzXG4gICAgICAubWFwKCh4OiBhbnkpID0+IGAvJHt4LmNvZGVBY3RlfS9gLnJlcGxhY2UoYC8ke3BhcmVudH0tYCwgXCIvXCIpKVxuICAgICAgLmpvaW4oXCJcIilcbiAgICBhc3NlcnQoXG4gICAgICBzZXF1ZW5jZS5tYXRjaChuZXcgUmVnRXhwKHBhdHRlcm4pKSxcbiAgICAgIGAke3BhdHRlcm59IGRvZXMgbm90IG1hdGNoICR7c2VxdWVuY2V9YCxcbiAgICApXG4gICAgYzJwLl9tYXRjaF9jb3VudF8rK1xuICB9XG5cbiAgbWVyZ2VBY3RlKGFjdGVzOiBhbnksIGFjdGU6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGNvZGU6IHN0cmluZyA9IGFjdGUuY29kZUFjdGVcbiAgICBsZXQgc2hvcnRDb2RlOiBzdHJpbmcgPSBjb2RlLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7cGFyZW50fS1gKSwgXCJcIilcbiAgICBzaG9ydENvZGUgPSBzaG9ydENvZGUucmVwbGFjZSgvLShBTnxTTikkLywgXCJcIilcbiAgICB0aGlzLmNvZGVzW3Nob3J0Q29kZV0gPSBudWxsXG4gICAgbGV0IG5hbWU6IHN0cmluZyA9IGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXG4gICAgaWYgKCEoY29kZSBpbiBhY3RlcykpIHtcbiAgICAgIGFjdGVzW2NvZGVdID0ge1xuICAgICAgICB0eXBlOiBhY3RlLnhzaVR5cGUsXG4gICAgICAgIG5hbWU6IG5ldyBTZXQoW25hbWVdKSxcbiAgICAgICAgc2hvcnRDb2RlOiBzaG9ydENvZGUsXG4gICAgICAgIGFjdGVzOiB7fSxcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYWN0ZXNbY29kZV0ubmFtZS5hZGQobmFtZSlcbiAgICB9XG4gICAgaWYgKFwiYWN0ZXNMZWdpc2xhdGlmc1wiIGluIGFjdGUpXG4gICAgICB0aGlzLm1lcmdlKGFjdGVzW2NvZGVdLmFjdGVzLCBhY3RlLmFjdGVzTGVnaXNsYXRpZnMsIGMycFtjb2RlXSwgY29kZSlcbiAgfVxuXG4gIG1lcmdlKGFjdGVzOiBhbnksIGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgbCA9IHRoaXMucmVtYXBBY3RlcyhhY3Rlc0xlZ2lzbGF0aWZzKVxuICAgIHRoaXMudmFsaWRhdGVDaHJvbm9sb2d5KGwsIGMycCwgcGFyZW50KVxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBsKSB0aGlzLm1lcmdlQWN0ZShhY3RlcywgYWN0ZSwgYzJwLCBwYXJlbnQpXG4gIH1cblxuICBjb2xsZWN0KGFjdGVzTGVnaXNsYXRpZnM6IGFueSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgYWN0ZSBvZiB0aGlzLmNvbGxlY3RBY3RlcyhhY3Rlc0xlZ2lzbGF0aWZzKSlcbiAgICAgIGlmIChcImFjdGVzTGVnaXNsYXRpZnNcIiBpbiBhY3RlKSB0aGlzLmNvbGxlY3QoYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzKVxuICB9XG5cbiAgdmFsaWRhdGVMZXZlbChjMnA6IGFueSwgcGF0aDogYW55KSB7XG4gICAgYXNzZXJ0KGMycC5fbWF0Y2hfY291bnRfID4gMCwgYCR7cGF0aH0gaXMgbmV2ZXIgdXNlZGApXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYzJwKSBhcyBbc3RyaW5nLCBhbnldW10pIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgPT0gXCJDb2RlMlBhdHRlcm5cIilcbiAgICAgICAgdGhpcy52YWxpZGF0ZUxldmVsKHZhbHVlLCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhpcy52YWxpZGF0ZUxldmVsKHRoaXMuY29kZTJwYXR0ZXJuLCBbXSlcbiAgfVxuXG4gIHByaW50RW50cnkoc2VjdGlvbnM6IHN0cmluZywgZW50cnk6IHN0cmluZywgY29kZXM6IHN0cmluZykge1xuICAgIGNvbnN0IHRpdGxlID0gYFxcYCR7ZW50cnl9XFxgX19gXG4gICAgY29uc29sZS5sb2codGl0bGUpXG4gICAgY29uc3QgdW5kZXJsaW5lID0gbmV3IEFycmF5KHRpdGxlLmxlbmd0aCArIDEpLmpvaW4oc2VjdGlvbnNbMF0pXG4gICAgY29uc29sZS5sb2codW5kZXJsaW5lKVxuICAgIGNvbnNvbGUubG9nKGNvZGVzKVxuICB9XG5cbiAgYWRkQW5jaG9ycyhrZXk6IHN0cmluZykge1xuICAgIGlmIChrZXkgaW4gdGhpcy5hbmNob3JzUHJpbnRlZCkgcmV0dXJuXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSlcbiAgICAgIHRoaXMubGVjdHVyZU1hcHBlci5tZXJnZUNvZGVzKHRoaXMuYW5jaG9ycywga2V5KVxuICAgIGVsc2UgdGhpcy5hbmNob3JzLmFkZChrZXkpXG4gIH1cblxuICBwcmludEFuY2hvcnMoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5IGluIHRoaXMuYW5jaG9yc1ByaW50ZWQpIHJldHVyblxuICAgIHRoaXMuYW5jaG9yc1ByaW50ZWRba2V5XSA9IG51bGxcbiAgICBpZiAodGhpcy5sZWN0dXJlTWFwcGVyLmhhcyhrZXkpKSB0aGlzLmxlY3R1cmVNYXBwZXIucHJpbnRBbmNob3JzKGtleSlcbiAgICBlbHNlIGNvbnNvbGUubG9nKGAuLiBfJHtrZXl9OmApXG4gIH1cblxuICBnZXRDb2RlcyhrZXk6IHN0cmluZywgc2hvcnRDb2RlOiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5IGluIHRoaXMuYW5jaG9yc1ByaW50ZWQpIHJldHVybiBgY2YgXFxcXCoke3Nob3J0Q29kZX1cXFxcKmBcbiAgICBpZiAodGhpcy5sZWN0dXJlTWFwcGVyLmhhcyhrZXkpKSByZXR1cm4gdGhpcy5sZWN0dXJlTWFwcGVyLmdldENvZGVzKGtleSlcbiAgICBlbHNlIHJldHVybiBrZXlcbiAgfVxuXG4gIHJlbmFtZUNNUChrZXk6IHN0cmluZywgbmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKGtleS5zdGFydHNXaXRoKFwiQ01QXCIpKSB7XG4gICAgICBpZiAoa2V5LmVuZHNXaXRoKFwiLVNOXCIpKSByZXR1cm4gYCR7bmFtZX0gKFPDqW5hdClgXG4gICAgICBlbHNlIGlmIChrZXkuZW5kc1dpdGgoXCItQU5cIikpIHJldHVybiBgJHtuYW1lfSAoQXNzZW1ibMOpZSBOYXRpb25hbGUpYFxuICAgICAgZWxzZSByZXR1cm4gbmFtZVxuICAgIH0gZWxzZSByZXR1cm4gbmFtZVxuICB9XG5cbiAgcHJpbnRMZXZlbChhY3RlczogYW55LCBzZWN0aW9uczogc3RyaW5nLCBjMnA6IGFueSwgcGFyZW50OiBhbnkpIHtcbiAgICBjb25zdCBrZXlzOiBTZXQ8c3RyaW5nPiA9IHRoaXMub3JkZXJlZENvZGVzKE9iamVjdC5rZXlzKGFjdGVzKSwgYzJwLCBwYXJlbnQpXG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgY29uc3QgdmFsdWUgPSBhY3Rlc1trZXldXG4gICAgICBsZXQgbmFtZSA9IEFycmF5LmZyb20odmFsdWUubmFtZSkuam9pbihcIiwgXCIpXG4gICAgICBuYW1lID0gdGhpcy5yZW5hbWVDTVAoa2V5LCBuYW1lKVxuICAgICAgY29uc3QgY29kZXMgPSB0aGlzLmdldENvZGVzKGtleSwgdmFsdWUuc2hvcnRDb2RlKVxuICAgICAgdGhpcy5hZGRBbmNob3JzKGtleSlcbiAgICAgIHRoaXMucHJpbnRBbmNob3JzKGtleSlcbiAgICAgIGNvbnNvbGUubG9nKFwiXCIpXG4gICAgICB0aGlzLnByaW50RW50cnkoc2VjdGlvbnMsIGAke25hbWV9IDwke3ZhbHVlLnNob3J0Q29kZX1UT0NfPmAsIGNvZGVzKVxuICAgICAgY29uc29sZS5sb2coXCJcIilcbiAgICAgIGlmIChPYmplY3Qua2V5cyh2YWx1ZS5hY3RlcykubGVuZ3RoID4gMClcbiAgICAgICAgdGhpcy5wcmludExldmVsKHZhbHVlLmFjdGVzLCBzZWN0aW9ucy5zdWJzdHJpbmcoMSksIGMycFtrZXldLCBrZXkpXG4gICAgfVxuICB9XG5cbiAgcHJpbnRDb2RlcygpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmNvZGVzKSlcbiAgICAgIGNvbnNvbGUubG9nKGAuLiBfJHtrZXl9VE9DOiBodHRwOi8vYClcbiAgfVxuXG4gIHByaW50QW5jaG9yc0luZGV4KCkge1xuICAgIGZvciAoY29uc3QgY29kZSBvZiBBcnJheS5mcm9tKHRoaXMuYW5jaG9ycykpXG4gICAgICBjb25zb2xlLmxvZyhgKiA6cmVmOlxcYCR7Y29kZX0gPCR7Y29kZX0+XFxgYClcbiAgfVxuXG4gIGdldEFnZ3JlZ2F0ZWQocHJvY2VkdXJlOiBzdHJpbmcpIHtcbiAgICBpZiAocHJvY2VkdXJlID09IFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIikge1xuICAgICAgY29uc3QgcmVtYXBwZWQgPSBPYmplY3Qua2V5cyh0aGlzLnJlbWFwcGVkUHJvY2VkdXJlcykuam9pbihcIiwgXCIpXG4gICAgICByZXR1cm4gYCAoYWdyw6lnYXRpb24gZGUgJHtyZW1hcHBlZH0pYFxuICAgIH0gZWxzZSByZXR1cm4gXCJcIlxuICB9XG5cbiAgcHJpbnQoKTogdm9pZCB7XG4gICAgdGhpcy5hbmNob3JzUHJpbnRlZCA9IHt9XG4gICAgZm9yIChjb25zdCBba2V5LCBhY3Rlc10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5wcm9jZWR1cmVzKSBhcyBbXG4gICAgICBzdHJpbmcsXG4gICAgICBhbnksXG4gICAgXVtdKSB7XG4gICAgICBjb25zdCBjb2RlID0ga2V5LnJlcGxhY2UoLyArL2csIFwiX1wiKVxuICAgICAgdGhpcy5jb2Rlc1tjb2RlXSA9IG51bGxcbiAgICAgIGNvbnN0IGFnZ3JlZ2F0ZWQgPSB0aGlzLmdldEFnZ3JlZ2F0ZWQoa2V5KVxuICAgICAgY29uc3QgdGl0bGUgPSBgXFxgJHtrZXl9IDwke2NvZGV9VE9DXz5cXGBfXyR7YWdncmVnYXRlZH1gXG4gICAgICBjb25zb2xlLmxvZyh0aXRsZSlcbiAgICAgIGNvbnN0IHVuZGVybGluZSA9IG5ldyBBcnJheSh0aXRsZS5sZW5ndGggKyAxKS5qb2luKFwiPVwiKVxuICAgICAgY29uc29sZS5sb2codW5kZXJsaW5lKVxuICAgICAgdGhpcy5wcmludExldmVsKGFjdGVzLCBcIi1+LidcIiwgdGhpcy5jb2RlMnBhdHRlcm5ba2V5XSwgbnVsbClcbiAgICB9XG4gICAgdGhpcy5wcmludENvZGVzKClcbiAgICB0aGlzLnByaW50QW5jaG9yc0luZGV4KClcbiAgfVxufVxuXG5mdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgaWYgKG9wdGlvbnMgPT09IG51bGwpIHJldHVybiAxXG4gIGxldCBkb2MgPSBuZXcgQWN0ZXNEb2N1bWVudGF0aW9uKFxuICAgICFvcHRpb25zW1wibm8tc2FuaXR5LWNoZWNrc1wiXSxcbiAgICBvcHRpb25zLnZlcmJvc2UsXG4gIClcbiAgZG9jLmNvbGxlY3RGaWxlcyhvcHRpb25zLmRhdGEpXG4gIGRvYy5wcm9jZXNzRmlsZXMob3B0aW9ucy5kYXRhKVxuICBkb2MucHJpbnQoKVxuICByZXR1cm4gMFxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJkb2N1bWVudF9kb3NzaWVyc19sZWdpc2xhdGlmcy50c1wiKSlcbiAgcHJvY2Vzcy5leGl0KG1haW4ocHJvY2Vzcy5hcmd2KSlcbiJdfQ==
@@ -290,4 +290,4 @@ generateRawTypesFromAmendements(options.dataDir).then(function () {
290
290
  console.error(error);
291
291
  process.exit(1);
292
292
  });
293
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3Jhd190eXBlc19mcm9tX2FtZW5kZW1lbnRzLnRzIl0sIm5hbWVzIjpbIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiQm9vbGVhbiIsImRlZmF1bHRPcHRpb24iLCJTdHJpbmciLCJvcHRpb25zIiwiZ2VuZXJhdGVSYXdUeXBlc0Zyb21BbWVuZGVtZW50cyIsImRhdGFEaXIiLCJkYXRhc2V0cyIsImFtZW5kZW1lbnRzIiwiZGF0YXNldCIsInN0cnVjdHVyZSIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsIm9yaWdpbmFsSnNvbkRpciIsInBhdGgiLCJqb2luIiwiZmlsZW5hbWUiLCJzaWxlbnQiLCJjb25zb2xlIiwibG9nIiwiYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHNCeVVpZFRleHRMZWdpc2xhdGlmIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsImFtZW5kZW1lbnRGaWxlbmFtZSIsImxlbmd0aCIsImVuZHNXaXRoIiwidWlkVGV4dGVMZWdpc2xhdGlmIiwiYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMiLCJ1bmRlZmluZWQiLCJhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCIsInB1c2giLCJ1aWRzVGV4dGVzTGVnaXNsYXRpZnMiLCJPYmplY3QiLCJrZXlzIiwic29ydCIsImEiLCJiIiwibG9jYWxlQ29tcGFyZSIsInRleHRlc0xlZ2lzbGF0aWZzU2FtcGxlcyIsInZlcmJvc2UiLCJhbWVuZGVtZW50T3JpZ2luYWxKc29uIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsImFtZW5kZW1lbnRPcmlnaW5hbCIsIkpTT04iLCJwYXJzZSIsImFtZW5kZW1lbnQiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJyZWZUZXh0ZUxlZ2lzbGF0aWYiLCJzdHJpbmdpZnkiLCJqc29uSW5wdXQiLCJhZGRTb3VyY2UiLCJzYW1wbGVzIiwiaW5wdXREYXRhIiwiSW5wdXREYXRhIiwiYWRkSW5wdXQiLCJsYW5nIiwicmVuZGVyZXJPcHRpb25zIiwiYWNyb255bVN0eWxlIiwibGluZXMiLCJhbWVuZGVtZW50c1Jhd1R5cGVzRmlsZVBhdGgiLCJ3cml0ZUZpbGVTeW5jIiwidGhlbiIsInByb2Nlc3MiLCJleGl0IiwiZXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFNQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLGtCQUFrQixHQUFHLENBQ3pCO0FBQ0VDLEVBQUFBLEtBQUssRUFBRSxHQURUO0FBRUVDLEVBQUFBLElBQUksRUFBRSxvQkFGUjtBQUdFQyxFQUFBQSxJQUFJLEVBQUUsUUFIUjtBQUlFQyxFQUFBQSxJQUFJLEVBQUVDO0FBSlIsQ0FEeUIsRUFPekI7QUFDRUosRUFBQUEsS0FBSyxFQUFFLEdBRFQ7QUFFRUMsRUFBQUEsSUFBSSxFQUFFLGNBRlI7QUFHRUMsRUFBQUEsSUFBSSxFQUFFLFNBSFI7QUFJRUMsRUFBQUEsSUFBSSxFQUFFQztBQUpSLENBUHlCLEVBYXpCO0FBQ0VDLEVBQUFBLGFBQWEsRUFBRSxJQURqQjtBQUVFSixFQUFBQSxJQUFJLEVBQUUsZ0RBRlI7QUFHRUMsRUFBQUEsSUFBSSxFQUFFLFNBSFI7QUFJRUMsRUFBQUEsSUFBSSxFQUFFRztBQUpSLENBYnlCLENBQTNCO0FBb0JBLElBQU1DLE9BQU8sR0FBRyxpQ0FBZ0JSLGtCQUFoQixDQUFoQjs7U0FFZVMsK0I7Ozs7OzZGQUFmLGlCQUErQ0MsT0FBL0M7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1EQUN3QkMsbUJBQVNDLFdBRGpDO0FBQUE7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDYUMsWUFBQUEsT0FEYjtBQUFBLDBCQUVZQSxPQUFPLENBQUNDLFNBRnBCO0FBQUEsNENBR1dDLDJCQUFpQkMsY0FINUI7QUFBQTs7QUFB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QyxpQkFBS0MsSUFBTCxDQUNsQyxLQURrQyxFQUVsQyxXQUZrQyxFQUdsQyxnQkFIa0MsQ0ExRjlDOztBQStGVXlCLGdDQUFHcUIsYUFBSCxDQUFpQkQsMkJBQWpCLEVBQThDRCxLQUFLLENBQUM1QyxJQUFOLENBQVcsSUFBWCxDQUE5Qzs7QUEvRlY7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7O0FBQUE7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHOzs7O0FBc0dBViwrQkFBK0IsQ0FBQ0QsT0FBTyxDQUFDRSxPQUFULENBQS9CLENBQ0d3RCxJQURILENBQ1EsWUFBTTtBQUNWQyxFQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBYSxDQUFiO0FBQ0QsQ0FISCxXQUlTLFVBQUNDLEtBQUQsRUFBVztBQUNoQi9DLEVBQUFBLE9BQU8sQ0FBQytDLEtBQVIsQ0FBY0EsS0FBZDtBQUNBRixFQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBYSxDQUFiO0FBQ0QsQ0FQSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHtcbiAgcXVpY2t0eXBlLFxuICBJbnB1dERhdGEsXG4gIGpzb25JbnB1dEZvclRhcmdldExhbmd1YWdlLFxufSBmcm9tIFwicXVpY2t0eXBlLWNvcmVcIlxuXG5pbXBvcnQgeyBkYXRhc2V0cywgRGF0YXNldFN0cnVjdHVyZSB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVSYXdUeXBlc0Zyb21BbWVuZGVtZW50cyhkYXRhRGlyOiBzdHJpbmcpIHtcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICB7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgR2VuZXJhdGluZyByYXcgdHlwZXMgZnJvbSAke29yaWdpbmFsSnNvbkRpcn3igKZgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzQnlVaWRUZXh0TGVnaXNsYXRpZjoge1xuICAgICAgICAgICAgW3VpZDogc3RyaW5nXTogc3RyaW5nW11cbiAgICAgICAgICB9ID0ge31cbiAgICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihvcmlnaW5hbEpzb25EaXIpKSB7XG4gICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZW5hbWUgPVxuICAgICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgIGlmICghYW1lbmRlbWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHVpZFRleHRlTGVnaXNsYXRpZiA9XG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAyXVxuICAgICAgICAgICAgbGV0IGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzID1cbiAgICAgICAgICAgICAgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHNCeVVpZFRleHRMZWdpc2xhdGlmW1xuICAgICAgICAgICAgICAgIHVpZFRleHRlTGVnaXNsYXRpZlxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICBpZiAoYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocyA9IGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzQnlVaWRUZXh0TGVnaXNsYXRpZltcbiAgICAgICAgICAgICAgICB1aWRUZXh0ZUxlZ2lzbGF0aWZcbiAgICAgICAgICAgICAgXSA9IFtdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyLFxuICAgICAgICAgICAgICAuLi5hbWVuZGVtZW50U3BsaXRQYXRoLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMucHVzaChhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB1aWRzVGV4dGVzTGVnaXNsYXRpZnMgPSBPYmplY3Qua2V5cyhcbiAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzQnlVaWRUZXh0TGVnaXNsYXRpZixcbiAgICAgICAgICApXG4gICAgICAgICAgdWlkc1RleHRlc0xlZ2lzbGF0aWZzLnNvcnQoKGE6IHN0cmluZywgYjogc3RyaW5nKSA9PlxuICAgICAgICAgICAgYS5sZW5ndGggPT09IGIubGVuZ3RoID8gYS5sb2NhbGVDb21wYXJlKGIpIDogYS5sZW5ndGggLSBiLmxlbmd0aCxcbiAgICAgICAgICApXG4gICAgICAgICAgY29uc3QgdGV4dGVzTGVnaXNsYXRpZnNTYW1wbGVzID0gW11cbiAgICAgICAgICBmb3IgKGNvbnN0IHVpZFRleHRlTGVnaXNsYXRpZiBvZiB1aWRzVGV4dGVzTGVnaXNsYXRpZnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgYCAgUmVhZGluZyBcImFtZW5kZW1lbnRzIGR1IHRleHRlIGzDqWdpc2xhdGlmXCI6ICR7dWlkVGV4dGVMZWdpc2xhdGlmfeKApmAsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzID1cbiAgICAgICAgICAgICAgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHNCeVVpZFRleHRMZWdpc2xhdGlmW1xuICAgICAgICAgICAgICAgIHVpZFRleHRlTGVnaXNsYXRpZlxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocy5zb3J0KChhOiBzdHJpbmcsIGI6IHN0cmluZykgPT5cbiAgICAgICAgICAgICAgYS5sZW5ndGggPT09IGIubGVuZ3RoID8gYS5sb2NhbGVDb21wYXJlKGIpIDogYS5sZW5ndGggLSBiLmxlbmd0aCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRzID0gW11cbiAgICAgICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGggb2YgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMpIHtcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbDogYW55ID0gSlNPTi5wYXJzZShhbWVuZGVtZW50T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gYW1lbmRlbWVudE9yaWdpbmFsLmFtZW5kZW1lbnRcbiAgICAgICAgICAgICAgYW1lbmRlbWVudHMucHVzaChhbWVuZGVtZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdGV4dGVMZWdpc2xhdGlmID0ge1xuICAgICAgICAgICAgICBcIkB4bWxuczp4c2lcIjogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiLFxuICAgICAgICAgICAgICByZWZUZXh0ZUxlZ2lzbGF0aWY6IHVpZFRleHRlTGVnaXNsYXRpZixcbiAgICAgICAgICAgICAgYW1lbmRlbWVudHM6IHsgYW1lbmRlbWVudDogYW1lbmRlbWVudHMgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRleHRlc0xlZ2lzbGF0aWZzU2FtcGxlcy5wdXNoKEpTT04uc3RyaW5naWZ5KHRleHRlTGVnaXNsYXRpZikpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QganNvbklucHV0ID0ganNvbklucHV0Rm9yVGFyZ2V0TGFuZ3VhZ2UoXCJ0eXBlc2NyaXB0XCIpXG4gICAgICAgICAgYXdhaXQganNvbklucHV0LmFkZFNvdXJjZSh7XG4gICAgICAgICAgICBuYW1lOiBcIlRleHRlTGVnaXNsYXRpZlwiLFxuICAgICAgICAgICAgc2FtcGxlczogdGV4dGVzTGVnaXNsYXRpZnNTYW1wbGVzLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgY29uc3QgaW5wdXREYXRhID0gbmV3IElucHV0RGF0YSgpXG4gICAgICAgICAgaW5wdXREYXRhLmFkZElucHV0KGpzb25JbnB1dClcbiAgICAgICAgICBjb25zdCB7IGxpbmVzIH0gPSBhd2FpdCBxdWlja3R5cGUoe1xuICAgICAgICAgICAgaW5wdXREYXRhLFxuICAgICAgICAgICAgbGFuZzogXCJ0eXBlc2NyaXB0XCIsXG4gICAgICAgICAgICByZW5kZXJlck9wdGlvbnM6IHsgYWNyb255bVN0eWxlOiBcImNhbWVsXCIgfSxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgY29uc3QgYW1lbmRlbWVudHNSYXdUeXBlc0ZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgXCJzcmNcIixcbiAgICAgICAgICAgIFwicmF3X3R5cGVzXCIsXG4gICAgICAgICAgICBcImFtZW5kZW1lbnRzLnRzXCIsXG4gICAgICAgICAgKVxuICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoYW1lbmRlbWVudHNSYXdUeXBlc0ZpbGVQYXRoLCBsaW5lcy5qb2luKFwiXFxuXCIpKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5cbmdlbmVyYXRlUmF3VHlwZXNGcm9tQW1lbmRlbWVudHMob3B0aW9ucy5kYXRhRGlyKVxuICAudGhlbigoKSA9PiB7XG4gICAgcHJvY2Vzcy5leGl0KDApXG4gIH0pXG4gIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9KVxuIl19
293
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3Jhd190eXBlc19mcm9tX2FtZW5kZW1lbnRzLnRzIl0sIm5hbWVzIjpbIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiQm9vbGVhbiIsImRlZmF1bHRPcHRpb24iLCJTdHJpbmciLCJvcHRpb25zIiwiZ2VuZXJhdGVSYXdUeXBlc0Zyb21BbWVuZGVtZW50cyIsImRhdGFEaXIiLCJkYXRhc2V0cyIsImFtZW5kZW1lbnRzIiwiZGF0YXNldCIsInN0cnVjdHVyZSIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsIm9yaWdpbmFsSnNvbkRpciIsInBhdGgiLCJqb2luIiwiZmlsZW5hbWUiLCJzaWxlbnQiLCJjb25zb2xlIiwibG9nIiwiYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHNCeVVpZFRleHRMZWdpc2xhdGlmIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsImFtZW5kZW1lbnRGaWxlbmFtZSIsImxlbmd0aCIsImVuZHNXaXRoIiwidWlkVGV4dGVMZWdpc2xhdGlmIiwiYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMiLCJ1bmRlZmluZWQiLCJhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCIsInB1c2giLCJ1aWRzVGV4dGVzTGVnaXNsYXRpZnMiLCJPYmplY3QiLCJrZXlzIiwic29ydCIsImEiLCJiIiwibG9jYWxlQ29tcGFyZSIsInRleHRlc0xlZ2lzbGF0aWZzU2FtcGxlcyIsInZlcmJvc2UiLCJhbWVuZGVtZW50T3JpZ2luYWxKc29uIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsImFtZW5kZW1lbnRPcmlnaW5hbCIsIkpTT04iLCJwYXJzZSIsImFtZW5kZW1lbnQiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJyZWZUZXh0ZUxlZ2lzbGF0aWYiLCJzdHJpbmdpZnkiLCJqc29uSW5wdXQiLCJhZGRTb3VyY2UiLCJzYW1wbGVzIiwiaW5wdXREYXRhIiwiSW5wdXREYXRhIiwiYWRkSW5wdXQiLCJsYW5nIiwicmVuZGVyZXJPcHRpb25zIiwiYWNyb255bVN0eWxlIiwibGluZXMiLCJhbWVuZGVtZW50c1Jhd1R5cGVzRmlsZVBhdGgiLCJ3cml0ZUZpbGVTeW5jIiwidGhlbiIsInByb2Nlc3MiLCJleGl0IiwiZXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFNQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLGtCQUFrQixHQUFHLENBQ3pCO0FBQ0VDLEVBQUFBLEtBQUssRUFBRSxHQURUO0FBRUVDLEVBQUFBLElBQUksRUFBRSxvQkFGUjtBQUdFQyxFQUFBQSxJQUFJLEVBQUUsUUFIUjtBQUlFQyxFQUFBQSxJQUFJLEVBQUVDO0FBSlIsQ0FEeUIsRUFPekI7QUFDRUosRUFBQUEsS0FBSyxFQUFFLEdBRFQ7QUFFRUMsRUFBQUEsSUFBSSxFQUFFLGNBRlI7QUFHRUMsRUFBQUEsSUFBSSxFQUFFLFNBSFI7QUFJRUMsRUFBQUEsSUFBSSxFQUFFQztBQUpSLENBUHlCLEVBYXpCO0FBQ0VDLEVBQUFBLGFBQWEsRUFBRSxJQURqQjtBQUVFSixFQUFBQSxJQUFJLEVBQUUsZ0RBRlI7QUFHRUMsRUFBQUEsSUFBSSxFQUFFLFNBSFI7QUFJRUMsRUFBQUEsSUFBSSxFQUFFRztBQUpSLENBYnlCLENBQTNCO0FBb0JBLElBQU1DLE9BQU8sR0FBRyxpQ0FBZ0JSLGtCQUFoQixDQUFoQjs7U0FFZVMsK0I7Ozs7OzZGQUFmLGlCQUErQ0MsT0FBL0M7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1EQUN3QkMsbUJBQVNDLFdBRGpDO0FBQUE7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDYUMsWUFBQUEsT0FEYjtBQUFBLDBCQUVZQSxPQUFPLENBQUNDLFNBRnBCO0FBQUEsNENBR1dDLDJCQUFpQkMsY0FINUI7QUFBQTs7QUFB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QyxpQkFBS0MsSUFBTCxDQUNsQyxLQURrQyxFQUVsQyxXQUZrQyxFQUdsQyxnQkFIa0MsQ0EzRjlDOztBQWdHVXlCLGdDQUFHcUIsYUFBSCxDQUFpQkQsMkJBQWpCLEVBQThDRCxLQUFLLENBQUM1QyxJQUFOLENBQVcsSUFBWCxDQUE5Qzs7QUFoR1Y7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7O0FBQUE7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHOzs7O0FBdUdBViwrQkFBK0IsQ0FBQ0QsT0FBTyxDQUFDRSxPQUFULENBQS9CLENBQ0d3RCxJQURILENBQ1EsWUFBTTtBQUNWQyxFQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBYSxDQUFiO0FBQ0QsQ0FISCxXQUlTLFVBQUNDLEtBQUQsRUFBVztBQUNoQi9DLEVBQUFBLE9BQU8sQ0FBQytDLEtBQVIsQ0FBY0EsS0FBZDtBQUNBRixFQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBYSxDQUFiO0FBQ0QsQ0FQSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHtcbiAgcXVpY2t0eXBlLFxuICBJbnB1dERhdGEsXG4gIGpzb25JbnB1dEZvclRhcmdldExhbmd1YWdlLFxufSBmcm9tIFwicXVpY2t0eXBlLWNvcmVcIlxuXG5pbXBvcnQgeyBkYXRhc2V0cywgRGF0YXNldFN0cnVjdHVyZSB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVSYXdUeXBlc0Zyb21BbWVuZGVtZW50cyhkYXRhRGlyOiBzdHJpbmcpIHtcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICB7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgR2VuZXJhdGluZyByYXcgdHlwZXMgZnJvbSAke29yaWdpbmFsSnNvbkRpcn3igKZgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzQnlVaWRUZXh0TGVnaXNsYXRpZjoge1xuICAgICAgICAgICAgW3VpZDogc3RyaW5nXTogc3RyaW5nW11cbiAgICAgICAgICB9ID0ge31cbiAgICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihvcmlnaW5hbEpzb25EaXIpKSB7XG4gICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZW5hbWUgPVxuICAgICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgIGlmICghYW1lbmRlbWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHVpZFRleHRlTGVnaXNsYXRpZiA9XG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAyXVxuICAgICAgICAgICAgbGV0IGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzID1cbiAgICAgICAgICAgICAgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHNCeVVpZFRleHRMZWdpc2xhdGlmW1xuICAgICAgICAgICAgICAgIHVpZFRleHRlTGVnaXNsYXRpZlxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICBpZiAoYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocyA9XG4gICAgICAgICAgICAgICAgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHNCeVVpZFRleHRMZWdpc2xhdGlmW1xuICAgICAgICAgICAgICAgICAgdWlkVGV4dGVMZWdpc2xhdGlmXG4gICAgICAgICAgICAgICAgXSA9IFtdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyLFxuICAgICAgICAgICAgICAuLi5hbWVuZGVtZW50U3BsaXRQYXRoLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMucHVzaChhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB1aWRzVGV4dGVzTGVnaXNsYXRpZnMgPSBPYmplY3Qua2V5cyhcbiAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzQnlVaWRUZXh0TGVnaXNsYXRpZixcbiAgICAgICAgICApXG4gICAgICAgICAgdWlkc1RleHRlc0xlZ2lzbGF0aWZzLnNvcnQoKGE6IHN0cmluZywgYjogc3RyaW5nKSA9PlxuICAgICAgICAgICAgYS5sZW5ndGggPT09IGIubGVuZ3RoID8gYS5sb2NhbGVDb21wYXJlKGIpIDogYS5sZW5ndGggLSBiLmxlbmd0aCxcbiAgICAgICAgICApXG4gICAgICAgICAgY29uc3QgdGV4dGVzTGVnaXNsYXRpZnNTYW1wbGVzID0gW11cbiAgICAgICAgICBmb3IgKGNvbnN0IHVpZFRleHRlTGVnaXNsYXRpZiBvZiB1aWRzVGV4dGVzTGVnaXNsYXRpZnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgYCAgUmVhZGluZyBcImFtZW5kZW1lbnRzIGR1IHRleHRlIGzDqWdpc2xhdGlmXCI6ICR7dWlkVGV4dGVMZWdpc2xhdGlmfeKApmAsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzID1cbiAgICAgICAgICAgICAgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHNCeVVpZFRleHRMZWdpc2xhdGlmW1xuICAgICAgICAgICAgICAgIHVpZFRleHRlTGVnaXNsYXRpZlxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocy5zb3J0KChhOiBzdHJpbmcsIGI6IHN0cmluZykgPT5cbiAgICAgICAgICAgICAgYS5sZW5ndGggPT09IGIubGVuZ3RoID8gYS5sb2NhbGVDb21wYXJlKGIpIDogYS5sZW5ndGggLSBiLmxlbmd0aCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRzID0gW11cbiAgICAgICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGggb2YgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMpIHtcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbDogYW55ID0gSlNPTi5wYXJzZShhbWVuZGVtZW50T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gYW1lbmRlbWVudE9yaWdpbmFsLmFtZW5kZW1lbnRcbiAgICAgICAgICAgICAgYW1lbmRlbWVudHMucHVzaChhbWVuZGVtZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdGV4dGVMZWdpc2xhdGlmID0ge1xuICAgICAgICAgICAgICBcIkB4bWxuczp4c2lcIjogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiLFxuICAgICAgICAgICAgICByZWZUZXh0ZUxlZ2lzbGF0aWY6IHVpZFRleHRlTGVnaXNsYXRpZixcbiAgICAgICAgICAgICAgYW1lbmRlbWVudHM6IHsgYW1lbmRlbWVudDogYW1lbmRlbWVudHMgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRleHRlc0xlZ2lzbGF0aWZzU2FtcGxlcy5wdXNoKEpTT04uc3RyaW5naWZ5KHRleHRlTGVnaXNsYXRpZikpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QganNvbklucHV0ID0ganNvbklucHV0Rm9yVGFyZ2V0TGFuZ3VhZ2UoXCJ0eXBlc2NyaXB0XCIpXG4gICAgICAgICAgYXdhaXQganNvbklucHV0LmFkZFNvdXJjZSh7XG4gICAgICAgICAgICBuYW1lOiBcIlRleHRlTGVnaXNsYXRpZlwiLFxuICAgICAgICAgICAgc2FtcGxlczogdGV4dGVzTGVnaXNsYXRpZnNTYW1wbGVzLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgY29uc3QgaW5wdXREYXRhID0gbmV3IElucHV0RGF0YSgpXG4gICAgICAgICAgaW5wdXREYXRhLmFkZElucHV0KGpzb25JbnB1dClcbiAgICAgICAgICBjb25zdCB7IGxpbmVzIH0gPSBhd2FpdCBxdWlja3R5cGUoe1xuICAgICAgICAgICAgaW5wdXREYXRhLFxuICAgICAgICAgICAgbGFuZzogXCJ0eXBlc2NyaXB0XCIsXG4gICAgICAgICAgICByZW5kZXJlck9wdGlvbnM6IHsgYWNyb255bVN0eWxlOiBcImNhbWVsXCIgfSxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgY29uc3QgYW1lbmRlbWVudHNSYXdUeXBlc0ZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgXCJzcmNcIixcbiAgICAgICAgICAgIFwicmF3X3R5cGVzXCIsXG4gICAgICAgICAgICBcImFtZW5kZW1lbnRzLnRzXCIsXG4gICAgICAgICAgKVxuICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoYW1lbmRlbWVudHNSYXdUeXBlc0ZpbGVQYXRoLCBsaW5lcy5qb2luKFwiXFxuXCIpKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5cbmdlbmVyYXRlUmF3VHlwZXNGcm9tQW1lbmRlbWVudHMob3B0aW9ucy5kYXRhRGlyKVxuICAudGhlbigoKSA9PiB7XG4gICAgcHJvY2Vzcy5leGl0KDApXG4gIH0pXG4gIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9KVxuIl19
@@ -115,4 +115,4 @@ generateRawTypesFromAmendements(options.dataDir).then(() => {
115
115
  console.error(error);
116
116
  process.exit(1);
117
117
  });
118
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3Jhd190eXBlc19mcm9tX2FtZW5kZW1lbnRzLnRzIl0sIm5hbWVzIjpbImNvbW1hbmRMaW5lQXJncyIsImZzIiwicGF0aCIsInF1aWNrdHlwZSIsIklucHV0RGF0YSIsImpzb25JbnB1dEZvclRhcmdldExhbmd1YWdlIiwiZGF0YXNldHMiLCJEYXRhc2V0U3RydWN0dXJlIiwid2Fsa0RpciIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiQm9vbGVhbiIsImRlZmF1bHRPcHRpb24iLCJTdHJpbmciLCJvcHRpb25zIiwiZ2VuZXJhdGVSYXdUeXBlc0Zyb21BbWVuZGVtZW50cyIsImRhdGFEaXIiLCJkYXRhc2V0IiwiYW1lbmRlbWVudHMiLCJzdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsIm9yaWdpbmFsSnNvbkRpciIsImpvaW4iLCJmaWxlbmFtZSIsInNpbGVudCIsImNvbnNvbGUiLCJsb2ciLCJhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWYiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJ1aWRUZXh0ZUxlZ2lzbGF0aWYiLCJhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocyIsInVuZGVmaW5lZCIsImFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwicHVzaCIsInVpZHNUZXh0ZXNMZWdpc2xhdGlmcyIsIk9iamVjdCIsImtleXMiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwidGV4dGVzTGVnaXNsYXRpZnNTYW1wbGVzIiwidmVyYm9zZSIsImFtZW5kZW1lbnRPcmlnaW5hbEpzb24iLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsImFtZW5kZW1lbnRPcmlnaW5hbCIsIkpTT04iLCJwYXJzZSIsImFtZW5kZW1lbnQiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJyZWZUZXh0ZUxlZ2lzbGF0aWYiLCJzdHJpbmdpZnkiLCJqc29uSW5wdXQiLCJhZGRTb3VyY2UiLCJzYW1wbGVzIiwiaW5wdXREYXRhIiwiYWRkSW5wdXQiLCJsaW5lcyIsImxhbmciLCJyZW5kZXJlck9wdGlvbnMiLCJhY3JvbnltU3R5bGUiLCJhbWVuZGVtZW50c1Jhd1R5cGVzRmlsZVBhdGgiLCJ3cml0ZUZpbGVTeW5jIiwidGhlbiIsInByb2Nlc3MiLCJleGl0IiwiY2F0Y2giLCJlcnJvciJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsZUFBUCxNQUE0QixtQkFBNUI7QUFDQSxPQUFPQyxFQUFQLE1BQWUsVUFBZjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsTUFBakI7QUFDQSxTQUNFQyxTQURGLEVBRUVDLFNBRkYsRUFHRUMsMEJBSEYsUUFJTyxnQkFKUDtTQU1TQyxRLEVBQVVDLGdCO1NBQ1ZDLE87QUFFVCxNQUFNQyxrQkFBa0IsR0FBRyxDQUN6QjtBQUNFQyxFQUFBQSxLQUFLLEVBQUUsR0FEVDtBQUVFQyxFQUFBQSxJQUFJLEVBQUUsb0JBRlI7QUFHRUMsRUFBQUEsSUFBSSxFQUFFLFFBSFI7QUFJRUMsRUFBQUEsSUFBSSxFQUFFQztBQUpSLENBRHlCLEVBT3pCO0FBQ0VKLEVBQUFBLEtBQUssRUFBRSxHQURUO0FBRUVDLEVBQUFBLElBQUksRUFBRSxjQUZSO0FBR0VDLEVBQUFBLElBQUksRUFBRSxTQUhSO0FBSUVDLEVBQUFBLElBQUksRUFBRUM7QUFKUixDQVB5QixFQWF6QjtBQUNFQyxFQUFBQSxhQUFhLEVBQUUsSUFEakI7QUFFRUosRUFBQUEsSUFBSSxFQUFFLGdEQUZSO0FBR0VDLEVBQUFBLElBQUksRUFBRSxTQUhSO0FBSUVDLEVBQUFBLElBQUksRUFBRUc7QUFKUixDQWJ5QixDQUEzQjtBQW9CQSxNQUFNQyxPQUFPLEdBQUdqQixlQUFlLENBQUNTLGtCQUFELENBQS9COztBQUVBLGVBQWVTLCtCQUFmLENBQStDQyxPQUEvQyxFQUFnRTtBQUM5RCxPQUFLLE1BQU1DLE9BQVgsSUFB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K0JBQStCLENBQUNELE9BQU8sQ0FBQ0UsT0FBVCxDQUEvQixDQUNHbUQsSUFESCxDQUNRLE1BQU07QUFDVkMsRUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWEsQ0FBYjtBQUNELENBSEgsRUFJR0MsS0FKSCxDQUlVQyxLQUFELElBQVc7QUFDaEI5QyxFQUFBQSxPQUFPLENBQUM4QyxLQUFSLENBQWNBLEtBQWQ7QUFDQUgsRUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWEsQ0FBYjtBQUNELENBUEgiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7XG4gIHF1aWNrdHlwZSxcbiAgSW5wdXREYXRhLFxuICBqc29uSW5wdXRGb3JUYXJnZXRMYW5ndWFnZSxcbn0gZnJvbSBcInF1aWNrdHlwZS1jb3JlXCJcblxuaW1wb3J0IHsgZGF0YXNldHMsIERhdGFzZXRTdHJ1Y3R1cmUgfSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIHtcbiAgICBhbGlhczogXCJzXCIsXG4gICAgaGVscDogXCJkb24ndCBsb2cgYW55dGhpbmdcIixcbiAgICBuYW1lOiBcInNpbGVudFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJ2XCIsXG4gICAgaGVscDogXCJ2ZXJib3NlIGxvZ3NcIixcbiAgICBuYW1lOiBcInZlcmJvc2VcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICBoZWxwOiBcImRpcmVjdG9yeSBjb250YWluaW5nIEFzc2VtYmzDqWUgb3BlbiBkYXRhIGZpbGVzXCIsXG4gICAgbmFtZTogXCJkYXRhRGlyXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbmFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlUmF3VHlwZXNGcm9tQW1lbmRlbWVudHMoZGF0YURpcjogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYEdlbmVyYXRpbmcgcmF3IHR5cGVzIGZyb20gJHtvcmlnaW5hbEpzb25EaXJ94oCmYClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWY6IHtcbiAgICAgICAgICAgIFt1aWQ6IHN0cmluZ106IHN0cmluZ1tdXG4gICAgICAgICAgfSA9IHt9XG4gICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIob3JpZ2luYWxKc29uRGlyKSkge1xuICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aFthbWVuZGVtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICBpZiAoIWFtZW5kZW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB1aWRUZXh0ZUxlZ2lzbGF0aWYgPVxuICAgICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMl1cbiAgICAgICAgICAgIGxldCBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocyA9XG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzQnlVaWRUZXh0TGVnaXNsYXRpZltcbiAgICAgICAgICAgICAgICB1aWRUZXh0ZUxlZ2lzbGF0aWZcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgaWYgKGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMgPSBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWZbXG4gICAgICAgICAgICAgICAgdWlkVGV4dGVMZWdpc2xhdGlmXG4gICAgICAgICAgICAgIF0gPSBbXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcixcbiAgICAgICAgICAgICAgLi4uYW1lbmRlbWVudFNwbGl0UGF0aCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzLnB1c2goYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGgpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdWlkc1RleHRlc0xlZ2lzbGF0aWZzID0gT2JqZWN0LmtleXMoXG4gICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWYsXG4gICAgICAgICAgKVxuICAgICAgICAgIHVpZHNUZXh0ZXNMZWdpc2xhdGlmcy5zb3J0KChhOiBzdHJpbmcsIGI6IHN0cmluZykgPT5cbiAgICAgICAgICAgIGEubGVuZ3RoID09PSBiLmxlbmd0aCA/IGEubG9jYWxlQ29tcGFyZShiKSA6IGEubGVuZ3RoIC0gYi5sZW5ndGgsXG4gICAgICAgICAgKVxuICAgICAgICAgIGNvbnN0IHRleHRlc0xlZ2lzbGF0aWZzU2FtcGxlcyA9IFtdXG4gICAgICAgICAgZm9yIChjb25zdCB1aWRUZXh0ZUxlZ2lzbGF0aWYgb2YgdWlkc1RleHRlc0xlZ2lzbGF0aWZzKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIGAgIFJlYWRpbmcgXCJhbWVuZGVtZW50cyBkdSB0ZXh0ZSBsw6lnaXNsYXRpZlwiOiAke3VpZFRleHRlTGVnaXNsYXRpZn3igKZgLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocyA9XG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzQnlVaWRUZXh0TGVnaXNsYXRpZltcbiAgICAgICAgICAgICAgICB1aWRUZXh0ZUxlZ2lzbGF0aWZcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMuc29ydCgoYTogc3RyaW5nLCBiOiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgIGEubGVuZ3RoID09PSBiLmxlbmd0aCA/IGEubG9jYWxlQ29tcGFyZShiKSA6IGEubGVuZ3RoIC0gYi5sZW5ndGgsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50cyA9IFtdXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIG9mIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWw6IGFueSA9IEpTT04ucGFyc2UoYW1lbmRlbWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudCA9IGFtZW5kZW1lbnRPcmlnaW5hbC5hbWVuZGVtZW50XG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRzLnB1c2goYW1lbmRlbWVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHRleHRlTGVnaXNsYXRpZiA9IHtcbiAgICAgICAgICAgICAgXCJAeG1sbnM6eHNpXCI6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIixcbiAgICAgICAgICAgICAgcmVmVGV4dGVMZWdpc2xhdGlmOiB1aWRUZXh0ZUxlZ2lzbGF0aWYsXG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRzOiB7IGFtZW5kZW1lbnQ6IGFtZW5kZW1lbnRzIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ZXh0ZXNMZWdpc2xhdGlmc1NhbXBsZXMucHVzaChKU09OLnN0cmluZ2lmeSh0ZXh0ZUxlZ2lzbGF0aWYpKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGpzb25JbnB1dCA9IGpzb25JbnB1dEZvclRhcmdldExhbmd1YWdlKFwidHlwZXNjcmlwdFwiKVxuICAgICAgICAgIGF3YWl0IGpzb25JbnB1dC5hZGRTb3VyY2Uoe1xuICAgICAgICAgICAgbmFtZTogXCJUZXh0ZUxlZ2lzbGF0aWZcIixcbiAgICAgICAgICAgIHNhbXBsZXM6IHRleHRlc0xlZ2lzbGF0aWZzU2FtcGxlcyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnN0IGlucHV0RGF0YSA9IG5ldyBJbnB1dERhdGEoKVxuICAgICAgICAgIGlucHV0RGF0YS5hZGRJbnB1dChqc29uSW5wdXQpXG4gICAgICAgICAgY29uc3QgeyBsaW5lcyB9ID0gYXdhaXQgcXVpY2t0eXBlKHtcbiAgICAgICAgICAgIGlucHV0RGF0YSxcbiAgICAgICAgICAgIGxhbmc6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICAgICAgcmVuZGVyZXJPcHRpb25zOiB7IGFjcm9ueW1TdHlsZTogXCJjYW1lbFwiIH0sXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRzUmF3VHlwZXNGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgIFwic3JjXCIsXG4gICAgICAgICAgICBcInJhd190eXBlc1wiLFxuICAgICAgICAgICAgXCJhbWVuZGVtZW50cy50c1wiLFxuICAgICAgICAgIClcbiAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGFtZW5kZW1lbnRzUmF3VHlwZXNGaWxlUGF0aCwgbGluZXMuam9pbihcIlxcblwiKSlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxufVxuXG5nZW5lcmF0ZVJhd1R5cGVzRnJvbUFtZW5kZW1lbnRzKG9wdGlvbnMuZGF0YURpcilcbiAgLnRoZW4oKCkgPT4ge1xuICAgIHByb2Nlc3MuZXhpdCgwKVxuICB9KVxuICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfSlcbiJdfQ==
118
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3Jhd190eXBlc19mcm9tX2FtZW5kZW1lbnRzLnRzIl0sIm5hbWVzIjpbImNvbW1hbmRMaW5lQXJncyIsImZzIiwicGF0aCIsInF1aWNrdHlwZSIsIklucHV0RGF0YSIsImpzb25JbnB1dEZvclRhcmdldExhbmd1YWdlIiwiZGF0YXNldHMiLCJEYXRhc2V0U3RydWN0dXJlIiwid2Fsa0RpciIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiQm9vbGVhbiIsImRlZmF1bHRPcHRpb24iLCJTdHJpbmciLCJvcHRpb25zIiwiZ2VuZXJhdGVSYXdUeXBlc0Zyb21BbWVuZGVtZW50cyIsImRhdGFEaXIiLCJkYXRhc2V0IiwiYW1lbmRlbWVudHMiLCJzdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsIm9yaWdpbmFsSnNvbkRpciIsImpvaW4iLCJmaWxlbmFtZSIsInNpbGVudCIsImNvbnNvbGUiLCJsb2ciLCJhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWYiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJ1aWRUZXh0ZUxlZ2lzbGF0aWYiLCJhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocyIsInVuZGVmaW5lZCIsImFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwicHVzaCIsInVpZHNUZXh0ZXNMZWdpc2xhdGlmcyIsIk9iamVjdCIsImtleXMiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwidGV4dGVzTGVnaXNsYXRpZnNTYW1wbGVzIiwidmVyYm9zZSIsImFtZW5kZW1lbnRPcmlnaW5hbEpzb24iLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsImFtZW5kZW1lbnRPcmlnaW5hbCIsIkpTT04iLCJwYXJzZSIsImFtZW5kZW1lbnQiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJyZWZUZXh0ZUxlZ2lzbGF0aWYiLCJzdHJpbmdpZnkiLCJqc29uSW5wdXQiLCJhZGRTb3VyY2UiLCJzYW1wbGVzIiwiaW5wdXREYXRhIiwiYWRkSW5wdXQiLCJsaW5lcyIsImxhbmciLCJyZW5kZXJlck9wdGlvbnMiLCJhY3JvbnltU3R5bGUiLCJhbWVuZGVtZW50c1Jhd1R5cGVzRmlsZVBhdGgiLCJ3cml0ZUZpbGVTeW5jIiwidGhlbiIsInByb2Nlc3MiLCJleGl0IiwiY2F0Y2giLCJlcnJvciJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsZUFBUCxNQUE0QixtQkFBNUI7QUFDQSxPQUFPQyxFQUFQLE1BQWUsVUFBZjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsTUFBakI7QUFDQSxTQUNFQyxTQURGLEVBRUVDLFNBRkYsRUFHRUMsMEJBSEYsUUFJTyxnQkFKUDtTQU1TQyxRLEVBQVVDLGdCO1NBQ1ZDLE87QUFFVCxNQUFNQyxrQkFBa0IsR0FBRyxDQUN6QjtBQUNFQyxFQUFBQSxLQUFLLEVBQUUsR0FEVDtBQUVFQyxFQUFBQSxJQUFJLEVBQUUsb0JBRlI7QUFHRUMsRUFBQUEsSUFBSSxFQUFFLFFBSFI7QUFJRUMsRUFBQUEsSUFBSSxFQUFFQztBQUpSLENBRHlCLEVBT3pCO0FBQ0VKLEVBQUFBLEtBQUssRUFBRSxHQURUO0FBRUVDLEVBQUFBLElBQUksRUFBRSxjQUZSO0FBR0VDLEVBQUFBLElBQUksRUFBRSxTQUhSO0FBSUVDLEVBQUFBLElBQUksRUFBRUM7QUFKUixDQVB5QixFQWF6QjtBQUNFQyxFQUFBQSxhQUFhLEVBQUUsSUFEakI7QUFFRUosRUFBQUEsSUFBSSxFQUFFLGdEQUZSO0FBR0VDLEVBQUFBLElBQUksRUFBRSxTQUhSO0FBSUVDLEVBQUFBLElBQUksRUFBRUc7QUFKUixDQWJ5QixDQUEzQjtBQW9CQSxNQUFNQyxPQUFPLEdBQUdqQixlQUFlLENBQUNTLGtCQUFELENBQS9COztBQUVBLGVBQWVTLCtCQUFmLENBQStDQyxPQUEvQyxFQUFnRTtBQUM5RCxPQUFLLE1BQU1DLE9BQVgsSUFB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K0JBQStCLENBQUNELE9BQU8sQ0FBQ0UsT0FBVCxDQUEvQixDQUNHbUQsSUFESCxDQUNRLE1BQU07QUFDVkMsRUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWEsQ0FBYjtBQUNELENBSEgsRUFJR0MsS0FKSCxDQUlVQyxLQUFELElBQVc7QUFDaEI5QyxFQUFBQSxPQUFPLENBQUM4QyxLQUFSLENBQWNBLEtBQWQ7QUFDQUgsRUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWEsQ0FBYjtBQUNELENBUEgiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7XG4gIHF1aWNrdHlwZSxcbiAgSW5wdXREYXRhLFxuICBqc29uSW5wdXRGb3JUYXJnZXRMYW5ndWFnZSxcbn0gZnJvbSBcInF1aWNrdHlwZS1jb3JlXCJcblxuaW1wb3J0IHsgZGF0YXNldHMsIERhdGFzZXRTdHJ1Y3R1cmUgfSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIHtcbiAgICBhbGlhczogXCJzXCIsXG4gICAgaGVscDogXCJkb24ndCBsb2cgYW55dGhpbmdcIixcbiAgICBuYW1lOiBcInNpbGVudFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJ2XCIsXG4gICAgaGVscDogXCJ2ZXJib3NlIGxvZ3NcIixcbiAgICBuYW1lOiBcInZlcmJvc2VcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICBoZWxwOiBcImRpcmVjdG9yeSBjb250YWluaW5nIEFzc2VtYmzDqWUgb3BlbiBkYXRhIGZpbGVzXCIsXG4gICAgbmFtZTogXCJkYXRhRGlyXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbmFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlUmF3VHlwZXNGcm9tQW1lbmRlbWVudHMoZGF0YURpcjogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYEdlbmVyYXRpbmcgcmF3IHR5cGVzIGZyb20gJHtvcmlnaW5hbEpzb25EaXJ94oCmYClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWY6IHtcbiAgICAgICAgICAgIFt1aWQ6IHN0cmluZ106IHN0cmluZ1tdXG4gICAgICAgICAgfSA9IHt9XG4gICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIob3JpZ2luYWxKc29uRGlyKSkge1xuICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aFthbWVuZGVtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICBpZiAoIWFtZW5kZW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB1aWRUZXh0ZUxlZ2lzbGF0aWYgPVxuICAgICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMl1cbiAgICAgICAgICAgIGxldCBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocyA9XG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzQnlVaWRUZXh0TGVnaXNsYXRpZltcbiAgICAgICAgICAgICAgICB1aWRUZXh0ZUxlZ2lzbGF0aWZcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgaWYgKGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMgPVxuICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzQnlVaWRUZXh0TGVnaXNsYXRpZltcbiAgICAgICAgICAgICAgICAgIHVpZFRleHRlTGVnaXNsYXRpZlxuICAgICAgICAgICAgICAgIF0gPSBbXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcixcbiAgICAgICAgICAgICAgLi4uYW1lbmRlbWVudFNwbGl0UGF0aCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzLnB1c2goYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGgpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdWlkc1RleHRlc0xlZ2lzbGF0aWZzID0gT2JqZWN0LmtleXMoXG4gICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWYsXG4gICAgICAgICAgKVxuICAgICAgICAgIHVpZHNUZXh0ZXNMZWdpc2xhdGlmcy5zb3J0KChhOiBzdHJpbmcsIGI6IHN0cmluZykgPT5cbiAgICAgICAgICAgIGEubGVuZ3RoID09PSBiLmxlbmd0aCA/IGEubG9jYWxlQ29tcGFyZShiKSA6IGEubGVuZ3RoIC0gYi5sZW5ndGgsXG4gICAgICAgICAgKVxuICAgICAgICAgIGNvbnN0IHRleHRlc0xlZ2lzbGF0aWZzU2FtcGxlcyA9IFtdXG4gICAgICAgICAgZm9yIChjb25zdCB1aWRUZXh0ZUxlZ2lzbGF0aWYgb2YgdWlkc1RleHRlc0xlZ2lzbGF0aWZzKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIGAgIFJlYWRpbmcgXCJhbWVuZGVtZW50cyBkdSB0ZXh0ZSBsw6lnaXNsYXRpZlwiOiAke3VpZFRleHRlTGVnaXNsYXRpZn3igKZgLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocyA9XG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzQnlVaWRUZXh0TGVnaXNsYXRpZltcbiAgICAgICAgICAgICAgICB1aWRUZXh0ZUxlZ2lzbGF0aWZcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMuc29ydCgoYTogc3RyaW5nLCBiOiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgIGEubGVuZ3RoID09PSBiLmxlbmd0aCA/IGEubG9jYWxlQ29tcGFyZShiKSA6IGEubGVuZ3RoIC0gYi5sZW5ndGgsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50cyA9IFtdXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIG9mIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWw6IGFueSA9IEpTT04ucGFyc2UoYW1lbmRlbWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudCA9IGFtZW5kZW1lbnRPcmlnaW5hbC5hbWVuZGVtZW50XG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRzLnB1c2goYW1lbmRlbWVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHRleHRlTGVnaXNsYXRpZiA9IHtcbiAgICAgICAgICAgICAgXCJAeG1sbnM6eHNpXCI6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIixcbiAgICAgICAgICAgICAgcmVmVGV4dGVMZWdpc2xhdGlmOiB1aWRUZXh0ZUxlZ2lzbGF0aWYsXG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRzOiB7IGFtZW5kZW1lbnQ6IGFtZW5kZW1lbnRzIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ZXh0ZXNMZWdpc2xhdGlmc1NhbXBsZXMucHVzaChKU09OLnN0cmluZ2lmeSh0ZXh0ZUxlZ2lzbGF0aWYpKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGpzb25JbnB1dCA9IGpzb25JbnB1dEZvclRhcmdldExhbmd1YWdlKFwidHlwZXNjcmlwdFwiKVxuICAgICAgICAgIGF3YWl0IGpzb25JbnB1dC5hZGRTb3VyY2Uoe1xuICAgICAgICAgICAgbmFtZTogXCJUZXh0ZUxlZ2lzbGF0aWZcIixcbiAgICAgICAgICAgIHNhbXBsZXM6IHRleHRlc0xlZ2lzbGF0aWZzU2FtcGxlcyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnN0IGlucHV0RGF0YSA9IG5ldyBJbnB1dERhdGEoKVxuICAgICAgICAgIGlucHV0RGF0YS5hZGRJbnB1dChqc29uSW5wdXQpXG4gICAgICAgICAgY29uc3QgeyBsaW5lcyB9ID0gYXdhaXQgcXVpY2t0eXBlKHtcbiAgICAgICAgICAgIGlucHV0RGF0YSxcbiAgICAgICAgICAgIGxhbmc6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICAgICAgcmVuZGVyZXJPcHRpb25zOiB7IGFjcm9ueW1TdHlsZTogXCJjYW1lbFwiIH0sXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRzUmF3VHlwZXNGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgIFwic3JjXCIsXG4gICAgICAgICAgICBcInJhd190eXBlc1wiLFxuICAgICAgICAgICAgXCJhbWVuZGVtZW50cy50c1wiLFxuICAgICAgICAgIClcbiAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGFtZW5kZW1lbnRzUmF3VHlwZXNGaWxlUGF0aCwgbGluZXMuam9pbihcIlxcblwiKSlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxufVxuXG5nZW5lcmF0ZVJhd1R5cGVzRnJvbUFtZW5kZW1lbnRzKG9wdGlvbnMuZGF0YURpcilcbiAgLnRoZW4oKCkgPT4ge1xuICAgIHByb2Nlc3MuZXhpdCgwKVxuICB9KVxuICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfSlcbiJdfQ==