@tricoteuses/senat 1.3.1 → 1.3.4

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 (254) hide show
  1. package/lib/config.d.ts +1 -0
  2. package/lib/config.js +14 -45
  3. package/lib/databases.js +86 -143
  4. package/lib/datasets.js +78 -83
  5. package/lib/index.d.ts +12 -4
  6. package/lib/index.js +42 -419
  7. package/lib/loaders.js +149 -654
  8. package/lib/model/ameli.js +83 -21
  9. package/lib/model/debats.js +0 -1
  10. package/lib/model/dosleg.d.ts +1 -1
  11. package/lib/model/dosleg.js +179 -73
  12. package/lib/model/index.d.ts +3 -3
  13. package/lib/model/index.js +12 -46
  14. package/lib/model/questions.js +68 -39
  15. package/lib/model/sens.d.ts +1 -1
  16. package/lib/model/sens.js +383 -113
  17. package/lib/model/texte.js +220 -290
  18. package/lib/model/util.js +9 -26
  19. package/lib/raw_types/ameli.js +5 -6
  20. package/lib/raw_types/debats.js +5 -6
  21. package/lib/raw_types/dosleg.js +5 -6
  22. package/lib/raw_types/questions.js +5 -6
  23. package/lib/raw_types/sens.js +5 -6
  24. package/lib/raw_types_schemats/ameli.js +1 -43
  25. package/lib/raw_types_schemats/debats.js +1 -22
  26. package/lib/raw_types_schemats/dosleg.js +1 -96
  27. package/lib/raw_types_schemats/questions.js +1 -22
  28. package/lib/raw_types_schemats/sens.js +1 -112
  29. package/lib/scripts/convert_data.js +181 -631
  30. package/lib/scripts/datautil.js +17 -60
  31. package/lib/scripts/parse_textes.js +46 -129
  32. package/lib/scripts/retrieve_documents.js +247 -513
  33. package/lib/scripts/retrieve_open_data.js +211 -368
  34. package/lib/scripts/retrieve_senateurs_photos.js +144 -239
  35. package/lib/scripts/shared/cli_helpers.js +30 -30
  36. package/lib/scripts/shared/util.js +28 -94
  37. package/lib/strings.js +20 -45
  38. package/lib/types/ameli.d.ts +1 -1
  39. package/lib/types/ameli.js +14 -25
  40. package/lib/types/debats.d.ts +1 -1
  41. package/lib/types/debats.js +3 -21
  42. package/lib/types/dosleg.d.ts +1 -1
  43. package/lib/types/dosleg.js +152 -119
  44. package/lib/types/questions.d.ts +1 -1
  45. package/lib/types/questions.js +1 -13
  46. package/lib/types/sens.d.ts +1 -1
  47. package/lib/types/sens.js +1 -13
  48. package/lib/types/sessions.js +44 -49
  49. package/lib/types/texte.js +17 -22
  50. package/lib/validators/config.js +47 -111
  51. package/lib/validators/senat.js +1 -5
  52. package/package.json +18 -40
  53. package/lib/aggregates.d.ts +0 -52
  54. package/lib/aggregates.mjs +0 -930
  55. package/lib/aggregates.ts +0 -833
  56. package/lib/config.mjs +0 -16
  57. package/lib/config.ts +0 -26
  58. package/lib/data/legislatures.json +0 -38
  59. package/lib/databases.mjs +0 -57
  60. package/lib/databases.ts +0 -71
  61. package/lib/datasets.mjs +0 -78
  62. package/lib/datasets.ts +0 -118
  63. package/lib/fields.d.ts +0 -10
  64. package/lib/fields.mjs +0 -68
  65. package/lib/fields.ts +0 -29
  66. package/lib/index.mjs +0 -4
  67. package/lib/index.ts +0 -42
  68. package/lib/inserters.d.ts +0 -98
  69. package/lib/inserters.mjs +0 -500
  70. package/lib/inserters.ts +0 -521
  71. package/lib/loaders.mjs +0 -158
  72. package/lib/loaders.ts +0 -271
  73. package/lib/model/ameli.mjs +0 -84
  74. package/lib/model/ameli.ts +0 -100
  75. package/lib/model/debats.mjs +0 -1
  76. package/lib/model/debats.ts +0 -0
  77. package/lib/model/dosleg.mjs +0 -196
  78. package/lib/model/dosleg.ts +0 -240
  79. package/lib/model/index.mjs +0 -4
  80. package/lib/model/index.ts +0 -14
  81. package/lib/model/questions.mjs +0 -71
  82. package/lib/model/questions.ts +0 -93
  83. package/lib/model/sens.mjs +0 -415
  84. package/lib/model/sens.ts +0 -516
  85. package/lib/model/texte.mjs +0 -208
  86. package/lib/model/texte.ts +0 -229
  87. package/lib/model/util.mjs +0 -19
  88. package/lib/model/util.ts +0 -32
  89. package/lib/raw_types/ameli.mjs +0 -5
  90. package/lib/raw_types/ameli.ts +0 -951
  91. package/lib/raw_types/debats.mjs +0 -5
  92. package/lib/raw_types/debats.ts +0 -222
  93. package/lib/raw_types/dosleg.mjs +0 -5
  94. package/lib/raw_types/dosleg.ts +0 -3625
  95. package/lib/raw_types/questions.mjs +0 -5
  96. package/lib/raw_types/questions.ts +0 -427
  97. package/lib/raw_types/sens.mjs +0 -5
  98. package/lib/raw_types/sens.ts +0 -4499
  99. package/lib/raw_types_kysely/ameli.d.ts +0 -6
  100. package/lib/raw_types_kysely/ameli.mjs +0 -7
  101. package/lib/raw_types_kysely/ameli.ts +0 -6
  102. package/lib/raw_types_kysely/debats.d.ts +0 -6
  103. package/lib/raw_types_kysely/debats.mjs +0 -7
  104. package/lib/raw_types_kysely/debats.ts +0 -6
  105. package/lib/raw_types_kysely/dosleg.d.ts +0 -6
  106. package/lib/raw_types_kysely/dosleg.mjs +0 -7
  107. package/lib/raw_types_kysely/dosleg.ts +0 -6
  108. package/lib/raw_types_kysely/questions.d.ts +0 -6
  109. package/lib/raw_types_kysely/questions.mjs +0 -7
  110. package/lib/raw_types_kysely/questions.ts +0 -6
  111. package/lib/raw_types_kysely/sens.d.ts +0 -6
  112. package/lib/raw_types_kysely/sens.mjs +0 -7
  113. package/lib/raw_types_kysely/sens.ts +0 -6
  114. package/lib/raw_types_kysely/texte.d.ts +0 -45
  115. package/lib/raw_types_kysely/texte.mjs +0 -7
  116. package/lib/raw_types_kysely/texte.ts +0 -53
  117. package/lib/raw_types_schemats/ameli.mjs +0 -2
  118. package/lib/raw_types_schemats/ameli.ts +0 -601
  119. package/lib/raw_types_schemats/debats.mjs +0 -2
  120. package/lib/raw_types_schemats/debats.ts +0 -145
  121. package/lib/raw_types_schemats/dosleg.mjs +0 -2
  122. package/lib/raw_types_schemats/dosleg.ts +0 -2195
  123. package/lib/raw_types_schemats/questions.mjs +0 -2
  124. package/lib/raw_types_schemats/questions.ts +0 -251
  125. package/lib/raw_types_schemats/sens.mjs +0 -2
  126. package/lib/raw_types_schemats/sens.ts +0 -2907
  127. package/lib/scripts/convert_data.mjs +0 -181
  128. package/lib/scripts/convert_data.ts +0 -243
  129. package/lib/scripts/datautil.mjs +0 -16
  130. package/lib/scripts/datautil.ts +0 -19
  131. package/lib/scripts/images/transparent_150x192.jpg +0 -0
  132. package/lib/scripts/images/transparent_155x225.jpg +0 -0
  133. package/lib/scripts/parse_textes.mjs +0 -46
  134. package/lib/scripts/parse_textes.ts +0 -65
  135. package/lib/scripts/retrieve_documents.mjs +0 -249
  136. package/lib/scripts/retrieve_documents.ts +0 -298
  137. package/lib/scripts/retrieve_open_data.mjs +0 -217
  138. package/lib/scripts/retrieve_open_data.ts +0 -274
  139. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -147
  140. package/lib/scripts/retrieve_senateurs_photos.ts +0 -177
  141. package/lib/scripts/retrieve_textes.d.ts +0 -1
  142. package/lib/scripts/retrieve_textes.mjs +0 -328
  143. package/lib/scripts/retrieve_textes.ts +0 -143
  144. package/lib/scripts/shared/cli_helpers.ts +0 -36
  145. package/lib/scripts/shared/util.ts +0 -33
  146. package/lib/src/aggregates.d.ts +0 -52
  147. package/lib/src/aggregates.mjs +0 -726
  148. package/lib/src/config.d.ts +0 -2
  149. package/lib/src/config.mjs +0 -16
  150. package/lib/src/databases.d.ts +0 -18
  151. package/lib/src/databases.mjs +0 -55
  152. package/lib/src/datasets.d.ts +0 -28
  153. package/lib/src/datasets.mjs +0 -78
  154. package/lib/src/fields.d.ts +0 -10
  155. package/lib/src/fields.mjs +0 -22
  156. package/lib/src/index.d.ts +0 -8
  157. package/lib/src/index.mjs +0 -7
  158. package/lib/src/inserters.d.ts +0 -98
  159. package/lib/src/inserters.mjs +0 -360
  160. package/lib/src/loaders.d.ts +0 -36
  161. package/lib/src/loaders.mjs +0 -107
  162. package/lib/src/model/ameli.d.ts +0 -4
  163. package/lib/src/model/ameli.js +0 -57
  164. package/lib/src/model/debats.d.ts +0 -4
  165. package/lib/src/model/debats.js +0 -43
  166. package/lib/src/model/dosleg.d.ts +0 -197
  167. package/lib/src/model/dosleg.js +0 -169
  168. package/lib/src/model/index.d.ts +0 -4
  169. package/lib/src/model/index.js +0 -4
  170. package/lib/src/model/questions.d.ts +0 -89
  171. package/lib/src/model/questions.js +0 -76
  172. package/lib/src/model/sens.d.ts +0 -390
  173. package/lib/src/model/sens.js +0 -339
  174. package/lib/src/model/texte.d.ts +0 -7
  175. package/lib/src/model/texte.js +0 -183
  176. package/lib/src/raw_types_kysely/ameli.d.ts +0 -915
  177. package/lib/src/raw_types_kysely/ameli.js +0 -5
  178. package/lib/src/raw_types_kysely/debats.d.ts +0 -207
  179. package/lib/src/raw_types_kysely/debats.js +0 -5
  180. package/lib/src/raw_types_kysely/dosleg.d.ts +0 -3532
  181. package/lib/src/raw_types_kysely/dosleg.js +0 -5
  182. package/lib/src/raw_types_kysely/questions.d.ts +0 -414
  183. package/lib/src/raw_types_kysely/questions.js +0 -5
  184. package/lib/src/raw_types_kysely/sens.d.ts +0 -4394
  185. package/lib/src/raw_types_kysely/sens.js +0 -5
  186. package/lib/src/raw_types_schemats/ameli.d.ts +0 -541
  187. package/lib/src/raw_types_schemats/ameli.js +0 -2
  188. package/lib/src/raw_types_schemats/debats.d.ts +0 -127
  189. package/lib/src/raw_types_schemats/debats.js +0 -2
  190. package/lib/src/raw_types_schemats/dosleg.d.ts +0 -2027
  191. package/lib/src/raw_types_schemats/dosleg.js +0 -2
  192. package/lib/src/raw_types_schemats/questions.d.ts +0 -231
  193. package/lib/src/raw_types_schemats/questions.js +0 -2
  194. package/lib/src/raw_types_schemats/sens.d.ts +0 -2709
  195. package/lib/src/raw_types_schemats/sens.js +0 -2
  196. package/lib/src/scripts/convert_data.d.ts +0 -1
  197. package/lib/src/scripts/convert_data.js +0 -95
  198. package/lib/src/scripts/datautil.d.ts +0 -5
  199. package/lib/src/scripts/datautil.js +0 -16
  200. package/lib/src/scripts/parse_textes.d.ts +0 -1
  201. package/lib/src/scripts/parse_textes.js +0 -47
  202. package/lib/src/scripts/retrieve_documents.d.ts +0 -1
  203. package/lib/src/scripts/retrieve_documents.js +0 -258
  204. package/lib/src/scripts/retrieve_open_data.d.ts +0 -1
  205. package/lib/src/scripts/retrieve_open_data.js +0 -214
  206. package/lib/src/scripts/retrieve_senateurs_photos.d.ts +0 -1
  207. package/lib/src/scripts/retrieve_senateurs_photos.js +0 -147
  208. package/lib/src/scripts/shared/cli_helpers.d.ts +0 -44
  209. package/lib/src/scripts/shared/cli_helpers.js +0 -32
  210. package/lib/src/scripts/shared/util.d.ts +0 -3
  211. package/lib/src/scripts/shared/util.js +0 -28
  212. package/lib/src/strings.d.ts +0 -1
  213. package/lib/src/strings.mjs +0 -18
  214. package/lib/src/types/ameli.d.ts +0 -10
  215. package/lib/src/types/ameli.js +0 -13
  216. package/lib/src/types/debats.d.ts +0 -4
  217. package/lib/src/types/debats.js +0 -2
  218. package/lib/src/types/dosleg.d.ts +0 -98
  219. package/lib/src/types/dosleg.js +0 -151
  220. package/lib/src/types/questions.d.ts +0 -2
  221. package/lib/src/types/questions.js +0 -1
  222. package/lib/src/types/sens.d.ts +0 -10
  223. package/lib/src/types/sens.js +0 -1
  224. package/lib/src/types/sessions.d.ts +0 -42
  225. package/lib/src/types/sessions.js +0 -43
  226. package/lib/src/types/texte.d.ts +0 -61
  227. package/lib/src/types/texte.js +0 -16
  228. package/lib/src/validators/config.d.ts +0 -1
  229. package/lib/src/validators/config.js +0 -54
  230. package/lib/src/validators/senat.d.ts +0 -0
  231. package/lib/src/validators/senat.js +0 -24
  232. package/lib/strings.mjs +0 -18
  233. package/lib/strings.ts +0 -26
  234. package/lib/types/ameli.mjs +0 -13
  235. package/lib/types/ameli.ts +0 -21
  236. package/lib/types/debats.mjs +0 -2
  237. package/lib/types/debats.ts +0 -6
  238. package/lib/types/dosleg.mjs +0 -151
  239. package/lib/types/dosleg.ts +0 -284
  240. package/lib/types/questions.mjs +0 -1
  241. package/lib/types/questions.ts +0 -3
  242. package/lib/types/sens.mjs +0 -1
  243. package/lib/types/sens.ts +0 -12
  244. package/lib/types/sessions.mjs +0 -43
  245. package/lib/types/sessions.ts +0 -42
  246. package/lib/types/texte.mjs +0 -16
  247. package/lib/types/texte.ts +0 -76
  248. package/lib/typings/windows-1252.d.js +0 -2
  249. package/lib/typings/windows-1252.d.mjs +0 -2
  250. package/lib/typings/windows-1252.d.ts +0 -11
  251. package/lib/validators/config.mjs +0 -54
  252. package/lib/validators/config.ts +0 -79
  253. package/lib/validators/senat.mjs +0 -24
  254. package/lib/validators/senat.ts +0 -26
