@tricoteuses/assemblee 1.1.3 → 1.1.5

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 (59) hide show
  1. package/lib/bugs/acteur-00010/plugin.test.js +53 -55
  2. package/lib/bugs/acteur-00010.js +26 -30
  3. package/lib/bugs/agenda-00002/plugin.test.js +78 -82
  4. package/lib/bugs/agenda-00002.js +206 -214
  5. package/lib/bugs/agenda-00008/plugin.test.js +54 -56
  6. package/lib/bugs/agenda-00008.js +38 -42
  7. package/lib/bugs/agenda-00011/plugin.test.js +204 -214
  8. package/lib/bugs/agenda-00011.js +117 -131
  9. package/lib/bugs.js +212 -232
  10. package/lib/cleaners/actes_legislatifs.js +1 -1
  11. package/lib/cleaners/acteurs.js +2 -2
  12. package/lib/cleaners/amendements.js +1 -1
  13. package/lib/cleaners/documents.js +1 -1
  14. package/lib/cleaners/dossiers_legislatifs.js +1 -1
  15. package/lib/cleaners/reunions.js +1 -1
  16. package/lib/cleaners/scrutins.js +1 -1
  17. package/lib/cleaners/xml.js +2 -2
  18. package/lib/datasets.js +2 -2
  19. package/lib/dossiers_legislatifs.js +1 -1
  20. package/lib/file_systems.js +48 -50
  21. package/lib/git.js +3 -3
  22. package/lib/git.mjs +2 -2
  23. package/lib/inserters.js +1 -1
  24. package/lib/loaders.js +1 -1
  25. package/lib/parsers/documents.js +29 -31
  26. package/lib/parsers/recherche_amendements.js +284 -288
  27. package/lib/parsers/recherche_amendements.mjs +1 -1
  28. package/lib/raw_types/acteurs_et_organes.d.ts +1 -0
  29. package/lib/raw_types/acteurs_et_organes.js +3 -2
  30. package/lib/raw_types/acteurs_et_organes.mjs +3 -2
  31. package/lib/scripts/bugs_helper.js +301 -317
  32. package/lib/scripts/clean_data.js +1 -1
  33. package/lib/scripts/clean_reorganized_data.js +13 -15
  34. package/lib/scripts/clean_reorganized_data.mjs +1 -1
  35. package/lib/scripts/diff_amendements.js +1 -1
  36. package/lib/scripts/document_dossiers_legislatifs.js +2 -2
  37. package/lib/scripts/merge_scrutins.js +1 -1
  38. package/lib/scripts/parse_textes_lois.js +3 -3
  39. package/lib/scripts/parse_textes_lois.mjs +2 -2
  40. package/lib/scripts/raw_types_from_amendements.js +133 -135
  41. package/lib/scripts/reorganize_data.js +14 -16
  42. package/lib/scripts/reorganize_data.mjs +2 -2
  43. package/lib/scripts/retrieve_deputes_photos.js +170 -172
  44. package/lib/scripts/retrieve_deputes_photos.mjs +2 -2
  45. package/lib/scripts/retrieve_documents.js +266 -278
  46. package/lib/scripts/retrieve_open_data.js +140 -144
  47. package/lib/scripts/retrieve_open_data.mjs +1 -1
  48. package/lib/scripts/retrieve_pending_amendments.js +118 -120
  49. package/lib/scripts/retrieve_senateurs_photos.js +168 -170
  50. package/lib/scripts/retrieve_senateurs_photos.mjs +2 -2
  51. package/lib/scripts/retrieve_textes_lois.js +130 -132
  52. package/lib/scripts/retrieve_textes_lois.mjs +2 -2
  53. package/lib/scripts/validate_json.js +87 -91
  54. package/lib/types/acteurs_et_organes.d.ts +1 -0
  55. package/lib/types/acteurs_et_organes.js +3 -2
  56. package/lib/types/acteurs_et_organes.mjs +3 -2
  57. package/lib/types/dossiers_legislatifs.js +1 -1
  58. package/lib/types/dossiers_legislatifs.mjs +1 -1
  59. package/package.json +6 -6
@@ -53,7 +53,7 @@ function commitAndPush(repositoryDir, commit, remotes) {
53
53
  stdio: ["ignore", "ignore", "pipe"]
54
54
  });
