@tricoteuses/senat 1.1.2 → 1.3.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 (259) hide show
  1. package/README.md +53 -15
  2. package/lib/aggregates.d.ts +4 -6
  3. package/lib/aggregates.mjs +908 -780
  4. package/lib/aggregates.ts +8 -122
  5. package/lib/data/legislatures.json +38 -0
  6. package/lib/databases.d.ts +9 -0
  7. package/lib/databases.js +41 -11
  8. package/lib/databases.mjs +32 -1
  9. package/lib/databases.ts +40 -1
  10. package/lib/fields.mjs +64 -18
  11. package/lib/index.d.ts +5 -7
  12. package/lib/index.js +8 -112
  13. package/lib/index.mjs +4 -7
  14. package/lib/index.ts +9 -30
  15. package/lib/inserters.d.ts +0 -4
  16. package/lib/inserters.mjs +461 -337
  17. package/lib/inserters.ts +0 -24
  18. package/lib/legislatures.json +38 -0
  19. package/lib/loaders.d.ts +64 -0
  20. package/lib/loaders.js +682 -0
  21. package/lib/loaders.mjs +158 -0
  22. package/lib/loaders.ts +271 -0
  23. package/lib/model/ameli.d.ts +105 -4
  24. package/lib/model/ameli.js +20 -160
  25. package/lib/model/ameli.mjs +84 -57
  26. package/lib/model/ameli.ts +94 -80
  27. package/lib/model/debats.d.ts +0 -4
  28. package/lib/model/debats.js +1 -122
  29. package/lib/model/debats.mjs +1 -43
  30. package/lib/model/debats.ts +0 -68
  31. package/lib/model/dosleg.d.ts +227 -29
  32. package/lib/model/dosleg.js +92 -832
  33. package/lib/model/dosleg.mjs +196 -337
  34. package/lib/model/dosleg.ts +213 -531
  35. package/lib/model/index.d.ts +4 -5
  36. package/lib/model/index.js +14 -15
  37. package/lib/model/index.mjs +4 -5
  38. package/lib/model/index.ts +8 -5
  39. package/lib/model/questions.d.ts +88 -2
  40. package/lib/model/questions.js +40 -45
  41. package/lib/model/questions.mjs +71 -8
  42. package/lib/model/questions.ts +90 -11
  43. package/lib/model/sens.d.ts +524 -2
  44. package/lib/model/sens.js +172 -49
  45. package/lib/model/sens.mjs +415 -9
  46. package/lib/model/sens.ts +514 -16
  47. package/lib/model/texte.d.ts +7 -0
  48. package/lib/model/texte.js +321 -0
  49. package/lib/model/texte.mjs +208 -0
  50. package/lib/model/texte.ts +229 -0
  51. package/lib/model/util.d.ts +7 -1
  52. package/lib/model/util.js +37 -53
  53. package/lib/model/util.mjs +19 -10
  54. package/lib/model/util.ts +30 -14
  55. package/lib/raw_types/ameli.d.ts +912 -538
  56. package/lib/raw_types/ameli.js +1 -39
  57. package/lib/raw_types/ameli.mjs +4 -1
  58. package/lib/raw_types/ameli.ts +947 -597
  59. package/lib/raw_types/debats.d.ts +204 -124
  60. package/lib/raw_types/debats.js +1 -18
  61. package/lib/raw_types/debats.mjs +4 -1
  62. package/lib/raw_types/debats.ts +218 -141
  63. package/lib/raw_types/dosleg.d.ts +3533 -2024
  64. package/lib/raw_types/dosleg.js +1 -92
  65. package/lib/raw_types/dosleg.mjs +4 -1
  66. package/lib/raw_types/dosleg.ts +3621 -2189
  67. package/lib/raw_types/questions.d.ts +404 -220
  68. package/lib/raw_types/questions.js +1 -18
  69. package/lib/raw_types/questions.mjs +4 -1
  70. package/lib/raw_types/questions.ts +404 -226
  71. package/lib/raw_types/sens.d.ts +4391 -2706
  72. package/lib/raw_types/sens.js +1 -108
  73. package/lib/raw_types/sens.mjs +4 -1
  74. package/lib/raw_types/sens.ts +4495 -2903
  75. package/lib/raw_types_kysely/ameli.d.ts +6 -0
  76. package/lib/raw_types_kysely/ameli.mjs +7 -0
  77. package/lib/raw_types_kysely/ameli.ts +6 -0
  78. package/lib/raw_types_kysely/debats.d.ts +6 -0
  79. package/lib/raw_types_kysely/debats.mjs +7 -0
  80. package/lib/raw_types_kysely/debats.ts +6 -0
  81. package/lib/raw_types_kysely/dosleg.d.ts +6 -0
  82. package/lib/raw_types_kysely/dosleg.mjs +7 -0
  83. package/lib/raw_types_kysely/dosleg.ts +6 -0
  84. package/lib/raw_types_kysely/questions.d.ts +6 -0
  85. package/lib/raw_types_kysely/questions.mjs +7 -0
  86. package/lib/raw_types_kysely/questions.ts +6 -0
  87. package/lib/raw_types_kysely/sens.d.ts +6 -0
  88. package/lib/raw_types_kysely/sens.mjs +7 -0
  89. package/lib/raw_types_kysely/sens.ts +6 -0
  90. package/lib/raw_types_kysely/texte.d.ts +45 -0
  91. package/lib/raw_types_kysely/texte.mjs +7 -0
  92. package/lib/raw_types_kysely/texte.ts +53 -0
  93. package/lib/raw_types_schemats/ameli.d.ts +541 -0
  94. package/lib/raw_types_schemats/ameli.js +45 -0
  95. package/lib/raw_types_schemats/ameli.mjs +2 -0
  96. package/lib/raw_types_schemats/ameli.ts +601 -0
  97. package/lib/raw_types_schemats/debats.d.ts +127 -0
  98. package/lib/raw_types_schemats/debats.js +24 -0
  99. package/lib/raw_types_schemats/debats.mjs +2 -0
  100. package/lib/raw_types_schemats/debats.ts +145 -0
  101. package/lib/raw_types_schemats/dosleg.d.ts +2029 -0
  102. package/lib/raw_types_schemats/dosleg.js +98 -0
  103. package/lib/raw_types_schemats/dosleg.mjs +2 -0
  104. package/lib/raw_types_schemats/dosleg.ts +2195 -0
  105. package/lib/raw_types_schemats/questions.d.ts +233 -0
  106. package/lib/raw_types_schemats/questions.js +24 -0
  107. package/lib/raw_types_schemats/questions.mjs +2 -0
  108. package/lib/raw_types_schemats/questions.ts +251 -0
  109. package/lib/raw_types_schemats/sens.d.ts +2709 -0
  110. package/lib/raw_types_schemats/sens.js +114 -0
  111. package/lib/raw_types_schemats/sens.mjs +2 -0
  112. package/lib/raw_types_schemats/sens.ts +2907 -0
  113. package/lib/scripts/convert_data.js +574 -215
  114. package/lib/scripts/convert_data.mjs +134 -99
  115. package/lib/scripts/convert_data.ts +173 -112
  116. package/lib/scripts/datautil.d.ts +5 -0
  117. package/lib/scripts/datautil.js +64 -0
  118. package/lib/scripts/datautil.mjs +16 -0
  119. package/lib/scripts/datautil.ts +19 -0
  120. package/lib/scripts/parse_textes.js +132 -0
  121. package/lib/scripts/parse_textes.mjs +46 -0
  122. package/lib/scripts/parse_textes.ts +65 -0
  123. package/lib/scripts/retrieve_documents.d.ts +1 -0
  124. package/lib/scripts/retrieve_documents.js +521 -0
  125. package/lib/scripts/retrieve_documents.mjs +249 -0
  126. package/lib/scripts/retrieve_documents.ts +298 -0
  127. package/lib/scripts/retrieve_open_data.js +77 -69
  128. package/lib/scripts/retrieve_open_data.mjs +48 -49
  129. package/lib/scripts/retrieve_open_data.ts +74 -58
  130. package/lib/scripts/retrieve_senateurs_photos.js +45 -63
  131. package/lib/scripts/retrieve_senateurs_photos.mjs +4 -21
  132. package/lib/scripts/retrieve_senateurs_photos.ts +6 -29
  133. package/lib/scripts/retrieve_textes.mjs +325 -74
  134. package/lib/scripts/retrieve_textes.ts +111 -63
  135. package/lib/scripts/shared/cli_helpers.d.ts +44 -0
  136. package/lib/scripts/shared/cli_helpers.js +35 -0
  137. package/lib/scripts/shared/cli_helpers.ts +36 -0
  138. package/lib/scripts/shared/util.d.ts +3 -0
  139. package/lib/scripts/shared/util.js +102 -0
  140. package/lib/scripts/shared/util.ts +33 -0
  141. package/lib/src/aggregates.d.ts +52 -0
  142. package/lib/src/aggregates.mjs +726 -0
  143. package/lib/src/config.d.ts +2 -0
  144. package/lib/src/config.mjs +16 -0
  145. package/lib/src/databases.d.ts +18 -0
  146. package/lib/src/databases.mjs +55 -0
  147. package/lib/src/datasets.d.ts +28 -0
  148. package/lib/src/datasets.mjs +78 -0
  149. package/lib/src/fields.d.ts +10 -0
  150. package/lib/src/fields.mjs +22 -0
  151. package/lib/src/index.d.ts +8 -0
  152. package/lib/src/index.mjs +7 -0
  153. package/lib/src/inserters.d.ts +98 -0
  154. package/lib/src/inserters.mjs +360 -0
  155. package/lib/src/loaders.d.ts +36 -0
  156. package/lib/src/loaders.mjs +107 -0
  157. package/lib/src/model/ameli.d.ts +4 -0
  158. package/lib/src/model/ameli.js +57 -0
  159. package/lib/src/model/debats.d.ts +4 -0
  160. package/lib/src/model/debats.js +43 -0
  161. package/lib/src/model/dosleg.d.ts +197 -0
  162. package/lib/src/model/dosleg.js +169 -0
  163. package/lib/src/model/index.d.ts +4 -0
  164. package/lib/src/model/index.js +4 -0
  165. package/lib/src/model/questions.d.ts +89 -0
  166. package/lib/src/model/questions.js +76 -0
  167. package/lib/src/model/sens.d.ts +390 -0
  168. package/lib/src/model/sens.js +339 -0
  169. package/lib/src/model/texte.d.ts +7 -0
  170. package/lib/src/model/texte.js +183 -0
  171. package/lib/src/raw_types_kysely/ameli.d.ts +915 -0
  172. package/lib/src/raw_types_kysely/ameli.js +5 -0
  173. package/lib/src/raw_types_kysely/debats.d.ts +207 -0
  174. package/lib/src/raw_types_kysely/debats.js +5 -0
  175. package/lib/src/raw_types_kysely/dosleg.d.ts +3532 -0
  176. package/lib/src/raw_types_kysely/dosleg.js +5 -0
  177. package/lib/src/raw_types_kysely/questions.d.ts +414 -0
  178. package/lib/src/raw_types_kysely/questions.js +5 -0
  179. package/lib/src/raw_types_kysely/sens.d.ts +4394 -0
  180. package/lib/src/raw_types_kysely/sens.js +5 -0
  181. package/lib/src/raw_types_schemats/ameli.d.ts +541 -0
  182. package/lib/src/raw_types_schemats/ameli.js +2 -0
  183. package/lib/src/raw_types_schemats/debats.d.ts +127 -0
  184. package/lib/src/raw_types_schemats/debats.js +2 -0
  185. package/lib/src/raw_types_schemats/dosleg.d.ts +2027 -0
  186. package/lib/src/raw_types_schemats/dosleg.js +2 -0
  187. package/lib/src/raw_types_schemats/questions.d.ts +231 -0
  188. package/lib/src/raw_types_schemats/questions.js +2 -0
  189. package/lib/src/raw_types_schemats/sens.d.ts +2709 -0
  190. package/lib/src/raw_types_schemats/sens.js +2 -0
  191. package/lib/src/scripts/convert_data.d.ts +1 -0
  192. package/lib/src/scripts/convert_data.js +95 -0
  193. package/lib/src/scripts/datautil.d.ts +5 -0
  194. package/lib/src/scripts/datautil.js +16 -0
  195. package/lib/src/scripts/parse_textes.d.ts +1 -0
  196. package/lib/src/scripts/parse_textes.js +47 -0
  197. package/lib/src/scripts/retrieve_documents.d.ts +1 -0
  198. package/lib/src/scripts/retrieve_documents.js +258 -0
  199. package/lib/src/scripts/retrieve_open_data.d.ts +1 -0
  200. package/lib/src/scripts/retrieve_open_data.js +214 -0
  201. package/lib/src/scripts/retrieve_senateurs_photos.d.ts +1 -0
  202. package/lib/src/scripts/retrieve_senateurs_photos.js +147 -0
  203. package/lib/src/scripts/shared/cli_helpers.d.ts +44 -0
  204. package/lib/src/scripts/shared/cli_helpers.js +32 -0
  205. package/lib/src/scripts/shared/util.d.ts +3 -0
  206. package/lib/src/scripts/shared/util.js +28 -0
  207. package/lib/src/strings.d.ts +1 -0
  208. package/lib/src/strings.mjs +18 -0
  209. package/lib/src/types/ameli.d.ts +10 -0
  210. package/lib/src/types/ameli.js +13 -0
  211. package/lib/src/types/debats.d.ts +4 -0
  212. package/lib/src/types/debats.js +2 -0
  213. package/lib/src/types/dosleg.d.ts +98 -0
  214. package/lib/src/types/dosleg.js +151 -0
  215. package/lib/src/types/questions.d.ts +2 -0
  216. package/lib/src/types/questions.js +1 -0
  217. package/lib/src/types/sens.d.ts +10 -0
  218. package/lib/src/types/sens.js +1 -0
  219. package/lib/src/types/sessions.d.ts +42 -0
  220. package/lib/src/types/sessions.js +43 -0
  221. package/lib/src/types/texte.d.ts +61 -0
  222. package/lib/src/types/texte.js +16 -0
  223. package/lib/src/validators/config.d.ts +1 -0
  224. package/lib/src/validators/config.js +54 -0
  225. package/lib/src/validators/senat.d.ts +0 -0
  226. package/lib/src/validators/senat.js +24 -0
  227. package/lib/types/ameli.d.ts +1 -1
  228. package/lib/types/ameli.js +2 -2
  229. package/lib/types/ameli.ts +1 -1
  230. package/lib/types/debats.d.ts +1 -1
  231. package/lib/types/debats.js +2 -2
  232. package/lib/types/debats.ts +1 -1
  233. package/lib/types/dosleg.d.ts +2 -2
  234. package/lib/types/dosleg.js +2 -2
  235. package/lib/types/dosleg.ts +2 -2
  236. package/lib/types/questions.d.ts +1 -1
  237. package/lib/types/questions.js +2 -2
  238. package/lib/types/questions.ts +1 -1
  239. package/lib/types/sens.d.ts +1 -3
  240. package/lib/types/sens.js +2 -5
  241. package/lib/types/sens.mjs +1 -23
  242. package/lib/types/sens.ts +1 -25
  243. package/lib/types/sessions.d.ts +42 -0
  244. package/lib/types/sessions.js +51 -0
  245. package/lib/types/sessions.mjs +43 -0
  246. package/lib/types/sessions.ts +42 -0
  247. package/lib/types/texte.d.ts +65 -0
  248. package/lib/types/texte.js +24 -0
  249. package/lib/types/texte.mjs +16 -0
  250. package/lib/types/texte.ts +76 -0
  251. package/package.json +35 -10
  252. package/lib/aggregates.js +0 -1122
  253. package/lib/fields.js +0 -68
  254. package/lib/inserters.js +0 -518
  255. package/lib/scripts/fix_db.js +0 -144
  256. package/lib/scripts/fix_db.mjs +0 -64
  257. package/lib/scripts/fix_db.ts +0 -75
  258. package/lib/scripts/retrieve_textes.js +0 -179
  259. /package/lib/scripts/{fix_db.d.ts → parse_textes.d.ts} +0 -0