package/lib/model/sens.js CHANGED
@@ -1,180 +1,450 @@
1
1
  "use strict";
2
-
3
- require("core-js/modules/es.array.concat.js");
4
- require("core-js/modules/es.object.define-property.js");
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.findActif = findActif;
2
+ Object.defineProperty(exports, "__esModule", { value: true });
9
3
  exports.findAll = findAll;
10
4
  exports.findAllCirconscriptions = findAllCirconscriptions;
11
5
  exports.findAllOrganismes = findAllOrganismes;
12
- var _postgres = require("kysely/helpers/postgres");
13
- var _databases = require("../databases");
14
- var _util = require("./util");
6
+ exports.findActif = findActif;
7
+ const postgres_1 = require("kysely/helpers/postgres");
8
+ const databases_1 = require("../databases");
9
+ const util_1 = require("./util");
15
10
  function circonscription(dptNum) {
16
- return (0, _postgres.jsonObjectFrom)(_databases.dbSens.selectFrom("dpt").leftJoin("reg", "dpt.regcod", "reg.regcod").where("dpt.dptnum", "=", dptNum).select(["dpt.dptcod as code", "dpt.dptlib as libelle_departement", "reg.reglib as libelle_region"]));
11
+ return (0, postgres_1.jsonObjectFrom)(databases_1.dbSens
12
+ .selectFrom("dpt")
13
+ .leftJoin("reg", "dpt.regcod", "reg.regcod")
14
+ .where("dpt.dptnum", "=", dptNum)
15
+ .select([
16
+ "dpt.dptcod as code",
17
+ "dpt.dptlib as libelle_departement",
18
+ "reg.reglib as libelle_region",
19
+ ]));
17
20
  }
18
21
  function textes(actId) {
19
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("activite_loi").where("actid", "=", actId).select(function (_ref) {
20
- var ref = _ref.ref;
21
- return [(0, _util.rtrim)(ref("loicod")).as("loicod")];
22
- }));
22
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
23
+ .selectFrom("activite_loi")
24
+ .where("actid", "=", actId)
25
+ .select(({ ref }) => [(0, util_1.rtrim)(ref("loicod")).as("loicod")]));
23
26
  }
24
27
  function delegations(actId) {
25
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("activite_delegation").where("actid", "=", actId).orderBy("delegidx asc"));
28
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
29
+ .selectFrom("activite_delegation")
30
+ .where("actid", "=", actId)
31
+ .orderBy("delegidx asc"));
26
32
  }
27
33
  function activites(senMat) {
28
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("activite").leftJoin("activite_participant", "activite.actid", "activite_participant.actid").leftJoin("type_activite", "activite.typactcod", "type_activite.typactcod").leftJoin("categorie_activite", "activite.catactcod", "categorie_activite.catactcod").where("activite_participant.senmat", "=", senMat).select(function (_ref2) {
29
- var ref = _ref2.ref;
30
- return [delegations(ref("activite.actid")).as("delegations"), textes(ref("activite.actid")).as("textes")];
31
- }).orderBy("activite.datdeb desc"));
34
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
35
+ .selectFrom("activite")
36
+ .leftJoin("activite_participant", "activite.actid", "activite_participant.actid")
37
+ .leftJoin("type_activite", "activite.typactcod", "type_activite.typactcod")
38
+ .leftJoin("categorie_activite", "activite.catactcod", "categorie_activite.catactcod")
39
+ .where("activite_participant.senmat", "=", senMat)
40
+ .select(({ ref }) => [
41
+ delegations(ref("activite.actid")).as("delegations"),
42
+ textes(ref("activite.actid")).as("textes"),
43
+ ])
44
+ .orderBy("activite.datdeb desc"));
32
45
  }
33
46
  function activitesPerso(senMat) {
34
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("activite_senateur").leftJoin("type_activite_senateur", "activite_senateur.typactsencod", "type_activite_senateur.typactsencod").where("activite_senateur.senmat", "=", senMat).orderBy("activite_senateur.datdeb desc"));
47
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
48
+ .selectFrom("activite_senateur")
49
+ .leftJoin("type_activite_senateur", "activite_senateur.typactsencod", "type_activite_senateur.typactsencod")
50
+ .where("activite_senateur.senmat", "=", senMat)
51
+ .orderBy("activite_senateur.datdeb desc"));
35
52
  }
36
53
  function fonctionsBureau(senMat) {
37
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("senbur").leftJoin("bur", "senbur.burcod", "bur.burcod").where("senbur.senmat", "=", senMat).select(function (_ref3) {
38
- var ref = _ref3.ref;
39
- return [(0, _util.toDateString)(ref("senbur.senburdatdeb")).as("date_debut"), (0, _util.toDateString)(ref("senbur.senburdatfin")).as("date_fin"), "bur.burlib as libelle"];
40
- }).orderBy("senbur.senburdatdeb desc"));
54
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
55
+ .selectFrom("senbur")
56
+ .leftJoin("bur", "senbur.burcod", "bur.burcod")
57
+ .where("senbur.senmat", "=", senMat)
58
+ .select(({ ref }) => [
59
+ (0, util_1.toDateString)(ref("senbur.senburdatdeb")).as("date_debut"),
60
+ (0, util_1.toDateString)(ref("senbur.senburdatfin")).as("date_fin"),
61
+ "bur.burlib as libelle",
62
+ ])
63
+ .orderBy("senbur.senburdatdeb desc"));
41
64
  }
42
65
  function mandatsEluConseillerGeneral(senMat) {
43
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("elucan").leftJoin("typman", "elucan.typmancod", "typman.typmancod").where("elucan.senmat", "=", senMat).select(function (_ref4) {
44
- var ref = _ref4.ref;
45
- return [circonscription(ref("elucan.dptnum").$notNull()).as("circonscription")];
46
- }).orderBy("elucan.eludatdeb desc"));
66
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
67
+ .selectFrom("elucan")
68
+ .leftJoin("typman", "elucan.typmancod", "typman.typmancod")
69
+ .where("elucan.senmat", "=", senMat)
70
+ .select(({ ref }) => [
71
+ circonscription(ref("elucan.dptnum").$notNull()).as("circonscription"),
72
+ ])
73
+ .orderBy("elucan.eludatdeb desc"));
47
74
  }
48
75
  function mandatsEluDepute(senMat) {
49
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("eludep").leftJoin("typman", "eludep.typmancod", "typman.typmancod").where("eludep.senmat", "=", senMat).select(function (_ref5) {
50
- var ref = _ref5.ref;
51
- return [circonscription(ref("eludep.circo").$notNull()).as("circonscription")];
52
- }).orderBy("eludep.eludatdeb desc"));
76
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
77
+ .selectFrom("eludep")
78
+ .leftJoin("typman", "eludep.typmancod", "typman.typmancod")
79
+ .where("eludep.senmat", "=", senMat)
80
+ .select(({ ref }) => [
81
+ circonscription(ref("eludep.circo").$notNull()).as("circonscription"),
82
+ ])
83
+ .orderBy("eludep.eludatdeb desc"));
53
84
  }
54
85
  function mandatsEluDivers(senMat) {
55
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("eludiv").leftJoin("typman", "eludiv.typmancod", "typman.typmancod").where("eludiv.senmat", "=", senMat).orderBy("eludiv.eludatdeb desc"));
86
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
87
+ .selectFrom("eludiv")
88
+ .leftJoin("typman", "eludiv.typmancod", "typman.typmancod")
89
+ .where("eludiv.senmat", "=", senMat)
90
+ .orderBy("eludiv.eludatdeb desc"));
56
91
  }
57
92
  function mandatsEluEuropeen(senMat) {
58
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("elueur").leftJoin("nation", "elueur.nationcod", "nation.nationcod").leftJoin("typman", "elueur.typmancod", "typman.typmancod").where("elueur.senmat", "=", senMat).orderBy("elueur.eludatdeb desc"));
93
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
94
+ .selectFrom("elueur")
95
+ .leftJoin("nation", "elueur.nationcod", "nation.nationcod")
96
+ .leftJoin("typman", "elueur.typmancod", "typman.typmancod")
97
+ .where("elueur.senmat", "=", senMat)
98
+ .orderBy("elueur.eludatdeb desc"));
59
99
  }
60
100
  function mandatsEluConseillerRegional(senMat) {
61
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("elureg").leftJoin("reg", "elureg.regcod", "reg.regcod").leftJoin("typman", "elureg.typmancod", "typman.typmancod").where("elureg.senmat", "=", senMat).orderBy("elureg.eludatdeb desc"));
101
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
102
+ .selectFrom("elureg")
103
+ .leftJoin("reg", "elureg.regcod", "reg.regcod")
104
+ .leftJoin("typman", "elureg.typmancod", "typman.typmancod")
105
+ .where("elureg.senmat", "=", senMat)
106
+ .orderBy("elureg.eludatdeb desc"));
62
107
  }
63
108
  function mandatsEluSenateur(senMat) {
64
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("elusen").leftJoin("etadebman", "elusen.etadebmancod", "etadebman.etadebmancod").leftJoin("etafinman", "elusen.etafinmancod", "etafinman.etafinmancod").leftJoin("typman", "elusen.typmancod", "typman.typmancod").where("elusen.senmat", "=", senMat).select(function (_ref6) {
65
- var ref = _ref6.ref;
66
- return ["elusen.dptnum as code_circonscription", (0, _util.toDateString)(ref("elusen.eludatdeb")).as("date_debut"), (0, _util.toDateString)(ref("elusen.eludatfin")).as("date_fin"), "etadebman.etadebmanlib as etat_debut", "etafinman.etafinman as etat_fin"];
67
- }).orderBy("elusen.eludatdeb desc"));
109
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
110
+ .selectFrom("elusen")
111
+ .leftJoin("etadebman", "elusen.etadebmancod", "etadebman.etadebmancod")
112
+ .leftJoin("etafinman", "elusen.etafinmancod", "etafinman.etafinmancod")
113
+ .leftJoin("typman", "elusen.typmancod", "typman.typmancod")
114
+ .where("elusen.senmat", "=", senMat)
115
+ .select(({ ref }) => [
116
+ "elusen.dptnum as code_circonscription",
117
+ (0, util_1.toDateString)(ref("elusen.eludatdeb")).as("date_debut"),
118
+ (0, util_1.toDateString)(ref("elusen.eludatfin")).as("date_fin"),
119
+ "etadebman.etadebmanlib as etat_debut",
120
+ "etafinman.etafinman as etat_fin",
121
+ ])
122
+ .orderBy("elusen.eludatdeb desc"));
68
123
  }
69
124
  function mandatsEluTerritorial(senMat) {
70
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("eluter").leftJoin("asster", "eluter.asstercod", "asster.asstercod").leftJoin("typman", "eluter.typmancod", "typman.typmancod").where("eluter.senmat", "=", senMat).orderBy("eluter.eludatdeb desc"));
125
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
126
+ .selectFrom("eluter")
127
+ .leftJoin("asster", "eluter.asstercod", "asster.asstercod")
128
+ .leftJoin("typman", "eluter.typmancod", "typman.typmancod")
129
+ .where("eluter.senmat", "=", senMat)
130
+ .orderBy("eluter.eludatdeb desc"));
71
131
  }
72
132
  function mandatsEluConseillerMunicipal(senMat) {
73
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("eluvil").leftJoin("typman", "eluvil.typmancod", "typman.typmancod").where("eluvil.senmat", "=", senMat).orderBy("eluvil.eludatdeb desc"));
133
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
134
+ .selectFrom("eluvil")
135
+ .leftJoin("typman", "eluvil.typmancod", "typman.typmancod")
136
+ .where("eluvil.senmat", "=", senMat)
137
+ .orderBy("eluvil.eludatdeb desc"));
74
138
  }
75
139
  function fonctionsMembreCommission(memComId) {
76
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("fonmemcom").leftJoin("foncom", "fonmemcom.foncomcod", "foncom.foncomcod").where("fonmemcom.memcomid", "=", memComId).select(function (_ref7) {
77
- var ref = _ref7.ref;
78
- return [(0, _util.toDateString)(ref("fonmemcom.fonmemcomdatdeb")).as("date_debut"), (0, _util.toDateString)(ref("fonmemcom.fonmemcomdatfin")).as("date_fin"), "foncom.foncomlib as libelle"];
79
- }).orderBy("fonmemcom.fonmemcomdatdeb desc"));
140
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
141
+ .selectFrom("fonmemcom")
142
+ .leftJoin("foncom", "fonmemcom.foncomcod", "foncom.foncomcod")
143
+ .where("fonmemcom.memcomid", "=", memComId)
144
+ .select(({ ref }) => [
145
+ (0, util_1.toDateString)(ref("fonmemcom.fonmemcomdatdeb")).as("date_debut"),
146
+ (0, util_1.toDateString)(ref("fonmemcom.fonmemcomdatfin")).as("date_fin"),
147
+ "foncom.foncomlib as libelle",
148
+ ])
149
+ .orderBy("fonmemcom.fonmemcomdatdeb desc"));
80
150
  }
81
151
  function mandatsMembreCommission(senMat) {
82
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("memcom").leftJoin("com", "memcom.orgcod", "com.orgcod").leftJoin("typorg", "com.typorgcod", "typorg.typorgcod").where("memcom.senmat", "=", senMat).select(function (_ref8) {
83
- var ref = _ref8.ref;
84
- return ["com.typorgcod as type_code_organisme", "memcom.orgcod as code_organisme", "typorg.typorglib as type_organisme", "com.comlilmin as libelle", (0, _util.toDateString)(ref("memcom.memcomdatdeb")).as("date_debut"), (0, _util.toDateString)(ref("memcom.memcomdatfin")).as("date_fin")];
85
- }).select(function (_ref9) {
86
- var ref = _ref9.ref;
87
- return [fonctionsMembreCommission(ref("memcom.memcomid")).as("fonctions")];
88
- }).orderBy("memcom.memcomdatdeb desc"));
152
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
153
+ .selectFrom("memcom")
154
+ .leftJoin("com", "memcom.orgcod", "com.orgcod")
155
+ .leftJoin("typorg", "com.typorgcod", "typorg.typorgcod")
156
+ .where("memcom.senmat", "=", senMat)
157
+ .select(({ ref }) => [
158
+ "com.typorgcod as type_code_organisme",
159
+ "memcom.orgcod as code_organisme",
160
+ "typorg.typorglib as type_organisme",
161
+ "com.comlilmin as libelle",
162
+ (0, util_1.toDateString)(ref("memcom.memcomdatdeb")).as("date_debut"),
163
+ (0, util_1.toDateString)(ref("memcom.memcomdatfin")).as("date_fin"),
164
+ ])
165
+ .select(({ ref }) => [
166
+ fonctionsMembreCommission(ref("memcom.memcomid")).as("fonctions"),
167
+ ])
168
+ .orderBy("memcom.memcomdatdeb desc"));
89
169
  }
