@tricoteuses/assemblee 1.10.5 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. package/README.md +8 -1
  2. package/lib/amendements-CN7bRFdP.js +259 -0
  3. package/lib/amendements-CN7bRFdP.js.map +1 -0
  4. package/lib/amendements-Cg1lyCBp.js +735 -0
  5. package/lib/amendements-Cg1lyCBp.js.map +1 -0
  6. package/lib/api.d.ts +1 -0
  7. package/lib/api.d.ts.map +1 -0
  8. package/lib/cleaners/actes_legislatifs.d.ts +1 -0
  9. package/lib/cleaners/actes_legislatifs.d.ts.map +1 -0
  10. package/lib/cleaners/acteurs.d.ts +1 -0
  11. package/lib/cleaners/acteurs.d.ts.map +1 -0
  12. package/lib/cleaners/amendements.d.ts +1 -0
  13. package/lib/cleaners/amendements.d.ts.map +1 -0
  14. package/lib/cleaners/debats.d.ts +1 -0
  15. package/lib/cleaners/debats.d.ts.map +1 -0
  16. package/lib/cleaners/documents.d.ts +1 -0
  17. package/lib/cleaners/documents.d.ts.map +1 -0
  18. package/lib/cleaners/dossiers_legislatifs.d.ts +1 -0
  19. package/lib/cleaners/dossiers_legislatifs.d.ts.map +1 -0
  20. package/lib/cleaners/index.d.ts +10 -9
  21. package/lib/cleaners/index.d.ts.map +1 -0
  22. package/lib/cleaners/organes.d.ts +1 -0
  23. package/lib/cleaners/organes.d.ts.map +1 -0
  24. package/lib/cleaners/questions.d.ts +1 -0
  25. package/lib/cleaners/questions.d.ts.map +1 -0
  26. package/lib/cleaners/reunions.d.ts +1 -0
  27. package/lib/cleaners/reunions.d.ts.map +1 -0
  28. package/lib/cleaners/scrutins.d.ts +1 -0
  29. package/lib/cleaners/scrutins.d.ts.map +1 -0
  30. package/lib/cleaners/xml.d.ts +1 -0
  31. package/lib/cleaners/xml.d.ts.map +1 -0
  32. package/lib/cleaners.js +1138 -0
  33. package/lib/cleaners.js.map +1 -0
  34. package/lib/datasets.d.ts +4 -3
  35. package/lib/datasets.d.ts.map +1 -0
  36. package/lib/dates.d.ts +1 -0
  37. package/lib/dates.d.ts.map +1 -0
  38. package/lib/debats-BwZYgzXe.js +3978 -0
  39. package/lib/debats-BwZYgzXe.js.map +1 -0
  40. package/lib/dossiers_legislatifs.d.ts +3 -2
  41. package/lib/dossiers_legislatifs.d.ts.map +1 -0
  42. package/lib/file_systems.d.ts +1 -0
  43. package/lib/file_systems.d.ts.map +1 -0
  44. package/lib/git.d.ts +1 -0
  45. package/lib/git.d.ts.map +1 -0
  46. package/lib/index.d.ts +18 -22
  47. package/lib/index.d.ts.map +1 -0
  48. package/lib/index.js +1916 -285
  49. package/lib/index.js.map +1 -0
  50. package/lib/inserters.d.ts +6 -5
  51. package/lib/inserters.d.ts.map +1 -0
  52. package/lib/loaders.d.ts +13 -12
  53. package/lib/loaders.d.ts.map +1 -0
  54. package/lib/loaders.js +812 -1516
  55. package/lib/loaders.js.map +1 -0
  56. package/lib/logger.d.ts +1 -0
  57. package/lib/logger.d.ts.map +1 -0
  58. package/lib/organes.d.ts +2 -1
  59. package/lib/organes.d.ts.map +1 -0
  60. package/lib/parse-CzW8NHW5.js +2850 -0
  61. package/lib/parse-CzW8NHW5.js.map +1 -0
  62. package/lib/parsers/index.d.ts +3 -3
  63. package/lib/parsers/index.d.ts.map +1 -0
  64. package/lib/parsers/plf.d.ts +2 -0
  65. package/lib/parsers/plf.d.ts.map +1 -0
  66. package/lib/parsers/recherche_amendements.d.ts +3 -2
  67. package/lib/parsers/recherche_amendements.d.ts.map +1 -0
  68. package/lib/parsers/textes_lois.d.ts +2 -23
  69. package/lib/parsers/textes_lois.d.ts.map +1 -0
  70. package/lib/parsers.js +393 -0
  71. package/lib/parsers.js.map +1 -0
  72. package/lib/raw_types/acteurs_et_organes.d.ts +1 -0
  73. package/lib/raw_types/acteurs_et_organes.d.ts.map +1 -0
  74. package/lib/raw_types/agendas.d.ts +1 -0
  75. package/lib/raw_types/agendas.d.ts.map +1 -0
  76. package/lib/raw_types/amendements.d.ts +1 -0
  77. package/lib/raw_types/amendements.d.ts.map +1 -0
  78. package/lib/raw_types/debats.d.ts +3 -2
  79. package/lib/raw_types/debats.d.ts.map +1 -0
  80. package/lib/raw_types/dossiers_legislatifs.d.ts +2 -1
  81. package/lib/raw_types/dossiers_legislatifs.d.ts.map +1 -0
  82. package/lib/raw_types/questions.d.ts +1 -0
  83. package/lib/raw_types/questions.d.ts.map +1 -0
  84. package/lib/raw_types/scrutins.d.ts +1 -0
  85. package/lib/raw_types/scrutins.d.ts.map +1 -0
  86. package/lib/schemas/acteurs_et_organes.d.json +982 -0
  87. package/lib/schemas/acteurs_et_organes.json +1166 -0
  88. package/lib/schemas/agendas.d.json +1561 -0
  89. package/lib/schemas/agendas.json +1745 -0
  90. package/lib/schemas/amendements.d.json +1901 -0
  91. package/lib/schemas/amendements.json +2085 -0
  92. package/lib/schemas/debats.d.json +623 -0
  93. package/lib/schemas/debats.json +842 -0
  94. package/lib/schemas/dossiers_legislatifs.d.json +3690 -0
  95. package/lib/schemas/dossiers_legislatifs.json +3874 -0
  96. package/lib/schemas/legislatures.d.json +17 -0
  97. package/lib/schemas/legislatures.json +17 -0
  98. package/lib/schemas/questions.d.json +520 -0
  99. package/lib/schemas/questions.json +704 -0
  100. package/lib/schemas/scrutins.d.json +517 -0
  101. package/lib/schemas/scrutins.json +701 -0
  102. package/lib/scripts/add_links_to_documents.d.ts +2 -0
  103. package/lib/scripts/add_links_to_documents.d.ts.map +1 -0
  104. package/lib/scripts/clean_reorganized_data.d.ts +1 -0
  105. package/lib/scripts/clean_reorganized_data.d.ts.map +1 -0
  106. package/lib/scripts/copy-schemas.d.ts +2 -0
  107. package/lib/scripts/copy-schemas.d.ts.map +1 -0
  108. package/lib/scripts/diff_amendements.d.ts +1 -0
  109. package/lib/scripts/diff_amendements.d.ts.map +1 -0
  110. package/lib/scripts/document_dossiers_legislatifs.d.ts +1 -0
  111. package/lib/scripts/document_dossiers_legislatifs.d.ts.map +1 -0
  112. package/lib/scripts/generate-json-schemas.d.ts +2 -0
  113. package/lib/scripts/generate-json-schemas.d.ts.map +1 -0
  114. package/lib/scripts/get_today_reunions.d.ts +1 -0
  115. package/lib/scripts/get_today_reunions.d.ts.map +1 -0
  116. package/lib/scripts/merge_scrutins.d.ts +1 -0
  117. package/lib/scripts/merge_scrutins.d.ts.map +1 -0
  118. package/lib/scripts/process_open_dataset.d.ts +1 -0
  119. package/lib/scripts/process_open_dataset.d.ts.map +1 -0
  120. package/lib/scripts/raw_types_from_amendements.d.ts +1 -0
  121. package/lib/scripts/raw_types_from_amendements.d.ts.map +1 -0
  122. package/lib/scripts/reorganize_data.d.ts +1 -0
  123. package/lib/scripts/reorganize_data.d.ts.map +1 -0
  124. package/lib/scripts/retrieve_deputes_photos.d.ts +2 -1
  125. package/lib/scripts/retrieve_deputes_photos.d.ts.map +1 -0
  126. package/lib/scripts/retrieve_documents.d.ts +1 -0
  127. package/lib/scripts/retrieve_documents.d.ts.map +1 -0
  128. package/lib/scripts/retrieve_open_data.d.ts +1 -0
  129. package/lib/scripts/retrieve_open_data.d.ts.map +1 -0
  130. package/lib/scripts/retrieve_pending_amendments.d.ts +1 -0
  131. package/lib/scripts/retrieve_pending_amendments.d.ts.map +1 -0
  132. package/lib/scripts/retrieve_senateurs_photos.d.ts +1 -0
  133. package/lib/scripts/retrieve_senateurs_photos.d.ts.map +1 -0
  134. package/lib/scripts/shared/cli_helpers.d.ts +1 -0
  135. package/lib/scripts/shared/cli_helpers.d.ts.map +1 -0
  136. package/lib/scripts/test_iter_load.d.ts +1 -0
  137. package/lib/scripts/test_iter_load.d.ts.map +1 -0
  138. package/lib/scripts/test_load.d.ts +1 -0
  139. package/lib/scripts/test_load.d.ts.map +1 -0
  140. package/lib/scripts/test_load_big_files.d.ts +1 -0
  141. package/lib/scripts/test_load_big_files.d.ts.map +1 -0
  142. package/lib/scripts/validate_json.d.ts +1 -0
  143. package/lib/scripts/validate_json.d.ts.map +1 -0
  144. package/lib/shared_types/codes_actes.d.ts +1 -0
  145. package/lib/shared_types/codes_actes.d.ts.map +1 -0
  146. package/lib/strings.d.ts +1 -0
  147. package/lib/strings.d.ts.map +1 -0
  148. package/lib/types/acteurs_et_organes.d.ts +341 -0
  149. package/lib/types/acteurs_et_organes.d.ts.map +1 -0
  150. package/lib/types/agendas.d.ts +237 -10
  151. package/lib/types/agendas.d.ts.map +1 -0
  152. package/lib/types/amendements.d.ts +277 -1
  153. package/lib/types/amendements.d.ts.map +1 -0
  154. package/lib/types/debats.d.ts +53 -2
  155. package/lib/types/debats.d.ts.map +1 -0
  156. package/lib/types/dossiers_legislatifs.d.ts +404 -9
  157. package/lib/types/dossiers_legislatifs.d.ts.map +1 -0
  158. package/lib/types/legislatures.d.ts +1 -0
  159. package/lib/types/legislatures.d.ts.map +1 -0
  160. package/lib/types/questions.d.ts +100 -2
  161. package/lib/types/questions.d.ts.map +1 -0
  162. package/lib/types/scrutins.d.ts +102 -0
  163. package/lib/types/scrutins.d.ts.map +1 -0
  164. package/lib/urls.d.ts +3 -2
  165. package/lib/urls.d.ts.map +1 -0
  166. package/package.json +31 -95
  167. package/lib/api.js +0 -52
  168. package/lib/api.mjs +0 -45
  169. package/lib/bugs/acteur-00010/plugin.test.d.ts +0 -1
  170. package/lib/bugs/acteur-00010/plugin.test.js +0 -90
  171. package/lib/bugs/acteur-00010/plugin.test.mjs +0 -33
  172. package/lib/bugs/acteur-00010.d.ts +0 -7
  173. package/lib/bugs/acteur-00010.js +0 -116
  174. package/lib/bugs/acteur-00010.mjs +0 -26
  175. package/lib/bugs/agenda-00002/plugin.test.d.ts +0 -1
  176. package/lib/bugs/agenda-00002/plugin.test.js +0 -124
  177. package/lib/bugs/agenda-00002/plugin.test.mjs +0 -50
  178. package/lib/bugs/agenda-00002.d.ts +0 -15
  179. package/lib/bugs/agenda-00002.js +0 -406
  180. package/lib/bugs/agenda-00002.mjs +0 -172
  181. package/lib/bugs/agenda-00008/plugin.test.d.ts +0 -1
  182. package/lib/bugs/agenda-00008/plugin.test.js +0 -92
  183. package/lib/bugs/agenda-00008/plugin.test.mjs +0 -31
  184. package/lib/bugs/agenda-00008.d.ts +0 -7
  185. package/lib/bugs/agenda-00008.js +0 -123
  186. package/lib/bugs/agenda-00008.mjs +0 -26
  187. package/lib/bugs/agenda-00011/plugin.test.d.ts +0 -1
  188. package/lib/bugs/agenda-00011/plugin.test.js +0 -263
  189. package/lib/bugs/agenda-00011/plugin.test.mjs +0 -152
  190. package/lib/bugs/agenda-00011.d.ts +0 -16
  191. package/lib/bugs/agenda-00011.js +0 -333
  192. package/lib/bugs/agenda-00011.mjs +0 -125
  193. package/lib/bugs.d.ts +0 -21
  194. package/lib/bugs.js +0 -452
  195. package/lib/bugs.mjs +0 -70
  196. package/lib/cleaners/actes_legislatifs.js +0 -315
  197. package/lib/cleaners/actes_legislatifs.mjs +0 -253
  198. package/lib/cleaners/acteurs.js +0 -265
  199. package/lib/cleaners/acteurs.mjs +0 -180
  200. package/lib/cleaners/amendements.js +0 -294
  201. package/lib/cleaners/amendements.mjs +0 -227
  202. package/lib/cleaners/debats.js +0 -12
  203. package/lib/cleaners/debats.mjs +0 -5
  204. package/lib/cleaners/documents.js +0 -205
  205. package/lib/cleaners/documents.mjs +0 -133
  206. package/lib/cleaners/dossiers_legislatifs.js +0 -131
  207. package/lib/cleaners/dossiers_legislatifs.mjs +0 -70
  208. package/lib/cleaners/index.js +0 -70
  209. package/lib/cleaners/index.mjs +0 -10
  210. package/lib/cleaners/organes.js +0 -65
  211. package/lib/cleaners/organes.mjs +0 -48
  212. package/lib/cleaners/questions.js +0 -12
  213. package/lib/cleaners/questions.mjs +0 -5
  214. package/lib/cleaners/reunions.js +0 -312
  215. package/lib/cleaners/reunions.mjs +0 -255
  216. package/lib/cleaners/scrutins.js +0 -340
  217. package/lib/cleaners/scrutins.mjs +0 -221
  218. package/lib/cleaners/xml.js +0 -74
  219. package/lib/cleaners/xml.mjs +0 -59
  220. package/lib/datasets.js +0 -837
  221. package/lib/datasets.mjs +0 -755
  222. package/lib/dates.js +0 -124
  223. package/lib/dates.mjs +0 -100
  224. package/lib/dossiers_legislatifs.js +0 -346
  225. package/lib/dossiers_legislatifs.mjs +0 -208
  226. package/lib/file_systems.js +0 -162
  227. package/lib/file_systems.mjs +0 -62
  228. package/lib/git.js +0 -223
  229. package/lib/git.mjs +0 -151
  230. package/lib/index.mjs +0 -17
  231. package/lib/inserters.js +0 -521
  232. package/lib/inserters.mjs +0 -337
  233. package/lib/loaders.mjs +0 -886
  234. package/lib/logger.js +0 -35
  235. package/lib/logger.mjs +0 -26
  236. package/lib/organes.js +0 -22
  237. package/lib/organes.mjs +0 -15
  238. package/lib/parsers/documents.d.ts +0 -62
  239. package/lib/parsers/documents.js +0 -453
  240. package/lib/parsers/documents.mjs +0 -370
  241. package/lib/parsers/index.js +0 -40
  242. package/lib/parsers/index.mjs +0 -4
  243. package/lib/parsers/recherche_amendements.js +0 -403
  244. package/lib/parsers/recherche_amendements.mjs +0 -167
  245. package/lib/parsers/textes_lois.js +0 -307
  246. package/lib/parsers/textes_lois.mjs +0 -264
  247. package/lib/raw_types/acteurs_et_organes.js +0 -1215
  248. package/lib/raw_types/acteurs_et_organes.mjs +0 -1148
  249. package/lib/raw_types/agendas.js +0 -777
  250. package/lib/raw_types/agendas.mjs +0 -724
  251. package/lib/raw_types/amendements.js +0 -1052
  252. package/lib/raw_types/amendements.mjs +0 -993
  253. package/lib/raw_types/debats.js +0 -630
  254. package/lib/raw_types/debats.mjs +0 -573
  255. package/lib/raw_types/dossiers_legislatifs.js +0 -1529
  256. package/lib/raw_types/dossiers_legislatifs.mjs +0 -1471
  257. package/lib/raw_types/questions.js +0 -469
  258. package/lib/raw_types/questions.mjs +0 -416
  259. package/lib/raw_types/scrutins.js +0 -651
  260. package/lib/raw_types/scrutins.mjs +0 -598
  261. package/lib/schemas/acteur/Acteur.json +0 -56
  262. package/lib/schemas/acteur/AdresseElectronique.json +0 -52
  263. package/lib/schemas/acteur/AdressePostale.json +0 -75
  264. package/lib/schemas/acteur/Civ.json +0 -14
  265. package/lib/schemas/acteur/Collaborateur.json +0 -29
  266. package/lib/schemas/acteur/EtatCivil.json +0 -51
  267. package/lib/schemas/acteur/Ident.json +0 -40
  268. package/lib/schemas/acteur/Lieu.json +0 -66
  269. package/lib/schemas/acteur/Mandat.json +0 -192
  270. package/lib/schemas/acteur/Profession.json +0 -46
  271. package/lib/schemas/agenda/Agenda.json +0 -318
  272. package/lib/schemas/agenda/CycleDeVie.json +0 -45
  273. package/lib/schemas/agenda/PointOdj.json +0 -82
  274. package/lib/schemas/amendement/Amendement.json +0 -246
  275. package/lib/schemas/amendement/Diff.json +0 -25
  276. package/lib/schemas/amendement/DispositifAmdtCredit.json +0 -85
  277. package/lib/schemas/amendement/Identifiant.json +0 -62
  278. package/lib/schemas/amendement/PointeurFragmentTexte.json +0 -127
  279. package/lib/schemas/amendement/Representation.json +0 -67
  280. package/lib/schemas/amendement/Total.json +0 -26
  281. package/lib/schemas/converted_from_type/acteurs_et_organes.json +0 -666
  282. package/lib/schemas/converted_from_type/agendas.json +0 -1100
  283. package/lib/schemas/converted_from_type/amendements.json +0 -3191
  284. package/lib/schemas/converted_from_type/debats.json +0 -682
  285. package/lib/schemas/converted_from_type/deputes.json +0 -26
  286. package/lib/schemas/converted_from_type/dossiers_legislatifs.json +0 -2918
  287. package/lib/schemas/converted_from_type/legislatures.json +0 -16
  288. package/lib/schemas/converted_from_type/questions.json +0 -328
  289. package/lib/schemas/converted_from_type/scrutins.json +0 -393
  290. package/lib/schemas/debat/Contenu.json +0 -75
  291. package/lib/schemas/debat/Debat.json +0 -40
  292. package/lib/schemas/debat/Metadonnees.json +0 -75
  293. package/lib/schemas/debat/Orateur.json +0 -60
  294. package/lib/schemas/debat/Point.json +0 -169
  295. package/lib/schemas/debat/Sommaire.json +0 -71
  296. package/lib/schemas/debat/SommaireElement.json +0 -108
  297. package/lib/schemas/debat/Texte.json +0 -34
  298. package/lib/schemas/document/CodeLibelle.json +0 -25
  299. package/lib/schemas/document/Document.json +0 -385
  300. package/lib/schemas/document/Indexation.json +0 -38
  301. package/lib/schemas/dossier/ActeLegislatif.json +0 -211
  302. package/lib/schemas/dossier/ActeLegislatifBase.json +0 -62
  303. package/lib/schemas/dossier/Agenda.json +0 -23
  304. package/lib/schemas/dossier/ConseilConstitutionnel.json +0 -35
  305. package/lib/schemas/dossier/Decision.json +0 -25
  306. package/lib/schemas/dossier/Dossier.json +0 -124
  307. package/lib/schemas/dossier/EtudeImpact.json +0 -29
  308. package/lib/schemas/dossier/EtudePlf.json +0 -105
  309. package/lib/schemas/dossier/Europe.json +0 -42
  310. package/lib/schemas/dossier/FamCodeLibelle.json +0 -25
  311. package/lib/schemas/dossier/InfoJO.json +0 -23
  312. package/lib/schemas/dossier/Initiateur.json +0 -36
  313. package/lib/schemas/dossier/Motion.json +0 -27
  314. package/lib/schemas/dossier/Promulgation.json +0 -62
  315. package/lib/schemas/dossier/Rapporteur.json +0 -36
  316. package/lib/schemas/dossier/Texte.json +0 -47
  317. package/lib/schemas/organe/CodeTypeOrgane.json +0 -43
  318. package/lib/schemas/organe/Organe.json +0 -136
  319. package/lib/schemas/organe/ViMoDe.json +0 -28
  320. package/lib/schemas/question/Auteur.json +0 -58
  321. package/lib/schemas/question/Cloture.json +0 -28
  322. package/lib/schemas/question/InfoJO.json +0 -40
  323. package/lib/schemas/question/MinAttribElement.json +0 -30
  324. package/lib/schemas/question/Question.json +0 -172
  325. package/lib/schemas/question/Renouvellement.json +0 -17
  326. package/lib/schemas/question/Signalement.json +0 -21
  327. package/lib/schemas/question/Texte.json +0 -24
  328. package/lib/schemas/scrutin/DecompteVoix.json +0 -35
  329. package/lib/schemas/scrutin/Dysfonctionnement.json +0 -50
  330. package/lib/schemas/scrutin/MiseAuPoint.json +0 -53
  331. package/lib/schemas/scrutin/OrganeVotant.json +0 -88
  332. package/lib/schemas/scrutin/Scrutin.json +0 -187
  333. package/lib/schemas/scrutin/Votant.json +0 -37
  334. package/lib/scripts/bugs_helper.d.ts +0 -13
  335. package/lib/scripts/bugs_helper.js +0 -595
  336. package/lib/scripts/bugs_helper.mjs +0 -251
  337. package/lib/scripts/clean_reorganized_data.js +0 -613
  338. package/lib/scripts/clean_reorganized_data.mjs +0 -276
  339. package/lib/scripts/diff_amendements.js +0 -249
  340. package/lib/scripts/diff_amendements.mjs +0 -202
  341. package/lib/scripts/document_dossiers_legislatifs.js +0 -655
  342. package/lib/scripts/document_dossiers_legislatifs.mjs +0 -414
  343. package/lib/scripts/get_today_reunions.js +0 -37
  344. package/lib/scripts/get_today_reunions.mjs +0 -31
  345. package/lib/scripts/merge_scrutins.js +0 -97
  346. package/lib/scripts/merge_scrutins.mjs +0 -47
  347. package/lib/scripts/parse_textes_lois.d.ts +0 -1
  348. package/lib/scripts/parse_textes_lois.js +0 -171
  349. package/lib/scripts/parse_textes_lois.mjs +0 -140
  350. package/lib/scripts/process_open_dataset.js +0 -301
  351. package/lib/scripts/process_open_dataset.mjs +0 -134
  352. package/lib/scripts/raw_types_from_amendements.js +0 -135
  353. package/lib/scripts/raw_types_from_amendements.mjs +0 -134
  354. package/lib/scripts/reorganize_data.js +0 -805
  355. package/lib/scripts/reorganize_data.mjs +0 -517
  356. package/lib/scripts/retrieve_deputes_photos.js +0 -310
  357. package/lib/scripts/retrieve_deputes_photos.mjs +0 -158
  358. package/lib/scripts/retrieve_documents.js +0 -547
  359. package/lib/scripts/retrieve_documents.mjs +0 -242
  360. package/lib/scripts/retrieve_open_data.js +0 -107
  361. package/lib/scripts/retrieve_open_data.mjs +0 -26
  362. package/lib/scripts/retrieve_pending_amendments.js +0 -206
  363. package/lib/scripts/retrieve_pending_amendments.mjs +0 -57
  364. package/lib/scripts/retrieve_senateurs_photos.js +0 -234
  365. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -116
  366. package/lib/scripts/retrieve_textes_lois.d.ts +0 -1
  367. package/lib/scripts/retrieve_textes_lois.js +0 -240
  368. package/lib/scripts/retrieve_textes_lois.mjs +0 -85
  369. package/lib/scripts/shared/cli_helpers.js +0 -89
  370. package/lib/scripts/shared/cli_helpers.mjs +0 -81
  371. package/lib/scripts/test_iter_load.js +0 -155
  372. package/lib/scripts/test_iter_load.mjs +0 -72
  373. package/lib/scripts/test_load.js +0 -26
  374. package/lib/scripts/test_load.mjs +0 -16
  375. package/lib/scripts/test_load_big_files.js +0 -26
  376. package/lib/scripts/test_load_big_files.mjs +0 -16
  377. package/lib/scripts/validate_json.js +0 -353
  378. package/lib/scripts/validate_json.mjs +0 -184
  379. package/lib/shared_types/codes_actes.js +0 -231
  380. package/lib/shared_types/codes_actes.mjs +0 -224
  381. package/lib/strings.js +0 -16
  382. package/lib/strings.mjs +0 -7
  383. package/lib/types/acteurs_et_organes.js +0 -965
  384. package/lib/types/acteurs_et_organes.mjs +0 -906
  385. package/lib/types/agendas.js +0 -628
  386. package/lib/types/agendas.mjs +0 -575
  387. package/lib/types/amendements.js +0 -899
  388. package/lib/types/amendements.mjs +0 -842
  389. package/lib/types/debats.js +0 -619
  390. package/lib/types/debats.mjs +0 -562
  391. package/lib/types/dossiers_legislatifs.js +0 -1188
  392. package/lib/types/dossiers_legislatifs.mjs +0 -1130
  393. package/lib/types/legislatures.js +0 -17
  394. package/lib/types/legislatures.mjs +0 -10
  395. package/lib/types/questions.js +0 -454
  396. package/lib/types/questions.mjs +0 -401
  397. package/lib/types/scrutins.js +0 -556
  398. package/lib/types/scrutins.mjs +0 -503
  399. package/lib/urls.js +0 -325
  400. package/lib/urls.mjs +0 -258
