@tricoteuses/assemblee 1.8.0 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/lib/bugs/acteur-00010/plugin.test.js +2 -2
  2. package/lib/bugs/acteur-00010.js +3 -3
  3. package/lib/bugs/agenda-00002/plugin.test.js +3 -3
  4. package/lib/bugs/agenda-00002.js +5 -5
  5. package/lib/bugs/agenda-00008/plugin.test.js +2 -2
  6. package/lib/bugs/agenda-00008.js +3 -3
  7. package/lib/bugs/agenda-00011/plugin.test.js +6 -6
  8. package/lib/bugs/agenda-00011.js +8 -8
  9. package/lib/bugs.js +11 -11
  10. package/lib/cleaners/index.d.ts +1 -0
  11. package/lib/cleaners/index.js +8 -1
  12. package/lib/cleaners/index.mjs +2 -1
  13. package/lib/cleaners/scrutins.js +2 -1
  14. package/lib/cleaners/scrutins.mjs +3 -2
  15. package/lib/cleaners/textes_loi.d.ts +1 -0
  16. package/lib/cleaners/textes_loi.js +12 -0
  17. package/lib/cleaners/textes_loi.mjs +5 -0
  18. package/lib/cleaners/xml.d.ts +3 -0
  19. package/lib/cleaners/xml.js +13 -1
  20. package/lib/cleaners/xml.mjs +11 -1
  21. package/lib/datasets.d.ts +9 -2
  22. package/lib/datasets.js +24 -3
  23. package/lib/datasets.mjs +24 -3
  24. package/lib/dates.js +3 -3
  25. package/lib/examples/PIONANR5L15B0020/input.d.ts +2 -0
  26. package/lib/examples/PIONANR5L15B0020/input.js +10 -0
  27. package/lib/examples/PIONANR5L15B0020/input.mjs +193 -0
  28. package/lib/examples/PRJLANR5L16B0914/input.d.ts +2 -0
  29. package/lib/examples/PRJLANR5L16B0914/input.js +10 -0
  30. package/lib/examples/PRJLANR5L16B0914/input.mjs +322 -0
  31. package/lib/examples/PRJLANR5L16B2014/input.d.ts +2 -0
  32. package/lib/examples/PRJLANR5L16B2014/input.js +10 -0
  33. package/lib/examples/PRJLANR5L16B2014/input.mjs +577 -0
  34. package/lib/examples/PRJLANR5L16B2424/input.d.ts +2 -0
  35. package/lib/examples/PRJLANR5L16B2424/input.js +10 -0
  36. package/lib/examples/PRJLANR5L16B2424/input.mjs +322 -0
  37. package/lib/examples/PRJLANR5L16B2462/input.d.ts +2 -0
  38. package/lib/examples/PRJLANR5L16B2462/input.js +10 -0
  39. package/lib/examples/PRJLANR5L16B2462/input.mjs +1308 -0
  40. package/lib/loaders.d.ts +5 -0
  41. package/lib/loaders.js +308 -262
  42. package/lib/loaders.mjs +16 -3
  43. package/lib/logger.d.ts +16 -0
  44. package/lib/logger.js +35 -0
  45. package/lib/logger.mjs +26 -0
  46. package/lib/parsers/documents.js +2 -2
  47. package/lib/parsers/textes_lois.d.ts +16 -1
  48. package/lib/parsers/textes_lois.js +733 -28
  49. package/lib/parsers/textes_lois.mjs +587 -22
  50. package/lib/raw_types/acteurs_et_organes.js +1 -1
  51. package/lib/raw_types/agendas.js +1 -1
  52. package/lib/raw_types/amendements.js +1 -1
  53. package/lib/raw_types/debats.js +1 -1
  54. package/lib/raw_types/dossiers_legislatifs.js +1 -1
  55. package/lib/raw_types/questions.js +1 -1
  56. package/lib/raw_types/scrutins.d.ts +18 -13
  57. package/lib/raw_types/scrutins.js +28 -14
  58. package/lib/raw_types/scrutins.mjs +28 -14
  59. package/lib/raw_types/textes_loi.d.ts +93 -0
  60. package/lib/raw_types/textes_loi.js +429 -0
  61. package/lib/raw_types/textes_loi.mjs +378 -0
  62. package/lib/scripts/bugs_helper.js +9 -9
  63. package/lib/scripts/document_dossiers_legislatifs.js +1 -1
  64. package/lib/scripts/process_open_dataset.d.ts +17 -0
  65. package/lib/scripts/process_open_dataset.js +302 -0
  66. package/lib/scripts/process_open_dataset.mjs +136 -0
  67. package/lib/scripts/process_textes_loi_dataset.d.ts +7 -0
  68. package/lib/scripts/process_textes_loi_dataset.js +374 -0
  69. package/lib/scripts/process_textes_loi_dataset.mjs +237 -0
  70. package/lib/scripts/raw_types_from_amendements.js +2 -2
  71. package/lib/scripts/reorganize_data.js +1 -1
  72. package/lib/scripts/reorganize_data.mjs +1 -1
  73. package/lib/scripts/retrieve_deputes_photos.js +3 -3
  74. package/lib/scripts/retrieve_documents.js +4 -4
  75. package/lib/scripts/retrieve_open_data.js +41 -279
  76. package/lib/scripts/retrieve_open_data.mjs +13 -126
  77. package/lib/scripts/retrieve_pending_amendments.js +2 -2
  78. package/lib/scripts/retrieve_senateurs_photos.js +2 -2
  79. package/lib/scripts/retrieve_textes_lois.js +2 -2
  80. package/lib/scripts/shared/cli_helpers.d.ts +5 -0
  81. package/lib/scripts/shared/cli_helpers.js +7 -2
  82. package/lib/scripts/shared/cli_helpers.mjs +6 -1
  83. package/lib/scripts/test_iter_load.js +25 -10
  84. package/lib/scripts/test_iter_load.mjs +19 -11
  85. package/lib/scripts/validate_json.js +3 -3
  86. package/lib/types/acteurs_et_organes.js +1 -1
  87. package/lib/types/agendas.js +1 -1
  88. package/lib/types/amendements.js +1 -1
  89. package/lib/types/debats.js +1 -1
  90. package/lib/types/dossiers_legislatifs.js +1 -1
  91. package/lib/types/questions.js +1 -1
  92. package/lib/types/scrutins.d.ts +6 -3
  93. package/lib/types/scrutins.js +13 -7
  94. package/lib/types/scrutins.mjs +13 -7
  95. package/lib/types/textes_loi.d.ts +94 -0
  96. package/lib/types/textes_loi.js +429 -0
  97. package/lib/types/textes_loi.mjs +378 -0
  98. package/package.json +13 -12
  99. package/lib/scripts/retrieve_textes_lois_llm.d.ts +0 -1
  100. package/lib/scripts/retrieve_textes_lois_llm.js +0 -188
  101. package/lib/scripts/retrieve_textes_lois_llm.mjs +0 -85
