@tricoteuses/assemblee 1.10.5 → 2.0.2

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 (400) hide show
  1. package/README.md +8 -1
  2. package/lib/amendements-CN7bRFdP.js +259 -0
  3. package/lib/amendements-CN7bRFdP.js.map +1 -0
  4. package/lib/amendements-Cg1lyCBp.js +735 -0
  5. package/lib/amendements-Cg1lyCBp.js.map +1 -0
  6. package/lib/api.d.ts +1 -0
  7. package/lib/api.d.ts.map +1 -0
  8. package/lib/cleaners/actes_legislatifs.d.ts +1 -0
  9. package/lib/cleaners/actes_legislatifs.d.ts.map +1 -0
  10. package/lib/cleaners/acteurs.d.ts +1 -0
  11. package/lib/cleaners/acteurs.d.ts.map +1 -0
  12. package/lib/cleaners/amendements.d.ts +1 -0
  13. package/lib/cleaners/amendements.d.ts.map +1 -0
  14. package/lib/cleaners/debats.d.ts +1 -0
  15. package/lib/cleaners/debats.d.ts.map +1 -0
  16. package/lib/cleaners/documents.d.ts +1 -0
  17. package/lib/cleaners/documents.d.ts.map +1 -0
  18. package/lib/cleaners/dossiers_legislatifs.d.ts +1 -0
  19. package/lib/cleaners/dossiers_legislatifs.d.ts.map +1 -0
  20. package/lib/cleaners/index.d.ts +10 -9
  21. package/lib/cleaners/index.d.ts.map +1 -0
  22. package/lib/cleaners/organes.d.ts +1 -0
  23. package/lib/cleaners/organes.d.ts.map +1 -0
  24. package/lib/cleaners/questions.d.ts +1 -0
  25. package/lib/cleaners/questions.d.ts.map +1 -0
  26. package/lib/cleaners/reunions.d.ts +1 -0
  27. package/lib/cleaners/reunions.d.ts.map +1 -0
  28. package/lib/cleaners/scrutins.d.ts +1 -0
  29. package/lib/cleaners/scrutins.d.ts.map +1 -0
  30. package/lib/cleaners/xml.d.ts +1 -0
  31. package/lib/cleaners/xml.d.ts.map +1 -0
  32. package/lib/cleaners.js +1138 -0
  33. package/lib/cleaners.js.map +1 -0
  34. package/lib/datasets.d.ts +4 -3
  35. package/lib/datasets.d.ts.map +1 -0
  36. package/lib/dates.d.ts +1 -0
  37. package/lib/dates.d.ts.map +1 -0
  38. package/lib/debats-BwZYgzXe.js +3978 -0
  39. package/lib/debats-BwZYgzXe.js.map +1 -0
  40. package/lib/dossiers_legislatifs.d.ts +3 -2
  41. package/lib/dossiers_legislatifs.d.ts.map +1 -0
  42. package/lib/file_systems.d.ts +1 -0
  43. package/lib/file_systems.d.ts.map +1 -0
  44. package/lib/git.d.ts +1 -0
  45. package/lib/git.d.ts.map +1 -0
  46. package/lib/index.d.ts +18 -22
  47. package/lib/index.d.ts.map +1 -0
  48. package/lib/index.js +1916 -285
  49. package/lib/index.js.map +1 -0
  50. package/lib/inserters.d.ts +6 -5
  51. package/lib/inserters.d.ts.map +1 -0
  52. package/lib/loaders.d.ts +13 -12
  53. package/lib/loaders.d.ts.map +1 -0
  54. package/lib/loaders.js +812 -1516
  55. package/lib/loaders.js.map +1 -0
  56. package/lib/logger.d.ts +1 -0
  57. package/lib/logger.d.ts.map +1 -0
  58. package/lib/organes.d.ts +2 -1
  59. package/lib/organes.d.ts.map +1 -0
  60. package/lib/parse-CzW8NHW5.js +2850 -0
  61. package/lib/parse-CzW8NHW5.js.map +1 -0
  62. package/lib/parsers/index.d.ts +3 -3
  63. package/lib/parsers/index.d.ts.map +1 -0
  64. package/lib/parsers/plf.d.ts +2 -0
  65. package/lib/parsers/plf.d.ts.map +1 -0
  66. package/lib/parsers/recherche_amendements.d.ts +3 -2
  67. package/lib/parsers/recherche_amendements.d.ts.map +1 -0
  68. package/lib/parsers/textes_lois.d.ts +2 -23
  69. package/lib/parsers/textes_lois.d.ts.map +1 -0
  70. package/lib/parsers.js +393 -0
  71. package/lib/parsers.js.map +1 -0
  72. package/lib/raw_types/acteurs_et_organes.d.ts +1 -0
  73. package/lib/raw_types/acteurs_et_organes.d.ts.map +1 -0
  74. package/lib/raw_types/agendas.d.ts +1 -0
  75. package/lib/raw_types/agendas.d.ts.map +1 -0
  76. package/lib/raw_types/amendements.d.ts +1 -0
  77. package/lib/raw_types/amendements.d.ts.map +1 -0
  78. package/lib/raw_types/debats.d.ts +3 -2
  79. package/lib/raw_types/debats.d.ts.map +1 -0
  80. package/lib/raw_types/dossiers_legislatifs.d.ts +2 -1
  81. package/lib/raw_types/dossiers_legislatifs.d.ts.map +1 -0
  82. package/lib/raw_types/questions.d.ts +1 -0
  83. package/lib/raw_types/questions.d.ts.map +1 -0
  84. package/lib/raw_types/scrutins.d.ts +1 -0
  85. package/lib/raw_types/scrutins.d.ts.map +1 -0
  86. package/lib/schemas/acteurs_et_organes.d.json +982 -0
  87. package/lib/schemas/acteurs_et_organes.json +1166 -0
  88. package/lib/schemas/agendas.d.json +1561 -0
  89. package/lib/schemas/agendas.json +1745 -0
  90. package/lib/schemas/amendements.d.json +1901 -0
  91. package/lib/schemas/amendements.json +2085 -0
  92. package/lib/schemas/debats.d.json +623 -0
  93. package/lib/schemas/debats.json +842 -0
  94. package/lib/schemas/dossiers_legislatifs.d.json +3690 -0
  95. package/lib/schemas/dossiers_legislatifs.json +3874 -0
  96. package/lib/schemas/legislatures.d.json +17 -0
  97. package/lib/schemas/legislatures.json +17 -0
  98. package/lib/schemas/questions.d.json +520 -0
  99. package/lib/schemas/questions.json +704 -0
  100. package/lib/schemas/scrutins.d.json +517 -0
  101. package/lib/schemas/scrutins.json +701 -0
  102. package/lib/scripts/add_links_to_documents.d.ts +2 -0
  103. package/lib/scripts/add_links_to_documents.d.ts.map +1 -0
  104. package/lib/scripts/clean_reorganized_data.d.ts +1 -0
  105. package/lib/scripts/clean_reorganized_data.d.ts.map +1 -0
  106. package/lib/scripts/copy-schemas.d.ts +2 -0
  107. package/lib/scripts/copy-schemas.d.ts.map +1 -0
  108. package/lib/scripts/diff_amendements.d.ts +1 -0
  109. package/lib/scripts/diff_amendements.d.ts.map +1 -0
  110. package/lib/scripts/document_dossiers_legislatifs.d.ts +1 -0
  111. package/lib/scripts/document_dossiers_legislatifs.d.ts.map +1 -0
  112. package/lib/scripts/generate-json-schemas.d.ts +2 -0
  113. package/lib/scripts/generate-json-schemas.d.ts.map +1 -0
  114. package/lib/scripts/get_today_reunions.d.ts +1 -0
  115. package/lib/scripts/get_today_reunions.d.ts.map +1 -0
  116. package/lib/scripts/merge_scrutins.d.ts +1 -0
  117. package/lib/scripts/merge_scrutins.d.ts.map +1 -0
  118. package/lib/scripts/process_open_dataset.d.ts +1 -0
  119. package/lib/scripts/process_open_dataset.d.ts.map +1 -0
  120. package/lib/scripts/raw_types_from_amendements.d.ts +1 -0
  121. package/lib/scripts/raw_types_from_amendements.d.ts.map +1 -0
  122. package/lib/scripts/reorganize_data.d.ts +1 -0
  123. package/lib/scripts/reorganize_data.d.ts.map +1 -0
  124. package/lib/scripts/retrieve_deputes_photos.d.ts +2 -1
  125. package/lib/scripts/retrieve_deputes_photos.d.ts.map +1 -0
  126. package/lib/scripts/retrieve_documents.d.ts +1 -0
  127. package/lib/scripts/retrieve_documents.d.ts.map +1 -0
  128. package/lib/scripts/retrieve_open_data.d.ts +1 -0
  129. package/lib/scripts/retrieve_open_data.d.ts.map +1 -0
  130. package/lib/scripts/retrieve_pending_amendments.d.ts +1 -0
  131. package/lib/scripts/retrieve_pending_amendments.d.ts.map +1 -0
  132. package/lib/scripts/retrieve_senateurs_photos.d.ts +1 -0
  133. package/lib/scripts/retrieve_senateurs_photos.d.ts.map +1 -0
  134. package/lib/scripts/shared/cli_helpers.d.ts +1 -0
  135. package/lib/scripts/shared/cli_helpers.d.ts.map +1 -0
  136. package/lib/scripts/test_iter_load.d.ts +1 -0
  137. package/lib/scripts/test_iter_load.d.ts.map +1 -0
  138. package/lib/scripts/test_load.d.ts +1 -0
  139. package/lib/scripts/test_load.d.ts.map +1 -0
  140. package/lib/scripts/test_load_big_files.d.ts +1 -0
  141. package/lib/scripts/test_load_big_files.d.ts.map +1 -0
  142. package/lib/scripts/validate_json.d.ts +1 -0
  143. package/lib/scripts/validate_json.d.ts.map +1 -0
  144. package/lib/shared_types/codes_actes.d.ts +1 -0
  145. package/lib/shared_types/codes_actes.d.ts.map +1 -0
  146. package/lib/strings.d.ts +1 -0
  147. package/lib/strings.d.ts.map +1 -0
  148. package/lib/types/acteurs_et_organes.d.ts +341 -0
  149. package/lib/types/acteurs_et_organes.d.ts.map +1 -0
  150. package/lib/types/agendas.d.ts +237 -10
  151. package/lib/types/agendas.d.ts.map +1 -0
  152. package/lib/types/amendements.d.ts +277 -1
  153. package/lib/types/amendements.d.ts.map +1 -0
  154. package/lib/types/debats.d.ts +53 -2
  155. package/lib/types/debats.d.ts.map +1 -0
  156. package/lib/types/dossiers_legislatifs.d.ts +404 -9
  157. package/lib/types/dossiers_legislatifs.d.ts.map +1 -0
  158. package/lib/types/legislatures.d.ts +1 -0
  159. package/lib/types/legislatures.d.ts.map +1 -0
  160. package/lib/types/questions.d.ts +100 -2
  161. package/lib/types/questions.d.ts.map +1 -0
  162. package/lib/types/scrutins.d.ts +102 -0
  163. package/lib/types/scrutins.d.ts.map +1 -0
  164. package/lib/urls.d.ts +3 -2
  165. package/lib/urls.d.ts.map +1 -0
  166. package/package.json +31 -95
  167. package/lib/api.js +0 -52
  168. package/lib/api.mjs +0 -45
  169. package/lib/bugs/acteur-00010/plugin.test.d.ts +0 -1
  170. package/lib/bugs/acteur-00010/plugin.test.js +0 -90
  171. package/lib/bugs/acteur-00010/plugin.test.mjs +0 -33
  172. package/lib/bugs/acteur-00010.d.ts +0 -7
  173. package/lib/bugs/acteur-00010.js +0 -116
  174. package/lib/bugs/acteur-00010.mjs +0 -26
  175. package/lib/bugs/agenda-00002/plugin.test.d.ts +0 -1
  176. package/lib/bugs/agenda-00002/plugin.test.js +0 -124
  177. package/lib/bugs/agenda-00002/plugin.test.mjs +0 -50
  178. package/lib/bugs/agenda-00002.d.ts +0 -15
  179. package/lib/bugs/agenda-00002.js +0 -406
  180. package/lib/bugs/agenda-00002.mjs +0 -172
  181. package/lib/bugs/agenda-00008/plugin.test.d.ts +0 -1
  182. package/lib/bugs/agenda-00008/plugin.test.js +0 -92
  183. package/lib/bugs/agenda-00008/plugin.test.mjs +0 -31
  184. package/lib/bugs/agenda-00008.d.ts +0 -7
  185. package/lib/bugs/agenda-00008.js +0 -123
  186. package/lib/bugs/agenda-00008.mjs +0 -26
  187. package/lib/bugs/agenda-00011/plugin.test.d.ts +0 -1
  188. package/lib/bugs/agenda-00011/plugin.test.js +0 -263
  189. package/lib/bugs/agenda-00011/plugin.test.mjs +0 -152
  190. package/lib/bugs/agenda-00011.d.ts +0 -16
  191. package/lib/bugs/agenda-00011.js +0 -333
  192. package/lib/bugs/agenda-00011.mjs +0 -125
  193. package/lib/bugs.d.ts +0 -21
  194. package/lib/bugs.js +0 -452
  195. package/lib/bugs.mjs +0 -70
  196. package/lib/cleaners/actes_legislatifs.js +0 -315
  197. package/lib/cleaners/actes_legislatifs.mjs +0 -253
  198. package/lib/cleaners/acteurs.js +0 -265
  199. package/lib/cleaners/acteurs.mjs +0 -180
  200. package/lib/cleaners/amendements.js +0 -294
  201. package/lib/cleaners/amendements.mjs +0 -227
  202. package/lib/cleaners/debats.js +0 -12
  203. package/lib/cleaners/debats.mjs +0 -5
  204. package/lib/cleaners/documents.js +0 -205
  205. package/lib/cleaners/documents.mjs +0 -133
  206. package/lib/cleaners/dossiers_legislatifs.js +0 -131
  207. package/lib/cleaners/dossiers_legislatifs.mjs +0 -70
  208. package/lib/cleaners/index.js +0 -70
  209. package/lib/cleaners/index.mjs +0 -10
  210. package/lib/cleaners/organes.js +0 -65
  211. package/lib/cleaners/organes.mjs +0 -48
  212. package/lib/cleaners/questions.js +0 -12
  213. package/lib/cleaners/questions.mjs +0 -5
  214. package/lib/cleaners/reunions.js +0 -312
  215. package/lib/cleaners/reunions.mjs +0 -255
  216. package/lib/cleaners/scrutins.js +0 -340
  217. package/lib/cleaners/scrutins.mjs +0 -221
  218. package/lib/cleaners/xml.js +0 -74
  219. package/lib/cleaners/xml.mjs +0 -59
  220. package/lib/datasets.js +0 -837
  221. package/lib/datasets.mjs +0 -755
  222. package/lib/dates.js +0 -124
  223. package/lib/dates.mjs +0 -100
  224. package/lib/dossiers_legislatifs.js +0 -346
  225. package/lib/dossiers_legislatifs.mjs +0 -208
  226. package/lib/file_systems.js +0 -162
  227. package/lib/file_systems.mjs +0 -62
  228. package/lib/git.js +0 -223
  229. package/lib/git.mjs +0 -151
  230. package/lib/index.mjs +0 -17
  231. package/lib/inserters.js +0 -521
  232. package/lib/inserters.mjs +0 -337
  233. package/lib/loaders.mjs +0 -886
  234. package/lib/logger.js +0 -35
  235. package/lib/logger.mjs +0 -26
  236. package/lib/organes.js +0 -22
  237. package/lib/organes.mjs +0 -15
  238. package/lib/parsers/documents.d.ts +0 -62
  239. package/lib/parsers/documents.js +0 -453
  240. package/lib/parsers/documents.mjs +0 -370
  241. package/lib/parsers/index.js +0 -40
  242. package/lib/parsers/index.mjs +0 -4
  243. package/lib/parsers/recherche_amendements.js +0 -403
  244. package/lib/parsers/recherche_amendements.mjs +0 -167
  245. package/lib/parsers/textes_lois.js +0 -307
  246. package/lib/parsers/textes_lois.mjs +0 -264
  247. package/lib/raw_types/acteurs_et_organes.js +0 -1215
  248. package/lib/raw_types/acteurs_et_organes.mjs +0 -1148
  249. package/lib/raw_types/agendas.js +0 -777
  250. package/lib/raw_types/agendas.mjs +0 -724
  251. package/lib/raw_types/amendements.js +0 -1052
  252. package/lib/raw_types/amendements.mjs +0 -993
  253. package/lib/raw_types/debats.js +0 -630
  254. package/lib/raw_types/debats.mjs +0 -573
  255. package/lib/raw_types/dossiers_legislatifs.js +0 -1529
  256. package/lib/raw_types/dossiers_legislatifs.mjs +0 -1471
  257. package/lib/raw_types/questions.js +0 -469
  258. package/lib/raw_types/questions.mjs +0 -416
  259. package/lib/raw_types/scrutins.js +0 -651
  260. package/lib/raw_types/scrutins.mjs +0 -598
  261. package/lib/schemas/acteur/Acteur.json +0 -56
  262. package/lib/schemas/acteur/AdresseElectronique.json +0 -52
  263. package/lib/schemas/acteur/AdressePostale.json +0 -75
  264. package/lib/schemas/acteur/Civ.json +0 -14
  265. package/lib/schemas/acteur/Collaborateur.json +0 -29
  266. package/lib/schemas/acteur/EtatCivil.json +0 -51
  267. package/lib/schemas/acteur/Ident.json +0 -40
  268. package/lib/schemas/acteur/Lieu.json +0 -66
  269. package/lib/schemas/acteur/Mandat.json +0 -192
  270. package/lib/schemas/acteur/Profession.json +0 -46
  271. package/lib/schemas/agenda/Agenda.json +0 -318
  272. package/lib/schemas/agenda/CycleDeVie.json +0 -45
  273. package/lib/schemas/agenda/PointOdj.json +0 -82
  274. package/lib/schemas/amendement/Amendement.json +0 -246
  275. package/lib/schemas/amendement/Diff.json +0 -25
  276. package/lib/schemas/amendement/DispositifAmdtCredit.json +0 -85
  277. package/lib/schemas/amendement/Identifiant.json +0 -62
  278. package/lib/schemas/amendement/PointeurFragmentTexte.json +0 -127
  279. package/lib/schemas/amendement/Representation.json +0 -67
  280. package/lib/schemas/amendement/Total.json +0 -26
  281. package/lib/schemas/converted_from_type/acteurs_et_organes.json +0 -666
  282. package/lib/schemas/converted_from_type/agendas.json +0 -1100
  283. package/lib/schemas/converted_from_type/amendements.json +0 -3191
  284. package/lib/schemas/converted_from_type/debats.json +0 -682
  285. package/lib/schemas/converted_from_type/deputes.json +0 -26
  286. package/lib/schemas/converted_from_type/dossiers_legislatifs.json +0 -2918
  287. package/lib/schemas/converted_from_type/legislatures.json +0 -16
  288. package/lib/schemas/converted_from_type/questions.json +0 -328
  289. package/lib/schemas/converted_from_type/scrutins.json +0 -393
  290. package/lib/schemas/debat/Contenu.json +0 -75
  291. package/lib/schemas/debat/Debat.json +0 -40
  292. package/lib/schemas/debat/Metadonnees.json +0 -75
  293. package/lib/schemas/debat/Orateur.json +0 -60
  294. package/lib/schemas/debat/Point.json +0 -169
  295. package/lib/schemas/debat/Sommaire.json +0 -71
  296. package/lib/schemas/debat/SommaireElement.json +0 -108
  297. package/lib/schemas/debat/Texte.json +0 -34
  298. package/lib/schemas/document/CodeLibelle.json +0 -25
  299. package/lib/schemas/document/Document.json +0 -385
  300. package/lib/schemas/document/Indexation.json +0 -38
  301. package/lib/schemas/dossier/ActeLegislatif.json +0 -211
  302. package/lib/schemas/dossier/ActeLegislatifBase.json +0 -62
  303. package/lib/schemas/dossier/Agenda.json +0 -23
  304. package/lib/schemas/dossier/ConseilConstitutionnel.json +0 -35
  305. package/lib/schemas/dossier/Decision.json +0 -25
  306. package/lib/schemas/dossier/Dossier.json +0 -124
  307. package/lib/schemas/dossier/EtudeImpact.json +0 -29
  308. package/lib/schemas/dossier/EtudePlf.json +0 -105
  309. package/lib/schemas/dossier/Europe.json +0 -42
  310. package/lib/schemas/dossier/FamCodeLibelle.json +0 -25
  311. package/lib/schemas/dossier/InfoJO.json +0 -23
  312. package/lib/schemas/dossier/Initiateur.json +0 -36
  313. package/lib/schemas/dossier/Motion.json +0 -27
  314. package/lib/schemas/dossier/Promulgation.json +0 -62
  315. package/lib/schemas/dossier/Rapporteur.json +0 -36
  316. package/lib/schemas/dossier/Texte.json +0 -47
  317. package/lib/schemas/organe/CodeTypeOrgane.json +0 -43
  318. package/lib/schemas/organe/Organe.json +0 -136
  319. package/lib/schemas/organe/ViMoDe.json +0 -28
  320. package/lib/schemas/question/Auteur.json +0 -58
  321. package/lib/schemas/question/Cloture.json +0 -28
  322. package/lib/schemas/question/InfoJO.json +0 -40
  323. package/lib/schemas/question/MinAttribElement.json +0 -30
  324. package/lib/schemas/question/Question.json +0 -172
  325. package/lib/schemas/question/Renouvellement.json +0 -17
  326. package/lib/schemas/question/Signalement.json +0 -21
  327. package/lib/schemas/question/Texte.json +0 -24
  328. package/lib/schemas/scrutin/DecompteVoix.json +0 -35
  329. package/lib/schemas/scrutin/Dysfonctionnement.json +0 -50
  330. package/lib/schemas/scrutin/MiseAuPoint.json +0 -53
  331. package/lib/schemas/scrutin/OrganeVotant.json +0 -88
  332. package/lib/schemas/scrutin/Scrutin.json +0 -187
  333. package/lib/schemas/scrutin/Votant.json +0 -37
  334. package/lib/scripts/bugs_helper.d.ts +0 -13
  335. package/lib/scripts/bugs_helper.js +0 -595
  336. package/lib/scripts/bugs_helper.mjs +0 -251
  337. package/lib/scripts/clean_reorganized_data.js +0 -613
  338. package/lib/scripts/clean_reorganized_data.mjs +0 -276
  339. package/lib/scripts/diff_amendements.js +0 -249
  340. package/lib/scripts/diff_amendements.mjs +0 -202
  341. package/lib/scripts/document_dossiers_legislatifs.js +0 -655
  342. package/lib/scripts/document_dossiers_legislatifs.mjs +0 -414
  343. package/lib/scripts/get_today_reunions.js +0 -37
  344. package/lib/scripts/get_today_reunions.mjs +0 -31
  345. package/lib/scripts/merge_scrutins.js +0 -97
  346. package/lib/scripts/merge_scrutins.mjs +0 -47
  347. package/lib/scripts/parse_textes_lois.d.ts +0 -1
  348. package/lib/scripts/parse_textes_lois.js +0 -171
  349. package/lib/scripts/parse_textes_lois.mjs +0 -140
  350. package/lib/scripts/process_open_dataset.js +0 -301
  351. package/lib/scripts/process_open_dataset.mjs +0 -134
  352. package/lib/scripts/raw_types_from_amendements.js +0 -135
  353. package/lib/scripts/raw_types_from_amendements.mjs +0 -134
  354. package/lib/scripts/reorganize_data.js +0 -805
  355. package/lib/scripts/reorganize_data.mjs +0 -517
  356. package/lib/scripts/retrieve_deputes_photos.js +0 -310
  357. package/lib/scripts/retrieve_deputes_photos.mjs +0 -158
  358. package/lib/scripts/retrieve_documents.js +0 -547
  359. package/lib/scripts/retrieve_documents.mjs +0 -242
  360. package/lib/scripts/retrieve_open_data.js +0 -107
  361. package/lib/scripts/retrieve_open_data.mjs +0 -26
  362. package/lib/scripts/retrieve_pending_amendments.js +0 -206
  363. package/lib/scripts/retrieve_pending_amendments.mjs +0 -57
  364. package/lib/scripts/retrieve_senateurs_photos.js +0 -234
  365. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -116
  366. package/lib/scripts/retrieve_textes_lois.d.ts +0 -1
  367. package/lib/scripts/retrieve_textes_lois.js +0 -240
  368. package/lib/scripts/retrieve_textes_lois.mjs +0 -85
  369. package/lib/scripts/shared/cli_helpers.js +0 -89
  370. package/lib/scripts/shared/cli_helpers.mjs +0 -81
  371. package/lib/scripts/test_iter_load.js +0 -155
  372. package/lib/scripts/test_iter_load.mjs +0 -72
  373. package/lib/scripts/test_load.js +0 -26
  374. package/lib/scripts/test_load.mjs +0 -16
  375. package/lib/scripts/test_load_big_files.js +0 -26
  376. package/lib/scripts/test_load_big_files.mjs +0 -16
  377. package/lib/scripts/validate_json.js +0 -353
  378. package/lib/scripts/validate_json.mjs +0 -184
  379. package/lib/shared_types/codes_actes.js +0 -231
  380. package/lib/shared_types/codes_actes.mjs +0 -224
  381. package/lib/strings.js +0 -16
  382. package/lib/strings.mjs +0 -7
  383. package/lib/types/acteurs_et_organes.js +0 -965
  384. package/lib/types/acteurs_et_organes.mjs +0 -906
  385. package/lib/types/agendas.js +0 -628
  386. package/lib/types/agendas.mjs +0 -575
  387. package/lib/types/amendements.js +0 -899
  388. package/lib/types/amendements.mjs +0 -842
  389. package/lib/types/debats.js +0 -619
  390. package/lib/types/debats.mjs +0 -562
  391. package/lib/types/dossiers_legislatifs.js +0 -1188
  392. package/lib/types/dossiers_legislatifs.mjs +0 -1130
  393. package/lib/types/legislatures.js +0 -17
  394. package/lib/types/legislatures.mjs +0 -10
  395. package/lib/types/questions.js +0 -454
  396. package/lib/types/questions.mjs +0 -401
  397. package/lib/types/scrutins.js +0 -556
  398. package/lib/types/scrutins.mjs +0 -503
  399. package/lib/urls.js +0 -325
  400. package/lib/urls.mjs +0 -258
