@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.
Files changed (135) hide show
  1. package/README.md +2 -0
  2. package/lib/api.js +23 -7
  3. package/lib/api.mjs +41 -0
  4. package/lib/bugs/acteur-00010/plugin.test.js +139 -33
  5. package/lib/bugs/acteur-00010/plugin.test.mjs +33 -0
  6. package/lib/bugs/acteur-00010.js +166 -24
  7. package/lib/bugs/acteur-00010.mjs +31 -0
  8. package/lib/bugs/agenda-00002/plugin.test.js +178 -52
  9. package/lib/bugs/agenda-00002/plugin.test.mjs +52 -0
  10. package/lib/bugs/agenda-00002.js +507 -143
  11. package/lib/bugs/agenda-00002.mjs +197 -0
  12. package/lib/bugs/agenda-00008/plugin.test.js +143 -31
  13. package/lib/bugs/agenda-00008/plugin.test.mjs +31 -0
  14. package/lib/bugs/agenda-00008.js +180 -25
  15. package/lib/bugs/agenda-00008.mjs +30 -0
  16. package/lib/bugs/agenda-00011/plugin.test.js +371 -156
  17. package/lib/bugs/agenda-00011/plugin.test.mjs +156 -0
  18. package/lib/bugs/agenda-00011.js +416 -117
  19. package/lib/bugs/agenda-00011.mjs +150 -0
  20. package/lib/bugs.js +591 -54
  21. package/lib/bugs.mjs +93 -0
  22. package/lib/cleaners/actes_legislatifs.js +149 -61
  23. package/lib/cleaners/actes_legislatifs.mjs +311 -0
  24. package/lib/cleaners/acteurs.js +255 -123
  25. package/lib/cleaners/acteurs.mjs +211 -0
  26. package/lib/cleaners/amendements.js +242 -117
  27. package/lib/cleaners/amendements.mjs +292 -0
  28. package/lib/cleaners/documents.js +147 -62
  29. package/lib/cleaners/documents.mjs +162 -0
  30. package/lib/cleaners/dossiers_legislatifs.js +132 -45
  31. package/lib/cleaners/dossiers_legislatifs.mjs +123 -0
  32. package/lib/cleaners/index.js +64 -8
  33. package/lib/cleaners/index.mjs +8 -0
  34. package/lib/cleaners/organes.js +54 -21
  35. package/lib/cleaners/organes.mjs +64 -0
  36. package/lib/cleaners/reunions.js +237 -127
  37. package/lib/cleaners/reunions.mjs +318 -0
  38. package/lib/cleaners/scrutins.js +261 -99
  39. package/lib/cleaners/scrutins.mjs +254 -0
  40. package/lib/cleaners/xml.js +81 -16
  41. package/lib/cleaners/xml.mjs +42 -0
  42. package/lib/datasets.js +284 -153
  43. package/lib/datasets.mjs +596 -0
  44. package/lib/dates.js +93 -34
  45. package/lib/dates.mjs +98 -0
  46. package/lib/dossiers_legislatifs.js +107 -33
  47. package/lib/dossiers_legislatifs.mjs +215 -0
  48. package/lib/file_systems.js +203 -35
  49. package/lib/file_systems.mjs +64 -0
  50. package/lib/git.js +139 -41
  51. package/lib/git.mjs +114 -0
  52. package/lib/index.js +310 -16
  53. package/lib/index.mjs +16 -0
  54. package/lib/inserters.js +355 -131
  55. package/lib/inserters.mjs +413 -0
  56. package/lib/loaders.js +900 -440
  57. package/lib/loaders.mjs +678 -0
  58. package/lib/organes.js +15 -5
  59. package/lib/organes.mjs +18 -0
  60. package/lib/parsers/documents.js +241 -89
  61. package/lib/parsers/documents.mjs +433 -0
  62. package/lib/parsers/index.js +36 -3
  63. package/lib/parsers/index.mjs +3 -0
  64. package/lib/parsers/recherche_amendements.js +616 -173
  65. package/lib/parsers/recherche_amendements.mjs +189 -0
  66. package/lib/raw_types/acteurs_et_organes.d.ts +36 -148
  67. package/lib/raw_types/acteurs_et_organes.js +228 -506
  68. package/lib/raw_types/acteurs_et_organes.mjs +1240 -0
  69. package/lib/raw_types/agendas.js +165 -75
  70. package/lib/raw_types/agendas.mjs +944 -0
  71. package/lib/raw_types/amendements.js +165 -77
  72. package/lib/raw_types/amendements.mjs +1040 -0
  73. package/lib/raw_types/dossiers_legislatifs.d.ts +1 -43
  74. package/lib/raw_types/dossiers_legislatifs.js +181 -143
  75. package/lib/raw_types/dossiers_legislatifs.mjs +1792 -0
  76. package/lib/raw_types/scrutins.js +144 -61
  77. package/lib/raw_types/scrutins.mjs +645 -0
  78. package/lib/scripts/bugs_helper.js +657 -155
  79. package/lib/scripts/bugs_helper.mjs +286 -0
  80. package/lib/scripts/clean_data.js +380 -145
  81. package/lib/scripts/clean_data.mjs +190 -0
  82. package/lib/scripts/clean_reorganized_data.js +627 -331
  83. package/lib/scripts/clean_reorganized_data.mjs +520 -0
  84. package/lib/scripts/diff_amendements.js +159 -73
  85. package/lib/scripts/diff_amendements.mjs +234 -0
  86. package/lib/scripts/document_dossiers_legislatifs.js +570 -288
  87. package/lib/scripts/document_dossiers_legislatifs.mjs +494 -0
  88. package/lib/scripts/get_today_reunions.js +37 -20
  89. package/lib/scripts/get_today_reunions.mjs +41 -0
  90. package/lib/scripts/merge_scrutins.js +121 -39
  91. package/lib/scripts/merge_scrutins.mjs +69 -0
  92. package/lib/scripts/parse_textes_lois.js +179 -125
  93. package/lib/scripts/parse_textes_lois.mjs +215 -0
  94. package/lib/scripts/raw_types_from_amendements.js +276 -77
  95. package/lib/scripts/raw_types_from_amendements.mjs +118 -0
  96. package/lib/scripts/reorganize_data.js +867 -446
  97. package/lib/scripts/reorganize_data.mjs +712 -0
  98. package/lib/scripts/retrieve_deputes_photos.js +378 -157
  99. package/lib/scripts/retrieve_deputes_photos.mjs +230 -0
  100. package/lib/scripts/retrieve_documents.js +648 -172
  101. package/lib/scripts/retrieve_documents.mjs +292 -0
  102. package/lib/scripts/retrieve_open_data.js +286 -85
  103. package/lib/scripts/retrieve_open_data.mjs +125 -0
  104. package/lib/scripts/retrieve_pending_amendments.js +302 -69
  105. package/lib/scripts/retrieve_pending_amendments.mjs +130 -0
  106. package/lib/scripts/retrieve_senateurs_photos.js +374 -198
  107. package/lib/scripts/retrieve_senateurs_photos.mjs +277 -0
  108. package/lib/scripts/retrieve_textes_lois.js +343 -89
  109. package/lib/scripts/retrieve_textes_lois.mjs +168 -0
  110. package/lib/scripts/test_load.js +30 -11
  111. package/lib/scripts/test_load.mjs +26 -0
  112. package/lib/scripts/test_load_big_files.js +30 -11
  113. package/lib/scripts/test_load_big_files.mjs +26 -0
  114. package/lib/scripts/validate_json.js +370 -120
  115. package/lib/scripts/validate_json.mjs +216 -0
  116. package/lib/shared_types/codes_actes.js +50 -15
  117. package/lib/shared_types/codes_actes.mjs +228 -0
  118. package/lib/strings.js +16 -3
  119. package/lib/strings.mjs +7 -0
  120. package/lib/types/acteurs_et_organes.js +156 -71
  121. package/lib/types/acteurs_et_organes.mjs +918 -0
  122. package/lib/types/agendas.js +154 -67
  123. package/lib/types/agendas.mjs +623 -0
  124. package/lib/types/amendements.js +166 -77
  125. package/lib/types/amendements.mjs +885 -0
  126. package/lib/types/dossiers_legislatifs.d.ts +1 -42
  127. package/lib/types/dossiers_legislatifs.js +182 -143
  128. package/lib/types/dossiers_legislatifs.mjs +1120 -0
  129. package/lib/types/legislatures.js +12 -3
  130. package/lib/types/legislatures.mjs +9 -0
  131. package/lib/types/scrutins.js +144 -61
  132. package/lib/types/scrutins.mjs +528 -0
  133. package/lib/urls.js +44 -25
  134. package/lib/urls.mjs +201 -0
  135. package/package.json +33 -12
