@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.
- package/README.md +8 -1
- package/lib/amendements-CN7bRFdP.js +259 -0
- package/lib/amendements-CN7bRFdP.js.map +1 -0
- package/lib/amendements-Cg1lyCBp.js +735 -0
- package/lib/amendements-Cg1lyCBp.js.map +1 -0
- package/lib/api.d.ts +1 -0
- package/lib/api.d.ts.map +1 -0
- package/lib/cleaners/actes_legislatifs.d.ts +1 -0
- package/lib/cleaners/actes_legislatifs.d.ts.map +1 -0
- package/lib/cleaners/acteurs.d.ts +1 -0
- package/lib/cleaners/acteurs.d.ts.map +1 -0
- package/lib/cleaners/amendements.d.ts +1 -0
- package/lib/cleaners/amendements.d.ts.map +1 -0
- package/lib/cleaners/debats.d.ts +1 -0
- package/lib/cleaners/debats.d.ts.map +1 -0
- package/lib/cleaners/documents.d.ts +1 -0
- package/lib/cleaners/documents.d.ts.map +1 -0
- package/lib/cleaners/dossiers_legislatifs.d.ts +1 -0
- package/lib/cleaners/dossiers_legislatifs.d.ts.map +1 -0
- package/lib/cleaners/index.d.ts +10 -9
- package/lib/cleaners/index.d.ts.map +1 -0
- package/lib/cleaners/organes.d.ts +1 -0
- package/lib/cleaners/organes.d.ts.map +1 -0
- package/lib/cleaners/questions.d.ts +1 -0
- package/lib/cleaners/questions.d.ts.map +1 -0
- package/lib/cleaners/reunions.d.ts +1 -0
- package/lib/cleaners/reunions.d.ts.map +1 -0
- package/lib/cleaners/scrutins.d.ts +1 -0
- package/lib/cleaners/scrutins.d.ts.map +1 -0
- package/lib/cleaners/xml.d.ts +1 -0
- package/lib/cleaners/xml.d.ts.map +1 -0
- package/lib/cleaners.js +1138 -0
- package/lib/cleaners.js.map +1 -0
- package/lib/datasets.d.ts +4 -3
- package/lib/datasets.d.ts.map +1 -0
- package/lib/dates.d.ts +1 -0
- package/lib/dates.d.ts.map +1 -0
- package/lib/debats-BwZYgzXe.js +3978 -0
- package/lib/debats-BwZYgzXe.js.map +1 -0
- package/lib/dossiers_legislatifs.d.ts +3 -2
- package/lib/dossiers_legislatifs.d.ts.map +1 -0
- package/lib/file_systems.d.ts +1 -0
- package/lib/file_systems.d.ts.map +1 -0
- package/lib/git.d.ts +1 -0
- package/lib/git.d.ts.map +1 -0
- package/lib/index.d.ts +18 -22
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +1916 -285
- package/lib/index.js.map +1 -0
- package/lib/inserters.d.ts +6 -5
- package/lib/inserters.d.ts.map +1 -0
- package/lib/loaders.d.ts +13 -12
- package/lib/loaders.d.ts.map +1 -0
- package/lib/loaders.js +812 -1516
- package/lib/loaders.js.map +1 -0
- package/lib/logger.d.ts +1 -0
- package/lib/logger.d.ts.map +1 -0
- package/lib/organes.d.ts +2 -1
- package/lib/organes.d.ts.map +1 -0
- package/lib/parse-CzW8NHW5.js +2850 -0
- package/lib/parse-CzW8NHW5.js.map +1 -0
- package/lib/parsers/index.d.ts +3 -3
- package/lib/parsers/index.d.ts.map +1 -0
- package/lib/parsers/plf.d.ts +2 -0
- package/lib/parsers/plf.d.ts.map +1 -0
- package/lib/parsers/recherche_amendements.d.ts +3 -2
- package/lib/parsers/recherche_amendements.d.ts.map +1 -0
- package/lib/parsers/textes_lois.d.ts +2 -23
- package/lib/parsers/textes_lois.d.ts.map +1 -0
- package/lib/parsers.js +393 -0
- package/lib/parsers.js.map +1 -0
- package/lib/raw_types/acteurs_et_organes.d.ts +1 -0
- package/lib/raw_types/acteurs_et_organes.d.ts.map +1 -0
- package/lib/raw_types/agendas.d.ts +1 -0
- package/lib/raw_types/agendas.d.ts.map +1 -0
- package/lib/raw_types/amendements.d.ts +1 -0
- package/lib/raw_types/amendements.d.ts.map +1 -0
- package/lib/raw_types/debats.d.ts +3 -2
- package/lib/raw_types/debats.d.ts.map +1 -0
- package/lib/raw_types/dossiers_legislatifs.d.ts +2 -1
- package/lib/raw_types/dossiers_legislatifs.d.ts.map +1 -0
- package/lib/raw_types/questions.d.ts +1 -0
- package/lib/raw_types/questions.d.ts.map +1 -0
- package/lib/raw_types/scrutins.d.ts +1 -0
- package/lib/raw_types/scrutins.d.ts.map +1 -0
- package/lib/schemas/acteurs_et_organes.d.json +982 -0
- package/lib/schemas/acteurs_et_organes.json +1166 -0
- package/lib/schemas/agendas.d.json +1561 -0
- package/lib/schemas/agendas.json +1745 -0
- package/lib/schemas/amendements.d.json +1901 -0
- package/lib/schemas/amendements.json +2085 -0
- package/lib/schemas/debats.d.json +623 -0
- package/lib/schemas/debats.json +842 -0
- package/lib/schemas/dossiers_legislatifs.d.json +3690 -0
- package/lib/schemas/dossiers_legislatifs.json +3874 -0
- package/lib/schemas/legislatures.d.json +17 -0
- package/lib/schemas/legislatures.json +17 -0
- package/lib/schemas/questions.d.json +520 -0
- package/lib/schemas/questions.json +704 -0
- package/lib/schemas/scrutins.d.json +517 -0
- package/lib/schemas/scrutins.json +701 -0
- package/lib/scripts/add_links_to_documents.d.ts +2 -0
- package/lib/scripts/add_links_to_documents.d.ts.map +1 -0
- package/lib/scripts/clean_reorganized_data.d.ts +1 -0
- package/lib/scripts/clean_reorganized_data.d.ts.map +1 -0
- package/lib/scripts/copy-schemas.d.ts +2 -0
- package/lib/scripts/copy-schemas.d.ts.map +1 -0
- package/lib/scripts/diff_amendements.d.ts +1 -0
- package/lib/scripts/diff_amendements.d.ts.map +1 -0
- package/lib/scripts/document_dossiers_legislatifs.d.ts +1 -0
- package/lib/scripts/document_dossiers_legislatifs.d.ts.map +1 -0
- package/lib/scripts/generate-json-schemas.d.ts +2 -0
- package/lib/scripts/generate-json-schemas.d.ts.map +1 -0
- package/lib/scripts/get_today_reunions.d.ts +1 -0
- package/lib/scripts/get_today_reunions.d.ts.map +1 -0
- package/lib/scripts/merge_scrutins.d.ts +1 -0
- package/lib/scripts/merge_scrutins.d.ts.map +1 -0
- package/lib/scripts/process_open_dataset.d.ts +1 -0
- package/lib/scripts/process_open_dataset.d.ts.map +1 -0
- package/lib/scripts/raw_types_from_amendements.d.ts +1 -0
- package/lib/scripts/raw_types_from_amendements.d.ts.map +1 -0
- package/lib/scripts/reorganize_data.d.ts +1 -0
- package/lib/scripts/reorganize_data.d.ts.map +1 -0
- package/lib/scripts/retrieve_deputes_photos.d.ts +2 -1
- package/lib/scripts/retrieve_deputes_photos.d.ts.map +1 -0
- package/lib/scripts/retrieve_documents.d.ts +1 -0
- package/lib/scripts/retrieve_documents.d.ts.map +1 -0
- package/lib/scripts/retrieve_open_data.d.ts +1 -0
- package/lib/scripts/retrieve_open_data.d.ts.map +1 -0
- package/lib/scripts/retrieve_pending_amendments.d.ts +1 -0
- package/lib/scripts/retrieve_pending_amendments.d.ts.map +1 -0
- package/lib/scripts/retrieve_senateurs_photos.d.ts +1 -0
- package/lib/scripts/retrieve_senateurs_photos.d.ts.map +1 -0
- package/lib/scripts/shared/cli_helpers.d.ts +1 -0
- package/lib/scripts/shared/cli_helpers.d.ts.map +1 -0
- package/lib/scripts/test_iter_load.d.ts +1 -0
- package/lib/scripts/test_iter_load.d.ts.map +1 -0
- package/lib/scripts/test_load.d.ts +1 -0
- package/lib/scripts/test_load.d.ts.map +1 -0
- package/lib/scripts/test_load_big_files.d.ts +1 -0
- package/lib/scripts/test_load_big_files.d.ts.map +1 -0
- package/lib/scripts/validate_json.d.ts +1 -0
- package/lib/scripts/validate_json.d.ts.map +1 -0
- package/lib/shared_types/codes_actes.d.ts +1 -0
- package/lib/shared_types/codes_actes.d.ts.map +1 -0
- package/lib/strings.d.ts +1 -0
- package/lib/strings.d.ts.map +1 -0
- package/lib/types/acteurs_et_organes.d.ts +341 -0
- package/lib/types/acteurs_et_organes.d.ts.map +1 -0
- package/lib/types/agendas.d.ts +237 -10
- package/lib/types/agendas.d.ts.map +1 -0
- package/lib/types/amendements.d.ts +277 -1
- package/lib/types/amendements.d.ts.map +1 -0
- package/lib/types/debats.d.ts +53 -2
- package/lib/types/debats.d.ts.map +1 -0
- package/lib/types/dossiers_legislatifs.d.ts +404 -9
- package/lib/types/dossiers_legislatifs.d.ts.map +1 -0
- package/lib/types/legislatures.d.ts +1 -0
- package/lib/types/legislatures.d.ts.map +1 -0
- package/lib/types/questions.d.ts +100 -2
- package/lib/types/questions.d.ts.map +1 -0
- package/lib/types/scrutins.d.ts +102 -0
- package/lib/types/scrutins.d.ts.map +1 -0
- package/lib/urls.d.ts +3 -2
- package/lib/urls.d.ts.map +1 -0
- package/package.json +31 -95
- package/lib/api.js +0 -52
- package/lib/api.mjs +0 -45
- package/lib/bugs/acteur-00010/plugin.test.d.ts +0 -1
- package/lib/bugs/acteur-00010/plugin.test.js +0 -90
- package/lib/bugs/acteur-00010/plugin.test.mjs +0 -33
- package/lib/bugs/acteur-00010.d.ts +0 -7
- package/lib/bugs/acteur-00010.js +0 -116
- package/lib/bugs/acteur-00010.mjs +0 -26
- package/lib/bugs/agenda-00002/plugin.test.d.ts +0 -1
- package/lib/bugs/agenda-00002/plugin.test.js +0 -124
- package/lib/bugs/agenda-00002/plugin.test.mjs +0 -50
- package/lib/bugs/agenda-00002.d.ts +0 -15
- package/lib/bugs/agenda-00002.js +0 -406
- package/lib/bugs/agenda-00002.mjs +0 -172
- package/lib/bugs/agenda-00008/plugin.test.d.ts +0 -1
- package/lib/bugs/agenda-00008/plugin.test.js +0 -92
- package/lib/bugs/agenda-00008/plugin.test.mjs +0 -31
- package/lib/bugs/agenda-00008.d.ts +0 -7
- package/lib/bugs/agenda-00008.js +0 -123
- package/lib/bugs/agenda-00008.mjs +0 -26
- package/lib/bugs/agenda-00011/plugin.test.d.ts +0 -1
- package/lib/bugs/agenda-00011/plugin.test.js +0 -263
- package/lib/bugs/agenda-00011/plugin.test.mjs +0 -152
- package/lib/bugs/agenda-00011.d.ts +0 -16
- package/lib/bugs/agenda-00011.js +0 -333
- package/lib/bugs/agenda-00011.mjs +0 -125
- package/lib/bugs.d.ts +0 -21
- package/lib/bugs.js +0 -452
- package/lib/bugs.mjs +0 -70
- package/lib/cleaners/actes_legislatifs.js +0 -315
- package/lib/cleaners/actes_legislatifs.mjs +0 -253
- package/lib/cleaners/acteurs.js +0 -265
- package/lib/cleaners/acteurs.mjs +0 -180
- package/lib/cleaners/amendements.js +0 -294
- package/lib/cleaners/amendements.mjs +0 -227
- package/lib/cleaners/debats.js +0 -12
- package/lib/cleaners/debats.mjs +0 -5
- package/lib/cleaners/documents.js +0 -205
- package/lib/cleaners/documents.mjs +0 -133
- package/lib/cleaners/dossiers_legislatifs.js +0 -131
- package/lib/cleaners/dossiers_legislatifs.mjs +0 -70
- package/lib/cleaners/index.js +0 -70
- package/lib/cleaners/index.mjs +0 -10
- package/lib/cleaners/organes.js +0 -65
- package/lib/cleaners/organes.mjs +0 -48
- package/lib/cleaners/questions.js +0 -12
- package/lib/cleaners/questions.mjs +0 -5
- package/lib/cleaners/reunions.js +0 -312
- package/lib/cleaners/reunions.mjs +0 -255
- package/lib/cleaners/scrutins.js +0 -340
- package/lib/cleaners/scrutins.mjs +0 -221
- package/lib/cleaners/xml.js +0 -74
- package/lib/cleaners/xml.mjs +0 -59
- package/lib/datasets.js +0 -837
- package/lib/datasets.mjs +0 -755
- package/lib/dates.js +0 -124
- package/lib/dates.mjs +0 -100
- package/lib/dossiers_legislatifs.js +0 -346
- package/lib/dossiers_legislatifs.mjs +0 -208
- package/lib/file_systems.js +0 -162
- package/lib/file_systems.mjs +0 -62
- package/lib/git.js +0 -223
- package/lib/git.mjs +0 -151
- package/lib/index.mjs +0 -17
- package/lib/inserters.js +0 -521
- package/lib/inserters.mjs +0 -337
- package/lib/loaders.mjs +0 -886
- package/lib/logger.js +0 -35
- package/lib/logger.mjs +0 -26
- package/lib/organes.js +0 -22
- package/lib/organes.mjs +0 -15
- package/lib/parsers/documents.d.ts +0 -62
- package/lib/parsers/documents.js +0 -453
- package/lib/parsers/documents.mjs +0 -370
- package/lib/parsers/index.js +0 -40
- package/lib/parsers/index.mjs +0 -4
- package/lib/parsers/recherche_amendements.js +0 -403
- package/lib/parsers/recherche_amendements.mjs +0 -167
- package/lib/parsers/textes_lois.js +0 -307
- package/lib/parsers/textes_lois.mjs +0 -264
- package/lib/raw_types/acteurs_et_organes.js +0 -1215
- package/lib/raw_types/acteurs_et_organes.mjs +0 -1148
- package/lib/raw_types/agendas.js +0 -777
- package/lib/raw_types/agendas.mjs +0 -724
- package/lib/raw_types/amendements.js +0 -1052
- package/lib/raw_types/amendements.mjs +0 -993
- package/lib/raw_types/debats.js +0 -630
- package/lib/raw_types/debats.mjs +0 -573
- package/lib/raw_types/dossiers_legislatifs.js +0 -1529
- package/lib/raw_types/dossiers_legislatifs.mjs +0 -1471
- package/lib/raw_types/questions.js +0 -469
- package/lib/raw_types/questions.mjs +0 -416
- package/lib/raw_types/scrutins.js +0 -651
- package/lib/raw_types/scrutins.mjs +0 -598
- package/lib/schemas/acteur/Acteur.json +0 -56
- package/lib/schemas/acteur/AdresseElectronique.json +0 -52
- package/lib/schemas/acteur/AdressePostale.json +0 -75
- package/lib/schemas/acteur/Civ.json +0 -14
- package/lib/schemas/acteur/Collaborateur.json +0 -29
- package/lib/schemas/acteur/EtatCivil.json +0 -51
- package/lib/schemas/acteur/Ident.json +0 -40
- package/lib/schemas/acteur/Lieu.json +0 -66
- package/lib/schemas/acteur/Mandat.json +0 -192
- package/lib/schemas/acteur/Profession.json +0 -46
- package/lib/schemas/agenda/Agenda.json +0 -318
- package/lib/schemas/agenda/CycleDeVie.json +0 -45
- package/lib/schemas/agenda/PointOdj.json +0 -82
- package/lib/schemas/amendement/Amendement.json +0 -246
- package/lib/schemas/amendement/Diff.json +0 -25
- package/lib/schemas/amendement/DispositifAmdtCredit.json +0 -85
- package/lib/schemas/amendement/Identifiant.json +0 -62
- package/lib/schemas/amendement/PointeurFragmentTexte.json +0 -127
- package/lib/schemas/amendement/Representation.json +0 -67
- package/lib/schemas/amendement/Total.json +0 -26
- package/lib/schemas/converted_from_type/acteurs_et_organes.json +0 -666
- package/lib/schemas/converted_from_type/agendas.json +0 -1100
- package/lib/schemas/converted_from_type/amendements.json +0 -3191
- package/lib/schemas/converted_from_type/debats.json +0 -682
- package/lib/schemas/converted_from_type/deputes.json +0 -26
- package/lib/schemas/converted_from_type/dossiers_legislatifs.json +0 -2918
- package/lib/schemas/converted_from_type/legislatures.json +0 -16
- package/lib/schemas/converted_from_type/questions.json +0 -328
- package/lib/schemas/converted_from_type/scrutins.json +0 -393
- package/lib/schemas/debat/Contenu.json +0 -75
- package/lib/schemas/debat/Debat.json +0 -40
- package/lib/schemas/debat/Metadonnees.json +0 -75
- package/lib/schemas/debat/Orateur.json +0 -60
- package/lib/schemas/debat/Point.json +0 -169
- package/lib/schemas/debat/Sommaire.json +0 -71
- package/lib/schemas/debat/SommaireElement.json +0 -108
- package/lib/schemas/debat/Texte.json +0 -34
- package/lib/schemas/document/CodeLibelle.json +0 -25
- package/lib/schemas/document/Document.json +0 -385
- package/lib/schemas/document/Indexation.json +0 -38
- package/lib/schemas/dossier/ActeLegislatif.json +0 -211
- package/lib/schemas/dossier/ActeLegislatifBase.json +0 -62
- package/lib/schemas/dossier/Agenda.json +0 -23
- package/lib/schemas/dossier/ConseilConstitutionnel.json +0 -35
- package/lib/schemas/dossier/Decision.json +0 -25
- package/lib/schemas/dossier/Dossier.json +0 -124
- package/lib/schemas/dossier/EtudeImpact.json +0 -29
- package/lib/schemas/dossier/EtudePlf.json +0 -105
- package/lib/schemas/dossier/Europe.json +0 -42
- package/lib/schemas/dossier/FamCodeLibelle.json +0 -25
- package/lib/schemas/dossier/InfoJO.json +0 -23
- package/lib/schemas/dossier/Initiateur.json +0 -36
- package/lib/schemas/dossier/Motion.json +0 -27
- package/lib/schemas/dossier/Promulgation.json +0 -62
- package/lib/schemas/dossier/Rapporteur.json +0 -36
- package/lib/schemas/dossier/Texte.json +0 -47
- package/lib/schemas/organe/CodeTypeOrgane.json +0 -43
- package/lib/schemas/organe/Organe.json +0 -136
- package/lib/schemas/organe/ViMoDe.json +0 -28
- package/lib/schemas/question/Auteur.json +0 -58
- package/lib/schemas/question/Cloture.json +0 -28
- package/lib/schemas/question/InfoJO.json +0 -40
- package/lib/schemas/question/MinAttribElement.json +0 -30
- package/lib/schemas/question/Question.json +0 -172
- package/lib/schemas/question/Renouvellement.json +0 -17
- package/lib/schemas/question/Signalement.json +0 -21
- package/lib/schemas/question/Texte.json +0 -24
- package/lib/schemas/scrutin/DecompteVoix.json +0 -35
- package/lib/schemas/scrutin/Dysfonctionnement.json +0 -50
- package/lib/schemas/scrutin/MiseAuPoint.json +0 -53
- package/lib/schemas/scrutin/OrganeVotant.json +0 -88
- package/lib/schemas/scrutin/Scrutin.json +0 -187
- package/lib/schemas/scrutin/Votant.json +0 -37
- package/lib/scripts/bugs_helper.d.ts +0 -13
- package/lib/scripts/bugs_helper.js +0 -595
- package/lib/scripts/bugs_helper.mjs +0 -251
- package/lib/scripts/clean_reorganized_data.js +0 -613
- package/lib/scripts/clean_reorganized_data.mjs +0 -276
- package/lib/scripts/diff_amendements.js +0 -249
- package/lib/scripts/diff_amendements.mjs +0 -202
- package/lib/scripts/document_dossiers_legislatifs.js +0 -655
- package/lib/scripts/document_dossiers_legislatifs.mjs +0 -414
- package/lib/scripts/get_today_reunions.js +0 -37
- package/lib/scripts/get_today_reunions.mjs +0 -31
- package/lib/scripts/merge_scrutins.js +0 -97
- package/lib/scripts/merge_scrutins.mjs +0 -47
- package/lib/scripts/parse_textes_lois.d.ts +0 -1
- package/lib/scripts/parse_textes_lois.js +0 -171
- package/lib/scripts/parse_textes_lois.mjs +0 -140
- package/lib/scripts/process_open_dataset.js +0 -301
- package/lib/scripts/process_open_dataset.mjs +0 -134
- package/lib/scripts/raw_types_from_amendements.js +0 -135
- package/lib/scripts/raw_types_from_amendements.mjs +0 -134
- package/lib/scripts/reorganize_data.js +0 -805
- package/lib/scripts/reorganize_data.mjs +0 -517
- package/lib/scripts/retrieve_deputes_photos.js +0 -310
- package/lib/scripts/retrieve_deputes_photos.mjs +0 -158
- package/lib/scripts/retrieve_documents.js +0 -547
- package/lib/scripts/retrieve_documents.mjs +0 -242
- package/lib/scripts/retrieve_open_data.js +0 -107
- package/lib/scripts/retrieve_open_data.mjs +0 -26
- package/lib/scripts/retrieve_pending_amendments.js +0 -206
- package/lib/scripts/retrieve_pending_amendments.mjs +0 -57
- package/lib/scripts/retrieve_senateurs_photos.js +0 -234
- package/lib/scripts/retrieve_senateurs_photos.mjs +0 -116
- package/lib/scripts/retrieve_textes_lois.d.ts +0 -1
- package/lib/scripts/retrieve_textes_lois.js +0 -240
- package/lib/scripts/retrieve_textes_lois.mjs +0 -85
- package/lib/scripts/shared/cli_helpers.js +0 -89
- package/lib/scripts/shared/cli_helpers.mjs +0 -81
- package/lib/scripts/test_iter_load.js +0 -155
- package/lib/scripts/test_iter_load.mjs +0 -72
- package/lib/scripts/test_load.js +0 -26
- package/lib/scripts/test_load.mjs +0 -16
- package/lib/scripts/test_load_big_files.js +0 -26
- package/lib/scripts/test_load_big_files.mjs +0 -16
- package/lib/scripts/validate_json.js +0 -353
- package/lib/scripts/validate_json.mjs +0 -184
- package/lib/shared_types/codes_actes.js +0 -231
- package/lib/shared_types/codes_actes.mjs +0 -224
- package/lib/strings.js +0 -16
- package/lib/strings.mjs +0 -7
- package/lib/types/acteurs_et_organes.js +0 -965
- package/lib/types/acteurs_et_organes.mjs +0 -906
- package/lib/types/agendas.js +0 -628
- package/lib/types/agendas.mjs +0 -575
- package/lib/types/amendements.js +0 -899
- package/lib/types/amendements.mjs +0 -842
- package/lib/types/debats.js +0 -619
- package/lib/types/debats.mjs +0 -562
- package/lib/types/dossiers_legislatifs.js +0 -1188
- package/lib/types/dossiers_legislatifs.mjs +0 -1130
- package/lib/types/legislatures.js +0 -17
- package/lib/types/legislatures.mjs +0 -10
- package/lib/types/questions.js +0 -454
- package/lib/types/questions.mjs +0 -401
- package/lib/types/scrutins.js +0 -556
- package/lib/types/scrutins.mjs +0 -503
- package/lib/urls.js +0 -325
- package/lib/urls.mjs +0 -258
|
@@ -1,301 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
-
require("core-js/modules/es.symbol.js");
|
|
5
|
-
require("core-js/modules/es.symbol.description.js");
|
|
6
|
-
require("core-js/modules/es.symbol.async-iterator.js");
|
|
7
|
-
require("core-js/modules/es.symbol.iterator.js");
|
|
8
|
-
require("core-js/modules/es.symbol.to-string-tag.js");
|
|
9
|
-
require("core-js/modules/es.array.for-each.js");
|
|
10
|
-
require("core-js/modules/es.array.from.js");
|
|
11
|
-
require("core-js/modules/es.array.is-array.js");
|
|
12
|
-
require("core-js/modules/es.array.reverse.js");
|
|
13
|
-
require("core-js/modules/es.array.slice.js");
|
|
14
|
-
require("core-js/modules/es.date.to-string.js");
|
|
15
|
-
require("core-js/modules/es.function.name.js");
|
|
16
|
-
require("core-js/modules/es.json.to-string-tag.js");
|
|
17
|
-
require("core-js/modules/es.math.to-string-tag.js");
|
|
18
|
-
require("core-js/modules/es.object.create.js");
|
|
19
|
-
require("core-js/modules/es.object.define-property.js");
|
|
20
|
-
require("core-js/modules/es.object.get-prototype-of.js");
|
|
21
|
-
require("core-js/modules/es.object.set-prototype-of.js");
|
|
22
|
-
require("core-js/modules/es.regexp.to-string.js");
|
|
23
|
-
require("core-js/modules/web.dom-collections.for-each.js");
|
|
24
|
-
Object.defineProperty(exports, "__esModule", {
|
|
25
|
-
value: true
|
|
26
|
-
});
|
|
27
|
-
exports.processDataset = processDataset;
|
|
28
|
-
require("core-js/modules/es.array.concat.js");
|
|
29
|
-
require("core-js/modules/es.array.iterator.js");
|
|
30
|
-
require("core-js/modules/es.array.join.js");
|
|
31
|
-
require("core-js/modules/es.date.to-json.js");
|
|
32
|
-
require("core-js/modules/es.object.keys.js");
|
|
33
|
-
require("core-js/modules/es.object.to-string.js");
|
|
34
|
-
require("core-js/modules/es.promise.js");
|
|
35
|
-
require("core-js/modules/es.regexp.exec.js");
|
|
36
|
-
require("core-js/modules/es.string.ends-with.js");
|
|
37
|
-
require("core-js/modules/es.string.iterator.js");
|
|
38
|
-
require("core-js/modules/es.string.replace.js");
|
|
39
|
-
require("core-js/modules/web.dom-collections.iterator.js");
|
|
40
|
-
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
41
|
-
var _path = _interopRequireDefault(require("path"));
|
|
42
|
-
var _stream = _interopRequireDefault(require("stream"));
|
|
43
|
-
var _nodeStreamZip = _interopRequireDefault(require("node-stream-zip"));
|
|
44
|
-
var _util = _interopRequireDefault(require("util"));
|
|
45
|
-
var _file_systems = require("../file_systems");
|
|
46
|
-
var _fastXmlParser = require("fast-xml-parser");
|
|
47
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
48
|
-
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 e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
49
|
-
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
50
|
-
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."); }
|
|
51
|
-
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
52
|
-
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
53
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, 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 o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
54
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
55
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
56
|
-
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
57
|
-
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
58
|
-
var pipeline = _util["default"].promisify(_stream["default"].pipeline);
|
|
59
|
-
|
|
60
|
-
// Function to fetch zip files with retry mechanism
|
|
61
|
-
function fetchZipFile(_x, _x2) {
|
|
62
|
-
return _fetchZipFile.apply(this, arguments);
|
|
63
|
-
}
|
|
64
|
-
function _fetchZipFile() {
|
|
65
|
-
_fetchZipFile = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(url, zipFilePath) {
|
|
66
|
-
var retries,
|
|
67
|
-
attempt,
|
|
68
|
-
response,
|
|
69
|
-
_args = arguments;
|
|
70
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
71
|
-
while (1) switch (_context.prev = _context.next) {
|
|
72
|
-
case 0:
|
|
73
|
-
retries = _args.length > 2 && _args[2] !== undefined ? _args[2] : 3;
|
|
74
|
-
attempt = 0;
|
|
75
|
-
case 2:
|
|
76
|
-
if (!(attempt < retries)) {
|
|
77
|
-
_context.next = 21;
|
|
78
|
-
break;
|
|
79
|
-
}
|
|
80
|
-
_context.next = 5;
|
|
81
|
-
return fetch(url);
|
|
82
|
-
case 5:
|
|
83
|
-
response = _context.sent;
|
|
84
|
-
if (!response.ok) {
|
|
85
|
-
_context.next = 12;
|
|
86
|
-
break;
|
|
87
|
-
}
|
|
88
|
-
_context.next = 9;
|
|
89
|
-
return pipeline(response.body, _fsExtra["default"].createWriteStream(zipFilePath));
|
|
90
|
-
case 9:
|
|
91
|
-
return _context.abrupt("return");
|
|
92
|
-
case 12:
|
|
93
|
-
if (!(attempt < retries - 1)) {
|
|
94
|
-
_context.next = 16;
|
|
95
|
-
break;
|
|
96
|
-
}
|
|
97
|
-
console.warn("Retrying fetch for ".concat(url, ": ").concat(response.statusText));
|
|
98
|
-
_context.next = 18;
|
|
99
|
-
break;
|
|
100
|
-
case 16:
|
|
101
|
-
console.error("Failed to fetch ".concat(url, " after ").concat(retries, " attempts"));
|
|
102
|
-
throw new Error("Fetch failed: ".concat(url));
|
|
103
|
-
case 18:
|
|
104
|
-
attempt++;
|
|
105
|
-
_context.next = 2;
|
|
106
|
-
break;
|
|
107
|
-
case 21:
|
|
108
|
-
case "end":
|
|
109
|
-
return _context.stop();
|
|
110
|
-
}
|
|
111
|
-
}, _callee);
|
|
112
|
-
}));
|
|
113
|
-
return _fetchZipFile.apply(this, arguments);
|
|
114
|
-
}
|
|
115
|
-
function extractZip(_x3, _x4) {
|
|
116
|
-
return _extractZip.apply(this, arguments);
|
|
117
|
-
}
|
|
118
|
-
function _extractZip() {
|
|
119
|
-
_extractZip = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(zipFilePath, outputDir) {
|
|
120
|
-
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
121
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
122
|
-
case 0:
|
|
123
|
-
return _context2.abrupt("return", new Promise(function (resolve, reject) {
|
|
124
|
-
var zip = new _nodeStreamZip["default"]({
|
|
125
|
-
file: zipFilePath,
|
|
126
|
-
storeEntries: true
|
|
127
|
-
});
|
|
128
|
-
zip.on("ready", function () {
|
|
129
|
-
zip.extract(null, outputDir, function (err) {
|
|
130
|
-
zip.close();
|
|
131
|
-
if (err) {
|
|
132
|
-
reject(err);
|
|
133
|
-
} else {
|
|
134
|
-
resolve();
|
|
135
|
-
}
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
}));
|
|
139
|
-
case 1:
|
|
140
|
-
case "end":
|
|
141
|
-
return _context2.stop();
|
|
142
|
-
}
|
|
143
|
-
}, _callee2);
|
|
144
|
-
}));
|
|
145
|
-
return _extractZip.apply(this, arguments);
|
|
146
|
-
}
|
|
147
|
-
function reindentJsonFiles(dataDirOrFilePath) {
|
|
148
|
-
if (_fsExtra["default"].statSync(dataDirOrFilePath).isDirectory()) {
|
|
149
|
-
var _iterator = _createForOfIteratorHelper((0, _file_systems.walkDir)(dataDirOrFilePath)),
|
|
150
|
-
_step;
|
|
151
|
-
try {
|
|
152
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
153
|
-
var dataFileSplitPath = _step.value;
|
|
154
|
-
var dataFilePath = _path["default"].join.apply(_path["default"], [dataDirOrFilePath].concat(_toConsumableArray(dataFileSplitPath)));
|
|
155
|
-
if (dataFilePath.endsWith(".json")) {
|
|
156
|
-
var data = JSON.parse(_fsExtra["default"].readFileSync(dataFilePath, {
|
|
157
|
-
encoding: "utf-8"
|
|
158
|
-
}));
|
|
159
|
-
_fsExtra["default"].writeFileSync(dataFilePath, JSON.stringify(data, null, 2));
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
} catch (err) {
|
|
163
|
-
_iterator.e(err);
|
|
164
|
-
} finally {
|
|
165
|
-
_iterator.f();
|
|
166
|
-
}
|
|
167
|
-
} else {
|
|
168
|
-
var _data = JSON.parse(_fsExtra["default"].readFileSync(dataDirOrFilePath, {
|
|
169
|
-
encoding: "utf-8"
|
|
170
|
-
}));
|
|
171
|
-
_fsExtra["default"].writeFileSync(dataDirOrFilePath, JSON.stringify(_data, null, 2));
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
var xmlParser = new _fastXmlParser.XMLParser({
|
|
175
|
-
ignoreDeclaration: true,
|
|
176
|
-
ignoreAttributes: false,
|
|
177
|
-
ignorePiTags: true,
|
|
178
|
-
attributeNamePrefix: "",
|
|
179
|
-
textNodeName: "_",
|
|
180
|
-
processEntities: false,
|
|
181
|
-
trimValues: true,
|
|
182
|
-
stopNodes: ["*.texte", "*.intitule"],
|
|
183
|
-
parseTagValue: false,
|
|
184
|
-
parseAttributeValue: false,
|
|
185
|
-
transformTagName: function transformTagName(tagName) {
|
|
186
|
-
return tagName === "Para" ? "para" : tagName;
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* Processes a dataset by fetching, unzipping, and converting files from XML to JSON format.
|
|
192
|
-
*
|
|
193
|
-
* @param {any} dataset - The dataset object containing metadata and processing instructions.
|
|
194
|
-
* @param {string} dataDir - The directory where the dataset files will be stored.
|
|
195
|
-
* @param {any} options - Options to control the processing behavior, such as fetching and silent mode.
|
|
196
|
-
* @returns {Promise<void>} A promise that resolves when the dataset processing is complete.
|
|
197
|
-
*/
|
|
198
|
-
function processDataset(_x5) {
|
|
199
|
-
return _processDataset.apply(this, arguments);
|
|
200
|
-
}
|
|
201
|
-
function _processDataset() {
|
|
202
|
-
_processDataset = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(args) {
|
|
203
|
-
var dataset, dataDir, options, zipFilePath, dataDirOrFilePath, _iterator2, _step2, _loop;
|
|
204
|
-
return _regeneratorRuntime().wrap(function _callee3$(_context4) {
|
|
205
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
206
|
-
case 0:
|
|
207
|
-
dataset = args.dataset, dataDir = args.dataDir, options = args.options;
|
|
208
|
-
zipFilePath = _path["default"].join(dataDir, "".concat(dataset.filename, ".zip"));
|
|
209
|
-
dataDirOrFilePath = _path["default"].join(dataDir, dataset.filename);
|
|
210
|
-
_fsExtra["default"].removeSync(dataDirOrFilePath);
|
|
211
|
-
if (!options.fetch) {
|
|
212
|
-
_context4.next = 8;
|
|
213
|
-
break;
|
|
214
|
-
}
|
|
215
|
-
// Fetch & save ZIP file.
|
|
216
|
-
if (!options.silent) {
|
|
217
|
-
console.log("Loading ".concat(dataset.title, ": ").concat(dataset.filename, ".zip"));
|
|
218
|
-
}
|
|
219
|
-
_context4.next = 8;
|
|
220
|
-
return fetchZipFile(dataset.url, zipFilePath);
|
|
221
|
-
case 8:
|
|
222
|
-
if (!options.silent) {
|
|
223
|
-
console.log("Unzipping ".concat(dataset.title, ": ").concat(dataset.filename, ".zip"));
|
|
224
|
-
}
|
|
225
|
-
_context4.next = 11;
|
|
226
|
-
return extractZip(zipFilePath, dataDir);
|
|
227
|
-
case 11:
|
|
228
|
-
if (dataset.repairZip !== undefined) {
|
|
229
|
-
if (!options.silent) {
|
|
230
|
-
console.log("Repairing ".concat(dataset.title, ": ").concat(dataset.filename));
|
|
231
|
-
}
|
|
232
|
-
dataset.repairZip(dataset, dataDir);
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
// Convert xml to JSON.
|
|
236
|
-
if (!dataset.filename.endsWith(".xml")) {
|
|
237
|
-
_context4.next = 29;
|
|
238
|
-
break;
|
|
239
|
-
}
|
|
240
|
-
_iterator2 = _createForOfIteratorHelper((0, _file_systems.walkDir)(dataDirOrFilePath));
|
|
241
|
-
_context4.prev = 14;
|
|
242
|
-
_loop = /*#__PURE__*/_regeneratorRuntime().mark(function _loop() {
|
|
243
|
-
var dataFileSplitPath, dataFilePath;
|
|
244
|
-
return _regeneratorRuntime().wrap(function _loop$(_context3) {
|
|
245
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
246
|
-
case 0:
|
|
247
|
-
dataFileSplitPath = _step2.value;
|
|
248
|
-
dataFilePath = _path["default"].join.apply(_path["default"], [dataDirOrFilePath].concat(_toConsumableArray(dataFileSplitPath)));
|
|
249
|
-
if (dataFilePath.endsWith(".xml")) {
|
|
250
|
-
_fsExtra["default"].readFile(dataFilePath, function (err, data) {
|
|
251
|
-
if (err) return console.error(err);
|
|
252
|
-
var result = xmlParser.parse(data);
|
|
253
|
-
var newDataFilePath = dataFilePath.replace(/\.[^.]+$/, ".json");
|
|
254
|
-
_fsExtra["default"].copy(dataFilePath, newDataFilePath, function (err) {
|
|
255
|
-
_fsExtra["default"].writeFileSync(newDataFilePath, JSON.stringify(result, null, 2));
|
|
256
|
-
if (err) return console.error(err);
|
|
257
|
-
});
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
case 3:
|
|
261
|
-
case "end":
|
|
262
|
-
return _context3.stop();
|
|
263
|
-
}
|
|
264
|
-
}, _loop);
|
|
265
|
-
});
|
|
266
|
-
_iterator2.s();
|
|
267
|
-
case 17:
|
|
268
|
-
if ((_step2 = _iterator2.n()).done) {
|
|
269
|
-
_context4.next = 21;
|
|
270
|
-
break;
|
|
271
|
-
}
|
|
272
|
-
return _context4.delegateYield(_loop(), "t0", 19);
|
|
273
|
-
case 19:
|
|
274
|
-
_context4.next = 17;
|
|
275
|
-
break;
|
|
276
|
-
case 21:
|
|
277
|
-
_context4.next = 26;
|
|
278
|
-
break;
|
|
279
|
-
case 23:
|
|
280
|
-
_context4.prev = 23;
|
|
281
|
-
_context4.t1 = _context4["catch"](14);
|
|
282
|
-
_iterator2.e(_context4.t1);
|
|
283
|
-
case 26:
|
|
284
|
-
_context4.prev = 26;
|
|
285
|
-
_iterator2.f();
|
|
286
|
-
return _context4.finish(26);
|
|
287
|
-
case 29:
|
|
288
|
-
// Reindent JSON file.
|
|
289
|
-
if (!options.silent) {
|
|
290
|
-
console.log("Reidenting ".concat(dataset.title, ": ").concat(dataset.filename));
|
|
291
|
-
}
|
|
292
|
-
reindentJsonFiles(dataDirOrFilePath);
|
|
293
|
-
case 31:
|
|
294
|
-
case "end":
|
|
295
|
-
return _context4.stop();
|
|
296
|
-
}
|
|
297
|
-
}, _callee3, null, [[14, 23, 26, 29]]);
|
|
298
|
-
}));
|
|
299
|
-
return _processDataset.apply(this, arguments);
|
|
300
|
-
}
|
|
301
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnNFeHRyYSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3BhdGgiLCJfc3RyZWFtIiwiX25vZGVTdHJlYW1aaXAiLCJfdXRpbCIsIl9maWxlX3N5c3RlbXMiLCJfZmFzdFhtbFBhcnNlciIsImUiLCJfX2VzTW9kdWxlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX24iLCJGIiwidG9TdHJpbmciLCJ0ZXN0IiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmd1bWVudHMiLCJhcHBseSIsIl9uZXh0IiwiX3Rocm93IiwicGlwZWxpbmUiLCJ1dGlsIiwicHJvbWlzaWZ5Iiwic3RyZWFtIiwiZmV0Y2haaXBGaWxlIiwiX3giLCJfeDIiLCJfZmV0Y2haaXBGaWxlIiwiX2NhbGxlZSIsInVybCIsInppcEZpbGVQYXRoIiwicmV0cmllcyIsImF0dGVtcHQiLCJyZXNwb25zZSIsIl9hcmdzIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInVuZGVmaW5lZCIsImZldGNoIiwib2siLCJib2R5IiwiZnMiLCJjcmVhdGVXcml0ZVN0cmVhbSIsImNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0Iiwic3RhdHVzVGV4dCIsImVycm9yIiwiZXh0cmFjdFppcCIsIl94MyIsIl94NCIsIl9leHRyYWN0WmlwIiwiX2NhbGxlZTIiLCJvdXRwdXREaXIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJyZWplY3QiLCJ6aXAiLCJTdHJlYW1aaXAiLCJmaWxlIiwic3RvcmVFbnRyaWVzIiwib24iLCJleHRyYWN0IiwiZXJyIiwiY2xvc2UiLCJyZWluZGVudEpzb25GaWxlcyIsImRhdGFEaXJPckZpbGVQYXRoIiwic3RhdFN5bmMiLCJpc0RpcmVjdG9yeSIsIl9pdGVyYXRvciIsIndhbGtEaXIiLCJfc3RlcCIsImRhdGFGaWxlU3BsaXRQYXRoIiwiZGF0YUZpbGVQYXRoIiwicGF0aCIsImpvaW4iLCJlbmRzV2l0aCIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsIndyaXRlRmlsZVN5bmMiLCJzdHJpbmdpZnkiLCJ4bWxQYXJzZXIiLCJYTUxQYXJzZXIiLCJpZ25vcmVEZWNsYXJhdGlvbiIsImlnbm9yZUF0dHJpYnV0ZXMiLCJpZ25vcmVQaVRhZ3MiLCJhdHRyaWJ1dGVOYW1lUHJlZml4IiwidGV4dE5vZGVOYW1lIiwicHJvY2Vzc0VudGl0aWVzIiwidHJpbVZhbHVlcyIsInN0b3BOb2RlcyIsInBhcnNlVGFnVmFsdWUiLCJwYXJzZUF0dHJpYnV0ZVZhbHVlIiwidHJhbnNmb3JtVGFnTmFtZSIsInRhZ05hbWUiLCJwcm9jZXNzRGF0YXNldCIsIl94NSIsIl9wcm9jZXNzRGF0YXNldCIsIl9jYWxsZWUzIiwiYXJncyIsImRhdGFzZXQiLCJkYXRhRGlyIiwib3B0aW9ucyIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfbG9vcCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0NCIsImZpbGVuYW1lIiwicmVtb3ZlU3luYyIsInNpbGVudCIsImxvZyIsInRpdGxlIiwicmVwYWlyWmlwIiwiX2xvb3AkIiwiX2NvbnRleHQzIiwicmVhZEZpbGUiLCJyZXN1bHQiLCJuZXdEYXRhRmlsZVBhdGgiLCJyZXBsYWNlIiwiY29weSIsInQxIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcHJvY2Vzc19vcGVuX2RhdGFzZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgc3RyZWFtIGZyb20gXCJzdHJlYW1cIlxuaW1wb3J0IFN0cmVhbVppcCBmcm9tIFwibm9kZS1zdHJlYW0temlwXCJcbmltcG9ydCB1dGlsIGZyb20gXCJ1dGlsXCJcblxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHsgWE1MUGFyc2VyIH0gZnJvbSBcImZhc3QteG1sLXBhcnNlclwiXG5cbmNvbnN0IHBpcGVsaW5lID0gdXRpbC5wcm9taXNpZnkoc3RyZWFtLnBpcGVsaW5lKVxuXG4vLyBGdW5jdGlvbiB0byBmZXRjaCB6aXAgZmlsZXMgd2l0aCByZXRyeSBtZWNoYW5pc21cbmFzeW5jIGZ1bmN0aW9uIGZldGNoWmlwRmlsZShcbiAgdXJsOiBzdHJpbmcsXG4gIHppcEZpbGVQYXRoOiBzdHJpbmcsXG4gIHJldHJpZXMgPSAzLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGZvciAobGV0IGF0dGVtcHQgPSAwOyBhdHRlbXB0IDwgcmV0cmllczsgYXR0ZW1wdCsrKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpXG4gICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICBhd2FpdCBwaXBlbGluZShcbiAgICAgICAgcmVzcG9uc2UuYm9keSBhcyB1bmtub3duIGFzIE5vZGVKUy5SZWFkYWJsZVN0cmVhbSxcbiAgICAgICAgZnMuY3JlYXRlV3JpdGVTdHJlYW0oemlwRmlsZVBhdGgpLFxuICAgICAgKVxuICAgICAgcmV0dXJuXG4gICAgfSBlbHNlIGlmIChhdHRlbXB0IDwgcmV0cmllcyAtIDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihgUmV0cnlpbmcgZmV0Y2ggZm9yICR7dXJsfTogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCAke3VybH0gYWZ0ZXIgJHtyZXRyaWVzfSBhdHRlbXB0c2ApXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZldGNoIGZhaWxlZDogJHt1cmx9YClcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFppcChcbiAgemlwRmlsZVBhdGg6IHN0cmluZyxcbiAgb3V0cHV0RGlyOiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCB6aXAgPSBuZXcgU3RyZWFtWmlwKHtcbiAgICAgIGZpbGU6IHppcEZpbGVQYXRoLFxuICAgICAgc3RvcmVFbnRyaWVzOiB0cnVlLFxuICAgIH0pXG5cbiAgICB6aXAub24oXCJyZWFkeVwiLCAoKSA9PiB7XG4gICAgICB6aXAuZXh0cmFjdChudWxsISwgb3V0cHV0RGlyLCAoZXJyKSA9PiB7XG4gICAgICAgIHppcC5jbG9zZSgpXG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZWplY3QoZXJyKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHJlaW5kZW50SnNvbkZpbGVzKGRhdGFEaXJPckZpbGVQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGZzLnN0YXRTeW5jKGRhdGFEaXJPckZpbGVQYXRoKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZm9yIChjb25zdCBkYXRhRmlsZVNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFEaXJPckZpbGVQYXRoKSkge1xuICAgICAgY29uc3QgZGF0YUZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFEaXJPckZpbGVQYXRoLCAuLi5kYXRhRmlsZVNwbGl0UGF0aClcbiAgICAgIGlmIChkYXRhRmlsZVBhdGguZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShcbiAgICAgICAgICBmcy5yZWFkRmlsZVN5bmMoZGF0YUZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0Zi04XCIgfSksXG4gICAgICAgIClcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhkYXRhRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpKVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShcbiAgICAgIGZzLnJlYWRGaWxlU3luYyhkYXRhRGlyT3JGaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0pLFxuICAgIClcbiAgICBmcy53cml0ZUZpbGVTeW5jKGRhdGFEaXJPckZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKSlcbiAgfVxufVxuXG50eXBlIFByb2Nlc3NEYXRhc2V0QXJndW1lbnRzID0ge1xuICBkYXRhc2V0OiBhbnlcbiAgZGF0YURpcjogc3RyaW5nXG4gIG9wdGlvbnM6IGFueVxufVxuXG5jb25zdCB4bWxQYXJzZXIgPSBuZXcgWE1MUGFyc2VyKHtcbiAgaWdub3JlRGVjbGFyYXRpb246IHRydWUsXG4gIGlnbm9yZUF0dHJpYnV0ZXM6IGZhbHNlLFxuICBpZ25vcmVQaVRhZ3M6IHRydWUsXG4gIGF0dHJpYnV0ZU5hbWVQcmVmaXg6IFwiXCIsXG4gIHRleHROb2RlTmFtZTogXCJfXCIsXG4gIHByb2Nlc3NFbnRpdGllczogZmFsc2UsXG4gIHRyaW1WYWx1ZXM6IHRydWUsXG4gIHN0b3BOb2RlczogW1wiKi50ZXh0ZVwiLCBcIiouaW50aXR1bGVcIl0sXG4gIHBhcnNlVGFnVmFsdWU6IGZhbHNlLFxuICBwYXJzZUF0dHJpYnV0ZVZhbHVlOiBmYWxzZSxcbiAgdHJhbnNmb3JtVGFnTmFtZTogKHRhZ05hbWU6IHN0cmluZykgPT5cbiAgICB0YWdOYW1lID09PSBcIlBhcmFcIiA/IFwicGFyYVwiIDogdGFnTmFtZSxcbn0pXG5cbi8qKlxuICogUHJvY2Vzc2VzIGEgZGF0YXNldCBieSBmZXRjaGluZywgdW56aXBwaW5nLCBhbmQgY29udmVydGluZyBmaWxlcyBmcm9tIFhNTCB0byBKU09OIGZvcm1hdC5cbiAqXG4gKiBAcGFyYW0ge2FueX0gZGF0YXNldCAtIFRoZSBkYXRhc2V0IG9iamVjdCBjb250YWluaW5nIG1ldGFkYXRhIGFuZCBwcm9jZXNzaW5nIGluc3RydWN0aW9ucy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhRGlyIC0gVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgZGF0YXNldCBmaWxlcyB3aWxsIGJlIHN0b3JlZC5cbiAqIEBwYXJhbSB7YW55fSBvcHRpb25zIC0gT3B0aW9ucyB0byBjb250cm9sIHRoZSBwcm9jZXNzaW5nIGJlaGF2aW9yLCBzdWNoIGFzIGZldGNoaW5nIGFuZCBzaWxlbnQgbW9kZS5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBkYXRhc2V0IHByb2Nlc3NpbmcgaXMgY29tcGxldGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzRGF0YXNldChcbiAgYXJnczogUHJvY2Vzc0RhdGFzZXRBcmd1bWVudHMsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBkYXRhc2V0LCBkYXRhRGlyLCBvcHRpb25zIH0gPSBhcmdzXG4gIGNvbnN0IHppcEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFEaXIsIGAke2RhdGFzZXQuZmlsZW5hbWV9LnppcGApXG4gIGNvbnN0IGRhdGFEaXJPckZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gIGZzLnJlbW92ZVN5bmMoZGF0YURpck9yRmlsZVBhdGgpXG5cbiAgaWYgKG9wdGlvbnMuZmV0Y2gpIHtcbiAgICAvLyBGZXRjaCAmIHNhdmUgWklQIGZpbGUuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgJHtkYXRhc2V0LnRpdGxlfTogJHtkYXRhc2V0LmZpbGVuYW1lfS56aXBgKVxuICAgIH1cbiAgICBhd2FpdCBmZXRjaFppcEZpbGUoZGF0YXNldC51cmwsIHppcEZpbGVQYXRoKVxuICB9XG4gIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhgVW56aXBwaW5nICR7ZGF0YXNldC50aXRsZX06ICR7ZGF0YXNldC5maWxlbmFtZX0uemlwYClcbiAgfVxuICBhd2FpdCBleHRyYWN0WmlwKHppcEZpbGVQYXRoLCBkYXRhRGlyKVxuXG4gIGlmIChkYXRhc2V0LnJlcGFpclppcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coYFJlcGFpcmluZyAke2RhdGFzZXQudGl0bGV9OiAke2RhdGFzZXQuZmlsZW5hbWV9YClcbiAgICB9XG4gICAgZGF0YXNldC5yZXBhaXJaaXAoZGF0YXNldCwgZGF0YURpcilcbiAgfVxuXG4gIC8vIENvbnZlcnQgeG1sIHRvIEpTT04uXG4gIGlmIChkYXRhc2V0LmZpbGVuYW1lLmVuZHNXaXRoKFwiLnhtbFwiKSkge1xuICAgIGZvciAoY29uc3QgZGF0YUZpbGVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhRGlyT3JGaWxlUGF0aCkpIHtcbiAgICAgIGNvbnN0IGRhdGFGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyT3JGaWxlUGF0aCwgLi4uZGF0YUZpbGVTcGxpdFBhdGgpXG4gICAgICBpZiAoZGF0YUZpbGVQYXRoLmVuZHNXaXRoKFwiLnhtbFwiKSkge1xuICAgICAgICBmcy5yZWFkRmlsZShkYXRhRmlsZVBhdGgsIGZ1bmN0aW9uIChlcnIsIGRhdGEpIHtcbiAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY29uc29sZS5lcnJvcihlcnIpXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHhtbFBhcnNlci5wYXJzZShkYXRhKVxuICAgICAgICAgIGNvbnN0IG5ld0RhdGFGaWxlUGF0aCA9IGRhdGFGaWxlUGF0aC5yZXBsYWNlKC9cXC5bXi5dKyQvLCBcIi5qc29uXCIpXG4gICAgICAgICAgZnMuY29weShkYXRhRmlsZVBhdGgsIG5ld0RhdGFGaWxlUGF0aCwgKGVycikgPT4ge1xuICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhuZXdEYXRhRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMikpXG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY29uc29sZS5lcnJvcihlcnIpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZWluZGVudCBKU09OIGZpbGUuXG4gIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhgUmVpZGVudGluZyAke2RhdGFzZXQudGl0bGV9OiAke2RhdGFzZXQuZmlsZW5hbWV9YClcbiAgfVxuICByZWluZGVudEpzb25GaWxlcyhkYXRhRGlyT3JGaWxlUGF0aClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsUUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sY0FBQSxHQUFBTixPQUFBO0FBQTJDLFNBQUFELHVCQUFBUSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsZ0JBQUFBLENBQUE7QUFBQSxTQUFBRSxvQkFBQSxrQkFOM0MscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFGLENBQUEsU0FBQUcsQ0FBQSxFQUFBSCxDQUFBLE9BQUFJLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUFDLENBQUEsR0FBQUgsQ0FBQSxDQUFBSSxjQUFBLEVBQUFDLENBQUEsR0FBQUosTUFBQSxDQUFBSyxjQUFBLGNBQUFQLENBQUEsRUFBQUgsQ0FBQSxFQUFBSSxDQUFBLElBQUFELENBQUEsQ0FBQUgsQ0FBQSxJQUFBSSxDQUFBLENBQUFPLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1QkFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFPLFdBQUEsOEJBQUFDLE9BQUFqQixDQUFBLEVBQUFILENBQUEsRUFBQUksQ0FBQSxXQUFBQyxNQUFBLENBQUFLLGNBQUEsQ0FBQVAsQ0FBQSxFQUFBSCxDQUFBLElBQUFXLEtBQUEsRUFBQVAsQ0FBQSxFQUFBaUIsVUFBQSxNQUFBQyxZQUFBLE1BQUFDLFFBQUEsU0FBQXBCLENBQUEsQ0FBQUgsQ0FBQSxXQUFBb0IsTUFBQSxtQkFBQWpCLENBQUEsSUFBQWlCLE1BQUEsWUFBQUEsT0FBQWpCLENBQUEsRUFBQUgsQ0FBQSxFQUFBSSxDQUFBLFdBQUFELENBQUEsQ0FBQUgsQ0FBQSxJQUFBSSxDQUFBLGdCQUFBb0IsS0FBQXJCLENBQUEsRUFBQUgsQ0FBQSxFQUFBSSxDQUFBLEVBQUFHLENBQUEsUUFBQUssQ0FBQSxHQUFBWixDQUFBLElBQUFBLENBQUEsQ0FBQU0sU0FBQSxZQUFBbUIsU0FBQSxHQUFBekIsQ0FBQSxHQUFBeUIsU0FBQSxFQUFBWCxDQUFBLEdBQUFULE1BQUEsQ0FBQXFCLE1BQUEsQ0FBQWQsQ0FBQSxDQUFBTixTQUFBLEdBQUFVLENBQUEsT0FBQVcsT0FBQSxDQUFBcEIsQ0FBQSxnQkFBQUUsQ0FBQSxDQUFBSyxDQUFBLGVBQUFILEtBQUEsRUFBQWlCLGdCQUFBLENBQUF6QixDQUFBLEVBQUFDLENBQUEsRUFBQVksQ0FBQSxNQUFBRixDQUFBLGFBQUFlLFNBQUExQixDQUFBLEVBQUFILENBQUEsRUFBQUksQ0FBQSxtQkFBQTBCLElBQUEsWUFBQUMsR0FBQSxFQUFBNUIsQ0FBQSxDQUFBNkIsSUFBQSxDQUFBaEMsQ0FBQSxFQUFBSSxDQUFBLGNBQUFELENBQUEsYUFBQTJCLElBQUEsV0FBQUMsR0FBQSxFQUFBNUIsQ0FBQSxRQUFBSCxDQUFBLENBQUF3QixJQUFBLEdBQUFBLElBQUEsTUFBQVMsQ0FBQSxxQkFBQUMsQ0FBQSxxQkFBQUMsQ0FBQSxnQkFBQUMsQ0FBQSxnQkFBQUMsQ0FBQSxnQkFBQVosVUFBQSxjQUFBYSxrQkFBQSxjQUFBQywyQkFBQSxTQUFBQyxDQUFBLE9BQUFwQixNQUFBLENBQUFvQixDQUFBLEVBQUExQixDQUFBLHFDQUFBMkIsQ0FBQSxHQUFBcEMsTUFBQSxDQUFBcUMsY0FBQSxFQUFBQyxDQUFBLEdBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBQSxDQUFBLENBQUFHLE1BQUEsUUFBQUQsQ0FBQSxJQUFBQSxDQUFBLEtBQUF2QyxDQUFBLElBQUFHLENBQUEsQ0FBQXlCLElBQUEsQ0FBQVcsQ0FBQSxFQUFBN0IsQ0FBQSxNQUFBMEIsQ0FBQSxHQUFBRyxDQUFBLE9BQUFFLENBQUEsR0FBQU4sMEJBQUEsQ0FBQWpDLFNBQUEsR0FBQW1CLFNBQUEsQ0FBQW5CLFNBQUEsR0FBQUQsTUFBQSxDQUFBcUIsTUFBQSxDQUFBYyxDQUFBLFlBQUFNLHNCQUFBM0MsQ0FBQSxnQ0FBQTRDLE9BQUEsV0FBQS9DLENBQUEsSUFBQW9CLE1BQUEsQ0FBQWpCLENBQUEsRUFBQUgsQ0FBQSxZQUFBRyxDQUFBLGdCQUFBNkMsT0FBQSxDQUFBaEQsQ0FBQSxFQUFBRyxDQUFBLHNCQUFBOEMsY0FBQTlDLENBQUEsRUFBQUgsQ0FBQSxhQUFBa0QsT0FBQTlDLENBQUEsRUFBQUssQ0FBQSxFQUFBRyxDQUFBLEVBQUFFLENBQUEsUUFBQUUsQ0FBQSxHQUFBYSxRQUFBLENBQUExQixDQUFBLENBQUFDLENBQUEsR0FBQUQsQ0FBQSxFQUFBTSxDQUFBLG1CQUFBTyxDQUFBLENBQUFjLElBQUEsUUFBQVosQ0FBQSxHQUFBRixDQUFBLENBQUFlLEdBQUEsRUFBQUUsQ0FBQSxHQUFBZixDQUFBLENBQUFQLEtBQUEsU0FBQXNCLENBQUEsZ0JBQUFrQixPQUFBLENBQUFsQixDQUFBLEtBQUExQixDQUFBLENBQUF5QixJQUFBLENBQUFDLENBQUEsZUFBQWpDLENBQUEsQ0FBQW9ELE9BQUEsQ0FBQW5CLENBQUEsQ0FBQW9CLE9BQUEsRUFBQUMsSUFBQSxXQUFBbkQsQ0FBQSxJQUFBK0MsTUFBQSxTQUFBL0MsQ0FBQSxFQUFBUyxDQUFBLEVBQUFFLENBQUEsZ0JBQUFYLENBQUEsSUFBQStDLE1BQUEsVUFBQS9DLENBQUEsRUFBQVMsQ0FBQSxFQUFBRSxDQUFBLFFBQUFkLENBQUEsQ0FBQW9ELE9BQUEsQ0FBQW5CLENBQUEsRUFBQXFCLElBQUEsV0FBQW5ELENBQUEsSUFBQWUsQ0FBQSxDQUFBUCxLQUFBLEdBQUFSLENBQUEsRUFBQVMsQ0FBQSxDQUFBTSxDQUFBLGdCQUFBZixDQUFBLFdBQUErQyxNQUFBLFVBQUEvQyxDQUFBLEVBQUFTLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLENBQUFFLENBQUEsQ0FBQWUsR0FBQSxTQUFBM0IsQ0FBQSxFQUFBSyxDQUFBLG9CQUFBRSxLQUFBLFdBQUFBLE1BQUFSLENBQUEsRUFBQUksQ0FBQSxhQUFBZ0QsMkJBQUEsZUFBQXZELENBQUEsV0FBQUEsQ0FBQSxFQUFBSSxDQUFBLElBQUE4QyxNQUFBLENBQUEvQyxDQUFBLEVBQUFJLENBQUEsRUFBQVAsQ0FBQSxFQUFBSSxDQUFBLGdCQUFBQSxDQUFBLEdBQUFBLENBQUEsR0FBQUEsQ0FBQSxDQUFBa0QsSUFBQSxDQUFBQywwQkFBQSxFQUFBQSwwQkFBQSxJQUFBQSwwQkFBQSxxQkFBQTNCLGlCQUFBNUIsQ0FBQSxFQUFBSSxDQUFBLEVBQUFHLENBQUEsUUFBQUUsQ0FBQSxHQUFBd0IsQ0FBQSxtQkFBQXJCLENBQUEsRUFBQUUsQ0FBQSxRQUFBTCxDQUFBLEtBQUEwQixDQUFBLFFBQUFxQixLQUFBLHNDQUFBL0MsQ0FBQSxLQUFBMkIsQ0FBQSxvQkFBQXhCLENBQUEsUUFBQUUsQ0FBQSxXQUFBSCxLQUFBLEVBQUFSLENBQUEsRUFBQXNELElBQUEsZUFBQWxELENBQUEsQ0FBQW1ELE1BQUEsR0FBQTlDLENBQUEsRUFBQUwsQ0FBQSxDQUFBd0IsR0FBQSxHQUFBakIsQ0FBQSxVQUFBRSxDQUFBLEdBQUFULENBQUEsQ0FBQW9ELFFBQUEsTUFBQTNDLENBQUEsUUFBQUUsQ0FBQSxHQUFBMEMsbUJBQUEsQ0FBQTVDLENBQUEsRUFBQVQsQ0FBQSxPQUFBVyxDQUFBLFFBQUFBLENBQUEsS0FBQW1CLENBQUEsbUJBQUFuQixDQUFBLHFCQUFBWCxDQUFBLENBQUFtRCxNQUFBLEVBQUFuRCxDQUFBLENBQUFzRCxJQUFBLEdBQUF0RCxDQUFBLENBQUF1RCxLQUFBLEdBQUF2RCxDQUFBLENBQUF3QixHQUFBLHNCQUFBeEIsQ0FBQSxDQUFBbUQsTUFBQSxRQUFBakQsQ0FBQSxLQUFBd0IsQ0FBQSxRQUFBeEIsQ0FBQSxHQUFBMkIsQ0FBQSxFQUFBN0IsQ0FBQSxDQUFBd0IsR0FBQSxFQUFBeEIsQ0FBQSxDQUFBd0QsaUJBQUEsQ0FBQXhELENBQUEsQ0FBQXdCLEdBQUEsdUJBQUF4QixDQUFBLENBQUFtRCxNQUFBLElBQUFuRCxDQUFBLENBQUF5RCxNQUFBLFdBQUF6RCxDQUFBLENBQUF3QixHQUFBLEdBQUF0QixDQUFBLEdBQUEwQixDQUFBLE1BQUFLLENBQUEsR0FBQVgsUUFBQSxDQUFBN0IsQ0FBQSxFQUFBSSxDQUFBLEVBQUFHLENBQUEsb0JBQUFpQyxDQUFBLENBQUFWLElBQUEsUUFBQXJCLENBQUEsR0FBQUYsQ0FBQSxDQUFBa0QsSUFBQSxHQUFBckIsQ0FBQSxHQUFBRixDQUFBLEVBQUFNLENBQUEsQ0FBQVQsR0FBQSxLQUFBTSxDQUFBLHFCQUFBMUIsS0FBQSxFQUFBNkIsQ0FBQSxDQUFBVCxHQUFBLEVBQUEwQixJQUFBLEVBQUFsRCxDQUFBLENBQUFrRCxJQUFBLGtCQUFBakIsQ0FBQSxDQUFBVixJQUFBLEtBQUFyQixDQUFBLEdBQUEyQixDQUFBLEVBQUE3QixDQUFBLENBQUFtRCxNQUFBLFlBQUFuRCxDQUFBLENBQUF3QixHQUFBLEdBQUFTLENBQUEsQ0FBQVQsR0FBQSxtQkFBQTZCLG9CQUFBNUQsQ0FBQSxFQUFBSSxDQUFBLFFBQUFHLENBQUEsR0FBQUgsQ0FBQSxDQUFBc0QsTUFBQSxFQUFBakQsQ0FBQSxHQUFBVCxDQUFBLENBQUFlLFFBQUEsQ0FBQVIsQ0FBQSxPQUFBRSxDQUFBLEtBQUFOLENBQUEsU0FBQUMsQ0FBQSxDQUFBdUQsUUFBQSxxQkFBQXBELENBQUEsSUFBQVAsQ0FBQSxDQUFBZSxRQUFBLGVBQUFYLENBQUEsQ0FBQXNELE1BQUEsYUFBQXRELENBQUEsQ0FBQTJCLEdBQUEsR0FBQTVCLENBQUEsRUFBQXlELG1CQUFBLENBQUE1RCxDQUFBLEVBQUFJLENBQUEsZUFBQUEsQ0FBQSxDQUFBc0QsTUFBQSxrQkFBQW5ELENBQUEsS0FBQUgsQ0FBQSxDQUFBc0QsTUFBQSxZQUFBdEQsQ0FBQSxDQUFBMkIsR0FBQSxPQUFBa0MsU0FBQSx1Q0FBQTFELENBQUEsaUJBQUE4QixDQUFBLE1BQUF6QixDQUFBLEdBQUFpQixRQUFBLENBQUFwQixDQUFBLEVBQUFULENBQUEsQ0FBQWUsUUFBQSxFQUFBWCxDQUFBLENBQUEyQixHQUFBLG1CQUFBbkIsQ0FBQSxDQUFBa0IsSUFBQSxTQUFBMUIsQ0FBQSxDQUFBc0QsTUFBQSxZQUFBdEQsQ0FBQSxDQUFBMkIsR0FBQSxHQUFBbkIsQ0FBQSxDQUFBbUIsR0FBQSxFQUFBM0IsQ0FBQSxDQUFBdUQsUUFBQSxTQUFBdEIsQ0FBQSxNQUFBdkIsQ0FBQSxHQUFBRixDQUFBLENBQUFtQixHQUFBLFNBQUFqQixDQUFBLEdBQUFBLENBQUEsQ0FBQTJDLElBQUEsSUFBQXJELENBQUEsQ0FBQUosQ0FBQSxDQUFBa0UsVUFBQSxJQUFBcEQsQ0FBQSxDQUFBSCxLQUFBLEVBQUFQLENBQUEsQ0FBQStELElBQUEsR0FBQW5FLENBQUEsQ0FBQW9FLE9BQUEsZUFBQWhFLENBQUEsQ0FBQXNELE1BQUEsS0FBQXRELENBQUEsQ0FBQXNELE1BQUEsV0FBQXRELENBQUEsQ0FBQTJCLEdBQUEsR0FBQTVCLENBQUEsR0FBQUMsQ0FBQSxDQUFBdUQsUUFBQSxTQUFBdEIsQ0FBQSxJQUFBdkIsQ0FBQSxJQUFBVixDQUFBLENBQUFzRCxNQUFBLFlBQUF0RCxDQUFBLENBQUEyQixHQUFBLE9BQUFrQyxTQUFBLHNDQUFBN0QsQ0FBQSxDQUFBdUQsUUFBQSxTQUFBdEIsQ0FBQSxjQUFBZ0MsYUFBQWxFLENBQUEsUUFBQUgsQ0FBQSxLQUFBc0UsTUFBQSxFQUFBbkUsQ0FBQSxZQUFBQSxDQUFBLEtBQUFILENBQUEsQ0FBQXVFLFFBQUEsR0FBQXBFLENBQUEsV0FBQUEsQ0FBQSxLQUFBSCxDQUFBLENBQUF3RSxVQUFBLEdBQUFyRSxDQUFBLEtBQUFILENBQUEsQ0FBQXlFLFFBQUEsR0FBQXRFLENBQUEsV0FBQXVFLFVBQUEsQ0FBQUMsSUFBQSxDQUFBM0UsQ0FBQSxjQUFBNEUsY0FBQXpFLENBQUEsUUFBQUgsQ0FBQSxHQUFBRyxDQUFBLENBQUEwRSxVQUFBLFFBQUE3RSxDQUFBLENBQUE4QixJQUFBLG9CQUFBOUIsQ0FBQSxDQUFBK0IsR0FBQSxFQUFBNUIsQ0FBQSxDQUFBMEUsVUFBQSxHQUFBN0UsQ0FBQSxhQUFBMkIsUUFBQXhCLENBQUEsU0FBQXVFLFVBQUEsTUFBQUosTUFBQSxhQUFBbkUsQ0FBQSxDQUFBNEMsT0FBQSxDQUFBc0IsWUFBQSxjQUFBUyxLQUFBLGlCQUFBbEMsT0FBQTVDLENBQUEsUUFBQUEsQ0FBQSxXQUFBQSxDQUFBLFFBQUFJLENBQUEsR0FBQUosQ0FBQSxDQUFBYyxDQUFBLE9BQUFWLENBQUEsU0FBQUEsQ0FBQSxDQUFBNEIsSUFBQSxDQUFBaEMsQ0FBQSw0QkFBQUEsQ0FBQSxDQUFBbUUsSUFBQSxTQUFBbkUsQ0FBQSxPQUFBK0UsS0FBQSxDQUFBL0UsQ0FBQSxDQUFBZ0YsTUFBQSxTQUFBdkUsQ0FBQSxPQUFBRyxDQUFBLFlBQUF1RCxLQUFBLGFBQUExRCxDQUFBLEdBQUFULENBQUEsQ0FBQWdGLE1BQUEsT0FBQXpFLENBQUEsQ0FBQXlCLElBQUEsQ0FBQWhDLENBQUEsRUFBQVMsQ0FBQSxVQUFBMEQsSUFBQSxDQUFBeEQsS0FBQSxHQUFBWCxDQUFBLENBQUFTLENBQUEsR0FBQTBELElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFNBQUFBLElBQUEsQ0FBQXhELEtBQUEsR0FBQVIsQ0FBQSxFQUFBZ0UsSUFBQSxDQUFBVixJQUFBLE9BQUFVLElBQUEsWUFBQXZELENBQUEsQ0FBQXVELElBQUEsR0FBQXZELENBQUEsZ0JBQUFxRCxTQUFBLENBQUFkLE9BQUEsQ0FBQW5ELENBQUEsa0NBQUFzQyxpQkFBQSxDQUFBaEMsU0FBQSxHQUFBaUMsMEJBQUEsRUFBQTlCLENBQUEsQ0FBQW9DLENBQUEsbUJBQUFsQyxLQUFBLEVBQUE0QiwwQkFBQSxFQUFBakIsWUFBQSxTQUFBYixDQUFBLENBQUE4QiwwQkFBQSxtQkFBQTVCLEtBQUEsRUFBQTJCLGlCQUFBLEVBQUFoQixZQUFBLFNBQUFnQixpQkFBQSxDQUFBMkMsV0FBQSxHQUFBN0QsTUFBQSxDQUFBbUIsMEJBQUEsRUFBQXJCLENBQUEsd0JBQUFsQixDQUFBLENBQUFrRixtQkFBQSxhQUFBL0UsQ0FBQSxRQUFBSCxDQUFBLHdCQUFBRyxDQUFBLElBQUFBLENBQUEsQ0FBQWdGLFdBQUEsV0FBQW5GLENBQUEsS0FBQUEsQ0FBQSxLQUFBc0MsaUJBQUEsNkJBQUF0QyxDQUFBLENBQUFpRixXQUFBLElBQUFqRixDQUFBLENBQUFvRixJQUFBLE9BQUFwRixDQUFBLENBQUFxRixJQUFBLGFBQUFsRixDQUFBLFdBQUFFLE1BQUEsQ0FBQWlGLGNBQUEsR0FBQWpGLE1BQUEsQ0FBQWlGLGNBQUEsQ0FBQW5GLENBQUEsRUFBQW9DLDBCQUFBLEtBQUFwQyxDQUFBLENBQUFvRixTQUFBLEdBQUFoRCwwQkFBQSxFQUFBbkIsTUFBQSxDQUFBakIsQ0FBQSxFQUFBZSxDQUFBLHlCQUFBZixDQUFBLENBQUFHLFNBQUEsR0FBQUQsTUFBQSxDQUFBcUIsTUFBQSxDQUFBbUIsQ0FBQSxHQUFBMUMsQ0FBQSxLQUFBSCxDQUFBLENBQUF3RixLQUFBLGFBQUFyRixDQUFBLGFBQUFrRCxPQUFBLEVBQUFsRCxDQUFBLE9BQUEyQyxxQkFBQSxDQUFBRyxhQUFBLENBQUEzQyxTQUFBLEdBQUFjLE1BQUEsQ0FBQTZCLGFBQUEsQ0FBQTNDLFNBQUEsRUFBQVUsQ0FBQSxpQ0FBQWhCLENBQUEsQ0FBQWlELGFBQUEsR0FBQUEsYUFBQSxFQUFBakQsQ0FBQSxDQUFBeUYsS0FBQSxhQUFBdEYsQ0FBQSxFQUFBQyxDQUFBLEVBQUFHLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLGVBQUFBLENBQUEsS0FBQUEsQ0FBQSxHQUFBOEUsT0FBQSxPQUFBNUUsQ0FBQSxPQUFBbUMsYUFBQSxDQUFBekIsSUFBQSxDQUFBckIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFHLENBQUEsRUFBQUUsQ0FBQSxHQUFBRyxDQUFBLFVBQUFaLENBQUEsQ0FBQWtGLG1CQUFBLENBQUE5RSxDQUFBLElBQUFVLENBQUEsR0FBQUEsQ0FBQSxDQUFBcUQsSUFBQSxHQUFBYixJQUFBLFdBQUFuRCxDQUFBLFdBQUFBLENBQUEsQ0FBQXNELElBQUEsR0FBQXRELENBQUEsQ0FBQVEsS0FBQSxHQUFBRyxDQUFBLENBQUFxRCxJQUFBLFdBQUFyQixxQkFBQSxDQUFBRCxDQUFBLEdBQUF6QixNQUFBLENBQUF5QixDQUFBLEVBQUEzQixDQUFBLGdCQUFBRSxNQUFBLENBQUF5QixDQUFBLEVBQUEvQixDQUFBLGlDQUFBTSxNQUFBLENBQUF5QixDQUFBLDZEQUFBN0MsQ0FBQSxDQUFBMkYsSUFBQSxhQUFBeEYsQ0FBQSxRQUFBSCxDQUFBLEdBQUFLLE1BQUEsQ0FBQUYsQ0FBQSxHQUFBQyxDQUFBLGdCQUFBRyxDQUFBLElBQUFQLENBQUEsRUFBQUksQ0FBQSxDQUFBdUUsSUFBQSxDQUFBcEUsQ0FBQSxVQUFBSCxDQUFBLENBQUF3RixPQUFBLGFBQUF6QixLQUFBLFdBQUEvRCxDQUFBLENBQUE0RSxNQUFBLFNBQUE3RSxDQUFBLEdBQUFDLENBQUEsQ0FBQXlGLEdBQUEsUUFBQTFGLENBQUEsSUFBQUgsQ0FBQSxTQUFBbUUsSUFBQSxDQUFBeEQsS0FBQSxHQUFBUixDQUFBLEVBQUFnRSxJQUFBLENBQUFWLElBQUEsT0FBQVUsSUFBQSxXQUFBQSxJQUFBLENBQUFWLElBQUEsT0FBQVUsSUFBQSxRQUFBbkUsQ0FBQSxDQUFBNEMsTUFBQSxHQUFBQSxNQUFBLEVBQUFqQixPQUFBLENBQUFyQixTQUFBLEtBQUE2RSxXQUFBLEVBQUF4RCxPQUFBLEVBQUFtRCxLQUFBLFdBQUFBLE1BQUE5RSxDQUFBLGFBQUE4RixJQUFBLFdBQUEzQixJQUFBLFdBQUFOLElBQUEsUUFBQUMsS0FBQSxHQUFBM0QsQ0FBQSxPQUFBc0QsSUFBQSxZQUFBRSxRQUFBLGNBQUFELE1BQUEsZ0JBQUEzQixHQUFBLEdBQUE1QixDQUFBLE9BQUF1RSxVQUFBLENBQUEzQixPQUFBLENBQUE2QixhQUFBLElBQUE1RSxDQUFBLFdBQUFJLENBQUEsa0JBQUFBLENBQUEsQ0FBQTJGLE1BQUEsT0FBQXhGLENBQUEsQ0FBQXlCLElBQUEsT0FBQTVCLENBQUEsTUFBQTJFLEtBQUEsRUFBQTNFLENBQUEsQ0FBQTRGLEtBQUEsY0FBQTVGLENBQUEsSUFBQUQsQ0FBQSxNQUFBOEYsSUFBQSxXQUFBQSxLQUFBLFNBQUF4QyxJQUFBLFdBQUF0RCxDQUFBLFFBQUF1RSxVQUFBLElBQUFHLFVBQUEsa0JBQUExRSxDQUFBLENBQUEyQixJQUFBLFFBQUEzQixDQUFBLENBQUE0QixHQUFBLGNBQUFtRSxJQUFBLEtBQUFuQyxpQkFBQSxXQUFBQSxrQkFBQS9ELENBQUEsYUFBQXlELElBQUEsUUFBQXpELENBQUEsTUFBQUksQ0FBQSxrQkFBQStGLE9BQUE1RixDQUFBLEVBQUFFLENBQUEsV0FBQUssQ0FBQSxDQUFBZ0IsSUFBQSxZQUFBaEIsQ0FBQSxDQUFBaUIsR0FBQSxHQUFBL0IsQ0FBQSxFQUFBSSxDQUFBLENBQUErRCxJQUFBLEdBQUE1RCxDQUFBLEVBQUFFLENBQUEsS0FBQUwsQ0FBQSxDQUFBc0QsTUFBQSxXQUFBdEQsQ0FBQSxDQUFBMkIsR0FBQSxHQUFBNUIsQ0FBQSxLQUFBTSxDQUFBLGFBQUFBLENBQUEsUUFBQWlFLFVBQUEsQ0FBQU0sTUFBQSxNQUFBdkUsQ0FBQSxTQUFBQSxDQUFBLFFBQUFHLENBQUEsUUFBQThELFVBQUEsQ0FBQWpFLENBQUEsR0FBQUssQ0FBQSxHQUFBRixDQUFBLENBQUFpRSxVQUFBLGlCQUFBakUsQ0FBQSxDQUFBMEQsTUFBQSxTQUFBNkIsTUFBQSxhQUFBdkYsQ0FBQSxDQUFBMEQsTUFBQSxTQUFBd0IsSUFBQSxRQUFBOUUsQ0FBQSxHQUFBVCxDQUFBLENBQUF5QixJQUFBLENBQUFwQixDQUFBLGVBQUFNLENBQUEsR0FBQVgsQ0FBQSxDQUFBeUIsSUFBQSxDQUFBcEIsQ0FBQSxxQkFBQUksQ0FBQSxJQUFBRSxDQUFBLGFBQUE0RSxJQUFBLEdBQUFsRixDQUFBLENBQUEyRCxRQUFBLFNBQUE0QixNQUFBLENBQUF2RixDQUFBLENBQUEyRCxRQUFBLGdCQUFBdUIsSUFBQSxHQUFBbEYsQ0FBQSxDQUFBNEQsVUFBQSxTQUFBMkIsTUFBQSxDQUFBdkYsQ0FBQSxDQUFBNEQsVUFBQSxjQUFBeEQsQ0FBQSxhQUFBOEUsSUFBQSxHQUFBbEYsQ0FBQSxDQUFBMkQsUUFBQSxTQUFBNEIsTUFBQSxDQUFBdkYsQ0FBQSxDQUFBMkQsUUFBQSxxQkFBQXJELENBQUEsUUFBQXNDLEtBQUEscURBQUFzQyxJQUFBLEdBQUFsRixDQUFBLENBQUE0RCxVQUFBLFNBQUEyQixNQUFBLENBQUF2RixDQUFBLENBQUE0RCxVQUFBLFlBQUFSLE1BQUEsV0FBQUEsT0FBQTdELENBQUEsRUFBQUgsQ0FBQSxhQUFBSSxDQUFBLFFBQUFzRSxVQUFBLENBQUFNLE1BQUEsTUFBQTVFLENBQUEsU0FBQUEsQ0FBQSxRQUFBSyxDQUFBLFFBQUFpRSxVQUFBLENBQUF0RSxDQUFBLE9BQUFLLENBQUEsQ0FBQTZELE1BQUEsU0FBQXdCLElBQUEsSUFBQXZGLENBQUEsQ0FBQXlCLElBQUEsQ0FBQXZCLENBQUEsd0JBQUFxRixJQUFBLEdBQUFyRixDQUFBLENBQUErRCxVQUFBLFFBQUE1RCxDQUFBLEdBQUFILENBQUEsYUFBQUcsQ0FBQSxpQkFBQVQsQ0FBQSxtQkFBQUEsQ0FBQSxLQUFBUyxDQUFBLENBQUEwRCxNQUFBLElBQUF0RSxDQUFBLElBQUFBLENBQUEsSUFBQVksQ0FBQSxDQUFBNEQsVUFBQSxLQUFBNUQsQ0FBQSxjQUFBRSxDQUFBLEdBQUFGLENBQUEsR0FBQUEsQ0FBQSxDQUFBaUUsVUFBQSxjQUFBL0QsQ0FBQSxDQUFBZ0IsSUFBQSxHQUFBM0IsQ0FBQSxFQUFBVyxDQUFBLENBQUFpQixHQUFBLEdBQUEvQixDQUFBLEVBQUFZLENBQUEsU0FBQThDLE1BQUEsZ0JBQUFTLElBQUEsR0FBQXZELENBQUEsQ0FBQTRELFVBQUEsRUFBQW5DLENBQUEsU0FBQStELFFBQUEsQ0FBQXRGLENBQUEsTUFBQXNGLFFBQUEsV0FBQUEsU0FBQWpHLENBQUEsRUFBQUgsQ0FBQSxvQkFBQUcsQ0FBQSxDQUFBMkIsSUFBQSxRQUFBM0IsQ0FBQSxDQUFBNEIsR0FBQSxxQkFBQTVCLENBQUEsQ0FBQTJCLElBQUEsbUJBQUEzQixDQUFBLENBQUEyQixJQUFBLFFBQUFxQyxJQUFBLEdBQUFoRSxDQUFBLENBQUE0QixHQUFBLGdCQUFBNUIsQ0FBQSxDQUFBMkIsSUFBQSxTQUFBb0UsSUFBQSxRQUFBbkUsR0FBQSxHQUFBNUIsQ0FBQSxDQUFBNEIsR0FBQSxPQUFBMkIsTUFBQSxrQkFBQVMsSUFBQSx5QkFBQWhFLENBQUEsQ0FBQTJCLElBQUEsSUFBQTlCLENBQUEsVUFBQW1FLElBQUEsR0FBQW5FLENBQUEsR0FBQXFDLENBQUEsS0FBQWdFLE1BQUEsV0FBQUEsT0FBQWxHLENBQUEsYUFBQUgsQ0FBQSxRQUFBMEUsVUFBQSxDQUFBTSxNQUFBLE1BQUFoRixDQUFBLFNBQUFBLENBQUEsUUFBQUksQ0FBQSxRQUFBc0UsVUFBQSxDQUFBMUUsQ0FBQSxPQUFBSSxDQUFBLENBQUFvRSxVQUFBLEtBQUFyRSxDQUFBLGNBQUFpRyxRQUFBLENBQUFoRyxDQUFBLENBQUF5RSxVQUFBLEVBQUF6RSxDQUFBLENBQUFxRSxRQUFBLEdBQUFHLGFBQUEsQ0FBQXhFLENBQUEsR0FBQWlDLENBQUEseUJBQUFpRSxPQUFBbkcsQ0FBQSxhQUFBSCxDQUFBLFFBQUEwRSxVQUFBLENBQUFNLE1BQUEsTUFBQWhGLENBQUEsU0FBQUEsQ0FBQSxRQUFBSSxDQUFBLFFBQUFzRSxVQUFBLENBQUExRSxDQUFBLE9BQUFJLENBQUEsQ0FBQWtFLE1BQUEsS0FBQW5FLENBQUEsUUFBQUksQ0FBQSxHQUFBSCxDQUFBLENBQUF5RSxVQUFBLGtCQUFBdEUsQ0FBQSxDQUFBdUIsSUFBQSxRQUFBckIsQ0FBQSxHQUFBRixDQUFBLENBQUF3QixHQUFBLEVBQUE2QyxhQUFBLENBQUF4RSxDQUFBLFlBQUFLLENBQUEsWUFBQStDLEtBQUEsOEJBQUErQyxhQUFBLFdBQUFBLGNBQUF2RyxDQUFBLEVBQUFJLENBQUEsRUFBQUcsQ0FBQSxnQkFBQW9ELFFBQUEsS0FBQTVDLFFBQUEsRUFBQTZCLE1BQUEsQ0FBQTVDLENBQUEsR0FBQWtFLFVBQUEsRUFBQTlELENBQUEsRUFBQWdFLE9BQUEsRUFBQTdELENBQUEsb0JBQUFtRCxNQUFBLFVBQUEzQixHQUFBLEdBQUE1QixDQUFBLEdBQUFrQyxDQUFBLE9BQUFyQyxDQUFBO0FBQUEsU0FBQXdHLG1CQUFBcEcsQ0FBQSxXQUFBcUcsa0JBQUEsQ0FBQXJHLENBQUEsS0FBQXNHLGdCQUFBLENBQUF0RyxDQUFBLEtBQUF1RywyQkFBQSxDQUFBdkcsQ0FBQSxLQUFBd0csa0JBQUE7QUFBQSxTQUFBQSxtQkFBQSxjQUFBM0MsU0FBQTtBQUFBLFNBQUF5QyxpQkFBQXRHLENBQUEsOEJBQUFTLE1BQUEsWUFBQVQsQ0FBQSxDQUFBUyxNQUFBLENBQUFFLFFBQUEsYUFBQVgsQ0FBQSx1QkFBQXlHLEtBQUEsQ0FBQUMsSUFBQSxDQUFBMUcsQ0FBQTtBQUFBLFNBQUFxRyxtQkFBQXJHLENBQUEsUUFBQXlHLEtBQUEsQ0FBQUUsT0FBQSxDQUFBM0csQ0FBQSxVQUFBNEcsaUJBQUEsQ0FBQTVHLENBQUE7QUFBQSxTQUFBNkcsMkJBQUE3RyxDQUFBLEVBQUFKLENBQUEsUUFBQUcsQ0FBQSx5QkFBQVUsTUFBQSxJQUFBVCxDQUFBLENBQUFTLE1BQUEsQ0FBQUUsUUFBQSxLQUFBWCxDQUFBLHFCQUFBRCxDQUFBLFFBQUEwRyxLQUFBLENBQUFFLE9BQUEsQ0FBQTNHLENBQUEsTUFBQUQsQ0FBQSxHQUFBd0csMkJBQUEsQ0FBQXZHLENBQUEsTUFBQUosQ0FBQSxJQUFBSSxDQUFBLHVCQUFBQSxDQUFBLENBQUE0RSxNQUFBLElBQUE3RSxDQUFBLEtBQUFDLENBQUEsR0FBQUQsQ0FBQSxPQUFBK0csRUFBQSxNQUFBQyxDQUFBLFlBQUFBLEVBQUEsZUFBQS9FLENBQUEsRUFBQStFLENBQUEsRUFBQTVHLENBQUEsV0FBQUEsRUFBQSxXQUFBMkcsRUFBQSxJQUFBOUcsQ0FBQSxDQUFBNEUsTUFBQSxLQUFBdkIsSUFBQSxXQUFBQSxJQUFBLE1BQUE5QyxLQUFBLEVBQUFQLENBQUEsQ0FBQThHLEVBQUEsVUFBQWxILENBQUEsV0FBQUEsRUFBQUksQ0FBQSxVQUFBQSxDQUFBLEtBQUErQixDQUFBLEVBQUFnRixDQUFBLGdCQUFBbEQsU0FBQSxpSkFBQXhELENBQUEsRUFBQUssQ0FBQSxPQUFBSSxDQUFBLGdCQUFBa0IsQ0FBQSxXQUFBQSxFQUFBLElBQUFqQyxDQUFBLEdBQUFBLENBQUEsQ0FBQTZCLElBQUEsQ0FBQTVCLENBQUEsTUFBQUcsQ0FBQSxXQUFBQSxFQUFBLFFBQUFILENBQUEsR0FBQUQsQ0FBQSxDQUFBZ0UsSUFBQSxXQUFBckQsQ0FBQSxHQUFBVixDQUFBLENBQUFxRCxJQUFBLEVBQUFyRCxDQUFBLEtBQUFKLENBQUEsV0FBQUEsRUFBQUksQ0FBQSxJQUFBYyxDQUFBLE9BQUFULENBQUEsR0FBQUwsQ0FBQSxLQUFBK0IsQ0FBQSxXQUFBQSxFQUFBLFVBQUFyQixDQUFBLFlBQUFYLENBQUEsY0FBQUEsQ0FBQSw4QkFBQWUsQ0FBQSxRQUFBVCxDQUFBO0FBQUEsU0FBQWtHLDRCQUFBdkcsQ0FBQSxFQUFBVSxDQUFBLFFBQUFWLENBQUEsMkJBQUFBLENBQUEsU0FBQTRHLGlCQUFBLENBQUE1RyxDQUFBLEVBQUFVLENBQUEsT0FBQVgsQ0FBQSxNQUFBaUgsUUFBQSxDQUFBcEYsSUFBQSxDQUFBNUIsQ0FBQSxFQUFBNEYsS0FBQSw2QkFBQTdGLENBQUEsSUFBQUMsQ0FBQSxDQUFBK0UsV0FBQSxLQUFBaEYsQ0FBQSxHQUFBQyxDQUFBLENBQUErRSxXQUFBLENBQUFDLElBQUEsYUFBQWpGLENBQUEsY0FBQUEsQ0FBQSxHQUFBMEcsS0FBQSxDQUFBQyxJQUFBLENBQUExRyxDQUFBLG9CQUFBRCxDQUFBLCtDQUFBa0gsSUFBQSxDQUFBbEgsQ0FBQSxJQUFBNkcsaUJBQUEsQ0FBQTVHLENBQUEsRUFBQVUsQ0FBQTtBQUFBLFNBQUFrRyxrQkFBQTVHLENBQUEsRUFBQVUsQ0FBQSxhQUFBQSxDQUFBLElBQUFBLENBQUEsR0FBQVYsQ0FBQSxDQUFBNEUsTUFBQSxNQUFBbEUsQ0FBQSxHQUFBVixDQUFBLENBQUE0RSxNQUFBLFlBQUFoRixDQUFBLE1BQUFPLENBQUEsR0FBQXNHLEtBQUEsQ0FBQS9GLENBQUEsR0FBQWQsQ0FBQSxHQUFBYyxDQUFBLEVBQUFkLENBQUEsSUFBQU8sQ0FBQSxDQUFBUCxDQUFBLElBQUFJLENBQUEsQ0FBQUosQ0FBQSxVQUFBTyxDQUFBO0FBQUEsU0FBQStHLG1CQUFBL0csQ0FBQSxFQUFBSixDQUFBLEVBQUFILENBQUEsRUFBQUksQ0FBQSxFQUFBSyxDQUFBLEVBQUFLLENBQUEsRUFBQUUsQ0FBQSxjQUFBSixDQUFBLEdBQUFMLENBQUEsQ0FBQU8sQ0FBQSxFQUFBRSxDQUFBLEdBQUFFLENBQUEsR0FBQU4sQ0FBQSxDQUFBRCxLQUFBLFdBQUFKLENBQUEsZ0JBQUFQLENBQUEsQ0FBQU8sQ0FBQSxLQUFBSyxDQUFBLENBQUE2QyxJQUFBLEdBQUF0RCxDQUFBLENBQUFlLENBQUEsSUFBQXdFLE9BQUEsQ0FBQXRDLE9BQUEsQ0FBQWxDLENBQUEsRUFBQW9DLElBQUEsQ0FBQWxELENBQUEsRUFBQUssQ0FBQTtBQUFBLFNBQUE4RyxrQkFBQWhILENBQUEsNkJBQUFKLENBQUEsU0FBQUgsQ0FBQSxHQUFBd0gsU0FBQSxhQUFBOUIsT0FBQSxXQUFBdEYsQ0FBQSxFQUFBSyxDQUFBLFFBQUFLLENBQUEsR0FBQVAsQ0FBQSxDQUFBa0gsS0FBQSxDQUFBdEgsQ0FBQSxFQUFBSCxDQUFBLFlBQUEwSCxNQUFBbkgsQ0FBQSxJQUFBK0csa0JBQUEsQ0FBQXhHLENBQUEsRUFBQVYsQ0FBQSxFQUFBSyxDQUFBLEVBQUFpSCxLQUFBLEVBQUFDLE1BQUEsVUFBQXBILENBQUEsY0FBQW9ILE9BQUFwSCxDQUFBLElBQUErRyxrQkFBQSxDQUFBeEcsQ0FBQSxFQUFBVixDQUFBLEVBQUFLLENBQUEsRUFBQWlILEtBQUEsRUFBQUMsTUFBQSxXQUFBcEgsQ0FBQSxLQUFBbUgsS0FBQTtBQVFBLElBQU1FLFFBQVEsR0FBR0MsZ0JBQUksQ0FBQ0MsU0FBUyxDQUFDQyxrQkFBTSxDQUFDSCxRQUFRLENBQUM7O0FBRWhEO0FBQUEsU0FDZUksWUFBWUEsQ0FBQUMsRUFBQSxFQUFBQyxHQUFBO0VBQUEsT0FBQUMsYUFBQSxDQUFBVixLQUFBLE9BQUFELFNBQUE7QUFBQTtBQUFBLFNBQUFXLGNBQUE7RUFBQUEsYUFBQSxHQUFBWixpQkFBQSxjQUFBckgsbUJBQUEsR0FBQW1GLElBQUEsQ0FBM0IsU0FBQStDLFFBQ0VDLEdBQVcsRUFDWEMsV0FBbUI7SUFBQSxJQUFBQyxPQUFBO01BQUFDLE9BQUE7TUFBQUMsUUFBQTtNQUFBQyxLQUFBLEdBQUFsQixTQUFBO0lBQUEsT0FBQXRILG1CQUFBLEdBQUFzQixJQUFBLFVBQUFtSCxTQUFBQyxRQUFBO01BQUEsa0JBQUFBLFFBQUEsQ0FBQTlDLElBQUEsR0FBQThDLFFBQUEsQ0FBQXpFLElBQUE7UUFBQTtVQUNuQm9FLE9BQU8sR0FBQUcsS0FBQSxDQUFBMUQsTUFBQSxRQUFBMEQsS0FBQSxRQUFBRyxTQUFBLEdBQUFILEtBQUEsTUFBRyxDQUFDO1VBRUZGLE9BQU8sR0FBRyxDQUFDO1FBQUE7VUFBQSxNQUFFQSxPQUFPLEdBQUdELE9BQU87WUFBQUssUUFBQSxDQUFBekUsSUFBQTtZQUFBO1VBQUE7VUFBQXlFLFFBQUEsQ0FBQXpFLElBQUE7VUFBQSxPQUNkMkUsS0FBSyxDQUFDVCxHQUFHLENBQUM7UUFBQTtVQUEzQkksUUFBUSxHQUFBRyxRQUFBLENBQUEvRSxJQUFBO1VBQUEsS0FDVjRFLFFBQVEsQ0FBQ00sRUFBRTtZQUFBSCxRQUFBLENBQUF6RSxJQUFBO1lBQUE7VUFBQTtVQUFBeUUsUUFBQSxDQUFBekUsSUFBQTtVQUFBLE9BQ1B5RCxRQUFRLENBQ1phLFFBQVEsQ0FBQ08sSUFBSSxFQUNiQyxtQkFBRSxDQUFDQyxpQkFBaUIsQ0FBQ1osV0FBVyxDQUNsQyxDQUFDO1FBQUE7VUFBQSxPQUFBTSxRQUFBLENBQUE1RSxNQUFBO1FBQUE7VUFBQSxNQUVRd0UsT0FBTyxHQUFHRCxPQUFPLEdBQUcsQ0FBQztZQUFBSyxRQUFBLENBQUF6RSxJQUFBO1lBQUE7VUFBQTtVQUM5QmdGLE9BQU8sQ0FBQ0MsSUFBSSx1QkFBQUMsTUFBQSxDQUF1QmhCLEdBQUcsUUFBQWdCLE1BQUEsQ0FBS1osUUFBUSxDQUFDYSxVQUFVLENBQUUsQ0FBQztVQUFBVixRQUFBLENBQUF6RSxJQUFBO1VBQUE7UUFBQTtVQUVqRWdGLE9BQU8sQ0FBQ0ksS0FBSyxvQkFBQUYsTUFBQSxDQUFvQmhCLEdBQUcsYUFBQWdCLE1BQUEsQ0FBVWQsT0FBTyxjQUFXLENBQUM7VUFBQSxNQUMzRCxJQUFJL0UsS0FBSyxrQkFBQTZGLE1BQUEsQ0FBa0JoQixHQUFHLENBQUUsQ0FBQztRQUFBO1VBWkZHLE9BQU8sRUFBRTtVQUFBSSxRQUFBLENBQUF6RSxJQUFBO1VBQUE7UUFBQTtRQUFBO1VBQUEsT0FBQXlFLFFBQUEsQ0FBQTNDLElBQUE7TUFBQTtJQUFBLEdBQUFtQyxPQUFBO0VBQUEsQ0FlbkQ7RUFBQSxPQUFBRCxhQUFBLENBQUFWLEtBQUEsT0FBQUQsU0FBQTtBQUFBO0FBQUEsU0FFY2dDLFVBQVVBLENBQUFDLEdBQUEsRUFBQUMsR0FBQTtFQUFBLE9BQUFDLFdBQUEsQ0FBQWxDLEtBQUEsT0FBQUQsU0FBQTtBQUFBO0FBQUEsU0FBQW1DLFlBQUE7RUFBQUEsV0FBQSxHQUFBcEMsaUJBQUEsY0FBQXJILG1CQUFBLEdBQUFtRixJQUFBLENBQXpCLFNBQUF1RSxTQUNFdEIsV0FBbUIsRUFDbkJ1QixTQUFpQjtJQUFBLE9BQUEzSixtQkFBQSxHQUFBc0IsSUFBQSxVQUFBc0ksVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUFqRSxJQUFBLEdBQUFpRSxTQUFBLENBQUE1RixJQUFBO1FBQUE7VUFBQSxPQUFBNEYsU0FBQSxDQUFBL0YsTUFBQSxXQUVWLElBQUkwQixPQUFPLENBQU8sVUFBQ3RDLE9BQU8sRUFBRTRHLE1BQU0sRUFBSztZQUM1QyxJQUFNQyxHQUFHLEdBQUcsSUFBSUMseUJBQVMsQ0FBQztjQUN4QkMsSUFBSSxFQUFFN0IsV0FBVztjQUNqQjhCLFlBQVksRUFBRTtZQUNoQixDQUFDLENBQUM7WUFFRkgsR0FBRyxDQUFDSSxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQU07Y0FDcEJKLEdBQUcsQ0FBQ0ssT0FBTyxDQUFDLElBQUksRUFBR1QsU0FBUyxFQUFFLFVBQUNVLEdBQUcsRUFBSztnQkFDckNOLEdBQUcsQ0FBQ08sS0FBSyxDQUFDLENBQUM7Z0JBQ1gsSUFBSUQsR0FBRyxFQUFFO2tCQUNQUCxNQUFNLENBQUNPLEdBQUcsQ0FBQztnQkFDYixDQUFDLE1BQU07a0JBQ0xuSCxPQUFPLENBQUMsQ0FBQztnQkFDWDtjQUNGLENBQUMsQ0FBQztZQUNKLENBQUMsQ0FBQztVQUNKLENBQUMsQ0FBQztRQUFBO1FBQUE7VUFBQSxPQUFBMkcsU0FBQSxDQUFBOUQsSUFBQTtNQUFBO0lBQUEsR0FBQTJELFFBQUE7RUFBQSxDQUNIO0VBQUEsT0FBQUQsV0FBQSxDQUFBbEMsS0FBQSxPQUFBRCxTQUFBO0FBQUE7QUFFRCxTQUFTaUQsaUJBQWlCQSxDQUFDQyxpQkFBeUIsRUFBUTtFQUMxRCxJQUFJekIsbUJBQUUsQ0FBQzBCLFFBQVEsQ0FBQ0QsaUJBQWlCLENBQUMsQ0FBQ0UsV0FBVyxDQUFDLENBQUMsRUFBRTtJQUFBLElBQUFDLFNBQUEsR0FBQTVELDBCQUFBLENBQ2hCLElBQUE2RCxxQkFBTyxFQUFDSixpQkFBaUIsQ0FBQztNQUFBSyxLQUFBO0lBQUE7TUFBMUQsS0FBQUYsU0FBQSxDQUFBekksQ0FBQSxNQUFBMkksS0FBQSxHQUFBRixTQUFBLENBQUF0SyxDQUFBLElBQUFrRCxJQUFBLEdBQTREO1FBQUEsSUFBakR1SCxpQkFBaUIsR0FBQUQsS0FBQSxDQUFBcEssS0FBQTtRQUMxQixJQUFNc0ssWUFBWSxHQUFHQyxnQkFBSSxDQUFDQyxJQUFJLENBQUExRCxLQUFBLENBQVR5RCxnQkFBSSxHQUFNUixpQkFBaUIsRUFBQXJCLE1BQUEsQ0FBQTdDLGtCQUFBLENBQUt3RSxpQkFBaUIsR0FBQztRQUN2RSxJQUFJQyxZQUFZLENBQUNHLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtVQUNsQyxJQUFNQyxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUNyQnRDLG1CQUFFLENBQUN1QyxZQUFZLENBQUNQLFlBQVksRUFBRTtZQUFFUSxRQUFRLEVBQUU7VUFBUSxDQUFDLENBQ3JELENBQUM7VUFDRHhDLG1CQUFFLENBQUN5QyxhQUFhLENBQUNULFlBQVksRUFBRUssSUFBSSxDQUFDSyxTQUFTLENBQUNOLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0Q7TUFDRjtJQUFDLFNBQUFkLEdBQUE7TUFBQU0sU0FBQSxDQUFBN0ssQ0FBQSxDQUFBdUssR0FBQTtJQUFBO01BQUFNLFNBQUEsQ0FBQTFJLENBQUE7SUFBQTtFQUNILENBQUMsTUFBTTtJQUNMLElBQU1rSixLQUFJLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUNyQnRDLG1CQUFFLENBQUN1QyxZQUFZLENBQUNkLGlCQUFpQixFQUFFO01BQUVlLFFBQVEsRUFBRTtJQUFRLENBQUMsQ0FDMUQsQ0FBQztJQUNEeEMsbUJBQUUsQ0FBQ3lDLGFBQWEsQ0FBQ2hCLGlCQUFpQixFQUFFWSxJQUFJLENBQUNLLFNBQVMsQ0FBQ04sS0FBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztFQUNwRTtBQUNGO0FBUUEsSUFBTU8sU0FBUyxHQUFHLElBQUlDLHdCQUFTLENBQUM7RUFDOUJDLGlCQUFpQixFQUFFLElBQUk7RUFDdkJDLGdCQUFnQixFQUFFLEtBQUs7RUFDdkJDLFlBQVksRUFBRSxJQUFJO0VBQ2xCQyxtQkFBbUIsRUFBRSxFQUFFO0VBQ3ZCQyxZQUFZLEVBQUUsR0FBRztFQUNqQkMsZUFBZSxFQUFFLEtBQUs7RUFDdEJDLFVBQVUsRUFBRSxJQUFJO0VBQ2hCQyxTQUFTLEVBQUUsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDO0VBQ3BDQyxhQUFhLEVBQUUsS0FBSztFQUNwQkMsbUJBQW1CLEVBQUUsS0FBSztFQUMxQkMsZ0JBQWdCLEVBQUUsU0FBbEJBLGdCQUFnQkEsQ0FBR0MsT0FBZTtJQUFBLE9BQ2hDQSxPQUFPLEtBQUssTUFBTSxHQUFHLE1BQU0sR0FBR0EsT0FBTztFQUFBO0FBQ3pDLENBQUMsQ0FBQzs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEEsU0FRc0JDLGNBQWNBLENBQUFDLEdBQUE7RUFBQSxPQUFBQyxlQUFBLENBQUFuRixLQUFBLE9BQUFELFNBQUE7QUFBQTtBQUFBLFNBQUFvRixnQkFBQTtFQUFBQSxlQUFBLEdBQUFyRixpQkFBQSxjQUFBckgsbUJBQUEsR0FBQW1GLElBQUEsQ0FBN0IsU0FBQXdILFNBQ0xDLElBQTZCO0lBQUEsSUFBQUMsT0FBQSxFQUFBQyxPQUFBLEVBQUFDLE9BQUEsRUFBQTNFLFdBQUEsRUFBQW9DLGlCQUFBLEVBQUF3QyxVQUFBLEVBQUFDLE1BQUEsRUFBQUMsS0FBQTtJQUFBLE9BQUFsTixtQkFBQSxHQUFBc0IsSUFBQSxVQUFBNkwsVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUF4SCxJQUFBLEdBQUF3SCxTQUFBLENBQUFuSixJQUFBO1FBQUE7VUFFckI0SSxPQUFPLEdBQXVCRCxJQUFJLENBQWxDQyxPQUFPLEVBQUVDLE9BQU8sR0FBY0YsSUFBSSxDQUF6QkUsT0FBTyxFQUFFQyxPQUFPLEdBQUtILElBQUksQ0FBaEJHLE9BQU87VUFDM0IzRSxXQUFXLEdBQUc0QyxnQkFBSSxDQUFDQyxJQUFJLENBQUM2QixPQUFPLEtBQUEzRCxNQUFBLENBQUswRCxPQUFPLENBQUNRLFFBQVEsU0FBTSxDQUFDO1VBQzNEN0MsaUJBQWlCLEdBQUdRLGdCQUFJLENBQUNDLElBQUksQ0FBQzZCLE9BQU8sRUFBRUQsT0FBTyxDQUFDUSxRQUFRLENBQUM7VUFDOUR0RSxtQkFBRSxDQUFDdUUsVUFBVSxDQUFDOUMsaUJBQWlCLENBQUM7VUFBQSxLQUU1QnVDLE9BQU8sQ0FBQ25FLEtBQUs7WUFBQXdFLFNBQUEsQ0FBQW5KLElBQUE7WUFBQTtVQUFBO1VBQ2Y7VUFDQSxJQUFJLENBQUM4SSxPQUFPLENBQUNRLE1BQU0sRUFBRTtZQUNuQnRFLE9BQU8sQ0FBQ3VFLEdBQUcsWUFBQXJFLE1BQUEsQ0FBWTBELE9BQU8sQ0FBQ1ksS0FBSyxRQUFBdEUsTUFBQSxDQUFLMEQsT0FBTyxDQUFDUSxRQUFRLFNBQU0sQ0FBQztVQUNsRTtVQUFDRCxTQUFBLENBQUFuSixJQUFBO1VBQUEsT0FDSzZELFlBQVksQ0FBQytFLE9BQU8sQ0FBQzFFLEdBQUcsRUFBRUMsV0FBVyxDQUFDO1FBQUE7VUFFOUMsSUFBSSxDQUFDMkUsT0FBTyxDQUFDUSxNQUFNLEVBQUU7WUFDbkJ0RSxPQUFPLENBQUN1RSxHQUFHLGNBQUFyRSxNQUFBLENBQWMwRCxPQUFPLENBQUNZLEtBQUssUUFBQXRFLE1BQUEsQ0FBSzBELE9BQU8sQ0FBQ1EsUUFBUSxTQUFNLENBQUM7VUFDcEU7VUFBQ0QsU0FBQSxDQUFBbkosSUFBQTtVQUFBLE9BQ0txRixVQUFVLENBQUNsQixXQUFXLEVBQUUwRSxPQUFPLENBQUM7UUFBQTtVQUV0QyxJQUFJRCxPQUFPLENBQUNhLFNBQVMsS0FBSy9FLFNBQVMsRUFBRTtZQUNuQyxJQUFJLENBQUNvRSxPQUFPLENBQUNRLE1BQU0sRUFBRTtjQUNuQnRFLE9BQU8sQ0FBQ3VFLEdBQUcsY0FBQXJFLE1BQUEsQ0FBYzBELE9BQU8sQ0FBQ1ksS0FBSyxRQUFBdEUsTUFBQSxDQUFLMEQsT0FBTyxDQUFDUSxRQUFRLENBQUUsQ0FBQztZQUNoRTtZQUNBUixPQUFPLENBQUNhLFNBQVMsQ0FBQ2IsT0FBTyxFQUFFQyxPQUFPLENBQUM7VUFDckM7O1VBRUE7VUFBQSxLQUNJRCxPQUFPLENBQUNRLFFBQVEsQ0FBQ25DLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFBQWtDLFNBQUEsQ0FBQW5KLElBQUE7WUFBQTtVQUFBO1VBQUErSSxVQUFBLEdBQUFqRywwQkFBQSxDQUNILElBQUE2RCxxQkFBTyxFQUFDSixpQkFBaUIsQ0FBQztVQUFBNEMsU0FBQSxDQUFBeEgsSUFBQTtVQUFBc0gsS0FBQSxnQkFBQWxOLG1CQUFBLEdBQUFtRixJQUFBLFVBQUErSCxNQUFBO1lBQUEsSUFBQXBDLGlCQUFBLEVBQUFDLFlBQUE7WUFBQSxPQUFBL0ssbUJBQUEsR0FBQXNCLElBQUEsVUFBQXFNLE9BQUFDLFNBQUE7Y0FBQSxrQkFBQUEsU0FBQSxDQUFBaEksSUFBQSxHQUFBZ0ksU0FBQSxDQUFBM0osSUFBQTtnQkFBQTtrQkFBL0M2RyxpQkFBaUIsR0FBQW1DLE1BQUEsQ0FBQXhNLEtBQUE7a0JBQ3BCc0ssWUFBWSxHQUFHQyxnQkFBSSxDQUFDQyxJQUFJLENBQUExRCxLQUFBLENBQVR5RCxnQkFBSSxHQUFNUixpQkFBaUIsRUFBQXJCLE1BQUEsQ0FBQTdDLGtCQUFBLENBQUt3RSxpQkFBaUIsR0FBQztrQkFDdkUsSUFBSUMsWUFBWSxDQUFDRyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ2pDbkMsbUJBQUUsQ0FBQzhFLFFBQVEsQ0FBQzlDLFlBQVksRUFBRSxVQUFVVixHQUFHLEVBQUVjLElBQUksRUFBRTtzQkFDN0MsSUFBSWQsR0FBRyxFQUFFLE9BQU9wQixPQUFPLENBQUNJLEtBQUssQ0FBQ2dCLEdBQUcsQ0FBQztzQkFDbEMsSUFBSXlELE1BQU0sR0FBR3BDLFNBQVMsQ0FBQ0wsS0FBSyxDQUFDRixJQUFJLENBQUM7c0JBQ2xDLElBQU00QyxlQUFlLEdBQUdoRCxZQUFZLENBQUNpRCxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQztzQkFDakVqRixtQkFBRSxDQUFDa0YsSUFBSSxDQUFDbEQsWUFBWSxFQUFFZ0QsZUFBZSxFQUFFLFVBQUMxRCxHQUFHLEVBQUs7d0JBQzlDdEIsbUJBQUUsQ0FBQ3lDLGFBQWEsQ0FBQ3VDLGVBQWUsRUFBRTNDLElBQUksQ0FBQ0ssU0FBUyxDQUFDcUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDbEUsSUFBSXpELEdBQUcsRUFBRSxPQUFPcEIsT0FBTyxDQUFDSSxLQUFLLENBQUNnQixHQUFHLENBQUM7c0JBQ3BDLENBQUMsQ0FBQztvQkFDSixDQUFDLENBQUM7a0JBQ0o7Z0JBQUM7Z0JBQUE7a0JBQUEsT0FBQXVELFNBQUEsQ0FBQTdILElBQUE7Y0FBQTtZQUFBLEdBQUFtSCxLQUFBO1VBQUE7VUFBQUYsVUFBQSxDQUFBOUssQ0FBQTtRQUFBO1VBQUEsS0FBQStLLE1BQUEsR0FBQUQsVUFBQSxDQUFBM00sQ0FBQSxJQUFBa0QsSUFBQTtZQUFBNkosU0FBQSxDQUFBbkosSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBbUosU0FBQSxDQUFBL0csYUFBQSxDQUFBNkcsS0FBQTtRQUFBO1VBQUFFLFNBQUEsQ0FBQW5KLElBQUE7VUFBQTtRQUFBO1VBQUFtSixTQUFBLENBQUFuSixJQUFBO1VBQUE7UUFBQTtVQUFBbUosU0FBQSxDQUFBeEgsSUFBQTtVQUFBd0gsU0FBQSxDQUFBYyxFQUFBLEdBQUFkLFNBQUE7VUFBQUosVUFBQSxDQUFBbE4sQ0FBQSxDQUFBc04sU0FBQSxDQUFBYyxFQUFBO1FBQUE7VUFBQWQsU0FBQSxDQUFBeEgsSUFBQTtVQUFBb0gsVUFBQSxDQUFBL0ssQ0FBQTtVQUFBLE9BQUFtTCxTQUFBLENBQUFqSCxNQUFBO1FBQUE7VUFJTDtVQUNBLElBQUksQ0FBQzRHLE9BQU8sQ0FBQ1EsTUFBTSxFQUFFO1lBQ25CdEUsT0FBTyxDQUFDdUUsR0FBRyxlQUFBckUsTUFBQSxDQUFlMEQsT0FBTyxDQUFDWSxLQUFLLFFBQUF0RSxNQUFBLENBQUswRCxPQUFPLENBQUNRLFFBQVEsQ0FBRSxDQUFDO1VBQ2pFO1VBQ0E5QyxpQkFBaUIsQ0FBQ0MsaUJBQWlCLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQTRDLFNBQUEsQ0FBQXJILElBQUE7TUFBQTtJQUFBLEdBQUE0RyxRQUFBO0VBQUEsQ0FDckM7RUFBQSxPQUFBRCxlQUFBLENBQUFuRixLQUFBLE9BQUFELFNBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import fs from "fs-extra";
|
|
2
|
-
import path from "path";
|
|
3
|
-
import stream from "stream";
|
|
4
|
-
import StreamZip from "node-stream-zip";
|
|
5
|
-
import util from "util";
|
|
6
|
-
import { walkDir } from "../file_systems.mjs";
|
|
7
|
-
import { XMLParser } from "fast-xml-parser";
|
|
8
|
-
const pipeline = util.promisify(stream.pipeline);
|
|
9
|
-
|
|
10
|
-
// Function to fetch zip files with retry mechanism
|
|
11
|
-
async function fetchZipFile(url, zipFilePath, retries = 3) {
|
|
12
|
-
for (let attempt = 0; attempt < retries; attempt++) {
|
|
13
|
-
const response = await fetch(url);
|
|
14
|
-
if (response.ok) {
|
|
15
|
-
await pipeline(response.body, fs.createWriteStream(zipFilePath));
|
|
16
|
-
return;
|
|
17
|
-
} else if (attempt < retries - 1) {
|
|
18
|
-
console.warn(`Retrying fetch for ${url}: ${response.statusText}`);
|
|
19
|
-
} else {
|
|
20
|
-
console.error(`Failed to fetch ${url} after ${retries} attempts`);
|
|
21
|
-
throw new Error(`Fetch failed: ${url}`);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
async function extractZip(zipFilePath, outputDir) {
|
|
26
|
-
return new Promise((resolve, reject) => {
|
|
27
|
-
const zip = new StreamZip({
|
|
28
|
-
file: zipFilePath,
|
|
29
|
-
storeEntries: true
|
|
30
|
-
});
|
|
31
|
-
zip.on("ready", () => {
|
|
32
|
-
zip.extract(null, outputDir, err => {
|
|
33
|
-
zip.close();
|
|
34
|
-
if (err) {
|
|
35
|
-
reject(err);
|
|
36
|
-
} else {
|
|
37
|
-
resolve();
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
function reindentJsonFiles(dataDirOrFilePath) {
|
|
44
|
-
if (fs.statSync(dataDirOrFilePath).isDirectory()) {
|
|
45
|
-
for (const dataFileSplitPath of walkDir(dataDirOrFilePath)) {
|
|
46
|
-
const dataFilePath = path.join(dataDirOrFilePath, ...dataFileSplitPath);
|
|
47
|
-
if (dataFilePath.endsWith(".json")) {
|
|
48
|
-
const data = JSON.parse(fs.readFileSync(dataFilePath, {
|
|
49
|
-
encoding: "utf-8"
|
|
50
|
-
}));
|
|
51
|
-
fs.writeFileSync(dataFilePath, JSON.stringify(data, null, 2));
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
} else {
|
|
55
|
-
const data = JSON.parse(fs.readFileSync(dataDirOrFilePath, {
|
|
56
|
-
encoding: "utf-8"
|
|
57
|
-
}));
|
|
58
|
-
fs.writeFileSync(dataDirOrFilePath, JSON.stringify(data, null, 2));
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
const xmlParser = new XMLParser({
|
|
62
|
-
ignoreDeclaration: true,
|
|
63
|
-
ignoreAttributes: false,
|
|
64
|
-
ignorePiTags: true,
|
|
65
|
-
attributeNamePrefix: "",
|
|
66
|
-
textNodeName: "_",
|
|
67
|
-
processEntities: false,
|
|
68
|
-
trimValues: true,
|
|
69
|
-
stopNodes: ["*.texte", "*.intitule"],
|
|
70
|
-
parseTagValue: false,
|
|
71
|
-
parseAttributeValue: false,
|
|
72
|
-
transformTagName: tagName => tagName === "Para" ? "para" : tagName
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Processes a dataset by fetching, unzipping, and converting files from XML to JSON format.
|
|
77
|
-
*
|
|
78
|
-
* @param {any} dataset - The dataset object containing metadata and processing instructions.
|
|
79
|
-
* @param {string} dataDir - The directory where the dataset files will be stored.
|
|
80
|
-
* @param {any} options - Options to control the processing behavior, such as fetching and silent mode.
|
|
81
|
-
* @returns {Promise<void>} A promise that resolves when the dataset processing is complete.
|
|
82
|
-
*/
|
|
83
|
-
export async function processDataset(args) {
|
|
84
|
-
const {
|
|
85
|
-
dataset,
|
|
86
|
-
dataDir,
|
|
87
|
-
options
|
|
88
|
-
} = args;
|
|
89
|
-
const zipFilePath = path.join(dataDir, `${dataset.filename}.zip`);
|
|
90
|
-
const dataDirOrFilePath = path.join(dataDir, dataset.filename);
|
|
91
|
-
fs.removeSync(dataDirOrFilePath);
|
|
92
|
-
if (options.fetch) {
|
|
93
|
-
// Fetch & save ZIP file.
|
|
94
|
-
if (!options.silent) {
|
|
95
|
-
console.log(`Loading ${dataset.title}: ${dataset.filename}.zip`);
|
|
96
|
-
}
|
|
97
|
-
await fetchZipFile(dataset.url, zipFilePath);
|
|
98
|
-
}
|
|
99
|
-
if (!options.silent) {
|
|
100
|
-
console.log(`Unzipping ${dataset.title}: ${dataset.filename}.zip`);
|
|
101
|
-
}
|
|
102
|
-
await extractZip(zipFilePath, dataDir);
|
|
103
|
-
if (dataset.repairZip !== undefined) {
|
|
104
|
-
if (!options.silent) {
|
|
105
|
-
console.log(`Repairing ${dataset.title}: ${dataset.filename}`);
|
|
106
|
-
}
|
|
107
|
-
dataset.repairZip(dataset, dataDir);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// Convert xml to JSON.
|
|
111
|
-
if (dataset.filename.endsWith(".xml")) {
|
|
112
|
-
for (const dataFileSplitPath of walkDir(dataDirOrFilePath)) {
|
|
113
|
-
const dataFilePath = path.join(dataDirOrFilePath, ...dataFileSplitPath);
|
|
114
|
-
if (dataFilePath.endsWith(".xml")) {
|
|
115
|
-
fs.readFile(dataFilePath, function (err, data) {
|
|
116
|
-
if (err) return console.error(err);
|
|
117
|
-
let result = xmlParser.parse(data);
|
|
118
|
-
const newDataFilePath = dataFilePath.replace(/\.[^.]+$/, ".json");
|
|
119
|
-
fs.copy(dataFilePath, newDataFilePath, err => {
|
|
120
|
-
fs.writeFileSync(newDataFilePath, JSON.stringify(result, null, 2));
|
|
121
|
-
if (err) return console.error(err);
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// Reindent JSON file.
|
|
129
|
-
if (!options.silent) {
|
|
130
|
-
console.log(`Reidenting ${dataset.title}: ${dataset.filename}`);
|
|
131
|
-
}
|
|
132
|
-
reindentJsonFiles(dataDirOrFilePath);
|
|
133
|
-
}
|
|
134
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsInBhdGgiLCJzdHJlYW0iLCJTdHJlYW1aaXAiLCJ1dGlsIiwid2Fsa0RpciIsIlhNTFBhcnNlciIsInBpcGVsaW5lIiwicHJvbWlzaWZ5IiwiZmV0Y2haaXBGaWxlIiwidXJsIiwiemlwRmlsZVBhdGgiLCJyZXRyaWVzIiwiYXR0ZW1wdCIsInJlc3BvbnNlIiwiZmV0Y2giLCJvayIsImJvZHkiLCJjcmVhdGVXcml0ZVN0cmVhbSIsImNvbnNvbGUiLCJ3YXJuIiwic3RhdHVzVGV4dCIsImVycm9yIiwiRXJyb3IiLCJleHRyYWN0WmlwIiwib3V0cHV0RGlyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ6aXAiLCJmaWxlIiwic3RvcmVFbnRyaWVzIiwib24iLCJleHRyYWN0IiwiZXJyIiwiY2xvc2UiLCJyZWluZGVudEpzb25GaWxlcyIsImRhdGFEaXJPckZpbGVQYXRoIiwic3RhdFN5bmMiLCJpc0RpcmVjdG9yeSIsImRhdGFGaWxlU3BsaXRQYXRoIiwiZGF0YUZpbGVQYXRoIiwiam9pbiIsImVuZHNXaXRoIiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsInhtbFBhcnNlciIsImlnbm9yZURlY2xhcmF0aW9uIiwiaWdub3JlQXR0cmlidXRlcyIsImlnbm9yZVBpVGFncyIsImF0dHJpYnV0ZU5hbWVQcmVmaXgiLCJ0ZXh0Tm9kZU5hbWUiLCJwcm9jZXNzRW50aXRpZXMiLCJ0cmltVmFsdWVzIiwic3RvcE5vZGVzIiwicGFyc2VUYWdWYWx1ZSIsInBhcnNlQXR0cmlidXRlVmFsdWUiLCJ0cmFuc2Zvcm1UYWdOYW1lIiwidGFnTmFtZSIsInByb2Nlc3NEYXRhc2V0IiwiYXJncyIsImRhdGFzZXQiLCJkYXRhRGlyIiwib3B0aW9ucyIsImZpbGVuYW1lIiwicmVtb3ZlU3luYyIsInNpbGVudCIsImxvZyIsInRpdGxlIiwicmVwYWlyWmlwIiwidW5kZWZpbmVkIiwicmVhZEZpbGUiLCJyZXN1bHQiLCJuZXdEYXRhRmlsZVBhdGgiLCJyZXBsYWNlIiwiY29weSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3Byb2Nlc3Nfb3Blbl9kYXRhc2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHN0cmVhbSBmcm9tIFwic3RyZWFtXCJcbmltcG9ydCBTdHJlYW1aaXAgZnJvbSBcIm5vZGUtc3RyZWFtLXppcFwiXG5pbXBvcnQgdXRpbCBmcm9tIFwidXRpbFwiXG5cbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IFhNTFBhcnNlciB9IGZyb20gXCJmYXN0LXhtbC1wYXJzZXJcIlxuXG5jb25zdCBwaXBlbGluZSA9IHV0aWwucHJvbWlzaWZ5KHN0cmVhbS5waXBlbGluZSlcblxuLy8gRnVuY3Rpb24gdG8gZmV0Y2ggemlwIGZpbGVzIHdpdGggcmV0cnkgbWVjaGFuaXNtXG5hc3luYyBmdW5jdGlvbiBmZXRjaFppcEZpbGUoXG4gIHVybDogc3RyaW5nLFxuICB6aXBGaWxlUGF0aDogc3RyaW5nLFxuICByZXRyaWVzID0gMyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8IHJldHJpZXM7IGF0dGVtcHQrKykge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKVxuICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgYXdhaXQgcGlwZWxpbmUoXG4gICAgICAgIHJlc3BvbnNlLmJvZHkgYXMgdW5rbm93biBhcyBOb2RlSlMuUmVhZGFibGVTdHJlYW0sXG4gICAgICAgIGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHppcEZpbGVQYXRoKSxcbiAgICAgIClcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSBpZiAoYXR0ZW1wdCA8IHJldHJpZXMgLSAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFJldHJ5aW5nIGZldGNoIGZvciAke3VybH06ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggJHt1cmx9IGFmdGVyICR7cmV0cmllc30gYXR0ZW1wdHNgKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGZXRjaCBmYWlsZWQ6ICR7dXJsfWApXG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RaaXAoXG4gIHppcEZpbGVQYXRoOiBzdHJpbmcsXG4gIG91dHB1dERpcjogc3RyaW5nLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgemlwID0gbmV3IFN0cmVhbVppcCh7XG4gICAgICBmaWxlOiB6aXBGaWxlUGF0aCxcbiAgICAgIHN0b3JlRW50cmllczogdHJ1ZSxcbiAgICB9KVxuXG4gICAgemlwLm9uKFwicmVhZHlcIiwgKCkgPT4ge1xuICAgICAgemlwLmV4dHJhY3QobnVsbCEsIG91dHB1dERpciwgKGVycikgPT4ge1xuICAgICAgICB6aXAuY2xvc2UoKVxuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmVqZWN0KGVycilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuICB9KVxufVxuXG5mdW5jdGlvbiByZWluZGVudEpzb25GaWxlcyhkYXRhRGlyT3JGaWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChmcy5zdGF0U3luYyhkYXRhRGlyT3JGaWxlUGF0aCkuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZvciAoY29uc3QgZGF0YUZpbGVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhRGlyT3JGaWxlUGF0aCkpIHtcbiAgICAgIGNvbnN0IGRhdGFGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyT3JGaWxlUGF0aCwgLi4uZGF0YUZpbGVTcGxpdFBhdGgpXG4gICAgICBpZiAoZGF0YUZpbGVQYXRoLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgZnMucmVhZEZpbGVTeW5jKGRhdGFGaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0pLFxuICAgICAgICApXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZGF0YUZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKSlcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoXG4gICAgICBmcy5yZWFkRmlsZVN5bmMoZGF0YURpck9yRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KSxcbiAgICApXG4gICAgZnMud3JpdGVGaWxlU3luYyhkYXRhRGlyT3JGaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMikpXG4gIH1cbn1cblxudHlwZSBQcm9jZXNzRGF0YXNldEFyZ3VtZW50cyA9IHtcbiAgZGF0YXNldDogYW55XG4gIGRhdGFEaXI6IHN0cmluZ1xuICBvcHRpb25zOiBhbnlcbn1cblxuY29uc3QgeG1sUGFyc2VyID0gbmV3IFhNTFBhcnNlcih7XG4gIGlnbm9yZURlY2xhcmF0aW9uOiB0cnVlLFxuICBpZ25vcmVBdHRyaWJ1dGVzOiBmYWxzZSxcbiAgaWdub3JlUGlUYWdzOiB0cnVlLFxuICBhdHRyaWJ1dGVOYW1lUHJlZml4OiBcIlwiLFxuICB0ZXh0Tm9kZU5hbWU6IFwiX1wiLFxuICBwcm9jZXNzRW50aXRpZXM6IGZhbHNlLFxuICB0cmltVmFsdWVzOiB0cnVlLFxuICBzdG9wTm9kZXM6IFtcIioudGV4dGVcIiwgXCIqLmludGl0dWxlXCJdLFxuICBwYXJzZVRhZ1ZhbHVlOiBmYWxzZSxcbiAgcGFyc2VBdHRyaWJ1dGVWYWx1ZTogZmFsc2UsXG4gIHRyYW5zZm9ybVRhZ05hbWU6ICh0YWdOYW1lOiBzdHJpbmcpID0+XG4gICAgdGFnTmFtZSA9PT0gXCJQYXJhXCIgPyBcInBhcmFcIiA6IHRhZ05hbWUsXG59KVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIGRhdGFzZXQgYnkgZmV0Y2hpbmcsIHVuemlwcGluZywgYW5kIGNvbnZlcnRpbmcgZmlsZXMgZnJvbSBYTUwgdG8gSlNPTiBmb3JtYXQuXG4gKlxuICogQHBhcmFtIHthbnl9IGRhdGFzZXQgLSBUaGUgZGF0YXNldCBvYmplY3QgY29udGFpbmluZyBtZXRhZGF0YSBhbmQgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0YURpciAtIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGRhdGFzZXQgZmlsZXMgd2lsbCBiZSBzdG9yZWQuXG4gKiBAcGFyYW0ge2FueX0gb3B0aW9ucyAtIE9wdGlvbnMgdG8gY29udHJvbCB0aGUgcHJvY2Vzc2luZyBiZWhhdmlvciwgc3VjaCBhcyBmZXRjaGluZyBhbmQgc2lsZW50IG1vZGUuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZGF0YXNldCBwcm9jZXNzaW5nIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0RhdGFzZXQoXG4gIGFyZ3M6IFByb2Nlc3NEYXRhc2V0QXJndW1lbnRzLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgZGF0YXNldCwgZGF0YURpciwgb3B0aW9ucyB9ID0gYXJnc1xuICBjb25zdCB6aXBGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyLCBgJHtkYXRhc2V0LmZpbGVuYW1lfS56aXBgKVxuICBjb25zdCBkYXRhRGlyT3JGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICBmcy5yZW1vdmVTeW5jKGRhdGFEaXJPckZpbGVQYXRoKVxuXG4gIGlmIChvcHRpb25zLmZldGNoKSB7XG4gICAgLy8gRmV0Y2ggJiBzYXZlIFpJUCBmaWxlLlxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nICR7ZGF0YXNldC50aXRsZX06ICR7ZGF0YXNldC5maWxlbmFtZX0uemlwYClcbiAgICB9XG4gICAgYXdhaXQgZmV0Y2haaXBGaWxlKGRhdGFzZXQudXJsLCB6aXBGaWxlUGF0aClcbiAgfVxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coYFVuemlwcGluZyAke2RhdGFzZXQudGl0bGV9OiAke2RhdGFzZXQuZmlsZW5hbWV9LnppcGApXG4gIH1cbiAgYXdhaXQgZXh0cmFjdFppcCh6aXBGaWxlUGF0aCwgZGF0YURpcilcblxuICBpZiAoZGF0YXNldC5yZXBhaXJaaXAgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBSZXBhaXJpbmcgJHtkYXRhc2V0LnRpdGxlfTogJHtkYXRhc2V0LmZpbGVuYW1lfWApXG4gICAgfVxuICAgIGRhdGFzZXQucmVwYWlyWmlwKGRhdGFzZXQsIGRhdGFEaXIpXG4gIH1cblxuICAvLyBDb252ZXJ0IHhtbCB0byBKU09OLlxuICBpZiAoZGF0YXNldC5maWxlbmFtZS5lbmRzV2l0aChcIi54bWxcIikpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFGaWxlU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YURpck9yRmlsZVBhdGgpKSB7XG4gICAgICBjb25zdCBkYXRhRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YURpck9yRmlsZVBhdGgsIC4uLmRhdGFGaWxlU3BsaXRQYXRoKVxuICAgICAgaWYgKGRhdGFGaWxlUGF0aC5lbmRzV2l0aChcIi54bWxcIikpIHtcbiAgICAgICAgZnMucmVhZEZpbGUoZGF0YUZpbGVQYXRoLCBmdW5jdGlvbiAoZXJyLCBkYXRhKSB7XG4gICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgICAgICAgIGxldCByZXN1bHQgPSB4bWxQYXJzZXIucGFyc2UoZGF0YSlcbiAgICAgICAgICBjb25zdCBuZXdEYXRhRmlsZVBhdGggPSBkYXRhRmlsZVBhdGgucmVwbGFjZSgvXFwuW14uXSskLywgXCIuanNvblwiKVxuICAgICAgICAgIGZzLmNvcHkoZGF0YUZpbGVQYXRoLCBuZXdEYXRhRmlsZVBhdGgsIChlcnIpID0+IHtcbiAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMobmV3RGF0YUZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpKVxuICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVpbmRlbnQgSlNPTiBmaWxlLlxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coYFJlaWRlbnRpbmcgJHtkYXRhc2V0LnRpdGxlfTogJHtkYXRhc2V0LmZpbGVuYW1lfWApXG4gIH1cbiAgcmVpbmRlbnRKc29uRmlsZXMoZGF0YURpck9yRmlsZVBhdGgpXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEVBQUUsTUFBTSxVQUFVO0FBQ3pCLE9BQU9DLElBQUksTUFBTSxNQUFNO0FBQ3ZCLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLE9BQU9DLFNBQVMsTUFBTSxpQkFBaUI7QUFDdkMsT0FBT0MsSUFBSSxNQUFNLE1BQU07QUFBQSxTQUVkQyxPQUFPO0FBQ2hCLFNBQVNDLFNBQVMsUUFBUSxpQkFBaUI7QUFFM0MsTUFBTUMsUUFBUSxHQUFHSCxJQUFJLENBQUNJLFNBQVMsQ0FBQ04sTUFBTSxDQUFDSyxRQUFRLENBQUM7O0FBRWhEO0FBQ0EsZUFBZUUsWUFBWUEsQ0FDekJDLEdBQVcsRUFDWEMsV0FBbUIsRUFDbkJDLE9BQU8sR0FBRyxDQUFDLEVB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
|