@tricoteuses/assemblee 1.1.12 → 1.2.0

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 (69) hide show
  1. package/README.md +5 -5
  2. package/lib/bugs/agenda-00011.js +4 -5
  3. package/lib/bugs/agenda-00011.mjs +1 -2
  4. package/lib/bugs.js +3 -1
  5. package/lib/cleaners/actes_legislatifs.js +3 -1
  6. package/lib/cleaners/acteurs.js +3 -1
  7. package/lib/cleaners/amendements.js +3 -1
  8. package/lib/cleaners/documents.js +3 -1
  9. package/lib/cleaners/dossiers_legislatifs.js +3 -1
  10. package/lib/cleaners/reunions.js +2 -1
  11. package/lib/cleaners/scrutins.js +3 -1
  12. package/lib/cleaners/xml.js +3 -1
  13. package/lib/dates.js +1 -1
  14. package/lib/dossiers_legislatifs.d.ts +2 -1
  15. package/lib/dossiers_legislatifs.js +45 -2
  16. package/lib/dossiers_legislatifs.mjs +7 -1
  17. package/lib/file_systems.js +4 -1
  18. package/lib/index.d.ts +2 -2
  19. package/lib/index.js +13 -1
  20. package/lib/index.mjs +3 -3
  21. package/lib/inserters.js +3 -1
  22. package/lib/loaders.js +4 -1
  23. package/lib/parsers/documents.js +3 -1
  24. package/lib/parsers/recherche_amendements.js +4 -5
  25. package/lib/parsers/recherche_amendements.mjs +1 -2
  26. package/lib/raw_types/acteurs_et_organes.js +2 -1
  27. package/lib/raw_types/agendas.js +2 -1
  28. package/lib/raw_types/amendements.d.ts +1 -1
  29. package/lib/raw_types/amendements.js +3 -2
  30. package/lib/raw_types/amendements.mjs +2 -2
  31. package/lib/raw_types/debats.js +2 -1
  32. package/lib/raw_types/dossiers_legislatifs.js +2 -1
  33. package/lib/raw_types/questions.js +2 -1
  34. package/lib/raw_types/scrutins.js +2 -1
  35. package/lib/scripts/bugs_helper.js +3 -1
  36. package/lib/scripts/clean_reorganized_data.js +4 -2
  37. package/lib/scripts/clean_reorganized_data.mjs +2 -2
  38. package/lib/scripts/diff_amendements.js +3 -1
  39. package/lib/scripts/document_dossiers_legislatifs.js +2 -1
  40. package/lib/scripts/merge_scrutins.js +4 -1
  41. package/lib/scripts/parse_textes_lois.js +3 -1
  42. package/lib/scripts/raw_types_from_amendements.js +3 -1
  43. package/lib/scripts/reorganize_data.js +4 -2
  44. package/lib/scripts/reorganize_data.mjs +2 -2
  45. package/lib/scripts/retrieve_deputes_photos.js +4 -3
  46. package/lib/scripts/retrieve_deputes_photos.mjs +1 -2
  47. package/lib/scripts/retrieve_documents.js +342 -521
  48. package/lib/scripts/retrieve_documents.mjs +180 -229
  49. package/lib/scripts/retrieve_open_data.js +4 -4
  50. package/lib/scripts/retrieve_open_data.mjs +2 -3
  51. package/lib/scripts/retrieve_pending_amendments.js +3 -1
  52. package/lib/scripts/retrieve_senateurs_photos.js +5 -4
  53. package/lib/scripts/retrieve_senateurs_photos.mjs +2 -3
  54. package/lib/scripts/retrieve_textes_lois.js +7 -4
  55. package/lib/scripts/retrieve_textes_lois.mjs +5 -2
  56. package/lib/scripts/validate_json.js +3 -1
  57. package/lib/types/acteurs_et_organes.js +2 -1
  58. package/lib/types/agendas.js +2 -1
  59. package/lib/types/amendements.d.ts +1 -1
  60. package/lib/types/amendements.js +3 -2
  61. package/lib/types/amendements.mjs +2 -2
  62. package/lib/types/debats.js +2 -1
  63. package/lib/types/dossiers_legislatifs.js +2 -1
  64. package/lib/types/questions.js +2 -1
  65. package/lib/types/scrutins.js +2 -1
  66. package/lib/urls.d.ts +8 -2
  67. package/lib/urls.js +153 -23
  68. package/lib/urls.mjs +97 -22
  69. package/package.json +3 -5
