@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,613 +0,0 @@
1
- "use strict";
2
-
3
- require("core-js/modules/es.symbol.async-iterator.js");
4
- require("core-js/modules/es.symbol.to-string-tag.js");
5
- require("core-js/modules/es.array.for-each.js");
6
- require("core-js/modules/es.array.from.js");
7
- require("core-js/modules/es.array.is-array.js");
8
- require("core-js/modules/es.array.reverse.js");
9
- require("core-js/modules/es.array.slice.js");
10
- require("core-js/modules/es.function.name.js");
11
- require("core-js/modules/es.json.to-string-tag.js");
12
- require("core-js/modules/es.math.to-string-tag.js");
13
- require("core-js/modules/es.object.create.js");
14
- require("core-js/modules/es.object.define-property.js");
15
- require("core-js/modules/es.object.get-own-property-descriptor.js");
16
- require("core-js/modules/es.object.get-prototype-of.js");
17
- require("core-js/modules/es.object.set-prototype-of.js");
18
- require("core-js/modules/es.promise.js");
19
- require("core-js/modules/es.regexp.to-string.js");
20
- require("core-js/modules/es.weak-map.js");
21
- require("core-js/modules/web.dom-collections.for-each.js");
22
- require("core-js/modules/es.symbol.js");
23
- require("core-js/modules/es.symbol.description.js");
24
- require("core-js/modules/es.symbol.iterator.js");
25
- require("core-js/modules/es.array.concat.js");
26
- require("core-js/modules/es.array.iterator.js");
27
- require("core-js/modules/es.array.join.js");
28
- require("core-js/modules/es.date.to-json.js");
29
- require("core-js/modules/es.date.to-string.js");
30
- require("core-js/modules/es.object.keys.js");
31
- require("core-js/modules/es.object.to-string.js");
32
- require("core-js/modules/es.regexp.exec.js");
33
- require("core-js/modules/es.string.ends-with.js");
34
- require("core-js/modules/es.string.iterator.js");
35
- require("core-js/modules/es.string.replace.js");
36
- require("core-js/modules/es.string.trim.js");
37
- require("core-js/modules/web.dom-collections.iterator.js");
38
- var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
39
- var _fsExtra = _interopRequireDefault(require("fs-extra"));
40
- var _path = _interopRequireDefault(require("path"));
41
- var _cleaners = require("../cleaners");
42
- var _datasets = require("../datasets");
43
- var _retrieve_documents = require("./retrieve_documents");
44
- var _dates = require("../dates");
45
- var _file_systems = require("../file_systems");
46
- var git = _interopRequireWildcard(require("../git"));
47
- var _acteurs_et_organes = require("../types/acteurs_et_organes");
48
- var _agendas = require("../types/agendas");
49
- var _amendements = require("../types/amendements");
50
- var _dossiers_legislatifs = require("../types/dossiers_legislatifs");
51
- var _scrutins = require("../types/scrutins");
52
- var _questions = require("../types/questions");
53
- var _debats = require("../types/debats");
54
- var _cli_helpers = require("./shared/cli_helpers");
55
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
56
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
57
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
58
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
59
- function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
60
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
61
- function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
62
- function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
63
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
64
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
65
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
66
- function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
67
- function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
68
- 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); }
69
- function parseArgs(argv) {
70
- var optionsDefinitions = [_cli_helpers.cloneOption, _cli_helpers.commitOption, _cli_helpers.remoteOption, _cli_helpers.legislatureOption, _cli_helpers.categoriesOption, _cli_helpers.silentOption, _cli_helpers.verboseOption, _cli_helpers.dataDirDefaultOption, _cli_helpers.pullOption, _cli_helpers.fetchDocumentsOption, _cli_helpers.parseDocumentsOption, _cli_helpers.documentFormatOption, {
71
- alias: "d",
72
- help: "single dataset to reorganize",
73
- name: "dataset",
74
- type: String
75
- }, {
76
- help: "do not reset --hard after commit to save I/O if the working tree is to be discarded",
77
- name: "no-reset-after-commit",
78
- type: Boolean
79
- }, {
80
- alias: "V",
81
- help: "don't validate data",
82
- name: "no-validate",
83
- type: Boolean
84
- }];
85
- var options = (0, _commandLineArgs["default"])(optionsDefinitions, {
86
- argv: argv
87
- });
88
- return options;
89
- }
90
- function cloneGit(gitGroupUrl, datasetName, dataDir) {
91
- git.clone(gitGroupUrl, "".concat(datasetName, "_nettoye"), dataDir);
92
- }
93
- function commitGit(datasetCleanDir, options, exitCode, subdirectories) {
94
- if (options.commit) {
95
- var errorCode = git.commitAndPush(datasetCleanDir, "Nouvelle moisson", options.remote);
96
- if (exitCode === 10 && errorCode !== 10 || exitCode === 0 && errorCode !== 0 && errorCode !== 10) {
97
- exitCode = errorCode;
98
- }
99
- }
100
- if (commitAndPushUid(datasetCleanDir, options, subdirectories) && (exitCode === 0 || exitCode === 10)) {
101
- exitCode = 1;
102
- }
103
- return exitCode;
104
- }
105
- function cleanAndValidateData(data, cleaner, fromJson, toJson, noValidate) {
106
- cleaner(data);
107
- if (_typeof(data) === "object" && Object.keys(data).length === 0) {
108
- // By convention: an empty object must be deleted.
109
- return null;
110
- }
111
- var jsonData = JSON.stringify(data, null, 2);
112
- if (!noValidate) {
113
- return jsonData;
114
- } else {
115
- var validatedData = fromJson(jsonData);
116
- return toJson(validatedData);
117
- }
118
- }
119
- function processFiles(_x, _x2, _x3, _x4, _x5, _x6, _x7) {
120
- return _processFiles.apply(this, arguments);
121
- }
122
- function _processFiles() {
123
- _processFiles = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(datasetRawDir, datasetCleanDir, walkDirParams, cleaner, dataConverter, options, postProcessor) {
124
- var _iterator3, _step3, filePathArray, filename, rawFilePath, rawJson, data, validateData, cleanJson, cleanFilePath;
125
- return _regeneratorRuntime().wrap(function _callee$(_context) {
126
- while (1) switch (_context.prev = _context.next) {
127
- case 0:
128
- _iterator3 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetRawDir, walkDirParams));
129
- _context.prev = 1;
130
- _iterator3.s();
131
- case 3:
132
- if ((_step3 = _iterator3.n()).done) {
133
- _context.next = 23;
134
- break;
135
- }
136
- filePathArray = _step3.value;
137
- filename = filePathArray[filePathArray.length - 1];
138
- if (filename.endsWith(".json")) {
139
- _context.next = 8;
140
- break;
141
- }
142
- return _context.abrupt("continue", 21);
143
- case 8:
144
- rawFilePath = _path["default"].join.apply(_path["default"], [datasetRawDir].concat(_toConsumableArray(filePathArray)));
145
- rawJson = _fsExtra["default"].readFileSync(rawFilePath, {
146
- encoding: "utf8"
147
- });
148
- if (options.verbose) console.log("Cleaning file: ".concat(rawFilePath, "..."));
149
- data = JSON.parse(rawJson);
150
- validateData = !options["no-validate"];
151
- cleanJson = cleanAndValidateData(data, cleaner, dataConverter.fromJson, dataConverter.toJson, validateData);
152
- if (!(cleanJson !== null)) {
153
- _context.next = 21;
154
- break;
155
- }
156
- cleanFilePath = _path["default"].join.apply(_path["default"], [datasetCleanDir].concat(_toConsumableArray(filePathArray)));
157
- _fsExtra["default"].ensureDirSync(_path["default"].dirname(cleanFilePath));
158
- _fsExtra["default"].writeFileSync(cleanFilePath, cleanJson, {
159
- encoding: "utf8"
160
- });
161
- if (!postProcessor) {
162
- _context.next = 21;
163
- break;
164
- }
165
- _context.next = 21;
166
- return postProcessor(data, datasetCleanDir, options);
167
- case 21:
168
- _context.next = 3;
169
- break;
170
- case 23:
171
- _context.next = 28;
172
- break;
173
- case 25:
174
- _context.prev = 25;
175
- _context.t0 = _context["catch"](1);
176
- _iterator3.e(_context.t0);
177
- case 28:
178
- _context.prev = 28;
179
- _iterator3.f();
180
- return _context.finish(28);
181
- case 31:
182
- case "end":
183
- return _context.stop();
184
- }
185
- }, _callee, null, [[1, 25, 28, 31]]);
186
- }));
187
- return _processFiles.apply(this, arguments);
188
- }
189
- function cleanReorganizedData(_x8) {
190
- return _cleanReorganizedData.apply(this, arguments);
191
- }
192
- function _cleanReorganizedData() {
193
- _cleanReorganizedData = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(options) {
194
- var _options$clone;
195
- var dataDir, exitCode, gitGroupUrl, enabledDatasets, chosenDatasets, _iterator4, _step4, dataset, datasetName, datasetRawDir, datasetCleanDir, _iterator5, _step5, _dataset, _datasetName, _datasetRawDir, _datasetCleanDir, _iterator6, _step6, _dataset2, _datasetName2, _datasetRawDir2, _datasetCleanDir2, _iterator7, _step7, _dataset3, _datasetName3, _datasetRawDir3, _datasetCleanDir3, _iterator8, _step8, _dataset4, _datasetName4, _datasetRawDir4, _datasetCleanDir4, _iterator9, _step9, _dataset5, _datasetName5, _datasetRawDir5, _datasetCleanDir5, _iterator10, _step10, _dataset6, _datasetName6, _datasetRawDir6, _datasetCleanDir6;
196
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
197
- while (1) switch (_context2.prev = _context2.next) {
198
- case 0:
199
- dataDir = options.dataDir;
200
- Date.prototype.toJSON = _dates.patchedDateToJson;
201
- exitCode = options.commit ? 10 : 0;
202
- gitGroupUrl = (_options$clone = options.clone) === null || _options$clone === void 0 ? void 0 : _options$clone.trim().replace(/\/+$/, "");
203
- enabledDatasets = (0, _datasets.getEnabledDatasets)(options.categories);
204
- chosenDatasets = (0, _datasets.filterByLegislature)(_datasets.datasets, options.legislature);
205
- if (!(enabledDatasets & _datasets.EnabledDatasets.ActeursEtOrganes)) {
206
- _context2.next = 35;
207
- break;
208
- }
209
- _iterator4 = _createForOfIteratorHelper(chosenDatasets.acteursEtOrganes);
210
- _context2.prev = 8;
211
- _iterator4.s();
212
- case 10:
213
- if ((_step4 = _iterator4.n()).done) {
214
- _context2.next = 27;
215
- break;
216
- }
217
- dataset = _step4.value;
218
- datasetName = _path["default"].basename(dataset.filename, ".json");
219
- if (!(options.dataset && datasetName !== options.dataset)) {
220
- _context2.next = 15;
221
- break;
222
- }
223
- return _context2.abrupt("continue", 25);
224
- case 15:
225
- cloneGit(gitGroupUrl, datasetName, dataDir);
226
- datasetRawDir = _path["default"].join(dataDir, datasetName);
227
- datasetCleanDir = "".concat(datasetRawDir, "_nettoye");
228
- if (options.pull) {
229
- git.resetAndPull(datasetCleanDir);
230
- }
231
- analyzeAndRemove(datasetName, options);
232
- _context2.next = 22;
233
- return processFiles(datasetRawDir, datasetCleanDir, ["acteurs"], _cleaners.cleanActeur, {
234
- fromJson: _acteurs_et_organes.Convert.toActeur,
235
- toJson: _acteurs_et_organes.Convert.acteurToJson
236
- }, options);
237
- case 22:
238
- _context2.next = 24;
239
- return processFiles(datasetRawDir, datasetCleanDir, ["organes"], _cleaners.cleanOrgane, {
240
- fromJson: _acteurs_et_organes.Convert.toOrgane,
241
- toJson: _acteurs_et_organes.Convert.organeToJson
242
- }, options);
243
- case 24:
244
- exitCode = commitGit(datasetCleanDir, options, exitCode, ["acteurs", "organes"]);
245
- case 25:
246
- _context2.next = 10;
247
- break;
248
- case 27:
249
- _context2.next = 32;
250
- break;
251
- case 29:
252
- _context2.prev = 29;
253
- _context2.t0 = _context2["catch"](8);
254
- _iterator4.e(_context2.t0);
255
- case 32:
256
- _context2.prev = 32;
257
- _iterator4.f();
258
- return _context2.finish(32);
259
- case 35:
260
- if (!(enabledDatasets & _datasets.EnabledDatasets.Agendas)) {
261
- _context2.next = 61;
262
- break;
263
- }
264
- _iterator5 = _createForOfIteratorHelper(chosenDatasets.agendas);
265
- _context2.prev = 37;
266
- _iterator5.s();
267
- case 39:
268
- if ((_step5 = _iterator5.n()).done) {
269
- _context2.next = 53;
270
- break;
271
- }
272
- _dataset = _step5.value;
273
- _datasetName = _path["default"].basename(_dataset.filename, ".json");
274
- if (!(options.dataset && _datasetName !== options.dataset)) {
275
- _context2.next = 44;
276
- break;
277
- }
278
- return _context2.abrupt("continue", 51);
279
- case 44:
280
- cloneGit(gitGroupUrl, _datasetName, dataDir);
281
- analyzeAndRemove(_datasetName, options);
282
- _datasetRawDir = _path["default"].join(dataDir, _datasetName);
283
- _datasetCleanDir = "".concat(_datasetRawDir, "_nettoye");
284
- _context2.next = 50;
285
- return processFiles(_datasetRawDir, _datasetCleanDir, [], _cleaners.cleanReunion, {
286
- fromJson: _agendas.Convert.toReunion,
287
- toJson: _agendas.Convert.reunionToJson
288
- }, options);
289
- case 50:
290
- exitCode = commitGit(_datasetCleanDir, options, exitCode, ["."]);
291
- case 51:
292
- _context2.next = 39;
293
- break;
294
- case 53:
295
- _context2.next = 58;
296
- break;
297
- case 55:
298
- _context2.prev = 55;
299
- _context2.t1 = _context2["catch"](37);
300
- _iterator5.e(_context2.t1);
301
- case 58:
302
- _context2.prev = 58;
303
- _iterator5.f();
304
- return _context2.finish(58);
305
- case 61:
306
- if (!(enabledDatasets & _datasets.EnabledDatasets.Amendements)) {
307
- _context2.next = 87;
308
- break;
309
- }
310
- _iterator6 = _createForOfIteratorHelper(chosenDatasets.amendements);
311
- _context2.prev = 63;
312
- _iterator6.s();
313
- case 65:
314
- if ((_step6 = _iterator6.n()).done) {
315
- _context2.next = 79;
316
- break;
317
- }
318
- _dataset2 = _step6.value;
319
- _datasetName2 = _path["default"].basename(_dataset2.filename, ".json");
320
- if (!(options.dataset && _datasetName2 !== options.dataset)) {
321
- _context2.next = 70;
322
- break;
323
- }
324
- return _context2.abrupt("continue", 77);
325
- case 70:
326
- cloneGit(gitGroupUrl, _datasetName2, dataDir);
327
- analyzeAndRemove(_datasetName2, options);
328
- _datasetRawDir2 = _path["default"].join(dataDir, _datasetName2);
329
- _datasetCleanDir2 = "".concat(_datasetRawDir2, "_nettoye");
330
- _context2.next = 76;
331
- return processFiles(_datasetRawDir2, _datasetCleanDir2, [], _cleaners.cleanAmendement, {
332
- fromJson: _amendements.Convert.toAmendement,
333
- toJson: _amendements.Convert.amendementToJson
334
- }, options);
335
- case 76:
336
- exitCode = commitGit(_datasetCleanDir2, options, exitCode, ["."]);
337
- case 77:
338
- _context2.next = 65;
339
- break;
340
- case 79:
341
- _context2.next = 84;
342
- break;
343
- case 81:
344
- _context2.prev = 81;
345
- _context2.t2 = _context2["catch"](63);
346
- _iterator6.e(_context2.t2);
347
- case 84:
348
- _context2.prev = 84;
349
- _iterator6.f();
350
- return _context2.finish(84);
351
- case 87:
352
- if (!(enabledDatasets & _datasets.EnabledDatasets.DossiersLegislatifs)) {
353
- _context2.next = 115;
354
- break;
355
- }
356
- _iterator7 = _createForOfIteratorHelper(chosenDatasets.dossiersLegislatifs);
357
- _context2.prev = 89;
358
- _iterator7.s();
359
- case 91:
360
- if ((_step7 = _iterator7.n()).done) {
361
- _context2.next = 107;
362
- break;
363
- }
364
- _dataset3 = _step7.value;
365
- _datasetName3 = _path["default"].basename(_dataset3.filename, ".json");
366
- if (!(options.dataset && _datasetName3 !== options.dataset)) {
367
- _context2.next = 96;
368
- break;
369
- }
370
- return _context2.abrupt("continue", 105);
371
- case 96:
372
- cloneGit(gitGroupUrl, _datasetName3, dataDir);
373
- analyzeAndRemove(_datasetName3, options);
374
- _datasetRawDir3 = _path["default"].join(dataDir, _datasetName3);
375
- _datasetCleanDir3 = "".concat(_datasetRawDir3, "_nettoye");
376
- _context2.next = 102;
377
- return processFiles(_datasetRawDir3, _datasetCleanDir3, ["documents"], _cleaners.cleanDocumentOrDivision, {
378
- fromJson: _dossiers_legislatifs.Convert.toDocument,
379
- toJson: _dossiers_legislatifs.Convert.documentToJson
380
- }, options, _retrieve_documents.downloadAndParse);
381
- case 102:
382
- _context2.next = 104;
383
- return processFiles(_datasetRawDir3, _datasetCleanDir3, ["dossiers"], _cleaners.cleanDossierParlementaire, {
384
- fromJson: _dossiers_legislatifs.Convert.toDossierParlementaire,
385
- toJson: _dossiers_legislatifs.Convert.dossierParlementaireToJson
386
- }, options);
387
- case 104:
388
- exitCode = commitGit(_datasetCleanDir3, options, exitCode, ["documents", "dossiers"]);
389
- case 105:
390
- _context2.next = 91;
391
- break;
392
- case 107:
393
- _context2.next = 112;
394
- break;
395
- case 109:
396
- _context2.prev = 109;
397
- _context2.t3 = _context2["catch"](89);
398
- _iterator7.e(_context2.t3);
399
- case 112:
400
- _context2.prev = 112;
401
- _iterator7.f();
402
- return _context2.finish(112);
403
- case 115:
404
- if (!(enabledDatasets & _datasets.EnabledDatasets.Scrutins)) {
405
- _context2.next = 141;
406
- break;
407
- }
408
- _iterator8 = _createForOfIteratorHelper(chosenDatasets.scrutins);
409
- _context2.prev = 117;
410
- _iterator8.s();
411
- case 119:
412
- if ((_step8 = _iterator8.n()).done) {
413
- _context2.next = 133;
414
- break;
415
- }
416
- _dataset4 = _step8.value;
417
- _datasetName4 = _path["default"].basename(_dataset4.filename, ".json");
418
- if (!(options.dataset && _datasetName4 !== options.dataset)) {
419
- _context2.next = 124;
420
- break;
421
- }
422
- return _context2.abrupt("continue", 131);
423
- case 124:
424
- cloneGit(gitGroupUrl, _datasetName4, dataDir);
425
- analyzeAndRemove(_datasetName4, options);
426
- _datasetRawDir4 = _path["default"].join(dataDir, _datasetName4);
427
- _datasetCleanDir4 = "".concat(_datasetRawDir4, "_nettoye");
428
- _context2.next = 130;
429
- return processFiles(_datasetRawDir4, _datasetCleanDir4, [], _cleaners.cleanScrutin, {
430
- fromJson: _scrutins.Convert.toScrutin,
431
- toJson: _scrutins.Convert.scrutinToJson
432
- }, options);
433
- case 130:
434
- exitCode = commitGit(_datasetCleanDir4, options, exitCode, ["."]);
435
- case 131:
436
- _context2.next = 119;
437
- break;
438
- case 133:
439
- _context2.next = 138;
440
- break;
441
- case 135:
442
- _context2.prev = 135;
443
- _context2.t4 = _context2["catch"](117);
444
- _iterator8.e(_context2.t4);
445
- case 138:
446
- _context2.prev = 138;
447
- _iterator8.f();
448
- return _context2.finish(138);
449
- case 141:
450
- if (!(enabledDatasets & _datasets.EnabledDatasets.Questions)) {
451
- _context2.next = 167;
452
- break;
453
- }
454
- _iterator9 = _createForOfIteratorHelper(_datasets.datasets.questions);
455
- _context2.prev = 143;
456
- _iterator9.s();
457
- case 145:
458
- if ((_step9 = _iterator9.n()).done) {
459
- _context2.next = 159;
460
- break;
461
- }
462
- _dataset5 = _step9.value;
463
- _datasetName5 = _path["default"].basename(_dataset5.filename, ".json");
464
- if (!(options.dataset && _datasetName5 !== options.dataset)) {
465
- _context2.next = 150;
466
- break;
467
- }
468
- return _context2.abrupt("continue", 157);
469
- case 150:
470
- cloneGit(gitGroupUrl, _datasetName5, dataDir);
471
- analyzeAndRemove(_datasetName5, options);
472
- _datasetRawDir5 = _path["default"].join(dataDir, _datasetName5);
473
- _datasetCleanDir5 = "".concat(_datasetRawDir5, "_nettoye");
474
- _context2.next = 156;
475
- return processFiles(_datasetRawDir5, _datasetCleanDir5, [], _cleaners.cleanQuestion, {
476
- fromJson: _questions.Convert.toQuestion,
477
- toJson: _questions.Convert.questionToJson
478
- }, options);
479
- case 156:
480
- exitCode = commitGit(_datasetCleanDir5, options, exitCode, ["."]);
481
- case 157:
482
- _context2.next = 145;
483
- break;
484
- case 159:
485
- _context2.next = 164;
486
- break;
487
- case 161:
488
- _context2.prev = 161;
489
- _context2.t5 = _context2["catch"](143);
490
- _iterator9.e(_context2.t5);
491
- case 164:
492
- _context2.prev = 164;
493
- _iterator9.f();
494
- return _context2.finish(164);
495
- case 167:
496
- if (!(enabledDatasets & _datasets.EnabledDatasets.ComptesRendusSeances)) {
497
- _context2.next = 193;
498
- break;
499
- }
500
- _iterator10 = _createForOfIteratorHelper(_datasets.datasets.comptesRendusSeances);
501
- _context2.prev = 169;
502
- _iterator10.s();
503
- case 171:
504
- if ((_step10 = _iterator10.n()).done) {
505
- _context2.next = 185;
506
- break;
507
- }
508
- _dataset6 = _step10.value;
509
- _datasetName6 = _path["default"].basename(_dataset6.filename, ".xml");
510
- if (!(options.dataset && _datasetName6 !== options.dataset)) {
511
- _context2.next = 176;
512
- break;
513
- }
514
- return _context2.abrupt("continue", 183);
515
- case 176:
516
- cloneGit(gitGroupUrl, _datasetName6, dataDir);
517
- analyzeAndRemove(_datasetName6, options);
518
- _datasetRawDir6 = _path["default"].join(dataDir, _datasetName6);
519
- _datasetCleanDir6 = "".concat(_datasetRawDir6, "_nettoye");
520
- _context2.next = 182;
521
- return processFiles(_datasetRawDir6, _datasetCleanDir6, [], _cleaners.cleanCompteRendu, {
522
- fromJson: _debats.Convert.toCompteRendu,
523
- toJson: _debats.Convert.compteRenduToJson
524
- }, options);
525
- case 182:
526
- exitCode = commitGit(_datasetCleanDir6, options, exitCode, ["."]);
527
- case 183:
528
- _context2.next = 171;
529
- break;
530
- case 185:
531
- _context2.next = 190;
532
- break;
533
- case 187:
534
- _context2.prev = 187;
535
- _context2.t6 = _context2["catch"](169);
536
- _iterator10.e(_context2.t6);
537
- case 190:
538
- _context2.prev = 190;
539
- _iterator10.f();
540
- return _context2.finish(190);
541
- case 193:
542
- // Restore standard conversion of dates to JSON.
543
- Date.prototype.toJSON = _dates.existingDateToJson;
544
- if (!options.silent) {
545
- console.log("Finished !");
546
- }
547
- return _context2.abrupt("return", exitCode);
548
- case 196:
549
- case "end":
550
- return _context2.stop();
551
- }
552
- }, _callee2, null, [[8, 29, 32, 35], [37, 55, 58, 61], [63, 81, 84, 87], [89, 109, 112, 115], [117, 135, 138, 141], [143, 161, 164, 167], [169, 187, 190, 193]]);
553
- }));
554
- return _cleanReorganizedData.apply(this, arguments);
555
- }
556
- function analyzeAndRemove(datasetName, options) {
557
- var dataDir = options.dataDir;
558
- var datasetRawDir = _path["default"].join(dataDir, datasetName);
559
- var datasetCleanDir = "".concat(datasetRawDir, "_nettoye");
560
- if (!options.silent) {
561
- console.log("Cleaning directory: ".concat(datasetCleanDir, "\u2026"));
562
- }
563
- _fsExtra["default"].ensureDirSync(datasetCleanDir);
564
- var _iterator = _createForOfIteratorHelper(_fsExtra["default"].readdirSync(datasetCleanDir)),
565
- _step;
566
- try {
567
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
568
- var filename = _step.value;
569
- if (filename[0] === ".") {
570
- continue;
571
- }
572
- var pathname = _path["default"].join(datasetCleanDir, filename);
573
- _fsExtra["default"].removeSync(pathname);
574
- }
575
- } catch (err) {
576
- _iterator.e(err);
577
- } finally {
578
- _iterator.f();
579
- }
580
- }
581
- function commitAndPushUid(repositoryDir, options, subdirectories) {
582
- var error = false;
583
- if (options.commit) {
584
- git.uidBranchUpdate(repositoryDir, subdirectories, options["no-reset-after-commit"]);
585
- var _iterator2 = _createForOfIteratorHelper(options.remote || []),
586
- _step2;
587
- try {
588
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
589
- var remote = _step2.value;
590
- try {
591
- git.run(repositoryDir, "push --quiet ".concat(remote, " uid:uid"));
592
- } catch (childProcess) {
593
- error = true;
594
- }
595
- }
596
- } catch (err) {
597
- _iterator2.e(err);
598
- } finally {
599
- _iterator2.f();
600
- }
601
- }
602
- return error;
603
- }
604
- function main(argv) {
605
- var options = parseArgs(argv);
606
- return cleanReorganizedData(options);
607
- }
608
-
609
- /* istanbul ignore if */
610
- if (process.argv[1].endsWith("clean_reorganized_data.ts")) {
611
- main(process.argv).then(process.exit);
612
- }
613
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2NsZWFuZXJzIiwiX2RhdGFzZXRzIiwiX3JldHJpZXZlX2RvY3VtZW50cyIsIl9kYXRlcyIsIl9maWxlX3N5c3RlbXMiLCJnaXQiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9hY3RldXJzX2V0X29yZ2FuZXMiLCJfYWdlbmRhcyIsIl9hbWVuZGVtZW50cyIsIl9kb3NzaWVyc19sZWdpc2xhdGlmcyIsIl9zY3J1dGlucyIsIl9xdWVzdGlvbnMiLCJfZGViYXRzIiwiX2NsaV9oZWxwZXJzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsInByb3RvdHlwZSIsIm8iLCJ2YWx1ZSIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIndyYXAiLCJHZW5lcmF0b3IiLCJjcmVhdGUiLCJDb250ZXh0IiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwidHlwZSIsImFyZyIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX24iLCJGIiwidG9TdHJpbmciLCJ0ZXN0IiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmd1bWVudHMiLCJhcHBseSIsIl9uZXh0IiwiX3Rocm93IiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImNsb25lT3B0aW9uIiwiY29tbWl0T3B0aW9uIiwicmVtb3RlT3B0aW9uIiwibGVnaXNsYXR1cmVPcHRpb24iLCJjYXRlZ29yaWVzT3B0aW9uIiwic2lsZW50T3B0aW9uIiwidmVyYm9zZU9wdGlvbiIsImRhdGFEaXJEZWZhdWx0T3B0aW9uIiwicHVsbE9wdGlvbiIsImZldGNoRG9jdW1lbnRzT3B0aW9uIiwicGFyc2VEb2N1bWVudHNPcHRpb24iLCJkb2N1bWVudEZvcm1hdE9wdGlvbiIsImFsaWFzIiwiaGVscCIsIlN0cmluZyIsIkJvb2xlYW4iLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwiY2xvbmVHaXQiLCJnaXRHcm91cFVybCIsImRhdGFzZXROYW1lIiwiZGF0YURpciIsImNsb25lIiwiY29uY2F0IiwiY29tbWl0R2l0IiwiZGF0YXNldENsZWFuRGlyIiwiZXhpdENvZGUiLCJzdWJkaXJlY3RvcmllcyIsImNvbW1pdCIsImVycm9yQ29kZSIsImNvbW1pdEFuZFB1c2giLCJyZW1vdGUiLCJjb21taXRBbmRQdXNoVWlkIiwiY2xlYW5BbmRWYWxpZGF0ZURhdGEiLCJkYXRhIiwiY2xlYW5lciIsImZyb21Kc29uIiwidG9Kc29uIiwibm9WYWxpZGF0ZSIsImpzb25EYXRhIiwiSlNPTiIsInN0cmluZ2lmeSIsInZhbGlkYXRlZERhdGEiLCJwcm9jZXNzRmlsZXMiLCJfeCIsIl94MiIsIl94MyIsIl94NCIsIl94NSIsIl94NiIsIl94NyIsIl9wcm9jZXNzRmlsZXMiLCJfY2FsbGVlIiwiZGF0YXNldFJhd0RpciIsIndhbGtEaXJQYXJhbXMiLCJkYXRhQ29udmVydGVyIiwicG9zdFByb2Nlc3NvciIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJmaWxlUGF0aEFycmF5IiwiZmlsZW5hbWUiLCJyYXdGaWxlUGF0aCIsInJhd0pzb24iLCJ2YWxpZGF0ZURhdGEiLCJjbGVhbkpzb24iLCJjbGVhbkZpbGVQYXRoIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsIndhbGtEaXIiLCJlbmRzV2l0aCIsInBhdGgiLCJqb2luIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsInZlcmJvc2UiLCJjb25zb2xlIiwibG9nIiwicGFyc2UiLCJlbnN1cmVEaXJTeW5jIiwiZGlybmFtZSIsIndyaXRlRmlsZVN5bmMiLCJ0MCIsImNsZWFuUmVvcmdhbml6ZWREYXRhIiwiX3g4IiwiX2NsZWFuUmVvcmdhbml6ZWREYXRhIiwiX2NhbGxlZTIiLCJfb3B0aW9ucyRjbG9uZSIsImVuYWJsZWREYXRhc2V0cyIsImNob3NlbkRhdGFzZXRzIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsImRhdGFzZXQiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwiX2RhdGFzZXQiLCJfZGF0YXNldE5hbWUiLCJfZGF0YXNldFJhd0RpciIsIl9kYXRhc2V0Q2xlYW5EaXIiLCJfaXRlcmF0b3I2IiwiX3N0ZXA2IiwiX2RhdGFzZXQyIiwiX2RhdGFzZXROYW1lMiIsIl9kYXRhc2V0UmF3RGlyMiIsIl9kYXRhc2V0Q2xlYW5EaXIyIiwiX2l0ZXJhdG9yNyIsIl9zdGVwNyIsIl9kYXRhc2V0MyIsIl9kYXRhc2V0TmFtZTMiLCJfZGF0YXNldFJhd0RpcjMiLCJfZGF0YXNldENsZWFuRGlyMyIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJfZGF0YXNldDQiLCJfZGF0YXNldE5hbWU0IiwiX2RhdGFzZXRSYXdEaXI0IiwiX2RhdGFzZXRDbGVhbkRpcjQiLCJfaXRlcmF0b3I5IiwiX3N0ZXA5IiwiX2RhdGFzZXQ1IiwiX2RhdGFzZXROYW1lNSIsIl9kYXRhc2V0UmF3RGlyNSIsIl9kYXRhc2V0Q2xlYW5EaXI1IiwiX2l0ZXJhdG9yMTAiLCJfc3RlcDEwIiwiX2RhdGFzZXQ2IiwiX2RhdGFzZXROYW1lNiIsIl9kYXRhc2V0UmF3RGlyNiIsIl9kYXRhc2V0Q2xlYW5EaXI2IiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiRGF0ZSIsInRvSlNPTiIsInBhdGNoZWREYXRlVG9Kc29uIiwidHJpbSIsInJlcGxhY2UiLCJnZXRFbmFibGVkRGF0YXNldHMiLCJjYXRlZ29yaWVzIiwiZmlsdGVyQnlMZWdpc2xhdHVyZSIsImRhdGFzZXRzIiwibGVnaXNsYXR1cmUiLCJFbmFibGVkRGF0YXNldHMiLCJBY3RldXJzRXRPcmdhbmVzIiwiYWN0ZXVyc0V0T3JnYW5lcyIsImJhc2VuYW1lIiwicHVsbCIsInJlc2V0QW5kUHVsbCIsImFuYWx5emVBbmRSZW1vdmUiLCJjbGVhbkFjdGV1ciIsIkFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0IiwidG9BY3RldXIiLCJhY3RldXJUb0pzb24iLCJjbGVhbk9yZ2FuZSIsInRvT3JnYW5lIiwib3JnYW5lVG9Kc29uIiwiQWdlbmRhcyIsImFnZW5kYXMiLCJjbGVhblJldW5pb24iLCJBZ2VuZGFzQ29udmVydCIsInRvUmV1bmlvbiIsInJldW5pb25Ub0pzb24iLCJ0MSIsIkFtZW5kZW1lbnRzIiwiYW1lbmRlbWVudHMiLCJjbGVhbkFtZW5kZW1lbnQiLCJBbWVuZGVtZW50c0NvbnZlcnQiLCJ0b0FtZW5kZW1lbnQiLCJhbWVuZGVtZW50VG9Kc29uIiwidDIiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsImNsZWFuRG9jdW1lbnRPckRpdmlzaW9uIiwiRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQiLCJ0b0RvY3VtZW50IiwiZG9jdW1lbnRUb0pzb24iLCJkb3dubG9hZEFuZFBhcnNlIiwiY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSIsInRvRG9zc2llclBhcmxlbWVudGFpcmUiLCJkb3NzaWVyUGFybGVtZW50YWlyZVRvSnNvbiIsInQzIiwiU2NydXRpbnMiLCJzY3J1dGlucyIsImNsZWFuU2NydXRpbiIsIlNjcnV0aW5zQ29udmVydCIsInRvU2NydXRpbiIsInNjcnV0aW5Ub0pzb24iLCJ0NCIsIlF1ZXN0aW9ucyIsInF1ZXN0aW9ucyIsImNsZWFuUXVlc3Rpb24iLCJRdWVzdGlvbnNDb252ZXJ0IiwidG9RdWVzdGlvbiIsInF1ZXN0aW9uVG9Kc29uIiwidDUiLCJDb21wdGVzUmVuZHVzU2VhbmNlcyIsImNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiY2xlYW5Db21wdGVSZW5kdSIsIkNvbXB0ZXNSZW5kdXNDb252ZXJ0IiwidG9Db21wdGVSZW5kdSIsImNvbXB0ZVJlbmR1VG9Kc29uIiwidDYiLCJleGlzdGluZ0RhdGVUb0pzb24iLCJzaWxlbnQiLCJfaXRlcmF0b3IiLCJyZWFkZGlyU3luYyIsIl9zdGVwIiwicGF0aG5hbWUiLCJyZW1vdmVTeW5jIiwiZXJyIiwicmVwb3NpdG9yeURpciIsImVycm9yIiwidWlkQnJhbmNoVXBkYXRlIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsInJ1biIsImNoaWxkUHJvY2VzcyIsIm1haW4iLCJwcm9jZXNzIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2NsZWFuX3Jlb3JnYW5pemVkX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQge1xuICBjbGVhbkFjdGV1cixcbiAgY2xlYW5BbWVuZGVtZW50LFxuICBjbGVhbkRvY3VtZW50T3JEaXZpc2lvbixcbiAgY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgY2xlYW5PcmdhbmUsXG4gIGNsZWFuUmV1bmlvbixcbiAgY2xlYW5TY3J1dGluLFxuICBjbGVhblF1ZXN0aW9uLFxuICBjbGVhbkNvbXB0ZVJlbmR1LFxufSBmcm9tIFwiLi4vY2xlYW5lcnNcIlxuaW1wb3J0IHtcbiAgZGF0YXNldHMsXG4gIEVuYWJsZWREYXRhc2V0cyxcbiAgZ2V0RW5hYmxlZERhdGFzZXRzLFxuICBmaWx0ZXJCeUxlZ2lzbGF0dXJlLFxufSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgZG93bmxvYWRBbmRQYXJzZSB9IGZyb20gXCIuL3JldHJpZXZlX2RvY3VtZW50c1wiXG5pbXBvcnQgeyBleGlzdGluZ0RhdGVUb0pzb24sIHBhdGNoZWREYXRlVG9Kc29uIH0gZnJvbSBcIi4uL2RhdGVzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vZ2l0XCJcbmltcG9ydCB7XG4gIEFjdGV1cixcbiAgQ29udmVydCBhcyBBY3RldXJzRXRPcmdhbmVzQ29udmVydCxcbiAgT3JnYW5lLFxufSBmcm9tIFwiLi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWdlbmRhc0NvbnZlcnQsIFJldW5pb24gfSBmcm9tIFwiLi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50LCBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzQ29udmVydCB9IGZyb20gXCIuLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFNjcnV0aW5zQ29udmVydCwgU2NydXRpbiB9IGZyb20gXCIuLi90eXBlcy9zY3J1dGluc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFF1ZXN0aW9uc0NvbnZlcnQsIFF1ZXN0aW9uIH0gZnJvbSBcIi4uL3R5cGVzL3F1ZXN0aW9uc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIENvbXB0ZXNSZW5kdXNDb252ZXJ0LCBDb21wdGVSZW5kdSB9IGZyb20gXCIuLi90eXBlcy9kZWJhdHNcIlxuaW1wb3J0IHtcbiAgY2xvbmVPcHRpb24sXG4gIGNvbW1pdE9wdGlvbixcbiAgcmVtb3RlT3B0aW9uLFxuICBsZWdpc2xhdHVyZU9wdGlvbixcbiAgY2F0ZWdvcmllc09wdGlvbixcbiAgZGF0YURpckRlZmF1bHRPcHRpb24sXG4gIHNpbGVudE9wdGlvbixcbiAgdmVyYm9zZU9wdGlvbixcbiAgcHVsbE9wdGlvbixcbiAgZmV0Y2hEb2N1bWVudHNPcHRpb24sXG4gIHBhcnNlRG9jdW1lbnRzT3B0aW9uLFxuICBkb2N1bWVudEZvcm1hdE9wdGlvbixcbn0gZnJvbSBcIi4vc2hhcmVkL2NsaV9oZWxwZXJzXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIGNsb25lT3B0aW9uLFxuICAgIGNvbW1pdE9wdGlvbixcbiAgICByZW1vdGVPcHRpb24sXG4gICAgbGVnaXNsYXR1cmVPcHRpb24sXG4gICAgY2F0ZWdvcmllc09wdGlvbixcbiAgICBzaWxlbnRPcHRpb24sXG4gICAgdmVyYm9zZU9wdGlvbixcbiAgICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgICBwdWxsT3B0aW9uLFxuICAgIGZldGNoRG9jdW1lbnRzT3B0aW9uLFxuICAgIHBhcnNlRG9jdW1lbnRzT3B0aW9uLFxuICAgIGRvY3VtZW50Rm9ybWF0T3B0aW9uLFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImRcIixcbiAgICAgIGhlbHA6IFwic2luZ2xlIGRhdGFzZXQgdG8gcmVvcmdhbml6ZVwiLFxuICAgICAgbmFtZTogXCJkYXRhc2V0XCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWxwOiBcImRvIG5vdCByZXNldCAtLWhhcmQgYWZ0ZXIgY29tbWl0IHRvIHNhdmUgSS9PIGlmIHRoZSB3b3JraW5nIHRyZWUgaXMgdG8gYmUgZGlzY2FyZGVkXCIsXG4gICAgICBuYW1lOiBcIm5vLXJlc2V0LWFmdGVyLWNvbW1pdFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcIlZcIixcbiAgICAgIGhlbHA6IFwiZG9uJ3QgdmFsaWRhdGUgZGF0YVwiLFxuICAgICAgbmFtZTogXCJuby12YWxpZGF0ZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICBdXG4gIGNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zLCB7XG4gICAgYXJndjogYXJndixcbiAgfSlcbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuZnVuY3Rpb24gY2xvbmVHaXQoXG4gIGdpdEdyb3VwVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGRhdGFzZXROYW1lOiBzdHJpbmcsXG4gIGRhdGFEaXI6IHN0cmluZyxcbik6IHZvaWQge1xuICBnaXQuY2xvbmUoZ2l0R3JvdXBVcmwsIGAke2RhdGFzZXROYW1lfV9uZXR0b3llYCwgZGF0YURpcilcbn1cblxuZnVuY3Rpb24gY29tbWl0R2l0KFxuICBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyxcbiAgb3B0aW9uczogYW55LFxuICBleGl0Q29kZTogbnVtYmVyLFxuICBzdWJkaXJlY3RvcmllczogYW55LFxuKTogbnVtYmVyIHtcbiAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgIClcbiAgICBpZiAoXG4gICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgKSB7XG4gICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgIH1cbiAgfVxuICBpZiAoXG4gICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIHN1YmRpcmVjdG9yaWVzKSAmJlxuICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICkge1xuICAgIGV4aXRDb2RlID0gMVxuICB9XG4gIHJldHVybiBleGl0Q29kZVxufVxuXG5mdW5jdGlvbiBjbGVhbkFuZFZhbGlkYXRlRGF0YTxUPihcbiAgZGF0YTogYW55LFxuICBjbGVhbmVyOiAoZGF0YTogVCkgPT4gdm9pZCxcbiAgZnJvbUpzb246IChqc29uOiBzdHJpbmcpID0+IFQsXG4gIHRvSnNvbjogKGRhdGE6IFQpID0+IHN0cmluZyxcbiAgbm9WYWxpZGF0ZTogQm9vbGVhbixcbik6IHN0cmluZyB8IG51bGwge1xuICBjbGVhbmVyKGRhdGEpXG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJvYmplY3RcIiAmJiBPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGggPT09IDApIHtcbiAgICAvLyBCeSBjb252ZW50aW9uOiBhbiBlbXB0eSBvYmplY3QgbXVzdCBiZSBkZWxldGVkLlxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QganNvbkRhdGEgPSBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKVxuICBpZiAoIW5vVmFsaWRhdGUpIHtcbiAgICByZXR1cm4ganNvbkRhdGFcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2YWxpZGF0ZWREYXRhOiBUID0gZnJvbUpzb24oanNvbkRhdGEpXG4gICAgcmV0dXJuIHRvSnNvbih2YWxpZGF0ZWREYXRhKVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NGaWxlczxUPihcbiAgZGF0YXNldFJhd0Rpcjogc3RyaW5nLFxuICBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyxcbiAgd2Fsa0RpclBhcmFtczogYW55W10sXG4gIGNsZWFuZXI6IGFueSxcbiAgZGF0YUNvbnZlcnRlcjogeyBmcm9tSnNvbjogYW55OyB0b0pzb246IGFueSB9LFxuICBvcHRpb25zOiBhbnksXG4gIHBvc3RQcm9jZXNzb3I/OiBhbnksXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgZm9yIChjb25zdCBmaWxlUGF0aEFycmF5IG9mIHdhbGtEaXIoZGF0YXNldFJhd0Rpciwgd2Fsa0RpclBhcmFtcykpIHtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGZpbGVQYXRoQXJyYXlbZmlsZVBhdGhBcnJheS5sZW5ndGggLSAxXVxuICAgIGlmICghZmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkgY29udGludWVcbiAgICBjb25zdCByYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5maWxlUGF0aEFycmF5KVxuICAgIGNvbnN0IHJhd0pzb24gPSBmcy5yZWFkRmlsZVN5bmMocmF3RmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgaWYgKG9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coYENsZWFuaW5nIGZpbGU6ICR7cmF3RmlsZVBhdGh9Li4uYClcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShyYXdKc29uKVxuICAgIGNvbnN0IHZhbGlkYXRlRGF0YSA9ICFvcHRpb25zW1wibm8tdmFsaWRhdGVcIl1cbiAgICBjb25zdCBjbGVhbkpzb24gPSBjbGVhbkFuZFZhbGlkYXRlRGF0YTxUPihcbiAgICAgIGRhdGEsXG4gICAgICBjbGVhbmVyLFxuICAgICAgZGF0YUNvbnZlcnRlci5mcm9tSnNvbixcbiAgICAgIGRhdGFDb252ZXJ0ZXIudG9Kc29uLFxuICAgICAgdmFsaWRhdGVEYXRhLFxuICAgIClcblxuICAgIGlmIChjbGVhbkpzb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNsZWFuRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldENsZWFuRGlyLCAuLi5maWxlUGF0aEFycmF5KVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoY2xlYW5GaWxlUGF0aCkpXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGNsZWFuRmlsZVBhdGgsIGNsZWFuSnNvbiwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcblxuICAgICAgaWYgKHBvc3RQcm9jZXNzb3IpIHtcbiAgICAgICAgYXdhaXQgcG9zdFByb2Nlc3NvcihkYXRhLCBkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNsZWFuUmVvcmdhbml6ZWREYXRhKG9wdGlvbnM6IGFueSk6IFByb21pc2U8bnVtYmVyPiB7XG4gIGNvbnN0IGRhdGFEaXI6IHN0cmluZyA9IG9wdGlvbnMuZGF0YURpclxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBwYXRjaGVkRGF0ZVRvSnNvblxuICBsZXQgZXhpdENvZGUgPSBvcHRpb25zLmNvbW1pdCA/IDEwIDogMFxuICBjb25zdCBnaXRHcm91cFVybCA9IG9wdGlvbnMuY2xvbmU/LnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpXG4gIGNvbnN0IGVuYWJsZWREYXRhc2V0cyA9IGdldEVuYWJsZWREYXRhc2V0cyhvcHRpb25zLmNhdGVnb3JpZXMpXG4gIGxldCBjaG9zZW5EYXRhc2V0cyA9IGZpbHRlckJ5TGVnaXNsYXR1cmUoZGF0YXNldHMsIG9wdGlvbnMubGVnaXNsYXR1cmUpXG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcblxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBgJHtkYXRhc2V0UmF3RGlyfV9uZXR0b3llYFxuICAgICAgaWYgKG9wdGlvbnMucHVsbCkge1xuICAgICAgICBnaXQucmVzZXRBbmRQdWxsKGRhdGFzZXRDbGVhbkRpcilcbiAgICAgIH1cblxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGF3YWl0IHByb2Nlc3NGaWxlczxBY3RldXI+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtcImFjdGV1cnNcIl0sXG4gICAgICAgIGNsZWFuQWN0ZXVyLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvQWN0ZXVyLFxuICAgICAgICAgIHRvSnNvbjogQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQuYWN0ZXVyVG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuICAgICAgYXdhaXQgcHJvY2Vzc0ZpbGVzPE9yZ2FuZT4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW1wib3JnYW5lc1wiXSxcbiAgICAgICAgY2xlYW5PcmdhbmUsXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUsXG4gICAgICAgICAgdG9Kc29uOiBBY3RldXJzRXRPcmdhbmVzQ29udmVydC5vcmdhbmVUb0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG5cbiAgICAgIGV4aXRDb2RlID0gY29tbWl0R2l0KGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgZXhpdENvZGUsIFtcbiAgICAgICAgXCJhY3RldXJzXCIsXG4gICAgICAgIFwib3JnYW5lc1wiLFxuICAgICAgXSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBgJHtkYXRhc2V0UmF3RGlyfV9uZXR0b3llYFxuXG4gICAgICBhd2FpdCBwcm9jZXNzRmlsZXM8UmV1bmlvbj4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW10sXG4gICAgICAgIGNsZWFuUmV1bmlvbixcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBBZ2VuZGFzQ29udmVydC50b1JldW5pb24sXG4gICAgICAgICAgdG9Kc29uOiBBZ2VuZGFzQ29udmVydC5yZXVuaW9uVG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXCIuXCJdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gYCR7ZGF0YXNldFJhd0Rpcn1fbmV0dG95ZWBcblxuICAgICAgYXdhaXQgcHJvY2Vzc0ZpbGVzPEFtZW5kZW1lbnQ+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhbkFtZW5kZW1lbnQsXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudCxcbiAgICAgICAgICB0b0pzb246IEFtZW5kZW1lbnRzQ29udmVydC5hbWVuZGVtZW50VG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXCIuXCJdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGAke2RhdGFzZXRSYXdEaXJ9X25ldHRveWVgXG5cbiAgICAgIGF3YWl0IHByb2Nlc3NGaWxlczxEb2N1bWVudD4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW1wiZG9jdW1lbnRzXCJdLFxuICAgICAgICBjbGVhbkRvY3VtZW50T3JEaXZpc2lvbixcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0RvY3VtZW50LFxuICAgICAgICAgIHRvSnNvbjogRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQuZG9jdW1lbnRUb0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIGRvd25sb2FkQW5kUGFyc2UsXG4gICAgICApXG4gICAgICBhd2FpdCBwcm9jZXNzRmlsZXM8RG9zc2llclBhcmxlbWVudGFpcmU+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtcImRvc3NpZXJzXCJdLFxuICAgICAgICBjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgICAgICAgdG9Kc29uOiBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC5kb3NzaWVyUGFybGVtZW50YWlyZVRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1xuICAgICAgICBcImRvY3VtZW50c1wiLFxuICAgICAgICBcImRvc3NpZXJzXCIsXG4gICAgICBdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gYCR7ZGF0YXNldFJhd0Rpcn1fbmV0dG95ZWBcblxuICAgICAgYXdhaXQgcHJvY2Vzc0ZpbGVzPFNjcnV0aW4+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhblNjcnV0aW4sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbixcbiAgICAgICAgICB0b0pzb246IFNjcnV0aW5zQ29udmVydC5zY3J1dGluVG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXCIuXCJdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUXVlc3Rpb25zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnF1ZXN0aW9ucykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBgJHtkYXRhc2V0UmF3RGlyfV9uZXR0b3llYFxuXG4gICAgICBhd2FpdCBwcm9jZXNzRmlsZXM8UXVlc3Rpb24+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhblF1ZXN0aW9uLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IFF1ZXN0aW9uc0NvbnZlcnQudG9RdWVzdGlvbixcbiAgICAgICAgICB0b0pzb246IFF1ZXN0aW9uc0NvbnZlcnQucXVlc3Rpb25Ub0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG5cbiAgICAgIGV4aXRDb2RlID0gY29tbWl0R2l0KGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgZXhpdENvZGUsIFtcIi5cIl0pXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLnhtbFwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGAke2RhdGFzZXRSYXdEaXJ9X25ldHRveWVgXG5cbiAgICAgIGF3YWl0IHByb2Nlc3NGaWxlczxDb21wdGVSZW5kdT4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW10sXG4gICAgICAgIGNsZWFuQ29tcHRlUmVuZHUsXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogQ29tcHRlc1JlbmR1c0NvbnZlcnQudG9Db21wdGVSZW5kdSxcbiAgICAgICAgICB0b0pzb246IENvbXB0ZXNSZW5kdXNDb252ZXJ0LmNvbXB0ZVJlbmR1VG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXCIuXCJdKVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc3RvcmUgc3RhbmRhcmQgY29udmVyc2lvbiBvZiBkYXRlcyB0byBKU09OLlxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBleGlzdGluZ0RhdGVUb0pzb25cblxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coXCJGaW5pc2hlZCAhXCIpXG4gIH1cblxuICByZXR1cm4gZXhpdENvZGVcbn1cblxuZnVuY3Rpb24gYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZTogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiBhbnkge1xuICBjb25zdCBkYXRhRGlyID0gb3B0aW9ucy5kYXRhRGlyXG4gIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBgJHtkYXRhc2V0UmF3RGlyfV9uZXR0b3llYFxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coYENsZWFuaW5nIGRpcmVjdG9yeTogJHtkYXRhc2V0Q2xlYW5EaXJ94oCmYClcbiAgfVxuICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRDbGVhbkRpcilcbiAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0Q2xlYW5EaXIpKSB7XG4gICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgcGF0aG5hbWUgPSBwYXRoLmpvaW4oZGF0YXNldENsZWFuRGlyLCBmaWxlbmFtZSlcbiAgICBmcy5yZW1vdmVTeW5jKHBhdGhuYW1lKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbW1pdEFuZFB1c2hVaWQoXG4gIHJlcG9zaXRvcnlEaXI6IHN0cmluZyxcbiAgb3B0aW9uczogYW55LFxuICBzdWJkaXJlY3RvcmllczogYW55LFxuKTogYm9vbGVhbiB7XG4gIGxldCBlcnJvciA9IGZhbHNlXG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIGdpdC51aWRCcmFuY2hVcGRhdGUoXG4gICAgICByZXBvc2l0b3J5RGlyLFxuICAgICAgc3ViZGlyZWN0b3JpZXMsXG4gICAgICBvcHRpb25zW1wibm8tcmVzZXQtYWZ0ZXItY29tbWl0XCJdLFxuICAgIClcbiAgICBmb3IgKGNvbnN0IHJlbW90ZSBvZiBvcHRpb25zLnJlbW90ZSB8fCBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZ2l0LnJ1bihyZXBvc2l0b3J5RGlyLCBgcHVzaCAtLXF1aWV0ICR7cmVtb3RlfSB1aWQ6dWlkYClcbiAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9yXG59XG5cbmZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICByZXR1cm4gY2xlYW5SZW9yZ2FuaXplZERhdGEob3B0aW9ucylcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiY2xlYW5fcmVvcmdhbml6ZWRfZGF0YS50c1wiKSkge1xuICBtYWluKHByb2Nlc3MuYXJndikudGhlbihwcm9jZXNzLmV4aXQpXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxnQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBSCxPQUFBO0FBV0EsSUFBQUksU0FBQSxHQUFBSixPQUFBO0FBTUEsSUFBQUssbUJBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGFBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLEdBQUEsR0FBQUMsdUJBQUEsQ0FBQVQsT0FBQTtBQUNBLElBQUFVLG1CQUFBLEdBQUFWLE9BQUE7QUFLQSxJQUFBVyxRQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxZQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFBYSxxQkFBQSxHQUFBYixPQUFBO0FBS0EsSUFBQWMsU0FBQSxHQUFBZCxPQUFBO0FBQ0EsSUFBQWUsVUFBQSxHQUFBZixPQUFBO0FBQ0EsSUFBQWdCLE9BQUEsR0FBQWhCLE9BQUE7QUFDQSxJQUFBaUIsWUFBQSxHQUFBakIsT0FBQTtBQWE2QixTQUFBa0IseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFWLHdCQUFBVSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxDQUFBLElBQUFkLENBQUEsb0JBQUFjLENBQUEsT0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFoQixDQUFBLEVBQUFjLENBQUEsU0FBQUcsQ0FBQSxHQUFBUCxDQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWIsQ0FBQSxFQUFBYyxDQUFBLFVBQUFHLENBQUEsS0FBQUEsQ0FBQSxDQUFBVixHQUFBLElBQUFVLENBQUEsQ0FBQUMsR0FBQSxJQUFBUCxNQUFBLENBQUFDLGNBQUEsQ0FBQUosQ0FBQSxFQUFBTSxDQUFBLEVBQUFHLENBQUEsSUFBQVQsQ0FBQSxDQUFBTSxDQUFBLElBQUFkLENBQUEsQ0FBQWMsQ0FBQSxZQUFBTixDQUFBLGNBQUFSLENBQUEsRUFBQUcsQ0FBQSxJQUFBQSxDQUFBLENBQUFlLEdBQUEsQ0FBQWxCLENBQUEsRUFBQVEsQ0FBQSxHQUFBQSxDQUFBO0FBQUEsU0FBQTVCLHVCQUFBb0IsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxHQUFBSixDQUFBLGdCQUFBQSxDQUFBO0FBQUEsU0FBQW1CLG9CQUFBLGtCQW5EN0IscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFuQixDQUFBLFNBQUFHLENBQUEsRUFBQUgsQ0FBQSxPQUFBRSxDQUFBLEdBQUFTLE1BQUEsQ0FBQVMsU0FBQSxFQUFBWixDQUFBLEdBQUFOLENBQUEsQ0FBQWEsY0FBQSxFQUFBTSxDQUFBLEdBQUFWLE1BQUEsQ0FBQUMsY0FBQSxjQUFBVCxDQUFBLEVBQUFILENBQUEsRUFBQUUsQ0FBQSxJQUFBQyxDQUFBLENBQUFILENBQUEsSUFBQUUsQ0FBQSxDQUFBb0IsS0FBQSxLQUFBTCxDQUFBLHdCQUFBTSxNQUFBLEdBQUFBLE1BQUEsT0FBQWIsQ0FBQSxHQUFBTyxDQUFBLENBQUFPLFFBQUEsa0JBQUFDLENBQUEsR0FBQVIsQ0FBQSxDQUFBUyxhQUFBLHVCQUFBWixDQUFBLEdBQUFHLENBQUEsQ0FBQVUsV0FBQSw4QkFBQUMsT0FBQXpCLENBQUEsRUFBQUgsQ0FBQSxFQUFBRSxDQUFBLFdBQUFTLE1BQUEsQ0FBQUMsY0FBQSxDQUFBVCxDQUFBLEVBQUFILENBQUEsSUFBQXNCLEtBQUEsRUFBQXBCLENBQUEsRUFBQTJCLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFNBQUE1QixDQUFBLENBQUFILENBQUEsV0FBQTRCLE1BQUEsbUJBQUF6QixDQUFBLElBQUF5QixNQUFBLFlBQUFBLE9BQUF6QixDQUFBLEVBQUFILENBQUEsRUFBQUUsQ0FBQSxXQUFBQyxDQUFBLENBQUFILENBQUEsSUFBQUUsQ0FBQSxnQkFBQThCLEtBQUE3QixDQUFBLEVBQUFILENBQUEsRUFBQUUsQ0FBQSxFQUFBTSxDQUFBLFFBQUFTLENBQUEsR0FBQWpCLENBQUEsSUFBQUEsQ0FBQSxDQUFBb0IsU0FBQSxZQUFBYSxTQUFBLEdBQUFqQyxDQUFBLEdBQUFpQyxTQUFBLEVBQUF2QixDQUFBLEdBQUFDLE1BQUEsQ0FBQXVCLE1BQUEsQ0FBQWpCLENBQUEsQ0FBQUcsU0FBQSxHQUFBSyxDQUFBLE9BQUFVLE9BQUEsQ0FBQTNCLENBQUEsZ0JBQUFhLENBQUEsQ0FBQVgsQ0FBQSxlQUFBWSxLQUFBLEVBQUFjLGdCQUFBLENBQUFqQyxDQUFBLEVBQUFELENBQUEsRUFBQXVCLENBQUEsTUFBQWYsQ0FBQSxhQUFBMkIsU0FBQWxDLENBQUEsRUFBQUgsQ0FBQSxFQUFBRSxDQUFBLG1CQUFBb0MsSUFBQSxZQUFBQyxHQUFBLEVBQUFwQyxDQUFBLENBQUFhLElBQUEsQ0FBQWhCLENBQUEsRUFBQUUsQ0FBQSxjQUFBQyxDQUFBLGFBQUFtQyxJQUFBLFdBQUFDLEdBQUEsRUFBQXBDLENBQUEsUUFBQUgsQ0FBQSxDQUFBZ0MsSUFBQSxHQUFBQSxJQUFBLE1BQUFRLENBQUEscUJBQUFDLENBQUEscUJBQUFDLENBQUEsZ0JBQUFDLENBQUEsZ0JBQUFDLENBQUEsZ0JBQUFYLFVBQUEsY0FBQVksa0JBQUEsY0FBQUMsMkJBQUEsU0FBQUMsQ0FBQSxPQUFBbkIsTUFBQSxDQUFBbUIsQ0FBQSxFQUFBckMsQ0FBQSxxQ0FBQXNDLENBQUEsR0FBQXJDLE1BQUEsQ0FBQXNDLGNBQUEsRUFBQUMsQ0FBQSxHQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUEsQ0FBQSxDQUFBRyxNQUFBLFFBQUFELENBQUEsSUFBQUEsQ0FBQSxLQUFBaEQsQ0FBQSxJQUFBTSxDQUFBLENBQUFRLElBQUEsQ0FBQWtDLENBQUEsRUFBQXhDLENBQUEsTUFBQXFDLENBQUEsR0FBQUcsQ0FBQSxPQUFBRSxDQUFBLEdBQUFOLDBCQUFBLENBQUExQixTQUFBLEdBQUFhLFNBQUEsQ0FBQWIsU0FBQSxHQUFBVCxNQUFBLENBQUF1QixNQUFBLENBQUFhLENBQUEsWUFBQU0sc0JBQUFsRCxDQUFBLGdDQUFBbUQsT0FBQSxXQUFBdEQsQ0FBQSxJQUFBNEIsTUFBQSxDQUFBekIsQ0FBQSxFQUFBSCxDQUFBLFlBQUFHLENBQUEsZ0JBQUFvRCxPQUFBLENBQUF2RCxDQUFBLEVBQUFHLENBQUEsc0JBQUFxRCxjQUFBckQsQ0FBQSxFQUFBSCxDQUFBLGFBQUF5RCxPQUFBdkQsQ0FBQSxFQUFBbUIsQ0FBQSxFQUFBSixDQUFBLEVBQUFQLENBQUEsUUFBQWUsQ0FBQSxHQUFBWSxRQUFBLENBQUFsQyxDQUFBLENBQUFELENBQUEsR0FBQUMsQ0FBQSxFQUFBa0IsQ0FBQSxtQkFBQUksQ0FBQSxDQUFBYSxJQUFBLFFBQUF4QixDQUFBLEdBQUFXLENBQUEsQ0FBQWMsR0FBQSxFQUFBQyxDQUFBLEdBQUExQixDQUFBLENBQUFRLEtBQUEsU0FBQWtCLENBQUEsZ0JBQUFuQyxPQUFBLENBQUFtQyxDQUFBLEtBQUFoQyxDQUFBLENBQUFRLElBQUEsQ0FBQXdCLENBQUEsZUFBQXhDLENBQUEsQ0FBQTBELE9BQUEsQ0FBQWxCLENBQUEsQ0FBQW1CLE9BQUEsRUFBQUMsSUFBQSxXQUFBekQsQ0FBQSxJQUFBc0QsTUFBQSxTQUFBdEQsQ0FBQSxFQUFBYyxDQUFBLEVBQUFQLENBQUEsZ0JBQUFQLENBQUEsSUFBQXNELE1BQUEsVUFBQXRELENBQUEsRUFBQWMsQ0FBQSxFQUFBUCxDQUFBLFFBQUFWLENBQUEsQ0FBQTBELE9BQUEsQ0FBQWxCLENBQUEsRUFBQW9CLElBQUEsV0FBQXpELENBQUEsSUFBQVcsQ0FBQSxDQUFBUSxLQUFBLEdBQUFuQixDQUFBLEVBQUFjLENBQUEsQ0FBQUgsQ0FBQSxnQkFBQVgsQ0FBQSxXQUFBc0QsTUFBQSxVQUFBdEQsQ0FBQSxFQUFBYyxDQUFBLEVBQUFQLENBQUEsU0FBQUEsQ0FBQSxDQUFBZSxDQUFBLENBQUFjLEdBQUEsU0FBQXJDLENBQUEsRUFBQW1CLENBQUEsb0JBQUFDLEtBQUEsV0FBQUEsTUFBQW5CLENBQUEsRUFBQUssQ0FBQSxhQUFBcUQsMkJBQUEsZUFBQTdELENBQUEsV0FBQUEsQ0FBQSxFQUFBRSxDQUFBLElBQUF1RCxNQUFBLENBQUF0RCxDQUFBLEVBQUFLLENBQUEsRUFBQVIsQ0FBQSxFQUFBRSxDQUFBLGdCQUFBQSxDQUFBLEdBQUFBLENBQUEsR0FBQUEsQ0FBQSxDQUFBMEQsSUFBQSxDQUFBQywwQkFBQSxFQUFBQSwwQkFBQSxJQUFBQSwwQkFBQSxxQkFBQXpCLGlCQUFBcEMsQ0FBQSxFQUFBRSxDQUFBLEVBQUFNLENBQUEsUUFBQWEsQ0FBQSxHQUFBbUIsQ0FBQSxtQkFBQXZCLENBQUEsRUFBQVAsQ0FBQSxRQUFBVyxDQUFBLEtBQUFxQixDQUFBLFFBQUFvQixLQUFBLHNDQUFBekMsQ0FBQSxLQUFBc0IsQ0FBQSxvQkFBQTFCLENBQUEsUUFBQVAsQ0FBQSxXQUFBWSxLQUFBLEVBQUFuQixDQUFBLEVBQUE0RCxJQUFBLGVBQUF2RCxDQUFBLENBQUF3RCxNQUFBLEdBQUEvQyxDQUFBLEVBQUFULENBQUEsQ0FBQStCLEdBQUEsR0FBQTdCLENBQUEsVUFBQWUsQ0FBQSxHQUFBakIsQ0FBQSxDQUFBeUQsUUFBQSxNQUFBeEMsQ0FBQSxRQUFBWCxDQUFBLEdBQUFvRCxtQkFBQSxDQUFBekMsQ0FBQSxFQUFBakIsQ0FBQSxPQUFBTSxDQUFBLFFBQUFBLENBQUEsS0FBQThCLENBQUEsbUJBQUE5QixDQUFBLHFCQUFBTixDQUFBLENBQUF3RCxNQUFBLEVBQUF4RCxDQUFBLENBQUEyRCxJQUFBLEdBQUEzRCxDQUFBLENBQUE0RCxLQUFBLEdBQUE1RCxDQUFBLENBQUErQixHQUFBLHNCQUFBL0IsQ0FBQSxDQUFBd0QsTUFBQSxRQUFBM0MsQ0FBQSxLQUFBbUIsQ0FBQSxRQUFBbkIsQ0FBQSxHQUFBc0IsQ0FBQSxFQUFBbkMsQ0FBQSxDQUFBK0IsR0FBQSxFQUFBL0IsQ0FBQSxDQUFBNkQsaUJBQUEsQ0FBQTdELENBQUEsQ0FBQStCLEdBQUEsdUJBQUEvQixDQUFBLENBQUF3RCxNQUFBLElBQUF4RCxDQUFBLENBQUE4RCxNQUFBLFdBQUE5RCxDQUFBLENBQUErQixHQUFBLEdBQUFsQixDQUFBLEdBQUFxQixDQUFBLE1BQUFLLENBQUEsR0FBQVYsUUFBQSxDQUFBckMsQ0FBQSxFQUFBRSxDQUFBLEVBQUFNLENBQUEsb0JBQUF1QyxDQUFBLENBQUFULElBQUEsUUFBQWpCLENBQUEsR0FBQWIsQ0FBQSxDQUFBdUQsSUFBQSxHQUFBcEIsQ0FBQSxHQUFBRixDQUFBLEVBQUFNLENBQUEsQ0FBQVIsR0FBQSxLQUFBSyxDQUFBLHFCQUFBdEIsS0FBQSxFQUFBeUIsQ0FBQSxDQUFBUixHQUFBLEVBQUF3QixJQUFBLEVBQUF2RCxDQUFBLENBQUF1RCxJQUFBLGtCQUFBaEIsQ0FBQSxDQUFBVCxJQUFBLEtBQUFqQixDQUFBLEdBQUFzQixDQUFBLEVBQUFuQyxDQUFBLENBQUF3RCxNQUFBLFlBQUF4RCxDQUFBLENBQUErQixHQUFBLEdBQUFRLENBQUEsQ0FBQVIsR0FBQSxtQkFBQTJCLG9CQUFBbEUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFNLENBQUEsR0FBQU4sQ0FBQSxDQUFBOEQsTUFBQSxFQUFBM0MsQ0FBQSxHQUFBckIsQ0FBQSxDQUFBd0IsUUFBQSxDQUFBaEIsQ0FBQSxPQUFBYSxDQUFBLEtBQUFsQixDQUFBLFNBQUFELENBQUEsQ0FBQStELFFBQUEscUJBQUF6RCxDQUFBLElBQUFSLENBQUEsQ0FBQXdCLFFBQUEsZUFBQXRCLENBQUEsQ0FBQThELE1BQUEsYUFBQTlELENBQUEsQ0FBQXFDLEdBQUEsR0FBQXBDLENBQUEsRUFBQStELG1CQUFBLENBQUFsRSxDQUFBLEVBQUFFLENBQUEsZUFBQUEsQ0FBQSxDQUFBOEQsTUFBQSxrQkFBQXhELENBQUEsS0FBQU4sQ0FBQSxDQUFBOEQsTUFBQSxZQUFBOUQsQ0FBQSxDQUFBcUMsR0FBQSxPQUFBZ0MsU0FBQSx1Q0FBQS9ELENBQUEsaUJBQUFvQyxDQUFBLE1BQUEzQixDQUFBLEdBQUFvQixRQUFBLENBQUFoQixDQUFBLEVBQUFyQixDQUFBLENBQUF3QixRQUFBLEVBQUF0QixDQUFBLENBQUFxQyxHQUFBLG1CQUFBdEIsQ0FBQSxDQUFBcUIsSUFBQSxTQUFBcEMsQ0FBQSxDQUFBOEQsTUFBQSxZQUFBOUQsQ0FBQSxDQUFBcUMsR0FBQSxHQUFBdEIsQ0FBQSxDQUFBc0IsR0FBQSxFQUFBckMsQ0FBQSxDQUFBK0QsUUFBQSxTQUFBckIsQ0FBQSxNQUFBbEMsQ0FBQSxHQUFBTyxDQUFBLENBQUFzQixHQUFBLFNBQUE3QixDQUFBLEdBQUFBLENBQUEsQ0FBQXFELElBQUEsSUFBQTdELENBQUEsQ0FBQUYsQ0FBQSxDQUFBd0UsVUFBQSxJQUFBOUQsQ0FBQSxDQUFBWSxLQUFBLEVBQUFwQixDQUFBLENBQUF1RSxJQUFBLEdBQUF6RSxDQUFBLENBQUEwRSxPQUFBLGVBQUF4RSxDQUFBLENBQUE4RCxNQUFBLEtBQUE5RCxDQUFBLENBQUE4RCxNQUFBLFdBQUE5RCxDQUFBLENBQUFxQyxHQUFBLEdBQUFwQyxDQUFBLEdBQUFELENBQUEsQ0FBQStELFFBQUEsU0FBQXJCLENBQUEsSUFBQWxDLENBQUEsSUFBQVIsQ0FBQSxDQUFBOEQsTUFBQSxZQUFBOUQsQ0FBQSxDQUFBcUMsR0FBQSxPQUFBZ0MsU0FBQSxzQ0FBQXJFLENBQUEsQ0FBQStELFFBQUEsU0FBQXJCLENBQUEsY0FBQStCLGFBQUF4RSxDQUFBLFFBQUFILENBQUEsS0FBQTRFLE1BQUEsRUFBQXpFLENBQUEsWUFBQUEsQ0FBQSxLQUFBSCxDQUFBLENBQUE2RSxRQUFBLEdBQUExRSxDQUFBLFdBQUFBLENBQUEsS0FBQUgsQ0FBQSxDQUFBOEUsVUFBQSxHQUFBM0UsQ0FBQSxLQUFBSCxDQUFBLENBQUErRSxRQUFBLEdBQUE1RSxDQUFBLFdBQUE2RSxVQUFBLENBQUFDLElBQUEsQ0FBQWpGLENBQUEsY0FBQWtGLGNBQUEvRSxDQUFBLFFBQUFILENBQUEsR0FBQUcsQ0FBQSxDQUFBZ0YsVUFBQSxRQUFBbkYsQ0FBQSxDQUFBc0MsSUFBQSxvQkFBQXRDLENBQUEsQ0FBQXVDLEdBQUEsRUFBQXBDLENBQUEsQ0FBQWdGLFVBQUEsR0FBQW5GLENBQUEsYUFBQW1DLFFBQUFoQyxDQUFBLFNBQUE2RSxVQUFBLE1BQUFKLE1BQUEsYUFBQXpFLENBQUEsQ0FBQW1ELE9BQUEsQ0FBQXFCLFlBQUEsY0FBQVMsS0FBQSxpQkFBQWpDLE9BQUFuRCxDQUFBLFFBQUFBLENBQUEsV0FBQUEsQ0FBQSxRQUFBRSxDQUFBLEdBQUFGLENBQUEsQ0FBQVUsQ0FBQSxPQUFBUixDQUFBLFNBQUFBLENBQUEsQ0FBQWMsSUFBQSxDQUFBaEIsQ0FBQSw0QkFBQUEsQ0FBQSxDQUFBeUUsSUFBQSxTQUFBekUsQ0FBQSxPQUFBcUYsS0FBQSxDQUFBckYsQ0FBQSxDQUFBc0YsTUFBQSxTQUFBakUsQ0FBQSxPQUFBSixDQUFBLFlBQUF3RCxLQUFBLGFBQUFwRCxDQUFBLEdBQUFyQixDQUFBLENBQUFzRixNQUFBLE9BQUE5RSxDQUFBLENBQUFRLElBQUEsQ0FBQWhCLENBQUEsRUFBQXFCLENBQUEsVUFBQW9ELElBQUEsQ0FBQW5ELEtBQUEsR0FBQXRCLENBQUEsQ0FBQXFCLENBQUEsR0FBQW9ELElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFNBQUFBLElBQUEsQ0FBQW5ELEtBQUEsR0FBQW5CLENBQUEsRUFBQXNFLElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFlBQUF4RCxDQUFBLENBQUF3RCxJQUFBLEdBQUF4RCxDQUFBLGdCQUFBc0QsU0FBQSxDQUFBbEUsT0FBQSxDQUFBTCxDQUFBLGtDQUFBNkMsaUJBQUEsQ0FBQXpCLFNBQUEsR0FBQTBCLDBCQUFBLEVBQUF6QixDQUFBLENBQUErQixDQUFBLG1CQUFBOUIsS0FBQSxFQUFBd0IsMEJBQUEsRUFBQWhCLFlBQUEsU0FBQVQsQ0FBQSxDQUFBeUIsMEJBQUEsbUJBQUF4QixLQUFBLEVBQUF1QixpQkFBQSxFQUFBZixZQUFBLFNBQUFlLGlCQUFBLENBQUEwQyxXQUFBLEdBQUEzRCxNQUFBLENBQUFrQiwwQkFBQSxFQUFBaEMsQ0FBQSx3QkFBQWQsQ0FBQSxDQUFBd0YsbUJBQUEsYUFBQXJGLENBQUEsUUFBQUgsQ0FBQSx3QkFBQUcsQ0FBQSxJQUFBQSxDQUFBLENBQUFzRixXQUFBLFdBQUF6RixDQUFBLEtBQUFBLENBQUEsS0FBQTZDLGlCQUFBLDZCQUFBN0MsQ0FBQSxDQUFBdUYsV0FBQSxJQUFBdkYsQ0FBQSxDQUFBMEYsSUFBQSxPQUFBMUYsQ0FBQSxDQUFBMkYsSUFBQSxhQUFBeEYsQ0FBQSxXQUFBUSxNQUFBLENBQUFpRixjQUFBLEdBQUFqRixNQUFBLENBQUFpRixjQUFBLENBQUF6RixDQUFBLEVBQUEyQywwQkFBQSxLQUFBM0MsQ0FBQSxDQUFBTSxTQUFBLEdBQUFxQywwQkFBQSxFQUFBbEIsTUFBQSxDQUFBekIsQ0FBQSxFQUFBVyxDQUFBLHlCQUFBWCxDQUFBLENBQUFpQixTQUFBLEdBQUFULE1BQUEsQ0FBQXVCLE1BQUEsQ0FBQWtCLENBQUEsR0FBQWpELENBQUEsS0FBQUgsQ0FBQSxDQUFBNkYsS0FBQSxhQUFBMUYsQ0FBQSxhQUFBd0QsT0FBQSxFQUFBeEQsQ0FBQSxPQUFBa0QscUJBQUEsQ0FBQUcsYUFBQSxDQUFBcEMsU0FBQSxHQUFBUSxNQUFBLENBQUE0QixhQUFBLENBQUFwQyxTQUFBLEVBQUFLLENBQUEsaUNBQUF6QixDQUFBLENBQUF3RCxhQUFBLEdBQUFBLGFBQUEsRUFBQXhELENBQUEsQ0FBQThGLEtBQUEsYUFBQTNGLENBQUEsRUFBQUQsQ0FBQSxFQUFBTSxDQUFBLEVBQUFhLENBQUEsRUFBQUosQ0FBQSxlQUFBQSxDQUFBLEtBQUFBLENBQUEsR0FBQThFLE9BQUEsT0FBQXJGLENBQUEsT0FBQThDLGFBQUEsQ0FBQXhCLElBQUEsQ0FBQTdCLENBQUEsRUFBQUQsQ0FBQSxFQUFBTSxDQUFBLEVBQUFhLENBQUEsR0FBQUosQ0FBQSxVQUFBakIsQ0FBQSxDQUFBd0YsbUJBQUEsQ0FBQXRGLENBQUEsSUFBQVEsQ0FBQSxHQUFBQSxDQUFBLENBQUErRCxJQUFBLEdBQUFiLElBQUEsV0FBQXpELENBQUEsV0FBQUEsQ0FBQSxDQUFBNEQsSUFBQSxHQUFBNUQsQ0FBQSxDQUFBbUIsS0FBQSxHQUFBWixDQUFBLENBQUErRCxJQUFBLFdBQUFwQixxQkFBQSxDQUFBRCxDQUFBLEdBQUF4QixNQUFBLENBQUF3QixDQUFBLEVBQUF0QyxDQUFBLGdCQUFBYyxNQUFBLENBQUF3QixDQUFBLEVBQUExQyxDQUFBLGlDQUFBa0IsTUFBQSxDQUFBd0IsQ0FBQSw2REFBQXBELENBQUEsQ0FBQWdHLElBQUEsYUFBQTdGLENBQUEsUUFBQUgsQ0FBQSxHQUFBVyxNQUFBLENBQUFSLENBQUEsR0FBQUQsQ0FBQSxnQkFBQU0sQ0FBQSxJQUFBUixDQUFBLEVBQUFFLENBQUEsQ0FBQStFLElBQUEsQ0FBQXpFLENBQUEsVUFBQU4sQ0FBQSxDQUFBK0YsT0FBQSxhQUFBeEIsS0FBQSxXQUFBdkUsQ0FBQSxDQUFBb0YsTUFBQSxTQUFBbkYsQ0FBQSxHQUFBRCxDQUFBLENBQUFnRyxHQUFBLFFBQUEvRixDQUFBLElBQUFILENBQUEsU0FBQXlFLElBQUEsQ0FBQW5ELEtBQUEsR0FBQW5CLENBQUEsRUFBQXNFLElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFdBQUFBLElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFFBQUF6RSxDQUFBLENBQUFtRCxNQUFBLEdBQUFBLE1BQUEsRUFBQWhCLE9BQUEsQ0FBQWYsU0FBQSxLQUFBcUUsV0FBQSxFQUFBdEQsT0FBQSxFQUFBaUQsS0FBQSxXQUFBQSxNQUFBcEYsQ0FBQSxhQUFBbUcsSUFBQSxXQUFBMUIsSUFBQSxXQUFBTixJQUFBLFFBQUFDLEtBQUEsR0FBQWpFLENBQUEsT0FBQTRELElBQUEsWUFBQUUsUUFBQSxjQUFBRCxNQUFBLGdCQUFBekIsR0FBQSxHQUFBcEMsQ0FBQSxPQUFBNkUsVUFBQSxDQUFBMUIsT0FBQSxDQUFBNEIsYUFBQSxJQUFBbEYsQ0FBQSxXQUFBRSxDQUFBLGtCQUFBQSxDQUFBLENBQUFrRyxNQUFBLE9BQUE1RixDQUFBLENBQUFRLElBQUEsT0FBQWQsQ0FBQSxNQUFBbUYsS0FBQSxFQUFBbkYsQ0FBQSxDQUFBbUcsS0FBQSxjQUFBbkcsQ0FBQSxJQUFBQyxDQUFBLE1BQUFtRyxJQUFBLFdBQUFBLEtBQUEsU0FBQXZDLElBQUEsV0FBQTVELENBQUEsUUFBQTZFLFVBQUEsSUFBQUcsVUFBQSxrQkFBQWhGLENBQUEsQ0FBQW1DLElBQUEsUUFBQW5DLENBQUEsQ0FBQW9DLEdBQUEsY0FBQWdFLElBQUEsS0FBQWxDLGlCQUFBLFdBQUFBLGtCQUFBckUsQ0FBQSxhQUFBK0QsSUFBQSxRQUFBL0QsQ0FBQSxNQUFBRSxDQUFBLGtCQUFBc0csT0FBQWhHLENBQUEsRUFBQWEsQ0FBQSxXQUFBWCxDQUFBLENBQUE0QixJQUFBLFlBQUE1QixDQUFBLENBQUE2QixHQUFBLEdBQUF2QyxDQUFBLEVBQUFFLENBQUEsQ0FBQXVFLElBQUEsR0FBQWpFLENBQUEsRUFBQWEsQ0FBQSxLQUFBbkIsQ0FBQSxDQUFBOEQsTUFBQSxXQUFBOUQsQ0FBQSxDQUFBcUMsR0FBQSxHQUFBcEMsQ0FBQSxLQUFBa0IsQ0FBQSxhQUFBQSxDQUFBLFFBQUEyRCxVQUFBLENBQUFNLE1BQUEsTUFBQWpFLENBQUEsU0FBQUEsQ0FBQSxRQUFBSixDQUFBLFFBQUErRCxVQUFBLENBQUEzRCxDQUFBLEdBQUFYLENBQUEsR0FBQU8sQ0FBQSxDQUFBa0UsVUFBQSxpQkFBQWxFLENBQUEsQ0FBQTJELE1BQUEsU0FBQTRCLE1BQUEsYUFBQXZGLENBQUEsQ0FBQTJELE1BQUEsU0FBQXVCLElBQUEsUUFBQTFFLENBQUEsR0FBQWpCLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxDQUFBLGVBQUFILENBQUEsR0FBQU4sQ0FBQSxDQUFBUSxJQUFBLENBQUFDLENBQUEscUJBQUFRLENBQUEsSUFBQVgsQ0FBQSxhQUFBcUYsSUFBQSxHQUFBbEYsQ0FBQSxDQUFBNEQsUUFBQSxTQUFBMkIsTUFBQSxDQUFBdkYsQ0FBQSxDQUFBNEQsUUFBQSxnQkFBQXNCLElBQUEsR0FBQWxGLENBQUEsQ0FBQTZELFVBQUEsU0FBQTBCLE1BQUEsQ0FBQXZGLENBQUEsQ0FBQTZELFVBQUEsY0FBQXJELENBQUEsYUFBQTBFLElBQUEsR0FBQWxGLENBQUEsQ0FBQTRELFFBQUEsU0FBQTJCLE1BQUEsQ0FBQXZGLENBQUEsQ0FBQTRELFFBQUEscUJBQUEvRCxDQUFBLFFBQUFnRCxLQUFBLHFEQUFBcUMsSUFBQSxHQUFBbEYsQ0FBQSxDQUFBNkQsVUFBQSxTQUFBMEIsTUFBQSxDQUFBdkYsQ0FBQSxDQUFBNkQsVUFBQSxZQUFBUixNQUFBLFdBQUFBLE9BQUFuRSxDQUFBLEVBQUFILENBQUEsYUFBQUUsQ0FBQSxRQUFBOEUsVUFBQSxDQUFBTSxNQUFBLE1BQUFwRixDQUFBLFNBQUFBLENBQUEsUUFBQW1CLENBQUEsUUFBQTJELFVBQUEsQ0FBQTlFLENBQUEsT0FBQW1CLENBQUEsQ0FBQXVELE1BQUEsU0FBQXVCLElBQUEsSUFBQTNGLENBQUEsQ0FBQVEsSUFBQSxDQUFBSyxDQUFBLHdCQUFBOEUsSUFBQSxHQUFBOUUsQ0FBQSxDQUFBeUQsVUFBQSxRQUFBN0QsQ0FBQSxHQUFBSSxDQUFBLGFBQUFKLENBQUEsaUJBQUFkLENBQUEsbUJBQUFBLENBQUEsS0FBQWMsQ0FBQSxDQUFBMkQsTUFBQSxJQUFBNUUsQ0FBQSxJQUFBQSxDQUFBLElBQUFpQixDQUFBLENBQUE2RCxVQUFBLEtBQUE3RCxDQUFBLGNBQUFQLENBQUEsR0FBQU8sQ0FBQSxHQUFBQSxDQUFBLENBQUFrRSxVQUFBLGNBQUF6RSxDQUFBLENBQUE0QixJQUFBLEdBQUFuQyxDQUFBLEVBQUFPLENBQUEsQ0FBQTZCLEdBQUEsR0FBQXZDLENBQUEsRUFBQWlCLENBQUEsU0FBQStDLE1BQUEsZ0JBQUFTLElBQUEsR0FBQXhELENBQUEsQ0FBQTZELFVBQUEsRUFBQWxDLENBQUEsU0FBQTZELFFBQUEsQ0FBQS9GLENBQUEsTUFBQStGLFFBQUEsV0FBQUEsU0FBQXRHLENBQUEsRUFBQUgsQ0FBQSxvQkFBQUcsQ0FBQSxDQUFBbUMsSUFBQSxRQUFBbkMsQ0FBQSxDQUFBb0MsR0FBQSxxQkFBQXBDLENBQUEsQ0FBQW1DLElBQUEsbUJBQUFuQyxDQUFBLENBQUFtQyxJQUFBLFFBQUFtQyxJQUFBLEdBQUF0RSxDQUFBLENBQUFvQyxHQUFBLGdCQUFBcEMsQ0FBQSxDQUFBbUMsSUFBQSxTQUFBaUUsSUFBQSxRQUFBaEUsR0FBQSxHQUFBcEMsQ0FBQSxDQUFBb0MsR0FBQSxPQUFBeUIsTUFBQSxrQkFBQVMsSUFBQSx5QkFBQXRFLENBQUEsQ0FBQW1DLElBQUEsSUFBQXRDLENBQUEsVUFBQXlFLElBQUEsR0FBQXpFLENBQUEsR0FBQTRDLENBQUEsS0FBQThELE1BQUEsV0FBQUEsT0FBQXZHLENBQUEsYUFBQUgsQ0FBQSxRQUFBZ0YsVUFBQSxDQUFBTSxNQUFBLE1BQUF0RixDQUFBLFNBQUFBLENBQUEsUUFBQUUsQ0FBQSxRQUFBOEUsVUFBQSxDQUFBaEYsQ0FBQSxPQUFBRSxDQUFBLENBQUE0RSxVQUFBLEtBQUEzRSxDQUFBLGNBQUFzRyxRQUFBLENBQUF2RyxDQUFBLENBQUFpRixVQUFBLEVBQUFqRixDQUFBLENBQUE2RSxRQUFBLEdBQUFHLGFBQUEsQ0FBQWhGLENBQUEsR0FBQTBDLENBQUEseUJBQUErRCxPQUFBeEcsQ0FBQSxhQUFBSCxDQUFBLFFBQUFnRixVQUFBLENBQUFNLE1BQUEsTUFBQXRGLENBQUEsU0FBQUEsQ0FBQSxRQUFBRSxDQUFBLFFBQUE4RSxVQUFBLENBQUFoRixDQUFBLE9BQUFFLENBQUEsQ0FBQTBFLE1BQUEsS0FBQXpFLENBQUEsUUFBQUssQ0FBQSxHQUFBTixDQUFBLENBQUFpRixVQUFBLGtCQUFBM0UsQ0FBQSxDQUFBOEIsSUFBQSxRQUFBakIsQ0FBQSxHQUFBYixDQUFBLENBQUErQixHQUFBLEVBQUEyQyxhQUFBLENBQUFoRixDQUFBLFlBQUFtQixDQUFBLFlBQUF5QyxLQUFBLDhCQUFBOEMsYUFBQSxXQUFBQSxjQUFBNUcsQ0FBQSxFQUFBRSxDQUFBLEVBQUFNLENBQUEsZ0JBQUF5RCxRQUFBLEtBQUF6QyxRQUFBLEVBQUEyQixNQUFBLENBQUFuRCxDQUFBLEdBQUF3RSxVQUFBLEVBQUF0RSxDQUFBLEVBQUF3RSxPQUFBLEVBQUFsRSxDQUFBLG9CQUFBd0QsTUFBQSxVQUFBekIsR0FBQSxHQUFBcEMsQ0FBQSxHQUFBeUMsQ0FBQSxPQUFBNUMsQ0FBQTtBQUFBLFNBQUE2RyxtQkFBQTNHLENBQUEsV0FBQTRHLGtCQUFBLENBQUE1RyxDQUFBLEtBQUE2RyxnQkFBQSxDQUFBN0csQ0FBQSxLQUFBOEcsMkJBQUEsQ0FBQTlHLENBQUEsS0FBQStHLGtCQUFBO0FBQUEsU0FBQUEsbUJBQUEsY0FBQTFDLFNBQUE7QUFBQSxTQUFBd0MsaUJBQUE3RyxDQUFBLDhCQUFBcUIsTUFBQSxZQUFBckIsQ0FBQSxDQUFBcUIsTUFBQSxDQUFBQyxRQUFBLGFBQUF0QixDQUFBLHVCQUFBZ0gsS0FBQSxDQUFBQyxJQUFBLENBQUFqSCxDQUFBO0FBQUEsU0FBQTRHLG1CQUFBNUcsQ0FBQSxRQUFBZ0gsS0FBQSxDQUFBRSxPQUFBLENBQUFsSCxDQUFBLFVBQUFtSCxpQkFBQSxDQUFBbkgsQ0FBQTtBQUFBLFNBQUFvSCwyQkFBQXBILENBQUEsRUFBQUYsQ0FBQSxRQUFBRyxDQUFBLHlCQUFBb0IsTUFBQSxJQUFBckIsQ0FBQSxDQUFBcUIsTUFBQSxDQUFBQyxRQUFBLEtBQUF0QixDQUFBLHFCQUFBQyxDQUFBLFFBQUErRyxLQUFBLENBQUFFLE9BQUEsQ0FBQWxILENBQUEsTUFBQUMsQ0FBQSxHQUFBNkcsMkJBQUEsQ0FBQTlHLENBQUEsTUFBQUYsQ0FBQSxJQUFBRSxDQUFBLHVCQUFBQSxDQUFBLENBQUFvRixNQUFBLElBQUFuRixDQUFBLEtBQUFELENBQUEsR0FBQUMsQ0FBQSxPQUFBb0gsRUFBQSxNQUFBQyxDQUFBLFlBQUFBLEVBQUEsZUFBQTdFLENBQUEsRUFBQTZFLENBQUEsRUFBQWhILENBQUEsV0FBQUEsRUFBQSxXQUFBK0csRUFBQSxJQUFBckgsQ0FBQSxDQUFBb0YsTUFBQSxLQUFBdkIsSUFBQSxXQUFBQSxJQUFBLE1BQUF6QyxLQUFBLEVBQUFwQixDQUFBLENBQUFxSCxFQUFBLFVBQUF2SCxDQUFBLFdBQUFBLEVBQUFFLENBQUEsVUFBQUEsQ0FBQSxLQUFBd0MsQ0FBQSxFQUFBOEUsQ0FBQSxnQkFBQWpELFNBQUEsaUpBQUFsRCxDQUFBLEVBQUFYLENBQUEsT0FBQUksQ0FBQSxnQkFBQTZCLENBQUEsV0FBQUEsRUFBQSxJQUFBeEMsQ0FBQSxHQUFBQSxDQUFBLENBQUFhLElBQUEsQ0FBQWQsQ0FBQSxNQUFBTSxDQUFBLFdBQUFBLEVBQUEsUUFBQU4sQ0FBQSxHQUFBQyxDQUFBLENBQUFzRSxJQUFBLFdBQUEvRCxDQUFBLEdBQUFSLENBQUEsQ0FBQTZELElBQUEsRUFBQTdELENBQUEsS0FBQUYsQ0FBQSxXQUFBQSxFQUFBRSxDQUFBLElBQUFZLENBQUEsT0FBQU8sQ0FBQSxHQUFBbkIsQ0FBQSxLQUFBd0MsQ0FBQSxXQUFBQSxFQUFBLFVBQUFoQyxDQUFBLFlBQUFQLENBQUEsY0FBQUEsQ0FBQSw4QkFBQVcsQ0FBQSxRQUFBTyxDQUFBO0FBQUEsU0FBQTJGLDRCQUFBOUcsQ0FBQSxFQUFBUSxDQUFBLFFBQUFSLENBQUEsMkJBQUFBLENBQUEsU0FBQW1ILGlCQUFBLENBQUFuSCxDQUFBLEVBQUFRLENBQUEsT0FBQVAsQ0FBQSxNQUFBc0gsUUFBQSxDQUFBekcsSUFBQSxDQUFBZCxDQUFBLEVBQUFtRyxLQUFBLDZCQUFBbEcsQ0FBQSxJQUFBRCxDQUFBLENBQUF1RixXQUFBLEtBQUF0RixDQUFBLEdBQUFELENBQUEsQ0FBQXVGLFdBQUEsQ0FBQUMsSUFBQSxhQUFBdkYsQ0FBQSxjQUFBQSxDQUFBLEdBQUErRyxLQUFBLENBQUFDLElBQUEsQ0FBQWpILENBQUEsb0JBQUFDLENBQUEsK0NBQUF1SCxJQUFBLENBQUF2SCxDQUFBLElBQUFrSCxpQkFBQSxDQUFBbkgsQ0FBQSxFQUFBUSxDQUFBO0FBQUEsU0FBQTJHLGtCQUFBbkgsQ0FBQSxFQUFBUSxDQUFBLGFBQUFBLENBQUEsSUFBQUEsQ0FBQSxHQUFBUixDQUFBLENBQUFvRixNQUFBLE1BQUE1RSxDQUFBLEdBQUFSLENBQUEsQ0FBQW9GLE1BQUEsWUFBQXRGLENBQUEsTUFBQVEsQ0FBQSxHQUFBMEcsS0FBQSxDQUFBeEcsQ0FBQSxHQUFBVixDQUFBLEdBQUFVLENBQUEsRUFBQVYsQ0FBQSxJQUFBUSxDQUFBLENBQUFSLENBQUEsSUFBQUUsQ0FBQSxDQUFBRixDQUFBLFVBQUFRLENBQUE7QUFBQSxTQUFBbUgsbUJBQUFuSCxDQUFBLEVBQUFMLENBQUEsRUFBQUgsQ0FBQSxFQUFBRSxDQUFBLEVBQUFtQixDQUFBLEVBQUFYLENBQUEsRUFBQWUsQ0FBQSxjQUFBUixDQUFBLEdBQUFULENBQUEsQ0FBQUUsQ0FBQSxFQUFBZSxDQUFBLEdBQUFYLENBQUEsR0FBQUcsQ0FBQSxDQUFBSyxLQUFBLFdBQUFkLENBQUEsZ0JBQUFSLENBQUEsQ0FBQVEsQ0FBQSxLQUFBUyxDQUFBLENBQUE4QyxJQUFBLEdBQUE1RCxDQUFBLENBQUFXLENBQUEsSUFBQWlGLE9BQUEsQ0FBQXJDLE9BQUEsQ0FBQTVDLENBQUEsRUFBQThDLElBQUEsQ0FBQTFELENBQUEsRUFBQW1CLENBQUE7QUFBQSxTQUFBdUcsa0JBQUFwSCxDQUFBLDZCQUFBTCxDQUFBLFNBQUFILENBQUEsR0FBQTZILFNBQUEsYUFBQTlCLE9BQUEsV0FBQTdGLENBQUEsRUFBQW1CLENBQUEsUUFBQVgsQ0FBQSxHQUFBRixDQUFBLENBQUFzSCxLQUFBLENBQUEzSCxDQUFBLEVBQUFILENBQUEsWUFBQStILE1BQUF2SCxDQUFBLElBQUFtSCxrQkFBQSxDQUFBakgsQ0FBQSxFQUFBUixDQUFBLEVBQUFtQixDQUFBLEVBQUEwRyxLQUFBLEVBQUFDLE1BQUEsVUFBQXhILENBQUEsY0FBQXdILE9BQUF4SCxDQUFBLElBQUFtSCxrQkFBQSxDQUFBakgsQ0FBQSxFQUFBUixDQUFBLEVBQUFtQixDQUFBLEVBQUEwRyxLQUFBLEVBQUFDLE1BQUEsV0FBQXhILENBQUEsS0FBQXVILEtBQUE7QUFBQSxTQUFBMUgsUUFBQWdCLENBQUEsc0NBQUFoQixPQUFBLHdCQUFBa0IsTUFBQSx1QkFBQUEsTUFBQSxDQUFBQyxRQUFBLGFBQUFILENBQUEsa0JBQUFBLENBQUEsZ0JBQUFBLENBQUEsV0FBQUEsQ0FBQSx5QkFBQUUsTUFBQSxJQUFBRixDQUFBLENBQUFvRSxXQUFBLEtBQUFsRSxNQUFBLElBQUFGLENBQUEsS0FBQUUsTUFBQSxDQUFBSCxTQUFBLHFCQUFBQyxDQUFBLEtBQUFoQixPQUFBLENBQUFnQixDQUFBO0FBcURBLFNBQVM0RyxTQUFTQSxDQUFDQyxJQUFjLEVBQU87RUFDdEMsSUFBTUMsa0JBQWtCLEdBQUcsQ0FDekJDLHdCQUFXLEVBQ1hDLHlCQUFZLEVBQ1pDLHlCQUFZLEVBQ1pDLDhCQUFpQixFQUNqQkMsNkJBQWdCLEVBQ2hCQyx5QkFBWSxFQUNaQywwQkFBYSxFQUNiQyxpQ0FBb0IsRUFDcEJDLHVCQUFVLEVBQ1ZDLGlDQUFvQixFQUNwQkMsaUNBQW9CLEVBQ3BCQyxpQ0FBb0IsRUFDcEI7SUFDRUMsS0FBSyxFQUFFLEdBQUc7SUFDVkMsSUFBSSxFQUFFLDhCQUE4QjtJQUNwQ3ZELElBQUksRUFBRSxTQUFTO0lBQ2ZwRCxJQUFJLEVBQUU0RztFQUNSLENBQUMsRUFDRDtJQUNFRCxJQUFJLEVBQUUscUZBQXFGO0lBQzNGdkQsSUFBSSxFQUFFLHVCQUF1QjtJQUM3QnBELElBQUksRUFBRTZHO0VBQ1IsQ0FBQyxFQUNEO0lBQ0VILEtBQUssRUFBRSxHQUFHO0lBQ1ZDLElBQUksRUFBRSxxQkFBcUI7SUFDM0J2RCxJQUFJLEVBQUUsYUFBYTtJQUNuQnBELElBQUksRUFBRTZHO0VBQ1IsQ0FBQyxDQUNGO0VBQ0QsSUFBTUMsT0FBTyxHQUFHLElBQUFDLDJCQUFlLEVBQUNsQixrQkFBa0IsRUFBRTtJQUNsREQsSUFBSSxFQUFFQTtFQUNSLENBQUMsQ0FBQztFQUNGLE9BQU9rQixPQUFPO0FBQ2hCO0FBRUEsU0FBU0UsUUFBUUEsQ0FDZkMsV0FBK0IsRUFDL0JDLFdBQW1CLEVBQ25CQyxPQUFlLEVBQ1Q7RUFDTnBLLEdBQUcsQ0FBQ3FLLEtBQUssQ0FBQ0gsV0FBVyxLQUFBSSxNQUFBLENBQUtILFdBQVcsZUFBWUMsT0FBTyxDQUFDO0FBQzNEO0FBRUEsU0FBU0csU0FBU0EsQ0FDaEJDLGVBQXVCLEVBQ3ZCVCxPQUFZLEVBQ1pVLFFBQWdCLEVBQ2hCQyxjQUFtQixFQUNYO0VBQ1IsSUFBSVgsT0FBTyxDQUFDWSxNQUFNLEVBQUU7SUFDbEIsSUFBTUMsU0FBUyxHQUFHNUssR0FBRyxDQUFDNkssYUFBYSxDQUNqQ0wsZUFBZSxFQUNmLGtCQUFrQixFQUNsQlQsT0FBTyxDQUFDZSxNQUNWLENBQUM7SUFDRCxJQUNHTCxRQUFRLEtBQUssRUFBRSxJQUFJRyxTQUFTLEtBQUssRUFBRSxJQUNuQ0gsUUFBUSxLQUFLLENBQUMsSUFBSUcsU0FBUyxLQUFLLENBQUMsSUFBSUEsU0FBUyxLQUFLLEVBQUcsRUFDdkQ7TUFDQUgsUUFBUSxHQUFHRyxTQUFTO0lBQ3RCO0VBQ0Y7RUFDQSxJQUNFRyxnQkFBZ0IsQ0FBQ1AsZUFBZSxFQUFFVCxPQUFPLEVBQUVXLGNBQWMsQ0FBQyxLQUN6REQsUUFBUSxLQUFLLENBQUMsSUFBSUEsUUFBUSxLQUFLLEVBQUUsQ0FBQyxFQUNuQztJQUNBQSxRQUFRLEdBQUcsQ0FBQztFQUNkO0VBQ0EsT0FBT0EsUUFBUTtBQUNqQjtBQUVBLFNBQVNPLG9CQUFvQkEsQ0FDM0JDLElBQVMsRUFDVEMsT0FBMEIsRUFDMUJDLFFBQTZCLEVBQzdCQyxNQUEyQixFQUMzQkMsVUFBbUIsRUFDSjtFQUNmSCxPQUFPLENBQUNELElBQUksQ0FBQztFQUNiLElBQUlqSyxPQUFBLENBQU9pSyxJQUFJLE1BQUssUUFBUSxJQUFJM0osTUFBTSxDQUFDcUYsSUFBSSxDQUFDc0UsSUFBSSxDQUFDLENBQUNoRixNQUFNLEtBQUssQ0FBQyxFQUFFO0lBQzlEO0lBQ0EsT0FBTyxJQUFJO0VBQ2I7RUFDQSxJQUFNcUYsUUFBUSxHQUFHQyxJQUFJLENBQUNDLFNBQVMsQ0FBQ1AsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7RUFDOUMsSUFBSSxDQUFDSSxVQUFVLEVBQUU7SUFDZixPQUFPQyxRQUFRO0VBQ2pCLENBQUMsTUFBTTtJQUNMLElBQU1HLGFBQWdCLEdBQUdOLFFBQVEsQ0FBQ0csUUFBUSxDQUFDO0lBQzNDLE9BQU9GLE1BQU0sQ0FBQ0ssYUFBYSxDQUFDO0VBQzlCO0FBQ0Y7QUFBQyxTQUVjQyxZQUFZQSxDQUFBQyxFQUFBLEVBQUFDLEdBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBLEVBQUFDLEdBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBO0VBQUEsT0FBQUMsYUFBQSxDQUFBekQsS0FBQSxPQUFBRCxTQUFBO0FBQUE7QUFBQSxTQUFBMEQsY0FBQTtFQUFBQSxhQUFBLEdBQUEzRCxpQkFBQSxjQUFBekcsbUJBQUEsR0FBQXdFLElBQUEsQ0FBM0IsU0FBQTZGLFFBQ0VDLGFBQXFCLEVBQ3JCNUIsZUFBdUIsRUFDdkI2QixhQUFvQixFQUNwQm5CLE9BQVksRUFDWm9CLGFBQTZDLEVBQzdDdkMsT0FBWSxFQUNad0MsYUFBbUI7SUFBQSxJQUFBQyxVQUFBLEVBQUFDLE1BQUEsRUFBQUMsYUFBQSxFQUFBQyxRQUFBLEVBQUFDLFdBQUEsRUFBQUMsT0FBQSxFQUFBNUIsSUFBQSxFQUFBNkIsWUFBQSxFQUFBQyxTQUFBLEVBQUFDLGFBQUE7SUFBQSxPQUFBbEwsbUJBQUEsR0FBQWEsSUFBQSxVQUFBc0ssU0FBQUMsUUFBQTtNQUFBLGtCQUFBQSxRQUFBLENBQUFwRyxJQUFBLEdBQUFvRyxRQUFBLENBQUE5SCxJQUFBO1FBQUE7VUFBQW9ILFVBQUEsR0FBQXZFLDBCQUFBLENBRVMsSUFBQWtGLHFCQUFPLEVBQUNmLGFBQWEsRUFBRUMsYUFBYSxDQUFDO1VBQUFhLFFBQUEsQ0FBQXBHLElBQUE7VUFBQTBGLFVBQUEsQ0FBQWxKLENBQUE7UUFBQTtVQUFBLEtBQUFtSixNQUFBLEdBQUFELFVBQUEsQ0FBQXJMLENBQUEsSUFBQXVELElBQUE7WUFBQXdJLFFBQUEsQ0FBQTlILElBQUE7WUFBQTtVQUFBO1VBQXREc0gsYUFBYSxHQUFBRCxNQUFBLENBQUF4SyxLQUFBO1VBQ2hCMEssUUFBUSxHQUFHRCxhQUFhLENBQUNBLGFBQWEsQ0FBQ3pHLE1BQU0sR0FBRyxDQUFDLENBQUM7VUFBQSxJQUNuRDBHLFFBQVEsQ0FBQ1MsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUFBRixRQUFBLENBQUE5SCxJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUE4SCxRQUFBLENBQUFqSSxNQUFBO1FBQUE7VUFDekIySCxXQUFXLEdBQUdTLGdCQUFJLENBQUNDLElBQUksQ0FBQTdFLEtBQUEsQ0FBVDRFLGdCQUFJLEdBQU1qQixhQUFhLEVBQUE5QixNQUFBLENBQUE5QyxrQkFBQSxDQUFLa0YsYUFBYSxHQUFDO1VBQ3hERyxPQUFPLEdBQUdVLG1CQUFFLENBQUNDLFlBQVksQ0FBQ1osV0FBVyxFQUFFO1lBQUVhLFFBQVEsRUFBRTtVQUFPLENBQUMsQ0FBQztVQUNsRSxJQUFJMUQsT0FBTyxDQUFDMkQsT0FBTyxFQUFFQyxPQUFPLENBQUNDLEdBQUcsbUJBQUF0RCxNQUFBLENBQW1Cc0MsV0FBVyxRQUFLLENBQUM7VUFDOUQzQixJQUFJLEdBQUdNLElBQUksQ0FBQ3NDLEtBQUssQ0FBQ2hCLE9BQU8sQ0FBQztVQUMxQkMsWUFBWSxHQUFHLENBQUMvQyxPQUFPLENBQUMsYUFBYSxDQUFDO1VBQ3RDZ0QsU0FBUyxHQUFHL0Isb0JBQW9CLENBQ3BDQyxJQUFJLEVBQ0pDLE9BQU8sRUFDUG9CLGFBQWEsQ0FBQ25CLFFBQVEsRUFDdEJtQixhQUFhLENBQUNsQixNQUFNLEVBQ3BCMEIsWUFDRixDQUFDO1VBQUEsTUFFR0MsU0FBUyxLQUFLLElBQUk7WUFBQUcsUUFBQSxDQUFBOUgsSUFBQTtZQUFBO1VBQUE7VUFDZDRILGFBQWEsR0FBR0ssZ0JBQUksQ0FBQ0MsSUFBSSxDQUFBN0UsS0FBQSxDQUFUNEUsZ0JBQUksR0FBTTdDLGVBQWUsRUFBQUYsTUFBQSxDQUFBOUMsa0JBQUEsQ0FBS2tGLGFBQWEsR0FBQztVQUNsRWEsbUJBQUUsQ0FBQ08sYUFBYSxDQUFDVCxnQkFBSSxDQUFDVSxPQUFPLENBQUNmLGFBQWEsQ0FBQyxDQUFDO1VBQzdDTyxtQkFBRSxDQUFDUyxhQUFhLENBQUNoQixhQUFhLEVBQUVELFNBQVMsRUFBRTtZQUFFVSxRQUFRLEVBQUU7VUFBTyxDQUFDLENBQUM7VUFBQSxLQUU1RGxCLGFBQWE7WUFBQVcsUUFBQSxDQUFBOUgsSUFBQTtZQUFBO1VBQUE7VUFBQThILFFBQUEsQ0FBQTlILElBQUE7VUFBQSxPQUNUbUgsYUFBYSxDQUFDdEIsSUFBSSxFQUFFVCxlQUFlLEVBQUVULE9BQU8sQ0FBQztRQUFBO1VBQUFtRCxRQUFBLENBQUE5SCxJQUFBO1VBQUE7UUFBQTtVQUFBOEgsUUFBQSxDQUFBOUgsSUFBQTtVQUFBO1FBQUE7VUFBQThILFFBQUEsQ0FBQXBHLElBQUE7VUFBQW9HLFFBQUEsQ0FBQWUsRUFBQSxHQUFBZixRQUFBO1VBQUFWLFVBQUEsQ0FBQTdMLENBQUEsQ0FBQXVNLFFBQUEsQ0FBQWUsRUFBQTtRQUFBO1VBQUFmLFFBQUEsQ0FBQXBHLElBQUE7VUFBQTBGLFVBQUEsQ0FBQW5KLENBQUE7VUFBQSxPQUFBNkosUUFBQSxDQUFBN0YsTUFBQTtRQUFBO1FBQUE7VUFBQSxPQUFBNkYsUUFBQSxDQUFBakcsSUFBQTtNQUFBO0lBQUEsR0FBQWtGLE9BQUE7RUFBQSxDQUkxRDtFQUFBLE9BQUFELGFBQUEsQ0FBQXpELEtBQUEsT0FBQUQsU0FBQTtBQUFBO0FBQUEsU0FFYzBGLG9CQUFvQkEsQ0FBQUMsR0FBQTtFQUFBLE9BQUFDLHFCQUFBLENBQUEzRixLQUFBLE9BQUFELFNBQUE7QUFBQTtBQUFBLFNBQUE0RixzQkFBQTtFQUFBQSxxQkFBQSxHQUFBN0YsaUJBQUEsY0FBQXpHLG1CQUFBLEdBQUF3RSxJQUFBLENBQW5DLFNBQUErSCxTQUFvQ3RFLE9BQVk7SUFBQSxJQUFBdUUsY0FBQTtJQUFBLElBQUFsRSxPQUFBLEVBQUFLLFFBQUEsRUFBQVAsV0FBQSxFQUFBcUUsZUFBQSxFQUFBQyxjQUFBLEVBQUFDLFVBQUEsRUFBQUMsTUFBQSxFQUFBQyxPQUFBLEVBQUF4RSxXQUFBLEVBQUFpQyxhQUFBLEVBQUE1QixlQUFBLEVBQUFvRSxVQUFBLEVBQUFDLE1BQUEsRUFBQUMsUUFBQSxFQUFBQyxZQUFBLEVBQUFDLGNBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsVUFBQSxFQUFBQyxNQUFBLEVBQUFDLFNBQUEsRUFBQUMsYUFBQSxFQUFBQyxlQUFBLEVBQUFDLGlCQUFBLEVBQUFDLFVBQUEsRUFBQUMsTUFBQSxFQUFBQyxTQUFBLEVBQUFDLGFBQUEsRUFBQUMsZUFBQSxFQUFBQyxpQkFBQSxFQUFBQyxVQUFBLEVBQUFDLE1BQUEsRUFBQUMsU0FBQSxFQUFBQyxhQUFBLEVBQUFDLGVBQUEsRUFBQUMsaUJBQUEsRUFBQUMsVUFBQSxFQUFBQyxNQUFBLEVBQUFDLFNBQUEsRUFBQUMsYUFBQSxFQUFBQyxlQUFBLEVBQUFDLGlCQUFBLEVBQUFDLFdBQUEsRUFBQUMsT0FBQSxFQUFBQyxTQUFBLEVBQUFDLGFBQUEsRUFBQUMsZUFBQSxFQUFBQyxpQkFBQTtJQUFBLE9BQUFqUCxtQkFBQSxHQUFBYSxJQUFBLFVBQUFxTyxVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQW5LLElBQUEsR0FBQW1LLFNBQUEsQ0FBQTdMLElBQUE7UUFBQTtVQUN4Q2dGLE9BQWUsR0FBR0wsT0FBTyxDQUFDSyxPQUFPO1VBQ3ZDOEcsSUFBSSxDQUFDblAsU0FBUyxDQUFDb1AsTUFBTSxHQUFHQyx3QkFBaUI7VUFDckMzRyxRQUFRLEdBQUdWLE9BQU8sQ0FBQ1ksTUFBTSxHQUFHLEVBQUUsR0FBRyxDQUFDO1VBQ2hDVCxXQUFXLElBQUFvRSxjQUFBLEdBQUd2RSxPQUFPLENBQUNNLEtBQUssY0FBQWlFLGNBQUEsdUJBQWJBLGNBQUEsQ0FBZStDLElBQUksQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1VBQ3ZEL0MsZUFBZSxHQUFHLElBQUFnRCw0QkFBa0IsRUFBQ3hILE9BQU8sQ0FBQ3lILFVBQVUsQ0FBQztVQUMxRGhELGNBQWMsR0FBRyxJQUFBaUQsNkJBQW1CLEVBQUNDLGtCQUFRLEVBQUUzSCxPQUFPLENBQUM0SCxXQUFXLENBQUM7VUFBQSxNQUVuRXBELGVBQWUsR0FBR3FELHlCQUFlLENBQUNDLGdCQUFnQjtZQUFBWixTQUFBLENBQUE3TCxJQUFBO1lBQUE7VUFBQTtVQUFBcUosVUFBQSxHQUFBeEcsMEJBQUEsQ0FDOUJ1RyxjQUFjLENBQUNzRCxnQkFBZ0I7VUFBQWIsU0FBQSxDQUFBbkssSUFBQTtVQUFBMkgsVUFBQSxDQUFBbkwsQ0FBQTtRQUFBO1VBQUEsS0FBQW9MLE1BQUEsR0FBQUQsVUFBQSxDQUFBdE4sQ0FBQSxJQUFBdUQsSUFBQTtZQUFBdU0sU0FBQSxDQUFBN0wsSUFBQTtZQUFBO1VBQUE7VUFBMUN1SixPQUFPLEdBQUFELE1BQUEsQ0FBQXpNLEtBQUE7VUFDVmtJLFdBQVcsR0FBR2tELGdCQUFJLENBQUMwRSxRQUFRLENBQUNwRCxPQUFPLENBQUNoQyxRQUFRLEVBQUUsT0FBTyxDQUFDO1VBQUEsTUFDeEQ1QyxPQUFPLENBQUM0RSxPQUFPLElBQUl4RSxXQUFXLEtBQUtKLE9BQU8sQ0FBQzRFLE9BQU87WUFBQXNDLFNBQUEsQ0FBQTdMLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQTZMLFNBQUEsQ0FBQWhNLE1BQUE7UUFBQTtVQUd0RGdGLFFBQVEsQ0FBQ0MsV0FBVyxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sQ0FBQztVQUVyQ2dDLGFBQXFCLEdBQUdpQixnQkFBSSxDQUFDQyxJQUFJLENBQUNsRCxPQUFPLEVBQUVELFdBQVcsQ0FBQztVQUN2REssZUFBdUIsTUFBQUYsTUFBQSxDQUFNOEIsYUFBYTtVQUNoRCxJQUFJckMsT0FBTyxDQUFDaUksSUFBSSxFQUFFO1lBQ2hCaFMsR0FBRyxDQUFDaVMsWUFBWSxDQUFDekgsZUFBZSxDQUFDO1VBQ25DO1VBRUEwSCxnQkFBZ0IsQ0FBQy9ILFdBQVcsRUFBRUosT0FBTyxDQUFDO1VBQUFrSCxTQUFBLENBQUE3TCxJQUFBO1VBQUEsT0FDaENzRyxZQUFZLENBQ2hCVSxhQUFhLEVBQ2I1QixlQUFlLEVBQ2YsQ0FBQyxTQUFTLENBQUMsRUFDWDJILHFCQUFXLEVBQ1g7WUFDRWhILFFBQVEsRUFBRWlILDJCQUF1QixDQUFDQyxRQUFRO1lBQzFDakgsTUFBTSxFQUFFZ0gsMkJBQXVCLENBQUNFO1VBQ2xDLENBQUMsRUFDRHZJLE9BQ0YsQ0FBQztRQUFBO1VBQUFrSCxTQUFBLENBQUE3TCxJQUFBO1VBQUEsT0FDS3NHLFlBQVksQ0FDaEJVLGFBQWEsRUFDYjVCLGVBQWUsRUFDZixDQUFDLFNBQVMsQ0FBQyxFQUNYK0gscUJBQVcsRUFDWDtZQUNFcEgsUUFBUSxFQUFFaUgsMkJBQXVCLENBQUNJLFFBQVE7WUFDMUNwSCxNQUFNLEVBQUVnSCwyQkFBdUIsQ0FBQ0s7VUFDbEMsQ0FBQyxFQUNEMUksT0FDRixDQUFDO1FBQUE7VUFFRFUsUUFBUSxHQUFHRixTQUFTLENBQUNDLGVBQWUsRUFBRVQsT0FBTyxFQUFFVSxRQUFRLEVBQUUsQ0FDdkQsU0FBUyxFQUNULFNBQVMsQ0FDVixDQUFDO1FBQUE7VUFBQXdHLFNBQUEsQ0FBQTdMLElBQUE7VUFBQTtRQUFBO1VBQUE2TCxTQUFBLENBQUE3TCxJQUFBO1VBQUE7UUFBQTtVQUFBNkwsU0FBQSxDQUFBbkssSUFBQTtVQUFBbUssU0FBQSxDQUFBaEQsRUFBQSxHQUFBZ0QsU0FBQTtVQUFBeEMsVUFBQSxDQUFBOU4sQ0FBQSxDQUFBc1EsU0FBQSxDQUFBaEQsRUFBQTtRQUFBO1VBQUFnRCxTQUFBLENBQUFuSyxJQUFBO1VBQUEySCxVQUFBLENBQUFwTCxDQUFBO1VBQUEsT0FBQTROLFNBQUEsQ0FBQTVKLE1BQUE7UUFBQTtVQUFBLE1BSUZrSCxlQUFlLEdBQUdxRCx5QkFBZSxDQUFDYyxPQUFPO1lBQUF6QixTQUFBLENBQUE3TCxJQUFBO1lBQUE7VUFBQTtVQUFBd0osVUFBQSxHQUFBM0csMEJBQUEsQ0FDckJ1RyxjQUFjLENBQUNtRSxPQUFPO1VBQUExQixTQUFBLENBQUFuSyxJQUFBO1VBQUE4SCxVQUFBLENBQUF0TCxDQUFBO1FBQUE7VUFBQSxLQUFBdUwsTUFBQSxHQUFBRCxVQUFBLENBQUF6TixDQUFBLElBQUF1RCxJQUFBO1lBQUF1TSxTQUFBLENBQUE3TCxJQUFBO1lBQUE7VUFBQTtVQUFqQ3VKLFFBQU8sR0FBQUUsTUFBQSxDQUFBNU0sS0FBQTtVQUNWa0ksWUFBVyxHQUFHa0QsZ0JBQUksQ0FBQzBFLFFBQVEsQ0FBQ3BELFFBQU8sQ0FBQ2hDLFFBQVEsRUFBRSxPQUFPLENBQUM7VUFBQSxNQUN4RDVDLE9BQU8sQ0FBQzRFLE9BQU8sSUFBSXhFLFlBQVcsS0FBS0osT0FBTyxDQUFDNEUsT0FBTztZQUFBc0MsU0FBQSxDQUFBN0wsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBNkwsU0FBQSxDQUFBaE0sTUFBQTtRQUFBO1VBSXREZ0YsUUFBUSxDQUFDQyxXQUFXLEVBQUVDLFlBQVcsRUFBRUMsT0FBTyxDQUFDO1VBQzNDOEgsZ0JBQWdCLENBQUMvSCxZQUFXLEVBQUVKLE9BQU8sQ0FBQztVQUNoQ3FDLGNBQXFCLEdBQUdpQixnQkFBSSxDQUFDQyxJQUFJLENBQUNsRCxPQUFPLEVBQUVELFlBQVcsQ0FBQztVQUN2REssZ0JBQXVCLE1BQUFGLE1BQUEsQ0FBTThCLGNBQWE7VUFBQTZFLFNBQUEsQ0FBQTdMLElBQUE7VUFBQSxPQUUxQ3NHLFlBQVksQ0FDaEJVLGNBQWEsRUFDYjVCLGdCQUFlLEVBQ2YsRUFBRSxFQUNGb0ksc0JBQVksRUFDWjtZQUNFekgsUUFBUSxFQUFFMEgsZ0JBQWMsQ0FBQ0MsU0FBUztZQUNsQzFILE1BQU0sRUFBRXlILGdCQUFjLENBQUNFO1VBQ3pCLENBQUMsRUFDRGhKLE9BQ0YsQ0FBQztRQUFBO1VBRURVLFFBQVEsR0FBR0YsU0FBUyxDQUFDQyxnQkFBZSxFQUFFVCxPQUFPLEVBQUVVLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQUE7VUFBQXdHLFNBQUEsQ0FBQTdMLElBQUE7VUFBQTtRQUFBO1VBQUE2TCxTQUFBLENBQUE3TCxJQUFBO1VBQUE7UUFBQTtVQUFBNkwsU0FBQSxDQUFBbkssSUFBQTtVQUFBbUssU0FBQSxDQUFBK0IsRUFBQSxHQUFBL0IsU0FBQTtVQUFBckMsVUFBQSxDQUFBak8sQ0FBQSxDQUFBc1EsU0FBQSxDQUFBK0IsRUFBQTtRQUFBO1VBQUEvQixTQUFBLENBQUFuSyxJQUFBO1VBQUE4SCxVQUFBLENBQUF2TCxDQUFBO1VBQUEsT0FBQTROLFNBQUEsQ0FBQTVKLE1BQUE7UUFBQTtVQUFBLE1BSS9Ea0gsZUFBZSxHQUFHcUQseUJBQWUsQ0FBQ3FCLFdBQVc7WUFBQWhDLFNBQUEsQ0FBQTdMLElBQUE7WUFBQTtVQUFBO1VBQUE4SixVQUFBLEdBQUFqSCwwQkFBQSxDQUN6QnVHLGNBQWMsQ0FBQzBFLFdBQVc7VUFBQWpDLFNBQUEsQ0FBQW5LLElBQUE7VUFBQW9JLFVBQUEsQ0FBQTVMLENBQUE7UUFBQTtVQUFBLEtBQUE2TCxNQUFBLEdBQUFELFVBQUEsQ0FBQS9OLENBQUEsSUFBQXVELElBQUE7WUFBQXVNLFNBQUEsQ0FBQTdMLElBQUE7WUFBQTtVQUFBO1VBQXJDdUosU0FBTyxHQUFBUSxNQUFBLENBQUFsTixLQUFBO1VBQ1ZrSSxhQUFXLEdBQUdrRCxnQkFBSSxDQUFDMEUsUUFBUSxDQUFDcEQsU0FBTyxDQUFDaEMsUUFBUSxFQUFFLE9BQU8sQ0FBQztVQUFBLE1BQ3hENUMsT0FBTyxDQUFDNEUsT0FBTyxJQUFJeEUsYUFBVyxLQUFLSixPQUFPLENBQUM0RSxPQUFPO1lBQUFzQyxTQUFBLENBQUE3TCxJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUE2TCxTQUFBLENBQUFoTSxNQUFBO1FBQUE7VUFJdERnRixRQUFRLENBQUNDLFdBQVcsRUFBRUMsYUFBVyxFQUFFQyxPQUFPLENBQUM7VUFDM0M4SCxnQkFBZ0IsQ0FBQy9ILGFBQVcsRUFBRUosT0FBTyxDQUFDO1VBQ2hDcUMsZUFBcUIsR0FBR2lCLGdCQUFJLENBQUNDLElBQUksQ0FBQ2xELE9BQU8sRUFBRUQsYUFBVyxDQUFDO1VBQ3ZESyxpQkFBdUIsTUFBQUYsTUFBQSxDQUFNOEIsZUFBYTtVQUFBNkUsU0FBQSxDQUFBN0wsSUFBQTtVQUFBLE9BRTFDc0csWUFBWSxDQUNoQlUsZUFBYSxFQUNiNUIsaUJBQWUsRUFDZixFQUFFLEVBQ0YySSx5QkFBZSxFQUNmO1lBQ0VoSSxRQUFRLEVBQUVpSSxvQkFBa0IsQ0FBQ0MsWUFBWTtZQUN6Q2pJLE1BQU0sRUFBRWdJLG9CQUFrQixDQUFDRTtVQUM3QixDQUFDLEVBQ0R2SixPQUNGLENBQUM7UUFBQTtVQUVEVSxRQUFRLEdBQUdGLFNBQVMsQ0FBQ0MsaUJBQWUsRUFBRVQsT0FBTyxFQUFFVSxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUFBO1VBQUF3RyxTQUFBLENBQUE3TCxJQUFBO1VBQUE7UUFBQTtVQUFBNkwsU0FBQSxDQUFBN0wsSUFBQTtVQUFBO1FBQUE7VUFBQTZMLFNBQUEsQ0FBQW5LLElBQUE7VUFBQW1LLFNBQUEsQ0FBQXNDLEVBQUEsR0FBQXRDLFNBQUE7VUFBQS9CLFVBQUEsQ0FBQXZPLENBQUEsQ0FBQXNRLFNBQUEsQ0FBQXNDLEVBQUE7UUFBQTtVQUFBdEMsU0FBQSxDQUFBbkssSUFBQTtVQUFBb0ksVUFBQSxDQUFBN0wsQ0FBQTtVQUFBLE9BQUE0TixTQUFBLENBQUE1SixNQUFBO1FBQUE7VUFBQSxNQUkvRGtILGVBQWUsR0FBR3FELHlCQUFlLENBQUM0QixtQkFBbUI7WUFBQXZDLFNBQUEsQ0FBQTdMLElBQUE7WUFBQTtVQUFBO1VBQUFvSyxVQUFBLEdBQUF2SCwwQkFBQSxDQUNqQ3VHLGNBQWMsQ0FBQ2lGLG1CQUFtQjtVQUFBeEMsU0FBQSxDQUFBbkssSUFBQTtVQUFBMEksVUFBQSxDQUFBbE0sQ0FBQTtRQUFBO1VBQUEsS0FBQW1NLE1BQUEsR0FBQUQsVUFBQSxDQUFBck8sQ0FBQSxJQUFBdUQsSUFBQTtZQUFBdU0sU0FBQSxDQUFBN0wsSUFBQTtZQUFBO1VBQUE7VUFBN0N1SixTQUFPLEdBQUFjLE1BQUEsQ0FBQXhOLEtBQUE7VUFDVmtJLGFBQVcsR0FBR2tELGdCQUFJLENBQUMwRSxRQUFRLENBQUNwRCxTQUFPLENBQUNoQyxRQUFRLEVBQUUsT0FBTyxDQUFDO1VBQUEsTUFDeEQ1QyxPQUFPLENBQUM0RSxPQUFPLElBQUl4RSxhQUFXLEtBQUtKLE9BQU8sQ0FBQzRFLE9BQU87WUFBQXNDLFNBQUEsQ0FBQTdMLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQTZMLFNBQUEsQ0FBQWhNLE1BQUE7UUFBQTtVQUl0RGdGLFFBQVEsQ0FBQ0MsV0FBVyxFQUFFQyxhQUFXLEVBQUVDLE9BQU8sQ0FBQztVQUMzQzhILGdCQUFnQixDQUFDL0gsYUFBVyxFQUFFSixPQUFPLENBQUM7VUFDaENxQyxlQUFxQixHQUFHaUIsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDbEQsT0FBTyxFQUFFRCxhQUFXLENBQUM7VUFDdkRLLGlCQUF1QixNQUFBRixNQUFBLENBQU04QixlQUFhO1VBQUE2RSxTQUFBLENBQUE3TCxJQUFBO1VBQUEsT0FFMUNzRyxZQUFZLENBQ2hCVSxlQUFhLEVBQ2I1QixpQkFBZSxFQUNmLENBQUMsV0FBVyxDQUFDLEVBQ2JrSixpQ0FBdUIsRUFDdkI7WUFDRXZJLFFBQVEsRUFBRXdJLDZCQUEwQixDQUFDQyxVQUFVO1lBQy9DeEksTUFBTSxFQUFFdUksNkJBQTBCLENBQUNFO1VBQ3JDLENBQUMsRUFDRDlKLE9BQU8sRUFDUCtKLG9DQUNGLENBQUM7UUFBQTtVQUFBN0MsU0FBQSxDQUFBN0wsSUFBQTtVQUFBLE9BQ0tzRyxZQUFZLENBQ2hCVSxlQUFhLEVBQ2I1QixpQkFBZSxFQUNmLENBQUMsVUFBVSxDQUFDLEVBQ1p1SixtQ0FBeUIsRUFDekI7WUFDRTVJLFFBQVEsRUFBRXdJLDZCQUEwQixDQUFDSyxzQkFBc0I7WUFDM0Q1SSxNQUFNLEVBQUV1SSw2QkFBMEIsQ0FBQ007VUFDckMsQ0FBQyxFQUNEbEssT0FDRixDQUFDO1FBQUE7VUFFRFUsUUFBUSxHQUFHRixTQUFTLENBQUNDLGlCQUFlLEVBQUVULE9BQU8sRUFBRVUsUUFBUSxFQUFFLENBQ3ZELFdBQVcsRUFDWCxVQUFVLENBQ1gsQ0FBQztRQUFBO1VBQUF3RyxTQUFBLENBQUE3TCxJQUFBO1VBQUE7UUFBQTtVQUFBNkwsU0FBQSxDQUFBN0wsSUFBQTtVQUFBO1FBQUE7VUFBQTZMLFNBQUEsQ0FBQW5LLElBQUE7VUFBQW1LLFNBQUEsQ0FBQWlELEVBQUEsR0FBQWpELFNBQUE7VUFBQXpCLFVBQUEsQ0FBQTdPLENBQUEsQ0FBQXNRLFNBQUEsQ0FBQWlELEVBQUE7UUFBQTtVQUFBakQsU0FBQSxDQUFBbkssSUFBQTtVQUFBMEksVUFBQSxDQUFBbk0sQ0FBQTtVQUFBLE9BQUE0TixTQUFBLENBQUE1SixNQUFBO1FBQUE7VUFBQSxNQUlGa0gsZUFBZSxHQUFHcUQseUJBQWUsQ0FBQ3VDLFFBQVE7WUFBQWxELFNBQUEsQ0FBQTdMLElBQUE7WUFBQTtVQUFBO1VBQUEwSyxVQUFBLEdBQUE3SCwwQkFBQSxDQUN0QnVHLGNBQWMsQ0FBQzRGLFFBQVE7VUFBQW5ELFNBQUEsQ0FBQW5LLElBQUE7VUFBQWdKLFVBQUEsQ0FBQXhNLENBQUE7UUFBQTtVQUFBLEtBQUF5TSxNQUFBLEdBQUFELFVBQUEsQ0FBQTNPLENBQUEsSUFBQXVELElBQUE7WUFBQXVNLFNBQUEsQ0FBQTdMLElBQUE7WUFBQTtVQUFBO1VBQWxDdUosU0FBTyxHQUFBb0IsTUFBQSxDQUFBOU4sS0FBQTtVQUNWa0ksYUFBVyxHQUFHa0QsZ0JBQUksQ0FBQzBFLFFBQVEsQ0FBQ3BELFNBQU8sQ0FBQ2hDLFFBQVEsRUFBRSxPQUFPLENBQUM7VUFBQSxNQUN4RDVDLE9BQU8sQ0FBQzRFLE9BQU8sSUFBSXhFLGFBQVcsS0FBS0osT0FBTyxDQUFDNEUsT0FBTztZQUFBc0MsU0FBQSxDQUFBN0wsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBNkwsU0FBQSxDQUFBaE0sTUFBQTtRQUFBO1VBSXREZ0YsUUFBUSxDQUFDQyxXQUFXLEVBQUVDLGFBQVcsRUFBRUMsT0FBTyxDQUFDO1VBQzNDOEgsZ0JBQWdCLENBQUMvSCxhQUFXLEVBQUVKLE9BQU8sQ0FBQztVQUNoQ3FDLGVBQXFCLEdBQUdpQixnQkFBSSxDQUFDQyxJQUFJLENBQUNsRCxPQUFPLEVBQUVELGFBQVcsQ0FBQztVQUN2REssaUJBQXVCLE1BQUFGLE1BQUEsQ0FBTThCLGVBQWE7VUFBQTZFLFNBQUEsQ0FBQTdMLElBQUE7VUFBQSxPQUUxQ3NHLFlBQVksQ0FDaEJVLGVBQWEsRUFDYjVCLGlCQUFlLEVBQ2YsRUFBRSxFQUNGNkosc0JBQVksRUFDWjtZQUNFbEosUUFBUSxFQUFFbUosaUJBQWUsQ0FBQ0MsU0FBUztZQUNuQ25KLE1BQU0sRUFBRWtKLGlCQUFlLENBQUNFO1VBQzFCLENBQUMsRUFDRHpLLE9BQ0YsQ0FBQztRQUFBO1VBRURVLFFBQVEsR0FBR0YsU0FBUyxDQUFDQyxpQkFBZSxFQUFFVCxPQUFPLEVBQUVVLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQUE7VUFBQXdHLFNBQUEsQ0FBQTdMLElBQUE7VUFBQTtRQUFBO1VBQUE2TCxTQUFBLENBQUE3TCxJQUFBO1VBQUE7UUFBQTtVQUFBNkwsU0FBQSxDQUFBbkssSUFBQTtVQUFBbUssU0FBQSxDQUFBd0QsRUFBQSxHQUFBeEQsU0FBQTtVQUFBbkIsVUFBQSxDQUFBblAsQ0FBQSxDQUFBc1EsU0FBQSxDQUFBd0QsRUFBQTtRQUFBO1VBQUF4RCxTQUFBLENBQUFuSyxJQUFBO1VBQUFnSixVQUFBLENBQUF6TSxDQUFBO1VBQUEsT0FBQTROLFNBQUEsQ0FBQTVKLE1BQUE7UUFBQTtVQUFBLE1BSS9Ea0gsZUFBZSxHQUFHcUQseUJBQWUsQ0FBQzhDLFNBQVM7WUFBQXpELFNBQUEsQ0FBQTdMLElBQUE7WUFBQTtVQUFBO1VBQUFnTCxVQUFBLEdBQUFuSSwwQkFBQSxDQUN2QnlKLGtCQUFRLENBQUNpRCxTQUFTO1VBQUExRCxTQUFBLENBQUFuSyxJQUFBO1VBQUFzSixVQUFBLENBQUE5TSxDQUFBO1FBQUE7VUFBQSxLQUFBK00sTUFBQSxHQUFBRCxVQUFBLENBQUFqUCxDQUFBLElBQUF1RCxJQUFBO1lBQUF1TSxTQUFBLENBQUE3TCxJQUFBO1lBQUE7VUFBQTtVQUE3QnVKLFNBQU8sR0FBQTBCLE1BQUEsQ0FBQXBPLEtBQUE7VUFDVmtJLGFBQVcsR0FBR2tELGdCQUFJLENBQUMwRSxRQUFRLENBQUNwRCxTQUFPLENBQUNoQyxRQUFRLEVBQUUsT0FBTyxDQUFDO1VBQUEsTUFDeEQ1QyxPQUFPLENBQUM0RSxPQUFPLElBQUl4RSxhQUFXLEtBQUtKLE9BQU8sQ0FBQzRFLE9BQU87WUFBQXNDLFNBQUEsQ0FBQTdMLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQTZMLFNBQUEsQ0FBQWhNLE1BQUE7UUFBQTtVQUl0RGdGLFFBQVEsQ0FBQ0MsV0FBVyxFQUFFQyxhQUFXLEVBQUVDLE9BQU8sQ0FBQztVQUMzQzhILGdCQUFnQixDQUFDL0gsYUFBVyxFQUFFSixPQUFPLENBQUM7VUFDaENxQyxlQUFxQixHQUFHaUIsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDbEQsT0FBTyxFQUFFRCxhQUFXLENBQUM7VUFDdkRLLGlCQUF1QixNQUFBRixNQUFBLENBQU04QixlQUFhO1VBQUE2RSxTQUFBLENBQUE3TCxJQUFBO1VBQUEsT0FFMUNzRyxZQUFZLENBQ2hCVSxlQUFhLEVBQ2I1QixpQkFBZSxFQUNmLEVBQUUsRUFDRm9LLHVCQUFhLEVBQ2I7WUFDRXpKLFFBQVEsRUFBRTBKLGtCQUFnQixDQUFDQyxVQUFVO1lBQ3JDMUosTUFBTSxFQUFFeUosa0JBQWdCLENBQUNFO1VBQzNCLENBQUMsRUFDRGhMLE9BQ0YsQ0FBQztRQUFBO1VBRURVLFFBQVEsR0FBR0YsU0FBUyxDQUFDQyxpQkFBZSxFQUFFVCxPQUFPLEVBQUVVLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQUE7VUFBQXdHLFNBQUEsQ0FBQTdMLElBQUE7VUFBQTtRQUFBO1VBQUE2TCxTQUFBLENBQUE3TCxJQUFBO1VBQUE7UUFBQTtVQUFBNkwsU0FBQSxDQUFBbkssSUFBQTtVQUFBbUssU0FBQSxDQUFBK0QsRUFBQSxHQUFBL0QsU0FBQTtVQUFBYixVQUFBLENBQUF6UCxDQUFBLENBQUFzUSxTQUFBLENBQUErRCxFQUFBO1FBQUE7VUFBQS9ELFNBQUEsQ0FBQW5LLElBQUE7VUFBQXNKLFVBQUEsQ0FBQS9NLENBQUE7VUFBQSxPQUFBNE4sU0FBQSxDQUFBNUosTUFBQTtRQUFBO1VBQUEsTUFJL0RrSCxlQUFlLEdBQUdxRCx5QkFBZSxDQUFDcUQsb0JBQW9CO1lBQUFoRSxTQUFBLENBQUE3TCxJQUFBO1lBQUE7VUFBQTtVQUFBc0wsV0FBQSxHQUFBekksMEJBQUEsQ0FDbEN5SixrQkFBUSxDQUFDd0Qsb0JBQW9CO1VBQUFqRSxTQUFBLENBQUFuSyxJQUFBO1VBQUE0SixXQUFBLENBQUFwTixDQUFBO1FBQUE7VUFBQSxLQUFBcU4sT0FBQSxHQUFBRCxXQUFBLENBQUF2UCxDQUFBLElBQUF1RCxJQUFBO1lBQUF1TSxTQUFBLENBQUE3TCxJQUFBO1lBQUE7VUFBQTtVQUF4Q3VKLFNBQU8sR0FBQWdDLE9BQUEsQ0FBQTFPLEtBQUE7VUFDVmtJLGFBQVcsR0FBR2tELGdCQUFJLENBQUMwRSxRQUFRLENBQUNwRCxTQUFPLENBQUNoQyxRQUFRLEVBQUUsTUFBTSxDQUFDO1VBQUEsTUFDdkQ1QyxPQUFPLENBQUM0RSxPQUFPLElBQUl4RSxhQUFXLEtBQUtKLE9BQU8sQ0FBQzRFLE9BQU87WUFBQXNDLFNBQUEsQ0FBQTdMLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQTZMLFNBQUEsQ0FBQWhNLE1BQUE7UUFBQTtVQUl0RGdGLFFBQVEsQ0FBQ0MsV0FBVyxFQUFFQyxhQUFXLEVBQUVDLE9BQU8sQ0FBQztVQUMzQzhILGdCQUFnQixDQUFDL0gsYUFBVyxFQUFFSixPQUFPLENBQUM7VUFDaENxQyxlQUFxQixHQUFHaUIsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDbEQsT0FBTyxFQUFFRCxhQUFXLENBQUM7VUFDdkRLLGlCQUF1QixNQUFBRixNQUFBLENBQU04QixlQUFhO1VBQUE2RSxTQUFBLENBQUE3TCxJQUFBO1VBQUEsT0FFMUNzRyxZQUFZLENBQ2hCVSxlQUFhLEVBQ2I1QixpQkFBZSxFQUNmLEVBQUUsRUFDRjJLLDBCQUFnQixFQUNoQjtZQUNFaEssUUFBUSxFQUFFaUssZUFBb0IsQ0FBQ0MsYUFBYTtZQUM1Q2pLLE1BQU0sRUFBRWdLLGVBQW9CLENBQUNFO1VBQy9CLENBQUMsRUFDRHZMLE9BQ0YsQ0FBQztRQUFBO1VBRURVLFFBQVEsR0FBR0YsU0FBUyxDQUFDQyxpQkFBZSxFQUFFVCxPQUFPLEVBQUVVLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQUE7VUFBQXdHLFNBQUEsQ0FBQTdMLElBQUE7VUFBQTtRQUFBO1VBQUE2TCxTQUFBLENBQUE3TCxJQUFBO1VBQUE7UUFBQTtVQUFBNkwsU0FBQSxDQUFBbkssSUFBQTtVQUFBbUssU0FBQSxDQUFBc0UsRUFBQSxHQUFBdEUsU0FBQTtVQUFBUCxXQUFBLENBQUEvUCxDQUFBLENBQUFzUSxTQUFBLENBQUFzRSxFQUFBO1FBQUE7VUFBQXRFLFNBQUEsQ0FBQW5LLElBQUE7VUFBQTRKLFdBQUEsQ0FBQXJOLENBQUE7VUFBQSxPQUFBNE4sU0FBQSxDQUFBNUosTUFBQTtRQUFBO1VBSW5FO1VBQ0E2SixJQUFJLENBQUNuUCxTQUFTLENBQUNvUCxNQUFNLEdBQUdxRSx5QkFBa0I7VUFFMUMsSUFBSSxDQUFDekwsT0FBTyxDQUFDMEwsTUFBTSxFQUFFO1lBQ25COUgsT0FBTyxDQUFDQyxHQUFHLENBQUMsWUFBWSxDQUFDO1VBQzNCO1VBQUMsT0FBQXFELFNBQUEsQ0FBQWhNLE1BQUEsV0FFTXdGLFFBQVE7UUFBQTtRQUFBO1VBQUEsT0FBQXdHLFNBQUEsQ0FBQWhLLElBQUE7TUFBQTtJQUFBLEdBQUFvSCxRQUFBO0VBQUEsQ0FDaEI7RUFBQSxPQUFBRCxxQkFBQSxDQUFBM0YsS0FBQSxPQUFBRCxTQUFBO0FBQUE7QUFFRCxTQUFTMEosZ0JBQWdCQSxDQUFDL0gsV0FBbUIsRUFBRUosT0FBWSxFQUFPO0VBQ2hFLElBQU1LLE9BQU8sR0FBR0wsT0FBTyxDQUFDSyxPQUFPO0VBQy9CLElBQU1nQyxhQUFxQixHQUFHaUIsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDbEQsT0FBTyxFQUFFRCxXQUFXLENBQUM7RUFDN0QsSUFBTUssZUFBdUIsTUFBQUYsTUFBQSxDQUFNOEIsYUFBYSxhQUFVO0VBQzFELElBQUksQ0FBQ3JDLE9BQU8sQ0FBQzBMLE1BQU0sRUFBRTtJQUNuQjlILE9BQU8sQ0FBQ0MsR0FBRyx3QkFBQXRELE1BQUEsQ0FBd0JFLGVBQWUsV0FBRyxDQUFDO0VBQ3hEO0VBQ0ErQyxtQkFBRSxDQUFDTyxhQUFhLENBQUN0RCxlQUFlLENBQUM7RUFBQSxJQUFBa0wsU0FBQSxHQUFBek4sMEJBQUEsQ0FDVnNGLG1CQUFFLENBQUNvSSxXQUFXLENBQUNuTCxlQUFlLENBQUM7SUFBQW9MLEtBQUE7RUFBQTtJQUF0RCxLQUFBRixTQUFBLENBQUFwUyxDQUFBLE1BQUFzUyxLQUFBLEdBQUFGLFNBQUEsQ0FBQXZVLENBQUEsSUFBQXVELElBQUEsR0FBd0Q7TUFBQSxJQUE3Q2lJLFFBQVEsR0FBQWlKLEtBQUEsQ0FBQTNULEtBQUE7TUFDakIsSUFBSTBLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7UUFDdkI7TUFDRjtNQUNBLElBQU1rSixRQUFRLEdBQUd4SSxnQkFBSSxDQUFDQyxJQUFJLENBQUM5QyxlQUFlLEVBQUVtQyxRQUFRLENBQUM7TUFDckRZLG1CQUFFLENBQUN1SSxVQUFVLENBQUNELFFBQVEsQ0FBQztJQUN6QjtFQUFDLFNBQUFFLEdBQUE7SUFBQUwsU0FBQSxDQUFBL1UsQ0FBQSxDQUFBb1YsR0FBQTtFQUFBO0lBQUFMLFNBQUEsQ0FBQXJTLENBQUE7RUFBQTtBQUNIO0FBRUEsU0FBUzBILGdCQUFnQkEsQ0FDdkJpTCxhQUFxQixFQUNyQmpNLE9BQVksRUFDWlcsY0FBbUIsRUFDVjtFQUNULElBQUl1TCxLQUFLLEdBQUcsS0FBSztFQUNqQixJQUFJbE0sT0FBTyxDQUFDWSxNQUFNLEVBQUU7SUFDbEIzSyxHQUFHLENBQUNrVyxlQUFlLENBQ2pCRixhQUFhLEVBQ2J0TCxjQUFjLEVBQ2RYLE9BQU8sQ0FBQyx1QkFBdUIsQ0FDakMsQ0FBQztJQUFBLElBQUFvTSxVQUFBLEdBQUFsTywwQkFBQSxDQUNvQjhCLE9BQU8sQ0FBQ2UsTUFBTSxJQUFJLEVBQUU7TUFBQXNMLE1BQUE7SUFBQTtNQUF6QyxLQUFBRCxVQUFBLENBQUE3UyxDQUFBLE1BQUE4UyxNQUFBLEdBQUFELFVBQUEsQ0FBQWhWLENBQUEsSUFBQXVELElBQUEsR0FBMkM7UUFBQSxJQUFoQ29HLE1BQU0sR0FBQXNMLE1BQUEsQ0FBQW5VLEtBQUE7UUFDZixJQUFJO1VBQ0ZqQyxHQUFHLENBQUNxVyxHQUFHLENBQUNMLGFBQWEsa0JBQUExTCxNQUFBLENBQWtCUSxNQUFNLGFBQVUsQ0FBQztRQUMxRCxDQUFDLENBQUMsT0FBT3dMLFlBQVksRUFBRTtVQUNyQkwsS0FBSyxHQUFHLElBQUk7UUFDZDtNQUNGO0lBQUMsU0FBQUYsR0FBQTtNQUFBSSxVQUFBLENBQUF4VixDQUFBLENBQUFvVixHQUFBO0lBQUE7TUFBQUksVUFBQSxDQUFBOVMsQ0FBQTtJQUFBO0VBQ0g7RUFDQSxPQUFPNFMsS0FBSztBQUNkO0FBRUEsU0FBU00sSUFBSUEsQ0FBQzFOLElBQVMsRUFBbUI7RUFDeEMsSUFBTWtCLE9BQU8sR0FBR25CLFNBQVMsQ0FBQ0MsSUFBSSxDQUFDO0VBQy9CLE9BQU9xRixvQkFBb0IsQ0FBQ25FLE9BQU8sQ0FBQztBQUN0Qzs7QUFFQTtBQUNBLElBQUl5TSxPQUFPLENBQUMzTixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUN1RSxRQUFRLENBQUMsMkJBQTJCLENBQUMsRUFBRTtFQUN6RG1KLElBQUksQ0FBQ0MsT0FBTyxDQUFDM04sSUFBSSxDQUFDLENBQUN0RSxJQUFJLENBQUNpUyxPQUFPLENBQUNDLElBQUksQ0FBQztBQUN2QyIsImlnbm9yZUxpc3QiOltdfQ==