@@ -0,0 +1,378 @@
1
+ // To parse this data:
2
+ //
3
+ // import { Convert, TextesLoi } from "./file";
4
+ //
5
+ // const textesLoi = Convert.toTextesLoi(json);
6
+ //
7
+ // These functions will throw an error if the JSON doesn't
8
+ // match the expected interface, even if the JSON is valid.
9
+
10
+ export let Cardinal = /*#__PURE__*/function (Cardinal) {
11
+ Cardinal["A"] = "A";
12
+ Cardinal["B"] = "B";
13
+ Cardinal["Bis"] = "bis";
14
+ Cardinal["BisA"] = "bis A";
15
+ Cardinal["C"] = "C";
16
+ Cardinal["CardinalNouveau"] = "(nouveau)";
17
+ Cardinal["Empty"] = "";
18
+ Cardinal["Er"] = "er";
19
+ Cardinal["Nouveau"] = "nouveau";
20
+ return Cardinal;
21
+ }({});
22
+ export let Organe = /*#__PURE__*/function (Organe) {
23
+ Organe["Assembl\xE9eNationale"] = "Assembl\xE9e Nationale";
24
+ Organe["OrganeAssembl\xE9eNationale"] = "ASSEMBL\xC9E NATIONALE";
25
+ return Organe;
26
+ }({});
27
+ export let Fonction = /*#__PURE__*/function (Fonction) {
28
+ Fonction["D\xE9put\xE9"] = "D\xE9put\xE9";
29
+ Fonction["D\xE9put\xE9e"] = "D\xE9put\xE9e";
30
+ Fonction["Empty"] = "";
31
+ return Fonction;
32
+ }({});
33
+ export let TypeDivision = /*#__PURE__*/function (TypeDivision) {
34
+ TypeDivision["Chapitre"] = "Chapitre";
35
+ TypeDivision["Titre"] = "Titre";
36
+ return TypeDivision;
37
+ }({});
38
+ export let TypeTexte = /*#__PURE__*/function (TypeTexte) {
39
+ TypeTexte["MotionDeCensure"] = "Motion de censure";
40
+ TypeTexte["PropositionDeLoi"] = "Proposition de loi";
41
+ TypeTexte["PropositionDeLoiConstitutionnelle"] = "PROPOSITION DE LOI CONSTITUTIONNELLE";
42
+ TypeTexte["PropositionDeLoiOrganique"] = "PROPOSITION DE LOI ORGANIQUE";
43
+ TypeTexte["TypeTexteMotionDeCensure"] = "MOTION DE CENSURE";
44
+ TypeTexte["TypeTextePropositionDeLoi"] = "PROPOSITION DE LOI";
45
+ return TypeTexte;
46
+ }({});
47
+
48
+ // Converts JSON strings to/from your types
49
+ // and asserts the results of JSON.parse at runtime
50
+ export class Convert {
51
+ static toTextesLoi(json) {
52
+ return cast(JSON.parse(json), r("TextesLoi"));
53
+ }
54
+ static textesLoiToJson(value) {
55
+ return JSON.stringify(uncast(value, r("TextesLoi")), null, 2);
56
+ }
57
+ }
58
+ function invalidValue(typ, val, key, parent = "") {
59
+ const prettyTyp = prettyTypeName(typ);
60
+ const parentText = parent ? ` on ${parent}` : "";
61
+ const keyText = key ? ` for key "${key}"` : "";
62
+ throw Error(`Invalid value${keyText}${parentText}. Expected ${prettyTyp} but got ${JSON.stringify(val)}`);
63
+ }
64
+ function prettyTypeName(typ) {
65
+ if (Array.isArray(typ)) {
66
+ if (typ.length === 2 && typ[0] === undefined) {
67
+ return `an optional ${prettyTypeName(typ[1])}`;
68
+ } else {
69
+ return `one of [${typ.map(a => {
70
+ return prettyTypeName(a);
71
+ }).join(", ")}]`;
72
+ }
73
+ } else if (typeof typ === "object" && typ.literal !== undefined) {
74
+ return typ.literal;
75
+ } else {
76
+ return typeof typ;
77
+ }
78
+ }
79
+ function jsonToJSProps(typ) {
80
+ if (typ.jsonToJS === undefined) {
81
+ const map = {};
82
+ typ.props.forEach(p => map[p.json] = {
83
+ key: p.js,
84
+ typ: p.typ
85
+ });
86
+ typ.jsonToJS = map;
87
+ }
88
+ return typ.jsonToJS;
89
+ }
90
+ function jsToJSONProps(typ) {
91
+ if (typ.jsToJSON === undefined) {
92
+ const map = {};
93
+ typ.props.forEach(p => map[p.js] = {
94
+ key: p.json,
95
+ typ: p.typ
96
+ });
97
+ typ.jsToJSON = map;
98
+ }
99
+ return typ.jsToJSON;
100
+ }
101
+ function transform(val, typ, getProps, key = "", parent = "") {
102
+ function transformPrimitive(typ, val) {
103
+ if (typeof typ === typeof val) return val;
104
+ return invalidValue(typ, val, key, parent);
105
+ }
106
+ function transformUnion(typs, val) {
107
+ // val must validate against one typ in typs
108
+ const l = typs.length;
109
+ for (let i = 0; i < l; i++) {
110
+ const typ = typs[i];
111
+ try {
112
+ return transform(val, typ, getProps);
113
+ } catch (_) {}
114
+ }
115
+ return invalidValue(typs, val, key, parent);
116
+ }
117
+ function transformEnum(cases, val) {
118
+ if (cases.indexOf(val) !== -1) return val;
119
+ return invalidValue(cases.map(a => {
120
+ return l(a);
121
+ }), val, key, parent);
122
+ }
123
+ function transformArray(typ, val) {
124
+ // val must be an array with no invalid elements
125
+ if (!Array.isArray(val)) return invalidValue(l("array"), val, key, parent);
126
+ return val.map(el => transform(el, typ, getProps));
127
+ }
128
+ function transformDate(val) {
129
+ if (val === null) {
130
+ return null;
131
+ }
132
+ const d = new Date(val);
133
+ if (isNaN(d.valueOf())) {
134
+ return invalidValue(l("Date"), val, key, parent);
135
+ }
136
+ return d;
137
+ }
138
+ function transformObject(props, additional, val) {
139
+ if (val === null || typeof val !== "object" || Array.isArray(val)) {
140
+ return invalidValue(l(ref || "object"), val, key, parent);
141
+ }
142
+ const result = {};
143
+ Object.getOwnPropertyNames(props).forEach(key => {
144
+ const prop = props[key];
145
+ const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
146
+ result[prop.key] = transform(v, prop.typ, getProps, key, ref);
147
+ });
148
+ Object.getOwnPropertyNames(val).forEach(key => {
149
+ if (!Object.prototype.hasOwnProperty.call(props, key)) {
150
+ result[key] = transform(val[key], additional, getProps, key, ref);
151
+ }
152
+ });
153
+ return result;
154
+ }
155
+ if (typ === "any") return val;
156
+ if (typ === null) {
157
+ if (val === null) return val;
158
+ return invalidValue(typ, val, key, parent);
159
+ }
160
+ if (typ === false) return invalidValue(typ, val, key, parent);
161
+ let ref = undefined;
162
+ while (typeof typ === "object" && typ.ref !== undefined) {
163
+ ref = typ.ref;
164
+ typ = typeMap[typ.ref];
165
+ }
166
+ if (Array.isArray(typ)) return transformEnum(typ, val);
167
+ if (typeof typ === "object") {
168
+ return typ.hasOwnProperty("unionMembers") ? transformUnion(typ.unionMembers, val) : typ.hasOwnProperty("arrayItems") ? transformArray(typ.arrayItems, val) : typ.hasOwnProperty("props") ? transformObject(getProps(typ), typ.additional, val) : invalidValue(typ, val, key, parent);
169
+ }
170
+ // Numbers can be parsed by Date but shouldn't be.
171
+ if (typ === Date && typeof val !== "number") return transformDate(val);
172
+ return transformPrimitive(typ, val);
173
+ }
174
+ function cast(val, typ) {
175
+ return transform(val, typ, jsonToJSProps);
176
+ }
177
+ function uncast(val, typ) {
178
+ return transform(val, typ, jsToJSONProps);
179
+ }
180
+ function l(typ) {
181
+ return {
182
+ literal: typ
183
+ };
184
+ }
185
+ function a(typ) {
186
+ return {
187
+ arrayItems: typ
188
+ };
189
+ }
190
+ function u(...typs) {
191
+ return {
192
+ unionMembers: typs
193
+ };
194
+ }
195
+ function o(props, additional) {
196
+ return {
197
+ props,
198
+ additional
199
+ };
200
+ }
201
+ function r(name) {
202
+ return {
203
+ ref: name
204
+ };
205
+ }
206
+ const typeMap = {
207
+ TextesLoi: o([{
208
+ json: "documentRef",
209
+ js: "documentRef",
210
+ typ: ""
211
+ }, {
212
+ json: "titre",
213
+ js: "titre",
214
+ typ: ""
215
+ }, {
216
+ json: "organe",
217
+ js: "organe",
218
+ typ: r("Organe")
219
+ }, {
220
+ json: "typeTexte",
221
+ js: "typeTexte",
222
+ typ: r("TypeTexte")
223
+ }, {
224
+ json: "commission",
225
+ js: "commission",
226
+ typ: ""
227
+ }, {
228
+ json: "procedureAcceleree",
229
+ js: "procedureAcceleree",
230
+ typ: true
231
+ }, {
232
+ json: "representants",
233
+ js: "representants",
234
+ typ: r("Representants")
235
+ }, {
236
+ json: "dateConstitution",
237
+ js: "dateConstitution",
238
+ typ: Date
239
+ }, {
240
+ json: "dateDepotAssemblee",
241
+ js: "dateDepotAssemblee",
242
+ typ: Date
243
+ }, {
244
+ json: "numeroLegislature",
245
+ js: "numeroLegislature",
246
+ typ: 0
247
+ }, {
248
+ json: "numeroTexte",
249
+ js: "numeroTexte",
250
+ typ: ""
251
+ }, {
252
+ json: "sommaire",
253
+ js: "sommaire",
254
+ typ: u(a(r("SommaireElement")), r("PurpleSommaire"))
255
+ }, {
256
+ json: "contenu",
257
+ js: "contenu",
258
+ typ: r("Contenu")
259
+ }, {
260
+ json: "signataires",
261
+ js: "signataires",
262
+ typ: u(undefined, a(r("Signataire")))
263
+ }], false),
264
+ Contenu: o([{
265
+ json: "articles",
266
+ js: "articles",
267
+ typ: a(r("Article"))
268
+ }, {
269
+ json: "exposeMotifs",
270
+ js: "exposeMotifs",
271
+ typ: r("ExposeMotifs")
272
+ }], false),
273
+ Article: o([{
274
+ json: "numeroArticle",
275
+ js: "numeroArticle",
276
+ typ: 0
277
+ }, {
278
+ json: "numeroArticles",
279
+ js: "numeroArticles",
280
+ typ: a("any")
281
+ }, {
282
+ json: "cardinal",
283
+ js: "cardinal",
284
+ typ: r("Cardinal")
285
+ }, {
286
+ json: "parent",
287
+ js: "parent",
288
+ typ: ""
289
+ }, {
290
+ json: "nouveau",
291
+ js: "nouveau",
292
+ typ: true
293
+ }, {
294
+ json: "titre",
295
+ js: "titre",
296
+ typ: ""
297
+ }, {
298
+ json: "alineas",
299
+ js: "alineas",
300
+ typ: a(r("Alinea"))
301
+ }, {
302
+ json: "texte",
303
+ js: "texte",
304
+ typ: ""
305
+ }], false),
306
+ Alinea: o([{
307
+ json: "numeroAlinea",
308
+ js: "numeroAlinea",
309
+ typ: 0
310
+ }, {
311
+ json: "texte",
312
+ js: "texte",
313
+ typ: ""
314
+ }, {
315
+ json: "debut",
316
+ js: "debut",
317
+ typ: u(undefined, "")
318
+ }, {
319
+ json: "fin",
320
+ js: "fin",
321
+ typ: u(undefined, "")
322
+ }], false),
323
+ ExposeMotifs: o([{
324
+ json: "texte",
325
+ js: "texte",
326
+ typ: ""
327
+ }, {
328
+ json: "citation",
329
+ js: "citation",
330
+ typ: u(undefined, "")
331
+ }], false),
332
+ Representants: o([{
333
+ json: "par",
334
+ js: "par",
335
+ typ: a(r("Signataire"))
336
+ }], false),
337
+ Signataire: o([{
338
+ json: "nom",
339
+ js: "nom",
340
+ typ: ""
341
+ }, {
342
+ json: "fonction",
343
+ js: "fonction",
344
+ typ: r("Fonction")
345
+ }], false),
346
+ SommaireElement: o([{
347
+ json: "typeDivision",
348
+ js: "typeDivision",
349
+ typ: r("TypeDivision")
350
+ }, {
351
+ json: "numeroDivision",
352
+ js: "numeroDivision",
353
+ typ: ""
354
+ }, {
355
+ json: "sequence",
356
+ js: "sequence",
357
+ typ: 0
358
+ }, {
359
+ json: "titre",
360
+ js: "titre",
361
+ typ: ""
362
+ }, {
363
+ json: "parent",
364
+ js: "parent",
365
+ typ: u(undefined, "")
366
+ }], false),
367
+ PurpleSommaire: o([{
368
+ json: "sommaire",
369
+ js: "sommaire",
370
+ typ: a("any")
371
+ }], false),
372
+ Cardinal: ["A", "B", "bis", "bis A", "C", "(nouveau)", "", "er", "nouveau"],
373
+ Organe: ["Assemblée Nationale", "ASSEMBLÉE NATIONALE"],
374
+ Fonction: ["Député", "Députée", ""],
375
+ TypeDivision: ["Chapitre", "Titre"],
376
+ TypeTexte: ["Motion de censure", "Proposition de loi", "PROPOSITION DE LOI CONSTITUTIONNELLE", "PROPOSITION DE LOI ORGANIQUE", "MOTION DE CENSURE", "PROPOSITION DE LOI"]
377
+ };
378
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDYXJkaW5hbCIsIk9yZ2FuZSIsIkZvbmN0aW9uIiwiVHlwZURpdmlzaW9uIiwiVHlwZVRleHRlIiwiQ29udmVydCIsInRvVGV4dGVzTG9pIiwianNvbiIsImNhc3QiLCJKU09OIiwicGFyc2UiLCJyIiwidGV4dGVzTG9pVG9Kc29uIiwidmFsdWUiLCJzdHJpbmdpZnkiLCJ1bmNhc3QiLCJpbnZhbGlkVmFsdWUiLCJ0eXAiLCJ2YWwiLCJrZXkiLCJwYXJlbnQiLCJwcmV0dHlUeXAiLCJwcmV0dHlUeXBlTmFtZSIsInBhcmVudFRleHQiLCJrZXlUZXh0IiwiRXJyb3IiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJtYXAiLCJhIiwiam9pbiIsImxpdGVyYWwiLCJqc29uVG9KU1Byb3BzIiwianNvblRvSlMiLCJwcm9wcyIsImZvckVhY2giLCJwIiwianMiLCJqc1RvSlNPTlByb3BzIiwianNUb0pTT04iLCJ0cmFuc2Zvcm0iLCJnZXRQcm9wcyIsInRyYW5zZm9ybVByaW1pdGl2ZSIsInRyYW5zZm9ybVVuaW9uIiwidHlwcyIsImwiLCJpIiwiXyIsInRyYW5zZm9ybUVudW0iLCJjYXNlcyIsImluZGV4T2YiLCJ0cmFuc2Zvcm1BcnJheSIsImVsIiwidHJhbnNmb3JtRGF0ZSIsImQiLCJEYXRlIiwiaXNOYU4iLCJ2YWx1ZU9mIiwidHJhbnNmb3JtT2JqZWN0IiwiYWRkaXRpb25hbCIsInJlZiIsInJlc3VsdCIsIk9iamVjdCIsImdldE93blByb3BlcnR5TmFtZXMiLCJwcm9wIiwidiIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInR5cGVNYXAiLCJ1bmlvbk1lbWJlcnMiLCJhcnJheUl0ZW1zIiwidSIsIm8iLCJuYW1lIiwiVGV4dGVzTG9pIiwiQ29udGVudSIsIkFydGljbGUiLCJBbGluZWEiLCJFeHBvc2VNb3RpZnMiLCJSZXByZXNlbnRhbnRzIiwiU2lnbmF0YWlyZSIsIlNvbW1haXJlRWxlbWVudCIsIlB1cnBsZVNvbW1haXJlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3RleHRlc19sb2kudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVG8gcGFyc2UgdGhpcyBkYXRhOlxuLy9cbi8vICAgaW1wb3J0IHsgQ29udmVydCwgVGV4dGVzTG9pIH0gZnJvbSBcIi4vZmlsZVwiO1xuLy9cbi8vICAgY29uc3QgdGV4dGVzTG9pID0gQ29udmVydC50b1RleHRlc0xvaShqc29uKTtcbi8vXG4vLyBUaGVzZSBmdW5jdGlvbnMgd2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgSlNPTiBkb2Vzbid0XG4vLyBtYXRjaCB0aGUgZXhwZWN0ZWQgaW50ZXJmYWNlLCBldmVuIGlmIHRoZSBKU09OIGlzIHZhbGlkLlxuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRlc0xvaSB7XG4gIHVpZDogc3RyaW5nXG4gIGRvY3VtZW50UmVmOiBzdHJpbmdcbiAgdGl0cmU6IHN0cmluZ1xuICBvcmdhbmU6IE9yZ2FuZVxuICB0eXBlVGV4dGU6IFR5cGVUZXh0ZVxuICBjb21taXNzaW9uOiBzdHJpbmdcbiAgcHJvY2VkdXJlQWNjZWxlcmVlOiBib29sZWFuXG4gIHJlcHJlc2VudGFudHM6IFJlcHJlc2VudGFudHNcbiAgZGF0ZUNvbnN0aXR1dGlvbjogRGF0ZVxuICBkYXRlRGVwb3RBc3NlbWJsZWU6IERhdGVcbiAgbnVtZXJvTGVnaXNsYXR1cmU6IG51bWJlclxuICBudW1lcm9UZXh0ZTogc3RyaW5nXG4gIHNvbW1haXJlOiBTb21tYWlyZUVsZW1lbnRbXSB8IFB1cnBsZVNvbW1haXJlXG4gIGNvbnRlbnU6IENvbnRlbnVcbiAgc2lnbmF0YWlyZXM/OiBTaWduYXRhaXJlW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW51IHtcbiAgYXJ0aWNsZXM6IEFydGljbGVbXVxuICBleHBvc2VNb3RpZnM6IEV4cG9zZU1vdGlmc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFydGljbGUge1xuICBudW1lcm9BcnRpY2xlOiBudW1iZXJcbiAgbnVtZXJvQXJ0aWNsZXM6IGFueVtdXG4gIGNhcmRpbmFsOiBDYXJkaW5hbFxuICBwYXJlbnQ6IHN0cmluZ1xuICBub3V2ZWF1OiBib29sZWFuXG4gIHRpdHJlOiBzdHJpbmdcbiAgYWxpbmVhczogQWxpbmVhW11cbiAgdGV4dGU6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFsaW5lYSB7XG4gIG51bWVyb0FsaW5lYTogbnVtYmVyXG4gIHRleHRlOiBzdHJpbmdcbiAgZGVidXQ/OiBzdHJpbmdcbiAgZmluPzogc3RyaW5nXG59XG5cbmV4cG9ydCBlbnVtIENhcmRpbmFsIHtcbiAgQSA9IFwiQVwiLFxuICBCID0gXCJCXCIsXG4gIEJpcyA9IFwiYmlzXCIsXG4gIEJpc0EgPSBcImJpcyBBXCIsXG4gIEMgPSBcIkNcIixcbiAgQ2FyZGluYWxOb3V2ZWF1ID0gXCIobm91dmVhdSlcIixcbiAgRW1wdHkgPSBcIlwiLFxuICBFciA9IFwiZXJcIixcbiAgTm91dmVhdSA9IFwibm91dmVhdVwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4cG9zZU1vdGlmcyB7XG4gIHRleHRlOiBzdHJpbmdcbiAgY2l0YXRpb24/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGVudW0gT3JnYW5lIHtcbiAgQXNzZW1ibMOpZU5hdGlvbmFsZSA9IFwiQXNzZW1ibMOpZSBOYXRpb25hbGVcIixcbiAgT3JnYW5lQXNzZW1ibMOpZU5hdGlvbmFsZSA9IFwiQVNTRU1CTMOJRSBOQVRJT05BTEVcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXByZXNlbnRhbnRzIHtcbiAgcGFyOiBTaWduYXRhaXJlW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduYXRhaXJlIHtcbiAgbm9tOiBzdHJpbmdcbiAgZm9uY3Rpb246IEZvbmN0aW9uXG59XG5cbmV4cG9ydCBlbnVtIEZvbmN0aW9uIHtcbiAgRMOpcHV0w6kgPSBcIkTDqXB1dMOpXCIsXG4gIETDqXB1dMOpZSA9IFwiRMOpcHV0w6llXCIsXG4gIEVtcHR5ID0gXCJcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTb21tYWlyZUVsZW1lbnQge1xuICB0eXBlRGl2aXNpb246IFR5cGVEaXZpc2lvblxuICBudW1lcm9EaXZpc2lvbjogc3RyaW5nXG4gIHNlcXVlbmNlOiBudW1iZXJcbiAgdGl0cmU6IHN0cmluZ1xuICBwYXJlbnQ/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGVudW0gVHlwZURpdmlzaW9uIHtcbiAgQ2hhcGl0cmUgPSBcIkNoYXBpdHJlXCIsXG4gIFRpdHJlID0gXCJUaXRyZVwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cnBsZVNvbW1haXJlIHtcbiAgc29tbWFpcmU6IGFueVtdXG59XG5cbmV4cG9ydCBlbnVtIFR5cGVUZXh0ZSB7XG4gIE1vdGlvbkRlQ2Vuc3VyZSA9IFwiTW90aW9uIGRlIGNlbnN1cmVcIixcbiAgUHJvcG9zaXRpb25EZUxvaSA9IFwiUHJvcG9zaXRpb24gZGUgbG9pXCIsXG4gIFByb3Bvc2l0aW9uRGVMb2lDb25zdGl0dXRpb25uZWxsZSA9IFwiUFJPUE9TSVRJT04gREUgTE9JIENPTlNUSVRVVElPTk5FTExFXCIsXG4gIFByb3Bvc2l0aW9uRGVMb2lPcmdhbmlxdWUgPSBcIlBST1BPU0lUSU9OIERFIExPSSBPUkdBTklRVUVcIixcbiAgVHlwZVRleHRlTW90aW9uRGVDZW5zdXJlID0gXCJNT1RJT04gREUgQ0VOU1VSRVwiLFxuICBUeXBlVGV4dGVQcm9wb3NpdGlvbkRlTG9pID0gXCJQUk9QT1NJVElPTiBERSBMT0lcIixcbn1cblxuLy8gQ29udmVydHMgSlNPTiBzdHJpbmdzIHRvL2Zyb20geW91ciB0eXBlc1xuLy8gYW5kIGFzc2VydHMgdGhlIHJlc3VsdHMgb2YgSlNPTi5wYXJzZSBhdCBydW50aW1lXG5leHBvcnQgY2xhc3MgQ29udmVydCB7XG4gIHB1YmxpYyBzdGF0aWMgdG9UZXh0ZXNMb2koanNvbjogc3RyaW5nKTogVGV4dGVzTG9pIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKFwiVGV4dGVzTG9pXCIpKVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0ZXh0ZXNMb2lUb0pzb24odmFsdWU6IFRleHRlc0xvaSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcihcIlRleHRlc0xvaVwiKSksIG51bGwsIDIpXG4gIH1cbn1cblxuZnVuY3Rpb24gaW52YWxpZFZhbHVlKHR5cDogYW55LCB2YWw6IGFueSwga2V5OiBhbnksIHBhcmVudDogYW55ID0gXCJcIik6IG5ldmVyIHtcbiAgY29uc3QgcHJldHR5VHlwID0gcHJldHR5VHlwZU5hbWUodHlwKVxuICBjb25zdCBwYXJlbnRUZXh0ID0gcGFyZW50ID8gYCBvbiAke3BhcmVudH1gIDogXCJcIlxuICBjb25zdCBrZXlUZXh0ID0ga2V5ID8gYCBmb3Iga2V5IFwiJHtrZXl9XCJgIDogXCJcIlxuICB0aHJvdyBFcnJvcihcbiAgICBgSW52YWxpZCB2YWx1ZSR7a2V5VGV4dH0ke3BhcmVudFRleHR9LiBFeHBlY3RlZCAke3ByZXR0eVR5cH0gYnV0IGdvdCAke0pTT04uc3RyaW5naWZ5KHZhbCl9YCxcbiAgKVxufVxuXG5mdW5jdGlvbiBwcmV0dHlUeXBlTmFtZSh0eXA6IGFueSk6IHN0cmluZyB7XG4gIGlmIChBcnJheS5pc0FycmF5KHR5cCkpIHtcbiAgICBpZiAodHlwLmxlbmd0aCA9PT0gMiAmJiB0eXBbMF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGBhbiBvcHRpb25hbCAke3ByZXR0eVR5cGVOYW1lKHR5cFsxXSl9YFxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYG9uZSBvZiBbJHt0eXBcbiAgICAgICAgLm1hcCgoYSkgPT4ge1xuICAgICAgICAgIHJldHVybiBwcmV0dHlUeXBlTmFtZShhKVxuICAgICAgICB9KVxuICAgICAgICAuam9pbihcIiwgXCIpfV1gXG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB0eXAgPT09IFwib2JqZWN0XCIgJiYgdHlwLmxpdGVyYWwgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0eXAubGl0ZXJhbFxuICB9IGVsc2Uge1xuICAgIHJldHVybiB0eXBlb2YgdHlwXG4gIH1cbn1cblxuZnVuY3Rpb24ganNvblRvSlNQcm9wcyh0eXA6IGFueSk6IGFueSB7XG4gIGlmICh0eXAuanNvblRvSlMgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG1hcDogYW55ID0ge31cbiAgICB0eXAucHJvcHMuZm9yRWFjaCgocDogYW55KSA9PiAobWFwW3AuanNvbl0gPSB7IGtleTogcC5qcywgdHlwOiBwLnR5cCB9KSlcbiAgICB0eXAuanNvblRvSlMgPSBtYXBcbiAgfVxuICByZXR1cm4gdHlwLmpzb25Ub0pTXG59XG5cbmZ1bmN0aW9uIGpzVG9KU09OUHJvcHModHlwOiBhbnkpOiBhbnkge1xuICBpZiAodHlwLmpzVG9KU09OID09PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBtYXA6IGFueSA9IHt9XG4gICAgdHlwLnByb3BzLmZvckVhY2goKHA6IGFueSkgPT4gKG1hcFtwLmpzXSA9IHsga2V5OiBwLmpzb24sIHR5cDogcC50eXAgfSkpXG4gICAgdHlwLmpzVG9KU09OID0gbWFwXG4gIH1cbiAgcmV0dXJuIHR5cC5qc1RvSlNPTlxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm0oXG4gIHZhbDogYW55LFxuICB0eXA6IGFueSxcbiAgZ2V0UHJvcHM6IGFueSxcbiAga2V5OiBhbnkgPSBcIlwiLFxuICBwYXJlbnQ6IGFueSA9IFwiXCIsXG4pOiBhbnkge1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1QcmltaXRpdmUodHlwOiBzdHJpbmcsIHZhbDogYW55KTogYW55IHtcbiAgICBpZiAodHlwZW9mIHR5cCA9PT0gdHlwZW9mIHZhbCkgcmV0dXJuIHZhbFxuICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwsIGtleSwgcGFyZW50KVxuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtVW5pb24odHlwczogYW55W10sIHZhbDogYW55KTogYW55IHtcbiAgICAvLyB2YWwgbXVzdCB2YWxpZGF0ZSBhZ2FpbnN0IG9uZSB0eXAgaW4gdHlwc1xuICAgIGNvbnN0IGwgPSB0eXBzLmxlbmd0aFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjb25zdCB0eXAgPSB0eXBzW2ldXG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdHJhbnNmb3JtKHZhbCwgdHlwLCBnZXRQcm9wcylcbiAgICAgIH0gY2F0Y2ggKF8pIHt9XG4gICAgfVxuICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwcywgdmFsLCBrZXksIHBhcmVudClcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybUVudW0oY2FzZXM6IHN0cmluZ1tdLCB2YWw6IGFueSk6IGFueSB7XG4gICAgaWYgKGNhc2VzLmluZGV4T2YodmFsKSAhPT0gLTEpIHJldHVybiB2YWxcbiAgICByZXR1cm4gaW52YWxpZFZhbHVlKFxuICAgICAgY2FzZXMubWFwKChhKSA9PiB7XG4gICAgICAgIHJldHVybiBsKGEpXG4gICAgICB9KSxcbiAgICAgIHZhbCxcbiAgICAgIGtleSxcbiAgICAgIHBhcmVudCxcbiAgICApXG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2Zvcm1BcnJheSh0eXA6IGFueSwgdmFsOiBhbnkpOiBhbnkge1xuICAgIC8vIHZhbCBtdXN0IGJlIGFuIGFycmF5IHdpdGggbm8gaW52YWxpZCBlbGVtZW50c1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWwpKSByZXR1cm4gaW52YWxpZFZhbHVlKGwoXCJhcnJheVwiKSwgdmFsLCBrZXksIHBhcmVudClcbiAgICByZXR1cm4gdmFsLm1hcCgoZWwpID0+IHRyYW5zZm9ybShlbCwgdHlwLCBnZXRQcm9wcykpXG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRlKHZhbDogYW55KTogYW55IHtcbiAgICBpZiAodmFsID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBjb25zdCBkID0gbmV3IERhdGUodmFsKVxuICAgIGlmIChpc05hTihkLnZhbHVlT2YoKSkpIHtcbiAgICAgIHJldHVybiBpbnZhbGlkVmFsdWUobChcIkRhdGVcIiksIHZhbCwga2V5LCBwYXJlbnQpXG4gICAgfVxuICAgIHJldHVybiBkXG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2Zvcm1PYmplY3QoXG4gICAgcHJvcHM6IHsgW2s6IHN0cmluZ106IGFueSB9LFxuICAgIGFkZGl0aW9uYWw6IGFueSxcbiAgICB2YWw6IGFueSxcbiAgKTogYW55IHtcbiAgICBpZiAodmFsID09PSBudWxsIHx8IHR5cGVvZiB2YWwgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICByZXR1cm4gaW52YWxpZFZhbHVlKGwocmVmIHx8IFwib2JqZWN0XCIpLCB2YWwsIGtleSwgcGFyZW50KVxuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IHt9XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvcHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgY29uc3QgcHJvcCA9IHByb3BzW2tleV1cbiAgICAgIGNvbnN0IHYgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsLCBrZXkpXG4gICAgICAgID8gdmFsW2tleV1cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgIHJlc3VsdFtwcm9wLmtleV0gPSB0cmFuc2Zvcm0odiwgcHJvcC50eXAsIGdldFByb3BzLCBrZXksIHJlZilcbiAgICB9KVxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHZhbCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywga2V5KSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IHRyYW5zZm9ybSh2YWxba2V5XSwgYWRkaXRpb25hbCwgZ2V0UHJvcHMsIGtleSwgcmVmKVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgaWYgKHR5cCA9PT0gXCJhbnlcIikgcmV0dXJuIHZhbFxuICBpZiAodHlwID09PSBudWxsKSB7XG4gICAgaWYgKHZhbCA9PT0gbnVsbCkgcmV0dXJuIHZhbFxuICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwsIGtleSwgcGFyZW50KVxuICB9XG4gIGlmICh0eXAgPT09IGZhbHNlKSByZXR1cm4gaW52YWxpZFZhbHVlKHR5cCwgdmFsLCBrZXksIHBhcmVudClcbiAgbGV0IHJlZjogYW55ID0gdW5kZWZpbmVkXG4gIHdoaWxlICh0eXBlb2YgdHlwID09PSBcIm9iamVjdFwiICYmIHR5cC5yZWYgIT09IHVuZGVmaW5lZCkge1xuICAgIHJlZiA9IHR5cC5yZWZcbiAgICB0eXAgPSB0eXBlTWFwW3R5cC5yZWZdXG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodHlwKSkgcmV0dXJuIHRyYW5zZm9ybUVudW0odHlwLCB2YWwpXG4gIGlmICh0eXBlb2YgdHlwID09PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIHR5cC5oYXNPd25Qcm9wZXJ0eShcInVuaW9uTWVtYmVyc1wiKVxuICAgICAgPyB0cmFuc2Zvcm1Vbmlvbih0eXAudW5pb25NZW1iZXJzLCB2YWwpXG4gICAgICA6IHR5cC5oYXNPd25Qcm9wZXJ0eShcImFycmF5SXRlbXNcIilcbiAgICAgICAgPyB0cmFuc2Zvcm1BcnJheSh0eXAuYXJyYXlJdGVtcywgdmFsKVxuICAgICAgICA6IHR5cC5oYXNPd25Qcm9wZXJ0eShcInByb3BzXCIpXG4gICAgICAgICAgPyB0cmFuc2Zvcm1PYmplY3QoZ2V0UHJvcHModHlwKSwgdHlwLmFkZGl0aW9uYWwsIHZhbClcbiAgICAgICAgICA6IGludmFsaWRWYWx1ZSh0eXAsIHZhbCwga2V5LCBwYXJlbnQpXG4gIH1cbiAgLy8gTnVtYmVycyBjYW4gYmUgcGFyc2VkIGJ5IERhdGUgYnV0IHNob3VsZG4ndCBiZS5cbiAgaWYgKHR5cCA9PT0gRGF0ZSAmJiB0eXBlb2YgdmFsICE9PSBcIm51bWJlclwiKSByZXR1cm4gdHJhbnNmb3JtRGF0ZSh2YWwpXG4gIHJldHVybiB0cmFuc2Zvcm1QcmltaXRpdmUodHlwLCB2YWwpXG59XG5cbmZ1bmN0aW9uIGNhc3Q8VD4odmFsOiBhbnksIHR5cDogYW55KTogVCB7XG4gIHJldHVybiB0cmFuc2Zvcm0odmFsLCB0eXAsIGpzb25Ub0pTUHJvcHMpXG59XG5cbmZ1bmN0aW9uIHVuY2FzdDxUPih2YWw6IFQsIHR5cDogYW55KTogYW55IHtcbiAgcmV0dXJuIHRyYW5zZm9ybSh2YWwsIHR5cCwganNUb0pTT05Qcm9wcylcbn1cblxuZnVuY3Rpb24gbCh0eXA6IGFueSkge1xuICByZXR1cm4geyBsaXRlcmFsOiB0eXAgfVxufVxuXG5mdW5jdGlvbiBhKHR5cDogYW55KSB7XG4gIHJldHVybiB7IGFycmF5SXRlbXM6IHR5cCB9XG59XG5cbmZ1bmN0aW9uIHUoLi4udHlwczogYW55W10pIHtcbiAgcmV0dXJuIHsgdW5pb25NZW1iZXJzOiB0eXBzIH1cbn1cblxuZnVuY3Rpb24gbyhwcm9wczogYW55W10sIGFkZGl0aW9uYWw6IGFueSkge1xuICByZXR1cm4geyBwcm9wcywgYWRkaXRpb25hbCB9XG59XG5cbmZ1bmN0aW9uIHIobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiB7IHJlZjogbmFtZSB9XG59XG5cbmNvbnN0IHR5cGVNYXA6IGFueSA9IHtcbiAgVGV4dGVzTG9pOiBvKFxuICAgIFtcbiAgICAgIHsganNvbjogXCJkb2N1bWVudFJlZlwiLCBqczogXCJkb2N1bWVudFJlZlwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJ0aXRyZVwiLCBqczogXCJ0aXRyZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJvcmdhbmVcIiwganM6IFwib3JnYW5lXCIsIHR5cDogcihcIk9yZ2FuZVwiKSB9LFxuICAgICAgeyBqc29uOiBcInR5cGVUZXh0ZVwiLCBqczogXCJ0eXBlVGV4dGVcIiwgdHlwOiByKFwiVHlwZVRleHRlXCIpIH0sXG4gICAgICB7IGpzb246IFwiY29tbWlzc2lvblwiLCBqczogXCJjb21taXNzaW9uXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcInByb2NlZHVyZUFjY2VsZXJlZVwiLCBqczogXCJwcm9jZWR1cmVBY2NlbGVyZWVcIiwgdHlwOiB0cnVlIH0sXG4gICAgICB7IGpzb246IFwicmVwcmVzZW50YW50c1wiLCBqczogXCJyZXByZXNlbnRhbnRzXCIsIHR5cDogcihcIlJlcHJlc2VudGFudHNcIikgfSxcbiAgICAgIHsganNvbjogXCJkYXRlQ29uc3RpdHV0aW9uXCIsIGpzOiBcImRhdGVDb25zdGl0dXRpb25cIiwgdHlwOiBEYXRlIH0sXG4gICAgICB7IGpzb246IFwiZGF0ZURlcG90QXNzZW1ibGVlXCIsIGpzOiBcImRhdGVEZXBvdEFzc2VtYmxlZVwiLCB0eXA6IERhdGUgfSxcbiAgICAgIHsganNvbjogXCJudW1lcm9MZWdpc2xhdHVyZVwiLCBqczogXCJudW1lcm9MZWdpc2xhdHVyZVwiLCB0eXA6IDAgfSxcbiAgICAgIHsganNvbjogXCJudW1lcm9UZXh0ZVwiLCBqczogXCJudW1lcm9UZXh0ZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJzb21tYWlyZVwiLFxuICAgICAgICBqczogXCJzb21tYWlyZVwiLFxuICAgICAgICB0eXA6IHUoYShyKFwiU29tbWFpcmVFbGVtZW50XCIpKSwgcihcIlB1cnBsZVNvbW1haXJlXCIpKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwiY29udGVudVwiLCBqczogXCJjb250ZW51XCIsIHR5cDogcihcIkNvbnRlbnVcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJzaWduYXRhaXJlc1wiLFxuICAgICAgICBqczogXCJzaWduYXRhaXJlc1wiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJTaWduYXRhaXJlXCIpKSksXG4gICAgICB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIENvbnRlbnU6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcImFydGljbGVzXCIsIGpzOiBcImFydGljbGVzXCIsIHR5cDogYShyKFwiQXJ0aWNsZVwiKSkgfSxcbiAgICAgIHsganNvbjogXCJleHBvc2VNb3RpZnNcIiwganM6IFwiZXhwb3NlTW90aWZzXCIsIHR5cDogcihcIkV4cG9zZU1vdGlmc1wiKSB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIEFydGljbGU6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcIm51bWVyb0FydGljbGVcIiwganM6IFwibnVtZXJvQXJ0aWNsZVwiLCB0eXA6IDAgfSxcbiAgICAgIHsganNvbjogXCJudW1lcm9BcnRpY2xlc1wiLCBqczogXCJudW1lcm9BcnRpY2xlc1wiLCB0eXA6IGEoXCJhbnlcIikgfSxcbiAgICAgIHsganNvbjogXCJjYXJkaW5hbFwiLCBqczogXCJjYXJkaW5hbFwiLCB0eXA6IHIoXCJDYXJkaW5hbFwiKSB9LFxuICAgICAgeyBqc29uOiBcInBhcmVudFwiLCBqczogXCJwYXJlbnRcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwibm91dmVhdVwiLCBqczogXCJub3V2ZWF1XCIsIHR5cDogdHJ1ZSB9LFxuICAgICAgeyBqc29uOiBcInRpdHJlXCIsIGpzOiBcInRpdHJlXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImFsaW5lYXNcIiwganM6IFwiYWxpbmVhc1wiLCB0eXA6IGEocihcIkFsaW5lYVwiKSkgfSxcbiAgICAgIHsganNvbjogXCJ0ZXh0ZVwiLCBqczogXCJ0ZXh0ZVwiLCB0eXA6IFwiXCIgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBBbGluZWE6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcIm51bWVyb0FsaW5lYVwiLCBqczogXCJudW1lcm9BbGluZWFcIiwgdHlwOiAwIH0sXG4gICAgICB7IGpzb246IFwidGV4dGVcIiwganM6IFwidGV4dGVcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwiZGVidXRcIiwganM6IFwiZGVidXRcIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICAgIHsganNvbjogXCJmaW5cIiwganM6IFwiZmluXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgRXhwb3NlTW90aWZzOiBvKFxuICAgIFtcbiAgICAgIHsganNvbjogXCJ0ZXh0ZVwiLCBqczogXCJ0ZXh0ZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJjaXRhdGlvblwiLCBqczogXCJjaXRhdGlvblwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIFJlcHJlc2VudGFudHM6IG8oXG4gICAgW3sganNvbjogXCJwYXJcIiwganM6IFwicGFyXCIsIHR5cDogYShyKFwiU2lnbmF0YWlyZVwiKSkgfV0sXG4gICAgZmFsc2UsXG4gICksXG4gIFNpZ25hdGFpcmU6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcIm5vbVwiLCBqczogXCJub21cIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwiZm9uY3Rpb25cIiwganM6IFwiZm9uY3Rpb25cIiwgdHlwOiByKFwiRm9uY3Rpb25cIikgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBTb21tYWlyZUVsZW1lbnQ6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcInR5cGVEaXZpc2lvblwiLCBqczogXCJ0eXBlRGl2aXNpb25cIiwgdHlwOiByKFwiVHlwZURpdmlzaW9uXCIpIH0sXG4gICAgICB7IGpzb246IFwibnVtZXJvRGl2aXNpb25cIiwganM6IFwibnVtZXJvRGl2aXNpb25cIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwic2VxdWVuY2VcIiwganM6IFwic2VxdWVuY2VcIiwgdHlwOiAwIH0sXG4gICAgICB7IGpzb246IFwidGl0cmVcIiwganM6IFwidGl0cmVcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwicGFyZW50XCIsIGpzOiBcInBhcmVudFwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIFB1cnBsZVNvbW1haXJlOiBvKFxuICAgIFt7IGpzb246IFwic29tbWFpcmVcIiwganM6IFwic29tbWFpcmVcIiwgdHlwOiBhKFwiYW55XCIpIH1dLFxuICAgIGZhbHNlLFxuICApLFxuICBDYXJkaW5hbDogW1wiQVwiLCBcIkJcIiwgXCJiaXNcIiwgXCJiaXMgQVwiLCBcIkNcIiwgXCIobm91dmVhdSlcIiwgXCJcIiwgXCJlclwiLCBcIm5vdXZlYXVcIl0sXG4gIE9yZ2FuZTogW1wiQXNzZW1ibMOpZSBOYXRpb25hbGVcIiwgXCJBU1NFTUJMw4lFIE5BVElPTkFMRVwiXSxcbiAgRm9uY3Rpb246IFtcIkTDqXB1dMOpXCIsIFwiRMOpcHV0w6llXCIsIFwiXCJdLFxuICBUeXBlRGl2aXNpb246IFtcIkNoYXBpdHJlXCIsIFwiVGl0cmVcIl0sXG4gIFR5cGVUZXh0ZTogW1xuICAgIFwiTW90aW9uIGRlIGNlbnN1cmVcIixcbiAgICBcIlByb3Bvc2l0aW9uIGRlIGxvaVwiLFxuICAgIFwiUFJPUE9TSVRJT04gREUgTE9JIENPTlNUSVRVVElPTk5FTExFXCIsXG4gICAgXCJQUk9QT1NJVElPTiBERSBMT0kgT1JHQU5JUVVFXCIsXG4gICAgXCJNT1RJT04gREUgQ0VOU1VSRVwiLFxuICAgIFwiUFJPUE9TSVRJT04gREUgTE9JXCIsXG4gIF0sXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBMkNBLFdBQVlBLFFBQVEsMEJBQVJBLFFBQVE7RUFBUkEsUUFBUTtFQUFSQSxRQUFRO0VBQVJBLFFBQVE7RUFBUkEsUUFBUTtFQUFSQSxRQUFRO0VBQVJBLFFBQVE7RUFBUkEsUUFBUTtFQUFSQSxRQUFRO0VBQVJBLFFBQVE7RUFBQSxPQUFSQSxRQUFRO0FBQUE7QUFpQnBCLFdB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tricoteuses/assemblee",
3
- "version": "1.8.0",
3
+ "version": "1.9.1",
4
4
  "description": "Retrieve, clean up & handle French Assemblée nationale's open data",