@@ -1,562 +0,0 @@
1
- // To parse this data:
2
- //
3
- // import { Convert, ComptesRendus } from "./file";
4
- //
5
- // const compteRendu = Convert.toComptesRendus(json);
6
- //
7
- // These functions will throw an error if the JSON doesn't
8
- // match the expected interface, even if the JSON is valid.
9
-
10
- export let Decision = /*#__PURE__*/function (Decision) {
11
- Decision["AdoptionAmendementMainLev\xE9eAdt"] = "ADOPTION amendement (main lev\xE9e) adt";
12
- Decision["AdoptionDUnArticleVote\xC0MainLev\xE9e"] = "ADOPTION d\u2019un article (vote \xE0 main lev\xE9e)";
13
- Decision["AdoptionDUnSousAmendementMainLev\xE9eSsAdt"] = "ADOPTION d\u2019un sous-amendement (main lev\xE9e) ss-adt";
14
- Decision["AdoptionDePlusieursAmendementsMainLev\xE9eAdts"] = "ADOPTION de plusieurs amendements (main lev\xE9e) adts";
15
- Decision["AdoptionDePlusieursSousAmendementsMainLev\xE9eSsAdts"] = "ADOPTION de plusieurs sous-amendements (main lev\xE9e) ss-adts";
16
- Decision["Empty"] = "";
17
- Decision["RejetDUnAmendementMainLev\xE9eAdt"] = "REJET d\u2019un amendement (main lev\xE9e) adt";
18
- Decision["RejetDUnArticleVote\xC0MainLev\xE9e"] = "REJET d\u2019un article (vote \xE0 main lev\xE9e)";
19
- Decision["RejetDUnSousAmendementMainLev\xE9eSsAdt"] = "REJET d\u2019un sous-amendement (main lev\xE9e) ss-adt";
20
- Decision["RejetDePlusieursAmendementsMainLev\xE9eAdts"] = "REJET de plusieurs amendements (main lev\xE9e) adts";
21
- Decision["RejetDePlusieursSousAmendementsMainLev\xE9eSsAdts"] = "REJET de plusieurs sous-amendements (main lev\xE9e) ss-adts";
22
- Decision["RejetMotionDeRejetPr\xE9alableMainLev\xE9e"] = "REJET motion de rejet pr\xE9alable (main lev\xE9e)";
23
- return Decision;
24
- }({});
25
- // Converts JSON strings to/from your types
26
- // and asserts the results of JSON.parse at runtime
27
- export class Convert {
28
- static toComptesRendus(json) {
29
- return cast(JSON.parse(json), r("ComptesRendus"));
30
- }
31
- static comptesRendusToJson(value) {
32
- return JSON.stringify(uncast(value, r("ComptesRendus")), null, 2);
33
- }
34
- static toCompteRendu(json) {
35
- return cast(JSON.parse(json), r("CompteRendu"));
36
- }
37
- static compteRenduToJson(value) {
38
- return JSON.stringify(uncast(value, r("CompteRendu")), null, 2);
39
- }
40
- }
41
- function invalidValue(typ, val, key, parent = "") {
42
- const prettyTyp = prettyTypeName(typ);
43
- const parentText = parent ? ` on ${parent}` : "";
44
- const keyText = key ? ` for key "${key}"` : "";
45
- throw Error(`Invalid value${keyText}${parentText}. Expected ${prettyTyp} but got ${JSON.stringify(val)}`);
46
- }
47
- function prettyTypeName(typ) {
48
- if (Array.isArray(typ)) {
49
- if (typ.length === 2 && typ[0] === undefined) {
50
- return `an optional ${prettyTypeName(typ[1])}`;
51
- } else {
52
- return `one of [${typ.map(a => {
53
- return prettyTypeName(a);
54
- }).join(", ")}]`;
55
- }
56
- } else if (typeof typ === "object" && typ.literal !== undefined) {
57
- return typ.literal;
58
- } else {
59
- return typeof typ;
60
- }
61
- }
62
- function jsonToJSProps(typ) {
63
- if (typ.jsonToJS === undefined) {
64
- const map = {};
65
- typ.props.forEach(p => map[p.json] = {
66
- key: p.js,
67
- typ: p.typ
68
- });
69
- typ.jsonToJS = map;
70
- }
71
- return typ.jsonToJS;
72
- }
73
- function jsToJSONProps(typ) {
74
- if (typ.jsToJSON === undefined) {
75
- const map = {};
76
- typ.props.forEach(p => map[p.js] = {
77
- key: p.json,
78
- typ: p.typ
79
- });
80
- typ.jsToJSON = map;
81
- }
82
- return typ.jsToJSON;
83
- }
84
- function transform(val, typ, getProps, key = "", parent = "") {
85
- function transformPrimitive(typ, val) {
86
- if (typeof typ === typeof val) return val;
87
- return invalidValue(typ, val, key, parent);
88
- }
89
- function transformUnion(typs, val) {
90
- // val must validate against one typ in typs
91
- const l = typs.length;
92
- for (let i = 0; i < l; i++) {
93
- const typ = typs[i];
94
- try {
95
- return transform(val, typ, getProps);
96
- } catch (_) {}
97
- }
98
- return invalidValue(typs, val, key, parent);
99
- }
100
- function transformEnum(cases, val) {
101
- if (cases.indexOf(val) !== -1) return val;
102
- return invalidValue(cases.map(a => {
103
- return l(a);
104
- }), val, key, parent);
105
- }
106
- function transformArray(typ, val) {
107
- // val must be an array with no invalid elements
108
- if (!Array.isArray(val)) return invalidValue(l("array"), val, key, parent);
109
- return val.map(el => transform(el, typ, getProps));
110
- }
111
- function transformDate(val) {
112
- if (val === null) {
113
- return null;
114
- }
115
- const d = new Date(val);
116
- if (isNaN(d.valueOf())) {
117
- return invalidValue(l("Date"), val, key, parent);
118
- }
119
- return d;
120
- }
121
- function transformObject(props, additional, val) {
122
- if (val === null || typeof val !== "object" || Array.isArray(val)) {
123
- return invalidValue(l(ref || "object"), val, key, parent);
124
- }
125
- const result = {};
126
- Object.getOwnPropertyNames(props).forEach(key => {
127
- const prop = props[key];
128
- const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
129
- result[prop.key] = transform(v, prop.typ, getProps, key, ref);
130
- });
131
- Object.getOwnPropertyNames(val).forEach(key => {
132
- if (!Object.prototype.hasOwnProperty.call(props, key)) {
133
- result[key] = transform(val[key], additional, getProps, key, ref);
134
- }
135
- });
136
- return result;
137
- }
138
- if (typ === "any") return val;
139
- if (typ === null) {
140
- if (val === null) return val;
141
- return invalidValue(typ, val, key, parent);
142
- }
143
- if (typ === false) return invalidValue(typ, val, key, parent);
144
- let ref = undefined;
145
- while (typeof typ === "object" && typ.ref !== undefined) {
146
- ref = typ.ref;
147
- typ = typeMap[typ.ref];
148
- }
149
- if (Array.isArray(typ)) return transformEnum(typ, val);
150
- if (typeof typ === "object") {
151
- return typ.hasOwnProperty("unionMembers") ? transformUnion(typ.unionMembers, val) : typ.hasOwnProperty("arrayItems") ? transformArray(typ.arrayItems, val) : typ.hasOwnProperty("props") ? transformObject(getProps(typ), typ.additional, val) : invalidValue(typ, val, key, parent);
152
- }
153
- // Numbers can be parsed by Date but shouldn't be.
154
- if (typ === Date && typeof val !== "number") return transformDate(val);
155
- return transformPrimitive(typ, val);
156
- }
157
- function cast(val, typ) {
158
- return transform(val, typ, jsonToJSProps);
159
- }
160
- function uncast(val, typ) {
161
- return transform(val, typ, jsToJSONProps);
162
- }
163
- function l(typ) {
164
- return {
165
- literal: typ
166
- };
167
- }
168
- function a(typ) {
169
- return {
170
- arrayItems: typ
171
- };
172
- }
173
- function u(...typs) {
174
- return {
175
- unionMembers: typs
176
- };
177
- }
178
- function o(props, additional) {
179
- return {
180
- props,
181
- additional
182
- };
183
- }
184
-
185
- // function m(additional: any) {
186
- // return { props: [], additional };
187
- // }
188
-
189
- function r(name) {
190
- return {
191
- ref: name
192
- };
193
- }
194
- const typeMap = {
195
- ComptesRendus: o([{
196
- json: "comptesRendus",
197
- js: "comptesRendus",
198
- typ: a(r("CompteRendu"))
199
- }], false),
200
- CompteRendu: o([{
201
- json: "schemaVersion",
202
- js: "schemaVersion",
203
- typ: u(undefined, "")
204
- }, {
205
- json: "uid",
206
- js: "uid",
207
- typ: u(undefined, "")
208
- }, {
209
- json: "seanceRef",
210
- js: "seanceRef",
211
- typ: ""
212
- }, {
213
- json: "sessionRef",
214
- js: "sessionRef",
215
- typ: ""
216
- }, {
217
- json: "metadonnees",
218
- js: "metadonnees",
219
- typ: r("Metadonnees")
220
- }, {
221
- json: "contenu",
222
- js: "contenu",
223
- typ: r("Contenu")
224
- }], false),
225
- Contenu: o([{
226
- json: "quantiemes",
227
- js: "quantiemes",
228
- typ: r("Quantiemes")
229
- }, {
230
- json: "ouvertureSeance",
231
- js: "ouvertureSeance",
232
- typ: u(a(r("Point")), r("Point"))
233
- }, {
234
- json: "point",
235
- js: "point",
236
- typ: u(a(r("Point")), r("Point"))
237
- }, {
238
- json: "finSeance",
239
- js: "finSeance",
240
- typ: u(undefined, r("FinSeance"))
241
- }, {
242
- json: "paragraphe",
243
- js: "paragraphe",
244
- typ: u(undefined, a(r("Point")))
245
- }], false),
246
- FinSeance: o([{
247
- json: "point",
248
- js: "point",
249
- typ: r("Point")
250
- }], false),
251
- Orateurs: o([{
252
- json: "orateur",
253
- js: "orateur",
254
- typ: u(a(r("OrateurElement")), r("OrateurElement"))
255
- }], false),
256
- OrateurElement: o([{
257
- json: "nom",
258
- js: "nom",
259
- typ: u(undefined, "")
260
- }, {
261
- json: "id",
262
- js: "id",
263
- typ: u(undefined, "")
264
- }, {
265
- json: "qualite",
266
- js: "qualite",
267
- typ: u(undefined, "")
268
- }], false),
269
- Texte: o([{
270
- json: "_",
271
- js: "_",
272
- typ: u(undefined, "")
273
- }, {
274
- json: "id_syceron",
275
- js: "id_syceron",
276
- typ: u(undefined, "")
277
- }, {
278
- json: "stime",
279
- js: "stime",
280
- typ: u(undefined, "")
281
- }, {
282
- json: "sup",
283
- js: "sup",
284
- typ: u(undefined, "")
285
- }, {
286
- json: "lienAdt",
287
- js: "lienAdt",
288
- typ: u(undefined, u(a(r("Texte")), r("Texte")))
289
- }], false),
290
- Point: o([{
291
- json: "nivpoint",
292
- js: "nivpoint",
293
- typ: u(undefined, "")
294
- }, {
295
- json: "valeur_ptsodj",
296
- js: "valeur_ptsodj",
297
- typ: u(undefined, "")
298
- }, {
299
- json: "ordinal_prise",
300
- js: "ordinal_prise",
301
- typ: u(undefined, "")
302
- }, {
303
- json: "id_preparation",
304
- js: "id_preparation",
305
- typ: u(undefined, "")
306
- }, {
307
- json: "ordre_absolu_seance",
308
- js: "ordre_absolu_seance",
309
- typ: u(undefined, "")
310
- }, {
311
- json: "code_grammaire",
312
- js: "code_grammaire",
313
- typ: u(undefined, "")
314
- }, {
315
- json: "code_style",
316
- js: "code_style",
317
- typ: u(undefined, "")
318
- }, {
319
- json: "code_parole",
320
- js: "code_parole",
321
- typ: u(undefined, "")
322
- }, {
323
- json: "sommaire",
324
- js: "sommaire",
325
- typ: u(undefined, "")
326
- }, {
327
- json: "id_syceron",
328
- js: "id_syceron",
329
- typ: u(undefined, "")
330
- }, {
331
- json: "valeur",
332
- js: "valeur",
333
- typ: u(undefined, "")
334
- }, {
335
- json: "orateurs",
336
- js: "orateurs",
337
- typ: u(r("Orateurs"), u("", undefined))
338
- }, {
339
- json: "texte",
340
- js: "texte",
341
- typ: u(r("Texte"), u("", undefined))
342
- }, {
343
- json: "paragraphe",
344
- js: "paragraphe",
345
- typ: u(undefined, u(a(r("Point")), r("Point")))
346
- }, {
347
- json: "interExtraction",
348
- js: "interExtraction",
349
- typ: u(undefined, u(a(r("Point")), r("Point")))
350
- }, {
351
- json: "point",
352
- js: "point",
353
- typ: u(undefined, u(a(r("Point")), r("Point")))
354
- }, {
355
- json: "structure",
356
- js: "structure",
357
- typ: u(undefined, "")
358
- }, {
359
- json: "id_acteur",
360
- js: "id_acteur",
361
- typ: u(undefined, "")
362
- }, {
363
- json: "id_mandat",
364
- js: "id_mandat",
365
- typ: u(undefined, "")
366
- }, {
367
- json: "id_nomination_oe",
368
- js: "id_nomination_oe",
369
- typ: u(undefined, "")
370
- }, {
371
- json: "id_nomination_op",
372
- js: "id_nomination_op",
373
- typ: u(undefined, "")
374
- }, {
375
- json: "orateur",
376
- js: "orateur",
377
- typ: u(undefined, "")
378
- }, {
379
- json: "bibard",
380
- js: "bibard",
381
- typ: u(undefined, "")
382
- }, {
383
- json: "art",
384
- js: "art",
385
- typ: u(undefined, "")
386
- }, {
387
- json: "adt",
388
- js: "adt",
389
- typ: u(undefined, "")
390
- }, {
391
- json: "ssadt",
392
- js: "ssadt",
393
- typ: u(undefined, "")
394
- }, {
395
- json: "roledebat",
396
- js: "roledebat",
397
- typ: u(undefined, "")
398
- }, {
399
- json: "type_debat",
400
- js: "type_debat",
401
- typ: u(undefined, "")
402
- }, {
403
- json: "changementPresidence",
404
- js: "changementPresidence",
405
- typ: u(undefined, r("Point"))
406
- }, {
407
- json: "decision",
408
- js: "decision",
409
- typ: u(undefined, r("Decision"))
410
- }, {
411
- json: "ouvertureSeance",
412
- js: "ouvertureSeance",
413
- typ: u(undefined, r("Point"))
414
- }, {
415
- json: "nom_orateur",
416
- js: "nom_orateur",
417
- typ: u(undefined, "")
418
- }, {
419
- json: "qualite",
420
- js: "qualite",
421
- typ: u(undefined, "")
422
- }], false),
423
- Quantiemes: o([{
424
- json: "journee",
425
- js: "journee",
426
- typ: ""
427
- }, {
428
- json: "session",
429
- js: "session",
430
- typ: ""
431
- }], false),
432
- Metadonnees: o([{
433
- json: "dateSeance",
434
- js: "dateSeance",
435
- typ: ""
436
- }, {
437
- json: "dateSeanceJour",
438
- js: "dateSeanceJour",
439
- typ: ""
440
- }, {
441
- json: "numSeanceJour",
442
- js: "numSeanceJour",
443
- typ: ""
444
- }, {
445
- json: "numSeance",
446
- js: "numSeance",
447
- typ: ""
448
- }, {
449
- json: "typeAssemblee",
450
- js: "typeAssemblee",
451
- typ: ""
452
- }, {
453
- json: "legislature",
454
- js: "legislature",
455
- typ: ""
456
- }, {
457
- json: "session",
458
- js: "session",
459
- typ: ""
460
- }, {
461
- json: "nomFichierJo",
462
- js: "nomFichierJo",
463
- typ: ""
464
- }, {
465
- json: "validite",
466
- js: "validite",
467
- typ: ""
468
- }, {
469
- json: "etat",
470
- js: "etat",
471
- typ: ""
472
- }, {
473
- json: "diffusion",
474
- js: "diffusion",
475
- typ: ""
476
- }, {
477
- json: "version",
478
- js: "version",
479
- typ: ""
480
- }, {
481
- json: "environnement",
482
- js: "environnement",
483
- typ: ""
484
- }, {
485
- json: "heureGeneration",
486
- js: "heureGeneration",
487
- typ: Date
488
- }, {
489
- json: "sommaire",
490
- js: "sommaire",
491
- typ: r("Sommaire")
492
- }], false),
493
- Sommaire: o([{
494
- json: "presidentSeance",
495
- js: "presidentSeance",
496
- typ: r("Texte")
497
- }, {
498
- json: "sommaire1",
499
- js: "sommaire1",
500
- typ: u(a(r("SommaireElement")), r("SommaireElement"))
501
- }, {
502
- json: "sommaire3",
503
- js: "sommaire3",
504
- typ: u(undefined, u(a(r("SommaireElement")), r("SommaireElement")))
505
- }, {
506
- json: "sommaire2",
507
- js: "sommaire2",
508
- typ: u(undefined, u(a(r("SommaireElement")), r("SommaireElement")))
509
- }, {
510
- json: "para",
511
- js: "para",
512
- typ: u(undefined, u(a(r("Texte")), r("Texte")))
513
- }], false),
514
- SommaireElement: o([{
515
- json: "valeur_pts_odj",
516
- js: "valeur_pts_odj",
517
- typ: u(undefined, "")
518
- }, {
519
- json: "titreStruct",
520
- js: "titreStruct",
521
- typ: u(undefined, r("TitreStruct"))
522
- }, {
523
- json: "para",
524
- js: "para",
525
- typ: u(undefined, u(a(u(r("Texte"), "")), r("Texte")))
526
- }, {
527
- json: "sommaire2",
528
- js: "sommaire2",
529
- typ: u(undefined, u(a(r("SommaireElement")), r("SommaireElement")))
530
- }, {
531
- json: "sommaire3",
532
- js: "sommaire3",
533
- typ: u(undefined, u(a(r("SommaireElement")), r("SommaireElement")))
534
- }, {
535
- json: "presidentSeance",
536
- js: "presidentSeance",
537
- typ: u(undefined, u(a(r("Texte")), r("Texte")))
538
- }, {
539
- json: "type_debat",
540
- js: "type_debat",
541
- typ: u(undefined, "")
542
- }], false),
543
- TitreStruct: o([{
544
- json: "id_syceron",
545
- js: "id_syceron",
546
- typ: ""
547
- }, {
548
- json: "intitule",
549
- js: "intitule",
550
- typ: u(undefined, "")
551
- }, {
552
- json: "sousIntitule",
553
- js: "sousIntitule",
554
- typ: u(undefined, "")
555
- }, {
556
- json: "type_debat",
557
- js: "type_debat",
558
- typ: u(undefined, "")
559
- }], false),
560
- Decision: ["ADOPTION amendement (main levée) adt", "ADOPTION d’un article (vote à main levée)", "ADOPTION d’un sous-amendement (main levée) ss-adt", "ADOPTION de plusieurs amendements (main levée) adts", "ADOPTION de plusieurs sous-amendements (main levée) ss-adts", "", "REJET d’un amendement (main levée) adt", "REJET d’un article (vote à main levée)", "REJET d’un sous-amendement (main levée) ss-adt", "REJET de plusieurs amendements (main levée) adts", "REJET de plusieurs sous-amendements (main levée) ss-adts", "REJET motion de rejet préalable (main levée)"]
561
- };
562
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWNpc2lvbiIsIkNvbnZlcnQiLCJ0b0NvbXB0ZXNSZW5kdXMiLCJqc29uIiwiY2FzdCIsIkpTT04iLCJwYXJzZSIsInIiLCJjb21wdGVzUmVuZHVzVG9Kc29uIiwidmFsdWUiLCJzdHJpbmdpZnkiLCJ1bmNhc3QiLCJ0b0NvbXB0ZVJlbmR1IiwiY29tcHRlUmVuZHVUb0pzb24iLCJpbnZhbGlkVmFsdWUiLCJ0eXAiLCJ2YWwiLCJrZXkiLCJwYXJlbnQiLCJwcmV0dHlUeXAiLCJwcmV0dHlUeXBlTmFtZSIsInBhcmVudFRleHQiLCJrZXlUZXh0IiwiRXJyb3IiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJtYXAiLCJhIiwiam9pbiIsImxpdGVyYWwiLCJqc29uVG9KU1Byb3BzIiwianNvblRvSlMiLCJwcm9wcyIsImZvckVhY2giLCJwIiwianMiLCJqc1RvSlNPTlByb3BzIiwianNUb0pTT04iLCJ0cmFuc2Zvcm0iLCJnZXRQcm9wcyIsInRyYW5zZm9ybVByaW1pdGl2ZSIsInRyYW5zZm9ybVVuaW9uIiwidHlwcyIsImwiLCJpIiwiXyIsInRyYW5zZm9ybUVudW0iLCJjYXNlcyIsImluZGV4T2YiLCJ0cmFuc2Zvcm1BcnJheSIsImVsIiwidHJhbnNmb3JtRGF0ZSIsImQiLCJEYXRlIiwiaXNOYU4iLCJ2YWx1ZU9mIiwidHJhbnNmb3JtT2JqZWN0IiwiYWRkaXRpb25hbCIsInJlZiIsInJlc3VsdCIsIk9iamVjdCIsImdldE93blByb3BlcnR5TmFtZXMiLCJwcm9wIiwidiIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInR5cGVNYXAiLCJ1bmlvbk1lbWJlcnMiLCJhcnJheUl0ZW1zIiwidSIsIm8iLCJuYW1lIiwiQ29tcHRlc1JlbmR1cyIsIkNvbXB0ZVJlbmR1IiwiQ29udGVudSIsIkZpblNlYW5jZSIsIk9yYXRldXJzIiwiT3JhdGV1ckVsZW1lbnQiLCJUZXh0ZSIsIlBvaW50IiwiUXVhbnRpZW1lcyIsIk1ldGFkb25uZWVzIiwiU29tbWFpcmUiLCJTb21tYWlyZUVsZW1lbnQiLCJUaXRyZVN0cnVjdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9kZWJhdHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVG8gcGFyc2UgdGhpcyBkYXRhOlxuLy9cbi8vICAgaW1wb3J0IHsgQ29udmVydCwgQ29tcHRlc1JlbmR1cyB9IGZyb20gXCIuL2ZpbGVcIjtcbi8vXG4vLyAgIGNvbnN0IGNvbXB0ZVJlbmR1ID0gQ29udmVydC50b0NvbXB0ZXNSZW5kdXMoanNvbik7XG4vL1xuLy8gVGhlc2UgZnVuY3Rpb25zIHdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIEpTT04gZG9lc24ndFxuLy8gbWF0Y2ggdGhlIGV4cGVjdGVkIGludGVyZmFjZSwgZXZlbiBpZiB0aGUgSlNPTiBpcyB2YWxpZC5cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdGVzUmVuZHVzIHtcbiAgY29tcHRlc1JlbmR1czogQ29tcHRlUmVuZHVbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB0ZVJlbmR1IHtcbiAgc2NoZW1hVmVyc2lvbj86IHN0cmluZ1xuICB1aWQ6IHN0cmluZ1xuICBzZWFuY2VSZWY6IHN0cmluZ1xuICBzZXNzaW9uUmVmOiBzdHJpbmdcbiAgbWV0YWRvbm5lZXM6IE1ldGFkb25uZWVzXG4gIGNvbnRlbnU6IENvbnRlbnVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW51IHtcbiAgcXVhbnRpZW1lczogUXVhbnRpZW1lc1xuICBvdXZlcnR1cmVTZWFuY2U6IFBvaW50W10gfCBQb2ludFxuICBwb2ludDogUG9pbnRbXSB8IFBvaW50XG4gIGZpblNlYW5jZT86IEZpblNlYW5jZVxuICBwYXJhZ3JhcGhlPzogUG9pbnRbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpblNlYW5jZSB7XG4gIHBvaW50OiBQb2ludFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yYXRldXJzIHtcbiAgb3JhdGV1cjogT3JhdGV1ckVsZW1lbnRbXSB8IE9yYXRldXJFbGVtZW50XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JhdGV1ckVsZW1lbnQge1xuICBub206IHN0cmluZyB8IHVuZGVmaW5lZFxuICBpZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIHF1YWxpdGU6IHN0cmluZyB8IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRlIHtcbiAgXz86IHN0cmluZ1xuICBpZF9zeWNlcm9uPzogc3RyaW5nXG4gIHN0aW1lPzogc3RyaW5nXG4gIHN1cD86IHN0cmluZ1xuICBsaWVuQWR0PzogVGV4dGVbXSB8IFRleHRlXG59XG5cbmV4cG9ydCBlbnVtIERlY2lzaW9uIHtcbiAgQWRvcHRpb25BbWVuZGVtZW50TWFpbkxldsOpZUFkdCA9IFwiQURPUFRJT04gYW1lbmRlbWVudCAobWFpbiBsZXbDqWUpIGFkdFwiLFxuICBBZG9wdGlvbkRVbkFydGljbGVWb3Rlw4BNYWluTGV2w6llID0gXCJBRE9QVElPTiBk4oCZdW4gYXJ0aWNsZSAodm90ZSDDoCBtYWluIGxldsOpZSlcIixcbiAgQWRvcHRpb25EVW5Tb3VzQW1lbmRlbWVudE1haW5MZXbDqWVTc0FkdCA9IFwiQURPUFRJT04gZOKAmXVuIHNvdXMtYW1lbmRlbWVudCAobWFpbiBsZXbDqWUpIHNzLWFkdFwiLFxuICBBZG9wdGlvbkRlUGx1c2lldXJzQW1lbmRlbWVudHNNYWluTGV2w6llQWR0cyA9IFwiQURPUFRJT04gZGUgcGx1c2lldXJzIGFtZW5kZW1lbnRzIChtYWluIGxldsOpZSkgYWR0c1wiLFxuICBBZG9wdGlvbkRlUGx1c2lldXJzU291c0FtZW5kZW1lbnRzTWFpbkxldsOpZVNzQWR0cyA9IFwiQURPUFRJT04gZGUgcGx1c2lldXJzIHNvdXMtYW1lbmRlbWVudHMgKG1haW4gbGV2w6llKSBzcy1hZHRzXCIsXG4gIEVtcHR5ID0gXCJcIixcbiAgUmVqZXREVW5BbWVuZGVtZW50TWFpbkxldsOpZUFkdCA9IFwiUkVKRVQgZOKAmXVuIGFtZW5kZW1lbnQgKG1haW4gbGV2w6llKSBhZHRcIixcbiAgUmVqZXREVW5BcnRpY2xlVm90ZcOATWFpbkxldsOpZSA9IFwiUkVKRVQgZOKAmXVuIGFydGljbGUgKHZvdGUgw6AgbWFpbiBsZXbDqWUpXCIsXG4gIFJlamV0RFVuU291c0FtZW5kZW1lbnRNYWluTGV2w6llU3NBZHQgPSBcIlJFSkVUIGTigJl1biBzb3VzLWFtZW5kZW1lbnQgKG1haW4gbGV2w6llKSBzcy1hZHRcIixcbiAgUmVqZXREZVBsdXNpZXVyc0FtZW5kZW1lbnRzTWFpbkxldsOpZUFkdHMgPSBcIlJFSkVUIGRlIHBsdXNpZXVycyBhbWVuZGVtZW50cyAobWFpbiBsZXbDqWUpIGFkdHNcIixcbiAgUmVqZXREZVBsdXNpZXVyc1NvdXNBbWVuZGVtZW50c01haW5MZXbDqWVTc0FkdHMgPSBcIlJFSkVUIGRlIHBsdXNpZXVycyBzb3VzLWFtZW5kZW1lbnRzIChtYWluIGxldsOpZSkgc3MtYWR0c1wiLFxuICBSZWpldE1vdGlvbkRlUmVqZXRQcsOpYWxhYmxlTWFpbkxldsOpZSA9IFwiUkVKRVQgbW90aW9uIGRlIHJlamV0IHByw6lhbGFibGUgKG1haW4gbGV2w6llKVwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvaW50IHtcbiAgbml2cG9pbnQ/OiBzdHJpbmdcbiAgdmFsZXVyX3B0c29kaj86IHN0cmluZ1xuICBvcmRpbmFsX3ByaXNlPzogc3RyaW5nXG4gIGlkX3ByZXBhcmF0aW9uPzogc3RyaW5nXG4gIG9yZHJlX2Fic29sdV9zZWFuY2U/OiBzdHJpbmdcbiAgY29kZV9ncmFtbWFpcmU/OiBzdHJpbmdcbiAgY29kZV9zdHlsZT86IHN0cmluZ1xuICBjb2RlX3Bhcm9sZT86IHN0cmluZ1xuICBzb21tYWlyZT86IHN0cmluZ1xuICBpZF9zeWNlcm9uPzogc3RyaW5nXG4gIHZhbGV1cj86IHN0cmluZ1xuICBvcmF0ZXVycz86IE9yYXRldXJzIHwgc3RyaW5nXG4gIHRleHRlPzogVGV4dGUgfCBzdHJpbmdcbiAgcGFyYWdyYXBoZT86IFBvaW50W10gfCBQb2ludFxuICBpbnRlckV4dHJhY3Rpb24/OiBQb2ludFtdIHwgUG9pbnRcbiAgcG9pbnQ/OiBQb2ludFtdIHwgUG9pbnRcbiAgc3RydWN0dXJlPzogc3RyaW5nXG4gIGlkX2FjdGV1cj86IHN0cmluZ1xuICBpZF9tYW5kYXQ/OiBzdHJpbmdcbiAgaWRfbm9taW5hdGlvbl9vZT86IHN0cmluZ1xuICBpZF9ub21pbmF0aW9uX29wPzogc3RyaW5nXG4gIG9yYXRldXI/OiBzdHJpbmdcbiAgYmliYXJkPzogc3RyaW5nXG4gIGFydD86IHN0cmluZ1xuICBhZHQ/OiBzdHJpbmdcbiAgc3NhZHQ/OiBzdHJpbmdcbiAgcm9sZWRlYmF0Pzogc3RyaW5nXG4gIGNoYW5nZW1lbnRQcmVzaWRlbmNlPzogUG9pbnRcbiAgdHlwZV9kZWJhdD86IHN0cmluZ1xuICBkZWNpc2lvbj86IERlY2lzaW9uXG4gIG91dmVydHVyZVNlYW5jZT86IFBvaW50XG4gIG5vbV9vcmF0ZXVyPzogc3RyaW5nXG4gIHF1YWxpdGU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWFudGllbWVzIHtcbiAgam91cm5lZTogc3RyaW5nXG4gIHNlc3Npb246IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkb25uZWVzIHtcbiAgZGF0ZVNlYW5jZTogc3RyaW5nXG4gIGRhdGVTZWFuY2VKb3VyOiBzdHJpbmdcbiAgbnVtU2VhbmNlSm91cjogc3RyaW5nXG4gIG51bVNlYW5jZTogc3RyaW5nXG4gIHR5cGVBc3NlbWJsZWU6IHN0cmluZ1xuICBsZWdpc2xhdHVyZTogc3RyaW5nXG4gIHNlc3Npb246IHN0cmluZ1xuICBub21GaWNoaWVySm86IHN0cmluZ1xuICB2YWxpZGl0ZTogc3RyaW5nXG4gIGV0YXQ6IHN0cmluZ1xuICBkaWZmdXNpb246IHN0cmluZ1xuICB2ZXJzaW9uOiBzdHJpbmdcbiAgZW52aXJvbm5lbWVudDogc3RyaW5nXG4gIGhldXJlR2VuZXJhdGlvbjogRGF0ZVxuICBzb21tYWlyZTogU29tbWFpcmVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTb21tYWlyZSB7XG4gIHByZXNpZGVudFNlYW5jZTogVGV4dGVcbiAgc29tbWFpcmUxOiBTb21tYWlyZUVsZW1lbnRbXSB8IFNvbW1haXJlRWxlbWVudFxuICBzb21tYWlyZTM/OiBTb21tYWlyZUVsZW1lbnRbXSB8IFNvbW1haXJlRWxlbWVudFxuICBzb21tYWlyZTI/OiBTb21tYWlyZUVsZW1lbnRbXSB8IFNvbW1haXJlRWxlbWVudFxuICBwYXJhPzogVGV4dGVbXSB8IFRleHRlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29tbWFpcmVFbGVtZW50IHtcbiAgdmFsZXVyX3B0c19vZGo/OiBzdHJpbmdcbiAgdGl0cmVTdHJ1Y3Q6IFRpdHJlU3RydWN0XG4gIHBhcmE/OiBBcnJheTxUZXh0ZSB8IHN0cmluZz4gfCBUZXh0ZVxuICBzb21tYWlyZTI/OiBTb21tYWlyZUVsZW1lbnRbXSB8IFNvbW1haXJlRWxlbWVudFxuICBzb21tYWlyZTM/OiBTb21tYWlyZUVsZW1lbnRbXSB8IFNvbW1haXJlRWxlbWVudFxuICBwcmVzaWRlbnRTZWFuY2U/OiBUZXh0ZVtdIHwgVGV4dGVcbiAgdHlwZV9kZWJhdD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRpdHJlU3RydWN0IHtcbiAgaWRfc3ljZXJvbjogc3RyaW5nXG4gIGludGl0dWxlPzogc3RyaW5nXG4gIHNvdXNJbnRpdHVsZT86IHN0cmluZ1xuICB0eXBlX2RlYmF0Pzogc3RyaW5nXG59XG5cbi8vIENvbnZlcnRzIEpTT04gc3RyaW5ncyB0by9mcm9tIHlvdXIgdHlwZXNcbi8vIGFuZCBhc3NlcnRzIHRoZSByZXN1bHRzIG9mIEpTT04ucGFyc2UgYXQgcnVudGltZVxuZXhwb3J0IGNsYXNzIENvbnZlcnQge1xuICBwdWJsaWMgc3RhdGljIHRvQ29tcHRlc1JlbmR1cyhqc29uOiBzdHJpbmcpOiBDb21wdGVzUmVuZHVzIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKFwiQ29tcHRlc1JlbmR1c1wiKSlcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29tcHRlc1JlbmR1c1RvSnNvbih2YWx1ZTogQ29tcHRlc1JlbmR1cyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcihcIkNvbXB0ZXNSZW5kdXNcIikpLCBudWxsLCAyKVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b0NvbXB0ZVJlbmR1KGpzb246IHN0cmluZyk6IENvbXB0ZVJlbmR1IHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKFwiQ29tcHRlUmVuZHVcIikpXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbXB0ZVJlbmR1VG9Kc29uKHZhbHVlOiBDb21wdGVSZW5kdSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcihcIkNvbXB0ZVJlbmR1XCIpKSwgbnVsbCwgMilcbiAgfVxufVxuXG5mdW5jdGlvbiBpbnZhbGlkVmFsdWUodHlwOiBhbnksIHZhbDogYW55LCBrZXk6IGFueSwgcGFyZW50OiBhbnkgPSBcIlwiKTogbmV2ZXIge1xuICBjb25zdCBwcmV0dHlUeXAgPSBwcmV0dHlUeXBlTmFtZSh0eXApXG4gIGNvbnN0IHBhcmVudFRleHQgPSBwYXJlbnQgPyBgIG9uICR7cGFyZW50fWAgOiBcIlwiXG4gIGNvbnN0IGtleVRleHQgPSBrZXkgPyBgIGZvciBrZXkgXCIke2tleX1cImAgOiBcIlwiXG4gIHRocm93IEVycm9yKFxuICAgIGBJbnZhbGlkIHZhbHVlJHtrZXlUZXh0fSR7cGFyZW50VGV4dH0uIEV4cGVjdGVkICR7cHJldHR5VHlwfSBidXQgZ290ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICB2YWwsXG4gICAgKX1gLFxuICApXG59XG5cbmZ1bmN0aW9uIHByZXR0eVR5cGVOYW1lKHR5cDogYW55KTogc3RyaW5nIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodHlwKSkge1xuICAgIGlmICh0eXAubGVuZ3RoID09PSAyICYmIHR5cFswXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYGFuIG9wdGlvbmFsICR7cHJldHR5VHlwZU5hbWUodHlwWzFdKX1gXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgb25lIG9mIFske3R5cFxuICAgICAgICAubWFwKChhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHByZXR0eVR5cGVOYW1lKGEpXG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiLCBcIil9XWBcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHR5cCA9PT0gXCJvYmplY3RcIiAmJiB0eXAubGl0ZXJhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHR5cC5saXRlcmFsXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0eXBcbiAgfVxufVxuXG5mdW5jdGlvbiBqc29uVG9KU1Byb3BzKHR5cDogYW55KTogYW55IHtcbiAgaWYgKHR5cC5qc29uVG9KUyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbWFwOiBhbnkgPSB7fVxuICAgIHR5cC5wcm9wcy5mb3JFYWNoKChwOiBhbnkpID0+IChtYXBbcC5qc29uXSA9IHsga2V5OiBwLmpzLCB0eXA6IHAudHlwIH0pKVxuICAgIHR5cC5qc29uVG9KUyA9IG1hcFxuICB9XG4gIHJldHVybiB0eXAuanNvblRvSlNcbn1cblxuZnVuY3Rpb24ganNUb0pTT05Qcm9wcyh0eXA6IGFueSk6IGFueSB7XG4gIGlmICh0eXAuanNUb0pTT04gPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG1hcDogYW55ID0ge31cbiAgICB0eXAucHJvcHMuZm9yRWFjaCgocDogYW55KSA9PiAobWFwW3AuanNdID0geyBrZXk6IHAuanNvbiwgdHlwOiBwLnR5cCB9KSlcbiAgICB0eXAuanNUb0pTT04gPSBtYXBcbiAgfVxuICByZXR1cm4gdHlwLmpzVG9KU09OXG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybShcbiAgdmFsOiBhbnksXG4gIHR5cDogYW55LFxuICBnZXRQcm9wczogYW55LFxuICBrZXk6IGFueSA9IFwiXCIsXG4gIHBhcmVudDogYW55ID0gXCJcIixcbik6IGFueSB7XG4gIGZ1bmN0aW9uIHRyYW5zZm9ybVByaW1pdGl2ZSh0eXA6IHN0cmluZywgdmFsOiBhbnkpOiBhbnkge1xuICAgIGlmICh0eXBlb2YgdHlwID09PSB0eXBlb2YgdmFsKSByZXR1cm4gdmFsXG4gICAgcmV0dXJuIGludmFsaWRWYWx1ZSh0eXAsIHZhbCwga2V5LCBwYXJlbnQpXG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2Zvcm1Vbmlvbih0eXBzOiBhbnlbXSwgdmFsOiBhbnkpOiBhbnkge1xuICAgIC8vIHZhbCBtdXN0IHZhbGlkYXRlIGFnYWluc3Qgb25lIHR5cCBpbiB0eXBzXG4gICAgY29uc3QgbCA9IHR5cHMubGVuZ3RoXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHR5cCA9IHR5cHNbaV1cbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB0cmFuc2Zvcm0odmFsLCB0eXAsIGdldFByb3BzKVxuICAgICAgfSBjYXRjaCAoXykge31cbiAgICB9XG4gICAgcmV0dXJuIGludmFsaWRWYWx1ZSh0eXBzLCB2YWwsIGtleSwgcGFyZW50KVxuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtRW51bShjYXNlczogc3RyaW5nW10sIHZhbDogYW55KTogYW55IHtcbiAgICBpZiAoY2FzZXMuaW5kZXhPZih2YWwpICE9PSAtMSkgcmV0dXJuIHZhbFxuICAgIHJldHVybiBpbnZhbGlkVmFsdWUoXG4gICAgICBjYXNlcy5tYXAoKGEpID0+IHtcbiAgICAgICAgcmV0dXJuIGwoYSlcbiAgICAgIH0pLFxuICAgICAgdmFsLFxuICAgICAga2V5LFxuICAgICAgcGFyZW50LFxuICAgIClcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybUFycmF5KHR5cDogYW55LCB2YWw6IGFueSk6IGFueSB7XG4gICAgLy8gdmFsIG11c3QgYmUgYW4gYXJyYXkgd2l0aCBubyBpbnZhbGlkIGVsZW1lbnRzXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbCkpIHJldHVybiBpbnZhbGlkVmFsdWUobChcImFycmF5XCIpLCB2YWwsIGtleSwgcGFyZW50KVxuICAgIHJldHVybiB2YWwubWFwKChlbCkgPT4gdHJhbnNmb3JtKGVsLCB0eXAsIGdldFByb3BzKSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybURhdGUodmFsOiBhbnkpOiBhbnkge1xuICAgIGlmICh2YWwgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh2YWwpXG4gICAgaWYgKGlzTmFOKGQudmFsdWVPZigpKSkge1xuICAgICAgcmV0dXJuIGludmFsaWRWYWx1ZShsKFwiRGF0ZVwiKSwgdmFsLCBrZXksIHBhcmVudClcbiAgICB9XG4gICAgcmV0dXJuIGRcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybU9iamVjdChcbiAgICBwcm9wczogeyBbazogc3RyaW5nXTogYW55IH0sXG4gICAgYWRkaXRpb25hbDogYW55LFxuICAgIHZhbDogYW55LFxuICApOiBhbnkge1xuICAgIGlmICh2YWwgPT09IG51bGwgfHwgdHlwZW9mIHZhbCAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIHJldHVybiBpbnZhbGlkVmFsdWUobChyZWYgfHwgXCJvYmplY3RcIiksIHZhbCwga2V5LCBwYXJlbnQpXG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge31cbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm9wcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBwcm9wID0gcHJvcHNba2V5XVxuICAgICAgY29uc3QgdiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWwsIGtleSlcbiAgICAgICAgPyB2YWxba2V5XVxuICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgcmVzdWx0W3Byb3Aua2V5XSA9IHRyYW5zZm9ybSh2LCBwcm9wLnR5cCwgZ2V0UHJvcHMsIGtleSwgcmVmKVxuICAgIH0pXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModmFsKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBrZXkpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdHJhbnNmb3JtKHZhbFtrZXldLCBhZGRpdGlvbmFsLCBnZXRQcm9wcywga2V5LCByZWYpXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBpZiAodHlwID09PSBcImFueVwiKSByZXR1cm4gdmFsXG4gIGlmICh0eXAgPT09IG51bGwpIHtcbiAgICBpZiAodmFsID09PSBudWxsKSByZXR1cm4gdmFsXG4gICAgcmV0dXJuIGludmFsaWRWYWx1ZSh0eXAsIHZhbCwga2V5LCBwYXJlbnQpXG4gIH1cbiAgaWYgKHR5cCA9PT0gZmFsc2UpIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwsIGtleSwgcGFyZW50KVxuICBsZXQgcmVmOiBhbnkgPSB1bmRlZmluZWRcbiAgd2hpbGUgKHR5cGVvZiB0eXAgPT09IFwib2JqZWN0XCIgJiYgdHlwLnJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmVmID0gdHlwLnJlZlxuICAgIHR5cCA9IHR5cGVNYXBbdHlwLnJlZl1cbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh0eXApKSByZXR1cm4gdHJhbnNmb3JtRW51bSh0eXAsIHZhbClcbiAgaWYgKHR5cGVvZiB0eXAgPT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gdHlwLmhhc093blByb3BlcnR5KFwidW5pb25NZW1iZXJzXCIpXG4gICAgICA/IHRyYW5zZm9ybVVuaW9uKHR5cC51bmlvbk1lbWJlcnMsIHZhbClcbiAgICAgIDogdHlwLmhhc093blByb3BlcnR5KFwiYXJyYXlJdGVtc1wiKVxuICAgICAgICA/IHRyYW5zZm9ybUFycmF5KHR5cC5hcnJheUl0ZW1zLCB2YWwpXG4gICAgICAgIDogdHlwLmhhc093blByb3BlcnR5KFwicHJvcHNcIilcbiAgICAgICAgICA/IHRyYW5zZm9ybU9iamVjdChnZXRQcm9wcyh0eXApLCB0eXAuYWRkaXRpb25hbCwgdmFsKVxuICAgICAgICAgIDogaW52YWxpZFZhbHVlKHR5cCwgdmFsLCBrZXksIHBhcmVudClcbiAgfVxuICAvLyBOdW1iZXJzIGNhbiBiZSBwYXJzZWQgYnkgRGF0ZSBidXQgc2hvdWxkbid0IGJlLlxuICBpZiAodHlwID09PSBEYXRlICYmIHR5cGVvZiB2YWwgIT09IFwibnVtYmVyXCIpIHJldHVybiB0cmFuc2Zvcm1EYXRlKHZhbClcbiAgcmV0dXJuIHRyYW5zZm9ybVByaW1pdGl2ZSh0eXAsIHZhbClcbn1cblxuZnVuY3Rpb24gY2FzdDxUPih2YWw6IGFueSwgdHlwOiBhbnkpOiBUIHtcbiAgcmV0dXJuIHRyYW5zZm9ybSh2YWwsIHR5cCwganNvblRvSlNQcm9wcylcbn1cblxuZnVuY3Rpb24gdW5jYXN0PFQ+KHZhbDogVCwgdHlwOiBhbnkpOiBhbnkge1xuICByZXR1cm4gdHJhbnNmb3JtKHZhbCwgdHlwLCBqc1RvSlNPTlByb3BzKVxufVxuXG5mdW5jdGlvbiBsKHR5cDogYW55KSB7XG4gIHJldHVybiB7IGxpdGVyYWw6IHR5cCB9XG59XG5cbmZ1bmN0aW9uIGEodHlwOiBhbnkpIHtcbiAgcmV0dXJuIHsgYXJyYXlJdGVtczogdHlwIH1cbn1cblxuZnVuY3Rpb24gdSguLi50eXBzOiBhbnlbXSkge1xuICByZXR1cm4geyB1bmlvbk1lbWJlcnM6IHR5cHMgfVxufVxuXG5mdW5jdGlvbiBvKHByb3BzOiBhbnlbXSwgYWRkaXRpb25hbDogYW55KSB7XG4gIHJldHVybiB7IHByb3BzLCBhZGRpdGlvbmFsIH1cbn1cblxuLy8gZnVuY3Rpb24gbShhZGRpdGlvbmFsOiBhbnkpIHtcbi8vICAgICByZXR1cm4geyBwcm9wczogW10sIGFkZGl0aW9uYWwgfTtcbi8vIH1cblxuZnVuY3Rpb24gcihuYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHsgcmVmOiBuYW1lIH1cbn1cblxuY29uc3QgdHlwZU1hcDogYW55ID0ge1xuICBDb21wdGVzUmVuZHVzOiBvKFxuICAgIFt7IGpzb246IFwiY29tcHRlc1JlbmR1c1wiLCBqczogXCJjb21wdGVzUmVuZHVzXCIsIHR5cDogYShyKFwiQ29tcHRlUmVuZHVcIikpIH1dLFxuICAgIGZhbHNlLFxuICApLFxuICBDb21wdGVSZW5kdTogbyhcbiAgICBbXG4gICAgICB7IGpzb246IFwic2NoZW1hVmVyc2lvblwiLCBqczogXCJzY2hlbWFWZXJzaW9uXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgICB7IGpzb246IFwidWlkXCIsIGpzOiBcInVpZFwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcInNlYW5jZVJlZlwiLCBqczogXCJzZWFuY2VSZWZcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwic2Vzc2lvblJlZlwiLCBqczogXCJzZXNzaW9uUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcIm1ldGFkb25uZWVzXCIsIGpzOiBcIm1ldGFkb25uZWVzXCIsIHR5cDogcihcIk1ldGFkb25uZWVzXCIpIH0sXG4gICAgICB7IGpzb246IFwiY29udGVudVwiLCBqczogXCJjb250ZW51XCIsIHR5cDogcihcIkNvbnRlbnVcIikgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBDb250ZW51OiBvKFxuICAgIFtcbiAgICAgIHsganNvbjogXCJxdWFudGllbWVzXCIsIGpzOiBcInF1YW50aWVtZXNcIiwgdHlwOiByKFwiUXVhbnRpZW1lc1wiKSB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcIm91dmVydHVyZVNlYW5jZVwiLFxuICAgICAgICBqczogXCJvdXZlcnR1cmVTZWFuY2VcIixcbiAgICAgICAgdHlwOiB1KGEocihcIlBvaW50XCIpKSwgcihcIlBvaW50XCIpKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwicG9pbnRcIiwganM6IFwicG9pbnRcIiwgdHlwOiB1KGEocihcIlBvaW50XCIpKSwgcihcIlBvaW50XCIpKSB9LFxuICAgICAgeyBqc29uOiBcImZpblNlYW5jZVwiLCBqczogXCJmaW5TZWFuY2VcIiwgdHlwOiB1KHVuZGVmaW5lZCwgcihcIkZpblNlYW5jZVwiKSkgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJwYXJhZ3JhcGhlXCIsXG4gICAgICAgIGpzOiBcInBhcmFncmFwaGVcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiUG9pbnRcIikpKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgRmluU2VhbmNlOiBvKFt7IGpzb246IFwicG9pbnRcIiwganM6IFwicG9pbnRcIiwgdHlwOiByKFwiUG9pbnRcIikgfV0sIGZhbHNlKSxcbiAgT3JhdGV1cnM6IG8oXG4gICAgW1xuICAgICAge1xuICAgICAgICBqc29uOiBcIm9yYXRldXJcIixcbiAgICAgICAganM6IFwib3JhdGV1clwiLFxuICAgICAgICB0eXA6IHUoYShyKFwiT3JhdGV1ckVsZW1lbnRcIikpLCByKFwiT3JhdGV1ckVsZW1lbnRcIikpLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBPcmF0ZXVyRWxlbWVudDogbyhcbiAgICBbXG4gICAgICB7IGpzb246IFwibm9tXCIsIGpzOiBcIm5vbVwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcImlkXCIsIGpzOiBcImlkXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgICB7IGpzb246IFwicXVhbGl0ZVwiLCBqczogXCJxdWFsaXRlXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgVGV4dGU6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcIl9cIiwganM6IFwiX1wiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcImlkX3N5Y2Vyb25cIiwganM6IFwiaWRfc3ljZXJvblwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcInN0aW1lXCIsIGpzOiBcInN0aW1lXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgICB7IGpzb246IFwic3VwXCIsIGpzOiBcInN1cFwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImxpZW5BZHRcIixcbiAgICAgICAganM6IFwibGllbkFkdFwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCB1KGEocihcIlRleHRlXCIpKSwgcihcIlRleHRlXCIpKSksXG4gICAgICB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIFBvaW50OiBvKFxuICAgIFtcbiAgICAgIHsganNvbjogXCJuaXZwb2ludFwiLCBqczogXCJuaXZwb2ludFwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcInZhbGV1cl9wdHNvZGpcIiwganM6IFwidmFsZXVyX3B0c29kalwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcIm9yZGluYWxfcHJpc2VcIiwganM6IFwib3JkaW5hbF9wcmlzZVwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcImlkX3ByZXBhcmF0aW9uXCIsIGpzOiBcImlkX3ByZXBhcmF0aW9uXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwib3JkcmVfYWJzb2x1X3NlYW5jZVwiLFxuICAgICAgICBqczogXCJvcmRyZV9hYnNvbHVfc2VhbmNlXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpLFxuICAgICAgfSxcbiAgICAgIHsganNvbjogXCJjb2RlX2dyYW1tYWlyZVwiLCBqczogXCJjb2RlX2dyYW1tYWlyZVwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcImNvZGVfc3R5bGVcIiwganM6IFwiY29kZV9zdHlsZVwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcImNvZGVfcGFyb2xlXCIsIGpzOiBcImNvZGVfcGFyb2xlXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgICB7IGpzb246IFwic29tbWFpcmVcIiwganM6IFwic29tbWFpcmVcIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICAgIHsganNvbjogXCJpZF9zeWNlcm9uXCIsIGpzOiBcImlkX3N5Y2Vyb25cIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICAgIHsganNvbjogXCJ2YWxldXJcIiwganM6IFwidmFsZXVyXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwib3JhdGV1cnNcIixcbiAgICAgICAganM6IFwib3JhdGV1cnNcIixcbiAgICAgICAgdHlwOiB1KHIoXCJPcmF0ZXVyc1wiKSwgdShcIlwiLCB1bmRlZmluZWQpKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwidGV4dGVcIiwganM6IFwidGV4dGVcIiwgdHlwOiB1KHIoXCJUZXh0ZVwiKSwgdShcIlwiLCB1bmRlZmluZWQpKSB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcInBhcmFncmFwaGVcIixcbiAgICAgICAganM6IFwicGFyYWdyYXBoZVwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCB1KGEocihcIlBvaW50XCIpKSwgcihcIlBvaW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImludGVyRXh0cmFjdGlvblwiLFxuICAgICAgICBqczogXCJpbnRlckV4dHJhY3Rpb25cIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgdShhKHIoXCJQb2ludFwiKSksIHIoXCJQb2ludFwiKSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJwb2ludFwiLFxuICAgICAgICBqczogXCJwb2ludFwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCB1KGEocihcIlBvaW50XCIpKSwgcihcIlBvaW50XCIpKSksXG4gICAgICB9LFxuICAgICAgeyBqc29uOiBcInN0cnVjdHVyZVwiLCBqczogXCJzdHJ1Y3R1cmVcIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICAgIHsganNvbjogXCJpZF9hY3RldXJcIiwganM6IFwiaWRfYWN0ZXVyXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgICB7IGpzb246IFwiaWRfbWFuZGF0XCIsIGpzOiBcImlkX21hbmRhdFwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImlkX25vbWluYXRpb25fb2VcIixcbiAgICAgICAganM6IFwiaWRfbm9taW5hdGlvbl9vZVwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiaWRfbm9taW5hdGlvbl9vcFwiLFxuICAgICAgICBqczogXCJpZF9ub21pbmF0aW9uX29wXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpLFxuICAgICAgfSxcbiAgICAgIHsganNvbjogXCJvcmF0ZXVyXCIsIGpzOiBcIm9yYXRldXJcIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICAgIHsganNvbjogXCJiaWJhcmRcIiwganM6IFwiYmliYXJkXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgICB7IGpzb246IFwiYXJ0XCIsIGpzOiBcImFydFwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcImFkdFwiLCBqczogXCJhZHRcIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICAgIHsganNvbjogXCJzc2FkdFwiLCBqczogXCJzc2FkdFwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcInJvbGVkZWJhdFwiLCBqczogXCJyb2xlZGViYXRcIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICAgIHsganNvbjogXCJ0eXBlX2RlYmF0XCIsIGpzOiBcInR5cGVfZGViYXRcIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJjaGFuZ2VtZW50UHJlc2lkZW5jZVwiLFxuICAgICAgICBqczogXCJjaGFuZ2VtZW50UHJlc2lkZW5jZVwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCByKFwiUG9pbnRcIikpLFxuICAgICAgfSxcbiAgICAgIHsganNvbjogXCJkZWNpc2lvblwiLCBqczogXCJkZWNpc2lvblwiLCB0eXA6IHUodW5kZWZpbmVkLCByKFwiRGVjaXNpb25cIikpIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwib3V2ZXJ0dXJlU2VhbmNlXCIsXG4gICAgICAgIGpzOiBcIm91dmVydHVyZVNlYW5jZVwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCByKFwiUG9pbnRcIikpLFxuICAgICAgfSxcbiAgICAgIHsganNvbjogXCJub21fb3JhdGV1clwiLCBqczogXCJub21fb3JhdGV1clwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcInF1YWxpdGVcIiwganM6IFwicXVhbGl0ZVwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIFF1YW50aWVtZXM6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcImpvdXJuZWVcIiwganM6IFwiam91cm5lZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJzZXNzaW9uXCIsIGpzOiBcInNlc3Npb25cIiwgdHlwOiBcIlwiIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgTWV0YWRvbm5lZXM6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcImRhdGVTZWFuY2VcIiwganM6IFwiZGF0ZVNlYW5jZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJkYXRlU2VhbmNlSm91clwiLCBqczogXCJkYXRlU2VhbmNlSm91clwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJudW1TZWFuY2VKb3VyXCIsIGpzOiBcIm51bVNlYW5jZUpvdXJcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwibnVtU2VhbmNlXCIsIGpzOiBcIm51bVNlYW5jZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJ0eXBlQXNzZW1ibGVlXCIsIGpzOiBcInR5cGVBc3NlbWJsZWVcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwibGVnaXNsYXR1cmVcIiwganM6IFwibGVnaXNsYXR1cmVcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwic2Vzc2lvblwiLCBqczogXCJzZXNzaW9uXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcIm5vbUZpY2hpZXJKb1wiLCBqczogXCJub21GaWNoaWVySm9cIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwidmFsaWRpdGVcIiwganM6IFwidmFsaWRpdGVcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwiZXRhdFwiLCBqczogXCJldGF0XCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImRpZmZ1c2lvblwiLCBqczogXCJkaWZmdXNpb25cIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwidmVyc2lvblwiLCBqczogXCJ2ZXJzaW9uXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImVudmlyb25uZW1lbnRcIiwganM6IFwiZW52aXJvbm5lbWVudFwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJoZXVyZUdlbmVyYXRpb25cIiwganM6IFwiaGV1cmVHZW5lcmF0aW9uXCIsIHR5cDogRGF0ZSB9LFxuICAgICAgeyBqc29uOiBcInNvbW1haXJlXCIsIGpzOiBcInNvbW1haXJlXCIsIHR5cDogcihcIlNvbW1haXJlXCIpIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgU29tbWFpcmU6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcInByZXNpZGVudFNlYW5jZVwiLCBqczogXCJwcmVzaWRlbnRTZWFuY2VcIiwgdHlwOiByKFwiVGV4dGVcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJzb21tYWlyZTFcIixcbiAgICAgICAganM6IFwic29tbWFpcmUxXCIsXG4gICAgICAgIHR5cDogdShhKHIoXCJTb21tYWlyZUVsZW1lbnRcIikpLCByKFwiU29tbWFpcmVFbGVtZW50XCIpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwic29tbWFpcmUzXCIsXG4gICAgICAgIGpzOiBcInNvbW1haXJlM1wiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCB1KGEocihcIlNvbW1haXJlRWxlbWVudFwiKSksIHIoXCJTb21tYWlyZUVsZW1lbnRcIikpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwic29tbWFpcmUyXCIsXG4gICAgICAgIGpzOiBcInNvbW1haXJlMlwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCB1KGEocihcIlNvbW1haXJlRWxlbWVudFwiKSksIHIoXCJTb21tYWlyZUVsZW1lbnRcIikpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwicGFyYVwiLFxuICAgICAgICBqczogXCJwYXJhXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIHUoYShyKFwiVGV4dGVcIikpLCByKFwiVGV4dGVcIikpKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgU29tbWFpcmVFbGVtZW50OiBvKFxuICAgIFtcbiAgICAgIHsganNvbjogXCJ2YWxldXJfcHRzX29kalwiLCBqczogXCJ2YWxldXJfcHRzX29kalwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcInRpdHJlU3RydWN0XCIsXG4gICAgICAgIGpzOiBcInRpdHJlU3RydWN0XCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIHIoXCJUaXRyZVN0cnVjdFwiKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcInBhcmFcIixcbiAgICAgICAganM6IFwicGFyYVwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCB1KGEodShyKFwiVGV4dGVcIiksIFwiXCIpKSwgcihcIlRleHRlXCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcInNvbW1haXJlMlwiLFxuICAgICAgICBqczogXCJzb21tYWlyZTJcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgdShhKHIoXCJTb21tYWlyZUVsZW1lbnRcIikpLCByKFwiU29tbWFpcmVFbGVtZW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcInNvbW1haXJlM1wiLFxuICAgICAgICBqczogXCJzb21tYWlyZTNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgdShhKHIoXCJTb21tYWlyZUVsZW1lbnRcIikpLCByKFwiU29tbWFpcmVFbGVtZW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcInByZXNpZGVudFNlYW5jZVwiLFxuICAgICAgICBqczogXCJwcmVzaWRlbnRTZWFuY2VcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgdShhKHIoXCJUZXh0ZVwiKSksIHIoXCJUZXh0ZVwiKSkpLFxuICAgICAgfSxcbiAgICAgIHsganNvbjogXCJ0eXBlX2RlYmF0XCIsIGpzOiBcInR5cGVfZGViYXRcIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBUaXRyZVN0cnVjdDogbyhcbiAgICBbXG4gICAgICB7IGpzb246IFwiaWRfc3ljZXJvblwiLCBqczogXCJpZF9zeWNlcm9uXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImludGl0dWxlXCIsIGpzOiBcImludGl0dWxlXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgICB7IGpzb246IFwic291c0ludGl0dWxlXCIsIGpzOiBcInNvdXNJbnRpdHVsZVwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcInR5cGVfZGViYXRcIiwganM6IFwidHlwZV9kZWJhdFwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIERlY2lzaW9uOiBbXG4gICAgXCJBRE9QVElPTiBhbWVuZGVtZW50IChtYWluIGxldsOpZSkgYWR0XCIsXG4gICAgXCJBRE9QVElPTiBk4oCZdW4gYXJ0aWNsZSAodm90ZSDDoCBtYWluIGxldsOpZSlcIixcbiAgICBcIkFET1BUSU9OIGTigJl1biBzb3VzLWFtZW5kZW1lbnQgKG1haW4gbGV2w6llKSBzcy1hZHRcIixcbiAgICBcIkFET1BUSU9OIGRlIHBsdXNpZXVycyBhbWVuZGVtZW50cyAobWFpbiBsZXbDqWUpIGFkdHNcIixcbiAgICBcIkFET1BUSU9OIGRlIHBsdXNpZXVycyBzb3VzLWFtZW5kZW1lbnRzIChtYWluIGxldsOpZSkgc3MtYWR0c1wiLFxuICAgIFwiXCIsXG4gICAgXCJSRUpFVCBk4oCZdW4gYW1lbmRlbWVudCAobWFpbiBsZXbDqWUpIGFkdFwiLFxuICAgIFwiUkVKRVQgZOKAmXVuIGFydGljbGUgKHZvdGUgw6AgbWFpbiBsZXbDqWUpXCIsXG4gICAgXCJSRUpFVCBk4oCZdW4gc291cy1hbWVuZGVtZW50IChtYWluIGxldsOpZSkgc3MtYWR0XCIsXG4gICAgXCJSRUpFVCBkZSBwbHVzaWV1cnMgYW1lbmRlbWVudHMgKG1haW4gbGV2w6llKSBhZHRzXCIsXG4gICAgXCJSRUpFVCBkZSBwbHVzaWV1cnMgc291cy1hbWVuZGVtZW50cyAobWFpbiBsZXbDqWUpIHNzLWFkdHNcIixcbiAgICBcIlJFSkVUIG1vdGlvbiBkZSByZWpldCBwcsOpYWxhYmxlIChtYWluIGxldsOpZSlcIixcbiAgXSxcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUE2Q0EsV0FBWUEsUUFBUSwwQkFBUkEsUUFBUTtFQUFSQSxRQUFRO0VBQVJBLFFBQVE7RUFBUkEsUUFBUTtFQUFSQSxRQUFRO0VBQVJBLFFBQVE7RUFBUkEsUUFBUTtFQUFSQSxRQUFRO0VBQVJBLFFBQVE7RUFBUkEsUUFBUTtFQUFSQSxRQUFRO0VBQVJBLFFBQVE7RUFBUkEsUUFBUTtFQUFBLE9BQVJBLFFBQVE7QUFBQTtBQW1HcEI7QUFDQTtBQUNBLE9BQU8sTUFBTUMsT0FBTyxDQUFDO0VBQ25CLE9BQWNDLGVBQWVBLENBQUNDLElBQVksRUFBaUI7SUFDekQsT0FBT0MsSUFBSSxDQUFDQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0gsSUFBSSxDQUFDLEVBQUVJLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztFQUNuRDtFQUVBLE9BQWNDLG1CQUFtQkEsQ0FBQ0MsS0FBb0IsRUFBVTtJQUM5RCxPQUFPSixJQUFJLENBQUNLLFNBQVMsQ0FBQ0MsTUFBTSxDQUFDRixLQUFLLEVBQUVGLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7RUFDbkU7RUFFQSxPQUFjSyxhQUFhQSxDQUFDVCxJQUFZLEVBQWU7SUFDckQsT0FBT0MsSUFBSSxDQUFDQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0gsSUFBSSxDQUFDLEVBQUVJLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztFQUNqRDtFQUVBLE9B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