@tricoteuses/assemblee 1.1.4 → 1.1.6

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 (119) hide show
  1. package/lib/api.js +1 -1
  2. package/lib/bugs/acteur-00010/plugin.test.js +1 -1
  3. package/lib/bugs/acteur-00010.js +1 -1
  4. package/lib/bugs/acteur-00010.mjs +1 -1
  5. package/lib/bugs/agenda-00002/plugin.test.js +1 -1
  6. package/lib/bugs/agenda-00002.js +2 -2
  7. package/lib/bugs/agenda-00002.mjs +2 -2
  8. package/lib/bugs/agenda-00008/plugin.test.js +1 -1
  9. package/lib/bugs/agenda-00008.js +1 -1
  10. package/lib/bugs/agenda-00008.mjs +1 -1
  11. package/lib/bugs/agenda-00011/plugin.test.js +1 -1
  12. package/lib/bugs/agenda-00011.js +1 -1
  13. package/lib/bugs/agenda-00011.mjs +1 -1
  14. package/lib/bugs.js +1 -1
  15. package/lib/bugs.mjs +1 -1
  16. package/lib/cleaners/actes_legislatifs.js +1 -1
  17. package/lib/cleaners/actes_legislatifs.mjs +1 -1
  18. package/lib/cleaners/acteurs.js +1 -1
  19. package/lib/cleaners/acteurs.mjs +1 -1
  20. package/lib/cleaners/amendements.js +1 -1
  21. package/lib/cleaners/amendements.mjs +1 -1
  22. package/lib/cleaners/documents.js +1 -1
  23. package/lib/cleaners/documents.mjs +1 -1
  24. package/lib/cleaners/dossiers_legislatifs.js +1 -1
  25. package/lib/cleaners/dossiers_legislatifs.mjs +1 -1
  26. package/lib/cleaners/index.js +1 -1
  27. package/lib/cleaners/organes.js +1 -1
  28. package/lib/cleaners/organes.mjs +1 -1
  29. package/lib/cleaners/reunions.js +1 -1
  30. package/lib/cleaners/reunions.mjs +1 -1
  31. package/lib/cleaners/scrutins.js +1 -1
  32. package/lib/cleaners/scrutins.mjs +1 -1
  33. package/lib/cleaners/xml.js +1 -1
  34. package/lib/cleaners/xml.mjs +1 -1
  35. package/lib/datasets.js +1 -1
  36. package/lib/datasets.mjs +1 -1
  37. package/lib/dates.js +16 -7
  38. package/lib/dates.mjs +15 -6
  39. package/lib/dossiers_legislatifs.js +1 -1
  40. package/lib/dossiers_legislatifs.mjs +1 -1
  41. package/lib/file_systems.js +2 -2
  42. package/lib/file_systems.mjs +2 -2
  43. package/lib/git.d.ts +2 -1
  44. package/lib/git.js +77 -44
  45. package/lib/git.mjs +48 -25
  46. package/lib/index.js +1 -1
  47. package/lib/inserters.js +1 -1
  48. package/lib/inserters.mjs +1 -1
  49. package/lib/loaders.js +1 -1
  50. package/lib/loaders.mjs +1 -1
  51. package/lib/organes.js +1 -1
  52. package/lib/organes.mjs +1 -1
  53. package/lib/parsers/documents.js +1 -1
  54. package/lib/parsers/documents.mjs +1 -1
  55. package/lib/parsers/index.js +1 -1
  56. package/lib/parsers/recherche_amendements.js +39 -32
  57. package/lib/parsers/recherche_amendements.mjs +5 -1
  58. package/lib/raw_types/acteurs_et_organes.js +1 -1
  59. package/lib/raw_types/acteurs_et_organes.mjs +1 -1
  60. package/lib/raw_types/agendas.js +1 -1
  61. package/lib/raw_types/agendas.mjs +1 -1
  62. package/lib/raw_types/amendements.js +1 -1
  63. package/lib/raw_types/amendements.mjs +1 -1
  64. package/lib/raw_types/dossiers_legislatifs.js +1 -1
  65. package/lib/raw_types/dossiers_legislatifs.mjs +1 -1
  66. package/lib/raw_types/scrutins.js +1 -1
  67. package/lib/raw_types/scrutins.mjs +1 -1
  68. package/lib/scripts/bugs_helper.js +3 -3
  69. package/lib/scripts/bugs_helper.mjs +3 -3
  70. package/lib/scripts/clean_data.js +1 -1
  71. package/lib/scripts/clean_data.mjs +1 -1
  72. package/lib/scripts/clean_reorganized_data.js +63 -61
  73. package/lib/scripts/clean_reorganized_data.mjs +55 -48
  74. package/lib/scripts/diff_amendements.js +1 -1
  75. package/lib/scripts/diff_amendements.mjs +1 -1
  76. package/lib/scripts/document_dossiers_legislatifs.js +1 -1
  77. package/lib/scripts/document_dossiers_legislatifs.mjs +1 -1
  78. package/lib/scripts/get_today_reunions.js +1 -1
  79. package/lib/scripts/merge_scrutins.js +1 -1
  80. package/lib/scripts/merge_scrutins.mjs +1 -1
  81. package/lib/scripts/parse_textes_lois.js +5 -48
  82. package/lib/scripts/parse_textes_lois.mjs +5 -49
  83. package/lib/scripts/raw_types_from_amendements.js +1 -1
  84. package/lib/scripts/raw_types_from_amendements.mjs +1 -1
  85. package/lib/scripts/reorganize_data.js +231 -239
  86. package/lib/scripts/reorganize_data.mjs +50 -59
  87. package/lib/scripts/retrieve_deputes_photos.js +86 -107
  88. package/lib/scripts/retrieve_deputes_photos.mjs +21 -42
  89. package/lib/scripts/retrieve_documents.js +3 -3
  90. package/lib/scripts/retrieve_documents.mjs +3 -3
  91. package/lib/scripts/retrieve_open_data.js +29 -22
  92. package/lib/scripts/retrieve_open_data.mjs +9 -4
  93. package/lib/scripts/retrieve_pending_amendments.js +73 -81
  94. package/lib/scripts/retrieve_pending_amendments.mjs +19 -26
  95. package/lib/scripts/retrieve_senateurs_photos.js +65 -87
  96. package/lib/scripts/retrieve_senateurs_photos.mjs +21 -42
  97. package/lib/scripts/retrieve_textes_lois.js +32 -71
  98. package/lib/scripts/retrieve_textes_lois.mjs +6 -44
  99. package/lib/scripts/test_load.js +1 -1
  100. package/lib/scripts/test_load_big_files.js +1 -1
  101. package/lib/scripts/validate_json.js +3 -3
  102. package/lib/scripts/validate_json.mjs +3 -3
  103. package/lib/shared_types/codes_actes.js +1 -1
  104. package/lib/strings.js +1 -1
  105. package/lib/strings.mjs +1 -1
  106. package/lib/types/acteurs_et_organes.js +1 -1
  107. package/lib/types/acteurs_et_organes.mjs +1 -1
  108. package/lib/types/agendas.js +1 -1
  109. package/lib/types/agendas.mjs +1 -1
  110. package/lib/types/amendements.js +1 -1
  111. package/lib/types/amendements.mjs +1 -1
  112. package/lib/types/dossiers_legislatifs.js +1 -1
  113. package/lib/types/dossiers_legislatifs.mjs +1 -1
  114. package/lib/types/legislatures.js +1 -1
  115. package/lib/types/scrutins.js +1 -1
  116. package/lib/types/scrutins.mjs +1 -1
  117. package/lib/urls.js +1 -1
  118. package/lib/urls.mjs +1 -1
  119. package/package.json +6 -5
package/lib/loaders.mjs CHANGED
@@ -552,4 +552,4 @@ export function pathFromScrutinUid(scrutinsDir, uid) {
552
552
  fs.ensureDirSync(numeroMilliersDir);
553
553
  return path.join(numeroMilliersDir, uid);
554
554
  }