@@ -41,7 +41,7 @@ function parseArgs(argv) {
41
41
  type: String
42
42
  }, {
43
43
  alias: "l",
44
- help: "legislatures of categories of datasets to retrieve",
44
+ help: "legislatures of categories of datasets to retrieve; leave empty or use 0 for all",
45
45
  multiple: true,
46
46
  name: "legislature",
47
47
  type: Number
@@ -575,4 +575,4 @@ function main(argv) {
575
575
 
576
576
  /* istanbul ignore if */
577
577
  if (process.argv[1].endsWith("clean_reorganized_data.ts")) process.exit(main(process.argv));
578
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJleGVjU3luYyIsImNvbW1hbmRMaW5lQXJncyIsImZzIiwicGF0aCIsImNsZWFuQWN0ZXVyIiwiY2xlYW5BbWVuZGVtZW50IiwiY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24iLCJjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlIiwiY2xlYW5PcmdhbmUiLCJjbGVhblJldW5pb24iLCJjbGVhblNjcnV0aW4iLCJjbGVhblF1ZXN0aW9uIiwiY2xlYW5Db21wdGVSZW5kdSIsImRhdGFzZXRzIiwiRW5hYmxlZERhdGFzZXRzIiwiZXhpc3RpbmdEYXRlVG9Kc29uIiwicGF0Y2hlZERhdGVUb0pzb24iLCJ3YWxrRGlyIiwiZ2l0IiwiQ29udmVydCIsIkFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0IiwiQWdlbmRhc0NvbnZlcnQiLCJBbWVuZGVtZW50c0NvbnZlcnQiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCIsIkxlZ2lzbGF0dXJlIiwiU2NydXRpbnNDb252ZXJ0IiwiUXVlc3Rpb25zQ29udmVydCIsIkNvbXB0ZXNSZW5kdXNDb252ZXJ0IiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwiQm9vbGVhbiIsImRlZmF1bHRWYWx1ZSIsIm11bHRpcGxlIiwiTnVtYmVyIiwiZGVmYXVsdE9wdGlvbiIsIm9wdGlvbnMiLCJjbGVhblJlb3JnYW5pemVkRGF0YSIsImRhdGFEaXIiLCJEYXRlIiwicHJvdG90eXBlIiwidG9KU09OIiwiZXhpdENvZGUiLCJnaXRHcm91cFVybCIsImNsb25lIiwidHJpbSIsInJlcGxhY2UiLCJ1bmRlZmluZWQiLCJjYXRlZ29yaWVzIiwibWFwIiwiZGF0YXNldE5hbWUiLCJub3RTdHJpY3RFcXVhbCIsImVuYWJsZWREYXRhc2V0cyIsInJlZHVjZSIsIk5vbmUiLCJjaG9vc2VuRGF0YXNldHMiLCJsZWdpc2xhdHVyZXMiLCJsZWdpc2xhdHVyZSIsInNvbWUiLCJlbmFibGVkTGVnaXNsYXR1cmVzIiwidG9TdHJpbmciLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiLCJmaWx0ZXIiLCJkYXRhc2V0IiwiQWxsIiwiaW5jbHVkZXMiLCJBY3RldXJzRXRPcmdhbmVzIiwiYWN0ZXVyc0V0T3JnYW5lcyIsImJhc2VuYW1lIiwiZmlsZW5hbWUiLCJjd2QiLCJlbnYiLCJwcm9jZXNzIiwiZW5jb2RpbmciLCJzdGRpbyIsImRhdGFzZXRSYXdEaXIiLCJqb2luIiwiZGF0YXNldENsZWFuRGlyIiwicHVsbCIsImFuYWx5emVBbmRSZW1vdmUiLCJhY3RldXJTcGxpdFBhdGgiLCJhY3RldXJGaWxlbmFtZSIsImxlbmd0aCIsImVuZHNXaXRoIiwiYWN0ZXVyUmF3RmlsZVBhdGgiLCJ2ZXJib3NlIiwiY29uc29sZSIsImxvZyIsImFjdGV1clJhd0pzb24iLCJyZWFkRmlsZVN5bmMiLCJhY3RldXIiLCJKU09OIiwicGFyc2UiLCJhY3RldXJKc29uIiwic3RyaW5naWZ5IiwiYWN0ZXVyQ2xlYW4iLCJ0b0FjdGV1ciIsImFjdGV1ckNsZWFuSnNvbiIsImFjdGV1clRvSnNvbiIsImFjdGV1ckNsZWFuRmlsZVBhdGgiLCJlbnN1cmVEaXJTeW5jIiwiZGlybmFtZSIsIndyaXRlRmlsZVN5bmMiLCJvcmdhbmVTcGxpdFBhdGgiLCJvcmdhbmVGaWxlbmFtZSIsIm9yZ2FuZVJhd0ZpbGVQYXRoIiwib3JnYW5lUmF3SnNvbiIsIm9yZ2FuZSIsIm9yZ2FuZUpzb24iLCJvcmdhbmVDbGVhbiIsInRvT3JnYW5lIiwib3JnYW5lQ2xlYW5Kc29uIiwib3JnYW5lVG9Kc29uIiwib3JnYW5lQ2xlYW5GaWxlUGF0aCIsImNvbW1pdCIsImVycm9yQ29kZSIsImNvbW1pdEFuZFB1c2giLCJyZW1vdGUiLCJjb21taXRBbmRQdXNoVWlkIiwiQWdlbmRhcyIsImFnZW5kYXMiLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvblJhd0ZpbGVQYXRoIiwicmV1bmlvblJhd0pzb24iLCJyZXVuaW9uIiwicmV1bmlvbkpzb24iLCJyZXVuaW9uQ2xlYW4iLCJ0b1JldW5pb24iLCJyZXVuaW9uQ2xlYW5Kc29uIiwicmV1bmlvblRvSnNvbiIsInJldW5pb25DbGVhbkZpbGVQYXRoIiwiQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50cyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50UmF3RmlsZVBhdGgiLCJhbWVuZGVtZW50UmF3SnNvbiIsImFtZW5kZW1lbnQiLCJhbWVuZGVtZW50SnNvbiIsImFtZW5kZW1lbnRDbGVhbiIsInRvQW1lbmRlbWVudCIsImFtZW5kZW1lbnRDbGVhbkpzb24iLCJhbWVuZGVtZW50VG9Kc29uIiwiYW1lbmRlbWVudENsZWFuRmlsZVBhdGgiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50UmF3RmlsZVBhdGgiLCJkb2N1bWVudFJhd0pzb24iLCJkb2N1bWVudCIsImRvY3VtZW50SnNvbiIsImRvY3VtZW50Q2xlYW4iLCJ0b0RvY3VtZW50IiwiZG9jdW1lbnRDbGVhbkpzb24iLCJkb2N1bWVudFRvSnNvbiIsImRvY3VtZW50Q2xlYW5GaWxlUGF0aCIsImRvc3NpZXJTcGxpdFBhdGgiLCJkb3NzaWVyRmlsZW5hbWUiLCJkb3NzaWVyUmF3RmlsZVBhdGgiLCJkb3NzaWVyUmF3SnNvbiIsImRvc3NpZXIiLCJkb3NzaWVySnNvbiIsImRvc3NpZXJDbGVhbiIsInRvRG9zc2llclBhcmxlbWVudGFpcmUiLCJkb3NzaWVyQ2xlYW5Kc29uIiwiZG9zc2llclBhcmxlbWVudGFpcmVUb0pzb24iLCJkb3NzaWVyQ2xlYW5GaWxlUGF0aCIsIlNjcnV0aW5zIiwic2NydXRpbnMiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpblJhd0ZpbGVQYXRoIiwic2NydXRpblJhd0pzb24iLCJzY3J1dGluIiwic2NydXRpbkpzb24iLCJzY3J1dGluQ2xlYW4iLCJ0b1NjcnV0aW4iLCJzY3J1dGluQ2xlYW5Kc29uIiwic2NydXRpblRvSnNvbiIsInNjcnV0aW5DbGVhbkZpbGVQYXRoIiwiUXVlc3Rpb25zIiwicXVlc3Rpb25zIiwicXVlc3Rpb25zU3BsaXRQYXRoIiwicXVlc3Rpb25GaWxlbmFtZSIsInF1ZXN0aW9uUmF3RmlsZVBhdGgiLCJxdWVzdGlvblJhd0pzb24iLCJxdWVzdGlvbiIsInF1ZXN0aW9uSnNvbiIsInF1ZXN0aW9uQ2xlYW4iLCJ0b1F1ZXN0aW9uIiwicXVlc3Rpb25DbGVhbkpzb24iLCJxdWVzdGlvblRvSnNvbiIsInF1ZXN0aW9uQ2xlYW5GaWxlUGF0aCIsIkNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiY29tcHRlc1JlbmR1c1NlYW5jZXMiLCJjb21wdGVzUmVuZHVzU3BsaXRQYXRoIiwiY29tcHRlUmVuZHVGaWxlbmFtZSIsImNvbXB0ZVJlbmR1UmF3RmlsZVBhdGgiLCJjb21wdGVSZW5kdVJhd0pzb24iLCJjb21wdGVSZW5kdSIsImNvbXB0ZVJlbmR1SnNvbiIsImNvbXB0ZVJlbmR1Q2xlYW4iLCJ0b0NvbXB0ZVJlbmR1IiwiY29tcHRlUmVuZHVDbGVhbkpzb24iLCJjb21wdGVSZW5kdVRvSnNvbiIsImNvbXB0ZVJlbmR1Q2xlYW5GaWxlUGF0aCIsInNpbGVudCIsInJlYWRkaXJTeW5jIiwicGF0aG5hbWUiLCJyZW1vdmVTeW5jIiwicmVwb3NpdG9yeURpciIsInN1YmRpcmVjdG9yaWVzIiwiZXJyb3IiLCJ1aWRCcmFuY2hVcGRhdGUiLCJydW4iLCJjaGlsZFByb2Nlc3MiLCJtYWluIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2NsZWFuX3Jlb3JnYW5pemVkX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7XG4gIGNsZWFuQWN0ZXVyLFxuICBjbGVhbkFtZW5kZW1lbnQsXG4gIGNsZWFuRG9jdW1lbnRPckRpdmlzaW9uLFxuICBjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICBjbGVhbk9yZ2FuZSxcbiAgY2xlYW5SZXVuaW9uLFxuICBjbGVhblNjcnV0aW4sXG4gIGNsZWFuUXVlc3Rpb24sXG4gIGNsZWFuQ29tcHRlUmVuZHUsXG59IGZyb20gXCIuLi9jbGVhbmVyc1wiXG5pbXBvcnQgeyBkYXRhc2V0cywgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGV4aXN0aW5nRGF0ZVRvSnNvbiwgcGF0Y2hlZERhdGVUb0pzb24gfSBmcm9tIFwiLi4vZGF0ZXNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LFxuICBPcmdhbmUsXG59IGZyb20gXCIuLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzQ29udmVydCwgUmV1bmlvbiB9IGZyb20gXCIuLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQsIENvbnZlcnQgYXMgQW1lbmRlbWVudHNDb252ZXJ0IH0gZnJvbSBcIi4uL3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7XG4gIENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQsXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4uL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IExlZ2lzbGF0dXJlIH0gZnJvbSBcIi4uL3R5cGVzL2xlZ2lzbGF0dXJlc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFNjcnV0aW5zQ29udmVydCwgU2NydXRpbiB9IGZyb20gXCIuLi90eXBlcy9zY3J1dGluc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFF1ZXN0aW9uc0NvbnZlcnQsIFF1ZXN0aW9uIH0gZnJvbSBcIi4uL3R5cGVzL3F1ZXN0aW9uc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIENvbXB0ZXNSZW5kdXNDb252ZXJ0LCBDb21wdGVSZW5kdSB9IGZyb20gXCIuLi90eXBlcy9kZWJhdHNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAge1xuICAgICAgYWxpYXM6IFwiQ1wiLFxuICAgICAgaGVscDogXCJjbG9uZSByZXBvc2l0b3JpZXMgZnJvbSBnaXZlbiBncm91cCAob3Igb3JnYW5pemF0aW9uKSBnaXQgVVJMXCIsXG4gICAgICBuYW1lOiBcImNsb25lXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJjXCIsXG4gICAgICBoZWxwOiBcImNvbW1pdCBjbGVhbiBmaWxlc1wiLFxuICAgICAgbmFtZTogXCJjb21taXRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJkXCIsXG4gICAgICBoZWxwOiBcInNpbmdsZSBkYXRhc2V0IHRvIHJlb3JnYW5pemVcIixcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwia1wiLFxuICAgICAgZGVmYXVsdFZhbHVlOiBbXCJBbGxcIl0sXG4gICAgICBoZWxwOiBcImNhdGVnb3JpZXMgb2YgZGF0YXNldHMgdG8gcmVvcmdhbml6ZVwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcImNhdGVnb3JpZXNcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImxcIixcbiAgICAgIGhlbHA6IFwibGVnaXNsYXR1cmVzIG9mIGNhdGVnb3JpZXMgb2YgZGF0YXNldHMgdG8gcmV0cmlldmVcIixcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgbmFtZTogXCJsZWdpc2xhdHVyZVwiLFxuICAgICAgdHlwZTogTnVtYmVyLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwicFwiLFxuICAgICAgaGVscDogXCJwdWxsIHJlcG9zaXRvcmllcyBiZWZvcmUgcHJvY2VlZGluZ1wiLFxuICAgICAgbmFtZTogXCJwdWxsXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwiclwiLFxuICAgICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgbmFtZTogXCJyZW1vdGVcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcInNcIixcbiAgICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgICBuYW1lOiBcInNpbGVudFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlbHA6IFwiZG8gbm90IHJlc2V0IC0taGFyZCBhZnRlciBjb21taXQgdG8gc2F2ZSBJL08gaWYgdGhlIHdvcmtpbmcgdHJlZSBpcyB0byBiZSBkaXNjYXJkZWRcIixcbiAgICAgIG5hbWU6IFwibm8tcmVzZXQtYWZ0ZXItY29tbWl0XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwidlwiLFxuICAgICAgaGVscDogXCJ2ZXJib3NlIGxvZ3NcIixcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgICBoZWxwOiBcImRpcmVjdG9yeSBjb250YWluaW5nIEFzc2VtYmzDqWUgb3BlbiBkYXRhIGZpbGVzXCIsXG4gICAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICBdXG4gIGNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zLCB7XG4gICAgYXJndjogYXJndixcbiAgfSlcbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuZnVuY3Rpb24gY2xlYW5SZW9yZ2FuaXplZERhdGEob3B0aW9uczogYW55KTogbnVtYmVyIHtcbiAgY29uc3QgZGF0YURpcjogc3RyaW5nID0gb3B0aW9ucy5kYXRhRGlyXG5cbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gcGF0Y2hlZERhdGVUb0pzb25cblxuICBsZXQgZXhpdENvZGUgPSAxMCAvLyBOb3RoaW5nIHRvIGNvbW1pdFxuICBjb25zdCBnaXRHcm91cFVybCA9IG9wdGlvbnMuY2xvbmVcbiAgICA/IG9wdGlvbnMuY2xvbmUudHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIilcbiAgICA6IHVuZGVmaW5lZFxuXG4gIG9wdGlvbnMuY2F0ZWdvcmllcy5tYXAoKGRhdGFzZXROYW1lOiBzdHJpbmcpID0+XG4gICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgICAgKEVuYWJsZWREYXRhc2V0cyBhcyBhbnkgYXMgeyBbbmFtZTogc3RyaW5nXTogRW5hYmxlZERhdGFzZXRzIH0pW1xuICAgICAgICBkYXRhc2V0TmFtZVxuICAgICAgXSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGBVbmtub3duIG5hbWUgb2YgZGF0YXNldDogJHtkYXRhc2V0TmFtZX1gLFxuICAgICksXG4gIClcbiAgY29uc3QgZW5hYmxlZERhdGFzZXRzID0gb3B0aW9ucy5jYXRlZ29yaWVzLnJlZHVjZShcbiAgICAoZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsIGRhdGFzZXROYW1lOiBzdHJpbmcpOiBFbmFibGVkRGF0YXNldHMgPT5cbiAgICAgIGVuYWJsZWREYXRhc2V0cyB8XG4gICAgICAoRW5hYmxlZERhdGFzZXRzIGFzIGFueSBhcyB7IFtuYW1lOiBzdHJpbmddOiBFbmFibGVkRGF0YXNldHMgfSlbXG4gICAgICAgIGRhdGFzZXROYW1lXG4gICAgICBdLFxuICAgIEVuYWJsZWREYXRhc2V0cy5Ob25lLFxuICApXG5cbiAgbGV0IGNob29zZW5EYXRhc2V0cyA9IGRhdGFzZXRzXG4gIC8vIFdoZW4gYSBnaXZlbiBsZWdpc2xhdHVyZSBpcyAwLCBpdCBpcyB0aGUgc2FtZSBhcyBnaXZpbmcgbm8gbGVnaXNsYXR1cmU6XG4gIC8vIEl0IG1lYW5zIFwiZXZlcnkgbGVnaXNsYXR1cmVzXCIuXG4gIGNvbnN0IGxlZ2lzbGF0dXJlcyA9IG9wdGlvbnMubGVnaXNsYXR1cmU/LnNvbWUoXG4gICAgKGxlZ2lzbGF0dXJlOiBudW1iZXIpID0+IGxlZ2lzbGF0dXJlID09PSAwLFxuICApXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IG9wdGlvbnMubGVnaXNsYXR1cmVcbiAgaWYgKGxlZ2lzbGF0dXJlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZW5hYmxlZExlZ2lzbGF0dXJlcyA9IGxlZ2lzbGF0dXJlcy5tYXAoKGxlZ2lzbGF0dXJlOiBudW1iZXIpID0+XG4gICAgICBsZWdpc2xhdHVyZS50b1N0cmluZygpLFxuICAgIClcbiAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY2hvb3NlbkRhdGFzZXRzKSkge1xuICAgICAgY2hvb3NlbkRhdGFzZXRzW2tleSBhcyBrZXlvZiB0eXBlb2YgY2hvb3NlbkRhdGFzZXRzXSA9IHZhbHVlLmZpbHRlcihcbiAgICAgICAgKGRhdGFzZXQ6IHsgbGVnaXNsYXR1cmU6IGFueSB9KSA9PlxuICAgICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCB8fFxuICAgICAgICAgIGVuYWJsZWRMZWdpc2xhdHVyZXMuaW5jbHVkZXMoZGF0YXNldC5sZWdpc2xhdHVyZSksXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgaWYgKG9wdGlvbnMucHVsbCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IHJlc2V0IC0taGFyZCBvcmlnaW4vbWFzdGVyYCwge1xuICAgICAgICAgIGN3ZDogZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBwdWxsIC0tcmViYXNlYCwge1xuICAgICAgICAgIGN3ZDogZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHthY3RldXJSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1clJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJSYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gSlNPTi5wYXJzZShhY3RldXJSYXdKc29uKVxuICAgICAgICBjbGVhbkFjdGV1cihhY3RldXIpXG4gICAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGFjdGV1ciwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgYWN0ZXVyQ2xlYW46IEFjdGV1ciA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvQWN0ZXVyKGFjdGV1ckpzb24pXG4gICAgICAgIGNvbnN0IGFjdGV1ckNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBBY3RldXJzRXRPcmdhbmVzQ29udmVydC5hY3RldXJUb0pzb24oYWN0ZXVyQ2xlYW4pXG5cbiAgICAgICAgY29uc3QgYWN0ZXVyQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5hY3RldXJTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoYWN0ZXVyQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoYWN0ZXVyQ2xlYW5GaWxlUGF0aCwgYWN0ZXVyQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IG9yZ2FuZVNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIFtcIm9yZ2FuZXNcIl0pKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZUZpbGVuYW1lID0gb3JnYW5lU3BsaXRQYXRoW29yZ2FuZVNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIW9yZ2FuZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZVJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLm9yZ2FuZVNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7b3JnYW5lUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmdhbmVSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMob3JnYW5lUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IG9yZ2FuZSA9IEpTT04ucGFyc2Uob3JnYW5lUmF3SnNvbilcbiAgICAgICAgY2xlYW5PcmdhbmUob3JnYW5lKVxuICAgICAgICBjb25zdCBvcmdhbmVKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShvcmdhbmUsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IG9yZ2FuZUNsZWFuOiBPcmdhbmUgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b09yZ2FuZShvcmdhbmVKc29uKVxuICAgICAgICBjb25zdCBvcmdhbmVDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQub3JnYW5lVG9Kc29uKG9yZ2FuZUNsZWFuKVxuXG4gICAgICAgIGNvbnN0IG9yZ2FuZUNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4ub3JnYW5lU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKG9yZ2FuZUNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKG9yZ2FuZUNsZWFuRmlsZVBhdGgsIG9yZ2FuZUNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiYWN0ZXVyc1wiLCBcIm9yZ2FuZXNcIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgcmV1bmlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlbmFtZSA9IHJldW5pb25TcGxpdFBhdGhbcmV1bmlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXJldW5pb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4ucmV1bmlvblNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7cmV1bmlvblJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmV1bmlvblJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhyZXVuaW9uUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHJldW5pb24gPSBKU09OLnBhcnNlKHJldW5pb25SYXdKc29uKVxuICAgICAgICBjbGVhblJldW5pb24ocmV1bmlvbilcbiAgICAgICAgY29uc3QgcmV1bmlvbkpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHJldW5pb24sIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IHJldW5pb25DbGVhbjogUmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgICAgY29uc3QgcmV1bmlvbkNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBBZ2VuZGFzQ29udmVydC5yZXVuaW9uVG9Kc29uKHJldW5pb25DbGVhbilcblxuICAgICAgICBjb25zdCByZXVuaW9uQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5yZXVuaW9uU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKHJldW5pb25DbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhyZXVuaW9uQ2xlYW5GaWxlUGF0aCwgcmV1bmlvbkNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyKSkge1xuICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZW5hbWUgPVxuICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWFtZW5kZW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50UmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgICAuLi5hbWVuZGVtZW50U3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke2FtZW5kZW1lbnRSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgYW1lbmRlbWVudFJhd0ZpbGVQYXRoLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBKU09OLnBhcnNlKGFtZW5kZW1lbnRSYXdKc29uKVxuICAgICAgICBjbGVhbkFtZW5kZW1lbnQoYW1lbmRlbWVudClcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGFtZW5kZW1lbnQsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRDbGVhbjogQW1lbmRlbWVudCA9XG4gICAgICAgICAgQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudChhbWVuZGVtZW50SnNvbilcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudENsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBBbWVuZGVtZW50c0NvbnZlcnQuYW1lbmRlbWVudFRvSnNvbihhbWVuZGVtZW50Q2xlYW4pXG5cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudENsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uYW1lbmRlbWVudFNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShhbWVuZGVtZW50Q2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoYW1lbmRlbWVudENsZWFuRmlsZVBhdGgsIGFtZW5kZW1lbnRDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcIi5cIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCBbXCJkb2N1bWVudHNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRSYXdGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICAgIC4uLmRvY3VtZW50U3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke2RvY3VtZW50UmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb2N1bWVudFJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb2N1bWVudFJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkb2N1bWVudCA9IEpTT04ucGFyc2UoZG9jdW1lbnRSYXdKc29uKVxuICAgICAgICBjbGVhbkRvY3VtZW50T3JEaXZpc2lvbihkb2N1bWVudClcbiAgICAgICAgY29uc3QgZG9jdW1lbnRKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShkb2N1bWVudCwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgZG9jdW1lbnRDbGVhbjogRG9jdW1lbnQgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9jdW1lbnQoZG9jdW1lbnRKc29uKVxuICAgICAgICBjb25zdCBkb2N1bWVudENsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC5kb2N1bWVudFRvSnNvbihkb2N1bWVudENsZWFuKVxuXG4gICAgICAgIGNvbnN0IGRvY3VtZW50Q2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5kb2N1bWVudFNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShkb2N1bWVudENsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGRvY3VtZW50Q2xlYW5GaWxlUGF0aCwgZG9jdW1lbnRDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgZG9zc2llclNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIFtcImRvc3NpZXJzXCJdKSkge1xuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZW5hbWUgPSBkb3NzaWVyU3BsaXRQYXRoW2Rvc3NpZXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFkb3NzaWVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llclJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLmRvc3NpZXJTcGxpdFBhdGgpXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke2Rvc3NpZXJSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvc3NpZXJSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9zc2llclJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkb3NzaWVyID0gSlNPTi5wYXJzZShkb3NzaWVyUmF3SnNvbilcbiAgICAgICAgY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZShkb3NzaWVyKVxuICAgICAgICBjb25zdCBkb3NzaWVySnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZG9zc2llciwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgZG9zc2llckNsZWFuOiBEb3NzaWVyUGFybGVtZW50YWlyZSA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZShkb3NzaWVySnNvbilcbiAgICAgICAgY29uc3QgZG9zc2llckNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC5kb3NzaWVyUGFybGVtZW50YWlyZVRvSnNvbihkb3NzaWVyQ2xlYW4pXG5cbiAgICAgICAgY29uc3QgZG9zc2llckNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uZG9zc2llclNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShkb3NzaWVyQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZG9zc2llckNsZWFuRmlsZVBhdGgsIGRvc3NpZXJDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcImRvY3VtZW50c1wiLCBcImRvc3NpZXJzXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvb3NlbkRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9IHNjcnV0aW5TcGxpdFBhdGhbc2NydXRpblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4uc2NydXRpblNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7c2NydXRpblJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpblJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhzY3J1dGluUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHNjcnV0aW4gPSBKU09OLnBhcnNlKHNjcnV0aW5SYXdKc29uKVxuICAgICAgICBjbGVhblNjcnV0aW4oc2NydXRpbilcbiAgICAgICAgY29uc3Qgc2NydXRpbkpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHNjcnV0aW4sIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IHNjcnV0aW5DbGVhbjogU2NydXRpbiA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW4oc2NydXRpbkpzb24pXG4gICAgICAgIGNvbnN0IHNjcnV0aW5DbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgU2NydXRpbnNDb252ZXJ0LnNjcnV0aW5Ub0pzb24oc2NydXRpbkNsZWFuKVxuXG4gICAgICAgIGNvbnN0IHNjcnV0aW5DbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLnNjcnV0aW5TcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoc2NydXRpbkNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHNjcnV0aW5DbGVhbkZpbGVQYXRoLCBzY3J1dGluQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUXVlc3Rpb25zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnF1ZXN0aW9ucykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uc1NwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uRmlsZW5hbWUgPVxuICAgICAgICAgIHF1ZXN0aW9uc1NwbGl0UGF0aFtxdWVzdGlvbnNTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFxdWVzdGlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgICAuLi5xdWVzdGlvbnNTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7cXVlc3Rpb25SYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHF1ZXN0aW9uUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gSlNPTi5wYXJzZShxdWVzdGlvblJhd0pzb24pXG4gICAgICAgIGNsZWFuUXVlc3Rpb24ocXVlc3Rpb24pXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uSnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocXVlc3Rpb24sIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uQ2xlYW46IFF1ZXN0aW9uID1cbiAgICAgICAgICBRdWVzdGlvbnNDb252ZXJ0LnRvUXVlc3Rpb24ocXVlc3Rpb25Kc29uKVxuICAgICAgICBjb25zdCBxdWVzdGlvbkNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBRdWVzdGlvbnNDb252ZXJ0LnF1ZXN0aW9uVG9Kc29uKHF1ZXN0aW9uQ2xlYW4pXG5cbiAgICAgICAgY29uc3QgcXVlc3Rpb25DbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLnF1ZXN0aW9uc1NwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShxdWVzdGlvbkNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHF1ZXN0aW9uQ2xlYW5GaWxlUGF0aCwgcXVlc3Rpb25DbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcIi5cIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLnhtbFwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgY29tcHRlc1JlbmR1c1NwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1RmlsZW5hbWUgPVxuICAgICAgICAgIGNvbXB0ZXNSZW5kdXNTcGxpdFBhdGhbY29tcHRlc1JlbmR1c1NwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWNvbXB0ZVJlbmR1RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVSYXdGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICAgIC4uLmNvbXB0ZXNSZW5kdXNTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7Y29tcHRlUmVuZHVSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1UmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgIGNvbXB0ZVJlbmR1UmF3RmlsZVBhdGgsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHUgPSBKU09OLnBhcnNlKGNvbXB0ZVJlbmR1UmF3SnNvbilcbiAgICAgICAgY2xlYW5Db21wdGVSZW5kdShjb21wdGVSZW5kdSlcbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShjb21wdGVSZW5kdSwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVDbGVhbjogQ29tcHRlUmVuZHUgPVxuICAgICAgICAgIENvbXB0ZXNSZW5kdXNDb252ZXJ0LnRvQ29tcHRlUmVuZHUoY29tcHRlUmVuZHVKc29uKVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBDb21wdGVzUmVuZHVzQ29udmVydC5jb21wdGVSZW5kdVRvSnNvbihjb21wdGVSZW5kdUNsZWFuKVxuXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1Q2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5jb21wdGVzUmVuZHVzU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGNvbXB0ZVJlbmR1Q2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoY29tcHRlUmVuZHVDbGVhbkZpbGVQYXRoLCBjb21wdGVSZW5kdUNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXN0b3JlIHN0YW5kYXJkIGNvbnZlcnNpb24gb2YgZGF0ZXMgdG8gSlNPTi5cbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZXhpc3RpbmdEYXRlVG9Kc29uXG5cbiAgcmV0dXJuIGV4aXRDb2RlXG59XG5cbmZ1bmN0aW9uIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWU6IHN0cmluZywgb3B0aW9uczogYW55KTogYW55IHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coYENsZWFuaW5nIGRpcmVjdG9yeTogJHtkYXRhc2V0Q2xlYW5EaXJ94oCmYClcbiAgfVxuICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRDbGVhbkRpcilcbiAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0Q2xlYW5EaXIpKSB7XG4gICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgcGF0aG5hbWUgPSBwYXRoLmpvaW4oZGF0YXNldENsZWFuRGlyLCBmaWxlbmFtZSlcbiAgICBmcy5yZW1vdmVTeW5jKHBhdGhuYW1lKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbW1pdEFuZFB1c2hVaWQoXG4gIHJlcG9zaXRvcnlEaXI6IHN0cmluZyxcbiAgb3B0aW9uczogYW55LFxuICBzdWJkaXJlY3RvcmllczogYW55LFxuKTogYm9vbGVhbiB7XG4gIGxldCBlcnJvciA9IGZhbHNlXG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIGdpdC51aWRCcmFuY2hVcGRhdGUoXG4gICAgICByZXBvc2l0b3J5RGlyLFxuICAgICAgc3ViZGlyZWN0b3JpZXMsXG4gICAgICBvcHRpb25zW1wibm8tcmVzZXQtYWZ0ZXItY29tbWl0XCJdLFxuICAgIClcbiAgICBmb3IgKGNvbnN0IHJlbW90ZSBvZiBvcHRpb25zLnJlbW90ZSB8fCBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZ2l0LnJ1bihyZXBvc2l0b3J5RGlyLCBgcHVzaCAtLXF1aWV0ICR7cmVtb3RlfSB1aWQ6dWlkYClcbiAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9yXG59XG5cbmZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogbnVtYmVyIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICByZXR1cm4gY2xlYW5SZW9yZ2FuaXplZERhdGEob3B0aW9ucylcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiY2xlYW5fcmVvcmdhbml6ZWRfZGF0YS50c1wiKSlcbiAgcHJvY2Vzcy5leGl0KG1haW4ocHJvY2Vzcy5hcmd2KSlcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsTUFBTSxNQUFNLFFBQVE7QUFDM0IsU0FBU0MsUUFBUSxRQUFRLGVBQWU7QUFDeEMsT0FBT0MsZUFBZSxNQUFNLG1CQUFtQjtBQUMvQyxPQUFPQyxFQUFFLE1BQU0sVUFBVTtBQUN6QixPQUFPQyxJQUFJLE1BQU0sTUFBTTtBQUFBLFNBR3JCQyxXQUFXLEVBQ1hDLGVBQWUsRUFDZkMsdUJBQXVCLEVBQ3ZCQyx5QkFBeUIsRUFDekJDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxZQUFZLEVBQ1pDLGFBQWEsRUFDYkMsZ0JBQWdCO0FBQUEsU0FFVEMsUUFBUSxFQUFFQyxlQUFlO0FBQUEsU0FDekJDLGtCQUFrQixFQUFFQyxpQkFBaUI7QUFBQSxTQUNyQ0MsT0FBTztBQUFBLE9BQ1QsS0FBS0MsR0FBRztBQUFBLFNBR2JDLE9BQU8sSUFBSUMsdUJBQXVCO0FBQUEsU0FHM0JELE9BQU8sSUFBSUUsY0FBYztBQUFBLFNBQ2JGLE9BQU8sSUFBSUcsa0JBQWtCO0FBQUEsU0FFaERILE9BQU8sSUFBSUksMEJBQTBCO0FBQUEsU0FJOUJDLFdBQVc7QUFBQSxTQUNYTCxPQUFPLElBQUlNLGVBQWU7QUFBQSxTQUMx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
578
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJleGVjU3luYyIsImNvbW1hbmRMaW5lQXJncyIsImZzIiwicGF0aCIsImNsZWFuQWN0ZXVyIiwiY2xlYW5BbWVuZGVtZW50IiwiY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24iLCJjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlIiwiY2xlYW5PcmdhbmUiLCJjbGVhblJldW5pb24iLCJjbGVhblNjcnV0aW4iLCJjbGVhblF1ZXN0aW9uIiwiY2xlYW5Db21wdGVSZW5kdSIsImRhdGFzZXRzIiwiRW5hYmxlZERhdGFzZXRzIiwiZXhpc3RpbmdEYXRlVG9Kc29uIiwicGF0Y2hlZERhdGVUb0pzb24iLCJ3YWxrRGlyIiwiZ2l0IiwiQ29udmVydCIsIkFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0IiwiQWdlbmRhc0NvbnZlcnQiLCJBbWVuZGVtZW50c0NvbnZlcnQiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCIsIkxlZ2lzbGF0dXJlIiwiU2NydXRpbnNDb252ZXJ0IiwiUXVlc3Rpb25zQ29udmVydCIsIkNvbXB0ZXNSZW5kdXNDb252ZXJ0IiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwiQm9vbGVhbiIsImRlZmF1bHRWYWx1ZSIsIm11bHRpcGxlIiwiTnVtYmVyIiwiZGVmYXVsdE9wdGlvbiIsIm9wdGlvbnMiLCJjbGVhblJlb3JnYW5pemVkRGF0YSIsImRhdGFEaXIiLCJEYXRlIiwicHJvdG90eXBlIiwidG9KU09OIiwiZXhpdENvZGUiLCJnaXRHcm91cFVybCIsImNsb25lIiwidHJpbSIsInJlcGxhY2UiLCJ1bmRlZmluZWQiLCJjYXRlZ29yaWVzIiwibWFwIiwiZGF0YXNldE5hbWUiLCJub3RTdHJpY3RFcXVhbCIsImVuYWJsZWREYXRhc2V0cyIsInJlZHVjZSIsIk5vbmUiLCJjaG9vc2VuRGF0YXNldHMiLCJsZWdpc2xhdHVyZXMiLCJsZWdpc2xhdHVyZSIsInNvbWUiLCJlbmFibGVkTGVnaXNsYXR1cmVzIiwidG9TdHJpbmciLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiLCJmaWx0ZXIiLCJkYXRhc2V0IiwiQWxsIiwiaW5jbHVkZXMiLCJBY3RldXJzRXRPcmdhbmVzIiwiYWN0ZXVyc0V0T3JnYW5lcyIsImJhc2VuYW1lIiwiZmlsZW5hbWUiLCJjd2QiLCJlbnYiLCJwcm9jZXNzIiwiZW5jb2RpbmciLCJzdGRpbyIsImRhdGFzZXRSYXdEaXIiLCJqb2luIiwiZGF0YXNldENsZWFuRGlyIiwicHVsbCIsImFuYWx5emVBbmRSZW1vdmUiLCJhY3RldXJTcGxpdFBhdGgiLCJhY3RldXJGaWxlbmFtZSIsImxlbmd0aCIsImVuZHNXaXRoIiwiYWN0ZXVyUmF3RmlsZVBhdGgiLCJ2ZXJib3NlIiwiY29uc29sZSIsImxvZyIsImFjdGV1clJhd0pzb24iLCJyZWFkRmlsZVN5bmMiLCJhY3RldXIiLCJKU09OIiwicGFyc2UiLCJhY3RldXJKc29uIiwic3RyaW5naWZ5IiwiYWN0ZXVyQ2xlYW4iLCJ0b0FjdGV1ciIsImFjdGV1ckNsZWFuSnNvbiIsImFjdGV1clRvSnNvbiIsImFjdGV1ckNsZWFuRmlsZVBhdGgiLCJlbnN1cmVEaXJTeW5jIiwiZGlybmFtZSIsIndyaXRlRmlsZVN5bmMiLCJvcmdhbmVTcGxpdFBhdGgiLCJvcmdhbmVGaWxlbmFtZSIsIm9yZ2FuZVJhd0ZpbGVQYXRoIiwib3JnYW5lUmF3SnNvbiIsIm9yZ2FuZSIsIm9yZ2FuZUpzb24iLCJvcmdhbmVDbGVhbiIsInRvT3JnYW5lIiwib3JnYW5lQ2xlYW5Kc29uIiwib3JnYW5lVG9Kc29uIiwib3JnYW5lQ2xlYW5GaWxlUGF0aCIsImNvbW1pdCIsImVycm9yQ29kZSIsImNvbW1pdEFuZFB1c2giLCJyZW1vdGUiLCJjb21taXRBbmRQdXNoVWlkIiwiQWdlbmRhcyIsImFnZW5kYXMiLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvblJhd0ZpbGVQYXRoIiwicmV1bmlvblJhd0pzb24iLCJyZXVuaW9uIiwicmV1bmlvbkpzb24iLCJyZXVuaW9uQ2xlYW4iLCJ0b1JldW5pb24iLCJyZXVuaW9uQ2xlYW5Kc29uIiwicmV1bmlvblRvSnNvbiIsInJldW5pb25DbGVhbkZpbGVQYXRoIiwiQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50cyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50UmF3RmlsZVBhdGgiLCJhbWVuZGVtZW50UmF3SnNvbiIsImFtZW5kZW1lbnQiLCJhbWVuZGVtZW50SnNvbiIsImFtZW5kZW1lbnRDbGVhbiIsInRvQW1lbmRlbWVudCIsImFtZW5kZW1lbnRDbGVhbkpzb24iLCJhbWVuZGVtZW50VG9Kc29uIiwiYW1lbmRlbWVudENsZWFuRmlsZVBhdGgiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50UmF3RmlsZVBhdGgiLCJkb2N1bWVudFJhd0pzb24iLCJkb2N1bWVudCIsImRvY3VtZW50SnNvbiIsImRvY3VtZW50Q2xlYW4iLCJ0b0RvY3VtZW50IiwiZG9jdW1lbnRDbGVhbkpzb24iLCJkb2N1bWVudFRvSnNvbiIsImRvY3VtZW50Q2xlYW5GaWxlUGF0aCIsImRvc3NpZXJTcGxpdFBhdGgiLCJkb3NzaWVyRmlsZW5hbWUiLCJkb3NzaWVyUmF3RmlsZVBhdGgiLCJkb3NzaWVyUmF3SnNvbiIsImRvc3NpZXIiLCJkb3NzaWVySnNvbiIsImRvc3NpZXJDbGVhbiIsInRvRG9zc2llclBhcmxlbWVudGFpcmUiLCJkb3NzaWVyQ2xlYW5Kc29uIiwiZG9zc2llclBhcmxlbWVudGFpcmVUb0pzb24iLCJkb3NzaWVyQ2xlYW5GaWxlUGF0aCIsIlNjcnV0aW5zIiwic2NydXRpbnMiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpblJhd0ZpbGVQYXRoIiwic2NydXRpblJhd0pzb24iLCJzY3J1dGluIiwic2NydXRpbkpzb24iLCJzY3J1dGluQ2xlYW4iLCJ0b1NjcnV0aW4iLCJzY3J1dGluQ2xlYW5Kc29uIiwic2NydXRpblRvSnNvbiIsInNjcnV0aW5DbGVhbkZpbGVQYXRoIiwiUXVlc3Rpb25zIiwicXVlc3Rpb25zIiwicXVlc3Rpb25zU3BsaXRQYXRoIiwicXVlc3Rpb25GaWxlbmFtZSIsInF1ZXN0aW9uUmF3RmlsZVBhdGgiLCJxdWVzdGlvblJhd0pzb24iLCJxdWVzdGlvbiIsInF1ZXN0aW9uSnNvbiIsInF1ZXN0aW9uQ2xlYW4iLCJ0b1F1ZXN0aW9uIiwicXVlc3Rpb25DbGVhbkpzb24iLCJxdWVzdGlvblRvSnNvbiIsInF1ZXN0aW9uQ2xlYW5GaWxlUGF0aCIsIkNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiY29tcHRlc1JlbmR1c1NlYW5jZXMiLCJjb21wdGVzUmVuZHVzU3BsaXRQYXRoIiwiY29tcHRlUmVuZHVGaWxlbmFtZSIsImNvbXB0ZVJlbmR1UmF3RmlsZVBhdGgiLCJjb21wdGVSZW5kdVJhd0pzb24iLCJjb21wdGVSZW5kdSIsImNvbXB0ZVJlbmR1SnNvbiIsImNvbXB0ZVJlbmR1Q2xlYW4iLCJ0b0NvbXB0ZVJlbmR1IiwiY29tcHRlUmVuZHVDbGVhbkpzb24iLCJjb21wdGVSZW5kdVRvSnNvbiIsImNvbXB0ZVJlbmR1Q2xlYW5GaWxlUGF0aCIsInNpbGVudCIsInJlYWRkaXJTeW5jIiwicGF0aG5hbWUiLCJyZW1vdmVTeW5jIiwicmVwb3NpdG9yeURpciIsInN1YmRpcmVjdG9yaWVzIiwiZXJyb3IiLCJ1aWRCcmFuY2hVcGRhdGUiLCJydW4iLCJjaGlsZFByb2Nlc3MiLCJtYWluIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2NsZWFuX3Jlb3JnYW5pemVkX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7XG4gIGNsZWFuQWN0ZXVyLFxuICBjbGVhbkFtZW5kZW1lbnQsXG4gIGNsZWFuRG9jdW1lbnRPckRpdmlzaW9uLFxuICBjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICBjbGVhbk9yZ2FuZSxcbiAgY2xlYW5SZXVuaW9uLFxuICBjbGVhblNjcnV0aW4sXG4gIGNsZWFuUXVlc3Rpb24sXG4gIGNsZWFuQ29tcHRlUmVuZHUsXG59IGZyb20gXCIuLi9jbGVhbmVyc1wiXG5pbXBvcnQgeyBkYXRhc2V0cywgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGV4aXN0aW5nRGF0ZVRvSnNvbiwgcGF0Y2hlZERhdGVUb0pzb24gfSBmcm9tIFwiLi4vZGF0ZXNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LFxuICBPcmdhbmUsXG59IGZyb20gXCIuLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzQ29udmVydCwgUmV1bmlvbiB9IGZyb20gXCIuLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQsIENvbnZlcnQgYXMgQW1lbmRlbWVudHNDb252ZXJ0IH0gZnJvbSBcIi4uL3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7XG4gIENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQsXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4uL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IExlZ2lzbGF0dXJlIH0gZnJvbSBcIi4uL3R5cGVzL2xlZ2lzbGF0dXJlc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFNjcnV0aW5zQ29udmVydCwgU2NydXRpbiB9IGZyb20gXCIuLi90eXBlcy9zY3J1dGluc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFF1ZXN0aW9uc0NvbnZlcnQsIFF1ZXN0aW9uIH0gZnJvbSBcIi4uL3R5cGVzL3F1ZXN0aW9uc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIENvbXB0ZXNSZW5kdXNDb252ZXJ0LCBDb21wdGVSZW5kdSB9IGZyb20gXCIuLi90eXBlcy9kZWJhdHNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAge1xuICAgICAgYWxpYXM6IFwiQ1wiLFxuICAgICAgaGVscDogXCJjbG9uZSByZXBvc2l0b3JpZXMgZnJvbSBnaXZlbiBncm91cCAob3Igb3JnYW5pemF0aW9uKSBnaXQgVVJMXCIsXG4gICAgICBuYW1lOiBcImNsb25lXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJjXCIsXG4gICAgICBoZWxwOiBcImNvbW1pdCBjbGVhbiBmaWxlc1wiLFxuICAgICAgbmFtZTogXCJjb21taXRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJkXCIsXG4gICAgICBoZWxwOiBcInNpbmdsZSBkYXRhc2V0IHRvIHJlb3JnYW5pemVcIixcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwia1wiLFxuICAgICAgZGVmYXVsdFZhbHVlOiBbXCJBbGxcIl0sXG4gICAgICBoZWxwOiBcImNhdGVnb3JpZXMgb2YgZGF0YXNldHMgdG8gcmVvcmdhbml6ZVwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcImNhdGVnb3JpZXNcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImxcIixcbiAgICAgIGhlbHA6IFwibGVnaXNsYXR1cmVzIG9mIGNhdGVnb3JpZXMgb2YgZGF0YXNldHMgdG8gcmV0cmlldmU7IGxlYXZlIGVtcHR5IG9yIHVzZSAwIGZvciBhbGxcIixcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgbmFtZTogXCJsZWdpc2xhdHVyZVwiLFxuICAgICAgdHlwZTogTnVtYmVyLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwicFwiLFxuICAgICAgaGVscDogXCJwdWxsIHJlcG9zaXRvcmllcyBiZWZvcmUgcHJvY2VlZGluZ1wiLFxuICAgICAgbmFtZTogXCJwdWxsXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwiclwiLFxuICAgICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgbmFtZTogXCJyZW1vdGVcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcInNcIixcbiAgICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgICBuYW1lOiBcInNpbGVudFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlbHA6IFwiZG8gbm90IHJlc2V0IC0taGFyZCBhZnRlciBjb21taXQgdG8gc2F2ZSBJL08gaWYgdGhlIHdvcmtpbmcgdHJlZSBpcyB0byBiZSBkaXNjYXJkZWRcIixcbiAgICAgIG5hbWU6IFwibm8tcmVzZXQtYWZ0ZXItY29tbWl0XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwidlwiLFxuICAgICAgaGVscDogXCJ2ZXJib3NlIGxvZ3NcIixcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgICBoZWxwOiBcImRpcmVjdG9yeSBjb250YWluaW5nIEFzc2VtYmzDqWUgb3BlbiBkYXRhIGZpbGVzXCIsXG4gICAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICBdXG4gIGNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zLCB7XG4gICAgYXJndjogYXJndixcbiAgfSlcbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuZnVuY3Rpb24gY2xlYW5SZW9yZ2FuaXplZERhdGEob3B0aW9uczogYW55KTogbnVtYmVyIHtcbiAgY29uc3QgZGF0YURpcjogc3RyaW5nID0gb3B0aW9ucy5kYXRhRGlyXG5cbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gcGF0Y2hlZERhdGVUb0pzb25cblxuICBsZXQgZXhpdENvZGUgPSAxMCAvLyBOb3RoaW5nIHRvIGNvbW1pdFxuICBjb25zdCBnaXRHcm91cFVybCA9IG9wdGlvbnMuY2xvbmVcbiAgICA/IG9wdGlvbnMuY2xvbmUudHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIilcbiAgICA6IHVuZGVmaW5lZFxuXG4gIG9wdGlvbnMuY2F0ZWdvcmllcy5tYXAoKGRhdGFzZXROYW1lOiBzdHJpbmcpID0+XG4gICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgICAgKEVuYWJsZWREYXRhc2V0cyBhcyBhbnkgYXMgeyBbbmFtZTogc3RyaW5nXTogRW5hYmxlZERhdGFzZXRzIH0pW1xuICAgICAgICBkYXRhc2V0TmFtZVxuICAgICAgXSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGBVbmtub3duIG5hbWUgb2YgZGF0YXNldDogJHtkYXRhc2V0TmFtZX1gLFxuICAgICksXG4gIClcbiAgY29uc3QgZW5hYmxlZERhdGFzZXRzID0gb3B0aW9ucy5jYXRlZ29yaWVzLnJlZHVjZShcbiAgICAoZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsIGRhdGFzZXROYW1lOiBzdHJpbmcpOiBFbmFibGVkRGF0YXNldHMgPT5cbiAgICAgIGVuYWJsZWREYXRhc2V0cyB8XG4gICAgICAoRW5hYmxlZERhdGFzZXRzIGFzIGFueSBhcyB7IFtuYW1lOiBzdHJpbmddOiBFbmFibGVkRGF0YXNldHMgfSlbXG4gICAgICAgIGRhdGFzZXROYW1lXG4gICAgICBdLFxuICAgIEVuYWJsZWREYXRhc2V0cy5Ob25lLFxuICApXG5cbiAgbGV0IGNob29zZW5EYXRhc2V0cyA9IGRhdGFzZXRzXG4gIC8vIFdoZW4gYSBnaXZlbiBsZWdpc2xhdHVyZSBpcyAwLCBpdCBpcyB0aGUgc2FtZSBhcyBnaXZpbmcgbm8gbGVnaXNsYXR1cmU6XG4gIC8vIEl0IG1lYW5zIFwiZXZlcnkgbGVnaXNsYXR1cmVzXCIuXG4gIGNvbnN0IGxlZ2lzbGF0dXJlcyA9IG9wdGlvbnMubGVnaXNsYXR1cmU/LnNvbWUoXG4gICAgKGxlZ2lzbGF0dXJlOiBudW1iZXIpID0+IGxlZ2lzbGF0dXJlID09PSAwLFxuICApXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IG9wdGlvbnMubGVnaXNsYXR1cmVcbiAgaWYgKGxlZ2lzbGF0dXJlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZW5hYmxlZExlZ2lzbGF0dXJlcyA9IGxlZ2lzbGF0dXJlcy5tYXAoKGxlZ2lzbGF0dXJlOiBudW1iZXIpID0+XG4gICAgICBsZWdpc2xhdHVyZS50b1N0cmluZygpLFxuICAgIClcbiAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY2hvb3NlbkRhdGFzZXRzKSkge1xuICAgICAgY2hvb3NlbkRhdGFzZXRzW2tleSBhcyBrZXlvZiB0eXBlb2YgY2hvb3NlbkRhdGFzZXRzXSA9IHZhbHVlLmZpbHRlcihcbiAgICAgICAgKGRhdGFzZXQ6IHsgbGVnaXNsYXR1cmU6IGFueSB9KSA9PlxuICAgICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCB8fFxuICAgICAgICAgIGVuYWJsZWRMZWdpc2xhdHVyZXMuaW5jbHVkZXMoZGF0YXNldC5sZWdpc2xhdHVyZSksXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgaWYgKG9wdGlvbnMucHVsbCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IHJlc2V0IC0taGFyZCBvcmlnaW4vbWFzdGVyYCwge1xuICAgICAgICAgIGN3ZDogZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBwdWxsIC0tcmViYXNlYCwge1xuICAgICAgICAgIGN3ZDogZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHthY3RldXJSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1clJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJSYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gSlNPTi5wYXJzZShhY3RldXJSYXdKc29uKVxuICAgICAgICBjbGVhbkFjdGV1cihhY3RldXIpXG4gICAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGFjdGV1ciwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgYWN0ZXVyQ2xlYW46IEFjdGV1ciA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvQWN0ZXVyKGFjdGV1ckpzb24pXG4gICAgICAgIGNvbnN0IGFjdGV1ckNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBBY3RldXJzRXRPcmdhbmVzQ29udmVydC5hY3RldXJUb0pzb24oYWN0ZXVyQ2xlYW4pXG5cbiAgICAgICAgY29uc3QgYWN0ZXVyQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5hY3RldXJTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoYWN0ZXVyQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoYWN0ZXVyQ2xlYW5GaWxlUGF0aCwgYWN0ZXVyQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IG9yZ2FuZVNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIFtcIm9yZ2FuZXNcIl0pKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZUZpbGVuYW1lID0gb3JnYW5lU3BsaXRQYXRoW29yZ2FuZVNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIW9yZ2FuZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZVJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLm9yZ2FuZVNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7b3JnYW5lUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmdhbmVSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMob3JnYW5lUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IG9yZ2FuZSA9IEpTT04ucGFyc2Uob3JnYW5lUmF3SnNvbilcbiAgICAgICAgY2xlYW5PcmdhbmUob3JnYW5lKVxuICAgICAgICBjb25zdCBvcmdhbmVKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShvcmdhbmUsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IG9yZ2FuZUNsZWFuOiBPcmdhbmUgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b09yZ2FuZShvcmdhbmVKc29uKVxuICAgICAgICBjb25zdCBvcmdhbmVDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQub3JnYW5lVG9Kc29uKG9yZ2FuZUNsZWFuKVxuXG4gICAgICAgIGNvbnN0IG9yZ2FuZUNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4ub3JnYW5lU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKG9yZ2FuZUNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKG9yZ2FuZUNsZWFuRmlsZVBhdGgsIG9yZ2FuZUNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiYWN0ZXVyc1wiLCBcIm9yZ2FuZXNcIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgcmV1bmlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlbmFtZSA9IHJldW5pb25TcGxpdFBhdGhbcmV1bmlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXJldW5pb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4ucmV1bmlvblNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7cmV1bmlvblJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmV1bmlvblJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhyZXVuaW9uUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHJldW5pb24gPSBKU09OLnBhcnNlKHJldW5pb25SYXdKc29uKVxuICAgICAgICBjbGVhblJldW5pb24ocmV1bmlvbilcbiAgICAgICAgY29uc3QgcmV1bmlvbkpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHJldW5pb24sIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IHJldW5pb25DbGVhbjogUmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgICAgY29uc3QgcmV1bmlvbkNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBBZ2VuZGFzQ29udmVydC5yZXVuaW9uVG9Kc29uKHJldW5pb25DbGVhbilcblxuICAgICAgICBjb25zdCByZXVuaW9uQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5yZXVuaW9uU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKHJldW5pb25DbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhyZXVuaW9uQ2xlYW5GaWxlUGF0aCwgcmV1bmlvbkNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyKSkge1xuICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZW5hbWUgPVxuICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWFtZW5kZW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50UmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgICAuLi5hbWVuZGVtZW50U3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke2FtZW5kZW1lbnRSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgYW1lbmRlbWVudFJhd0ZpbGVQYXRoLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBKU09OLnBhcnNlKGFtZW5kZW1lbnRSYXdKc29uKVxuICAgICAgICBjbGVhbkFtZW5kZW1lbnQoYW1lbmRlbWVudClcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGFtZW5kZW1lbnQsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRDbGVhbjogQW1lbmRlbWVudCA9XG4gICAgICAgICAgQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudChhbWVuZGVtZW50SnNvbilcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudENsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBBbWVuZGVtZW50c0NvbnZlcnQuYW1lbmRlbWVudFRvSnNvbihhbWVuZGVtZW50Q2xlYW4pXG5cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudENsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uYW1lbmRlbWVudFNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShhbWVuZGVtZW50Q2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoYW1lbmRlbWVudENsZWFuRmlsZVBhdGgsIGFtZW5kZW1lbnRDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcIi5cIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCBbXCJkb2N1bWVudHNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRSYXdGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICAgIC4uLmRvY3VtZW50U3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke2RvY3VtZW50UmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb2N1bWVudFJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb2N1bWVudFJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkb2N1bWVudCA9IEpTT04ucGFyc2UoZG9jdW1lbnRSYXdKc29uKVxuICAgICAgICBjbGVhbkRvY3VtZW50T3JEaXZpc2lvbihkb2N1bWVudClcbiAgICAgICAgY29uc3QgZG9jdW1lbnRKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShkb2N1bWVudCwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgZG9jdW1lbnRDbGVhbjogRG9jdW1lbnQgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9jdW1lbnQoZG9jdW1lbnRKc29uKVxuICAgICAgICBjb25zdCBkb2N1bWVudENsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC5kb2N1bWVudFRvSnNvbihkb2N1bWVudENsZWFuKVxuXG4gICAgICAgIGNvbnN0IGRvY3VtZW50Q2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5kb2N1bWVudFNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShkb2N1bWVudENsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGRvY3VtZW50Q2xlYW5GaWxlUGF0aCwgZG9jdW1lbnRDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgZG9zc2llclNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIFtcImRvc3NpZXJzXCJdKSkge1xuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZW5hbWUgPSBkb3NzaWVyU3BsaXRQYXRoW2Rvc3NpZXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFkb3NzaWVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llclJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLmRvc3NpZXJTcGxpdFBhdGgpXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke2Rvc3NpZXJSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvc3NpZXJSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9zc2llclJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkb3NzaWVyID0gSlNPTi5wYXJzZShkb3NzaWVyUmF3SnNvbilcbiAgICAgICAgY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZShkb3NzaWVyKVxuICAgICAgICBjb25zdCBkb3NzaWVySnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZG9zc2llciwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgZG9zc2llckNsZWFuOiBEb3NzaWVyUGFybGVtZW50YWlyZSA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZShkb3NzaWVySnNvbilcbiAgICAgICAgY29uc3QgZG9zc2llckNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC5kb3NzaWVyUGFybGVtZW50YWlyZVRvSnNvbihkb3NzaWVyQ2xlYW4pXG5cbiAgICAgICAgY29uc3QgZG9zc2llckNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uZG9zc2llclNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShkb3NzaWVyQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZG9zc2llckNsZWFuRmlsZVBhdGgsIGRvc3NpZXJDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcImRvY3VtZW50c1wiLCBcImRvc3NpZXJzXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvb3NlbkRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9IHNjcnV0aW5TcGxpdFBhdGhbc2NydXRpblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4uc2NydXRpblNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7c2NydXRpblJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpblJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhzY3J1dGluUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHNjcnV0aW4gPSBKU09OLnBhcnNlKHNjcnV0aW5SYXdKc29uKVxuICAgICAgICBjbGVhblNjcnV0aW4oc2NydXRpbilcbiAgICAgICAgY29uc3Qgc2NydXRpbkpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHNjcnV0aW4sIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IHNjcnV0aW5DbGVhbjogU2NydXRpbiA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW4oc2NydXRpbkpzb24pXG4gICAgICAgIGNvbnN0IHNjcnV0aW5DbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgU2NydXRpbnNDb252ZXJ0LnNjcnV0aW5Ub0pzb24oc2NydXRpbkNsZWFuKVxuXG4gICAgICAgIGNvbnN0IHNjcnV0aW5DbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLnNjcnV0aW5TcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoc2NydXRpbkNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHNjcnV0aW5DbGVhbkZpbGVQYXRoLCBzY3J1dGluQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUXVlc3Rpb25zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnF1ZXN0aW9ucykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uc1NwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uRmlsZW5hbWUgPVxuICAgICAgICAgIHF1ZXN0aW9uc1NwbGl0UGF0aFtxdWVzdGlvbnNTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFxdWVzdGlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgICAuLi5xdWVzdGlvbnNTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7cXVlc3Rpb25SYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHF1ZXN0aW9uUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gSlNPTi5wYXJzZShxdWVzdGlvblJhd0pzb24pXG4gICAgICAgIGNsZWFuUXVlc3Rpb24ocXVlc3Rpb24pXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uSnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocXVlc3Rpb24sIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uQ2xlYW46IFF1ZXN0aW9uID1cbiAgICAgICAgICBRdWVzdGlvbnNDb252ZXJ0LnRvUXVlc3Rpb24ocXVlc3Rpb25Kc29uKVxuICAgICAgICBjb25zdCBxdWVzdGlvbkNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBRdWVzdGlvbnNDb252ZXJ0LnF1ZXN0aW9uVG9Kc29uKHF1ZXN0aW9uQ2xlYW4pXG5cbiAgICAgICAgY29uc3QgcXVlc3Rpb25DbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLnF1ZXN0aW9uc1NwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShxdWVzdGlvbkNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHF1ZXN0aW9uQ2xlYW5GaWxlUGF0aCwgcXVlc3Rpb25DbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcIi5cIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLnhtbFwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgY29tcHRlc1JlbmR1c1NwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1RmlsZW5hbWUgPVxuICAgICAgICAgIGNvbXB0ZXNSZW5kdXNTcGxpdFBhdGhbY29tcHRlc1JlbmR1c1NwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWNvbXB0ZVJlbmR1RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVSYXdGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICAgIC4uLmNvbXB0ZXNSZW5kdXNTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7Y29tcHRlUmVuZHVSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1UmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgIGNvbXB0ZVJlbmR1UmF3RmlsZVBhdGgsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHUgPSBKU09OLnBhcnNlKGNvbXB0ZVJlbmR1UmF3SnNvbilcbiAgICAgICAgY2xlYW5Db21wdGVSZW5kdShjb21wdGVSZW5kdSlcbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShjb21wdGVSZW5kdSwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVDbGVhbjogQ29tcHRlUmVuZHUgPVxuICAgICAgICAgIENvbXB0ZXNSZW5kdXNDb252ZXJ0LnRvQ29tcHRlUmVuZHUoY29tcHRlUmVuZHVKc29uKVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBDb21wdGVzUmVuZHVzQ29udmVydC5jb21wdGVSZW5kdVRvSnNvbihjb21wdGVSZW5kdUNsZWFuKVxuXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1Q2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5jb21wdGVzUmVuZHVzU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGNvbXB0ZVJlbmR1Q2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoY29tcHRlUmVuZHVDbGVhbkZpbGVQYXRoLCBjb21wdGVSZW5kdUNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXN0b3JlIHN0YW5kYXJkIGNvbnZlcnNpb24gb2YgZGF0ZXMgdG8gSlNPTi5cbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZXhpc3RpbmdEYXRlVG9Kc29uXG5cbiAgcmV0dXJuIGV4aXRDb2RlXG59XG5cbmZ1bmN0aW9uIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWU6IHN0cmluZywgb3B0aW9uczogYW55KTogYW55IHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coYENsZWFuaW5nIGRpcmVjdG9yeTogJHtkYXRhc2V0Q2xlYW5EaXJ94oCmYClcbiAgfVxuICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRDbGVhbkRpcilcbiAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0Q2xlYW5EaXIpKSB7XG4gICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgcGF0aG5hbWUgPSBwYXRoLmpvaW4oZGF0YXNldENsZWFuRGlyLCBmaWxlbmFtZSlcbiAgICBmcy5yZW1vdmVTeW5jKHBhdGhuYW1lKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbW1pdEFuZFB1c2hVaWQoXG4gIHJlcG9zaXRvcnlEaXI6IHN0cmluZyxcbiAgb3B0aW9uczogYW55LFxuICBzdWJkaXJlY3RvcmllczogYW55LFxuKTogYm9vbGVhbiB7XG4gIGxldCBlcnJvciA9IGZhbHNlXG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIGdpdC51aWRCcmFuY2hVcGRhdGUoXG4gICAgICByZXBvc2l0b3J5RGlyLFxuICAgICAgc3ViZGlyZWN0b3JpZXMsXG4gICAgICBvcHRpb25zW1wibm8tcmVzZXQtYWZ0ZXItY29tbWl0XCJdLFxuICAgIClcbiAgICBmb3IgKGNvbnN0IHJlbW90ZSBvZiBvcHRpb25zLnJlbW90ZSB8fCBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZ2l0LnJ1bihyZXBvc2l0b3J5RGlyLCBgcHVzaCAtLXF1aWV0ICR7cmVtb3RlfSB1aWQ6dWlkYClcbiAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9yXG59XG5cbmZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogbnVtYmVyIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICByZXR1cm4gY2xlYW5SZW9yZ2FuaXplZERhdGEob3B0aW9ucylcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiY2xlYW5fcmVvcmdhbml6ZWRfZGF0YS50c1wiKSlcbiAgcHJvY2Vzcy5leGl0KG1haW4ocHJvY2Vzcy5hcmd2KSlcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsTUFBTSxNQUFNLFFBQVE7QUFDM0IsU0FBU0MsUUFBUSxRQUFRLGVBQWU7QUFDeEMsT0FBT0MsZUFBZSxNQUFNLG1CQUFtQjtBQUMvQyxPQUFPQyxFQUFFLE1BQU0sVUFBVTtBQUN6QixPQUFPQyxJQUFJLE1BQU0sTUFBTTtBQUFBLFNBR3JCQyxXQUFXLEVBQ1hDLGVBQWUsRUFDZkMsdUJBQXVCLEVBQ3ZCQyx5QkFBeUIsRUFDekJDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxZQUFZLEVBQ1pDLGFBQWEsRUFDYkMsZ0JBQWdCO0FBQUEsU0FFVEMsUUFBUSxFQUFFQyxlQUFlO0FBQUEsU0FDekJDLGtCQUFrQixFQUFFQyxpQkFBaUI7QUFBQSxTQUNyQ0MsT0FBTztBQUFBLE9BQ1QsS0FBS0MsR0FBRztBQUFBLFNBR2JDLE9BQU8sSUFBSUMsdUJBQXVCO0FBQUEsU0FHM0JELE9BQU8sSUFBSUUsY0FBYztBQUFBLFNBQ2JGLE9BQU8sSUFBSUcsa0JBQWtCO0FBQUEsU0FFaERILE9BQU8sSUFBSUksMEJBQTBCO0FBQUEsU0FJOUJDLFdBQVc7QUFBQSxT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
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  require("core-js/modules/es.array.slice.js");
4
+ require("core-js/modules/es.date.to-string.js");
5
+ require("core-js/modules/es.regexp.to-string.js");
4
6
  require("core-js/modules/es.function.name.js");
5
7
  require("core-js/modules/es.array.from.js");
6
8
  require("core-js/modules/es.string.iterator.js");
@@ -257,4 +259,4 @@ function generateSingleDiffedAmendment(diffedAmendment) {
257
259
  });
258
260
  }