@@ -1,202 +0,0 @@
1
- import commandLineArgs from "command-line-args";
2
- import fs from "fs-extra";
3
- import path from "path";
4
- import { detailedDiff } from "deep-object-diff";
5
- import { datasets, DatasetStructure } from "../datasets.mjs";
6
- import { walkDir } from "../file_systems.mjs";
7
- import { silentOption, verboseOption, dataDirDefaultOption } from "./shared/cli_helpers.mjs";
8
- const diffedAmendments = [];
9
- const newAmendments = [];
10
- const optionsDefinitions = [silentOption, verboseOption, dataDirDefaultOption, {
11
- alias: "m",
12
- help: "Diff modes.",
13
- name: "mode",
14
- defaultValue: "merged",
15
- type: String
16
- }, {
17
- alias: "p",
18
- help: "Directory containing the previous dump of amendments",
19
- name: "previous",
20
- type: String
21
- }, {
22
- alias: "o",
23
- help: "Output directory for diff files",
24
- name: "output",
25
- defaultValue: "./diff_outputs/",
26
- type: String
27
- }];
28
- const options = commandLineArgs(optionsDefinitions);
29
- function diffAmendements(dataDir) {
30
- if (!options.previous) {
31
- console.error("No previous data folder specified. You must provide one with the -p or --previous option. Exiting...");
32
- process.exit();
33
- }
34
- if (!fs.existsSync(options.output)) {
35
- console.error("The output dir does not exists. You must provide an existing directory. Default directory is ./diff_outputs/");
36
- process.exit();
37
- }
38
- for (const dataset of datasets.amendements) {
39
- switch (dataset.structure) {
40
- case DatasetStructure.SegmentedFiles:
41
- {
42
- const originalJsonDir = path.join(dataDir, dataset.filename);
43
- if (!options.silent) {
44
- console.log(`Diffing ${originalJsonDir} folder...`);
45
- }
46
- for (const amendementSplitPath of walkDir(originalJsonDir)) {
47
- const newFilePath = originalJsonDir + "/" + amendementSplitPath.join("/");
48
- const newFile = JSON.parse(fs.readFileSync(newFilePath).toLocaleString());
49
- const oldFilePath = options.previous + dataset.filename + "/" + amendementSplitPath.join("/");
50
- const oldFileExists = fs.existsSync(oldFilePath);
51
- if (!oldFileExists) {
52
- // If file found does not exist in the previous dump
53
- if (!options.silent) {
54
- console.log("File did not exists previously. Guessing it's a new amendment. Adding to the diff list for new objects");
55
- }
56
- addToQueueForNewAmendments(newFile, amendementSplitPath);
57
- continue;
58
- }
59
-
60
- // File already existed in previous dump
61
- let oldFile = JSON.parse("{}");
62
- try {
63
- // Gather data of the file and retranscript as a Json object
64
- oldFile = JSON.parse(fs.readFileSync(oldFilePath).toLocaleString());
65
- } catch (e) {
66
- // Skip the process to the next iteration in case of corrupt JSON data
67
- continue;
68
- }
69
-
70
- // Generate the diff beetween the two JSON objects (old & new dump)
71
- const diff = detailedDiff(oldFile, newFile);
72
-
73
- // If no changes beetween the two dumps
74
- if (Object.keys(diff.added).length === 0 && Object.keys(diff.updated).length === 0 && Object.keys(diff.deleted).length === 0) {
75
- // Skip to next iteration as there is no need to generate a file
76
- continue;
77
- } else {
78
- if (!options.silent) {
79
- console.log("Changes found !");
80
- }
81
- addToQueueForDiffedAmendments(diff, amendementSplitPath);
82
- }
83
- break;
84
- }
85
- }
86
- }
87
- if (!options.silent) {
88
- console.log("Generating output(s)");
89
- }
90
- generateDiffFiles();
91
- }
92
- }
93
-
94
- /**
95
- * General process for output of diffs.
96
- * The script handles two different modes :
97
- * - merged : Will output a single file for new amendements and a single file
98
- * for updated amendements
99
- * - splitted : Will output a single file for each amendments, either its new or updated.
100
- *
101
- */
102
- function generateDiffFiles() {
103
- // Handles merged mode
104
- if (options.mode === "merged") {
105
- if (!options.silent) {
106
- console.log("Generating merged files");
107
- }
108
- if (diffedAmendments.length > 0) {
109
- if (!options.silent) {
110
- console.log("Generating diffed amendments files");
111
- }
112
- fs.writeFileSync(options.output + "amendements_XV_diffed.json", JSON.stringify(diffedAmendments), {
113
- encoding: "utf8",
114
- flag: "w"
115
- });
116
- } else {
117
- if (!options.silent) {
118
- console.log("No diff in the already existing amendments");
119
- }
120
- }
121
- if (newAmendments.length > 0) {
122
- if (!options.silent) {
123
- console.log("Generating new amendments file");
124
- }
125
- fs.writeFileSync(options.output + "amendements_XV_new.json", JSON.stringify(newAmendments), {
126
- encoding: "utf8",
127
- flag: "w"
128
- });
129
- } else {
130
- if (!options.silent) {
131
- console.log("No new amendement. Skipping file generation");
132
- }
133
- }
134
- } else if (options.mode === "splitted") {
135
- // Handles splitted mode
136
- if (!options.silent) {
137
- console.log("Generating separated files");
138
- }
139
-
140
- /**
141
- * Process the copy action of the new and diffed amendments
142
- */
143
-
144
- diffedAmendments.forEach(diffedAmendment => {
145
- generateSingleDiffedAmendment(diffedAmendment);
146
- });
147
- newAmendments.forEach(newAmendment => {
148
- generateSingleNewAmendment(newAmendment);
149
- });
150
- } else {
151
- console.error("Unknown output mode. Aborting...");
152
- process.exit();
153
- }
154
- }
155
-
156
- // Pushes an amendment to the queue that will be processed to copy new amendments files
157
- function addToQueueForNewAmendments(file, path) {
158
- const amendment = {
159
- path: path,
160
- data: file
161
- };
162
- newAmendments.push(amendment);
163
- }
164
- // Pushes an amendment to the queue that will be processed to copy updated amendments files
165
- function addToQueueForDiffedAmendments(diffedData, path) {
166
- const amendment = {
167
- path: path,
168
- data: diffedData
169
- };
170
- diffedAmendments.push(amendment);
171
- }
172
-
173
- // generates a file with a copy of the new amendement
174
- function generateSingleNewAmendment(newAmendment) {
175
- newAmendment.path.shift();
176
- const shortDir = [...newAmendment.path];
177
- shortDir.pop();
178
- console.log(options.output + shortDir.join("/"));
179
- fs.mkdirSync(options.output + shortDir.join("/"), {
180
- recursive: true
181
- });
182
- fs.writeFileSync(options.output + newAmendment.path.join("/").replace(/(\.json)/, ".new$1"), JSON.stringify(newAmendment.data), {
183
- encoding: "utf8",
184
- flag: "w"
185
- });
186
- }
187
-
188
- // generates a file with a copy of the modified data of the previously existing amendment;
189
- function generateSingleDiffedAmendment(diffedAmendment) {
190
- diffedAmendment.path.shift();
191
- const shortDir = [...diffedAmendment.path];
192
- shortDir.pop();
193
- fs.mkdirSync(options.output + shortDir.join("/"), {
194
- recursive: true
195
- });
196
- fs.writeFileSync(options.output + diffedAmendment.path.join("/").replace(/(\.json)/, ".diff$1"), JSON.stringify(diffedAmendment.data), {
197
- encoding: "utf8",
198
- flag: "w"
199
- });
200
- }
201
- diffAmendements(options.dataDir);
202
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJkZXRhaWxlZERpZmYiLCJkYXRhc2V0cyIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJ3YWxrRGlyIiwic2lsZW50T3B0aW9uIiwidmVyYm9zZU9wdGlvbiIsImRhdGFEaXJEZWZhdWx0T3B0aW9uIiwiZGlmZmVkQW1lbmRtZW50cyIsIm5ld0FtZW5kbWVudHMiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwiZGVmYXVsdFZhbHVlIiwidHlwZSIsIlN0cmluZyIsIm9wdGlvbnMiLCJkaWZmQW1lbmRlbWVudHMiLCJkYXRhRGlyIiwicHJldmlvdXMiLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9jZXNzIiwiZXhpdCIsImV4aXN0c1N5bmMiLCJvdXRwdXQiLCJkYXRhc2V0IiwiYW1lbmRlbWVudHMiLCJzdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsIm9yaWdpbmFsSnNvbkRpciIsImpvaW4iLCJmaWxlbmFtZSIsInNpbGVudCIsImxvZyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJuZXdGaWxlUGF0aCIsIm5ld0ZpbGUiLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiLCJ0b0xvY2FsZVN0cmluZyIsIm9sZEZpbGVQYXRoIiwib2xkRmlsZUV4aXN0cyIsImFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzIiwib2xkRmlsZSIsImUiLCJkaWZmIiwiT2JqZWN0Iiwia2V5cyIsImFkZGVkIiwibGVuZ3RoIiwidXBkYXRlZCIsImRlbGV0ZWQiLCJhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyIsImdlbmVyYXRlRGlmZkZpbGVzIiwibW9kZSIsIndyaXRlRmlsZVN5bmMiLCJzdHJpbmdpZnkiLCJlbmNvZGluZyIsImZsYWciLCJmb3JFYWNoIiwiZGlmZmVkQW1lbmRtZW50IiwiZ2VuZXJhdGVTaW5nbGVEaWZmZWRBbWVuZG1lbnQiLCJuZXdBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudCIsImZpbGUiLCJhbWVuZG1lbnQiLCJkYXRhIiwicHVzaCIsImRpZmZlZERhdGEiLCJzaGlmdCIsInNob3J0RGlyIiwicG9wIiwibWtkaXJTeW5jIiwicmVjdXJzaXZlIiwicmVwbGFjZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2RpZmZfYW1lbmRlbWVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgeyBkZXRhaWxlZERpZmYgfSBmcm9tIFwiZGVlcC1vYmplY3QtZGlmZlwiXG5pbXBvcnQgeyBkYXRhc2V0cywgRGF0YXNldFN0cnVjdHVyZSB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQge1xuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuY29uc3QgZGlmZmVkQW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5jb25zdCBuZXdBbWVuZG1lbnRzOiBBcnJheTxhbnk+ID0gW11cblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICB7XG4gICAgYWxpYXM6IFwibVwiLFxuICAgIGhlbHA6IFwiRGlmZiBtb2Rlcy5cIixcbiAgICBuYW1lOiBcIm1vZGVcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwibWVyZ2VkXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwicFwiLFxuICAgIGhlbHA6IFwiRGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHByZXZpb3VzIGR1bXAgb2YgYW1lbmRtZW50c1wiLFxuICAgIG5hbWU6IFwicHJldmlvdXNcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJvXCIsXG4gICAgaGVscDogXCJPdXRwdXQgZGlyZWN0b3J5IGZvciBkaWZmIGZpbGVzXCIsXG4gICAgbmFtZTogXCJvdXRwdXRcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiLi9kaWZmX291dHB1dHMvXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbmZ1bmN0aW9uIGRpZmZBbWVuZGVtZW50cyhkYXRhRGlyOiBzdHJpbmcpIHtcbiAgaWYgKCFvcHRpb25zLnByZXZpb3VzKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiTm8gcHJldmlvdXMgZGF0YSBmb2xkZXIgc3BlY2lmaWVkLiBZb3UgbXVzdCBwcm92aWRlIG9uZSB3aXRoIHRoZSAtcCBvciAtLXByZXZpb3VzIG9wdGlvbi4gRXhpdGluZy4uLlwiLFxuICAgIClcbiAgICBwcm9jZXNzLmV4aXQoKVxuICB9XG5cbiAgaWYgKCFmcy5leGlzdHNTeW5jKG9wdGlvbnMub3V0cHV0KSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIlRoZSBvdXRwdXQgZGlyIGRvZXMgbm90IGV4aXN0cy4gWW91IG11c3QgcHJvdmlkZSBhbiBleGlzdGluZyBkaXJlY3RvcnkuIERlZmF1bHQgZGlyZWN0b3J5IGlzIC4vZGlmZl9vdXRwdXRzL1wiLFxuICAgIClcbiAgICBwcm9jZXNzLmV4aXQoKVxuICB9XG5cbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOiB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgRGlmZmluZyAke29yaWdpbmFsSnNvbkRpcn0gZm9sZGVyLi4uYClcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKG9yaWdpbmFsSnNvbkRpcikpIHtcbiAgICAgICAgICBjb25zdCBuZXdGaWxlUGF0aCA9XG4gICAgICAgICAgICBvcmlnaW5hbEpzb25EaXIgKyBcIi9cIiArIGFtZW5kZW1lbnRTcGxpdFBhdGguam9pbihcIi9cIilcbiAgICAgICAgICBjb25zdCBuZXdGaWxlID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIGZzLnJlYWRGaWxlU3luYyhuZXdGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSxcbiAgICAgICAgICApXG5cbiAgICAgICAgICBjb25zdCBvbGRGaWxlUGF0aCA9XG4gICAgICAgICAgICBvcHRpb25zLnByZXZpb3VzICtcbiAgICAgICAgICAgIGRhdGFzZXQuZmlsZW5hbWUgK1xuICAgICAgICAgICAgXCIvXCIgK1xuICAgICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVFeGlzdHMgPSBmcy5leGlzdHNTeW5jKG9sZEZpbGVQYXRoKVxuICAgICAgICAgIGlmICghb2xkRmlsZUV4aXN0cykge1xuICAgICAgICAgICAgLy8gSWYgZmlsZSBmb3VuZCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgcHJldmlvdXMgZHVtcFxuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBcIkZpbGUgZGlkIG5vdCBleGlzdHMgcHJldmlvdXNseS4gR3Vlc3NpbmcgaXQncyBhIG5ldyBhbWVuZG1lbnQuIEFkZGluZyB0byB0aGUgZGlmZiBsaXN0IGZvciBuZXcgb2JqZWN0c1wiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yTmV3QW1lbmRtZW50cyhuZXdGaWxlLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBGaWxlIGFscmVhZHkgZXhpc3RlZCBpbiBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgbGV0IG9sZEZpbGU6IEpTT04gPSBKU09OLnBhcnNlKFwie31cIilcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gR2F0aGVyIGRhdGEgb2YgdGhlIGZpbGUgYW5kIHJldHJhbnNjcmlwdCBhcyBhIEpzb24gb2JqZWN0XG4gICAgICAgICAgICBvbGRGaWxlID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMob2xkRmlsZVBhdGgpLnRvTG9jYWxlU3RyaW5nKCkpXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gU2tpcCB0aGUgcHJvY2VzcyB0byB0aGUgbmV4dCBpdGVyYXRpb24gaW4gY2FzZSBvZiBjb3JydXB0IEpTT04gZGF0YVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgZGlmZiBiZWV0d2VlbiB0aGUgdHdvIEpTT04gb2JqZWN0cyAob2xkICYgbmV3IGR1bXApXG4gICAgICAgICAgY29uc3QgZGlmZjogYW55ID0gZGV0YWlsZWREaWZmKG9sZEZpbGUsIG5ld0ZpbGUpXG5cbiAgICAgICAgICAvLyBJZiBubyBjaGFuZ2VzIGJlZXR3ZWVuIHRoZSB0d28gZHVtcHNcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkaWZmLmFkZGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYudXBkYXRlZCkubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkaWZmLmRlbGV0ZWQpLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gU2tpcCB0byBuZXh0IGl0ZXJhdGlvbiBhcyB0aGVyZSBpcyBubyBuZWVkIHRvIGdlbmVyYXRlIGEgZmlsZVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkNoYW5nZXMgZm91bmQgIVwiKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZiwgYW1lbmRlbWVudFNwbGl0UGF0aClcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBvdXRwdXQocylcIilcbiAgICB9XG5cbiAgICBnZW5lcmF0ZURpZmZGaWxlcygpXG4gIH1cbn1cblxuLyoqXG4gKiBHZW5lcmFsIHByb2Nlc3MgZm9yIG91dHB1dCBvZiBkaWZmcy5cbiAqIFRoZSBzY3JpcHQgaGFuZGxlcyB0d28gZGlmZmVyZW50IG1vZGVzIDpcbiAqIC0gbWVyZ2VkIDogV2lsbCBvdXRwdXQgYSBzaW5nbGUgZmlsZSBmb3IgbmV3IGFtZW5kZW1lbnRzIGFuZCBhIHNpbmdsZSBmaWxlXG4gKiAgICAgICAgICAgIGZvciB1cGRhdGVkIGFtZW5kZW1lbnRzXG4gKiAtIHNwbGl0dGVkIDogV2lsbCBvdXRwdXQgYSBzaW5nbGUgZmlsZSBmb3IgZWFjaCBhbWVuZG1lbnRzLCBlaXRoZXIgaXRzIG5ldyBvciB1cGRhdGVkLlxuICpcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVEaWZmRmlsZXMoKSB7XG4gIC8vIEhhbmRsZXMgbWVyZ2VkIG1vZGVcbiAgaWYgKG9wdGlvbnMubW9kZSA9PT0gXCJtZXJnZWRcIikge1xuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBtZXJnZWQgZmlsZXNcIilcbiAgICB9XG5cbiAgICBpZiAoZGlmZmVkQW1lbmRtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBkaWZmZWQgYW1lbmRtZW50cyBmaWxlc1wiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX2RpZmZlZC5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIGRpZmYgaW4gdGhlIGFscmVhZHkgZXhpc3RpbmcgYW1lbmRtZW50c1wiKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuZXdBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG5ldyBhbWVuZG1lbnRzIGZpbGVcIilcbiAgICAgIH1cbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgIG9wdGlvbnMub3V0cHV0ICsgXCJhbWVuZGVtZW50c19YVl9uZXcuanNvblwiLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShuZXdBbWVuZG1lbnRzKSxcbiAgICAgICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJObyBuZXcgYW1lbmRlbWVudC4gU2tpcHBpbmcgZmlsZSBnZW5lcmF0aW9uXCIpXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKG9wdGlvbnMubW9kZSA9PT0gXCJzcGxpdHRlZFwiKSB7XG4gICAgLy8gSGFuZGxlcyBzcGxpdHRlZCBtb2RlXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIHNlcGFyYXRlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3MgdGhlIGNvcHkgYWN0aW9uIG9mIHRoZSBuZXcgYW5kIGRpZmZlZCBhbWVuZG1lbnRzXG4gICAgICovXG5cbiAgICBkaWZmZWRBbWVuZG1lbnRzLmZvckVhY2goKGRpZmZlZEFtZW5kbWVudDogYW55KSA9PiB7XG4gICAgICBnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudChkaWZmZWRBbWVuZG1lbnQpXG4gICAgfSlcblxuICAgIG5ld0FtZW5kbWVudHMuZm9yRWFjaCgobmV3QW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50KG5ld0FtZW5kbWVudClcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJVbmtub3duIG91dHB1dCBtb2RlLiBBYm9ydGluZy4uLlwiKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cbn1cblxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IG5ldyBhbWVuZG1lbnRzIGZpbGVzXG5mdW5jdGlvbiBhZGRUb1F1ZXVlRm9yTmV3QW1lbmRtZW50cyhmaWxlOiBhbnksIHBhdGg6IGFueSk6IHZvaWQge1xuICBjb25zdCBhbWVuZG1lbnQ6IGFueSA9IHtcbiAgICBwYXRoOiBwYXRoLFxuICAgIGRhdGE6IGZpbGUsXG4gIH1cbiAgbmV3QW1lbmRtZW50cy5wdXNoKGFtZW5kbWVudClcbn1cbi8vIFB1c2hlcyBhbiBhbWVuZG1lbnQgdG8gdGhlIHF1ZXVlIHRoYXQgd2lsbCBiZSBwcm9jZXNzZWQgdG8gY29weSB1cGRhdGVkIGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzKGRpZmZlZERhdGE6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZGlmZmVkRGF0YSxcbiAgfVxuICBkaWZmZWRBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBuZXcgYW1lbmRlbWVudFxuZnVuY3Rpb24gZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50OiB7XG4gIHBhdGg6IEFycmF5PHN0cmluZz5cbiAgZGF0YTogYW55XG59KSB7XG4gIG5ld0FtZW5kbWVudC5wYXRoLnNoaWZ0KClcblxuICBjb25zdCBzaG9ydERpcjogQXJyYXk8YW55PiA9IFsuLi5uZXdBbWVuZG1lbnQucGF0aF1cbiAgc2hvcnREaXIucG9wKClcbiAgY29uc29sZS5sb2cob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSlcbiAgZnMubWtkaXJTeW5jKG9wdGlvbnMub3V0cHV0ICsgc2hvcnREaXIuam9pbihcIi9cIiksIHtcbiAgICByZWN1cnNpdmU6IHRydWUsXG4gIH0pXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgKyBuZXdBbWVuZG1lbnQucGF0aC5qb2luKFwiL1wiKS5yZXBsYWNlKC8oXFwuanNvbikvLCBcIi5uZXckMVwiKSxcbiAgICBKU09OLnN0cmluZ2lmeShuZXdBbWVuZG1lbnQuZGF0YSksXG4gICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gIClcbn1cblxuLy8gZ2VuZXJhdGVzIGEgZmlsZSB3aXRoIGEgY29weSBvZiB0aGUgbW9kaWZpZWQgZGF0YSBvZiB0aGUgcHJldmlvdXNseSBleGlzdGluZyBhbWVuZG1lbnQ7XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudChkaWZmZWRBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgZGlmZmVkQW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLmRpZmZlZEFtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcblxuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIG9wdGlvbnMub3V0cHV0ICtcbiAgICAgIGRpZmZlZEFtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLmRpZmYkMVwiKSxcbiAgICBKU09OLnN0cmluZ2lmeShkaWZmZWRBbWVuZG1lbnQuZGF0YSksXG4gICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gIClcbn1cblxuZGlmZkFtZW5kZW1lbnRzKG9wdGlvbnMuZGF0YURpcilcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsZUFBZSxNQUFNLG1CQUFtQjtBQUMvQyxPQUFPQyxFQUFFLE1BQU0sVUFBVTtBQUN6QixPQUFPQyxJQUFJLE1BQU0sTUFBTTtBQUN2QixTQUFTQyxZQUFZLFFBQVEsa0JBQWtCO0FBQUEsU0FDdENDLFFBQVEsRUFBRUMsZ0JBQWdCO0FBQUEsU0FDMUJDLE9BQU87QUFB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QUFDYyxHQUFHLENBQUNsQixPQUFPLENBQUNTLE1BQU0sR0FBRytDLFFBQVEsQ0FBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNoRGpDLEVBQUUsQ0FBQzRFLFNBQVMsQ0FBQzFELE9BQU8sQ0FBQ1MsTUFBTSxHQUFHK0MsUUFBUSxDQUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ2hENEMsU0FBUyxFQUFFO0VBQ2IsQ0FBQyxDQUFDO0VBQ0Y3RSxFQUFFLENBQUMyRCxhQUFhLENBQ2R6QyxPQUFPLENBQUNTLE1BQU0sR0FBR3VDLFlBQVksQ0FBQ2pFLElBQUksQ0FBQ2dDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzZDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQzFFdEMsSUFBSSxDQUFDb0IsU0FBUyxDQUFDTSxZQUFZLENBQUNJLElBQUksQ0FBQyxFQUNqQztJQUFFVCxRQUFRLEVBQUUsTUFBTTtJQUFFQyxJQUFJLEVBQUU7RUFBSSxDQUNoQyxDQUFDO0FBQ0g7O0FBRUE7QUFDQSxTQUFTRyw2QkFBNkJBLENBQUNELGVBR3RDLEVBQUU7RUFDREEsZUFBZSxDQUFDL0QsSUFBSSxDQUFDd0UsS0FBSyxDQUFDLENBQUM7RUFFNUIsTUFBTUMsUUFBb0IsR0FBRyxDQUFDLEdBQUdWLGVBQWUsQ0FBQy9ELElBQUksQ0FBQztFQUN0RHlFLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDLENBQUM7RUFDZDNFLEVBQUUsQ0FBQzRFLFNBQVMsQ0FBQzFELE9BQU8sQ0FBQ1MsTUFBTSxHQUFHK0MsUUFBUSxDQUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ2hENEMsU0FBUyxFQUFFO0VBQ2IsQ0FBQyxDQUFDO0VBRUY3RSxFQUFFLENBQUMyRCxhQUFhLENBQ2R6QyxPQUFPLENBQUNTLE1BQU0sR0FDWnFDLGVBQWUsQ0FBQy9ELElBQUksQ0FBQ2dDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzZDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEVBQy9EdEMsSUFBSSxDQUFDb0IsU0FBUyxDQUFDSSxlQUFlLENBQUNNLElBQUksQ0FBQyxFQUNwQztJQUFFVCxRQUFRLEVBQUUsTUFBTTtJQUFFQyxJQUFJLEVBQUU7RUFBSSxDQUNoQyxDQUFDO0FBQ0g7QUFFQTNDLGVBQWUsQ0FBQ0QsT0FBTyxDQUFDRSxPQUFPLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=