5
5
  "keywords": [
6
6
  "Assemblée nationale",
@@ -112,19 +112,20 @@
112
112
  "type-check:watch": "npm run type-check -- --watch"
113
113
  },
114
114
  "dependencies": {
115
- "@langchain/openai": "^0.1.3",
115
+ "@langchain/openai": "^0.2.8",
116
+ "@langchain/textsplitters": "^0.0.3",
116
117
  "command-line-args": "^6.0.0",
117
118
  "core-js": "^3.10.0",
118
- "date-fns": "^3.0.1",
119
+ "date-fns": "^4.1.0",
119
120
  "deep-equal": "^2.0.5",
120
121
  "deep-object-diff": "^1.1.0",
121
- "fast-xml-parser": "^4.3.6",
122
+ "fast-xml-parser": "^4.4.0",
122
123
  "front-matter": "^4.0.2",
123
- "fs-extra": "^11.1.0",
124
+ "fs-extra": "^11.2.0",
124
125
  "full-icu": "^1.3.1",
125
126
  "glob": "^11.0.0",
126
127
  "js-yaml": "^4.0.0",
127
- "jsdom": "^24.0.0",
128
+ "jsdom": "^25.0.1",
128
129
  "node-html-parser": "^6.1.0",
129
130
  "node-stream-zip": "^1.11.6"
130
131
  },