259
261
  diffAmendements(options.dataDir);
260
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RlZXBPYmplY3REaWZmIiwiX2RhdGFzZXRzIiwiX2ZpbGVfc3lzdGVtcyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiaXRlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJmcm9tIiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJvIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsImxlbmd0aCIsImkiLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJlIiwiX2UiLCJmIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsImNhbGwiLCJzdGVwIiwibmV4dCIsIl9lMiIsIm1pbkxlbiIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJ0ZXN0IiwibGVuIiwiYXJyMiIsImRpZmZlZEFtZW5kbWVudHMiLCJuZXdBbWVuZG1lbnRzIiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJTdHJpbmciLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImRpZmZBbWVuZGVtZW50cyIsImRhdGFEaXIiLCJwcmV2aW91cyIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3MiLCJleGl0IiwiZnMiLCJleGlzdHNTeW5jIiwib3V0cHV0IiwiX2l0ZXJhdG9yIiwiZGF0YXNldHMiLCJhbWVuZGVtZW50cyIsIl9zdGVwIiwiZGF0YXNldCIsInN0cnVjdHVyZSIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsIm9yaWdpbmFsSnNvbkRpciIsInBhdGgiLCJqb2luIiwiZmlsZW5hbWUiLCJzaWxlbnQiLCJsb2ciLCJjb25jYXQiLCJfaXRlcmF0b3IyIiwid2Fsa0RpciIsIl9zdGVwMiIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJuZXdGaWxlUGF0aCIsIm5ld0ZpbGUiLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiLCJ0b0xvY2FsZVN0cmluZyIsIm9sZEZpbGVQYXRoIiwib2xkRmlsZUV4aXN0cyIsImFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzIiwib2xkRmlsZSIsImRpZmYiLCJkZXRhaWxlZERpZmYiLCJrZXlzIiwiYWRkZWQiLCJ1cGRhdGVkIiwiZGVsZXRlZCIsImFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzIiwiZ2VuZXJhdGVEaWZmRmlsZXMiLCJtb2RlIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsImVuY29kaW5nIiwiZmxhZyIsImZvckVhY2giLCJkaWZmZWRBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudCIsIm5ld0FtZW5kbWVudCIsImdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50IiwiZmlsZSIsImFtZW5kbWVudCIsImRhdGEiLCJwdXNoIiwiZGlmZmVkRGF0YSIsInNoaWZ0Iiwic2hvcnREaXIiLCJwb3AiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJyZXBsYWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZGlmZl9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IGRldGFpbGVkRGlmZiB9IGZyb20gXCJkZWVwLW9iamVjdC1kaWZmXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmNvbnN0IGRpZmZlZEFtZW5kbWVudHM6IEFycmF5PGFueT4gPSBbXVxuY29uc3QgbmV3QW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJtXCIsXG4gICAgaGVscDogXCJEaWZmIG1vZGVzLlwiLFxuICAgIG5hbWU6IFwibW9kZVwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCJtZXJnZWRcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJwXCIsXG4gICAgaGVscDogXCJEaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcHJldmlvdXMgZHVtcCBvZiBhbWVuZG1lbnRzXCIsXG4gICAgbmFtZTogXCJwcmV2aW91c1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIm9cIixcbiAgICBoZWxwOiBcIk91dHB1dCBkaXJlY3RvcnkgZm9yIGRpZmYgZmlsZXNcIixcbiAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIuL2RpZmZfb3V0cHV0cy9cIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuZnVuY3Rpb24gZGlmZkFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBpZiAoIW9wdGlvbnMucHJldmlvdXMpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJObyBwcmV2aW91cyBkYXRhIGZvbGRlciBzcGVjaWZpZWQuIFlvdSBtdXN0IHByb3ZpZGUgb25lIHdpdGggdGhlIC1wIG9yIC0tcHJldmlvdXMgb3B0aW9uLiBFeGl0aW5nLi4uXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy5vdXRwdXQpKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiVGhlIG91dHB1dCBkaXIgZG9lcyBub3QgZXhpc3RzLiBZb3UgbXVzdCBwcm92aWRlIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4gRGVmYXVsdCBkaXJlY3RvcnkgaXMgLi9kaWZmX291dHB1dHMvXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBEaWZmaW5nICR7b3JpZ2luYWxKc29uRGlyfSBmb2xkZXIuLi5gKVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIob3JpZ2luYWxKc29uRGlyKSkge1xuICAgICAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID1cbiAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpciArIFwiL1wiICsgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgZnMucmVhZEZpbGVTeW5jKG5ld0ZpbGVQYXRoKS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVQYXRoID1cbiAgICAgICAgICAgIG9wdGlvbnMucHJldmlvdXMgK1xuICAgICAgICAgICAgZGF0YXNldC5maWxlbmFtZSArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoLmpvaW4oXCIvXCIpXG4gICAgICAgICAgY29uc3Qgb2xkRmlsZUV4aXN0cyA9IGZzLmV4aXN0c1N5bmMob2xkRmlsZVBhdGgpXG4gICAgICAgICAgaWYgKCFvbGRGaWxlRXhpc3RzKSB7XG4gICAgICAgICAgICAvLyBJZiBmaWxlIGZvdW5kIGRvZXMgbm90IGV4aXN0IGluIHRoZSBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIFwiRmlsZSBkaWQgbm90IGV4aXN0cyBwcmV2aW91c2x5LiBHdWVzc2luZyBpdCdzIGEgbmV3IGFtZW5kbWVudC4gQWRkaW5nIHRvIHRoZSBkaWZmIGxpc3QgZm9yIG5ldyBvYmplY3RzXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKG5ld0ZpbGUsIGFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZpbGUgYWxyZWFkeSBleGlzdGVkIGluIHByZXZpb3VzIGR1bXBcbiAgICAgICAgICBsZXQgb2xkRmlsZTogSlNPTiA9IEpTT04ucGFyc2UoXCJ7fVwiKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBHYXRoZXIgZGF0YSBvZiB0aGUgZmlsZSBhbmQgcmV0cmFuc2NyaXB0IGFzIGEgSnNvbiBvYmplY3RcbiAgICAgICAgICAgIG9sZEZpbGUgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvbGRGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRoZSBwcm9jZXNzIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbiBpbiBjYXNlIG9mIGNvcnJ1cHQgSlNPTiBkYXRhXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBkaWZmIGJlZXR3ZWVuIHRoZSB0d28gSlNPTiBvYmplY3RzIChvbGQgJiBuZXcgZHVtcClcbiAgICAgICAgICBjb25zdCBkaWZmOiBhbnkgPSBkZXRhaWxlZERpZmYob2xkRmlsZSwgbmV3RmlsZSlcblxuICAgICAgICAgIC8vIElmIG5vIGNoYW5nZXMgYmVldHdlZW4gdGhlIHR3byBkdW1wc1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuYWRkZWQpLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi51cGRhdGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuZGVsZXRlZCkubGVuZ3RoID09PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRvIG5leHQgaXRlcmF0aW9uIGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ2VuZXJhdGUgYSBmaWxlXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2hhbmdlcyBmb3VuZCAhXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyhkaWZmLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG91dHB1dChzKVwiKVxuICAgIH1cblxuICAgIGdlbmVyYXRlRGlmZkZpbGVzKClcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYWwgcHJvY2VzcyBmb3Igb3V0cHV0IG9mIGRpZmZzLlxuICogVGhlIHNjcmlwdCBoYW5kbGVzIHR3byBkaWZmZXJlbnQgbW9kZXMgOlxuICogLSBtZXJnZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBuZXcgYW1lbmRlbWVudHMgYW5kIGEgc2luZ2xlIGZpbGVcbiAqICAgICAgICAgICAgZm9yIHVwZGF0ZWQgYW1lbmRlbWVudHNcbiAqIC0gc3BsaXR0ZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBlYWNoIGFtZW5kbWVudHMsIGVpdGhlciBpdHMgbmV3IG9yIHVwZGF0ZWQuXG4gKlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURpZmZGaWxlcygpIHtcbiAgLy8gSGFuZGxlcyBtZXJnZWQgbW9kZVxuICBpZiAob3B0aW9ucy5tb2RlID09PSBcIm1lcmdlZFwiKSB7XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG1lcmdlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIGlmIChkaWZmZWRBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIGRpZmZlZCBhbWVuZG1lbnRzIGZpbGVzXCIpXG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBvcHRpb25zLm91dHB1dCArIFwiYW1lbmRlbWVudHNfWFZfZGlmZmVkLmpzb25cIixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGlmZmVkQW1lbmRtZW50cyksXG4gICAgICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTm8gZGlmZiBpbiB0aGUgYWxyZWFkeSBleGlzdGluZyBhbWVuZG1lbnRzXCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0FtZW5kbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgbmV3IGFtZW5kbWVudHMgZmlsZVwiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX25ldy5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIG5ldyBhbWVuZGVtZW50LiBTa2lwcGluZyBmaWxlIGdlbmVyYXRpb25cIilcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5tb2RlID09PSBcInNwbGl0dGVkXCIpIHtcbiAgICAvLyBIYW5kbGVzIHNwbGl0dGVkIG1vZGVcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgc2VwYXJhdGVkIGZpbGVzXCIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0aGUgY29weSBhY3Rpb24gb2YgdGhlIG5ldyBhbmQgZGlmZmVkIGFtZW5kbWVudHNcbiAgICAgKi9cblxuICAgIGRpZmZlZEFtZW5kbWVudHMuZm9yRWFjaCgoZGlmZmVkQW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudClcbiAgICB9KVxuXG4gICAgbmV3QW1lbmRtZW50cy5mb3JFYWNoKChuZXdBbWVuZG1lbnQ6IGFueSkgPT4ge1xuICAgICAgZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50KVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcIlVua25vd24gb3V0cHV0IG1vZGUuIEFib3J0aW5nLi4uXCIpXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxufVxuXG4vLyBQdXNoZXMgYW4gYW1lbmRtZW50IHRvIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNvcHkgbmV3IGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKGZpbGU6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZmlsZSxcbiAgfVxuICBuZXdBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IHVwZGF0ZWQgYW1lbmRtZW50cyBmaWxlc1xuZnVuY3Rpb24gYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZmVkRGF0YTogYW55LCBwYXRoOiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgYW1lbmRtZW50OiBhbnkgPSB7XG4gICAgcGF0aDogcGF0aCxcbiAgICBkYXRhOiBkaWZmZWREYXRhLFxuICB9XG4gIGRpZmZlZEFtZW5kbWVudHMucHVzaChhbWVuZG1lbnQpXG59XG5cbi8vIGdlbmVyYXRlcyBhIGZpbGUgd2l0aCBhIGNvcHkgb2YgdGhlIG5ldyBhbWVuZGVtZW50XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudChuZXdBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgbmV3QW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLm5ld0FtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBjb25zb2xlLmxvZyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBvcHRpb25zLm91dHB1dCArIG5ld0FtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLm5ldyQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBtb2RpZmllZCBkYXRhIG9mIHRoZSBwcmV2aW91c2x5IGV4aXN0aW5nIGFtZW5kbWVudDtcbmZ1bmN0aW9uIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudDoge1xuICBwYXRoOiBBcnJheTxzdHJpbmc+XG4gIGRhdGE6IGFueVxufSkge1xuICBkaWZmZWRBbWVuZG1lbnQucGF0aC5zaGlmdCgpXG5cbiAgY29uc3Qgc2hvcnREaXI6IEFycmF5PGFueT4gPSBbLi4uZGlmZmVkQW1lbmRtZW50LnBhdGhdXG4gIHNob3J0RGlyLnBvcCgpXG4gIGZzLm1rZGlyU3luYyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICB9KVxuXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgK1xuICAgICAgZGlmZmVkQW1lbmRtZW50LnBhdGguam9pbihcIi9cIikucmVwbGFjZSgvKFxcLmpzb24pLywgXCIuZGlmZiQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG5kaWZmQW1lbmRlbWVudHMob3B0aW9ucy5kYXRhRGlyKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxnQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsZUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksU0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQXlDLFNBQUFELHVCQUFBTyxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdB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
262
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RlZXBPYmplY3REaWZmIiwiX2RhdGFzZXRzIiwiX2ZpbGVfc3lzdGVtcyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiaXRlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJmcm9tIiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJvIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsImxlbmd0aCIsImkiLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJlIiwiX2UiLCJmIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsImNhbGwiLCJzdGVwIiwibmV4dCIsIl9lMiIsIm1pbkxlbiIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJ0ZXN0IiwibGVuIiwiYXJyMiIsImRpZmZlZEFtZW5kbWVudHMiLCJuZXdBbWVuZG1lbnRzIiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJTdHJpbmciLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImRpZmZBbWVuZGVtZW50cyIsImRhdGFEaXIiLCJwcmV2aW91cyIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3MiLCJleGl0IiwiZnMiLCJleGlzdHNTeW5jIiwib3V0cHV0IiwiX2l0ZXJhdG9yIiwiZGF0YXNldHMiLCJhbWVuZGVtZW50cyIsIl9zdGVwIiwiZGF0YXNldCIsInN0cnVjdHVyZSIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsIm9yaWdpbmFsSnNvbkRpciIsInBhdGgiLCJqb2luIiwiZmlsZW5hbWUiLCJzaWxlbnQiLCJsb2ciLCJjb25jYXQiLCJfaXRlcmF0b3IyIiwid2Fsa0RpciIsIl9zdGVwMiIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJuZXdGaWxlUGF0aCIsIm5ld0ZpbGUiLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiLCJ0b0xvY2FsZVN0cmluZyIsIm9sZEZpbGVQYXRoIiwib2xkRmlsZUV4aXN0cyIsImFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzIiwib2xkRmlsZSIsImRpZmYiLCJkZXRhaWxlZERpZmYiLCJrZXlzIiwiYWRkZWQiLCJ1cGRhdGVkIiwiZGVsZXRlZCIsImFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzIiwiZ2VuZXJhdGVEaWZmRmlsZXMiLCJtb2RlIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsImVuY29kaW5nIiwiZmxhZyIsImZvckVhY2giLCJkaWZmZWRBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudCIsIm5ld0FtZW5kbWVudCIsImdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50IiwiZmlsZSIsImFtZW5kbWVudCIsImRhdGEiLCJwdXNoIiwiZGlmZmVkRGF0YSIsInNoaWZ0Iiwic2hvcnREaXIiLCJwb3AiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJyZXBsYWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZGlmZl9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IGRldGFpbGVkRGlmZiB9IGZyb20gXCJkZWVwLW9iamVjdC1kaWZmXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmNvbnN0IGRpZmZlZEFtZW5kbWVudHM6IEFycmF5PGFueT4gPSBbXVxuY29uc3QgbmV3QW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJtXCIsXG4gICAgaGVscDogXCJEaWZmIG1vZGVzLlwiLFxuICAgIG5hbWU6IFwibW9kZVwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCJtZXJnZWRcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJwXCIsXG4gICAgaGVscDogXCJEaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcHJldmlvdXMgZHVtcCBvZiBhbWVuZG1lbnRzXCIsXG4gICAgbmFtZTogXCJwcmV2aW91c1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIm9cIixcbiAgICBoZWxwOiBcIk91dHB1dCBkaXJlY3RvcnkgZm9yIGRpZmYgZmlsZXNcIixcbiAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIuL2RpZmZfb3V0cHV0cy9cIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuZnVuY3Rpb24gZGlmZkFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBpZiAoIW9wdGlvbnMucHJldmlvdXMpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJObyBwcmV2aW91cyBkYXRhIGZvbGRlciBzcGVjaWZpZWQuIFlvdSBtdXN0IHByb3ZpZGUgb25lIHdpdGggdGhlIC1wIG9yIC0tcHJldmlvdXMgb3B0aW9uLiBFeGl0aW5nLi4uXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy5vdXRwdXQpKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiVGhlIG91dHB1dCBkaXIgZG9lcyBub3QgZXhpc3RzLiBZb3UgbXVzdCBwcm92aWRlIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4gRGVmYXVsdCBkaXJlY3RvcnkgaXMgLi9kaWZmX291dHB1dHMvXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBEaWZmaW5nICR7b3JpZ2luYWxKc29uRGlyfSBmb2xkZXIuLi5gKVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIob3JpZ2luYWxKc29uRGlyKSkge1xuICAgICAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID1cbiAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpciArIFwiL1wiICsgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgZnMucmVhZEZpbGVTeW5jKG5ld0ZpbGVQYXRoKS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVQYXRoID1cbiAgICAgICAgICAgIG9wdGlvbnMucHJldmlvdXMgK1xuICAgICAgICAgICAgZGF0YXNldC5maWxlbmFtZSArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoLmpvaW4oXCIvXCIpXG4gICAgICAgICAgY29uc3Qgb2xkRmlsZUV4aXN0cyA9IGZzLmV4aXN0c1N5bmMob2xkRmlsZVBhdGgpXG4gICAgICAgICAgaWYgKCFvbGRGaWxlRXhpc3RzKSB7XG4gICAgICAgICAgICAvLyBJZiBmaWxlIGZvdW5kIGRvZXMgbm90IGV4aXN0IGluIHRoZSBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIFwiRmlsZSBkaWQgbm90IGV4aXN0cyBwcmV2aW91c2x5LiBHdWVzc2luZyBpdCdzIGEgbmV3IGFtZW5kbWVudC4gQWRkaW5nIHRvIHRoZSBkaWZmIGxpc3QgZm9yIG5ldyBvYmplY3RzXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKG5ld0ZpbGUsIGFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZpbGUgYWxyZWFkeSBleGlzdGVkIGluIHByZXZpb3VzIGR1bXBcbiAgICAgICAgICBsZXQgb2xkRmlsZTogSlNPTiA9IEpTT04ucGFyc2UoXCJ7fVwiKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBHYXRoZXIgZGF0YSBvZiB0aGUgZmlsZSBhbmQgcmV0cmFuc2NyaXB0IGFzIGEgSnNvbiBvYmplY3RcbiAgICAgICAgICAgIG9sZEZpbGUgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvbGRGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRoZSBwcm9jZXNzIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbiBpbiBjYXNlIG9mIGNvcnJ1cHQgSlNPTiBkYXRhXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBkaWZmIGJlZXR3ZWVuIHRoZSB0d28gSlNPTiBvYmplY3RzIChvbGQgJiBuZXcgZHVtcClcbiAgICAgICAgICBjb25zdCBkaWZmOiBhbnkgPSBkZXRhaWxlZERpZmYob2xkRmlsZSwgbmV3RmlsZSlcblxuICAgICAgICAgIC8vIElmIG5vIGNoYW5nZXMgYmVldHdlZW4gdGhlIHR3byBkdW1wc1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuYWRkZWQpLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi51cGRhdGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuZGVsZXRlZCkubGVuZ3RoID09PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRvIG5leHQgaXRlcmF0aW9uIGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ2VuZXJhdGUgYSBmaWxlXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2hhbmdlcyBmb3VuZCAhXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyhkaWZmLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG91dHB1dChzKVwiKVxuICAgIH1cblxuICAgIGdlbmVyYXRlRGlmZkZpbGVzKClcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYWwgcHJvY2VzcyBmb3Igb3V0cHV0IG9mIGRpZmZzLlxuICogVGhlIHNjcmlwdCBoYW5kbGVzIHR3byBkaWZmZXJlbnQgbW9kZXMgOlxuICogLSBtZXJnZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBuZXcgYW1lbmRlbWVudHMgYW5kIGEgc2luZ2xlIGZpbGVcbiAqICAgICAgICAgICAgZm9yIHVwZGF0ZWQgYW1lbmRlbWVudHNcbiAqIC0gc3BsaXR0ZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBlYWNoIGFtZW5kbWVudHMsIGVpdGhlciBpdHMgbmV3IG9yIHVwZGF0ZWQuXG4gKlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURpZmZGaWxlcygpIHtcbiAgLy8gSGFuZGxlcyBtZXJnZWQgbW9kZVxuICBpZiAob3B0aW9ucy5tb2RlID09PSBcIm1lcmdlZFwiKSB7XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG1lcmdlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIGlmIChkaWZmZWRBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIGRpZmZlZCBhbWVuZG1lbnRzIGZpbGVzXCIpXG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBvcHRpb25zLm91dHB1dCArIFwiYW1lbmRlbWVudHNfWFZfZGlmZmVkLmpzb25cIixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGlmZmVkQW1lbmRtZW50cyksXG4gICAgICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTm8gZGlmZiBpbiB0aGUgYWxyZWFkeSBleGlzdGluZyBhbWVuZG1lbnRzXCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0FtZW5kbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgbmV3IGFtZW5kbWVudHMgZmlsZVwiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX25ldy5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIG5ldyBhbWVuZGVtZW50LiBTa2lwcGluZyBmaWxlIGdlbmVyYXRpb25cIilcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5tb2RlID09PSBcInNwbGl0dGVkXCIpIHtcbiAgICAvLyBIYW5kbGVzIHNwbGl0dGVkIG1vZGVcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgc2VwYXJhdGVkIGZpbGVzXCIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0aGUgY29weSBhY3Rpb24gb2YgdGhlIG5ldyBhbmQgZGlmZmVkIGFtZW5kbWVudHNcbiAgICAgKi9cblxuICAgIGRpZmZlZEFtZW5kbWVudHMuZm9yRWFjaCgoZGlmZmVkQW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudClcbiAgICB9KVxuXG4gICAgbmV3QW1lbmRtZW50cy5mb3JFYWNoKChuZXdBbWVuZG1lbnQ6IGFueSkgPT4ge1xuICAgICAgZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50KVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcIlVua25vd24gb3V0cHV0IG1vZGUuIEFib3J0aW5nLi4uXCIpXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxufVxuXG4vLyBQdXNoZXMgYW4gYW1lbmRtZW50IHRvIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNvcHkgbmV3IGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKGZpbGU6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZmlsZSxcbiAgfVxuICBuZXdBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IHVwZGF0ZWQgYW1lbmRtZW50cyBmaWxlc1xuZnVuY3Rpb24gYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZmVkRGF0YTogYW55LCBwYXRoOiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgYW1lbmRtZW50OiBhbnkgPSB7XG4gICAgcGF0aDogcGF0aCxcbiAgICBkYXRhOiBkaWZmZWREYXRhLFxuICB9XG4gIGRpZmZlZEFtZW5kbWVudHMucHVzaChhbWVuZG1lbnQpXG59XG5cbi8vIGdlbmVyYXRlcyBhIGZpbGUgd2l0aCBhIGNvcHkgb2YgdGhlIG5ldyBhbWVuZGVtZW50XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudChuZXdBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgbmV3QW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLm5ld0FtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBjb25zb2xlLmxvZyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBvcHRpb25zLm91dHB1dCArIG5ld0FtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLm5ldyQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBtb2RpZmllZCBkYXRhIG9mIHRoZSBwcmV2aW91c2x5IGV4aXN0aW5nIGFtZW5kbWVudDtcbmZ1bmN0aW9uIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudDoge1xuICBwYXRoOiBBcnJheTxzdHJpbmc+XG4gIGRhdGE6IGFueVxufSkge1xuICBkaWZmZWRBbWVuZG1lbnQucGF0aC5zaGlmdCgpXG5cbiAgY29uc3Qgc2hvcnREaXI6IEFycmF5PGFueT4gPSBbLi4uZGlmZmVkQW1lbmRtZW50LnBhdGhdXG4gIHNob3J0RGlyLnBvcCgpXG4gIGZzLm1rZGlyU3luYyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICB9KVxuXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgK1xuICAgICAgZGlmZmVkQW1lbmRtZW50LnBhdGguam9pbihcIi9cIikucmVwbGFjZSgvKFxcLmpzb24pLywgXCIuZGlmZiQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG5kaWZmQW1lbmRlbWVudHMob3B0aW9ucy5kYXRhRGlyKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLGdCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxlQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxTQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFBeUMsU0FBQUQsdUJBQUFPLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEs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