555
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJmcyIsInBhdGgiLCJFbmFibGVkRGF0YXNldHMiLCJkYXRhc2V0cyIsIndhbGtEaXIiLCJDb252ZXJ0IiwiQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQiLCJBZ2VuZGFzQ29udmVydCIsIkFtZW5kZW1lbnRzQ29udmVydCIsIkRvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0IiwiTGVnaXNsYXR1cmUiLCJTY3J1dGluc0NvbnZlcnQiLCJkb2N1bWVudFVpZFJlZ2V4IiwiZG9zc2llclVpZFJlZ2V4IiwicmV1bmlvblVpZFJlZ2V4Iiwic2NydXRpblVpZFJlZ2V4IiwibG9hZEFzc2VtYmxlZURhdGEiLCJkYXRhRGlyIiwiZW5hYmxlZERhdGFzZXRzIiwibGVnaXNsYXR1cmUiLCJsb2ciLCJhY3RldXJCeVVpZCIsIm9yZ2FuZUJ5VWlkIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImRhdGFzZXQiLCJhY3RldXJzRXRPcmdhbmVzIiwiaWdub3JlRm9yV2ViIiwiQWxsIiwiZGF0YXNldERpciIsImpvaW4iLCJmaWxlbmFtZSIsInJlcGxhY2UiLCJhY3RldXJTcGxpdFBhdGgiLCJhY3RldXJGaWxlbmFtZSIsImxlbmd0aCIsImVuZHNXaXRoIiwiYWN0ZXVyRmlsZVBhdGgiLCJjb25zb2xlIiwiYWN0ZXVySnNvbiIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwiYWN0ZXVyIiwidG9BY3RldXIiLCJ1aWQiLCJ1bmRlZmluZWQiLCJvcmdhbmVTcGxpdFBhdGgiLCJvcmdhbmVGaWxlbmFtZSIsIm9yZ2FuZUZpbGVQYXRoIiwib3JnYW5lSnNvbiIsIm9yZ2FuZSIsInRvT3JnYW5lIiwicmV1bmlvbkJ5VWlkIiwicmV1bmlvbnNCeURheSIsInJldW5pb25zQnlEb3NzaWVyVWlkIiwiQWdlbmRhcyIsImFnZW5kYXMiLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvbkZpbGVQYXRoIiwicmV1bmlvbkpzb24iLCJyZXVuaW9uIiwidG9SZXVuaW9uIiwiZGF5IiwidGltZXN0YW1wRGVidXQiLCJ0b0lTT1N0cmluZyIsInNwbGl0IiwicmV1bmlvbnNBdERheSIsInB1c2giLCJvZGoiLCJwb2ludE9kaiIsInBvaW50c09kaiIsImRvc3NpZXJMZWdpc2xhdGlmUmVmIiwiZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMiLCJyZXVuaW9uc0F0RG9zc2llclVpZCIsImFtZW5kZW1lbnRCeVVpZCIsIkFtZW5kZW1lbnRzIiwiYW1lbmRlbWVudHMiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwiYW1lbmRlbWVudEZpbGVQYXRoIiwiYW1lbmRlbWVudEpzb24iLCJhbWVuZGVtZW50IiwidG9BbWVuZGVtZW50IiwiZG9jdW1lbnRCeVVpZCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50RmlsZVBhdGgiLCJkb2N1bWVudEpzb24iLCJkb2N1bWVudCIsInRvRG9jdW1lbnQiLCJkb3NzaWVyU3BsaXRQYXRoIiwiZG9zc2llckZpbGVuYW1lIiwiZG9zc2llckZpbGVQYXRoIiwiZG9zc2llckpzb24iLCJkb3NzaWVyIiwidG9Eb3NzaWVyUGFybGVtZW50YWlyZSIsInRpdHJlRG9zc2llciIsInNlbmF0Q2hlbWluIiwidGl0cmVDaGVtaW4iLCJwaG90b0J5VWlkIiwiUGhvdG9zIiwianNvbkZpbGVQYXRoIiwiU2VpemUiLCJleGlzdHNTeW5jIiwianNvbiIsIk9iamVjdCIsImFzc2lnbiIsIkpTT04iLCJwYXJzZSIsInNjcnV0aW5CeVVpZCIsIlNjcnV0aW5zIiwic2NydXRpbnMiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbkZpbGVQYXRoIiwic2NydXRpbkpzb24iLCJzY3J1dGluIiwidG9TY3J1dGluIiwibG9hZEFzc2VtYmxlZURhdGFGcm9tQmlnRmlsZXMiLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJhY3RldXJzIiwib3JnYW5lcyIsInRvQWdlbmRhcyIsInJldW5pb25zIiwidG9BbWVuZGVtZW50cyIsInRleHRlTGVnaXNsYXRpZiIsInRleHRlc0xlZ2lzbGF0aWZzIiwidG9Eb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlcyIsInRvU2NydXRpbnMiLCJwYXRoRnJvbURvY3VtZW50VWlkIiwiZG9jdW1lbnRzRGlyIiwibWF0Y2giLCJleGVjIiwibm90U3RyaWN0RXF1YWwiLCJkb2N1bWVudFR5cGUiLCJjaGFtYnJlRGlyIiwicmVwdWJsaXF1ZURpciIsImxlZ2lzbGF0dXJlRGlyIiwiZXRhdERpciIsIm51bWVybyIsInN1YnN0ciIsIm51bWVyb01pbGxpZXJzRGlyIiwiZW5zdXJlRGlyU3luYyIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJkb3NzaWVyc0RpciIsInBhdGhGcm9tUmV1bmlvblVpZCIsInJldW5pb25zRGlyIiwic2Vzc2lvbkRpciIsImlkRGlyIiwibnVtZXJvTWlsbGlvbnNEaXIiLCJwYXRoRnJvbVNjcnV0aW5VaWQiLCJzY3J1dGluc0RpciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2FkZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vLyBMb2FkIGRhdGEgZnJvbSBmaWxlc1xuXG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmV4cG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuL2RhdGFzZXRzXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi9kYXRhc2V0c1wiXG5leHBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LFxuICBPcmdhbmUsXG4gIFBob3RvLFxufSBmcm9tIFwiLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzQ29udmVydCwgUmV1bmlvbiB9IGZyb20gXCIuL3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQW1lbmRlbWVudCwgQ29udmVydCBhcyBBbWVuZGVtZW50c0NvbnZlcnQgfSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IExlZ2lzbGF0dXJlIH0gZnJvbSBcIi4vdHlwZXMvbGVnaXNsYXR1cmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNDb252ZXJ0LCBTY3J1dGluIH0gZnJvbSBcIi4vdHlwZXMvc2NydXRpbnNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGEge1xuICByZWFkb25seSBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfVxuICByZWFkb25seSBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9XG4gIHJlYWRvbmx5IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9XG4gIHJlYWRvbmx5IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH1cbiAgcmVhZG9ubHkgcmV1bmlvbnNCeURvc3NpZXJVaWQ6IHsgW2Rvc3NpZXJVaWQ6IHN0cmluZ106IFJldW5pb25bXSB9XG4gIHJlYWRvbmx5IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH1cbn1cblxuY29uc3QgZG9jdW1lbnRVaWRSZWdleCA9XG4gIC9eKEFDSU58QUxDTnxBVkNFfEFWSVN8REVDTHxFVERJfExFVFR8TUVTU3xQSU9OfFBOUkV8UFJKTHxSQVBQfFJJTkZ8UklPTikoQU58U04pKFJcXGQrKVtMU10oXFxkKykoQnxCVEF8QlRDfFRBUCkoXFxkKykoLS4qKT8kL1xuY29uc3QgZG9zc2llclVpZFJlZ2V4ID0gL15ETChSXFxkKykoTFxcZCspTihcXGQrKSQvXG5jb25zdCByZXVuaW9uVWlkUmVnZXggPVxuICAvXlJVKEFOfENHfFNOKShSXFxkKykoTFxcZCspKFtBU11cXGR7NH0pKElEQ3xJREZMP3xJRFMpKFxcZCspJC9cbmNvbnN0IHNjcnV0aW5VaWRSZWdleCA9IC9eVlRBTihSXFxkKykoTFxcZCspVihcXGQrKSQvXG5cbi8qKiBMb2FkIGRhdGEgZnJvbSBzcGxpdCBmaWxlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXNzZW1ibGVlRGF0YShcbiAgZGF0YURpcjogc3RyaW5nLFxuICBlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IERhdGEge1xuICBjb25zdCBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfSA9IHt9XG4gIGNvbnN0IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhY3RldXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJhY3RldXJzXCJdKSkge1xuICAgICAgICBjb25zdCBhY3RldXJGaWxlbmFtZSA9IGFjdGV1clNwbGl0UGF0aFthY3RldXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhY3RldXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3RldXJGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5hY3RldXJTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FjdGV1ckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVySnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGFjdGV1ckZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhY3RldXIgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cihhY3RldXJKc29uKVxuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcImFjdGV1clwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAoYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID0gYWN0ZXVyXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBvcmdhbmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJvcmdhbmVzXCJdKSkge1xuICAgICAgICBjb25zdCBvcmdhbmVGaWxlbmFtZSA9IG9yZ2FuZVNwbGl0UGF0aFtvcmdhbmVTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFvcmdhbmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmdhbmVGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5vcmdhbmVTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke29yZ2FuZUZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKG9yZ2FuZUZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBvcmdhbmUgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b09yZ2FuZShvcmdhbmVKc29uKVxuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcIm9yZ2FuZVwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAob3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID0gb3JnYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG4gICAgICBmb3IgKGNvbnN0IHJldW5pb25TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCByZXVuaW9uRmlsZW5hbWUgPSByZXVuaW9uU3BsaXRQYXRoW3JldW5pb25TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFyZXVuaW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnJldW5pb25TcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3JldW5pb25GaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMocmV1bmlvbkZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCByZXVuaW9uID0gQWdlbmRhc0NvbnZlcnQudG9SZXVuaW9uKHJldW5pb25Kc29uKVxuICAgICAgICBpZiAocmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9IHJldW5pb25cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRheSA9IHJldW5pb24udGltZXN0YW1wRGVidXQudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF1cbiAgICAgICAgbGV0IHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV1cbiAgICAgICAgaWYgKHJldW5pb25zQXREYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV0gPSBbXVxuICAgICAgICB9XG4gICAgICAgIHJldW5pb25zQXREYXkucHVzaChyZXVuaW9uKVxuXG4gICAgICAgIGNvbnN0IG9kaiA9IHJldW5pb24ub2RqXG4gICAgICAgIGlmIChvZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZvciAoY29uc3QgcG9pbnRPZGogb2Ygb2RqLnBvaW50c09kaiB8fCBbXSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkb3NzaWVyTGVnaXNsYXRpZlJlZiBvZiBwb2ludE9kai5kb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyB8fFxuICAgICAgICAgICAgICBbXSkge1xuICAgICAgICAgICAgICBsZXQgcmV1bmlvbnNBdERvc3NpZXJVaWQgPVxuICAgICAgICAgICAgICAgIHJldW5pb25zQnlEb3NzaWVyVWlkW2Rvc3NpZXJMZWdpc2xhdGlmUmVmXVxuICAgICAgICAgICAgICBpZiAocmV1bmlvbnNBdERvc3NpZXJVaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkID0gcmV1bmlvbnNCeURvc3NpZXJVaWRbXG4gICAgICAgICAgICAgICAgICBkb3NzaWVyTGVnaXNsYXRpZlJlZlxuICAgICAgICAgICAgICAgIF0gPSBbXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkLnB1c2gocmV1bmlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZW5hbWUgPVxuICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWFtZW5kZW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYW1lbmRlbWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7YW1lbmRlbWVudEZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhbWVuZGVtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50KGFtZW5kZW1lbnRKc29uKVxuICAgICAgICBpZiAoYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9IGFtZW5kZW1lbnRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBkb2N1bWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcImRvY3VtZW50c1wiXSkpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlbmFtZSA9IGRvY3VtZW50U3BsaXRQYXRoW2RvY3VtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghZG9jdW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb2N1bWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmRvY3VtZW50U3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtkb2N1bWVudEZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9jdW1lbnRGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0RvY3VtZW50KGRvY3VtZW50SnNvbilcbiAgICAgICAgaWYgKGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID0gZG9jdW1lbnRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb3NzaWVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgZG9zc2llckZpbGVuYW1lID0gZG9zc2llclNwbGl0UGF0aFtkb3NzaWVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghZG9zc2llckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb3NzaWVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtkb3NzaWVyRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVySnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvc3NpZXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9zc2llciA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZShkb3NzaWVySnNvbilcbiAgICAgICAgY29uc3QgdGl0cmVEb3NzaWVyID0gZG9zc2llci50aXRyZURvc3NpZXJcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci5zZW5hdENoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIudGl0cmVDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUGhvdG9zKSB7XG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGBwaG90b3NfZGVwdXRlc18ke1xuICAgICAgICAgIC8vIFRPRE86IEhhbmRsZSBMZWdpc2xhdHVyZS5BbGwuXG4gICAgICAgICAgbGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCA/IExlZ2lzbGF0dXJlLlNlaXplIDogbGVnaXNsYXR1cmVcbiAgICAgICAgfWAsXG4gICAgICAgIFwiZGVwdXRlcy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgICAgICBcInNlbmF0ZXVycy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBzY3J1dGluU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVuYW1lID0gc2NydXRpblNwbGl0UGF0aFtzY3J1dGluU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghc2NydXRpbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5zY3J1dGluU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtzY3J1dGluRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHNjcnV0aW5GaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgc2NydXRpbiA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW4oc2NydXRpbkpzb24pXG4gICAgICAgIGlmIChzY3J1dGluQnlVaWRbc2NydXRpbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY3J1dGluQnlVaWRbc2NydXRpbi51aWRdID0gc2NydXRpblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY3RldXJCeVVpZCxcbiAgICBhbWVuZGVtZW50QnlVaWQsXG4gICAgZG9jdW1lbnRCeVVpZCxcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQsXG4gICAgb3JnYW5lQnlVaWQsXG4gICAgcGhvdG9CeVVpZCxcbiAgICByZXVuaW9uQnlVaWQsXG4gICAgcmV1bmlvbnNCeURheSxcbiAgICByZXVuaW9uc0J5RG9zc2llclVpZCxcbiAgICBzY3J1dGluQnlVaWQsXG4gIH1cbn1cblxuLyoqIExvYWQgZGF0YSBmcm9tIGJpZyBtb25vbHl0aWMgZmlsZXMuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURhdGFGcm9tQmlnRmlsZXMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBEYXRhIHtcbiAgY29uc3QgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH0gPSB7fVxuICBjb25zdCBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYWN0ZXVyc0V0T3JnYW5lcyA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvQWN0ZXVyc0V0T3JnYW5lcyhqc29uKVxuICAgICAgZm9yIChjb25zdCBhY3RldXIgb2YgYWN0ZXVyc0V0T3JnYW5lcy5hY3RldXJzKSB7XG4gICAgICAgIC8vIEtlZXAgdGhlIGZpcnN0IGV4aXN0aW5nIFwiYWN0ZXVyXCIsIGJlY2F1c2UgdGhlIGZpcnN0IHdyYXBwZXIgaXMgdGhlIG1vc3QgY29tcGxldGUuXG4gICAgICAgIGlmIChhY3RldXJCeVVpZFthY3RldXIudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPSBhY3RldXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBvcmdhbmUgb2YgYWN0ZXVyc0V0T3JnYW5lcy5vcmdhbmVzKSB7XG4gICAgICAgIC8vIEtlZXAgdGhlIGZpcnN0IGV4aXN0aW5nIFwib3JnYW5lXCIsIGJlY2F1c2UgdGhlIGZpcnN0IHdyYXBwZXIgaXMgdGhlIG1vc3QgY29tcGxldGUuXG4gICAgICAgIGlmIChvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgb3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPSBvcmdhbmVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJldW5pb25CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RGF5OiB7IFtkYXk6IHN0cmluZ106IFJldW5pb25bXSB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURvc3NpZXJVaWQ6IHsgW2Rvc3NpZXJVaWQ6IHN0cmluZ106IFJldW5pb25bXSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhZ2VuZGFzID0gQWdlbmRhc0NvbnZlcnQudG9BZ2VuZGFzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHJldW5pb24gb2YgYWdlbmRhcy5yZXVuaW9ucykge1xuICAgICAgICBpZiAocmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9IHJldW5pb25cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRheSA9IHJldW5pb24udGltZXN0YW1wRGVidXQudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF1cbiAgICAgICAgbGV0IHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV1cbiAgICAgICAgaWYgKHJldW5pb25zQXREYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV0gPSBbXVxuICAgICAgICB9XG4gICAgICAgIHJldW5pb25zQXREYXkucHVzaChyZXVuaW9uKVxuXG4gICAgICAgIGNvbnN0IG9kaiA9IHJldW5pb24ub2RqXG4gICAgICAgIGlmIChvZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZvciAoY29uc3QgcG9pbnRPZGogb2Ygb2RqLnBvaW50c09kaiB8fCBbXSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkb3NzaWVyTGVnaXNsYXRpZlJlZiBvZiBwb2ludE9kai5kb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyB8fFxuICAgICAgICAgICAgICBbXSkge1xuICAgICAgICAgICAgICBsZXQgcmV1bmlvbnNBdERvc3NpZXJVaWQgPVxuICAgICAgICAgICAgICAgIHJldW5pb25zQnlEb3NzaWVyVWlkW2Rvc3NpZXJMZWdpc2xhdGlmUmVmXVxuICAgICAgICAgICAgICBpZiAocmV1bmlvbnNBdERvc3NpZXJVaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkID0gcmV1bmlvbnNCeURvc3NpZXJVaWRbXG4gICAgICAgICAgICAgICAgICBkb3NzaWVyTGVnaXNsYXRpZlJlZlxuICAgICAgICAgICAgICAgIF0gPSBbXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkLnB1c2gocmV1bmlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFtZW5kZW1lbnRzID0gQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudHMoanNvbilcbiAgICAgIGZvciAoY29uc3QgdGV4dGVMZWdpc2xhdGlmIG9mIGFtZW5kZW1lbnRzLnRleHRlc0xlZ2lzbGF0aWZzKSB7XG4gICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudCBvZiB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMpIHtcbiAgICAgICAgICBpZiAoYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhbWVuZGVtZW50QnlVaWRbYW1lbmRlbWVudC51aWRdID0gYW1lbmRlbWVudFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBkb3NzaWVyc0xlZ2lzbGF0aWZzID1cbiAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyc0xlZ2lzbGF0aWZzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IGRvY3VtZW50IG9mIGRvc3NpZXJzTGVnaXNsYXRpZnMudGV4dGVzTGVnaXNsYXRpZnMpIHtcbiAgICAgICAgaWYgKGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID0gZG9jdW1lbnRcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyIG9mIGRvc3NpZXJzTGVnaXNsYXRpZnMuZG9zc2llcnNQYXJsZW1lbnRhaXJlcykge1xuICAgICAgICBjb25zdCB0aXRyZURvc3NpZXIgPSBkb3NzaWVyLnRpdHJlRG9zc2llclxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluW3RpdHJlRG9zc2llci5zZW5hdENoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluW3RpdHJlRG9zc2llci5zZW5hdENoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci50aXRyZUNoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pblt0aXRyZURvc3NpZXIudGl0cmVDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pblt0aXRyZURvc3NpZXIudGl0cmVDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlBob3Rvcykge1xuICAgIGNvbnN0IHBob3RvQnlVaWQgPSB7fVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGBwaG90b3NfZGVwdXRlc18ke1xuICAgICAgICAgIC8vIFRPRE86IEhhbmRsZSBMZWdpc2xhdHVyZS5BbGwuXG4gICAgICAgICAgbGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCA/IExlZ2lzbGF0dXJlLlNlaXplIDogbGVnaXNsYXR1cmVcbiAgICAgICAgfWAsXG4gICAgICAgIFwiZGVwdXRlcy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgICAgICBcInNlbmF0ZXVycy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBzY3J1dGlucyA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW5zKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygc2NydXRpbnMuc2NydXRpbnMpIHtcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IGRvY3VtZW50VWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgZG9jdW1lbnQgVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGRvY3VtZW50VHlwZSA9IHBhdGguam9pbihkb2N1bWVudHNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgY2hhbWJyZURpciA9IHBhdGguam9pbihkb2N1bWVudFR5cGUsIG1hdGNoIVsyXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgZXRhdERpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihldGF0RGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKFxuICBkb3NzaWVyc0Rpcjogc3RyaW5nLFxuICB1aWQ6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gZG9zc2llclVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIGRvc3NpZXIgcGFybGVtZW50YWlyZSBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihkb3NzaWVyc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbMl0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMFwiICsgbWF0Y2ghWzNdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHIobnVtZXJvLmxlbmd0aCAtIDYpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbVJldW5pb25VaWQocmV1bmlvbnNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHJldW5pb25VaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciByZXVuaW9uIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCBjaGFtYnJlRGlyID0gcGF0aC5qb2luKHJldW5pb25zRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oY2hhbWJyZURpciwgbWF0Y2ghWzJdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IHNlc3Npb25EaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgaWREaXIgPSBwYXRoLmpvaW4oc2Vzc2lvbkRpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA5KVxuICBjb25zdCBudW1lcm9NaWxsaW9uc0RpciA9IHBhdGguam9pbihpZERpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obnVtZXJvTWlsbGlvbnNEaXIsIG51bWVyby5zdWJzdHIoMywgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tU2NydXRpblVpZChzY3J1dGluc0Rpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gc2NydXRpblVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIHNjcnV0aW4gVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oc2NydXRpbnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzJdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVszXVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxPQUFPQSxNQUFNLE1BQU0sUUFBUTtBQUMzQixPQUFPQyxFQUFFLE1BQU0sVUFBVTtBQUN6QixPQUFPQyxJQUFJLE1BQU0sTUFBTTtBQUFBLFNBRWRDLGVBQWU7QUFBQSxTQUNmQyxRQUFRLEVBQUVELGVBQWU7QUFBQSxTQUN6QkUsT0FBTztBQUFBLFNBQ1BBLE9BQU87QUFBQSxTQUdkQyxPQUFPLElBQUlDLHVCQUF1QjtBQUFBLFNBSTNCRCxPQUFPLElBQUlFLGNBQWM7QUFBQSxTQUNiRixPQUFPLElBQUlHLGtCQUFrQjtBQUFBLFNBRWhESCxPQUFPLElBQUlJLDBCQUEwQjtBQUFBLFNBSTlCQyxXQUFXO0FBQUEsU0FDWEwsT0FBTyxJQUFJTSxlQUFlO0FBcUJuQyxNQUFNQyxnQkFBZ0IsR0FDcEIsMkhBQTJIO0FBQzdILE1BQU1DLGVBQWUsR0FB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
555
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJmcyIsInBhdGgiLCJFbmFibGVkRGF0YXNldHMiLCJkYXRhc2V0cyIsIndhbGtEaXIiLCJDb252ZXJ0IiwiQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQiLCJBZ2VuZGFzQ29udmVydCIsIkFtZW5kZW1lbnRzQ29udmVydCIsIkRvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0IiwiTGVnaXNsYXR1cmUiLCJTY3J1dGluc0NvbnZlcnQiLCJkb2N1bWVudFVpZFJlZ2V4IiwiZG9zc2llclVpZFJlZ2V4IiwicmV1bmlvblVpZFJlZ2V4Iiwic2NydXRpblVpZFJlZ2V4IiwibG9hZEFzc2VtYmxlZURhdGEiLCJkYXRhRGlyIiwiZW5hYmxlZERhdGFzZXRzIiwibGVnaXNsYXR1cmUiLCJsb2ciLCJhY3RldXJCeVVpZCIsIm9yZ2FuZUJ5VWlkIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImRhdGFzZXQiLCJhY3RldXJzRXRPcmdhbmVzIiwiaWdub3JlRm9yV2ViIiwiQWxsIiwiZGF0YXNldERpciIsImpvaW4iLCJmaWxlbmFtZSIsInJlcGxhY2UiLCJhY3RldXJTcGxpdFBhdGgiLCJhY3RldXJGaWxlbmFtZSIsImxlbmd0aCIsImVuZHNXaXRoIiwiYWN0ZXVyRmlsZVBhdGgiLCJjb25zb2xlIiwiYWN0ZXVySnNvbiIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwiYWN0ZXVyIiwidG9BY3RldXIiLCJ1aWQiLCJ1bmRlZmluZWQiLCJvcmdhbmVTcGxpdFBhdGgiLCJvcmdhbmVGaWxlbmFtZSIsIm9yZ2FuZUZpbGVQYXRoIiwib3JnYW5lSnNvbiIsIm9yZ2FuZSIsInRvT3JnYW5lIiwicmV1bmlvbkJ5VWlkIiwicmV1bmlvbnNCeURheSIsInJldW5pb25zQnlEb3NzaWVyVWlkIiwiQWdlbmRhcyIsImFnZW5kYXMiLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvbkZpbGVQYXRoIiwicmV1bmlvbkpzb24iLCJyZXVuaW9uIiwidG9SZXVuaW9uIiwiZGF5IiwidGltZXN0YW1wRGVidXQiLCJ0b0lTT1N0cmluZyIsInNwbGl0IiwicmV1bmlvbnNBdERheSIsInB1c2giLCJvZGoiLCJwb2ludE9kaiIsInBvaW50c09kaiIsImRvc3NpZXJMZWdpc2xhdGlmUmVmIiwiZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMiLCJyZXVuaW9uc0F0RG9zc2llclVpZCIsImFtZW5kZW1lbnRCeVVpZCIsIkFtZW5kZW1lbnRzIiwiYW1lbmRlbWVudHMiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwiYW1lbmRlbWVudEZpbGVQYXRoIiwiYW1lbmRlbWVudEpzb24iLCJhbWVuZGVtZW50IiwidG9BbWVuZGVtZW50IiwiZG9jdW1lbnRCeVVpZCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50RmlsZVBhdGgiLCJkb2N1bWVudEpzb24iLCJkb2N1bWVudCIsInRvRG9jdW1lbnQiLCJkb3NzaWVyU3BsaXRQYXRoIiwiZG9zc2llckZpbGVuYW1lIiwiZG9zc2llckZpbGVQYXRoIiwiZG9zc2llckpzb24iLCJkb3NzaWVyIiwidG9Eb3NzaWVyUGFybGVtZW50YWlyZSIsInRpdHJlRG9zc2llciIsInNlbmF0Q2hlbWluIiwidGl0cmVDaGVtaW4iLCJwaG90b0J5VWlkIiwiUGhvdG9zIiwianNvbkZpbGVQYXRoIiwiU2VpemUiLCJleGlzdHNTeW5jIiwianNvbiIsIk9iamVjdCIsImFzc2lnbiIsIkpTT04iLCJwYXJzZSIsInNjcnV0aW5CeVVpZCIsIlNjcnV0aW5zIiwic2NydXRpbnMiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbkZpbGVQYXRoIiwic2NydXRpbkpzb24iLCJzY3J1dGluIiwidG9TY3J1dGluIiwibG9hZEFzc2VtYmxlZURhdGFGcm9tQmlnRmlsZXMiLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJhY3RldXJzIiwib3JnYW5lcyIsInRvQWdlbmRhcyIsInJldW5pb25zIiwidG9BbWVuZGVtZW50cyIsInRleHRlTGVnaXNsYXRpZiIsInRleHRlc0xlZ2lzbGF0aWZzIiwidG9Eb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlcyIsInRvU2NydXRpbnMiLCJwYXRoRnJvbURvY3VtZW50VWlkIiwiZG9jdW1lbnRzRGlyIiwibWF0Y2giLCJleGVjIiwibm90U3RyaWN0RXF1YWwiLCJkb2N1bWVudFR5cGUiLCJjaGFtYnJlRGlyIiwicmVwdWJsaXF1ZURpciIsImxlZ2lzbGF0dXJlRGlyIiwiZXRhdERpciIsIm51bWVybyIsInN1YnN0ciIsIm51bWVyb01pbGxpZXJzRGlyIiwiZW5zdXJlRGlyU3luYyIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJkb3NzaWVyc0RpciIsInBhdGhGcm9tUmV1bmlvblVpZCIsInJldW5pb25zRGlyIiwic2Vzc2lvbkRpciIsImlkRGlyIiwibnVtZXJvTWlsbGlvbnNEaXIiLCJwYXRoRnJvbVNjcnV0aW5VaWQiLCJzY3J1dGluc0RpciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2FkZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vLyBMb2FkIGRhdGEgZnJvbSBmaWxlc1xuXG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmV4cG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuL2RhdGFzZXRzXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi9kYXRhc2V0c1wiXG5leHBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LFxuICBPcmdhbmUsXG4gIFBob3RvLFxufSBmcm9tIFwiLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzQ29udmVydCwgUmV1bmlvbiB9IGZyb20gXCIuL3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQW1lbmRlbWVudCwgQ29udmVydCBhcyBBbWVuZGVtZW50c0NvbnZlcnQgfSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IExlZ2lzbGF0dXJlIH0gZnJvbSBcIi4vdHlwZXMvbGVnaXNsYXR1cmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNDb252ZXJ0LCBTY3J1dGluIH0gZnJvbSBcIi4vdHlwZXMvc2NydXRpbnNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGEge1xuICByZWFkb25seSBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfVxuICByZWFkb25seSBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9XG4gIHJlYWRvbmx5IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9XG4gIHJlYWRvbmx5IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH1cbiAgcmVhZG9ubHkgcmV1bmlvbnNCeURvc3NpZXJVaWQ6IHsgW2Rvc3NpZXJVaWQ6IHN0cmluZ106IFJldW5pb25bXSB9XG4gIHJlYWRvbmx5IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH1cbn1cblxuY29uc3QgZG9jdW1lbnRVaWRSZWdleCA9XG4gIC9eKEFDSU58QUxDTnxBVkNFfEFWSVN8REVDTHxFVERJfExFVFR8TUVTU3xQSU9OfFBOUkV8UFJKTHxSQVBQfFJJTkZ8UklPTikoQU58U04pKFJcXGQrKVtMU10oXFxkKykoQnxCVEF8QlRDfFRBUCkoXFxkKykoLS4qKT8kL1xuY29uc3QgZG9zc2llclVpZFJlZ2V4ID0gL15ETChSXFxkKykoTFxcZCspTihcXGQrKSQvXG5jb25zdCByZXVuaW9uVWlkUmVnZXggPVxuICAvXlJVKEFOfENHfFNOKShSXFxkKykoTFxcZCspKFtBU11cXGR7NH0pKElEQ3xJREZMP3xJRFMpKFxcZCspJC9cbmNvbnN0IHNjcnV0aW5VaWRSZWdleCA9IC9eVlRBTihSXFxkKykoTFxcZCspVihcXGQrKSQvXG5cbi8qKiBMb2FkIGRhdGEgZnJvbSBzcGxpdCBmaWxlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXNzZW1ibGVlRGF0YShcbiAgZGF0YURpcjogc3RyaW5nLFxuICBlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IERhdGEge1xuICBjb25zdCBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfSA9IHt9XG4gIGNvbnN0IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhY3RldXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJhY3RldXJzXCJdKSkge1xuICAgICAgICBjb25zdCBhY3RldXJGaWxlbmFtZSA9IGFjdGV1clNwbGl0UGF0aFthY3RldXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhY3RldXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3RldXJGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5hY3RldXJTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FjdGV1ckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVySnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGFjdGV1ckZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhY3RldXIgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cihhY3RldXJKc29uKVxuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcImFjdGV1clwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAoYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID0gYWN0ZXVyXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBvcmdhbmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJvcmdhbmVzXCJdKSkge1xuICAgICAgICBjb25zdCBvcmdhbmVGaWxlbmFtZSA9IG9yZ2FuZVNwbGl0UGF0aFtvcmdhbmVTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFvcmdhbmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmdhbmVGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5vcmdhbmVTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke29yZ2FuZUZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKG9yZ2FuZUZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBvcmdhbmUgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b09yZ2FuZShvcmdhbmVKc29uKVxuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcIm9yZ2FuZVwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAob3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID0gb3JnYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG4gICAgICBmb3IgKGNvbnN0IHJldW5pb25TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCByZXVuaW9uRmlsZW5hbWUgPSByZXVuaW9uU3BsaXRQYXRoW3JldW5pb25TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFyZXVuaW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnJldW5pb25TcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3JldW5pb25GaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMocmV1bmlvbkZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCByZXVuaW9uID0gQWdlbmRhc0NvbnZlcnQudG9SZXVuaW9uKHJldW5pb25Kc29uKVxuICAgICAgICBpZiAocmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9IHJldW5pb25cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRheSA9IHJldW5pb24udGltZXN0YW1wRGVidXQudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF1cbiAgICAgICAgbGV0IHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV1cbiAgICAgICAgaWYgKHJldW5pb25zQXREYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV0gPSBbXVxuICAgICAgICB9XG4gICAgICAgIHJldW5pb25zQXREYXkucHVzaChyZXVuaW9uKVxuXG4gICAgICAgIGNvbnN0IG9kaiA9IHJldW5pb24ub2RqXG4gICAgICAgIGlmIChvZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZvciAoY29uc3QgcG9pbnRPZGogb2Ygb2RqLnBvaW50c09kaiB8fCBbXSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkb3NzaWVyTGVnaXNsYXRpZlJlZiBvZiBwb2ludE9kai5kb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyB8fFxuICAgICAgICAgICAgICBbXSkge1xuICAgICAgICAgICAgICBsZXQgcmV1bmlvbnNBdERvc3NpZXJVaWQgPVxuICAgICAgICAgICAgICAgIHJldW5pb25zQnlEb3NzaWVyVWlkW2Rvc3NpZXJMZWdpc2xhdGlmUmVmXVxuICAgICAgICAgICAgICBpZiAocmV1bmlvbnNBdERvc3NpZXJVaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkID0gcmV1bmlvbnNCeURvc3NpZXJVaWRbXG4gICAgICAgICAgICAgICAgICBkb3NzaWVyTGVnaXNsYXRpZlJlZlxuICAgICAgICAgICAgICAgIF0gPSBbXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkLnB1c2gocmV1bmlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZW5hbWUgPVxuICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWFtZW5kZW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYW1lbmRlbWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7YW1lbmRlbWVudEZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhbWVuZGVtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50KGFtZW5kZW1lbnRKc29uKVxuICAgICAgICBpZiAoYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9IGFtZW5kZW1lbnRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBkb2N1bWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcImRvY3VtZW50c1wiXSkpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlbmFtZSA9IGRvY3VtZW50U3BsaXRQYXRoW2RvY3VtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghZG9jdW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb2N1bWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmRvY3VtZW50U3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtkb2N1bWVudEZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9jdW1lbnRGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0RvY3VtZW50KGRvY3VtZW50SnNvbilcbiAgICAgICAgaWYgKGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID0gZG9jdW1lbnRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb3NzaWVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgZG9zc2llckZpbGVuYW1lID0gZG9zc2llclNwbGl0UGF0aFtkb3NzaWVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghZG9zc2llckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb3NzaWVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtkb3NzaWVyRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVySnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvc3NpZXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9zc2llciA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZShkb3NzaWVySnNvbilcbiAgICAgICAgY29uc3QgdGl0cmVEb3NzaWVyID0gZG9zc2llci50aXRyZURvc3NpZXJcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci5zZW5hdENoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIudGl0cmVDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUGhvdG9zKSB7XG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGBwaG90b3NfZGVwdXRlc18ke1xuICAgICAgICAgIC8vIFRPRE86IEhhbmRsZSBMZWdpc2xhdHVyZS5BbGwuXG4gICAgICAgICAgbGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCA/IExlZ2lzbGF0dXJlLlNlaXplIDogbGVnaXNsYXR1cmVcbiAgICAgICAgfWAsXG4gICAgICAgIFwiZGVwdXRlcy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgICAgICBcInNlbmF0ZXVycy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBzY3J1dGluU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVuYW1lID0gc2NydXRpblNwbGl0UGF0aFtzY3J1dGluU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghc2NydXRpbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5zY3J1dGluU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtzY3J1dGluRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHNjcnV0aW5GaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgc2NydXRpbiA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW4oc2NydXRpbkpzb24pXG4gICAgICAgIGlmIChzY3J1dGluQnlVaWRbc2NydXRpbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY3J1dGluQnlVaWRbc2NydXRpbi51aWRdID0gc2NydXRpblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY3RldXJCeVVpZCxcbiAgICBhbWVuZGVtZW50QnlVaWQsXG4gICAgZG9jdW1lbnRCeVVpZCxcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQsXG4gICAgb3JnYW5lQnlVaWQsXG4gICAgcGhvdG9CeVVpZCxcbiAgICByZXVuaW9uQnlVaWQsXG4gICAgcmV1bmlvbnNCeURheSxcbiAgICByZXVuaW9uc0J5RG9zc2llclVpZCxcbiAgICBzY3J1dGluQnlVaWQsXG4gIH1cbn1cblxuLyoqIExvYWQgZGF0YSBmcm9tIGJpZyBtb25vbHl0aWMgZmlsZXMuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURhdGFGcm9tQmlnRmlsZXMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBEYXRhIHtcbiAgY29uc3QgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH0gPSB7fVxuICBjb25zdCBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYWN0ZXVyc0V0T3JnYW5lcyA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvQWN0ZXVyc0V0T3JnYW5lcyhqc29uKVxuICAgICAgZm9yIChjb25zdCBhY3RldXIgb2YgYWN0ZXVyc0V0T3JnYW5lcy5hY3RldXJzKSB7XG4gICAgICAgIC8vIEtlZXAgdGhlIGZpcnN0IGV4aXN0aW5nIFwiYWN0ZXVyXCIsIGJlY2F1c2UgdGhlIGZpcnN0IHdyYXBwZXIgaXMgdGhlIG1vc3QgY29tcGxldGUuXG4gICAgICAgIGlmIChhY3RldXJCeVVpZFthY3RldXIudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPSBhY3RldXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBvcmdhbmUgb2YgYWN0ZXVyc0V0T3JnYW5lcy5vcmdhbmVzKSB7XG4gICAgICAgIC8vIEtlZXAgdGhlIGZpcnN0IGV4aXN0aW5nIFwib3JnYW5lXCIsIGJlY2F1c2UgdGhlIGZpcnN0IHdyYXBwZXIgaXMgdGhlIG1vc3QgY29tcGxldGUuXG4gICAgICAgIGlmIChvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgb3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPSBvcmdhbmVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJldW5pb25CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RGF5OiB7IFtkYXk6IHN0cmluZ106IFJldW5pb25bXSB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURvc3NpZXJVaWQ6IHsgW2Rvc3NpZXJVaWQ6IHN0cmluZ106IFJldW5pb25bXSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhZ2VuZGFzID0gQWdlbmRhc0NvbnZlcnQudG9BZ2VuZGFzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHJldW5pb24gb2YgYWdlbmRhcy5yZXVuaW9ucykge1xuICAgICAgICBpZiAocmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9IHJldW5pb25cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRheSA9IHJldW5pb24udGltZXN0YW1wRGVidXQudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF1cbiAgICAgICAgbGV0IHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV1cbiAgICAgICAgaWYgKHJldW5pb25zQXREYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV0gPSBbXVxuICAgICAgICB9XG4gICAgICAgIHJldW5pb25zQXREYXkucHVzaChyZXVuaW9uKVxuXG4gICAgICAgIGNvbnN0IG9kaiA9IHJldW5pb24ub2RqXG4gICAgICAgIGlmIChvZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZvciAoY29uc3QgcG9pbnRPZGogb2Ygb2RqLnBvaW50c09kaiB8fCBbXSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkb3NzaWVyTGVnaXNsYXRpZlJlZiBvZiBwb2ludE9kai5kb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyB8fFxuICAgICAgICAgICAgICBbXSkge1xuICAgICAgICAgICAgICBsZXQgcmV1bmlvbnNBdERvc3NpZXJVaWQgPVxuICAgICAgICAgICAgICAgIHJldW5pb25zQnlEb3NzaWVyVWlkW2Rvc3NpZXJMZWdpc2xhdGlmUmVmXVxuICAgICAgICAgICAgICBpZiAocmV1bmlvbnNBdERvc3NpZXJVaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkID0gcmV1bmlvbnNCeURvc3NpZXJVaWRbXG4gICAgICAgICAgICAgICAgICBkb3NzaWVyTGVnaXNsYXRpZlJlZlxuICAgICAgICAgICAgICAgIF0gPSBbXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkLnB1c2gocmV1bmlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFtZW5kZW1lbnRzID0gQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudHMoanNvbilcbiAgICAgIGZvciAoY29uc3QgdGV4dGVMZWdpc2xhdGlmIG9mIGFtZW5kZW1lbnRzLnRleHRlc0xlZ2lzbGF0aWZzKSB7XG4gICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudCBvZiB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMpIHtcbiAgICAgICAgICBpZiAoYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhbWVuZGVtZW50QnlVaWRbYW1lbmRlbWVudC51aWRdID0gYW1lbmRlbWVudFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBkb3NzaWVyc0xlZ2lzbGF0aWZzID1cbiAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyc0xlZ2lzbGF0aWZzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IGRvY3VtZW50IG9mIGRvc3NpZXJzTGVnaXNsYXRpZnMudGV4dGVzTGVnaXNsYXRpZnMpIHtcbiAgICAgICAgaWYgKGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID0gZG9jdW1lbnRcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyIG9mIGRvc3NpZXJzTGVnaXNsYXRpZnMuZG9zc2llcnNQYXJsZW1lbnRhaXJlcykge1xuICAgICAgICBjb25zdCB0aXRyZURvc3NpZXIgPSBkb3NzaWVyLnRpdHJlRG9zc2llclxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluW3RpdHJlRG9zc2llci5zZW5hdENoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluW3RpdHJlRG9zc2llci5zZW5hdENoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci50aXRyZUNoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pblt0aXRyZURvc3NpZXIudGl0cmVDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pblt0aXRyZURvc3NpZXIudGl0cmVDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlBob3Rvcykge1xuICAgIGNvbnN0IHBob3RvQnlVaWQgPSB7fVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGBwaG90b3NfZGVwdXRlc18ke1xuICAgICAgICAgIC8vIFRPRE86IEhhbmRsZSBMZWdpc2xhdHVyZS5BbGwuXG4gICAgICAgICAgbGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCA/IExlZ2lzbGF0dXJlLlNlaXplIDogbGVnaXNsYXR1cmVcbiAgICAgICAgfWAsXG4gICAgICAgIFwiZGVwdXRlcy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgICAgICBcInNlbmF0ZXVycy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBzY3J1dGlucyA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW5zKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygc2NydXRpbnMuc2NydXRpbnMpIHtcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IGRvY3VtZW50VWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgZG9jdW1lbnQgVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGRvY3VtZW50VHlwZSA9IHBhdGguam9pbihkb2N1bWVudHNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgY2hhbWJyZURpciA9IHBhdGguam9pbihkb2N1bWVudFR5cGUsIG1hdGNoIVsyXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgZXRhdERpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihldGF0RGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKFxuICBkb3NzaWVyc0Rpcjogc3RyaW5nLFxuICB1aWQ6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gZG9zc2llclVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIGRvc3NpZXIgcGFybGVtZW50YWlyZSBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihkb3NzaWVyc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbMl0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMFwiICsgbWF0Y2ghWzNdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHIobnVtZXJvLmxlbmd0aCAtIDYpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbVJldW5pb25VaWQocmV1bmlvbnNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHJldW5pb25VaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciByZXVuaW9uIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCBjaGFtYnJlRGlyID0gcGF0aC5qb2luKHJldW5pb25zRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oY2hhbWJyZURpciwgbWF0Y2ghWzJdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IHNlc3Npb25EaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgaWREaXIgPSBwYXRoLmpvaW4oc2Vzc2lvbkRpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA5KVxuICBjb25zdCBudW1lcm9NaWxsaW9uc0RpciA9IHBhdGguam9pbihpZERpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obnVtZXJvTWlsbGlvbnNEaXIsIG51bWVyby5zdWJzdHIoMywgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tU2NydXRpblVpZChzY3J1dGluc0Rpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gc2NydXRpblVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIHNjcnV0aW4gVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oc2NydXRpbnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzJdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVszXVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxPQUFPQSxNQUFNLE1BQU0sUUFBUTtBQUMzQixPQUFPQyxFQUFFLE1BQU0sVUFBVTtBQUN6QixPQUFPQyxJQUFJLE1BQU0sTUFBTTtBQUFBLFNBRWRDLGVBQWU7QUFBQSxTQUNmQyxRQUFRLEVBQUVELGVBQWU7QUFBQSxTQUN6QkUsT0FBTztBQUFBLFNBQ1BBLE9BQU87QUFBQSxTQUdkQyxPQUFPLElBQUlDLHVCQUF1QjtBQUFBLFNBSTNCRCxPQUFPLElBQUlFLGNBQWM7QUFBQSxTQUNiRixPQUFPLElBQUlHLGtCQUFrQjtBQUFBLFNBRWhESCxPQUFPLElBQUlJLDBCQUEwQjtBQUFBLFNBSTlCQyxXQUFXO0FBQUEsU0FDWEwsT0FBTyxJQUFJTSxlQUFlO0FBcUJuQyxNQUFNQyxnQkFBZ0IsR0FDcEIsMkhBQTJIO0FBQzdILE1BQU1DLGVBQWUsR0FB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
package/lib/organes.js CHANGED
@@ -19,4 +19,4 @@ function shortNameFromOrgane(organe) {
19
19
  return organe.libelleAbrege;
20
20
  }