@@ -1,35 +1,103 @@
1
- import assert from "assert";
2
- import { cleanBooleanAttribute, cleanXmlArtefacts } from "./xml.js";
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.array.slice.js");
4
+
5
+ require("core-js/modules/es.function.name.js");
6
+
7
+ require("core-js/modules/es.array.from.js");
8
+
9
+ require("core-js/modules/es.string.iterator.js");
10
+
11
+ require("core-js/modules/es.regexp.exec.js");
12
+
13
+ require("core-js/modules/es.symbol.js");
14
+
15
+ require("core-js/modules/es.symbol.description.js");
16
+
17
+ require("core-js/modules/es.symbol.iterator.js");
18
+
19
+ require("core-js/modules/es.array.iterator.js");
20
+
21
+ require("core-js/modules/web.dom-collections.iterator.js");
22
+
23
+ require("core-js/modules/es.object.define-property.js");
24
+
25
+ Object.defineProperty(exports, "__esModule", {
26
+ value: true
27
+ });
28
+ exports.cleanScrutin = cleanScrutin;
29
+
30
+ require("core-js/modules/es.array.is-array.js");
31
+
32
+ require("core-js/modules/es.array.filter.js");
33
+
34
+ require("core-js/modules/es.object.to-string.js");
35
+
36
+ require("core-js/modules/es.object.values.js");
37
+
38
+ var _assert = _interopRequireDefault(require("assert"));
39
+
40
+ var _xml = require("./xml");
41
+
42
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
43
+
44
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
45
+
46
+ 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."); }
47
+
48
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
49
+
50
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
51
+
52
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
53
+
54
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
55
+
56
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
3
57
 