55
55
  try {
56
- execSync('git commit -m "Nouvelle moisson"', {
56
+ execSync('git commit -m "Nouvelle moisson" --quiet', {
57
57
  cwd: repositoryDir,
58
58
  env: process.env,
59
59
  encoding: "utf-8"
@@ -246,4 +246,4 @@ retrievePhotosSenateurs().then(error => process.exit(error ? 1 : 0)).catch(error
246
246
  console.log(error);
247
247
  process.exit(2);
248
248
  });
249
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleGVjU3luYyIsImNvbW1hbmRMaW5lQXJncyIsImZzIiwicGF0aCIsIkVuYWJsZWREYXRhc2V0cyIsImxvYWRBc3NlbWJsZWVEYXRhIiwiQ29kZVR5cGVPcmdhbmUiLCJUeXBlTWFuZGF0Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJTdHJpbmciLCJCb29sZWFuIiwibXVsdGlwbGUiLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImNvbW1pdEFuZFB1c2giLCJyZXBvc2l0b3J5RGlyIiwiY29tbWl0IiwicmVtb3RlcyIsImVycm9yIiwiY3dkIiwiZW52IiwicHJvY2VzcyIsImVuY29kaW5nIiwic3RkaW8iLCJjaGlsZFByb2Nlc3MiLCJzdGRlcnIiLCJ0ZXN0Iiwic3Rkb3V0IiwiY29uc29sZSIsIm91dHB1dCIsInJlbW90ZSIsInJldHJpZXZlUGhvdG9zU2VuYXRldXJzIiwiZGF0YURpciIsImFjdGV1ckJ5VWlkIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImxlZ2lzbGF0dXJlIiwic2VuYXRldXJzIiwiT2JqZWN0IiwidmFsdWVzIiwiZmlsdGVyIiwiYWN0ZXVyIiwibWFuZGF0cyIsIm1hbmRhdFNlbmF0ZXVyIiwibWFuZGF0IiwieHNpVHlwZSIsIk1hbmRhdFBhcmxlbWVudGFpcmVUeXBlIiwidHlwZU9yZ2FuZSIsIlNlbmF0IiwidW5kZWZpbmVkIiwiYWRyZXNzZXMiLCJ1cmwiLCJhZHJlc3NlIiwidHlwZUxpYmVsbGUiLCJ2YWxFbGVjIiwic29ydCIsImEiLCJiIiwidWlkIiwibGVuZ3RoIiwibG9jYWxlQ29tcGFyZSIsImdpdEdyb3VwVXJsIiwiY2xvbmUiLCJ0cmltIiwicmVwbGFjZSIsInBob3Rvc0Rpck5hbWUiLCJwaG90b3NEaXIiLCJqb2luIiwiZW5zdXJlRGlyU3luYyIsImZldGNoIiwibWlzc2luZ1Bob3RvRmlsZVBhdGgiLCJzZW5hdGV1ciIsImlkZW50IiwiZXRhdENpdmlsIiwic2VuYXRldXJTdGVtIiwic3RlbUZyb21TZW5hdGV1ciIsInBob3RvRmlsZW5hbWUiLCJwaG90b0ZpbGVQYXRoIiwicGhvdG9UZW1wRmlsZW5hbWUiLCJwaG90b1RlbXBGaWxlUGF0aCIsInVybFBob3RvIiwic2lsZW50IiwibG9nIiwicHJlbm9tIiwibm9tIiwicmVuYW1lU3luYyIsImV4aXN0c1N5bmMiLCJ3YXJuIiwiY29weUZpbGVTeW5jIiwicGhvdG9CeUlkU2VuYXRldXIiLCJyb3dzRmlsZW5hbWVzIiwic2VuYXRldXJJbmRleCIsInJvd0luZGV4Iiwicm93Iiwic2xpY2UiLCJwaG90b3NGaWxlbmFtZXMiLCJjb2x1bW5JbmRleCIsImVudHJpZXMiLCJwdXNoIiwiY2hlbWluIiwiY2hlbWluTW9zYWlxdWUiLCJoYXV0ZXVyIiwibGFyZ2V1ciIsInhNb3NhaXF1ZSIsInlNb3NhaXF1ZSIsInJvd0ZpbGVuYW1lIiwidW5saW5rU3luYyIsImpzb25GaWxlUGF0aCIsIndyaXRlRmlsZVN5bmMiLCJKU09OIiwic3RyaW5naWZ5IiwibWF0Y2giLCJ0aGVuIiwiZXhpdCIsImNhdGNoIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmV0cmlldmVfc2VuYXRldXJzX3Bob3Rvcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGlsZFByb2Nlc3MsIGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG4vLyBpbXBvcnQgZmV0Y2ggZnJvbSBcIm5vZGUtZmV0Y2hcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuLy8gaW1wb3J0IHN0cmVhbSBmcm9tIFwic3RyZWFtXCJcbi8vIGltcG9ydCB1dGlsIGZyb20gXCJ1dGlsXCJcblxuaW1wb3J0IHsgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGxvYWRBc3NlbWJsZWVEYXRhIH0gZnJvbSBcIi4uL2xvYWRlcnNcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb2RlVHlwZU9yZ2FuZSxcbiAgTWFuZGF0LFxuICBQaG90byxcbiAgVHlwZU1hbmRhdCxcbn0gZnJvbSBcIi4uL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcIkNcIixcbiAgICBoZWxwOiBcImNsb25lIHJlcG9zaXRvcmllcyBmcm9tIGdpdmVuIGdyb3VwIChvciBvcmdhbml6YXRpb24pIGdpdCBVUkxcIixcbiAgICBuYW1lOiBcImNsb25lXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiY1wiLFxuICAgIGhlbHA6IFwiY29tbWl0IHBob3Rvc1wiLFxuICAgIG5hbWU6IFwiY29tbWl0XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcImZcIixcbiAgICBoZWxwOiBcImZldGNoIHPDqW5hdGV1cnMnIHBpY3R1cmVzIGluc3RlYWQgb2YgcmV0cmlldmluZyB0aGVtIGZyb20gZmlsZXNcIixcbiAgICBuYW1lOiBcImZldGNoXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInJcIixcbiAgICBoZWxwOiBcInB1c2ggY29tbWl0IHRvIGdpdmVuIHJlbW90ZVwiLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIG5hbWU6IFwicmVtb3RlXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwic1wiLFxuICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICBoZWxwOiBcImRpcmVjdG9yeSBjb250YWluaW5nIEFzc2VtYmzDqWUgb3BlbiBkYXRhIGZpbGVzXCIsXG4gICAgbmFtZTogXCJkYXRhRGlyXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG4vLyBjb25zdCBwaXBlbGluZSA9IHV0aWwucHJvbWlzaWZ5KHN0cmVhbS5waXBlbGluZSlcblxuZnVuY3Rpb24gY29tbWl0QW5kUHVzaChcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBjb21taXQ6IGJvb2xlYW4sXG4gIHJlbW90ZXM/OiBzdHJpbmdbXSxcbik6IGJvb2xlYW4ge1xuICBsZXQgZXJyb3IgPSBmYWxzZVxuICBpZiAoY29tbWl0KSB7XG4gICAgZXhlY1N5bmMoXCJnaXQgYWRkIC5cIiwge1xuICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICB9KVxuICAgIHRyeSB7XG4gICAgICBleGVjU3luYygnZ2l0IGNvbW1pdCAtbSBcIk5vdXZlbGxlIG1vaXNzb25cIicsIHtcbiAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKGNoaWxkUHJvY2VzcyBhcyBDaGlsZFByb2Nlc3MpLnN0ZGVyciA9PT0gbnVsbCB8fFxuICAgICAgICAhL25vdGhpbmcgdG8gY29tbWl0Ly50ZXN0KChjaGlsZFByb2Nlc3MgYXMgYW55KS5zdGRvdXQpXG4gICAgICApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuICAgICAgICB0aHJvdyBjaGlsZFByb2Nlc3NcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCByZW1vdGUgb2YgcmVtb3RlcyB8fCBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBwdXNoICR7cmVtb3RlfSBtYXN0ZXJgLCB7XG4gICAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgICAvLyBEb24ndCBzdG9wIHdoZW4gcHVzaCBmYWlscy5cbiAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9yXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlUGhvdG9zU2VuYXRldXJzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBkYXRhRGlyID0gb3B0aW9ucy5kYXRhRGlyXG4gIGNvbnN0IHsgYWN0ZXVyQnlVaWQgfSA9IGxvYWRBc3NlbWJsZWVEYXRhKFxuICAgIGRhdGFEaXIsXG4gICAgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMsXG4gICAgb3B0aW9ucy5sZWdpc2xhdHVyZSxcbiAgKVxuICBjb25zdCBzZW5hdGV1cnMgPSBPYmplY3QudmFsdWVzKGFjdGV1ckJ5VWlkKVxuICAgIC5maWx0ZXIoKGFjdGV1cikgPT4ge1xuICAgICAgY29uc3QgeyBtYW5kYXRzIH0gPSBhY3RldXJcbiAgICAgIGlmICghbWFuZGF0cykge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1hbmRhdFNlbmF0ZXVyID0gbWFuZGF0cy5maWx0ZXIoXG4gICAgICAgIChtYW5kYXQ6IE1hbmRhdCkgPT5cbiAgICAgICAgICBtYW5kYXQueHNpVHlwZSA9PT0gVHlwZU1hbmRhdC5NYW5kYXRQYXJsZW1lbnRhaXJlVHlwZSAmJlxuICAgICAgICAgIC8vIG1hbmRhdC5sZWdpc2xhdHVyZSA9PT0gb3B0aW9ucy5sZWdpc2xhdHVyZSAmJlxuICAgICAgICAgIG1hbmRhdC50eXBlT3JnYW5lID09PSBDb2RlVHlwZU9yZ2FuZS5TZW5hdCxcbiAgICAgIClbMF1cbiAgICAgIGlmIChtYW5kYXRTZW5hdGV1ciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgY29uc3QgeyBhZHJlc3NlcyB9ID0gYWN0ZXVyXG4gICAgICBpZiAoYWRyZXNzZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGxldCB1cmwgPSBudWxsXG4gICAgICBmb3IgKGNvbnN0IGFkcmVzc2Ugb2YgYWRyZXNzZXMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFkcmVzc2UueHNpVHlwZSA9PT0gXCJBZHJlc3NlU2l0ZVdlYl9UeXBlXCIgJiZcbiAgICAgICAgICBhZHJlc3NlLnR5cGVMaWJlbGxlID09PSBcIlVybCBzw6luYXRldXJcIlxuICAgICAgICApIHtcbiAgICAgICAgICB1cmwgPSBhZHJlc3NlLnZhbEVsZWNcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIEJvb2xlYW4odXJsKVxuICAgIH0pXG4gICAgLnNvcnQoKGEsIGIpID0+XG4gICAgICBhLnVpZC5sZW5ndGggPT09IGIudWlkLmxlbmd0aFxuICAgICAgICA/IGEudWlkLmxvY2FsZUNvbXBhcmUoYi51aWQpXG4gICAgICAgIDogYS51aWQubGVuZ3RoIC0gYi51aWQubGVuZ3RoLFxuICAgIClcblxuICBjb25zdCBnaXRHcm91cFVybCA9IG9wdGlvbnMuY2xvbmVcbiAgICA/IG9wdGlvbnMuY2xvbmUudHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIilcbiAgICA6IHVuZGVmaW5lZFxuICBjb25zdCBwaG90b3NEaXJOYW1lID0gXCJwaG90b3Nfc2VuYXRldXJzXCJcbiAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7cGhvdG9zRGlyTmFtZX0uZ2l0YCwge1xuICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICB9KVxuICB9XG4gIGNvbnN0IHBob3Rvc0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBwaG90b3NEaXJOYW1lKVxuXG4gIC8vIERvd25sb2FkIHBob3Rvcy5cbiAgZnMuZW5zdXJlRGlyU3luYyhwaG90b3NEaXIpXG4gIGlmIChvcHRpb25zLmZldGNoKSB7XG4gICAgY29uc3QgbWlzc2luZ1Bob3RvRmlsZVBhdGggPSBcImltYWdlcy90cmFuc3BhcmVudF8xNTV4MjI1LmpwZ1wiXG4gICAgZm9yIChjb25zdCBzZW5hdGV1ciBvZiBzZW5hdGV1cnMpIHtcbiAgICAgIGNvbnN0IGlkZW50ID0gc2VuYXRldXIuZXRhdENpdmlsLmlkZW50XG4gICAgICBjb25zdCBzZW5hdGV1clN0ZW0gPSBzdGVtRnJvbVNlbmF0ZXVyKHNlbmF0ZXVyKVxuICAgICAgY29uc3QgcGhvdG9GaWxlbmFtZSA9IGAke3NlbmF0ZXVyU3RlbX0uanBnYFxuICAgICAgY29uc3QgcGhvdG9GaWxlUGF0aCA9IHBhdGguam9pbihwaG90b3NEaXIsIHBob3RvRmlsZW5hbWUpXG4gICAgICBjb25zdCBwaG90b1RlbXBGaWxlbmFtZSA9IGAke3NlbmF0ZXVyU3RlbX1fdGVtcC5qcGdgXG4gICAgICBjb25zdCBwaG90b1RlbXBGaWxlUGF0aCA9IHBhdGguam9pbihwaG90b3NEaXIsIHBob3RvVGVtcEZpbGVuYW1lKVxuICAgICAgY29uc3QgdXJsUGhvdG8gPSBgaHR0cHM6Ly93d3cuc2VuYXQuZnIvc2VuaW1nLyR7cGhvdG9GaWxlbmFtZX1gXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGBMb2FkaW5nIHBob3RvICR7dXJsUGhvdG99IGZvciAke2lkZW50LnByZW5vbX0gJHtpZGVudC5ub2194oCmYCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgLy8gZm9yIChsZXQgcmV0cmllcyA9IDA7IHJldHJpZXMgPCAzOyByZXRyaWVzKyspIHtcbiAgICAgIC8vICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmxQaG90bylcbiAgICAgIC8vICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAvLyAgICAgYXdhaXQgcGlwZWxpbmUocmVzcG9uc2UuYm9keSwgZnMuY3JlYXRlV3JpdGVTdHJlYW0ocGhvdG9UZW1wRmlsZVBhdGgpKVxuICAgICAgLy8gICAgIGZzLnJlbmFtZVN5bmMocGhvdG9UZW1wRmlsZVBhdGgsIHBob3RvRmlsZVBhdGgpXG4gICAgICAvLyAgICAgYnJlYWtcbiAgICAgIC8vICAgfVxuICAgICAgLy8gICBpZiAocmV0cmllcyA+PSAyKSB7XG4gICAgICAvLyAgICAgY29uc29sZS53YXJuKGBGZXRjaCBmYWlsZWQ6ICR7dXJsUGhvdG99ICgke2lkZW50LnByZW5vbX0gJHtpZGVudC5ub219KWApXG4gICAgICAvLyAgICAgY29uc29sZS53YXJuKHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dClcbiAgICAgIC8vICAgICBjb25zb2xlLndhcm4oYXdhaXQgcmVzcG9uc2UudGV4dCgpKVxuICAgICAgLy8gICAgIGlmIChmcy5leGlzdHNTeW5jKHBob3RvRmlsZVBhdGgpKSB7XG4gICAgICAvLyAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFJldXNpbmcgZXhpc3RpbmcgaW1hZ2VcIilcbiAgICAgIC8vICAgICB9IGVsc2Uge1xuICAgICAgLy8gICAgICAgY29uc29sZS53YXJuKFwiICA9PiBVc2luZyBibGFuayBpbWFnZVwiKVxuICAgICAgLy8gICAgICAgZnMuY29weUZpbGVTeW5jKG1pc3NpbmdQaG90b0ZpbGVQYXRoLCBwaG90b0ZpbGVQYXRoKVxuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgICBicmVha1xuICAgICAgLy8gICB9XG4gICAgICAvLyB9XG4gICAgICB0cnkge1xuICAgICAgICBleGVjU3luYyhgd2dldCAtLXF1aWV0IC1PICR7cGhvdG9UZW1wRmlsZW5hbWV9ICR7dXJsUGhvdG99YCwge1xuICAgICAgICAgIGN3ZDogcGhvdG9zRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICAvLyBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgICAgZnMucmVuYW1lU3luYyhwaG90b1RlbXBGaWxlUGF0aCwgcGhvdG9GaWxlUGF0aClcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHBob3RvRmlsZVBhdGgpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiICA9PiBSZXVzaW5nIGV4aXN0aW5nIGltYWdlXCIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiICA9PiBVc2luZyBibGFuayBpbWFnZVwiKVxuICAgICAgICAgIGZzLmNvcHlGaWxlU3luYyhtaXNzaW5nUGhvdG9GaWxlUGF0aCwgcGhvdG9GaWxlUGF0aClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc2l6ZSBwaG90b3MgdG8gMTU1eDIyNSwgYmVjYXVzZSBzb21lIGhhdmVuJ3QgZXhhY3RseSB0aGlzIHNpemUuXG4gIGZvciAoY29uc3Qgc2VuYXRldXIgb2Ygc2VuYXRldXJzKSB7XG4gICAgY29uc3QgaWRlbnQgPSBzZW5hdGV1ci5ldGF0Q2l2aWwuaWRlbnRcbiAgICBjb25zdCBzZW5hdGV1clN0ZW0gPSBzdGVtRnJvbVNlbmF0ZXVyKHNlbmF0ZXVyKVxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgUmVzaXppbmcgcGhvdG8gJHtzZW5hdGV1clN0ZW19IGZvciAke2lkZW50LnByZW5vbX0gJHtpZGVudC5ub2194oCmYCxcbiAgICAgIClcbiAgICB9XG4gICAgZXhlY1N5bmMoXG4gICAgICBgZ20gY29udmVydCAtcmVzaXplIDE1NXgyMjUhICR7c2VuYXRldXJTdGVtfS5qcGcgJHtzZW5hdGV1clN0ZW19XzE1NXgyMjUuanBnYCxcbiAgICAgIHtcbiAgICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIG1vc2FpYyBvZiBwaG90b3MuXG4gIGNvbnN0IHBob3RvQnlJZFNlbmF0ZXVyOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBjb25zdCByb3dzRmlsZW5hbWVzOiBzdHJpbmdbXSA9IFtdXG4gIGZvciAoXG4gICAgbGV0IHNlbmF0ZXVySW5kZXggPSAwLCByb3dJbmRleCA9IDA7XG4gICAgc2VuYXRldXJJbmRleCA8IHNlbmF0ZXVycy5sZW5ndGg7XG4gICAgc2VuYXRldXJJbmRleCArPSAyNSwgcm93SW5kZXgrK1xuICApIHtcbiAgICBjb25zdCByb3cgPSBzZW5hdGV1cnMuc2xpY2Uoc2VuYXRldXJJbmRleCwgc2VuYXRldXJJbmRleCArIDI1KVxuICAgIGNvbnN0IHBob3Rvc0ZpbGVuYW1lczogc3RyaW5nW10gPSBbXVxuICAgIGZvciAoY29uc3QgW2NvbHVtbkluZGV4LCBzZW5hdGV1cl0gb2Ygcm93LmVudHJpZXMoKSkge1xuICAgICAgY29uc3Qgc2VuYXRldXJTdGVtID0gc3RlbUZyb21TZW5hdGV1cihzZW5hdGV1cilcbiAgICAgIGNvbnN0IHBob3RvRmlsZW5hbWUgPSBgJHtzZW5hdGV1clN0ZW19XzE1NXgyMjUuanBnYFxuICAgICAgcGhvdG9zRmlsZW5hbWVzLnB1c2gocGhvdG9GaWxlbmFtZSlcbiAgICAgIHBob3RvQnlJZFNlbmF0ZXVyW3NlbmF0ZXVyLnVpZF0gPSB7XG4gICAgICAgIGNoZW1pbjogYHBob3Rvc19zZW5hdGV1cnMvJHtwaG90b0ZpbGVuYW1lfWAsXG4gICAgICAgIGNoZW1pbk1vc2FpcXVlOiBgcGhvdG9zX3NlbmF0ZXVycy9zZW5hdGV1cnMuanBnYCxcbiAgICAgICAgaGF1dGV1cjogMjI1LFxuICAgICAgICBsYXJnZXVyOiAxNTUsXG4gICAgICAgIHhNb3NhaXF1ZTogY29sdW1uSW5kZXggKiAxNTUsXG4gICAgICAgIHlNb3NhaXF1ZTogcm93SW5kZXggKiAyMjUsXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHJvd0ZpbGVuYW1lID0gYHJvdy0ke3Jvd0luZGV4fS5qcGdgXG4gICAgZXhlY1N5bmMoYGdtIGNvbnZlcnQgJHtwaG90b3NGaWxlbmFtZXMuam9pbihcIiBcIil9ICthcHBlbmQgJHtyb3dGaWxlbmFtZX1gLCB7XG4gICAgICBjd2Q6IHBob3Rvc0RpcixcbiAgICB9KVxuICAgIHJvd3NGaWxlbmFtZXMucHVzaChyb3dGaWxlbmFtZSlcbiAgfVxuICBleGVjU3luYyhgZ20gY29udmVydCAke3Jvd3NGaWxlbmFtZXMuam9pbihcIiBcIil9IC1hcHBlbmQgc2VuYXRldXJzLmpwZ2AsIHtcbiAgICBjd2Q6IHBob3Rvc0RpcixcbiAgfSlcbiAgZm9yIChjb25zdCByb3dGaWxlbmFtZSBvZiByb3dzRmlsZW5hbWVzKSB7XG4gICAgZnMudW5saW5rU3luYyhwYXRoLmpvaW4ocGhvdG9zRGlyLCByb3dGaWxlbmFtZSkpXG4gIH1cblxuICBjb25zdCBqc29uRmlsZVBhdGggPSBwYXRoLmpvaW4ocGhvdG9zRGlyLCBcInNlbmF0ZXVycy5qc29uXCIpXG4gIGZzLndyaXRlRmlsZVN5bmMoanNvbkZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShwaG90b0J5SWRTZW5hdGV1ciwgbnVsbCwgMikpXG5cbiAgcmV0dXJuIGNvbW1pdEFuZFB1c2gocGhvdG9zRGlyLCBvcHRpb25zLmNvbW1pdCwgb3B0aW9ucy5yZW1vdGUpXG59XG5cbmZ1bmN0aW9uIHN0ZW1Gcm9tU2VuYXRldXIoc2VuYXRldXI6IEFjdGV1cikge1xuICBjb25zdCB7IGFkcmVzc2VzIH0gPSBzZW5hdGV1clxuICBsZXQgdXJsID0gbnVsbFxuICBmb3IgKGNvbnN0IGFkcmVzc2Ugb2YgYWRyZXNzZXMhKSB7XG4gICAgaWYgKFxuICAgICAgYWRyZXNzZS54c2lUeXBlID09PSBcIkFkcmVzc2VTaXRlV2ViX1R5cGVcIiAmJlxuICAgICAgYWRyZXNzZS50eXBlTGliZWxsZSA9PT0gXCJVcmwgc8OpbmF0ZXVyXCJcbiAgICApIHtcbiAgICAgIHVybCA9IGFkcmVzc2UudmFsRWxlY1xuICAgIH1cbiAgfVxuICBjb25zdCBtYXRjaCA9IHVybCEubWF0Y2goL15odHRwczpcXC9cXC93d3dcXC5zZW5hdFxcLmZyXFwvc2VuYXRldXJcXC8oLiopXFwuaHRtbCQvKVxuICBjb25zdCBzZW5hdGV1clN0ZW0gPSBtYXRjaCFbMV1cbiAgcmV0dXJuIHNlbmF0ZXVyU3RlbVxufVxuXG5yZXRyaWV2ZVBob3Rvc1NlbmF0ZXVycygpXG4gIC50aGVuKChlcnJvcikgPT4gcHJvY2Vzcy5leGl0KGVycm9yID8gMSA6IDApKVxuICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgY29uc29sZS5sb2coZXJyb3IpXG4gICAgcHJvY2Vzcy5leGl0KDIpXG4gIH0pXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQXVCQSxRQUFRLFFBQVEsZUFBZTtBQUN0RCxPQUFPQyxlQUFlLE1BQU0sbUJBQW1CO0FBQy9DLE9BQU9DLEVBQUUsTUFBTSxVQUFVO0FBQ3pCO0FB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
249
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleGVjU3luYyIsImNvbW1hbmRMaW5lQXJncyIsImZzIiwicGF0aCIsIkVuYWJsZWREYXRhc2V0cyIsImxvYWRBc3NlbWJsZWVEYXRhIiwiQ29kZVR5cGVPcmdhbmUiLCJUeXBlTWFuZGF0Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJTdHJpbmciLCJCb29sZWFuIiwibXVsdGlwbGUiLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImNvbW1pdEFuZFB1c2giLCJyZXBvc2l0b3J5RGlyIiwiY29tbWl0IiwicmVtb3RlcyIsImVycm9yIiwiY3dkIiwiZW52IiwicHJvY2VzcyIsImVuY29kaW5nIiwic3RkaW8iLCJjaGlsZFByb2Nlc3MiLCJzdGRlcnIiLCJ0ZXN0Iiwic3Rkb3V0IiwiY29uc29sZSIsIm91dHB1dCIsInJlbW90ZSIsInJldHJpZXZlUGhvdG9zU2VuYXRldXJzIiwiZGF0YURpciIsImFjdGV1ckJ5VWlkIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImxlZ2lzbGF0dXJlIiwic2VuYXRldXJzIiwiT2JqZWN0IiwidmFsdWVzIiwiZmlsdGVyIiwiYWN0ZXVyIiwibWFuZGF0cyIsIm1hbmRhdFNlbmF0ZXVyIiwibWFuZGF0IiwieHNpVHlwZSIsIk1hbmRhdFBhcmxlbWVudGFpcmVUeXBlIiwidHlwZU9yZ2FuZSIsIlNlbmF0IiwidW5kZWZpbmVkIiwiYWRyZXNzZXMiLCJ1cmwiLCJhZHJlc3NlIiwidHlwZUxpYmVsbGUiLCJ2YWxFbGVjIiwic29ydCIsImEiLCJiIiwidWlkIiwibGVuZ3RoIiwibG9jYWxlQ29tcGFyZSIsImdpdEdyb3VwVXJsIiwiY2xvbmUiLCJ0cmltIiwicmVwbGFjZSIsInBob3Rvc0Rpck5hbWUiLCJwaG90b3NEaXIiLCJqb2luIiwiZW5zdXJlRGlyU3luYyIsImZldGNoIiwibWlzc2luZ1Bob3RvRmlsZVBhdGgiLCJzZW5hdGV1ciIsImlkZW50IiwiZXRhdENpdmlsIiwic2VuYXRldXJTdGVtIiwic3RlbUZyb21TZW5hdGV1ciIsInBob3RvRmlsZW5hbWUiLCJwaG90b0ZpbGVQYXRoIiwicGhvdG9UZW1wRmlsZW5hbWUiLCJwaG90b1RlbXBGaWxlUGF0aCIsInVybFBob3RvIiwic2lsZW50IiwibG9nIiwicHJlbm9tIiwibm9tIiwicmVuYW1lU3luYyIsImV4aXN0c1N5bmMiLCJ3YXJuIiwiY29weUZpbGVTeW5jIiwicGhvdG9CeUlkU2VuYXRldXIiLCJyb3dzRmlsZW5hbWVzIiwic2VuYXRldXJJbmRleCIsInJvd0luZGV4Iiwicm93Iiwic2xpY2UiLCJwaG90b3NGaWxlbmFtZXMiLCJjb2x1bW5JbmRleCIsImVudHJpZXMiLCJwdXNoIiwiY2hlbWluIiwiY2hlbWluTW9zYWlxdWUiLCJoYXV0ZXVyIiwibGFyZ2V1ciIsInhNb3NhaXF1ZSIsInlNb3NhaXF1ZSIsInJvd0ZpbGVuYW1lIiwidW5saW5rU3luYyIsImpzb25GaWxlUGF0aCIsIndyaXRlRmlsZVN5bmMiLCJKU09OIiwic3RyaW5naWZ5IiwibWF0Y2giLCJ0aGVuIiwiZXhpdCIsImNhdGNoIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmV0cmlldmVfc2VuYXRldXJzX3Bob3Rvcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGlsZFByb2Nlc3MsIGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG4vLyBpbXBvcnQgZmV0Y2ggZnJvbSBcIm5vZGUtZmV0Y2hcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuLy8gaW1wb3J0IHN0cmVhbSBmcm9tIFwic3RyZWFtXCJcbi8vIGltcG9ydCB1dGlsIGZyb20gXCJ1dGlsXCJcblxuaW1wb3J0IHsgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGxvYWRBc3NlbWJsZWVEYXRhIH0gZnJvbSBcIi4uL2xvYWRlcnNcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb2RlVHlwZU9yZ2FuZSxcbiAgTWFuZGF0LFxuICBQaG90byxcbiAgVHlwZU1hbmRhdCxcbn0gZnJvbSBcIi4uL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcIkNcIixcbiAgICBoZWxwOiBcImNsb25lIHJlcG9zaXRvcmllcyBmcm9tIGdpdmVuIGdyb3VwIChvciBvcmdhbml6YXRpb24pIGdpdCBVUkxcIixcbiAgICBuYW1lOiBcImNsb25lXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiY1wiLFxuICAgIGhlbHA6IFwiY29tbWl0IHBob3Rvc1wiLFxuICAgIG5hbWU6IFwiY29tbWl0XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcImZcIixcbiAgICBoZWxwOiBcImZldGNoIHPDqW5hdGV1cnMnIHBpY3R1cmVzIGluc3RlYWQgb2YgcmV0cmlldmluZyB0aGVtIGZyb20gZmlsZXNcIixcbiAgICBuYW1lOiBcImZldGNoXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInJcIixcbiAgICBoZWxwOiBcInB1c2ggY29tbWl0IHRvIGdpdmVuIHJlbW90ZVwiLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIG5hbWU6IFwicmVtb3RlXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwic1wiLFxuICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICBoZWxwOiBcImRpcmVjdG9yeSBjb250YWluaW5nIEFzc2VtYmzDqWUgb3BlbiBkYXRhIGZpbGVzXCIsXG4gICAgbmFtZTogXCJkYXRhRGlyXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG4vLyBjb25zdCBwaXBlbGluZSA9IHV0aWwucHJvbWlzaWZ5KHN0cmVhbS5waXBlbGluZSlcblxuZnVuY3Rpb24gY29tbWl0QW5kUHVzaChcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBjb21taXQ6IGJvb2xlYW4sXG4gIHJlbW90ZXM/OiBzdHJpbmdbXSxcbik6IGJvb2xlYW4ge1xuICBsZXQgZXJyb3IgPSBmYWxzZVxuICBpZiAoY29tbWl0KSB7XG4gICAgZXhlY1N5bmMoXCJnaXQgYWRkIC5cIiwge1xuICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICB9KVxuICAgIHRyeSB7XG4gICAgICBleGVjU3luYygnZ2l0IGNvbW1pdCAtbSBcIk5vdXZlbGxlIG1vaXNzb25cIiAtLXF1aWV0Jywge1xuICAgICAgICBjd2Q6IHJlcG9zaXRvcnlEaXIsXG4gICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICB9KVxuICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgaWYgKFxuICAgICAgICAoY2hpbGRQcm9jZXNzIGFzIENoaWxkUHJvY2Vzcykuc3RkZXJyID09PSBudWxsIHx8XG4gICAgICAgICEvbm90aGluZyB0byBjb21taXQvLnRlc3QoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLnN0ZG91dClcbiAgICAgICkge1xuICAgICAgICBjb25zb2xlLmVycm9yKChjaGlsZFByb2Nlc3MgYXMgYW55KS5vdXRwdXQpXG4gICAgICAgIHRocm93IGNoaWxkUHJvY2Vzc1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IHJlbW90ZSBvZiByZW1vdGVzIHx8IFtdKSB7XG4gICAgICB0cnkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IHB1c2ggJHtyZW1vdGV9IG1hc3RlcmAsIHtcbiAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoY2hpbGRQcm9jZXNzKSB7XG4gICAgICAgIC8vIERvbid0IHN0b3Agd2hlbiBwdXNoIGZhaWxzLlxuICAgICAgICBjb25zb2xlLmVycm9yKChjaGlsZFByb2Nlc3MgYXMgYW55KS5vdXRwdXQpXG4gICAgICAgIGVycm9yID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZXJyb3Jcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVQaG90b3NTZW5hdGV1cnMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgY29uc3QgeyBhY3RldXJCeVVpZCB9ID0gbG9hZEFzc2VtYmxlZURhdGEoXG4gICAgZGF0YURpcixcbiAgICBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcyxcbiAgICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICApXG4gIGNvbnN0IHNlbmF0ZXVycyA9IE9iamVjdC52YWx1ZXMoYWN0ZXVyQnlVaWQpXG4gICAgLmZpbHRlcigoYWN0ZXVyKSA9PiB7XG4gICAgICBjb25zdCB7IG1hbmRhdHMgfSA9IGFjdGV1clxuICAgICAgaWYgKCFtYW5kYXRzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgY29uc3QgbWFuZGF0U2VuYXRldXIgPSBtYW5kYXRzLmZpbHRlcihcbiAgICAgICAgKG1hbmRhdDogTWFuZGF0KSA9PlxuICAgICAgICAgIG1hbmRhdC54c2lUeXBlID09PSBUeXBlTWFuZGF0Lk1hbmRhdFBhcmxlbWVudGFpcmVUeXBlICYmXG4gICAgICAgICAgLy8gbWFuZGF0LmxlZ2lzbGF0dXJlID09PSBvcHRpb25zLmxlZ2lzbGF0dXJlICYmXG4gICAgICAgICAgbWFuZGF0LnR5cGVPcmdhbmUgPT09IENvZGVUeXBlT3JnYW5lLlNlbmF0LFxuICAgICAgKVswXVxuICAgICAgaWYgKG1hbmRhdFNlbmF0ZXVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCB7IGFkcmVzc2VzIH0gPSBhY3RldXJcbiAgICAgIGlmIChhZHJlc3NlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgbGV0IHVybCA9IG51bGxcbiAgICAgIGZvciAoY29uc3QgYWRyZXNzZSBvZiBhZHJlc3Nlcykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgYWRyZXNzZS54c2lUeXBlID09PSBcIkFkcmVzc2VTaXRlV2ViX1R5cGVcIiAmJlxuICAgICAgICAgIGFkcmVzc2UudHlwZUxpYmVsbGUgPT09IFwiVXJsIHPDqW5hdGV1clwiXG4gICAgICAgICkge1xuICAgICAgICAgIHVybCA9IGFkcmVzc2UudmFsRWxlY1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gQm9vbGVhbih1cmwpXG4gICAgfSlcbiAgICAuc29ydCgoYSwgYikgPT5cbiAgICAgIGEudWlkLmxlbmd0aCA9PT0gYi51aWQubGVuZ3RoXG4gICAgICAgID8gYS51aWQubG9jYWxlQ29tcGFyZShiLnVpZClcbiAgICAgICAgOiBhLnVpZC5sZW5ndGggLSBiLnVpZC5sZW5ndGgsXG4gICAgKVxuXG4gIGNvbnN0IGdpdEdyb3VwVXJsID0gb3B0aW9ucy5jbG9uZVxuICAgID8gb3B0aW9ucy5jbG9uZS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKVxuICAgIDogdW5kZWZpbmVkXG4gIGNvbnN0IHBob3Rvc0Rpck5hbWUgPSBcInBob3Rvc19zZW5hdGV1cnNcIlxuICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtwaG90b3NEaXJOYW1lfS5naXRgLCB7XG4gICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgIH0pXG4gIH1cbiAgY29uc3QgcGhvdG9zRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIHBob3Rvc0Rpck5hbWUpXG5cbiAgLy8gRG93bmxvYWQgcGhvdG9zLlxuICBmcy5lbnN1cmVEaXJTeW5jKHBob3Rvc0RpcilcbiAgaWYgKG9wdGlvbnMuZmV0Y2gpIHtcbiAgICBjb25zdCBtaXNzaW5nUGhvdG9GaWxlUGF0aCA9IFwiaW1hZ2VzL3RyYW5zcGFyZW50XzE1NXgyMjUuanBnXCJcbiAgICBmb3IgKGNvbnN0IHNlbmF0ZXVyIG9mIHNlbmF0ZXVycykge1xuICAgICAgY29uc3QgaWRlbnQgPSBzZW5hdGV1ci5ldGF0Q2l2aWwuaWRlbnRcbiAgICAgIGNvbnN0IHNlbmF0ZXVyU3RlbSA9IHN0ZW1Gcm9tU2VuYXRldXIoc2VuYXRldXIpXG4gICAgICBjb25zdCBwaG90b0ZpbGVuYW1lID0gYCR7c2VuYXRldXJTdGVtfS5qcGdgXG4gICAgICBjb25zdCBwaG90b0ZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgcGhvdG9GaWxlbmFtZSlcbiAgICAgIGNvbnN0IHBob3RvVGVtcEZpbGVuYW1lID0gYCR7c2VuYXRldXJTdGVtfV90ZW1wLmpwZ2BcbiAgICAgIGNvbnN0IHBob3RvVGVtcEZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgcGhvdG9UZW1wRmlsZW5hbWUpXG4gICAgICBjb25zdCB1cmxQaG90byA9IGBodHRwczovL3d3dy5zZW5hdC5mci9zZW5pbWcvJHtwaG90b0ZpbGVuYW1lfWBcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYExvYWRpbmcgcGhvdG8gJHt1cmxQaG90b30gZm9yICR7aWRlbnQucHJlbm9tfSAke2lkZW50Lm5vbX3igKZgLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICAvLyBmb3IgKGxldCByZXRyaWVzID0gMDsgcmV0cmllcyA8IDM7IHJldHJpZXMrKykge1xuICAgICAgLy8gICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybFBob3RvKVxuICAgICAgLy8gICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgIC8vICAgICBhd2FpdCBwaXBlbGluZShyZXNwb25zZS5ib2R5LCBmcy5jcmVhdGVXcml0ZVN0cmVhbShwaG90b1RlbXBGaWxlUGF0aCkpXG4gICAgICAvLyAgICAgZnMucmVuYW1lU3luYyhwaG90b1RlbXBGaWxlUGF0aCwgcGhvdG9GaWxlUGF0aClcbiAgICAgIC8vICAgICBicmVha1xuICAgICAgLy8gICB9XG4gICAgICAvLyAgIGlmIChyZXRyaWVzID49IDIpIHtcbiAgICAgIC8vICAgICBjb25zb2xlLndhcm4oYEZldGNoIGZhaWxlZDogJHt1cmxQaG90b30gKCR7aWRlbnQucHJlbm9tfSAke2lkZW50Lm5vbX0pYClcbiAgICAgIC8vICAgICBjb25zb2xlLndhcm4ocmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZS5zdGF0dXNUZXh0KVxuICAgICAgLy8gICAgIGNvbnNvbGUud2Fybihhd2FpdCByZXNwb25zZS50ZXh0KCkpXG4gICAgICAvLyAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGhvdG9GaWxlUGF0aCkpIHtcbiAgICAgIC8vICAgICAgIGNvbnNvbGUud2FybihcIiAgPT4gUmV1c2luZyBleGlzdGluZyBpbWFnZVwiKVxuICAgICAgLy8gICAgIH0gZWxzZSB7XG4gICAgICAvLyAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFVzaW5nIGJsYW5rIGltYWdlXCIpXG4gICAgICAvLyAgICAgICBmcy5jb3B5RmlsZVN5bmMobWlzc2luZ1Bob3RvRmlsZVBhdGgsIHBob3RvRmlsZVBhdGgpXG4gICAgICAvLyAgICAgfVxuICAgICAgLy8gICAgIGJyZWFrXG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGV4ZWNTeW5jKGB3Z2V0IC0tcXVpZXQgLU8gJHtwaG90b1RlbXBGaWxlbmFtZX0gJHt1cmxQaG90b31gLCB7XG4gICAgICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIC8vIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgICBmcy5yZW5hbWVTeW5jKHBob3RvVGVtcEZpbGVQYXRoLCBwaG90b0ZpbGVQYXRoKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGhvdG9GaWxlUGF0aCkpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFJldXNpbmcgZXhpc3RpbmcgaW1hZ2VcIilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFVzaW5nIGJsYW5rIGltYWdlXCIpXG4gICAgICAgICAgZnMuY29weUZpbGVTeW5jKG1pc3NpbmdQaG90b0ZpbGVQYXRoLCBwaG90b0ZpbGVQYXRoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzaXplIHBob3RvcyB0byAxNTV4MjI1LCBiZWNhdXNlIHNvbWUgaGF2ZW4ndCBleGFjdGx5IHRoaXMgc2l6ZS5cbiAgZm9yIChjb25zdCBzZW5hdGV1ciBvZiBzZW5hdGV1cnMpIHtcbiAgICBjb25zdCBpZGVudCA9IHNlbmF0ZXVyLmV0YXRDaXZpbC5pZGVudFxuICAgIGNvbnN0IHNlbmF0ZXVyU3RlbSA9IHN0ZW1Gcm9tU2VuYXRldXIoc2VuYXRldXIpXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBSZXNpemluZyBwaG90byAke3NlbmF0ZXVyU3RlbX0gZm9yICR7aWRlbnQucHJlbm9tfSAke2lkZW50Lm5vbX3igKZgLFxuICAgICAgKVxuICAgIH1cbiAgICBleGVjU3luYyhcbiAgICAgIGBnbSBjb252ZXJ0IC1yZXNpemUgMTU1eDIyNSEgJHtzZW5hdGV1clN0ZW19LmpwZyAke3NlbmF0ZXVyU3RlbX1fMTU1eDIyNS5qcGdgLFxuICAgICAge1xuICAgICAgICBjd2Q6IHBob3Rvc0RpcixcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgLy8gQ3JlYXRlIGEgbW9zYWljIG9mIHBob3Rvcy5cbiAgY29uc3QgcGhvdG9CeUlkU2VuYXRldXI6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGNvbnN0IHJvd3NGaWxlbmFtZXM6IHN0cmluZ1tdID0gW11cbiAgZm9yIChcbiAgICBsZXQgc2VuYXRldXJJbmRleCA9IDAsIHJvd0luZGV4ID0gMDtcbiAgICBzZW5hdGV1ckluZGV4IDwgc2VuYXRldXJzLmxlbmd0aDtcbiAgICBzZW5hdGV1ckluZGV4ICs9IDI1LCByb3dJbmRleCsrXG4gICkge1xuICAgIGNvbnN0IHJvdyA9IHNlbmF0ZXVycy5zbGljZShzZW5hdGV1ckluZGV4LCBzZW5hdGV1ckluZGV4ICsgMjUpXG4gICAgY29uc3QgcGhvdG9zRmlsZW5hbWVzOiBzdHJpbmdbXSA9IFtdXG4gICAgZm9yIChjb25zdCBbY29sdW1uSW5kZXgsIHNlbmF0ZXVyXSBvZiByb3cuZW50cmllcygpKSB7XG4gICAgICBjb25zdCBzZW5hdGV1clN0ZW0gPSBzdGVtRnJvbVNlbmF0ZXVyKHNlbmF0ZXVyKVxuICAgICAgY29uc3QgcGhvdG9GaWxlbmFtZSA9IGAke3NlbmF0ZXVyU3RlbX1fMTU1eDIyNS5qcGdgXG4gICAgICBwaG90b3NGaWxlbmFtZXMucHVzaChwaG90b0ZpbGVuYW1lKVxuICAgICAgcGhvdG9CeUlkU2VuYXRldXJbc2VuYXRldXIudWlkXSA9IHtcbiAgICAgICAgY2hlbWluOiBgcGhvdG9zX3NlbmF0ZXVycy8ke3Bob3RvRmlsZW5hbWV9YCxcbiAgICAgICAgY2hlbWluTW9zYWlxdWU6IGBwaG90b3Nfc2VuYXRldXJzL3NlbmF0ZXVycy5qcGdgLFxuICAgICAgICBoYXV0ZXVyOiAyMjUsXG4gICAgICAgIGxhcmdldXI6IDE1NSxcbiAgICAgICAgeE1vc2FpcXVlOiBjb2x1bW5JbmRleCAqIDE1NSxcbiAgICAgICAgeU1vc2FpcXVlOiByb3dJbmRleCAqIDIyNSxcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgcm93RmlsZW5hbWUgPSBgcm93LSR7cm93SW5kZXh9LmpwZ2BcbiAgICBleGVjU3luYyhgZ20gY29udmVydCAke3Bob3Rvc0ZpbGVuYW1lcy5qb2luKFwiIFwiKX0gK2FwcGVuZCAke3Jvd0ZpbGVuYW1lfWAsIHtcbiAgICAgIGN3ZDogcGhvdG9zRGlyLFxuICAgIH0pXG4gICAgcm93c0ZpbGVuYW1lcy5wdXNoKHJvd0ZpbGVuYW1lKVxuICB9XG4gIGV4ZWNTeW5jKGBnbSBjb252ZXJ0ICR7cm93c0ZpbGVuYW1lcy5qb2luKFwiIFwiKX0gLWFwcGVuZCBzZW5hdGV1cnMuanBnYCwge1xuICAgIGN3ZDogcGhvdG9zRGlyLFxuICB9KVxuICBmb3IgKGNvbnN0IHJvd0ZpbGVuYW1lIG9mIHJvd3NGaWxlbmFtZXMpIHtcbiAgICBmcy51bmxpbmtTeW5jKHBhdGguam9pbihwaG90b3NEaXIsIHJvd0ZpbGVuYW1lKSlcbiAgfVxuXG4gIGNvbnN0IGpzb25GaWxlUGF0aCA9IHBhdGguam9pbihwaG90b3NEaXIsIFwic2VuYXRldXJzLmpzb25cIilcbiAgZnMud3JpdGVGaWxlU3luYyhqc29uRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHBob3RvQnlJZFNlbmF0ZXVyLCBudWxsLCAyKSlcblxuICByZXR1cm4gY29tbWl0QW5kUHVzaChwaG90b3NEaXIsIG9wdGlvbnMuY29tbWl0LCBvcHRpb25zLnJlbW90ZSlcbn1cblxuZnVuY3Rpb24gc3RlbUZyb21TZW5hdGV1cihzZW5hdGV1cjogQWN0ZXVyKSB7XG4gIGNvbnN0IHsgYWRyZXNzZXMgfSA9IHNlbmF0ZXVyXG4gIGxldCB1cmwgPSBudWxsXG4gIGZvciAoY29uc3QgYWRyZXNzZSBvZiBhZHJlc3NlcyEpIHtcbiAgICBpZiAoXG4gICAgICBhZHJlc3NlLnhzaVR5cGUgPT09IFwiQWRyZXNzZVNpdGVXZWJfVHlwZVwiICYmXG4gICAgICBhZHJlc3NlLnR5cGVMaWJlbGxlID09PSBcIlVybCBzw6luYXRldXJcIlxuICAgICkge1xuICAgICAgdXJsID0gYWRyZXNzZS52YWxFbGVjXG4gICAgfVxuICB9XG4gIGNvbnN0IG1hdGNoID0gdXJsIS5tYXRjaCgvXmh0dHBzOlxcL1xcL3d3d1xcLnNlbmF0XFwuZnJcXC9zZW5hdGV1clxcLyguKilcXC5odG1sJC8pXG4gIGNvbnN0IHNlbmF0ZXVyU3RlbSA9IG1hdGNoIVsxXVxuICByZXR1cm4gc2VuYXRldXJTdGVtXG59XG5cbnJldHJpZXZlUGhvdG9zU2VuYXRldXJzKClcbiAgLnRoZW4oKGVycm9yKSA9PiBwcm9jZXNzLmV4aXQoZXJyb3IgPyAxIDogMCkpXG4gIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmxvZyhlcnJvcilcbiAgICBwcm9jZXNzLmV4aXQoMilcbiAgfSlcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBdUJBLFFBQVEsUUFBUSxlQUFlO0FBQ3RELE9BQU9DLGVBQWUsTUFBTSxtQkFBbUI7QUFDL0MsT0FBT0MsRUFBRSxNQUFNLFVBQVU7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
@@ -52,7 +52,7 @@ var _loaders = require("../loaders");
52
52
  var _dossiers_legislatifs = require("../types/dossiers_legislatifs");
53
53
  var _urls = require("../urls");
54
54
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
55
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
55
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
56
56
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
57
57
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
58
58
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
@@ -66,7 +66,7 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try
66
66
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
67
67
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
68
68
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
69
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
69
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
70
70
  var optionsDefinitions = [{
71
71
  alias: "c",
72
72
  help: "commit documents",
@@ -115,7 +115,7 @@ function commitAndPush(repositoryDir, commit, remotes) {
115
115
  stdio: ["ignore", "ignore", "pipe"]
116
116
  });
117
117
  try {
118
- (0, _child_process.execSync)('git commit -m "Nouvelle moisson"', {
118
+ (0, _child_process.execSync)('git commit -m "Nouvelle moisson" --quiet', {
119
119
  cwd: repositoryDir,
120
120
  env: process.env,
121
121
  encoding: "utf-8"
@@ -159,141 +159,139 @@ function _retrieveDocuments() {
159
159
  _retrieveDocuments = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
160
160
  var dataDir, _loadAssembleeData, documentByUid, textesLoisDir, _iterator2, _step2, filename, textesLois, firstUid, skip, _iterator3, _step3, texteLoi, url, filePath, response, page;
161
161
  return _regeneratorRuntime().wrap(function _callee$(_context) {
162
- while (1) {
163
- switch (_context.prev = _context.next) {
164
- case 0:
165
- (0, _assert["default"])(!options.commit || options.uid, 'Options "commit" & "uid" are incompatible');
166
- dataDir = options.dataDir;
167
- _loadAssembleeData = (0, _loaders.loadAssembleeData)(dataDir, _datasets.EnabledDatasets.DossiersLegislatifs, options.legislature), documentByUid = _loadAssembleeData.documentByUid;
168
- textesLoisDir = _path["default"].join(dataDir, "www.assemblee-nationale.fr", options.legislature, "textes");
169
- _fsExtra["default"].ensureDirSync(textesLoisDir);
170
- if (options.uid) {
171
- _context.next = 24;
172
- break;
173
- }
174
- _iterator2 = _createForOfIteratorHelper(_fsExtra["default"].readdirSync(textesLoisDir));
175
- _context.prev = 7;
176
- _iterator2.s();
177
- case 9:
178
- if ((_step2 = _iterator2.n()).done) {
179
- _context.next = 16;
180
- break;
181
- }
182
- filename = _step2.value;
183
- if (!(filename[0] === ".")) {
184
- _context.next = 13;
185
- break;
186
- }
187
- return _context.abrupt("continue", 14);
188
- case 13:
189
- _fsExtra["default"].removeSync(_path["default"].join(textesLoisDir, filename));
190
- case 14:
191
- _context.next = 9;
162
+ while (1) switch (_context.prev = _context.next) {
163
+ case 0:
164
+ (0, _assert["default"])(!options.commit || options.uid, 'Options "commit" & "uid" are incompatible');
165
+ dataDir = options.dataDir;
166
+ _loadAssembleeData = (0, _loaders.loadAssembleeData)(dataDir, _datasets.EnabledDatasets.DossiersLegislatifs, options.legislature), documentByUid = _loadAssembleeData.documentByUid;
167
+ textesLoisDir = _path["default"].join(dataDir, "www.assemblee-nationale.fr", options.legislature, "textes");
168
+ _fsExtra["default"].ensureDirSync(textesLoisDir);
169
+ if (options.uid) {
170
+ _context.next = 24;
192
171
  break;
193
- case 16:
194
- _context.next = 21;
172
+ }
173
+ _iterator2 = _createForOfIteratorHelper(_fsExtra["default"].readdirSync(textesLoisDir));
174
+ _context.prev = 7;
175
+ _iterator2.s();
176
+ case 9:
177
+ if ((_step2 = _iterator2.n()).done) {
178
+ _context.next = 16;
195
179
  break;
196
- case 18:
197
- _context.prev = 18;
198
- _context.t0 = _context["catch"](7);
199
- _iterator2.e(_context.t0);
200
- case 21:
201
- _context.prev = 21;
202
- _iterator2.f();
203
- return _context.finish(21);
204
- case 24:
205
- textesLois = Object.values(documentByUid).filter(function (document) {
206
- return document.xsiType === _dossiers_legislatifs.TypeDocument.TexteLoiType;
207
- }).filter(function (document) {
208
- return document.uid.startsWith("PIONAN") || document.uid.startsWith("PRJLAN");
209
- }).map(function (document) {
210
- return _objectSpread(_objectSpread({}, document), {}, {
211
- rawDocumentAssembleeUrl: (0, _urls.urlFromDocument)(document, _urls.DocumentUrlFormat.RawHtml)
212
- });
213
- }).sort(function (a, b) {
214
- return a.rawDocumentAssembleeUrl === null ? -1 : b.rawDocumentAssembleeUrl === null ? 1 : a.rawDocumentAssembleeUrl.localeCompare(b.rawDocumentAssembleeUrl);
180
+ }
181
+ filename = _step2.value;
182
+ if (!(filename[0] === ".")) {
183
+ _context.next = 13;
184
+ break;
185
+ }
186
+ return _context.abrupt("continue", 14);
187
+ case 13:
188
+ _fsExtra["default"].removeSync(_path["default"].join(textesLoisDir, filename));
189
+ case 14:
190
+ _context.next = 9;
191
+ break;
192
+ case 16:
193
+ _context.next = 21;
194
+ break;
195
+ case 18:
196
+ _context.prev = 18;
197
+ _context.t0 = _context["catch"](7);
198
+ _iterator2.e(_context.t0);
199
+ case 21:
200
+ _context.prev = 21;
201
+ _iterator2.f();
202
+ return _context.finish(21);
203
+ case 24:
204
+ textesLois = Object.values(documentByUid).filter(function (document) {
205
+ return document.xsiType === _dossiers_legislatifs.TypeDocument.TexteLoiType;
206
+ }).filter(function (document) {
207
+ return document.uid.startsWith("PIONAN") || document.uid.startsWith("PRJLAN");
208
+ }).map(function (document) {
209
+ return _objectSpread(_objectSpread({}, document), {}, {
210
+ rawDocumentAssembleeUrl: (0, _urls.urlFromDocument)(document, _urls.DocumentUrlFormat.RawHtml)
215
211
  });
216
- firstUid = options.uid;
217
- skip = !!firstUid;
218
- _iterator3 = _createForOfIteratorHelper(textesLois);
219
- _context.prev = 28;
220
- _iterator3.s();
221
- case 30:
222
- if ((_step3 = _iterator3.n()).done) {
223
- _context.next = 56;
224
- break;
225
- }
226
- texteLoi = _step3.value;
227
- if (!skip) {
228
- _context.next = 38;
229
- break;
230
- }
231
- if (!(texteLoi.uid === firstUid)) {
232
- _context.next = 37;
233
- break;
234
- }
235
- skip = false;
212
+ }).sort(function (a, b) {
213
+ return a.rawDocumentAssembleeUrl === null ? -1 : b.rawDocumentAssembleeUrl === null ? 1 : a.rawDocumentAssembleeUrl.localeCompare(b.rawDocumentAssembleeUrl);
214
+ });
215
+ firstUid = options.uid;
216
+ skip = !!firstUid;
217
+ _iterator3 = _createForOfIteratorHelper(textesLois);
218
+ _context.prev = 28;
219
+ _iterator3.s();
220
+ case 30:
221
+ if ((_step3 = _iterator3.n()).done) {
222
+ _context.next = 56;
223
+ break;
224
+ }
225
+ texteLoi = _step3.value;
226
+ if (!skip) {
236
227
  _context.next = 38;
237
228
  break;
238
- case 37:
239
- return _context.abrupt("continue", 54);
240
- case 38:
241
- if (!options.silent) {
242
- console.log("Retrieving bill ".concat(texteLoi.uid, " at ").concat(texteLoi.rawDocumentAssembleeUrl));
243
- }
244
- if (!(texteLoi.rawDocumentAssembleeUrl === null)) {
245
- _context.next = 41;
246
- break;
247
- }
248
- return _context.abrupt("continue", 54);
249
- case 41:
250
- url = new URL(texteLoi.rawDocumentAssembleeUrl);
251
- filePath = _path["default"].join.apply(_path["default"], [dataDir, url.hostname].concat(_toConsumableArray(url.pathname.split("/"))));
252
- _assert["default"].strictEqual(textesLoisDir, _path["default"].dirname(filePath));
253
- _context.next = 46;
254
- return (0, _nodeFetch["default"])(texteLoi.rawDocumentAssembleeUrl);
255
- case 46:
256
- response = _context.sent;
257
- _context.next = 49;
258
- return response.text();
259
- case 49:
260
- page = _context.sent;
261
- if (response.ok) {
262
- _context.next = 53;
263
- break;
264
- }
265
- if (response.status !== 404) {
266
- console.error("Error while getting page \"".concat(texteLoi.rawDocumentAssembleeUrl, "\" (uid: ").concat(texteLoi.uid, "):\n\nError:\n").concat(JSON.stringify({
267
- code: response.status,
268
- message: response.statusText
269
- }, null, 2)));
270
- }
271
- return _context.abrupt("continue", 54);
272
- case 53:
273
- _fsExtra["default"].writeFileSync(filePath, page);
274
- case 54:
275
- _context.next = 30;
229
+ }
230
+ if (!(texteLoi.uid === firstUid)) {
231
+ _context.next = 37;
276
232
  break;
277
- case 56:
278
- _context.next = 61;
233
+ }
234
+ skip = false;
235
+ _context.next = 38;
236
+ break;
237
+ case 37:
238
+ return _context.abrupt("continue", 54);
239
+ case 38:
240
+ if (!options.silent) {
241
+ console.log("Retrieving bill ".concat(texteLoi.uid, " at ").concat(texteLoi.rawDocumentAssembleeUrl));
242
+ }
243
+ if (!(texteLoi.rawDocumentAssembleeUrl === null)) {
244
+ _context.next = 41;
279
245
  break;
280
- case 58:
281
- _context.prev = 58;
282
- _context.t1 = _context["catch"](28);
283
- _iterator3.e(_context.t1);
284
- case 61:
285
- _context.prev = 61;
286
- _iterator3.f();
287
- return _context.finish(61);
288
- case 64:
289
- if (commitAndPush(textesLoisDir, options.commit, options.remote)) {
290
- process.exit(1);
291
- }
292
- return _context.abrupt("return", textesLois);
293
- case 66:
294
- case "end":
295
- return _context.stop();
296
- }
246
+ }
247
+ return _context.abrupt("continue", 54);
248
+ case 41:
249
+ url = new URL(texteLoi.rawDocumentAssembleeUrl);
250
+ filePath = _path["default"].join.apply(_path["default"], [dataDir, url.hostname].concat(_toConsumableArray(url.pathname.split("/"))));
251
+ _assert["default"].strictEqual(textesLoisDir, _path["default"].dirname(filePath));
252
+ _context.next = 46;
253
+ return (0, _nodeFetch["default"])(texteLoi.rawDocumentAssembleeUrl);
254
+ case 46:
255
+ response = _context.sent;
256
+ _context.next = 49;
257
+ return response.text();
258
+ case 49:
259
+ page = _context.sent;
260
+ if (response.ok) {
261
+ _context.next = 53;
262
+ break;
263
+ }
264
+ if (response.status !== 404) {
265
+ console.error("Error while getting page \"".concat(texteLoi.rawDocumentAssembleeUrl, "\" (uid: ").concat(texteLoi.uid, "):\n\nError:\n").concat(JSON.stringify({
266
+ code: response.status,
267
+ message: response.statusText
268
+ }, null, 2)));
269
+ }
270
+ return _context.abrupt("continue", 54);
271
+ case 53:
272
+ _fsExtra["default"].writeFileSync(filePath, page);
273
+ case 54:
274
+ _context.next = 30;
275
+ break;
276
+ case 56:
277
+ _context.next = 61;
278
+ break;
279
+ case 58:
280
+ _context.prev = 58;
281
+ _context.t1 = _context["catch"](28);
282
+ _iterator3.e(_context.t1);
283
+ case 61:
284
+ _context.prev = 61;
285
+ _iterator3.f();
286
+ return _context.finish(61);
287
+ case 64:
288
+ if (commitAndPush(textesLoisDir, options.commit, options.remote)) {
289
+ process.exit(1);
290
+ }
291
+ return _context.abrupt("return", textesLois);
292
+ case 66:
293
+ case "end":
294
+ return _context.stop();
297
295
  }
298
296
  }, _callee, null, [[7, 18, 21, 24], [28, 58, 61, 64]]);
299
297
  }));
@@ -303,4 +301,4 @@ retrieveDocuments()["catch"](function (error) {
303
301
  console.log(error);
304
302
  process.exit(1);
305
303
  });
306
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJTdHJpbmciLCJtdWx0aXBsZSIsImRlZmF1bHRPcHRpb24iLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwiY29tbWl0QW5kUHVzaCIsInJlcG9zaXRvcnlEaXIiLCJjb21taXQiLCJyZW1vdGVzIiwiZXJyb3IiLCJleGVjU3luYyIsImN3ZCIsImVudiIsInByb2Nlc3MiLCJlbmNvZGluZyIsInN0ZGlvIiwiY2hpbGRQcm9jZXNzIiwic3RkZXJyIiwidGVzdCIsInN0ZG91dCIsImNvbnNvbGUiLCJvdXRwdXQiLCJyZW1vdGUiLCJyZXRyaWV2ZURvY3VtZW50cyIsImFzc2VydCIsInVpZCIsImRhdGFEaXIiLCJsb2FkQXNzZW1ibGVlRGF0YSIsIkVuYWJsZWREYXRhc2V0cyIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJsZWdpc2xhdHVyZSIsImRvY3VtZW50QnlVaWQiLCJ0ZXh0ZXNMb2lzRGlyIiwicGF0aCIsImpvaW4iLCJmcyIsImVuc3VyZURpclN5bmMiLCJyZWFkZGlyU3luYyIsImZpbGVuYW1lIiwicmVtb3ZlU3luYyIsInRleHRlc0xvaXMiLCJPYmplY3QiLCJ2YWx1ZXMiLCJmaWx0ZXIiLCJkb2N1bWVudCIsInhzaVR5cGUiLCJUeXBlRG9jdW1lbnQiLCJUZXh0ZUxvaVR5cGUiLCJzdGFydHNXaXRoIiwibWFwIiwicmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwiLCJ1cmxGcm9tRG9jdW1lbnQiLCJEb2N1bWVudFVybEZvcm1hdCIsIlJhd0h0bWwiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwiZmlyc3RVaWQiLCJza2lwIiwidGV4dGVMb2kiLCJzaWxlbnQiLCJsb2ciLCJ1cmwiLCJVUkwiLCJmaWxlUGF0aCIsImhvc3RuYW1lIiwicGF0aG5hbWUiLCJzcGxpdCIsInN0cmljdEVxdWFsIiwiZGlybmFtZSIsImZldGNoIiwicmVzcG9uc2UiLCJ0ZXh0IiwicGFnZSIsIm9rIiwic3RhdHVzIiwiSlNPTiIsInN0cmluZ2lmeSIsImNvZGUiLCJtZXNzYWdlIiwic3RhdHVzVGV4dCIsIndyaXRlRmlsZVN5bmMiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmV0cmlldmVfdGV4dGVzX2xvaXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IENoaWxkUHJvY2VzcywgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBmZXRjaCBmcm9tIFwibm9kZS1mZXRjaFwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBsb2FkQXNzZW1ibGVlRGF0YSB9IGZyb20gXCIuLi9sb2FkZXJzXCJcbmltcG9ydCB7IERvY3VtZW50LCBUeXBlRG9jdW1lbnQgfSBmcm9tIFwiLi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgRG9jdW1lbnRVcmxGb3JtYXQsIHVybEZyb21Eb2N1bWVudCB9IGZyb20gXCIuLi91cmxzXCJcblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgYWxpYXM6IFwiY1wiLFxuICAgIGhlbHA6IFwiY29tbWl0IGRvY3VtZW50c1wiLFxuICAgIG5hbWU6IFwiY29tbWl0XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcImxcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiMTZcIixcbiAgICBuYW1lOiBcImxlZ2lzbGF0dXJlXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiclwiLFxuICAgIGhlbHA6IFwicHVzaCBjb21taXQgdG8gZ2l2ZW4gcmVtb3RlXCIsXG4gICAgbXVsdGlwbGU6IHRydWUsXG4gICAgbmFtZTogXCJyZW1vdGVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJzXCIsXG4gICAgaGVscDogXCJkb24ndCBsb2cgYW55dGhpbmdcIixcbiAgICBuYW1lOiBcInNpbGVudFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJ1XCIsXG4gICAgaGVscDogXCJVSUQgb2YgZmlyc3QgQXNzZW1ibMOpZSdzIGRvY3VtZW50IHRvIHJldHJpZXZlXCIsXG4gICAgbmFtZTogXCJ1aWRcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJ2XCIsXG4gICAgaGVscDogXCJ2ZXJib3NlIGxvZ3NcIixcbiAgICBuYW1lOiBcInZlcmJvc2VcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICBoZWxwOiBcImRpcmVjdG9yeSBjb250YWluaW5nIEFzc2VtYmzDqWUgb3BlbiBkYXRhIGZpbGVzXCIsXG4gICAgbmFtZTogXCJkYXRhRGlyXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbmZ1bmN0aW9uIGNvbW1pdEFuZFB1c2goXG4gIHJlcG9zaXRvcnlEaXI6IHN0cmluZyxcbiAgY29tbWl0OiBib29sZWFuLFxuICByZW1vdGVzPzogc3RyaW5nW10sXG4pOiBib29sZWFuIHtcbiAgbGV0IGVycm9yID0gZmFsc2VcbiAgaWYgKGNvbW1pdCkge1xuICAgIGV4ZWNTeW5jKFwiZ2l0IGFkZCAuXCIsIHtcbiAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgfSlcbiAgICB0cnkge1xuICAgICAgZXhlY1N5bmMoJ2dpdCBjb21taXQgLW0gXCJOb3V2ZWxsZSBtb2lzc29uXCInLCB7XG4gICAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoY2hpbGRQcm9jZXNzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIChjaGlsZFByb2Nlc3MgYXMgQ2hpbGRQcm9jZXNzKS5zdGRlcnIgPT09IG51bGwgfHxcbiAgICAgICAgIS9ub3RoaW5nIHRvIGNvbW1pdC8udGVzdCgoY2hpbGRQcm9jZXNzIGFzIGFueSkuc3Rkb3V0KVxuICAgICAgKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLm91dHB1dClcbiAgICAgICAgdGhyb3cgY2hpbGRQcm9jZXNzXG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgcmVtb3RlIG9mIHJlbW90ZXMgfHwgW10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgcHVzaCAke3JlbW90ZX0gbWFzdGVyYCwge1xuICAgICAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgLy8gRG9uJ3Qgc3RvcCB3aGVuIHB1c2ggZmFpbHMuXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLm91dHB1dClcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBlcnJvclxufVxuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZURvY3VtZW50cygpOiBQcm9taXNlPERvY3VtZW50W10+IHtcbiAgYXNzZXJ0KFxuICAgICFvcHRpb25zLmNvbW1pdCB8fCBvcHRpb25zLnVpZCxcbiAgICAnT3B0aW9ucyBcImNvbW1pdFwiICYgXCJ1aWRcIiBhcmUgaW5jb21wYXRpYmxlJyxcbiAgKVxuXG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgY29uc3QgeyBkb2N1bWVudEJ5VWlkIH0gPSBsb2FkQXNzZW1ibGVlRGF0YShcbiAgICBkYXRhRGlyLFxuICAgIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzLFxuICAgIG9wdGlvbnMubGVnaXNsYXR1cmUsXG4gIClcblxuICBjb25zdCB0ZXh0ZXNMb2lzRGlyID0gcGF0aC5qb2luKFxuICAgIGRhdGFEaXIsXG4gICAgXCJ3d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mclwiLFxuICAgIG9wdGlvbnMubGVnaXNsYXR1cmUsXG4gICAgXCJ0ZXh0ZXNcIixcbiAgKVxuICBmcy5lbnN1cmVEaXJTeW5jKHRleHRlc0xvaXNEaXIpXG4gIGlmICghb3B0aW9ucy51aWQpIHtcbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKHRleHRlc0xvaXNEaXIpKSB7XG4gICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbih0ZXh0ZXNMb2lzRGlyLCBmaWxlbmFtZSkpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgdGV4dGVzTG9pcyA9IE9iamVjdC52YWx1ZXMoZG9jdW1lbnRCeVVpZClcbiAgICAuZmlsdGVyKChkb2N1bWVudCkgPT4gZG9jdW1lbnQueHNpVHlwZSA9PT0gVHlwZURvY3VtZW50LlRleHRlTG9pVHlwZSlcbiAgICAuZmlsdGVyKFxuICAgICAgKGRvY3VtZW50KSA9PlxuICAgICAgICBkb2N1bWVudC51aWQuc3RhcnRzV2l0aChcIlBJT05BTlwiKSB8fCBkb2N1bWVudC51aWQuc3RhcnRzV2l0aChcIlBSSkxBTlwiKSxcbiAgICApXG4gICAgLm1hcCgoZG9jdW1lbnQpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRvY3VtZW50LFxuICAgICAgICByYXdEb2N1bWVudEFzc2VtYmxlZVVybDogdXJsRnJvbURvY3VtZW50KFxuICAgICAgICAgIGRvY3VtZW50LFxuICAgICAgICAgIERvY3VtZW50VXJsRm9ybWF0LlJhd0h0bWwsXG4gICAgICAgICksXG4gICAgICB9XG4gICAgfSlcbiAgICAuc29ydCgoYSwgYikgPT5cbiAgICAgIGEucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwgPT09IG51bGxcbiAgICAgICAgPyAtMVxuICAgICAgICA6IGIucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwgPT09IG51bGxcbiAgICAgICAgPyAxXG4gICAgICAgIDogYS5yYXdEb2N1bWVudEFzc2VtYmxlZVVybC5sb2NhbGVDb21wYXJlKGIucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwpLFxuICAgIClcblxuICBjb25zdCBmaXJzdFVpZCA9IG9wdGlvbnMudWlkXG4gIGxldCBza2lwID0gISFmaXJzdFVpZFxuICBmb3IgKGNvbnN0IHRleHRlTG9pIG9mIHRleHRlc0xvaXMpIHtcbiAgICBpZiAoc2tpcCkge1xuICAgICAgaWYgKHRleHRlTG9pLnVpZCA9PT0gZmlyc3RVaWQpIHtcbiAgICAgICAgc2tpcCA9IGZhbHNlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYFJldHJpZXZpbmcgYmlsbCAke3RleHRlTG9pLnVpZH0gYXQgJHt0ZXh0ZUxvaS5yYXdEb2N1bWVudEFzc2VtYmxlZVVybH1gLFxuICAgICAgKVxuICAgIH1cbiAgICBpZiAodGV4dGVMb2kucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwgPT09IG51bGwpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwodGV4dGVMb2kucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwpXG4gICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICBkYXRhRGlyLFxuICAgICAgdXJsLmhvc3RuYW1lLFxuICAgICAgLi4udXJsLnBhdGhuYW1lLnNwbGl0KFwiL1wiKSxcbiAgICApXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRleHRlc0xvaXNEaXIsIHBhdGguZGlybmFtZShmaWxlUGF0aCkpXG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHRleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsKVxuICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCByZXNwb25zZS50ZXh0KClcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSA0MDQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBgRXJyb3Igd2hpbGUgZ2V0dGluZyBwYWdlIFwiJHtcbiAgICAgICAgICAgIHRleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsXG4gICAgICAgICAgfVwiICh1aWQ6ICR7dGV4dGVMb2kudWlkfSk6XFxuXFxuRXJyb3I6XFxuJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHsgY29kZTogcmVzcG9uc2Uuc3RhdHVzLCBtZXNzYWdlOiByZXNwb25zZS5zdGF0dXNUZXh0IH0sXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgMixcbiAgICAgICAgICApfWAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIHBhZ2UpXG4gIH1cblxuICBpZiAoY29tbWl0QW5kUHVzaCh0ZXh0ZXNMb2lzRGlyLCBvcHRpb25zLmNvbW1pdCwgb3B0aW9ucy5yZW1vdGUpKSB7XG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbiAgcmV0dXJuIHRleHRlc0xvaXNcbn1cblxucmV0cmlldmVEb2N1bWVudHMoKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgY29uc29sZS5sb2coZXJyb3IpXG4gIHByb2Nlc3MuZXhpdCgxKVxufSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQTREO0FBQUEsK0NBVDVEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBLElBQU1BLGtCQUFrQixHQUFHLENBQ3pCO0VBQ0VDLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLElBQUksRUFBRSxrQkFBa0I7RUFDeEJDLElBQUksRUFBRSxRQUFRO0VBQ2RDLElBQUksRUFBRUM7QUFDUixDQUFDLEVBQ0Q7RUFDRUosS0FBSyxFQUFFLEdBQUc7RUFDVkssWUFBWSxFQUFFLElBQUk7RUFDbEJILElBQUksRUFBRSxhQUFhO0VBQ25CQyxJQUFJLEVBQUVHO0FBQ1IsQ0FBQyxFQUNEO0VBQ0VOLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLElBQUksRUFBRSw2QkFBNkI7RUFDbkNNLFFBQVEsRUFBRSxJQUFJO0VBQ2RMLElBQUksRUFBRSxRQUFRO0VBQ2RDLElBQUksRUFBRUc7QUFDUixDQUFDLEVBQ0Q7RUFDRU4sS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLG9CQUFvQjtFQUMxQkMsSUFBSSxFQUFFLFFBQVE7RUFDZEMsSUFBSSxFQUFFQztBQUNSLENBQUMsRUFDRDtFQUNF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
304
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJTdHJpbmciLCJtdWx0aXBsZSIsImRlZmF1bHRPcHRpb24iLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwiY29tbWl0QW5kUHVzaCIsInJlcG9zaXRvcnlEaXIiLCJjb21taXQiLCJyZW1vdGVzIiwiZXJyb3IiLCJleGVjU3luYyIsImN3ZCIsImVudiIsInByb2Nlc3MiLCJlbmNvZGluZyIsInN0ZGlvIiwiY2hpbGRQcm9jZXNzIiwic3RkZXJyIiwidGVzdCIsInN0ZG91dCIsImNvbnNvbGUiLCJvdXRwdXQiLCJyZW1vdGUiLCJyZXRyaWV2ZURvY3VtZW50cyIsImFzc2VydCIsInVpZCIsImRhdGFEaXIiLCJsb2FkQXNzZW1ibGVlRGF0YSIsIkVuYWJsZWREYXRhc2V0cyIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJsZWdpc2xhdHVyZSIsImRvY3VtZW50QnlVaWQiLCJ0ZXh0ZXNMb2lzRGlyIiwicGF0aCIsImpvaW4iLCJmcyIsImVuc3VyZURpclN5bmMiLCJyZWFkZGlyU3luYyIsImZpbGVuYW1lIiwicmVtb3ZlU3luYyIsInRleHRlc0xvaXMiLCJPYmplY3QiLCJ2YWx1ZXMiLCJmaWx0ZXIiLCJkb2N1bWVudCIsInhzaVR5cGUiLCJUeXBlRG9jdW1lbnQiLCJUZXh0ZUxvaVR5cGUiLCJzdGFydHNXaXRoIiwibWFwIiwicmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwiLCJ1cmxGcm9tRG9jdW1lbnQiLCJEb2N1bWVudFVybEZvcm1hdCIsIlJhd0h0bWwiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwiZmlyc3RVaWQiLCJza2lwIiwidGV4dGVMb2kiLCJzaWxlbnQiLCJsb2ciLCJ1cmwiLCJVUkwiLCJmaWxlUGF0aCIsImhvc3RuYW1lIiwicGF0aG5hbWUiLCJzcGxpdCIsInN0cmljdEVxdWFsIiwiZGlybmFtZSIsImZldGNoIiwicmVzcG9uc2UiLCJ0ZXh0IiwicGFnZSIsIm9rIiwic3RhdHVzIiwiSlNPTiIsInN0cmluZ2lmeSIsImNvZGUiLCJtZXNzYWdlIiwic3RhdHVzVGV4dCIsIndyaXRlRmlsZVN5bmMiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmV0cmlldmVfdGV4dGVzX2xvaXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IENoaWxkUHJvY2VzcywgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBmZXRjaCBmcm9tIFwibm9kZS1mZXRjaFwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBsb2FkQXNzZW1ibGVlRGF0YSB9IGZyb20gXCIuLi9sb2FkZXJzXCJcbmltcG9ydCB7IERvY3VtZW50LCBUeXBlRG9jdW1lbnQgfSBmcm9tIFwiLi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgRG9jdW1lbnRVcmxGb3JtYXQsIHVybEZyb21Eb2N1bWVudCB9IGZyb20gXCIuLi91cmxzXCJcblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgYWxpYXM6IFwiY1wiLFxuICAgIGhlbHA6IFwiY29tbWl0IGRvY3VtZW50c1wiLFxuICAgIG5hbWU6IFwiY29tbWl0XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcImxcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiMTZcIixcbiAgICBuYW1lOiBcImxlZ2lzbGF0dXJlXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiclwiLFxuICAgIGhlbHA6IFwicHVzaCBjb21taXQgdG8gZ2l2ZW4gcmVtb3RlXCIsXG4gICAgbXVsdGlwbGU6IHRydWUsXG4gICAgbmFtZTogXCJyZW1vdGVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJzXCIsXG4gICAgaGVscDogXCJkb24ndCBsb2cgYW55dGhpbmdcIixcbiAgICBuYW1lOiBcInNpbGVudFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJ1XCIsXG4gICAgaGVscDogXCJVSUQgb2YgZmlyc3QgQXNzZW1ibMOpZSdzIGRvY3VtZW50IHRvIHJldHJpZXZlXCIsXG4gICAgbmFtZTogXCJ1aWRcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJ2XCIsXG4gICAgaGVscDogXCJ2ZXJib3NlIGxvZ3NcIixcbiAgICBuYW1lOiBcInZlcmJvc2VcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICBoZWxwOiBcImRpcmVjdG9yeSBjb250YWluaW5nIEFzc2VtYmzDqWUgb3BlbiBkYXRhIGZpbGVzXCIsXG4gICAgbmFtZTogXCJkYXRhRGlyXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbmZ1bmN0aW9uIGNvbW1pdEFuZFB1c2goXG4gIHJlcG9zaXRvcnlEaXI6IHN0cmluZyxcbiAgY29tbWl0OiBib29sZWFuLFxuICByZW1vdGVzPzogc3RyaW5nW10sXG4pOiBib29sZWFuIHtcbiAgbGV0IGVycm9yID0gZmFsc2VcbiAgaWYgKGNvbW1pdCkge1xuICAgIGV4ZWNTeW5jKFwiZ2l0IGFkZCAuXCIsIHtcbiAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgfSlcbiAgICB0cnkge1xuICAgICAgZXhlY1N5bmMoJ2dpdCBjb21taXQgLW0gXCJOb3V2ZWxsZSBtb2lzc29uXCIgLS1xdWlldCcsIHtcbiAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKGNoaWxkUHJvY2VzcyBhcyBDaGlsZFByb2Nlc3MpLnN0ZGVyciA9PT0gbnVsbCB8fFxuICAgICAgICAhL25vdGhpbmcgdG8gY29tbWl0Ly50ZXN0KChjaGlsZFByb2Nlc3MgYXMgYW55KS5zdGRvdXQpXG4gICAgICApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuICAgICAgICB0aHJvdyBjaGlsZFByb2Nlc3NcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCByZW1vdGUgb2YgcmVtb3RlcyB8fCBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBwdXNoICR7cmVtb3RlfSBtYXN0ZXJgLCB7XG4gICAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgICAvLyBEb24ndCBzdG9wIHdoZW4gcHVzaCBmYWlscy5cbiAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9yXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlRG9jdW1lbnRzKCk6IFByb21pc2U8RG9jdW1lbnRbXT4ge1xuICBhc3NlcnQoXG4gICAgIW9wdGlvbnMuY29tbWl0IHx8IG9wdGlvbnMudWlkLFxuICAgICdPcHRpb25zIFwiY29tbWl0XCIgJiBcInVpZFwiIGFyZSBpbmNvbXBhdGlibGUnLFxuICApXG5cbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBjb25zdCB7IGRvY3VtZW50QnlVaWQgfSA9IGxvYWRBc3NlbWJsZWVEYXRhKFxuICAgIGRhdGFEaXIsXG4gICAgRW5hYmxlZERhdGFzZXRzLkRvc3NpZXJzTGVnaXNsYXRpZnMsXG4gICAgb3B0aW9ucy5sZWdpc2xhdHVyZSxcbiAgKVxuXG4gIGNvbnN0IHRleHRlc0xvaXNEaXIgPSBwYXRoLmpvaW4oXG4gICAgZGF0YURpcixcbiAgICBcInd3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyXCIsXG4gICAgb3B0aW9ucy5sZWdpc2xhdHVyZSxcbiAgICBcInRleHRlc1wiLFxuICApXG4gIGZzLmVuc3VyZURpclN5bmModGV4dGVzTG9pc0RpcilcbiAgaWYgKCFvcHRpb25zLnVpZCkge1xuICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmModGV4dGVzTG9pc0RpcikpIHtcbiAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKHRleHRlc0xvaXNEaXIsIGZpbGVuYW1lKSlcbiAgICB9XG4gIH1cblxuICBjb25zdCB0ZXh0ZXNMb2lzID0gT2JqZWN0LnZhbHVlcyhkb2N1bWVudEJ5VWlkKVxuICAgIC5maWx0ZXIoKGRvY3VtZW50KSA9PiBkb2N1bWVudC54c2lUeXBlID09PSBUeXBlRG9jdW1lbnQuVGV4dGVMb2lUeXBlKVxuICAgIC5maWx0ZXIoXG4gICAgICAoZG9jdW1lbnQpID0+XG4gICAgICAgIGRvY3VtZW50LnVpZC5zdGFydHNXaXRoKFwiUElPTkFOXCIpIHx8IGRvY3VtZW50LnVpZC5zdGFydHNXaXRoKFwiUFJKTEFOXCIpLFxuICAgIClcbiAgICAubWFwKChkb2N1bWVudCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZG9jdW1lbnQsXG4gICAgICAgIHJhd0RvY3VtZW50QXNzZW1ibGVlVXJsOiB1cmxGcm9tRG9jdW1lbnQoXG4gICAgICAgICAgZG9jdW1lbnQsXG4gICAgICAgICAgRG9jdW1lbnRVcmxGb3JtYXQuUmF3SHRtbCxcbiAgICAgICAgKSxcbiAgICAgIH1cbiAgICB9KVxuICAgIC5zb3J0KChhLCBiKSA9PlxuICAgICAgYS5yYXdEb2N1bWVudEFzc2VtYmxlZVVybCA9PT0gbnVsbFxuICAgICAgICA/IC0xXG4gICAgICAgIDogYi5yYXdEb2N1bWVudEFzc2VtYmxlZVVybCA9PT0gbnVsbFxuICAgICAgICA/IDFcbiAgICAgICAgOiBhLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsLmxvY2FsZUNvbXBhcmUoYi5yYXdEb2N1bWVudEFzc2VtYmxlZVVybCksXG4gICAgKVxuXG4gIGNvbnN0IGZpcnN0VWlkID0gb3B0aW9ucy51aWRcbiAgbGV0IHNraXAgPSAhIWZpcnN0VWlkXG4gIGZvciAoY29uc3QgdGV4dGVMb2kgb2YgdGV4dGVzTG9pcykge1xuICAgIGlmIChza2lwKSB7XG4gICAgICBpZiAodGV4dGVMb2kudWlkID09PSBmaXJzdFVpZCkge1xuICAgICAgICBza2lwID0gZmFsc2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgUmV0cmlldmluZyBiaWxsICR7dGV4dGVMb2kudWlkfSBhdCAke3RleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsfWAsXG4gICAgICApXG4gICAgfVxuICAgIGlmICh0ZXh0ZUxvaS5yYXdEb2N1bWVudEFzc2VtYmxlZVVybCA9PT0gbnVsbCkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTCh0ZXh0ZUxvaS5yYXdEb2N1bWVudEFzc2VtYmxlZVVybClcbiAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgIGRhdGFEaXIsXG4gICAgICB1cmwuaG9zdG5hbWUsXG4gICAgICAuLi51cmwucGF0aG5hbWUuc3BsaXQoXCIvXCIpLFxuICAgIClcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGV4dGVzTG9pc0RpciwgcGF0aC5kaXJuYW1lKGZpbGVQYXRoKSlcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godGV4dGVMb2kucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwpXG4gICAgY29uc3QgcGFnZSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKVxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDQwNCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIGBFcnJvciB3aGlsZSBnZXR0aW5nIHBhZ2UgXCIke1xuICAgICAgICAgICAgdGV4dGVMb2kucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmxcbiAgICAgICAgICB9XCIgKHVpZDogJHt0ZXh0ZUxvaS51aWR9KTpcXG5cXG5FcnJvcjpcXG4ke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgeyBjb2RlOiByZXNwb25zZS5zdGF0dXMsIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQgfSxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAyLFxuICAgICAgICAgICl9YCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgcGFnZSlcbiAgfVxuXG4gIGlmIChjb21taXRBbmRQdXNoKHRleHRlc0xvaXNEaXIsIG9wdGlvbnMuY29tbWl0LCBvcHRpb25zLnJlbW90ZSkpIHtcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuICByZXR1cm4gdGV4dGVzTG9pc1xufVxuXG5yZXRyaWV2ZURvY3VtZW50cygpLmNhdGNoKChlcnJvcikgPT4ge1xuICBjb25zb2xlLmxvZyhlcnJvcilcbiAgcHJvY2Vzcy5leGl0KDEpXG59KVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBNEQ7QUFBQSwrQ0FUNUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0EsSUFBTUEsa0JBQWtCLEdBQUcsQ0FDekI7RUFDRUMsS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLGtCQUFrQjtFQUN4QkMsSUFBSSxFQUFFLFFBQVE7RUFDZEMsSUFBSSxFQUFFQztBQUNSLENBQUMsRUFDRDtFQUNFSixLQUFLLEVBQUUsR0FBRztFQUNWSyxZQUFZLEVBQUUsSUFBSTtFQUNsQkgsSUFBSSxFQUFFLGFBQWE7RUFDbkJDLElBQUksRUFBRUc7QUFDUixDQUFDLEVBQ0Q7RUFDRU4sS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLDZCQUE2QjtFQUNuQ00sUUFBUSxFQUFFLElBQUk7RUFDZEwsSUFBSSxFQUFFLFFBQVE7RUFDZEMsSUFBSSxFQUFFRztBQUNSLENBQUMsRUFDRDtFQUNFTixLQUFLLEVBQUUsR0FBRztFQUNWQyxJQUFJLEVBQUUsb0JBQW9CO0VBQzFCQyxJQUFJLEVBQUUsUUFBUTtFQUNkQyxJQUFJLEVBQUVDO0FBQ1IsQ0FBQyxF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