21
21
  }
22
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzaG9ydE5hbWVGcm9tT3JnYW5lIiwib3JnYW5lIiwidW5kZWZpbmVkIiwiY29kZVR5cGUiLCJDb2RlVHlwZU9yZ2FuZSIsIkNtcCIsIkdvdXZlcm5lbWVudCIsImxpYmVsbGUiLCJsaWJlbGxlQWJyZWdlIl0sInNvdXJjZXMiOlsiLi4vc3JjL29yZ2FuZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29kZVR5cGVPcmdhbmUsIE9yZ2FuZSB9IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBzaG9ydE5hbWVGcm9tT3JnYW5lKG9yZ2FuZTogT3JnYW5lIHwgdW5kZWZpbmVkIHwgbnVsbCk6IHN0cmluZyB7XG4gIGlmIChvcmdhbmUgPT09IG51bGwgfHwgb3JnYW5lID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJPcmdhbmUgaW5jb25udVwiXG4gIH1cbiAgc3dpdGNoIChvcmdhbmUuY29kZVR5cGUpIHtcbiAgICBjYXNlIENvZGVUeXBlT3JnYW5lLkNtcDpcbiAgICAgIHJldHVybiBcIkNvbW1pc3Npb24gbWl4dGUgcGFyaXRhaXJlXCJcbiAgICBjYXNlIENvZGVUeXBlT3JnYW5lLkdvdXZlcm5lbWVudDpcbiAgICAgIHJldHVybiBvcmdhbmUubGliZWxsZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gb3JnYW5lLmxpYmVsbGVBYnJlZ2VcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFFTyxTQUFTQSxtQkFBbUIsQ0FBQ0MsTUFBaUMsRUFBVTtFQUM3RSxJQUFJQSxNQUFNLEtBQUssSUFBSSxJQUFJQSxNQUFNLEtBQUtDLFNBQVMsRUFBRTtJQUMzQyxPQUFPLGdCQUFnQjtFQUN6QjtFQUNBLFFBQVFELE1BQU0sQ0FBQ0UsUUFBUTtJQUNyQixLQUFLQyxrQ0FBYyxDQUFDQyxHQUFHO01BQ3JCLE9BQU8sNEJBQTRCO0lBQ3JDLEtBQUtELGtDQUFjLENBQUNFLFlBQVk7TUFDOUIsT0FBT0wsTUFBTSxDQUFDTSxPQUFPO0lBQ3ZCO01BQ0UsT0FBT04sTUFBTSxDQUFDTyxhQUFhO0VBQUE7QUFFakMifQ==
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWN0ZXVyc19ldF9vcmdhbmVzIiwicmVxdWlyZSIsInNob3J0TmFtZUZyb21PcmdhbmUiLCJvcmdhbmUiLCJ1bmRlZmluZWQiLCJjb2RlVHlwZSIsIkNvZGVUeXBlT3JnYW5lIiwiQ21wIiwiR291dmVybmVtZW50IiwibGliZWxsZSIsImxpYmVsbGVBYnJlZ2UiXSwic291cmNlcyI6WyIuLi9zcmMvb3JnYW5lcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2RlVHlwZU9yZ2FuZSwgT3JnYW5lIH0gZnJvbSBcIi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcblxuZXhwb3J0IGZ1bmN0aW9uIHNob3J0TmFtZUZyb21PcmdhbmUob3JnYW5lOiBPcmdhbmUgfCB1bmRlZmluZWQgfCBudWxsKTogc3RyaW5nIHtcbiAgaWYgKG9yZ2FuZSA9PT0gbnVsbCB8fCBvcmdhbmUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBcIk9yZ2FuZSBpbmNvbm51XCJcbiAgfVxuICBzd2l0Y2ggKG9yZ2FuZS5jb2RlVHlwZSkge1xuICAgIGNhc2UgQ29kZVR5cGVPcmdhbmUuQ21wOlxuICAgICAgcmV0dXJuIFwiQ29tbWlzc2lvbiBtaXh0ZSBwYXJpdGFpcmVcIlxuICAgIGNhc2UgQ29kZVR5cGVPcmdhbmUuR291dmVybmVtZW50OlxuICAgICAgcmV0dXJuIG9yZ2FuZS5saWJlbGxlXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBvcmdhbmUubGliZWxsZUFicmVnZVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxtQkFBQSxHQUFBQyxPQUFBO0FBRU8sU0FBU0MsbUJBQW1CQSxDQUFDQyxNQUFpQyxFQUFVO0VBQzdFLElBQUlBLE1BQU0sS0FBSyxJQUFJLElBQUlBLE1BQU0sS0FBS0MsU0FBUyxFQUFFO0lBQzNDLE9BQU8sZ0JBQWdCO0VBQ3pCO0VBQ0EsUUFBUUQsTUFBTSxDQUFDRSxRQUFRO0lBQ3JCLEtBQUtDLGtDQUFjLENBQUNDLEdBQUc7TUFDckIsT0FBTyw0QkFBNEI7SUFDckMsS0FBS0Qsa0NBQWMsQ0FBQ0UsWUFBWTtNQUM5QixPQUFPTCxNQUFNLENBQUNNLE9BQU87SUFDdkI7TUFDRSxPQUFPTixNQUFNLENBQUNPLGFBQWE7RUFBQTtBQUVqQyJ9
package/lib/organes.mjs CHANGED
@@ -12,4 +12,4 @@ export function shortNameFromOrgane(organe) {
12
12
  return organe.libelleAbrege;
13
13
  }