90
170
  function fonctionsMembreDelegation(memDelegaId) {
91
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("fonmemdelega").leftJoin("fondelega", "fonmemdelega.fondelcod", "fondelega.fondelcod").where("fonmemdelega.memdelegaid", "=", memDelegaId).select(function (_ref0) {
92
- var ref = _ref0.ref;
93
- return [(0, _util.toDateString)(ref("fonmemdelega.fonmemdeldatdeb")).as("date_debut"), (0, _util.toDateString)(ref("fonmemdelega.fonmemdeldatfin")).as("date_fin"), "fondelega.fondellib as libelle"];
94
- }).orderBy("fonmemdelega.fonmemdeldatdeb desc"));
171
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
172
+ .selectFrom("fonmemdelega")
173
+ .leftJoin("fondelega", "fonmemdelega.fondelcod", "fondelega.fondelcod")
174
+ .where("fonmemdelega.memdelegaid", "=", memDelegaId)
175
+ .select(({ ref }) => [
176
+ (0, util_1.toDateString)(ref("fonmemdelega.fonmemdeldatdeb")).as("date_debut"),
177
+ (0, util_1.toDateString)(ref("fonmemdelega.fonmemdeldatfin")).as("date_fin"),
178
+ "fondelega.fondellib as libelle",
179
+ ])
180
+ .orderBy("fonmemdelega.fonmemdeldatdeb desc"));
95
181
  }
96
182
  function mandatsMembreDelegation(senMat) {
97
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("memdelega").leftJoin("delega", "memdelega.orgcod", "delega.orgcod").leftJoin("designorg", "memdelega.designcod", "designorg.designcod").leftJoin("typorg", "delega.typorgcod", "typorg.typorgcod").where("memdelega.senmat", "=", senMat).select(function (_ref1) {
98
- var ref = _ref1.ref;
99
- return ["delega.typorgcod as type_code_organisme", "memdelega.orgcod as code_organisme", "typorg.typorglib as type_organisme", "delega.evelib as libelle", (0, _util.toDateString)(ref("memdelega.memdelegadatdeb")).as("date_debut"), (0, _util.toDateString)(ref("memdelega.memdelegadatfin")).as("date_fin")];
100
- }).select(function (_ref10) {
101
- var ref = _ref10.ref;
102
- return [fonctionsMembreDelegation(ref("memdelega.memdelegaid")).as("fonctions")];
103
- }).orderBy("memdelega.memdelegadatdeb desc"));
183
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
184
+ .selectFrom("memdelega")
185
+ .leftJoin("delega", "memdelega.orgcod", "delega.orgcod")
186
+ .leftJoin("designorg", "memdelega.designcod", "designorg.designcod")
187
+ .leftJoin("typorg", "delega.typorgcod", "typorg.typorgcod")
188
+ .where("memdelega.senmat", "=", senMat)
189
+ .select(({ ref }) => [
190
+ "delega.typorgcod as type_code_organisme",
191
+ "memdelega.orgcod as code_organisme",
192
+ "typorg.typorglib as type_organisme",
193
+ "delega.evelib as libelle",
194
+ (0, util_1.toDateString)(ref("memdelega.memdelegadatdeb")).as("date_debut"),
195
+ (0, util_1.toDateString)(ref("memdelega.memdelegadatfin")).as("date_fin"),
196
+ ])
197
+ .select(({ ref }) => [
198
+ fonctionsMembreDelegation(ref("memdelega.memdelegaid")).as("fonctions"),
199
+ ])
200
+ .orderBy("memdelega.memdelegadatdeb desc"));
104
201
  }
105
202
  function mandatsMembreExtraParlementaire(senMat) {
106
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("memextpar").leftJoin("orgext", "memextpar.orgcod", "orgext.orgcod").leftJoin("design", "memextpar.designcod", "design.designcod").where("memextpar.senmat", "=", senMat).orderBy("memextpar.memextpardatdeb desc"));
203
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
204
+ .selectFrom("memextpar")
205
+ .leftJoin("orgext", "memextpar.orgcod", "orgext.orgcod")
206
+ .leftJoin("design", "memextpar.designcod", "design.designcod")
207
+ .where("memextpar.senmat", "=", senMat)
208
+ .orderBy("memextpar.memextpardatdeb desc"));
107
209
  }
108
210
  function fonctionsMembreGroupePolitique(memGrpPolId) {
109
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("fonmemgrppol").leftJoin("fongrppol", "fonmemgrppol.fongrppolcod", "fongrppol.fongrppolcod").where("fonmemgrppol.memgrppolid", "=", memGrpPolId).select(function (_ref11) {
110
- var ref = _ref11.ref;
111
- return [(0, _util.toDateString)(ref("fonmemgrppol.fonmemgrppoldatdeb")).as("date_debut"), (0, _util.toDateString)(ref("fonmemgrppol.fonmemgrppoldatfin")).as("date_fin"), "fongrppol.fongrppollib as libelle"];
112
- }).orderBy("fonmemgrppol.fonmemgrppoldatdeb desc"));
211
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
212
+ .selectFrom("fonmemgrppol")
213
+ .leftJoin("fongrppol", "fonmemgrppol.fongrppolcod", "fongrppol.fongrppolcod")
214
+ .where("fonmemgrppol.memgrppolid", "=", memGrpPolId)
215
+ .select(({ ref }) => [
216
+ (0, util_1.toDateString)(ref("fonmemgrppol.fonmemgrppoldatdeb")).as("date_debut"),
217
+ (0, util_1.toDateString)(ref("fonmemgrppol.fonmemgrppoldatfin")).as("date_fin"),
218
+ "fongrppol.fongrppollib as libelle",
219
+ ])
220
+ .orderBy("fonmemgrppol.fonmemgrppoldatdeb desc"));
113
221
  }
114
222
  function mandatsMembreGroupePolitique(senMat) {
115
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("memgrppol").leftJoin("grppol", "memgrppol.grppolcod", "grppol.grppolcod").leftJoin("typapppol", "memgrppol.typapppolcod", "typapppol.typapppolcod").where("memgrppol.senmat", "=", senMat).select(function (_ref12) {
116
- var ref = _ref12.ref;
117
- return ["memgrppol.grppolcod as code", "grppol.grppollibcou as libelle", (0, _util.toDateString)(ref("memgrppol.memgrppoldatdeb")).as("date_debut"), (0, _util.toDateString)(ref("memgrppol.memgrppoldatfin")).as("date_fin"), "typapppol.typapppollib as fonction"];
118
- }).select(function (_ref13) {
119
- var ref = _ref13.ref;
120
- return [fonctionsMembreGroupePolitique(ref("memgrppol.memgrppolid")).as("fonctions")];
121
- }).orderBy("memgrppol.memgrppoldatdeb desc"));
223
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
224
+ .selectFrom("memgrppol")
225
+ .leftJoin("grppol", "memgrppol.grppolcod", "grppol.grppolcod")
226
+ .leftJoin("typapppol", "memgrppol.typapppolcod", "typapppol.typapppolcod")
227
+ .where("memgrppol.senmat", "=", senMat)
228
+ .select(({ ref }) => [
229
+ "memgrppol.grppolcod as code",
230
+ "grppol.grppollibcou as libelle",
231
+ (0, util_1.toDateString)(ref("memgrppol.memgrppoldatdeb")).as("date_debut"),
232
+ (0, util_1.toDateString)(ref("memgrppol.memgrppoldatfin")).as("date_fin"),
233
+ "typapppol.typapppollib as fonction",
234
+ ])
235
+ .select(({ ref }) => [
236
+ fonctionsMembreGroupePolitique(ref("memgrppol.memgrppolid")).as("fonctions"),
237
+ ])
238
+ .orderBy("memgrppol.memgrppoldatdeb desc"));
122
239
  }
123
240
  function fonctionsMembreGroupeSenatorial(memGrpSenId) {
124
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("fonmemgrpsen").leftJoin("fongrpsen", "fonmemgrpsen.fongrpsencod", "fongrpsen.fongrpsencod").where("fonmemgrpsen.memgrpsenid", "=", memGrpSenId).orderBy("fonmemgrpsen.fonmemgrpsendatdeb desc"));
241
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
242
+ .selectFrom("fonmemgrpsen")
243
+ .leftJoin("fongrpsen", "fonmemgrpsen.fongrpsencod", "fongrpsen.fongrpsencod")
244
+ .where("fonmemgrpsen.memgrpsenid", "=", memGrpSenId)
245
+ .orderBy("fonmemgrpsen.fonmemgrpsendatdeb desc"));
125
246
  }
126
247
  function mandatsMembreGroupeSenatorial(senMat) {
127
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("memgrpsen").leftJoin("grpsenami", "memgrpsen.orgcod", "grpsenami.orgcod").leftJoin("typgrpsen", "grpsenami.typgrpsencod", "typgrpsen.typgrpsencod").where("memgrpsen.senmat", "=", senMat).select(function (_ref14) {
128
- var ref = _ref14.ref;
129
- return [fonctionsMembreGroupeSenatorial(ref("memgrpsen.memgrpsenid")).as("fonctions")];
130
- }).orderBy("memgrpsen.memgrpsendatent desc"));
248
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
249
+ .selectFrom("memgrpsen")
250
+ .leftJoin("grpsenami", "memgrpsen.orgcod", "grpsenami.orgcod")
251
+ .leftJoin("typgrpsen", "grpsenami.typgrpsencod", "typgrpsen.typgrpsencod")
252
+ .where("memgrpsen.senmat", "=", senMat)
253
+ .select(({ ref }) => [
254
+ fonctionsMembreGroupeSenatorial(ref("memgrpsen.memgrpsenid")).as("fonctions"),
255
+ ])
256
+ .orderBy("memgrpsen.memgrpsendatent desc"));
131
257
  }
132
258
  function fonctionsMembreOrganisme(memOrgId) {
133
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("fonmemorg").leftJoin("fonorg", "fonmemorg.fonorgcod", "fonorg.fonorgcod").where("fonmemorg.memorgid", "=", memOrgId).orderBy("fonmemorg.fonmemorgdatdeb desc"));
259
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
260
+ .selectFrom("fonmemorg")
261
+ .leftJoin("fonorg", "fonmemorg.fonorgcod", "fonorg.fonorgcod")
262
+ .where("fonmemorg.memorgid", "=", memOrgId)
263
+ .orderBy("fonmemorg.fonmemorgdatdeb desc"));
134
264
  }
135
265
  function mandatsMembreOrganisme(senMat) {
136
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("memorg").leftJoin("org", "memorg.orgcod", "org.orgcod").leftJoin("typorg", "org.typorgcod", "typorg.typorgcod").leftJoin("designorg", "memorg.designcod", "designorg.designcod").where("memorg.senmat", "=", senMat).select(function (_ref15) {
137
- var ref = _ref15.ref;
138
- return [fonctionsMembreOrganisme(ref("memorg.memorgid")).as("fonctions")];
139
- }).orderBy("memorg.memorgdatdeb desc"));
266
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
267
+ .selectFrom("memorg")
268
+ .leftJoin("org", "memorg.orgcod", "org.orgcod")
269
+ .leftJoin("typorg", "org.typorgcod", "typorg.typorgcod")
270
+ .leftJoin("designorg", "memorg.designcod", "designorg.designcod")
271
+ .where("memorg.senmat", "=", senMat)
272
+ .select(({ ref }) => [
273
+ fonctionsMembreOrganisme(ref("memorg.memorgid")).as("fonctions"),
274
+ ])
275
+ .orderBy("memorg.memorgdatdeb desc"));
140
276
  }
141
277
  function mandatsMinistre(senMat) {
142
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("minind").where("minind.senmat", "=", senMat).orderBy("minind.mindatdeb desc"));
278
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
279
+ .selectFrom("minind")
280
+ .where("minind.senmat", "=", senMat)
281
+ .orderBy("minind.mindatdeb desc"));
143
282
  }
144
283
  function contacts(senMat) {
145
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("poicon").leftJoin("adresse", "poicon.poiconid", "adresse.poiconid").leftJoin("mel", "poicon.poiconid", "mel.poiconid").leftJoin("telephone", "poicon.poiconid", "telephone.poiconid").where("poicon.senmat", "=", senMat).orderBy("poicon.poiconnumtri asc"));
284
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
285
+ .selectFrom("poicon")
286
+ .leftJoin("adresse", "poicon.poiconid", "adresse.poiconid")
287
+ .leftJoin("mel", "poicon.poiconid", "mel.poiconid")
288
+ .leftJoin("telephone", "poicon.poiconid", "telephone.poiconid")
289
+ .where("poicon.senmat", "=", senMat)
290
+ .orderBy("poicon.poiconnumtri asc"));
146
291
  }
