@tricoteuses/assemblee 1.10.5 → 2.0.0

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