14
14
  }
15
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb2RlVHlwZU9yZ2FuZSIsInNob3J0TmFtZUZyb21PcmdhbmUiLCJvcmdhbmUiLCJ1bmRlZmluZWQiLCJjb2RlVHlwZSIsIkNtcCIsIkdvdXZlcm5lbWVudCIsImxpYmVsbGUiLCJsaWJlbGxlQWJyZWdlIl0sInNvdXJjZXMiOlsiLi4vc3JjL29yZ2FuZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29kZVR5cGVPcmdhbmUsIE9yZ2FuZSB9IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBzaG9ydE5hbWVGcm9tT3JnYW5lKG9yZ2FuZTogT3JnYW5lIHwgdW5kZWZpbmVkIHwgbnVsbCk6IHN0cmluZyB7XG4gIGlmIChvcmdhbmUgPT09IG51bGwgfHwgb3JnYW5lID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJPcmdhbmUgaW5jb25udVwiXG4gIH1cbiAgc3dpdGNoIChvcmdhbmUuY29kZVR5cGUpIHtcbiAgICBjYXNlIENvZGVUeXBlT3JnYW5lLkNtcDpcbiAgICAgIHJldHVybiBcIkNvbW1pc3Npb24gbWl4dGUgcGFyaXRhaXJlXCJcbiAgICBjYXNlIENvZGVUeXBlT3JnYW5lLkdvdXZlcm5lbWVudDpcbiAgICAgIHJldHVybiBvcmdhbmUubGliZWxsZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gb3JnYW5lLmxpYmVsbGVBYnJlZ2VcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiU0FBU0EsY0FBYztBQUV2QixPQUFPLFNBQVNDLG1CQUFtQixDQUFDQyxNQUFpQyxFQUFVO0VBQzdFLElBQUlBLE1BQU0sS0FBSyxJQUFJLElBQUlBLE1BQU0sS0FBS0MsU0FBUyxFQUFFO0lBQzNDLE9BQU8sZ0JBQWdCO0VBQ3pCO0VBQ0EsUUFBUUQsTUFBTSxDQUFDRSxRQUFRO0lBQ3JCLEtBQUtKLGNBQWMsQ0FBQ0ssR0FBRztNQUNyQixPQUFPLDRCQUE0QjtJQUNyQyxLQUFLTCxjQUFjLENBQUNNLFlBQVk7TUFDOUIsT0FBT0osTUFBTSxDQUFDSyxPQUFPO0lBQ3ZCO01BQ0UsT0FBT0wsTUFBTSxDQUFDTSxhQUFhO0VBQUE7QUFFakMifQ==
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb2RlVHlwZU9yZ2FuZSIsInNob3J0TmFtZUZyb21PcmdhbmUiLCJvcmdhbmUiLCJ1bmRlZmluZWQiLCJjb2RlVHlwZSIsIkNtcCIsIkdvdXZlcm5lbWVudCIsImxpYmVsbGUiLCJsaWJlbGxlQWJyZWdlIl0sInNvdXJjZXMiOlsiLi4vc3JjL29yZ2FuZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29kZVR5cGVPcmdhbmUsIE9yZ2FuZSB9IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBzaG9ydE5hbWVGcm9tT3JnYW5lKG9yZ2FuZTogT3JnYW5lIHwgdW5kZWZpbmVkIHwgbnVsbCk6IHN0cmluZyB7XG4gIGlmIChvcmdhbmUgPT09IG51bGwgfHwgb3JnYW5lID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJPcmdhbmUgaW5jb25udVwiXG4gIH1cbiAgc3dpdGNoIChvcmdhbmUuY29kZVR5cGUpIHtcbiAgICBjYXNlIENvZGVUeXBlT3JnYW5lLkNtcDpcbiAgICAgIHJldHVybiBcIkNvbW1pc3Npb24gbWl4dGUgcGFyaXRhaXJlXCJcbiAgICBjYXNlIENvZGVUeXBlT3JnYW5lLkdvdXZlcm5lbWVudDpcbiAgICAgIHJldHVybiBvcmdhbmUubGliZWxsZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gb3JnYW5lLmxpYmVsbGVBYnJlZ2VcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiU0FBU0EsY0FBYztBQUV2QixPQUFPLFNBQVNDLG1CQUFtQkEsQ0FBQ0MsTUFBaUMsRUFBVTtFQUM3RSxJQUFJQSxNQUFNLEtBQUssSUFBSSxJQUFJQSxNQUFNLEtBQUtDLFNBQVMsRUFBRTtJQUMzQyxPQUFPLGdCQUFnQjtFQUN6QjtFQUNBLFFBQVFELE1BQU0sQ0FBQ0UsUUFBUTtJQUNyQixLQUFLSixjQUFjLENBQUNLLEdBQUc7TUFDckIsT0FBTyw0QkFBNEI7SUFDckMsS0FBS0wsY0FBYyxDQUFDTSxZQUFZO01BQzlCLE9BQU9KLE1BQU0sQ0FBQ0ssT0FBTztJQUN2QjtNQUNFLE9BQU9MLE1BQU0sQ0FBQ00sYUFBYTtFQUFBO0FBRWpDIn0=
@@ -449,4 +449,4 @@ function _retrieveTexteLoiParsed() {
449
449
  }));
450
450
  return _retrieveTexteLoiParsed.apply(this, arguments);
451
451
  }