4
58
  function cleanDecompteNominatif(decompteNominatif) {
5
- cleanXmlArtefacts(decompteNominatif);
6
- let nonVotants = decompteNominatif.nonVotants;
59
+ (0, _xml.cleanXmlArtefacts)(decompteNominatif);
60
+ var nonVotants = decompteNominatif.nonVotants;
7
61
 
8
62
  if (nonVotants !== undefined) {
9
63
  if (typeof nonVotants === "string") {
10
- assert.strictEqual(nonVotants, "0");
64
+ _assert["default"].strictEqual(nonVotants, "0");
65
+
11
66
  nonVotants = [];
12
67
  } else if (!Array.isArray(nonVotants)) {
13
- assert(nonVotants);
68
+ (0, _assert["default"])(nonVotants);
14
69
  nonVotants = [nonVotants];
15
70
  }
16
71
 
17
- const nonVotantsArray = nonVotants;
72
+ var nonVotantsArray = nonVotants;
18
73
  nonVotants = [];
19
74
 
20
- for (let nonVotant of nonVotantsArray) {
21
- if (nonVotant === null) {
22
- continue;
23
- }
75
+ var _iterator = _createForOfIteratorHelper(nonVotantsArray),
76
+ _step;
77
+
78
+ try {
79
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
80
+ var nonVotant = _step.value;
81
+
82
+ if (nonVotant === null) {
83
+ continue;
84
+ }
24
85
 
25
- nonVotant = nonVotant.votant;
86
+ nonVotant = nonVotant.votant;
26
87
 
27
- if (Array.isArray(nonVotant)) {
28
- nonVotants.push(...nonVotant);
29
- } else {
30
- assert(nonVotant);
31
- nonVotants.push(nonVotant);
88
+ if (Array.isArray(nonVotant)) {
89
+ var _nonVotants;
90
+
91
+ (_nonVotants = nonVotants).push.apply(_nonVotants, _toConsumableArray(nonVotant));
92
+ } else {
93
+ (0, _assert["default"])(nonVotant);
94
+ nonVotants.push(nonVotant);
95
+ }
32
96
  }
97
+ } catch (err) {
98
+ _iterator.e(err);
99
+ } finally {
100
+ _iterator.f();
33
101
  }
34
102
 
35
103
  if (nonVotants.length === 0) {
@@ -37,25 +105,35 @@ function cleanDecompteNominatif(decompteNominatif) {
37
105
  } else {
38
106
  decompteNominatif.nonVotants = nonVotants;
39
107
 
40
- for (const votant of nonVotants) {
41
- cleanVotant(votant);
108
+ var _iterator2 = _createForOfIteratorHelper(nonVotants),
109
+ _step2;
110
+
111
+ try {
112
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
113
+ var votant = _step2.value;
114
+ cleanVotant(votant);
115
+ }
116
+ } catch (err) {
117
+ _iterator2.e(err);
118
+ } finally {
119
+ _iterator2.f();
42
120
  }
43
121
  }
44
122
  }
45
123
 
46
- let pour = decompteNominatif.pour;
124
+ var pour = decompteNominatif.pour;
47
125
 
48
126
  if (pour === undefined) {
49
127
  pour = decompteNominatif.pours;
50
128
  } else {
51
- assert.strictEqual(decompteNominatif.pours, undefined);
129
+ _assert["default"].strictEqual(decompteNominatif.pours, undefined);
52
130
  }
53
131
 
54
132
  if (pour !== undefined) {
55
133
  pour = pour.votant;
56
134
 
57
135
  if (!Array.isArray(pour)) {
58
- assert(pour);
136
+ (0, _assert["default"])(pour);
59
137
  pour = [pour];
60
138
  }
61
139
 
@@ -64,27 +142,37 @@ function cleanDecompteNominatif(decompteNominatif) {
64
142
  } else {
65
143
  decompteNominatif.pour = pour;
66
144
 
67
- for (const votant of pour) {
68
- cleanVotant(votant);
145
+ var _iterator3 = _createForOfIteratorHelper(pour),
146
+ _step3;
147
+
148
+ try {
149
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
150
+ var _votant = _step3.value;
151
+ cleanVotant(_votant);
152
+ }
153
+ } catch (err) {
154
+ _iterator3.e(err);
155
+ } finally {
156
+ _iterator3.f();
69
157
  }
70
158
  }
71
159
 
72
160
  delete decompteNominatif.pours;
73
161
  }
74
162
 
75
- let contre = decompteNominatif.contre;
163
+ var contre = decompteNominatif.contre;
76
164
 
77
165
  if (contre === undefined) {
78
166
  contre = decompteNominatif.contres;
79
167
  } else {
80
- assert.strictEqual(decompteNominatif.contres, undefined);
168
+ _assert["default"].strictEqual(decompteNominatif.contres, undefined);
81
169
  }
82
170
 
83
171
  if (contre !== undefined) {
84
172
  contre = contre.votant;
85
173
 
86
174
  if (!Array.isArray(contre)) {
87
- assert(contre);
175
+ (0, _assert["default"])(contre);
88
176
  contre = [contre];
89
177
  }
90
178
 
@@ -93,37 +181,60 @@ function cleanDecompteNominatif(decompteNominatif) {
93
181
  } else {
94
182
  decompteNominatif.contre = contre;
95
183
 
96
- for (const votant of contre) {
97
- cleanVotant(votant);
184
+ var _iterator4 = _createForOfIteratorHelper(contre),
185
+ _step4;
186
+
187
+ try {
188
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
189
+ var _votant2 = _step4.value;
190
+ cleanVotant(_votant2);
191
+ }
192
+ } catch (err) {
193
+ _iterator4.e(err);
194
+ } finally {
195
+ _iterator4.f();
98
196
  }
99
197
  }
100
198
 
101
199
  delete decompteNominatif.contres;
102
200
  }
103
201
 
104
- let abstentions = decompteNominatif.abstentions;
202
+ var abstentions = decompteNominatif.abstentions;
105
203
 
106
204
  if (abstentions !== undefined) {
107
205
  if (!Array.isArray(abstentions)) {
108
206
  abstentions = [abstentions];
109
207
  }
110
208
 
111
- const abstentionsArray = abstentions;
209
+ var abstentionsArray = abstentions;
112
210
  abstentions = [];
113
211
 
114
- for (let absentionsItem of abstentionsArray) {
115
- if (absentionsItem === null) {
116
- continue;
117
- }
212
+ var _iterator5 = _createForOfIteratorHelper(abstentionsArray),
213
+ _step5;
214
+
215
+ try {
216
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
217
+ var absentionsItem = _step5.value;
218
+
219
+ if (absentionsItem === null) {
220
+ continue;
221
+ }
118
222
 
119
- absentionsItem = absentionsItem.votant;
223
+ absentionsItem = absentionsItem.votant;
120
224
 
121
- if (Array.isArray(absentionsItem)) {
122
- abstentions.push(...absentionsItem);
123
- } else {
124
- assert(absentionsItem);
125
- abstentions.push(absentionsItem);
225
+ if (Array.isArray(absentionsItem)) {
226
+ var _abstentions;
227
+
228
+ (_abstentions = abstentions).push.apply(_abstentions, _toConsumableArray(absentionsItem));
229
+ } else {
230
+ (0, _assert["default"])(absentionsItem);
231
+ abstentions.push(absentionsItem);
232
+ }
126
233
  }
234
+ } catch (err) {
235
+ _iterator5.e(err);
236
+ } finally {
237
+ _iterator5.f();
127
238
  }
128
239
 
129
240
  if (abstentions.length === 0) {
@@ -131,35 +242,58 @@ function cleanDecompteNominatif(decompteNominatif) {
131
242
  } else {
132
243
  decompteNominatif.abstentions = abstentions;
133
244
 
134
- for (const votant of abstentions) {
135
- cleanVotant(votant);
245
+ var _iterator6 = _createForOfIteratorHelper(abstentions),
246
+ _step6;
247
+
248
+ try {
249
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
250
+ var _votant3 = _step6.value;
251
+ cleanVotant(_votant3);
252
+ }
253
+ } catch (err) {
254
+ _iterator6.e(err);
255
+ } finally {
256
+ _iterator6.f();
136
257
  }
137
258
  }
138
259
  }
139
260
 
140
- let nonVotantsVolontaires = decompteNominatif.nonVotantsVolontaires;
261
+ var nonVotantsVolontaires = decompteNominatif.nonVotantsVolontaires;
141
262
 
142
263
  if (nonVotantsVolontaires !== undefined) {
143
264
  if (!Array.isArray(nonVotantsVolontaires)) {
144
265
  nonVotantsVolontaires = [nonVotantsVolontaires];
145
266
  }
146
267
 
147
- const nonVotantsVolontairesArray = nonVotantsVolontaires;
268
+ var nonVotantsVolontairesArray = nonVotantsVolontaires;
148
269
  nonVotantsVolontaires = [];
149
270
 
150
- for (let absentionsItem of nonVotantsVolontairesArray) {
151
- if (absentionsItem === null) {
152
- continue;
153
- }
271
+ var _iterator7 = _createForOfIteratorHelper(nonVotantsVolontairesArray),
272
+ _step7;
273
+
274
+ try {
275
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
276
+ var _absentionsItem = _step7.value;
277
+
278
+ if (_absentionsItem === null) {
279
+ continue;
280
+ }
281
+
282
+ _absentionsItem = _absentionsItem.votant;
154
283
 
155
- absentionsItem = absentionsItem.votant;
284
+ if (Array.isArray(_absentionsItem)) {
285
+ var _nonVotantsVolontaire;
156
286
 
157
- if (Array.isArray(absentionsItem)) {
158
- nonVotantsVolontaires.push(...absentionsItem);
159
- } else {
160
- assert(absentionsItem);
161
- nonVotantsVolontaires.push(absentionsItem);
287
+ (_nonVotantsVolontaire = nonVotantsVolontaires).push.apply(_nonVotantsVolontaire, _toConsumableArray(_absentionsItem));
288
+ } else {
289
+ (0, _assert["default"])(_absentionsItem);
290
+ nonVotantsVolontaires.push(_absentionsItem);
291
+ }
162
292
  }
293
+ } catch (err) {
294
+ _iterator7.e(err);
295
+ } finally {
296
+ _iterator7.f();
163
297
  }
164
298
 
165
299
  if (nonVotantsVolontaires.length === 0) {
@@ -167,88 +301,116 @@ function cleanDecompteNominatif(decompteNominatif) {
167
301
  } else {
168
302
  decompteNominatif.nonVotantsVolontaires = nonVotantsVolontaires;
169
303
 
170
- for (const votant of nonVotantsVolontaires) {
171
- cleanVotant(votant);
304
+ var _iterator8 = _createForOfIteratorHelper(nonVotantsVolontaires),
305
+ _step8;
306
+
307
+ try {
308
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
309
+ var _votant4 = _step8.value;
310
+ cleanVotant(_votant4);
311
+ }
312
+ } catch (err) {
313
+ _iterator8.e(err);
314
+ } finally {
315
+ _iterator8.f();
172
316
  }
173
317
  }
174
318
  }
175
319
  }
176
320
 
177
- export function cleanScrutin(scrutin) {
178
- cleanXmlArtefacts(scrutin);
179
- const demandeur = scrutin.demandeur;
180
- assert(demandeur);
321
+ function cleanScrutin(scrutin) {
322
+ (0, _xml.cleanXmlArtefacts)(scrutin);
323
+ var demandeur = scrutin.demandeur;
324
+ (0, _assert["default"])(demandeur);
181
325
  {
182
- cleanXmlArtefacts(demandeur);
183
- assert.strictEqual(demandeur.referenceLegislative, undefined);
326
+ (0, _xml.cleanXmlArtefacts)(demandeur);
327
+
328
+ _assert["default"].strictEqual(demandeur.referenceLegislative, undefined);
184
329
  }
185
- const objet = scrutin.objet;
186
- assert(objet);
330
+ var objet = scrutin.objet;
331
+ (0, _assert["default"])(objet);
187
332
  {
188
- cleanXmlArtefacts(objet);
189
- assert.strictEqual(objet.referenceLegislative, undefined);
333
+ (0, _xml.cleanXmlArtefacts)(objet);
334
+
335
+ _assert["default"].strictEqual(objet.referenceLegislative, undefined);
190
336
  }
191
- let ventilationVotes = scrutin.ventilationVotes;
192
- assert(ventilationVotes);
337
+ var ventilationVotes = scrutin.ventilationVotes;
338
+ (0, _assert["default"])(ventilationVotes);
193
339
  {
194
340
  ventilationVotes = ventilationVotes.organe;
195
- assert(ventilationVotes);
196
- let groupes = ventilationVotes.groupes;
197
- assert(groupes);
341
+ (0, _assert["default"])(ventilationVotes);
342
+ var groupes = ventilationVotes.groupes;
343
+ (0, _assert["default"])(groupes);
198
344
  {
199
345
  groupes = groupes.groupe;
200
- assert(Array.isArray(groupes));
201
-
202
- for (const groupe of groupes) {
203
- const vote = groupe.vote;
204
- assert(vote);
205
- {
206
- const decompteVoix = vote.decompteVoix;
207
- assert(decompteVoix);
208
- {
209
- if (decompteVoix.abstention !== undefined) {
210
- assert.strictEqual(decompteVoix.abstentions, undefined);
211
- decompteVoix.abstentions = decompteVoix.abstention;
212
- delete decompteVoix.abstention;
213
- }
346
+ (0, _assert["default"])(Array.isArray(groupes));
347
+
348
+ var _iterator9 = _createForOfIteratorHelper(groupes),
349
+ _step9;
214
350
 
215
- if (decompteVoix.nonVotant !== undefined) {
216
- assert.strictEqual(decompteVoix.nonVotants, undefined);
217
- decompteVoix.nonVotants = decompteVoix.nonVotant;
218
- delete decompteVoix.nonVotant;
351
+ try {
352
+ for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
353
+ var groupe = _step9.value;
354
+ var vote = groupe.vote;
355
+ (0, _assert["default"])(vote);
356
+ {
357
+ var decompteVoix = vote.decompteVoix;
358
+ (0, _assert["default"])(decompteVoix);
359
+ {
360
+ if (decompteVoix.abstention !== undefined) {
361
+ _assert["default"].strictEqual(decompteVoix.abstentions, undefined);
362
+
363
+ decompteVoix.abstentions = decompteVoix.abstention;
364
+ delete decompteVoix.abstention;
365
+ }
366
+
367
+ if (decompteVoix.nonVotant !== undefined) {
368
+ _assert["default"].strictEqual(decompteVoix.nonVotants, undefined);
369
+
370
+ decompteVoix.nonVotants = decompteVoix.nonVotant;
371
+ delete decompteVoix.nonVotant;
372
+ }
219
373
  }
374
+ var decompteNominatif = vote.decompteNominatif;
375
+ (0, _assert["default"])(decompteNominatif);
376
+ cleanDecompteNominatif(decompteNominatif);
220
377
  }
221
- const decompteNominatif = vote.decompteNominatif;
222
- assert(decompteNominatif);
223
- cleanDecompteNominatif(decompteNominatif);
224
378
  }
379
+ } catch (err) {
380
+ _iterator9.e(err);
381
+ } finally {
382
+ _iterator9.f();
225
383
  }
226
384
 
227
385
  ventilationVotes.groupes = groupes;
228
386
  }
229
387
  scrutin.ventilationVotes = ventilationVotes;
230
388
  }
231
- const miseAuPoint = scrutin.miseAuPoint;
389
+ var miseAuPoint = scrutin.miseAuPoint;
232
390
 
233
391
  if (miseAuPoint !== undefined) {
234
392
  cleanDecompteNominatif(miseAuPoint);
235
- let dysfonctionnement = miseAuPoint.dysfonctionnement;
393
+ var dysfonctionnement = miseAuPoint.dysfonctionnement;
236
394
 
237
395
  if (dysfonctionnement !== undefined) {
238
396
  cleanDecompteNominatif(dysfonctionnement);
239
397
 
240
- if (Object.values(dysfonctionnement).filter(value => value !== undefined).length === 0) {
398
+ if (Object.values(dysfonctionnement).filter(function (value) {
399
+ return value !== undefined;
400
+ }).length === 0) {
241
401
  delete miseAuPoint.dysfonctionnement;
242
402
  }
243
403
  }
244
404
 
245
- if (Object.values(miseAuPoint).filter(value => value !== undefined).length === 0) {
405
+ if (Object.values(miseAuPoint).filter(function (value) {
406
+ return value !== undefined;
407
+ }).length === 0) {
246
408
  delete scrutin.miseAuPoint;
247
409
  }
248
410
  }
249
411
  }
250
412
 
251
413
  function cleanVotant(votant) {
252
- cleanBooleanAttribute(votant, "parDelegation");
414
+ (0, _xml.cleanBooleanAttribute)(votant, "parDelegation");
253
415
  }
254
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJjbGVhbkJvb2xlYW5BdHRyaWJ1dGUiLCJjbGVhblhtbEFydGVmYWN0cyIsImNsZWFuRGVjb21wdGVOb21pbmF0aWYiLCJkZWNvbXB0ZU5vbWluYXRpZiIsIm5vblZvdGFudHMiLCJ1bmRlZmluZWQiLCJzdHJpY3RFcXVhbCIsIkFycmF5IiwiaXNBcnJheSIsIm5vblZvdGFudHNBcnJheSIsIm5vblZvdGFudCIsInZvdGFudCIsInB1c2giLCJsZW5ndGgiLCJjbGVhblZvdGFudCIsInBvdXIiLCJwb3VycyIsImNvbnRyZSIsImNvbnRyZXMiLCJhYnN0ZW50aW9ucyIsImFic3RlbnRpb25zQXJyYXkiLCJhYnNlbnRpb25zSXRlbSIsIm5vblZvdGFudHNWb2xvbnRhaXJlcyIsIm5vblZvdGFudHNWb2xvbnRhaXJlc0FycmF5IiwiY2xlYW5TY3J1dGluIiwic2NydXRpbiIsImRlbWFuZGV1ciIsInJlZmVyZW5jZUxlZ2lzbGF0aXZlIiwib2JqZXQiLCJ2ZW50aWxhdGlvblZvdGVzIiwib3JnYW5lIiwiZ3JvdXBlcyIsImdyb3VwZSIsInZvdGUiLCJkZWNvbXB0ZVZvaXgiLCJhYnN0ZW50aW9uIiwibWlzZUF1UG9pbnQiLCJkeXNmb25jdGlvbm5lbWVudCIsIk9iamVjdCIsInZhbHVlcyIsImZpbHRlciIsInZhbHVlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsZWFuZXJzL3NjcnV0aW5zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5cbmltcG9ydCB7IGNsZWFuQm9vbGVhbkF0dHJpYnV0ZSwgY2xlYW5YbWxBcnRlZmFjdHMgfSBmcm9tIFwiLi94bWxcIlxuXG5mdW5jdGlvbiBjbGVhbkRlY29tcHRlTm9taW5hdGlmKGRlY29tcHRlTm9taW5hdGlmOiBhbnkpIHtcbiAgY2xlYW5YbWxBcnRlZmFjdHMoZGVjb21wdGVOb21pbmF0aWYpXG5cbiAgbGV0IG5vblZvdGFudHMgPSBkZWNvbXB0ZU5vbWluYXRpZi5ub25Wb3RhbnRzXG4gIGlmIChub25Wb3RhbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIG5vblZvdGFudHMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChub25Wb3RhbnRzLCBcIjBcIilcbiAgICAgIG5vblZvdGFudHMgPSBbXVxuICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkobm9uVm90YW50cykpIHtcbiAgICAgIGFzc2VydChub25Wb3RhbnRzKVxuICAgICAgbm9uVm90YW50cyA9IFtub25Wb3RhbnRzXVxuICAgIH1cbiAgICBjb25zdCBub25Wb3RhbnRzQXJyYXkgPSBub25Wb3RhbnRzXG4gICAgbm9uVm90YW50cyA9IFtdXG4gICAgZm9yIChsZXQgbm9uVm90YW50IG9mIG5vblZvdGFudHNBcnJheSkge1xuICAgICAgaWYgKG5vblZvdGFudCA9PT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgbm9uVm90YW50ID0gbm9uVm90YW50LnZvdGFudFxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9uVm90YW50KSkge1xuICAgICAgICBub25Wb3RhbnRzLnB1c2goLi4ubm9uVm90YW50KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXNzZXJ0KG5vblZvdGFudClcbiAgICAgICAgbm9uVm90YW50cy5wdXNoKG5vblZvdGFudClcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5vblZvdGFudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBkZWxldGUgZGVjb21wdGVOb21pbmF0aWYubm9uVm90YW50c1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWNvbXB0ZU5vbWluYXRpZi5ub25Wb3RhbnRzID0gbm9uVm90YW50c1xuICAgICAgZm9yIChjb25zdCB2b3RhbnQgb2Ygbm9uVm90YW50cykge1xuICAgICAgICBjbGVhblZvdGFudCh2b3RhbnQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IHBvdXIgPSBkZWNvbXB0ZU5vbWluYXRpZi5wb3VyXG4gIGlmIChwb3VyID09PSB1bmRlZmluZWQpIHtcbiAgICBwb3VyID0gZGVjb21wdGVOb21pbmF0aWYucG91cnNcbiAgfSBlbHNlIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZGVjb21wdGVOb21pbmF0aWYucG91cnMsIHVuZGVmaW5lZClcbiAgfVxuICBpZiAocG91ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcG91ciA9IHBvdXIudm90YW50XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBvdXIpKSB7XG4gICAgICBhc3NlcnQocG91cilcbiAgICAgIHBvdXIgPSBbcG91cl1cbiAgICB9XG4gICAgaWYgKHBvdXIubGVuZ3RoID09PSAwKSB7XG4gICAgICBkZWxldGUgZGVjb21wdGVOb21pbmF0aWYucG91clxuICAgIH0gZWxzZSB7XG4gICAgICBkZWNvbXB0ZU5vbWluYXRpZi5wb3VyID0gcG91clxuICAgICAgZm9yIChjb25zdCB2b3RhbnQgb2YgcG91cikge1xuICAgICAgICBjbGVhblZvdGFudCh2b3RhbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRlbGV0ZSBkZWNvbXB0ZU5vbWluYXRpZi5wb3Vyc1xuICB9XG5cbiAgbGV0IGNvbnRyZSA9IGRlY29tcHRlTm9taW5hdGlmLmNvbnRyZVxuICBpZiAoY29udHJlID09PSB1bmRlZmluZWQpIHtcbiAgICBjb250cmUgPSBkZWNvbXB0ZU5vbWluYXRpZi5jb250cmVzXG4gIH0gZWxzZSB7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRlY29tcHRlTm9taW5hdGlmLmNvbnRyZXMsIHVuZGVmaW5lZClcbiAgfVxuICBpZiAoY29udHJlICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb250cmUgPSBjb250cmUudm90YW50XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbnRyZSkpIHtcbiAgICAgIGFzc2VydChjb250cmUpXG4gICAgICBjb250cmUgPSBbY29udHJlXVxuICAgIH1cbiAgICBpZiAoY29udHJlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgZGVsZXRlIGRlY29tcHRlTm9taW5hdGlmLmNvbnRyZVxuICAgIH0gZWxzZSB7XG4gICAgICBkZWNvbXB0ZU5vbWluYXRpZi5jb250cmUgPSBjb250cmVcbiAgICAgIGZvciAoY29uc3Qgdm90YW50IG9mIGNvbnRyZSkge1xuICAgICAgICBjbGVhblZvdGFudCh2b3RhbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRlbGV0ZSBkZWNvbXB0ZU5vbWluYXRpZi5jb250cmVzXG4gIH1cblxuICBsZXQgYWJzdGVudGlvbnMgPSBkZWNvbXB0ZU5vbWluYXRpZi5hYnN0ZW50aW9uc1xuICBpZiAoYWJzdGVudGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhYnN0ZW50aW9ucykpIHtcbiAgICAgIGFic3RlbnRpb25zID0gW2Fic3RlbnRpb25zXVxuICAgIH1cbiAgICBjb25zdCBhYnN0ZW50aW9uc0FycmF5ID0gYWJzdGVudGlvbnNcbiAgICBhYnN0ZW50aW9ucyA9IFtdXG4gICAgZm9yIChsZXQgYWJzZW50aW9uc0l0ZW0gb2YgYWJzdGVudGlvbnNBcnJheSkge1xuICAgICAgaWYgKGFic2VudGlvbnNJdGVtID09PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBhYnNlbnRpb25zSXRlbSA9IGFic2VudGlvbnNJdGVtLnZvdGFudFxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYWJzZW50aW9uc0l0ZW0pKSB7XG4gICAgICAgIGFic3RlbnRpb25zLnB1c2goLi4uYWJzZW50aW9uc0l0ZW0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQoYWJzZW50aW9uc0l0ZW0pXG4gICAgICAgIGFic3RlbnRpb25zLnB1c2goYWJzZW50aW9uc0l0ZW0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhYnN0ZW50aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIGRlbGV0ZSBkZWNvbXB0ZU5vbWluYXRpZi5hYnN0ZW50aW9uc1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWNvbXB0ZU5vbWluYXRpZi5hYnN0ZW50aW9ucyA9IGFic3RlbnRpb25zXG4gICAgICBmb3IgKGNvbnN0IHZvdGFudCBvZiBhYnN0ZW50aW9ucykge1xuICAgICAgICBjbGVhblZvdGFudCh2b3RhbnQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IG5vblZvdGFudHNWb2xvbnRhaXJlcyA9IGRlY29tcHRlTm9taW5hdGlmLm5vblZvdGFudHNWb2xvbnRhaXJlc1xuICBpZiAobm9uVm90YW50c1ZvbG9udGFpcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobm9uVm90YW50c1ZvbG9udGFpcmVzKSkge1xuICAgICAgbm9uVm90YW50c1ZvbG9udGFpcmVzID0gW25vblZvdGFudHNWb2xvbnRhaXJlc11cbiAgICB9XG4gICAgY29uc3Qgbm9uVm90YW50c1ZvbG9udGFpcmVzQXJyYXkgPSBub25Wb3RhbnRzVm9sb250YWlyZXNcbiAgICBub25Wb3RhbnRzVm9sb250YWlyZXMgPSBbXVxuICAgIGZvciAobGV0IGFic2VudGlvbnNJdGVtIG9mIG5vblZvdGFudHNWb2xvbnRhaXJlc0FycmF5KSB7XG4gICAgICBpZiAoYWJzZW50aW9uc0l0ZW0gPT09IG51bGwpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGFic2VudGlvbnNJdGVtID0gYWJzZW50aW9uc0l0ZW0udm90YW50XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhYnNlbnRpb25zSXRlbSkpIHtcbiAgICAgICAgbm9uVm90YW50c1ZvbG9udGFpcmVzLnB1c2goLi4uYWJzZW50aW9uc0l0ZW0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQoYWJzZW50aW9uc0l0ZW0pXG4gICAgICAgIG5vblZvdGFudHNWb2xvbnRhaXJlcy5wdXNoKGFic2VudGlvbnNJdGVtKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAobm9uVm90YW50c1ZvbG9udGFpcmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgZGVsZXRlIGRlY29tcHRlTm9taW5hdGlmLm5vblZvdGFudHNWb2xvbnRhaXJlc1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWNvbXB0ZU5vbWluYXRpZi5ub25Wb3RhbnRzVm9sb250YWlyZXMgPSBub25Wb3RhbnRzVm9sb250YWlyZXNcbiAgICAgIGZvciAoY29uc3Qgdm90YW50IG9mIG5vblZvdGFudHNWb2xvbnRhaXJlcykge1xuICAgICAgICBjbGVhblZvdGFudCh2b3RhbnQpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhblNjcnV0aW4oc2NydXRpbjogYW55KTogdm9pZCB7XG4gIGNsZWFuWG1sQXJ0ZWZhY3RzKHNjcnV0aW4pXG5cbiAgY29uc3QgZGVtYW5kZXVyID0gc2NydXRpbi5kZW1hbmRldXJcbiAgYXNzZXJ0KGRlbWFuZGV1cilcbiAge1xuICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKGRlbWFuZGV1cilcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChkZW1hbmRldXIucmVmZXJlbmNlTGVnaXNsYXRpdmUsIHVuZGVmaW5lZClcbiAgfVxuXG4gIGNvbnN0IG9iamV0ID0gc2NydXRpbi5vYmpldFxuICBhc3NlcnQob2JqZXQpXG4gIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhvYmpldClcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmpldC5yZWZlcmVuY2VMZWdpc2xhdGl2ZSwgdW5kZWZpbmVkKVxuICB9XG5cbiAgbGV0IHZlbnRpbGF0aW9uVm90ZXMgPSBzY3J1dGluLnZlbnRpbGF0aW9uVm90ZXNcbiAgYXNzZXJ0KHZlbnRpbGF0aW9uVm90ZXMpXG4gIHtcbiAgICB2ZW50aWxhdGlvblZvdGVzID0gdmVudGlsYXRpb25Wb3Rlcy5vcmdhbmVcbiAgICBhc3NlcnQodmVudGlsYXRpb25Wb3RlcylcblxuICAgIGxldCBncm91cGVzID0gdmVudGlsYXRpb25Wb3Rlcy5ncm91cGVzXG4gICAgYXNzZXJ0KGdyb3VwZXMpXG4gICAge1xuICAgICAgZ3JvdXBlcyA9IGdyb3VwZXMuZ3JvdXBlXG4gICAgICBhc3NlcnQoQXJyYXkuaXNBcnJheShncm91cGVzKSlcbiAgICAgIGZvciAoY29uc3QgZ3JvdXBlIG9mIGdyb3VwZXMpIHtcbiAgICAgICAgY29uc3Qgdm90ZSA9IGdyb3VwZS52b3RlXG4gICAgICAgIGFzc2VydCh2b3RlKVxuICAgICAgICB7XG4gICAgICAgICAgY29uc3QgZGVjb21wdGVWb2l4ID0gdm90ZS5kZWNvbXB0ZVZvaXhcbiAgICAgICAgICBhc3NlcnQoZGVjb21wdGVWb2l4KVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlmIChkZWNvbXB0ZVZvaXguYWJzdGVudGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChkZWNvbXB0ZVZvaXguYWJzdGVudGlvbnMsIHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgZGVjb21wdGVWb2l4LmFic3RlbnRpb25zID0gZGVjb21wdGVWb2l4LmFic3RlbnRpb25cbiAgICAgICAgICAgICAgZGVsZXRlIGRlY29tcHRlVm9peC5hYnN0ZW50aW9uXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkZWNvbXB0ZVZvaXgubm9uVm90YW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRlY29tcHRlVm9peC5ub25Wb3RhbnRzLCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgIGRlY29tcHRlVm9peC5ub25Wb3RhbnRzID0gZGVjb21wdGVWb2l4Lm5vblZvdGFudFxuICAgICAgICAgICAgICBkZWxldGUgZGVjb21wdGVWb2l4Lm5vblZvdGFudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGRlY29tcHRlTm9taW5hdGlmID0gdm90ZS5kZWNvbXB0ZU5vbWluYXRpZlxuICAgICAgICAgIGFzc2VydChkZWNvbXB0ZU5vbWluYXRpZilcbiAgICAgICAgICBjbGVhbkRlY29tcHRlTm9taW5hdGlmKGRlY29tcHRlTm9taW5hdGlmKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2ZW50aWxhdGlvblZvdGVzLmdyb3VwZXMgPSBncm91cGVzXG4gICAgfVxuXG4gICAgc2NydXRpbi52ZW50aWxhdGlvblZvdGVzID0gdmVudGlsYXRpb25Wb3Rlc1xuICB9XG5cbiAgY29uc3QgbWlzZUF1UG9pbnQgPSBzY3J1dGluLm1pc2VBdVBvaW50XG4gIGlmIChtaXNlQXVQb2ludCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5EZWNvbXB0ZU5vbWluYXRpZihtaXNlQXVQb2ludClcblxuICAgIGxldCBkeXNmb25jdGlvbm5lbWVudCA9IG1pc2VBdVBvaW50LmR5c2ZvbmN0aW9ubmVtZW50XG4gICAgaWYgKGR5c2ZvbmN0aW9ubmVtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFuRGVjb21wdGVOb21pbmF0aWYoZHlzZm9uY3Rpb25uZW1lbnQpXG4gICAgICBpZiAoXG4gICAgICAgIE9iamVjdC52YWx1ZXMoZHlzZm9uY3Rpb25uZW1lbnQpLmZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgLmxlbmd0aCA9PT0gMFxuICAgICAgKSB7XG4gICAgICAgIGRlbGV0ZSBtaXNlQXVQb2ludC5keXNmb25jdGlvbm5lbWVudFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIE9iamVjdC52YWx1ZXMobWlzZUF1UG9pbnQpLmZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAgIC5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIGRlbGV0ZSBzY3J1dGluLm1pc2VBdVBvaW50XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFuVm90YW50KHZvdGFudDogYW55KSB7XG4gIGNsZWFuQm9vbGVhbkF0dHJpYnV0ZSh2b3RhbnQs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
416
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbGVhbkRlY29tcHRlTm9taW5hdGlmIiwiZGVjb21wdGVOb21pbmF0aWYiLCJjbGVhblhtbEFydGVmYWN0cyIsIm5vblZvdGFudHMiLCJ1bmRlZmluZWQiLCJhc3NlcnQiLCJzdHJpY3RFcXVhbCIsIkFycmF5IiwiaXNBcnJheSIsIm5vblZvdGFudHNBcnJheSIsIm5vblZvdGFudCIsInZvdGFudCIsInB1c2giLCJsZW5ndGgiLCJjbGVhblZvdGFudCIsInBvdXIiLCJwb3VycyIsImNvbnRyZSIsImNvbnRyZXMiLCJhYnN0ZW50aW9ucyIsImFic3RlbnRpb25zQXJyYXkiLCJhYnNlbnRpb25zSXRlbSIsIm5vblZvdGFudHNWb2xvbnRhaXJlcyIsIm5vblZvdGFudHNWb2xvbnRhaXJlc0FycmF5IiwiY2xlYW5TY3J1dGluIiwic2NydXRpbiIsImRlbWFuZGV1ciIsInJlZmVyZW5jZUxlZ2lzbGF0aXZlIiwib2JqZXQiLCJ2ZW50aWxhdGlvblZvdGVzIiwib3JnYW5lIiwiZ3JvdXBlcyIsImdyb3VwZSIsInZvdGUiLCJkZWNvbXB0ZVZvaXgiLCJhYnN0ZW50aW9uIiwibWlzZUF1UG9pbnQiLCJkeXNmb25jdGlvbm5lbWVudCIsIk9iamVjdCIsInZhbHVlcyIsImZpbHRlciIsInZhbHVlIiwiY2xlYW5Cb29sZWFuQXR0cmlidXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsZWFuZXJzL3NjcnV0aW5zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5cbmltcG9ydCB7IGNsZWFuQm9vbGVhbkF0dHJpYnV0ZSwgY2xlYW5YbWxBcnRlZmFjdHMgfSBmcm9tIFwiLi94bWxcIlxuXG5mdW5jdGlvbiBjbGVhbkRlY29tcHRlTm9taW5hdGlmKGRlY29tcHRlTm9taW5hdGlmOiBhbnkpIHtcbiAgY2xlYW5YbWxBcnRlZmFjdHMoZGVjb21wdGVOb21pbmF0aWYpXG5cbiAgbGV0IG5vblZvdGFudHMgPSBkZWNvbXB0ZU5vbWluYXRpZi5ub25Wb3RhbnRzXG4gIGlmIChub25Wb3RhbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIG5vblZvdGFudHMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChub25Wb3RhbnRzLCBcIjBcIilcbiAgICAgIG5vblZvdGFudHMgPSBbXVxuICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkobm9uVm90YW50cykpIHtcbiAgICAgIGFzc2VydChub25Wb3RhbnRzKVxuICAgICAgbm9uVm90YW50cyA9IFtub25Wb3RhbnRzXVxuICAgIH1cbiAgICBjb25zdCBub25Wb3RhbnRzQXJyYXkgPSBub25Wb3RhbnRzXG4gICAgbm9uVm90YW50cyA9IFtdXG4gICAgZm9yIChsZXQgbm9uVm90YW50IG9mIG5vblZvdGFudHNBcnJheSkge1xuICAgICAgaWYgKG5vblZvdGFudCA9PT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgbm9uVm90YW50ID0gbm9uVm90YW50LnZvdGFudFxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9uVm90YW50KSkge1xuICAgICAgICBub25Wb3RhbnRzLnB1c2goLi4ubm9uVm90YW50KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXNzZXJ0KG5vblZvdGFudClcbiAgICAgICAgbm9uVm90YW50cy5wdXNoKG5vblZvdGFudClcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5vblZvdGFudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBkZWxldGUgZGVjb21wdGVOb21pbmF0aWYubm9uVm90YW50c1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWNvbXB0ZU5vbWluYXRpZi5ub25Wb3RhbnRzID0gbm9uVm90YW50c1xuICAgICAgZm9yIChjb25zdCB2b3RhbnQgb2Ygbm9uVm90YW50cykge1xuICAgICAgICBjbGVhblZvdGFudCh2b3RhbnQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IHBvdXIgPSBkZWNvbXB0ZU5vbWluYXRpZi5wb3VyXG4gIGlmIChwb3VyID09PSB1bmRlZmluZWQpIHtcbiAgICBwb3VyID0gZGVjb21wdGVOb21pbmF0aWYucG91cnNcbiAgfSBlbHNlIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZGVjb21wdGVOb21pbmF0aWYucG91cnMsIHVuZGVmaW5lZClcbiAgfVxuICBpZiAocG91ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcG91ciA9IHBvdXIudm90YW50XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBvdXIpKSB7XG4gICAgICBhc3NlcnQocG91cilcbiAgICAgIHBvdXIgPSBbcG91cl1cbiAgICB9XG4gICAgaWYgKHBvdXIubGVuZ3RoID09PSAwKSB7XG4gICAgICBkZWxldGUgZGVjb21wdGVOb21pbmF0aWYucG91clxuICAgIH0gZWxzZSB7XG4gICAgICBkZWNvbXB0ZU5vbWluYXRpZi5wb3VyID0gcG91clxuICAgICAgZm9yIChjb25zdCB2b3RhbnQgb2YgcG91cikge1xuICAgICAgICBjbGVhblZvdGFudCh2b3RhbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRlbGV0ZSBkZWNvbXB0ZU5vbWluYXRpZi5wb3Vyc1xuICB9XG5cbiAgbGV0IGNvbnRyZSA9IGRlY29tcHRlTm9taW5hdGlmLmNvbnRyZVxuICBpZiAoY29udHJlID09PSB1bmRlZmluZWQpIHtcbiAgICBjb250cmUgPSBkZWNvbXB0ZU5vbWluYXRpZi5jb250cmVzXG4gIH0gZWxzZSB7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRlY29tcHRlTm9taW5hdGlmLmNvbnRyZXMsIHVuZGVmaW5lZClcbiAgfVxuICBpZiAoY29udHJlICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb250cmUgPSBjb250cmUudm90YW50XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbnRyZSkpIHtcbiAgICAgIGFzc2VydChjb250cmUpXG4gICAgICBjb250cmUgPSBbY29udHJlXVxuICAgIH1cbiAgICBpZiAoY29udHJlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgZGVsZXRlIGRlY29tcHRlTm9taW5hdGlmLmNvbnRyZVxuICAgIH0gZWxzZSB7XG4gICAgICBkZWNvbXB0ZU5vbWluYXRpZi5jb250cmUgPSBjb250cmVcbiAgICAgIGZvciAoY29uc3Qgdm90YW50IG9mIGNvbnRyZSkge1xuICAgICAgICBjbGVhblZvdGFudCh2b3RhbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRlbGV0ZSBkZWNvbXB0ZU5vbWluYXRpZi5jb250cmVzXG4gIH1cblxuICBsZXQgYWJzdGVudGlvbnMgPSBkZWNvbXB0ZU5vbWluYXRpZi5hYnN0ZW50aW9uc1xuICBpZiAoYWJzdGVudGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhYnN0ZW50aW9ucykpIHtcbiAgICAgIGFic3RlbnRpb25zID0gW2Fic3RlbnRpb25zXVxuICAgIH1cbiAgICBjb25zdCBhYnN0ZW50aW9uc0FycmF5ID0gYWJzdGVudGlvbnNcbiAgICBhYnN0ZW50aW9ucyA9IFtdXG4gICAgZm9yIChsZXQgYWJzZW50aW9uc0l0ZW0gb2YgYWJzdGVudGlvbnNBcnJheSkge1xuICAgICAgaWYgKGFic2VudGlvbnNJdGVtID09PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBhYnNlbnRpb25zSXRlbSA9IGFic2VudGlvbnNJdGVtLnZvdGFudFxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYWJzZW50aW9uc0l0ZW0pKSB7XG4gICAgICAgIGFic3RlbnRpb25zLnB1c2goLi4uYWJzZW50aW9uc0l0ZW0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQoYWJzZW50aW9uc0l0ZW0pXG4gICAgICAgIGFic3RlbnRpb25zLnB1c2goYWJzZW50aW9uc0l0ZW0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhYnN0ZW50aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIGRlbGV0ZSBkZWNvbXB0ZU5vbWluYXRpZi5hYnN0ZW50aW9uc1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWNvbXB0ZU5vbWluYXRpZi5hYnN0ZW50aW9ucyA9IGFic3RlbnRpb25zXG4gICAgICBmb3IgKGNvbnN0IHZvdGFudCBvZiBhYnN0ZW50aW9ucykge1xuICAgICAgICBjbGVhblZvdGFudCh2b3RhbnQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IG5vblZvdGFudHNWb2xvbnRhaXJlcyA9IGRlY29tcHRlTm9taW5hdGlmLm5vblZvdGFudHNWb2xvbnRhaXJlc1xuICBpZiAobm9uVm90YW50c1ZvbG9udGFpcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobm9uVm90YW50c1ZvbG9udGFpcmVzKSkge1xuICAgICAgbm9uVm90YW50c1ZvbG9udGFpcmVzID0gW25vblZvdGFudHNWb2xvbnRhaXJlc11cbiAgICB9XG4gICAgY29uc3Qgbm9uVm90YW50c1ZvbG9udGFpcmVzQXJyYXkgPSBub25Wb3RhbnRzVm9sb250YWlyZXNcbiAgICBub25Wb3RhbnRzVm9sb250YWlyZXMgPSBbXVxuICAgIGZvciAobGV0IGFic2VudGlvbnNJdGVtIG9mIG5vblZvdGFudHNWb2xvbnRhaXJlc0FycmF5KSB7XG4gICAgICBpZiAoYWJzZW50aW9uc0l0ZW0gPT09IG51bGwpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGFic2VudGlvbnNJdGVtID0gYWJzZW50aW9uc0l0ZW0udm90YW50XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhYnNlbnRpb25zSXRlbSkpIHtcbiAgICAgICAgbm9uVm90YW50c1ZvbG9udGFpcmVzLnB1c2goLi4uYWJzZW50aW9uc0l0ZW0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQoYWJzZW50aW9uc0l0ZW0pXG4gICAgICAgIG5vblZvdGFudHNWb2xvbnRhaXJlcy5wdXNoKGFic2VudGlvbnNJdGVtKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAobm9uVm90YW50c1ZvbG9udGFpcmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgZGVsZXRlIGRlY29tcHRlTm9taW5hdGlmLm5vblZvdGFudHNWb2xvbnRhaXJlc1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWNvbXB0ZU5vbWluYXRpZi5ub25Wb3RhbnRzVm9sb250YWlyZXMgPSBub25Wb3RhbnRzVm9sb250YWlyZXNcbiAgICAgIGZvciAoY29uc3Qgdm90YW50IG9mIG5vblZvdGFudHNWb2xvbnRhaXJlcykge1xuICAgICAgICBjbGVhblZvdGFudCh2b3RhbnQpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhblNjcnV0aW4oc2NydXRpbjogYW55KTogdm9pZCB7XG4gIGNsZWFuWG1sQXJ0ZWZhY3RzKHNjcnV0aW4pXG5cbiAgY29uc3QgZGVtYW5kZXVyID0gc2NydXRpbi5kZW1hbmRldXJcbiAgYXNzZXJ0KGRlbWFuZGV1cilcbiAge1xuICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKGRlbWFuZGV1cilcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChkZW1hbmRldXIucmVmZXJlbmNlTGVnaXNsYXRpdmUsIHVuZGVmaW5lZClcbiAgfVxuXG4gIGNvbnN0IG9iamV0ID0gc2NydXRpbi5vYmpldFxuICBhc3NlcnQob2JqZXQpXG4gIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhvYmpldClcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmpldC5yZWZlcmVuY2VMZWdpc2xhdGl2ZSwgdW5kZWZpbmVkKVxuICB9XG5cbiAgbGV0IHZlbnRpbGF0aW9uVm90ZXMgPSBzY3J1dGluLnZlbnRpbGF0aW9uVm90ZXNcbiAgYXNzZXJ0KHZlbnRpbGF0aW9uVm90ZXMpXG4gIHtcbiAgICB2ZW50aWxhdGlvblZvdGVzID0gdmVudGlsYXRpb25Wb3Rlcy5vcmdhbmVcbiAgICBhc3NlcnQodmVudGlsYXRpb25Wb3RlcylcblxuICAgIGxldCBncm91cGVzID0gdmVudGlsYXRpb25Wb3Rlcy5ncm91cGVzXG4gICAgYXNzZXJ0KGdyb3VwZXMpXG4gICAge1xuICAgICAgZ3JvdXBlcyA9IGdyb3VwZXMuZ3JvdXBlXG4gICAgICBhc3NlcnQoQXJyYXkuaXNBcnJheShncm91cGVzKSlcbiAgICAgIGZvciAoY29uc3QgZ3JvdXBlIG9mIGdyb3VwZXMpIHtcbiAgICAgICAgY29uc3Qgdm90ZSA9IGdyb3VwZS52b3RlXG4gICAgICAgIGFzc2VydCh2b3RlKVxuICAgICAgICB7XG4gICAgICAgICAgY29uc3QgZGVjb21wdGVWb2l4ID0gdm90ZS5kZWNvbXB0ZVZvaXhcbiAgICAgICAgICBhc3NlcnQoZGVjb21wdGVWb2l4KVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlmIChkZWNvbXB0ZVZvaXguYWJzdGVudGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChkZWNvbXB0ZVZvaXguYWJzdGVudGlvbnMsIHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgZGVjb21wdGVWb2l4LmFic3RlbnRpb25zID0gZGVjb21wdGVWb2l4LmFic3RlbnRpb25cbiAgICAgICAgICAgICAgZGVsZXRlIGRlY29tcHRlVm9peC5hYnN0ZW50aW9uXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkZWNvbXB0ZVZvaXgubm9uVm90YW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRlY29tcHRlVm9peC5ub25Wb3RhbnRzLCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgIGRlY29tcHRlVm9peC5ub25Wb3RhbnRzID0gZGVjb21wdGVWb2l4Lm5vblZvdGFudFxuICAgICAgICAgICAgICBkZWxldGUgZGVjb21wdGVWb2l4Lm5vblZvdGFudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGRlY29tcHRlTm9taW5hdGlmID0gdm90ZS5kZWNvbXB0ZU5vbWluYXRpZlxuICAgICAgICAgIGFzc2VydChkZWNvbXB0ZU5vbWluYXRpZilcbiAgICAgICAgICBjbGVhbkRlY29tcHRlTm9taW5hdGlmKGRlY29tcHRlTm9taW5hdGlmKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2ZW50aWxhdGlvblZvdGVzLmdyb3VwZXMgPSBncm91cGVzXG4gICAgfVxuXG4gICAgc2NydXRpbi52ZW50aWxhdGlvblZvdGVzID0gdmVudGlsYXRpb25Wb3Rlc1xuICB9XG5cbiAgY29uc3QgbWlzZUF1UG9pbnQgPSBzY3J1dGluLm1pc2VBdVBvaW50XG4gIGlmIChtaXNlQXVQb2ludCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5EZWNvbXB0ZU5vbWluYXRpZihtaXNlQXVQb2ludClcblxuICAgIGxldCBkeXNmb25jdGlvbm5lbWVudCA9IG1pc2VBdVBvaW50LmR5c2ZvbmN0aW9ubmVtZW50XG4gICAgaWYgKGR5c2ZvbmN0aW9ubmVtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFuRGVjb21wdGVOb21pbmF0aWYoZHlzZm9uY3Rpb25uZW1lbnQpXG4gICAgICBpZiAoXG4gICAgICAgIE9iamVjdC52YWx1ZXMoZHlzZm9uY3Rpb25uZW1lbnQpLmZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgLmxlbmd0aCA9PT0gMFxuICAgICAgKSB7XG4gICAgICAgIGRlbGV0ZSBtaXNlQXVQb2ludC5keXNmb25jdGlvbm5lbWVudFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIE9iamVjdC52YWx1ZXMobWlzZUF1UG9pbnQpLmZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAgIC5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIGRlbGV0ZSBzY3J1dGluLm1pc2VBdVBvaW50XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFuVm90YW50KHZvdGFudDogYW55KSB7XG4gIGNsZWFuQm9vbGVhbkF0dHJpYnV0ZSh2b3RhbnQs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