@tricoteuses/assemblee 1.0.0-next.2 → 1.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 +2 -0
- package/lib/api.js +23 -7
- package/lib/api.mjs +41 -0
- package/lib/bugs/acteur-00010/plugin.test.js +139 -33
- package/lib/bugs/acteur-00010/plugin.test.mjs +33 -0
- package/lib/bugs/acteur-00010.js +166 -24
- package/lib/bugs/acteur-00010.mjs +31 -0
- package/lib/bugs/agenda-00002/plugin.test.js +178 -52
- package/lib/bugs/agenda-00002/plugin.test.mjs +52 -0
- package/lib/bugs/agenda-00002.js +507 -143
- package/lib/bugs/agenda-00002.mjs +197 -0
- package/lib/bugs/agenda-00008/plugin.test.js +143 -31
- package/lib/bugs/agenda-00008/plugin.test.mjs +31 -0
- package/lib/bugs/agenda-00008.js +180 -25
- package/lib/bugs/agenda-00008.mjs +30 -0
- package/lib/bugs/agenda-00011/plugin.test.js +371 -156
- package/lib/bugs/agenda-00011/plugin.test.mjs +156 -0
- package/lib/bugs/agenda-00011.js +416 -117
- package/lib/bugs/agenda-00011.mjs +150 -0
- package/lib/bugs.js +591 -54
- package/lib/bugs.mjs +93 -0
- package/lib/cleaners/actes_legislatifs.js +149 -61
- package/lib/cleaners/actes_legislatifs.mjs +311 -0
- package/lib/cleaners/acteurs.js +255 -123
- package/lib/cleaners/acteurs.mjs +211 -0
- package/lib/cleaners/amendements.js +242 -117
- package/lib/cleaners/amendements.mjs +292 -0
- package/lib/cleaners/documents.js +147 -62
- package/lib/cleaners/documents.mjs +162 -0
- package/lib/cleaners/dossiers_legislatifs.js +132 -45
- package/lib/cleaners/dossiers_legislatifs.mjs +123 -0
- package/lib/cleaners/index.js +64 -8
- package/lib/cleaners/index.mjs +8 -0
- package/lib/cleaners/organes.js +54 -21
- package/lib/cleaners/organes.mjs +64 -0
- package/lib/cleaners/reunions.js +237 -127
- package/lib/cleaners/reunions.mjs +318 -0
- package/lib/cleaners/scrutins.js +261 -99
- package/lib/cleaners/scrutins.mjs +254 -0
- package/lib/cleaners/xml.js +81 -16
- package/lib/cleaners/xml.mjs +42 -0
- package/lib/datasets.js +284 -153
- package/lib/datasets.mjs +596 -0
- package/lib/dates.js +93 -34
- package/lib/dates.mjs +98 -0
- package/lib/dossiers_legislatifs.js +107 -33
- package/lib/dossiers_legislatifs.mjs +215 -0
- package/lib/file_systems.js +203 -35
- package/lib/file_systems.mjs +64 -0
- package/lib/git.js +139 -41
- package/lib/git.mjs +114 -0
- package/lib/index.js +310 -16
- package/lib/index.mjs +16 -0
- package/lib/inserters.js +355 -131
- package/lib/inserters.mjs +413 -0
- package/lib/loaders.js +900 -440
- package/lib/loaders.mjs +678 -0
- package/lib/organes.js +15 -5
- package/lib/organes.mjs +18 -0
- package/lib/parsers/documents.js +241 -89
- package/lib/parsers/documents.mjs +433 -0
- package/lib/parsers/index.js +36 -3
- package/lib/parsers/index.mjs +3 -0
- package/lib/parsers/recherche_amendements.js +616 -173
- package/lib/parsers/recherche_amendements.mjs +189 -0
- package/lib/raw_types/acteurs_et_organes.d.ts +36 -148
- package/lib/raw_types/acteurs_et_organes.js +228 -506
- package/lib/raw_types/acteurs_et_organes.mjs +1240 -0
- package/lib/raw_types/agendas.js +165 -75
- package/lib/raw_types/agendas.mjs +944 -0
- package/lib/raw_types/amendements.js +165 -77
- package/lib/raw_types/amendements.mjs +1040 -0
- package/lib/raw_types/dossiers_legislatifs.d.ts +1 -43
- package/lib/raw_types/dossiers_legislatifs.js +181 -143
- package/lib/raw_types/dossiers_legislatifs.mjs +1792 -0
- package/lib/raw_types/scrutins.js +144 -61
- package/lib/raw_types/scrutins.mjs +645 -0
- package/lib/scripts/bugs_helper.js +657 -155
- package/lib/scripts/bugs_helper.mjs +286 -0
- package/lib/scripts/clean_data.js +380 -145
- package/lib/scripts/clean_data.mjs +190 -0
- package/lib/scripts/clean_reorganized_data.js +627 -331
- package/lib/scripts/clean_reorganized_data.mjs +520 -0
- package/lib/scripts/diff_amendements.js +159 -73
- package/lib/scripts/diff_amendements.mjs +234 -0
- package/lib/scripts/document_dossiers_legislatifs.js +570 -288
- package/lib/scripts/document_dossiers_legislatifs.mjs +494 -0
- package/lib/scripts/get_today_reunions.js +37 -20
- package/lib/scripts/get_today_reunions.mjs +41 -0
- package/lib/scripts/merge_scrutins.js +121 -39
- package/lib/scripts/merge_scrutins.mjs +69 -0
- package/lib/scripts/parse_textes_lois.js +179 -125
- package/lib/scripts/parse_textes_lois.mjs +215 -0
- package/lib/scripts/raw_types_from_amendements.js +276 -77
- package/lib/scripts/raw_types_from_amendements.mjs +118 -0
- package/lib/scripts/reorganize_data.js +867 -446
- package/lib/scripts/reorganize_data.mjs +712 -0
- package/lib/scripts/retrieve_deputes_photos.js +378 -157
- package/lib/scripts/retrieve_deputes_photos.mjs +230 -0
- package/lib/scripts/retrieve_documents.js +648 -172
- package/lib/scripts/retrieve_documents.mjs +292 -0
- package/lib/scripts/retrieve_open_data.js +286 -85
- package/lib/scripts/retrieve_open_data.mjs +125 -0
- package/lib/scripts/retrieve_pending_amendments.js +302 -69
- package/lib/scripts/retrieve_pending_amendments.mjs +130 -0
- package/lib/scripts/retrieve_senateurs_photos.js +374 -198
- package/lib/scripts/retrieve_senateurs_photos.mjs +277 -0
- package/lib/scripts/retrieve_textes_lois.js +343 -89
- package/lib/scripts/retrieve_textes_lois.mjs +168 -0
- package/lib/scripts/test_load.js +30 -11
- package/lib/scripts/test_load.mjs +26 -0
- package/lib/scripts/test_load_big_files.js +30 -11
- package/lib/scripts/test_load_big_files.mjs +26 -0
- package/lib/scripts/validate_json.js +370 -120
- package/lib/scripts/validate_json.mjs +216 -0
- package/lib/shared_types/codes_actes.js +50 -15
- package/lib/shared_types/codes_actes.mjs +228 -0
- package/lib/strings.js +16 -3
- package/lib/strings.mjs +7 -0
- package/lib/types/acteurs_et_organes.js +156 -71
- package/lib/types/acteurs_et_organes.mjs +918 -0
- package/lib/types/agendas.js +154 -67
- package/lib/types/agendas.mjs +623 -0
- package/lib/types/amendements.js +166 -77
- package/lib/types/amendements.mjs +885 -0
- package/lib/types/dossiers_legislatifs.d.ts +1 -42
- package/lib/types/dossiers_legislatifs.js +182 -143
- package/lib/types/dossiers_legislatifs.mjs +1120 -0
- package/lib/types/legislatures.js +12 -3
- package/lib/types/legislatures.mjs +9 -0
- package/lib/types/scrutins.js +144 -61
- package/lib/types/scrutins.mjs +528 -0
- package/lib/urls.js +44 -25
- package/lib/urls.mjs +201 -0
- package/package.json +33 -12
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
import assert from "assert";
|
|
2
|
+
import { JSDOM } from "jsdom";
|
|
3
|
+
export function parseTexteLoi(assembleeUrl, page) {
|
|
4
|
+
// Repair HTML.
|
|
5
|
+
const pageSegments = page.split("</style>");
|
|
6
|
+
assert.strictEqual(pageSegments.length, 2, page);
|
|
7
|
+
let html = pageSegments[1].trim();
|
|
8
|
+
assert(html.startsWith("<div"));
|
|
9
|
+
assert(html.endsWith("</div>"));
|
|
10
|
+
html = `<html${html.substring(4, html.length - 6)}</html>`; // Extract subdivisions from HTML.
|
|
11
|
+
|
|
12
|
+
const {
|
|
13
|
+
window
|
|
14
|
+
} = new JSDOM(html);
|
|
15
|
+
const {
|
|
16
|
+
document
|
|
17
|
+
} = window;
|
|
18
|
+
assert.strictEqual(document.children.length, 1);
|
|
19
|
+
const htmlElement = document.children[0];
|
|
20
|
+
assert.strictEqual(htmlElement.children.length, 2);
|
|
21
|
+
const bodyElement = htmlElement.children[1];
|
|
22
|
+
|
|
23
|
+
if (assembleeUrl === "http://www.assemblee-nationale.fr/15/textes/0675.asp") {
|
|
24
|
+
// Repair document.
|
|
25
|
+
assert.strictEqual(bodyElement.children.length, 1);
|
|
26
|
+
const divElement = bodyElement.children[0];
|
|
27
|
+
assert.strictEqual(divElement.tagName, "DIV");
|
|
28
|
+
const newDivElement = bodyElement.insertBefore(document.createElement("div"), divElement);
|
|
29
|
+
bodyElement.insertBefore(document.createElement("br"), divElement);
|
|
30
|
+
|
|
31
|
+
for (const divChild of [...divElement.children]) {
|
|
32
|
+
if (divChild.getAttribute("class") === "a9ArticleNum") {
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
newDivElement.appendChild(divChild);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (bodyElement.children.length < 3) {
|
|
41
|
+
// Occurs in http://www.assemblee-nationale.fr/15/textes/0326.asp.
|
|
42
|
+
window.close(); // Free memory.
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
error: {
|
|
46
|
+
code: -1,
|
|
47
|
+
message: "Texte de loi sans contenu"
|
|
48
|
+
},
|
|
49
|
+
html,
|
|
50
|
+
page
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
assert.strictEqual(bodyElement.children[0].tagName, "DIV"); // First child is a DIV describing the document (Assemblée's header). Skip it for now.
|
|
55
|
+
|
|
56
|
+
let bodyChild = bodyElement.children[1];
|
|
57
|
+
assert.strictEqual(bodyChild.tagName, "BR");
|
|
58
|
+
let alineaElement = null;
|
|
59
|
+
let isMultiLinesHeader = false;
|
|
60
|
+
let level = null;
|
|
61
|
+
let levels = [];
|
|
62
|
+
let lineElements = null;
|
|
63
|
+
let nextParentState = null;
|
|
64
|
+
let paragraphChild = null;
|
|
65
|
+
let paragraphElement = null;
|
|
66
|
+
let state = "nextBodyChild";
|
|
67
|
+
let subAlineaElement = null;
|
|
68
|
+
const subdivisions = [];
|
|
69
|
+
let subdivisionAlineasHtml = null;
|
|
70
|
+
let subdivisionAlineasText = null;
|
|
71
|
+
let subdivisionHeadersHtml = null;
|
|
72
|
+
let subdivisionHeadersText = null;
|
|
73
|
+
|
|
74
|
+
while (state !== null) {
|
|
75
|
+
switch (state) {
|
|
76
|
+
case "alineaElement":
|
|
77
|
+
switch (alineaElement.tagName) {
|
|
78
|
+
case "DIV":
|
|
79
|
+
state = "firstSubAlineaElement";
|
|
80
|
+
break;
|
|
81
|
+
|
|
82
|
+
case "H4":
|
|
83
|
+
// TODO
|
|
84
|
+
nextParentState = "nextAlineaElement";
|
|
85
|
+
paragraphElement = alineaElement;
|
|
86
|
+
state = "firstParagraphChild";
|
|
87
|
+
break;
|
|
88
|
+
|
|
89
|
+
case "P":
|
|
90
|
+
nextParentState = "nextAlineaElement";
|
|
91
|
+
paragraphElement = alineaElement;
|
|
92
|
+
state = "firstParagraphChild";
|
|
93
|
+
break;
|
|
94
|
+
|
|
95
|
+
case "OL":
|
|
96
|
+
// TODO
|
|
97
|
+
state = "nextAlineaElement";
|
|
98
|
+
break;
|
|
99
|
+
|
|
100
|
+
case "TABLE":
|
|
101
|
+
// TODO
|
|
102
|
+
state = "nextAlineaElement";
|
|
103
|
+
break;
|
|
104
|
+
|
|
105
|
+
default:
|
|
106
|
+
return {
|
|
107
|
+
error: {
|
|
108
|
+
code: -2,
|
|
109
|
+
message: `Unexpected tag name for alinea element: ${alineaElement.tagName}`
|
|
110
|
+
},
|
|
111
|
+
html,
|
|
112
|
+
page
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
break;
|
|
117
|
+
|
|
118
|
+
case "firstAlineaElement":
|
|
119
|
+
alineaElement = bodyChild.children[0];
|
|
120
|
+
|
|
121
|
+
if (alineaElement === undefined) {
|
|
122
|
+
// No alinea in current bodyChild: go to next bodyChild.
|
|
123
|
+
state = "nextBodyChild";
|
|
124
|
+
} else {
|
|
125
|
+
state = "alineaElement";
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
break;
|
|
129
|
+
|
|
130
|
+
case "firstParagraphChild":
|
|
131
|
+
paragraphChild = paragraphElement.children[0];
|
|
132
|
+
|
|
133
|
+
if (paragraphChild === undefined) {
|
|
134
|
+
// No child in current paragraph: go to next parent element.
|
|
135
|
+
state = nextParentState;
|
|
136
|
+
} else {
|
|
137
|
+
const headerText = paragraphElement.textContent;
|
|
138
|
+
const nameComputed = (headerText || "").normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/\(nouveau\)/, "").replace(/\(Pour coordination\)/, "").replace(/\(Supprimés?\)/, "").replace(/ /g, " ").replace(/[\-,.…]/g, "").trim().replace(/ {1,}/g, "_");
|
|
139
|
+
const nameUpper = nameComputed.toUpperCase();
|
|
140
|
+
|
|
141
|
+
if (nameUpper === "") {
|
|
142
|
+
// Occurs in:
|
|
143
|
+
// * http://www.assemblee-nationale.fr/15/textes/0445.asp
|
|
144
|
+
// * http://www.assemblee-nationale.fr/15/textes/0626.asp
|
|
145
|
+
// Skip paragraph.
|
|
146
|
+
state = nextParentState;
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const nextLevel = nameUpper.match(/^(RAPPORT_)?ANNEXE(_|$)/) !== null || nameUpper.match(/^ETAT_/) !== null ? 0 : nameUpper.match(/^TOME_/) !== null ? 1 : nameUpper.match(/^PARTIE_/) !== null || nameUpper.match(/^(PREMIERE|SECONDE|DEUXIEME|TROISIEME|QUATRIEME)_PARTIE(_|$)/) !== null ? 2 : nameUpper.match(/^LIVRE_/) !== null ? 3 : nameUpper.match(/^TITRE_/) !== null ? 4 : nameUpper.match(/^SOUSTITRE_/) !== null ? 5 : nameUpper.match(/^CHAPITRE_/) !== null ? 6 : nameUpper.match(/^SECTION_/) !== null ? 7 : nameUpper.match(/^SOUSSECTION_/) !== null ? 8 : nameUpper.match(/^ARTICLES?_/) !== null || // "Exposé des motifs" must be at the same level as article.
|
|
151
|
+
// "Exposé des motifs" without content:
|
|
152
|
+
// * http://www.assemblee-nationale.fr/15/textes/0702.asp
|
|
153
|
+
// "Exposé des motifs" with content:
|
|
154
|
+
// * http://www.assemblee-nationale.fr/15/textes/1326.asp
|
|
155
|
+
// * http://www.assemblee-nationale.fr/15/textes/1610.asp
|
|
156
|
+
nameUpper.match(/^EXPOSE_DES_MOTIFS$/) !== null ? 9 : null;
|
|
157
|
+
|
|
158
|
+
if (nextLevel === null && subdivisions.length === 0) {
|
|
159
|
+
if (nameUpper.match(/^(PROJET|PROPOSITION)_DE_LOI(_|$)/) !== null) {// Occurs in:
|
|
160
|
+
// * http://www.assemblee-nationale.fr/15/textes/0232.asp
|
|
161
|
+
// * http://www.assemblee-nationale.fr/15/textes/0626.asp
|
|
162
|
+
// * http://www.assemblee-nationale.fr/15/textes/0676.asp
|
|
163
|
+
} else if (nameUpper === "JEUX_OLYMPIQUES_ET_PARALYMPIQUES_DE_2024") {// Occurs in http://www.assemblee-nationale.fr/15/textes/0676.asp
|
|
164
|
+
} else if (nameUpper === "TEXTE_DE_LA_COMMISSION_MIXTE_PARITAIRE") {// Occurs in http://www.assemblee-nationale.fr/15/textes/1294.asp
|
|
165
|
+
} else {
|
|
166
|
+
console.log(`Unexpected nameUpper = "${nameUpper}" at beginning of "texte de loi" at ${assembleeUrl}`);
|
|
167
|
+
} // Skip paragraph.
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
state = nextParentState;
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
if (nextLevel !== null) {
|
|
175
|
+
level = nextLevel;
|
|
176
|
+
|
|
177
|
+
while (levels.length > 0 && level < levels[levels.length - 1]) {
|
|
178
|
+
levels.pop();
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (levels.length === 0 || level > levels[levels.length - 1]) {
|
|
182
|
+
levels.push(level);
|
|
183
|
+
} // Articles & "Exposé des motifs" are the only divisions without second title.
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
isMultiLinesHeader = nameUpper.match(/^ARTICLES?_/) === null && nameUpper.match(/^EXPOSE_DES_MOTIFS$/) === null;
|
|
187
|
+
subdivisionAlineasHtml = [];
|
|
188
|
+
subdivisionAlineasText = [];
|
|
189
|
+
subdivisionHeadersHtml = [];
|
|
190
|
+
subdivisionHeadersText = [];
|
|
191
|
+
subdivisions.push({
|
|
192
|
+
html: {
|
|
193
|
+
alineas: subdivisionAlineasHtml,
|
|
194
|
+
headers: subdivisionHeadersHtml
|
|
195
|
+
},
|
|
196
|
+
id: "D_" + nameComputed,
|
|
197
|
+
level: level + 1,
|
|
198
|
+
relativeLevel: levels.length,
|
|
199
|
+
text: {
|
|
200
|
+
alineas: subdivisionAlineasText,
|
|
201
|
+
headers: subdivisionHeadersText
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
lineElements = [];
|
|
207
|
+
state = "paragraphChild";
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
break;
|
|
211
|
+
|
|
212
|
+
case "firstSubAlineaElement":
|
|
213
|
+
subAlineaElement = alineaElement.children[0];
|
|
214
|
+
|
|
215
|
+
if (subAlineaElement === undefined) {
|
|
216
|
+
// No sub-alinea in current alinea: go to next alinea.
|
|
217
|
+
state = "nextAlineaElement";
|
|
218
|
+
} else {
|
|
219
|
+
state = "subAlineaElement";
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
break;
|
|
223
|
+
|
|
224
|
+
case "nextAlineaElement":
|
|
225
|
+
alineaElement = alineaElement.nextElementSibling;
|
|
226
|
+
|
|
227
|
+
if (alineaElement === null) {
|
|
228
|
+
// The bodyChild has been fully parsed. Go to next bodyChild
|
|
229
|
+
state = "nextBodyChild";
|
|
230
|
+
} else {
|
|
231
|
+
state = "alineaElement";
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
break;
|
|
235
|
+
|
|
236
|
+
case "nextBodyChild":
|
|
237
|
+
if (bodyChild.nextElementSibling === null) {
|
|
238
|
+
// The document has been fully parsed.
|
|
239
|
+
state = null;
|
|
240
|
+
} else {
|
|
241
|
+
bodyChild = bodyChild.nextElementSibling;
|
|
242
|
+
|
|
243
|
+
if (bodyChild.tagName === "DIV") {
|
|
244
|
+
state = "firstAlineaElement";
|
|
245
|
+
} else {
|
|
246
|
+
// <P/> is for footnotes
|
|
247
|
+
assert(["BR", "HR", "P"].includes(bodyChild.tagName), `Unexpected tag name "${bodyChild.tagName}" for body child`); // Stay in the same state to go to next bodyChild.
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
break;
|
|
252
|
+
|
|
253
|
+
case "nextParagraphChild":
|
|
254
|
+
paragraphChild = paragraphChild.nextElementSibling;
|
|
255
|
+
|
|
256
|
+
if (paragraphChild === null) {
|
|
257
|
+
// The paragraph element has been fully parsed. Go to next parent element.
|
|
258
|
+
const lineText = lineElements.map(element => element.textContent).join("").trim();
|
|
259
|
+
|
|
260
|
+
if (lineText) {
|
|
261
|
+
const lineHtml = lineElements.map(element => element.outerHTML).join("");
|
|
262
|
+
|
|
263
|
+
if (subdivisionHeadersText.length === 0 || isMultiLinesHeader && subdivisionAlineasText.length === 0) {
|
|
264
|
+
subdivisionHeadersHtml.push(lineHtml);
|
|
265
|
+
subdivisionHeadersText.push(lineText);
|
|
266
|
+
} else {
|
|
267
|
+
subdivisionAlineasHtml.push(lineHtml);
|
|
268
|
+
subdivisionAlineasText.push(lineText);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
if (isMultiLinesHeader && subdivisionHeadersText.length >= 2) {
|
|
273
|
+
isMultiLinesHeader = false;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
lineElements = null;
|
|
277
|
+
state = nextParentState;
|
|
278
|
+
} else {
|
|
279
|
+
state = "paragraphChild";
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
break;
|
|
283
|
+
|
|
284
|
+
case "nextSubAlineaElement":
|
|
285
|
+
subAlineaElement = subAlineaElement.nextElementSibling;
|
|
286
|
+
|
|
287
|
+
if (subAlineaElement === null) {
|
|
288
|
+
// The alineaElement has been fully parsed. Go to next alineaElement.
|
|
289
|
+
state = "nextAlineaElement";
|
|
290
|
+
} else {
|
|
291
|
+
state = "subAlineaElement";
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
break;
|
|
295
|
+
|
|
296
|
+
case "paragraphChild":
|
|
297
|
+
switch (paragraphChild.tagName) {
|
|
298
|
+
case "A":
|
|
299
|
+
{
|
|
300
|
+
lineElements.push(paragraphChild);
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
case "BR":
|
|
305
|
+
{
|
|
306
|
+
const lineText = lineElements.map(element => element.textContent).join("").trim();
|
|
307
|
+
|
|
308
|
+
if (lineText) {
|
|
309
|
+
const lineHtml = lineElements.map(element => element.outerHTML).join("");
|
|
310
|
+
|
|
311
|
+
if (subdivisionHeadersText.length === 0 || isMultiLinesHeader && subdivisionAlineasText.length === 0) {
|
|
312
|
+
subdivisionHeadersHtml.push(lineHtml);
|
|
313
|
+
subdivisionHeadersText.push(lineText);
|
|
314
|
+
} else {
|
|
315
|
+
subdivisionAlineasHtml.push(lineHtml);
|
|
316
|
+
subdivisionAlineasText.push(lineText);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
lineElements = [];
|
|
321
|
+
break;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
case "DEL":
|
|
325
|
+
{
|
|
326
|
+
lineElements.push(paragraphChild);
|
|
327
|
+
break;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
case "IMG":
|
|
331
|
+
{
|
|
332
|
+
lineElements.push(paragraphChild);
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
case "SPAN":
|
|
337
|
+
{
|
|
338
|
+
const className = paragraphChild.getAttribute("class");
|
|
339
|
+
|
|
340
|
+
switch (className) {
|
|
341
|
+
case "aEloiPastille":
|
|
342
|
+
{
|
|
343
|
+
// Skip pastillé SPAN.
|
|
344
|
+
break;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
case "aEloiPastille0":
|
|
348
|
+
{
|
|
349
|
+
// Skip pastillé SPAN.
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
default:
|
|
354
|
+
lineElements.push(paragraphChild);
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
break;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
default:
|
|
361
|
+
return {
|
|
362
|
+
error: {
|
|
363
|
+
code: -3,
|
|
364
|
+
message: `Unexpected tag name for paragraph child: ${paragraphChild.tagName}`
|
|
365
|
+
},
|
|
366
|
+
html,
|
|
367
|
+
page
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
state = "nextParagraphChild";
|
|
372
|
+
break;
|
|
373
|
+
|
|
374
|
+
case "subAlineaElement":
|
|
375
|
+
switch (subAlineaElement.tagName) {
|
|
376
|
+
case "P":
|
|
377
|
+
nextParentState = "nextSubAlineaElement";
|
|
378
|
+
paragraphElement = subAlineaElement;
|
|
379
|
+
state = "firstParagraphChild";
|
|
380
|
+
break;
|
|
381
|
+
|
|
382
|
+
case "TABLE":
|
|
383
|
+
// TODO
|
|
384
|
+
state = "nextSubAlineaElement";
|
|
385
|
+
break;
|
|
386
|
+
|
|
387
|
+
default:
|
|
388
|
+
return {
|
|
389
|
+
error: {
|
|
390
|
+
code: -4,
|
|
391
|
+
message: `Unexpected tag name for sub alinea element: ${subAlineaElement.tagName}`
|
|
392
|
+
},
|
|
393
|
+
html,
|
|
394
|
+
page
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
break;
|
|
399
|
+
state = "nextSubAlineaElement";
|
|
400
|
+
break;
|
|
401
|
+
|
|
402
|
+
default:
|
|
403
|
+
throw `Unexpected state: ${state}`;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
window.close(); // Free memory.
|
|
408
|
+
|
|
409
|
+
return {
|
|
410
|
+
error: null,
|
|
411
|
+
html,
|
|
412
|
+
page,
|
|
413
|
+
subdivisions,
|
|
414
|
+
url: assembleeUrl
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
export async function retrieveTexteLoiParsed(fetch, assembleeUrl) {
|
|
418
|
+
const response = await fetch(assembleeUrl);
|
|
419
|
+
const page = await response.text();
|
|
420
|
+
|
|
421
|
+
if (!response.ok) {
|
|
422
|
+
return {
|
|
423
|
+
error: {
|
|
424
|
+
code: response.status,
|
|
425
|
+
message: response.statusText
|
|
426
|
+
},
|
|
427
|
+
page
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
return parseTexteLoi(assembleeUrl, page);
|
|
432
|
+
}
|
|
433
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJKU0RPTSIsInBhcnNlVGV4dGVMb2kiLCJhc3NlbWJsZWVVcmwiLCJwYWdlIiwicGFnZVNlZ21lbnRzIiwic3BsaXQiLCJzdHJpY3RFcXVhbCIsImxlbmd0aCIsImh0bWwiLCJ0cmltIiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwic3Vic3RyaW5nIiwid2luZG93IiwiZG9jdW1lbnQiLCJjaGlsZHJlbiIsImh0bWxFbGVtZW50IiwiYm9keUVsZW1lbnQiLCJkaXZFbGVtZW50IiwidGFnTmFtZSIsIm5ld0RpdkVsZW1lbnQiLCJpbnNlcnRCZWZvcmUiLCJjcmVhdGVFbGVtZW50IiwiZGl2Q2hpbGQiLCJnZXRBdHRyaWJ1dGUiLCJhcHBlbmRDaGlsZCIsImNsb3NlIiwiZXJyb3IiLCJjb2RlIiwibWVzc2FnZSIsImJvZHlDaGlsZCIsImFsaW5lYUVsZW1lbnQiLCJpc011bHRpTGluZXNIZWFkZXIiLCJsZXZlbCIsImxldmVscyIsImxpbmVFbGVtZW50cyIsIm5leHRQYXJlbnRTdGF0ZSIsInBhcmFncmFwaENoaWxkIiwicGFyYWdyYXBoRWxlbWVudCIsInN0YXRlIiwic3ViQWxpbmVhRWxlbWVudCIsInN1YmRpdmlzaW9ucyIsInN1YmRpdmlzaW9uQWxpbmVhc0h0bWwiLCJzdWJkaXZpc2lvbkFsaW5lYXNUZXh0Iiwic3ViZGl2aXNpb25IZWFkZXJzSHRtbCIsInN1YmRpdmlzaW9uSGVhZGVyc1RleHQiLCJ1bmRlZmluZWQiLCJoZWFkZXJUZXh0IiwidGV4dENvbnRlbnQiLCJuYW1lQ29tcHV0ZWQiLCJub3JtYWxpemUiLCJyZXBsYWNlIiwibmFtZVVwcGVyIiwidG9VcHBlckNhc2UiLCJuZXh0TGV2ZWwiLCJtYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJwb3AiLCJwdXNoIiwiYWxpbmVhcyIsImhlYWRlcnMiLCJpZCIsInJlbGF0aXZlTGV2ZWwiLCJ0ZXh0IiwibmV4dEVsZW1lbnRTaWJsaW5nIiwiaW5jbHVkZXMiLCJsaW5lVGV4dCIsIm1hcCIsImVsZW1lbnQiLCJqb2luIiwibGluZUh0bWwiLCJvdXRlckhUTUwiLCJjbGFzc05hbWUiLCJ1cmwiLCJyZXRyaWV2ZVRleHRlTG9pUGFyc2VkIiwiZmV0Y2giLCJyZXNwb25zZSIsIm9rIiwic3RhdHVzIiwic3RhdHVzVGV4dCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZXJzL2RvY3VtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IHsgSlNET00gfSBmcm9tIFwianNkb21cIlxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUZXh0ZUxvaShhc3NlbWJsZWVVcmw6IHN0cmluZywgcGFnZTogc3RyaW5nKSB7XG4gIC8vIFJlcGFpciBIVE1MLlxuICBjb25zdCBwYWdlU2VnbWVudHMgPSBwYWdlLnNwbGl0KFwiPC9zdHlsZT5cIilcbiAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhZ2VTZWdtZW50cy5sZW5ndGgsIDIsIHBhZ2UpXG4gIGxldCBodG1sID0gcGFnZVNlZ21lbnRzWzFdLnRyaW0oKVxuICBhc3NlcnQoaHRtbC5zdGFydHNXaXRoKFwiPGRpdlwiKSlcbiAgYXNzZXJ0KGh0bWwuZW5kc1dpdGgoXCI8L2Rpdj5cIikpXG4gIGh0bWwgPSBgPGh0bWwke2h0bWwuc3Vic3RyaW5nKDQsIGh0bWwubGVuZ3RoIC0gNil9PC9odG1sPmBcblxuICAvLyBFeHRyYWN0IHN1YmRpdmlzaW9ucyBmcm9tIEhUTUwuXG4gIGNvbnN0IHsgd2luZG93IH0gPSBuZXcgSlNET00oaHRtbClcbiAgY29uc3QgeyBkb2N1bWVudCB9ID0gd2luZG93XG4gIGFzc2VydC5zdHJpY3RFcXVhbChkb2N1bWVudC5jaGlsZHJlbi5sZW5ndGgsIDEpXG4gIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQuY2hpbGRyZW5bMF1cbiAgYXNzZXJ0LnN0cmljdEVxdWFsKGh0bWxFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCwgMilcbiAgY29uc3QgYm9keUVsZW1lbnQgPSBodG1sRWxlbWVudC5jaGlsZHJlblsxXVxuICBpZiAoYXNzZW1ibGVlVXJsID09PSBcImh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDY3NS5hc3BcIikge1xuICAgIC8vIFJlcGFpciBkb2N1bWVudC5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYm9keUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoLCAxKVxuICAgIGNvbnN0IGRpdkVsZW1lbnQgPSBib2R5RWxlbWVudC5jaGlsZHJlblswXVxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChkaXZFbGVtZW50LnRhZ05hbWUsIFwiRElWXCIpXG4gICAgY29uc3QgbmV3RGl2RWxlbWVudCA9IGJvZHlFbGVtZW50Lmluc2VydEJlZm9yZShcbiAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksXG4gICAgICBkaXZFbGVtZW50LFxuICAgIClcbiAgICBib2R5RWxlbWVudC5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJyXCIpLCBkaXZFbGVtZW50KVxuICAgIGZvciAoY29uc3QgZGl2Q2hpbGQgb2YgWy4uLmRpdkVsZW1lbnQuY2hpbGRyZW5dKSB7XG4gICAgICBpZiAoZGl2Q2hpbGQuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIikgPT09IFwiYTlBcnRpY2xlTnVtXCIpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIG5ld0RpdkVsZW1lbnQuYXBwZW5kQ2hpbGQoZGl2Q2hpbGQpXG4gICAgfVxuICB9XG4gIGlmIChib2R5RWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPCAzKSB7XG4gICAgLy8gT2NjdXJzIGluIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDMyNi5hc3AuXG4gICAgd2luZG93LmNsb3NlKCkgLy8gRnJlZSBtZW1vcnkuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiB7IGNvZGU6IC0xLCBtZXNzYWdlOiBcIlRleHRlIGRlIGxvaSBzYW5zIGNvbnRlbnVcIiB9LFxuICAgICAgaHRtbCxcbiAgICAgIHBhZ2UsXG4gICAgfVxuICB9XG4gIGFzc2VydC5zdHJpY3RFcXVhbChib2R5RWxlbWVudC5jaGlsZHJlblswXS50YWdOYW1lLCBcIkRJVlwiKVxuICAvLyBGaXJzdCBjaGlsZCBpcyBhIERJViBkZXNjcmliaW5nIHRoZSBkb2N1bWVudCAoQXNzZW1ibMOpZSdzIGhlYWRlcikuIFNraXAgaXQgZm9yIG5vdy5cbiAgbGV0IGJvZHlDaGlsZCA9IGJvZHlFbGVtZW50LmNoaWxkcmVuWzFdXG4gIGFzc2VydC5zdHJpY3RFcXVhbChib2R5Q2hpbGQudGFnTmFtZSwgXCJCUlwiKVxuICBsZXQgYWxpbmVhRWxlbWVudDogRWxlbWVudCB8IG51bGwgPSBudWxsXG4gIGxldCBpc011bHRpTGluZXNIZWFkZXI6IGJvb2xlYW4gPSBmYWxzZVxuICBsZXQgbGV2ZWw6IG51bWJlciB8IG51bGwgPSBudWxsXG4gIGxldCBsZXZlbHM6IG51bWJlcltdID0gW11cbiAgbGV0IGxpbmVFbGVtZW50czogRWxlbWVudFtdIHwgbnVsbCA9IG51bGxcbiAgbGV0IG5leHRQYXJlbnRTdGF0ZSA9IG51bGxcbiAgbGV0IHBhcmFncmFwaENoaWxkOiBFbGVtZW50IHwgbnVsbCA9IG51bGxcbiAgbGV0IHBhcmFncmFwaEVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsID0gbnVsbFxuICBsZXQgc3RhdGU6IHN0cmluZyB8IG51bGwgPSBcIm5leHRCb2R5Q2hpbGRcIlxuICBsZXQgc3ViQWxpbmVhRWxlbWVudDogRWxlbWVudCB8IG51bGwgPSBudWxsXG4gIGNvbnN0IHN1YmRpdmlzaW9ucyA9IFtdXG4gIGxldCBzdWJkaXZpc2lvbkFsaW5lYXNIdG1sOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gIGxldCBzdWJkaXZpc2lvbkFsaW5lYXNUZXh0OiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gIGxldCBzdWJkaXZpc2lvbkhlYWRlcnNIdG1sOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gIGxldCBzdWJkaXZpc2lvbkhlYWRlcnNUZXh0OiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gIHdoaWxlIChzdGF0ZSAhPT0gbnVsbCkge1xuICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgIGNhc2UgXCJhbGluZWFFbGVtZW50XCI6XG4gICAgICAgIHN3aXRjaCAoYWxpbmVhRWxlbWVudCEudGFnTmFtZSkge1xuICAgICAgICAgIGNhc2UgXCJESVZcIjpcbiAgICAgICAgICAgIHN0YXRlID0gXCJmaXJzdFN1YkFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIFwiSDRcIjpcbiAgICAgICAgICAgIC8vIFRPRE9cbiAgICAgICAgICAgIG5leHRQYXJlbnRTdGF0ZSA9IFwibmV4dEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgICAgcGFyYWdyYXBoRWxlbWVudCA9IGFsaW5lYUVsZW1lbnRcbiAgICAgICAgICAgIHN0YXRlID0gXCJmaXJzdFBhcmFncmFwaENoaWxkXCJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSBcIlBcIjpcbiAgICAgICAgICAgIG5leHRQYXJlbnRTdGF0ZSA9IFwibmV4dEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgICAgcGFyYWdyYXBoRWxlbWVudCA9IGFsaW5lYUVsZW1lbnRcbiAgICAgICAgICAgIHN0YXRlID0gXCJmaXJzdFBhcmFncmFwaENoaWxkXCJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSBcIk9MXCI6XG4gICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICBzdGF0ZSA9IFwibmV4dEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIFwiVEFCTEVcIjpcbiAgICAgICAgICAgIC8vIFRPRE9cbiAgICAgICAgICAgIHN0YXRlID0gXCJuZXh0QWxpbmVhRWxlbWVudFwiXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICAgIGNvZGU6IC0yLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBVbmV4cGVjdGVkIHRhZyBuYW1lIGZvciBhbGluZWEgZWxlbWVudDogJHtcbiAgICAgICAgICAgICAgICAgIGFsaW5lYUVsZW1lbnQhLnRhZ05hbWVcbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaHRtbCxcbiAgICAgICAgICAgICAgcGFnZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcImZpcnN0QWxpbmVhRWxlbWVudFwiOlxuICAgICAgICBhbGluZWFFbGVtZW50ID0gYm9keUNoaWxkLmNoaWxkcmVuWzBdXG4gICAgICAgIGlmIChhbGluZWFFbGVtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBObyBhbGluZWEgaW4gY3VycmVudCBib2R5Q2hpbGQ6IGdvIHRvIG5leHQgYm9keUNoaWxkLlxuICAgICAgICAgIHN0YXRlID0gXCJuZXh0Qm9keUNoaWxkXCJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZSA9IFwiYWxpbmVhRWxlbWVudFwiXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJmaXJzdFBhcmFncmFwaENoaWxkXCI6XG4gICAgICAgIHBhcmFncmFwaENoaWxkID0gcGFyYWdyYXBoRWxlbWVudCEuY2hpbGRyZW5bMF1cbiAgICAgICAgaWYgKHBhcmFncmFwaENoaWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBObyBjaGlsZCBpbiBjdXJyZW50IHBhcmFncmFwaDogZ28gdG8gbmV4dCBwYXJlbnQgZWxlbWVudC5cbiAgICAgICAgICBzdGF0ZSA9IG5leHRQYXJlbnRTdGF0ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGhlYWRlclRleHQgPSBwYXJhZ3JhcGhFbGVtZW50IS50ZXh0Q29udGVudFxuICAgICAgICAgIGNvbnN0IG5hbWVDb21wdXRlZCA9IChoZWFkZXJUZXh0IHx8IFwiXCIpXG4gICAgICAgICAgICAubm9ybWFsaXplKFwiTkZEXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgXCJcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXChub3V2ZWF1XFwpLywgXCJcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXChQb3VyIGNvb3JkaW5hdGlvblxcKS8sIFwiXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwoU3VwcHJpbcOpcz9cXCkvLCBcIlwiKVxuICAgICAgICAgICAgLnJlcGxhY2UoL8KgL2csIFwiIFwiKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1tcXC0sLuKApl0vZywgXCJcIilcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5yZXBsYWNlKC8gezEsfS9nLCBcIl9cIilcbiAgICAgICAgICBjb25zdCBuYW1lVXBwZXIgPSBuYW1lQ29tcHV0ZWQudG9VcHBlckNhc2UoKVxuICAgICAgICAgIGlmIChuYW1lVXBwZXIgPT09IFwiXCIpIHtcbiAgICAgICAgICAgIC8vIE9jY3VycyBpbjpcbiAgICAgICAgICAgIC8vICogaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLzE1L3RleHRlcy8wNDQ1LmFzcFxuICAgICAgICAgICAgLy8gKiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzA2MjYuYXNwXG4gICAgICAgICAgICAvLyBTa2lwIHBhcmFncmFwaC5cbiAgICAgICAgICAgIHN0YXRlID0gbmV4dFBhcmVudFN0YXRlXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBuZXh0TGV2ZWwgPVxuICAgICAgICAgICAgbmFtZVVwcGVyLm1hdGNoKC9eKFJBUFBPUlRfKT9BTk5FWEUoX3wkKS8pICE9PSBudWxsIHx8XG4gICAgICAgICAgICBuYW1lVXBwZXIubWF0Y2goL15FVEFUXy8pICE9PSBudWxsXG4gICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICA6IG5hbWVVcHBlci5tYXRjaCgvXlRPTUVfLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eUEFSVElFXy8pICE9PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgbmFtZVVwcGVyLm1hdGNoKFxuICAgICAgICAgICAgICAgICAgL14oUFJFTUlFUkV8U0VDT05ERXxERVVYSUVNRXxUUk9JU0lFTUV8UVVBVFJJRU1FKV9QQVJUSUUoX3wkKS8sXG4gICAgICAgICAgICAgICAgKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDJcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15MSVZSRV8vKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDNcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15USVRSRV8vKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDRcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15TT1VTVElUUkVfLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyA1XG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eQ0hBUElUUkVfLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyA2XG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eU0VDVElPTl8vKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDdcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15TT1VTU0VDVElPTl8vKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDhcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15BUlRJQ0xFUz9fLykgIT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAvLyBcIkV4cG9zw6kgZGVzIG1vdGlmc1wiIG11c3QgYmUgYXQgdGhlIHNhbWUgbGV2ZWwgYXMgYXJ0aWNsZS5cbiAgICAgICAgICAgICAgICAvLyBcIkV4cG9zw6kgZGVzIG1vdGlmc1wiIHdpdGhvdXQgY29udGVudDpcbiAgICAgICAgICAgICAgICAvLyAqIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDcwMi5hc3BcbiAgICAgICAgICAgICAgICAvLyBcIkV4cG9zw6kgZGVzIG1vdGlmc1wiIHdpdGggY29udGVudDpcbiAgICAgICAgICAgICAgICAvLyAqIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMTMyNi5hc3BcbiAgICAgICAgICAgICAgICAvLyAqIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMTYxMC5hc3BcbiAgICAgICAgICAgICAgICBuYW1lVXBwZXIubWF0Y2goL15FWFBPU0VfREVTX01PVElGUyQvKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDlcbiAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgaWYgKG5leHRMZXZlbCA9PT0gbnVsbCAmJiBzdWJkaXZpc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBpZiAobmFtZVVwcGVyLm1hdGNoKC9eKFBST0pFVHxQUk9QT1NJVElPTilfREVfTE9JKF98JCkvKSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAvLyBPY2N1cnMgaW46XG4gICAgICAgICAgICAgIC8vICogaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLzE1L3RleHRlcy8wMjMyLmFzcFxuICAgICAgICAgICAgICAvLyAqIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDYyNi5hc3BcbiAgICAgICAgICAgICAgLy8gKiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzA2NzYuYXNwXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICBuYW1lVXBwZXIgPT09IFwiSkVVWF9PTFlNUElRVUVTX0VUX1BBUkFMWU1QSVFVRVNfREVfMjAyNFwiXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgLy8gT2NjdXJzIGluIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDY3Ni5hc3BcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZVVwcGVyID09PSBcIlRFWFRFX0RFX0xBX0NPTU1JU1NJT05fTUlYVEVfUEFSSVRBSVJFXCIpIHtcbiAgICAgICAgICAgICAgLy8gT2NjdXJzIGluIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMTI5NC5hc3BcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIGBVbmV4cGVjdGVkIG5hbWVVcHBlciA9IFwiJHtuYW1lVXBwZXJ9XCIgYXQgYmVnaW5uaW5nIG9mIFwidGV4dGUgZGUgbG9pXCIgYXQgJHthc3NlbWJsZWVVcmx9YCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU2tpcCBwYXJhZ3JhcGguXG4gICAgICAgICAgICBzdGF0ZSA9IG5leHRQYXJlbnRTdGF0ZVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5leHRMZXZlbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbGV2ZWwgPSBuZXh0TGV2ZWxcbiAgICAgICAgICAgIHdoaWxlIChsZXZlbHMubGVuZ3RoID4gMCAmJiBsZXZlbCA8IGxldmVsc1tsZXZlbHMubGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgICAgICAgbGV2ZWxzLnBvcCgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGV2ZWxzLmxlbmd0aCA9PT0gMCB8fCBsZXZlbCA+IGxldmVsc1tsZXZlbHMubGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgICAgICAgbGV2ZWxzLnB1c2gobGV2ZWwpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBcnRpY2xlcyAmIFwiRXhwb3PDqSBkZXMgbW90aWZzXCIgYXJlIHRoZSBvbmx5IGRpdmlzaW9ucyB3aXRob3V0IHNlY29uZCB0aXRsZS5cbiAgICAgICAgICAgIGlzTXVsdGlMaW5lc0hlYWRlciA9XG4gICAgICAgICAgICAgIG5hbWVVcHBlci5tYXRjaCgvXkFSVElDTEVTP18vKSA9PT0gbnVsbCAmJlxuICAgICAgICAgICAgICBuYW1lVXBwZXIubWF0Y2goL15FWFBPU0VfREVTX01PVElGUyQvKSA9PT0gbnVsbFxuICAgICAgICAgICAgc3ViZGl2aXNpb25BbGluZWFzSHRtbCA9IFtdXG4gICAgICAgICAgICBzdWJkaXZpc2lvbkFsaW5lYXNUZXh0ID0gW11cbiAgICAgICAgICAgIHN1YmRpdmlzaW9uSGVhZGVyc0h0bWwgPSBbXVxuICAgICAgICAgICAgc3ViZGl2aXNpb25IZWFkZXJzVGV4dCA9IFtdXG4gICAgICAgICAgICBzdWJkaXZpc2lvbnMucHVzaCh7XG4gICAgICAgICAgICAgIGh0bWw6IHtcbiAgICAgICAgICAgICAgICBhbGluZWFzOiBzdWJkaXZpc2lvbkFsaW5lYXNIdG1sLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHN1YmRpdmlzaW9uSGVhZGVyc0h0bWwsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGlkOiBcIkRfXCIgKyBuYW1lQ29tcHV0ZWQsXG4gICAgICAgICAgICAgIGxldmVsOiBsZXZlbCArIDEsXG4gICAgICAgICAgICAgIHJlbGF0aXZlTGV2ZWw6IGxldmVscy5sZW5ndGgsXG4gICAgICAgICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgICAgICBhbGluZWFzOiBzdWJkaXZpc2lvbkFsaW5lYXNUZXh0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHN1YmRpdmlzaW9uSGVhZGVyc1RleHQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICBsaW5lRWxlbWVudHMgPSBbXVxuICAgICAgICAgIHN0YXRlID0gXCJwYXJhZ3JhcGhDaGlsZFwiXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJmaXJzdFN1YkFsaW5lYUVsZW1lbnRcIjpcbiAgICAgICAgc3ViQWxpbmVhRWxlbWVudCA9IGFsaW5lYUVsZW1lbnQhLmNoaWxkcmVuWzBdXG4gICAgICAgIGlmIChzdWJBbGluZWFFbGVtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBObyBzdWItYWxpbmVhIGluIGN1cnJlbnQgYWxpbmVhOiBnbyB0byBuZXh0IGFsaW5lYS5cbiAgICAgICAgICBzdGF0ZSA9IFwibmV4dEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlID0gXCJzdWJBbGluZWFFbGVtZW50XCJcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcIm5leHRBbGluZWFFbGVtZW50XCI6XG4gICAgICAgIGFsaW5lYUVsZW1lbnQgPSBhbGluZWFFbGVtZW50IS5uZXh0RWxlbWVudFNpYmxpbmdcbiAgICAgICAgaWYgKGFsaW5lYUVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAvLyBUaGUgYm9keUNoaWxkIGhhcyBiZWVuIGZ1bGx5IHBhcnNlZC4gR28gdG8gbmV4dCBib2R5Q2hpbGRcbiAgICAgICAgICBzdGF0ZSA9IFwibmV4dEJvZHlDaGlsZFwiXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUgPSBcImFsaW5lYUVsZW1lbnRcIlxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwibmV4dEJvZHlDaGlsZFwiOlxuICAgICAgICBpZiAoYm9keUNoaWxkLm5leHRFbGVtZW50U2libGluZyA9PT0gbnVsbCkge1xuICAgICAgICAgIC8vIFRoZSBkb2N1bWVudCBoYXMgYmVlbiBmdWxseSBwYXJzZWQuXG4gICAgICAgICAgc3RhdGUgPSBudWxsXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYm9keUNoaWxkID0gYm9keUNoaWxkLm5leHRFbGVtZW50U2libGluZ1xuICAgICAgICAgIGlmIChib2R5Q2hpbGQudGFnTmFtZSA9PT0gXCJESVZcIikge1xuICAgICAgICAgICAgc3RhdGUgPSBcImZpcnN0QWxpbmVhRWxlbWVudFwiXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIDxQLz4gaXMgZm9yIGZvb3Rub3Rlc1xuICAgICAgICAgICAgYXNzZXJ0KFxuICAgICAgICAgICAgICBbXCJCUlwiLCBcIkhSXCIsIFwiUFwiXS5pbmNsdWRlcyhib2R5Q2hpbGQudGFnTmFtZSksXG4gICAgICAgICAgICAgIGBVbmV4cGVjdGVkIHRhZyBuYW1lIFwiJHtib2R5Q2hpbGQudGFnTmFtZX1cIiBmb3IgYm9keSBjaGlsZGAsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAvLyBTdGF5IGluIHRoZSBzYW1lIHN0YXRlIHRvIGdvIHRvIG5leHQgYm9keUNoaWxkLlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcIm5leHRQYXJhZ3JhcGhDaGlsZFwiOlxuICAgICAgICBwYXJhZ3JhcGhDaGlsZCA9IHBhcmFncmFwaENoaWxkIS5uZXh0RWxlbWVudFNpYmxpbmdcbiAgICAgICAgaWYgKHBhcmFncmFwaENoaWxkID09PSBudWxsKSB7XG4gICAgICAgICAgLy8gVGhlIHBhcmFncmFwaCBlbGVtZW50IGhhcyBiZWVuIGZ1bGx5IHBhcnNlZC4gR28gdG8gbmV4dCBwYXJlbnQgZWxlbWVudC5cbiAgICAgICAgICBjb25zdCBsaW5lVGV4dCA9IGxpbmVFbGVtZW50cyFcbiAgICAgICAgICAgIC5tYXAoKGVsZW1lbnQpID0+IGVsZW1lbnQudGV4dENvbnRlbnQpXG4gICAgICAgICAgICAuam9pbihcIlwiKVxuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgIGlmIChsaW5lVGV4dCkge1xuICAgICAgICAgICAgY29uc3QgbGluZUh0bWwgPSBsaW5lRWxlbWVudHMhXG4gICAgICAgICAgICAgIC5tYXAoKGVsZW1lbnQpID0+IGVsZW1lbnQub3V0ZXJIVE1MKVxuICAgICAgICAgICAgICAuam9pbihcIlwiKVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBzdWJkaXZpc2lvbkhlYWRlcnNUZXh0IS5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgICAgKGlzTXVsdGlMaW5lc0hlYWRlciAmJiBzdWJkaXZpc2lvbkFsaW5lYXNUZXh0IS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgc3ViZGl2aXNpb25IZWFkZXJzSHRtbCEucHVzaChsaW5lSHRtbClcbiAgICAgICAgICAgICAgc3ViZGl2aXNpb25IZWFkZXJzVGV4dCEucHVzaChsaW5lVGV4dClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN1YmRpdmlzaW9uQWxpbmVhc0h0bWwhLnB1c2gobGluZUh0bWwpXG4gICAgICAgICAgICAgIHN1YmRpdmlzaW9uQWxpbmVhc1RleHQhLnB1c2gobGluZVRleHQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc011bHRpTGluZXNIZWFkZXIgJiYgc3ViZGl2aXNpb25IZWFkZXJzVGV4dCEubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgIGlzTXVsdGlMaW5lc0hlYWRlciA9IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIGxpbmVFbGVtZW50cyA9IG51bGxcbiAgICAgICAgICBzdGF0ZSA9IG5leHRQYXJlbnRTdGF0ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlID0gXCJwYXJhZ3JhcGhDaGlsZFwiXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJuZXh0U3ViQWxpbmVhRWxlbWVudFwiOlxuICAgICAgICBzdWJBbGluZWFFbGVtZW50ID0gc3ViQWxpbmVhRWxlbWVudCEubmV4dEVsZW1lbnRTaWJsaW5nXG4gICAgICAgIGlmIChzdWJBbGluZWFFbGVtZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgLy8gVGhlIGFsaW5lYUVsZW1lbnQgaGFzIGJlZW4gZnVsbHkgcGFyc2VkLiBHbyB0byBuZXh0IGFsaW5lYUVsZW1lbnQuXG4gICAgICAgICAgc3RhdGUgPSBcIm5leHRBbGluZWFFbGVtZW50XCJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZSA9IFwic3ViQWxpbmVhRWxlbWVudFwiXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJwYXJhZ3JhcGhDaGlsZFwiOlxuICAgICAgICBzd2l0Y2ggKHBhcmFncmFwaENoaWxkIS50YWdOYW1lKSB7XG4gICAgICAgICAgY2FzZSBcIkFcIjoge1xuICAgICAgICAgICAgbGluZUVsZW1lbnRzIS5wdXNoKHBhcmFncmFwaENoaWxkISlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJCUlwiOiB7XG4gICAgICAgICAgICBjb25zdCBsaW5lVGV4dCA9IGxpbmVFbGVtZW50cyFcbiAgICAgICAgICAgICAgLm1hcCgoZWxlbWVudCkgPT4gZWxlbWVudC50ZXh0Q29udGVudClcbiAgICAgICAgICAgICAgLmpvaW4oXCJcIilcbiAgICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgaWYgKGxpbmVUZXh0KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGxpbmVIdG1sID0gbGluZUVsZW1lbnRzIVxuICAgICAgICAgICAgICAgIC5tYXAoKGVsZW1lbnQpID0+IGVsZW1lbnQub3V0ZXJIVE1MKVxuICAgICAgICAgICAgICAgIC5qb2luKFwiXCIpXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdWJkaXZpc2lvbkhlYWRlcnNUZXh0IS5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgICAgICAoaXNNdWx0aUxpbmVzSGVhZGVyICYmIHN1YmRpdmlzaW9uQWxpbmVhc1RleHQhLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgc3ViZGl2aXNpb25IZWFkZXJzSHRtbCEucHVzaChsaW5lSHRtbClcbiAgICAgICAgICAgICAgICBzdWJkaXZpc2lvbkhlYWRlcnNUZXh0IS5wdXNoKGxpbmVUZXh0KVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN1YmRpdmlzaW9uQWxpbmVhc0h0bWwhLnB1c2gobGluZUh0bWwpXG4gICAgICAgICAgICAgICAgc3ViZGl2aXNpb25BbGluZWFzVGV4dCEucHVzaChsaW5lVGV4dClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZUVsZW1lbnRzID0gW11cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJERUxcIjoge1xuICAgICAgICAgICAgbGluZUVsZW1lbnRzIS5wdXNoKHBhcmFncmFwaENoaWxkISlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJJTUdcIjoge1xuICAgICAgICAgICAgbGluZUVsZW1lbnRzIS5wdXNoKHBhcmFncmFwaENoaWxkISlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJTUEFOXCI6IHtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IHBhcmFncmFwaENoaWxkIS5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKVxuICAgICAgICAgICAgc3dpdGNoIChjbGFzc05hbWUpIHtcbiAgICAgICAgICAgICAgY2FzZSBcImFFbG9pUGFzdGlsbGVcIjoge1xuICAgICAgICAgICAgICAgIC8vIFNraXAgcGFzdGlsbMOpIFNQQU4uXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlIFwiYUVsb2lQYXN0aWxsZTBcIjoge1xuICAgICAgICAgICAgICAgIC8vIFNraXAgcGFzdGlsbMOpIFNQQU4uXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGxpbmVFbGVtZW50cyEucHVzaChwYXJhZ3JhcGhDaGlsZCEpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgICBjb2RlOiAtMyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgVW5leHBlY3RlZCB0YWcgbmFtZSBmb3IgcGFyYWdyYXBoIGNoaWxkOiAke1xuICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoQ2hpbGQhLnRhZ05hbWVcbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaHRtbCxcbiAgICAgICAgICAgICAgcGFnZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdGF0ZSA9IFwibmV4dFBhcmFncmFwaENoaWxkXCJcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJzdWJBbGluZWFFbGVtZW50XCI6XG4gICAgICAgIHN3aXRjaCAoc3ViQWxpbmVhRWxlbWVudCEudGFnTmFtZSkge1xuICAgICAgICAgIGNhc2UgXCJQXCI6XG4gICAgICAgICAgICBuZXh0UGFyZW50U3RhdGUgPSBcIm5leHRTdWJBbGluZWFFbGVtZW50XCJcbiAgICAgICAgICAgIHBhcmFncmFwaEVsZW1lbnQgPSBzdWJBbGluZWFFbGVtZW50XG4gICAgICAgICAgICBzdGF0ZSA9IFwiZmlyc3RQYXJhZ3JhcGhDaGlsZFwiXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgXCJUQUJMRVwiOlxuICAgICAgICAgICAgLy8gVE9ET1xuICAgICAgICAgICAgc3RhdGUgPSBcIm5leHRTdWJBbGluZWFFbGVtZW50XCJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICAgICAgY29kZTogLTQsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYFVuZXhwZWN0ZWQgdGFnIG5hbWUgZm9yIHN1YiBhbGluZWEgZWxlbWVudDogJHtcbiAgICAgICAgICAgICAgICAgIHN1YkFsaW5lYUVsZW1lbnQhLnRhZ05hbWVcbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaHRtbCxcbiAgICAgICAgICAgICAgcGFnZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgICBzdGF0ZSA9IFwibmV4dFN1YkFsaW5lYUVsZW1lbnRcIlxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgYFVuZXhwZWN0ZWQgc3RhdGU6ICR7c3RhdGV9YFxuICAgIH1cbiAgfVxuXG4gIHdpbmRvdy5jbG9zZSgpIC8vIEZyZWUgbWVtb3J5LlxuXG4gIHJldHVybiB7XG4gICAgZXJyb3I6IG51bGwsXG4gICAgaHRtbCxcbiAgICBwYWdlLFxuICAgIHN1YmRpdmlzaW9ucyxcbiAgICB1cmw6IGFzc2VtYmxlZVVybCxcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVUZXh0ZUxvaVBhcnNlZChcbiAgZmV0Y2g6IChcbiAgICB1cmw6IHN0cmluZyB8IFJlcXVlc3QsXG4gICAgaW5pdD86IFJlcXVlc3RJbml0IHwgdW5kZWZpbmVkLFxuICApID0+IFByb21pc2U8UmVzcG9uc2U+LFxuICBhc3NlbWJsZWVVcmw6IHN0cmluZyxcbikge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGFzc2VtYmxlZVVybClcbiAgY29uc3QgcGFnZSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKVxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiB7IGNvZGU6IHJlc3BvbnNlLnN0YXR1cywgbWVzc2FnZTogcmVzcG9uc2Uuc3RhdHVzVGV4dCB9LFxuICAgICAgcGFnZSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcnNlVGV4dGVMb2koYXNzZW1ibGVlVXJsLCBwYWdlKVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxNQUFQLE1BQW1CLFFBQW5CO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQixPQUF0QjtBQUVBLE9BQU8sU0FBU0MsYUFBVCxDQUF1QkMsWUFBdkIsRUFBNkNDLElBQTdDLEVBQTJEO0VBQ2hFO0VBQ0EsTUFBTUMsWUFBWSxHQUFHRCxJQUFJLENBQUNFLEtBQUwsQ0FBVyxVQUFYLENBQXJCO0VBQ0FOLE1BQU0sQ0FBQ08sV0FBUCxDQUFtQkYsWUFBWSxDQUFDRyxNQUFoQyxFQUF3QyxDQUF4QyxFQUEyQ0osSUFBM0M7RUFDQSxJQUFJSyxJQUFJLEdBQUdKLFlBQVksQ0FBQyxDQUFELENBQVosQ0FBZ0JLLElBQWhCLEVBQVg7RUFDQVYsTUFBTSxDQUFDUyxJQUFJLENBQUNFLFVBQUwsQ0FBZ0IsTUFBaEIsQ0FBRCxDQUFOO0VBQ0FYLE1BQU0sQ0FBQ1MsSUFBSSxDQUFDRyxRQUFMLENBQWMsUUFBZCxDQUFELENBQU47RUFDQUgsSUFBSSxHQUFJLFFBQU9BLElBQUksQ0FBQ0ksU0FBTCxDQUFlLENBQWYsRUFBa0JKLElBQUksQ0FBQ0QsTUFBTCxHQUFjLENBQWhDLENBQW1DLFNBQWxELENBUGdFLENBU2hFOztFQUNBLE1BQU07SUFBRU07RUFBRixJQUFhLElBQUliLEtBQUosQ0FBVVEsSUFBVixDQUFuQjtF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
|
package/lib/parsers/index.js
CHANGED
|
@@ -1,3 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.define-property.js");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
Object.defineProperty(exports, "iterRechercheAmendements", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function get() {
|
|
11
|
+
return _recherche_amendements.iterRechercheAmendements;
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
Object.defineProperty(exports, "iterRechercheRawAmendements", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function get() {
|
|
17
|
+
return _recherche_amendements.iterRechercheRawAmendements;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(exports, "parseTexteLoi", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function get() {
|
|
23
|
+
return _documents.parseTexteLoi;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
Object.defineProperty(exports, "retrieveTexteLoiParsed", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function get() {
|
|
29
|
+
return _documents.retrieveTexteLoiParsed;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
var _documents = require("./documents");
|
|
34
|
+
|
|
35
|
+
var _recherche_amendements = require("./recherche_amendements");
|
|
36
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhcnNlcnMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgcGFyc2VUZXh0ZUxvaSwgcmV0cmlldmVUZXh0ZUxvaVBhcnNlZCB9IGZyb20gXCIuL2RvY3VtZW50c1wiXG5leHBvcnQge1xuICBpdGVyUmVjaGVyY2hlQW1lbmRlbWVudHMsXG4gIGl0ZXJSZWNoZXJjaGVSYXdBbWVuZGVtZW50cyxcbn0gZnJvbSBcIi4vcmVjaGVyY2hlX2FtZW5kZW1lbnRzXCJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQSJ9
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { parseTexteLoi, retrieveTexteLoiParsed } from "./documents.mjs";
|
|
2
|
+
export { iterRechercheAmendements, iterRechercheRawAmendements } from "./recherche_amendements.mjs";
|
|
3
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJzZVRleHRlTG9pIiwicmV0cmlldmVUZXh0ZUxvaVBhcnNlZCIsIml0ZXJSZWNoZXJjaGVBbWVuZGVtZW50cyIsIml0ZXJSZWNoZXJjaGVSYXdBbWVuZGVtZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZXJzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHBhcnNlVGV4dGVMb2ksIHJldHJpZXZlVGV4dGVMb2lQYXJzZWQgfSBmcm9tIFwiLi9kb2N1bWVudHNcIlxuZXhwb3J0IHtcbiAgaXRlclJlY2hlcmNoZUFtZW5kZW1lbnRzLFxuICBpdGVyUmVjaGVyY2hlUmF3QW1lbmRlbWVudHMsXG59IGZyb20gXCIuL3JlY2hlcmNoZV9hbWVuZGVtZW50c1wiXG4iXSwibWFwcGluZ3MiOiJTQUFTQSxhLEVBQWVDLHNCO1NBRXRCQyx3QixFQUNBQywyQiJ9
|