452
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJzZVRleHRlTG9pIiwiYXNzZW1ibGVlVXJsIiwicGFnZSIsInBhZ2VTZWdtZW50cyIsInNwbGl0IiwiYXNzZXJ0Iiwic3RyaWN0RXF1YWwiLCJsZW5ndGgiLCJodG1sIiwidHJpbSIsInN0YXJ0c1dpdGgiLCJlbmRzV2l0aCIsInN1YnN0cmluZyIsIkpTRE9NIiwid2luZG93IiwiZG9jdW1lbnQiLCJjaGlsZHJlbiIsImh0bWxFbGVtZW50IiwiYm9keUVsZW1lbnQiLCJkaXZFbGVtZW50IiwidGFnTmFtZSIsIm5ld0RpdkVsZW1lbnQiLCJpbnNlcnRCZWZvcmUiLCJjcmVhdGVFbGVtZW50IiwiZGl2Q2hpbGQiLCJnZXRBdHRyaWJ1dGUiLCJhcHBlbmRDaGlsZCIsImNsb3NlIiwiZXJyb3IiLCJjb2RlIiwibWVzc2FnZSIsImJvZHlDaGlsZCIsImFsaW5lYUVsZW1lbnQiLCJpc011bHRpTGluZXNIZWFkZXIiLCJsZXZlbCIsImxldmVscyIsImxpbmVFbGVtZW50cyIsIm5leHRQYXJlbnRTdGF0ZSIsInBhcmFncmFwaENoaWxkIiwicGFyYWdyYXBoRWxlbWVudCIsInN0YXRlIiwic3ViQWxpbmVhRWxlbWVudCIsInN1YmRpdmlzaW9ucyIsInN1YmRpdmlzaW9uQWxpbmVhc0h0bWwiLCJzdWJkaXZpc2lvbkFsaW5lYXNUZXh0Iiwic3ViZGl2aXNpb25IZWFkZXJzSHRtbCIsInN1YmRpdmlzaW9uSGVhZGVyc1RleHQiLCJ1bmRlZmluZWQiLCJoZWFkZXJUZXh0IiwidGV4dENvbnRlbnQiLCJuYW1lQ29tcHV0ZWQiLCJub3JtYWxpemUiLCJyZXBsYWNlIiwibmFtZVVwcGVyIiwidG9VcHBlckNhc2UiLCJuZXh0TGV2ZWwiLCJtYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJwb3AiLCJwdXNoIiwiYWxpbmVhcyIsImhlYWRlcnMiLCJpZCIsInJlbGF0aXZlTGV2ZWwiLCJ0ZXh0IiwibmV4dEVsZW1lbnRTaWJsaW5nIiwiaW5jbHVkZXMiLCJsaW5lVGV4dCIsIm1hcCIsImVsZW1lbnQiLCJqb2luIiwibGluZUh0bWwiLCJvdXRlckhUTUwiLCJjbGFzc05hbWUiLCJ1cmwiLCJyZXRyaWV2ZVRleHRlTG9pUGFyc2VkIiwiZmV0Y2giLCJyZXNwb25zZSIsIm9rIiwic3RhdHVzIiwic3RhdHVzVGV4dCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZXJzL2RvY3VtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IHsgSlNET00gfSBmcm9tIFwianNkb21cIlxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUZXh0ZUxvaShhc3NlbWJsZWVVcmw6IHN0cmluZywgcGFnZTogc3RyaW5nKSB7XG4gIC8vIFJlcGFpciBIVE1MLlxuICBjb25zdCBwYWdlU2VnbWVudHMgPSBwYWdlLnNwbGl0KFwiPC9zdHlsZT5cIilcbiAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhZ2VTZWdtZW50cy5sZW5ndGgsIDIsIHBhZ2UpXG4gIGxldCBodG1sID0gcGFnZVNlZ21lbnRzWzFdLnRyaW0oKVxuICBhc3NlcnQoaHRtbC5zdGFydHNXaXRoKFwiPGRpdlwiKSlcbiAgYXNzZXJ0KGh0bWwuZW5kc1dpdGgoXCI8L2Rpdj5cIikpXG4gIGh0bWwgPSBgPGh0bWwke2h0bWwuc3Vic3RyaW5nKDQsIGh0bWwubGVuZ3RoIC0gNil9PC9odG1sPmBcblxuICAvLyBFeHRyYWN0IHN1YmRpdmlzaW9ucyBmcm9tIEhUTUwuXG4gIGNvbnN0IHsgd2luZG93IH0gPSBuZXcgSlNET00oaHRtbClcbiAgY29uc3QgeyBkb2N1bWVudCB9ID0gd2luZG93XG4gIGFzc2VydC5zdHJpY3RFcXVhbChkb2N1bWVudC5jaGlsZHJlbi5sZW5ndGgsIDEpXG4gIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQuY2hpbGRyZW5bMF1cbiAgYXNzZXJ0LnN0cmljdEVxdWFsKGh0bWxFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCwgMilcbiAgY29uc3QgYm9keUVsZW1lbnQgPSBodG1sRWxlbWVudC5jaGlsZHJlblsxXVxuICBpZiAoYXNzZW1ibGVlVXJsID09PSBcImh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDY3NS5hc3BcIikge1xuICAgIC8vIFJlcGFpciBkb2N1bWVudC5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYm9keUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoLCAxKVxuICAgIGNvbnN0IGRpdkVsZW1lbnQgPSBib2R5RWxlbWVudC5jaGlsZHJlblswXVxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChkaXZFbGVtZW50LnRhZ05hbWUsIFwiRElWXCIpXG4gICAgY29uc3QgbmV3RGl2RWxlbWVudCA9IGJvZHlFbGVtZW50Lmluc2VydEJlZm9yZShcbiAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksXG4gICAgICBkaXZFbGVtZW50LFxuICAgIClcbiAgICBib2R5RWxlbWVudC5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJyXCIpLCBkaXZFbGVtZW50KVxuICAgIGZvciAoY29uc3QgZGl2Q2hpbGQgb2YgWy4uLmRpdkVsZW1lbnQuY2hpbGRyZW5dKSB7XG4gICAgICBpZiAoZGl2Q2hpbGQuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIikgPT09IFwiYTlBcnRpY2xlTnVtXCIpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIG5ld0RpdkVsZW1lbnQuYXBwZW5kQ2hpbGQoZGl2Q2hpbGQpXG4gICAgfVxuICB9XG4gIGlmIChib2R5RWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPCAzKSB7XG4gICAgLy8gT2NjdXJzIGluIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDMyNi5hc3AuXG4gICAgd2luZG93LmNsb3NlKCkgLy8gRnJlZSBtZW1vcnkuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiB7IGNvZGU6IC0xLCBtZXNzYWdlOiBcIlRleHRlIGRlIGxvaSBzYW5zIGNvbnRlbnVcIiB9LFxuICAgICAgaHRtbCxcbiAgICAgIHBhZ2UsXG4gICAgfVxuICB9XG4gIGFzc2VydC5zdHJpY3RFcXVhbChib2R5RWxlbWVudC5jaGlsZHJlblswXS50YWdOYW1lLCBcIkRJVlwiKVxuICAvLyBGaXJzdCBjaGlsZCBpcyBhIERJViBkZXNjcmliaW5nIHRoZSBkb2N1bWVudCAoQXNzZW1ibMOpZSdzIGhlYWRlcikuIFNraXAgaXQgZm9yIG5vdy5cbiAgbGV0IGJvZHlDaGlsZCA9IGJvZHlFbGVtZW50LmNoaWxkcmVuWzFdXG4gIGFzc2VydC5zdHJpY3RFcXVhbChib2R5Q2hpbGQudGFnTmFtZSwgXCJCUlwiKVxuICBsZXQgYWxpbmVhRWxlbWVudDogRWxlbWVudCB8IG51bGwgPSBudWxsXG4gIGxldCBpc011bHRpTGluZXNIZWFkZXI6IGJvb2xlYW4gPSBmYWxzZVxuICBsZXQgbGV2ZWw6IG51bWJlciB8IG51bGwgPSBudWxsXG4gIGxldCBsZXZlbHM6IG51bWJlcltdID0gW11cbiAgbGV0IGxpbmVFbGVtZW50czogRWxlbWVudFtdIHwgbnVsbCA9IG51bGxcbiAgbGV0IG5leHRQYXJlbnRTdGF0ZSA9IG51bGxcbiAgbGV0IHBhcmFncmFwaENoaWxkOiBFbGVtZW50IHwgbnVsbCA9IG51bGxcbiAgbGV0IHBhcmFncmFwaEVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsID0gbnVsbFxuICBsZXQgc3RhdGU6IHN0cmluZyB8IG51bGwgPSBcIm5leHRCb2R5Q2hpbGRcIlxuICBsZXQgc3ViQWxpbmVhRWxlbWVudDogRWxlbWVudCB8IG51bGwgPSBudWxsXG4gIGNvbnN0IHN1YmRpdmlzaW9ucyA9IFtdXG4gIGxldCBzdWJkaXZpc2lvbkFsaW5lYXNIdG1sOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gIGxldCBzdWJkaXZpc2lvbkFsaW5lYXNUZXh0OiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gIGxldCBzdWJkaXZpc2lvbkhlYWRlcnNIdG1sOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gIGxldCBzdWJkaXZpc2lvbkhlYWRlcnNUZXh0OiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gIHdoaWxlIChzdGF0ZSAhPT0gbnVsbCkge1xuICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgIGNhc2UgXCJhbGluZWFFbGVtZW50XCI6XG4gICAgICAgIHN3aXRjaCAoYWxpbmVhRWxlbWVudCEudGFnTmFtZSkge1xuICAgICAgICAgIGNhc2UgXCJESVZcIjpcbiAgICAgICAgICAgIHN0YXRlID0gXCJmaXJzdFN1YkFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIFwiSDRcIjpcbiAgICAgICAgICAgIC8vIFRPRE9cbiAgICAgICAgICAgIG5leHRQYXJlbnRTdGF0ZSA9IFwibmV4dEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgICAgcGFyYWdyYXBoRWxlbWVudCA9IGFsaW5lYUVsZW1lbnRcbiAgICAgICAgICAgIHN0YXRlID0gXCJmaXJzdFBhcmFncmFwaENoaWxkXCJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSBcIlBcIjpcbiAgICAgICAgICAgIG5leHRQYXJlbnRTdGF0ZSA9IFwibmV4dEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgICAgcGFyYWdyYXBoRWxlbWVudCA9IGFsaW5lYUVsZW1lbnRcbiAgICAgICAgICAgIHN0YXRlID0gXCJmaXJzdFBhcmFncmFwaENoaWxkXCJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSBcIk9MXCI6XG4gICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICBzdGF0ZSA9IFwibmV4dEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIFwiVEFCTEVcIjpcbiAgICAgICAgICAgIC8vIFRPRE9cbiAgICAgICAgICAgIHN0YXRlID0gXCJuZXh0QWxpbmVhRWxlbWVudFwiXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICAgIGNvZGU6IC0yLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBVbmV4cGVjdGVkIHRhZyBuYW1lIGZvciBhbGluZWEgZWxlbWVudDogJHtcbiAgICAgICAgICAgICAgICAgIGFsaW5lYUVsZW1lbnQhLnRhZ05hbWVcbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaHRtbCxcbiAgICAgICAgICAgICAgcGFnZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcImZpcnN0QWxpbmVhRWxlbWVudFwiOlxuICAgICAgICBhbGluZWFFbGVtZW50ID0gYm9keUNoaWxkLmNoaWxkcmVuWzBdXG4gICAgICAgIGlmIChhbGluZWFFbGVtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBObyBhbGluZWEgaW4gY3VycmVudCBib2R5Q2hpbGQ6IGdvIHRvIG5leHQgYm9keUNoaWxkLlxuICAgICAgICAgIHN0YXRlID0gXCJuZXh0Qm9keUNoaWxkXCJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZSA9IFwiYWxpbmVhRWxlbWVudFwiXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJmaXJzdFBhcmFncmFwaENoaWxkXCI6XG4gICAgICAgIHBhcmFncmFwaENoaWxkID0gcGFyYWdyYXBoRWxlbWVudCEuY2hpbGRyZW5bMF1cbiAgICAgICAgaWYgKHBhcmFncmFwaENoaWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBObyBjaGlsZCBpbiBjdXJyZW50IHBhcmFncmFwaDogZ28gdG8gbmV4dCBwYXJlbnQgZWxlbWVudC5cbiAgICAgICAgICBzdGF0ZSA9IG5leHRQYXJlbnRTdGF0ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGhlYWRlclRleHQgPSBwYXJhZ3JhcGhFbGVtZW50IS50ZXh0Q29udGVudFxuICAgICAgICAgIGNvbnN0IG5hbWVDb21wdXRlZCA9IChoZWFkZXJUZXh0IHx8IFwiXCIpXG4gICAgICAgICAgICAubm9ybWFsaXplKFwiTkZEXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgXCJcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXChub3V2ZWF1XFwpLywgXCJcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXChQb3VyIGNvb3JkaW5hdGlvblxcKS8sIFwiXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwoU3VwcHJpbcOpcz9cXCkvLCBcIlwiKVxuICAgICAgICAgICAgLnJlcGxhY2UoL8KgL2csIFwiIFwiKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1tcXC0sLuKApl0vZywgXCJcIilcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5yZXBsYWNlKC8gezEsfS9nLCBcIl9cIilcbiAgICAgICAgICBjb25zdCBuYW1lVXBwZXIgPSBuYW1lQ29tcHV0ZWQudG9VcHBlckNhc2UoKVxuICAgICAgICAgIGlmIChuYW1lVXBwZXIgPT09IFwiXCIpIHtcbiAgICAgICAgICAgIC8vIE9jY3VycyBpbjpcbiAgICAgICAgICAgIC8vICogaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLzE1L3RleHRlcy8wNDQ1LmFzcFxuICAgICAgICAgICAgLy8gKiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzA2MjYuYXNwXG4gICAgICAgICAgICAvLyBTa2lwIHBhcmFncmFwaC5cbiAgICAgICAgICAgIHN0YXRlID0gbmV4dFBhcmVudFN0YXRlXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBuZXh0TGV2ZWwgPVxuICAgICAgICAgICAgbmFtZVVwcGVyLm1hdGNoKC9eKFJBUFBPUlRfKT9BTk5FWEUoX3wkKS8pICE9PSBudWxsIHx8XG4gICAgICAgICAgICBuYW1lVXBwZXIubWF0Y2goL15FVEFUXy8pICE9PSBudWxsXG4gICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICA6IG5hbWVVcHBlci5tYXRjaCgvXlRPTUVfLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eUEFSVElFXy8pICE9PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgbmFtZVVwcGVyLm1hdGNoKFxuICAgICAgICAgICAgICAgICAgL14oUFJFTUlFUkV8U0VDT05ERXxERVVYSUVNRXxUUk9JU0lFTUV8UVVBVFJJRU1FKV9QQVJUSUUoX3wkKS8sXG4gICAgICAgICAgICAgICAgKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDJcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15MSVZSRV8vKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDNcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15USVRSRV8vKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDRcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15TT1VTVElUUkVfLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyA1XG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eQ0hBUElUUkVfLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyA2XG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eU0VDVElPTl8vKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDdcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15TT1VTU0VDVElPTl8vKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDhcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15BUlRJQ0xFUz9fLykgIT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAvLyBcIkV4cG9zw6kgZGVzIG1vdGlmc1wiIG11c3QgYmUgYXQgdGhlIHNhbWUgbGV2ZWwgYXMgYXJ0aWNsZS5cbiAgICAgICAgICAgICAgICAvLyBcIkV4cG9zw6kgZGVzIG1vdGlmc1wiIHdpdGhvdXQgY29udGVudDpcbiAgICAgICAgICAgICAgICAvLyAqIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDcwMi5hc3BcbiAgICAgICAgICAgICAgICAvLyBcIkV4cG9zw6kgZGVzIG1vdGlmc1wiIHdpdGggY29udGVudDpcbiAgICAgICAgICAgICAgICAvLyAqIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMTMyNi5hc3BcbiAgICAgICAgICAgICAgICAvLyAqIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMTYxMC5hc3BcbiAgICAgICAgICAgICAgICBuYW1lVXBwZXIubWF0Y2goL15FWFBPU0VfREVTX01PVElGUyQvKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDlcbiAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgaWYgKG5leHRMZXZlbCA9PT0gbnVsbCAmJiBzdWJkaXZpc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBpZiAobmFtZVVwcGVyLm1hdGNoKC9eKFBST0pFVHxQUk9QT1NJVElPTilfREVfTE9JKF98JCkvKSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAvLyBPY2N1cnMgaW46XG4gICAgICAgICAgICAgIC8vICogaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLzE1L3RleHRlcy8wMjMyLmFzcFxuICAgICAgICAgICAgICAvLyAqIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDYyNi5hc3BcbiAgICAgICAgICAgICAgLy8gKiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzA2NzYuYXNwXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICBuYW1lVXBwZXIgPT09IFwiSkVVWF9PTFlNUElRVUVTX0VUX1BBUkFMWU1QSVFVRVNfREVfMjAyNFwiXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgLy8gT2NjdXJzIGluIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDY3Ni5hc3BcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZVVwcGVyID09PSBcIlRFWFRFX0RFX0xBX0NPTU1JU1NJT05fTUlYVEVfUEFSSVRBSVJFXCIpIHtcbiAgICAgICAgICAgICAgLy8gT2NjdXJzIGluIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMTI5NC5hc3BcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIGBVbmV4cGVjdGVkIG5hbWVVcHBlciA9IFwiJHtuYW1lVXBwZXJ9XCIgYXQgYmVnaW5uaW5nIG9mIFwidGV4dGUgZGUgbG9pXCIgYXQgJHthc3NlbWJsZWVVcmx9YCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU2tpcCBwYXJhZ3JhcGguXG4gICAgICAgICAgICBzdGF0ZSA9IG5leHRQYXJlbnRTdGF0ZVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5leHRMZXZlbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbGV2ZWwgPSBuZXh0TGV2ZWxcbiAgICAgICAgICAgIHdoaWxlIChsZXZlbHMubGVuZ3RoID4gMCAmJiBsZXZlbCA8IGxldmVsc1tsZXZlbHMubGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgICAgICAgbGV2ZWxzLnBvcCgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGV2ZWxzLmxlbmd0aCA9PT0gMCB8fCBsZXZlbCA+IGxldmVsc1tsZXZlbHMubGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgICAgICAgbGV2ZWxzLnB1c2gobGV2ZWwpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBcnRpY2xlcyAmIFwiRXhwb3PDqSBkZXMgbW90aWZzXCIgYXJlIHRoZSBvbmx5IGRpdmlzaW9ucyB3aXRob3V0IHNlY29uZCB0aXRsZS5cbiAgICAgICAgICAgIGlzTXVsdGlMaW5lc0hlYWRlciA9XG4gICAgICAgICAgICAgIG5hbWVVcHBlci5tYXRjaCgvXkFSVElDTEVTP18vKSA9PT0gbnVsbCAmJlxuICAgICAgICAgICAgICBuYW1lVXBwZXIubWF0Y2goL15FWFBPU0VfREVTX01PVElGUyQvKSA9PT0gbnVsbFxuICAgICAgICAgICAgc3ViZGl2aXNpb25BbGluZWFzSHRtbCA9IFtdXG4gICAgICAgICAgICBzdWJkaXZpc2lvbkFsaW5lYXNUZXh0ID0gW11cbiAgICAgICAgICAgIHN1YmRpdmlzaW9uSGVhZGVyc0h0bWwgPSBbXVxuICAgICAgICAgICAgc3ViZGl2aXNpb25IZWFkZXJzVGV4dCA9IFtdXG4gICAgICAgICAgICBzdWJkaXZpc2lvbnMucHVzaCh7XG4gICAgICAgICAgICAgIGh0bWw6IHtcbiAgICAgICAgICAgICAgICBhbGluZWFzOiBzdWJkaXZpc2lvbkFsaW5lYXNIdG1sLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHN1YmRpdmlzaW9uSGVhZGVyc0h0bWwsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGlkOiBcIkRfXCIgKyBuYW1lQ29tcHV0ZWQsXG4gICAgICAgICAgICAgIGxldmVsOiBsZXZlbCArIDEsXG4gICAgICAgICAgICAgIHJlbGF0aXZlTGV2ZWw6IGxldmVscy5sZW5ndGgsXG4gICAgICAgICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgICAgICBhbGluZWFzOiBzdWJkaXZpc2lvbkFsaW5lYXNUZXh0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHN1YmRpdmlzaW9uSGVhZGVyc1RleHQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICBsaW5lRWxlbWVudHMgPSBbXVxuICAgICAgICAgIHN0YXRlID0gXCJwYXJhZ3JhcGhDaGlsZFwiXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJmaXJzdFN1YkFsaW5lYUVsZW1lbnRcIjpcbiAgICAgICAgc3ViQWxpbmVhRWxlbWVudCA9IGFsaW5lYUVsZW1lbnQhLmNoaWxkcmVuWzBdXG4gICAgICAgIGlmIChzdWJBbGluZWFFbGVtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBObyBzdWItYWxpbmVhIGluIGN1cnJlbnQgYWxpbmVhOiBnbyB0byBuZXh0IGFsaW5lYS5cbiAgICAgICAgICBzdGF0ZSA9IFwibmV4dEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlID0gXCJzdWJBbGluZWFFbGVtZW50XCJcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcIm5leHRBbGluZWFFbGVtZW50XCI6XG4gICAgICAgIGFsaW5lYUVsZW1lbnQgPSBhbGluZWFFbGVtZW50IS5uZXh0RWxlbWVudFNpYmxpbmdcbiAgICAgICAgaWYgKGFsaW5lYUVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAvLyBUaGUgYm9keUNoaWxkIGhhcyBiZWVuIGZ1bGx5IHBhcnNlZC4gR28gdG8gbmV4dCBib2R5Q2hpbGRcbiAgICAgICAgICBzdGF0ZSA9IFwibmV4dEJvZHlDaGlsZFwiXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUgPSBcImFsaW5lYUVsZW1lbnRcIlxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwibmV4dEJvZHlDaGlsZFwiOlxuICAgICAgICBpZiAoYm9keUNoaWxkLm5leHRFbGVtZW50U2libGluZyA9PT0gbnVsbCkge1xuICAgICAgICAgIC8vIFRoZSBkb2N1bWVudCBoYXMgYmVlbiBmdWxseSBwYXJzZWQuXG4gICAgICAgICAgc3RhdGUgPSBudWxsXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYm9keUNoaWxkID0gYm9keUNoaWxkLm5leHRFbGVtZW50U2libGluZ1xuICAgICAgICAgIGlmIChib2R5Q2hpbGQudGFnTmFtZSA9PT0gXCJESVZcIikge1xuICAgICAgICAgICAgc3RhdGUgPSBcImZpcnN0QWxpbmVhRWxlbWVudFwiXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIDxQLz4gaXMgZm9yIGZvb3Rub3Rlc1xuICAgICAgICAgICAgYXNzZXJ0KFxuICAgICAgICAgICAgICBbXCJCUlwiLCBcIkhSXCIsIFwiUFwiXS5pbmNsdWRlcyhib2R5Q2hpbGQudGFnTmFtZSksXG4gICAgICAgICAgICAgIGBVbmV4cGVjdGVkIHRhZyBuYW1lIFwiJHtib2R5Q2hpbGQudGFnTmFtZX1cIiBmb3IgYm9keSBjaGlsZGAsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAvLyBTdGF5IGluIHRoZSBzYW1lIHN0YXRlIHRvIGdvIHRvIG5leHQgYm9keUNoaWxkLlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcIm5leHRQYXJhZ3JhcGhDaGlsZFwiOlxuICAgICAgICBwYXJhZ3JhcGhDaGlsZCA9IHBhcmFncmFwaENoaWxkIS5uZXh0RWxlbWVudFNpYmxpbmdcbiAgICAgICAgaWYgKHBhcmFncmFwaENoaWxkID09PSBudWxsKSB7XG4gICAgICAgICAgLy8gVGhlIHBhcmFncmFwaCBlbGVtZW50IGhhcyBiZWVuIGZ1bGx5IHBhcnNlZC4gR28gdG8gbmV4dCBwYXJlbnQgZWxlbWVudC5cbiAgICAgICAgICBjb25zdCBsaW5lVGV4dCA9IGxpbmVFbGVtZW50cyFcbiAgICAgICAgICAgIC5tYXAoKGVsZW1lbnQpID0+IGVsZW1lbnQudGV4dENvbnRlbnQpXG4gICAgICAgICAgICAuam9pbihcIlwiKVxuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgIGlmIChsaW5lVGV4dCkge1xuICAgICAgICAgICAgY29uc3QgbGluZUh0bWwgPSBsaW5lRWxlbWVudHMhXG4gICAgICAgICAgICAgIC5tYXAoKGVsZW1lbnQpID0+IGVsZW1lbnQub3V0ZXJIVE1MKVxuICAgICAgICAgICAgICAuam9pbihcIlwiKVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBzdWJkaXZpc2lvbkhlYWRlcnNUZXh0IS5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgICAgKGlzTXVsdGlMaW5lc0hlYWRlciAmJiBzdWJkaXZpc2lvbkFsaW5lYXNUZXh0IS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgc3ViZGl2aXNpb25IZWFkZXJzSHRtbCEucHVzaChsaW5lSHRtbClcbiAgICAgICAgICAgICAgc3ViZGl2aXNpb25IZWFkZXJzVGV4dCEucHVzaChsaW5lVGV4dClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN1YmRpdmlzaW9uQWxpbmVhc0h0bWwhLnB1c2gobGluZUh0bWwpXG4gICAgICAgICAgICAgIHN1YmRpdmlzaW9uQWxpbmVhc1RleHQhLnB1c2gobGluZVRleHQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc011bHRpTGluZXNIZWFkZXIgJiYgc3ViZGl2aXNpb25IZWFkZXJzVGV4dCEubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgIGlzTXVsdGlMaW5lc0hlYWRlciA9IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIGxpbmVFbGVtZW50cyA9IG51bGxcbiAgICAgICAgICBzdGF0ZSA9IG5leHRQYXJlbnRTdGF0ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlID0gXCJwYXJhZ3JhcGhDaGlsZFwiXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJuZXh0U3ViQWxpbmVhRWxlbWVudFwiOlxuICAgICAgICBzdWJBbGluZWFFbGVtZW50ID0gc3ViQWxpbmVhRWxlbWVudCEubmV4dEVsZW1lbnRTaWJsaW5nXG4gICAgICAgIGlmIChzdWJBbGluZWFFbGVtZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgLy8gVGhlIGFsaW5lYUVsZW1lbnQgaGFzIGJlZW4gZnVsbHkgcGFyc2VkLiBHbyB0byBuZXh0IGFsaW5lYUVsZW1lbnQuXG4gICAgICAgICAgc3RhdGUgPSBcIm5leHRBbGluZWFFbGVtZW50XCJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZSA9IFwic3ViQWxpbmVhRWxlbWVudFwiXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJwYXJhZ3JhcGhDaGlsZFwiOlxuICAgICAgICBzd2l0Y2ggKHBhcmFncmFwaENoaWxkIS50YWdOYW1lKSB7XG4gICAgICAgICAgY2FzZSBcIkFcIjoge1xuICAgICAgICAgICAgbGluZUVsZW1lbnRzIS5wdXNoKHBhcmFncmFwaENoaWxkISlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJCUlwiOiB7XG4gICAgICAgICAgICBjb25zdCBsaW5lVGV4dCA9IGxpbmVFbGVtZW50cyFcbiAgICAgICAgICAgICAgLm1hcCgoZWxlbWVudCkgPT4gZWxlbWVudC50ZXh0Q29udGVudClcbiAgICAgICAgICAgICAgLmpvaW4oXCJcIilcbiAgICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgaWYgKGxpbmVUZXh0KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGxpbmVIdG1sID0gbGluZUVsZW1lbnRzIVxuICAgICAgICAgICAgICAgIC5tYXAoKGVsZW1lbnQpID0+IGVsZW1lbnQub3V0ZXJIVE1MKVxuICAgICAgICAgICAgICAgIC5qb2luKFwiXCIpXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdWJkaXZpc2lvbkhlYWRlcnNUZXh0IS5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgICAgICAoaXNNdWx0aUxpbmVzSGVhZGVyICYmIHN1YmRpdmlzaW9uQWxpbmVhc1RleHQhLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgc3ViZGl2aXNpb25IZWFkZXJzSHRtbCEucHVzaChsaW5lSHRtbClcbiAgICAgICAgICAgICAgICBzdWJkaXZpc2lvbkhlYWRlcnNUZXh0IS5wdXNoKGxpbmVUZXh0KVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN1YmRpdmlzaW9uQWxpbmVhc0h0bWwhLnB1c2gobGluZUh0bWwpXG4gICAgICAgICAgICAgICAgc3ViZGl2aXNpb25BbGluZWFzVGV4dCEucHVzaChsaW5lVGV4dClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZUVsZW1lbnRzID0gW11cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJERUxcIjoge1xuICAgICAgICAgICAgbGluZUVsZW1lbnRzIS5wdXNoKHBhcmFncmFwaENoaWxkISlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJJTUdcIjoge1xuICAgICAgICAgICAgbGluZUVsZW1lbnRzIS5wdXNoKHBhcmFncmFwaENoaWxkISlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJTUEFOXCI6IHtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IHBhcmFncmFwaENoaWxkIS5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKVxuICAgICAgICAgICAgc3dpdGNoIChjbGFzc05hbWUpIHtcbiAgICAgICAgICAgICAgY2FzZSBcImFFbG9pUGFzdGlsbGVcIjoge1xuICAgICAgICAgICAgICAgIC8vIFNraXAgcGFzdGlsbMOpIFNQQU4uXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlIFwiYUVsb2lQYXN0aWxsZTBcIjoge1xuICAgICAgICAgICAgICAgIC8vIFNraXAgcGFzdGlsbMOpIFNQQU4uXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGxpbmVFbGVtZW50cyEucHVzaChwYXJhZ3JhcGhDaGlsZCEpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgICBjb2RlOiAtMyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgVW5leHBlY3RlZCB0YWcgbmFtZSBmb3IgcGFyYWdyYXBoIGNoaWxkOiAke1xuICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoQ2hpbGQhLnRhZ05hbWVcbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaHRtbCxcbiAgICAgICAgICAgICAgcGFnZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdGF0ZSA9IFwibmV4dFBhcmFncmFwaENoaWxkXCJcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJzdWJBbGluZWFFbGVtZW50XCI6XG4gICAgICAgIHN3aXRjaCAoc3ViQWxpbmVhRWxlbWVudCEudGFnTmFtZSkge1xuICAgICAgICAgIGNhc2UgXCJQXCI6XG4gICAgICAgICAgICBuZXh0UGFyZW50U3RhdGUgPSBcIm5leHRTdWJBbGluZWFFbGVtZW50XCJcbiAgICAgICAgICAgIHBhcmFncmFwaEVsZW1lbnQgPSBzdWJBbGluZWFFbGVtZW50XG4gICAgICAgICAgICBzdGF0ZSA9IFwiZmlyc3RQYXJhZ3JhcGhDaGlsZFwiXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgXCJUQUJMRVwiOlxuICAgICAgICAgICAgLy8gVE9ET1xuICAgICAgICAgICAgc3RhdGUgPSBcIm5leHRTdWJBbGluZWFFbGVtZW50XCJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICAgICAgY29kZTogLTQsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYFVuZXhwZWN0ZWQgdGFnIG5hbWUgZm9yIHN1YiBhbGluZWEgZWxlbWVudDogJHtcbiAgICAgICAgICAgICAgICAgIHN1YkFsaW5lYUVsZW1lbnQhLnRhZ05hbWVcbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaHRtbCxcbiAgICAgICAgICAgICAgcGFnZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgICBzdGF0ZSA9IFwibmV4dFN1YkFsaW5lYUVsZW1lbnRcIlxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgYFVuZXhwZWN0ZWQgc3RhdGU6ICR7c3RhdGV9YFxuICAgIH1cbiAgfVxuXG4gIHdpbmRvdy5jbG9zZSgpIC8vIEZyZWUgbWVtb3J5LlxuXG4gIHJldHVybiB7XG4gICAgZXJyb3I6IG51bGwsXG4gICAgaHRtbCxcbiAgICBwYWdlLFxuICAgIHN1YmRpdmlzaW9ucyxcbiAgICB1cmw6IGFzc2VtYmxlZVVybCxcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVUZXh0ZUxvaVBhcnNlZChcbiAgZmV0Y2g6IChcbiAgICB1cmw6IHN0cmluZyB8IFJlcXVlc3QsXG4gICAgaW5pdD86IFJlcXVlc3RJbml0IHwgdW5kZWZpbmVkLFxuICApID0+IFByb21pc2U8UmVzcG9uc2U+LFxuICBhc3NlbWJsZWVVcmw6IHN0cmluZyxcbikge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGFzc2VtYmxlZVVybClcbiAgY29uc3QgcGFnZSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKVxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiB7IGNvZGU6IHJlc3BvbnNlLnN0YXR1cywgbWVzc2FnZTogcmVzcG9uc2Uuc3RhdHVzVGV4dCB9LFxuICAgICAgcGFnZSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcnNlVGV4dGVMb2koYXNzZW1ibGVlVXJsLCBwYWdlKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBNkI7QUFBQSwrQ0FBN0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRU8sU0FBU0EsYUFBYSxDQUFDQyxZQUFvQixFQUFFQyxJQUFZLEVBQUU7RUFDaEU7RUFDQSxJQUFNQyxZQUFZLEdBQUdELElBQUksQ0FBQ0UsS0FBSyxDQUFDLFVBQVUsQ0FBQztFQUMzQ0Msa0JBQU0sQ0FBQ0MsV0FBVyxDQUFDSCxZQUFZLENBQUNJLE1BQU0sRUFBRSxDQUFDLEVBQUVMLElBQUksQ0FBQztFQUNoRCxJQUFJTSxJQUFJLEdBQUdMLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQ00sSUFBSSxFQUFFO0VBQ2pDLElBQUFKLGtCQUFNLEVBQUNHLElBQUksQ0FBQ0UsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0VBQy9CLElBQUFMLGtCQUFNLEVBQUNHLElBQUksQ0FBQ0csUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBQy9CSCxJQUFJLGtCQUFXQSxJQUFJLENBQUNJLFNBQVMsQ0FBQyxDQUFDLEVBQUVKLElBQUksQ0FBQ0QsTUFBTSxHQUFHLENBQUMsQ0FBQyxZQUFTOztFQUUxRDtFQUNBLGFBQW1CLElB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
452
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfanNkb20iLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImV4cG9ydHMiLCJPcCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093biIsImhhc093blByb3BlcnR5IiwiZGVmaW5lUHJvcGVydHkiLCJrZXkiLCJkZXNjIiwidmFsdWUiLCIkU3ltYm9sIiwiU3ltYm9sIiwiaXRlcmF0b3JTeW1ib2wiLCJpdGVyYXRvciIsImFzeW5jSXRlcmF0b3JTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWdTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImVyciIsIndyYXAiLCJpbm5lckZuIiwib3V0ZXJGbiIsInNlbGYiLCJ0cnlMb2NzTGlzdCIsInByb3RvR2VuZXJhdG9yIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiY3JlYXRlIiwiY29udGV4dCIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJmbiIsImFyZyIsInR5cGUiLCJjYWxsIiwiQ29udGludWVTZW50aW5lbCIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJJdGVyYXRvclByb3RvdHlwZSIsImdldFByb3RvIiwiZ2V0UHJvdG90eXBlT2YiLCJOYXRpdmVJdGVyYXRvclByb3RvdHlwZSIsInZhbHVlcyIsIkdwIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIm1ldGhvZCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiUHJvbWlzZUltcGwiLCJpbnZva2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVjb3JkIiwicmVzdWx0IiwiX3R5cGVvZiIsIl9fYXdhaXQiLCJ0aGVuIiwidW53cmFwcGVkIiwiZXJyb3IiLCJwcmV2aW91c1Byb21pc2UiLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsInN0YXRlIiwiRXJyb3IiLCJkb25lUmVzdWx0IiwiZGVsZWdhdGUiLCJkZWxlZ2F0ZVJlc3VsdCIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsImRvbmUiLCJtZXRob2ROYW1lIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwiaW5mbyIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsImxvY3MiLCJlbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXRlcmFibGUiLCJpdGVyYXRvck1ldGhvZCIsImlzTmFOIiwibGVuZ3RoIiwiaSIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImdlbkZ1biIsImN0b3IiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsIml0ZXIiLCJrZXlzIiwidmFsIiwib2JqZWN0IiwicmV2ZXJzZSIsInBvcCIsInNraXBUZW1wUmVzZXQiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicm9vdFJlY29yZCIsInJ2YWwiLCJleGNlcHRpb24iLCJoYW5kbGUiLCJsb2MiLCJjYXVnaHQiLCJoYXNDYXRjaCIsImhhc0ZpbmFsbHkiLCJmaW5hbGx5RW50cnkiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsInRocm93biIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJfbmV4dCIsIl90aHJvdyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIm8iLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJ0b1N0cmluZyIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJpc0FycmF5IiwibGVuIiwiYXJyMiIsInBhcnNlVGV4dGVMb2kiLCJhc3NlbWJsZWVVcmwiLCJwYWdlIiwicGFnZVNlZ21lbnRzIiwic3BsaXQiLCJhc3NlcnQiLCJzdHJpY3RFcXVhbCIsImh0bWwiLCJ0cmltIiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwiY29uY2F0Iiwic3Vic3RyaW5nIiwiX0pTRE9NIiwiSlNET00iLCJ3aW5kb3ciLCJkb2N1bWVudCIsImNoaWxkcmVuIiwiaHRtbEVsZW1lbnQiLCJib2R5RWxlbWVudCIsImRpdkVsZW1lbnQiLCJ0YWdOYW1lIiwibmV3RGl2RWxlbWVudCIsImluc2VydEJlZm9yZSIsImNyZWF0ZUVsZW1lbnQiLCJfaSIsIl9hcnIiLCJkaXZDaGlsZCIsImdldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiY2xvc2UiLCJjb2RlIiwibWVzc2FnZSIsImJvZHlDaGlsZCIsImFsaW5lYUVsZW1lbnQiLCJpc011bHRpTGluZXNIZWFkZXIiLCJsZXZlbCIsImxldmVscyIsImxpbmVFbGVtZW50cyIsIm5leHRQYXJlbnRTdGF0ZSIsInBhcmFncmFwaENoaWxkIiwicGFyYWdyYXBoRWxlbWVudCIsInN1YkFsaW5lYUVsZW1lbnQiLCJzdWJkaXZpc2lvbnMiLCJzdWJkaXZpc2lvbkFsaW5lYXNIdG1sIiwic3ViZGl2aXNpb25BbGluZWFzVGV4dCIsInN1YmRpdmlzaW9uSGVhZGVyc0h0bWwiLCJzdWJkaXZpc2lvbkhlYWRlcnNUZXh0IiwiaGVhZGVyVGV4dCIsInRleHRDb250ZW50IiwibmFtZUNvbXB1dGVkIiwibm9ybWFsaXplIiwicmVwbGFjZSIsIm5hbWVVcHBlciIsInRvVXBwZXJDYXNlIiwibmV4dExldmVsIiwibWF0Y2giLCJjb25zb2xlIiwibG9nIiwiYWxpbmVhcyIsImhlYWRlcnMiLCJpZCIsInJlbGF0aXZlTGV2ZWwiLCJ0ZXh0IiwibmV4dEVsZW1lbnRTaWJsaW5nIiwiaW5jbHVkZXMiLCJsaW5lVGV4dCIsIm1hcCIsImVsZW1lbnQiLCJqb2luIiwibGluZUh0bWwiLCJvdXRlckhUTUwiLCJjbGFzc05hbWUiLCJ1cmwiLCJyZXRyaWV2ZVRleHRlTG9pUGFyc2VkIiwiX3giLCJfeDIiLCJfcmV0cmlldmVUZXh0ZUxvaVBhcnNlZCIsIl9jYWxsZWUiLCJmZXRjaCIsInJlc3BvbnNlIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsIm9rIiwic3RhdHVzIiwic3RhdHVzVGV4dCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZXJzL2RvY3VtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IHsgSlNET00gfSBmcm9tIFwianNkb21cIlxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUZXh0ZUxvaShhc3NlbWJsZWVVcmw6IHN0cmluZywgcGFnZTogc3RyaW5nKSB7XG4gIC8vIFJlcGFpciBIVE1MLlxuICBjb25zdCBwYWdlU2VnbWVudHMgPSBwYWdlLnNwbGl0KFwiPC9zdHlsZT5cIilcbiAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhZ2VTZWdtZW50cy5sZW5ndGgsIDIsIHBhZ2UpXG4gIGxldCBodG1sID0gcGFnZVNlZ21lbnRzWzFdLnRyaW0oKVxuICBhc3NlcnQoaHRtbC5zdGFydHNXaXRoKFwiPGRpdlwiKSlcbiAgYXNzZXJ0KGh0bWwuZW5kc1dpdGgoXCI8L2Rpdj5cIikpXG4gIGh0bWwgPSBgPGh0bWwke2h0bWwuc3Vic3RyaW5nKDQsIGh0bWwubGVuZ3RoIC0gNil9PC9odG1sPmBcblxuICAvLyBFeHRyYWN0IHN1YmRpdmlzaW9ucyBmcm9tIEhUTUwuXG4gIGNvbnN0IHsgd2luZG93IH0gPSBuZXcgSlNET00oaHRtbClcbiAgY29uc3QgeyBkb2N1bWVudCB9ID0gd2luZG93XG4gIGFzc2VydC5zdHJpY3RFcXVhbChkb2N1bWVudC5jaGlsZHJlbi5sZW5ndGgsIDEpXG4gIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQuY2hpbGRyZW5bMF1cbiAgYXNzZXJ0LnN0cmljdEVxdWFsKGh0bWxFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCwgMilcbiAgY29uc3QgYm9keUVsZW1lbnQgPSBodG1sRWxlbWVudC5jaGlsZHJlblsxXVxuICBpZiAoYXNzZW1ibGVlVXJsID09PSBcImh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDY3NS5hc3BcIikge1xuICAgIC8vIFJlcGFpciBkb2N1bWVudC5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYm9keUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoLCAxKVxuICAgIGNvbnN0IGRpdkVsZW1lbnQgPSBib2R5RWxlbWVudC5jaGlsZHJlblswXVxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChkaXZFbGVtZW50LnRhZ05hbWUsIFwiRElWXCIpXG4gICAgY29uc3QgbmV3RGl2RWxlbWVudCA9IGJvZHlFbGVtZW50Lmluc2VydEJlZm9yZShcbiAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksXG4gICAgICBkaXZFbGVtZW50LFxuICAgIClcbiAgICBib2R5RWxlbWVudC5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJyXCIpLCBkaXZFbGVtZW50KVxuICAgIGZvciAoY29uc3QgZGl2Q2hpbGQgb2YgWy4uLmRpdkVsZW1lbnQuY2hpbGRyZW5dKSB7XG4gICAgICBpZiAoZGl2Q2hpbGQuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIikgPT09IFwiYTlBcnRpY2xlTnVtXCIpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIG5ld0RpdkVsZW1lbnQuYXBwZW5kQ2hpbGQoZGl2Q2hpbGQpXG4gICAgfVxuICB9XG4gIGlmIChib2R5RWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPCAzKSB7XG4gICAgLy8gT2NjdXJzIGluIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDMyNi5hc3AuXG4gICAgd2luZG93LmNsb3NlKCkgLy8gRnJlZSBtZW1vcnkuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiB7IGNvZGU6IC0xLCBtZXNzYWdlOiBcIlRleHRlIGRlIGxvaSBzYW5zIGNvbnRlbnVcIiB9LFxuICAgICAgaHRtbCxcbiAgICAgIHBhZ2UsXG4gICAgfVxuICB9XG4gIGFzc2VydC5zdHJpY3RFcXVhbChib2R5RWxlbWVudC5jaGlsZHJlblswXS50YWdOYW1lLCBcIkRJVlwiKVxuICAvLyBGaXJzdCBjaGlsZCBpcyBhIERJViBkZXNjcmliaW5nIHRoZSBkb2N1bWVudCAoQXNzZW1ibMOpZSdzIGhlYWRlcikuIFNraXAgaXQgZm9yIG5vdy5cbiAgbGV0IGJvZHlDaGlsZCA9IGJvZHlFbGVtZW50LmNoaWxkcmVuWzFdXG4gIGFzc2VydC5zdHJpY3RFcXVhbChib2R5Q2hpbGQudGFnTmFtZSwgXCJCUlwiKVxuICBsZXQgYWxpbmVhRWxlbWVudDogRWxlbWVudCB8IG51bGwgPSBudWxsXG4gIGxldCBpc011bHRpTGluZXNIZWFkZXI6IGJvb2xlYW4gPSBmYWxzZVxuICBsZXQgbGV2ZWw6IG51bWJlciB8IG51bGwgPSBudWxsXG4gIGxldCBsZXZlbHM6IG51bWJlcltdID0gW11cbiAgbGV0IGxpbmVFbGVtZW50czogRWxlbWVudFtdIHwgbnVsbCA9IG51bGxcbiAgbGV0IG5leHRQYXJlbnRTdGF0ZSA9IG51bGxcbiAgbGV0IHBhcmFncmFwaENoaWxkOiBFbGVtZW50IHwgbnVsbCA9IG51bGxcbiAgbGV0IHBhcmFncmFwaEVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsID0gbnVsbFxuICBsZXQgc3RhdGU6IHN0cmluZyB8IG51bGwgPSBcIm5leHRCb2R5Q2hpbGRcIlxuICBsZXQgc3ViQWxpbmVhRWxlbWVudDogRWxlbWVudCB8IG51bGwgPSBudWxsXG4gIGNvbnN0IHN1YmRpdmlzaW9ucyA9IFtdXG4gIGxldCBzdWJkaXZpc2lvbkFsaW5lYXNIdG1sOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gIGxldCBzdWJkaXZpc2lvbkFsaW5lYXNUZXh0OiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gIGxldCBzdWJkaXZpc2lvbkhlYWRlcnNIdG1sOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gIGxldCBzdWJkaXZpc2lvbkhlYWRlcnNUZXh0OiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gIHdoaWxlIChzdGF0ZSAhPT0gbnVsbCkge1xuICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgIGNhc2UgXCJhbGluZWFFbGVtZW50XCI6XG4gICAgICAgIHN3aXRjaCAoYWxpbmVhRWxlbWVudCEudGFnTmFtZSkge1xuICAgICAgICAgIGNhc2UgXCJESVZcIjpcbiAgICAgICAgICAgIHN0YXRlID0gXCJmaXJzdFN1YkFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIFwiSDRcIjpcbiAgICAgICAgICAgIC8vIFRPRE9cbiAgICAgICAgICAgIG5leHRQYXJlbnRTdGF0ZSA9IFwibmV4dEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgICAgcGFyYWdyYXBoRWxlbWVudCA9IGFsaW5lYUVsZW1lbnRcbiAgICAgICAgICAgIHN0YXRlID0gXCJmaXJzdFBhcmFncmFwaENoaWxkXCJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSBcIlBcIjpcbiAgICAgICAgICAgIG5leHRQYXJlbnRTdGF0ZSA9IFwibmV4dEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgICAgcGFyYWdyYXBoRWxlbWVudCA9IGFsaW5lYUVsZW1lbnRcbiAgICAgICAgICAgIHN0YXRlID0gXCJmaXJzdFBhcmFncmFwaENoaWxkXCJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSBcIk9MXCI6XG4gICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICBzdGF0ZSA9IFwibmV4dEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIFwiVEFCTEVcIjpcbiAgICAgICAgICAgIC8vIFRPRE9cbiAgICAgICAgICAgIHN0YXRlID0gXCJuZXh0QWxpbmVhRWxlbWVudFwiXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICAgIGNvZGU6IC0yLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBVbmV4cGVjdGVkIHRhZyBuYW1lIGZvciBhbGluZWEgZWxlbWVudDogJHtcbiAgICAgICAgICAgICAgICAgIGFsaW5lYUVsZW1lbnQhLnRhZ05hbWVcbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaHRtbCxcbiAgICAgICAgICAgICAgcGFnZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcImZpcnN0QWxpbmVhRWxlbWVudFwiOlxuICAgICAgICBhbGluZWFFbGVtZW50ID0gYm9keUNoaWxkLmNoaWxkcmVuWzBdXG4gICAgICAgIGlmIChhbGluZWFFbGVtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBObyBhbGluZWEgaW4gY3VycmVudCBib2R5Q2hpbGQ6IGdvIHRvIG5leHQgYm9keUNoaWxkLlxuICAgICAgICAgIHN0YXRlID0gXCJuZXh0Qm9keUNoaWxkXCJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZSA9IFwiYWxpbmVhRWxlbWVudFwiXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJmaXJzdFBhcmFncmFwaENoaWxkXCI6XG4gICAgICAgIHBhcmFncmFwaENoaWxkID0gcGFyYWdyYXBoRWxlbWVudCEuY2hpbGRyZW5bMF1cbiAgICAgICAgaWYgKHBhcmFncmFwaENoaWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBObyBjaGlsZCBpbiBjdXJyZW50IHBhcmFncmFwaDogZ28gdG8gbmV4dCBwYXJlbnQgZWxlbWVudC5cbiAgICAgICAgICBzdGF0ZSA9IG5leHRQYXJlbnRTdGF0ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGhlYWRlclRleHQgPSBwYXJhZ3JhcGhFbGVtZW50IS50ZXh0Q29udGVudFxuICAgICAgICAgIGNvbnN0IG5hbWVDb21wdXRlZCA9IChoZWFkZXJUZXh0IHx8IFwiXCIpXG4gICAgICAgICAgICAubm9ybWFsaXplKFwiTkZEXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgXCJcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXChub3V2ZWF1XFwpLywgXCJcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXChQb3VyIGNvb3JkaW5hdGlvblxcKS8sIFwiXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwoU3VwcHJpbcOpcz9cXCkvLCBcIlwiKVxuICAgICAgICAgICAgLnJlcGxhY2UoL8KgL2csIFwiIFwiKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1tcXC0sLuKApl0vZywgXCJcIilcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5yZXBsYWNlKC8gezEsfS9nLCBcIl9cIilcbiAgICAgICAgICBjb25zdCBuYW1lVXBwZXIgPSBuYW1lQ29tcHV0ZWQudG9VcHBlckNhc2UoKVxuICAgICAgICAgIGlmIChuYW1lVXBwZXIgPT09IFwiXCIpIHtcbiAgICAgICAgICAgIC8vIE9jY3VycyBpbjpcbiAgICAgICAgICAgIC8vICogaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLzE1L3RleHRlcy8wNDQ1LmFzcFxuICAgICAgICAgICAgLy8gKiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzA2MjYuYXNwXG4gICAgICAgICAgICAvLyBTa2lwIHBhcmFncmFwaC5cbiAgICAgICAgICAgIHN0YXRlID0gbmV4dFBhcmVudFN0YXRlXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBuZXh0TGV2ZWwgPVxuICAgICAgICAgICAgbmFtZVVwcGVyLm1hdGNoKC9eKFJBUFBPUlRfKT9BTk5FWEUoX3wkKS8pICE9PSBudWxsIHx8XG4gICAgICAgICAgICBuYW1lVXBwZXIubWF0Y2goL15FVEFUXy8pICE9PSBudWxsXG4gICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICA6IG5hbWVVcHBlci5tYXRjaCgvXlRPTUVfLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eUEFSVElFXy8pICE9PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgbmFtZVVwcGVyLm1hdGNoKFxuICAgICAgICAgICAgICAgICAgL14oUFJFTUlFUkV8U0VDT05ERXxERVVYSUVNRXxUUk9JU0lFTUV8UVVBVFJJRU1FKV9QQVJUSUUoX3wkKS8sXG4gICAgICAgICAgICAgICAgKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDJcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15MSVZSRV8vKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDNcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15USVRSRV8vKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDRcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15TT1VTVElUUkVfLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyA1XG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eQ0hBUElUUkVfLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyA2XG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eU0VDVElPTl8vKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDdcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15TT1VTU0VDVElPTl8vKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDhcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15BUlRJQ0xFUz9fLykgIT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAvLyBcIkV4cG9zw6kgZGVzIG1vdGlmc1wiIG11c3QgYmUgYXQgdGhlIHNhbWUgbGV2ZWwgYXMgYXJ0aWNsZS5cbiAgICAgICAgICAgICAgICAvLyBcIkV4cG9zw6kgZGVzIG1vdGlmc1wiIHdpdGhvdXQgY29udGVudDpcbiAgICAgICAgICAgICAgICAvLyAqIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDcwMi5hc3BcbiAgICAgICAgICAgICAgICAvLyBcIkV4cG9zw6kgZGVzIG1vdGlmc1wiIHdpdGggY29udGVudDpcbiAgICAgICAgICAgICAgICAvLyAqIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMTMyNi5hc3BcbiAgICAgICAgICAgICAgICAvLyAqIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMTYxMC5hc3BcbiAgICAgICAgICAgICAgICBuYW1lVXBwZXIubWF0Y2goL15FWFBPU0VfREVTX01PVElGUyQvKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDlcbiAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgaWYgKG5leHRMZXZlbCA9PT0gbnVsbCAmJiBzdWJkaXZpc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBpZiAobmFtZVVwcGVyLm1hdGNoKC9eKFBST0pFVHxQUk9QT1NJVElPTilfREVfTE9JKF98JCkvKSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAvLyBPY2N1cnMgaW46XG4gICAgICAgICAgICAgIC8vICogaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLzE1L3RleHRlcy8wMjMyLmFzcFxuICAgICAgICAgICAgICAvLyAqIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDYyNi5hc3BcbiAgICAgICAgICAgICAgLy8gKiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzA2NzYuYXNwXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICBuYW1lVXBwZXIgPT09IFwiSkVVWF9PTFlNUElRVUVTX0VUX1BBUkFMWU1QSVFVRVNfREVfMjAyNFwiXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgLy8gT2NjdXJzIGluIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDY3Ni5hc3BcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZVVwcGVyID09PSBcIlRFWFRFX0RFX0xBX0NPTU1JU1NJT05fTUlYVEVfUEFSSVRBSVJFXCIpIHtcbiAgICAgICAgICAgICAgLy8gT2NjdXJzIGluIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMTI5NC5hc3BcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIGBVbmV4cGVjdGVkIG5hbWVVcHBlciA9IFwiJHtuYW1lVXBwZXJ9XCIgYXQgYmVnaW5uaW5nIG9mIFwidGV4dGUgZGUgbG9pXCIgYXQgJHthc3NlbWJsZWVVcmx9YCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU2tpcCBwYXJhZ3JhcGguXG4gICAgICAgICAgICBzdGF0ZSA9IG5leHRQYXJlbnRTdGF0ZVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5leHRMZXZlbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbGV2ZWwgPSBuZXh0TGV2ZWxcbiAgICAgICAgICAgIHdoaWxlIChsZXZlbHMubGVuZ3RoID4gMCAmJiBsZXZlbCA8IGxldmVsc1tsZXZlbHMubGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgICAgICAgbGV2ZWxzLnBvcCgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGV2ZWxzLmxlbmd0aCA9PT0gMCB8fCBsZXZlbCA+IGxldmVsc1tsZXZlbHMubGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgICAgICAgbGV2ZWxzLnB1c2gobGV2ZWwpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBcnRpY2xlcyAmIFwiRXhwb3PDqSBkZXMgbW90aWZzXCIgYXJlIHRoZSBvbmx5IGRpdmlzaW9ucyB3aXRob3V0IHNlY29uZCB0aXRsZS5cbiAgICAgICAgICAgIGlzTXVsdGlMaW5lc0hlYWRlciA9XG4gICAgICAgICAgICAgIG5hbWVVcHBlci5tYXRjaCgvXkFSVElDTEVTP18vKSA9PT0gbnVsbCAmJlxuICAgICAgICAgICAgICBuYW1lVXBwZXIubWF0Y2goL15FWFBPU0VfREVTX01PVElGUyQvKSA9PT0gbnVsbFxuICAgICAgICAgICAgc3ViZGl2aXNpb25BbGluZWFzSHRtbCA9IFtdXG4gICAgICAgICAgICBzdWJkaXZpc2lvbkFsaW5lYXNUZXh0ID0gW11cbiAgICAgICAgICAgIHN1YmRpdmlzaW9uSGVhZGVyc0h0bWwgPSBbXVxuICAgICAgICAgICAgc3ViZGl2aXNpb25IZWFkZXJzVGV4dCA9IFtdXG4gICAgICAgICAgICBzdWJkaXZpc2lvbnMucHVzaCh7XG4gICAgICAgICAgICAgIGh0bWw6IHtcbiAgICAgICAgICAgICAgICBhbGluZWFzOiBzdWJkaXZpc2lvbkFsaW5lYXNIdG1sLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHN1YmRpdmlzaW9uSGVhZGVyc0h0bWwsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGlkOiBcIkRfXCIgKyBuYW1lQ29tcHV0ZWQsXG4gICAgICAgICAgICAgIGxldmVsOiBsZXZlbCArIDEsXG4gICAgICAgICAgICAgIHJlbGF0aXZlTGV2ZWw6IGxldmVscy5sZW5ndGgsXG4gICAgICAgICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgICAgICBhbGluZWFzOiBzdWJkaXZpc2lvbkFsaW5lYXNUZXh0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHN1YmRpdmlzaW9uSGVhZGVyc1RleHQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICBsaW5lRWxlbWVudHMgPSBbXVxuICAgICAgICAgIHN0YXRlID0gXCJwYXJhZ3JhcGhDaGlsZFwiXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJmaXJzdFN1YkFsaW5lYUVsZW1lbnRcIjpcbiAgICAgICAgc3ViQWxpbmVhRWxlbWVudCA9IGFsaW5lYUVsZW1lbnQhLmNoaWxkcmVuWzBdXG4gICAgICAgIGlmIChzdWJBbGluZWFFbGVtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBObyBzdWItYWxpbmVhIGluIGN1cnJlbnQgYWxpbmVhOiBnbyB0byBuZXh0IGFsaW5lYS5cbiAgICAgICAgICBzdGF0ZSA9IFwibmV4dEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlID0gXCJzdWJBbGluZWFFbGVtZW50XCJcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcIm5leHRBbGluZWFFbGVtZW50XCI6XG4gICAgICAgIGFsaW5lYUVsZW1lbnQgPSBhbGluZWFFbGVtZW50IS5uZXh0RWxlbWVudFNpYmxpbmdcbiAgICAgICAgaWYgKGFsaW5lYUVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAvLyBUaGUgYm9keUNoaWxkIGhhcyBiZWVuIGZ1bGx5IHBhcnNlZC4gR28gdG8gbmV4dCBib2R5Q2hpbGRcbiAgICAgICAgICBzdGF0ZSA9IFwibmV4dEJvZHlDaGlsZFwiXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUgPSBcImFsaW5lYUVsZW1lbnRcIlxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwibmV4dEJvZHlDaGlsZFwiOlxuICAgICAgICBpZiAoYm9keUNoaWxkLm5leHRFbGVtZW50U2libGluZyA9PT0gbnVsbCkge1xuICAgICAgICAgIC8vIFRoZSBkb2N1bWVudCBoYXMgYmVlbiBmdWxseSBwYXJzZWQuXG4gICAgICAgICAgc3RhdGUgPSBudWxsXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYm9keUNoaWxkID0gYm9keUNoaWxkLm5leHRFbGVtZW50U2libGluZ1xuICAgICAgICAgIGlmIChib2R5Q2hpbGQudGFnTmFtZSA9PT0gXCJESVZcIikge1xuICAgICAgICAgICAgc3RhdGUgPSBcImZpcnN0QWxpbmVhRWxlbWVudFwiXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIDxQLz4gaXMgZm9yIGZvb3Rub3Rlc1xuICAgICAgICAgICAgYXNzZXJ0KFxuICAgICAgICAgICAgICBbXCJCUlwiLCBcIkhSXCIsIFwiUFwiXS5pbmNsdWRlcyhib2R5Q2hpbGQudGFnTmFtZSksXG4gICAgICAgICAgICAgIGBVbmV4cGVjdGVkIHRhZyBuYW1lIFwiJHtib2R5Q2hpbGQudGFnTmFtZX1cIiBmb3IgYm9keSBjaGlsZGAsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAvLyBTdGF5IGluIHRoZSBzYW1lIHN0YXRlIHRvIGdvIHRvIG5leHQgYm9keUNoaWxkLlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcIm5leHRQYXJhZ3JhcGhDaGlsZFwiOlxuICAgICAgICBwYXJhZ3JhcGhDaGlsZCA9IHBhcmFncmFwaENoaWxkIS5uZXh0RWxlbWVudFNpYmxpbmdcbiAgICAgICAgaWYgKHBhcmFncmFwaENoaWxkID09PSBudWxsKSB7XG4gICAgICAgICAgLy8gVGhlIHBhcmFncmFwaCBlbGVtZW50IGhhcyBiZWVuIGZ1bGx5IHBhcnNlZC4gR28gdG8gbmV4dCBwYXJlbnQgZWxlbWVudC5cbiAgICAgICAgICBjb25zdCBsaW5lVGV4dCA9IGxpbmVFbGVtZW50cyFcbiAgICAgICAgICAgIC5tYXAoKGVsZW1lbnQpID0+IGVsZW1lbnQudGV4dENvbnRlbnQpXG4gICAgICAgICAgICAuam9pbihcIlwiKVxuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgIGlmIChsaW5lVGV4dCkge1xuICAgICAgICAgICAgY29uc3QgbGluZUh0bWwgPSBsaW5lRWxlbWVudHMhXG4gICAgICAgICAgICAgIC5tYXAoKGVsZW1lbnQpID0+IGVsZW1lbnQub3V0ZXJIVE1MKVxuICAgICAgICAgICAgICAuam9pbihcIlwiKVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBzdWJkaXZpc2lvbkhlYWRlcnNUZXh0IS5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgICAgKGlzTXVsdGlMaW5lc0hlYWRlciAmJiBzdWJkaXZpc2lvbkFsaW5lYXNUZXh0IS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgc3ViZGl2aXNpb25IZWFkZXJzSHRtbCEucHVzaChsaW5lSHRtbClcbiAgICAgICAgICAgICAgc3ViZGl2aXNpb25IZWFkZXJzVGV4dCEucHVzaChsaW5lVGV4dClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN1YmRpdmlzaW9uQWxpbmVhc0h0bWwhLnB1c2gobGluZUh0bWwpXG4gICAgICAgICAgICAgIHN1YmRpdmlzaW9uQWxpbmVhc1RleHQhLnB1c2gobGluZVRleHQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc011bHRpTGluZXNIZWFkZXIgJiYgc3ViZGl2aXNpb25IZWFkZXJzVGV4dCEubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgIGlzTXVsdGlMaW5lc0hlYWRlciA9IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIGxpbmVFbGVtZW50cyA9IG51bGxcbiAgICAgICAgICBzdGF0ZSA9IG5leHRQYXJlbnRTdGF0ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlID0gXCJwYXJhZ3JhcGhDaGlsZFwiXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJuZXh0U3ViQWxpbmVhRWxlbWVudFwiOlxuICAgICAgICBzdWJBbGluZWFFbGVtZW50ID0gc3ViQWxpbmVhRWxlbWVudCEubmV4dEVsZW1lbnRTaWJsaW5nXG4gICAgICAgIGlmIChzdWJBbGluZWFFbGVtZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgLy8gVGhlIGFsaW5lYUVsZW1lbnQgaGFzIGJlZW4gZnVsbHkgcGFyc2VkLiBHbyB0byBuZXh0IGFsaW5lYUVsZW1lbnQuXG4gICAgICAgICAgc3RhdGUgPSBcIm5leHRBbGluZWFFbGVtZW50XCJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZSA9IFwic3ViQWxpbmVhRWxlbWVudFwiXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJwYXJhZ3JhcGhDaGlsZFwiOlxuICAgICAgICBzd2l0Y2ggKHBhcmFncmFwaENoaWxkIS50YWdOYW1lKSB7XG4gICAgICAgICAgY2FzZSBcIkFcIjoge1xuICAgICAgICAgICAgbGluZUVsZW1lbnRzIS5wdXNoKHBhcmFncmFwaENoaWxkISlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJCUlwiOiB7XG4gICAgICAgICAgICBjb25zdCBsaW5lVGV4dCA9IGxpbmVFbGVtZW50cyFcbiAgICAgICAgICAgICAgLm1hcCgoZWxlbWVudCkgPT4gZWxlbWVudC50ZXh0Q29udGVudClcbiAgICAgICAgICAgICAgLmpvaW4oXCJcIilcbiAgICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgaWYgKGxpbmVUZXh0KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGxpbmVIdG1sID0gbGluZUVsZW1lbnRzIVxuICAgICAgICAgICAgICAgIC5tYXAoKGVsZW1lbnQpID0+IGVsZW1lbnQub3V0ZXJIVE1MKVxuICAgICAgICAgICAgICAgIC5qb2luKFwiXCIpXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdWJkaXZpc2lvbkhlYWRlcnNUZXh0IS5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgICAgICAoaXNNdWx0aUxpbmVzSGVhZGVyICYmIHN1YmRpdmlzaW9uQWxpbmVhc1RleHQhLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgc3ViZGl2aXNpb25IZWFkZXJzSHRtbCEucHVzaChsaW5lSHRtbClcbiAgICAgICAgICAgICAgICBzdWJkaXZpc2lvbkhlYWRlcnNUZXh0IS5wdXNoKGxpbmVUZXh0KVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN1YmRpdmlzaW9uQWxpbmVhc0h0bWwhLnB1c2gobGluZUh0bWwpXG4gICAgICAgICAgICAgICAgc3ViZGl2aXNpb25BbGluZWFzVGV4dCEucHVzaChsaW5lVGV4dClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZUVsZW1lbnRzID0gW11cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJERUxcIjoge1xuICAgICAgICAgICAgbGluZUVsZW1lbnRzIS5wdXNoKHBhcmFncmFwaENoaWxkISlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJJTUdcIjoge1xuICAgICAgICAgICAgbGluZUVsZW1lbnRzIS5wdXNoKHBhcmFncmFwaENoaWxkISlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJTUEFOXCI6IHtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IHBhcmFncmFwaENoaWxkIS5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKVxuICAgICAgICAgICAgc3dpdGNoIChjbGFzc05hbWUpIHtcbiAgICAgICAgICAgICAgY2FzZSBcImFFbG9pUGFzdGlsbGVcIjoge1xuICAgICAgICAgICAgICAgIC8vIFNraXAgcGFzdGlsbMOpIFNQQU4uXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlIFwiYUVsb2lQYXN0aWxsZTBcIjoge1xuICAgICAgICAgICAgICAgIC8vIFNraXAgcGFzdGlsbMOpIFNQQU4uXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGxpbmVFbGVtZW50cyEucHVzaChwYXJhZ3JhcGhDaGlsZCEpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgICBjb2RlOiAtMyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgVW5leHBlY3RlZCB0YWcgbmFtZSBmb3IgcGFyYWdyYXBoIGNoaWxkOiAke1xuICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoQ2hpbGQhLnRhZ05hbWVcbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaHRtbCxcbiAgICAgICAgICAgICAgcGFnZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdGF0ZSA9IFwibmV4dFBhcmFncmFwaENoaWxkXCJcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJzdWJBbGluZWFFbGVtZW50XCI6XG4gICAgICAgIHN3aXRjaCAoc3ViQWxpbmVhRWxlbWVudCEudGFnTmFtZSkge1xuICAgICAgICAgIGNhc2UgXCJQXCI6XG4gICAgICAgICAgICBuZXh0UGFyZW50U3RhdGUgPSBcIm5leHRTdWJBbGluZWFFbGVtZW50XCJcbiAgICAgICAgICAgIHBhcmFncmFwaEVsZW1lbnQgPSBzdWJBbGluZWFFbGVtZW50XG4gICAgICAgICAgICBzdGF0ZSA9IFwiZmlyc3RQYXJhZ3JhcGhDaGlsZFwiXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgXCJUQUJMRVwiOlxuICAgICAgICAgICAgLy8gVE9ET1xuICAgICAgICAgICAgc3RhdGUgPSBcIm5leHRTdWJBbGluZWFFbGVtZW50XCJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICAgICAgY29kZTogLTQsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYFVuZXhwZWN0ZWQgdGFnIG5hbWUgZm9yIHN1YiBhbGluZWEgZWxlbWVudDogJHtcbiAgICAgICAgICAgICAgICAgIHN1YkFsaW5lYUVsZW1lbnQhLnRhZ05hbWVcbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaHRtbCxcbiAgICAgICAgICAgICAgcGFnZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgICBzdGF0ZSA9IFwibmV4dFN1YkFsaW5lYUVsZW1lbnRcIlxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgYFVuZXhwZWN0ZWQgc3RhdGU6ICR7c3RhdGV9YFxuICAgIH1cbiAgfVxuXG4gIHdpbmRvdy5jbG9zZSgpIC8vIEZyZWUgbWVtb3J5LlxuXG4gIHJldHVybiB7XG4gICAgZXJyb3I6IG51bGwsXG4gICAgaHRtbCxcbiAgICBwYWdlLFxuICAgIHN1YmRpdmlzaW9ucyxcbiAgICB1cmw6IGFzc2VtYmxlZVVybCxcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVUZXh0ZUxvaVBhcnNlZChcbiAgZmV0Y2g6IChcbiAgICB1cmw6IHN0cmluZyB8IFJlcXVlc3QsXG4gICAgaW5pdD86IFJlcXVlc3RJbml0IHwgdW5kZWZpbmVkLFxuICApID0+IFByb21pc2U8UmVzcG9uc2U+LFxuICBhc3NlbWJsZWVVcmw6IHN0cmluZyxcbikge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGFzc2VtYmxlZVVybClcbiAgY29uc3QgcGFnZSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKVxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiB7IGNvZGU6IHJlc3BvbnNlLnN0YXR1cywgbWVzc2FnZTogcmVzcG9uc2Uuc3RhdHVzVGV4dCB9LFxuICAgICAgcGFnZSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcnNlVGV4dGVMb2koYXNzZW1ibGVlVXJsLCBwYWdlKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUE2QixTQUFBRCx1QkFBQUcsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLGdCQUFBQSxHQUFBO0FBQUEsU0FBQUUsb0JBQUEsa0JBQTdCLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxPQUFBLFNBQUFBLE9BQUEsT0FBQUMsRUFBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsTUFBQSxHQUFBSCxFQUFBLENBQUFJLGNBQUEsRUFBQUMsY0FBQSxHQUFB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