package/lib/inserters.mjs CHANGED
@@ -1,376 +1,500 @@
1
- export function insertAudReferences(aud, data, visitedIdsByTableName) {
2
- let visitedIds = visitedIdsByTableName.aud;
3
- if (visitedIds === undefined) {
4
- visitedIds = visitedIdsByTableName.aud = new Set();
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.symbol.js");
4
+ require("core-js/modules/es.symbol.description.js");
5
+ require("core-js/modules/es.symbol.iterator.js");
6
+ require("core-js/modules/es.array.from.js");
7
+ require("core-js/modules/es.array.is-array.js");
8
+ require("core-js/modules/es.array.slice.js");
9
+ require("core-js/modules/es.function.name.js");
10
+ require("core-js/modules/es.object.define-property.js");
11
+ require("core-js/modules/es.regexp.exec.js");
12
+ require("core-js/modules/es.regexp.to-string.js");
13
+ Object.defineProperty(exports, "__esModule", {
14
+ value: true
15
+ });
16
+ exports.insertAudReferences = insertAudReferences;
17
+ exports.insertAuteurReferences = insertAuteurReferences;
18
+ exports.insertDateSeanceReferences = insertDateSeanceReferences;
19
+ exports.insertDocAttReferences = insertDocAttReferences;
20
+ exports.insertEcrReferences = insertEcrReferences;
21
+ exports.insertLecassReferences = insertLecassReferences;
22
+ exports.insertLecassrapReferences = insertLecassrapReferences;
23
+ exports.insertLectureReferences = insertLectureReferences;
24
+ exports.insertLoiReferences = insertLoiReferences;
25
+ exports.insertRapReferences = insertRapReferences;
26
+ exports.insertTexteReferences = insertTexteReferences;
27
+ require("core-js/modules/es.array.concat.js");
28
+ require("core-js/modules/es.array.iterator.js");
29
+ require("core-js/modules/es.date.to-iso-string.js");
30
+ require("core-js/modules/es.date.to-string.js");
31
+ require("core-js/modules/es.object.to-string.js");
32
+ require("core-js/modules/es.set.js");
33
+ require("core-js/modules/es.string.iterator.js");
34
+ require("core-js/modules/web.dom-collections.iterator.js");
35
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
36
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
37
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
38
+ function insertAudReferences(aud, data, visitedIdsByTableName) {
39
+ var visitedIds = visitedIdsByTableName.aud;
40
+ if (visitedIds === undefined) {
41
+ visitedIds = visitedIdsByTableName.aud = new Set();
42
+ }
43
+ if (!visitedIds.has(aud.audcle)) {
44
+ visitedIds.add(aud.audcle);
45
+ if (aud.orgcod !== null && data.org !== undefined) {
46
+ var org = data.org[aud.orgcod];
47
+ if (org !== undefined) {
48
+ aud.org = org;
49
+ // insertOrgReferences(org, data, visitedIdsByTableName)
50
+ }
5
51
  }
6
- if (!visitedIds.has(aud.audcle)) {
7
- visitedIds.add(aud.audcle);
8
- if (aud.orgcod !== null && data.org !== undefined) {
9
- const org = data.org[aud.orgcod];
10
- if (org !== undefined) {
11
- aud.org = org;
12
- // insertOrgReferences(org, data, visitedIdsByTableName)
13
- }
14
- }
15
- // TODO
16
- }
17
- return aud;
52
+
53
+ // TODO
54
+ }
55
+ return aud;
18
56
  }
19
- export function insertAuteurReferences(auteur, data, visitedIdsByTableName) {
20
- let visitedIds = visitedIdsByTableName.auteur;
21
- if (visitedIds === undefined) {
22
- visitedIds = visitedIdsByTableName.auteur = new Set();
57
+ function insertAuteurReferences(auteur, data, visitedIdsByTableName) {
58
+ var visitedIds = visitedIdsByTableName.auteur;
59
+ if (visitedIds === undefined) {
60
+ visitedIds = visitedIdsByTableName.auteur = new Set();
61
+ }
62
+ if (!visitedIds.has(auteur.autcod)) {
63
+ visitedIds.add(auteur.autcod);
64
+ if (data.qua !== undefined) {
65
+ var qua = data.qua[auteur.quacod];
66
+ if (qua !== undefined) {
67
+ auteur.qua = qua;
68
+ // insertQuaReferences(qua, data, visitedIdsByTableName)
69
+ }
23
70
  }
24
- if (!visitedIds.has(auteur.autcod)) {
25
- visitedIds.add(auteur.autcod);
26
- if (data.qua !== undefined) {
27
- const qua = data.qua[auteur.quacod];
28
- if (qua !== undefined) {
29
- auteur.qua = qua;
30
- // insertQuaReferences(qua, data, visitedIdsByTableName)
31
- }
32
- }
33
- // TODO
34
- }
35
- return auteur;
71
+
72
+ // TODO
73
+ }
74
+ return auteur;
36
75
  }
37
- export function insertDateSeanceReferences(dateSeance, data, visitedIdsByTableName) {
38
- let visitedIds = visitedIdsByTableName.date_seance;
39
- if (visitedIds === undefined) {
40
- visitedIds = visitedIdsByTableName.date_seance = new Set();
76
+ function insertDateSeanceReferences(dateSeance, data, visitedIdsByTableName) {
77
+ var visitedIds = visitedIdsByTableName.date_seance;
78
+ if (visitedIds === undefined) {
79
+ visitedIds = visitedIdsByTableName.date_seance = new Set();
80
+ }
81
+ if (!visitedIds.has(dateSeance.code)) {
82
+ visitedIds.add(dateSeance.code);
83
+ if (dateSeance.date_s !== null && data.debats !== undefined) {
84
+ var dateString = dateSeance.date_s instanceof Date ? dateSeance.date_s.toISOString() : dateSeance.date_s;
85
+ var debat = data.debats[dateString];
86
+ if (debat !== undefined) {
87
+ dateSeance.debat = debat;
88
+ // insertDebatReferences(debat, data, visitedIdsByTableName)
89
+ }
41
90
  }
42
- if (!visitedIds.has(dateSeance.code)) {
43
- visitedIds.add(dateSeance.code);
44
- if (dateSeance.date_s !== null && data.debats !== undefined) {
45
- const dateString = dateSeance.date_s instanceof Date
46
- ? dateSeance.date_s.toISOString()
47
- : dateSeance.date_s;
48
- const debat = data.debats[dateString];
49
- if (debat !== undefined) {
50
- dateSeance.debat = debat;
51
- // insertDebatReferences(debat, data, visitedIdsByTableName)
52
- }
53
- }
54
- dateSeance.scrs = [];
55
- if (dateSeance.scrids !== undefined && data.scr !== undefined) {
56
- for (const scrid of dateSeance.scrids) {
57
- const scr = data.scr[scrid];
58
- if (scr !== undefined) {
59
- dateSeance.scrs.push(scr);
60
- // insertScrReferences(scr, data, visitedIdsByTableName)
61
- }
62
- }
91
+ dateSeance.scrs = [];
92
+ if (dateSeance.scrids !== undefined && data.scr !== undefined) {
93
+ var _iterator = _createForOfIteratorHelper(dateSeance.scrids),
94
+ _step;
95
+ try {
96
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
97
+ var scrid = _step.value;
98
+ var scr = data.scr[scrid];
99
+ if (scr !== undefined) {
100
+ dateSeance.scrs.push(scr);
101
+ // insertScrReferences(scr, data, visitedIdsByTableName)
102
+ }
63
103
  }
104
+ } catch (err) {
105
+ _iterator.e(err);
106
+ } finally {
107
+ _iterator.f();
108
+ }
64
109
  }
65
- return dateSeance;
110
+ }
111
+ return dateSeance;
66
112
  }
67
- export function insertDocAttReferences(docatt, data, visitedIdsByTableName, performInsertRapReferences = true) {
68
- let visitedIds = visitedIdsByTableName.docatt;
69
- if (visitedIds === undefined) {
70
- visitedIds = visitedIdsByTableName.docatt = new Set();
113
+ function insertDocAttReferences(docatt, data, visitedIdsByTableName) {
114
+ var performInsertRapReferences = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
115
+ var visitedIds = visitedIdsByTableName.docatt;
116
+ if (visitedIds === undefined) {
117
+ visitedIds = visitedIdsByTableName.docatt = new Set();
118
+ }
119
+ if (!visitedIds.has(docatt.docattcle)) {
120
+ visitedIds.add(docatt.docattcle);
121
+ if (performInsertRapReferences && docatt.rapcod !== null && data.rap !== undefined) {
122
+ var rap = data.rap[docatt.rapcod];
123
+ if (rap !== undefined) {
124
+ docatt.rap = rap;
125
+ insertRapReferences(rap, data, visitedIdsByTableName);
126
+ }
71
127
  }
72
- if (!visitedIds.has(docatt.docattcle)) {
73
- visitedIds.add(docatt.docattcle);
74
- if (performInsertRapReferences && docatt.rapcod !== null && data.rap !== undefined) {
75
- const rap = data.rap[docatt.rapcod];
76
- if (rap !== undefined) {
77
- docatt.rap = rap;
78
- insertRapReferences(rap, data, visitedIdsByTableName);
79
- }
80
- }
81
- if (docatt.typattcod !== null && data.typatt !== undefined) {
82
- const typatt = data.typatt[docatt.typattcod];
83
- if (typatt !== undefined) {
84
- docatt.typatt = typatt;
85
- // insertTypAttReferences(typatt, data, visitedIdsByTableName)
86
- }
87
- }
128
+ if (docatt.typattcod !== null && data.typatt !== undefined) {
129
+ var typatt = data.typatt[docatt.typattcod];
130
+ if (typatt !== undefined) {
131
+ docatt.typatt = typatt;
132
+ // insertTypAttReferences(typatt, data, visitedIdsByTableName)
133
+ }
88
134
  }
89
- return docatt;
135
+ }
136
+ return docatt;
90
137
  }
91
- export function insertEcrReferences(ecr, data, visitedIdsByTableName) {
92
- let visitedIds = visitedIdsByTableName.ecr;
93
- if (visitedIds === undefined) {
94
- visitedIds = visitedIdsByTableName.ecr = new Set();
138
+ function insertEcrReferences(ecr, data, visitedIdsByTableName) {
139
+ var visitedIds = visitedIdsByTableName.ecr;
140
+ if (visitedIds === undefined) {
141
+ visitedIds = visitedIdsByTableName.ecr = new Set();
142
+ }
143
+ if (!visitedIds.has(ecr.ecrnum)) {
144
+ visitedIds.add(ecr.ecrnum);
145
+ if (ecr.autcod !== null && data.auteur !== undefined) {
146
+ var aut = data.auteur[ecr.autcod];
147
+ if (aut !== undefined) {
148
+ ecr.aut = aut;
149
+ insertAuteurReferences(aut, data, visitedIdsByTableName);
150
+ }
95
151
  }
96
- if (!visitedIds.has(ecr.ecrnum)) {
97
- visitedIds.add(ecr.ecrnum);
98
- if (ecr.autcod !== null && data.auteur !== undefined) {
99
- const aut = data.auteur[ecr.autcod];
100
- if (aut !== undefined) {
101
- ecr.aut = aut;
102
- insertAuteurReferences(aut, data, visitedIdsByTableName);
103
- }
104
- }
105
- // TODO
106
- }
107
- return ecr;
152
+
153
+ // TODO
154
+ }
155
+ return ecr;
108
156
  }
109
- export function insertLecassrapReferences(lecassrap, data, visitedIdsByTableName) {
110
- let visitedIds = visitedIdsByTableName.lecassrap;
111
- if (visitedIds === undefined) {
112
- visitedIds = visitedIdsByTableName.lecassrap = new Set();
157
+ function insertLecassrapReferences(lecassrap, data, visitedIdsByTableName) {
158
+ var visitedIds = visitedIdsByTableName.lecassrap;
159
+ if (visitedIds === undefined) {
160
+ visitedIds = visitedIdsByTableName.lecassrap = new Set();
161
+ }
162
+ var lecasrapid = "".concat(lecassrap.lecassidt, " ").concat(lecassrap.rapcod);
163
+ if (!visitedIds.has(lecasrapid)) {
164
+ visitedIds.add(lecasrapid);
165
+ if (lecassrap.rapcod !== null && data.rap !== undefined) {
166
+ var rap = data.rap[lecassrap.rapcod];
167
+ if (rap !== undefined) {
168
+ lecassrap.rap = rap;
169
+ insertRapReferences(rap, data, visitedIdsByTableName);
170
+ }
113
171
  }
114
- const lecasrapid = `${lecassrap.lecassidt} ${lecassrap.rapcod}`;
115
- if (!visitedIds.has(lecasrapid)) {
116
- visitedIds.add(lecasrapid);
117
- if (lecassrap.rapcod !== null && data.rap !== undefined) {
118
- const rap = data.rap[lecassrap.rapcod];
119
- if (rap !== undefined) {
120
- lecassrap.rap = rap;
121
- insertRapReferences(rap, data, visitedIdsByTableName);
122
- }
123
- }
124
- }
125
- return lecassrap;
172
+ }
173
+ return lecassrap;
126
174
  }
127
- export function insertLecassReferences(lecass, data, visitedIdsByTableName) {
128
- let visitedIds = visitedIdsByTableName.lecass;
129
- if (visitedIds === undefined) {
130
- visitedIds = visitedIdsByTableName.lecass = new Set();
175
+ function insertLecassReferences(lecass, data, visitedIdsByTableName) {
176
+ var visitedIds = visitedIdsByTableName.lecass;
177
+ if (visitedIds === undefined) {
178
+ visitedIds = visitedIdsByTableName.lecass = new Set();
179
+ }
180
+ if (!visitedIds.has(lecass.lecassidt)) {
181
+ visitedIds.add(lecass.lecassidt);
182
+ if (lecass.codass !== null && data.ass !== undefined) {
183
+ var ass = data.ass[lecass.codass];
184
+ if (ass !== undefined) {
185
+ lecass.ass = ass;
186
+ // insertAssReferences(ass, data, visitedIdsByTableName)
187
+ }
131
188
  }
132
- if (!visitedIds.has(lecass.lecassidt)) {
133
- visitedIds.add(lecass.lecassidt);
134
- if (lecass.codass !== null && data.ass !== undefined) {
135
- const ass = data.ass[lecass.codass];
136
- if (ass !== undefined) {
137
- lecass.ass = ass;
138
- // insertAssReferences(ass, data, visitedIdsByTableName)
139
- }
140
- }
141
- if (lecass.orgcod !== null && data.org !== undefined) {
142
- const org = data.org[lecass.orgcod];
143
- if (org !== undefined) {
144
- lecass.org = org;
145
- // insertOrgReferences(org, data, visitedIdsByTableName)
146
- }
147
- }
148
- lecass.auds = [];
149
- if (lecass.audcles !== undefined && data.aud !== undefined) {
150
- for (const audcle of lecass.audcles) {
151
- const aud = data.aud[audcle];
152
- if (aud !== undefined) {
153
- lecass.auds.push(aud);
154
- insertAudReferences(aud, data, visitedIdsByTableName);
155
- }
156
- }
189
+ if (lecass.orgcod !== null && data.org !== undefined) {
190
+ var org = data.org[lecass.orgcod];
191
+ if (org !== undefined) {
192
+ lecass.org = org;
193
+ // insertOrgReferences(org, data, visitedIdsByTableName)
194
+ }
195
+ }
196
+ lecass.auds = [];
197
+ if (lecass.audcles !== undefined && data.aud !== undefined) {
198
+ var _iterator2 = _createForOfIteratorHelper(lecass.audcles),
199
+ _step2;
200
+ try {
201
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
202
+ var audcle = _step2.value;
203
+ var aud = data.aud[audcle];
204
+ if (aud !== undefined) {
205
+ lecass.auds.push(aud);
206
+ insertAudReferences(aud, data, visitedIdsByTableName);
207
+ }
157
208
  }
158
- lecass.datesSeances = [];
159
- if (lecass.datesSeancesCodes !== undefined && data.date_seance !== undefined) {
160
- for (const dateSeanceCode of lecass.datesSeancesCodes) {
161
- const dateSeance = data.date_seance[dateSeanceCode];
162
- if (dateSeance !== undefined) {
163
- lecass.datesSeances.push(dateSeance);
164
- insertDateSeanceReferences(dateSeance, data, visitedIdsByTableName);
165
- }
166
- }
209
+ } catch (err) {
210
+ _iterator2.e(err);
211
+ } finally {
212
+ _iterator2.f();
213
+ }
214
+ }
215
+ lecass.datesSeances = [];
216
+ if (lecass.datesSeancesCodes !== undefined && data.date_seance !== undefined) {
217
+ var _iterator3 = _createForOfIteratorHelper(lecass.datesSeancesCodes),
218
+ _step3;
219
+ try {
220
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
221
+ var dateSeanceCode = _step3.value;
222
+ var dateSeance = data.date_seance[dateSeanceCode];
223
+ if (dateSeance !== undefined) {
224
+ lecass.datesSeances.push(dateSeance);
225
+ insertDateSeanceReferences(dateSeance, data, visitedIdsByTableName);
226
+ }
167
227
  }
168
- lecass.lecassraps = [];
169
- if (lecass.lecassrapids !== undefined && data.lecassrap !== undefined) {
170
- for (const lecassrapid of lecass.lecassrapids) {
171
- const lecassrap = data.lecassrap[lecassrapid];
172
- if (lecassrap !== undefined) {
173
- lecass.lecassraps.push(lecassrap);
174
- insertLecassrapReferences(lecassrap, data, visitedIdsByTableName);
175
- }
176
- }
228
+ } catch (err) {
229
+ _iterator3.e(err);
230
+ } finally {
231
+ _iterator3.f();
232
+ }
233
+ }
234
+ lecass.lecassraps = [];
235
+ if (lecass.lecassrapids !== undefined && data.lecassrap !== undefined) {
236
+ var _iterator4 = _createForOfIteratorHelper(lecass.lecassrapids),
237
+ _step4;
238
+ try {
239
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
240
+ var lecassrapid = _step4.value;
241
+ var lecassrap = data.lecassrap[lecassrapid];
242
+ if (lecassrap !== undefined) {
243
+ lecass.lecassraps.push(lecassrap);
244
+ insertLecassrapReferences(lecassrap, data, visitedIdsByTableName);
245
+ }
177
246
  }
178
- lecass.textes = [];
179
- if (lecass.texcods !== undefined && data.texte !== undefined) {
180
- for (const texcod of lecass.texcods) {
181
- const texte = data.texte[texcod];
182
- if (texte !== undefined) {
183
- lecass.textes.push(texte);
184
- insertTexteReferences(texte, data, visitedIdsByTableName);
185
- }
186
- }
247
+ } catch (err) {
248
+ _iterator4.e(err);
249
+ } finally {
250
+ _iterator4.f();
251
+ }
252
+ }
253
+ lecass.textes = [];
254
+ if (lecass.texcods !== undefined && data.texte !== undefined) {
255
+ var _iterator5 = _createForOfIteratorHelper(lecass.texcods),
256
+ _step5;
257
+ try {
258
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
259
+ var texcod = _step5.value;
260
+ var texte = data.texte[texcod];
261
+ if (texte !== undefined) {
262
+ lecass.textes.push(texte);
263
+ insertTexteReferences(texte, data, visitedIdsByTableName);
264
+ }
187
265
  }
266
+ } catch (err) {
267
+ _iterator5.e(err);
268
+ } finally {
269
+ _iterator5.f();
270
+ }
188
271
  }
189
- return lecass;
272
+ }
273
+ return lecass;
190
274
  }
191
- export function insertLectureReferences(lecture, data, visitedIdsByTableName) {
192
- let visitedIds = visitedIdsByTableName.lecture;
193
- if (visitedIds === undefined) {
194
- visitedIds = visitedIdsByTableName.lecture = new Set();
275
+ function insertLectureReferences(lecture, data, visitedIdsByTableName) {
276
+ var visitedIds = visitedIdsByTableName.lecture;
277
+ if (visitedIds === undefined) {
278
+ visitedIds = visitedIdsByTableName.lecture = new Set();
279
+ }
280
+ if (!visitedIds.has(lecture.lecidt)) {
281
+ visitedIds.add(lecture.lecidt);
282
+ if (lecture.typleccod !== null && data.typlec !== undefined) {
283
+ var typlec = data.typlec[lecture.typleccod];
284
+ if (typlec !== undefined) {
285
+ lecture.typlec = typlec;
286
+ // insertTyplecReferences(typlec, data, visitedIdsByTableName)
287
+ }
195
288
  }
196
- if (!visitedIds.has(lecture.lecidt)) {
197
- visitedIds.add(lecture.lecidt);
198
- if (lecture.typleccod !== null && data.typlec !== undefined) {
199
- const typlec = data.typlec[lecture.typleccod];
200
- if (typlec !== undefined) {
201
- lecture.typlec = typlec;
202
- // insertTyplecReferences(typlec, data, visitedIdsByTableName)
203
- }
204
- }
205
- lecture.lecasss = [];
206
- if (lecture.lecassidts !== undefined && data.lecass !== undefined) {
207
- for (const lecassidt of lecture.lecassidts) {
208
- const lecass = data.lecass[lecassidt];
209
- if (lecass !== undefined) {
210
- lecture.lecasss.push(lecass);
211
- insertLecassReferences(lecass, data, visitedIdsByTableName);
212
- }
213
- }
289
+ lecture.lecasss = [];
290
+ if (lecture.lecassidts !== undefined && data.lecass !== undefined) {
291
+ var _iterator6 = _createForOfIteratorHelper(lecture.lecassidts),
292
+ _step6;
293
+ try {
294
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
295
+ var lecassidt = _step6.value;
296
+ var lecass = data.lecass[lecassidt];
297
+ if (lecass !== undefined) {
298
+ lecture.lecasss.push(lecass);
299
+ insertLecassReferences(lecass, data, visitedIdsByTableName);
300
+ }
214
301
  }
302
+ } catch (err) {
303
+ _iterator6.e(err);
304
+ } finally {
305
+ _iterator6.f();
306
+ }
215
307
  }
216
- return lecture;
308
+ }
309
+ return lecture;
217
310
  }
218
- export function insertLoiReferences(loi, data, visitedIdsByTableName) {
219
- let visitedIds = visitedIdsByTableName.loi;
220
- if (visitedIds === undefined) {
221
- visitedIds = visitedIdsByTableName.loi = new Set();
311
+ function insertLoiReferences(loi, data, visitedIdsByTableName) {
312
+ var visitedIds = visitedIdsByTableName.loi;
313
+ if (visitedIds === undefined) {
314
+ visitedIds = visitedIdsByTableName.loi = new Set();
315
+ }
316
+ if (!visitedIds.has(loi.loicod)) {
317
+ visitedIds.add(loi.loicod);
318
+ if (loi.typloicod !== null && data.typloi !== undefined) {
319
+ var typloi = data.typloi[loi.typloicod];
320
+ if (typloi !== undefined) {
321
+ loi.typloi = typloi;
322
+ // insertTyploiReferences(typloi, data, visitedIdsByTableName)
323
+ }
222
324
  }
223
- if (!visitedIds.has(loi.loicod)) {
224
- visitedIds.add(loi.loicod);
225
- if (loi.typloicod !== null && data.typloi !== undefined) {
226
- const typloi = data.typloi[loi.typloicod];
227
- if (typloi !== undefined) {
228
- loi.typloi = typloi;
229
- // insertTyploiReferences(typloi, data, visitedIdsByTableName)
230
- }
231
- }
232
- if (loi.etaloicod !== null && data.etaloi !== undefined) {
233
- const etaloi = data.etaloi[loi.etaloicod];
234
- if (etaloi !== undefined) {
235
- loi.etaloi = etaloi;
236
- // insertEtaloiReferences(etaloi, data, visitedIdsByTableName)
237
- }
238
- }
239
- if (loi.deccoccod !== null && data.deccoc !== undefined) {
240
- const deccoc = data.deccoc[loi.deccoccod];
241
- if (deccoc !== undefined) {
242
- loi.deccoc = deccoc;
243
- // insertDeccocReferences(deccoc, data, visitedIdsByTableName)
244
- }
245
- }
246
- loi.lectures = [];
247
- if (loi.lecidts !== undefined && data.lecture !== undefined) {
248
- for (const lecidt of loi.lecidts) {
249
- const lecture = data.lecture[lecidt];
250
- if (lecture !== undefined) {
251
- loi.lectures.push(lecture);
252
- insertLectureReferences(lecture, data, visitedIdsByTableName);
253
- }
254
- }
255
- }
325
+ if (loi.etaloicod !== null && data.etaloi !== undefined) {
326
+ var etaloi = data.etaloi[loi.etaloicod];
327
+ if (etaloi !== undefined) {
328
+ loi.etaloi = etaloi;
329
+ // insertEtaloiReferences(etaloi, data, visitedIdsByTableName)
330
+ }
256
331
  }
257
- return loi;
258
- }
259
- export function insertQuestionReferences(question,
260
- // @ts-ignore TO BE REMOVED WHEN DONE
261
- data,
262
- // @ts-ignore TO BE REMOVED WHEN DONE
263
- visitedIdsByTableName) {
264
- // TODO
265
- return question;
266
- }
267
- export function insertRapReferences(rap, data, visitedIdsByTableName) {
268
- let visitedIds = visitedIdsByTableName.rap;
269
- if (visitedIds === undefined) {
270
- visitedIds = visitedIdsByTableName.rap = new Set();
332
+ if (loi.deccoccod !== null && data.deccoc !== undefined) {
333
+ var deccoc = data.deccoc[loi.deccoccod];
334
+ if (deccoc !== undefined) {
335
+ loi.deccoc = deccoc;
336
+ // insertDeccocReferences(deccoc, data, visitedIdsByTableName)
337
+ }
271
338
  }
272
- if (!visitedIds.has(rap.rapcod)) {
273
- visitedIds.add(rap.rapcod);
274
- if (rap.coddenrap !== null && data.denrap !== undefined) {
275
- const denrap = data.denrap[rap.coddenrap];
276
- if (denrap !== undefined) {
277
- rap.denrap = denrap;
278
- // insertDenrapReferences(denrap, data, visitedIdsByTableName)
279
- }
280
- }
281
- rap.docatts = [];
282
- if (rap.docattcles !== undefined && data.docatt !== undefined) {
283
- for (const docattcle of rap.docattcles) {
284
- const docatt = data.docatt[docattcle];
285
- if (docatt !== undefined) {
286
- rap.docatts.push(docatt);
287
- insertDocAttReferences(docatt, data, visitedIdsByTableName, false);
288
- }
289
- }
290
- }
291
- rap.ecrs = [];
292
- if (rap.ecrnums !== undefined && data.ecr !== undefined) {
293
- for (const ecrnum of rap.ecrnums) {
294
- const ecr = data.ecr[ecrnum];
295
- if (ecr !== undefined) {
296
- rap.ecrs.push(ecr);
297
- insertEcrReferences(ecr, data, visitedIdsByTableName);
298
- }
299
- }
300
- }
301
- rap.orgs = [];
302
- if (rap.orgcods !== undefined && data.org !== undefined) {
303
- for (const orgcod of rap.orgcods) {
304
- const org = data.org[orgcod];
305
- if (org !== undefined) {
306
- rap.orgs.push(org);
307
- // insertOrgReferences(org, data, visitedIdsByTableName)
308
- }
309
- }
339
+ loi.lectures = [];
340
+ if (loi.lecidts !== undefined && data.lecture !== undefined) {
341
+ var _iterator7 = _createForOfIteratorHelper(loi.lecidts),
342
+ _step7;
343
+ try {
344
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
345
+ var lecidt = _step7.value;
346
+ var lecture = data.lecture[lecidt];
347
+ if (lecture !== undefined) {
348
+ loi.lectures.push(lecture);
349
+ insertLectureReferences(lecture, data, visitedIdsByTableName);
350
+ }
310
351
  }
352
+ } catch (err) {
353
+ _iterator7.e(err);
354
+ } finally {
355
+ _iterator7.f();
356
+ }
311
357
  }
312
- return rap;
358
+ }
359
+ return loi;
313
360
  }
314
- export function insertSenReferences(sen,
315
- // @ts-ignore TO BE REMOVED WHEN DONE
316
- data,
317
- // @ts-ignore TO BE REMOVED WHEN DONE
318
- visitedIdsByTableName) {
319
- // TODO
320
- return sen;
321
- }
322
- export function insertTexteReferences(texte, data, visitedIdsByTableName) {
323
- let visitedIds = visitedIdsByTableName.texte;
324
- if (visitedIds === undefined) {
325
- visitedIds = visitedIdsByTableName.texte = new Set();
361
+ function insertRapReferences(rap, data, visitedIdsByTableName) {
362
+ var visitedIds = visitedIdsByTableName.rap;
363
+ if (visitedIds === undefined) {
364
+ visitedIds = visitedIdsByTableName.rap = new Set();
365
+ }
366
+ if (!visitedIds.has(rap.rapcod)) {
367
+ visitedIds.add(rap.rapcod);
368
+ if (rap.coddenrap !== null && data.denrap !== undefined) {
369
+ var denrap = data.denrap[rap.coddenrap];
370
+ if (denrap !== undefined) {
371
+ rap.denrap = denrap;
372
+ // insertDenrapReferences(denrap, data, visitedIdsByTableName)
373
+ }
326
374
  }
327
- if (!visitedIds.has(texte.texcod)) {
328
- visitedIds.add(texte.texcod);
329
- texte.ecrs = [];
330
- if (texte.ecrnums !== undefined && data.ecr !== undefined) {
331
- for (const ecrnum of texte.ecrnums) {
332
- const ecr = data.ecr[ecrnum];
333
- if (ecr !== undefined) {
334
- texte.ecrs.push(ecr);
335
- insertEcrReferences(ecr, data, visitedIdsByTableName);
336
- }
337
- }
338
- }
339
- if (texte.orgcod !== null && data.org !== undefined) {
340
- const org = data.org[texte.orgcod];
341
- if (org !== undefined) {
342
- texte.org = org;
343
- // insertOrgReferences(org, data, visitedIdsByTableName)
344
- }
375
+ rap.docatts = [];
376
+ if (rap.docattcles !== undefined && data.docatt !== undefined) {
377
+ var _iterator8 = _createForOfIteratorHelper(rap.docattcles),
378
+ _step8;
379
+ try {
380
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
381
+ var docattcle = _step8.value;
382
+ var docatt = data.docatt[docattcle];
383
+ if (docatt !== undefined) {
384
+ rap.docatts.push(docatt);
385
+ insertDocAttReferences(docatt, data, visitedIdsByTableName, false);
386
+ }
345
387
  }
346
- if (texte.oritxtcod !== null && data.oritxt !== undefined) {
347
- const oritxt = data.oritxt[texte.oritxtcod];
348
- if (oritxt !== undefined) {
349
- texte.oritxt = oritxt;
350
- // insertOritxtReferences(oritxt, data, visitedIdsByTableName)
351
- }
352
- }
353
- if (texte.txtAmeliId !== undefined && data.txt_ameli !== undefined) {
354
- const txtAmeli = data.txt_ameli[texte.txtAmeliId];
355
- if (txtAmeli !== undefined) {
356
- texte.txtAmeli = txtAmeli;
357
- }
388
+ } catch (err) {
389
+ _iterator8.e(err);
390
+ } finally {
391
+ _iterator8.f();
392
+ }
393
+ }
394
+ rap.ecrs = [];
395
+ if (rap.ecrnums !== undefined && data.ecr !== undefined) {
396
+ var _iterator9 = _createForOfIteratorHelper(rap.ecrnums),
397
+ _step9;
398
+ try {
399
+ for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
400
+ var ecrnum = _step9.value;
401
+ var ecr = data.ecr[ecrnum];
402
+ if (ecr !== undefined) {
403
+ rap.ecrs.push(ecr);
404
+ insertEcrReferences(ecr, data, visitedIdsByTableName);
405
+ }
358
406
  }
359
- if (texte.typtxtcod !== null && data.typtxt !== undefined) {
360
- const typtxt = data.typtxt[texte.typtxtcod];
361
- if (typtxt !== undefined) {
362
- texte.typtxt = typtxt;
363
- // insertTyptxtReferences(typtxt, data, visitedIdsByTableName)
364
- }
407
+ } catch (err) {
408
+ _iterator9.e(err);
409
+ } finally {
410
+ _iterator9.f();
411
+ }
412
+ }
413
+ rap.orgs = [];
414
+ if (rap.orgcods !== undefined && data.org !== undefined) {
415
+ var _iterator10 = _createForOfIteratorHelper(rap.orgcods),
416
+ _step10;
417
+ try {
418
+ for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
419
+ var orgcod = _step10.value;
420
+ var org = data.org[orgcod];
421
+ if (org !== undefined) {
422
+ rap.orgs.push(org);
423
+ // insertOrgReferences(org, data, visitedIdsByTableName)
424
+ }
365
425
  }
366
- if (texte.typurl !== null && data.typurl !== undefined) {
367
- const typurl = data.typurl[texte.typurl];
368
- if (typurl !== undefined) {
369
- texte.libtypurl = typurl.libtypurl;
370
- // insertTypurlReferences(typurl, data, visitedIdsByTableName)
371
- }
426
+ } catch (err) {
427
+ _iterator10.e(err);
428
+ } finally {
429
+ _iterator10.f();
430
+ }
431
+ }
432
+ }
433
+ return rap;
434
+ }
435
+ function insertTexteReferences(texte, data, visitedIdsByTableName) {
436
+ var visitedIds = visitedIdsByTableName.texte;
437
+ if (visitedIds === undefined) {
438
+ visitedIds = visitedIdsByTableName.texte = new Set();
439
+ }
440
+ if (!visitedIds.has(texte.texcod)) {
441
+ visitedIds.add(texte.texcod);
442
+ texte.ecrs = [];
443
+ if (texte.ecrnums !== undefined && data.ecr !== undefined) {
444
+ var _iterator11 = _createForOfIteratorHelper(texte.ecrnums),
445
+ _step11;
446
+ try {
447
+ for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
448
+ var ecrnum = _step11.value;
449
+ var ecr = data.ecr[ecrnum];
450
+ if (ecr !== undefined) {
451
+ texte.ecrs.push(ecr);
452
+ insertEcrReferences(ecr, data, visitedIdsByTableName);
453
+ }
372
454
  }
373
- // TODO
455
+ } catch (err) {
456
+ _iterator11.e(err);
457
+ } finally {
458
+ _iterator11.f();
459
+ }
460
+ }
461
+ if (texte.orgcod !== null && data.org !== undefined) {
462
+ var org = data.org[texte.orgcod];
463
+ if (org !== undefined) {
464
+ texte.org = org;
465
+ // insertOrgReferences(org, data, visitedIdsByTableName)
466
+ }
374
467
  }
375
- return texte;
468
+ if (texte.oritxtcod !== null && data.oritxt !== undefined) {
469
+ var oritxt = data.oritxt[texte.oritxtcod];
470
+ if (oritxt !== undefined) {
471
+ texte.oritxt = oritxt;
472
+ // insertOritxtReferences(oritxt, data, visitedIdsByTableName)
473
+ }
474
+ }
475
+ if (texte.txtAmeliId !== undefined && data.txt_ameli !== undefined) {
476
+ var txtAmeli = data.txt_ameli[texte.txtAmeliId];
477
+ if (txtAmeli !== undefined) {
478
+ texte.txtAmeli = txtAmeli;
479
+ }
480
+ }
481
+ if (texte.typtxtcod !== null && data.typtxt !== undefined) {
482
+ var typtxt = data.typtxt[texte.typtxtcod];
483
+ if (typtxt !== undefined) {
484
+ texte.typtxt = typtxt;
485
+ // insertTyptxtReferences(typtxt, data, visitedIdsByTableName)
486
+ }
487
+ }
488
+ if (texte.typurl !== null && data.typurl !== undefined) {
489
+ var typurl = data.typurl[texte.typurl];
490
+ if (typurl !== undefined) {
491
+ texte.libtypurl = typurl.libtypurl;
492
+ // insertTypurlReferences(typurl, data, visitedIdsByTableName)
493
+ }
494
+ }
495
+
496
+ // TODO
497
+ }
498
+ return texte;
376
499
  }
500
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbnNlcnRBdWRSZWZlcmVuY2VzIiwiYXVkIiwiZGF0YSIsInZpc2l0ZWRJZHNCeVRhYmxlTmFtZSIsInZpc2l0ZWRJZHMiLCJ1bmRlZmluZWQiLCJTZXQiLCJoYXMiLCJhdWRjbGUiLCJhZGQiLCJvcmdjb2QiLCJvcmciLCJpbnNlcnRBdXRldXJSZWZlcmVuY2VzIiwiYXV0ZXVyIiwiYXV0Y29kIiwicXVhIiwicXVhY29kIiwiaW5zZXJ0RGF0ZVNlYW5jZVJlZmVyZW5jZXMiLCJkYXRlU2VhbmNlIiwiZGF0ZV9zZWFuY2UiLCJjb2RlIiwiZGF0ZV9zIiwiZGViYXRzIiwiZGF0ZVN0cmluZyIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImRlYmF0Iiwic2NycyIsInNjcmlkcyIsInNjciIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJzY3JpZCIsInZhbHVlIiwicHVzaCIsImVyciIsImUiLCJmIiwiaW5zZXJ0RG9jQXR0UmVmZXJlbmNlcyIsImRvY2F0dCIsInBlcmZvcm1JbnNlcnRSYXBSZWZlcmVuY2VzIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZG9jYXR0Y2xlIiwicmFwY29kIiwicmFwIiwiaW5zZXJ0UmFwUmVmZXJlbmNlcyIsInR5cGF0dGNvZCIsInR5cGF0dCIsImluc2VydEVjclJlZmVyZW5jZXMiLCJlY3IiLCJlY3JudW0iLCJhdXQiLCJpbnNlcnRMZWNhc3NyYXBSZWZlcmVuY2VzIiwibGVjYXNzcmFwIiwibGVjYXNyYXBpZCIsImNvbmNhdCIsImxlY2Fzc2lkdCIsImluc2VydExlY2Fzc1JlZmVyZW5jZXMiLCJsZWNhc3MiLCJjb2Rhc3MiLCJhc3MiLCJhdWRzIiwiYXVkY2xlcyIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJkYXRlc1NlYW5jZXMiLCJkYXRlc1NlYW5jZXNDb2RlcyIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJkYXRlU2VhbmNlQ29kZSIsImxlY2Fzc3JhcHMiLCJsZWNhc3NyYXBpZHMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwibGVjYXNzcmFwaWQiLCJ0ZXh0ZXMiLCJ0ZXhjb2RzIiwidGV4dGUiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwidGV4Y29kIiwiaW5zZXJ0VGV4dGVSZWZlcmVuY2VzIiwiaW5zZXJ0TGVjdHVyZVJlZmVyZW5jZXMiLCJsZWN0dXJlIiwibGVjaWR0IiwidHlwbGVjY29kIiwidHlwbGVjIiwibGVjYXNzcyIsImxlY2Fzc2lkdHMiLCJfaXRlcmF0b3I2IiwiX3N0ZXA2IiwiaW5zZXJ0TG9pUmVmZXJlbmNlcyIsImxvaSIsImxvaWNvZCIsInR5cGxvaWNvZCIsInR5cGxvaSIsImV0YWxvaWNvZCIsImV0YWxvaSIsImRlY2NvY2NvZCIsImRlY2NvYyIsImxlY3R1cmVzIiwibGVjaWR0cyIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJjb2RkZW5yYXAiLCJkZW5yYXAiLCJkb2NhdHRzIiwiZG9jYXR0Y2xlcyIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJlY3JzIiwiZWNybnVtcyIsIl9pdGVyYXRvcjkiLCJfc3RlcDkiLCJvcmdzIiwib3JnY29kcyIsIl9pdGVyYXRvcjEwIiwiX3N0ZXAxMCIsIl9pdGVyYXRvcjExIiwiX3N0ZXAxMSIsIm9yaXR4dGNvZCIsIm9yaXR4dCIsInR4dEFtZWxpSWQiLCJ0eHRfYW1lbGkiLCJ0eHRBbWVsaSIsInR5cHR4dGNvZCIsInR5cHR4dCIsInR5cHVybCIsImxpYnR5cHVybCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnNlcnRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHh0QW1lbGkgfSBmcm9tIFwiLi90eXBlcy9hbWVsaVwiXG5pbXBvcnQgeyBEZWJhdCB9IGZyb20gXCIuL3R5cGVzL2RlYmF0c1wiXG5pbXBvcnQge1xuICBBc3MsXG4gIEF1ZCxcbiAgQXV0ZXVyLFxuICBEYXRlU2VhbmNlLFxuICBEZWNDb2MsXG4gIERlblJhcCxcbiAgRG9jQXR0LFxuICBFY3IsXG4gIEV0YUxvaSxcbiAgTGVjQXNzLFxuICBMZWNBc3NSYXAsXG4gIExlY3R1cmUsXG4gIExvaSxcbiAgT3JnLFxuICBPcmlUeHQsXG4gIFF1YSxcbiAgUmFwLFxuICBTY3IsXG4gIFRleHRlLFxuICBUeXBBdHQsXG4gIFR5cExlYyxcbiAgVHlwTG9pLFxuICBUeXBUeHQsXG4gIFR5cFVybCxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zbGVnXCJcblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXREYXRhIHtcbiAgcmVhZG9ubHkgYXNzPzogeyBbaWQ6IHN0cmluZ106IEFzcyB9XG4gIHJlYWRvbmx5IGF1ZD86IHsgW2lkOiBzdHJpbmddOiBBdWQgfVxuICByZWFkb25seSBhdXRldXI/OiB7IFtpZDogc3RyaW5nXTogQXV0ZXVyIH1cbiAgcmVhZG9ubHkgZGF0ZV9zZWFuY2U/OiB7IFtpZDogc3RyaW5nXTogRGF0ZVNlYW5jZSB9XG4gIHJlYWRvbmx5IGRlYmF0cz86IHsgW2lkOiBzdHJpbmddOiBEZWJhdCB9XG4gIHJlYWRvbmx5IGRlY2NvYz86IHsgW2lkOiBzdHJpbmddOiBEZWNDb2MgfVxuICByZWFkb25seSBkZW5yYXA/OiB7IFtpZDogc3RyaW5nXTogRGVuUmFwIH1cbiAgcmVhZG9ubHkgZG9jYXR0PzogeyBbaWQ6IHN0cmluZ106IERvY0F0dCB9XG4gIHJlYWRvbmx5IGVjcj86IHsgW2lkOiBzdHJpbmddOiBFY3IgfVxuICByZWFkb25seSBldGFsb2k/OiB7IFtpZDogc3RyaW5nXTogRXRhTG9pIH1cbiAgcmVhZG9ubHkgbGVjYXNzPzogeyBbaWQ6IHN0cmluZ106IExlY0FzcyB9XG4gIHJlYWRvbmx5IGxlY2Fzc3JhcD86IHsgW2lkOiBzdHJpbmddOiBMZWNBc3NSYXAgfVxuICByZWFkb25seSBsZWN0dXJlPzogeyBbaWQ6IHN0cmluZ106IExlY3R1cmUgfVxuICByZWFkb25seSBsb2k/OiB7IFtpZDogc3RyaW5nXTogTG9pIH1cbiAgcmVhZG9ubHkgb3JnPzogeyBbaWQ6IHN0cmluZ106IE9yZyB9XG4gIHJlYWRvbmx5IG9yaXR4dD86IHsgW2lkOiBzdHJpbmddOiBPcmlUeHQgfVxuICByZWFkb25seSBxdWE/OiB7IFtpZDogc3RyaW5nXTogUXVhIH1cbiAgcmVhZG9ubHkgcmFwPzogeyBbaWQ6IHN0cmluZ106IFJhcCB9XG4gIHJlYWRvbmx5IHNjcj86IHsgW2lkOiBzdHJpbmddOiBTY3IgfVxuICByZWFkb25seSB0ZXh0ZT86IHsgW2lkOiBzdHJpbmddOiBUZXh0ZSB9XG4gIHJlYWRvbmx5IHR5cGF0dD86IHsgW2lkOiBzdHJpbmddOiBUeXBBdHQgfVxuICByZWFkb25seSB0eXBsZWM/OiB7IFtpZDogc3RyaW5nXTogVHlwTGVjIH1cbiAgcmVhZG9ubHkgdHlwbG9pPzogeyBbaWQ6IHN0cmluZ106IFR5cExvaSB9XG4gIHJlYWRvbmx5IHR5cHR4dD86IHsgW2lkOiBzdHJpbmddOiBUeXBUeHQgfVxuICByZWFkb25seSB0eXB1cmw/OiB7IFtpZDogc3RyaW5nXTogVHlwVXJsIH1cbiAgcmVhZG9ubHkgdHh0X2FtZWxpPzogeyBbaWQ6IHN0cmluZ106IFR4dEFtZWxpIH1cbn1cblxudHlwZSBWaXNpdGVkSWRzQnlUYWJsZU5hbWUgPSB7IFt0YWJsZU5hbWU6IHN0cmluZ106IFNldDxudW1iZXIgfCBzdHJpbmc+IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEF1ZFJlZmVyZW5jZXMoXG4gIGF1ZDogQXVkLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5hdWRcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUuYXVkID0gbmV3IFNldCgpXG4gIH1cbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhhdWQuYXVkY2xlKSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGF1ZC5hdWRjbGUpXG5cbiAgICBpZiAoYXVkLm9yZ2NvZCAhPT0gbnVsbCAmJiBkYXRhLm9yZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmcgPSBkYXRhLm9yZ1thdWQub3JnY29kXVxuICAgICAgaWYgKG9yZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1ZC5vcmcgPSBvcmdcbiAgICAgICAgLy8gaW5zZXJ0T3JnUmVmZXJlbmNlcyhvcmcsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPXG4gIH1cblxuICByZXR1cm4gYXVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRBdXRldXJSZWZlcmVuY2VzKFxuICBhdXRldXI6IEF1dGV1cixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUuYXV0ZXVyXG4gIGlmICh2aXNpdGVkSWRzID09PSB1bmRlZmluZWQpIHtcbiAgICB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmF1dGV1ciA9IG5ldyBTZXQoKVxuICB9XG4gIGlmICghdmlzaXRlZElkcy5oYXMoYXV0ZXVyLmF1dGNvZCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChhdXRldXIuYXV0Y29kKVxuXG4gICAgaWYgKGRhdGEucXVhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHF1YSA9IGRhdGEucXVhW2F1dGV1ci5xdWFjb2RdXG4gICAgICBpZiAocXVhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLnF1YSA9IHF1YVxuICAgICAgICAvLyBpbnNlcnRRdWFSZWZlcmVuY2VzKHF1YSwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBhdXRldXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERhdGVTZWFuY2VSZWZlcmVuY2VzKFxuICBkYXRlU2VhbmNlOiBEYXRlU2VhbmNlLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5kYXRlX3NlYW5jZVxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5kYXRlX3NlYW5jZSA9IG5ldyBTZXQoKVxuICB9XG4gIGlmICghdmlzaXRlZElkcy5oYXMoZGF0ZVNlYW5jZS5jb2RlKSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGRhdGVTZWFuY2UuY29kZSlcblxuICAgIGlmIChkYXRlU2VhbmNlLmRhdGVfcyAhPT0gbnVsbCAmJiBkYXRhLmRlYmF0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkYXRlU3RyaW5nID1cbiAgICAgICAgZGF0ZVNlYW5jZS5kYXRlX3MgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgPyBkYXRlU2VhbmNlLmRhdGVfcy50b0lTT1N0cmluZygpXG4gICAgICAgICAgOiBkYXRlU2VhbmNlLmRhdGVfc1xuICAgICAgY29uc3QgZGViYXQgPSBkYXRhLmRlYmF0c1tkYXRlU3RyaW5nXVxuICAgICAgaWYgKGRlYmF0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGF0ZVNlYW5jZS5kZWJhdCA9IGRlYmF0XG4gICAgICAgIC8vIGluc2VydERlYmF0UmVmZXJlbmNlcyhkZWJhdCwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRhdGVTZWFuY2Uuc2NycyA9IFtdXG4gICAgaWYgKGRhdGVTZWFuY2Uuc2NyaWRzICE9PSB1bmRlZmluZWQgJiYgZGF0YS5zY3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBzY3JpZCBvZiBkYXRlU2VhbmNlLnNjcmlkcykge1xuICAgICAgICBjb25zdCBzY3IgPSBkYXRhLnNjcltzY3JpZF1cbiAgICAgICAgaWYgKHNjciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZGF0ZVNlYW5jZS5zY3JzLnB1c2goc2NyKVxuICAgICAgICAgIC8vIGluc2VydFNjclJlZmVyZW5jZXMoc2NyLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGF0ZVNlYW5jZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9jQXR0UmVmZXJlbmNlcyhcbiAgZG9jYXR0OiBEb2NBdHQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuICBwZXJmb3JtSW5zZXJ0UmFwUmVmZXJlbmNlcz10cnVlXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUuZG9jYXR0XG4gIGlmICh2aXNpdGVkSWRzID09PSB1bmRlZmluZWQpIHtcbiAgICB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmRvY2F0dCA9IG5ldyBTZXQoKVxuICB9XG4gIGlmICghdmlzaXRlZElkcy5oYXMoZG9jYXR0LmRvY2F0dGNsZSkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChkb2NhdHQuZG9jYXR0Y2xlKVxuXG4gICAgaWYgKHBlcmZvcm1JbnNlcnRSYXBSZWZlcmVuY2VzICYmIGRvY2F0dC5yYXBjb2QgIT09IG51bGwgJiYgZGF0YS5yYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcmFwID0gZGF0YS5yYXBbZG9jYXR0LnJhcGNvZF1cbiAgICAgIGlmIChyYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb2NhdHQucmFwID0gcmFwXG4gICAgICAgIGluc2VydFJhcFJlZmVyZW5jZXMocmFwLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRvY2F0dC50eXBhdHRjb2QgIT09IG51bGwgJiYgZGF0YS50eXBhdHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgdHlwYXR0ID0gZGF0YS50eXBhdHRbZG9jYXR0LnR5cGF0dGNvZF1cbiAgICAgIGlmICh0eXBhdHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb2NhdHQudHlwYXR0ID0gdHlwYXR0XG4gICAgICAgIC8vIGluc2VydFR5cEF0dFJlZmVyZW5jZXModHlwYXR0LCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRvY2F0dFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RWNyUmVmZXJlbmNlcyhcbiAgZWNyOiBFY3IsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuKSB7XG4gIGxldCB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmVjclxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5lY3IgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKGVjci5lY3JudW0pKSB7XG4gICAgdmlzaXRlZElkcy5hZGQoZWNyLmVjcm51bSlcblxuICAgIGlmIChlY3IuYXV0Y29kICE9PSBudWxsICYmIGRhdGEuYXV0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGF1dCA9IGRhdGEuYXV0ZXVyW2Vjci5hdXRjb2RdXG4gICAgICBpZiAoYXV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZWNyLmF1dCA9IGF1dFxuICAgICAgICBpbnNlcnRBdXRldXJSZWZlcmVuY2VzKGF1dCwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBlY3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydExlY2Fzc3JhcFJlZmVyZW5jZXMoXG4gIGxlY2Fzc3JhcDogTGVjQXNzUmFwLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5sZWNhc3NyYXBcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUubGVjYXNzcmFwID0gbmV3IFNldCgpXG4gIH1cbiAgY29uc3QgbGVjYXNyYXBpZCA9IGAke2xlY2Fzc3JhcC5sZWNhc3NpZHR9ICR7bGVjYXNzcmFwLnJhcGNvZH1gXG4gIGlmICghdmlzaXRlZElkcy5oYXMobGVjYXNyYXBpZCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChsZWNhc3JhcGlkKVxuXG4gICAgaWYgKGxlY2Fzc3JhcC5yYXBjb2QgIT09IG51bGwgJiYgZGF0YS5yYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcmFwID0gZGF0YS5yYXBbbGVjYXNzcmFwLnJhcGNvZF1cbiAgICAgIGlmIChyYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZWNhc3NyYXAucmFwID0gcmFwXG4gICAgICAgIGluc2VydFJhcFJlZmVyZW5jZXMocmFwLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxlY2Fzc3JhcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0TGVjYXNzUmVmZXJlbmNlcyhcbiAgbGVjYXNzOiBMZWNBc3MsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuKSB7XG4gIGxldCB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmxlY2Fzc1xuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5sZWNhc3MgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKGxlY2Fzcy5sZWNhc3NpZHQpKSB7XG4gICAgdmlzaXRlZElkcy5hZGQobGVjYXNzLmxlY2Fzc2lkdClcblxuICAgIGlmIChsZWNhc3MuY29kYXNzICE9PSBudWxsICYmIGRhdGEuYXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFzcyA9IGRhdGEuYXNzW2xlY2Fzcy5jb2Rhc3NdXG4gICAgICBpZiAoYXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGVjYXNzLmFzcyA9IGFzc1xuICAgICAgICAvLyBpbnNlcnRBc3NSZWZlcmVuY2VzKGFzcywgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChsZWNhc3Mub3JnY29kICE9PSBudWxsICYmIGRhdGEub3JnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZyA9IGRhdGEub3JnW2xlY2Fzcy5vcmdjb2RdXG4gICAgICBpZiAob3JnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGVjYXNzLm9yZyA9IG9yZ1xuICAgICAgICAvLyBpbnNlcnRPcmdSZWZlcmVuY2VzKG9yZywgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGxlY2Fzcy5hdWRzID0gW11cbiAgICBpZiAobGVjYXNzLmF1ZGNsZXMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLmF1ZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGF1ZGNsZSBvZiBsZWNhc3MuYXVkY2xlcykge1xuICAgICAgICBjb25zdCBhdWQgPSBkYXRhLmF1ZFthdWRjbGVdXG4gICAgICAgIGlmIChhdWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxlY2Fzcy5hdWRzLnB1c2goYXVkKVxuICAgICAgICAgIGluc2VydEF1ZFJlZmVyZW5jZXMoYXVkLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZWNhc3MuZGF0ZXNTZWFuY2VzID0gW11cbiAgICBpZiAobGVjYXNzLmRhdGVzU2VhbmNlc0NvZGVzICE9PSB1bmRlZmluZWQgJiYgZGF0YS5kYXRlX3NlYW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGRhdGVTZWFuY2VDb2RlIG9mIGxlY2Fzcy5kYXRlc1NlYW5jZXNDb2Rlcykge1xuICAgICAgICBjb25zdCBkYXRlU2VhbmNlID0gZGF0YS5kYXRlX3NlYW5jZVtkYXRlU2VhbmNlQ29kZV1cbiAgICAgICAgaWYgKGRhdGVTZWFuY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxlY2Fzcy5kYXRlc1NlYW5jZXMucHVzaChkYXRlU2VhbmNlKVxuICAgICAgICAgIGluc2VydERhdGVTZWFuY2VSZWZlcmVuY2VzKGRhdGVTZWFuY2UsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxlY2Fzcy5sZWNhc3NyYXBzID0gW11cbiAgICBpZiAobGVjYXNzLmxlY2Fzc3JhcGlkcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEubGVjYXNzcmFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgbGVjYXNzcmFwaWQgb2YgbGVjYXNzLmxlY2Fzc3JhcGlkcykge1xuICAgICAgICBjb25zdCBsZWNhc3NyYXAgPSBkYXRhLmxlY2Fzc3JhcFtsZWNhc3NyYXBpZF1cbiAgICAgICAgaWYgKGxlY2Fzc3JhcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbGVjYXNzLmxlY2Fzc3JhcHMucHVzaChsZWNhc3NyYXApXG4gICAgICAgICAgaW5zZXJ0TGVjYXNzcmFwUmVmZXJlbmNlcyhsZWNhc3NyYXAsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxlY2Fzcy50ZXh0ZXMgPSBbXVxuICAgIGlmIChsZWNhc3MudGV4Y29kcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEudGV4dGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCB0ZXhjb2Qgb2YgbGVjYXNzLnRleGNvZHMpIHtcbiAgICAgICAgY29uc3QgdGV4dGUgPSBkYXRhLnRleHRlW3RleGNvZF1cbiAgICAgICAgaWYgKHRleHRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBsZWNhc3MudGV4dGVzLnB1c2godGV4dGUpXG4gICAgICAgICAgaW5zZXJ0VGV4dGVSZWZlcmVuY2VzKHRleHRlLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbGVjYXNzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRMZWN0dXJlUmVmZXJlbmNlcyhcbiAgbGVjdHVyZTogTGVjdHVyZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUubGVjdHVyZVxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5sZWN0dXJlID0gbmV3IFNldCgpXG4gIH1cbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhsZWN0dXJlLmxlY2lkdCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChsZWN0dXJlLmxlY2lkdClcblxuICAgIGlmIChsZWN0dXJlLnR5cGxlY2NvZCAhPT0gbnVsbCAmJiBkYXRhLnR5cGxlYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB0eXBsZWMgPSBkYXRhLnR5cGxlY1tsZWN0dXJlLnR5cGxlY2NvZF1cbiAgICAgIGlmICh0eXBsZWMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZWN0dXJlLnR5cGxlYyA9IHR5cGxlY1xuICAgICAgICAvLyBpbnNlcnRUeXBsZWNSZWZlcmVuY2VzKHR5cGxlYywgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGxlY3R1cmUubGVjYXNzcyA9IFtdXG4gICAgaWYgKGxlY3R1cmUubGVjYXNzaWR0cyAhPT0gdW5kZWZpbmVkICYmIGRhdGEubGVjYXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgbGVjYXNzaWR0IG9mIGxlY3R1cmUubGVjYXNzaWR0cykge1xuICAgICAgICBjb25zdCBsZWNhc3MgPSBkYXRhLmxlY2Fzc1tsZWNhc3NpZHRdXG4gICAgICAgIGlmIChsZWNhc3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxlY3R1cmUubGVjYXNzcy5wdXNoKGxlY2FzcylcbiAgICAgICAgICBpbnNlcnRMZWNhc3NSZWZlcmVuY2VzKGxlY2FzcywgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxlY3R1cmVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydExvaVJlZmVyZW5jZXMoXG4gIGxvaTogTG9pLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5sb2lcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUubG9pID0gbmV3IFNldCgpXG4gIH1cbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhsb2kubG9pY29kKSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGxvaS5sb2ljb2QpXG5cbiAgICBpZiAobG9pLnR5cGxvaWNvZCAhPT0gbnVsbCAmJiBkYXRhLnR5cGxvaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB0eXBsb2kgPSBkYXRhLnR5cGxvaVtsb2kudHlwbG9pY29kXVxuICAgICAgaWYgKHR5cGxvaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvaS50eXBsb2kgPSB0eXBsb2lcbiAgICAgICAgLy8gaW5zZXJ0VHlwbG9pUmVmZXJlbmNlcyh0eXBsb2ksIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9pLmV0YWxvaWNvZCAhPT0gbnVsbCAmJiBkYXRhLmV0YWxvaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBldGFsb2kgPSBkYXRhLmV0YWxvaVtsb2kuZXRhbG9pY29kXVxuICAgICAgaWYgKGV0YWxvaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvaS5ldGFsb2kgPSBldGFsb2lcbiAgICAgICAgLy8gaW5zZXJ0RXRhbG9pUmVmZXJlbmNlcyhldGFsb2ksIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9pLmRlY2NvY2NvZCAhPT0gbnVsbCAmJiBkYXRhLmRlY2NvYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkZWNjb2MgPSBkYXRhLmRlY2NvY1tsb2kuZGVjY29jY29kXVxuICAgICAgaWYgKGRlY2NvYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvaS5kZWNjb2MgPSBkZWNjb2NcbiAgICAgICAgLy8gaW5zZXJ0RGVjY29jUmVmZXJlbmNlcyhkZWNjb2MsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsb2kubGVjdHVyZXMgPSBbXVxuICAgIGlmIChsb2kubGVjaWR0cyAhPT0gdW5kZWZpbmVkICYmIGRhdGEubGVjdHVyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGxlY2lkdCBvZiBsb2kubGVjaWR0cykge1xuICAgICAgICBjb25zdCBsZWN0dXJlID0gZGF0YS5sZWN0dXJlW2xlY2lkdF1cbiAgICAgICAgaWYgKGxlY3R1cmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxvaS5sZWN0dXJlcy5wdXNoKGxlY3R1cmUpXG4gICAgICAgICAgaW5zZXJ0TGVjdHVyZVJlZmVyZW5jZXMobGVjdHVyZSwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxvaVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0UmFwUmVmZXJlbmNlcyhcbiAgcmFwOiBSYXAsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuKSB7XG4gIGxldCB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLnJhcFxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5yYXAgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKHJhcC5yYXBjb2QpKSB7XG4gICAgdmlzaXRlZElkcy5hZGQocmFwLnJhcGNvZClcblxuICAgIGlmIChyYXAuY29kZGVucmFwICE9PSBudWxsICYmIGRhdGEuZGVucmFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRlbnJhcCA9IGRhdGEuZGVucmFwW3JhcC5jb2RkZW5yYXBdXG4gICAgICBpZiAoZGVucmFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmFwLmRlbnJhcCA9IGRlbnJhcFxuICAgICAgICAvLyBpbnNlcnREZW5yYXBSZWZlcmVuY2VzKGRlbnJhcCwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJhcC5kb2NhdHRzID0gW11cbiAgICBpZiAocmFwLmRvY2F0dGNsZXMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLmRvY2F0dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGRvY2F0dGNsZSBvZiByYXAuZG9jYXR0Y2xlcykge1xuICAgICAgICBjb25zdCBkb2NhdHQgPSBkYXRhLmRvY2F0dFtkb2NhdHRjbGVdXG4gICAgICAgIGlmIChkb2NhdHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJhcC5kb2NhdHRzLnB1c2goZG9jYXR0KVxuICAgICAgICAgIGluc2VydERvY0F0dFJlZmVyZW5jZXMoZG9jYXR0LCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUsIGZhbHNlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmFwLmVjcnMgPSBbXVxuICAgIGlmIChyYXAuZWNybnVtcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEuZWNyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZWNybnVtIG9mIHJhcC5lY3JudW1zKSB7XG4gICAgICAgIGNvbnN0IGVjciA9IGRhdGEuZWNyW2Vjcm51bV1cbiAgICAgICAgaWYgKGVjciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmFwLmVjcnMucHVzaChlY3IpXG4gICAgICAgICAgaW5zZXJ0RWNyUmVmZXJlbmNlcyhlY3IsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJhcC5vcmdzID0gW11cbiAgICBpZiAocmFwLm9yZ2NvZHMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLm9yZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IG9yZ2NvZCBvZiByYXAub3JnY29kcykge1xuICAgICAgICBjb25zdCBvcmcgPSBkYXRhLm9yZ1tvcmdjb2RdXG4gICAgICAgIGlmIChvcmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJhcC5vcmdzLnB1c2gob3JnKVxuICAgICAgICAgIC8vIGluc2VydE9yZ1JlZmVyZW5jZXMob3JnLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmFwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRUZXh0ZVJlZmVyZW5jZXMoXG4gIHRleHRlOiBUZXh0ZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUudGV4dGVcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUudGV4dGUgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKHRleHRlLnRleGNvZCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZCh0ZXh0ZS50ZXhjb2QpXG5cbiAgICB0ZXh0ZS5lY3JzID0gW11cbiAgICBpZiAodGV4dGUuZWNybnVtcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEuZWNyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZWNybnVtIG9mIHRleHRlLmVjcm51bXMpIHtcbiAgICAgICAgY29uc3QgZWNyID0gZGF0YS5lY3JbZWNybnVtXVxuICAgICAgICBpZiAoZWNyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0ZXh0ZS5lY3JzLnB1c2goZWNyKVxuICAgICAgICAgIGluc2VydEVjclJlZmVyZW5jZXMoZWNyLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUub3JnY29kICE9PSBudWxsICYmIGRhdGEub3JnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZyA9IGRhdGEub3JnW3RleHRlLm9yZ2NvZF1cbiAgICAgIGlmIChvcmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS5vcmcgPSBvcmdcbiAgICAgICAgLy8gaW5zZXJ0T3JnUmVmZXJlbmNlcyhvcmcsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUub3JpdHh0Y29kICE9PSBudWxsICYmIGRhdGEub3JpdHh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yaXR4dCA9IGRhdGEub3JpdHh0W3RleHRlLm9yaXR4dGNvZF1cbiAgICAgIGlmIChvcml0eHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS5vcml0eHQgPSBvcml0eHRcbiAgICAgICAgLy8gaW5zZXJ0T3JpdHh0UmVmZXJlbmNlcyhvcml0eHQsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUudHh0QW1lbGlJZCAhPT0gdW5kZWZpbmVkICYmIGRhdGEudHh0X2FtZWxpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR4dEFtZWxpID0gZGF0YS50eHRfYW1lbGlbdGV4dGUudHh0QW1lbGlJZF1cbiAgICAgIGlmICh0eHRBbWVsaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRleHRlLnR4dEFtZWxpID0gdHh0QW1lbGlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUudHlwdHh0Y29kICE9PSBudWxsICYmIGRhdGEudHlwdHh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR5cHR4dCA9IGRhdGEudHlwdHh0W3RleHRlLnR5cHR4dGNvZF1cbiAgICAgIGlmICh0eXB0eHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS50eXB0eHQgPSB0eXB0eHRcbiAgICAgICAgLy8gaW5zZXJ0VHlwdHh0UmVmZXJlbmNlcyh0eXB0eHQsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUudHlwdXJsICE9PSBudWxsICYmIGRhdGEudHlwdXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR5cHVybCA9IGRhdGEudHlwdXJsW3RleHRlLnR5cHVybF1cbiAgICAgIGlmICh0eXB1cmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS5saWJ0eXB1cmwgPSB0eXB1cmwubGlidHlwdXJsXG4gICAgICAgIC8vIGluc2VydFR5cHVybFJlZmVyZW5jZXModHlwdXJsLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIHRleHRlXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0RE8sU0FBU0EsbUJBQW1CQSxDQUNqQ0MsR0FBUSxFQUNSQyxJQUFnQixFQUNoQkMscUJBQTRDLEVBQzVDO0VBQ0EsSUFBSUMsVUFBVSxHQUFHRCxxQkFBcUIsQ0FBQ0YsR0FBRztFQUMxQyxJQUFJRyxVQUFVLEtBQUtDLFNBQVMsRUFBRTtJQUM1QkQsVUFBVSxHQUFHRCxxQkFBcUIsQ0FBQ0YsR0FBRyxHQUFHLElBQUlLLEdBQUcsQ0FBQyxDQUFDO0VBQ3BEO0VBQ0EsSUFBSSxDQUFDRixVQUFVLENBQUNHLEdBQUcsQ0FBQ04sR0FBRyxDQUFDTyxNQUFNLENBQUMsRUFBRTtJQUMvQkosVUFBVSxDQUFDSyxHQUFHLENBQUNSLEdBQUcsQ0FBQ08sTUFBTSxDQUFDO0lBRTFCLElBQUlQLEdBQUcsQ0FBQ1MsTUFBTSxLQUFLLElBQUksSUFBSVIsSUFBSSxDQUFDUyxHQUFHLEtBQUtOLFNBQVMsRUFBRTtN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