@@ -137,7 +138,7 @@
137
138
  "@babel/plugin-transform-class-properties": "^7.23.3",
138
139
  "@babel/preset-env": "^7.11.5",
139
140
  "@babel/preset-typescript": "^7.10.4",
140
- "@types/chai": "^4.2.13",
141
+ "@types/chai": "^5.0.0",
141
142
  "@types/command-line-args": "^5.0.0",
142
143
  "@types/command-line-usage": "^5.0.1",
143
144
  "@types/deep-equal": "^1.0.1",
@@ -146,7 +147,7 @@
146
147
  "@types/js-yaml": "^4.0.0",
147
148
  "@types/jsdom": "^21.1.0",
148
149
  "@types/mocha": "^10.0.0",
149
- "@types/node": "^20.5.9",
150
+ "@types/node": "^22.7.5",
150
151
  "@types/readable-stream": "^4.0.2",
151
152
  "@types/rewire": "^2.5.28",
152
153
  "@types/temp": "^0.9.0",
@@ -156,8 +157,8 @@
156
157
  "babel-plugin-add-import-extension": "^1.5.0",
157
158
  "babel-plugin-inline-dotenv": "^1.7.0",
158
159
  "chai": "^5.1.0",
159
- "eslint": "^8.0.1",
160
- "fetch-mock": "^10.0.7",
160
+ "eslint": "^8.57.1",
161
+ "fetch-mock": "^11.1.5",
161
162
  "mocha": "^10.0.0",
162
163
  "nyc": "^17.0.0",
163
164
  "prettier": "^3.0.0",
@@ -166,13 +167,13 @@
166
167
  "regenerator-runtime": "^0.14.0",
167
168
  "rewire": "^7.0.0",
168
169
  "rimraf": "^6.0.1",
169
- "sinon": "^18.0.0",
170
+ "sinon": "^19.0.2",
170
171
  "temp": "^0.9.1",
171
172
  "tiny-version-compare": "^4.0.0",
172
173
  "ts-node": "^10.0.0",
173
174
  "tslib": "^2.0.2",
174
175
  "tsx": "^4.0.0",
175
176
  "typescript": "^5.0.2",
176
- "typescript-json-schema": "^0.64.0"
177
+ "typescript-json-schema": "^0.65.1"
177
178
  }
178
179
  }
@@ -1 +0,0 @@
1
- export {};