147
292
  function urls(senMat) {
148
- return (0, _postgres.jsonArrayFrom)(_databases.dbSens.selectFrom("senurl").where("senurl.senmat", "=", senMat).select(["senurl.typurlcod as code_url", "senurl.senurlurl as url"]).orderBy("senurl.senurlnumtri asc"));
149
- }
150
- var findAllQuery = _databases.dbSens.selectFrom("sen").leftJoin("etasen", "sen.etasencod", "etasen.etasencod").leftJoin("pcs", "sen.pcscod", "pcs.pcscod").leftJoin("pcs42", "pcs.pcs42cod", "pcs42.pcs42cod").leftJoin("pcs24", "pcs42.pcs24cod", "pcs24.pcs24cod").leftJoin("pcs8", "pcs24.pcs8cod", "pcs8.pcs8cod").leftJoin("grppol", "sen.sengrppolcodcou", "grppol.grppolcod").leftJoin("com", "sen.sencomcodcou", "com.orgcod").select(function (_ref16) {
151
- var ref = _ref16.ref;
152
- return ["sen.senmat as matricule", "sen.quacod as qualite", "sen.sennomuse as nom_usuel", "sen.senprenomuse as prenom_usuel", "sen.etasencod as etat", (0, _util.toDateString)(ref("sen.sendatnai")).as("date_naissance"), (0, _util.toDateString)(ref("sen.sendatdec")).as("date_deces"), "sen.sengrppolcodcou as code_groupe_politique", "sen.sengrppolliccou as groupe_politique", "sen.sencomcodcou as code_commission_permanente", "com.comlilmin as commission_permanente", "sen.sencirnumcou as code_circonscription", "sen.sencircou as circonscription", "sen.senburliccou as fonction_bureau_senat", "sen.senema as courrier_electronique", "pcs.pcslil as PCS_INSEE", "pcs42.pcs42lib as PCS_INSEE_42", "pcs24.pcs24lib as PCS_INSEE_24", "pcs8.pcs8lil as PCS_INSEE_8", "sen.sendespro as description_profession", "sen.sennumsie as siege", "sen.sendaiurl as url_hatvp"];
153
- }).select(function (_ref17) {
154
- var ref = _ref17.ref;
155
- return [urls(ref("sen.senmat")).as("urls"), mandatsEluSenateur(ref("sen.senmat")).as("mandats_senateur"), mandatsMembreCommission(ref("sen.senmat")).as("commissions"), mandatsMembreDelegation(ref("sen.senmat")).as("delegations"), mandatsMembreGroupePolitique(ref("sen.senmat")).as("groupes"), fonctionsBureau(ref("sen.senmat")).as("fonctions_bureau")];
156
- });
157
- var findAllCirconscriptionsQuery = _databases.dbSens.selectFrom("dpt").leftJoin("reg", "dpt.regcod", "reg.regcod").select(function (_ref18) {
158
- var ref = _ref18.ref;
159
- return ["dpt.dptnum as identifiant", "dpt.dptcod as code", "dpt.dptlib as libelle_departement", "dpt.dptart as article", "reg.reglib as libelle_region", "dpt.temvalcod as etat", (0, _util.toDateString)(ref("dpt.dptdatdeb")).as("date_debut"), (0, _util.toDateString)(ref("dpt.dptdatfin")).as("date_fin"), "dpt.dptnbrsen as nombre_senateurs", "dpt.dpturlcmp as url"];
160
- });
161
- var findAllOrganismesQuery = _databases.dbSens.selectFrom(function (eb) {
162
- return eb.selectFrom("com").select(["orgcod", "evelic", "evelib", "evelil", "typorgcod", "orgurlsim", "orgdatcre", "orgdatfin", "temvalcod"]).union(eb.selectFrom("delega").select(["orgcod", "evelic", "evelib", "evelil", "typorgcod", "orgurlsim", "orgdatcre", "orgdatfin", "temvalcod"])).union(eb.selectFrom("grppol").select(["grppolcod as orgcod", "grppolliccou as evelic", "grppollibcou as evelib", "grppollilcou as evelil", "typorgcod", "grppolurlsim as orgurlsim", "grppoldatcre as orgdatcre", "grppoldatfin as orgdatfin", "temvalcod"])).union(eb.selectFrom("grpsenami").select(["orgcod", "evelic", "evelib", "evelil", "typorgcod", "orgurlsim", "orgdatcre", "orgdatfin", "temvalcod"])).union(eb.selectFrom("org").select(["orgcod", "evelic", "evelib", "evelil", "typorgcod", "orgurlsim", "orgdatcre", "orgdatfin", "temvalcod"])).as("all_organismes");
163
- }).leftJoin("typorg", "all_organismes.typorgcod", "typorg.typorgcod").select(function (_ref19) {
164
- var ref = _ref19.ref,
165
- val = _ref19.val;
166
- return ["all_organismes.orgcod as code", "all_organismes.evelic as libelle_court", "all_organismes.evelib as libelle", (0, _util.rtrim)(ref("all_organismes.evelil")).as("libelle_long"), "all_organismes.typorgcod as type_code", (0, _util.rtrim)(ref("typorg.typorglib")).as("type_libelle"), (0, _util.concat)(val("https://www.senat.fr"), ref("all_organismes.orgurlsim")).as("url"), (0, _util.toDateString)(ref("all_organismes.orgdatcre")).as("date_debut"), (0, _util.toDateString)(ref("all_organismes.orgdatfin")).as("date_fin"), "all_organismes.temvalcod as etat"];
167
- });
293
+ return (0, postgres_1.jsonArrayFrom)(databases_1.dbSens
294
+ .selectFrom("senurl")
295
+ .where("senurl.senmat", "=", senMat)
296
+ .select(["senurl.typurlcod as code_url", "senurl.senurlurl as url"])
297
+ .orderBy("senurl.senurlnumtri asc"));
298
+ }
299
+ const findAllQuery = databases_1.dbSens
300
+ .selectFrom("sen")
301
+ .leftJoin("etasen", "sen.etasencod", "etasen.etasencod")
302
+ .leftJoin("pcs", "sen.pcscod", "pcs.pcscod")
303
+ .leftJoin("pcs42", "pcs.pcs42cod", "pcs42.pcs42cod")
304
+ .leftJoin("pcs24", "pcs42.pcs24cod", "pcs24.pcs24cod")
305
+ .leftJoin("pcs8", "pcs24.pcs8cod", "pcs8.pcs8cod")
306
+ .leftJoin("grppol", "sen.sengrppolcodcou", "grppol.grppolcod")
307
+ .leftJoin("com", "sen.sencomcodcou", "com.orgcod")
308
+ .select(({ ref }) => [
309
+ "sen.senmat as matricule",
310
+ "sen.quacod as qualite",
311
+ "sen.sennomuse as nom_usuel",
312
+ "sen.senprenomuse as prenom_usuel",
313
+ "sen.etasencod as etat",
314
+ (0, util_1.toDateString)(ref("sen.sendatnai")).as("date_naissance"),
315
+ (0, util_1.toDateString)(ref("sen.sendatdec")).as("date_deces"),
316
+ "sen.sengrppolcodcou as code_groupe_politique",
317
+ "sen.sengrppolliccou as groupe_politique",
318
+ "sen.sencomcodcou as code_commission_permanente",
319
+ "com.comlilmin as commission_permanente",
320
+ "sen.sencirnumcou as code_circonscription",
321
+ "sen.sencircou as circonscription",
322
+ "sen.senburliccou as fonction_bureau_senat",
323
+ "sen.senema as courrier_electronique",
324
+ "pcs.pcslil as PCS_INSEE",
325
+ "pcs42.pcs42lib as PCS_INSEE_42",
326
+ "pcs24.pcs24lib as PCS_INSEE_24",
327
+ "pcs8.pcs8lil as PCS_INSEE_8",
328
+ "sen.sendespro as description_profession",
329
+ "sen.sennumsie as siege",
330
+ "sen.sendaiurl as url_hatvp",
331
+ ])
332
+ .select(({ ref }) => [
333
+ urls(ref("sen.senmat")).as("urls"),
334
+ mandatsEluSenateur(ref("sen.senmat")).as("mandats_senateur"),
335
+ mandatsMembreCommission(ref("sen.senmat")).as("commissions"),
336
+ mandatsMembreDelegation(ref("sen.senmat")).as("delegations"),
337
+ mandatsMembreGroupePolitique(ref("sen.senmat")).as("groupes"),
338
+ fonctionsBureau(ref("sen.senmat")).as("fonctions_bureau"),
339
+ ]);
340
+ const findAllCirconscriptionsQuery = databases_1.dbSens
341
+ .selectFrom("dpt")
342
+ .leftJoin("reg", "dpt.regcod", "reg.regcod")
343
+ .select(({ ref }) => [
344
+ "dpt.dptnum as identifiant",
345
+ "dpt.dptcod as code",
346
+ "dpt.dptlib as libelle_departement",
347
+ "dpt.dptart as article",
348
+ "reg.reglib as libelle_region",
349
+ "dpt.temvalcod as etat",
350
+ (0, util_1.toDateString)(ref("dpt.dptdatdeb")).as("date_debut"),
351
+ (0, util_1.toDateString)(ref("dpt.dptdatfin")).as("date_fin"),
352
+ "dpt.dptnbrsen as nombre_senateurs",
353
+ "dpt.dpturlcmp as url",
354
+ ]);
355
+ const findAllOrganismesQuery = databases_1.dbSens
356
+ .selectFrom((eb) => eb
357
+ .selectFrom("com")
358
+ .select([
359
+ "orgcod",
360
+ "evelic",
361
+ "evelib",
362
+ "evelil",
363
+ "typorgcod",
364
+ "orgurlsim",
365
+ "orgdatcre",
366
+ "orgdatfin",
367
+ "temvalcod",
368
+ ])
369
+ .union(eb
370
+ .selectFrom("delega")
371
+ .select([
372
+ "orgcod",
373
+ "evelic",
374
+ "evelib",
375
+ "evelil",
376
+ "typorgcod",
377
+ "orgurlsim",
378
+ "orgdatcre",
379
+ "orgdatfin",
380
+ "temvalcod",
381
+ ]))
382
+ .union(eb
383
+ .selectFrom("grppol")
384
+ .select([
385
+ "grppolcod as orgcod",
386
+ "grppolliccou as evelic",
387
+ "grppollibcou as evelib",
388
+ "grppollilcou as evelil",
389
+ "typorgcod",
390
+ "grppolurlsim as orgurlsim",
391
+ "grppoldatcre as orgdatcre",
392
+ "grppoldatfin as orgdatfin",
393
+ "temvalcod",
394
+ ]))
395
+ .union(eb
396
+ .selectFrom("grpsenami")
397
+ .select([
398
+ "orgcod",
399
+ "evelic",
400
+ "evelib",
401
+ "evelil",
402
+ "typorgcod",
403
+ "orgurlsim",
404
+ "orgdatcre",
405
+ "orgdatfin",
406
+ "temvalcod",
407
+ ]))
408
+ .union(eb
409
+ .selectFrom("org")
410
+ .select([
411
+ "orgcod",
412
+ "evelic",
413
+ "evelib",
414
+ "evelil",
415
+ "typorgcod",
416
+ "orgurlsim",
417
+ "orgdatcre",
418
+ "orgdatfin",
419
+ "temvalcod",
420
+ ]))
421
+ .as("all_organismes"))
422
+ .leftJoin("typorg", "all_organismes.typorgcod", "typorg.typorgcod")
423
+ .select(({ ref, val }) => [
424
+ "all_organismes.orgcod as code",
425
+ "all_organismes.evelic as libelle_court",
426
+ "all_organismes.evelib as libelle",
427
+ (0, util_1.rtrim)(ref("all_organismes.evelil")).as("libelle_long"),
428
+ "all_organismes.typorgcod as type_code",
429
+ (0, util_1.rtrim)(ref("typorg.typorglib")).as("type_libelle"),
430
+ (0, util_1.concat)(val("https://www.senat.fr"), ref("all_organismes.orgurlsim")).as("url"),
431
+ (0, util_1.toDateString)(ref("all_organismes.orgdatcre")).as("date_debut"),
432
+ (0, util_1.toDateString)(ref("all_organismes.orgdatfin")).as("date_fin"),
433
+ "all_organismes.temvalcod as etat",
434
+ ]);
168
435
  function findAll() {
169
- return findAllQuery.stream();
436
+ return findAllQuery.stream();
170
437
  }
171
438
  function findAllCirconscriptions() {
172
- return findAllCirconscriptionsQuery.stream();
439
+ return findAllCirconscriptionsQuery.stream();
173
440
  }
174
441
  function findAllOrganismes() {
175
- return findAllOrganismesQuery.stream();
442
+ return findAllOrganismesQuery.stream();
176
443
  }
177
444
  function findActif() {
178
- return _databases.dbSens.selectFrom("sen").where("etasencod", "=", "ACTIF").select(["senmat", "sennomuse", "senprenomuse"]).stream();
445
+ return databases_1.dbSens
446
+ .selectFrom("sen")
447
+ .where("etasencod", "=", "ACTIF")
448
+ .select(["senmat", "sennomuse", "senprenomuse"])
449
+ .stream();
179
450
  }
180
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcG9zdGdyZXMiLCJyZXF1aXJlIiwiX2RhdGFiYXNlcyIsIl91dGlsIiwiY2lyY29uc2NyaXB0aW9uIiwiZHB0TnVtIiwianNvbk9iamVjdEZyb20iLCJkYlNlbnMiLCJzZWxlY3RGcm9tIiwibGVmdEpvaW4iLCJ3aGVyZSIsInNlbGVjdCIsInRleHRlcyIsImFjdElkIiwianNvbkFycmF5RnJvbSIsIl9yZWYiLCJyZWYiLCJydHJpbSIsImFzIiwiZGVsZWdhdGlvbnMiLCJvcmRlckJ5IiwiYWN0aXZpdGVzIiwic2VuTWF0IiwiX3JlZjIiLCJhY3Rpdml0ZXNQZXJzbyIsImZvbmN0aW9uc0J1cmVhdSIsIl9yZWYzIiwidG9EYXRlU3RyaW5nIiwibWFuZGF0c0VsdUNvbnNlaWxsZXJHZW5lcmFsIiwiX3JlZjQiLCIkbm90TnVsbCIsIm1hbmRhdHNFbHVEZXB1dGUiLCJfcmVmNSIsIm1hbmRhdHNFbHVEaXZlcnMiLCJtYW5kYXRzRWx1RXVyb3BlZW4iLCJtYW5kYXRzRWx1Q29uc2VpbGxlclJlZ2lvbmFsIiwibWFuZGF0c0VsdVNlbmF0ZXVyIiwiX3JlZjYiLCJtYW5kYXRzRWx1VGVycml0b3JpYWwiLCJtYW5kYXRzRWx1Q29uc2VpbGxlck11bmljaXBhbCIsImZvbmN0aW9uc01lbWJyZUNvbW1pc3Npb24iLCJtZW1Db21JZCIsIl9yZWY3IiwibWFuZGF0c01lbWJyZUNvbW1pc3Npb24iLCJfcmVmOCIsIl9yZWY5IiwiZm9uY3Rpb25zTWVtYnJlRGVsZWdhdGlvbiIsIm1lbURlbGVnYUlkIiwiX3JlZjAiLCJtYW5kYXRzTWVtYnJlRGVsZWdhdGlvbiIsIl9yZWYxIiwiX3JlZjEwIiwibWFuZGF0c01lbWJyZUV4dHJhUGFybGVtZW50YWlyZSIsImZvbmN0aW9uc01lbWJyZUdyb3VwZVBvbGl0aXF1ZSIsIm1lbUdycFBvbElkIiwiX3JlZjExIiwibWFuZGF0c01lbWJyZUdyb3VwZVBvbGl0aXF1ZSIsIl9yZWYxMiIsIl9yZWYxMyIsImZvbmN0aW9uc01lbWJyZUdyb3VwZVNlbmF0b3JpYWwiLCJtZW1HcnBTZW5JZCIsIm1hbmRhdHNNZW1icmVHcm91cGVTZW5hdG9yaWFsIiwiX3JlZjE0IiwiZm9uY3Rpb25zTWVtYnJlT3JnYW5pc21lIiwibWVtT3JnSWQiLCJtYW5kYXRzTWVtYnJlT3JnYW5pc21lIiwiX3JlZjE1IiwibWFuZGF0c01pbmlzdHJlIiwiY29udGFjdHMiLCJ1cmxzIiwiZmluZEFsbFF1ZXJ5IiwiX3JlZjE2IiwiX3JlZjE3IiwiZmluZEFsbENpcmNvbnNjcmlwdGlvbnNRdWVyeSIsIl9yZWYxOCIsImZpbmRBbGxPcmdhbmlzbWVzUXVlcnkiLCJlYiIsInVuaW9uIiwiX3JlZjE5IiwidmFsIiwiY29uY2F0IiwiZmluZEFsbCIsInN0cmVhbSIsImZpbmRBbGxDaXJjb25zY3JpcHRpb25zIiwiZmluZEFsbE9yZ2FuaXNtZXMiLCJmaW5kQWN0aWYiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvc2Vucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFeHByZXNzaW9uLCBJbmZlclJlc3VsdCB9IGZyb20gXCJreXNlbHlcIlxuaW1wb3J0IHsganNvbkFycmF5RnJvbSwganNvbk9iamVjdEZyb20gfSBmcm9tIFwia3lzZWx5L2hlbHBlcnMvcG9zdGdyZXNcIlxuaW1wb3J0IHsgZGJTZW5zIH0gZnJvbSBcIi4uL2RhdGFiYXNlc1wiXG5pbXBvcnQgeyBjb25jYXQsIHJ0cmltLCB0b0RhdGVTdHJpbmcgfSBmcm9tIFwiLi91dGlsXCJcblxuZnVuY3Rpb24gY2lyY29uc2NyaXB0aW9uIChkcHROdW06IEV4cHJlc3Npb248c3RyaW5nPikge1xuICByZXR1cm4ganNvbk9iamVjdEZyb20oXG4gICAgZGJTZW5zLnNlbGVjdEZyb20oXCJkcHRcIilcbiAgICAgIC5sZWZ0Sm9pbihcInJlZ1wiLCBcImRwdC5yZWdjb2RcIiwgXCJyZWcucmVnY29kXCIpXG4gICAgICAud2hlcmUoXCJkcHQuZHB0bnVtXCIsIFwiPVwiLCBkcHROdW0pXG4gICAgICAuc2VsZWN0KFtcbiAgICAgICAgXCJkcHQuZHB0Y29kIGFzIGNvZGVcIixcbiAgICAgICAgXCJkcHQuZHB0bGliIGFzIGxpYmVsbGVfZGVwYXJ0ZW1lbnRcIixcbiAgICAgICAgXCJyZWcucmVnbGliIGFzIGxpYmVsbGVfcmVnaW9uXCIsXG4gICAgICBdKSxcbiAgKVxufVxuXG5mdW5jdGlvbiB0ZXh0ZXMgKGFjdElkOiBFeHByZXNzaW9uPHN0cmluZz4pIHtcbiAgcmV0dXJuIGpzb25BcnJheUZyb20oXG4gICAgZGJTZW5zLnNlbGVjdEZyb20oXCJhY3Rpdml0ZV9sb2lcIilcbiAgICAgIC53aGVyZShcImFjdGlkXCIsIFwiPVwiLCBhY3RJZClcbiAgICAgIC5zZWxlY3QoKHsgcmVmIH0pID0+IFtcbiAgICAgICAgcnRyaW0ocmVmKFwibG9pY29kXCIpKS5hcyhcImxvaWNvZFwiKSxcbiAgICAgIF0pLFxuICApXG59XG5cbmZ1bmN0aW9uIGRlbGVnYXRpb25zIChhY3RJZDogRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gIHJldHVybiBqc29uQXJyYXlGcm9tKFxuICAgIGRiU2Vucy5zZWxlY3RGcm9tKFwiYWN0aXZpdGVfZGVsZWdhdGlvblwiKVxuICAgICAgLndoZXJlKFwiYWN0aWRcIiwgXCI9XCIsIGFjdElkKVxuICAgICAgLm9yZGVyQnkoXCJkZWxlZ2lkeCBhc2NcIiksXG4gIClcbn1cblxuZnVuY3Rpb24gYWN0aXZpdGVzIChzZW5NYXQ6IEV4cHJlc3Npb248c3RyaW5nPikge1xuICByZXR1cm4ganNvbkFycmF5RnJvbShcbiAgICBkYlNlbnMuc2VsZWN0RnJvbShcImFjdGl2aXRlXCIpXG4gICAgICAubGVmdEpvaW4oXCJhY3Rpdml0ZV9wYXJ0aWNpcGFudFwiLCBcImFjdGl2aXRlLmFjdGlkXCIsIFwiYWN0aXZpdGVfcGFydGljaXBhbnQuYWN0aWRcIilcbiAgICAgIC5sZWZ0Sm9pbihcInR5cGVfYWN0aXZpdGVcIiwgXCJhY3Rpdml0ZS50eXBhY3Rjb2RcIiwgXCJ0eXBlX2FjdGl2aXRlLnR5cGFjdGNvZFwiKVxuICAgICAgLmxlZnRKb2luKFwiY2F0ZWdvcmllX2FjdGl2aXRlXCIsIFwiYWN0aXZpdGUuY2F0YWN0Y29kXCIsIFwiY2F0ZWdvcmllX2FjdGl2aXRlLmNhdGFjdGNvZFwiKVxuICAgICAgLndoZXJlKFwiYWN0aXZpdGVfcGFydGljaXBhbnQuc2VubWF0XCIsIFwiPVwiLCBzZW5NYXQpXG4gICAgICAuc2VsZWN0KCh7IHJlZiB9KSA9PiBbXG4gICAgICAgIGRlbGVnYXRpb25zKHJlZihcImFjdGl2aXRlLmFjdGlkXCIpKS5hcyhcImRlbGVnYXRpb25zXCIpLFxuICAgICAgICB0ZXh0ZXMocmVmKFwiYWN0aXZpdGUuYWN0aWRcIikpLmFzKFwidGV4dGVzXCIpLFxuICAgICAgXSlcbiAgICAgIC5vcmRlckJ5KFwiYWN0aXZpdGUuZGF0ZGViIGRlc2NcIiksXG4gIClcbn1cblxuZnVuY3Rpb24gYWN0aXZpdGVzUGVyc28gKHNlbk1hdDogRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gIHJldHVybiBqc29uQXJyYXlGcm9tKFxuICAgIGRiU2Vucy5zZWxlY3RGcm9tKFwiYWN0aXZpdGVfc2VuYXRldXJcIilcbiAgICAgIC5sZWZ0Sm9pbihcInR5cGVfYWN0aXZpdGVfc2VuYXRldXJcIiwgXCJhY3Rpdml0ZV9zZW5hdGV1ci50eXBhY3RzZW5jb2RcIiwgXCJ0eXBlX2FjdGl2aXRlX3NlbmF0ZXVyLnR5cGFjdHNlbmNvZFwiKVxuICAgICAgLndoZXJlKFwiYWN0aXZpdGVfc2VuYXRldXIuc2VubWF0XCIsIFwiPVwiLCBzZW5NYXQpXG4gICAgICAub3JkZXJCeShcImFjdGl2aXRlX3NlbmF0ZXVyLmRhdGRlYiBkZXNjXCIpLFxuICApXG59XG5cbmZ1bmN0aW9uIGZvbmN0aW9uc0J1cmVhdSAoc2VuTWF0OiBFeHByZXNzaW9uPHN0cmluZz4pIHtcbiAgcmV0dXJuIGpzb25BcnJheUZyb20oXG4gICAgZGJTZW5zLnNlbGVjdEZyb20oXCJzZW5idXJcIilcbiAgICAgIC5sZWZ0Sm9pbihcImJ1clwiLCBcInNlbmJ1ci5idXJjb2RcIiwgXCJidXIuYnVyY29kXCIpXG4gICAgICAud2hlcmUoXCJzZW5idXIuc2VubWF0XCIsIFwiPVwiLCBzZW5NYXQpXG4gICAgICAuc2VsZWN0KCh7IHJlZiB9KSA9PiBbXG4gICAgICAgIHRvRGF0ZVN0cmluZyhyZWYoXCJzZW5idXIuc2VuYnVyZGF0ZGViXCIpKS5hcyhcImRhdGVfZGVidXRcIiksXG4gICAgICAgIHRvRGF0ZVN0cmluZyhyZWYoXCJzZW5idXIuc2VuYnVyZGF0ZmluXCIpKS5hcyhcImRhdGVfZmluXCIpLFxuICAgICAgICBcImJ1ci5idXJsaWIgYXMgbGliZWxsZVwiLFxuICAgICAgXSlcbiAgICAgIC5vcmRlckJ5KFwic2VuYnVyLnNlbmJ1cmRhdGRlYiBkZXNjXCIpLFxuICApXG59XG5cbmZ1bmN0aW9uIG1hbmRhdHNFbHVDb25zZWlsbGVyR2VuZXJhbCAoc2VuTWF0OiBFeHByZXNzaW9uPHN0cmluZz4pIHtcbiAgcmV0dXJuIGpzb25BcnJheUZyb20oXG4gICAgZGJTZW5zLnNlbGVjdEZyb20oXCJlbHVjYW5cIilcbiAgICAgIC5sZWZ0Sm9pbihcInR5cG1hblwiLCBcImVsdWNhbi50eXBtYW5jb2RcIiwgXCJ0eXBtYW4udHlwbWFuY29kXCIpXG4gICAgICAud2hlcmUoXCJlbHVjYW4uc2VubWF0XCIsIFwiPVwiLCBzZW5NYXQpXG4gICAgICAuc2VsZWN0KCh7IHJlZiB9KSA9PiBbXG4gICAgICAgIGNpcmNvbnNjcmlwdGlvbihyZWYoXCJlbHVjYW4uZHB0bnVtXCIpLiRub3ROdWxsKCkpLmFzKFwiY2lyY29uc2NyaXB0aW9uXCIpLFxuICAgICAgXSlcbiAgICAgIC5vcmRlckJ5KFwiZWx1Y2FuLmVsdWRhdGRlYiBkZXNjXCIpLFxuICApXG59XG5cbmZ1bmN0aW9uIG1hbmRhdHNFbHVEZXB1dGUgKHNlbk1hdDogRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gIHJldHVybiBqc29uQXJyYXlGcm9tKFxuICAgIGRiU2Vucy5zZWxlY3RGcm9tKFwiZWx1ZGVwXCIpXG4gICAgICAubGVmdEpvaW4oXCJ0eXBtYW5cIiwgXCJlbHVkZXAudHlwbWFuY29kXCIsIFwidHlwbWFuLnR5cG1hbmNvZFwiKVxuICAgICAgLndoZXJlKFwiZWx1ZGVwLnNlbm1hdFwiLCBcIj1cIiwgc2VuTWF0KVxuICAgICAgLnNlbGVjdCgoeyByZWYgfSkgPT4gW1xuICAgICAgICBjaXJjb25zY3JpcHRpb24ocmVmKFwiZWx1ZGVwLmNpcmNvXCIpLiRub3ROdWxsKCkpLmFzKFwiY2lyY29uc2NyaXB0aW9uXCIpLFxuICAgICAgXSlcbiAgICAgIC5vcmRlckJ5KFwiZWx1ZGVwLmVsdWRhdGRlYiBkZXNjXCIpLFxuICApXG59XG5cbmZ1bmN0aW9uIG1hbmRhdHNFbHVEaXZlcnMgKHNlbk1hdDogRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gIHJldHVybiBqc29uQXJyYXlGcm9tKFxuICAgIGRiU2Vucy5zZWxlY3RGcm9tKFwiZWx1ZGl2XCIpXG4gICAgICAubGVmdEpvaW4oXCJ0eXBtYW5cIiwgXCJlbHVkaXYudHlwbWFuY29kXCIsIFwidHlwbWFuLnR5cG1hbmNvZFwiKVxuICAgICAgLndoZXJlKFwiZWx1ZGl2LnNlbm1hdFwiLCBcIj1cIiwgc2VuTWF0KVxuICAgICAgLm9yZGVyQnkoXCJlbHVkaXYuZWx1ZGF0ZGViIGRlc2NcIiksXG4gIClcbn1cblxuZnVuY3Rpb24gbWFuZGF0c0VsdUV1cm9wZWVuIChzZW5NYXQ6IEV4cHJlc3Npb248c3RyaW5nPikge1xuICByZXR1cm4ganNvbkFycmF5RnJvbShcbiAgICBkYlNlbnMuc2VsZWN0RnJvbShcImVsdWV1clwiKVxuICAgICAgLmxlZnRKb2luKFwibmF0aW9uXCIsIFwiZWx1ZXVyLm5hdGlvbmNvZFwiLCBcIm5hdGlvbi5uYXRpb25jb2RcIilcbiAgICAgIC5sZWZ0Sm9pbihcInR5cG1hblwiLCBcImVsdWV1ci50eXBtYW5jb2RcIiwgXCJ0eXBtYW4udHlwbWFuY29kXCIpXG4gICAgICAud2hlcmUoXCJlbHVldXIuc2VubWF0XCIsIFwiPVwiLCBzZW5NYXQpXG4gICAgICAub3JkZXJCeShcImVsdWV1ci5lbHVkYXRkZWIgZGVzY1wiKSxcbiAgKVxufVxuXG5mdW5jdGlvbiBtYW5kYXRzRWx1Q29uc2VpbGxlclJlZ2lvbmFsIChzZW5NYXQ6IEV4cHJlc3Npb248c3RyaW5nPikge1xuICByZXR1cm4ganNvbkFycmF5RnJvbShcbiAgICBkYlNlbnMuc2VsZWN0RnJvbShcImVsdXJlZ1wiKVxuICAgICAgLmxlZnRKb2luKFwicmVnXCIsIFwiZWx1cmVnLnJlZ2NvZFwiLCBcInJlZy5yZWdjb2RcIilcbiAgICAgIC5sZWZ0Sm9pbihcInR5cG1hblwiLCBcImVsdXJlZy50eXBtYW5jb2RcIiwgXCJ0eXBtYW4udHlwbWFuY29kXCIpXG4gICAgICAud2hlcmUoXCJlbHVyZWcuc2VubWF0XCIsIFwiPVwiLCBzZW5NYXQpXG4gICAgICAub3JkZXJCeShcImVsdXJlZy5lbHVkYXRkZWIgZGVzY1wiKSxcbiAgKVxufVxuXG5mdW5jdGlvbiBtYW5kYXRzRWx1U2VuYXRldXIgKHNlbk1hdDogRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gIHJldHVybiBqc29uQXJyYXlGcm9tKFxuICAgIGRiU2Vucy5zZWxlY3RGcm9tKFwiZWx1c2VuXCIpXG4gICAgICAubGVmdEpvaW4oXCJldGFkZWJtYW5cIiwgXCJlbHVzZW4uZXRhZGVibWFuY29kXCIsIFwiZXRhZGVibWFuLmV0YWRlYm1hbmNvZFwiKVxuICAgICAgLmxlZnRKb2luKFwiZXRhZmlubWFuXCIsIFwiZWx1c2VuLmV0YWZpbm1hbmNvZFwiLCBcImV0YWZpbm1hbi5ldGFmaW5tYW5jb2RcIilcbiAgICAgIC5sZWZ0Sm9pbihcInR5cG1hblwiLCBcImVsdXNlbi50eXBtYW5jb2RcIiwgXCJ0eXBtYW4udHlwbWFuY29kXCIpXG4gICAgICAud2hlcmUoXCJlbHVzZW4uc2VubWF0XCIsIFwiPVwiLCBzZW5NYXQpXG4gICAgICAuc2VsZWN0KCh7IHJlZiB9KSA9PiBbXG4gICAgICAgIFwiZWx1c2VuLmRwdG51bSBhcyBjb2RlX2NpcmNvbnNjcmlwdGlvblwiLFxuICAgICAgICB0b0RhdGVTdHJpbmcocmVmKFwiZWx1c2VuLmVsdWRhdGRlYlwiKSkuYXMoXCJkYXRlX2RlYnV0XCIpLFxuICAgICAgICB0b0RhdGVTdHJpbmcocmVmKFwiZWx1c2VuLmVsdWRhdGZpblwiKSkuYXMoXCJkYXRlX2ZpblwiKSxcbiAgICAgICAgXCJldGFkZWJtYW4uZXRhZGVibWFubGliIGFzIGV0YXRfZGVidXRcIixcbiAgICAgICAgXCJldGFmaW5tYW4uZXRhZmlubWFuIGFzIGV0YXRfZmluXCIsXG4gICAgICBdKVxuICAgICAgLm9yZGVyQnkoXCJlbHVzZW4uZWx1ZGF0ZGViIGRlc2NcIiksXG4gIClcbn1cblxuZnVuY3Rpb24gbWFuZGF0c0VsdVRlcnJpdG9yaWFsIChzZW5NYXQ6IEV4cHJlc3Npb248c3RyaW5nPikge1xuICByZXR1cm4ganNvbkFycmF5RnJvbShcbiAgICBkYlNlbnMuc2VsZWN0RnJvbShcImVsdXRlclwiKVxuICAgICAgLmxlZnRKb2luKFwiYXNzdGVyXCIsIFwiZWx1dGVyLmFzc3RlcmNvZFwiLCBcImFzc3Rlci5hc3N0ZXJjb2RcIilcbiAgICAgIC5sZWZ0Sm9pbihcInR5cG1hblwiLCBcImVsdXRlci50eXBtYW5jb2RcIiwgXCJ0eXBtYW4udHlwbWFuY29kXCIpXG4gICAgICAud2hlcmUoXCJlbHV0ZXIuc2VubWF0XCIsIFwiPVwiLCBzZW5NYXQpXG4gICAgICAub3JkZXJCeShcImVsdXRlci5lbHVkYXRkZWIgZGVzY1wiKSxcbiAgKVxufVxuXG5mdW5jdGlvbiBtYW5kYXRzRWx1Q29uc2VpbGxlck11bmljaXBhbCAoc2VuTWF0OiBFeHByZXNzaW9uPHN0cmluZz4pIHtcbiAgcmV0dXJuIGpzb25BcnJheUZyb20oXG4gICAgZGJTZW5zLnNlbGVjdEZyb20oXCJlbHV2aWxcIilcbiAgICAgIC5sZWZ0Sm9pbihcInR5cG1hblwiLCBcImVsdXZpbC50eXBtYW5jb2RcIiwgXCJ0eXBtYW4udHlwbWFuY29kXCIpXG4gICAgICAud2hlcmUoXCJlbHV2aWwuc2VubWF0XCIsIFwiPVwiLCBzZW5NYXQpXG4gICAgICAub3JkZXJCeShcImVsdXZpbC5lbHVkYXRkZWIgZGVzY1wiKSxcbiAgKVxufVxuXG5mdW5jdGlvbiBmb25jdGlvbnNNZW1icmVDb21taXNzaW9uIChtZW1Db21JZDogRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gIHJldHVybiBqc29uQXJyYXlGcm9tKFxuICAgIGRiU2Vucy5zZWxlY3RGcm9tKFwiZm9ubWVtY29tXCIpXG4gICAgICAubGVmdEpvaW4oXCJmb25jb21cIiwgXCJmb25tZW1jb20uZm9uY29tY29kXCIsIFwiZm9uY29tLmZvbmNvbWNvZFwiKVxuICAgICAgLndoZXJlKFwiZm9ubWVtY29tLm1lbWNvbWlkXCIsIFwiPVwiLCBtZW1Db21JZClcbiAgICAgIC5zZWxlY3QoKHsgcmVmIH0pID0+IFtcbiAgICAgICAgdG9EYXRlU3RyaW5nKHJlZihcImZvbm1lbWNvbS5mb25tZW1jb21kYXRkZWJcIikpLmFzKFwiZGF0ZV9kZWJ1dFwiKSxcbiAgICAgICAgdG9EYXRlU3RyaW5nKHJlZihcImZvbm1lbWNvbS5mb25tZW1jb21kYXRmaW5cIikpLmFzKFwiZGF0ZV9maW5cIiksXG4gICAgICAgIFwiZm9uY29tLmZvbmNvbWxpYiBhcyBsaWJlbGxlXCIsXG4gICAgICBdKVxuICAgICAgLm9yZGVyQnkoXCJmb25tZW1jb20uZm9ubWVtY29tZGF0ZGViIGRlc2NcIiksXG4gIClcbn1cblxuZnVuY3Rpb24gbWFuZGF0c01lbWJyZUNvbW1pc3Npb24gKHNlbk1hdDogRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gIHJldHVybiBqc29uQXJyYXlGcm9tKFxuICAgIGRiU2Vucy5zZWxlY3RGcm9tKFwibWVtY29tXCIpXG4gICAgICAubGVmdEpvaW4oXCJjb21cIiwgXCJtZW1jb20ub3JnY29kXCIsIFwiY29tLm9yZ2NvZFwiKVxuICAgICAgLmxlZnRKb2luKFwidHlwb3JnXCIsIFwiY29tLnR5cG9yZ2NvZFwiLCBcInR5cG9yZy50eXBvcmdjb2RcIilcbiAgICAgIC53aGVyZShcIm1lbWNvbS5zZW5tYXRcIiwgXCI9XCIsIHNlbk1hdClcbiAgICAgIC5zZWxlY3QoKHsgcmVmIH0pID0+IFtcbiAgICAgICAgXCJjb20udHlwb3JnY29kIGFzIHR5cGVfY29kZV9vcmdhbmlzbWVcIixcbiAgICAgICAgXCJtZW1jb20ub3JnY29kIGFzIGNvZGVfb3JnYW5pc21lXCIsXG4gICAgICAgIFwidHlwb3JnLnR5cG9yZ2xpYiBhcyB0eXBlX29yZ2FuaXNtZVwiLFxuICAgICAgICBcImNvbS5jb21saWxtaW4gYXMgbGliZWxsZVwiLFxuICAgICAgICB0b0RhdGVTdHJpbmcocmVmKFwibWVtY29tLm1lbWNvbWRhdGRlYlwiKSkuYXMoXCJkYXRlX2RlYnV0XCIpLFxuICAgICAgICB0b0RhdGVTdHJpbmcocmVmKFwibWVtY29tLm1lbWNvbWRhdGZpblwiKSkuYXMoXCJkYXRlX2ZpblwiKSxcbiAgICAgIF0pXG4gICAgICAuc2VsZWN0KCh7IHJlZiB9KSA9PiBbXG4gICAgICAgIGZvbmN0aW9uc01lbWJyZUNvbW1pc3Npb24ocmVmKFwibWVtY29tLm1lbWNvbWlkXCIpKS5hcyhcImZvbmN0aW9uc1wiKSxcbiAgICAgIF0pXG4gICAgICAub3JkZXJCeShcIm1lbWNvbS5tZW1jb21kYXRkZWIgZGVzY1wiKSxcbiAgKVxufVxuXG5mdW5jdGlvbiBmb25jdGlvbnNNZW1icmVEZWxlZ2F0aW9uIChtZW1EZWxlZ2FJZDogRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gIHJldHVybiBqc29uQXJyYXlGcm9tKFxuICAgIGRiU2Vucy5zZWxlY3RGcm9tKFwiZm9ubWVtZGVsZWdhXCIpXG4gICAgICAubGVmdEpvaW4oXCJmb25kZWxlZ2FcIiwgXCJmb25tZW1kZWxlZ2EuZm9uZGVsY29kXCIsIFwiZm9uZGVsZWdhLmZvbmRlbGNvZFwiKVxuICAgICAgLndoZXJlKFwiZm9ubWVtZGVsZWdhLm1lbWRlbGVnYWlkXCIsIFwiPVwiLCBtZW1EZWxlZ2FJZClcbiAgICAgIC5zZWxlY3QoKHsgcmVmIH0pID0+IFtcbiAgICAgICAgdG9EYXRlU3RyaW5nKHJlZihcImZvbm1lbWRlbGVnYS5mb25tZW1kZWxkYXRkZWJcIikpLmFzKFwiZGF0ZV9kZWJ1dFwiKSxcbiAgICAgICAgdG9EYXRlU3RyaW5nKHJlZihcImZvbm1lbWRlbGVnYS5mb25tZW1kZWxkYXRmaW5cIikpLmFzKFwiZGF0ZV9maW5cIiksXG4gICAgICAgIFwiZm9uZGVsZWdhLmZvbmRlbGxpYiBhcyBsaWJlbGxlXCIsXG4gICAgICBdKVxuICAgICAgLm9yZGVyQnkoXCJmb25tZW1kZWxlZ2EuZm9ubWVtZGVsZGF0ZGViIGRlc2NcIiksXG4gIClcbn1cblxuZnVuY3Rpb24gbWFuZGF0c01lbWJyZURlbGVnYXRpb24gKHNlbk1hdDogRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gIHJldHVybiBqc29uQXJyYXlGcm9tKFxuICAgIGRiU2Vucy5zZWxlY3RGcm9tKFwibWVtZGVsZWdhXCIpXG4gICAgICAubGVmdEpvaW4oXCJkZWxlZ2FcIiwgXCJtZW1kZWxlZ2Eub3JnY29kXCIsIFwiZGVsZWdhLm9yZ2NvZFwiKVxuICAgICAgLmxlZnRKb2luKFwiZGVzaWdub3JnXCIsIFwibWVtZGVsZWdhLmRlc2lnbmNvZFwiLCBcImRlc2lnbm9yZy5kZXNpZ25jb2RcIilcbiAgICAgIC5sZWZ0Sm9pbihcInR5cG9yZ1wiLCBcImRlbGVnYS50eXBvcmdjb2RcIiwgXCJ0eXBvcmcudHlwb3JnY29kXCIpXG4gICAgICAud2hlcmUoXCJtZW1kZWxlZ2Euc2VubWF0XCIsIFwiPVwiLCBzZW5NYXQpXG4gICAgICAuc2VsZWN0KCh7IHJlZiB9KSA9PiBbXG4gICAgICAgIFwiZGVsZWdhLnR5cG9yZ2NvZCBhcyB0eXBlX2NvZGVfb3JnYW5pc21lXCIsXG4gICAgICAgIFwibWVtZGVsZWdhLm9yZ2NvZCBhcyBjb2RlX29yZ2FuaXNtZVwiLFxuICAgICAgICBcInR5cG9yZy50eXBvcmdsaWIgYXMgdHlwZV9vcmdhbmlzbWVcIixcbiAgICAgICAgXCJkZWxlZ2EuZXZlbGliIGFzIGxpYmVsbGVcIixcbiAgICAgICAgdG9EYXRlU3RyaW5nKHJlZihcIm1lbWRlbGVnYS5tZW1kZWxlZ2FkYXRkZWJcIikpLmFzKFwiZGF0ZV9kZWJ1dFwiKSxcbiAgICAgICAgdG9EYXRlU3RyaW5nKHJlZihcIm1lbWRlbGVnYS5tZW1kZWxlZ2FkYXRmaW5cIikpLmFzKFwiZGF0ZV9maW5cIiksXG4gICAgICBdKVxuICAgICAgLnNlbGVjdCgoeyByZWYgfSkgPT4gW1xuICAgICAgICBmb25jdGlvbnNNZW1icmVEZWxlZ2F0aW9uKHJlZihcIm1lbWRlbGVnYS5tZW1kZWxlZ2FpZFwiKSkuYXMoXCJmb25jdGlvbnNcIiksXG4gICAgICBdKVxuICAgICAgLm9yZGVyQnkoXCJtZW1kZWxlZ2EubWVtZGVsZWdhZGF0ZGViIGRlc2NcIiksXG4gIClcbn1cblxuZnVuY3Rpb24gbWFuZGF0c01lbWJyZUV4dHJhUGFybGVtZW50YWlyZSAoc2VuTWF0OiBFeHByZXNzaW9uPHN0cmluZz4pIHtcbiAgcmV0dXJuIGpzb25BcnJheUZyb20oXG4gICAgZGJTZW5zLnNlbGVjdEZyb20oXCJtZW1leHRwYXJcIilcbiAgICAgIC5sZWZ0Sm9pbihcIm9yZ2V4dFwiLCBcIm1lbWV4dHBhci5vcmdjb2RcIiwgXCJvcmdleHQub3JnY29kXCIpXG4gICAgICAubGVmdEpvaW4oXCJkZXNpZ25cIiwgXCJtZW1leHRwYXIuZGVzaWduY29kXCIsIFwiZGVzaWduLmRlc2lnbmNvZFwiKVxuICAgICAgLndoZXJlKFwibWVtZXh0cGFyLnNlbm1hdFwiLCBcIj1cIiwgc2VuTWF0KVxuICAgICAgLm9yZGVyQnkoXCJtZW1leHRwYXIubWVtZXh0cGFyZGF0ZGViIGRlc2NcIiksXG4gIClcbn1cblxuZnVuY3Rpb24gZm9uY3Rpb25zTWVtYnJlR3JvdXBlUG9saXRpcXVlIChtZW1HcnBQb2xJZDogRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gIHJldHVybiBqc29uQXJyYXlGcm9tKFxuICAgIGRiU2Vucy5zZWxlY3RGcm9tKFwiZm9ubWVtZ3JwcG9sXCIpXG4gICAgICAubGVmdEpvaW4oXCJmb25ncnBwb2xcIiwgXCJmb25tZW1ncnBwb2wuZm9uZ3JwcG9sY29kXCIsIFwiZm9uZ3JwcG9sLmZvbmdycHBvbGNvZFwiKVxuICAgICAgLndoZXJlKFwiZm9ubWVtZ3JwcG9sLm1lbWdycHBvbGlkXCIsIFwiPVwiLCBtZW1HcnBQb2xJZClcbiAgICAgIC5zZWxlY3QoKHsgcmVmIH0pID0+IFtcbiAgICAgICAgdG9EYXRlU3RyaW5nKHJlZihcImZvbm1lbWdycHBvbC5mb25tZW1ncnBwb2xkYXRkZWJcIikpLmFzKFwiZGF0ZV9kZWJ1dFwiKSxcbiAgICAgICAgdG9EYXRlU3RyaW5nKHJlZihcImZvbm1lbWdycHBvbC5mb25tZW1ncnBwb2xkYXRmaW5cIikpLmFzKFwiZGF0ZV9maW5cIiksXG4gICAgICAgIFwiZm9uZ3JwcG9sLmZvbmdycHBvbGxpYiBhcyBsaWJlbGxlXCIsXG4gICAgICBdKVxuICAgICAgLm9yZGVyQnkoXCJmb25tZW1ncnBwb2wuZm9ubWVtZ3JwcG9sZGF0ZGViIGRlc2NcIiksXG4gIClcbn1cblxuZnVuY3Rpb24gbWFuZGF0c01lbWJyZUdyb3VwZVBvbGl0aXF1ZSAoc2VuTWF0OiBFeHByZXNzaW9uPHN0cmluZz4pIHtcbiAgcmV0dXJuIGpzb25BcnJheUZyb20oXG4gICAgZGJTZW5zLnNlbGVjdEZyb20oXCJtZW1ncnBwb2xcIilcbiAgICAgIC5sZWZ0Sm9pbihcImdycHBvbFwiLCBcIm1lbWdycHBvbC5ncnBwb2xjb2RcIiwgXCJncnBwb2wuZ3JwcG9sY29kXCIpXG4gICAgICAubGVmdEpvaW4oXCJ0eXBhcHBwb2xcIiwgXCJtZW1ncnBwb2wudHlwYXBwcG9sY29kXCIsIFwidHlwYXBwcG9sLnR5cGFwcHBvbGNvZFwiKVxuICAgICAgLndoZXJlKFwibWVtZ3JwcG9sLnNlbm1hdFwiLCBcIj1cIiwgc2VuTWF0KVxuICAgICAgLnNlbGVjdCgoeyByZWYgfSkgPT4gW1xuICAgICAgICBcIm1lbWdycHBvbC5ncnBwb2xjb2QgYXMgY29kZVwiLFxuICAgICAgICBcImdycHBvbC5ncnBwb2xsaWJjb3UgYXMgbGliZWxsZVwiLFxuICAgICAgICB0b0RhdGVTdHJpbmcocmVmKFwibWVtZ3JwcG9sLm1lbWdycHBvbGRhdGRlYlwiKSkuYXMoXCJkYXRlX2RlYnV0XCIpLFxuICAgICAgICB0b0RhdGVTdHJpbmcocmVmKFwibWVtZ3JwcG9sLm1lbWdycHBvbGRhdGZpblwiKSkuYXMoXCJkYXRlX2ZpblwiKSxcbiAgICAgICAgXCJ0eXBhcHBwb2wudHlwYXBwcG9sbGliIGFzIGZvbmN0aW9uXCIsXG4gICAgICBdKVxuICAgICAgLnNlbGVjdCgoeyByZWYgfSkgPT4gW1xuICAgICAgICBmb25jdGlvbnNNZW1icmVHcm91cGVQb2xpdGlxdWUocmVmKFwibWVtZ3JwcG9sLm1lbWdycHBvbGlkXCIpKS5hcyhcImZvbmN0aW9uc1wiKSxcbiAgICAgIF0pXG4gICAgICAub3JkZXJCeShcIm1lbWdycHBvbC5tZW1ncnBwb2xkYXRkZWIgZGVzY1wiKSxcbiAgKVxufVxuXG5mdW5jdGlvbiBmb25jdGlvbnNNZW1icmVHcm91cGVTZW5hdG9yaWFsIChtZW1HcnBTZW5JZDogRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gIHJldHVybiBqc29uQXJyYXlGcm9tKFxuICAgIGRiU2Vucy5zZWxlY3RGcm9tKFwiZm9ubWVtZ3Jwc2VuXCIpXG4gICAgICAubGVmdEpvaW4oXCJmb25ncnBzZW5cIiwgXCJmb25tZW1ncnBzZW4uZm9uZ3Jwc2VuY29kXCIsIFwiZm9uZ3Jwc2VuLmZvbmdycHNlbmNvZFwiKVxuICAgICAgLndoZXJlKFwiZm9ubWVtZ3Jwc2VuLm1lbWdycHNlbmlkXCIsIFwiPVwiLCBtZW1HcnBTZW5JZClcbiAgICAgIC5vcmRlckJ5KFwiZm9ubWVtZ3Jwc2VuLmZvbm1lbWdycHNlbmRhdGRlYiBkZXNjXCIpLFxuICApXG59XG5cbmZ1bmN0aW9uIG1hbmRhdHNNZW1icmVHcm91cGVTZW5hdG9yaWFsIChzZW5NYXQ6IEV4cHJlc3Npb248c3RyaW5nPikge1xuICByZXR1cm4ganNvbkFycmF5RnJvbShcbiAgICBkYlNlbnMuc2VsZWN0RnJvbShcIm1lbWdycHNlblwiKVxuICAgICAgLmxlZnRKb2luKFwiZ3Jwc2VuYW1pXCIsIFwibWVtZ3Jwc2VuLm9yZ2NvZFwiLCBcImdycHNlbmFtaS5vcmdjb2RcIilcbiAgICAgIC5sZWZ0Sm9pbihcInR5cGdycHNlblwiLCBcImdycHNlbmFtaS50eXBncnBzZW5jb2RcIiwgXCJ0eXBncnBzZW4udHlwZ3Jwc2VuY29kXCIpXG4gICAgICAud2hlcmUoXCJtZW1ncnBzZW4uc2VubWF0XCIsIFwiPVwiLCBzZW5NYXQpXG4gICAgICAuc2VsZWN0KCh7IHJlZiB9KSA9PiBbXG4gICAgICAgIGZvbmN0aW9uc01lbWJyZUdyb3VwZVNlbmF0b3JpYWwocmVmKFwibWVtZ3Jwc2VuLm1lbWdycHNlbmlkXCIpKS5hcyhcImZvbmN0aW9uc1wiKSxcbiAgICAgIF0pXG4gICAgICAub3JkZXJCeShcIm1lbWdycHNlbi5tZW1ncnBzZW5kYXRlbnQgZGVzY1wiKSxcbiAgKVxufVxuXG5mdW5jdGlvbiBmb25jdGlvbnNNZW1icmVPcmdhbmlzbWUgKG1lbU9yZ0lkOiBFeHByZXNzaW9uPHN0cmluZz4pIHtcbiAgcmV0dXJuIGpzb25BcnJheUZyb20oXG4gICAgZGJTZW5zLnNlbGVjdEZyb20oXCJmb25tZW1vcmdcIilcbiAgICAgIC5sZWZ0Sm9pbihcImZvbm9yZ1wiLCBcImZvbm1lbW9yZy5mb25vcmdjb2RcIiwgXCJmb25vcmcuZm9ub3JnY29kXCIpXG4gICAgICAud2hlcmUoXCJmb25tZW1vcmcubWVtb3JnaWRcIiwgXCI9XCIsIG1lbU9yZ0lkKVxuICAgICAgLm9yZGVyQnkoXCJmb25tZW1vcmcuZm9ubWVtb3JnZGF0ZGViIGRlc2NcIiksXG4gIClcbn1cblxuZnVuY3Rpb24gbWFuZGF0c01lbWJyZU9yZ2FuaXNtZSAoc2VuTWF0OiBFeHByZXNzaW9uPHN0cmluZz4pIHtcbiAgcmV0dXJuIGpzb25BcnJheUZyb20oXG4gICAgZGJTZW5zLnNlbGVjdEZyb20oXCJtZW1vcmdcIilcbiAgICAgIC5sZWZ0Sm9pbihcIm9yZ1wiLCBcIm1lbW9yZy5vcmdjb2RcIiwgXCJvcmcub3JnY29kXCIpXG4gICAgICAubGVmdEpvaW4oXCJ0eXBvcmdcIiwgXCJvcmcudHlwb3JnY29kXCIsIFwidHlwb3JnLnR5cG9yZ2NvZFwiKVxuICAgICAgLmxlZnRKb2luKFwiZGVzaWdub3JnXCIsIFwibWVtb3JnLmRlc2lnbmNvZFwiLCBcImRlc2lnbm9yZy5kZXNpZ25jb2RcIilcbiAgICAgIC53aGVyZShcIm1lbW9yZy5zZW5tYXRcIiwgXCI9XCIsIHNlbk1hdClcbiAgICAgIC5zZWxlY3QoKHsgcmVmIH0pID0+IFtcbiAgICAgICAgZm9uY3Rpb25zTWVtYnJlT3JnYW5pc21lKHJlZihcIm1lbW9yZy5tZW1vcmdpZFwiKSkuYXMoXCJmb25jdGlvbnNcIiksXG4gICAgICBdKVxuICAgICAgLm9yZGVyQnkoXCJtZW1vcmcubWVtb3JnZGF0ZGViIGRlc2NcIiksXG4gIClcbn1cblxuZnVuY3Rpb24gbWFuZGF0c01pbmlzdHJlIChzZW5NYXQ6IEV4cHJlc3Npb248c3RyaW5nPikge1xuICByZXR1cm4ganNvbkFycmF5RnJvbShcbiAgICBkYlNlbnMuc2VsZWN0RnJvbShcIm1pbmluZFwiKVxuICAgICAgLndoZXJlKFwibWluaW5kLnNlbm1hdFwiLCBcIj1cIiwgc2VuTWF0KVxuICAgICAgLm9yZGVyQnkoXCJtaW5pbmQubWluZGF0ZGViIGRlc2NcIiksXG4gIClcbn1cblxuZnVuY3Rpb24gY29udGFjdHMgKHNlbk1hdDogRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gIHJldHVybiBqc29uQXJyYXlGcm9tKFxuICAgIGRiU2Vucy5zZWxlY3RGcm9tKFwicG9pY29uXCIpXG4gICAgICAubGVmdEpvaW4oXCJhZHJlc3NlXCIsIFwicG9pY29uLnBvaWNvbmlkXCIsIFwiYWRyZXNzZS5wb2ljb25pZFwiKVxuICAgICAgLmxlZnRKb2luKFwibWVsXCIsIFwicG9pY29uLnBvaWNvbmlkXCIsIFwibWVsLnBvaWNvbmlkXCIpXG4gICAgICAubGVmdEpvaW4oXCJ0ZWxlcGhvbmVcIiwgXCJwb2ljb24ucG9pY29uaWRcIiwgXCJ0ZWxlcGhvbmUucG9pY29uaWRcIilcbiAgICAgIC53aGVyZShcInBvaWNvbi5zZW5tYXRcIiwgXCI9XCIsIHNlbk1hdClcbiAgICAgIC5vcmRlckJ5KFwicG9pY29uLnBvaWNvbm51bXRyaSBhc2NcIiksXG4gIClcbn1cblxuZnVuY3Rpb24gdXJscyAoc2VuTWF0OiBFeHByZXNzaW9uPHN0cmluZz4pIHtcbiAgcmV0dXJuIGpzb25BcnJheUZyb20oXG4gICAgZGJTZW5zLnNlbGVjdEZyb20oXCJzZW51cmxcIilcbiAgICAgIC53aGVyZShcInNlbnVybC5zZW5tYXRcIiwgXCI9XCIsIHNlbk1hdClcbiAgICAgIC5zZWxlY3QoW1xuICAgICAgICBcInNlbnVybC50eXB1cmxjb2QgYXMgY29kZV91cmxcIixcbiAgICAgICAgXCJzZW51cmwuc2VudXJsdXJsIGFzIHVybFwiLFxuICAgICAgXSlcbiAgICAgIC5vcmRlckJ5KFwic2VudXJsLnNlbnVybG51bXRyaSBhc2NcIiksXG4gIClcbn1cblxuY29uc3QgZmluZEFsbFF1ZXJ5ID0gZGJTZW5zXG4gIC5zZWxlY3RGcm9tKFwic2VuXCIpXG4gIC5sZWZ0Sm9pbihcImV0YXNlblwiLCBcInNlbi5ldGFzZW5jb2RcIiwgXCJldGFzZW4uZXRhc2VuY29kXCIpXG4gIC5sZWZ0Sm9pbihcInBjc1wiLCBcInNlbi5wY3Njb2RcIiwgXCJwY3MucGNzY29kXCIpXG4gIC5sZWZ0Sm9pbihcInBjczQyXCIsIFwicGNzLnBjczQyY29kXCIsIFwicGNzNDIucGNzNDJjb2RcIilcbiAgLmxlZnRKb2luKFwicGNzMjRcIiwgXCJwY3M0Mi5wY3MyNGNvZFwiLCBcInBjczI0LnBjczI0Y29kXCIpXG4gIC5sZWZ0Sm9pbihcInBjczhcIiwgXCJwY3MyNC5wY3M4Y29kXCIsIFwicGNzOC5wY3M4Y29kXCIpXG4gIC5sZWZ0Sm9pbihcImdycHBvbFwiLCBcInNlbi5zZW5ncnBwb2xjb2Rjb3VcIiwgXCJncnBwb2wuZ3JwcG9sY29kXCIpXG4gIC5sZWZ0Sm9pbihcImNvbVwiLCBcInNlbi5zZW5jb21jb2Rjb3VcIiwgXCJjb20ub3JnY29kXCIpXG4gIC5zZWxlY3QoKHsgcmVmIH0pID0+IFtcbiAgICBcInNlbi5zZW5tYXQgYXMgbWF0cmljdWxlXCIsXG4gICAgXCJzZW4ucXVhY29kIGFzIHF1YWxpdGVcIixcbiAgICBcInNlbi5zZW5ub211c2UgYXMgbm9tX3VzdWVsXCIsXG4gICAgXCJzZW4uc2VucHJlbm9tdXNlIGFzIHByZW5vbV91c3VlbFwiLFxuICAgIFwic2VuLmV0YXNlbmNvZCBhcyBldGF0XCIsXG4gICAgdG9EYXRlU3RyaW5nKHJlZihcInNlbi5zZW5kYXRuYWlcIikpLmFzKFwiZGF0ZV9uYWlzc2FuY2VcIiksXG4gICAgdG9EYXRlU3RyaW5nKHJlZihcInNlbi5zZW5kYXRkZWNcIikpLmFzKFwiZGF0ZV9kZWNlc1wiKSxcbiAgICBcInNlbi5zZW5ncnBwb2xjb2Rjb3UgYXMgY29kZV9ncm91cGVfcG9saXRpcXVlXCIsXG4gICAgXCJzZW4uc2VuZ3JwcG9sbGljY291IGFzIGdyb3VwZV9wb2xpdGlxdWVcIixcbiAgICBcInNlbi5zZW5jb21jb2Rjb3UgYXMgY29kZV9jb21taXNzaW9uX3Blcm1hbmVudGVcIixcbiAgICBcImNvbS5jb21saWxtaW4gYXMgY29tbWlzc2lvbl9wZXJtYW5lbnRlXCIsXG4gICAgXCJzZW4uc2VuY2lybnVtY291IGFzIGNvZGVfY2lyY29uc2NyaXB0aW9uXCIsXG4gICAgXCJzZW4uc2VuY2lyY291IGFzIGNpcmNvbnNjcmlwdGlvblwiLFxuICAgIFwic2VuLnNlbmJ1cmxpY2NvdSBhcyBmb25jdGlvbl9idXJlYXVfc2VuYXRcIixcbiAgICBcInNlbi5zZW5lbWEgYXMgY291cnJpZXJfZWxlY3Ryb25pcXVlXCIsXG4gICAgXCJwY3MucGNzbGlsIGFzIFBDU19JTlNFRVwiLFxuICAgIFwicGNzNDIucGNzNDJsaWIgYXMgUENTX0lOU0VFXzQyXCIsXG4gICAgXCJwY3MyNC5wY3MyNGxpYiBhcyBQQ1NfSU5TRUVfMjRcIixcbiAgICBcInBjczgucGNzOGxpbCBhcyBQQ1NfSU5TRUVfOFwiLFxuICAgIFwic2VuLnNlbmRlc3BybyBhcyBkZXNjcmlwdGlvbl9wcm9mZXNzaW9uXCIsXG4gICAgXCJzZW4uc2VubnVtc2llIGFzIHNpZWdlXCIsXG4gICAgXCJzZW4uc2VuZGFpdXJsIGFzIHVybF9oYXR2cFwiLFxuICBdKVxuICAuc2VsZWN0KCh7IHJlZiB9KSA9PiBbXG4gICAgdXJscyhyZWYoXCJzZW4uc2VubWF0XCIpKS5hcyhcInVybHNcIiksXG4gICAgbWFuZGF0c0VsdVNlbmF0ZXVyKHJlZihcInNlbi5zZW5tYXRcIikpLmFzKFwibWFuZGF0c19zZW5hdGV1clwiKSxcbiAgICBtYW5kYXRzTWVtYnJlQ29tbWlzc2lvbihyZWYoXCJzZW4uc2VubWF0XCIpKS5hcyhcImNvbW1pc3Npb25zXCIpLFxuICAgIG1hbmRhdHNNZW1icmVEZWxlZ2F0aW9uKHJlZihcInNlbi5zZW5tYXRcIikpLmFzKFwiZGVsZWdhdGlvbnNcIiksXG4gICAgbWFuZGF0c01lbWJyZUdyb3VwZVBvbGl0aXF1ZShyZWYoXCJzZW4uc2VubWF0XCIpKS5hcyhcImdyb3VwZXNcIiksXG4gICAgZm9uY3Rpb25zQnVyZWF1KHJlZihcInNlbi5zZW5tYXRcIikpLmFzKFwiZm9uY3Rpb25zX2J1cmVhdVwiKSxcbiAgXSlcblxuY29uc3QgZmluZEFsbENpcmNvbnNjcmlwdGlvbnNRdWVyeSA9IGRiU2Vuc1xuICAuc2VsZWN0RnJvbShcImRwdFwiKVxuICAubGVmdEpvaW4oXCJyZWdcIiwgXCJkcHQucmVnY29kXCIsIFwicmVnLnJlZ2NvZFwiKVxuICAuc2VsZWN0KCh7IHJlZiB9KSA9PiBbXG4gICAgXCJkcHQuZHB0bnVtIGFzIGlkZW50aWZpYW50XCIsXG4gICAgXCJkcHQuZHB0Y29kIGFzIGNvZGVcIixcbiAgICBcImRwdC5kcHRsaWIgYXMgbGliZWxsZV9kZXBhcnRlbWVudFwiLFxuICAgIFwiZHB0LmRwdGFydCBhcyBhcnRpY2xlXCIsXG4gICAgXCJyZWcucmVnbGliIGFzIGxpYmVsbGVfcmVnaW9uXCIsXG4gICAgXCJkcHQudGVtdmFsY29kIGFzIGV0YXRcIixcbiAgICB0b0RhdGVTdHJpbmcocmVmKFwiZHB0LmRwdGRhdGRlYlwiKSkuYXMoXCJkYXRlX2RlYnV0XCIpLFxuICAgIHRvRGF0ZVN0cmluZyhyZWYoXCJkcHQuZHB0ZGF0ZmluXCIpKS5hcyhcImRhdGVfZmluXCIpLFxuICAgIFwiZHB0LmRwdG5icnNlbiBhcyBub21icmVfc2VuYXRldXJzXCIsXG4gICAgXCJkcHQuZHB0dXJsY21wIGFzIHVybFwiLFxuICBdKVxuXG5jb25zdCBmaW5kQWxsT3JnYW5pc21lc1F1ZXJ5ID0gZGJTZW5zXG4gIC5zZWxlY3RGcm9tKChlYikgPT4gZWJcbiAgICAuc2VsZWN0RnJvbShcImNvbVwiKVxuICAgIC5zZWxlY3QoW1xuICAgICAgXCJvcmdjb2RcIixcbiAgICAgIFwiZXZlbGljXCIsXG4gICAgICBcImV2ZWxpYlwiLFxuICAgICAgXCJldmVsaWxcIixcbiAgICAgIFwidHlwb3JnY29kXCIsXG4gICAgICBcIm9yZ3VybHNpbVwiLFxuICAgICAgXCJvcmdkYXRjcmVcIixcbiAgICAgIFwib3JnZGF0ZmluXCIsXG4gICAgICBcInRlbXZhbGNvZFwiLFxuICAgIF0pLnVuaW9uKGViXG4gICAgICAuc2VsZWN0RnJvbShcImRlbGVnYVwiKVxuICAgICAgLnNlbGVjdChbXG4gICAgICAgIFwib3JnY29kXCIsXG4gICAgICAgIFwiZXZlbGljXCIsXG4gICAgICAgIFwiZXZlbGliXCIsXG4gICAgICAgIFwiZXZlbGlsXCIsXG4gICAgICAgIFwidHlwb3JnY29kXCIsXG4gICAgICAgIFwib3JndXJsc2ltXCIsXG4gICAgICAgIFwib3JnZGF0Y3JlXCIsXG4gICAgICAgIFwib3JnZGF0ZmluXCIsXG4gICAgICAgIFwidGVtdmFsY29kXCIsXG4gICAgICBdKSxcbiAgICApLnVuaW9uKGViXG4gICAgICAuc2VsZWN0RnJvbShcImdycHBvbFwiKVxuICAgICAgLnNlbGVjdChbXG4gICAgICAgIFwiZ3JwcG9sY29kIGFzIG9yZ2NvZFwiLFxuICAgICAgICBcImdycHBvbGxpY2NvdSBhcyBldmVsaWNcIixcbiAgICAgICAgXCJncnBwb2xsaWJjb3UgYXMgZXZlbGliXCIsXG4gICAgICAgIFwiZ3JwcG9sbGlsY291IGFzIGV2ZWxpbFwiLFxuICAgICAgICBcInR5cG9yZ2NvZFwiLFxuICAgICAgICBcImdycHBvbHVybHNpbSBhcyBvcmd1cmxzaW1cIixcbiAgICAgICAgXCJncnBwb2xkYXRjcmUgYXMgb3JnZGF0Y3JlXCIsXG4gICAgICAgIFwiZ3JwcG9sZGF0ZmluIGFzIG9yZ2RhdGZpblwiLFxuICAgICAgICBcInRlbXZhbGNvZFwiLFxuICAgICAgXSksXG4gICAgKS51bmlvbihlYlxuICAgICAgLnNlbGVjdEZyb20oXCJncnBzZW5hbWlcIilcbiAgICAgIC5zZWxlY3QoW1xuICAgICAgICBcIm9yZ2NvZFwiLFxuICAgICAgICBcImV2ZWxpY1wiLFxuICAgICAgICBcImV2ZWxpYlwiLFxuICAgICAgICBcImV2ZWxpbFwiLFxuICAgICAgICBcInR5cG9yZ2NvZFwiLFxuICAgICAgICBcIm9yZ3VybHNpbVwiLFxuICAgICAgICBcIm9yZ2RhdGNyZVwiLFxuICAgICAgICBcIm9yZ2RhdGZpblwiLFxuICAgICAgICBcInRlbXZhbGNvZFwiLFxuICAgICAgXSksXG4gICAgKS51bmlvbihlYlxuICAgICAgLnNlbGVjdEZyb20oXCJvcmdcIilcbiAgICAgIC5zZWxlY3QoW1xuICAgICAgICBcIm9yZ2NvZFwiLFxuICAgICAgICBcImV2ZWxpY1wiLFxuICAgICAgICBcImV2ZWxpYlwiLFxuICAgICAgICBcImV2ZWxpbFwiLFxuICAgICAgICBcInR5cG9yZ2NvZFwiLFxuICAgICAgICBcIm9yZ3VybHNpbVwiLFxuICAgICAgICBcIm9yZ2RhdGNyZVwiLFxuICAgICAgICBcIm9yZ2RhdGZpblwiLFxuICAgICAgICBcInRlbXZhbGNvZFwiLFxuICAgICAgXSksXG4gICAgKS5hcyhcImFsbF9vcmdhbmlzbWVzXCIpLFxuICApLmxlZnRKb2luKFwidHlwb3JnXCIsIFwiYWxsX29yZ2FuaXNtZXMudHlwb3JnY29kXCIsIFwidHlwb3JnLnR5cG9yZ2NvZFwiKVxuICAuc2VsZWN0KCh7IHJlZiwgdmFsIH0pID0+IFtcbiAgICBcImFsbF9vcmdhbmlzbWVzLm9yZ2NvZCBhcyBjb2RlXCIsXG4gICAgXCJhbGxfb3JnYW5pc21lcy5ldmVsaWMgYXMgbGliZWxsZV9jb3VydFwiLFxuICAgIFwiYWxsX29yZ2FuaXNtZXMuZXZlbGliIGFzIGxpYmVsbGVcIixcbiAgICBydHJpbShyZWYoXCJhbGxfb3JnYW5pc21lcy5ldmVsaWxcIikpLmFzKFwibGliZWxsZV9sb25nXCIpLFxuICAgIFwiYWxsX29yZ2FuaXNtZXMudHlwb3JnY29kIGFzIHR5cGVfY29kZVwiLFxuICAgIHJ0cmltKHJlZihcInR5cG9yZy50eXBvcmdsaWJcIikpLmFzKFwidHlwZV9saWJlbGxlXCIpLFxuICAgIGNvbmNhdCh2YWwoXCJodHRwczovL3d3dy5zZW5hdC5mclwiKSwgcmVmKFwiYWxsX29yZ2FuaXNtZXMub3JndXJsc2ltXCIpKS5hcyhcInVybFwiKSxcbiAgICB0b0RhdGVTdHJpbmcocmVmKFwiYWxsX29yZ2FuaXNtZXMub3JnZGF0Y3JlXCIpKS5hcyhcImRhdGVfZGVidXRcIiksXG4gICAgdG9EYXRlU3RyaW5nKHJlZihcImFsbF9vcmdhbmlzbWVzLm9yZ2RhdGZpblwiKSkuYXMoXCJkYXRlX2ZpblwiKSxcbiAgICBcImFsbF9vcmdhbmlzbWVzLnRlbXZhbGNvZCBhcyBldGF0XCIsXG4gIF0pXG5cbmV4cG9ydCB0eXBlIFNlbmF0ZXVyUmVzdWx0ID0gSW5mZXJSZXN1bHQ8dHlwZW9mIGZpbmRBbGxRdWVyeT5bMF1cbmV4cG9ydCB0eXBlIENpcmNvbnNjcmlwdGlvblJlc3VsdCA9IEluZmVyUmVzdWx0PHR5cGVvZiBmaW5kQWxsQ2lyY29uc2NyaXB0aW9uc1F1ZXJ5PlswXVxuZXhwb3J0IHR5cGUgT3JnYW5pc21lUmVzdWx0ID0gSW5mZXJSZXN1bHQ8dHlwZW9mIGZpbmRBbGxPcmdhbmlzbWVzUXVlcnk+WzBdXG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQWxsICgpIHtcbiAgcmV0dXJuIGZpbmRBbGxRdWVyeS5zdHJlYW0oKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZEFsbENpcmNvbnNjcmlwdGlvbnMgKCkge1xuICByZXR1cm4gZmluZEFsbENpcmNvbnNjcmlwdGlvbnNRdWVyeS5zdHJlYW0oKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZEFsbE9yZ2FuaXNtZXMgKCkge1xuICByZXR1cm4gZmluZEFsbE9yZ2FuaXNtZXNRdWVyeS5zdHJlYW0oKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZEFjdGlmICgpOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8eyBzZW5tYXQ6IHN0cmluZywgc2Vubm9tdXNlOiBzdHJpbmcsIHNlbnByZW5vbXVzZTogc3RyaW5nIH0+IHtcbiAgcmV0dXJuIGRiU2Vuc1xuICAgIC5zZWxlY3RGcm9tKFwic2VuXCIpXG4gICAgLndoZXJlKFwiZXRhc2VuY29kXCIsIFwiPVwiLCBcIkFDVElGXCIpXG4gICAgLnNlbGVjdChbXCJzZW5tYXRcIiwgXCJzZW5ub211c2VcIiwgXCJzZW5wcmVub211c2VcIl0pXG4gICAgLnN0cmVhbSgpXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0EsSUFBQUEsU0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBRixPQUFBO0FBRUEsU0FBU0csZUFBZUEsQ0FBRUMsTUFBMEIsRUFBRTtFQUNwRCxPQUFPLElBQUFDLHdCQUFjLEVBQ25CQyxpQkFBTSxDQUFDQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQ3JCQyxRQUFRLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxZ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